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

User Tag List

Страница 88 из 183 ПерваяПервая ... 848586878889909192 ... ПоследняяПоследняя
Показано с 871 по 880 из 1824

Тема: Эмулятор ДВК

  1. #871
    Guru
    Регистрация
    02.03.2015
    Адрес
    г. Караганда, Казахстан
    Сообщений
    2,321
    Спасибо Благодарностей отдано 
    35
    Спасибо Благодарностей получено 
    225
    Поблагодарили
    177 сообщений
    Mentioned
    17 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Patron Посмотреть сообщение
    Единственное решение - смонтировать нестандартный образ в HD и сделать COPY/DEV на MY: - лишние дорожки пропадут, но 80 дорожек лучше, чем совсем ничего.
    Это-то понятно. Слава Богу, загрузочная дискета стерпела укорачивание, дискета с утилитами - тоже. Но есть и дискеты, которые этого не переживут. Поэтому придется учить ДИАМС работать с HD. Из чего следует вопрос: где взять описание виртуального "железа" HD, чтобы склепать для него дровишки под ДИАМС?
    Кто мешает тебе выдумать порох непромокаемый? (К.Прутков, мысль № 133)

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

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

    По умолчанию

    Цитата Сообщение от AFZ Посмотреть сообщение
    где взять описание виртуального "железа" HD, чтобы склепать для него дровишки под ДИАМС?
    Да собственно описание простое. В примерах:
    Код:
    ;
    ;РЕГИСТРЫ КОНТРОЛЛЕРА
    ;
    HDCS	=:	0			;РЕГИСТР СОСТОЯНИЯ
    HDDA	=:	2			;РЕГИСТР ДАННЫХ
    
    ;
    ;КОМАНДЫ
    ;
    CS.UNI	=:	1			;ВЫБРАТЬ НОМЕР УСТРОЙСТВА
    CS.BLK	=:	2			;ВЫБРАТЬ НОМЕР БЛОКА
    CS.BUF	=:	3			;УСТАНОВИТЬ АДРЕС БУФЕРА
    CS.WCT	=:	4			;УСТАНОВИТЬ КОЛИЧЕСТВО СЛОВ
    CS.RLB	=:	5			;ЧТЕНИЕ
    CS.WLB	=:	6			;ЗАПИСЬ
    CS.SIZ	=:	7			;ПОЛУЧЕНИЕ РАЗМЕРА
    
            MOV     #177720,R5              ;РЕГИСТР УСТРОЙСТВА
    ;
    ;ПРОВЕРКА ТИПА КОНТРОЛЛЕРА
    ;
            CLR     @R5                     ;КОМАНДА NOP (ЧИСТКА CSR)
            TSTB    @R5                     ;ПРОВЕРЯЕМ ЧТО В РЕГИСТРЕ
            BPL     ...                     ;ЕСЛИ 200 - ЭТО НОВЫЙ КОНТРОЛЛЕР
                                            ;ОН СОВМЕСТИМ С 22-BIT
                                            ;ИНАЧЕ СТАРЫЙ 16-БИТНЫЙ
    
    ;
    ;РАБОТА С КОНТРОЛЛЕРОМ
    ;
            MOV     #unit,HDDA(R5)          ;ВЫБОР НОМЕРА УСТРОЙСТВА
            MOV     #CS.UNI,@R5             ;
    ;
    ;ЕСЛИ ПОСЛЕ ЭТОГО СТАРШИЙ БИТ HDCS УСТАНОВЛЕН - УСТРОЙСТВО НЕ ПОДКЛЮЧЕНО.
    ;В НОВОМ КОНТРОЛЛЕРЕ ТАКЖЕ ПОСЛЕ ВЫПОЛНЕНИЯ КОМАНДЫ МЛАДШИЙ БАЙТ HDDA
    ;СОДЕРЖИТ КОД ОШИБКИ СОВМЕСТИМЫЙ С RSX-11, ПРИ ОШИБКЕ ОН ОТРИЦАТЕЛЬНЫЙ
    ;
            MOV     #blkn,HDDA(R5)          ;ВЫБОР НОМЕРА БЛОКА
            MOV     #CS.BLK,@R5             ;
    ;
    ;ВОЗВРАЩАЕТ ОШИБКУ ЕСЛИ БЛОК ВЫХОДИТ ЗА ПРЕДЕЛЫ ДИСКА
    ;
            MOV     #buff,HDDA(R5)          ;ВЫБОР АДРЕСА БУФЕРА
            MOV     #CS.BUF,@R5             ;(БИТЫ 0-15)
    ;
    ;ДЛЯ СТАРОГО КОНТРОЛЛЕРА ЭТ ВСЕ. ДЛЯ НОВОГО СТАРШИЕ БИТЫ
    ;АДРЕСА НУЖНО ЗАПИСАТЬ В СТАРШИЙ БАЙТ HDCS (МОЖНО С
    ;КОМАНДОЙ ЧТЕНИЯ/ЗАПИСИ
    ;
            MOV     #wcnt,HDDA(R5)          ;КОЛИЧЕСТВО СЛОВ ДЛЯ ПЕРЕДАЧИ
            MOV     #CS.WCT,@R5             ;
    ;
    ;МОЖЕТ ВЕРНУТЬ ОШИБКУ ЕСЛИ В РЕЗУЛЬТАТЕ ОПЕРАЦИИ БУДЕТ ВЫХОД
    ;ЗА ПРЕДЕЛЫ ДИСКА
    ;
            MOV     #CS.RLB,@R5             ;ЗАПУСК I/O
    ;
    ;КАК ПИСАЛОСЬ ВЫШЕ, В СТАРШЕМ БАЙТЕ ДОЛЖНЫ БЫТЬ СТАРШИЕ БИТЫ
    ;АДРЕСА ДЛЯ НОВОГО КОНТРОЛЛЕРА. МОЖНО ВМЕСТЕ С КОМАНДОЙ,
    ;МОЖНО ЗАРАНЕЕ ЗАПИСАТЬ, А ЗАПУСКАТЬ КОМАНДОЙ MOVB.
    ;
    Ну и остается команда получения размера диска (он ограничен 65535 блоками). Сначала выбрать устройство, потом записать команду CS.SIZ и прочитать размер из регистра данных.

    Сейчас занимаюсь RSXными делами и позже предложе третью версию спецификации, совместимую с первыми двумя

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

    Код:
    	.DRBEG	HD
    	MOV	(PC)+,R3		;GET CSR ADDRESS
    HDCSR:	.WORD	HD$CSR			;
    	MOV	HDCQE,R5		;GET ADDRESS OF QUEUE ELEMENT
    	MOV	R5,R4			;
    	MOV	(R5)+,R0		;GET BLOCK NUMBER
    	MOVB	(R5)+,R1		;GET FUNCTION CODE
    	MOVB	(R5)+,R2		;GET UNIT NUMBER
    	BIC	#^C7,R2			;MASK IRRELEVANT BITS
    	MOV	R2,HDDA(R3)		;SET DEVICE UNIT
    	MOV	#CS.UNI,@R3		;
    	TST	@R3			;DEVICE ONLINE?
    	BMI	HDERR			;IF MI NO
    	TSTB	R1			;SPFUN REQUESTED
    	BMI	HDFUN			;IF MI YES
    	MOV	R0,HDDA(R3)		;SET BLOCK NUMBER
    	MOV	#CS.BLK,@R3		;
    	TST	@R3			;BLOCK NUMBER TOO LAGRE?
    	BMI	HDEOF			;IF MI YES
    .IF	EQ	MMG$T
    	CLR	R1			;ZERO BAE
    	MOV	(R5)+,HDDA(R3)		;SET BUFFER ADDRESS
    .IFF
    	CALL	@$MPPTR			;MAP I/O BUFFER
    MPPTR	=:	.-2			;*** PATCH ***
    	MOV	(SP)+,R0		;GET BUFFER ADDRESS
    	MOV	(SP)+,R1		;GET BAE
    	BEQ	10$			;IF EQ 16-BIT ADDRESS
    	TSTB	@R3			;22-BIT CONTROLLER?
    	BPL	HDERR			;IF PL NO
    	ASH	#4,R1			;SHIFL LEFT (SAFE TO USE ASH)
    10$:	MOV	R0,HDDA(R3)		;SET BUFFER ADDRESS
    .ENDC
    	MOV	#CS.BUF,@R3		;SET BUFFER ADDRESS
    	MOV	#CS.RLB,R0		;ASSUME READ COMMAND
    	MOV	(R5)+,R2		;GET WORD COUNT
    	BPL	20$			;IF PL READ
    	MOV	#CS.WLB,R0		;SET WRITE COMMAND
    	NEG	R2			;
    20$:	MOV	R2,HDDA(R3)		;SET WORD COUNT
    	MOV	#CS.WCT,@R3		;
    	TST	@R3			;READ/WRITE PAST END OF DEVICE?
    	BPL	30$			;IF PL NO
    	BIS	#EOF$,@-2(R4)		;SET END OF FILE STATUS
    30$:	BIS	R0,R1			;MEGRE IN BAE
    	MOV	R1,@R3			;START I/O
    	TST	@R3			;I/O ERROR?
    	BPL	HDFIN			;IF PL NO
    HDERR:	BIS	#HDERR$,@-(R4)		;SET HARD ERROR STATUS
    HDFIN:	.DRFIN	HD			;FINISH I/O
    HDEOF:	BIS	#EOF$,@-(R4)		;SET END OF FILE STATUS
    	BR	HDFIN			;FINISH I/O
    
    HDFUN:	CMPB	#SF.SIZ,R1		;GET DEVICE SIZE FUNCTION?
    	BNE	HDERR			;IF NE NO
    	MOV	#CS.SIZ,@R3		;GET DEVICE SIZE
    .IF	EQ	MMG$T
    	MOV	HDDA(R3),@(R5)+		;PUT INTO BUFFER
    .IFF
    	MOV	HDDA(R3),-(SP)		;PUT INTO BUFFER
    	CALL	@$PTWRD			;
    PTWRD	=:	.-2			;*** PATCH ***
    .ENDC
    	BR	HDFIN			;FINISH I/O
    Последний раз редактировалось form; 08.03.2016 в 06:44.
    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

  4. #873
    Guru
    Регистрация
    02.03.2015
    Адрес
    г. Караганда, Казахстан
    Сообщений
    2,321
    Спасибо Благодарностей отдано 
    35
    Спасибо Благодарностей получено 
    225
    Поблагодарили
    177 сообщений
    Mentioned
    17 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от form Посмотреть сообщение
    Ну и остается команда получения размера диска (он ограничен 65535 блоками).
    Почему? Кто, собственно, мешает сделать сколько угодно? ДИАМС поддерживает 16Г, RSX-11, подозреваю, тоже много...
    Кто мешает тебе выдумать порох непромокаемый? (К.Прутков, мысль № 133)

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

    По умолчанию

    Цитата Сообщение от AFZ Посмотреть сообщение
    Кто, собственно, мешает сделать сколько угодно?
    Мешает ( как и в большинстве устройств PDP11 ) передача номера блока одним словом.

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

    По умолчанию

    Цитата Сообщение от Patron Посмотреть сообщение
    Мешает ( как и в большинстве устройств PDP11 ) передача номера блока одним словом.
    Не мешает. Позже отпишу вариант...
    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

  7. #876
    Guru
    Регистрация
    02.03.2015
    Адрес
    г. Караганда, Казахстан
    Сообщений
    2,321
    Спасибо Благодарностей отдано 
    35
    Спасибо Благодарностей получено 
    225
    Поблагодарили
    177 сообщений
    Mentioned
    17 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Patron Посмотреть сообщение
    Мешает ( как и в большинстве устройств PDP11 ) передача номера блока одним словом.
    У большинства устройств нет номера блока, есть C-H-R. А передача номера блока одним словом - особенность RT-11 и только.

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

    Кстати, что-то DW медленно работает. Что, эмулируется реальное время перемещения головок? Так у того же ST225 головки летают весьма шустро...
    Кто мешает тебе выдумать порох непромокаемый? (К.Прутков, мысль № 133)

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

    По умолчанию

    Цитата Сообщение от AFZ Посмотреть сообщение
    У большинства устройств нет номера блока, есть C-H-R. А передача номера блока одним словом - особенность RT-11 и только.
    Это особенность абсолютно всех систем. Ни в одной из них в I/O запросе не передаются параметры диска (специальные запросы драйвера если они есть не в счет). Это задача драйвера разобраться с геометриями и выставить параметры. Но если устройство с самого начала ориентировано на блоки, то почему бы и нет? И одного слова достаточно чтобы работать скажем с 32 битными размерами блока. Уже есть мысль как упграднуть в очередной раз HD на эту тему не теряя совместимости. Может чуть похже представлю идею (в ней кроме размера блока есть еще кое-что) на рассмотрения. Пока в E11 отлажу ее.
    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

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

    По умолчанию

    Цитата Сообщение от AFZ Посмотреть сообщение
    Кстати, что-то DW медленно работает. Что, эмулируется реальное время перемещения головок? Так у того же ST225 головки летают весьма шустро...
    Моя ошибка - почему-то включение быстрого позиционирования для дисков > 5Мб было отключено.

    При быстром позиционировании один шаг происходит за 1 мс, при медленном - за 3 мс.

  10. #879
    Guru
    Регистрация
    02.03.2015
    Адрес
    г. Караганда, Казахстан
    Сообщений
    2,321
    Спасибо Благодарностей отдано 
    35
    Спасибо Благодарностей получено 
    225
    Поблагодарили
    177 сообщений
    Mentioned
    17 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от form Посмотреть сообщение
    Это особенность абсолютно всех систем. Ни в одной из них в I/O запросе не передаются параметры диска (специальные запросы драйвера если они есть не в счет). Это задача драйвера разобраться с геометриями и выставить параметры.
    Естественно, драйвер получает номер блока, а не C-H-R, превратить этот номер блока в C-H-R, как раз, первая задача драйвера. Но кто сказал, что номер блока должен быть СЛОВОМ?!. В ДИАМСе номер блока - двойное слово. Не помню точно, кажется один или два самых старших бита урезаны под что-то еще, но остальные 30 или 31 бит и есть номер блока.
    Кто мешает тебе выдумать порох непромокаемый? (К.Прутков, мысль № 133)

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

    По умолчанию

    Цитата Сообщение от AFZ Посмотреть сообщение
    Но кто сказал, что номер блока должен быть СЛОВОМ?!.
    Никто не сказал и никто не говорил, что одного слова контроллера недостаточно, чтобы передать 32 бит.
    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

Страница 88 из 183 ПерваяПервая ... 848586878889909192 ... ПоследняяПоследняя

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

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

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

Похожие темы

  1. Эмулятор
    от vladimir53 в разделе Орион
    Ответов: 19
    Последнее: 24.06.2022, 08:02
  2. Эмулятор ПЗУ.
    от ALKO в разделе Память
    Ответов: 8
    Последнее: 17.05.2011, 13:41
  3. Эмулятор AY на AVR
    от serkiri в разделе Звук
    Ответов: 52
    Последнее: 10.06.2010, 09:01
  4. Эмулятор для Mac
    от AlexBel в разделе Эмуляторы
    Ответов: 11
    Последнее: 02.05.2010, 18:53

Ваши права

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