[SharpMZ] DSK image
Martin Frohlich
Martin.Frohlich na seznam.cz
Pondl Listopad 9 21:19:24 CET 2015
Zdravím,
Nevím jestli tohle k něčemu bude, ale mám posbíraných pár dokumentů o tomto
tématu. Přikládám je, snad poslouží.
A popis struktury DSK souboru je tady: http://cpctech.cpc-live.com/docs/
extdsk.html
Martin Mafro Fröhlich
PS: Můj DSK Editor zatím použitelný není. Pořád jsem nevzdal touhu udělat to
tak, že bude schopen pracovat i s fyzickými disketami. Bohužel to zatím
vypadá že jen s řadiči na základní desce pomocí tohoto ovladače: http://
simonowen.com/fdrawcmd/
Pokud by někdo přišel na to jak něco podobného udělat s USB mechanikou bylo
by to skvělé.
---------- Původní zpráva ----------
Od: Miloš <milsa na atlas.sk>
Komu: Počítače SHARP MZ a jejich emulátory <sharpmz na mail.ordoz.com>
Datum: 9. 11. 2015 19:36:44
Předmět: Re: [SharpMZ] DSK image
"
Existuje niekde nejaký popis súborového formátu pre BASIC a štandardné CP/M
(na slovenské pomery, resp. české)? Ohľadne počtu sektorov a ich dĺžky nie
je problém dohľadať informácie, ale ja mám skôr na mysli popis súborového
systému, čže "MZ-FAT". Viem, že Sharp hľadá súbor s IPLPRO na začiatku, ale
už rozmiestnenie častí disku nepoznám (tabuľka rozdelenia súborov, adresár,
sektory so súbormi). Dá sa toto info niekde nájsť?
Miloš
Dňa 9. 11. 2015 o 16:34 Michal Medek napísal(a):
"Ahoj,
ptas se sice jednoduse a jasne, ale jednoduche a jasne odpovedi neznam.
Vyjadrim se pouze k tomu programku na kopirovani souboru do ramdisku.
Jedna se sice o obraz ramdisku, ale jen pro pouziti jako SROMdisk. Vytvori
obraz, kde je na zacatku maly ovladac, takove nabidkove menu, ze ktereho
muzes spustit program/hru nebo tak neco. Slouzi to k tomu, jak si vytvorit
obraz, ktery se potom muze nahrat do EPROM/FLASH pro SROMdisk. Takze se
nejedna o jakekoliv soubory, ale je to urcene pouze pro programy. Vyuziva to
.mzf soubory. A poslat Ti ho klidne muzu a muzes ho i nekde vystavit, jak je
libo.
A co se tyka treba QD disket nebo FDD obrazu ulozenych v .dsk, tak to je
dost slozita otazka. Formatu existuje docela hodne, podle toho v cem se s
tim pracovalo. Treba CP/M pro Sharpa pouziva hodne jiny format disku nez
DiskBasic a to uz vubec nemluvim o souborovem systemu.
Nejake pokusy jsem s tim jeste delal, ale moc to nedopadlo. Mam neco pro
vykopirovani souboru z RAMdisku pro BASIC a to same pro QD, ale je to spis
jen info o tom, jak to uvnitr funguje.
Mikes
---------- Původní zpráva ----------
Od: Jiří Červinka <jiri.cervinka na axis.cz>(mailto:jiri.cervinka na axis.cz)
Komu: Počítače SHARP MZ a jejich emulátory <sharpmz na mail.ordoz.com>
(mailto:sharpmz na mail.ordoz.com)
Datum: 9. 11. 2015 11:04:59
Předmět: [SharpMZ] DSK image
"Ahoj,
řeším problém jak dostat do DSK image soubory z PC. Vím, že se to už řešilo,
ale
nenašel jsem nějaký jednoduchý způsob. Nemá někdo nějaký editor dsk souborů?
V
roce 2012 psal Mafro, že se ho snaží napsat. Je tedy už hotový? Buď tady,
nebo
na oldcomp.cz psal Mikeš21, že si napsal prográmek, který soubory přihodí do
obrazu ramdisku. Je volně k dispozici a je možné ho někde stáhnout? Při
hledání
jsem narazil na cpmtools, který umí pracovat se spoustou cpm disket, ale pro
Sharpa asi není definice disket v souboru diskdefs. Nepoužívá někdo tento
tools?
Případně nenapsal by někdo definice pro Sharp diskety?
Jirka
_______________________________________________
SharpMZ mailing list
SharpMZ na mail.ordoz.com(mailto:SharpMZ na mail.ordoz.com)
http://mail.ordoz.com/mailman/listinfo/sharpmz
(http://mail.ordoz.com/mailman/listinfo/sharpmz)"
_______________________________________________
SharpMZ mailing list
<a href='mailto:SharpMZ na mail.ordoz.com'>SharpMZ na mail.ordoz.com</a>
<a href='http://mail.ordoz.com/mailman/listinfo/sharpmz'>http://mail.ordoz.com/mailman/listinfo/sharpmz</a>
"
_______________________________________________
SharpMZ mailing list
SharpMZ na mail.ordoz.com
http://mail.ordoz.com/mailman/listinfo/sharpmz"
------------- dal st ---------------
HTML příloha byla odstraněna...
URL: http://mail.ordoz.com/pipermail/sharpmz/attachments/20151109/0f01f74b/attachment-0001.html
------------- dal st ---------------
Z hlediska optimalizace přístupových dob jsou
samozřejmě
fyzické sektory diskety přečísleny. Aby však diskety byly
čitelné
na jiných počítačích, přečíslení neprovádí BIOS
pomocí tabulek,
ale sektory jsou přímo přeházeny na disketě, a sice s
parametrem
dvě. Stopa tedy obsahuje sektory v tomto pořadí:
1, 6, 2, 7, 3, 8, 4, 9, 5.
Adresní značky jednotlivých sektorů jsou samozřejmě
přeházeny zároveň se sektory, takže disketa se navenek jeví jako
nepřečíslená.
Aby to však nebylo tak jednoduché, autor CP/M byl požádán,
aby bylo možné používat i jednostranné mechaniky. Tím bylo nutno
vytvořit dva různé formáty, vzhledem k nutnosti původní Sharp
boot stopy. Logické rozdělení disket těchto formátů je v
následujích tabulkách.
Oboustranný záznam
IBM PC boot sektor strana 0, stopa 0, sektor 1
IBM PC FAT (vynechané místo) strana 0, stopa 0, sektor 2-5
Začátek Sharp BIOSu strana 0, stopa 0, sektor 6-9
Sharp boot sektor (formát ROMky) strana 1, stopa 0, sektor 1
CP/M booter strana 1, stopa 0, sektor 2-5
Zbytek Sharp boot stopy strana 1, stopa 0, sektor 6-16
Pozor! Sharpovská boot stopa obsahuje šestnáct sektorů o
délce 256 bytů. I když je to z hlediska IBM PC nestandardní,
tento formát je nutný, protože jiný formát Sharp ROM
nepřečte a CP/M by tudíž pomocí standardní ROM nešel zavést.
Konec Sharp BIOSu strana 0, stopa 1, sektor 1-7
Sharp CCP a BDOS strana 0, stopa 1, sektor 8 až
strana 1, stopa 1, sektor 9
CP/M adresář strana 0, stopa 2, sektor 1-8
Začátek prostoru pro soubory strana 0, stopa 2, sektor 9
------------- dal st ---------------
An embedded and charset-unspecified text was scrubbed...
Name: MZ700 disks.txt
Url: http://mail.ordoz.com/pipermail/sharpmz/attachments/20151109/0f01f74b/attachment-0002.txt
------------- dal st ---------------
An embedded and charset-unspecified text was scrubbed...
Name: mz80k disks.txt
Url: http://mail.ordoz.com/pipermail/sharpmz/attachments/20151109/0f01f74b/attachment-0003.txt
------------- dal st ---------------
Co se mě podařilo zjistit o formátech disket, používaných na počítači
SHARP MZ-800
verze 1.0
=====================================================================
1. Diskety systému SHARP P-CP/M 80
----------------------------------
Formáty disket:
|-----------------------------------------------------------------|
| označení | kapacita | počet | sektorů | systémových | položek |
| | (kB) | stop | na stopu | stop | adresáře |
|----------+----------+-------+----------+-------------+----------|
| 2DMZ800 | 312 | 79 | 32 | 1 | 64 |
| 1DIBMPC | 156 | 40 | 32 | 1 | 64 |
| 2DIBMPC | 316 | 80 | 32 | 1 | 64 |
| 2DMZ80B | 340 | 35 | 80 | 1 | 128 |
| 2DM3500 | 296 | 40 | 64 | 3 | 128 |
| 2DM5500 | 304 | 40 | 64 | 2 | 128 |
|-----------------------------------------------------------------|
Disk Parameter Block (DPB) je oproti standartnímu CP/M upraven takto:
$E100 DPB logického disku A:
$E10F přiřazení fyzického disku a jeho parametry
- Bity 0 a 1 označují fyzický disk. Takto lze jednomu fyzickému
disku přiřadit více disků logických s různými formáty.
- Bity 2 až 7 určují další parametry disku. Pro jednotlivé
formáty jsou použity následující hodnoty:
2DMZ800\ adresy sektorů 1-10h, bez prokládání, stopa
1DIBMPC | 011110 je na jedné straně, číslování stop od
2DIBMPC/ kraje ke středu a na druhé straně od středu
ke kraji
2DMZ80B 000011 adresy sektorů 1-0Ah, 8Bh-94h, neprokládané,
stopa zabírá obě strany diskety (druhá
strana je označena jedničkou v 7. bitu
adresy sektoru).
2DMZ3500\ 001000 adresy sektorů 1-10h, 81h-92h, neprokládané,
2DMZ5500/ stopa zabírá obě strany.
Pro čtení disket formátu CP/M LEC (Lamač) je potřeba kromě DPB
upravit diskeditorem i uvedený byte takto:
001110DD - adresy sektorů 1-12h, 81h-92h, neprokládané, stopa
zabírá obě strany.
DD označuje zvolený fyzický disk.
Tento formát je použitelný pro diskety kapacity 720kB. Pro
nižší kapacity je nutno změnit adresy sektorů. Bohužel,
vymezený prostor je příliš malý pro zapsání sektorů na
disketách HD (1440kB).
$E110-$E13F Vlastní popis fyzických sektorů, jak bylo uvedeno výše.
$E140 Logický disk B:
$E180 Logický disk C:
$E1C0 Logický disk D:
2. Diskety formátu SHARP (formát používaný ROM počítače)
--------------------------------------------------------
Data jsou na disketě uložena následovně:
stopa/sektor
0/1 Je-li zde inicializační program, musí mít 1. byte (typ
souboru) hodnotu 03 a název inicializačního programu musí
začínat IPLPRO (2. až 7. byte). Od 8. po 17. byte je
vlastní název inicializačního programu, 18. byte musí být
0Dh.
Další byty mají tento význam:
19 hodnota 01h označuje soubor chráněný proti zápisu
20 ???
21, 22 délka programu
23, 24 zaváděcí adresa
25, 26 startovací adresa
27-30 ???
31, 32 z těchto bytů lze vypočítat první stopu a sektor,
odkud je uložen soubor na disku.
(Uvedený formát je použit i pro jednotlivé položky adresáře
diskety. Adresář začíná na 1 stopě, 1 sektoru, ale až od
33 bytu. Každá položka adresáře tedy zabírá 32 bytů.)
Dále je na 0. stopě až po sektor 14 včetně místo pro
uložení vlastního inicializačního programu. Ten však může
začínat i kdekoliv jinde ve volné oblasti disku.
0/16 1. byte Číslo disku
2. byte Číslo sektoru, kde začíná volná oblast pro uložení
souborů (standartně 30h, tedy 3. stopa, 1.
sektor.)
3. a 4. byte Počet dosud obsazených sektorů
5. a 6. byte Počet stop a sektorů na disku, čili formát
diskety. Standartně FFh, 04h (80 stop, 16 sektorů
~ 320 kB). Při použití formátu 640 kB (160 stop,
16 sektorů) je nutno tyto byty opravit na FFh,
09h, ovšem až PO ZKOPÍROVÁNÍ systému. I když je
totiž systém kopírován také z formátu 640kB, dojde
při přepisu k nastavení na formát 320kB :-(
7. byte Zde začíná bitová mapa obsazení jednotlivých
sektorů. Pro uvolnění místa na disku po vymazání
souboru nestačí pouze nastavit typ souboru v
adresáři na 00h, ale je nutné opravit i tuto mapu,
jinak je daná oblast stále obsazená. Použitá
velikost mapy však omezuje maximální využitelnou
kapacitu disku na 512 kB, takže při naformátování
na 640 Kb nelze posledních 128 kB využít :-(
Pouze v některých případech se podaří zapsat ještě
jeden soubor, který může část této oblasti využít.
Pak jsou ale problémy s jeho vymazáním (systém
hlásí chybu).
1/1 1. byte Maximální počet položek v adresáři včetně
systémového souboru.
2. byte Znovu číslo disku ???
1/16 Zde začíná adresář diskety. Údaje o uložených
souborech začínají 33. bytem tohoto sektoru, každý
záznam má 32 bytů. Adresář končí na 8 sektoru této
stopy. Z toho plyne, že na disk lze uložit
maximálně 63 souborů libovolných a jeden systémový
soubor.
Celkově lze říct, že používaný systém souborů a uložení dat na disku
má několik vad a nevýhod:
Díky použití bitové mapy pro označení toho, které sektory jsou
obsazené nelze při použití upravené formátovací utility (FDFORMAT160)
využít celou takto dosaženou kapacitu diskety. Přitom použití bitové
mapy je vlastně zbytečné. Uvážíme-li totiž, že soubory jsou na disku
uloženy spojitě, lze ze známé délky souboru a známého počátku uložení
souboru na disku (obojí je v adresářové položce) kdykoliv sestavit mapu
obsazení disku. Nevím však o žádném programu nebo utilitě, který by
takto se soubory zacházel.
Zmíněné spojité uložení navíc znemožňuje využití menších volných míst
na disku, takže když například máme na disku volných třeba 100 kB
v 10 blocích po 10 kB (pro zjednodušení), tak na disketu zapíšeme pouze
soubory do velikosti 10 kb. Systém totiž není schopen rozdělit velký
soubor do několika menších bloků, a hlavně si toto rozdělení nemá kam
napsat. Snad by to mohlo být možné u datavých souborů v BASICu, kde je
na konci každého sektoru odkaz na sektor následující (nebo 00 00, což
znamená konec souboru). Jediným řešením, jak toto místo uvolnit, je
zkopírovat obsah diskety, ovšem po jednotlivých souborech. Tedy aspoň do
doby, než někdo napíše nějaký "setřásací program", který posune všechny
soubory na začátek disku (a správně upraví odkazy v datových souborech).
Nakonec, nějaký pěkný program pro komplexní správu disket a souborů
(formátování, kopírování, mazání, "setřásání" atd.) velmi citelně chybí.
========================================================================
Výše uvedené informace nejsou výsledkem nějakého podrobného bádání, ale
vznikly pouze jako vedlejší efekt při řešení některých problémů, na
které jsem při práci narazil. Mohou být tedy neúplné, zkreslené nebo i
vysloveně špatné. Navíc už jsou nějaký ten rok staré, takže jsem možná
na něco, co jsem si tenkrát nenapsal, zapomněl. Pokud má někdo nějaké
podrobnější, přesnější nebo doplňující údaje, budu velmi rád, když mě
je pošle.
Tomáš Nehybka
FidoNet: 2:421/25.21
Dal informace o konferenci SharpMZ