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

User Tag List

Страница 223 из 226 ПерваяПервая ... 219220221222223224225226 ПоследняяПоследняя
Показано с 2,221 по 2,230 из 2253

Тема: Особенности процессоров и устройств архитектуры PDP-11. Тесты. Диагностика.

  1. #2221
    Guru
    Регистрация
    11.09.2009
    Адрес
    Москва
    Сообщений
    4,777
    Спасибо Благодарностей отдано 
    2
    Спасибо Благодарностей получено 
    123
    Поблагодарили
    62 сообщений
    Mentioned
    16 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Hunta Посмотреть сообщение
    Кстати, если DUP действительно берёт адрес из DRDEF, а там прописан адрес именно первого регистра - то это ошибка в DUP
    И при этом - передача любого другого значения CSR в R1 - приводит к зависанию при загрузке всех операционных систем DEC, которые используют при загрузке с RK адрес CSR из R1.

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

    Цитата Сообщение от form Посмотреть сообщение
    Всмысле выше показал как происходит загрузка из XXDP: он помещает в R1 значение CSR (то есть 177404).
    Ошибочное поведение - так невозможно загрузить ни одну операционку DEC, использующую значение из R1.
    Последний раз редактировалось Patron; 04.10.2017 в 19:20.

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

  3. #2222
    Guru
    Регистрация
    30.11.2015
    Адрес
    г. Самара
    Сообщений
    7,003
    Спасибо Благодарностей отдано 
    287
    Спасибо Благодарностей получено 
    631
    Поблагодарили
    531 сообщений
    Mentioned
    13 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    То есть DSM-11

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

    Код:
    dkboot:	; DK: boot, continued
    	ror	r2		;(finish getting unit in <15:13>)
    	ror	r2
    	ror	r2
    	add	#dkda,r1	;point at disk addr
    	mov	r2,(r1)		;set unit, C/H/S=0/0/0
    	clr	-(r1)		;bus addr = 0
    .assume dkba eq dkda-2
    	mov	#-<1000/2>,-(r1) ;word count for one block
    .assume dkwc eq dkba-2
    	mov	#dkrdd!dkgo,-(r1) ;start command
    .assume dkcs eq dkwc-2
    10$:	tstb	(r1)		;wait for completion
    	bpl	10$		;(ignore errors, will be obvious)
    	clr	pc		;drop into boot block
    Код:
    	add	#dlmp,r1	;point at multi-purpose reg
    	mov	#-<1000/2>,(r1)	;word count = 1 block
    	clr	-(r1)		;disk addr = 0/0/0
    .assume dlda eq dlmp-2
    	clr	-(r1)		;bus addr = 0
    .assume dlba eq dlda-2
    	add	#dlrdd-dlsek,r2	;change cmd to "read"
    	mov	r2,-(r1)	;start cmd
    .assume dlcs eq dlba-2
    50$:	bit	#dlerr!dlrdy,(r1) ;wait for error or success
    	beq	50$
    	bmi	60$		;error
    .assume dlerr eq 100000
    	clr	pc		;happy, drop into boot block
    60$:	; error of some kind, just give up
    	halt
    Код:
    go1:	mov	#dm$csr,r1	;R1 points at base CSR
    	mov	pc,r4		;must point 20 bytes past signature
    .assume . eq 20
    	mov	#dmrdd!dmgo,r2	;"read" command, as RK06 first time through
    10$:	; read block 0, R2 contains "read" command including CDT bit
    	mov	#dmerr,(r1)	;controller clear
    ;;; need to select drive first?
    	clr	dmdc(r1)	;desired cyl = 0
    	add	#dmcs2,r1	;point at DMCS2
    	mov	r0,(r1)		;set unit #
    	clr	-(r1)		;disk addr=0/0 (track/sector)
    .assume dmda eq dmcs2-2
    	clr	-(r1)		;bus addr = 0
    .assume dmba eq dmda-2
    	mov	#-<1000/2>,-(r1) ;word count = 1 block
    .assume dmwc eq dmba-2
    	mov	r2,-(r1)	;"read" command
    20$:	bit	#dmerr!dmrdy,(r1) ;wait for error or success
    	bpl	30$		;success
    .assume dmerr eq 100000
    ;;; we have lots of space, maybe we can fix soft ECC errors?
    	; assume drive type mismatch, try it both ways (RK06 vs. RK07)
    	add	#dmcdt,r2	;assume tried as RK06, now do RK07
    	bit	#dmcdt,r2	;or did we do that already?
    	bne	10$		;no, do it now
    	br	.		;error, hang
    30$:	clr	pc		;happy, drop into boot block
    Код:
    go1:	mov	#dx$csr,r1	;R1 points at base CSR
    	mov	pc,r4		;must point 20 bytes past signature
    .assume . eq 20
    restrt:	; retry
    	mov	#dxrds!dxgo,r2	;"read sector" command
    	tst	r0		;unit 1?
    	beq	10$
    	 bis	#dxus,r2	;yes, set unit select bit
    10$:	mov	#1,r3		;starting sector #
    	clr	r5		;init memory address
    20$:	; read next sector
    	; R2=read cmd, R3=sector number, R5=address
    	mov	r2,(r1)		;start cmd
    30$:	bit	#dxerr!dxtr,(r1) ;wait for error or transfer request
    	beq	30$
    	bmi	restrt		;error, start over
    .assume dxerr eq 100000
    	mov	r3,dxdb(r1)	;write sector number
    40$:	bit	#dxerr!dxtr,(r1) ;wait for error or transfer request
    	beq	40$
    	bmi	restrt		;error, start over
    .assume dxerr eq 100000
    	mov	#1,dxdb(r1)	;write track # (always 1 for block 0)
    50$:	bit	#dxerr!dxdone,(r1) ;wait for error or completion
    	beq	50$
    	bmi	restrt		;error
    .assume dxerr eq 100000
    	; success, empty silo
    	add	#dxemp-dxrds,r2	;change command to "empty silo"
    	mov	r2,(r1)		;start cmd
    60$:	bit	#dxerr!dxtr,(r1) ;wait for error or transfer request
    	beq	60$
    	bmi	restrt		;error, start over
    .assume dxerr eq 100000
    	add	#dxrds-dxemp,r2	;restore "read sector" command
    70$:	bit	#dxerr!dxtr,(r1) ;wait for error or transfer request
    	beq	70$
    	bmi	restrt		;error, start over
    .assume dxerr eq 100000
    	movb	dxdb(r1),(r5)+	;read next data byte
    	bit	#177,r5		;reached multiple of 128.?
    	bne	70$		;loop if not
    	; bump to next sector
    	add	#2,r3		;skip 2 sectors (2:1 soft interleave)
    	cmp	r5,#1000	;done whole block?
    	blo	20$		;loop if not
    	clr	pc		;happy, drop into boot block
    Код:
    go1:	mov	#dy$csr,r1	;R1 points at base CSR
    	mov	pc,r4		;must point 20 bytes past signature
    .assume . eq 20
    restrt:	; retry
    	mov	#dyrds!dygo,r2	;init command, assume SD (about to flip it)
    	tst	r0		;unit 1?
    	beq	10$
    	 bis	#dyus,r2	;yes, set unit select bit
    10$:	; try other density
    	add	#dydd,r2	;flip DD flag
    	bic	#dydd*2,r2	;(clear carry)
    	mov	#1,r3		;starting sector #
    	clr	r5		;init memory address
    20$:	; read next sector
    	; R2="read sector" cmd including DD flag, R3=sector number, R5=addr
    	mov	r2,(r1)		;start cmd
    30$:	tstb	(r1)		;wait for transfer request
    	bpl	30$		;(ignore errors)
    	mov	r3,dydb(r1)	;write sector number
    40$:	tstb	(r1)		;wait for transfer request
    	bpl	40$		;(ignore errors)
    	mov	#1,dydb(r1)	;write track # (always 1 for block 0)
    50$:	bit	#dyerr!dydone,(r1) ;wait for error or completion
    	beq	50$
    	bmi	10$		;error, try other density
    .assume dyerr eq 100000
    	; success, empty silo
    	add	#dyemp-dyrds,r2	;change command to "empty silo"
    	mov	r2,(r1)		;start cmd
    60$:	tstb	(r1)		;wait for transfer request
    	bpl	60$		;(ignore errors)
    	add	#dyrds-dyemp,r2	;(restore "read sector" command)
    	mov	#128./2,sp	;SD word count (not using stack, so...)
    	cmp	r2,sp		;double density?
    .assume dydd ge 128./2
    .assume dyus!dyrds!dygo lt 128./2
    	blo	70$		;no
    	 asl	sp		;yes, DD word count
    70$:	mov	sp,dydb(r1)	;set word count
    80$:	tstb	(r1)		;wait for transfer request
    	bpl	80$		;(ignore errors)
    	mov	r5,dydb(r1)	;write core addr
    90$:	bit	#dydone,(r1)	;wait for completion
    	beq	90$		;(ignore errors)
    	add	sp,r5		;bump addr by sector size
    	add	sp,r5		;(twice for byte address)
    	; bump to next sector
    	add	#2,r3		;skip 2 sectors (2:1 soft interleave)
    	cmp	r5,#1000	;done whole block?
    	blo	20$		;loop if not
    	clr	pc		;happy, drop into boot block
    Везде передаётся CSR. Берем документацию на RK11 - адрес CSR по умолчанию 177404
    На этом для себя обсуждение считаю законченным.

  4. #2223
    Guru Аватар для form
    Регистрация
    27.05.2009
    Адрес
    СССР, Новосибирск
    Сообщений
    5,824
    Спасибо Благодарностей отдано 
    8
    Спасибо Благодарностей получено 
    283
    Поблагодарили
    228 сообщений
    Mentioned
    29 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Hunta Посмотреть сообщение
    CSR по умолчанию 177404
    С чем, к слову, согласен и DSM в процессе инсталяции:
    Код:
    1.3   Do you wish to Auto-configure the current system [Y OR N] ?   <Y>   
    
    Configuring Host System . . . 
    
    
    Processor Type: PDP-11/83
    
    Memory Size: 256 KB
    
    Processor/Memory Options:
    
         Floating Point Unit
         Extended Instuction Set
         22 Bit Addressing
         Cache
    
    Name     Vector      CSR     Unit       Type      Description
    
    DKA       220       177404              RK11      Disk Controller
    ...
    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. #2224
    Guru Аватар для form
    Регистрация
    27.05.2009
    Адрес
    СССР, Новосибирск
    Сообщений
    5,824
    Спасибо Благодарностей отдано 
    8
    Спасибо Благодарностей получено 
    283
    Поблагодарили
    228 сообщений
    Mentioned
    29 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Информация к размышлению: ни один загрузчик DSM кроме RK05 не использует R1.
    При загрузке с того же RL02 в R1 можно положить что угодно.
    Аппаратная загрузка с MT пишет 172522 (как и положено) в R1, а не 172520 как можно было бы подумать.

    Иными словами, загрузка с RK05 (для которого при генерации любой DEC системы даже не
    спрашивается адрес регистра - он всегда жестко зашит) единственная вдруг с какого-то перепуга
    хочет использовать R1, причем довольно странным способом: готовится набор регистров к которым
    будет обращение методом BIS, а не ADD. В R1 можно записать 0, 400, 1400, 2400, 5400, ... загрузится.
    Добавим гипотетический контроллер RK05 по адресу 177410 (CSR=177414) и... правильно: нифига не загрузится хоть ты 177410 хоть 177414 передавай в R1. Или, скажем, 177200 (чтобы не было соблазна сказать, что пересекается со стандартным, не кратен 20 или еще что-нибудь)... То есть реально этому загрузчику (единственному у DSM что-то делающему с R1) CSR передать через R1 невозможно (если быть точнее, то возможно три варианта кроме 177400).

    То есть загрузчики для контроллеров, которых официально может быть несколько, игнорируют R1. Единственный загрузчик для контроллера который с точки зрения DEC всегда один и на одном месте (RSX правда позволяет кучу наплодить возможно - спрашивает сколько контроллеров, но отвечать на вопрос не пробовал) пытается манипулировать с R1 и выбрать один из 4 вариантов.
    Последний раз редактировалось form; 05.10.2017 в 00:01.
    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. #2225
    Guru
    Регистрация
    30.11.2015
    Адрес
    г. Самара
    Сообщений
    7,003
    Спасибо Благодарностей отдано 
    287
    Спасибо Благодарностей получено 
    631
    Поблагодарили
    531 сообщений
    Mentioned
    13 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Не удивлюсь, если было какое то нестандартное чудо, в котором было четыре контроллера RK. Учитывая, что DSM - это к тому же своеобразная база данных, а где базы - там большие объёмы и требуется скорость - может DEC под что такое своеобразное и сделало такой не стандартный загрузчик. Но это только предположение.
    Кстати, ещё на что обратил внимание (хотя в памяти это и так крутилось) - начальный загрузчик грузиться с адреса 0

  7. #2226
    Guru Аватар для form
    Регистрация
    27.05.2009
    Адрес
    СССР, Новосибирск
    Сообщений
    5,824
    Спасибо Благодарностей отдано 
    8
    Спасибо Благодарностей получено 
    283
    Поблагодарили
    228 сообщений
    Mentioned
    29 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Hunta Посмотреть сообщение
    нестандартное чудо, в котором было четыре контроллера RK
    В этом случае ничто не мешает как с остальными контроллерами использовать прописанный в загрузчике. Или если уж передавать, то использовать переданное (а не часть битов).
    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

  8. #2227
    Guru
    Регистрация
    30.11.2015
    Адрес
    г. Самара
    Сообщений
    7,003
    Спасибо Благодарностей отдано 
    287
    Спасибо Благодарностей получено 
    631
    Поблагодарили
    531 сообщений
    Mentioned
    13 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Ну может там какое то извращение было задумано В общем, сейчас, когда с авторами не связаться... уже и не скажешь...

  9. #2228
    Guru
    Регистрация
    11.09.2009
    Адрес
    Москва
    Сообщений
    4,777
    Спасибо Благодарностей отдано 
    2
    Спасибо Благодарностей получено 
    123
    Поблагодарили
    62 сообщений
    Mentioned
    16 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    ..

    Как выяснилось - загрузчик DSM-11 берёт номер загружаемого привода RK из R0, а не из RKDA, поэтому минимальный загрузчик, способный загрузить с RK0 любую ОС DEC, выглядит так:

    Код:
    	MOV	(PC), R2	; READ COMMAND
    	RESET			; SET UNIT 0 ; BLOCK 0 ; ADDR 0
    	MOV	#177400, R1	; WORD COUNT
    	MOV	#177406, R3	; RKWC
    	MOV	R1, (R3)	; SET WORD COUNT
    	MOV	R2,-(R3)	; READ BOOT
    	TSTB	(R3)		; WAIT FOR READY
    	BPL	.-2.
    	CLR	R0		; BOOT UNIT
    	CLR	PC		; BOOT

  10. #2229
    Guru
    Регистрация
    30.11.2015
    Адрес
    г. Самара
    Сообщений
    7,003
    Спасибо Благодарностей отдано 
    287
    Спасибо Благодарностей получено 
    631
    Поблагодарили
    531 сообщений
    Mentioned
    13 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Patron Посмотреть сообщение
    берёт номер загружаемого привода ... из R0
    Что вроде бы тоже как стандарт DEС, ЕМНИП

  11. #2230
    Guru Аватар для form
    Регистрация
    27.05.2009
    Адрес
    СССР, Новосибирск
    Сообщений
    5,824
    Спасибо Благодарностей отдано 
    8
    Спасибо Благодарностей получено 
    283
    Поблагодарили
    228 сообщений
    Mentioned
    29 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Hunta Посмотреть сообщение
    Что вроде бы тоже как стандарт DEС
    Да, но сам DEC как правило не использует.

    Цитата Сообщение от Patron Посмотреть сообщение
    минимальный загрузчик
    Ровно на одно слово короче с полным сохранением результата
    Код:
    	MOV	@PC,R2
    	RESET
    	MOV	#177410,R3
    	COMB	-(R3)
    	MOVB	-(R3),R0
    	MOV	@R3,R1
    	MOV	R2,-(R3)
    	TSTB	@R3
    	BPL	.-2
    	CLR	PC
    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

Страница 223 из 226 ПерваяПервая ... 219220221222223224225226 ПоследняяПоследняя

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

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

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

Похожие темы

  1. Тесты ВМ1
    от nzeemin в разделе БК-0010/0011
    Ответов: 90
    Последнее: 05.10.2018, 12:24
  2. Диагностика
    от dk_spb в разделе Корвет
    Ответов: 31
    Последнее: 21.07.2017, 23:52
  3. Проблема двух процессоров.
    от Mikka_A в разделе Несортированное железо
    Ответов: 21
    Последнее: 28.11.2006, 17:04

Ваши права

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