Rev 1406 | Blame | Compare with Previous | Last modification | View Log | Download
Запись в -(SP) или чтение из (SP)+ всегда происходит по чётному адресу. Даже если сделать MOVB R0,(SP)+, значение SP увеличится не на 1 (как с любым другим регистром), а на 2. (Manwe)монитор: входит в бейсик, текст вводится, но enter не выполняет командуklad: печать символа надо с учётом скроллаbubbler: перестал работать с какой-то версии (выводит заставку и тут же стирает)cafelogo256: emt 0, потом где-то крутится с гадостью на экранеcd.bk: читает порт ffc0, readdestop_000_pc, потом нечётный de, где-то крутитсяcindy2: после падения чего-то читает порт ff00, потом 400 dots и крутится на одном эффекте с постепенным заглючиванием, потом вылетаетcosmic_flight: не реагирует на клавиши, крутится на каких-то паузных циклах20csi20: грязь, вылет в бейсикdigger: с какой-то версии перестал реагировать на клавиши в менюdropzona: ashc [падает брусок, потом по enter описание и стрелка, движется по space, потом игровой экран искажён]hearts4k: читает порт ffff неоднократно, вылетает с какой-то версии. ?нестандартный call at 020e: 09ff, 02cahny2020: WAIT, [потом вылетает] крутится на трёх командахlabyrinh: в старой версии в игре рисует из точек, но не чистит. в пц эмуляторе не получается реагировать на клавиши. после фикса mona/leopol/morf ничего не рисуетlogo: идут надписи на фоне грязиmars1: спрашивает "ВАШ ПАРОЛЬ?" и висит (буквы не вводятся)miraclebk: [линии двигаются неправильно] вылетmodplaypsg - вылет (modplaypsgalone не вылет)mona0010 - не прекращает рисовать (mona0011 норм)[morf!: фигуры отрисовываются не совсем точно (фиксится инверсией CY до и после sbc или отключением всех инверсий CY)]moroz-no: emt 0x35, потом читает порт ffff, потом нечётный адрес, шевелится мусорmovblobs: вылет [портит фоновый экран, а блобы рисует грязно][newlode: ждёт клавишу, рисует грязный уровень и где-то крутится в паузных циклах (без инверсий CY норм)]ninza_1: неправильная полоса здоровья, не работает управление[pacman: показывает поле и всё, что надо, делает несколько шагов (не сразу), а потом горой исчезает, а привидения всё ещё движутся (без инверсий CY норм)]pacman2 не ловит вниз, при последней смерти входит в 0e4a (0000), если поставить там jp (iy), то нормально продолжает - возможно таймерpacmanria: с какой-то версии не входит из меню в игру [почему-то пакман вверху]pentis: выводит бред и меню, крутится в каком-то ожиданииpifpaf: выводит грязь, меню, читает порт 0, чистит не нулём, вылетpipe: крутится на каких-то паузных циклахpyromania: крутится на каких-то паузных циклах?[road2cafe: emt 0x32, 0x2f, 0x33, [как-то странно перекрашивает доску без клеток] (без инверсий CY норм)][sokoban: почему-то у меня в начале не 0000 шагов, а "100H" шагов (фиксится отключением всех инверсий CY)]space4k: на третьем эффекте читает порт fffe, потом вылетtron_ovl: игра не стартует (не реагирует на space)Alexander Tishin: ? 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 - готовности к передаче.сделана в Рязани https://r-games.net/bk001x/games/441-zerkalo.html?__cf_chl_tk=nn_CKosc02K3aqXCNbxjbx0jTo9XEToDhzWo3GvyA2A-1638263562-0-gaNycGzNCZEhttp://emuverse.ru/wiki/БК-0010_-_Руководство_пользователя#3._.D0.97.D0.B0.D0.BF.D1.83.D1.81.D0.BA_.D0.BF.D1.80.D0.BE.D0.B3.D1.80.D0.B0.D0.BC.D0.BC.D1.8Bhttp://gid.pdp-11.ru/docstable.htmlаппаратные прерывания http://gid.pdp-11.ru/books/programming_BK10.html#__RefHeading__180