Rev 1345 | Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | Download | RSS feed
Запись в -(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: не реагирует на клавиши, крутится на каких-то паузных циклах
csi2020: грязь, вылет
dropzona: ashc [падает брусок, потом по enter описание и стрелка, движется по space, потом игровой экран искажён]
hearts4k: читает порт ffff неоднократно, вылетает с какой-то версии. ?нестандартный call at 020e: 09ff, 02ca
hny2020: WAIT, потом вылетает
labyrinh: в старой версии в игре рисует из точек, но не чистит. в пц эмуляторе не получается реагировать на клавиши. после фикса mona/leopol/morf ничего не рисует
logo: идут надписи на фоне грязи
mars1: спрашивает "ВАШ ПАРОЛЬ?" и висит (буквы не вводятся)
miraclebk: линии двигаются неправильно
modplaypsg - вылет (modplaypsgalone не вылет)
mona - обе версии не прекращают рисовать
morf!: фигуры отрисовываются не совсем точно (фиксится инверсией CY до и после sbc)
moroz-no: emt 0x35, потом читает порт ffff, потом нечётный адрес, шевелится мусор
movblobs: вылет [портит фоновый экран, а блобы рисует грязно]
newlode: ждёт клавишу, рисует грязный уровень и где-то крутится в паузных циклах
ninza_1: неправильная полоса здоровья, не работает управление
pacman: показывает поле и всё, что надо, делает несколько шагов (не сразу), а потом горой исчезает, а привидения всё ещё движутся
pacman2 не ловит вниз, при последней смерти входит в 0e4a (0000), если поставить там jp (iy), то нормально продолжает - возможно таймер
pacmanria: с какой-то версии не входит из меню в игру [почему-то пакман вверху]
pentis: выводит бред и меню, крутится в каком-то ожидании
pifpaf: выводит грязь, меню, читает порт 0, чистит не нулём, виснет
pipe: крутится на каких-то паузных циклах
pyromania: крутится на каких-то паузных циклах?
road2cafe: emt 0x32, 0x2f, 0x33, как-то странно перекрашивает доску без клеток
sokoban: почему-то у меня в начале не 0000 шагов, а "100H" шагов
space4k: на третьем эффекте читает порт fffe, потом виснет
tron_ovl: игра не стартует (чёрные экраны)
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 - готовности к передаче.