Friday, October 31, 2014

NCB85 9. CP/M Floppy drives

Na začiatok pár prekvapení. CP/M 2.2 nepozná adresáre. Všetko je v root adresári. Pre niekoho určite šokujúce, pre tých čo zažili napríklad nahrávanie z kaziet, prípadne SMEP počítače s FOBOS-om normálka.

CP/M 2.2 nemá prostriedky na označenie vadných blokov. MS-DOS si naformátoval disketu a vadné bloky zneprístupnil. Nielen že CP/M nemá definovaný štandard pre diskety, ale CP/M nemá ani len formátovací program :-) Niektorí vendori dodávali vlastný neštandardný formátovací program. Niektorí dokonca nútili ľudí kupovať si od nich naformátované diskety, a formátovací program nedodávali. Pochopiteľne z tohoto dôvodu vznikla spústa rôznych navzájom nekompatibilných formátov. Takže ako to bolo s tými vadným sektormi? Boli na to rôzne programy. Napríklad "reclaim.com" alebo "fbad.com" Tieto programíky vytvorili na disku file s názvom UNUSED.BAD, alebo CRCERR.BAD a podobne. Tento file mal priradené práve vadné sektory. Tento file potom už samozrejme nebolo vhodné zmazať:-) Aby nestrašil medzi ostatými files, bolo ešte možné ho priradiť userovi č.15 a tým ho zneviditeľniť. Väčšina ľudí pracovala pod user č.0.

CP/M teda nemá jednotný formát ani veľkosť sektorov. Každý vendor si zvolil čo mu vyhovovalo. CP-M začínalo na 8" jednostranných SD-single density disketách s 26 sektormi (po 128 byte) na track a 77 tracks. Na takomto formáte a médiu dodávalo DRI CP/M pre vendorov. Postupne sa prechádzalo na DD-double density diskety, veľkosť sa zmenšovala na 5,25" a začali sa používať väčšie veľkosti sektorov. Posledné verzie CP/M od niektorých vendorov už pracovali s 3,5" HD-high density disketami a sektormi veľkými až 1024 byte.

Pre porovnanie - v MS-DOS sú veľkosti sektorov vždy 512 byte. Povolené formáty su tri.

CP/M pre NCB85 teda môže používať ľubovoľný formát diskiet. Ja som napísal programík, ktorý formátuje diskety s 256 bytovými sektormi. Podporuje 4 typy disket. Tri sú 5,25" a jeden 3,5". Že tri?! Áno. Zo sveta PC sú známe dva 5,25" typy. Jeden je 360kB, má 40 tracks a 9 sektorov na track, potrebuje DD diskety. Druhý je 1,2MB, má 80 tracks a 15 sektorov na track, potrebuje HD diskety. A ten tretí? Dostali sa mi do rúk netypické disketovky TEAC FD-55F. Majú kapacitu 720kB, 80 tracks ale pracujú iba s DD disketami, teda 9 sektorov na track. Štvrtý formát sú najrožšírenejšie 1,44MB 3,5" HD diskety. Majú 80 tracks a 18 sektorov na stopu.

Po voľbe veľkosti sektorov na 256 byte, je treba zvoliť ďalšie parametre pre file system. Koľko stôp sa vyčlení pre systém, veľkosť alokačného bloku, max počet záznamov v adresári atď.
BDOS čísluje sektory od 0. Radič PC8477B podporuje aj sektory s číslom 0, preto nie je na čísla sektorov potrebná prekladová tabuľka.


PMD32SD má definované 2MB virtuálne disky

; Tabulka diskovych parametrov:
; disketa o velkosti 2MB
; 256 stop(dve strany), 64 sektorov na stopu
; 1020 alokacnych blokov o velkosti 2kB
; 256 adresarovych poloziek
; 1 systemova stopa
DPB:
dw64; SPT - pocet logickych sektorov na stopu
db4; BSH - posun bloku
db15; BLM - maska bloku
db0; EXM - maska rozsirenia
dw1019; DSM - velkost disku-1
dw255; DRM - velkost adresara-1
db240; AL0 - alokacna maska adresara
db0; AL1
dw64; CKS - velkost pola kontrolnych suctov
dw1; OFF - pocet systemovych stop


