Andrey_Ak WEB: www.tis.kz ICQ: 345-005-908 Mail: admin@tis.kz Fido: 2:5083/1 Radio: UN7GKQ
Сегодня проверил код загрузчика с Эл.диска DM, работает...
Загрузился с HX, скопировал систему на DM, вышел в пульт, набрал код загрузчика,
выполнил его, и система загрузилась с DM.
Код загрузчика DM:
000000/000240
000002/000415
000004/000000
000006/000000
000010/000000
000012/000000
000014/000000
000016/000000
000020/000000
000022/000000
000024/000000
000026/000000
000030/000000
000032/041020
000034/116420
000036/000400
000040/000137
000042/000574
000044/000000
000046/000000
000050/000000
000052/000000
000054/000000
000056/000000
000060/000000
000062/000000
000064/000000
000066/000000
000070/000000
000072/000000
000074/000000
000076/000000
000100/000000
000102/000000
000104/000000
000106/000000
000110/000000
000112/000000
000114/000000
000116/000000
000120/000000
000122/000000
000124/000000
000126/000000
000130/000000
000132/000000
000134/000000
000136/000000
000140/000000
000142/000000
000144/000000
000146/000000
000150/000000
000152/000000
000154/000000
000156/000000
000160/000000
000162/000000
000164/000000
000166/000000
000170/000000
000172/000000
000174/000000
000176/000000
000200/000000
000202/000000
000204/000000
000206/000000
000210/012703
000212/175000
000214/010023
000216/012723
000220/000000
000222/011322
000224/077102
000226/000207
000230/000000
000232/000000
000234/000000
000236/000000
000240/000000
000242/000000
000244/000000
000246/000000
000250/000000
000252/000000
000254/000000
000256/000000
000260/000000
000262/000000
000264/000000
000266/000000
000270/000000
000272/000000
000274/000000
000276/000000
000300/000000
000302/000000
000304/000000
000306/000000
000310/000000
000312/000000
000314/000000
000316/000000
000320/000000
000322/000000
000324/000000
000326/000000
000330/000000
000332/000000
000334/000000
000336/000000
000340/000000
000342/000000
000344/000000
000346/000000
000350/000000
000352/000000
000354/000000
000356/000000
000360/000000
000362/000000
000364/000000
000366/000000
000370/000000
000372/000000
000374/000000
000376/000000
000400/000000
000402/000000
000404/000000
000406/000000
000410/000000
000412/000000
000414/000000
000416/000000
000420/000000
000422/000000
000424/000000
000426/000000
000430/000000
000432/000000
000434/000000
000436/000000
000440/000000
000442/000000
000444/000000
000446/000000
000450/000000
000452/000000
000454/000000
000456/000000
000460/000000
000462/000000
000464/000000
000466/000000
000470/000000
000472/000000
000474/000000
000476/000000
000500/000000
000502/000000
000504/000000
000506/000000
000510/000000
000512/000000
000514/000000
000516/000000
000520/000000
000522/000000
000524/000000
000526/000000
000530/000000
000532/000000
000534/000000
000536/000000
000540/000000
000542/000000
000544/000000
000546/000000
000550/000000
000552/000000
000554/000000
000556/000000
000560/000000
000562/000000
000564/000000
000566/000000
000570/000000
000572/000000
000574/012706
000576/010000
000600/012700
000602/000002
000604/012701
000606/002000
000610/012702
000612/001000
000614/004767
000616/177370
000620/012737
000622/000210
000624/004730
000626/012737
000630/015410
000632/004716
000634/005037
000636/004722
000640/000137
000642/001000
000644/000000
000646/000000
000650/000000
000652/000000
000654/000000
000656/000000
000660/000000
000662/000000
000664/000000
000666/000000
000670/000000
000672/000000
000674/000000
000676/000000
000700/000000
000702/000000
000704/000000
000706/000000
000710/000000
000712/000000
000714/000000
000716/000000
000720/000000
000722/000000
000724/000000
000726/000000
000730/000000
000732/000000
000734/000000
000736/000000
000740/000000
000742/000000
000744/000000
000746/000000
000750/000000
000752/000000
000754/000000
000756/000000
000760/000000
000762/000000
000764/000000
000766/000000
000770/000000
000772/000000
000774/000000
000776/000000
001000/000000
[свернуть]
Остается сделать запись/чтение содержимого эл.диска на НМЛ...
Потом скомпоновать программы чтения с НМЛ и загрузчик и записать
в один первый блок на НМЛ, который можно считать, выполнить и система загрузится..
- - - Добавлено - - -
Если подсмотреть исправленный дизассемблерный код ПЗУ, можно выделить подпрограммы чтения с НМЛ и записи на Эл.диск
Дизассемблерный код ПЗУ:
CHAR$CR = 015
CHAR$LF = 012
TT$RCSR = 177560
TT$RBUF = 177562
TT$XCSR = 177564
TT$XBUF = 177566
ML$CSR = 170002 ; регистр команд и состояния контроллера НМЛ
ED$ADL = 175000 ; регистр адреса электронного диска - младшее слово
ED$ADH = 175002 ; регистр адреса электронного диска - старшее слово
ED$DAT = 175004 ; регистр данных электронного диска
BIG$ROM = 173776 ; регистр чтения большого ПЗУ с этой платы
ROM$BASE = 173000 ; базовый адрес данного загрузочного ПЗУ
MLDESC = 10000 ; адрес дескриптора операции НМЛ в памяти
MLCMD_INIT = 16 ; инициализация устройства и перемотка на начало
MLCMD_READ = 102 ; чтение блока
MLCMD_BSR = 112 ; возврат на один блок назад
ML$B_EOF = 40000 ; бит признака конца файла в слове результата
; Предположительный формат дескриптора команд контроллера НМЛ.
; Дескриптор формируется в области памяти (для примера показан в 010000).
; Для запуска операции адрес заполненного дескриптора
; вписывается в регистр команд и состояния контроллера НМЛ.
; Сразу после инициализации ЭВМ из этого регистра читается число 000200.
;
; операция: INIT+ BSR+ READ+
; 007776/ отсюда читать код завершения? -2(R3) проверяется на 40000 или 40010
; 010000/ 177777 174000 R3
; 010002/ 10006
; 010004/ 16 112 102 4(R3)
; 010006/ адрес первой свободной ячейки ЗА дескриптором?
;
;-------------------------------------------------------------------------------
.TITLE BOOTROM KP556PT4A ROM module
.ENABL LSB
.ASECT
.=ROM$BASE
173000 005037 177560 START: CLR @#TT$RCSR ;005037 177570 +
173004 012706 007776 MOV #7776,SP ;012716 007776 +
173010 004067 000652 1$: JSR R0,PRTSTR ;004077 173666 +
173014 005015 026502 060572 .ASCII <15><12>/B-zagruzka/ ; B-загрузка
071147 075165 060553 .ASCII <15><12>/R-perezapusk/ ; R-перезапуск
005015 026522 062560 .ASCII <15><12>/T-testy/ ; T-тесты
062562 060572 072560 .ASCIZ <15><12>/?/ ; ?
065563 005015 026524
062564 072163 006571
037412 000000
.EVEN ;
173064 004767 000624 CALL INPSTR ;004777 000634
173070 001747 BEQ 1$ ;001757
173072 120027 000102 CMPB R0,#'B ;120037 000112
173076 001410 BEQ BOOT ;
173100 120027 000122 CMPB R0,#'R ;120037 000132
173104 001532 BEQ RESTART ;
173106 120027 000124 CMPB R0,#'T ;120037 000134
173112 001336 BNE 1$ ;
173114 000167 000340 JMP TESTS ;000177 000350
;...............................................................................
; ??? 224 это вектор TM. Но может быть тут и 234. пока непонятно.
; Скорее всего это устанавливает вектор прерывания на одну-единственную
; команду RTI, чтобы сбить WAIT и продолжить выполнение (см.ниже в MLSTA).
173120 012737 000226 000224 BOOT: MOV #226,@#224 ;012737 000236 000234 ??? может быть и 234/236
173126 012737 000002 000226 MOV #2,@#226 ;012737 000012 000236 код 2 = инструкция RTI
173134 012705 175000 MOV #ED$ADL,R5 ;012715 175010 адрес регистра адреса электронного диска.
173140 012704 170002 MOV #ML$CSR,R4 ;012714 170012 адрес CSR контроллера НМЛ. проверен.
173144 012703 010000 MOV #MLDESC,R3 ;012713 010010 ??? или всё-таки 010010 ? (есть отрицательные смещения). адрес блока дескриптора операции для выборки контроллером по ПДП ?
173150 004767 000406 10$ CALL MLRES ;004777 000416 сброс (запуск?) НМЛ
173154 004767 000352 CALL MLRDY ;004777 000352 проверка готовности НМЛ.
173160 101017 BHI 2$ ; НМЛ готов
173162 004077 000500 JSR R0,PRTSTR ;004077 000510
173166 006417 073412 066153 .ASCIZ <7><15><12>/wkl`~i nml0<wk>/ ; Включи НМЛ0<ВК>
077140 020151 066556
030154 073474 037153
000010
.EVEN ;
173212 004767 000476 CALL INPSTR ;004777 000476
173216 000754 BR 10$ ;
173220 005025 2$: CLR (R5)+ ;005035 базовый адрес для записи в эл.диск? (с 000000)
173222 005025 CLR (R5)+ ;005035 расширенный адрес эл.диска?
173224 012701 000010 MOV #^D8,R1 ;012711 000010 ; пытаемся считать 8 раз
173230 004767 000254 5$: CALL MLSTA ;004777 000254
173234 101053 BHI 3$ ;101053 ; прочитали успешно! перепишем блок в электронный диск
173236 001453 BEQ TAPEBOOT ; ; считан маркер конца файла? запускаем загрузчик с эл.диска
173240 005301 DEC R1 ;005311 ; есть ещё попытки?
173242 001014 BNE 6$ ; ; да
173244 004067 000416 JSR R0,PRTSTR ;004077 000416
173250 006417 067412 020173 .ASCIZ <7><CR><LF>/o{ ~teniq ml/ ; Ош чтения МЛ
072176 067145 070551
066440 000154
.EVEN ;
173270 000000 12$: HALT ;000010
173272 000776 BR 12$ ;
173274 012713 177777 6$: MOV #-1,(R3) ; модифицировать дескриптор операции с НМЛ: вернуться на один блок назад
173300 012763 000112 000004 MOV #MLCMD_BSR,4(R3) ;012763 000112 000014 команда возврата на блок назад (или позиционирования вообще?)
173306 004767 000214 CALL MLSTA1 ;004777 000214 запустить ещё раз с новыми параметрами
173312 101346 BHI 5$ ;101356 и снова попытаться прочитать с ленты.
173314 004067 000346 JSR R0,PRTSTR ;004077 000356
173320 006417 067412 020173 .ASCIZ <7><15><12>/o{ wozwrata/ ; Ош возврата
067567 073572 060562
060564 000000
.EVEN ;
173340 000000 4$: HALT ;000010
173342 000776 BR 4$ ;
173344 012700 010006 3$: MOV #MLDESC+6,R0 ;012710 010016 ; адрес начала считанных с ленты данных.
173350 012701 002000 MOV #^D1024,R1 ;012711 002010 ; 1024 слова = 2 КБ
173354 012015 11$: MOV (R0)+,@R5 ; переписать считанное с ленты в электронный диск?
173356 077102 SOB R1,11$ ;077112
173360 012701 000010 MOV #^D8,R1 ;012711 000010 считано успешно. восстановим счётчик попыток,
173364 000721 BR 5$ ;000731 и продолжим читать с ленты.
; Загрузчик с какого-нибудь электронного диска. Команда JMP @#0 - просто
; шедевр в написании загрузчиков...
;
173366 004767 000170 TAPEBOOT: CALL MLRES ;004777 000170 ; загрузка с электронного диска
173372 005000 RESTART: CLR R0 ;005010 будем записывать считанное в память с адреса 0
173374 012701 000400 MOV #^D256,R1 ;012711 000410 ; читаем 256 слов (512 байт, один блок)
173400 012705 175000 MOV #ED$ADL,R5 ;012715 175010 адрес регистра адреса электронного диска
173404 005025 CLR (R5)+ ;005035 установим параметры (первая часть адреса?)
173406 005025 CLR (R5)+ ;005035 расширенный адрес блока эл.диска?
173410 011520 7$: MOV @R5,(R0)+ ;011530 читаем данные из 175004 (регистр данных эл.диска?)
173412 077102 SOB R1,7$ ;077112
173414 005000 CLR R0 ;005010 адрес начала считанного
173416 022710 000240 CMP #240,@R0 ;022710 000250 ; загрузчик должен начитаться со слова 000240 (NOP)
173422 001002 BNE 8$ ;001012
173424 000137 000000 JMP @#0 ;000137 000010 ; запускаем загрузчик.
173430 004067 000232 8$: JSR R0,PRTSTR ;004077 000232
173434 006417 067412 020173 .ASCIZ <7><15><12>/o{ zagruzki/ ; Ош загрузки
060572 071147 075165
064553 000000
.EVEN ;
173454 000000 9$: HALT ;000010
173456 000776 BR 9$ ;
;-------------------------------------------------------------------------------
; Чтение скрытой части прошивки. Зачем-то в позиционно-независимых кодах -
; видимо осталось со времен когда код отлаживали еще не прошитый.
; Адрес блока для чтения 173656 или 173646 (точно пока не ясно - оба варианта
; попадают в блок данных пригодный для этого кода).
; По смыслу - 173656.
;
173460 010700 TESTS: MOV PC,R0 ;010710
173462 062700 000174 ADD #RDESC2-.,R0 ;062710 000174 тут точно 174 скоере всего.
173466 012037 173776 MOV (R0)+,@#BIG$ROM ; базовый адрес чтения из ПЗУ
173472 012001 MOV (R0)+,R1 ;012011 число слов
173474 012002 MOV (R0)+,R2 ;012012 куда записывать
173476 013722 173776 1$: MOV @#BIG$ROM,(R2)+ ;013732 173776 ; читаем данные
173502 077103 SOB R1,1$ ;077113
173504 011000 MOV @R0,R0 ;011010 восстановим адрес запуска
173506 000110 JMP @R0 ; переход на считанный блок
;-------------------------------------------------------------------------------
; ??? со 173510 по 173644 код неоднозначный
; Запуск какого-то I/O.
;
; по видимому, запуск чтения данных с НМЛ.
;
173510 010300 MLSTA: MOV R3,R0 ;010310 заполняем дескриптор операции?
173512 012720 174000 MOV #^C^D2048,(R0)+ ;012730 174010 число читаемых байт (2048 в доп.коде) r0=10000
173516 012720 010006 MOV #MLDESC+6,(R0)+ ;012730 010016 адрес размещения считываемых данных r0=10002
173522 012710 000102 MOV #MLCMD_READ,@R0 ;012710 000112 команда чтения r0=10004
173526 010314 MLSTA1: MOV R3,(R4) ; передаём адрес дескриптора -> запуск операции. r3=10000
173530 000001 WAIT ;000011 ждём завершения операции
; ; и продолжаем ниже в MLRDY
;...............................................................................
;
; Проверка результата на ошибку. Охренительная конструкция:
; если равно нулю - сказать, что не равно, а если не равно, сказать что равно.
; Мда... Не иначе код прошивки писал Д. Дэфо в качестве разминки перед
; "Робинзоном Крузо"...
;
; Проверка готовности НМЛ ?
; R3 - адрес дескриптора операции в памяти, считываемого/записываемого контроллером методом ПДП.
; R4 - адрес регистра состояния контроллера
173532 005714 MLRDY: TST @R4 ; бит 15 в ML$CSR - признак ошибки?
173534 100401 BMI 1$ ;100411 при ошибке переход на 1$
173536 000207 RETURN ;000217 ошибки нет. Z=0 (из-за бита готовности), C=0
173540 032763 040000 177776 1$: BIT #ML$B_EOF,-2(R3) ;032773 040010 177776 проверить какой-то бит (конец файла?) в дескрипторе
173546 001402 BEQ 2$ ;001412
173550 000264 SEZ ;000274 бит 14 в дескрипторе = 1, уст. Z=1, C=0 - достигнут конец файла
173552 000402 BR 3$ ;000412
173554 000244 2$: CLZ ;000254
173556 000261 SEC ;000271 бит 14 в дескрипторе = 1, уст. Z=0, C=1 - прочая ошибка.
173560 000207 3$: RETURN ;000217
; Сброс НМЛ и перемотка ленты на начало.
; R3 - адрес дескриптора операции в памяти, считываемого контроллером методом ПДП для выборки параметров операции.
; R4 - адрес регистра контроллера, куда передаётся адрес дескриптора и откуда считывается слово состояния.
173562 012763 000016 000004 MLRES: MOV #MLCMD_INIT,4(R3) ;012773 000016 000014 команда инициализации. проверено.
173570 010314 MOV R3,@R4 ; передать адрес блока дескриптора контроллеру?
173572 105714 1$: TSTB @R4 ; ждать завершения операции?
173574 100376 BPL 1$ ; бит 7 - готовность (если 200 - готов)
173576 000207 RETURN ;000217
; Данные неизвестного назначения.
173600 000010 .WORD 10
173602 000010 .WORD 10
173604 000010 .WORD 10
173606 000010 .WORD 10
173610 007577 .WORD 7577
173612 000010 .WORD 10
173614 000210 .WORD 210
173616 007577 .WORD 7577
173620 007570 .WORD 7570
173622 000010 .WORD 10
173624 000210 .WORD 210
173626 017377 .WORD 17377
173630 007217 .WORD 7217
173632 000010 .WORD 10
173634 000210 .WORD 210
173636 026576 .WORD 26576
173640 003773 .WORD 3773
173642 000010 .WORD 10
173644 000210 .WORD 210
; Два блока данных для чтения кода из скрытой прошивки:
; - адрес внутри прошивки (номер слова, т.е. нужно умножить на два)
; - количество слов
; - адрес памяти куда считывать
; - адрес в памяти куда передать управление после считывания
;
; RDESC1 загружает что-то большое, устанавливающее, в частности, вектор Trap 4.
;
; RDESC2 загружает тестовый код, похожий на тесты из ТМОС. Он выводит меню:
; 1 - основной тест команд
; 2 - тест команд ра
; 3 - тест команд пз
; 4 - тест памяти
; 5 - тест диска системного
;
173646 032561 RDESC1: .WORD 32561 ;032571 ??? скорее 32561, * 2 = 65342 - там осмысленный код.
173650 000333 .WORD 333 ; 333 здесь правильно, охватывает с 65342 до 66230.
173652 001000 .WORD 1000 ;001010 тут правильно 1000.
173654 001000 .WORD 1000 ;001010
173656 033114 RDESC2: .WORD 33114 ; * 2 = 66230 - запуск тестов. 33114 здесь правильно.
173660 000664 .WORD 664 ;000674 ??? скорее 664 (с 66230 до 70000)
173662 100000 .WORD 100000 ;100010 тут правильно 100000.
173664 100000 .WORD 100000 ;100010
;
;-------------------------------------------------------------------------------
;
; Печатает ASCIZ строку начиная с адреса сразу после "JSR R0,PRTSTR",
; выравнивает адрес, возвращает управление на адрес после текста.
;
173666 105737 177564 PRTSTR: TSTB @#TT$XCSR ;105737 177574
173672 100375 BPL PRTSTR ;
173674 112037 177566 MOVB (R0)+,@#TT$XBUF ;112037 177576
173700 105710 TSTB @R0 ;
173702 001371 BNE PRTSTR ;
173704 042700 000001 BIC #1,R0 ;042710 000011
173710 005720 TST (R0)+ ;005730
173712 000200 RTS R0 ;000210
;
;-------------------------------------------------------------------------------
;
; Ввод "строки" текста. Строка завершается нажатием <CR>.
; Код последнего символа (перед <CR>) возвращается в R0. В конце подпрограммы
; заметен любимый прием советских инженеров - бесполезная команда (результат
; этой команды уже получен предыдущей командой).
;
173714 005046 INPSTR: CLR -(SP) ;005056
173716 105737 177560 1$: TSTB @#TT$RCSR ;105737 177570
173722 100375 BPL 1$ ;
173724 113700 177562 MOVB @#TT$RBUF,R0 ;113710 177572
173730 105737 177564 2$: TSTB @#TT$XCSR ;105737 177574
173734 100375 BPL 2$ ;
173736 110037 177566 MOVB R0,@#TT$XBUF ;110037 177576
173742 122700 000015 CMPB #CHAR$CR,R0 ;122710 000015
173746 001402 BEQ 3$ ;001412
173750 010016 MOV R0,@SP ;
173752 000761 BR 1$ ;000771
173754 105737 177564 3$: TSTB @#TT$XCSR ;105737 177574
173760 100375 BPL 3$ ;
173762 112737 000012 177566 MOVB #CHAR$LF,@#TT$XBUF ;112737 000012 177576
173770 012600 MOV (SP)+,R0 ;012610
173772 105700 TSTB R0 ;105710
173774 000207 RETURN ;000217
; Это вообще не относится к этой прошивке. Через этот регистр судя по
; всему достаются данные из микросхем не отмапленых на память. Порядок такой:
; сюда записывается начальный адрес внутри скрытой части и потом делается
; последовательное чтение слов данных.
;
;173776 013436 .WORD 13426
[свернуть]
Andrey_Ak WEB: www.tis.kz ICQ: 345-005-908 Mail: admin@tis.kz Fido: 2:5083/1 Radio: UN7GKQ
PDP-11/83, Электроника МС0511 (УК-НЦ), DECserver 90M
Q-Bus: H9278-A, DLV11-J, DZQ11, DHV11, DELQA-M, LPV11, CQD-420/TM, DRV11
PMI: KDJ11-BF, MSV11-JE
VT220, CM7209
Нашлось немного времени помучить эту хитрую ленту. Результаты довольно интересные...
Получается, что взяли стандартный TM11 контроллер и между ним и шиной посадили некую прослойку вроде УКНЦшного ПП. Все, что в стандартном контроллере заносится в регистры устройства тут заносится в блок памяти, а адрес этого блока памяти пишется в единственный регистр новоиспеченного контроллера, отработав, контроллер думпит обратно регистры в этот блок памяти. Зачем так сделано - загадка - на мой взгляд это сложнее. Ну да ладно, может под "суперразработку" денег давали кому...
В общем и целом все выглядит так: блок в памяти состоит из 4 слов (смещения даются относительно адреса который нужно передать в контроллер): -2 (MTS, статус, возвращается контроллером), 0 (MTBRC, счетчик байтов - заносится в негативе, по окончанию равен количеству неотработанных байт [также в негативе]), 2 (MTCMA, адрес буфера, по окончании I/O передвигается на следующий адрес за считанными/записанными данными), 4 (MTC, команда и управляющие биты). Все биты совпадают со стандартным TM11.
Была написана программка которая умеет только перематывать ленту и читать блок размером 512. байт для анализа что происходит. Первое, что было выявлено - это то, что независимо от бита который отвечает в блоке параметров за разрешение прерываний, прерывания таки могут происходить (а могут и не происходить). Видимо не случайно ппрошивка которая есть для работы с этой лентой работает именно по прерываниям: как обычно: сделали что-то, сказали "блин" да махнули рукой "и так сойдет"... Также заткнуть прерывания и просто ориентироваться бит готовности не получается - видимо он живет своей жизнью независимо от прерываний... Это было учтено, прога переписана и все волшебным образом заработало...
- - - Добавлено - - -
Тестирование команд. Предварительно с помощью имеющегося драйвера была записана лента с длиной блока 512 байт:
- блок слов 123456
- маркер EOF
- два блока слов со значением 0
- маркер EOF
- блок слов со значением 1
- два маркера EOF
Лента перемоталась, в MTS вернулось значение 100 (UNIT READY) + 40 (BOT).Код:.RU MTTST MTTST V01.00 B - REWIND THE TAPE R - READ THE BLOCK H - HELP Q - QUIT => B MTS=000000 BRC=000000 CMA=000000 MTC=000116 MTS=000140 BRC=000000 CMA=000000 MTC=000116
Лента прочиталась, MTS=100 (UNIT READY).Код:=> R MTS=000000 BRC=177000 CMA=001522 MTC=000102 MTS=000100 BRC=000000 CMA=002522 MTC=000102 123456 123456 123456 123456 123456 123456 123456 123456
MTS=40000 (EOF) + 100 (UNIT READY) - прочитался маркер.Код:=> R MTS=000000 BRC=177000 CMA=001522 MTC=000102 MTS=040100 BRC=177001 CMA=001522 MTC=000102 123456 123456 123456 123456 123456 123456 123456 123456
Код:=> R MTS=000000 BRC=177000 CMA=001522 MTC=000102 MTS=000100 BRC=000000 CMA=002522 MTC=000102 000000 000000 000000 000000 000000 000000 000000 000000 => R MTS=000000 BRC=177000 CMA=001522 MTC=000102 MTS=000100 BRC=000000 CMA=002522 MTC=000102 000000 000000 000000 000000 000000 000000 000000 000000 => R MTS=000000 BRC=177000 CMA=001522 MTC=000102 MTS=040100 BRC=177001 CMA=001522 MTC=000102 000000 000000 000000 000000 000000 000000 000000 000000 => R MTS=000000 BRC=177000 CMA=001522 MTC=000102 MTS=000100 BRC=000000 CMA=002522 MTC=000102 000001 000001 000001 000001 000001 000001 000001 000001 => R MTS=000000 BRC=177000 CMA=001522 MTC=000102 MTS=040100 BRC=177001 CMA=001522 MTC=000102 000001 000001 000001 000001 000001 000001 000001 000001 => R MTS=000000 BRC=177000 CMA=001522 MTC=000102 MTS=040100 BRC=177001 CMA=001522 MTC=000102 000001 000001 000001 000001 000001 000001 000001 000001 =>
PDP-11/83, Электроника МС0511 (УК-НЦ), DECserver 90M
Q-Bus: H9278-A, DLV11-J, DZQ11, DHV11, DELQA-M, LPV11, CQD-420/TM, DRV11
PMI: KDJ11-BF, MSV11-JE
VT220, CM7209
Вообщем помучил-помучил контроллер НМЛ.. Глючный он однако..
Причем читает нормально, все 47 лент на нем прочитал, были и сбойные ленты, но это уже вопрос к лентам.
А вот писать нормально не хочет. Точнее с проверкой не хочет писать, пишет, но ошибки..
Проверял на МС1201.02, на МС1201.03, на Эл.60, на другом блоке с корзиной, все так-же..
Проверял на разных лентах 800bpi, 1600bpi, 6250bpi
Проверял запись на первом MT0: и на втором MT1: магнитофонах.
Пробовал отключать второй магнитофон MT1: и писать только с одним MT0:
Если копировать просто файлы с проверкой:
Код:.COP/SYS/VER DM: MT: Files copied: DM:RT11SB.SYS to MT:RT11SB.SYS DM:SWAP.SYS to MT:SWAP.SYS DM:HX.SYS to MT:HX.SYS DM:MT.SYS to MT:MT.SYS DM:DM.SYS to MT:DM.SYS DM:DP.SYS to MT:DP.SYS DM:SL.SYS to MT:SL.SYS DM:LD.SYS to MT:LD.SYS DM:VM.SYS to MT:VM.SYS DM:DIR.SAV to MT:DIR.SAV DM:PIP.SAV to MT:PIP.SAV DM:DUP.SAV to MT:DUP.SAV DM:RESORC.SAV to MT:RESORC.SAV DM:DUMP.SAV to MT:DUMP.SAV DM:FORMAT.SAV to MT:FORMAT.SAV DM:KED.SAV to MT:KED.SAV ?PIP-F-Input error MT:K52.SAV[свернуть]
Еще так-же копирование по файлово с проверкой:
Код:.INI MT: MT0:/Initialize; Are you sure? Y .COP/SYS/VER/IGN DM: MT: Files copied: DM:RT11SB.SYS to MT:RT11SB.SYS DM:SWAP.SYS to MT:SWAP.SYS DM:HX.SYS to MT:HX.SYS DM:MT.SYS to MT:MT.SYS DM:DM.SYS to MT:DM.SYS DM:DP.SYS to MT:DP.SYS DM:SL.SYS to MT:SL.SYS DM:LD.SYS to MT:LD.SYS DM:VM.SYS to MT:VM.SYS DM:DIR.SAV to MT:DIR.SAV DM:PIP.SAV to MT:PIP.SAV DM:DUP.SAV to MT:DUP.SAV DM:RESORC.SAV to MT:RESORC.SAV DM:DUMP.SAV to MT:DUMP.SAV DM:FORMAT.SAV to MT:FORMAT.SAV DM:KED.SAV to MT:KED.SAV ?PIP-F-Input error MT:K52.SAV[свернуть]
И так тоже по файлово с проверкой ошибка:
Код:.COP/SYS/VER DM: MT:/POS:-1 Files copied: DM:RT11SB.SYS to MT:RT11SB.SYS DM:SWAP.SYS to MT:SWAP.SYS DM:HX.SYS to MT:HX.SYS DM:MT.SYS to MT:MT.SYS DM:DM.SYS to MT:DM.SYS DM:DP.SYS to MT:DP.SYS DM:SL.SYS to MT:SL.SYS DM:LD.SYS to MT:LD.SYS DM:VM.SYS to MT:VM.SYS DM:DIR.SAV to MT:DIR.SAV DM:PIP.SAV to MT:PIP.SAV DM:DUP.SAV to MT:DUP.SAV DM:RESORC.SAV to MT:RESORC.SAV DM:DUMP.SAV to MT:DUMP.SAV DM:FORMAT.SAV to MT:FORMAT.SAV DM:KED.SAV to MT:KED.SAV ?PIP-F-Input error MT:K52.SAV[свернуть]
Проверка записи с помощью BACKUP:
Код:.BAC/NOQ/VER/INI DW0: MT0:DW057.BUP/SAV ?BUP-I-Creating output volume 1 Files backed up: DW0:RT11SB.SYS DW0:SWAP.SYS DW0:HX.SYS DW0:MT.SYS DW0:DM.SYS DW0:DP.SYS DW0:SL.SYS DW0:LD.SYS DW0:VM.SYS DW0:DIR.SAV DW0:PIP.SAV DW0:DUP.SAV DW0:RESORC.SAV DW0:DUMP.SAV DW0:FORMAT.SAV DW0:KED.SAV DW0:K52.SAV DW0:HELP.SAV DW0:XL.SYS DW0:VTCOM.REL DW0:VTCOM.SAV DW0:TRANSF.SAV DW0:IOSCAN.SAV DW0:IOSCAN.MAC DW0:RDTAP.SAV DW0:RDTAP.MAC DW0:RDTAP.COM DW0:DAY.SAV DW0:LINK.SAV DW0:SIPP.SAV DW0:MACRO.SAV DW0:VDT.OBJ DW0:ODT.OBJ DW0:STRTSB.COM DW0:BINCOM.SAV DW0:BUP.SAV DW0:DW.SYS DW0:MY.SYS DW0:MX.SYS DW0:README.MX DW0:HELP.MX DW0:TESTMX.SAV DW0:MYP.TXT DW0:MY.MAC DW0:MYFORM.SAV DW0:TESTMY.SAV DW0:DW.HLP DW0:TDW.SAV DW0:TDW.HLP DW0:TESTDW.SAV DW0:DMTEST.SAV DW0:DPTEST.SAV ?BUP-I-Verify pass started ?BUP-E-Input error at block 35 of DW0:BUP.SAV ?BUP-W-Verification error at block 1013 ?BUP-I-Backup/Verify operation is complete[свернуть]
И еще одна проверка с BACKUP:
Код:.BAC/NOQ/VER/INI DW0: MT1:DW057.BUP/SAV ?BUP-I-Creating output volume 1 Files backed up: DW0:RT11SB.SYS DW0:SWAP.SYS DW0:HX.SYS DW0:MT.SYS DW0:DM.SYS DW0:DP.SYS DW0:SL.SYS DW0:LD.SYS DW0:VM.SYS DW0:DIR.SAV DW0:PIP.SAV DW0:DUP.SAV DW0:RESORC.SAV DW0:DUMP.SAV DW0:FORMAT.SAV DW0:KED.SAV DW0:K52.SAV DW0:HELP.SAV DW0:XL.SYS DW0:VTCOM.REL DW0:VTCOM.SAV DW0:TRANSF.SAV DW0:IOSCAN.SAV DW0:IOSCAN.MAC DW0:RDTAP.SAV DW0:RDTAP.MAC DW0:RDTAP.COM DW0:DAY.SAV DW0:LINK.SAV DW0:SIPP.SAV DW0:MACRO.SAV DW0:VDT.OBJ DW0:ODT.OBJ DW0:STRTSB.COM DW0:BINCOM.SAV ?BUP-E-Input error at block 64 of DW0:BUP.SAV DW0:BUP.SAV DW0:DW.SYS DW0:MY.SYS DW0:MX.SYS DW0:README.MX DW0:HELP.MX DW0:TESTMX.SAV DW0:MYP.TXT DW0:MY.MAC DW0:MYFORM.SAV DW0:TESTMY.SAV DW0:DW.HLP DW0:TDW.SAV DW0:TDW.HLP DW0:TESTDW.SAV DW0:DMTEST.SAV DW0:DPTEST.SAV ?BUP-I-Verify pass started ?BUP-E-Input error at block 22 of DW0:FORMAT.SAV ?BUP-W-Verification error at block 347 ?BUP-E-Input error at block 4 of DW0:K52.SAV ?BUP-W-Verification error at block 442 ?BUP-E-Input error at block 64 of DW0:BUP.SAV ?BUP-W-Verification error at block 1042 ?BUP-I-Backup/Verify operation is complete[свернуть]
Никак не хочет писать на ленту с проверкой, можно конечно без проверки,
но думаю проблема именно в записи на ленту с ошибками..
Что в таком случае можно посмотреть в контроллере?
Andrey_Ak WEB: www.tis.kz ICQ: 345-005-908 Mail: admin@tis.kz Fido: 2:5083/1 Radio: UN7GKQ
С любовью к вам, Yandex.Direct
Размещение рекламы на форуме способствует его дальнейшему развитию
Так может вопрос в драйвере (к которому нету исходника?) а не железе? Что если написать тест для него в стиле той проги которая может читать писать и перематывать и запустить ДО ПЕРВОГО СБОЯ?
(offtop: например у меня в контроллере DU: лента тестировалась встроенным firmware на запись и чтение, НО в RT11 запустить так и не удалось...какие-то странные глюки DU драйвера или реализации эмуляции DU интерфейса на SCSI... ну не работает и все)
Последний раз редактировалось bigral; 03.02.2016 в 02:09.
Не работает - не инфа. Но...
Если это не опечатка, я бы сказал, что это правильная работа драйвера. Ибо с какой стати драйвер работающий только с дисками вдруг возьмет и заработает с лентой?
- - - Добавлено - - -
Ну и на случай если выше всеже опечатка вот такой пример - вдруг знакомые симптомы:Выше показана безошибочная работа драйвера.Код:.INI MU: MU0:/Initialize; Are you sure? Y .COP SY:DIR.SAV MU: Files copied: ?PIP-F-Directory I/O error MU:DIR.SAV .
PDP-11/83, Электроника МС0511 (УК-НЦ), DECserver 90M
Q-Bus: H9278-A, DLV11-J, DZQ11, DHV11, DELQA-M, LPV11, CQD-420/TM, DRV11
PMI: KDJ11-BF, MSV11-JE
VT220, CM7209
Andrey_Ak WEB: www.tis.kz ICQ: 345-005-908 Mail: admin@tis.kz Fido: 2:5083/1 Radio: UN7GKQ
Хорошие фото данного контроллера НМЛ:
http://tis.kz/large/MT-170002/IMG_1236.JPG
http://tis.kz/large/MT-170002/IMG_1234.JPG
Andrey_Ak WEB: www.tis.kz ICQ: 345-005-908 Mail: admin@tis.kz Fido: 2:5083/1 Radio: UN7GKQ
Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)