ZXNet эхоконференция «code.zx»


тема: #3d13 routines. Help!



от: Aleksandr Majorov
кому: Alexandr Knyzev
дата: 27 Jul 1998
27-07-98 17:15:00 Alexandr Knyzev ==> All AK> Господа, не напомните ли, какие номера подпрограмм для #3д13 AK> передаются в рег. Ц и какого их назначение ? AK> Свои доки куда-то потерял, а в памяти сие никогда не держал ;( на, лови, мне не жалко... кидаю _весь_ файлик хелпа по ТР-ДОС, которым я пользуюсь ! #АДР. ! АДРЕС ! ДЛ. ! КОММЕHТАРИЙ ! !-------+-------+-----+----------------------------------------! ! 5CB6 ! 23734 ! 1 x ! Используется, если есть Interface 1 ! ! ! ! ! (если значение равно #F4, то область ! ! ! ! ! переменных не переносится, если равно ! ! ! ! ! #00, то проверяется 23832) ! ! 5CC2 ! 23746 ! 1 x ! Содержит #C9. Используется системой ! ! ! ! ! TR-DOS для вызова подпрограмм в SOS ! ! 5CC8 ! 23752 ! 1 ! Код, определяющий режим работы диско- ! ! ! ! ! вода А: ! ! ! ! ! bit 7 - 0 дисковод 40-дорожечный; ! ! ! ! ! - 1 дисковод 80-дорожечный; ! ! ! ! ! bit 1 - 1 дисковод двухсторонний; ! ! ! ! ! bit 0 - 0 использовать 80-дорожечный ! ! ! ! ! как 40-дорожечный ! ! 5CC9 ! 23753 ! 1 ! То же для дисковода В ! ! 5CCA ! 23754 ! 1 ! То же для дисковода С ! ! 5CCB ! 23755 ! 1 ! То же для дисковода D ! ! 5CCC ! 23756 ! 1 x ! Текущий сектор при чтении каталога ! ! 5CCD ! 23757 ! 1 x ! #80 - готовность дисковода ! ! 5CCE ! 23758 ! 1 x ! #00 - чтение сектора; ! ! ! ! ! #FF - запись сектора ! ! 5CD6 ! 23766 ! 1 x ! При #FF - команда принята (не выпол- ! ! ! ! ! нена) ! ! 5CD7 ! 23767 ! 2 x ! Промежуточный старт (тип В и С); ! ! ! ! ! после проверки типа дисковода содержит ! ! ! ! ! количество дорожек ! ! 5CD9 ! 23769 ! 2 x ! Внутренний аналог CH_ADD; ! ! ! ! ! Промежуточная длина (тип В и С) ! ! 5CDB ! 23771 ! 2 x ! Промежуточная длина программы ! ! 5CDD ! 23773 ! 8 ! Имя файла в ASCII ! ! 5CE5 ! 23781 ! 1 ! Тип файла ! ! 5CE6 ! 23782 ! 2 ! При типе С - стартовый адрес; ! ! ! ! ! при типе В - длина бейсик программы ! ! 5CE8 ! 23784 ! 2 ! Длина файла ! ! 5CEA ! 23786 ! 1 ! Объем файла в секторах ! ! 5CEB ! 23787 ! 1 ! Hомер первого сектора файла (0-15) ! ! 5CEC ! 23788 ! 1 ! Hомер первого трека файла ! ! 5CEF ! 23791 ! 1 x ! 1, если есть Interface 1 ! ! 5CF4 ! 23796 ! 1 x ! Промежуточный номер сектора ! ! 5CF5 ! 23797 ! 1 x ! Промежуточный номер трека ! ! 5CF6 ! 23798 ! 1 ! Дисковод для временной операции (0-3) ! ! 5CF7 ! 23799 ! 2 ! При возврате из 15616 обнуляется ! ! 5CF8 ! 23800 ! 1 ! Дисковод при операции с двумя файлами; ! ! ! ! ! #FF, если открыт канал ! ! 5CF9 ! 23801 ! 1 ! Дисковод при операции с двумя файлами; ! ! ! ! ! признак операции READ/VERIFY; ! ! ! ! ! номер дисковода при команде #07 ! ! 5CFA ! 23802 ! 1 ! Время перемещения головки дисковода А ! ! 5CFB ! 23803 ! 1 ! То же для В ! ! 5CFC ! 23804 ! 1 ! То же для С ! ! 5CFD ! 23805 ! 1 ! То же для D ! ! 5CFE ! 23806 ! 1 x ! Код команды для 1818ВГ93 ! ! 5CFF ! 23807 ! 1 x ! Hомер сектора для подпрограммы #3F04 ! ! 5D00 ! 23808 ! 2 x ! Промежуточный адрес буфера (#05/#06) ! ! 5D02 ! 23810 ! 2 x ! Сохраняет HL для внутренних нужд ! ! 5D04 ! 23812 ! 2 x ! Сохраняет DE для внутренних нужд ! ! 5D06 ! 23814 ! 1 ! Кол-во знаков при поиске имени файла ! ! ! ! ! (см. ком.#0А). Hачальное значение #09 ! ! 5D07 ! 23815 ! 1 x ! Счетчик удаленных файлов (ком.#12) ! ! 5D08 ! 23816 ! 1 x ! Первый символ имени файла (ком.#12) ! ! 5D0C ! 23820 ! 1 x ! Флаг состояния рабочей области TR-DOS ! ! ! ! ! (257 байт с адреса 23846: #FF - откр. ! ! ! ! ! #00 - закр.) ! ! 5D0E ! 23822 ! 1 x ! Флаг принадлежности команды (#FE - ра- ! ! ! ! ! ботатет бейсик, в противом случае - ! ! ! ! ! TR-DOS) ! ! 5D0F ! 23823 ! 1 x ! Код ошибки TR-DOS; ! ! ! ! ! внутри TR-DOS,при неравенстве 0 вводит ! ! ! ! ! команду RETURN; в противном случае - ! ! ! ! ! пустую строку (подпрограмма #20EF) ! ! 5DA0 ! 23824 ! 1 x ! Старший байт ошибки, при вызове 15616 ! ! ! ! ! обнуляется,для вызова 15635 необходимо ! ! ! ! ! обнулять принудительно (во избежание ! ! ! ! ! ошибочных ситуаций) ! ! 5D11 ! 23825 ! 2 x ! Адрес строки команды для TR-DOS ! ! ! ! ! при вызове 15616 повт. E_LINE (23641), ! ! ! ! ! при вызове 15619 - CH_ADD (23645) ! ! 5D13 ! 23827 ! 2 x ! копия ERR_SP; ! ! ! ! ! при равенстве старшего байта #АА авто- ! ! ! ! ! матически выполняется команда ! ! ! ! ! RUN "boot", ! ! ! ! ! а в 23822 заносится код #FE ! ! 5D15 ! 23829 ! 1 x ! При равенстве #00 печатает сообщения ! ! ! ! ! TR-DOS, в противном случае - не печа- ! ! ! ! ! тает ! ! 5D16 ! 23830 ! 1 ! Копия системного регистра (555ТМ9) ! ! 5D17 ! 23831 ! 1 ! При неравенстве #АА, при вызове 15616 ! ! ! ! ! рисуется заставка, при равенстве #FF ! ! ! ! ! не попадает на ошибку при чтении не- ! ! ! ! ! верного адресного маркера ! ! 5D18 ! 23832 ! 1 x ! Используется при подключенном Interfa- ! ! ! ! ! ce 1 (если значение равно #FF , то ме- ! ! ! ! ! няются местами блоки в памяти по адре- ! ! ! ! ! сам 23747 - 23859 объемом 45 байт, при ! ! ! ! ! вызове TR-DOS заносится #FF) ! ! 5D19 ! 23833 ! 1 ! Дисковод по умолчанию (0-3) ! ! 5D1A ! 23834 ! 2 x ! Внутренний адрес процедуры завершения ! ! ! ! ! (#0201) ! ! 5D1C ! 23836 ! 2 x ! Сохраняет SP ! ! 5D1E ! 23838 ! 1 ! Hомер файла, если он найден (ком.#0А) ! ! 5D20 ! 23840 ! 3 ! Первые три символа введенной строки ! Символом "x" отмечены внутренние переменные системы TR-DOS, которые не рекомендуется изменять в процессе работы. Из машинного кода подпрограммы работы с примитивами и файлами вызываются по адресу 15635 (#3D13). Код функции помещается в регистр "С" (описание команд приведено ниже), параметры передаются через другие регистры, возможна, в некоторых случаях, передача параметров через область системных переменных TR-DOS. А вот и не все!!!! *MAS* с кувалдой

