Цитата Сообщение от Alex_LG Посмотреть сообщение
А почему бы D1+D2+D12 и D5+D6+D8 не заменить на РТ4?
Наверно, по той же причине, почему бы не заменить всю конструкцию на ПЛИС и не получить при этом "Комбодевайс2"... А если серьёзно -- если что-то можно решить на обычной логике достаточно малым числом корпусов МС, то я не вижу особой необходимости делать это на ПЗУ. Так же, собственно, было сделано и в последующей конструкции КД (на РУ7)...

- - - Добавлено - - -

И ещё, могу уже похвалиться собранной конструкцией по последней схеме:

Нажмите на изображение для увеличения. 

Название:	IMG_20181025_222252.jpg 
Просмотров:	404 
Размер:	82.5 Кб 
ID:	66690

Только вот микросхем памяти пока что ещё нет, т.к. они в доставке с ибея... Но всё остальное, что возможно, протестил -- работает так, как и было задумано.

Может, кому пригодится, вот мои тесты для контроллера КД:

Тест 0

Как написано в документации к оригинальному КД, начальный тест -- это просто включение Вектора с подключённым диском. Если загрузке Вектора собранный КД не мешает, то значит всё в порядке.
[свернуть]

Тест 1

Проверка правильности работы схемы дешифратора адреса порта КД и регистра конфигурации (микросхемы D1, D2:A, D12:A,B,C и D7). Результат тестирования проверяется мультиметром, на соответствующих выводах D7 должны появляться сигналы "1". Запускать с отключённым сигналом "БЛК" (например, без установленной D8), иначе Вектор подвиснет.
Текст теста на ассемблере для запуска в любом мониторе-отладчике:
Код:
        .ORG    00100h
L_0100: LDA     L_DATA
        RLC
        STA     L_DATA
        OUT     010h    ; отправляем в порт
        LDA     L_DT
        INR     A
        STA     L_DT
        LXI  D, L_TEXT
        MVI  C, 009h
        CALL 5          ; вывод сообщения
        MVI C,1
        LXI D,2000h
        CALL 5          ; ожидание нажатия клавиши
        LDA     L_DATA
        CPI     080h    ; проверка
        JNZ     L_0100  ; цикл
        MVI  A, '0'
        STA     L_DT
        RET             ; выход ---->>>>
L_TEXT: .db 0Dh, 0Ah, "OUT DATA: "
L_DT:   .db "0$"
L_DATA: .db 080h
        .END
[свернуть]

Тест 2

Проверка работы в режиме "стек", проверяется формирователь сигнала "БЛК" на МС D8 (и, конечно, дополнительно и то, что проверялось в тесте 1). Этим тестом производится запись данных во все четыре банка КД по адресам, совпадающим с экранной областью монитора-отладчика, и в случае сбоя на экране будут видны "артефакты".
Код:
        .ORG    00100h
L_0100: LXI  D, L_DATA
        PUSH D          ; сохраняем в стеке ссылку
L_MAIN: POP  D          ; считываем ссылку
        LDAX D          ; загружаем A по ссылке
        ORA  A
        RZ              ; выход, если там ноль ---->>>>
        INX  D          ; DE=DE+1
        PUSH D          ; сохраняем в стеке новую ссылку
        DI              ; запрещаем прерывания
        OUT     010h    ; отправляем в порт
        LXI  H, 0000h   ; заполнение памяти
        DAD  SP         ; SP+0 в HL
        SHLD    L_SAVE  ; сохранить указатель на стек
        LXI  D, 55AAh   ; чем заполнять
        LXI  H, 1000h   ; сколько/2
        LXI  SP,0E000h  ; свой указатель на стек
L_LOOP: PUSH D          ; заполняем через стек...
        DCX  H
        MOV  A, L
        ORA  H
        JNZ     L_LOOP  ; зациклено
        XRA  A          ; обнуляем аккумулятор
        OUT     010h    ; отправляем в порт -- отключаем КД
        LHLD    L_SAVE  ; считать сохранённый указатель на стек в HL
        SPHL            ; восстанавливаем SP
        EI              ; разрешаем прерывания
        LXI  D, L_TEXT
        MVI  C, 009h
        CALL 5          ; вывод сообщения
        MVI  C,1
        LXI  D, 2000h
        CALL 5          ; ожидание нажатия клавиши
        JMP     L_MAIN  ; цикл
;
L_SAVE: .dw 0000h
L_TEXT: .db 0Dh, 0Ah, "-- DONE --$"
L_DATA: .db 1Ch         ; 00011100b -- вкл. 0 банк как стек на КД
        .db 18h         ; 00011000b -- вкл. 1 банк как стек на КД
        .db 14h         ; 00010100b -- вкл. 2 банк как стек на КД
        .db 10h         ; 00010000b -- вкл. 3 банк как стек на КД
        .db 00h         ; конец
        .END
[свернуть]

Тест 3

Проверка работы КД в режиме "замена ОЗУ" по стандартной конфигурации. Дополнительно к предыдущим тестам, проверяются правильность работы МС D5 и D6. Ошибка выдаётся в случае совпадения последнего записанного в КД байта и считанного из ОЗУ после отключения КД.
Код:
        .ORG    00100h
