|
nedoPC.orgElectronics hobbyists community established in 2002 |
|
SD контроллер для Радио 86РК и Апогея в частности.
Author |
Message |
vinxru
Retired
Joined: 27 Mar 2013 04:55 Posts: 587 Location: 62.192.229.16
|
Собственно, идея пока такая:
Микроконтроллер эмулирует ПЗУ на 256 байт, в котором будет начальный загрузчик. Загрузить и запустить программу из внешнего ПЗУ можно на любом потомке Радио 86РК с помощью команд R0,100 G.
(Хотя исключения есть, например в Партнере 01.01 нет встроенного параллельного порта. Его вынесли на отдельно продающийся модуль.)
Если в определенном порядке прочитать адреса ПЗУ, то вместо эмулятора ПЗУ включается уже обкатанный SD контроллер. После выполнения команды опять включается эмулятор ПЗУ.
Last edited by vinxru on 02 Nov 2013 01:00, edited 1 time in total.
|
01 Nov 2013 12:49 |
|
|
b2m
Devil
Joined: 26 May 2003 06:57 Posts: 870
|
Для гарантии, можно включать ПЗУ при любом несоблюдении протокола. Если случайно осталось выключенным ПЗУ команда R0,100 снова его включит.
_________________Страничка эмулятора наших компьютеров
http://bashkiria-2m.narod.ru/
|
02 Nov 2013 00:49 |
|
|
vinxru
Retired
Joined: 27 Mar 2013 04:55 Posts: 587 Location: 62.192.229.16
|
Ага, обязательно.
Спаял плату. Надо будет перерезвести, что бы сверху под SD-картой дорожек не было, а то боюсь коротнут.
|
02 Nov 2013 12:02 |
|
|
vinxru
Retired
Joined: 27 Mar 2013 04:55 Posts: 587 Location: 62.192.229.16
|
Забыл подключить сброс. Плата получилась деталями вниз, не подумал, что у Апогея плата закреплена деталями вниз.
Первый код. Эмуляция ПЗУ.
P.S. Нашел таки драйвера для программатора BM9010 под Win 7 64 бита, чему очень рад.
|
04 Nov 2013 13:19 |
|
|
vinxru
Retired
Joined: 27 Mar 2013 04:55 Posts: 587 Location: 62.192.229.16
|
Протокол будет таким
Сначала на шину адреса устанавливаем значения 19, 23, 87. Они отличаются одним битом, поэтому шума между ними быть не должно.
Далее, компьютер читает адреса 86,87,86,87,86,87... каждый байт 86 является тактовым импульсом, т.е. подтверждением приема/передачи байта.
Если синхронизация удалась, то МК выставляет на шину данных ERR_START, а после тактового импульса ERR_OK_WAIT. Код ERR_OK_WAIT может держаться неопределенное кол-во тактов. В это время происходит инициализация флешки.
Потом ERR_OK_WAIT меняется на ERR_OK_NEXT если все нормально. Или возвращается код ошибки.
Компьютер должен переключить порт на выход и передать команду. В примере ниже команда BOOT - единственный байт 0
На это МК отвечает ERR_OK_WAIT (много раз), ERR_OK_ADDR, адрес загрузки L, адрес загрузки H, ERR_OK_WAIT (много раз)
Потом выдает содержимое файла блоками: 0, длина L, длина H, данные (HL раз), ERR_OK_WAIT (много раз)
Если данных не осталось, выдает ERR_OK_READ
| | | | Code: .org 0h
DATA_PORT = 0EE00h ADDR_PORT = 0EE01h CTL_PORT = 0EE03h SEND_MODE = 10001011b ; Настройка: 1 0 0 A СH 0 B CL 1=ввод 0=вывод RECV_MODE = 10011011b
ERR_START = 040h ERR_WAIT = 041h ERR_OK_DISK = 042h ERR_OK = 043h ERR_OK_READ = 044h ERR_OK_ENTRY = 045h ERR_OK_WRITE = 046h ERR_OK_ADDR = 047h
Entry: ; Первым этапом происходит синхронизация с контроллером ; 256 попыток. Для этого в регистр C заносится 0
; А в стек заносится адрес перезагрузки 0C000h
LXI B, 0F800h PUSH B
JMP Boot
NOP
;---------------------------------------------------------------------------- ; Отправка и прием байта
Rst1: INX H ; HL = ADDR_PORT MVI M, 86 MVI M, 87 DCX H ; HL = DATA_PORT MOV A, M RET
;---------------------------------------------------------------------------- ; Ожидание готовности МК
Rst2: WaitForReady: Rst 1 CPI ERR_WAIT JZ WaitForReady RET
;----------------------------------------------------------------------------
RetrySync: ; Попытки DCR C RZ ; Ошибка синхронизации, перезагрузка
Boot: ; Режим передачи (освобождаем шину) и инициализируем HL MVI A, RECV_MODE CALL SetMode
; Начало любой команды MVI M, 19 MVI M, 23 MVI M, 87
; Если есть синхронизация, то контроллер ответит ERR_START Rst 1 CPI ERR_START JNZ RetrySync
; Дальше будет ERR_OK_WAIT, ERR_OK_NEXT ; Инициализация флешки Rst 2 CPI ERR_OK_ADDR JNZ Rst1 ; Ошибка, освобождаем шину и перезагрузка
; ERR_OK_NEXT высталенный МК будет висеть на шине до следующего RST, ; только после него МК освободит шину и мы сможем включить режим передачи. Rst 1
; Режим передачи MVI A, SEND_MODE CALL SetMode
; Код команды XRA A Rst 1
; МК читает данные во время тактового импульса, т.е. он уже их прочитал. ; Включаем режим приема, т.е. освобождаем шину.
; Режим приема MVI A, RECV_MODE CALL SetMode
; МК захватит шину во время тактового импульса (первого RST)
; Дальше будет ERR_OK_WAIT, ERR_OK_RKS Rst 2 CPI ERR_OK_RKS JNZ Rst1 ; Ошибка, освобождаем шину и перезагрузка ; Удаляем из стека 0F800h POP B
; Адрес загрузки в BC Rst 1 MOV C, A Rst 1 MOV B, A
; Сохраняем в стек адрес запуска PUSH B
; Подождать, пока МК прочитает очередной блок денных RecvLoop: Rst 2 CPI ERR_OK_READ JZ Rst1 ; Всё загружено, освобождаем шину и запуск ORA A JNZ 0F800h ; Ошибка, перезагрузка (не отпускаем контроллер)
; Принять очередной блок Rst 1 MOV E, A Rst 1 MOV D, A RecvBlock: Rst 1 STAX B INX B DCX D MOV A, E ORA D JNZ RecvBlock JMP RecvLoop
; Прием/передача SetMode: LXI H, CTL_PORT MOV M, A DCX H DCX H ; HL = ADDR_PORT RET .End
| | | | |
108 байт.
|
05 Nov 2013 03:36 |
|
|
vinxru
Retired
Joined: 27 Mar 2013 04:55 Posts: 587 Location: 62.192.229.16
|
У кого есть опыт заказа плат в Китае? Может изготовить несколько плат? Я думаю разойдутся.
|
05 Nov 2013 04:36 |
|
|
Случайность
Doomed
Joined: 05 Apr 2011 12:45 Posts: 491 Location: Великий Новгород
|
если будет заказ. то я одну платку возьму.
_________________ танцуй пока живешь под каплями огненного дождя...
|
05 Nov 2013 05:07 |
|
|
petrenko
Doomed
Joined: 10 Mar 2012 16:21 Posts: 598 Location: РФ
|
А я бы и две шт. не против.. А какова будет цена ?
|
05 Nov 2013 15:15 |
|
|
vinxru
Retired
Joined: 27 Mar 2013 04:55 Posts: 587 Location: 62.192.229.16
|
Печатная плата примерно такого размеру в Zorel стоит 6$.
Деталей там на 4$ (ATMega8, разъем SD, 7 резисторов, 2 диода, 1 светодиод, 4 конденсатора).
Итого 10$
Разъем из комплекта Апогея сами припаяете.
Это для самостоятельной сборки будет.
А что бы я захотел для вас их собрать, надо десяток заказов и 1000 рублей за готовое устройство. Это заказать детали с ибея, заказать платы, спаять всё, прошить, отмыть, проверить и отправить платы почтой.
Самое скучное тут - это тащиться на почту и стоять час в очереди.
|
06 Nov 2013 00:09 |
|
|
Случайность
Doomed
Joined: 05 Apr 2011 12:45 Posts: 491 Location: Великий Новгород
|
а зачем паять кому то? когда интереснее это самому делать.
_________________ танцуй пока живешь под каплями огненного дождя...
|
06 Nov 2013 04:29 |
|
|
vinxru
Retired
Joined: 27 Mar 2013 04:55 Posts: 587 Location: 62.192.229.16
|
Помимо пальщиков, есть еще программисты, ностальгирующие и просто коллекционеры
|
06 Nov 2013 04:35 |
|
|
Mifody
Writer
Joined: 13 Jun 2013 21:48 Posts: 24 Location: г.Зерноград, Ростовская область
|
Сабж работает? Где взять схему для самостоятельного изготовления?
_________________ ZX-Spectrum 128(краснодарский вариант)+YM+Covox+3,5" FDD+5,25" FDD+Nemo controller+HDD+CD-ROM+PS/2 Keyboard+PS/2 Mouse(остальное в проекте...) (Всё самодельное)
|
09 Jan 2014 03:31 |
|
|
Shaos
Admin
Joined: 08 Jan 2003 23:22 Posts: 22735 Location: Silicon Valley
|
Да схема же вроде в самом верху
Другой вопрос где взять прошивку?...
P.S. Оно? https://github.com/vinxru/VinxFs
|
09 Jan 2014 19:30 |
|
|
Mifody
Writer
Joined: 13 Jun 2013 21:48 Posts: 24 Location: г.Зерноград, Ростовская область
|
Ааа.. Я думал это пока только идея такая..
vinxru, а контроллер планируется адаптировать для Вектора,Партнёра,Львова,Башкирии? А то у них с загрузкой прог всё грустно. ((( На Башкирии вобще без танцев с бубном даже через мафон не загрузить, так как проги только в образах дисков..
_________________ ZX-Spectrum 128(краснодарский вариант)+YM+Covox+3,5" FDD+5,25" FDD+Nemo controller+HDD+CD-ROM+PS/2 Keyboard+PS/2 Mouse(остальное в проекте...) (Всё самодельное)
|
10 Jan 2014 01:12 |
|
|
b2m
Devil
Joined: 26 May 2003 06:57 Posts: 870
|
Надо будет подумать. Можно сделать прогу и тоже поместить на образ диска. Она будет выбирать файл и жужжать его через звуковую карту. Таким образом, запустив эмулятор и эту прогу можно будет выбрать файл и передать его на реальный компьютер.
Хотя, придётся писать процедуру вывода на магнитофон через динамик, может потом и не считаться. Проще, наверное, сделать специальный конфиг, в котором вывод на магнитофон будет не в файл, а прямо на биппер. Но можно и через файл.
_________________Страничка эмулятора наших компьютеров
http://bashkiria-2m.narod.ru/
|
10 Jan 2014 01:20 |
|
|
Who is online |
Users browsing this forum: No registered users and 5 guests |
|
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot post attachments in this forum
|
|