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

User Tag List

Страница 4 из 5 ПерваяПервая 12345 ПоследняяПоследняя
Показано с 31 по 40 из 43

Тема: Помогите найти основной тест комманд электроники 60

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

    По умолчанию

    Цитата Сообщение от Impartial Посмотреть сообщение
    А каким образом будет происходить загрузка с этого диска? Ведь в ПЗУ, насколько я понял, нет для него загрузчика.
    Загрузка с любого дискового устройства RT-11 заключается в чтении блока 0 (т.е. первых 512 байтов образа диска) в эмулируемую память, начиная с адреса 0, и передаче управления на адрес 0.

    Но сначала нужно записать в PSW значение 0340, а в регистр R0 - номер загружаемого привода ( в диапазоне 0 .. 7 ).

    Т.е. если загружаемый образ будет эмулироваться подключенным к приводу HD0 - регистр R0 процессора нужно обнулить.

    А образа нет поменьше размером, а то этот не влезет в микроконтроллер.
    В приложении - образ размером 380К.

    Открыв образ при помощи любой утилиты просмотра образов дисков RT-11 ( например, использовав плагин для Total Commander ), можно обнаружить, что там есть довольно много файлов, которые не особо важны для тестирования, например - экранный редактор текстов, ассемблер, интерпретатор BASIC и даже альтернативный монитор операционной системы.

    Если поставить задачу создания минимального по размеру загрузочного образа HD, который не будет пригоден ни для чего, кроме запуска тестов TMOS - то образ загрузочного диска можно сделать гораздо меньше ( ~ 130К ) - см. второй вариант в приложении.
    Вложения Вложения

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

  3. #32
    Junior
    Регистрация
    10.11.2011
    Адрес
    Луганск, Украина
    Сообщений
    20
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    0
    Поблагодарили
    0 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Patron Посмотреть сообщение
    Если после получения команды эмулятор установит старший бит HDCSR - это будет признак ошибки.

    "memory buffer address", записываемый драйвером HD в регистр HDDATA перед выдачей в HDCSR команды 3 ( Задать адрес в памяти ) - это адрес эмулируемой памяти ДВК, начиная с которого эмулятор должен читать или писать данные, при получении в HDCSR команд 5 (Читать образ диска в память) и 6 (Писать память в образ диска).

    Смещение от начала образа диска для команд чтения и записи (в блоках по 512 байт) задаётся содержимым HDDATA при получении эмулятором в HDCSR команды 2 ( Задать номер блока ).

    При получении в HDCSR команды 7 ( Сообщить размер образа ) эмулятор должен записать в HDDATA размер файла образа (в блоках по 512 байт), подключенного к приводу, заданному до того командой 1 ( Задать номер привода ), или 0, если к этому приводу образ диска в эмуляторе не подключен. При выполнении команды 7 признак ошибки не устанавливается.
    В регистре HDCSR = 0177720 используются только биты 0,1,2,15 или есть еще какие то биты управления? Что является признаком начала выполнения операции? Просто запись в этот регистр?

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

    По умолчанию

    Цитата Сообщение от Impartial Посмотреть сообщение
    В регистре HDCSR = 0177720 используются только биты 0,1,2,15 или есть еще какие то биты управления? Что является признаком начала выполнения операции? Просто запись в этот регистр?
    Все ответы содержит исходник драйвера HD.MAC

    Код:
    ;
    ; HD command codes (for HD command reg: 177720 )
    ;
    
    SetUni		= 1	; Set HD unit number
    SetBlk		= 2	; Set HD block number
    SetBuf		= 3	; Set memory buffer address
    SetWCn		= 4	; Set operation word count
    CmdRea		= 5	; Execute READ  on HD
    CmdWri		= 6	; Execute WRITE on HD
    GetSiz		= 7	; Get HD size in blocks.
    
    ;
    ; I/O request entry point.
    ;
    
    	.DrBeg	HD
    
    	Mov	HDCQE,  R4		; R4 -> Queue element
    	Mov	(R4)+,  R2		; R2 = Block number
    	MovB	(R4)+,  R1		; R1 = SpFun code
    	BNe	SPFUN			; Is it SpFun call?
    	MovB	(R4)+,  R1		; R1 = Unit number
    	BiC	#^c7,   R1		; Force it to be 0..7
    	Mov	R1,	@#HD$CSR+2	; 
    	Mov	#SetUni,	@#HD$CSR		; Select unit for operations.
    
    	Tst	@#HD$CSR			; Valid unit number?
    	BMi	HDERR			;   No - Error!
    
    	Mov	R2,	@#HD$CSR+2	; 
    	Mov	#SetBlk,	@#HD$CSR		; Set block number.
    	Tst	@#HD$CSR			; Valid?
    	BPl	3$			;   Yes - OK
    	Mov	HDCQE,	R4		;
    	BiS	#EOF$,	@-(R4)		;   Else - return EOF
    	Br	DONE			;
    3$:
    	Mov	(R4)+,	@#HD$CSR+2	;
    	Mov	#SetBuf,	@#HD$CSR		; Set buf addr
    
    	Mov	(R4), R1			; R1 = word count
    	BEq	DONE			; R1 = 0 - Nothing to do
    	BPl	HDREAD			;    > 0 - Read
    EMWRIT:					;    < 0 - Write
    	Neg	R1			; Get true word count
    	Mov	R1,	@#HD$CSR+2	;     ...
    	Mov	#SetWCn,	@#HD$CSR		;     and set it.
    	Tst	@#HD$CSR			; Valid?
    	BPl	4$			;   Yes - OK
    	Mov	HDCQE,	R4		;
    	BiS	#EOF$,	@-(R4)		;   Else - set EOF bit
    4$:
    
    	Mov	#CmdWri, @#HD$CSR	; Make Write to HD
    	Br	CHECK			; OK?
    HDREAD:
    	Mov	R1,	@#HD$CSR+2	;
    	Mov	#SetWCn,	@#HD$CSR		; Set word count
    	Tst	@#HD$CSR			; Valid?
    	BPl	5$			;   Yes - OK
    	Mov	HDCQE,	R4		;
    	BiS	#EOF$,	@-(R4)		;   Else - set EOF bit
    5$:
    	Mov	#CmdRea,	@#HD$CSR		; Make Read from HD
    CHECK:
    	Tst	@#HD$CSR			; Error?
    	BPl	DONE			;   No - OK
    					;   Else  - abort
    EMINT:
    HDINT:
    HDERR:
    	Mov	HDCQE,	R4		;
    	BiS	#HDERR$,	@-(R4)		; Set ERROR bit in CSW.
    DONE:
    	.DRFIN	HD
    Т.е. в регистре HDCSR = 0177720 используются только биты 0,1,2,15, а признаком начала выполнения операции является просто запись в регистр.

    Из текста драйвера также можно извлечь информацию об одном довольно тонком моменте. Если операционная система запрашивает установку позиции чтения/записи в пределах образа диска, но запрашивает чтение/запись большего числа слов, чем остаётся до конца образа - то драйвер, получив от эмулятора признак ошибки в ответ на команду установки счётчика слов - всё же выполняет чтение/запись, чтобы прочитать/записать те слова, которые расположены в образе между установленной позицией чтения/записи и концом образа.

    Т.е. эмулятор, получив слишком большой счётчик слов будущей операции - должен не только сообщить об ошибке, но и установить свой внутренний счётчик слов чтения/записи на максимально допустимое значение.

  5. #34
    Junior
    Регистрация
    10.11.2011
    Адрес
    Луганск, Украина
    Сообщений
    20
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    0
    Поблагодарили
    0 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Patron, Пришел вот к этому (сообщения с гипертерминала)


    Код:
    HD Boot-I-Cold boot..
    
    HD (177720) disk driver v1.0b  2011
    И зависание на этом участке

    Код:
    154000  001337  BNE 153700
    154002  016705  MOV 153426,R5
    154006  001217  BNE 153446
    154010  012704  MOV #200,R4
    154014  001007  BNE 154034
    154034  100434  BMI 154126
    154036  005067  CLR 154012
    154042  106427  MTPS #0
    154046  016705  MOV 137364,R5
    154052  005765  TST 36(R5)
    154056  001403  BEQ 154066
    154060  032715  BIT #100200,(R5)
    154064  003403  BLE 154074
    154074  000240  NOP
    154076  000240  NOP
    154100  112767  MOVB #200,154012
    154106  000771  BR 154072
    154072  000735  BR 153766
    153766  106427  MTPS #340
    153772  000240  NOP
    153774  016704  MOV 137720,R4
    154000  001337  BNE 153700
    Загружен минимальный образ из рекомендованных Вами выше.
    Не подскажете, чего ждет программа?
    Может прерывания по таймеру? (пока не реализовано)
    Последний раз редактировалось Impartial; 19.11.2011 в 03:13.

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

    По умолчанию

    Цитата Сообщение от Impartial Посмотреть сообщение
    Не подскажете, чего ждет программа?
    Может прерывания по таймеру?
    В приложении - лог загрузки того же образа с устройства HD0: при выключенном таймере до появления на экране версии монитора:

    Код:
    HD Boot-I-Cold boot..
     
    HD (177720) disk driver v1.0b  2011
     
    RT-11SB (S) V05.07
    Вложения Вложения

  7. #36
    Veteran
    Регистрация
    22.11.2009
    Адрес
    Москва
    Сообщений
    1,587
    Спасибо Благодарностей отдано 
    67
    Спасибо Благодарностей получено 
    157
    Поблагодарили
    103 сообщений
    Mentioned
    12 Post(s)
    Tagged
    0 Thread(s)

    Question

    Пишу эмулятор МС1201.02 в mame/mess и пока в таком же тупике, как и Impartial

    Сравниваю свой трейс с эталоном, пока не очень успешно. Но эталон, похоже, делает меньше чтений с диска, чем мой вариант (загружен tstmin.dsk):
    Код:
    [:vhd]    0.027152 at ':maincpu' (0254): I/O                     [:vhd] read of 1024 words, lbn 000002 memory 001000
    [:vhd]    0.034369 at ':maincpu' (0254): I/O                     [:vhd] read of 512 words, lbn 000006 memory 005006
    [:vhd]    0.041900 at ':maincpu' (0254): I/O                     [:vhd] read of 137 words, lbn 000232 memory 005006
    [:vhd]    0.708941 at ':maincpu' (0254): I/O                     [:vhd] read of 167 words, lbn 000235 memory 001000
    [:vhd]    0.709160 at ':maincpu' (0254): I/O                     [:vhd] read of 163 words, lbn 000272 memory 004006
    [:vhd]    0.709490 at ':maincpu' (0254): I/O                     [:vhd] read of 256 words, lbn 000056 memory 005006
    [:vhd]    0.709730 at ':maincpu' (0254): I/O                     [:vhd] read of 366 words, lbn 000056 memory 156444
    [:vhd]    0.756200 at ':maincpu' (0254): I/O                     [:vhd] read of 230 words, lbn 000231 memory 005006
    [:vhd]    0.756425 at ':maincpu' (0254): I/O                     [:vhd] read of 10624 words, lbn 000241 memory 106044
    [:vhd]    0.756656 at ':maincpu' (0254): I/O                     [:vhd] read of 143 words, lbn 000234 memory 001000
    [:vhd]    0.762560 at ':maincpu' (0254): I/O                     [:vhd] read of 96 words, lbn 000237 memory 001000
    [:vhd]    0.764965 at ':maincpu' (157672): I/O                     [:vhd] read of 74 words, lbn 000233 memory 001000
    [:vhd]    0.767345 at ':maincpu' (157672): I/O                     [:vhd] read of 158 words, lbn 000236 memory 001000
    [:vhd]    0.861819 at ':maincpu' (157672): I/O                     [:vhd] read of 512 words, lbn 000361 memory 125002
    [:vhd]    0.866176 at ':maincpu' (157672): I/O                     [:vhd] read of 512 words, lbn 000365 memory 125002
    [:vhd]    0.869014 at ':maincpu' (157672): I/O                     [:vhd] read of 512 words, lbn 000006 memory 127002
    [:vhd]    0.946583 at ':maincpu' (157672): I/O                     [:vhd] read of 256 words, lbn 000366 memory 125720
    [:vhd]    0.984797 at ':maincpu' (157672): I/O                     [:vhd] read of 512 words, lbn 000361 memory 124720
    [:vhd]    0.988677 at ':maincpu' (157672): I/O                     [:vhd] read of 256 words, lbn 000104 memory 126720
    [:vhd]    0.995230 at ':maincpu' (157672): I/O                     [:vhd] read of 1280 words, lbn 000105 memory 001000
    Последний раз редактировалось shattered; 05.06.2016 в 21:50.

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

    По умолчанию

    Цитата Сообщение от shattered Посмотреть сообщение
    Сравниваю свой трейс с эталоном, пока не очень успешно.
    Я в таких случаях вывожу для обоих эмуляторов дизассемблер хода загрузки и потом сравниваю последовательности выполнявшихся процессором команд, что позволяет найти место, где "пути эмуляторов разошлись".

  9. #38
    Veteran
    Регистрация
    22.11.2009
    Адрес
    Москва
    Сообщений
    1,587
    Спасибо Благодарностей отдано 
    67
    Спасибо Благодарностей получено 
    157
    Поблагодарили
    103 сообщений
    Mentioned
    12 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Так и делаю, слегка спотыкаясь о то, что дизассемблеры разные -- CALL vs. JSR, MOV (SP)+, R3 vs. POP R3 итд итп. Пока нашел разницу в том, что в эталоне не эмулируется EIS (MUL и пр.).

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

    Выключение эмуляции MUL и пр. не помогло. RT-11 стартует, но с консолью не общается -- похоже, потому, что EMT 351 вместо функции вывода символов вызывает пустую процедуру. Разницы в состоянии регистров на момент 146140 нет.

    эталон

    PC[147420] PSW[240] R0[143306] R1[010000] R2[140430] R3[137202] R4[000015] R5[140124] R6[007754] : MTPS #0.
    PC[147424] PSW[000] R0[143306] R1[010000] R2[140430] R3[137202] R4[000015] R5[140124] R6[007754] : JMP 146132
    PC[146132] PSW[000] R0[143306] R1[010000] R2[140430] R3[137202] R4[000015] R5[140124] R6[007754] : BIS #64., @-3444.(PC)
    PC[146140] PSW[000] R0[143306] R1[010000] R2[140430] R3[137202] R4[000015] R5[140124] R6[007754] : CALL @-3330.(PC)
    !!!
    PC[147454] PSW[340] R0[143306] R1[010000] R2[140430] R3[137202] R4[000015] R5[140124] R6[007746] : JSR R5, 153622
    PC[153622] PSW[340] R0[143306] R1[010000] R2[140430] R3[137202] R4[000015] R5[147460] R6[007744] : MOV R4, -(SP)
    PC[153624] PSW[340] R0[143306] R1[010000] R2[140430] R3[137202] R4[000015] R5[147460] R6[007742] : INC #-1.
    PC[153630] PSW[344] R0[143306] R1[010000] R2[140430] R3[137202] R4[000015] R5[147460] R6[007742] : BGT 153642

    mess

    147420 - MTPS #$000000
    147424 - JMP $146132
    146132 - BIS #$000100, @$137354
    146140 - JSR @$137542
    !!!
    151370 - NOP
    151372 - NOP
    151374 - CEC
    151376 - RTS

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

    По умолчанию

    Цитата Сообщение от shattered Посмотреть сообщение
    RT-11 стартует, но с консолью не общается -- похоже, потому, что EMT 351 вместо функции вывода символов вызывает пустую процедуру.
    Загрузчик RT-11 ( из фала BSTRAP.MAC ) активно патчит ядро в момент загрузки, в зависимости от найденной аппаратуры. Если в одном и том же месте в ядре вызываются разные подпрограммы - наверняка это загрузчик постарался.

    Можно найти в исходниках RT-11 обе вызываемые подпрограммы и посмотреть, в зависимости от чего загрузчик настраивает ядро на их вызов.

  11. #40
    Veteran
    Регистрация
    22.11.2009
    Адрес
    Москва
    Сообщений
    1,587
    Спасибо Благодарностей отдано 
    67
    Спасибо Благодарностей получено 
    157
    Поблагодарили
    103 сообщений
    Mentioned
    12 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Пожалуй, сначала надо починить cpu core так, чтобы проходили встроенные тесты прошивки 055...



    Кстати, не откажусь от описания ошибок этого теста -- в 0.305.019 ТО (1983 год) описывается, видимо, прошивка 000.
    Последний раз редактировалось shattered; 09.06.2016 в 22:45.

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

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

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

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

Похожие темы

  1. Основной экран в 24 строки
    от Den Zurin в разделе Для начинающих
    Ответов: 5
    Последнее: 12.12.2010, 09:07
  2. Помогите найти игру
    от RRRoman в разделе Игры
    Ответов: 2
    Последнее: 14.01.2007, 13:26
  3. помогите найти программу-тест
    от John North в разделе Софт
    Ответов: 1
    Последнее: 27.12.2006, 18:57
  4. Помогите найти музон!
    от Darkman007 в разделе Музыка
    Ответов: 12
    Последнее: 11.12.2005, 13:39

Ваши права

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