RUЭВМ
Вы хотите отреагировать на этот пост ? Создайте аккаунт всего в несколько кликов или войдите на форум.
Апрель 2024
ПнВтСрЧтПтСбВс
1234567
891011121314
15161718192021
22232425262728
2930     

Календарь Календарь

Последние темы
» Вити больше нет!
автор bug19 Пн Фев 20 2023, 19:54

» Собираем оригинальный Орион 128
автор bug19 Пн Фев 20 2023, 19:47

» Проблема плющеного экрана ОРИОНА
автор kanzler Пн Ноя 28 2022, 12:05

» Орион 128 и его клоны возрождение 2019-2022 год
автор kanzler Пн Ноя 28 2022, 12:03

» Электроника КР-04. Информация, документы, фото.
автор kanzler Пн Ноя 28 2022, 12:02

» Новости форума
автор kanzler Пн Ноя 28 2022, 11:52

» Орион-128 НГМД запуск 2021 года
автор matrixplus Сб Сен 10 2022, 17:36

» ПЗУ F800 для РК86
автор ведущий_специалист Сб Сен 10 2022, 10:37

» Микропроцессорная лаборатория "Микролаб К580ИК80", УМК-80, УМПК-80 и др.
автор Электротехник Вт Июл 26 2022, 19:33

» Орион-128 SD карта в Орионе
автор matrixplus Чт Июн 02 2022, 09:00

» 7 Мая. День Радио!
автор Viktor2312 Чт Май 12 2022, 10:58

» Серия: Массовая радио библиотека. МРБ
автор Viktor2312 Ср Май 11 2022, 12:17

» Полезные книги
автор Viktor2312 Пн Май 09 2022, 15:07

» Орион 128 Стандарты портов и системной шины Х2
автор matrixplus Вс Май 08 2022, 23:08

» Орион-128 и Орион ПРО еще раз про блоки питания
автор matrixplus Вс Май 08 2022, 19:09

» Орион-128 Программаторы
автор matrixplus Вс Май 08 2022, 19:02

» Орион ПРО история сборки 2021 до 2022
автор matrixplus Вс Май 08 2022, 18:47

» Анонсы монет (New coin).
автор Viktor2312 Сб Май 07 2022, 23:11

» Хочу свой усилок для квартиры собрать не спеша
автор Viktor2312 Сб Май 07 2022, 19:33

» Амфитон 25у-002С
автор Viktor2312 Сб Май 07 2022, 09:38

» Майнер: T-Rex
автор Viktor2312 Вс Май 01 2022, 09:12

» GoWin. Изучение документации. SUG100-2.6E_Gowin Software User Guide. Среда разработки EDA.
автор Viktor2312 Пн Апр 25 2022, 01:01

» GoWin. Изучение документации. UG286-1.9.1E Gowin Clock User Guide.
автор Viktor2312 Сб Апр 23 2022, 18:22

» GoWin. Documentation Database. Device. GW2A.
автор Viktor2312 Ср Апр 20 2022, 14:08

» GOWIN AEC IP
автор Viktor2312 Ср Апр 20 2022, 12:08

Самые активные пользователи за месяц
Нет пользователей

Поиск
 
 

Результаты :
 


Rechercher Расширенный поиск


Апогей-БК01Ц: Внешнее ПЗУ

Перейти вниз

 Апогей-БК01Ц: Внешнее ПЗУ Empty Апогей-БК01Ц: Внешнее ПЗУ

Сообщение  alemorf Пн Янв 14 2019, 09:52

1
Исходники: http://github.com/alemorf/retro/tree/master/apogee_bk01-rom_disk

Это плата внешнего ПЗУ для компьютера Апогей БК01. Она нужна, что бы быстро запускать программы. Набор программ вы выбираете сами. Используется микросхема ПЗУ от 128 до 512 кБ. Программы хранятся в сжатом виде, я записал 740 кБ программ на 512 кБ плату. Это почти все разработанные программы для Апогея.

На основе ПЗУ 49LF00x

Однажды я вытащил целую горсть микросхем ПЗУ 49LF004 из старых материнских плат. Хотелось использовать их, но на первый взгляд эти ПЗУ не совместимы со стандартными ПЗУ серий 27C, 49F, которые подключаются к Апогею. Отличие в том, что у 49LF шина адреса мультиплексирована. У микросхемы 11 линий адреса и вход ROW/COLUMN. Сначала надо подать на шину адреса старшую часть адреса, затем подать 0 на вход R/C, затем подать младшие 11 бит адреса, затем подать 1 на вход R/C. И только после этого на выходе появятся данные.

Казалось бы, что компьютер, не предназначенный для работы с такой ПЗУ, ничего прочитать из неё не сможет. Но я придумал как. Если подключить линию A0 адреса компьютера, ко входу R/C ПЗУ, а линии адреса A1-A11 компьютера к A0-A10 ПЗУ, то два последовательных чтения из ПЗУ будут загружать старшую и младшую часть адреса идентичными значениями. И новые данные будут появляться на каждом нечетном адресе.

Адрес чтения 0 (000b). Старшая часть адреса - 0 (00b). Вход R/C - 0. На выходе ПЗУ данные для адреса 0h
Адрес чтения 1 (001b). Младшая часть адреса - 0 (00b). Вход R/C - 1. На выходе ПЗУ данные для адреса 0h
Адрес чтения 2 (010b). Старшая часть адреса - 1 (01b). Вход R/C - 0. На выходе ПЗУ данные для адреса 0h
Адрес чтения 3 (011b). Младшая часть адреса - 1 (01b). Вход R/C - 1. На выходе ПЗУ данные для адреса 801h
Адрес чтения 4 (100b). Старшая часть адреса - 2 (10b). Вход R/C - 0. На выходе ПЗУ данные для адреса 801h
Адрес чтения 5 (101b). Младшая часть адреса - 2 (10b). Вход R/C - 1. На выходе ПЗУ данные для адреса 1002h
Адрес чтения 6 (110b). Старшая часть адреса - 3 (11b). Вход R/C - 0. На выходе ПЗУ данные для адреса 1002h
Адрес чтения 7 (111b). Младшая часть адреса - 3 (11b). Вход R/C - 1. На выходе ПЗУ данные для адреса 1803h