L_0100: LXI  D, L_DATA
        PUSH D          ; сохраняем в стеке ссылку
L_MAIN: POP  D          ; считываем ссылку
        LDAX D          ; загружаем A по ссылке
        ORA  A
        RZ              ; выход, если там ноль ---->>>>
        INX  D          ; DE=DE+1
        PUSH D          ; сохраняем в стеке новую ссылку
        OUT     010h    ; отправляем в порт
        LXI  H, 02000h  ; заполнение памяти -- сколько
        LXI  B, 0C000h  ; с какого адреса
L_LOOP: MVI  A, 055h    ; чем заполнять
        STAX B          ; пишем
        INX  B
        DCX  H
        MOV  A, L
        ORA  H
        JNZ     L_LOOP  ; пока HL не обнулится
        XRA  A          ; обнуляем аккумулятор
        OUT     010h    ; отправляем в порт -- отключаем КД
        DCX  B          ; на шаг назад
        LDAX B          ; считываем последний байт
        CPI     055h    ; сравниваем с тем, что писали
        LXI  D, L_ERRT  ; ссылка на сообщение об ошибке
        JZ      L_DONE  ; если равны -- значит КД работает не правильно
        LXI  D, L_TEXT
L_DONE: MVI  C, 009h
        CALL 5          ; вывод сообщения
        MVI  C,1
        LXI  D, 2000h
        CALL 5          ; ожидание нажатия клавиши
        JMP     L_MAIN  ; цикл
;
L_SAVE: .dw 0000h
L_TEXT: .db 0Dh, 0Ah, "-- DONE --$"
L_ERRT: .db 0Dh, 0Ah, "-- ERROR --$"
L_DATA: .db 23h         ; 00100011b -- вкл. 0 банк как ОЗУ A000h-DFFFh
        .db 22h         ; 00100010b -- вкл. 1 банк как ОЗУ A000h-DFFFh
        .db 21h         ; 00100001b -- вкл. 2 банк как ОЗУ A000h-DFFFh
        .db 20h         ; 00100000b -- вкл. 3 банк как ОЗУ A000h-DFFFh
        .db 00h         ; конец
        .END
[свернуть]

Тест 4

То же самое, что и в третьем тесте, но только для схемы доработки Баркаря
Код:
        .ORG    00100h
L_0100: LXI  D, L_DATA
        PUSH D          ; сохраняем в стеке ссылку
L_MAIN: POP  D          ; считываем ссылку
        LDAX D          ; загружаем A по ссылке
        ORA  A
        RZ              ; выход, если там ноль ---->>>>
        INX  D          ; DE=DE+1
        PUSH D          ; сохраняем в стеке новую ссылку
        OUT     010h    ; отправляем в порт
        LXI  H, 02000h  ; заполнение памяти -- сколько
        CPI     080h
        LXI  B, 08000h  ; с какого адреса 1
        JC      L_LOOP  ; если A < 080h
        LXI  B, 0E000h  ; с какого адреса 2
L_LOOP: MVI  A, 055h    ; чем заполнять
        STAX B          ; пишем
        INX  B
        DCX  H
        MOV  A, L
        ORA  H
        JNZ     L_LOOP  ; пока HL не обнулится
        XRA  A          ; обнуляем аккумулятор
        OUT     010h    ; отправляем в порт -- отключаем КД
        DCX  B          ; на шаг назад
        LDAX B          ; считываем последний байт
        CPI     055h    ; сравниваем с тем, что писали
        LXI  D, L_ERRT  ; ссылка на сообщение об ошибке
        JZ      L_DONE  ; если равны -- значит КД работает не правильно
        LXI  D, L_TEXT
L_DONE: MVI  C, 009h
        CALL 5          ; вывод сообщения
        MVI  C,1
        LXI  D, 2000h
        CALL 5          ; ожидание нажатия клавиши
        JMP     L_MAIN  ; цикл
;
L_SAVE: .dw 0000h
L_TEXT: .db 0Dh, 0Ah, "-- DONE --$"
L_ERRT: .db 0Dh, 0Ah, "-- ERROR --$"
L_DATA: .db 43h         ; 01000011b -- вкл. 1 банк как ОЗУ 8000h-9FFFh
        .db 42h         ; 01000010b -- вкл. 2 банк как ОЗУ 8000h-9FFFh
        .db 41h         ; 01000001b -- вкл. 3 банк как ОЗУ 8000h-9FFFh
        .db 40h         ; 01000000b -- вкл. 4 банк как ОЗУ 8000h-9FFFh
        .db 83h         ; 10000011b -- вкл. 1 банк как ОЗУ E000h-FFFFh
        .db 82h         ; 10000010b -- вкл. 2 банк как ОЗУ E000h-FFFFh
        .db 81h         ; 10000001b -- вкл. 3 банк как ОЗУ E000h-FFFFh
        .db 80h         ; 10000000b -- вкл. 4 банк как ОЗУ E000h-FFFFh
        .db 00h         ; конец
        .END
[свернуть]

А дальше, я думаю, надо ставить память и тестировать стандартными программами, типа "дождь" и т.д.

Все тесты откомпилированные для монитора-отладчика в одном архиве: MyTestKD.7z
Запускать можно под любым монитором-отладчиком, режим распределения памяти МО рекомендую выбирать <2>.