Описание мониторов Орион-128 и Монитор 3 ЕХТ
Работа последовательных и параллельных портов
Платка переходник, вместо к573рф2 ставим ПЗУ большего размера, выборку информации (тесты и системные мониторы организуем с помощью дипсвичей или электронно)
Вставлена КС573РФ4, расположение джамперов для работы
Новая платка, выборку делаем с помощь. дипсвичей и электронно!!!
Стандарты ПО, адресов и портов
Информация о системном ПО SP-COMPUTER CLUB-a.
Составил: В.Чистяков, май 1992 192238 Санкт-Петербург а/я 175
BIOS 3.2(3)/Z ДЛЯ "ОРИОН-128"
Дополнительно смотри описание 3-го монитора, руководство программиста
Очередное письмо В. Чистякова с рекомендациями по Ориону
Полностью совместим с МОНИТОРом-2 и 3. За счет использования команд Z80, а также еще более тщательного программирования системных п/п, по сравнению с МОНИТОРом-2, удалось ввести векторизацию п/п F812 (STATUS), F81B (INKEY), F80F (PRINT) и вынести ячейку константы задержки для защиты от дребезга клавиш.
Дополнительные рабочие ячейки BIOS 3.2(3)/Z
F3EC/ED - адрес п/п F812 (STATUS)
F3EE/EF - адрес п/п F80F (PRINT)
F3F0/F1 - адрес п/п F81B (INKEY)
F3F2 - константа защиты от дребезга
Теперь Вы имеете возможность, подгрузив соотв.драйвер подключить аппаратную клавиатуру не изменяя ПЗУ и главное иметь при Z80-CPU "псевдоаппаратную" клавиатуру по прерываниям (с внутренним буфером например: как в IBM PC до 10 символов). Изменять константу защиты от дребезга (по сути это константа автоповтора) требуется т.к п/п STATUS у разных драйверов имеют разное быстродействие, например: у МОНИТОРА-3 п/п в 3-4 раза быстрее, чем у МОНИТОРА-2, драйвер МС7007 еще быстрее в 5 раз, ну а опрос STATUS-а аппаратной клавиатуры - вообще всего одна команда; поэтому загружаемые драйвера, чтобы быть универсальными должны иметь возможность изменять быстродействие клавиатуры (из-за отсутствия такой ячейки получается столь быстрый автоповтор при Мониторе-3 для МС7007/BIOS MC3.12, А.Мостового/ в оконном драйвере В. Ивинских /КОИ-7 8*8/). Подпрограмма F80F в INTEL-ROM это PRINT (то, что сделал В. Сугоняко в Мониторе-2 - это бред) - поэтому векторизация - единственная возможность при сохранении совместимости спасти дело.
Дополнительные возможности EXTENDED-MONITOR-3 1.4/Z
MONITOR-EXT 1.4/Z включает одну новую директиву, действие директивы "H"
изменено.
J <NAME> - запись на эл.диск последнего загруженного с ленты файла под
именем NAME
H <N1>,<N2> - вычисление суммы и разности двух 16-ричных чисел N1 и N2
MONITOR-EXT 1.4/Z будет работать с любым MONITOR-3 (3.0-3.4), в отличие
от M3-EXT версий 1.0-1.3, которые работают только с MONITOR-3 версий
3.0/3.1/3.12. Это связано с тем, что В. Ивинских, делая M3-EXT довольно
неграмотно "залезал" прямо внутрь MONITOR-3 (он полагал, что столь
совершенную программу никогда не придется менять). Естественно этот
M3-EXT 1.4 будет работать только при наличии Z80 процессора.
Историческая справка о версиях Монитора-3 для "ОРИОН-128"
В декабре 1990 г. В. Ивинских получил от авторов "Ориона" листинг
Монитора-2, который был затем опубликован в "Радио" в январе 1991 г.
Программисты SP-COMPUTER CLUB-а работали тогда только на "Специалисте"
(отсюда и название) и "ОРИОН-128" их не интересовал. В.Ивинских связался
с авторами только с целью продажи им своих разработок RAM-DOS,
RAMDOS-COMMANDER, редактора, программатора, набора п/п графического
интерфейса и игры от "Синклера" MANIC-MINER. В январе 1991 г. стало
абсолютно ясно, что "Специалист" умер и развитие "ОРИОНА" только
ускорило его смерть. Именно поэтому в январе-феврале 1991 г. SP-COMPUTER
CLUB перешел на "ОРИОН-128". Первое знакомство с МОНИТОРОМ-2, после
работы на великолепном МОНИТОРЕ В. Ивинских для Специалиста (верс.3.4)
привело в полный шок. Если МОНИТОР В. Ивинских на Специалисте не только
настраивался на скорость, работал с МГ в 7 форматах РК86, Синклер, 2
формата Специалиста, MSX, SP-580), работал с эл. диском в 512К, имел 30
директив и имел счетчик ввода/вывода (отображался бегущий адрес, ячейки
куда осуществлялся ввод/вывод) и все это в 4К, то МОНИТОР-2 по сравнению
с этим выглядел просто, как первая программа школьника. Особенно убивало
отсутствие директивы G, работа клавиш по отпусканию и отсутствие
привычных по Специалисту программных прерываний (там в BIOS были
имплементированы не только сами прогр. прерывания, но и п/п вызова
RAMDOS COMMANDER-а, что позволяло напр: прямо из игры выйти в COMMANDER,
запустить другую программу, а потом вернуться в игру в том же самом
месте...). Естественно, что появление МОНИТОРА-3 было просто
неизбежно. Если бы В. Ивинских создавал М-3 с нуля не связанный
неоптимальными "архитектурными" решениями В. Сугоняко (как программными,
так и аппаратными) то МОНИТОР-3 был бы значительно лучше (например: если
бы матрица клавиатуры была бы без диодов, как на Специалисте, то п/п
чтения с клавиатуры работала бы в 10 раз быстрее, т.к требовалось бы
только 2 считывания - по вертикали и горизонтали, без сканирования
"бегущим нулем", русские буквы можно было бы убрать, т.к в системном ПО
они не нужны, а в редакторах все равно надо КОИ-8 и т.д). Итак январь
1991 г. - первая версия М-3 (контр. сумма 24A3) и в феврале широко
распространившаяся (к сожалению) версия 3.0 (контр. сумма 29A7).
(Во всех МОНИТОРАХ-3 номер версии в ячейке F842) В этой версии В.
Ивинских сделал маленькое упрощение драйвера вывода на экран, а именно
матрица вывода 6*7, а не 6*8. В феврале 1991 г. когда был написан
драйвер КОИ-8 для CP/M-80 (KOI8.COM первой версии, использующий п/п ПЗУ)
это выяснилось, т.к в КОИ-8 строчные буквы имеют хвостики ниже уровня
заглавных, т.е используют всю матрицу 6*8. Поэтому в апреле 1991 г.
появилась версия 3.1 (контр. сумма 7E00), устраняющая этот недостаток,
хотя уже в июле 1991 г. этот недостаток перестал иметь значение, т.к был
написан новый драйвер KOI8.COM, полностью содержащий в себе все п/п
вывода на экран, а также свою п/п опроса клавиатуры РК-86. Этот драйвер
позволяет выводить
символы на экран в матрице 6*10, т.е символы "впритык", что позволяет
иметь псевдографику (этот драйвер впоследствии был украден "ОРИОН-СЕРВИСОМ"
и продавался вместе с их
CP/M-80, но сами они даже не знают всех
возможностей этого драйвера, в частности, как ввести символ
подчеркивания, отсутствующий в РК).
Итак:
апрель 1991 г. - MONITOR-3.1 Так как Монитор-3 использует расширение
(экстент) укажем версии M3-EXT:
январь 1991 - EXT 1.0 - не имеет работы с электронными дисками A и B и
только формат РК86, при работе с МГ
февраль 1991 - EXT 1.1 - все как в EXT 1.2, но содержит ошибку (длины
блоков при вводе с МГ выводятся на 1 больше)
март 1991 - EXT 1.2 - широко распространившаяся версия. Ушла ее версия с
загрузчиком с НГМД (имеющая проверку на наличие второго
экстента-загрузчика дисковода (по B700) и с ошибкой при МГ-директивах
(опасайтесь программы под именем XTL/EXT-LOADER) MONITOR-EXT версии 1.2
содержит ошибку в работе директивы W (выгруженное по директиве W, не
грузится потом авторским NC$/CH$) и при вводе по директиве R портит
следующую за введенным блоком ячейку. Это несущественные ошибки, т.к
никто из программистов не пользуется
ORDOS, а "деревянные" пользователи
"ОРИОНА" не пользуются EXT-ом. Поэтому EXT 1.2 просуществовал без
изменений до января 1992 г, когда эти ошибки были устранены в версии
1.3. Итак январь 1992 - EXT 1.3 - все как в 1.2, но без ошибок.
SP-COMPUTER CLUB, считая что у компьютера может быть только один
стандарт клавиатуры (РК86), не поддерживал пользователей с МС7007. Не
было М-3 для
МС7007.
В октябре 1991 Андрей Мостовой (студент ЛЭИС, Ленинград) разобравшись в МОНИТОРЕ-3 В. Ивинских сделал версию MONITOR-3 для МС7007 (BIOS V3.1/MC). Эта версия была достаточно убогой, не имела не только русских, но и части английских букв в знакогенераторе и не имела программных прерываний. Однако в отличие от абсолютно неправильного драйвера МС7007 В. Сугоняко она применяла правильную схему подключения и обеспечивала совместимость игр и к тому-же была МОНИТОРОМ-3, т.е с ней работали экстенты МОНИТОРА-3. Она использовала переделанный драйвер В. Сугоняко. В декабре 1991 г. в "Радио" был опубликован драйвер МС7007 для РК86, причем правильный в отличие от Сугоняковского (т.е имеющий чтение по порту B). А. Мостовой воспользовался этим драйвером и сделал версию М3.12 для МС7007 клавиатуры, что позволило иметь все английские буквы и ввести программные прерывания. Кроме отсутствия русских букв этот драйвер имел неправильную работу п/п STATUS (она "случайно" забывает проверять порт C, что незаметно в играх и МГ-программах, но нервирует в CP/M). Эти недостатки драйвера исправлены уже Д. Тупицыным в мае 1992 г. в версии М3.14/МС7007, эта версия по видимому последняя для процессора КР580, т.к SP-COMPUTER CLUB теперь занимается только Z80, да и почти невозможно уже, что-то улучшить в М3/КР580. Таким образом существуют версии: BIOS 3.1/MC - октябрь 1991, совсем дерьмо, но уже М3
BIOS 3.12 - декабрь 1991 (MC7007), без русских букв, но работают все
игры. Итак последними МОНИТОРАМИ-3 для КР580 следует считать:
РК86-KEYBOARD: BIOS 3.1 (апрель 1991)
MC7007-KEYBOARD: BIOS 3.14 (май 1992)
Для процессора Z80 имеется много версий МОНИТОРА-3. В большинстве из них указано на их временный характер (надпись BETA-VERSION).
Ушли следующие версии:
10.91-02.92 - версия 3.1/Z - обыкновенный МОНИТОР-3, с измененной п/п
BEEP (F83F), много версий, где ужато командами Z80, 40-80 байт.
февраль 1992 - BIOS 3.2, для РК86-клавиатуры, только для Z80, драйвер
клавиатуры формирует код подчеркивания - SHIFT/SPACE. Инициализируется
диспетчер ОЗУ в режим "128".
март 1992 - BIOS 3.2 MS7007, к сожалению ушло несколько промежуточных
версий с такими титрами (в Петербург и в Ригу). Ошибочные версии можно
отличить по работе п/п F80F (она здесь неправильно векторизована -
использует векторизацию п/п F809, ошибка проявляется при старте программ
подменяющих вектора - проявляется в отсутствии очистки экрана). Другая
ошибочная версия зависает при наличии ROM-диска.
В отличие от М3/7007 для КР580 - знакогенератор полный и п/п STATUS
правильная, т.е отличная вещь для пользователей 7007.
май 1992 - BIOS 3.3, для РК86-клавиатуры. Нет проверки на наличие
ROM-диска, т.е ORDOS - невозможна. Зато по старту осуществляется сразу
загрузка с НГМД. К сожалению загрузчик упрощен - можно грузиться только
с дискет с двойной плотностью (естественно, после загрузки можно будет
читать и одинарные дискеты - поставить в НГМД и нажать F4). Как и в
М3.2/РК можно вводить код подчеркивания (5F): СС/пробел.
май 1992 - EXT 1.4, BETA-версии (не раб. с М3.1, неподобранные
МГ-константы)
сентябрь 1992 - BIOS 3.3, для MS70007-клавиатуры, для CP/M, имеют все
буквы, но не имеют п/п работы с МГ, зато вместо этого загрузчик НГМД.
Имеется несколько версий 4-х килобайтного BIOS, но они не могут
считаться даже промежуточными версиями, т.к содержат дополнительно
только лишь загрузчик НГМД: слишком шикарно для 200 байтной программы
тратить 2048 ячеек ПЗУ.
В г. Тула на основе М3.2 разработана 4-КБ версия М3-ADELAIDE, с
отладчиком. Версии МОНИТОРОВ 3.2 и 3.3 следует считать МОНИТОРАМИ
совместимости, т.е они не являются BIOS "ОРИОНА-Z", а служат лишь
временно для обеспечения возможности использовать старое ПО, а благодаря
полной векторизации позволяют отладить по частям новые драйверы для "ОРИОН-Z",
так например был отлажен драйвер вывода 80-символов и драйвер ввода с
клавиатуры по прерываниям. Не следует ожидать новых версий BIOS или M3/Z-EXT,
по крайней мере в течении полу-года. Будут дорабатываться загружаемые
драйверы в первую очередь UNIDRIVER и SUPER-FONT: для начала они будут
переведены на Z80 и будет введен ввод с клавиатуры по прерываниям,
возможно введены цветовые функции (это конечно страшно тормознет и без
того медленный SUPER-FONT, т.е это будет ценно только для пользователей
"ОРИОН-ТУРБО" с тактом 5 мГц).
В заключение несколько слов о "хозяевах ОРИОНА-128" - авторах. Личные
амбиции не позволяют авторам признать, что другие могут программировать
лучше и всякая программа обеспечивающая совместимость - стандартна.
Ложная гордость не позволяет им признать ошибки (например М2/7007 -
из-за этого тысячи людей должны мучиться "несовместимостью") и
сотрудничать с другими.
Например: авторы имели возможность опубликовать CP/M еще год назад, т.к
в марте 1991 г. они получили от SP-COMPUTER CLUB-а всю необходимую
документацию по подключению НГМД, вместо этого они потратили год на то,
чтобы разобраться в CP/M самим и только потом начать ее тиражировать. В
ответ на прямое оскорбление В. Ивинских (его обозвали "доморощенным",
хоть он настоящий профессионал-программист) все программы SP-COMPUTER
CLUB-а работают теперь только с МОНИТОРОМ-3 (при отсутствии Монитора-3
возникает надпись:
"Water Detected In ROM-Chip"), впрочем т.к теперь все программы работают
только на Z80 только ненормальный будет работать на М2 (хотя бы из-за
отсутствия при этом звука). На этой дискете файлы: M32ZMS.BIO,
M32ZRK.BIO, M33ZRKD.BIO, M33ZMS.BIO, EXTZ-14.COM
Санкт-Петербург, май/сентябрь 1992 г.
P.S. Последующий текст дописан в феврале 1993 г. В.Чистяковым.
Автором МОНИТОРОВ-3 для Z80 (естественно первоначальным автором всех МОНИТОРОВ-3 должен считаться В. Ивинских) версий 3.2 и 3.3 был Новгородов. К сожалению эти МОНИТОРЫ плохо переносят ORDOS и NC$ (по-видимому из-за конфликта в области F300 или переполнения ОЗУ стека). Т.к никто в SP-Computer Club-е ORDOS не пользуется, это оставалось долгое время необнаруженным. Кроме того по ошибке в течение почти полугода на дистрибутивных дискетах распространялся "абсолютно дохлый" МОНИТОР-3.2РК (в CP/M это заметно если работать без драйвера на 80 символов, т.е на 64 символа: при попытке "ролика" экрана все зависает). Это одна из промежуточных версий перепутанная по ошибке, т.к у всех в SP-Computer Club-e клавиатуры MS7007. Это досадная ошибка вызвала множество нареканий и подорвало доверие пользователей к нашему системному ПО.
В качестве оправданий можно сказать, что НЕ ОШИБАЕТСЯ ТОЛЬКО ТОТ, КТО НИЧЕГО НЕ ДЕЛАЕТ - это ошибка лично моя (В.Чистякова), а не А. Новгородова и была вызвана досадным перепутыванием дискет при копировании. ПРИНОШУ ВСЕМ, КТО ВЫНУЖДЕН БЫЛ НАПРАСНО ПЕРЕШИВАТЬ СВОИ ПЗУ ИСКРЕННИЕ ИЗВИНЕНИЯ. Были выявлены и некоторые неудобства в работе МОНИТОРОВ (например: в М3.3 упрощенный загрузчик CP/M - грузит только двойную плотность при 80-дорожечном НГМД и из-за этого нельзя загружаться с защищенных от копирования дискет: вариант защиты Алексея Кузнецова 07.92). Т.к А. Новгородов в августе 1992 г. Собрал IBM PC (кстати на средства, заработанные созданием программ для ОРИОНА) и "ушел с ОРИОНА" до января 1993 г (когда он наигравшись этой "конторской машиной" решил не возвращаться на ОРИОН, ибо на IBM PC программисты не нужны). Новых версий МОНИТОРА никто не создавал. В январе 1993 г. А. Новгородов написал несколько улучшенную версию МОНИТОРА-3/Z для "ОРИОН-128/Z". Итак продолжение списка МОНИТОРОВ-3:
январь 1993 г. - BIOS V3.4/Z, две версии РК и MS7007 клавиатуры. Все
как и в МОНИТОР-2, т.е по сбросу загрузка из ROM-диска 2К по B800H.
тогда-же - BIOS V3.5/Z две версии для РК и MS7007 клавиатур. Содержат
загрузчик CP/M (естественно адрес стандартный - F720H).
Эти версии, что-бы избежать возможных ошибок несут в титрах надпись BETA-
версия (т.е версия не окончательная, распространяемая с целью выявления
возможных ошибок; например MICROSOFT целых 2 года "гоняла" MS-DOS 5
версии). Именно на эти или последующие версии МОНИТОРА-3 рассчитаны
адаптируемые в настоящее время программы для ОРИОНА с Z80. Первой игрой
требующей именно таких мониторов стала программа CHESS (от Синклера).
Важным отличием этих версий является возможность RESTART-а с возвратом и
введение отдельной п/п инициализации. Теперь программа запущенная на
исполнение имеет возможность блокировать возможность выхода из нее "по
сбросу" (например: с целью получения в ОЗУ кода программы для
последующего "крака"). Это достигается тем, что теперь МОНИТОР после
запуска не "портя" ни одной ячейки ОЗУ первым делом осуществляет
проверку наличия специального "флага" (в области служебных ячеек). Если
этот "флаг" выставлен, то управлениe передается по адресу записанному в
ячейки F3C1/C2. Перед, тем как выполнить команду "JP (HL)" (PCHL) этот
"флаг автостарта" сбрасывается, тем самым "механизм работает только раз"
(этого "раза" достаточно, чтобы вам отформатировать дискету и
"подчистить" ОЗУ). Это простейший способ защиты в сочетании с
возможностью процессору делать аппаратный сброс (OUT XX) позволяет
реализовать механизм динамической защиты кода программы, т.е в ОЗУ
располагается "запакованная" по сложным алгоритмам программа, в
распакованном виде хранится только работающий в "данный" момент модуль,
и регулярно и причем достаточно часто (ориентируясь по NMI) выполняется
аппаратный сброс с последующим возвратом в программу. "Кракеру"
желающему получить в "чистом виде" код программы для последующего его
изменения при этом гарантирована веселая
жизнь, ибо без аппаратных доработок "сломать" программу нельзя,
аппаратно трассировать (другим компьютером с использованием WAIT или
HOLD) будет трудно из-за работы по прерываниям в реальном времени
(трассировать в реальном времени можно только на дорогой импортной
аппаратуре). Главная цель МОНИТОРА - лишить кракера возможности нажать
на сброс, HOLD или NMI, заменить ПЗУ своим (во время сброса), а большое
количество модификаций ОЗУ (естественно с использованием запутывающих
стековых команд и оценкой времени по регистру R) исключат возможность
разобраться в программе с помощью программного отладчика. Тем, кого
интересует принцип работы "автозапуска" советую дизассемблировать начало
МОНИТОРА.
Внимание: При применении этого МОНИТОРА, ВЫ без защиты против
злоумышленников, т.е очень легко сделать гадостный "вирус", который
например после запуска красивой игры подгрузит "сбросовый модуль"
например: форматирующий диск и вышибающий ПЗУ или ПОРТ ROM-диска (как
известно на ОРИОНЕ это делается легко). Это научит Вас пользоваться
программами только из порядочных источников (т.е постоянных продавцов:
авторов или их дилеров) и избегать покупки ворованных программ у
пиратов.
Пока в наличии монитор ЕХТ 1.3 (монитор ЕХТ зашивается в в ромдиск (первые 2к) вместо ОРДОС!!!! Монитор EXT описание программиста
M3-EXT V1.45 - январь 1993. На смену версии 1.44, которая неправильно настраивает константу ввода. Версии 1.44 и 1.45 теперь наконец-то сделаны "МОНИТОРО-3 "независимы", что означает, что нет обращений из M3-EXT в основной модуль МОНИТОРА-3 по нестандартным адресам (как было сделано в оригинале В. Ивинских). Это означает, что больше не надо думать о совместимости M3 и его экстента M3-EXT, что очень удобно - Вы можете делать все новые и новые версии МОНИТОРА-3, не перетранслируя каждый раз МОНИТОР-EXT. Если Ваш новый МОНИТОР имеет стандартные подпрограммы F800-F803-F806...и т.д., как в МОНИТОРЕ-2 (В. Сугоняко), а также обработчик команд (CCP) как в МОНИТОРЕ-3 (В. Ивинских), то можете быть спокойны, что даный экстент МОНИТОРА-3 версии 1.45 будет у Вас работать. Таким образом, M3-EXT-1.45 работает, как с МОНИТОР-3 версии 3.0 (февраль 1991), так и со всеми последующими и даже будущими версиями. Прошивайте M3-EXT-1.45 в ПЗУ (если хотите запускать его из ORDOS, то снабдите "перемещающим загрузчиком", т.к ORDOS не может загружать файлы по адресам B800-BFFF).
Санкт-Петербург, февраль 1993
P.S. Последующий текст - еще более поздняя приписка к этой "захватывающей исторической хронике", отображающей "этапы развития системного ПО ОРИОНА". Дополнение сделано в декабре 1993 г.
Ввиду, того, что В. Чистяков на период с марта по октябрь 1993-го временно не занимался "ОРИОНОМ-128" (бросил, но теперь кажется опять вернулся), а А. Новгородов в июне 1993 уехал в США (г. Канзас-Сити), то естественно никаких изменений с МОНИТОРОМ-3 не происходило. Можно упомянуть лишь "незаконный" МОНИТОР-3, который сделал А. Лыков (Ташкент). А. Лыков подло назвал его версией 3.6. На самом деле это обычный M3.5/MS, из которого выкинули программу загрузчика НГМД - естественно при этом освободилось 200 байт. В это освободившееся место была вставлена процедура инициализации по сбросу новых управляющих регистров, введенных в новую плату ОРИОНА "СУПЕР-ТУРБО", выпущенную осенью 1993 в Ташкенте. Если Вам попадет в руки этот МОНИТОР, то измените титр - уберите надпись - "(C) Караваев С." (Какие же копирайты за 10 новых байтов?) и измените номер версии - пусть будет M3.5/T (Ташкент). Если у Вас плата "СУПЕР" Вам конечно придется пользоваться этим монитором - ведь обычные МОНИТОРЫ ОРИОНА для этой платы не годятся. Ввиду того, что ЭР-кашные МОНИТОРЫ-3 версий 3,2-3,5 имели не подобраные константы автоповтора, пользователи РК-86 предпочитали применять старые версии МОНИТОРА-3 (BIOS 3.1/Z), но появилось несколько версий М3.4/3.5 (Казимирчак / Ковалев и др), в которых лишь изменена п/п-ма автоповтора... Этих версий развелось уже очень много и отследить их происхождение, титры и особенности невозможно. Что касается МОНИТОРов-3 для МС7007, то имеющиеся версии нареканий не вызывали.
Немного лирики о МОНИТОРАХ для "ОРИОНА-128"
Возникает резонный вопрос - почему возникло так много версий М-3. На
самом деле речь все время идет о одной той же программе МОНИТОРе-3 В.
Ивинских. М3.1 был и остается самым правильным МОНИТОРОМ-3. Остальные
версии, особенно для РК-86 клавитуры - лишь перетрансляции, с заменой
3-х байтовых переходов на 2-х байтовые с целью выиграть 200 байт
пространства. При этом в М-3 дополнительно вносились дополнительные
ошибки - например все версии А. Новгородова (3.2-3.5) портят
альтернативные регистры Z80. Это побудило В. Колоскова доработать
МОНИТОР-3.2/Z А. Новгородова, чтобы это убрать (речь идет о версиях
МОНИТОР-3 ADELAIDE, к которым SP-Computer Club не имеет отношения,
поэтому здесь они не описаны. У них хорошие версии М-3). Появление новых
версий М3 было вызвано, во-первых изменением п/п-мы звука при переходе
на Z80, а во-вторых желанием "втиснуть" в это ПЗУ загрузчик НГМД. Однако
по сути МОНИТОР-3, как был так и остался таким же, как его впервые
сделал В. Ивинских. Никаких изменений в М-3 не было сделано (в них не
было необходимости). Практически невостребованными программистами и
пользователями остались широкие возможности расширения М-3 (для этого он
собственно и задумывался, как гибкая и расширяемая система). Убогая,
негибкая и нерасширяемая ORDOS, благодаря рекламе журнала "РАДИО" и
пропаганде В. Сугоняко стала фактическим стандартом бездисководной
системы. "Неудобная" архитектура аппаратуры "ОРИОНА" (экран всегда
мешает!), наложили свой отпечаток на идеологию системной ПЗУ - BIOS.
Ориентация при разработке BIOS на использование дополнительной страницы
памяти исключительно в качестве RAM-диска и соотвественно использование
для работы ПО только основной страницы ОЗУ завели развитие системного ПО
в тупик. Очевидно, что давно назрела проблема коренного изменения
идеологии системного ПО. Реализованный в ПЗУ набор п/п-м соответствует
сложившимся традициям и его не целесообразно менять. Вот возможный путь
модификации BIOS. Для обеспечения совместимости со старым ПО (т.е
работающим в основной странице и использующим особенности п/п-м М-2)
оставить в ПЗУ МОНИТОР-3 (или любой другой совместимый с М-2). Ввиду
того, что в базовом "ОРИОН-128" 3К ОЗУ, располагающиеся по адресам
F400-FFFF не используются (т.к недоступны) целесообразно реализовать "псевдо-ПЗУ",
выключив из адресного пространства F800-FFFF ПЗУ, обеспечив по этим
адресам доступ к ОЗУ основной банки памяти. Для отключения ПЗУ можно
использовать дополнительный порт в области ВУ (0-7F) или свободный бит в
порту FB (см. схему Z80CARD-II, не используется бит D4). Однако ОЗУ
включаемое вместо ПЗУ должно быть защищено от записи (т.к эти-же адреса
используются в "ОРИОНЕ" для системных регистров F800-F900-FA00, хотя
современные программы работают с портами исключительно командами OUT,
древние программы и программы неквалифицированных программистов
используют запись по этим адресам памяти). Реализация такой аппаратной
доработки предельно проста 1 половинка
555ТМ2 и 3 вентиля 555ЛЛ1 - т.е 2 ИМС. Применение "псевдо-ПЗУ" для
модификации BIOS наиболее приемлемый путь, т.к предельно просто
реализуется, не требует замены имеющейся ПЗУ F800 и в то же время
обеспечивает максимальную гибкость, т.е в ОЗУ F800-FFFF можно загрузить
любой BIOS. Так, как эта область ОЗУ защищается от записи, то записать в
эту область BIOS можно с помощью диспетчера ОЗУ или в режиме FULL RAM
(бит D5 в порту FB равен 1, при этом вся память ОЗУ и область выше F400
также доступна для записи). Необходимо помнить, что в режиме FULL RAM
номер банки ОЗУ всей памяти 0-FFFF определяется портом F9 (а при бите
D5=0, участок памяти выше F000 - всегда ОЗУ основной банки). Рассмотрим
теперь какие
свойства желательно иметь в более совершенном BIOS. Недостаток идеологии
BIOS "ОРИОНА-128", определялся во-первых уродством аппаратной
архитектуры компьютера, не позволяющим вынести экран размером в 12К из
адресного пространства (т.е заведомо теряется 12К, где могли бы
размещаться программы - т.е для размещения программ пользователя
выделяется не более 48К. Данный недостаток не важен для игр и программ
любителей, написанных непосредственно для "ОРИОНА" (ибо 99% программ
любителей имеют размер менее 48К), но очень важен для системного ПО.
Сравните: в "СПЕЦИАЛИСТЕ" ОЗУ пользователя 36К -можно иметь исходный
текст программы до 30К, т.е можно транслировать ассемблером SCREEN/MIKRON
всего 2,5К обьектного кода программы, что означает, что программу
размером в 10К приходится "слеплять" из 4 модулей, и при этом ведь все
ссылки приходится переписывать на бумажку и вводить для остальных
модулей таблицу адресов подпрограмм. Тот, кто хоть раз пытался на
"СПЕЦИАЛИСТЕ" или РК-86 написать программку размером более 2К легко
поймет, почему все программисты для "СПЕЦИАЛИСТА" так охотно и быстро
перешли на "ОРИОН". В "ОРИОНЕ-128" для пользователя доступно целых 48К,
что позволяет транслировать программы размером до 4К (конечно хороший
ассемблер для файловой системы не обязательно хранит в ОЗУ сразу весь
текст исходника, а может брать его с "квазидиска" по мере надобности).
Однако наиболее важным доводом для расширения размера области программ
пользователя, является CP/M-80. CP/M (с хорошим CP/M-BIOS и драйверами)
требует для своего размещения до 11,5K. Большинство фирменных программ
требуют размера TPA (Transient program area - область транзитных
программ пользователя) в 48K, что означает, что компьютер должен иметь
не менее 60К сплошного ОЗУ. В базовом "ОРИОНЕ-128" пользователь может
иметь 60К, если включит портом F9 дополнительную страницу ОЗУ и не будет
использовать цветные режимы. Именно поэтому в CP/M на "ОРИОНЕ" и
возникает проблема цвета. Использовании для цвета части TPA (т.е экран с
8000 или 4000) - это полумера, пригодная лишь для программ маленького
размера и не позволяет главного - создать стандартный цветной драйвер с
набором удобных графических подпрограмм (что избавит программистов от
необходимости "программировать по железу", т.е непосредственно
записывать информацию в экран, а не использовать стандартный набор
функций). Единственным, наиболее целесообразным решением является
диспетчер ОЗУ, позволяющий в окно 0-3FFF включи-
ть любой участок памяти (из 256К). При этом для получения цвета
включается экран N4 (с 0000) и при работе CP/M область 0-3FFF
"закрывается любым ненужным участком памяти" (т.е не используемым
экраном, CP/M и ее драйверами). Применение диспетчера ОЗУ именно такой
конструкции имеет смысл также и по другой, не менее важной причине.
Ввиду того, что у ZX-Spectrum ПЗУ расположена именно по адресам 0-3FFF,
диспетчер именно такой конструкции существенно упрощает адаптацию игр от
ZX-Spectrum. Итак, исходя из вышеизложенного, идеология системного BIOS
в ПЗУ должна быть следующей. Для прикладных программ выделяется область
ОЗУ 0-F000 (60K) в дополнительной странице ОЗУ (для максимальной
совместимости с уже имеющимися версиями CP/M). Экран включается с 0000 и
область памяти 0-3FFF "закрывается" ОЗУ 4000-7FFF из основной банки ОЗУ,
т.к область 8000-F000 целесообразно иметь одним сплошным участком для
буферов системных программ и драйверов, а участок C000-FFFF нельзя
использовать для CP/M, ведь в области F800 располагается "псевдо-ПЗУ" -
именно поэтому для "закрытия" окна диспетчера 0-3FFF выгодно
использовать только ОЗУ 4000-7FFF из основной банки. Набор подпрограмм в
этом новом BIOS должен обеспечивать вывод символов в цвете в экран,
включенный с 0000 (используя диспетчер, в 4-х цветном режиме, т.к
использование 16-ти цветного режима позволяет иметь лишь цветной шрифт
8*8). Драйвер должен реализовать вывод 64 и 80 символов в строке.
Знакогенератор не должен располагаться в области F000 (т.к во-первых это
бессмысленно, ведь здесь не разместить весь знакогенератор КОИ-8 с
псевдографикой по ГОСТУ, а во-вторых эту область целесообразно
использовать для служ.целей и как буфер при выводе символов).
Знакогенератор должен размещаться над "экраном" - т.е с адреса 3200H и
может иметь размер 3,5К (Экран размером 400*256 точек занимает 12,5К).
При реализации драйвера вывода следует учесть, что для вывода сплошных
рамок символами псевдографики символы должны выводиться "впритык" по
вертикали, а не с зазором в 2 точки, как это делал МОНИТОР-2. Вот такая
концепция развития системного ПО кажется мне целесообразной. При
создании BIOS не следует забывать все полезные идеи из МОНИТОРА-3:
встроенный процессор команд, программные прерывания. Что касается
програмных прерываний, то как и для МОНИТОРА В. Ивинских для
"СПЕЦИАЛИСТА" эту идею надо довести до конца, т.е ввести в МОНИТОР
программу СУПЕРВИЗОР -специальную программу в которую можно выйти из
любой системной программы, прервав ее исполнение. СУПЕРВИЗОР может
предлагать широкий выбор функций - по типу СЕРВИС-МОНИТОРА в
"ZX-Scorpion-256" (печать экрана на принтер, выход в МОНИТОР и отладчик,
запись части ОЗУ в файл или запуск второй программы с сохранением
состояния прерванной - например Вы работаете в редакторе текста, Вам
позвонили Вы прервали редактор, выйдя в СУПЕРВИЗОР и запустили программу
МОДЕМ... а затем вернулись в редактор и продолжили работу). Разумеется
хороший BIOS должен реализовывать терминал DEC VT52 и обеспечивать
дополнительные графические функции - сохранить текущее окно в буфере,
открыть окно/закрыть окно, горизонтальный ролик в окне... Конечно хороший BIOS
будет иметь размер 8К и более, а при наличии отладчика (целесообразно
использовать великолепный Z-BUG В. Колоскова) и еще больший объем.
Поэтому целесообразно размещение BIOS в теневом ПЗУ (т.е
располагающегося в "тени" ОЗУ и включающийся лишь на время работы его
подпрограмм, т.е не занимающий места в адресном пространстве
процессора).
Изложенная идея отражает лишь мое личное мнение на то, какое системное
ПО должен иметь "ОРИОН". Возможно эта идея будет реализована в ближайшее
время (или через год) в SP-Computer Club-e, возможно будет реализована
другая идея. Ведь предложенная концепция основана на использовании
аппаратных доработок, а кто знает сейчас какие "стандарты" будут
обьявлены на "ОРИОНЕ" в ближайшее время, а какие аппаратные доработки
будут признаны "доморощенными". Поживем, увидим. Возможно, что ни у кого
из программистов не хватит энергии и решимости сделать новый BIOS - не
так-то просто предложить что-то свое и новое, особенно если поначалу
кажется, что бессмысленно и пытаться разрабатывать новое, противоречащее
сложившимся давно устаревшим, но всеми признанным догмам. Возможно, что
эта идея сначала будет реализована в виде загружаемых драйверов ACP/M, а
затем и частично "зашита" в теневое ПЗУ или ROM-диск (вместо ORDOS).
Спасибо, что не поленились дочитать до конца этот "проект"... Если у Вас возникли советы и идеи напишите мне. Мой адрес прежний: Советский Союз, носитель - дисковый файл, пишите. Адрес для писем: 192238 С-Петербург а/я 175 Чистяков Владимир, SP-Computer Club, 1993
P.S. Объявление В. Сугоняко о создании нового МОНИТОРА-3 для
"ОРИОНА" может считаться лишь очередным демаршем с целью показать
пользователям "ОРИОНА", кто является ХОЗЯИНОМ ОРИОНА. Очередной
некрасивый жест, не прибавит популярности ОРИОНУ, но в очередной раз
продемонстрирует пользователям ОРИОНА, что его автору абсолютно нет дела
до интересов пользователей и амбиции в очередной раз возьмут верх над
целесообразностью. Что касается, того, что фирма В. Сугоняко сознательно
делает системные программы, чтобы они не работали на МОНИТОРЕ-3, то это
еще более некрасивый поступок. МОНИТОР-3 существует уже 3 года и даже,
если непрограммирующему пользователю не нужен МОНИТОР-EXT, то против
совместимости клавиатур РК-86 и МС7007, которые обеспечивает МОНИТОР-3
спорить не приходится. Выбор МОНИТОРА личное дело каждого, важно чтобы
была совместимость! И если уж
спорить о названиях, то стоит учесть, что МОНИТОР-2 это вообще не
МОНИТОР, а просто набор п/п-м BIOS - в МОНИТОРЕ должны быть команды, как
в МОНИТОРЕ-1 или МОНИТОРЕ-3. Но в МОНИТОРЕ-2 нет ни одной команды, как
нет их судя по рекламе в объявленном МОНИТОРЕ-3 версии В. Сугоняко. Так,
что каждый может сам судить какая из программ может называться
МОНИТОРОМ-3 - созданный 3 года назад настоящий МОНИТОР-3 (автор
легендарный программист времен и народов В. Ивинских) или объявленная,
но очевидно еще не скоро доступная, усеченная версия BIOS
нового компьютера В. Сугоняко
"ОРИОН-ПРО", адаптированная для стандартного "ОРИОНА".
Монитор М3.1 описание программиста
Очередное письмо В. Чистякова с рекомендациями по Ориону
Стандарты ПО, адресов и портов
На предыдущую страницу На главную страницу На следующую страницу