Код:
Ленинградский SP-COMPUTER CLUB
представляет новую версию системной
программы ПЭВМ "СПЕЦИАЛИСТ" версии 2.7
! Загрузчик и монитор представляют собой единую программу и работают только
совместно. Все входные точки загрузчика и монитора сохранены, что обеспечи-
вает 100% совместимость всех программ, использующих как стандартные так и
внутренние входные точки. Является наиболее совершенной системной програм-
мой для "СПЕЦИАЛИСТА" на апрель 1990. Является разработкой ленинградского
компьютерного клуба "СПЕЦИАЛИСТ".
C010 - очистка экрана, параметры 8FFA/8FFB
C037 - вывод символа на экран/внешнее устройство. Осуществляет роллинг эк-
рана, на 20% быстрее чем у Орлова, знакоместо предварительно не очи-
щается, если установлен признак эхо-печати, то дополнительно вызы-
вается драйвер принтера, в случае неготовности принтера функция
эхо-печати игнорируется
C170 - вывод звука (параметры 8FF1/2), отличается тем, что сигнал одновре-
менно выводится на выход для записи на магнитофон
C190 - временная задержка, параметр в рег. B
C1A0 - вывод звука высокого тона
C1AB - вывод звука низкого тона
C254 - программирование ППА клавиатуры (FF00)
C25A - ----"----
C337 - ввод символа с клавиатуры с обработкой упр.кодов - установкой черно-
го и белого фона соотв.клавишами. Изменена работа клавиш "НР" и
"РУС/ЛАТ". Введена фиксация нижнего регистра (НР + пробел). С по-
мощью курсора отображается включение НР/ВР, а звуком - РУС/ЛАТ. Ге-
нерирует случайное число в ячейке памяти 8FEBH. Кроме этого эта под-
программма обрабатывает следующие функции:
НР+F1 - выход в монитор из любой программы
НР+F7 - включение эхо-печати на принтер
НР+F8 - выключение эхо-печати
A при наличии ПЗУ D000 поддерживает также и
НР+F2 - вкл/выкл режима КОИ-8 или КОИ-7 с красивым шрифтом (знакоместо 8*8
точек)
НР+F3 - включение двухчастотного формата записи на магнитофон (стандарт MSX)
НР+F4 - включение двухфазового формата записи на магнитофон (это стандар-
тный формат "СПЕЦИАЛИСТА")
НР+F5, НР+F6 - вызов п/п пользователя (см.ниже)
Эти функции в отличие от монитора Савощенко, не занимают клавиши F1-F8
на системные нужды, что неправильно. Большое количество программ их широко
использует. При простом нажатии функцинальных клавиш вырабатываются стан-
дартные коды 0...7.
C377 - RDBYTE, ввод байта с магнитофона
C3D0 - WRBYTE, вывод байта на магнитофон, конст.записи 25-FF
Особенность двух последующих подпрограмм заключается в том, что парал-
лельно с вводом/выводом осуществляется индикация текущей ячейки памяти (э-
того нет ни в одной советской бытовой ПЭВМ). Кроме этого осуществляется ин-
дикация процесса ввода вывода с помощью бегущих по бордюру полос, как в
ZX-Spectrum (см. ниже).
C3F9 - ввод блока с магнитофона с поиском синхро байта, первые 4 байта ад-
реса записи блока в ОЗУ C422 - ввод блока с поиском синхро-байта,
HL,DE - адреса начала и конца блока
C416 - то же, без поиска синхро-байта
C427 - CMPDH, сравнение HL и DE
C42D - пересылка блока в ОЗУ: (HL..DE) --> (BC)
C438 - MSSG, вывод сообщения, последний байт - 00
ВНИМАНИЕ! Особенность подпрограмм вывода на экран, принтер и магнитофон и
ввода с клавиатуры и магнитофона заключается в том, что все они
являются програмно управляемыми, т.е. Эти п/п могут быть замене-
ны соотв. Подпрограммами пользователя. Это возможно за счет раз-
мещения векторов перехода на исполнительные части этих п/п-м в
служебных ячейках ОЗУ. Все директивы монитора тоже являются прог-
рамно управляемыми, т.е. Любая директива может быть заменена ди-
рективой пользователя (сначала проверяется не определена ли ди-
ректива пользователем, а далее управление передается стандартной
п/п обработки директив).
Служебные ячейки монитора для хранения адресов системных подпрограмм:
8FD0 - количество символов в строке (48/56/64)
8FD1/2 - адрес п/п обработки директив монитора
8FD3/4 - адрес п/п записи байта на магнитофон
8FD5/6 - адрес п/п чтения байта с магнитофона
8FD7/8 - адрес (в экранной области) для вывода счетчика текущей ячейки при
вводе/выводе на магнитофон
8FD9/A - адрес драйвера принтера
8FDB/C - адрес п/п вывода символа (на экран)
8FDD/E - адрес п/п ввода символа (с клавиатуры)
8FDF/E0 -адрес п/п обработки кодов клавиш
8FE1/2 - адрес буфера трансляции ассемблера, по сбросу устанавливается 1000H
8FE3/4 - адрес начала блока введенного с магнитофона для автостарта
8FE5/6 - адрес буфера текста редактора (2000H)
8FF5 - признак эхо-печати (=0 печать включена)
8F90 - при работе с КОИ-8 признак большие или маленькие буквы
Все остальные ячейки имеют то же назначение, что и ранее в мониторе
Орлова/Зверкова.
ВНИМАНИЕ! Версии 2.8 - 3.4 кроме этих ячеек используют дополнительные слу-
жебные ячейки до адреса 8F60H, что вызывает несовместимость неко-
торых программ, работающих на версии 2.7 (программы загружаемые
по сбросу - загрузчик которых грузится "прямо" в служебные ячей-
ки, подставляя в них свои вектора переходов).
Кроме этого п/п ввода с магнитофона существенно изменена. Кроме вывода
на экран текущего адреса ввода в ОЗУ, п/п-мма ввода автоматически опреде-
ляет и устанавливает константу чтения, причем сохранена и возможность вво-
да с заранее установленной константой ввода. Функция коррекции константы
ввода исключена за ненадобностью. При нажатии клавиши <СТР> в процессе вво-
да осуществляется выход в монитор. Кроме этого в отличие от предыдущих вер-
сий монитора, клавишей <СТР> прерывается также также процесс вывода на маг-
нитофон.
В отличие от монитора Савощенко процедура инициализации и ввода по
сбросу с автозапуском сохранена как абсолютно необходимая для автоматичес-
кой загрузки блоков в разные адреса ОЗУ и ввода заставок программ. По сбро-
су, после инициализации служебных ячеек ОЗУ, анализируется наличие сигнала
с магнитофона; если сигнал есть, то автоматически определяется константа
чтения, вводится блок и автоматически запускается на исполнение, как в заг-
рузчике-85. Если сигнал с магнитофона не поступает, то управление передает-
ся монитору.
В отличие от других версий монитора введен тимплет символов, т.е режим
повтора предыдущей директивы монитора (до конца буфера или кода 0D) нажа-
тием клавиши "->" (курсор вправо). Забой может осуществляться клавишей "<-"
и в нижнем регистре клавишей <ЗАБОЙ> (в верхнем регистре она как и положе-
но вырабатывает символ "_"). В качестве разделителя в директивах монитора
теперь может использоваться любой символ с кодом меньше 30H (в том числе
"пробел",#,%,*,$,+ и др.)
При работе п/п-рамм ввода/вывода с магнитофона (во всех форматах запи-
си: РК86, ZX-Spectrum, MSX) дополнительно осуществляется индикация цветом
бордюра (аналогично ZX-Spectrum). При этом по бордюру (краям экрана) бегут
хаотические полосы. По ширине полос можно грубо оценить скорость ввода. Для
использования этой функции необходимо соединить выход РС6 ППА (D44/11) со
входом D47/1 (вход последов-х данных выходного сдвигового регистра). Сиг-
нал бордюра удобно подать через резистор на базу выходного эмиттерного пов-
торителя. Резистор подобрать, чтобы синхронизация не срывалась.
Учитывая то, что в стандартном "СПЕЦИАЛИСТЕ" бордюр по горизонтали не
виден (на советских телевизорах не видны даже крайние столбцы символов) ре-
комендуем увеличить такт процессора с 2.0 до 2,5 мгц (требуется установка
одной дополнительной микросхемы 155ТМ2), при этом изображение немного сжи-
мается по горизонтали и становятся видными крайние символы и бордюр по го-
ризонтали. Функция включения двигателя магнитофона с помощью РС6 ППА исклю-
чена.
Собственно монитор располагается в адресах C800 - CFFF. Также сохране-
ны все точки входа, в том числе и внутренние, например CC6C - распечатка HL
в HEX-виде. В качестве директив используются все 26 букв латинского алфави-
та.
Кстати. Версии монитора, начиная с какой-то (но не помню какой) уже нельзя
разделить на загрузчик и монитор С800, а это просто одна программа разме-
ром в 4 кб.
КРАТКОЕ ОПИСАНИЕ РЕЗИДЕНТНЫХ ДИРЕКТИВ МОНИТОРА
А - переход на ассемблер по адресу D800H. Параметры: 1-й адрес текст.буфе-
ра, 2-й параметр - адрес буфера трансляции. По умолчанию старые адреса
(для работы с несколькими текстами одновременно)
B - свободна, предназначена для работы с электронным диском, загрузки с
НГМД и платы расширения ПЗУ. По сбросу заглушена переходом C000.
C - сравнение областей памяти
D - HEX-дамп памяти
E - переход на редактор по адресу E800, параметры как в директиве A
F - заполнение кодом области ОЗУ
G - запуск программы, без обработки точки останова (для этого применяются
отладчики)
H - HEX-калькулятор (сумма и разность 2-х чисел)
I - ввод файла с именем. 1-й параметр константа чтения (если не указан то
константа определяется автоматически), 2,3-й параметры адреса начала и
конца ввода в ОЗУ. Если не указаны, то ввод по адресам указанным в за-
писи. Отображается текущий адрес озу. По окончании ввода выдается зву-
ковой сигнал
J - загрузка блока в формате ZX-SPECTRUM, автоматически определяет констан-
ту ввода (этого нет в самом ZX-SPECTRUM), выводит адреса и контрольный
байт (байт паритета - если не равен 0, то ошибка при вводе)
K - вычисление контрольной суммы блока
L - дамп памяти в HEX- и символьном виде
M - просмотр-модификация ячеек ОЗУ. Выводится HEX- и символьное представле-
ние. Нажатие "АР2"+<клавиша> ввод в ячейку кода клавиши. В случае оши-
бочного ввода - сообщение об ошибке, а не выход из директивы как у
Орлова
N - проверка на несоответствие заданному коду участка памяти
O - вывод файла с заголовком, как раньше, с индикацией текущей ячейки, син-
хро-дорожка перед выводом имеет характерный "чистый" тон, по окончании
вывода на ленту записывается звуковой сигнал, облегчающий поиск прог-
рамм (выводится также на громкоговоритель)
R - ввод файла без заголовка. 1-й параметр константа чтения (если не ука-
зан то константа определяется автоматически), 2,3-й параметры адреса
начала и конца ввода в ОЗУ. Выводит адрес текущей ячейки ОЗУ
S - поиск цепочки байт длиной до 4-х байтов
T - пересылка блока ОЗУ. В отличие от прежних версий монитора возможна пе-
ресылка в любую сторону с любым перекрытием
U - пересылка блока данных из ПЗУ в панельке программатора, подключенного
через ППА по адресу F000 (по схеме SP-COMPUTER CLUB-а, для 573РФ2,
573РФ4). 1-й и 2-й параметры - начальный и конечный адреса в ОЗУ, 3-й
параметр - начальный адрес ПЗУ
Y - чтение файла в формате РК86, 1-й параметр - константа чтения, по умол-
чанию определяется автоматически, 2-й параметр смещение, выводит адрес
V - запись файла в формате РК86, параметры как в директиве 'O', выводит те-
кущий адрес
W - запись файла в формате "СПЕЦИАЛИСТ-85", всё как раньше, выводит теку-
щий адрес
Q - запись файла в формате "СПЕЦИАЛИСТ-85" без указания имени, адресов заг-
рузки (контрольная сумма выводится). Параметры как в директивах O, V,
W. Применяется для создания загружаемых по сбросу программ и заставок
Z - вывод блока в формате ZX-Spectrum, параметры как в директиве W (кон-
станта записи стандарт ZX)
@ - переход на дизассемблер по адресу D000, параметры см. А (при работе с
загружаемым с ленты драйвером применяется для управления вводом/выво-
дом. После запуска драйвера: @1/@2 - вкл/выкл кои-8 (КОИ-7, символы
8*8) @3/@4 - вкл/выкл MSX формата записи)
P - вывод блока на принтер/лок.сеть в стандарте интерфейса ИРПР через ППА
по адресу F000. Параметры: 1-й и 2-й - адреса начала и конца блока в
ОЗУ. Если 3-тий параметр не 0, то выводится блок от начального адреса
до байта FFH, при этом 2-й параметр игнорируется.
X - ввод блока с внешнего устройства (лок.сеть ПЭВМ "СПЕЦИАЛИСТ") через ППА
по адресу F000 параметр - адрес начала ввода в ОЗУ, конец ввода по сня-
тию готовности внешнего устройства
ПОДКЛЮЧЕНИЕ СИГНАЛОВ ИРПР К ППА
ПЕРЕДАЧА:
С0 - готовность источника - И
С1 - строб источника - И
С2 - запрос приемника - П
С3 - готовность приемника - П
ПРИЕМ:
С4 - готовность источника - П
С5 - строб источника - П
С6 - запрос приемника - И
С7 - готовность приемника - И
Директивы P и X позволяют осуществлять двусторонний межмашинный обмен.
По директиве P можно распечатать текст на принтере, указав 1-й пар-р адрес
начала текста,2-й параметр опустить и 3-й параметр не 0. При неготовности
внешнего устройства выдается соотв. Сообщение. По окончании передачи вы-
дается контр.сумма, что позволяет выявлять ошибки при обмене в сети.
Кроме старых подпрограмм в монитор введены новые. Стандартные:
C821 - вывод символа из регистра C на принтер
C82D - приём байта с внешнего устройства в регистр A
CB0E - вывод синхродорожки (перед выводом блока) с характерным звуком
Новые подпрограммы с нестандартными точками входа:
CEDF - определение константы чтения, заносится в ячейку 8FFF и регистр A
C954 - задержка при вводе/выводе байта на магнитофон, регистр B - параметр
задержки (не портится). Выводит после 4-х обращений содержимое
HL-пары на экран по адресу в ячейках 8FD7/8. При необходимости от-
ключения вывода текущего адреса на экран в ячейки 8FD7/8 занести ад-
рес соответствующий не используемым ячейкам ОЗУ или адрес ПЗУ.
Последняя редакция этого текста: март 1990
ПРИМЕЧАНИЕ. Последней версией ленинградского монитора является версия 3.4
(это уже конец 1990 года). В этой версии существенные изменения. В частнос-
ти исключена загрузка многих МГ-форматов (при наличии дисковода, это не
особо надо).
Описание монитора версии 3.3:
Код:
+----------------------------------------------+
¦ ¦
¦ МОНИТОР для СПЕЦИАЛИСТА версии 3.0-3.3 ¦
¦ Ленинград, сентябрь-ноябрь 1990 года ¦
¦ ¦
+----------------------------------------------+
По сравнению с версиями 2.5-2.9 отсутствуют директивы Z и X.
Больше нет п/п-ммы приема байта с внешнего устройства (ранее C82D).
Изменена п/п ввода с клавиатуры (стандартный вход C337):
- введен автоповтор.
- увеличено количество системных функций с пяти до восьми: НР+F1... НР+F8
- векторы переходов в адресах D000,D003,D006... Проверяется наличие кода C3
НР + F9 (EDIT) - всегда обеспечивает выход в монитор (C800).
НР + F10 и НР + F11 - включение и выключение эхо-печати на принтер.
Изменена подпрограмма вывода символа на экран:
- введена обработка кодов 8B и 8C - установка цвета экрана (вкл/выкл-е
инверсного вывода).
- Введена обработка кода ESC-последовательности для прямой адресации
курсора: ESC+Y+...
Это обеспечивает совместимость с программами РК86 и программами бар-
наульского кооператива "SP-580".
Введены новые системные переменные для хранения векторов перехода на
исполнительные части подпрограмм:
8FC3...C5 - резерв, но инициализируются по сбросу
8FC6 - признак инвертирования данных выводимых на внешнее устройство (00)
8FC7 - для обработки ESC-последовательности
8FC8/C9 - адрес перехода п/п-ммы C81B (ввод кода нажатой клавиши)
8FCA/CB - адрес перехода п/п-ммы C80F (ввод строки символов в орловском мо-
ниторе; вывод на принтер в барнаульском)
8FCC/CD - адрес перехода п/п-ммы C827 (вывод блока на магнитофон - Орлов;
вывод пилот-сигнала - Барнаул)
8FCE/CF - адрес перехода п/п-ммы C824 (ввод блока с магнитофона - Орлов;
определение константы чтения - Барнаул)
Остальные служебные ячейки - как в ленинградском мониторе версий 2.0 - 2.8.
Указатель стека выставляется равным 8F5F. Изменены адреса всех буферов
монитора. Теперь используется один и тот же буфер для имени считываемого и
записываемого файла. При этом после ввода файла по директиве I - имя ос-
тается в буфере и может быть использовано для вывода по директиве O. Тогда
имя выводится по нажатию "->". По достижении конца имени дает звук - раньше
этого не было.
Введена новая очень полезная директива - верификация записи на ленте:
V - сравнение записи на ленте с данными в ОЗУ, один параметр - константа
чтения (если - нет, то определяется как обычно, автоматически). Имя
можно не указывать (на запрос - <ВК>).
ВНИМАНИЕ! Версии монитора, начиная с 3.0 работают с новым драйвером в ПЗУ
D000. Который теперь содержит новый набор системных драйверов:
НР+F2 - как и ранее вкл/выключение шрифта символов 8*8, однако теперь эта
функция вызывается не только подпрограммой ввода символа, но и под-
программмой вывода, отчего переключать шрифт можно во время вывода
текста на экран без остановки ролика (для останова нажать НР + СТР)
НОВИНКА! ПЗУ D000 содержит полный (!) эмулятор барнаульского монитора, что
позволяет выполнять барнаульские программы без изменений в них!
Для этого в самом компьютере необходимо установить дешифратор (555ИД7),
разбивающий адресное пространство F800-FFFF на 8 участков по 256 байт (для
тех у кого это еще не сделано) и обеспечить выборку ПЗУ C800 при обращении
к ПЗУ F800 - включить два диода анодами к входу /CS ПЗУ C800, катоды к вы-
ходам дешифраторов C800 и F800. После этого все программы барнаульского
кооператива не обращающиеся непосредственно к порту по адресу F000 (это 90%
программ) будут вашими. А для получения 100% совместимости с помощью еще
двух диодов (или одной ИМС 155ЛИ1) обеспечьте выборку порта, как по адресу
FF00 так и по адресу F000.
НР + F3 - включение барнаульского эмулятора
НР + F4 - выключение барнаульского эмулятора (в отличие от старой версии
эмулятора не требуется нажатия <ВК>).
НР+F5 - включение встроенного программатора
После включения работают директивы:
F - без параметров. Проверка чистоты ПЗУ. Выводит список не содержащих код
FF ячеек.
C - <нач.адр.ОЗУ>,<кон.адр.ОЗУ>,<нач.адр.ПЗУ> - сравнение областей ОЗУ и ПЗУ
Z - <нач.адр.ОЗУ>,<кон.адр.ОЗУ>,<нач.адр.пзу> - прошивание ПЗУ. В отличие
от старой версии выводит текущую ячейку (как при вводе с МГ). Выключе-
ние программатора по сбросу.
НР + F6 - включение драйвера электронного диска. Просто передает управле-
ние по адресу D800.
НР + F1 - загрузка из электронного диска программы RAMDOS COMMANDER - гра-
фического интерфейса для работы с электронным диском (смотри опи-
сание RAMDOS)
НОВИНКА! Для работы с 3-ей версией монитора разработан загружаемый в ОЗУ
драйвер ввода/вывода символов, позволяющий редактировать тексты с использо-
ванием таблицы кодов КОИ-8 (коды от 0 до 256), включающие псевдографичес-
кие символы. Применена основная кодировка символов (МПСС, 1986.04). Позво-
ляет оформлять текст красивыми рамками и другими графическими символами.
Используется клавиша Б/М (большие,заглавные/маленькие буквы) - бывшая кла-
виша "ПОВТОР", не используемая в самом мониторе.
Ленинград, 25 ноября 1990 г.