MaslovVG 0 7 января, 2012 Опубликовано 7 января, 2012 · Жалоба У них была зашита программка "монитор" наподобие простейшего BIOS. При включении Электроника 60 выходила на этот монитор на TT (дисплее) рисовала значок @. Дальше можно было подать команду , например 173000G (идти к восьмеричному адресу 173000) - запуск ДВК2 с дисковода DX0:; или посмотреть/модифицировать содержимое памяти или регистров. Там этих команд было меньше 10. указатель стека поумолчанию имел адрес 1000, дальше шла программа. Последние 4К памяти отводились для адресации железок. Именно так. Причем этот монитор находился в коде микрокоманд реализуюющих систему команд процессора. Адреса памяти начиная с нуля - системные регистры и вектора прерывания. Подробно процедуру первоночальной загрузки и пуска можно прочитать в http://narod.ru/disk/8373965000/Микро-ЭВМ%...а%201.djvu.html Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Leka 0 8 января, 2012 Опубликовано 8 января, 2012 · Жалоба Разобрался, как выводить лог выполнения инструкций в simh (симулятор для PDP-11) - теперь могу сравнивать с логом своего симулятора, и вылавливать ошибки (пока одну увидел - флаг переноса неправильно устанавливается :smile3046: ). В симуляторе simh: в starts.com прописал останов, и вывел весь "эталонный" лог загрузки RT-11 в файл, ~200000 кодов. Выловил еще пару дурацких ошибок :maniac: , теперь расхождения после ~7000 кодов только из-за неполного описания прерываний внешних устройств - буду доделывать. Вся программа, кстати, ~300 строк на Паскале. В "эталонном" логе значимыми являются только первые ~10000 кодов, остальные - пустой цикл между прерываниями таймера, много тактов почему-то до загрузки "starts.com". Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Leka 0 8 января, 2012 Опубликовано 8 января, 2012 · Жалоба Уже выводится приветственное сообщение, но символы через один теряются... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
svoyak1997 0 9 января, 2012 Опубликовано 9 января, 2012 · Жалоба Уже выводится приветственное сообщение, но символы через один теряются... Может, что-то не так с периферией? Бит готовности терминала (200 в регистре 177564) сбрасывается после записи символа в 177566? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Leka 0 9 января, 2012 Опубликовано 9 января, 2012 · Жалоба Бит готовности терминала (200 в регистре 177564) сбрасывается после записи символа в 177566? Нет, все время установлен. Непонятно, как использовать этот бит: по моему логу эти регистры не опрашиваются, используются только по записи, в 177564 пишется 100. "Эталонный" лог из SIMH мне понять сложно, тк в логе не приводятся реальные адреса. Кусок "эталонного" лога, соответствующий прерыванию по 64 (если не напутал): 154502 000200|154050 007746 MOV R5,-(SP) 154504 000210|154504 154050 MOV #154070,R5 154510 000210|000015 154510 JSR R4,154522 154522 000210| 154522 TST #0 154526 000204| BNE 154732 154530 000204| 154514 DEC (R4)+ 154532 000210| BGT 154630 154534 000210|154516 007742 MOV R4,-(SP) 154536 000210| 154516 CLR -(R4) 154540 000204|154540 154514 MOV 150764,R4 154544 000204| BEQ 154554 154554 000204|007740 000000 MOV (SP)+,R4 154556 000210|154070 154070 CMP (R5),2(R5) 154562 000211| BNE 154570 154570 000211| 154070 DEC -(R5) 154572 000205|154066 154572 CMP (R5)+,#177777 154576 000201| BEQ 154724 154600 000201|154070 154516 MOVB @(R5)+,(R4) 154602 000201|154602 154516 BIC #177600,(R4) 154606 000201|154606 154606 JSR PC,157340 157340 000201|154516 157340 CMP (R4)+,#177 157344 000211| BEQ 157400 157346 000211|154520 157346 CMP 177776(R4),#40 157354 000211| BGE 157404 157356 000211|154520 157356 CMP 177776(R4),#10 157364 000200| BNE 157374 157374 000200|157374 007740 ADD #12,(SP) 157400 000210|157400 007740 ADD #12,(SP) 157404 000210| 157404 RTS PC 154636 000210|154520 154636 CMP -(R4),#11 154642 000200| BNE 154656 154656 000200|154516 154656 CMP (R4)+,#15 154662 000204| BNE 154674 154664 000204| 154520 CLR 177774(R4) 154670 000204|154670 154520 MOV #10,(R4) 154674 000200| 154520 DEC R4 154676 000210|154517 154676 CMPB -(R4),@#56 154702 000200| BNE 154626 154626 000200| 154072 INC -(R5) 154630 000210|154516 154630 MOV (R4),@150410 154634 000200| BR 154732 154732 000200| BR 154746 154746 000200|007742 154516 MOV (SP)+,R4 154750 000200|007744 154070 MOV (SP)+,R5 154752 000210| RTI 154630 000210|154516 154630 MOV (R4),@150410 - это запись в 177566 (вижу по своему логу) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Edashkin 0 9 января, 2012 Опубликовано 9 января, 2012 · Жалоба Нет, все время установлен. Непонятно, как использовать этот бит: по моему логу эти регистры не опрашиваются, используются только по записи, в 177564 пишется 100. " 154630 000210|154516 154630 MOV (R4),@150410 - это запись в 177566 (вижу по своему логу) В логе мне разобраться, пожалуй, слабо... Из того, что помню: Запись 100 в 177564 - разрешение прерывания. В подпрограмме обработчика запись в 177566 - вывод символа. По этой записи на время передачи символа должна сняться готовность (бит 200 в 177564), иначе новое прерывание не наступит. В прерывании программа может и не анализировать снятие готовности по передаче символа, но в целях отладки такой анализ полезно ввести. Если идёт вывод по прерываниям, линии запроса/предоставления прерываний должны быть подтянуты к "1", в запросе используется монтажное "или", линия предоставления прерывания использует последовательный арбитраж. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Leka 0 9 января, 2012 Опубликовано 9 января, 2012 · Жалоба Возможно, ошибка вывода на TT косвенная: у меня прерывание по 220 вызывается сразу по записи 105 в 177404, впервые это происходит как раз при чтении TT.SYS (смотрю по номеру блока), до этого чтение RK выполняется без прерываний по 220. После выхода из прерывания поведение в SIMH и моем в симуляторе отличается... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Edashkin 0 9 января, 2012 Опубликовано 9 января, 2012 · Жалоба Возможно, ошибка вывода на TT косвенная: у меня прерывание по 220 вызывается сразу по записи 105 в 177404, впервые это происходит как раз при чтении TT.SYS (смотрю по номеру блока), до этого чтение RK выполняется без прерываний по 220. После выхода из прерывания поведение в SIMH и моем в симуляторе отличается... Запись 105 по адресу 177404 - это разрешение прерывания от RK: см. описание регистров, 220 - вектор прерывания RK: Видимо, после загрузки ядра RT11 идёт разрешение прерываниий и проверка наличия устройств. Для диагностики в своё время использовалась ТМОС, она работала без прерываний и грамотно написанные тесты проверяли каждое устройство в отдельности. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Leka 0 9 января, 2012 Опубликовано 9 января, 2012 · Жалоба Запарился искать ошибку, помучаюсь еще немного, не найду - перепишу прогу на Си, и выложу сюда... Вывод в симуляторе: некоторые версии завершаются "HALT", другие все-таки доходят до приглашения ".", примеры: -------------------- RT-11SJ V02C-02 -------------------------- R-1J 0C0 . -------------------- RT-11SJ V05.03 ----------------------------- R-1J 0.3 ?O--Ivldcl oURN eieDrcoyIOerrBdFthOelyerrDrcoyoefo7 134720 .iE -------------------- ados-SJ (S) A06.04 ------------------------- ao- J()A60 ?MNF EDON^A OAD . ------------------------------------------------------------------------------ Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Leka 0 10 января, 2012 Опубликовано 10 января, 2012 · Жалоба Нашел еще одну дурацкую ошибку :maniac:, теперь с загрузкой порядок. :yeah: Двигаюсь дальше: доделать внешние устройста(ввод с TT + запись на RK), проверить работу системных программ/компиляторов, перевести в FPGA. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Leka 0 10 января, 2012 Опубликовано 10 января, 2012 · Жалоба "SHOW ALL" - работает, внешним устройствам отвел адреса, начиная с 177400 - Ок, но загрузчик "находит" лишние устройства, см лог. Будут вопросы, открою новую тему в "Системах на ПЛИС". RT-11SJ V04.00C .SH ALL RT-11SJ V04.00C Booted from RK0:RT11SJ Resident Monitor base is 160076 (57406.) USR is set SWAP TT is set NOQUIET Indirect file abort level is ERROR Indirect file nesting depth is 3 LSI-11 Processor Parity Memory VT48 Graphics Display Hardware 60 Cycle System Clock KW11-P User Programmable Clock No SYSGEN options enabled Device Status Vector ------------------------------- RK Resident 220 TT RK (Resident) RK0 = SY , DK BA 13 free slots Job Name Console Level State Low High Impure 0 RESORC 0 0 Run 000000 160034 000000 No multi-terminal support . Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Leka 0 11 января, 2012 Опубликовано 11 января, 2012 · Жалоба проверить работу системных программ/компиляторов Сделано, работает. Кстати, простой метод поиска ошибок в реализации системы команд: делается 64К карта для всевозможных команд, при выполнении - если команда новая - печатается в лог и отмечается в карте, также в лог выводятся все строки сообщений. По строкам сообщений легко выделить группу с проблемной командой. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
VVoland 0 19 января, 2012 Опубликовано 19 января, 2012 · Жалоба Итак, резюме к сегодняшнему дню: USB и Ethernet предполагается реализовывать в составе контроллера microchip pic32mx795 (стоимость чипа от 200 руб), на нем же есть куча ног, которые можно использовать для LPT, родной клавиатуры и т.п. USB соответственно будет один, т.к. подходящих контроллеров с бОльшим количеством USB в одном флаконе почти нет, поэтому от PS/2-мыши и клавиатуры отказаться не получится. В качестве базовой ПЛИС будет использоваться Altera Cyclone III - EP3C16Q240C8N - 240 выводный QFP-чип, который при определенной сноровке можно запаять паяльником. Стоимость чипа от 500 руб. Микросхемы ОЗУ пока нашлись такие MT48LC4M16A2P, MT48LC2M32B2P - по 64 Мб, цена около 70 руб, в продаже в большом количестве. Больше 32 мб ставить нет смысла, т.к. диспетчер, заимствуемый из ВМ3 не сможет адресовать более 4 мб, остальная память будет использоваться под графические буферы. С разрешениями тоже пришлось урезаться до набора 800*600, 640*480, 512*256 и 256*256, т.к. более высокие разрешения требуют нереального для этих мощностей цифрового потока под 300 мб/с (для отображения содержимого видеопамяти с частотой 75 Гц). Что касается процессора, уже готова его упрощенная модель, которая будет в итоге работать с частотой примерно 100 мГц, но в отличие от оригинального ВМ1 будет выполнять 1 команду за 1 такт, а не за 10. Итого, получим ускорение процессора порядка 200 раз в сравнении с оригиналом. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ReAl 0 19 января, 2012 Опубликовано 19 января, 2012 · Жалоба Микросхемы ОЗУ пока нашлись такие MT48LC4M16A2P, MT48LC2M32B2P - по 64 Мб, цена около 70 руб, в продаже в большом количестве. Больше 32 мб ставить нет смысла, т.к. диспетчер, заимствуемый из ВМ3 не сможет адресовать более 4 мб, остальная память будет использоваться под графические буферы.MT48LC4M16 , 2M32 (4Mx16, 2Mx32) — это 64 Mb (мегабита), а ВМ3 держит 4MB (мегаБайта) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
aaarrr 63 19 января, 2012 Опубликовано 19 января, 2012 · Жалоба ...от PS/2-мыши и клавиатуры отказаться не получится. Напрасно - они уже вымерли как класс. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться