МОНИТОР-3. ХРОНИКА ПРОГРАММЫ ВЕКА ---------------------------------- Издание 4-е, дополненное, не переработанное. Последнее дополнение к хронике: декабрь 1993 Снабжено полемической статьей о МОНИТОРЕ-3. ------------------------------------------------------------------------------ Информация о системном ПО SP-COMPUTER CLUB-a. ============================================= Составил: В.Чистяков, май 1992 192238 Санкт-Петербург а/я 175 BIOS 3.2(3)/Z ДЛЯ "ОРИОН-128" ------------------------------- Полностью совместим с МОНИТОРом-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 H , - вычисление суммы и разности двух 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 (KOI8.COM первой версии, использующий п/п ПЗУ) это выяснилось, т.к в КОИ-8 строчные буквы имеют хвостики ниже уровня заглавных, т.е используют всю матрицу 6*8. Поэтому в апреле 1991 г. появилась версия 3.1 (контр.сумма 7E00), устраняющая этот недостаток, хотя уже в июле 1991 г. этот недостаток перестал иметь значение, т.к был написан новый драйвер KOI8.COM, полностью содержащий в себе все п/п вывода на экран, а также свою п/п опроса клавиатуры РК-86. Этот драйвер позволяет выводить символы на экран в матрице 6*10, т.е символы "впритык", что позволяет иметь псевдографику (этот драйвер впоследствии был украден "ОРИОН-СЕРВИСОМ" и про- давался вместе с их CP/M, но сами они даже не знают всех возможностей этого драйвера, в частности, как ввести символ подчеркивания, отсутствующий в РК). Итак апрель 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 г. PS: Последующий текст дописан в феврале 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-диска (как известно на ОРИОНЕ это делается легко). Это научит Вас пользоваться программами только из порядочных источников (т.е пос- тоянных продавцов: авторов или их дилеров) и избегать покупки ворованных прог- рамм у пиратов. 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 ------------------------------------------------------------------------------ PPS: Последующий текст - еще более поздняя приписка к этой "захватывающей ис- торической хронике", отображающей "этапы развития системного ПО ОРИОНА". Допол- нение сделано в декабре 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, то имеющиеся версии на- реканий нe вызывали. ------------------------------------------------------------------------------ Немного лирики о МОНИТОРАХ для "ОРИОНА-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 PS: Обьявление В.Сугоняко о создании нового МОНИТОРА-3 для "ОРИОНА" может считаться лишь очередным демаршем с целью показать пользователям "ОРИОНА", кто является ХОЗЯИНОМ ОРИОНА. Очередной некрасивый жест, не прибавит популярности ОРИОНУ, но в очередной раз продемонстрирует пользователям ОРИОНА, что его авто- ру абсолютно нет дела до интересов пользователей и амбиции в очередной раз возьмут верх над целесообразностью. Что касается, того, что фирма В.Сугоняко сознательно делает системные программы, чтобы они не работали на МОНИТОРЕ-3, то это еще более некрасивый поступок. МОНИТОР-3 существует уже 3 года и даже, если непрограммирующему пользователю не нужен МОНИТОР-EXT, то против совместимости клавиатур РК-86 и МС7007, которые обеспечивает МОНИТОР-3 спорить не приходится. Выбор МОНИТОРА личное дело каждого, важно чтобы была совместимость! И если уж спорить о названиях, то стоит учесть, что МОНИТОР-2 это вообще не МОНИТОР, а просто набор п/п-м BIOS - в МОНИТОРЕ должны быть команды, как в МОНИТОРЕ-1 или МОНИТОРЕ-3. Но в МОНИТОРЕ-2 нет ни одной команды, как нет их судя по рекламе в обьявленном МОНИТОРЕ-3 версии В.Сугоняко. Так, что каждый может сам судить какая из программ может называться МОНИТОРОМ-3 - созданный 3 года назад настоя- щий МОНИТОР-3 (автор легендарный программист времен и народов В.Ивинских) или обьявленная, но очевидно еще не скоро доступная, усеченная версия BIOS нового компьютера В.Сугоняко "ОРИОН-ПРО", адаптированная для стандартного "ОРИОНА".