Хм, я не использую в софте ничего из RT-11 после загрузки игрух, но если что-то не так то ну в этой-то игре код на гитхабе, в кракоуте и ривер рейде оно чего-то похожее. Может где-то и накосячил, вот уж не знаю точно. После считывания данных через ЕМТ больше не должно быть никаких обращений к дискам.
Весь код чтения с диска:
Тут некий код дурной
Код:READFL: mov #MSG001, MSGADR ; possible error: device error .fetch #BUF001, #DKN001 ; test device bcc 10$ return 10$: mov #MSG002, MSGADR ; possible error: channel is active .looku #AREA01, #7, #DKN001 ; test file, return R0-file size in blocks bcc 20$ tstb @#52 ; check what error beq 12$ ; it's channel is active? mov #MSG003, MSGADR ; file not found 12$: sec return 20$: ; reading prepare mov R0, MAXBLK ; file size clr CURBLK ; block to read mov #MSG005, MSGADR ; possible error: file read error mov #176640, R4 mov #176642, R5 40$: ; reading cycle .readw #AREA01, #7, #BUF002, #256., CURBLK bcs 90$ ; C=1 is error tst R0 ; R0=readed words count beq 50$ ; nothing readed? (eof?) ; readed, data in BUF002 inc CURBLK mov #BUF002, R0 mov FILNUM, R2 asl R2 call @WRITAB(R2) ; call per-file write proc cmp CURBLK, MAXBLK blt 40$ ; eof 50$: .close #7 clc ; set no error return 90$: ; read error tstb @#52 ; error word addr beq 50$ ; no error - it's what? eof again? .close #7 sec return[свернуть]
На эмуляторе UKNCBTL и правда показывает что мотор дисковода работает. Хм. Интересно конечно. А как его остановить получается тогда? (у меня железка с загрузкой через rs-232 и даже не знаю чего там с дисководом, но видимо это нехорошо)
>Если обращение к дисководу больше не продполагается, то можно просто вызввать подпрограмму.
>Код: CALL @#07132
>Если двигатель был запущен, он будет остановлен.
Это вот в ЦП или в ПП надо вызвать? В ПП наверное да? (блин у меня конечно там сильно портится вся память при загрузке, ну чтож.. работающий мотор дисковода это плохо и так нельзя)
UPD: попробовал и там и сям вызвать, в ПП просто все зависло, в ЦП выдало веселящую надпись ***СТОП***Короче нужны еще способы как остановить мотор у дисковода
- - - Добавлено - - -
А вот это вот в ПП заработало. Я не знаю что оно делает но вроде мотор отключился после загрузки игрухи как показывает UKNCBTL.. Спс АлексЧудеса какие-т, но оно сработало! Алилуйя
Реально не знаю что сделал код, но мотор он отключил вроде.
(надо будет встроить в ривер рейд и в кракоут если найду уже как их скомпилять)
Получилось как-то такНо работает ведь да? У меня нет дисковода, могу только по Никитиному эмулятору смотреть.
Еще один тупой код
Код:; ////////////////////////////////////////////////////////////////////////////// ; // PPU second phase prepare ; ////////////////////////////////////////////////////////////////////////////// PPUST2: CLR R0 ; I dunno what is here? Alex_K said DO THAT CALL @7132(R0) ; and it's working! stopping FD motor ; set PSW (HP**TNZVC) = 110000000 (HP=11, disable interrupts, halt mode) mtps #600 ; 11 110 001 (all RAM banks of plane 0) ; WARNING !!! We can't read (and bit/tst so on..) from there, but CAN write[свернуть]
Спасибо парни что заметили этот факап!



Короче нужны еще способы как остановить мотор у дисковода
Ответить с цитированием
Размещение рекламы на форуме способствует его дальнейшему развитию 


