
Сообщение от
izzx
Она сырая. Там размеры биткарт от балды, поэтому они наползают на соседние, с непредсказуемым результатом...
У меня сейчас так:
Код:
;allocation vector
all_fd0: ds 20 ;биткарты дисков, 1 бит на кластер
all_fd1: ds 20 ;20 = до 160 кл. (moa =155)
all_fd2: ds 50 ;для 800k fdd надо 400/8 =50
all_fd3: ds 50
all_ram: ds 28 ;896кб рамдиск
all_hdd: ds 64 ;512 кластеров
;checksums vector
chk_fd0: ds 32 ;32 = (DRM+1)/4 = до 128 файлов
chk_fd1: ds 32 ;чексуммы для каждого 128б блока
chk_fd2: ds 32 ;каталога
chk_fd3: ds 32
chk_ram: ds 32
chk_hdd: ds 128 ; до 512 файлов
(Я нашёл диск со своими старыми наработками, сейчас ковыряюсь.)
Вот кстати из исходников cp/m 2.0 (были на Klug BBS).
Код:
; fixed data tables for four-drive standard
; IBM-compatible 8" disks
; disk parameter header for disk 00
dpbase: dw trans,0000H,0000H,0000H,dirbf,dpblk,chk00,all00
dirbf: ds 128 ;scratch directory area
all00: ds 31 ;allocation vector 0
all01: ds 31 ;allocation vector 1
all02: ds 31 ;allocation vector 2
all03: ds 31 ;allocation vector 3
chk00: ds 16 ;check vector 0
chk01: ds 16 ;check vector 1
chk02: ds 16 ;check vector 2
chk03: ds 16 ;check vector 3
Эх, 8-дюймовые дискеты, 64 файла в каталоге, да.

Сообщение от
LW
36-я ведет отсчет не в абсолютных секторах, а относительно начала подраздела
поэтому de=0001, hl=адрес куда читать, b-сколько секторов (512б) читать и понеслась
Из подраздела - сектора считают от 0. Если смонтирован tr-dos диск - тогда от 1.
Я дизассемблеровал драйвер от исдоса, он считает от 0. И копирайты МОА при нём.

Сообщение от
izzx
Что-то даже отформатировать дискетку не умею.
Пишу
format b:
Ругается, что надо сделать сначала assign.
assign работает только в Microdos или похожих. У них биос более продвинутый.
Если диск на 640 кб - то формат просто не нужен, достаточно era *.*
Есть format.com от Марковского, но она хочет открытые порты. Можно переделать, это нетрудно, она мелкая.

Сообщение от
izzx
На старых прошивках монитора шибко мигает при обращении к HDD.
Это лечится - программированием HDD через порты. Если лазить к ним через #3D2F - то это небыстро, но у меня получалось вдвое быстрее дисковода, около 70 кб/с или 30 тыс тактов на 512б сектор.
А если открыть порты (#1FFD bit 2) - то имеем 240 кб/с при чтении длинными кусками. См. idesmuc.blk для исдоса.

Сообщение от
Xela
в теории такое может быть - работа с портами SMUC напрямую, так же как, например, на вообще-не-скорпионах.
Ох. Драйвер idesmuc.blk делает именно это. Я написал его в 1998 году.
И под немовскую схему я тоже писал в то время, см. jason.blk. А в ide+5.blk есть куски моего кода.
Думаю насчёт прикрутить к CP/M читалку HDD через порты. Уже есть готовое, надо засунуть в 6-ю банку и вызывать из 1-й.
Обкатанный драйвер через RST 8 тоже есть, уже работает. Причём правильно работает, ибо различает виды записи - буферизованную, немедленную и без предчтения (C=0,1,2).