░░░ ░░░░ ░░░░ ░░░░ ░░░░░ ░░░░▒▒▒▒░ ░░░░▒▒▒▒░ ░▒▒▒░ ▒▓█▒ ░▓█▓░ ░▓█▓▓ ▒█▓▓ ▓▓█▓░ ▓▓█▓█▓█▓░ ▒▓█▓█▓█▓ ▒▓█▓█▓░ ░▓█▓▓ ▒█▓▓░ ▒▓▓█▓ ░█▓▓▓▒▓▓▓░ ░██▓▓▓█▓█ ▓▓▓█▓▓▓▓ ▓█▓▓▓█▓░ ▓█▓█▓░ ▓▓█▓░░█▓█▓▓ ▒▓█▓▓▓█▓▓ ▒█▓█▓█▓█▓ ▓▓█▓█▓█▒ ▒▓▓▒█▓█░ ░▓█▓▓▒ █▓▓░▓▓▓▓█▓ ▒▓▓▓█▓▓░ ▒█▓▓ ▓▓█░ ░░░▓█▓░ ▒█▓█▓▓ ▓█▓▓▓█▓█▓▓ ▒█▓█▓█▒ ▒▓█▓░▒▒░ ▓█▓▒▒▒▒ ░▓█▓▓ ▓▓█▓▓▓░ █▓▓▓█▓▓▓█▓ ▒▓▓▓█▓▒ ▒█▓▓▓█▓▓░ ▓▓█▓▓▓▓ ▒▓▓▓░ ░▓█▓▒▓█▒ ▓█▓█▓█▓█▓▓ ▒█▓█▓█▓░ ▒▓█▓▓▓█▓▓ ▓█▓▓▒▒▒ ░▓█▓▓░ ▒▓▓▒░▓▓▓ █▓▓▓█▒▒▓█▓ ▒▓▓▓█▓▓▒ ▒█▓▓ ▓▓▓▓░ ▓▓█░ ░░ ░██▓▓ ░▓▓█░ ▓█▓░ ▓█▓█▓░▒█▓█▒ ▒█▓▓▒█▓█░ ▒▓█▓ ▒█▓█░ ▓█▓█▓█▓░░▓▓▓▓█▓█▓ ▒▓▓▓ ▒▓█▓ █▓▓▓░ ▒▓█▓░ ▒▓▓▓░▓▓▓▓ ▒█▓▓▓█▓▓▓ ▓▓█▓▓▓█ ▓▓█▓▓▓█▓▒ ▒█▓▒ ░█▓▓░ ▓█▓▓ ▒█▓▓ ▒█▓▓ ▒▓█▓░ ▒▓█▓█▓█▓░ ▓█▓█▓█▓ ░▓▓█▓█▓▓░ ░░░░ ░░░░ ░░░░ ░░░░ ░░░░ ░░░░ ░░░░░░░ ░░░░░░░ ░░░░░ (c) П.Федин ПОЛНОЕ ОПИСАНИЕ + ПОЛНЫЙ ДИЗАССЕМБЛЕР ПЗУ TR-DOS 5.04 (5.03) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ДЛЯ ПРОФЕССИОНАЛОВ, А ТАКЖЕ ДЛЯ ТЕХ, КТО ХОЧЕТ ИМИ СТАТЬ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ продолжение Адрес 8138. Определение количества дорожек дисковода. Вход: ус- тановите время перемещения головки дисковода. Выход: в 23767 и регистре A будет количество дорожек дисковода. 8138 CALL 15880 ;берем время перемещения головки OR 17 ;позиционирование на дорожку 50 LD B,A LD A,50 CALL 15940 LD A,2 ;затем на дорожку 2 CALL 15940 CALL 15869 ;задержка в 725779 тактов IN A,(31) ;головка в исходном положении ? AND 4 LD A,80 ;если нет, то у дисковода 80 дорожек JR Z,8167 LD A,40 ;иначе 40 8167 LD (23767),A;установка количества дорожек RET ;возврат ──────────────────────────────────────────────────────────────── Адрес 8171. Выбор верхней стороны диска. Установите 23830. Ис- пользуется также с адреса 8176 (загрузка системного регистра, код - в аккумуляторе). Вы можете также использовать с адреса 8179 для прямого вывода в порт 255. 8171 LD A,(23830);берем копию системного регистра OR 60 ;формат MFM, верхняя сторона, выключение сбро- са и готовности 8176 LD (23830),A;запоминаем копию системного регистра 8179 OUT (255),A ;установка системного регистра RET ;возврат ──────────────────────────────────────────────────────────────── Адрес 8182. Выбор нижней стороны диска. Установите 23830. 8182 LD A,(23830);берем копию системного регистра AND 111 ;формат MFM, нижняя сторона, выключение сбро- са и готовности JR 8176 ;установка системного регистра ──────────────────────────────────────────────────────────────── Адрес 8189. Форматирование дорожки. В регистр Е поместите ее но- мер и спозиционируйте головку дисковода. Из переменных установи- те 23768, 23782, 23784 и обнулите 23766. Используется также с адреса 8137 (проверка дорожки; установите 23768, 23784 и обнули- те 23766 и спозиционируйте головку). 8189 DI ;запрет прерываний LD A,244 ;запись дорожки OUT (31),A LD HL,(23782);берем адрес таблицы секторов для форматиро- вания LD C,127 ;адрес регистра данных 8199 LD B,10 ;10 раз 78 (первый пробел) LD D,78 CALL 8369 ;запись байта заданное число раз LD B,12 ;синхропромежуток LD D,0 CALL 8369 LD B,3 ;синхроимпульс LD D,245 CALL 8369 LD D,254 ;1 раз 254 (адресная метка идентификатора) CALL 8367 ;запись байта 1 раз LD D,E ;номер дорожки CALL 8367 LD D,0 ;номер стороны (в TR-DOS всегда 0) CALL 8367 LD D,(HL) ;номер сектора из таблицы CALL 8367 LD D,1 ;длина сектора - 256 байтов CALL 8367 LD D,247 ;запись контрольной суммы CALL 8367 LD B,22 ;второй пробел LD D,78 CALL 8369 LD B,12 ;синхропромежуток LD D,0 CALL 8369 LD B,3 ;синхроимпульс LD D,245 CALL 8369 LD D,251 ;адресная метка данных CALL 8367 LD B,0 ;данные (256 нулей) LD D,0 CALL 8369 LD D,247 ;запись контрольной суммы CALL 8367 LD B,60 ;третий пробел LD D,78 CALL 8369 LD A,(HL) ;берем адрес номера следующего сектора INC HL CP 16 ;конец таблицы ? JR NZ,8199 ;если нет, то форматирование следующего сек- тора LD B,0 ;пробел до конца дорожки CALL 8369 JP M,8310 CALL 8369 8310 IN A,(31) ;берем состояние контроллера AND 64 ;запись запрещена ? JP NZ,16185 ;если да, то сообщение READ ONLY 8317 LD A,(23768) ;дорожку проверять ? OR A RET NZ ;если нет, то возврат Внимание!!! Перед возвратом или выходом по ошибке надо разрешать прерывания. продолжение следует ...