Проверка на реальном компьютере:

 Апогей-БК01Ц: Внешнее ПЗУ Rom310

Получается, что компьютер может прочитать из такой ПЗУ программу длиной 2 Кб. Только записывать эту программу надо "по диагонали", по адресам: 0, 801h, 1002h, 1803h.

При чтении у нас каждый прочитанный байт дублируется. Мне пришлось разработать программу, машинный код которой представляет собой повторяющиеся байты. Интересная задача? На первый взгляд эта задача кажется сложной, но оказалось, что программа пишется без проблем. Многие команды размером в один байт можно безопасно выполнять два раза, например, чтение или запись в память. Чуточку сложнее с 3-байтными командами, командами сложения и перехода.

В приведенной ниже программе байты получившегося машинного кода указаны после запяточего. Все байты дублируются.

Код:

org 0h
 NOP            ; 00
 NOP            ; 00
 NOP            ; 00
 LD DE, 11h     ; 11 11 00
 NOP            ; 00
 LD H, D       ; 62
 LD H, D       ; 62 лишняя команда
 LD L, D       ; 6A
 LD L, D       ; 6A лишняя команда
 LD BC, 0AE01h  ; 01 01 AE
 XOR (HL)       ; AE лишняя команда, портит регистр A.
 JP 0x00C3      ; C3 C3 00
 NOP            ; 00 лишняя команда
 org 013h
 db 0 байт, 0 байт, 1 байт, 1 байт, 2 байт, 2 байт...
 org 0C1h
 DEC HL         ; 2B
C2: DEC HL         ; 2B
C3: INC DE         ; 13
 INC DE         ; 13
 LD A,(DE)      ; 1A
 LD A,(DE)      ; 1A
 LD (HL),A      ; 77
 LD (HL),A      ; 77
 INC HL         ; 23
 INC HL         ; 23
 DEC B          ; 05
 DEC B          ; 05
 JP NZ,0x00C2   ; C2 C2 00
 NOP            ; 00
 LD DE, 0xC311  ; 11 11 C3
 JP 0           ; C3 00 00

Эта программа копирует массив значений после директивы "org 013h" в начало памяти, пропуская каждый четный байт, а затем запускает. В этом массиве содержится наша программа, которая загрузит из ПЗУ все, что нам требуется по правилам ПЗУ:

Адрес чтения 000h (0000b). Старшая часть адреса - 0 (000b). Вход R/C - 0.
Адрес чтения 001h (0011b). Младшая часть адреса - 1 (001b). Вход R/C - 1. На выходе ПЗУ данные для адреса 1h.
Адрес чтения 000h (0000b). Старшая часть адреса - 0 (000b). Вход R/C - 0.
Адрес чтения 003h (0101b). Младшая часть адреса - 1 (010b). Вход R/C - 1. На выходе ПЗУ данные для адреса 2h.
Адрес чтения 000h (0000b). Старшая часть адреса - 0 (000b). Вход R/C - 0.
Адрес чтения 005h (0111b). Младшая часть адреса - 2 (011b). Вход R/C - 1. На выходе ПЗУ данные для адреса 3h.
...
Адрес чтения 000h (0000b). Старшая часть адреса - 000h (000b). Вход R/C - 0.
Адрес чтения FFFh (1111b). Младшая часть адреса - 3FFh (1111b). Вход R/C - 1. На выходе ПЗУ данные для адреса 7FFh
Адрес чтения 002h (0010b). Старшая часть адреса - 001h (001b). Вход R/C - 0.
Адрес чтения 001h (0001b). Младшая часть адреса - 000h (000b). Вход R/C - 1. На выходе ПЗУ данные для адреса 800h


У Апогея шина адреса всего 16 бит. Для того, что бы подключить ПЗУ с шиной адреса 19 бит нам не потребовалось ни одной дополнительной микросхемы, потому что шина адреса у этой ПЗУ мультиплексирована. Получилась плата внешнего ПЗУ увеличенного объема содержащая всего одну микросхему.

Схема:

 Апогей-БК01Ц: Внешнее ПЗУ Rom210

Готовая плата:

 Апогей-БК01Ц: Внешнее ПЗУ Rom410

 Апогей-БК01Ц: Внешнее ПЗУ Rom510

Меню платы ПЗУ:

 Апогей-БК01Ц: Внешнее ПЗУ Rom610

На основе стандартной микросхемы ПЗУ

Так же я разработал плату на основе стандартной ПЗУ 128-512 Кб и программу формирования прошивки для неё. Плата содежит дополнительную микросхему К555ТМ9, которая расширяет шину адреса компьютера с 16 до 19 бит.

Схема:

 Апогей-БК01Ц: Внешнее ПЗУ Rom910

Готовая плата:

 Апогей-БК01Ц: Внешнее ПЗУ Rom1110

 Апогей-БК01Ц: Внешнее ПЗУ Rom1010

 Апогей-БК01Ц: Внешнее ПЗУ Rom710

 Апогей-БК01Ц: Внешнее ПЗУ Rom810

alemorf
Мастер

Сообщения : 232
Дата регистрации : 2018-12-17

http://alemorf.ru/

Вернуться к началу Перейти вниз

Вернуться к началу

- Похожие темы

 
Права доступа к этому форуму:
Вы не можете отвечать на сообщения