┌──────────────────────────────┐
│ │
│ НОВЫЕ ПРОГРАММЫ │
│ │
└──────────────────────────────┘
(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) Михаил Бульканов.
Для выделения окна при печати
меню используется процедура,
аналогичная описанной в книге
издательства "Питер" "Как напи-
сать игру на ассемблере". Ос-
тальные совпадения с машинным
кодом других программ случайны.