User Tag List

Показано с 1 по 10 из 265

Тема: SteinBlume. CP/M Disk Image Explorer (ex ATM CP/M Explorer)

Комбинированный просмотр

Предыдущее сообщение Предыдущее сообщение   Следующее сообщение Следующее сообщение
  1. #1

    Регистрация
    05.10.2016
    Адрес
    г. Санкт-Петербург
    Сообщений
    1,080
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    5
    Поблагодарили
    5 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Black Cat/Era CG
    Не знаю, что сохранять в BOOT-секторе кроме DPB
    Привожу все необходимые сведения, чтобы сформировать ODI-образ любого формата. Ниже содержимое ИНФО-блока (первых 32 байтов BOOT-сектора).

    Следующие за ИНФО-блоком 15 байтов с офсетом 20...2E содержат имя диска, а байт 2F это стоп байт =0.

    Код:
    SPT	EQU	5		; sectors pro track
    SIDES	EQU	2		; число плоскостей (только 1 или 2)
    SSIZE	EQU	1024		; размер сектора (только 1024 или 512)
    TRKS	EQU	80		; число треков формата (35,40,42,80,82,83)
    
    if	SSIZE eq 1024
    	SPARM	EQU	3	; параметр размера. При MFM: 3 (1024)
      else
    	SPARM	EQU	2	; параметр размера. При FM: 2 (512)
    endif
    
    ; Далее собственно все 32 байта ИНФО-блока дискеты
    
    A_0000:	rept	8
    	defb	0		; не используется 8 байтов (здесь код загрузчика)
    	endm
    
    A_0008:	defb	1		 ; не используется (лучше не трогать) 
    A_0009:	defb	1		 ; не используется (лучше не трогать) 
    A_000A:	defb	SPARM		 ; при SD =2 (512), при DD =3 (1024)
    A_000B:	defb	SIDES-1		 ; при SS =0, при DS =1
    A_000C:	defb	SPT		 ; sectors pro track (1...11)
    A_000D:	defb	0		 ; не используется (лучше не трогать)
    A_000E:	defb	TRKS		 ; число треков формата (35,40,42,80,82,83)
    A_000F:	defb	0		 ; не используется (лучше не трогать) 
    
    DPB:	DW	SPT*SSIZE/128	 ; кол-во лог.секторов по 128 байт на треке  
    	defb	4		 ; размер блока (3-1K, 4-2K, 5-4K, 6-8K)   
    	defb	15		 ; размер блока (7-1К, 15-2K, 31-4K, 63-8K) 
    	defb	1		 ; параметр экстента (0-1K, 0-2K, 1-4K, 3-8K)
    	DW   SPT*TRKS*SIDES/2-1  ; размер дискового пространства в блоках минус 1
    	DW	128-1		 ; количество записей в каталоге минус 1
    	defb	11000000B,0 	 ; маска занятых каталогом блоков
    	DW	128/4		 ; количество контр-мых лог.секторов каталога
    	DW	4		 ; количество резервных дорожек
    
    A_001F:	DS	KS		 ; здесь контр.сумма ИНФО-блока 0...1E
    
    A_0020:	rept	15		 ; 15 байтов имени диска
    	defb	20H
    	endm
    A_002F:	defb	0		 ; стоп-байт для вывода имени п/п-мой MSSG
    Число треков в большинстве реализаций не используется (развитые реализации CP/M, зная, что дисковод на 80 треков, а дискета на 40, начинают читать 40-ка дорожечные дискеты на 80-ти дорожечном флопе, делая 2 шага на дорожку). КС блока параметров в КОРВЕТЕ и ОРИОНЕ считаются по разному (байт 66H добавлялся чтобы КС в байте 1F была такой-же как в КОРВЕТЕ при DD/DS)

    Чтобы избежать зависа при установке чужой дискеты и на случай дохлоты, целостность ИНФО-блока контроллируется подсчётом КС первых 31-го байта BOOT-сектора (эта КС читается из байта с офсетом 1F - т.е из 32-го байта). Вот как проверяется эта КС во всех CP/M ОРИОНА (в ОС не CP/M ИНФО-блок другой).

    Код:
    	LD	HL,BUFFER	; в буфере загружен BOOT-сектор
    	LD	A,66H	  	; было надо для совместимости с КОРВЕТОМ
    	LD	B,31  	  	; считаем арифм.сумму 31 байта ИНФО-блока
    LOOP:	ADD	A,(HL)
    	INC	HL
    	DJNZ	LOOP
    	CP	(HL)
    	JR	Z,NODISK
    Таким образом, байт с оффсетом в 1F содержит КС - арифметическую сумму (плюс 66H) первых 31 байта дискеты. Если КС не совпала, значит чужой или дохлый диск. Если первый байт BOOT-сектора =C3, то загрузчик считает дискету системной. КС контроллируется загрузчиком с дискеты и п/п-ммой SELDSK в CP/M-BIOS.

    Загрузчик с дискеты работает так. Он грузит BOOT-сектор в свой буфер и первым делом контроллирует КС ИНФО-блока. Если первый байт C3, то из BOOT-сектора кидает первые 256 байт на адрес 0 в банку ОЗУ, номер которой берётся из BOOT-сектора из байта с офсетом 9FH (так в моём загрузчике 1990 года и загрузчике МП ОРИОН-СЕРВИС, но в загрузчике ОРИОНСОФТ адрес банки не 9F, а другой, причём и номер банки только 0 или 1, в банку 2 нельзя).

    Информация приведена, чтобы было ясно как создать диск любого формата, чтобы он читался из CP/M ОРИОНА. Например, чтобы создать диск на 10 секторов с 82 треками достаточно подставить SPT=10, SIDES=2 и TRKS=82. Затем выше приведённой программкой считаем КС и подставляем его байтом со смещением 1FH. Размер созданного файла надо сделать точно равным физическому размеру диска - 1640 кб.

    Но в основном использовался формат 1300 кб и именно на такой максимальный размер рассчитаны версии CP/M для HD-дисковода. Это ограничение из-за объёма Alloc Table, т.е её размер допускает диск максимум размером в 1300 кб. Поясню почему 1300, а не 1600.

    На IBM в контроллере дисковода нельзя изменить кварц. А на ОРИОНЕ это делалось постоянно. По причине того, что для HD формата 1600К надо иметь скорость ОРИОНА, минимум, 5 МГЦ. Но из-за того, что при ТУРБО-200% РУ5-е работают на 5 МГЦ, они перегреваются и надёжность низка. Потому в основном использовалась схема ТУРБО, где ОЗУ остаётся на 2.5 МГЦ, дающая лишь 3.5 или 3.9 МГЦ реального такта. Такой скорости хватало только на чтение формата 7 или 8 секторов на трек на HD-дискете (с соответствующей заменой кварца в КНГМД). Дискеты HD-5.25 из-за большей скорости колеса использовались в формате 6 секторов (960К). Т.е из-за скоростных ограничений использовались полу-торные форматы. На PC было только 3 формата 720, 1440 и 1.20 мб, а на ОРИОНЕ - куча форматов.

    Цитата Сообщение от Black Cat/Era CG
    Создание диска делается при создании нового образа... Создать образ с произвольной геометрией можно, выбрав при создании xdi
    Насчёт xdi не понял, а в меню 'СОЗДАТЬ ОБРАЗ' есть только один формат 800К (лучше создавать чистый диск, а не с системой, тем более древней).

    Удобно в меню 'СОЗДАТЬ ОБРАЗ' иметь форматы:

    800К - DD/DS, 80 треков, 5 секторов по 1024
    410К - SD/DS, 82 трека, 5 секторов по 512
    820К - DD/DS, 82 трека, 5 секторов по 1024
    1640К - DD/DS, 82 трека, 10 секторов по 1024
    Последний раз редактировалось barsik; 24.02.2017 в 03:40.

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

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

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

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

Похожие темы

  1. Explorer
    от abelenki в разделе Игры
    Ответов: 5
    Последнее: 19.06.2015, 16:50
  2. EXPLORER = DESPERADO = SAM ???
    от newart в разделе Музыка
    Ответов: 8
    Последнее: 15.01.2008, 00:33
  3. Ищу explorer.exe [win2000pro]
    от ice'di^triumph в разделе Барахолка (архив)
    Ответов: 6
    Последнее: 01.09.2005, 22:17

Ваши права

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