- Рождение эмуля - нужна помощь
- [+] Старые сообщения (28)
-
? anonymous - 16.12.2009 20:07
Совершенно верно, загрузчик их считывает в свой буфер, размещенный старше 020000, а после успешного считывания перемещает в адрес 0 и делает jmp #@200, 024й вектор в БК не реализован в аппаратуре, он реализован в местах на базе двк1, а тесты - универсальные, потому там прописана часть векторов, не использующихся на БК. Однако описание на эти тесты у меня заиграли, была целая брошюрка конкретно по ним, с расшифровкой всех кодов ошибки и списком ячеек, доступных для модификации пользователем, предназначенных для изменения поведения тестов.
-
? nzeemin@ - 16.12.2009 21:17
Похоже, тесты выдают диагнистику в КОИ-7. Вот например что выдает тест 791323:
¤
pAMqTx
000000-176776
O{ib A
110464 010464 000626 002012 000007 000000
000000-176776
O{ib ~
110464 010464 000626 002012 000007 000000
000000-176776
O{ib ~
110464 010464 000626 002012 000007 000000
-
? anonymous - 17.12.2009 00:34
Тесты выдают диагностику на учительское место, потому они либо на 15ИЭ0013 в режиме КОИ7, либо на MERA79хх печатали по-русски.
Тест памяти у вас неверно определяет границы ОЗУ, для 10й машины он пишет ПАМЯТЬ 000000-077776 и для 11й с подключенными страницами ПАМЯТЬ 000000-137776. Возможно у вас запись в ПЗУ 4й вектор не генерит.
-
? anonymous - 17.12.2009 00:36
А касательно памяти 0170000..0176777 в составе контроллера винчестера - в нее вообще не заведены байтовые выборки, адресация только словная, потому на нее в тесте следует замаскировать байтовые операции. (вот когда пропавшую книжку по тестам надо бы иметь...)
-
? nzeemin@ - 18.12.2009 18:26
Нда, книжечка-то не помешала бы. Но реально тут достаточно смотреть что проверяется перед формированием кода ошибки.
-
? a214 - 18.12.2009 22:50
Если в ОЗУ(и соотв с шиной) что-то не так - как могут загружаться какие-то тесты и что-то можно определить?
-
? anonymous - 19.12.2009 02:47
a214, это тест памяти для многочасовой проверки в цикле, там много тестов, заполнение, многопроходное заполнение, адресный, бегущая 1, псевдослучайный, шумовой и им инверсные, нацеленные на доскональную проверку машины, например, если через 10 минут после начала урока на РМУ вылезают кракозябры и вся работа ученика идет на смарку, а тест из МСТД проходит, потому как там в какой-либо ячейке сбой происходит раз на миллионный, да еще только при условии, что в какой-то из соседних ячеек оказывается определенное число. Так были на моей памяти партии микросхем, у которых проходили все рекомендуемые изготовутелем тесты, однако если начиналась периодическая долбежка двух смежных ячеек с адресами, кратными 4, при этом в одной из них должен был быть шахматный код, а в другой, неприменно, произвольный код, со смежными 0, но их количеством подряд не более 3, то код, считываемый из ячейки с шахматным числом, искажался в сторону появления лишних нулей, причем только на первом чтении, второе проходило без ошибок. Фирма Alliance, изготовившая микросхемы, получив обратно образцы и исследовав их, согласилась с допущением брака по их вине. Партия была заменена.
Что касается тестов процессора, то опять же, многие ощибки проявляются при определенном сочетании предыдущих состояний микросхемы, и могут вообще не влиять годами на работу машины, пока в какой-нибудь программе не возникнет соответствующая комбинация, например, были ВМ3, у которых не выполнялся EIS, если после выхода из пульта по команде RTI (но не RTT, потому на отладочное пошаговое исполнение влияния не было) до применения рассширенной арифметики не встречалась ни одна команда ветвления, из-за этого во всех загрузчиках ФОДОС и РАФОС имеется, казалось бы ненужная, команда с кодом 0400 - BR на следующую ячейку. :)
-
? nzeemin@ - 19.12.2009 16:50
Проходя по шагам тест 791401, исправил работу команд MARK, MFPS и RTT.
Теперь тест выдает:
¤
<00>
<0e>k prohod
<0e>k prohod
<0e>k prohod
...и так далее в цикле.
-
? nzeemin@ - 19.12.2009 18:25
Alex_K подкинул ссылки в тему: http://zx.pk.ru/showthread.php?p=242024#post242024
http://grands.land.ru/docs/test0505.htm -- Методика проверки работоспособности ДВК «Электроника МС 0501.08»
http://mix.wol.bz/sys/ftmo_dsk.zip -- дискета с тестами, включая тесты ВМ1 и ВМ2
-
? Александр Тишин@ - 20.12.2009 03:57
Что-то я не очень понимаю насчёт теста 791401. У меня он, во-первых, при ошибках исполнения команд ничего на ИРПС не передаёт, а просто переходит на команду HALT. Впрочем, так даже удобнее. А во-вторых, при прогоне теста столкнулся со странной проблемой: он по адресу 7070 содержит команды clr r0/mtps r0, которые разрешают прерывания. При этом немедленно срабатывает прерывание передатчика ИРПС, в результате чего тест виснет (вектор-то не инициализирован).
Это я как-то криво тест запускаю, или всё же косяк в эмуляции?
¤
Условия запуска такие: Эмулируется БК-0010.01 в стандартной конфигурации с Бейсиком + ИРПС, тест грузится по адресу 0, по адресу начального пуска подставляется команда jmp @#200
-
? Alex_K@ - 20.12.2009 12:34
Александр Тишин, вообще эти тесты предназначены для запуска в RT-11 через FTMON. В RT-11 бит разрешения прерывания передатчика в регистре 177564 устанавливается только тогда, когда надо передавать информацию, по завершении передачи он сбрасывается. При этом тесты по адресу 200 вызываются с PSW=0, поэтому прерывание в этом случае должно было возникнуть раньше.
Тест 791401 при ошибке выходит на HALT, в ячейке 402 содержится номер теста, который не прошел проверку.
-
? anonymous - 20.12.2009 12:59
「Эмулируется БК-0010.01 в стандартной конфигурации с Бейсиком + ИРПС」 - драйвер в составе бейсика вообще не использует прерывания от ИРПС, каким образом у вас они разрешенными оказались? Только focal разрешает прерывания, и то - от приемника.
-
? anonymous - 20.12.2009 13:01
Вот драйвер Бейсика, первыми же командами - запрещение прерываний и от приемника, и от передатчика.
¤
DLDRV: CLR @#RSLR
CLR @#RSLT
CLR R5
MOVB @#RDLR,R0
MOVB (R1)+,R0
JSR PC,$TR
JSR PC,$RD
MOV R1,R2
ADD #5,R2
MOV #12,R3
1$: MOVB (R2)+,R0
JSR PC,$TR
SOB R3,1$
MOV #4,R3
JSR PC,$RD
MOVB R0,(R1)+
BNE 2$
ADD #6,R2
4$: JSR PC,$RD
MOVB R0,(R2)+
SOB R3,4$
MOV -(R2),R3
BEQ 2$
TST (R1)
BEQ 5$
MOV (R1),R2
BR 6$
5$: MOV -(R2),R2
MOV R2,@#264
6$: JSR PC,$RD
MOVB R0,(R2)+
ADD R0,R5
SOB R3,6$
7$: JSR PC,$RD
CMPB R0,R5
BEQ 9$
MOVB #2,-(R1)
9$: MOV R5,R0
JSR PC,$TR
2$: RTS PC
$RD: TSTB @#RSLR
BPL $RD
MOVB @#RDLR,R0
RTS PC
-
? anonymous - 20.12.2009 13:04
ох, не докопировались последние команды
$TR: TSTB @#RSLT
BPL $TR
MOVB R0,@#RDLT
RTS PC
-
? Александр Тишин@ - 20.12.2009 18:24
Alex_K, спасибо, в этом и была проблема. Я запускал с psw=340, плюс выяснилось, что бит разрешения прерывания в ИРПС эмулировался инверсно :)
¤
anonymous, да, запрещает. Но эмулируется - то Фокальный ИРПС!
¤
PS: Заодно спасибо за тесты.
-
? Manwe@ - 07.01.2010 21:22
Краем уха услышал слово "Мак". Неужели эмулятор БК под Макинтош?!!
-
? Валерий@ - 03.02.2010 00:28
Доброго времени суток !
¤
Чесно говоря застрял. Эмулятор в принципе работает, но при упоминании строковых переменных на Бейсике портится текст программы. Причем если не в программе использовать переменные :
a$="hello"
? a$
все работает. Если :
10 a$="hello"
20 ? a$
выдает ошибку в строке 20, после команды List в строке 20 полная белиберда.
Чего только не делал, код сверил с PDP11CPU.c раз 50, потом плюнул переписал проц с нуля заново - до фонаря ! Все остальное работает (кружочки на экране, математика и т.д.). Пока собирался с мыслями добавил произвольное маштабирование экрана (естественно в пропорции 4:3). Я грешу на некоторое не соответствие команд у ВМ3 и ВМ1. Временный ступор - куда копать дальше не знаю. Могу выложить проэкт. В принципе программка получилась симпатичная.
2 hdc если посчитаете возможным выложите пожалуйста исходники своего эмулятора, может найду не соответствие проца.
В своем сделал так сказать открытую шину, то есть возможность дописывать произвольные устроуства и цеплять их на разные адреса без переделки основного проекта - делал задел на 11-тую.
-
? nzeemin@ - 03.02.2010 00:44
Валерий, не совсем понял к кому вы обращаетесь, если речь обо мне то сырцы тут: http://code.google.com/p/bkbtl/source/checkout
-
? SKcorp.@ - 17.02.2010 01:49
Раскопал PUTP.SAV и NETBK.SAV
В PUTP загрузка идет, но программы не запускаются или лезут в экран, гружу .BIN или там свой формат был?
¤
NETBK дает терминальный режим (? AT 28 МИЭТ-85), но съедает пробелы.
¤
-
? anonymous - 17.02.2010 04:01
Вот это уже не помню, у меня было два формата, один использовал два дополнительных слова перед началом BINа для адреса и длины, другой использовал целый блок в начале файла, где по стандарту ОС адрес брал из 040 ячейки, а длину высчитывал из конечного адреса, хранящегося в 050й ячейке SAV-файла RT11. Вообще там какая-то хитрость была для бинарников, файлы фокала грузятся с адреса 017хх-с чем-то, потому, вероятно, ваши программы и вылезают в экран, т.к. их ПО принимает за текст программы, а не за исполняемый файл.
-
? SKcorp.@ - 17.02.2010 17:13
В мониторе грузил - та же фигня, видимо второй формат нужно получать из БК GET-ом.
- << Форум