Эмулятор FIS в прошивке -055 копируется из теневого ПЗУ в теневое ОЗУ по адресу 0171000. Если команда FIS была вызвана с разрешенными прерываниями, то и эмулятор FIS их также разрешает. Соответственно при любом прерывании в происходит переход из режима HALT в режим USER и в стек ложится PC и PSW прерванного эмулятора. Соответственно адрес возврата больше 0171000 и в сохраненном PSW установлен восьмой бит. Адрес больший 0160000 нужен, чтобы по RTI возвратится обратно в режим HALT. Так что используется стек прерванной программы, сам эмулятор FIS стека не использует.
Для возврата из USER в HALT по RTI нужен не только установленный 8-й бит в сохраненном PSW, но и адрес возврата должен быть большим или равным 0160000.
С методом Полетаева знаком. По его методу программа перекачивается в теневое ОЗУ, там же и исполняется. А используется для этого выполнение команды FIS. Эмулятор FIS сохраняет в буфере регистры с R0 по R6, адрес буфера 0173002. Это и используется - программа перекачки располагается в регистрах с R0 по R5, делается левый FADD, а далее переходим на начало буфера через RTI, потом докачиваем, что надо.
Собственно его программа:Код:Программа, скачивающая в основное ОЗУ содержимое ОЗУ HALT-режима в плате набазе 1801ВМ2. .TITLE VM2 ; команды 1801ВМ2 GO =: 12 ; G STEP =: 16 ; P RSEL =: 20 ; R0:=SEL MFUS =: 21 ; R0:=(R5)+ RCPC =: 22 ; R0:=CPC RCPS =: 24 ; R0:=CPS MTUS =: 31 ; -(R5):=R0 WCPC =: 32 ; CPC:=R0 WCPS =: 34 ; CPS:=R0 START:: MOV #PROG,R5 MOV (R5)+,R0 MOV (R5)+,R1 MOV (R5)+,R2 MOV (R5)+,R3 MOV (R5)+,R4 MOV (R5)+,R5 CLR -(SP) CLR -(SP) CLR -(SP) CLR -(SP) FADD SP CMP (SP)+,(SP)+ MOV #740,-(SP) MOV #173002,R1 MOV R1,-(SP) MOV #PROG,R5 MOV #PLEN,R2 RTI PROG: MFUS MOV R0,(R1)+ SOB R2,PROG MOV #160000,R1 MOV #10000,R2 MOV #10000+20000,R5 10$: MOV -(R1),R0 MTUS SOB R2,10$ MOV #NEXT,R0 WCPC CLR R0 WCPS STEP PLEN=.-PROG/2 NEXT: HALT EMT 350 .END START
AFZ(26.04.2020)
Это конкретно для 1201.02 с 055-й ПЗУ-хой. Неизвестно, пойдет ли с 279-й и, тем более, на УКНЦ. На УКНЦ, скорее всего, не пойдет - у нее нет теневого ПЗУ, вместо него используется теневое ОЗУ в странице ввода-вывода, программу туда загоняет ПП из своей ПЗУ-хи. Вероятность того, что регистры сохраняются в том же месте - около нуля. С другой стороны, конечно, никто не мешает посмотреть, где эти программы сохраняют регистры и подправить код...
Кто мешает тебе выдумать порох непромокаемый? (К.Прутков, мысль № 133)
С любовью к вам, Yandex.Direct
Размещение рекламы на форуме способствует его дальнейшему развитию
На 279-й пойдёт, посмотрел. Там эмулятор FIS естественно в другом месте ПЗУ, но копируется он в теневое ОЗУ по тому же адресу 0171000, эмулятор такой же, соответственно и буфер там же.
На УКНЦ и эмулятор FIS, и его буфер, естественно расположены в другом месте, адрес буфера 0167506. Но на УКНЦ таких сложностей не надо. Системное ОЗУ спокойно доступно через регистры адреса и данных (0176640/0176642), адрес через РА от 070000 до 077777. Так что спокойно закачивайте через РА и РД что надо, ну и вызывайте через RTI. На УКНЦ системное ОЗУ свободно с адреса 172724. К тому же на УКНЦ методом Полетаева лучше не пользоваться, т.к. после эмулятора FIS там идут разные загрузчики и подпрограммы тестирования, а самое главное - подпрограммы взаимодействия с терминалом, которые использует пульт.
Vslav, на вашем сайте документация по 1801ВМ2, которую когда-то выкладывал Titus. Страница 65, таблица 4.
Vslav(26.04.2020)
Написал на Питоне ассемблер для микрокода LSI-11:
- понимает стандартные мнемоники для Western Digital MCP-1600, которые были реализованы в DEC MICASM
- поддерживает radix 8/10, понимает 0xnnn, 0nnnn, nnnnn., 0nnnn, и radix
- поддерживает локальные метки n$
- поддерживает арифметические выражения "()+-/*|&^~", выполняет символьные подстановки
- ассемблирует множество входных файлов в единую прошивку
- выводит заданные адреса трансляции и дополнительных ttl в файл - можно будет обновлять PLA и делать свои трансляции
- портируемый, написано для Phyton 3.x, будет работать Windows/Linux
PS. Этот учебный условно-полезный проект написан вечерами этой недели + полный день вчера. Мое текущее мнение - Питон это бомба. Вторая бомба это VS code. Дальше по жизни буду пользоваться обеими
PPS. Отдельное спасибо Юре yu.zxpk за дельные советы и ревью моего нупского кода.
Последний раз редактировалось Vslav; 02.05.2020 в 14:51.
Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)