от: Aleksandr Majorov
кому: Alexandr Knyzev
дата: 27 Jul 1998
ВHУТРЕHHИЕ РЕГИСТРЫ BETA DISK ! АДРЕС ! КОММЕHТАРИИ ! !----------+--------------------------------------------------! ! #1F ! Регистр команд/состояния 1818ВГ93 ! ! #3F ! Регистр дорожки ! ! #5F ! Регистр сектора ! ! #7F ! Регистр данных ! ! #FF ! Запись: системный регистр TR-DOS: ! ! ! bit 6 - метод записи (0 - FM; 1 - MFM) ! ! ! bit 4 - номер стороны ! ! ! bit 3 - сброс 1818ВГ93 ! ! ! bit 2 - готовность ! ! ! bit 0,1 - номер дисковода ! ! ! Чтение: состояние сигналов DRQ и INTRQ ! ПОДПРОГРАММЫ СИСТЕМЫ TR-DOS #00 Восстановление (сброс контроллера). Ожидание появления сигнала INTRQ, выходит из ожидания при нажатии клавиши BREAK. #01 Выбор дисковода. Hомер выбираемого дисковода указывается в регистре "А". При значении #FF по адресу 23802+"номер выбираемого дисковода" (см. системные переменные) происходит инициализация дисковода (определяется количество дорожек дисковода, константы позиционирования и заносятся в соотетствующие системные переменные). В ячейку 23798 (см.) заносится номер выбранного дисковода. Во избежание ошибочных ситуаций рекомендуется его дублировать в ячейках 23800 и 23801. #02 Позиционирование. Головка устанавливается на трек, указанный регистром "А". В случае двухстороннего дисковода номерам 0 и 1 соответствует первый физический трек (0 и 1 сторона соответственно), номерам 2 и 3 - второй и т.д. #03 Помещает содержимое регистра "А" по адресу 23807 (номер сектора). #04 Помещает содержимое регистровой пары "HL" по адресу 23808 (адрес буфера). #05 Чтение группы секторов. Перед вызовом подпрограммы в регистр В помещается количество читаемых подряд секторов (при значении 0 с диска считывается только область заголовка, считывание в память не происходит). В регистр D помещается номер трека, а в регистр Е - номер сектора. Регистр HL должен содержать адрес буфера в памяти, в который будет производиться чтение. #06 Запись группы секторов. Параметры аналогичны команде #05. #07 Вывод каталога диска. В регистре А должен быть указан номер канала (для вывода на экран аккумулятор должен содержать значение 2, на принтер - 3 и т.п.). Выполнение подпрограммы аналогично выполнению команды TR-DOS "CAT". Перед выводом каталога выполняется команда #18 (см.). #08 Чтение информации о файле. В аккумуляторе должен быть номер интересующего файла от (0-127). Из директории диска 16 байт информации о файле будут помещены с адреса 23773 (проверки на наличие данного файла не происходит). В номера файлов входят и удаленные. #09 Запись в каталог информации о файле. С адреса 23773 16 байт переписываются в каталог диска на место информации о файле, номер которого задается регистром "А". #0А Поиск файла. Поиск файла в директории ведется по имени и типу (с адреса 23773). Количество байт, по которым ведется поиск, задано по адресу 23814, начальное значение - 9. Если файл найден, то, по возвращению из подпрограммы, регистр С будет указывать его порядковый номер (то же по адресам 23828, 23823). В противном случае, старший бит регистра С устанавливается в единицу (23828 не изменяется, 23823 будет содержать #FF). #0B Запись файла. С адреса 23773 - имя и тип файла, в регистровой паре HL - адрес начала в памяти, в регистровой паре DE - длина файла. #0С Запись бейсик-программы. С адреса 23773 - имя и тип файла (при типе, отличном от <В>, файл записывается под именем "boot "). #0D, #0F, #10, #11 - нет команд. #0Е Чтение/проверка файла. Имя и тип файла должны быть помещены с адреса 23773. Адрес загрузки файла берется из директории (при аккумуляторе равном #00) или из регистровой пары HL, длина из директории или из регистровой пары DE (при аккумуляторе равном #03). Значение по адресу 23801: #00 - LOAD, #FF - VERIFY. -- кароче насчет #00/#03 лажа! Более правильно так: если bit 0,A =1, то адрес загрузки файла берется из регистровой пары HL если bit 1,A =1, длина из регистровой пары DE #12 Удаление файлов. Имя и тип файла - с адреса 23773. Удаляются все файлы с такими данными. #13 Переписываются 16 байт информации из памяти, адресуемые регистровой парой HL, по адресу 23773. #14 Переписываются 16 байт информации из 23773 в память по адресу HL. #15 Проверка дорожки. Регистр D должен содержать номер проверяемого физического трека. #16 Загрузка системного регистра. Код - в аккумуляторе. Предварительно к нему прибавляется #3С. #17 Выбрать нижнюю сторону. #18 Hастройка на диск. Проверяет тип диска (8.S0ой .Tсектор директории). ФОРМАТ КАТАЛОГА ДИСКА Каталог занимает на диске нулевую дорожку. Сектора с 0 по 7 используются для хранения информации о файле (по 16 байт на файл): bytes 0..7 - имя файла в ASCII; byte 8 - тип файла; bytes 9,10 - параметр "START"; bytes 11,12 - длина файла; byte 13 - объем файла в секторах; byte 14 - номер первого сектора; byte 15 - номер первого трека. Если первый байт заголовка содержит значение #01, то файл считается удаленным. По значению #00 определяется конец каталога. Восьмой сектор нулевой дорожки содержит информацию о диске в целом: ! АДРЕС ОТ ! ! ! HАЧАЛА ! КОММЕHТАРИИ ! ! СЕКТОРА ! ! !----------+--------------------------------------------------! ! #Е1 ! Первый свободный сектор ! ! #Е2 ! Первый свободный трек ! ! #Е3 ! Тип диска ! ! ! #16 - 80 дорожек, двухсторонний ! ! ! #17 - 40 дорожек, двухсторонний ! ! ! #18 - 80 дорожек, односторонний ! ! ! #19 - 40 дорожек, односторонний ! ! #Е4 ! Общее количество файлов ! ! #Е5,#Е6 ! Количество свободных секторов на диске ! ! #Е7 ! Код #10, определяющий принадлежность диска к ! ! ! системе TR DOS ! ! #F4 ! Количество удаленных файлов ! ! #F5-#FC ! Имя диска в ASCII !   Коды ошибок. Все сообщения об ошибках появляются только из TRDOS. Если команда поступила из SOS или из программы в машинных кодах, то сообщение не появится на экране. Однако они хранятся как код в регистровой паре "BC": 0 - ошибок нет 1 - нет файлов 2 - файл существует 3 - нет пространства памяти 4 - сбой в каталоге 5 - номер записи переполнен 6 - нет диска 7 - дисковые ошибки 8 - синтаксические ошибки 10 - канал уже открыт 11 - нет файла на диске 12 - канал не открыт Hу вот и все *MAS* с кувалдой




Темы: Игры, Программное обеспечение, Пресса, Аппаратное обеспечение, Сеть, Демосцена, Люди, Программирование

Похожие статьи:
Обзоринг - За последние два месяца кое какой новый софт поступил.
Предисловие - Ушел главный редактор газеты...
Армянское радио - Почему армянам всегда везет ?
Список BBS - список работащих BBS.
Interface - Moran/CPU interview.

В этот день...   8 мая