Заметил что SMASH COMMANDER не способен установить вращение диска в UNREAL SPECCY. (такая же картина и в EmulZWin, а в Spectaculator это работает нормально. На реале тоже работало).
Посмотрел код где всё это происходит.
Вот процедура из SMASH COMMANDER определяющая наличие диска в дисководе:
(с комментами)
Вот такая вот процедурка. Есть там много лишних команд, но самое главное - там в каждом цикле проверки бита 1 дается команда 8 в порт 1F ВГ93. Команда эта нафиг не нужна, но похоже именно из-за неё SMASH коммандер не может определить наличие диска в UNREAL SPECCY. На реале она не мешала, а в эмуляторе мешает. Если удалить эту команду (забить call нулями), то SMASH коммандер начинает обнаруживать диск и работает нормально (вроде. По крайней мере определение диска работает).Код:Процедура вызова дос-подрограмм, она будет использоваться: #8dc5: push de jp #3d2f Процедура определения наличия диска в дисководе. (На выходе флаг Z - диска нет). ld a,#08 di ld de,#2fc3 ; адрес процедуры дос: out(1f),a:ret call #8dc5 ; даем команду ВГ93 с кодом 8. не помню что это, по-моему это "восстановление" (головка идет на нулевой трек). ld de,#3dba ; адрес процедуры дос: ld b,#ff in a,(1f): and 02: cp b: ret nz call #8dc5 ; считываем 1-й бит порта #1F. ld (#a293),a ;запоминаем его. ld de,0 ld bc,#1770 устанавливаем счетчик цикла. a25e: push de ; начало цикла push bc ld a,#08 ld de,#2fc3 call #8dc5 ; даём команду ВГ93 с кодом 8 ld de,#3dba ld b,#ff call #8dc5 ; считываем бит 1 из порта #1F. and 02 ;дальше какие-то сравнения - это не важно pop bc pop de ld h,a ld a,(#a293) xor h and h and #02 rra ld l,a ld a,h ld (#a293),a ld h,0 add hl,de ex de,hl ld a,d or e ; если зафиксировали смену бита 1 jr nz,#a28f ; то выходим. dec bc ld a,b or c jr nz,#a25e ; иначе переходим на начало цикла a28f: ld a,d or e ei ret
В общем, видимо посыл команды к ВГ93 влияет на эмулирование вращения диска в UNREAL SPECCY.


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


