Описание Flash Bios controller. (c) J7n/4D 2000-2001 1. Состав: порты (тоько запись) #7ffb, #fffb, flash 128k, триггер отключения ПЗУ, схема модификации адреса окна проецирования страниц. 2. Схема позволяет управлять банками ПЗУ (flash 128k), ОЗУ - вне зависимости от портов #7ffd и #dffd, менять адрес окна проецирования страниц: #c000/#4000, отключать ПЗУ, отключать порт #dffd, биты 6,7 порта #7ffd, включать альтернативные экраны. 3. Распределение ПЗУ (имеем 8 банков по 16к): банк: 0 1 2 3 4 5 6 7 содержимое: Bios+RD TrDos 128Bas 48Bas RD RD RD RD Замечание: RD-RomDisk, 128Basic может быть заменен на RomDisk. 4. Доступ к портам изменения конфигурации: in a,(#fc) - включить, in a,(#fe) выключить. 5. Порт #fffb (можно использовать #fb с установленным 7 битом в регистре A). Содержит номер банка ОЗУ. По Reset и при включении питания не инициализируется! Соответствие битов номеров страниц: порт #dffd: 7 6 5 4 3 2 1 0 плюс 3 мл. бита #7ffd (Profi 1Mb) │ │ │ ┌─────────│─┘ │ │ ┌───────│───┘ │ │ ┌─────┘ │ │ │ порт #7ffd: 7 6 5 4 3 2 1 0 (Pentagon 1Mb) │ │ │ │ │ │ │ └─│───┐ │ │ │ └───│─┐ │ │ │ │ │ │ │ │ │ │ порт #fffb: 7 6 5 4 3 2 1 0 (Altern. 1Mb) 6. Порт конфигурации - #7ffb. По RESET инициализируется: %01000000. Описание битов: биты 7,6 - в совокупности с 4м битом порта #7ffd задают номер банка ROM. (7й - старший бит, 4й - младший). Однако, для того, чтобы активизировать TrDos, необходима зависимость бита 6 от сигнала DOS. В связи с этим, в случаях когда, бит 6 не используется для переключения банков Rom диска он должен быть установлен в 1, а бит 7 в ноль! (что и делается по Reset). Из этого следует, что можно использовать короткую адресацию этого порта с маской в рег А - #40; бит 5 - отключает (если не включен порт #dffd) биты 6,7 порта #7ffd (0 - выкл, 1 - вкл); бит 4 - отключает порт #dffd и включает 6,7 биты #7ffd; Таким образом, используя 4 и 5 биты возможны следующие конфигурации: %xx00xxxx - ZX Spectrum 128/256 (бит 5 #7ffd не маскируется) %xx01xxxx - Profi 1024 %xx10xxxx - Pentagon 1024 %xx11xxxx - Profi 1024, т.е. бит 4 является приоритетным. биты 3,2 - при равенстве обоих 0, имеем конфигурацию, заданную битами 4,5, но если хотя бы один (3 или 2 или оба) не равен 0, то образуют вместе с битами порта #fffb номер страницы верхней памяти (64-255); бит 1 - Все сказанное выше про биты 2 и 3 справедливо только если процессор обащается к окну проецирования страниц, заданному битом 1 (при значении 0 - окно #c000-#ffff, при значении 1 - окно #4000-#7fff). бит 0 - при установке в 1 на экране вместо страниц 5 и 7 отображаются страницы #45 и #47 (абсолютная адресация). Поясню на примере: Необходимо перекинуть 16к из страницы #3A (Profi) в #87 (абс.): DI:IN A,(#FC) LD BC,#DFFD:LD A,#07:OUT (C),A LD B,#7F:LD A,#12:OUT (C),A ;ПРОФИНСКИЙ БАНК #3A LD A,#80+7:OUT (#FB),A ;МЛАДШИЕ БИТЫ НОМЕРА БАНКА LD A,%01111010:OUT (#FB),A ;ОКНО #4000 ; ^^ СТАРШИЕ БИТЫ НОМЕРА БАНКА LD HL,#C000:LD DE,#4000:LD BC,#4000:LDIR LD A,%01110000:OUT (#FB),A ;ДЕАКТИВИЗИРУЕМ АЛЬТЕРНАТИВНУЮ ;АДРЕСАЦИЮ IN A,(#FE) ;ЗАПРЕТ ЗАПИСИ В #XXFB Пример показывает, что можно сразу использовать как обычную адресацию страниц (по #7ffd/#dffd), так и альтернативную. При этом отображаться на экране будет не #87 страница, которая включается в окно #4000-#7fff, а по прежнему страница #15. Аналогично данному примеру страницы можно переключать по #7ffd (биты 7,6,5), если включить режим адресации Пентагона (сбросить бит 4 перед записью в #7ffb). 7. Еще одной возможностью данной схемы является отключение ПЗУ. Отключение происходит _только_ по сигналу NMI, т.е. по нажатию Magic кнопки и включается по RESET или при выполнении любой команды по адресу, старшему #3fff. Во время отключения ПЗУ подключается страница с абсолютным номером #40. Пример установки нового обработчика NMI: DI:IN A,(#FC) LD A,#80:OUT (#FB),A LD A,%01111000:OUT (#FB),A LD HL,NMI_BEG:LD DE,#C066 LD BC,NMI_LEN:LDIR LD A,%01110000:OUT (#FB),A IN A,(#FE) RET NMI_BEG .PHASE #0066 LD (STACK),SP PUSH AF etc... .UNPHASE NMI_LEN EQU $-NMI_BEG