![]() |
Здравствуйте, гость ( Вход | Регистрация )
![]() |
SuperMax |
![]() ![]()
Сообщение
#1
|
![]() Администратор ![]() ![]() ![]() ![]() ![]() Группа: Root Admin Сообщений: 6 341 Регистрация: 7.1.2006 Из: Красноярск Пользователь №: 1 ![]() |
Совместными усилиями разработан контроллер псевдодиска на MicroSD
Данный контроллер предназначен для современной и надежной замены КЖД (DW) в компьютерах серии ДВК-1; ДВК-2; ДВК-3; ДВК-4; Электроника-60; Электроника 60М; Славутич ПК-1 и им аналогичные PDP-11 совместимые. Фото контроллера на МПИ: v1.00 ![]() v1.01 ![]() v2.00 ![]() ![]() Фото контроллера на QBUS: v1.00 ![]() ![]() Также разработана версия контроллера для УКНЦ v1.00 ![]() ![]() v1.01 ![]() ![]() v2 ![]() ![]() Контроллер псевдодиска на MicroSD на шину МПИ: особенности версии для УКНЦ Технические характеристики:
Предлагаемый контроллер эмулирует до восьми дисковых устройств AZ на одной микроSD-карточке. Каждый эмулируемый диск (псевдодиск) представлен на карточке файлом с точки зрения PC, поэтому не возникает никаких вопросов в размещении псевдодисков на носителе большого объема - просто помещаем карточку в кардридер, подключаем к PC, копируем на карточку файлы нужного объема (и с нужным содержимым), переставляем ее в контроллер, и всё! Более того, поработав с карточкой на ДВК, можно извлечь ее из контроллера, снова поместить в кардридер и скопировать наработанные файл-образы дисков на PC, где с ними можно работать любыми средствами - например, подключить к эмулятору, заархивировать и сложить куда-нибудь на хранение, отправить в конференцию, и т.п. Также не представляет особого труда скопировать какой-то материал, найденный в сети, на карточку, переставить ее в контроллер и использовать этот материал на ДВК/УКНЦ. Контроллер занимает на МПИ адреса 177220-177226 (словные, байтовый доступ запрещен). 177220 - регистр команд и состояния (РКС, CSR), 177222 - регистр данных, 177224 и 177226 - регистры (однословные ПЗУ) начальных загрузчиков. Контроллер поддерживает MicroSD- и MicroSDHC-карточки. Мы испытывали SDHC-карты разных производителей и объемов, разница наблюдалась только в скорости записи на псевдодиск. С трудом удалось найти древнюю микро-SD (не HC) на 512М, да, пишет медленно, но работает и скорость чтения почти такая же, как и у SDHC. Карточки SDXC нашим устройством не поддерживаются. Перепишите на MicroSD-карточку файл-образы дисков AZ0-AZ7. Это файлы AZ000.DSK - AZ007.DSK. Вставьте карточку в гнездо на контроллере, до щелчка. Вставьте контроллер в корзину ДВК/Э-60 (или в слот CA на УКНЦ).При установке в корзину ДВК/Э-60/PDP-11 необходимо соблюдать путь прерываний - те "змейку", так как контроллер использует прерывания. Включите компьютер. Если он автозапускается по какой-либо причине (это возможно при наличии альтернативных прошивок для ВМ2/3 или загрузочного ПЗУ на какой-то из дополнительных плат), остановите его, т.е переведите его в связь с пультовой программой (нажать дважды кнопку "ОСТ" на ДВК-3/Квант-4, опустить и поднять снова флажок "Программа/Пульт" на ДВК-2/3М2/Э-60. Скорее всего, на экран будет выдано 6 восьмеричных цифр и, в следующей строке, значок "@", курсор будет мигать рядом с ним. Это сигнал о том, что процессор находится в состоянии "Останов" (Halt-Mode) и ждет от вас пультовой команды. Подадим ее. Команда такая: Код 177226G Это указание процессору начать исполнение программы с адреса 177226. По этому адресу располагается однословное ПЗУ программы запуска ОС с диска AZ0. Должна запуститься RT-11. После этого можно перезагрузиться с любого другого диска командой BO AZx: также можно использовать команду полного адреса: Код 177777226G Запуск на УКНЦ: в меню выбираем "отладка" Код 177226<ИСП> Есть альтернативная команда - запуск с адреса 177224, т.е 177224G. Пока ее действие точно такое же, как и основной команды запуска, но далее планируется кое-какие изменения, в частности, одна из них будет просто запускать ОС с AZ0, а вторая будет спрашивать, с какого диска загрузиться. Размер каждого из дисков (файлов с точки зрения PC) должен быть строго 32767К (65534 блока), таким образом общая емкость накопителя будет 262136К. В ближайшей новой версии прошивки будет добавлена смена дисков (файл-образов) прямо из RT-11, специальной программой, тогда на микро-SD можно будет иметь столько файл-образов, сколько туда влезет, однако, одновременно будут доступны только 8 из них, т.е. 262136К, это ограничение RT-11. Возможна установка двух контроллеров, для этого предусмотрен альтернативный набор адресов контроллера, переключение производится DIP-переключателем №1 на плате контроллера. Основной набор адресов (177220-177226) действует при выключенном состоянииэтого переключателя, альтернативный (177200-177206) - при включенном (ON). Остальные переключатели зарезервированы для дальнейшего расширения функционала. Перспективы развития продукта Данный контроллер снабжен достаточно мощным микроконтроллером STM32F407VET6, что позволяет реализовывать расширение возможностей контроллера без изменения аппаратной платформы. Соответственно обозначу примерный набор функционала для развития: 1. реализовать сетевое подключение при помощи внешней сетевой карты на базе ENC28J60 [реализовано] 1.1 подключение позволит получить удаленный доступ к данным на SD-карте - те это будет посредством которого можно будет изменять информацию на диске удаленно [реализовано] 1.2 1.3 Обновление прошивок через Интернет 1.4 Управление настройками сети через ini-файл [реализовано] 2. Развитие функционала монтирования образов через ini-файл [реализовано] 2.1 Монтирование образов через команду SET AZ 2.2 Монтирование образов на 2.3 Увеличение объема поддерживаемых дисков для работы RSX-11 [реализовано] 2.4 Обновление через образ на SD карте 2.5 Внешний загрузчик, те пользовательский код который закачивается в машину и запускается (удобно для разработки своих расширений на базе AZ - к примеру меню загрузки) 3. Часы [реализовано] утилиты 4. Разработка драйвера AZX.SYS для монитора XM [реализовано] 5. Разработка драйвера для RSX [реализовано] 6. Набор утилит для монтирования дисков из RT11 [реализовано] утилитыАктуальная firmware(прошивка) для контроллера v16 ТУТ Устаревшее 2019.05.14 ![]() 2019.05.19 ![]() Комплект дисков RT11 + ADOS + коллекция софта ![]() Версия для УКНЦ - добавлены драйвера AZ и ADOSSJ для УКНЦ на AZ6: ![]() Ссылки: AZ controller for PDP-11 minicomputers Приобрести контроллер для ДВК можно тут Приобрести контроллер для УКНЦ можно тут Процедура обновления firmware (прошивки) контроллера Контроллер псевдодиска на MicroSD ДВК: подключение сетевой карты сборка и наладка конструктора контроллера для ДВК печатная плата версии v1.01 Контроллер псевдодиска на MicroSD для УКНЦ: сборка и наладка конструктора контроллера Контроллер псевдодиска на MicroSD на шину МПИ: особенности версии для УКНЦ Страницы разработки на ZX-PK УКНЦ + AZ - вариант контроллера псевдодисков на микро-SD для УКНЦ. Контроллер псевдодиска на SD-карте для ДВК -------------------- Живы будем - Не помрем !
|
![]() ![]() |
SuperMax |
![]()
Сообщение
#2
|
![]() Администратор ![]() ![]() ![]() ![]() ![]() Группа: Root Admin Сообщений: 6 341 Регистрация: 7.1.2006 Из: Красноярск Пользователь №: 1 ![]() |
Новые команды контроллеров AZ*
Старые команды тут и тут и тут данные команды действительны для контроллеров начиная с V16 прошивки Сетевое Hall of FameF API описано тут 025 инициализация Hall of Fame (HOF) Код AZ$CSR = 177220 ; регистр команд и состояния (CSR) AZ$DR = 177222 ; регистр данных (DR) ; буфера SNDBUF: .BLKW 256. ; буфер передачи RCVBUF: .BLKW 256. ; буфер приема ответа SIDMEM: .BLKB 34. ; SID SIDCST: .ASCII \{"SID":"\ ; заголовок SID-а .even HOFINI: ; инициализация HOF ;результатом является такой JSON ;{"SID":"хеш сессии","RESULT":"OK"} ;или ошибка ;{"RESULT":"ERROR","DESCRIPTION":"SERVER_ERROR"} ;{"RESULT":"ERROR","DESCRIPTION":"CONNECTION_ERROR"} ; результат помещается в SNDBUF ; в R5 фиксация успешности - =1 есть SID, =0 нет SID-а mov R5, -(SP) mov R4, -(SP) mov R3, -(SP) mov R2, -(SP) mov R1, -(SP) mov R0, -(SP) mov #3,R5 ; количество попыток 220$: mov #AZ$CSR,R1 clr (R1) ; Пошлем команду "Сброс" 221$: tstb (R1) ; Проверим готовность контроллера bpl 221$ ; Если не готов ждем mov #25,(R1) ; инициализация - команда 025 20$: tstb (R1) ; проверяем результат выполнения bpl 20$ ; ждем ; получим результат mov #22,(R1) ; отдать на шину считанный блок памяти из буфера 21$: tstb (R1) ; проверяем результат выполнения bpl 21$ ; ждем tst (R1)+ ; инкрементируем mov #SNDBUF,R3 mov #256.,R2 ; читаем 256. слов; первое слово - результат чтения 22$: mov (R1),(R3)+ ; читаем блок слов в память sob R2,22$ ; надо понять - есть ли SID mov #4,R0 mov #SNDBUF,R1 mov #SIDCST,R2 23$: cmp (R1)+,(R2)+ bne 24$ sob R0,23$ clr R5 inc R5 br 26$ ; успешно 24$: ; SID не найден! sob R5,220$ clr R5 ; ошибка - нет SID-а 26$: mov (SP)+, R0 mov (SP)+, R1 mov (SP)+, R2 mov (SP)+, R3 mov (SP)+, R4 mov (SP)+, R5 return 026 обмен с HOF Код ;4. авторизация пользователя ;технически это отправка JSON ;{"SID":"хеш сессии","CMD":"AUTH_USER","NIKNAME":"никнейм пользователя","PASSWORD":"пароль пользователя"} ;ответ тоже JSON ;{"SID":"хеш сессии","RESULT":"OK","UID":"хеш пользователя"} ;или ;{"SID":"хеш сессии","RESULT":"ERROR","DESCRIPTION":"USER_NOT_FOUND_OR_WRONG_PASSWORD"} ;{"SID":"хеш сессии","RESULT":"ERROR","DESCRIPTION":"SERVER_ERROR"} ;{"SID":"хеш сессии","RESULT":"ERROR","DESCRIPTION":"SESSION_NOT_EXISTS_OR_EXPIRED"} ; загоняем команду CMD04 mov #CMD04,R1 mov #ADRMEM,R2 add #42.,R2 ; cдвигаем указатель на длину блока с SID 33$: movb (R1)+,(R2)+ bne 33$ .Print #ADRMEM .Print #HOF05 ; отсылаем команду и ждем ответа ; закачиваем в буфер MOV #AZ$CSR,R1 331$: TSTB (R1) ; Проверим готовность контроллера BPL 331$ ; Если не готов ждем mov #23,(R1) ; командуем что будем писать данные в буфер 34$: TSTB (R1) ; проверяем результат выполнения BPL 34$ ; ждем TST (R1)+ ; инкрементируем mov #ADRMEM,R3 mov #256.,R2 ; 35$: mov (R3)+,(R1) ; отдаем в контроллер sob R2,35$ tst -(R1) ; декрементируем ; обмен - команда 026 MOV #AZ$CSR,R1 361$: TSTB (R1) ; Проверим готовность контроллера BPL 361$ ; Если не готов ждем mov #26,(R1) 36$: TSTB (R1) ; проверяем результат выполнения BPL 36$ ; ждем ; получим результат 371$: TSTB (R1) ; Проверим готовность контроллера BPL 371$ ; Если не готов ждем mov #22,(R1) ; отдать на шину буфер 37$: TSTB (R1) ; проверяем результат выполнения BPL 37$ ; ждем TST (R1)+ ; инкрементируем mov #ADRMEM,R3 mov #256.,R2 ; читаем 256. слов; первое слово - результат чтения 38$: mov (R1),(R3)+ ; читаем блок слов в память sob R2,38$ -------------------- Живы будем - Не помрем !
|
![]() ![]() |
Текстовая версия | Сейчас: 27.6.2025, 20:32 |