Pre diskety som zvolil nasledovné parametre:


Diskety 5,25" DD

; Tabulka diskovych parametrov:
; 5,25" disketa o velkosti 360kB(DOS aj CP/M)
; 40 stop(dve strany), 18 (256 byte) sektorov na stopu, 1440 sektorov celkom
; 179 alokacnych blokov o velkosti 2kB (prva stopa je systemova)
; 64 adresarovych poloziek (1alok.blok x 16sec/blk x 4entry/sec) - adresar zabera 1 alokacny blok
; 0 systemových stôp
DPB:
dw72; SPT - pocet logickych sektorov na stopu
db4; BSH - posun bloku
db15; BLM - maska bloku
db1; EXM - maska rozsirenia, 32kB na extent
dw179; DSM - velkost disku-1
dw63; DRM - velkost adresara-1
db128; AL0 - alokacna maska adresara
db0; AL1
dw16; CKS - velkost pola kontrolnych suctov
dw0; OFF - pocet systemovych stop



Diskety 5,25" DD v 80 tracks mechanike (na PC sa nepoužívali)

; Tabulka diskovych parametrov:
; 5,25" disketa o velkosti 720kB(CP/M)
; 80 stop(dve strany), 18 (256 byte) sektorov na stopu, 2880 sektorov celkom
; 355 alokacnych blokov o velkosti 2kB (prva stopa je systemova)
; 128 adresarovych poloziek (2x16x4) - adresar zabera 2 alokacne bloky
; 1 systemova stopa
DPB:
dw72; SPT - pocet logickych sektorov na stopu
db4; BSH - posun bloku
db15; BLM - maska bloku
db0; EXM - maska rozsirenia
dw354; DSM - velkost disku-1
dw127; DRM - velkost adresara-1
db192; AL0 - alokacna maska adresara
db0; AL1
dw32; CKS - velkost pola kontrolnych suctov
dw1; OFF - pocet systemovych stop



Diskety 5,25" HD

; Tabulka diskovych parametrov:
; 5,25" disketa o velkosti 1.2MB(DOS)/1.04MB(CP/M)
; 80 stop(dve strany), 26 (256 byte) sektorov na stopu, 4160 sektorov celkom
; 513 alokacnych blokov o velkosti 2kB (prva stopa je systemova)
; 256 adresarovych poloziek (4x16x4) - adresar zabera 4 alokacne bloky
; 1 systemova stopa
DPB:
dw104; SPT - pocet logickych sektorov na stopu
db4; BSH - posun bloku
db15; BLM - maska bloku
db0; EXM - maska rozsirenia
dw512; DSM - velkost disku-1
dw255; DRM - velkost adresara-1
db240; AL0 - alokacna maska adresara
db0; AL1
dw64; CKS - velkost pola kontrolnych suctov
dw1; OFF - pocet systemovych stop



Diskety 3,5" HD

; Tabulka diskovych parametrov:
; 3.5" disketa o velkosti 1.44MB(DOS)/1.28MB(CP/M)
; 80 stop(dve strany), 32 (256 byte) sektorov na stopu, 5120 sektorov celkom
; 632 alokacnych blokov o velkosti 2kB (prva stopa je systemova)
; 256 adresarovych poloziek (4x16x4) - adresar zabera 4 alokacne bloky
; 1 systemova stopa
DPB:
dw128; SPT - pocet logickych sektorov na stopu
db4; BSH - posun bloku
db15; BLM - maska bloku
db0; EXM - maska rozsirenia
dw631; DSM - velkost disku-1
dw255; DRM - velkost adresara-1
db240; AL0 - alokacna maska adresara
db0; AL1
dw64; CKS - velkost pola kontrolnych suctov
dw1; OFF - pocet systemovych stop


Pre porovnanie v MS-DOS sú alokačné bloky 1024 byte pre diskety 360kB a 512 byte pre diskety 1,2MB a 1,44MB.