МОНИТОР-3. ХРОНИКА ПРОГРАММЫ ВЕКА ---------------------------------- Издание 4-е, дополненное, не переработанное. Последнее дополнение к хронике: декабрь 1993 Снабжено полемической статьей о МОНИТОРЕ-3. ------------------------------------------------------------------------------ Информация о ROM-BIOS SP-computer club-a ======================================== Составил: В.Чистяков, май 1992 192238 Санкт-Петербург а/я 175 BIOS 3.2/Z ДЛЯ "ОРИОНА ~~~~~~~~~~~~~~~~~~~~~~~~ Полностью совместим с М2 и M3.1. За счет использования команд 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/М3.12-MS, А.Мостового, в оконном драйвере В.Ивинских /КОИ-7 8*8/). Подпрограмма F80F в INTEL-ROM это PRINT (то, что сделано в М2 - это извра- щение), поэтому векторизация - это возможность при сохранении совместимос- ти спасти дело. Дополнительные возможности EXTENDED-MONITOR-3 1.4/Z --------------------------------------------------- MONITOR-EXT 1.4/Z включает одну новую директиву, действие директивы "H" изменено. J - запись на квазидиск последнего загруженного с ленты файла под именем NAME H , - вычисление суммы и разности двух 16-ричных чисел N1 и N2 M3-EXT 1.4/Z будет работать с любым M3 (3.0...3.6), в отличие от M3-EXT версий 1.0-1.3, которые работают только с M3 версий 3.0, 3.1, 3.13-MS. Это связано с тем, что В.Ивинских, делая M3-EXT "залезал" прямо внутрь M3 (он справедливо полагал, что столь совершенную программу никогда не придется менять). Естественно этот M3-EXT 1.4 будет работать только при наличии Z80. Историческая справка о версиях Монитора-3 для "ОРИОН-128" --------------------------------------------------------- В декабре 1990 г. В.Ивинских получил от авторов ОРИОНА листинг М2, который был затем опубликован в ж."РАДИО" в январе 1991 г. Программисты объединившиеся в SP-computer club работали тогда только на СПЕЦИАЛИСТЕ (от- сюда и название) и ОРИОН их не интересовал. В.Ивинских связался с авторами только с целью продажи им своих разработок RAMDOS, RAMDOS-COMMANDER, редак- тора, программатора, набора п/п граф.интерфейса и игры от Синклера MANIC-MINER. Сам ОРИОН его не интересовал и иметь его он не собирался. В конце 1990 г. стало абсолютно ясно, что СПЕЦИАЛИСТ умер и публикация ОРИОНА только ускорила его смерть. Именно поэтому в январе 1991 SP-computer CLUB перешел на ОРИОН. Первое знакомство с М2, после работы на удобном мониторе В.Ивинских для Специалиста с поддержкой эл.диска привело в полный шок. Если МОНИТОР В.Ивинских на Специалисте не только настраивался на скорость, рабо- тал с МГ в 7 форматах РК86, Синклер, 2 формата Специалиста, MSX, SP-580), работал с эл.диском в 512К, имел 30 директив и имел счетчик ввода/вывода (отображался бегущий адрес, ячейки куда осущ-ся ввод/вывод) и все это в 4К, то М2 по сравнению с этим выглядел просто, как первая программа школьника. Особенно убивало отсутствие директивы G, работа клавиш по отпусканию и от- сутствие привычных по Специалисту програмных прерываний (там в BIOS были имплементированы не только сами прогр-е прерывания, но и п/п вызова RAMDOS COMMANDER-а, что позволяло напр-р: прямо из игры выйти в COMMANDER, запус- тить другую программу, а потом вернуться в игру в том же самом месте...). Естественно, что появление М3 было просто неизбежно. Если бы В.Ивинских создавал М-3 с нуля не связанный неоптимальными архитектурными решениями М2 (как програмными, так и аппаратными) то М3 был бы значительно лучше (напри- мер: если бы матрица клавиатуры была бы без диодов, как на СПЕЦИАЛИСТЕ, то п/п чтения с клавиатуры работала бы в 10 раз быстрее, т.к требовалось бы только 2 считывания - по вертикали и горизонтали, без сканирования "бегу- щим нулем", русские буквы можно было бы убрать,т.к в системном ПО они не нужны, а в редакторах все-равно надо КОИ-8 и т.д). Итак январь 1991 г. - первая версия М3 (контр.сумма 24A3) и в феврале широко распространившаяся (к сожалению) версия 3.0 (контр.сумма 29A7). Во всех М3 номер версии в ячейке F842. В этой версии В.Ивинских сделал маленькое упрощение драйвера вывода на экран, а именно матрица вывода 6*7, а не 6*8. В феврале 1991 г. когда был написан драйвер КОИ-8 для CP/M (KOI8.COM первой версии, использующий п/п ПЗУ) это выяснилось, т.к в КОИ-8 строчные буквы имеют хвостики ниже уровня заглавных, т.е используют всю матрицу 6*8. Поэтому вскоре появилась версия 3.1 (контр.сумма 7E00), устраняющая этот недостаток, хотя уже в июле 1991 этот недостаток перестал иметь значение, т.к был написан новый драйвер KOI8.COM, содержащий в себе все п/п вывода на экран, а также свою п/п опро- са клавиатуры от РК86. Этот драйвер позволяет выводить символы на экран в матрице 6*10, т.е символы "впритык", что позволяет иметь псевдографику (э- тот драйвер впоследствии был украден ОРИОН-СЕРВИСОМ и продавался вместе с их CP/M, но сами они даже не знают всех возможностей этого драйвера, в час- тности, как ввести символ подчеркивания, отсутствующий в клавиатуре РК). Итак 04.1991 г. - MONITOR-3.1 Так как М3 использует расширение (экстент) вот версии M3-EXT: 01.1991 - EXT 1.0 - не имеет работы с эл.дисками A и B и только формат РК86, при работе с МГ 02.1991 - EXT 1.1 - все как в EXT 1.2, но содержит ошибку (длины блоков при вводе с МГ выводятся на 1 больше) 03.1991 - EXT 1.2 - широко распространившаяся версия. Ушла ее версия с загрузчиком с НГМД (имеющая проверку на наличие второго эк- стента-загрузчика дисковода (по B700) и с ошибкой при МГ-ди- рективах (опасайтесь программы под именем XTL/EXT-LOADER) M3-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 сделал версию М3 для МС7007 (V3.1/MS). Эта версия была достаточно убогой, не имела не только русских, но и части английских букв и не имела програм- ных прерываний. Фонт догружался EXT$-трюком ORDOS. Однако в отличие от аб- солютно неправильного драйвера M2-MS она применяла правильную схему подклю- чения и обеспечивала совместимость игр и к тому-же была М3, т.е с ней рабо- тали экстенты. Она использовала переделанный драйвер M2-MS. В декабре 1991 в "РАДИО" опубликовали драйвер MS7007 для РК86, причем правильный в отли- чие от M2-MS (т.е имеющий чтение по порту B). А.Мостовой воспользовался этим драйвером и сделал версию М3.12 для MS7007 клавиатуры, что позволило иметь все английские буквы и вернуть програмные прерывания. Кроме отсут- ствия русских букв этот драйвер имел неправильную работу п/п STATUS (она случайно забывает проверять порт C, что незаметно в играх и МГ-программах, но нервирует в CP/M). Эти недостатки исправлены уже мной в версии 3.13 (КР580, полный фонт). Эта версия последняя для КР580, т.к SP-computer club теперь занимается только Z80, да и почти невозможно уже, что-то улучшить в М3 на КР580. Таким образом существуют версии: BIOS 3.1/MS - октябрь 1991, совсем дерьмо, но уже М3 BIOS 3.12 - декабрь 1991 (MC7007), без русских букв, но работают все игры Итак последними МОНИТОРАМИ-3 для КР580 следует считать: РК86-KEYBOARD: BIOS 3.1 (апрель 1991) MC7007-KEYBOARD: BIOS 3.13 (декабрь 1993) Для процессора Z80 уже сделали несколько версий М3. В большинстве из них указано на их временный характер (надпись BETA-VERSION). Ушли следующие версии: 10.91-02.92 - версия 3.1/Z - обыкновенный МОНИТОР-3, с измененной п/п BEEP (F83F), много версий, где ужато командами Z80, 40-80 байт. 02.1992 - BIOS 3.2, для РК86-клавиатуры, только для Z80, драйвер кла- виатуры формирует код подчеркивания - SHIFT/SPACE. Инициали- зируется диспетчер ОЗУ в режим "128". 03.1992 - BIOS 3.2 MS7007, к сожалению ушло несколько промежуточных версий с такими титрами (в Петербург и в Ригу). Ошибочные версии мож- но отличить по работе п/п F80F (она здесь неправильно вектори- зована, ошибка проявляется при старте программ подменяющих век- тора - проявляется в отсутствии очистки экрана). Другая ошибоч- ная версия зависает при наличии ROM-диска. Т.к Z80 освободил много места, то здесь знакогенератор полный и п/п STATUS пра- вильная, т.е отличная вещь для пользователей 7007. 05.1992 - BIOS 3.3, для РК86-клавиатуры. Нет проверки на наличие ROM-диска, т.е ORDOS - невозможна. Зато по старту осуществляется сразу заг- рузка с НГМД. К сожалению, загрузчик упрощен - можно грузиться только с дискет с двойной плотностью (естественно, после загруз- ки можно будет читать и одинарные дискеты - поставить в НГМД и нажать F4). Как и в М3.2/РК можно вводить код подчеркивания (5F): СС + пробел. 05.1992 - EXT 1.4, BETA-версии (не раб. с М3.1, неподобранные МГ-константы) 09.1992 - BIOS 3.3, для MS70007-клавиатуры, для CP/M, имеют все буквы, но не имеют п/п работы с МГ, зато вместо этого загрузчик НГМД. Имеется несколько версий 4-х килобайтного BIOS (две банки РФ2), но они не могут считаться даже промежуточными версиями, т.к содержат дополни- тельно только лишь загрузчик НГМД: слишком шикарно тратить 2048 ячеек ПЗУ на 200 байтный загрузчик НГМД. В г.Тула на основе М3.2 разработана 4-КБ версия М3-ADELAIDE, с отладчиком. Версии мониторов 3.2 и 3.3 следует считать мониторами совместимости, - они не являются BIOS "ОРИОНА-Z80", нужны лишь временно для обеспечения воз- можности использовать старое ПО, а благодаря полной векторизации позволяют использовать любую внешнюю клавиатуру, в том числе и аппаратную. В ближайшее время не следует ожидать новых версий ROM-BIOS или M3-EXT для Z80. Будут дорабатываться загружаемые в ОЗУ драйверы, в первую очередь 80U, VT52 и SUPER-FONT: они будут переведены на Z80. Возможно бу- дет введен ввод с клавиатуры по прерываниям, возможно введены цветовые фун- кции (это конечно страшно тормознет и без того медленный SUPER-FONT, т.е это будет ценно только для пользователей ОРИОНА с тактом 5 МГЦ). В заключение несколько слов о "хозяевах" ОРИОНА - авторах. Личные ам- биции не позволяют авторам признать, что другие могут программировать луч- ше и всякая программа обеспечивающая совместимость - стандартна. Ложная гордость не позволяет им признать ошибки (например М2/7007 - из-за этого тысячи людей должны мучиться несовместимостью) и сотрудничать с другими. Например, авторы имели возможность опубликовать CP/M еще год назад, т.к в марте 1991 г. они получили от SP-computer club-а всю необходимую документа- цию и ПО для подключения НГМД, вместо этого они потратили год на то, чтобы разобраться в CP/M самим и только потом начать ее тиражировать. К тому же было прямое оскорбление В.Ивинских, которого обозвали доморощенным, хоть он настоящий профессионал-программист. Т.к теперь многие программы работают только на Z80 лишь ненормальный будет работать на М2 (хотя бы из-за отсут- ствия звука). Санкт-Петербург, май/сентябрь 1992 г. PS: Последующий текст дописан в феврале 1993 г. В.Чистяковым. Автором М3 для Z80 (естественно первоначальным автором всех МОНИТОРОВ-3 должен считаться В.Ивинских) версий 3.2 и 3.3 был.Новгородов. К сожалению эти МОНИТОРЫ плохо переносят ORDOS (по-видимому из-за конфликта в области F300). Т.к никто в SP-computer club-е ORDOS не пользуется это оставалось долгое время необнаруженным. Кроме того по ошибке в течение почти полугода на дистрибутивных дискетах распространялся абсолютно дохлый МОНИТОР-3.2РК (в CP/M это заметно если работать без драйвера на 80 символов, т.е на 64 символа: при попытке "ролика" экрана все зависает). Это одна из промежуточ- ных версий ушла по ошибке. Это досадная ошибка вызвала много нареканий и подорвало доверие пользователей к нашему системному ПО. В качестве оправда- ний можно сказать, что НЕ ОШИБАЕТСЯ ТОЛЬКО ТОТ, КТО НИЧЕГО НЕ ДЕЛАЕТ. Были выявлены и некоторые неудобства в работе мониторов (например: в М3.3 упро- щенный загрузчик CP/M - грузит только двойную плотность при 80-дорожечном НГМД и из-за этого нельзя загружаться с защищенных от копирования дискет: вариант защиты Алексея Кузнецова 07.92). Т.к А.Новгородов летом 1992 г. собрал IBM PC (кстати, на средства, заработанные созданием программ для ОРИОНА) и "ушел с ОРИОНА" до января 1993 г (когда он не решил временно вер- нуться на ОРИОН) новых версий монитора никто не создавал. В январе 1993 г. А.Новгородов странслировал несколько улучшенную версию М3/Z. Итак продолже- ние списка М3: январь 1993 г. - BIOS V3.4/Z, две версии РК и MS7007 клавиатуры. Все как и в М2, т.е по сбросу загрузка из ROM-диска 2К на B800H. тогда-же - BIOS V3.5/Z две версии для РК и MS7007 клавиатур. Содержат загрузчик с дисковода Эти версии, что-бы избежать возможных ошибок несут в титрах надпись BETA-версия (т.е версия не окончательная, распространяемая с целью выявле- ния возможных ошибок; например MICROSOFT целых 2 года "гоняла" MS-DOS 5 версии). Именно на эти или последующие версии М3 расчитаны адаптируемые в настоящее время программы для ОРИОНА с Z80. Первой игрой требующей именно таких мониторов стала программа CHESS (от Синклера). Важным отличием этих версий является возможность RESTART-а с возвратом и введение отдельной п/п инициализации. Теперь программа запущенная на исполнение имеет возможность блокировать возможность выхода из нее "по сбросу" (напр: с целью получения в ОЗУ кода программы для последующего "крака"). Это достигается тем, что теперь МОНИТОР после запуска не "портя" ни одной ячейки ОЗУ первым делом осуществляет проверку наличия специального "флага" (в области служебных ячеек). Если этот "флаг" выставлен, то управлениe передается по адресу за- писанному в ячейки F3C1/C2. Перед, тем как выполнить команду "JP (HL)" этот "флаг автостарта" сбрасывается, тем самым "механизм работает только раз" (этого "раза" достаточно, чтобы вам отформатировать дискету и "почистить" ОЗУ). Это простейший способ защиты в сочетании с возможностью процессору де- лать аппаратный сброс (OUT XX) позволяет реализовать механизм динамической защиты кода программы, т.е в ОЗУ располагается "запакованная" по сложным алгоритмам программа, в распакованном виде хранится только работающий в "данный" момент модуль, и регулярно и причем достаточно часто (ориенти- руясь по NMI) выполняется аппаратный сброс с последующим возвратом в прог- рамму. "Кракеру" желающему получить в "чистом виде" код программы для пос- ледующего его изменения при этом гарантирована веселая жизнь, ибо без аппа- ратных доработок "сломать" программу нельзя, аппаратно трассировать (дру- гим компьютером с использованием WAIT или HOLD) будет трудно из-за работы по прерываниям в реальном времени. Главная цель такого М3 - лишить кракера возможности нажать на сброс, HOLD или NMI, заменить ПЗУ своим (во время сброса), а большое количество модификаций ОЗУ (естественно с использованием запутывающих стековых команд и оценкой времени по регистру R) исключат возможность разобраться в прог- рамме с помощью програмного отладчика. Тем, кого интересует принцип работы "автозапуска" советую дизассемблировать начало МОНИТОРА. Внимание: При применении этого МОНИТОРА, Вы безащитны против злоумыш- ленников, т.е очень легко сделать гадостный "вирус", который например пос- ле запуска красивой игры подгрузит "сбросовый модуль" напр: форматирующий диск и вышибающий ПЗУ или ПОРТ ROM-диска (как известно на ОРИОНЕ это де- лается легко). Это научит Вас пользоваться программами только из порядоч- ных источников (т.е постоянных продавцов: авторов или их дилеров) и избе- гать покупки ворованных программ у пиратов. M3-EXT V1.45 - январь 1993. На смену версии 1.44, которая неправильно настраивает константу ввода. Версии 1.44 и 1.45 теперь наконец-то сделаны "мониторо-3 независимыми", что озна- чает, что нет обращений из M3-EXT в основной модуль М3 (ПЗУ) по нестандар- тным адресам (как было сделано в оригинале В.Ивинских). Это означает, что больше не надо думать о совместимости M3 и его экстента M3-EXT, что очень удобно - Вы можете делать все новые и новые версии М3, не перетранслируя каждый раз М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 ------------------------------------------------------------------------------ PPS: Последующий текст - еще более поздняя приписка к этой "захватывающей исторической хронике", отображающей "этапы развития системного ПО ОРИОНА". Дополнение сделано в ноябре-декабре 1993. Ввиду, того, что В.Чистяков на период с марта по октябрь 1993-го временно не занимался ОРИОНОМ (бросил и ушел на РК86, но теперь кажется опять вер- нулся), а А.Новгородов в начале 1993 уехал в США, то естественно никаких изменений с М3 не происходило. Можно упомянуть лишь "незаконный" МОНИТОР-3, который сделал А.Лыков (Ташкент). А.Лыков назвал его версией 3.6. На самом деле это обычный M3.5/MS, из которого выкинули программу загрузчика НГМД - освободив при этом 200 байт. В это освободившееся место была вставлена про- цедура инициализации по сбросу управляющих регистров, введенных в новую плату ОРИОН СУПЕР-ТУРБО, выпущеннуюв сентябре 1993 в Ташкенте. Если Вам по- падет в руки этот монитор, то измените титр - уберите надпись - "(C) С.Ка- раваев" (какие копи-райты за 10 новых байтов?) и измените номер вер- сии - пусть будет M3.5/T (Ташкент). Если у Вас плата СУПЕР, Вам конечно придется пользоваться этим монитором - ведь обычные М2 и М3 для этой платы не годятся. Ввиду того, что эр-Кашные М3 версий 3,2...3,5 имели неподобра- ные константы автоповтора, пользователи РК86 предпочитали применять старые версии М3 (BIOS 3.1/Z), но появилось несколько версий М3.4/3.5 (Казимирчак/Ковалев и др), в которых лишь изменена п/п-ма автоповтора... Этих версий развелось уже очень много и отследить их происхождение, титры и особенности невозможно. Что касается М3 для МС7007, то имеющиеся версии на- реканий нe вызывали. ------------------------------------------------------------------------------ Немного лирики о мониторах для ОРИОНА ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Возникает резонный вопрос - почему возникло много версий М3. На самом деле речь все время идет об одной той же программе М3 В.Ивинских. М3.1 был и остается самым правильным М3. Остальные версии, особенно для РК86 клави- туры - лишь простейшие перетрансляции, с заменой 3-х байтовых переходов на 2-х байтовые с целью выиграть 200 байт пространства. При этом в М3 дополни- тельно вносились дополнительные ошибки - например все версии А.Новгородова (3.2-3.5) портят альтернативные регистры Z80. Это побудило В.Колоскова до- работать МОНИТОР-3.2/Z А.Новгородова, чтобы это убрать (речь идет о вер- сиях М3 ADELAIDE, к которым SP-computer club не имеет отношения, поэтому здесь они не описаны). Появление новых версий М3 было вызвано, во-первых изменением п/п-мы звука при переходе на Z80, а во-вторых желанием "втис- нуть" в это ПЗУ загрузчик НГМД. Однако по сути М3, как был так и остался таким-же, как его впервые сделал В.Ивинских. Никаких изменений в М3 не бы- ло сделано (в них не было необходимости). Стоит заметить, что перетрансля- ция с небольшими изменениями - это фактически не работа по программрованию - для этого не надо иметь квалификации. Трудозатраты в полчаса времени вов- се не означают, что ты разработал новый монитор. Некоторые считают иначе. Практически невостребованными программистами и пользователями остались широкие возможности расширения М3 (для этого он собственно и задумывался, как гибкая и расширяемая система). Убогая, негибкая и нерасширяемая ORDOS, благодаря рекламе журнала "РАДИО" и пропаганде авторов ОРИОНА стала факти- ческим стандартом бездисководной системы. Неудобная архитектура аппаратуры ОРИОНА (экран всегда мешает!), наложили свой отпечаток на идеологию систем- ной ПЗУ - BIOS. Ориентация при разрабоке BIOS на использование дополни- тельной страницы памяти исключительно в качестве RAM-диска и соотвественно использование для работы ПО только основной страницы ОЗУ завели развитие системного ПО в тупик. Очевидно, что давно назрела проблема коренного изме- нения идеологии системного ПО. Реализованный в ПЗУ набор п/п-м соответ- ствует сложившимся традициям и его не целесообразно менять. Вот возможный путь модификации BIOS. Для обеспечения совместимости со старым ПО (т.е работающим в основной странице и использующим особености п/п-м М2) оставить в ПЗУ М3 (или любой другой совместимый с М2). Ввиду то- го, что в базовом ОРИОНЕ 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 ОРИОНА, определялся во-первых уродством аппа- ратной архитектуры компьютера, не позволяющим вынести экран размером в 12К из адресного пространства (т.е заведомо теряется 12К, где могли бы разме- щаться программы - т.е для размещения программ пользователя выделяется не более 48К. Данный недостаток не важен для игр и программ любителей, напи- санных непосредственно для ОРИОНА (ибо 99% программ любителей имеют размер менее 48К), но очень важен для системного ПО. Сравните: в СПЕЦИАЛИСТЕ ОЗУ пользователя 36К - можно иметь исходный текст программы до 30К, т.е можно странслировать ассемблером SCREEN/MIKRON всего 2,5К объектного кода прог- раммы, что означает, что программу размером в 10К приходится "слеплять" из 4 модулей, и при этом ведь все ссылки приходится переписывать на бумажку и вводить для остальных модулей таблицу адресов подпрограмм. Тот, кто хоть раз пытался на СПЕЦИАЛИСТЕ или РК-86 написать програмку размером более 2К легко поймет, почему все программисты для СПЕЦИАЛИСТА так охотно и быстро перешли на ОРИОН. В ОРИОНЕ для пользователя доступно целых 48К, что позво- ляет транслировать программы размером до 4К (конечно хороший ассемблер для файловой системы не обязательно хранит в ОЗУ сразу весь текст исходника, а может брать его с "квазидиска" по мере надобности). Однако наиболее важным доводом для расширения размера области программ пользователя, является CP/M. CP/M (с хорошим CP/M-BIOS и драйверами) требует для своего размещения до 11,5K. Большинство фирменных программ тре- буют размера TPA (Transient program area - область транзитных программ пользователя) в 48K, что означает, что компьютер должен иметь не менее 60К сплошного ОЗУ. В базовом ОРИОНЕ пользователь может иметь 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: встроенный процессор команд, програмные прерывания. Что касается програм- ных прерываний, то как и для МОНИТОРА В.Ивинских для "СПЕЦИАЛИСТА" эту идею надо довести до конца, т.е ввести в МОНИТОР программу СУПЕРВИЗОР - специальную программу в которую можно выйти из любой системной программы, прервав ее исполнение. СУПЕРВИЗОР может предлагать широкий выбор функций - по типу СЕРВИС-МОНИТОРА в "ZS-Scorpion-256" (печать экрана на принтер, вы- ход в МОНИТОР и отладчик, запись части ОЗУ в файл или запуск второй прог- раммы с сохранением состояния прерванной - например Вы работаете в редакто- ре текста, Вам позвонили Вы прервали редактор, выйдя в СУПЕРВИЗОР и запус- тили программу МОДЕМ... а затем вернулись в редактор и продолжили работу). Разумеется хороший BIOS должен реализовывать терминал DEC VT52 и обес- печивать дополнительные граф.функции - сохранить текущее окно в буфере, от- крыть окно/закрыть окно, гориз.ролик в окне... Конечно хороший BIOS будет иметь размер 8К и более, а при наличии отладчика (можно использовать ZX-от- ладчик МON-2) и еще больший обьем. Поэтому целесообразно размещение BIOS в теневом ПЗУ (т.е располающегося в "тени" ОЗУ и включающийся лишь на время работы его подпрограмм, т.е не занимающий места в адресном пространстве процессора). Изложенная идея отражает лишь мое личное мнение на то, какое системное ПО должен иметь "ОРИОН". Возможно эта идея будет реализована в ближайшее время (или через год), возможно будет реализована другая идея. Ведь предло- женная концепция основана на использовании аппаратных доработок, а кто знает сейчас какие "стандарты" будут обьявлены на ОРИОНЕ в ближайшее время, а какие апп.доработки будут признаны "доморощенными". Поживем, увидим. Воз- можно, что ни у кого из программистов не хватит энергии и решимости сде- лать новый BIOS. Не так-то просто предложить что-то свое и новое, особенно если поначалу кажется, что бессмысленно и пытаться разрабатывать новое, противоречащее сложившимся давно устаревшим, но всеми признанным догмам. Возможно, что эта идея сначала будет реализована в виде загружаемых драйве- ров ACP/M, а затем и частично "зашита" в теневое ПЗУ или ROM-диск (вместо ORDOS). Спасибо, что не поленились дочитать до конца этот "проект"... Если у Вас возникли советы и идеи напишите мне. Мой адрес прежний: Советский Союз, носитель - дисковый файл. Адрес для писем: 192238 С-Петербург а/я 175 Чистяков Владимир, SP-computer Club, 1993 PS: Обьявление ОРИОНСОФТ о создании нового МОНИТОРА-3 для ОРИОНА является лишь очередным демаршем с целью показать пользователям, кто является хозяи- ном ОРИОНА. Очередной некрасивый жест, не прибавит популярности ОРИОНУ, но в очередной раз продемонстрирует пользователям ОРИОНА, что его автору абсо- лютно нет дела до интересов пользователей и амбиции в очередной раз возьмут верх над целесообразностью. Что касается, того, что фирма ОРИОНСОФТ созна- тельно делает системные программы, чтобы они не работали на М3, то это еще более некрасивый поступок. М3 существует уже 3 года и даже, если непрограм- мирующему пользователю не нужен М3-EXT, то против совместимости клавиатур РК86 и МС7007, которые обеспечивает М3 спорить не приходится. Выбор монитора личное дело каждого, важно чтобы была совместимость! И если уж спорить о названиях, то стоит учесть, что М2 это вообще не монитор, а просто набор п/п-м BIOS - в мониторе должны быть команды, как в М1 или М3. Но в М2 нет ни одной команды, как нет их, судя по рекламе в объявлен- ном М3 версии ОРИОНСОФТ. Так, что каждый может сам судить какая из прог- рамм справедливо может называться МОНИТОРОМ-3 - созданный 3 года назад нас- тоящий М3 (автор В.Ивинских) или объявленная, но очевидно еще не скоро дос- тупная, усеченная версия BIOS от нового компьютера ОРИОН-ПРО, адаптирован- ная для стандартного ОРИОНА, которую просто из вености так же планируется называть М3. Что вызовет немалую путаницу...