Заодно можно исправить баг с шрифтами, реализовать масштабируемое окно VT52 без внутренней рамки.
Вид для печати
Пардон, но что-то здесь неправильно. У меня был СКБ-НП-шный (Новосибирск) контроллер RK (на полной плате, на секциях 1804), так и ВМ2 с 055-й и ВМ3 с 134-й загружали RT-11 молча и без вопросов. Набрал BRK0, и вперед. Про таймер, правда, не помню.
Да, кстати, и 055, и 134 после B ждут три символа - первые два - название контроллера и третий - номер накопителя на этом контроллере. Так вот, третий символ не анализируется вообще, просто очищают биты 15-03 регистра с этим символом, а биты 02-00 используют в качестве номера накопителя. То есть если набрать BRK и нажать Enter, то у кода Enter'а (015) будут погашены старшие разряды, останется пятерка. Таким образом, BRK<Enter> эквивалентно BRK5.
Не помню, правда, если контроллер набрать неправильно, сразу пошлют, или тоже будут ждать третьего знака...
- - - Добавлено - - -
Может зависание прошивки 134 - это просто ожидание, когда заведется RK5: ?
Если адрес SEL исправить на 0140000 то почти попадает. Правда почему не на четный адрес?
На реальном МС1201.02.
После нажатия кнопки УСТ.Код:000002
@R0/157777
R1/147530
R2/000000
R3/073616
R4/175776
R5/000030
R6/000016
R7/000002
Код:000401
@R0/000000
R1/147530
R2/000000
R3/177752
R4/000040
R5/000030
R6/000776
R7/000401
В имеющемся варианте прошивки 055 - она передаёт в контроллер не количество слов для чтения, а количество байтов, поэтому контроллер считывает два блока вместо одного и с адреса 01000 затирает код начального загрузчика:
Такое может пройти без вылета в пульт, если в считанных после нулевого блока данных записан подходящий код ( в RT-11 это место фактически не используется ).Код:001014 [000340] MOV #-512., @#177406 ; 001016:177000 -> 177406:000000
001022 [000350] MOV #5, @#177404 ; 001024:000005 -> 177404:000200
001030 [000340] BIT #-32640., @#177404 ; 001032:100200 -> 177404:000004
001036 [000344] BEQ 001030
^^^ Последние команды [2] выполнены раз [4833] ^^^
001030 [000344] HALT
Сложно представить такой алгоритм работы клона контроллера RK, при котором код загрузчика из прошивки 055 не считывал бы в память с диска два блока подряд вместо одного.
- - - Добавлено - - -
Имеющийся код загрузчика RK из прошивки 134 вообще не может работать, потому что после команды BIC #255., R1 - регистр R1 перестаёт указывать на RKCS и последующие команды лишаются смысла:
- - - Добавлено - - -Код:010750 [000340] MOV #-330., 2(R1) ; 010752:177266 -> 177406
010756 [000350] MOVB (R3)+, R2 ; 011510: 005 -> R2
010760 [000340] BIC #255., R1 ; 010762:000377 -> R1 :177404
010764 [000350] BIS R2, (R1) ; R2 :000005 -> 177400:000520
010766 [000340] TSTB (R1) ; 177400: 120
010770 [000340] BPL 010766
Код загрузчика RK из прошивки 377 работает нормально и позволяет предположить, что в имеющейся копии прошивки 134 потерян один бит:
Здесь, как и в прошивке 055, с загружаемого диска тоже считываются два блока - но на этот раз ничто не затирается и загрузка проходит успешно.Код:012206 [000344] MOV #-512., 2(R1) ; 012210:177000 -> 177406
012214 [000350] MOVB (R3)+, R2 ; 012444: 005 -> R2
012216 [000340] BIC #255., (R1) ; 012220:000377 -> 177404:000200
012222 [000344] BIS R2, (R1) ; R2 :000005 -> 177404:000200
012224 [000340] TSTB (R1) ; 177404: 004
012226 [000340] BPL 012224
^^^ Последние команды [2] выполнены раз [6181] ^^^
012230 [000350] TST (R1) ; 177404:000204
012232 [000340] BPL 012246
012246 [000340] CLRB (R1) ; 177404: 204
012250 [000344] CLR PC ; R7 :012252
- - - Добавлено - - -
Однако бит в прошивке 134 не потерян, потому что если его исправить - перестаёт совпадать контрольная сумма прошивки, проверяемая прошивкой при загрузке.
Ещё вариант на МС1201.02 с 1806ВМ2.
После включения.
После нажатия кнопки УСТ.Код:000000
@R0/140001
R1/147530
R2/000000
R3/000000
R4/000000
R5/000000
R6/000776
R7/000000
- - - Добавлено - - -Код:000000
@R0/140001
R1/147530
R2/000000
R3/177752
R4/000040
R5/177562
R6/000776
R7/000000
Можно предположить что контрольная сумма была подсчитана уже при потерянном бите. А RK никто не проверял, вот и выпустили битую прошивку.
Более внимательное сравнение поведения прошивок 377 и 134 при загрузке с RK1 позволяет понять, что загрузка в прошивке 134 не может работать вообще - там кроме потерянного бита ещё много других проблем:
Рабочий код из прошивки 377 :
Код:002466 [000350] MOV 014052, R0 ; 014052:000001 -> R0
002472 [000340] MOV (R4)+, R3 ; 012556:012444 -> R3
002474 [000340] MOV R0, R2 ; R0 :000001 -> R2
002476 [000340] SWAB R2 ; R2 :000001
002500 [000344] MOV #-32640., R5 ; 002502:100200 -> R5
002504 [000350] MOV #1364., @#77774 ; 002506:002524 -> 077774
002512 [000340] MOV #224., @#77776 ; 002514:000340 -> 077776
002520 [000340] RESET
002522 [000340] RTI ; 017774:002524 -> PC
; 017776:000340 -> PSW
002524 [000340] MOV #4096., SP ; 002526:010000 -> R6
002530 [000340] CALL @(R4)+ ; PC :002532 -> 007776
012402 [000340] ASH #5, R2 ; 012404:000005 -> R2 :000400
012406 [000340] MOV R2, 6(R1) ; R2 :020000 -> 177412
012412 [000340] BR 012302
012302 [000340] BR 012206
012206 [000340] MOV #-512., 2(R1) ; 012210:177000 -> 177406
012214 [000350] MOVB (R3)+, R2 ; 012444: 005 -> R2
012216 [000340] BIC #255., (R1) ; 012220:000377 -> 177404:000200
012222 [000344] BIS R2, (R1) ; R2 :000005 -> 177404:000200
012224 [000340] TSTB (R1) ; 177404: 004
012226 [000340] BPL 012224
Уродский код из прошивки 134 ( сначала номер загружаемого привода помещается в R0, но затем пропущена половина вычислений и вместо этого используется адрес возврата ) :
- - - Добавлено - - -Код:004152 [000340] MOV @#077132, R0 ; 077132:000001 -> R0
004156 [000340] MOV #-32640., R5 ; 004160:100200 -> R5
004162 [000350] MOV (R4)+, R1 ; 001750:177404 -> R1
004164 [000350] MOV (R4)+, R2 ; 001752:001714 -> R2
004166 [000340] ADD #3840., R2 ; 004170:007400 -> R2 :001714
004172 [000340] MOV (R4), R3 ; 001754:002110 -> R3
004174 [000340] ADD #3840., R3 ; 004176:007400 -> R3 :002110
004200 [000340] MOV #224., @#77776 ; 004202:000340 -> 077776
004206 [000340] MOV R2, @#77774 ; R2 :011314 -> 077774
004212 [000340] MOV @#077114, SP ; 077114:016770 -> R6
004216 [000340] RESET
004220 [000340] RTI ; 017774:011314 -> PC
; 017776:000340 -> PSW
011314 [000340] ASH #5, R2 ; 011316:000005 -> R2 :011314
011320 [000342] MOV R2, 6(R1) ; R2 :054600 -> 177412
011324 [000340] BR 011214
011214 [000340] BR 010750
010750 [000340] MOV #-330., 2(R1) ; 010752:177266 -> 177406
010756 [000350] MOVB (R3)+, R2 ; 011510: 005 -> R2
010760 [000340] BIC #255., R1 ; 010762:000377 -> R1 :177404
010764 [000350] BIS R2, (R1) ; R2 :000005 -> 177400:000520
010766 [000340] TSTB (R1) ; 177400: 120
010770 [000340] BPL 010766
Аналогичный по размеру код, работающий нормально - может выглядеть так :
Код:004152 [000340] MOV @#077132, R0 ; 077132:000001 -> R0
004156 [000340] MOV #-32640., R5 ; 004160:100200 -> R5
004162 [000350] MOV (R4)+, R1 ; 001750:177404 -> R1
004164 [000340] MOV #77774, R2 ; 004166:077774 -> R2
004170 [000340] MOV (R4)+, (R2) ; 001752:001714 -> 077774
004172 [000340] ADD #3840., (R2)+ ; 004174:007400 -> 077774:001714
004176 [000340] MOV (R4), R3 ; 001754:002110 -> R3
004200 [000340] ADD #3840., R3 ; 004202:007400 -> R3 :002110
004204 [000340] MOV #224., (R2) ; 004206:000340 -> 077776
004210 [000340] MOV R0, R2 ; R0 :000001 -> R2
004212 [000340] MOV @#077114, SP ; 077114:016770 -> R6
004216 [000340] RESET
004220 [000340] RTI ; 017774:011314 -> PC
; 017776:000340 -> PSW
011314 [000340] ASH #13., R2 ; 011316:000015 -> R2 :000001
011320 [000340] MOV R2, 6(R1) ; R2 :020000 -> 177412
011324 [000340] BR 011214
011214 [000340] BR 010750
010750 [000340] MOV #-512., 2(R1) ; 010752:177000 -> 177406
010756 [000350] MOVB (R3)+, R2 ; 011510: 005 -> R2
010760 [000340] BIC #255., (R1) ; 010762:000377 -> 177404:000200
010764 [000350] BIS R2, (R1) ; R2 :000005 -> 177404:000200
010766 [000340] TSTB (R1) ; 177404: 004
010770 [000340] BPL 010766
Если внести такой код в прошивку 134 ( 134v2.dat ) - она начинает загружать RK не хуже, чем прошивка 377 :
Код:***** ДОСТУПНОЕ ОЗУ - 256 K *
@ 001000
@B
$DK1
CHMDKD0 XXDP+ DK MONITOR
BOOTED VIA UNIT 1
28K UNIBUS SYSTEM
ENTER DATE (DD-MMM-YY):
Чудеса! Тогда, спрашивается, как я загружал тот RK? Точно ведь работал, и с ВМ2, и с ВМ3. И альтернативных прошивок тогда еще не было, ни 279-й, ни 377-й - дело было в 89-м. Уже в 90-м мне достались КЖД и ST225, после чего RK был забыт, точнее, мы его продали, вместе с накопителями.
- - - Добавлено - - -
А как на тему эмуляции клавиатуры 7004? Когда я запускал ДИАМС, мы это довольно долго обсуждали...
Тот самый, от СКБ НП - 248. Его явно склепали по спецификациям СМ-овского. По слухам даже диски, записанные на СМ-ке читались на нем и наоборот. А еще он, в отличие от СМ-овского, кушал как 12-секторные диски, так и 24-секторные. Там же под блином был стальной диск с секторными просечками, рядом с ним индукционный датчик. Так вот, выпускались диски как с двенадцатью секторными просечками (плюс одна из них сдвоенная, датчик начала оборота), для наших клонов PDP-11 и с 24, для СМ-1/2. Так вот, у меня, как раз, весело работали диски ИЗОТ-1370 от СМ-1, там и постоянный диск 24-секторный, и сменные были такие же.
А еще запоротые сменные кассетные диски от этих RK весело ремонтировались - идешь на "большой" ВЦ с ЕС-ками, выпрашиваешь битый пакет 29М, от ЕС-5061, разбираешь его, там пара-тройка блинов битые, остальные целые, меняешь блин в кассете, и вперед!