Вот с таких драйверов и начинается код, который работает только на эмуляторах. Данный код багованый, и ошибка не воспроизводится ни на каком эмуляторе, только на реале. Суть ошибки в том, что после того, как вы сбросили B-DISK, первая команда, с которой должна начинаться работа с устройством - это команда восстановления. В данном драйвере, данная команда имеет место, но вызывается только один раз для диска по умолчанию (A). Вот только с этим диском драйвер и будет работать, на остальных любая операция будет возвращать ошибку. Это так и есть, проверено. Надо разбить код инициализации на две части. Вот так я сделал :
И вызывать vg_init_drive перед первым использованием диска.Цитата:
vg_init_drive
DI
ld a, E
ld (fd_drive_no), A
call fd_motor_on
call fd_res_head
EI
ret
vg_drv_init
call fd_inifdc
EI
RET
fd_inifdc:
di
call fd_clr_error
ld a,%00011000
ld c,255
call fd_out_c_a
ld a,%00011100
ld c, 255
call fd_out_c_a
ld hl,300
call fd_pause
ld a,208
ld c,31
call fd_out_c_a
ld hl,1000
call fd_pause
RET

