многостраничный ROM-диск от ОРИОНА
Не знаю как в миру принято расширять ROM-диск ОРИОНА, но предлагаю вариант для ленивых. Это актуально также и для СПЕЦИАЛИСТА. В ОРИОНЕ ROM-диск занимает адреса F500...F5FF, а в СПЕЦИАЛИСТЕ FE00...FEFF.
Удивлены, что у СПЕЦИАЛИСТА возможен ROM-диск? Хотя ROM-диск конкретно для СПЕЦИАЛИСТА и не опубликовали в журнале, но после публикации ОРИОНА всем стало ясно, что ROM-диск полезен. Я и ранее подключал внешний ROM к СПЕЦИАЛИСТУ, т.к ПЗУ 27256 стояло наряду с РУ7-ми на плате эл.диска (предназначено для хранения нортона для эл.диска). Но ROM-диск от ОРИОНА проще, т.к не требует доп.деталей. ПЗУ в адресном прострнастве СПЕЦИАЛИСТА предназначено вовсе не для хранения резидентных прикладных программ, а для ROM-BIOS (и подкачки оттуда CP/M BDOS, что важно чтобы поднять TPA).
Поэтому в начале 90-тых, имея три ROM-диска ОРИОНА, было удобно иметь такой же ROM-диск и на СПЕЦИАЛИСТЕ. В качестве программы для использования ROM-диска, использовалась, естественно не ORDOS, а ROM Service размером в 300 байт. Её преимущество в том, что ROM-диск можно оперативно компоновать под конкретную задачу. Файлы не обязаны располагаться впритык другу к другу. Начала файлов находятся сканированием с шагом в 10H. Для этого в начале файла стоит заголовок опознаватель FD FD... в общем, кажется 5 байтов. Затем имя, адрес загрузки, адрес старта и размер файла. Потому было удобно набирать ROM-диск из 2764 или РФ2. А все оперативно нужные программы хранить в отдельных ПЗУ. Это придумал не я, это концепция ROM-дисков в западных ЭВМ.
Даже без калькулятора ясно, что на порт ВВ55 и в СПЕЦИАЛИСТЕ и в ОРИОНЕ отведено целых 256 адресов, тогда как ППА нуждается всего в 4-х адресах. Это и позволяет иметь банковость ROM-диска без доп.железа. Используем идею сэра Клайва Синклера (точнее инженеров, что разработали ему ZX-Spectrum) применённую для сканирования клавиатуры. Идея в том, чтобы в качестве чип-селектов (или адресов A16...A19) использовать адреса в самих командах для доступа к железу. Из 8 адресов A0...A7 четыре адреса A4, A5, A6, A7 удобно использовать для обращения к конкретным ПЗУ.
Обычно достаточно двух банок ROM-диска. Тогда при A4=0 выбирается страница 0, а при A4=1 читается страница 1. Если это две ПЗУ 27512, то выборка делается подачей 0 на /CS. А если это огромное ПЗУ объёмом в 128 кбайт, то A4 с шины просто подаётся на A16 ПЗУ. Для ОРИОНА сохраняется совместимость с банкой 0 ПЗУ. А вторая банка предназначена вовсе не для ORDOS и лазить туда программам ORDOS незачем.
ROM-диск от ОРИОНА устроен так. Из порта A читается содержимое ПЗУ. Адрес в ПЗУ записывается в PB и PC. При чтении из адреса F500/FE00 читается нулевая банка ПЗУ, а при чтении из F510/FE10 читается вторая банка ПЗУ. И никаких дополнительных расходов деталей. Если разъём ROM-диска как в ОРИОНЕ - СНП-30, то в нем остаются свободными 2 контакта. Через один удобно подавать +12В для УФ-прошивателя, а через второй как раз я пропускал адрес A4 с шины. Двухстраничный ROM-диск удобен, если внешнее устройство медленное, например магнитофон или медленный обмен с PC по проводной линии. Тогда, чтобы не загружать всякий раз при включении RAM-диск, удобно все часто нужные программы прошить в 128 кб. Этого объёма обычно хватает.
Для CP/M невыгодно подкачивать BDOS+CCP с дискеты, как это было в антикварных CP/M. Это неудобно тем, что по каждому ^C DOS долго перезагружается, но главное, тогда все дискеты должны быть системными, что сокращает полезный объём. BDOS+CCP выгоднее подкачивать из ОЗУ (других банок, если они есть) или, в крайнем случае, из ПЗУ или ROM-диска. Это позволяет увеличить TPA на 6 кб. Но главное при этом то, что тогда дискеты становятся всеядными, т.е пригодными для версий CP/M с любой вершиной TPA. Т.е не надо иметь отдельно дискеты для CP/M с TPA в 28 кб, отдельно дискеты для TPA 35 кб и отдельно для TPA в 54 кб. Это немаловажное преимущество.
В плате ЭКСПРЕСС, если есть верхнее ОЗУ в адресах E000...F7FF (туда загружаются DOS), то ПЗУ остаётся всего 8 кб (как раз на 4 панельки для РФ2). Причём из 8 кб 6 кб уже занято ROM-BIOS. И не остаётся ни 6 кб ПЗУ, чтобы оттуда подкачивать BDOS+CCP, а тем более нет и 10 кб, чтобы хранить там всю CP/M или другую DOS. Потому и пришлось использовать ROM-диск, тем более, что и доп.ППА и ROM-диск уже есть в наличии.
Однако ROM-диск даёт ещё одно преимущество. Можно использовать загрузку системы по сбросу из ROM-диска (это принцип ОРИОНА). Тогда, на плате оставляют только одно ПЗУ РФ2 (с адреса 0) с стартовой программой. Она по сбросу грузит 4 кб из ROM-диска на C000 и делает JMP C000. После чего сигнал НП автоматически выключает ПЗУ. Выгодно сделать загрузку разных ROM-BIOS. Тогда если при нажатии на кнопку СБРОС удерживать клавишу <НР>, то из ROM-диска загрузится альтернатиный ROM-BIOS или же программа меню позволяющая выбрать систему.
Для СПЕЦИАЛИСТА ROM-диск полезен, если нет много ПЗУ на самой основной плате, а надуманные принципы не позволяют это ПЗУ странично расширить за счёт применения 27256 или 27512. Но, в принципе, если есть большое ПЗУ на основной плате, а готовых ненужных ROM-дисков под рукой нет, то ROM-диск и не нужен, в ограниченных пределах его может заменить большое ПЗУ на основной плате СПЕЦИАЛИСТА, если иметь страничную коммутацию ПЗУ.
Без страничного ПЗУ в 8 кб ничего особо полезного туда не прошить, а отказываться от верхнего ОЗУ в пользу ПЗУ просто глупо, т.к ОЗУ намного полезнее. А вот в страничное ПЗУ можно прошить систему, будь то какая-то странная система для МГ-версии на базе microSD или DOS с поддержкой винчестера и РК-КНГМД.
Но вот, когда объёма ПЗУ 27256 не хватает для размещения всех желаемых программ, тогда наступает время для ROM-диска размером в 128 или даже 512 кб.