Важная информация

User Tag List

Страница 2 из 4 ПерваяПервая 1234 ПоследняяПоследняя
Показано с 11 по 20 из 32

Тема: Контроллер НМЛ IO 170002 & Электронные диски DM IO 175000-175006 и DP IO 176470-17647

  1. #11

    Регистрация
    29.01.2009
    Адрес
    Казахстан, Алматы
    Сообщений
    1,671
    Спасибо Благодарностей отдано 
    9
    Спасибо Благодарностей получено 
    15
    Поблагодарили
    7 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от form Посмотреть сообщение
    Выставляй в сеть вечером, помучаем
    Хорошо, спс.. вечером выставлю.. ))

    - - - Добавлено - - -

    Цитата Сообщение от form Посмотреть сообщение
    В блоке на диске у нас 400 слов (или 256 десятичных)
    А как же это:

    "в 175000 пишется номер блока
    в 175002 пишется номер слова в блоке (0-377)
    в/из 175004 последовательно пишутся/читаются слова"
    Andrey_Ak WEB: www.tis.kz ICQ: 345-005-908 Mail: admin@tis.kz Fido: 2:5083/1 Radio: UN7GKQ

  2. #12

    Регистрация
    27.05.2009
    Адрес
    СССР, Новосибирск
    Сообщений
    5,850
    Спасибо Благодарностей отдано 
    9
    Спасибо Благодарностей получено 
    289
    Поблагодарили
    233 сообщений
    Mentioned
    30 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Andrey_Ak Посмотреть сообщение
    номер слова в блоке (0-377)
    А не количество...
    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

  3. #13

    Регистрация
    29.01.2009
    Адрес
    Казахстан, Алматы
    Сообщений
    1,671
    Спасибо Благодарностей отдано 
    9
    Спасибо Благодарностей получено 
    15
    Поблагодарили
    7 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Сегодня проверил код загрузчика с Эл.диска 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

  4. #14

    Регистрация
    27.05.2009
    Адрес
    СССР, Новосибирск
    Сообщений
    5,850
    Спасибо Благодарностей отдано 
    9
    Спасибо Благодарностей получено 
    289
    Поблагодарили
    233 сообщений
    Mentioned
    30 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Andrey_Ak Посмотреть сообщение
    набрал код загрузчика,
    выполнил его, и система загрузилась с DM
    Это не тот загрузчик который надо набирать. Это загрузчик который уже есть на самом диске когда на него записан системный образ. А код загрузчика уложится примерно в 10-16 слов.
    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

  5. #15

    Регистрация
    27.05.2009
    Адрес
    СССР, Новосибирск
    Сообщений
    5,850
    Спасибо Благодарностей отдано 
    9
    Спасибо Благодарностей получено 
    289
    Поблагодарили
    233 сообщений
    Mentioned
    30 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию Немного разборок с лентой...

    Нашлось немного времени помучить эту хитрую ленту. Результаты довольно интересные...
    Получается, что взяли стандартный TM11 контроллер и между ним и шиной посадили некую прослойку вроде УКНЦшного ПП. Все, что в стандартном контроллере заносится в регистры устройства тут заносится в блок памяти, а адрес этого блока памяти пишется в единственный регистр новоиспеченного контроллера, отработав, контроллер думпит обратно регистры в этот блок памяти. Зачем так сделано - загадка - на мой взгляд это сложнее. Ну да ладно, может под "суперразработку" денег давали кому...

    В общем и целом все выглядит так: блок в памяти состоит из 4 слов (смещения даются относительно адреса который нужно передать в контроллер): -2 (MTS, статус, возвращается контроллером), 0 (MTBRC, счетчик байтов - заносится в негативе, по окончанию равен количеству неотработанных байт [также в негативе]), 2 (MTCMA, адрес буфера, по окончании I/O передвигается на следующий адрес за считанными/записанными данными), 4 (MTC, команда и управляющие биты). Все биты совпадают со стандартным TM11.

    Была написана программка которая умеет только перематывать ленту и читать блок размером 512. байт для анализа что происходит. Первое, что было выявлено - это то, что независимо от бита который отвечает в блоке параметров за разрешение прерываний, прерывания таки могут происходить (а могут и не происходить). Видимо не случайно ппрошивка которая есть для работы с этой лентой работает именно по прерываниям: как обычно: сделали что-то, сказали "блин" да махнули рукой "и так сойдет"... Также заткнуть прерывания и просто ориентироваться бит готовности не получается - видимо он живет своей жизнью независимо от прерываний... Это было учтено, прога переписана и все волшебным образом заработало...

    - - - Добавлено - - -

    Тестирование команд. Предварительно с помощью имеющегося драйвера была записана лента с длиной блока 512 байт:
    • блок слов 123456
    • маркер EOF
    • два блока слов со значением 0
    • маркер EOF
    • блок слов со значением 1
    • два маркера EOF

    Код:
    .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) + 40 (BOT).

    Код:
    => 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=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
    MTS=40000 (EOF) + 100 (UNIT READY) - прочитался маркер.

    Код:
    => 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

  6. #16

    Регистрация
    29.01.2009
    Адрес
    Казахстан, Алматы
    Сообщений
    1,671
    Спасибо Благодарностей отдано 
    9
    Спасибо Благодарностей получено 
    15
    Поблагодарили
    7 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Вообщем помучил-помучил контроллер НМЛ.. Глючный он однако..

    Причем читает нормально, все 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

  7. #16
    С любовью к вам, Yandex.Direct
    Размещение рекламы на форуме способствует его дальнейшему развитию

  8. #17

    Регистрация
    12.07.2006
    Адрес
    г. Киев, Украина
    Сообщений
    2,147
    Спасибо Благодарностей отдано 
    25
    Спасибо Благодарностей получено 
    95
    Поблагодарили
    82 сообщений
    Mentioned
    2 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Andrey_Ak Посмотреть сообщение
    Вообщем помучил-помучил контроллер НМЛ.. Глючный он однако..
    Так может вопрос в драйвере (к которому нету исходника?) а не железе? Что если написать тест для него в стиле той проги которая может читать писать и перематывать и запустить ДО ПЕРВОГО СБОЯ?

    (offtop: например у меня в контроллере DU: лента тестировалась встроенным firmware на запись и чтение, НО в RT11 запустить так и не удалось... какие-то странные глюки DU драйвера или реализации эмуляции DU интерфейса на SCSI... ну не работает и все)
    Последний раз редактировалось bigral; 03.02.2016 в 02:09.

  9. #18

    Регистрация
    27.05.2009
    Адрес
    СССР, Новосибирск
    Сообщений
    5,850
    Спасибо Благодарностей отдано 
    9
    Спасибо Благодарностей получено 
    289
    Поблагодарили
    233 сообщений
    Mentioned
    30 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от bigral Посмотреть сообщение
    не работает и все
    Не работает - не инфа. Но...
    Цитата Сообщение от bigral Посмотреть сообщение
    глюки DU драйвера
    Если это не опечатка, я бы сказал, что это правильная работа драйвера. Ибо с какой стати драйвер работающий только с дисками вдруг возьмет и заработает с лентой?

    - - - Добавлено - - -

    Ну и на случай если выше всеже опечатка вот такой пример - вдруг знакомые симптомы:
    Код:
    .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

  10. #19

    Регистрация
    29.01.2009
    Адрес
    Казахстан, Алматы
    Сообщений
    1,671
    Спасибо Благодарностей отдано 
    9
    Спасибо Благодарностей получено 
    15
    Поблагодарили
    7 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от bigral Посмотреть сообщение
    Так может вопрос в драйвере (к которому нету исходника?) а не железе? Что если написать тест для него в стиле той проги которая может читать писать и перематывать и запустить ДО ПЕРВОГО СБОЯ?
    Ну драйвер только этот и все.. Исходников нет.. Но ведь этот драйвер же когда-то как-то работал?
    Нужно писать код, и запускать его из под @ и так тестировать контроллер..
    Andrey_Ak WEB: www.tis.kz ICQ: 345-005-908 Mail: admin@tis.kz Fido: 2:5083/1 Radio: UN7GKQ

  11. #20

    Регистрация
    29.01.2009
    Адрес
    Казахстан, Алматы
    Сообщений
    1,671
    Спасибо Благодарностей отдано 
    9
    Спасибо Благодарностей получено 
    15
    Поблагодарили
    7 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Хорошие фото данного контроллера НМЛ:

    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

Страница 2 из 4 ПерваяПервая 1234 ПоследняяПоследняя

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Похожие темы

  1. Помогите найти книгу про электронные головоломки
    от skyther в разделе Техническая литература
    Ответов: 8
    Последнее: 13.01.2014, 20:50
  2. Ответов: 20
    Последнее: 27.06.2013, 22:01
  3. Электронные журналы в формате Word
    от Andrey F в разделе Пресса
    Ответов: 1
    Последнее: 30.04.2013, 14:00

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •