![]() |
Здравствуйте, гость ( Вход | Регистрация )
![]() |
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БК, остальные AZ будут игнорировать данную команду
Старые команды тут и тут и тут и тут поддержка начиная с v17 функционал скриншотов команда 044: // сохранение скриншота в файл данная команда предназначена для снятия образа памяти указанного размера (или определенного автоматически на основании сохраненных параметров) технически команда может служить как средство отладки ибо способная снимать образ памяти общее ограничение на снятие образа памяти - 2МБ на один образ в качестве параметров используется страница 76(8) ее формат такой: Код // структура хидера скриншота typedef __packed struct screen_header { unsigned short int tag; // должен быть равен 0240 unsigned int begin_adress; // начальный адрес в словах - прямая задача в физических адресах unsigned int length; // длина в словах - прямая задача в физических адресах unsigned short int begin_page; // начальная страница - номер - прямая задача в номерах страниц unsigned short int len_pages; // количество страниц - прямая задача в номерах страниц unsigned short int R177300; // unsigned short int R177302; // unsigned short int R177304; // unsigned short int R177306; // unsigned short int R177310; // unsigned short int R177312; // unsigned short int R177314; // unsigned short int R177316; // unsigned short int R177320; // unsigned short int R177322; // unsigned short int R177324; // unsigned short int R177326; // unsigned short int R177330; // unsigned short int R177332; // unsigned short int R177334; // unsigned short int R177336; // unsigned short int R177340; // - Регистр управления активацией окно - маски окон unsigned short int R177342; // - Регистр управления r/o на окно unsigned short int R177344; // - Регистр управления shadow окон - маски окон unsigned short int R177346; // - Регистр управления маппером unsigned short int R177350; // - регистр копия по записи 177130 в режиме записи управления памятью в SMK unsigned short int R177352; // - регистр копия по записи 177716 в режиме записи управления памятью в БК11М unsigned short int R177230; // - регистр управления unsigned short int R177232; // - регистр номера страницы начала отображения - верхняя страница (слой 0) unsigned short int R177240; // - регистр номера страницы начала отображения - средняя страница (слой 1) unsigned short int R177242; // - регистр номера страницы начала отображения - нижняя страница (слой 2) unsigned short int R177244; // - регистр вертикального скролинга слой 2 unsigned short int R177246; // - регистр вертикального скролинга слой 1 unsigned short int R177250; // - регистр вертикального скролинга слой 0 unsigned short int R177252; // - регистр гозизонтального скролинга слой 0 unsigned short int R177254; // - регистр гозизонтального скролинга слой 1 unsigned short int R177256; // - регистр гозизонтального скролинга слой 2 unsigned short int paldata[338]; // } screen_header_t; пример ее заполнения: Код ;-------------------------------------------------- ; карта 76й страницы - туда мы готовим данные для команды скринщотов SCR_PAGE = 130000 ; 76ую страницу цепляем на место 77й временно - те в окно 130000 SCR_TAG = SCR_PAGE+0 ; тут вход - 240 - 1 слово SCR_ADDR_CONF = SCR_TAG+2 ; сюда команду с адресами - адрес+длина 24 бита - 4 слова SCR_PAGE_CONF = SCR_ADDR_CONF+8. ; сюда команду со страницами - начальная страница и количество страниц - 2 слова SCR_MEM_CONF = SCR_PAGE_CONF+4. ; cюда конфигурацию памяти из регистров - 22 слова SCR_VGA_CONF = SCR_MEM_CONF+44. ; сюда конфигурацию видеоконтроллера - 10 cлов SCR_PAL = SCR_VGA_CONF+20. ; сюда 338. значений(слов) палитры 338 слов ;-------------------------------------------------- ; trap 41 - подготовка дефолтной информации для работы функционала скриншотов PrepSRC: jsr R5, PUSHA ; пакетное сохранение регистров mov @#177326,-(SP) ; сохраним страницу 130k которая была до вызова mov #76,@#177326 ; цепляем 76ую страницу в окно mov #100377,R3 ; константа-заполнитель mov #SCR_PAGE,R4 mov #2047.,R2 4$: mov R3,(R4)+ sob R2,4$ mov #240,@#SCR_TAG ; проставляем тег ; чистим участок адресов - дефолтно автоматическое определение адресов clr R3 mov #SCR_ADDR_CONF,R4 mov #10,R2 2$: mov R3,(R4)+ sob R2,2$ ;конфигурация памяти - дефолтная mov #SCR_MEM_CONF,R4 mov #30,(R4)+ ;177300 mov #31,(R4)+ ;177302 mov #32,(R4)+ ;177304 mov #33,(R4)+ ;177306 mov #04,(R4)+ ;177310 mov #05,(R4)+ ;177312 mov #06,(R4)+ ;177314 mov #07,(R4)+ ;177316 mov #20,(R4)+ ;177320 mov #21,(R4)+ ;177322 mov #22,(R4)+ ;177324 mov #23,(R4)+ ;177326 mov #120,(R4)+ ;177330 mov #121,(R4)+ ;177332 mov #110,(R4)+ ;177334 mov #100,(R4)+ ;177336 mov #170000,(R4)+ ;177340 - Регистр управления активацией окно - маски окон mov R3,(R4)+ ;177342 - Регистр управления r/o на окно mov #7777,(R4)+ ;177344 - Регистр управления shadow окон - маски окон mov #40404,(R4)+ ;177346 - Регистр управления маппером mov R3,(R4)+ ;177350 - регистр копия по записи 177130 в режиме записи управления памятью в SMK mov #16000,(R4)+ ;177352 - регистр копия по записи 177716 в режиме записи управления памятью в БК11М ;конфигурация видеоконтроллера - дефолтная ; 177230-177256 mov #SCR_VGA_CONF,R4 mov #12201,(R4)+ ;177230 - регистр управления mov #4,(R4)+ ;177232 - регистр номера страницы начала отображения - верхняя страница (слой 0) mov R3,(R4)+ ;177240 - регистр номера страницы начала отображения - средняя страница (слой 1) "под спрайты" mov R3,(R4)+ ;177242 - регистр номера страницы начала отображения - нижняя страница (слой 2) "под фон" mov R3,(R4)+ ;177244 - регистр вертикального скролинга слой 2 mov R3,(R4)+ ;177246 - регистр вертикального скролинга слой 1 mov R3,(R4)+ ;177250 - регистр вертикального скролинга слой 0 mov R3,(R4)+ ;177252 - регистр гозизонтального скролинга слой 0 mov R3,(R4)+ ;177254 - регистр гозизонтального скролинга слой 1 mov R3,(R4)+ ;177256 - регистр гозизонтального скролинга слой 2 ; закачиваем палитру - берем дефолтную из этой ПЗУшки mov #SCR_PAL,R4 mov #PalData,R2 mov #338.,R3 1$: mov (R2)+,(R4)+ sob R3,1$ mov (SP)+,@#177326; вернем страницу с которой был вызов return вариантов указания участков памяти три - указать адрес и длину 24х битные - cм формат если их нет - система смотрит дальше - указать номер страницы и количество страницы если их нет - система смотрит дальше - те делает скриншот на основании данных о регистрах 177230 итд скриншот сохраняется в формате - страница 76 - ее первый килобайт - сам образ памяти (если режим слоеный - то все три слоя) перед вызовом команды можно загрузить имя файла для сохранения скриншота [в cmosmem буфер] при его отсутствии система сгенерит свое имя: дефолтный путь для сохранения скриншотов 0:/SCREENS/ формат имени - DDHHMISS.SCR где DD - две цифры дня месяца, HH - час, MI - минута, SS-секунда Если в процессе выполнения команды возникнет ошибка - вместо имени будет "ERROR *" к примеру "ERROR f_open 6" Пример кода вызова команды #044 Код ; обновим информацию в хидере скриншота ;-------------------------------------------------- ; карта 76й страницы - туда мы готовим данные для команды скринщотов SPAGE = 170000 ; 76ую страницу цепляем на место 77й временно - те в окно 130000 STAG = SPAGE+0 ; тут вход - 240 - 1 слово SADDRC = STAG+2 ; сюда команду с адресами - адрес+длина 24 бита - 4 слова SPAGEC = SADDRC+8. ; сюда команду со страницами - начальная страница и количество страниц - 2 слова SMEMC = SPAGEC+4. ; cюда конфигурацию памяти из регистров - 22 слова SVGAC = SMEMC+44. ; сюда конфигурацию видеоконтроллера - 10 cлов SPAL = SVGAC+20. ; сюда 338. значений(слов) палитры 338 слов ;-------------------------------------------------- mov @#177326,R5 ; сохраним страницу 130k которая была до вызова mov #76,@#177336 ; цепляем 76ую страницу в окно ;конфигурация видеоконтроллера ; 177230-177256 mov #SVGAC,R4 mov @#177230,(R4)+;177230 - регистр управления mov @#177232,(R4)+;177232 - регистр - верхняя страница (слой 0) mov @#177240,(R4)+;177240 - регистр - средняя страница (слой 1) mov @#177242,(R4)+;177242 - регистр - нижняя страница (слой 2) mov @#177244,(R4)+;177244 - регистр вертикального скролинга слой 2 mov @#177246,(R4)+;177246 - регистр вертикального скролинга слой 1 mov @#177250,(R4)+;177250 - регистр вертикального скролинга слой 0 mov @#177252,(R4)+;177252 - регистр гозизонтального скролинга слой 0 mov @#177254,(R4)+;177254 - регистр гозизонтального скролинга слой 1 mov @#177256,(R4)+;177256 - регистр гозизонтального скролинга слой 2 mov R5,@#177336; вернем страницу с которой был вызов ;------------------------- MOV #AZ$CSR,R3 ; Готовим CSR контроллера MOV #AZ$DR,R4 ; Готовим DR контроллера 20$: CLR (R3) ; Сбросим контроллер TSTB (R3) BPL 20$ ; очистим блок памяти для имени - дабы система сделала дефолтное имя файла mov #23,(R3) ; командуем что будем писать данные в буфер 128$: TSTB (R3) ; проверяем результат выполнения BPL 128$ ; ждем clr R1 mov #256.,R2 ; 129$: mov R1,(R4) ; отдаем в контроллер sob R2,129$ MOV #044,(R3) ; команда скриншот 22$: TSTB (R3) ; BPL 22$ ; ; получим имя скриншота mov #22,(R3) ; отдать на шину считанный блок памяти из буфера 121$: tstb (R3) ; проверяем результат выполнения bpl 121$ ; ждем mov #BUF,R1 mov #256.,R2 ; читаем 256. слов; первое слово - результат чтения 122$: mov (R4),(R1)+ ; читаем блок слов в память sob R2,122$ .PRINT #RESOK .Print #BUF mov #110,@#AZ$CSR; включаем сеть по-умолчанию сеть должна быть постоянно включена .Exit -------------------- Живы будем - Не помрем !
|
![]() ![]() |
Текстовая версия | Сейчас: 27.6.2025, 20:20 |