[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