Speccy - наш выбор!

Speccy - наш выбор! (http://zx-pk.ru/index.php)
-   БК-0010/0011 (http://zx-pk.ru/forumdisplay.php?f=59)
-   -   Тесты ВМ1 (http://zx-pk.ru/showthread.php?t=11557)

nzeemin 15th December 2009 18:39

Тесты ВМ1
 
1 Attachment(s)
Судя по поиску, тут этого ещё не пробегало. Для эмуляции БК будет крайне полезно.
http://bk0010.org/forum/?id=3716&page=
Quote:

? anonymous - 11.12.2009 22:58
А тесты 791401, 791404 и 791323 проходят?
Quote:

? anonymous - 11.12.2009 23:39
Первые два - из комплекта сдаточных тестов ВМ1, тест инструкций процессора и тест прерываний, третий - расширенный тест ОЗУ. Они обругают, если что-то не так съемулировано. Загружаются с адреса 0, диагностику выводят на учительскую машину через блок ИРПС. ИРПС эмулировать не сложно, там 4 регистра, перемычкой их адрес задается 0176560..0176567 для школьного бейсика и 0177560..0177567 для школьного фокала, последний вариант - стандартные адреса терминала в pdp11, на этих адресах и следует добавить эмуляцию с выводом в соседнее, например, окно, или в файл. В *560м регистре имеются два бита, 6й и 7й. 7 бит *560го регистра устанавливается, если во входной регистр *562 поступил новый байт, а если перед приемом байтов установить в 1 6й бит *560го регистра, то произойдет прерывание с вектором, адрес которого читается из регистра *566. *562й регистр - буфер приемника, оттуда считывается последний принятый байт, по записи регистр ничего не делает. В регистре *564 имеются тоже два бита, 6й и 7й, с тем же назначением, что и у приемника, 7й бит устанавливается в 0, когда процессор пишет байт в буфер передатчика, *566, и устанавливается в 1, когда заканчивается передача, т.е. когда буфер готов к приему следующего байта. Если при установке 7го бита был установлен 6й, то по готовности передатчика возникает прерывание с вектором, на 4 бОльшим, чем считываемое из регистра *566 значение. Регистр *566 - по записи - буфер передатчика, по чтению - регистр вектора прерывания, при установке адресов 0176560..0176567 вектор считывается 0360, приемник прерывает работу по 0360му вектору, а передатчик - по 0364му, при установке адресов 0177560..0177567 - адрес вектора 060 для приемника и 064 для передатчика.
По команде процессора reset все биты в регистрах приемника обнуляются, а в регистре передатчика устанавливается бит 7 - готовности к передаче.

nzeemin 16th December 2009 17:56

Необходимое дополнение от Alex_K:
Quote:

Эти тесты запускаются по значению вектора по сбою питания (24 вектор).
У всех тестов получается стартовый адрес равен 0200, значение PSW равно нулю.

Alex_K 16th December 2009 22:27

Уважаемые владельцы реальных БК-0010-01, выполните в Бейсике такую программку:
Code:

10 DATA &O010046,&O012700
20 DATA &O000520,&O010020
30 DATA &O016715,&O000004
40 DATA &O012600,&O000207
100 RESTORE
110 FOR I%=&O500 TO &O516 STEP 2
120 READ A%
130 POKE I%,A%
140 NEXT I%
150 DEF USR0=&O500
160 A%=USR0(0%)
170 PRINT OCT$(A%)

Хотелось бы узнать, какой результат получается - 520 или 522.
Сама программка:
Code:

000500: MOV R0,-(SP)
000502: MOV #520,R0
000506: MOV R0,(R0)+
000510: MOV 520,@R5
000514: MOV (SP)+,R0
000516: RETURN
000520: .BLKW 1


PDP-11 18th December 2009 22:20

Quote:

Originally Posted by Alex_K (Post 241380)
Хотелось бы узнать, какой результат получается - 520 или 522.

520

nzeemin 19th December 2009 17:57

Проходя по шагам тест 791401, исправил работу команд MARK, MFPS и RTT.
Теперь тест выдает:
<00>
<0e>k prohod
<0e>k prohod
<0e>k prohod
...и так далее в цикле.
(В угловых скобках записаны коды неотображаемых символов.)

Alex_K 19th December 2009 19:00

1 Attachment(s)
Кстати, все эти тесты входят в состав ТМОС. Дискета с тестами и краткая инструкция к ним находятся на сайте Grand.
В прикрепленном файле загрузочный образ для УКНЦ.
ВНИМАНИЕ!!! Перед запуском FTMON обязательно нужно выключить таймер!
После загрузки на ошибку "Invalid command" не надо обращать внимание - просто нет программы DATIME.SAV, она в принципе и не нужна.

nzeemin 20th December 2009 00:01

Quote:

Originally Posted by Alex_K (Post 242024)
В прикрепленном файле загрузочный образ для УКНЦ.
ВНИМАНИЕ!!! Перед запуском FTMON обязательно нужно выключить таймер!

Алексей, у тебя на реальной машинке этот диск работает?
На эмуляторе как ни пробовал -- выпадает при загрузке теста в память:

.FTMON
,L 791401
*** СТОП ***

Alex_K 20th December 2009 00:18

Quote:

Originally Posted by nzeemin (Post 242099)
Алексей, у тебя на реальной машинке этот диск работает?
На эмуляторе как ни пробовал -- выпадает при загрузке теста в память:

.FTMON
,L 791401
*** СТОП ***

Он и должен выпадать, в инструкции сказано, что после загрузки по команде L надо запустить тест с адреса 200, либо выйти на командную строку по адресу 30124.
Запускать тесты лучше командой R для бесконечного прохода или O для однократного прохода. Бесконечный проход можно прервать клавишей СТОП и запуститься с адреса 30124 для выхода в командную строку.

Кстати тест 791403 (команды FIS) на реальной УКНЦ, также как и на эмуляторе, вываливается по зависанию в пультовый монитор. Этот тест предназначен для платы МС 1201.2 с ПЗУ 1801РЕ2-055, там эмулятор FIS немного по другому сделан.

---------- Post added at 23:18 ---------- Previous post was at 23:09 ----------

Еще небольшое дополнение по эмулятору УКНЦ: где-то ошибка при эмуляции канала 2, поэтому после выпадения в СТОП и запуска по новому адресу происходит снова выпадение в СТОП по адресу 64. Это срабатывает прерывание от клавиатуры, хотя не должно быть. По всей видимости канал 0 дает запрос на прерывание, но они запрещены, после чтения регистра данных запрос должен сброситься, но он не сбрасывается.
Исходя из этого лучше в debug-консоли для ЦП набрать команду g200 и запустить тест командой O. Я их таким образом и гонял. Есть ошибки в эмуляции команд ASH и ASHC.

nzeemin 20th December 2009 00:28

Quote:

Originally Posted by Alex_K (Post 242101)
Еще небольшое дополнение по эмулятору УКНЦ: где-то ошибка при эмуляции канала 2, поэтому после выпадения в СТОП и запуска по новому адресу происходит снова выпадение в СТОП по адресу 64. Это срабатывает прерывание от клавиатуры, хотя не должно быть. По всей видимости канал 0 дает запрос на прерывание, но они запрещены, после чтения регистра данных запрос должен сброситься, но он не сбрасывается.
Исходя из этого лучше в debug-консоли для ЦП набрать команду g200 и запустить тест командой O. Я их таким образом и гонял. Есть ошибки в эмуляции команд ASH и ASHC.

У меня сейчас тест 791401 проходит -- запуском через R либо O -- перенёс вчерашние исправления MARK, MFPS и RTT из BKBTL.
Но есть проблема с тестом 791404 -- я тебя письмом выслал трассу -- посмотри если не трудно. Там валится на примере с установкой бита T через RTT и затем вызовом IOT.

Alex_K 20th December 2009 00:36

Quote:

Originally Posted by nzeemin (Post 242107)
У меня сейчас тест 791401 проходит -- запуском через R либо O -- перенёс вчерашние исправления MARK, MFPS и RTT из BKBTL.
Но есть проблема с тестом 791404 -- я тебя письмом выслал трассу -- посмотри если не трудно. Там валится на примере с установкой бита T через RTT и затем вызовом IOT.

По всей видимости проблема в том, что прерывание по биту T не должно исполняться, ведь исполнение IOT загружает новый PSW, а там по всей видимости бит T сброшен и прерывания по биту T не должно возникнуть.

P.S. Для процессора ВМ2 предназначен тест 691401, по 791401 он вываливается в СТОП.


All times are GMT +4. The time now is 02:31.

Powered by vBulletin® Version 3.8.3
Copyright ©2000 - 2014, Jelsoft Enterprises Ltd.