Будущим копателям темы:
Немного расширим вопрос до ППИ семёрки и Агат-автор для уточнения.
Семёрочный agawt (это имя исполняемого файла в первой семёрочной версии) более-менее документирован по части кабелей и был разработан там же, где остальное "официальное" ПО и железо Агата.
Бейсик-60 поддержки принтера почти не имел или имел, но недокументированную (сторонними прогами, возможно). "Школьница" от новосибирцев печатать тоже умела, но драйвер у неё был попроще.
Так вот агат-авторов было на семёрке по крайней мере две основных версии:
1) На основе dos3.3. Немного названия команд поправили, немного логику работы. И добавили очень простенький механизм выбора файла из каталога "стрелками" (без явного ввода имени).
Никаких рамок или чего-то ещё похожего там не было, Диалог с ДОС был именно командной строкой.
Загрузка так же как и Basic-60 - из файла.
2) На основе ДОС из ИКП. Я так думаю. Этот агавт был встроен в ИКП, при выборе имени файлов рисует рамки из тире и плюсиков, Диалог с ДОС через простое меню (даже форматирования диска нет, так же как и команд защиты файла от модификации). Загрузка из абсолютных секторов.
Так вот драйвера принтеров там были разные. Похоже, что версия 1 использует свой собственный персональный драйвер, а версия 2 - вероятно, либо тот же, который может использовать ИКП-бейсик либо какой-то совсем свой, сильно переделанный.
Найти драйвер в версии 1 мне довелось очень давно, ещё в 90-е, когда я пытался заставить наш принтер печатать кириллицу. Его процедура DOOUT находится по адресу $F778, а ныне у нас есть даже её исходник (нередко встречающийся в крупных коллекциях файл AGAU.FORM). Эта процедура печатает символ с учётом всех настроек порта, но она не инициализирует ВВ55 - это происходит где-то в другом месте.
Так как это всё - регионы ЭмПЗУ семёрки, где есть несколько банков памяти, приведу несколько строк начала процедуры, для удобства идентификации (нулевой банк ЭмПЗУ):
DOOUT: # F778
F778 - C9 8D .. "I." CMP #8D <==
F77A - D0 02 .. "P." BNE DOOUT2
F77C - A9 8A .. ")." LDA #8A
DOOUT2:
F77E - 49 80 .. "i." EOR #80
F780 - 48 .. .. "h" PHA
Насколько я понимаю, в этой версии нет проверки наличия ППИ, т.е. если вы задаёте порт (а вы его именно задаёте при настройке режима печати), то печать туда пойдёт безусловно.
А вот в версии два - там чёрт ногу сломит :)
В исходнике это выглядит так:
DO AGAT9
DOOUT LDX #3 COUT WITH CODING
STX PRINTER
TOPRINTER JMP (PRINTER)
ELSE
DOOUT EQU $B800
FIN
А где же исходник по адресу $b800 ? А нету :))
Вероятно, он компилировался где-то отдельно, возможно, входит в состав ИКП-ДОС.
На самом деле он выглядит в загрузочном виде так:
B800 - 48 .. .. "h" PHA
B801 - AD 00 C2 "-.B" LDA C200
B804 - 8D 0F B8 "..8" STA B80F
B807 - 8D E1 C2 ".АB" STA C2E1
B80A - 68 .. .. "х" PLA
B80B - 20 00 EE "..Н" JSR DOOUT <==
B80E - 8D 00 C2 "..B" STA C200
B811 - 60 .. .. "ю" RTS
Теперь как выглядит начало этого кода (первый банк ЭмПЗУ):
DOOUT:
EE00 - 38 .. .. "." SEC <==
EE01 - 48 .. .. "h" PHA
EE02 - 86 34 .. ".." STX 34
EE04 - 84 35 .. ".." STY 35
EE06 - 49 8D .. "i." EOR #8D
EE08 - D0 0B .. "P." BNE EE15
Я не нашел где находится этот кусок кода в исходниках - тут надо какой-то скрипт придумывать, который будет искать фрагмент кода по группе строк. Но наверняка где-то он есть.
Также для версии 2 мне известно расположение процедуры инициализации ППИ: $EEB1 - сразу за DOOUT.
Ещё интересно вот что: версия 2 пытается при загрузке (ещё до вывода главного меню) искать ячейку ППИ в ходе обычного изучения оборудования. Но на экране настройки параметров печати выбор слота ППИ (пункт "м") всё так же остался. У меня эмуль не умеет изображать ППИ, но я вручную указал слот 5, поставил ловушку на обращение к порту и... эмуль словил код, который пытался зайти на несуществующий слот 0.
Логика не ясна!
Возможно, что в этой версии, если задать порт, в котором автопоиск не нашел модуля, авторы предполагали, что вывод пойдёт на экран (условно слот 0 считается в меню настроек выводом на экран - превью такое себе прикольное). Но это где-то не срабатывает так, как задумано.
Предлагаю желащим продолжить раскопки.
Чисто визуально, драйвер из версии 1 заметно короче, к тому же исходник немного прокомментирован, так что прикладываю его к этому сообщению.
Post's attachments AGAU.FORM.txt 1.06 kb, 80 downloads since 2024-02-29