А при каких условиях 8я функция зависает? Дисковод пустой нет? В нем реальная дискета или смонтированный образ?
А при каких условиях 8я функция зависает? Дисковод пустой нет? В нем реальная дискета или смонтированный образ?
С любовью к вам, Yandex.Direct
Размещение рекламы на форуме способствует его дальнейшему развитию
В дисководе была реальная дискета, а все образы отмонтированы.
А с примонтированным образом есть зависание? Хочется понять где там сидит глюк, там процедура-то два с половиной байта...
Может функция 8 не работает из-за "соседней" функции? Например, функцию 9 MOA многократно пределывал: сначала она задавала буфер для FDD, потом выводила номер версии, а в конце еще стала задавать буфер для HDD.
да в 9й вообще полтора байта
9я функция
Код:x0922 ld (xFFE7),hl ld (xFFF0),hl ld de,#6161 ld bc,#0705 ret[свернуть]
8я функция
Код:x08D4 call x084F ;R8DOS #07(7) call x0344 ;hl адрес кода, определяющего тип дискеты в текущем дисководе ld a,(hl) and %01000011 dec a ld a,#10 jp nz,x04D1 ;ошибка #10. дискета не соответствует формату tr-dos ld de,#0008 ld b,#01 ld hl,(xFFE7) ;адрес рабочего буфера для функции ld a,h or l ld a,#12 jp z,x04D1 ;ошибка #12. не открыт рабочий буфер call x0553 ;R8DOS #05(5) чтение служебного сектора ld ix,(xFFE7) ;адрес рабочего буфера для функции ld de,#00E1 add ix,de ;начало служебной информации ld a,#10 cp (ix+#06) ;идентификационный код TR-DOS (#10) jp nz,x04D1 ;ошибка #10. дискета не соответствует формату tr-dos call x0349 ;hl адрес кода, определяющего тип текущего дисковода ld e,(hl) call x0344 ;hl адрес кода, определяющего тип дискеты в текущем дисководе inc a res 7,(hl) ;односторонняя дискета bit 2,(ix+#02) ;тип дискеты jr z,x0918 ;односторонняя set 7,(hl) ;двухсторонняя x0918 res 5,(hl) ;40 дорожек на диске bit 0,(ix+#02) ;кол-во дорожек ret nz ;40 дорожек set 5,(hl) ;80 дорожек ret[свернуть]
7я вы говорите работает без нареканий, проблем с 5й тоже нет.
А в 8й чему тут ломаться.
Grand(01.12.2022)
Но, главное, буфер-то она правильно задает? Или для FDD буфер не нужен? Тогда куда грузится девятый сектор дискеты по которому функция 8 пытается произвести настройку?
Я продолжил эксперименты с этой подпрограммой на Scorpion 1024 Turbo+ с ПрофПЗУ V4.01.
Если диска в дисководе (это был дисковод A:) нет, то нормальное завершение. Если к A: примонтирован образ, то тоже нормальное завершение. Таким образом, зависание происходит только в одном случае: если в дисководе есть дискета.
Теперь у меня подозрение на процедуры Монитора начинающие и завершающие работу функций.Сообщение от LW
Функции 5 и 6 я применял. Все работает как надо и с FDD, и с HDD.
Вот моя адаптация игры Krakout 3: там можно сохранять таблицу рекордов на любой диск. Если запущено на Скорпионе, то используются функции 5 и 6.
Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)