ZX Review
#3-4
22 июля 1997 |
|
Новые программы - И.Рощин. HELP_Z80. В.Давыдов. Catalog's Base v1.8.
┌──────────────────────────────┐ │ │ │ НОВЫЕ ПРОГРАММЫ │ │ │ └──────────────────────────────┘ (c) Иван Рощин, г.Москва. HELP_Z80 Эта не имеющая аналогов прог- рамма представляет собой элек- тронный справочник по командам микропроцессора Z80. С ее по- мощью можно узнать мнемонику (и ее смысл), кодировку, влияние на флаги и время выполнения для каждой команды процессора, а также другую полезную информа- цию. HELP содержит описание 1136 команд, в том числе и недокумен- тированных, занимает всего 9 ки- лобайт и может работать на ZX SPECTRUM с объемом памяти от 48 до 512K. Краткое описание возможностей: - так же, как и популярный отладчик STS, HELP может нахо- диться в любой странице памяти по адресам #DB00-#FFFF, поэтому его можно использовать совместно с любым ассемблером. При своей работе HELP не портит значение ни одной ячейки памяти, исключая самого себя и экранную область. Таким образом, он полностью ав- тономен. - информацию о командах про- цессора можно просматривать, как обычный текст. С помощью имею- щихся средств поиска легко най- ти сведения об определенной ко- манде или узнать, как расшифро- вывается ее мнемоника. - можно записать всю информа- цию на диск в виде нескольких текстовых файлов общим объемом более 66K (например, для после- дующей печати). - имеются средства для взаи- модействия с ассемблером/отлад- чиком: например, Вы пишете или отлаживаете программу, и при на- жатии определенной комбинации клавиш на экране появляется ок- но со справочной информацией по команде, на которой стоит кур- сор. В описании приводятся под- робные инструкции о внесении из- менений в отладчик STS (любой версии) для реализации этой воз- можности. P.S. Существует версия этой программы, содержащая ин- формацию о командах процес- сора 6502. Ее можно ис- пользовать совместно с ас- семблером TASM 4 by RST7. 1 2 ******************************** (c) В.Давыдов, с.Запрудное Нижегородской обл. CATALOG'S BASE v.1.8. 1. НАЗНАЧЕНИЕ ПРОГРАММЫ. Программа предназначена для создания картотек программного обеспечения на дисках OS TR-DOS. Скорость создания картотеки оп- ределяется, в основном, време- нем, необходимым для смены диска в накопителе. Позволяет быстро определить, на каком диске находится та или иная программа, если хотя бы что-то известно о ее названии. Объем буфера данных около 30 Кб, что позвояет включить в од- ну базу данных информацию о 250-300 дисках (2500-3000 фай- лов). Данные сохраняются на диске в виде кодового файла перемен- ной длины. Поддерживаются операции сравнения и объединения баз дан- ных. Возможен вывод информации на принтер любого типа. 2. АППАРАТНЫЕ ТРЕБОВАНИЯ. SPECTRUM-совместимый компью- тер с объемом памяти 48 Кб и вы- ше. Программа не использует нес- тандартных обращений к ПЗУ TR- DOS и будет работать с любой версией TR-DOS. СОВМЕСТИМОСТЬ С ДРУГИМИ ПРОГРАММАМИ. Первоначально данная прог- рамма писалась как набор проце- дур, облегчающих работу с прог- раммой DDB 2.0, автор S.O.Kupri- yanov, (c) 1991 г., практически единственной из аналогичных в то время (1994 г.). Поэтому струк- тура данных полностью совпадает, и можно загружать и обрабатывать файл bdate2.0, созданный прог- раммой DDB2. 3. ОБРАБОТКА ОШИБОК. При возникновении ошибочных ситуаций печатается содержимое системной переменной ERR_NR (23610), и выполнение текущей операции прерывается. При некоторых типичных ошиб- ках вместо ERR_NR печатается текст, приблизительно описываю- щий характер ошибки. При загрузке файлов их стру- ктура проверяется, и при несоот- ветствии загрузка не производит- ся. Имеющаяся в памяти информа- ция при этом не уничтожается. 4. УПРАВЛЕНИЕ ПРОГРАММОЙ. SINCLAIR, CURSOR, QAOP - пе- ремещение по меню. 0, SPACE, ENTER - выбор пун- кта меню. EDIT (CAPS+1) - прерывание выполняемой операции или переход к другому меню. При всех запросах нажатие клавиши "Y" принимается за под- тверждение, любой другой клави- ши - за отказ от операции. 5. МЕНЮ. В версии 1.8 имеется три ме- ню, войти в которые можно или выбором соответствующего пункта, или нажатием клавиши EDIT(CS+1). 5.1. МЕНЮ ДИСКОВЫХ ОПЕРАЦИЙ. Появляется сразу после заг- рузки программы. Состоит из сле- дующих пунктов: "ПОИСК" - переход в меню поиска. "РЕДАКТИРОВАНИЕ" - меню редакти- рования. "Смена типа файла" - для файлов, создаваемых програм- мой, я выбрал расши- рение "b", так как, во-первых, оно имеет что-то общее со сло- вами BASIC PROGRAM, а во-вторых, я не встречал его ни у од- ной программы. Если у Вас файлы с таким расширением имеются, то можете, во избежа- ние путаницы, сменить его на любое другое. "Выбор дисковода" - A, B, C, D. Если далеко тянуться до нужной клавиши, можете понажимать на любые другие, при вводе используются только два младших бита. Завершение вво- да - ENTER. "Каталог диска" - выполняет ко- манду "CAT" TR-DOS. "Сравнение диска и базы" - диск в текущем накопителе (BASIC - программы и MAGIC-файлы) сравни- вается с базой дан- ных, находящейся в ОЗУ компьютера. Печа- тается номер вхожде- ния, имя файла и, ес- ли файл с таким име- нем найден,имя диска. "Добавление диска" - информа- ция о BASIC-програм- мах и MAGIC - файлах диска в текущем дис- ководе добавляется в конец базы данных, причем дисков с сов- падающими именами мо- жет быть неограничен- ное количество. Если имя добавляемого дис- ка обнаружено в базе данных, выводится запрос на разрешение добавления диска. При утвердительном отве- те задается вопрос о необходимости удале- ния дисков, имеющих то же имя. При отка- зе от добавления вы- полняется операция сравнения диска и ба- зы. "Загрузка базы" - с текущего дисковода загружает- ся ранее записанный файл. При отсутствии файла на диске или нажатии на ENTER без ввода имени выводит- ся список имеющихся на диске файлов. При загрузке имеющаяся в памяти информация не уничтожается, что позволяет объединять базы данных. Поэтому, если Вы хотите на- чать работать с но- вой базой данных, вы- берите в меню редак- тирования операцию "Очистка базы". "Запись базы" - база данных бу- дет сохранена в файле с введенным именем. "Сравнение баз" - позволяет уп- ростить процесс обме- на программами. Так как мне кажется, что практический интерес представляют только различия между база- ми, печатаются имена файлов из базы, нахо- дящейся на диске, ко- торые не найдены в базе, загруженной в память. При большом количестве совпаде- ний на экран до- вольно долго может ничего не выводиться при периодическом об- ращении к дисководу. Не пугайтесь и не тя- нитесь к кнопке "RE- SET". "Включить (выключить) принтер" - переключение устрой- ства вывода информа- ции. При включении принтера информация выводится на принтер в том же формате, что и на экран. 5.2. МЕНЮ РЕДАКТИРОВАНИЯ. "ПОИСК", "ДИСКОВЫЕ ОПЕРАЦИИ" - переход к другому меню. "Имена дисков" - выводятся имена дисков, включенных в базу, и информация о количестве свободных секторов на них. Если количество свободных секторов выглядит странно, значит, у диска изуродован 9-й сектор нулевой дорож- ки, и его пора вос- станавливать. "Удаление диска" - при вводе вместо имени можно использовать подстро- ку для поиска. Вер- хний и нижний регис- тры не различаются. При нажатии на ENTER без ввода имени бу- дут распечатаны име- на дисков. Для всех дисков, имена кото- рых удовлетворяют ус- ловию поиска, выдает- ся запрос на удале- ние диска из базы. "Информация о базе" - количество файлов, дисков и ос- таток свободного мес- та в памяти. Печата- ется также при выпол- нении большинства операций с базой дан- ных. В следующих вер- сиях этой функции не будет. Введу постоян- но отображаемое ин- формационное окно. "Сортировка файлов" - после вы- полнения этой опера- ции при печати дис- ков имена файлов на них будут выводиться в алфавитном порядке. Вернуться к исходно- му расположению не- возможно. "Сортировка дисков" - при добав- лении нового диска к базе информация о нем располагается в конце базы. Данная операция позволяет упорядочить базу по именам дисков в алфавитном порядке. При большом объеме базы процесс может заметно затянуться, поэтому, чтобы не ка- залось, что компьютер завис, буфер сорти- ровки я расположил в экранной области па- мяти, и при проведе- нии сортировки на эк- ране будут изобра- жаться мельтешащие полосы. Не очень эс- тетично, но печать того, сколько отсор- тировано и сколько нет, скорость сорти- ровки замедлит еще больше. "Очистка базы" - удаление всей информации из памяти. "Включить (выключить) принтер" - переключение устрой- ства вывода информа- ции. 5.3. МЕНЮ ОПЕРАЦИЙ ПОИСКА. "Печать файлов" - выводится вся база данных в алфа- витном порядке по именам файлов в фор- мате: имя файла, за- тем имя диска, на ко- тором этот файл нахо- дится. "Печать дисков" - выводится со- держимое всех дисков, включенных в базу данных. "Поиск файла" - позволяет опре- делить диск, на кото- ром находится требуе- мый файл. Запраши- вается образец для поиска. Верхний и нижний регистры не учитываются, то есть по образцу war могут быть найдены файлы "WAR GAME","Star War" и т.п. Если при вводе образца нажать ENTER в пустой строке, вы- полняется операция "печать файлов". "Поиск диска" - по тому же прин- ципу выводится содер- жимое дисков, имена которых удовлетворяют требуемому условию. Если при вводе образ- ца нажать ENTER в пустой строке, выпол- няется операция "пе- чать дисков". "Имена дисков" - выводятся имена дисков, имеющихся в базе, и количество свободных секторов на них. "РЕДАКТИРОВАНИЕ", "ДИСКОВЫЕ ОПЕРАЦИИ" - переход к другому меню. "Включить (выключить) принтер" - переключение устрой- ства вывода информа- ции. 6. ДРАЙВЕР ПРИНТЕРА. Структура драйвера и точки входа аналогичны драйверу тек- стового редактора "ZX-WORD". Ес- ли он у Вас есть, можете исполь- зовать, а если нет, то разработ- ку собственного драйвера, воз- можно, облегчит приведенный ниже пример драйвера принтера "EP- SON", подключенного через интер- фейс "ZX-LPRINT III". Только не забудьте предусмотреть контроль "BREAK" и установку флага пере- носа при нажатии "BREAK" в ава- рийных ситуациях печатаюшего ус- тройства, иначе программа риску- ет зависнуть при случайном "включении" принтера, физически не подключенного к компьютеру. Точки входа: #5B00 - процедура инициа- лизации; #5B03 - процедура печати. Максимальная длина драйвера 256 байт. Структура драйвера: 140. #5B00 NOP #5B01 JR INIT ;точка входа ;ZX-WORD #5B03 PRINT 2 INIT - подпрограмма инициализа- ции, выполняющая все подго- товительные действия для того, чтобы принтер начал печать в альтернативной ко- дировке. На этот адрес пе- редается управление при вы- полнении операции "Включить принтер". PRINT - передача на принтер сим- вола, код которого находит- ся в аккумуляторе. Драйверу передаются следующие коды: - последовательность #0D, #0A- возврат каретки и перевод стро- ки. На всех принтерах, описания которых я видел, те же коды ис- пользуются для вывода на печать внутреннего буфера принтера. Ес- ли же у Вас для этого использу- ется другой код, добавьте его при составлении таблицы пере- кодировки. - #20..#7E - коды специальных символов и латинских букв в стандарте ASCII, что совпадает со знакогенератором SPECTRUM. - #80..#9F - А, Б, В, Г, Д, Е, Ж...Ю, Я - большие русские буквы в алфавитном порядке. - #A0..#AF - а, б, в, г, д, е, ж... о, п - малые русские буквы. - #E0..EF - р, с, т... э, ю, я - малые русские буквы. Не только у меня, но и в EDITORe они тоже отсутствуют. (В ZX-WORD они есть, но набирать текст в нем не так удобно из-за его 64-х символьности). Это бук- вы, которые очень похожи на Е, е, только с двумя точками свер- ху. Кодировка русских букв взя- та из программы ZX-WORD. 6.1. ПРИМЕР ДРАЙВЕРА ПРИНТЕРА "EPSON", ПОДКЛЮЧЕННОГО К ПАРАЛЛЕЛЬНОМУ ИНТЕРФЕЙСУ "ZX-LPRINT III". 148. ORG #5B00 NOP JR INIT PRINT LD C,A BUSY CALL #1F54 ; контроль "BREAK" JR C,PRN SCF RET PRN IN A,(#7B) BIT 7,A ; проверка готовности JR NZ,BUSY ; принтера LD A,C OUT (#FB),A ; установка шины ; данных OUT (#7B),A ; начало импульса ; STROBE OUT (#FB),A ; конец STROBE ; Для своего принтера мне пришлось поставить замедляющие циклы ; перед началом и концом STROBE, иначе нарушается синхронизация, ; хотя в програмном обеспечении ZX-LPRINT III сделано именно ; так. XOR A ; Сброс флага переноса RET INIT LD A,#1B ; сброс печатающего CALL PRINT ; устройства. (коды LD A,#40 ; взяты из описания JR PRINT ;3 EPSON LX-800) 2 6.2. ПРИМЕР СОСТАВЛЕНИЯ ТАБЛИЦЫ ПЕРЕКОДИРОВКИ. И еще пример перекодировки для драйвера абстрактного прин- тера, имеющего произвольную таб- лицу кодов. Написан для очень начинающих программистов. Ос- тальные могут не читать. Между комментариями типа ; ---------v-N ; ---------^-N заключены фрагменты программы, применяющиеся в конкретных усло- виях, зависящих от типа принте- ра, которые в остальных случаях нужно исключить. 140. ORG #5B00 START JP INIT PRINT CP #20 ; JR NC,C_20_7F ; печатный ; символ ; -------------------v-1 CP #0D JR NZ,EXIT ; если принтер включен в режиме автоперевода строки ; (пропуск #0A) ; -------------------v-2 LD A,CR ; вместо CR - код возврата каретки ; Этот фрагмент для нереального случая, когда принтер имеет ; отличный от общепринятого код возврата каретки. ; ------------------v-2.1 CALL PRN_A LD A,LF ; вместо LF - код пе- ; ревода строки (если ; требуется) ; ------------------^-2.1 ; -------------------^-2 JR PRN_A ; вывод байта из ак- ; кумулятора на принтер ; -------------------^-1 EXIT XOR A ; сброс флага переноса RET C_20_7F CP #80 JR NC,C_80_AF ; -------------------v-3 LD HL,TABL1-#20 LD E,A LD D,0 ADD HL,DE LD A,(HL) ; тоже маловероятный случай, когда у принтера полное ; несовпадение со стандартом ASCII ; -------------------^-3 JR PRN_A C_80_AF CP #E0 JR C,SEARCH SUB #30 SEARCH LD HL,TABL2-#80 LD E,A LD D,0 ADD HL,DE LD A,(HL) ; -------------------v-4 PUSH AF CALL RUS ; POP AF ; Если требуется передать принтеру последовательность кодов ; для включения русского шрифта. ; ------------------^-4 CALL PRN_A ; ------------------v-5 CALL LAT ; Восстановление знакогенератора латинского шрифта. ; ------------------^-5 RET PRN_A ; Подпрограмма передачи принтеру кода из регистра A. ; Зависит от способа подключения принтера, поэтому написать ; что-то универсальное невозможно. Один из примеров приведен ; в предыдущем разделе. ; INIT ; Подпрограмма инициализации принтера. Зависит от типа ; принтера и способа его подключения. ; ------------------v-6 RUS LD A,CR_1 CALL PRN_A LD A,CR_2 CALL PRN_A ; ............. ; ............. LD A,CR_N JR PRN_A ; Подпрограмма переключения принтера на русский шрифт. CR_1, ; CR_2, ... CR_N - это последовательность управляющих кодов для ; переключения знакогенератора. Подставите нужные числа. ; ------------------^-6 ; ------------------v-7 LAT LD A,CL_1 CALL PRN_A LD A,CL_2 CALL PRN_A ; ............. LD A,CL_N JR PRN_A ; Подпрограмма переключения принтера на латинский шрифт. CL_1, ; CL_2, ... CL_N - это последовательность управляющих кодов для ; переключения знакогенератора. ; -----------------^-7 ; -----------------v-8 TABL1 DEFB ... ; 95 байт - таблица кодов принтера, ; соответствующих знакогенератору ZX-SPECTRUM с кодами #20, #21, ; ... #7E. Необходимость в ней вряд ли у кого появится. ; -----------------^-8 ; -----------------v-9 TABL_2 DEFB ... ;64 байтa - таблица кодов принтера, ; соответствующих русским буквам А, Б, В, Г, Д, Е, Ж, З, ... Э, ; Ю, Я, а, б, в, г, д, е, ж, ... я. ; ------------------^-92 P.S. Текст набран в редакторе ZX/IBM Text Editor ver 1.0 (c) Hohlov Oleg, отформатирован ZX- WORD v 2.5m (c) Yeliseyev, Koku- nov. Для программы HELP использо- ван TEXT DESIGNER v 1.0 (c) Пля- сунов Дмитрий. Начертание символов латин- ского алфавита заимствовано из ZX-ASM 3. Музыка написана группой Smash Soft (приложение к демон- страции "DISCOMANIA"). При разработке программы по- заимствованы некоторые процеду- ры. Для печати символами двой- ной высоты использована процеду- ра, описанная в ZX-РЕВЮ 95/2, стр. 40 (c) Михаил Бульканов. Для выделения окна при печати меню используется процедура, аналогичная описанной в книге издательства "Питер" "Как напи- сать игру на ассемблере". Ос- тальные совпадения с машинным кодом других программ случайны.
Другие статьи номера:
Похожие статьи:
В этот день... 9 октября