[SharpMZ] Chovani realneho FD radice u disket s "cizim" formatem
Michal Hucik - ORDOZ
ordoz na ordoz.com
Neděle Leden 24 22:13:55 CET 2016
Ahoj Vasku,
a) nejedna se o 0. stopu, ale o 1. stopu (diky invertovanym stranam)
b) radici je uplne jedno jaky je format sektoru, prikaz znel jasne: READ
SECTOR a nikdo uz do FDC nepredesilal zadny predpoklad o tom jak by mely
byt ty data velka... Existuje jeste prikaz READ SECTOR(S) s platnosti do
konce stopy, ale to nas nyni moc nezajima.
Problem je tedy v rutine vykonavajici cteni.
Po vyse zminenem prikazu si to radic chvili necha honit hlavou. Cteci
program v tu chvili zurive stale dokola kontroluje status registr, dokud
se mu v nem neobjevi flag DRQ - data request, to je pro cteci program
signal, ze si ma vyzvednout bajt - coz udela zpravidla pres IN, nebo
jeste lepe pres INI.
Jakmile si program prevezme svuj vytouzeny datovy bajt, tak se opet
vrhne na cyklicke nacitani status registru a z nej si testuje:
1) je radic stale ve stavu BUSY? (resp. neskoncila ta uz operace cteni?)
2) je DRQ? (nejake dalsi bajty by nebyly?)
3) neni nahodou DATA_LOST? (treba pokud jsme se nekde zakecali a
nestihli jsme si vcas prevzit vyse avizovany bajt)
V pripade, ze nedoslo k zadne chybe, tak nam radic predal vsechno co mel
v sektoru, ve statusu neni zadny ERROR a status hlasi OK... Idealni
vesmir - v takovem by se ten tvuj vetsi sektor nacetl.
Jedina neprijemnost, ktera by v tomhle idealnim vesmiru mohla nastat je
to, ze by treba tech nadbytecnych 256 bajtu neco prepsalo.
Protoze programator nikdy nemuze zcela duverovat HW, tak bud uz u toho
IN, ci INI, nebo alespon po ukonceni celeho cteni se provede kontrola
poctu prenesenych bajtu ... Pri tehle kontrole jde ovsem o to, ze jsme
cekali 256 bajtu - ani vic, ani min. Nikoho tedy nijak vyznamne
nepotesi, ze jich bylo nacteno dvojnasob - cteci program se tedy
neodvratne vyda cestou k FDC ERROR!
A to se porad bavime jen o tom 1. sektoru ve kterem se neocekaval zadny
opravdovy program - jen IPLPRO header s informaci o tom od ktereho
alokacniho bloku se ma program nacist a kolik bajtu bude mit. Kdyby jsme
teoreticky preskocili tu cast, kdy si Sharp ROM nacte IPLPRO header, tak:
- ROM si spocita z cisla alokacniho bloku fyzicky sektor, stopu a
stranu, odkud ma zacit cist zavadec: pocita natvrdo s tim, ze stopa ma
16 sektoru, mohlo by tedy dojit k tomu, ze ROM pozada radic o cteni
neexistujiciho sektoru (tva disketa jich ma jen 9)
- (ted si nejsem uplne jisti, zda tohle dela jen BASIC, nebo zda to dela
i ROM): aby se data nacitala "rychleji", tak se pouziva vyse zminene
sequencni cteni od pozadovaneho sektoru az do konce stopy a az tam, kde
se cteci rutina dopocita k tomu, ze uz nema duvod cist do konce stopy,
tak zacne cist jednoblokove. Musel by jsi tedy ROMku i nejak sikovne
mystifikovat o tom, jak je tvuj zavadec velky, aby byl nacteny
spravne... Jenomze ouvej - IPL zavadec nacetl nas program na adresu
0x1200 a na pozadovanou adresu jej presune az po uspesne dokoncenem
cteni - pokud jsme kecali s delkou, tak mame dalsi duvod ke kolizi ...
No a proto se na Sharp disketach pouziva 1. stopa v MZFS formatu ;)
Michal
Dne 24.1.2016 v 15:55 Vaclav Peroutka napsal(a):
> Ahoj,
>
> mam takovou kacirskou myslenku, nicmene nevim, nakolik je schudna. Je
> to dotaz spise na Radka, Martina nebo Petra, kteri maji skutecne
> floppy radice.
>
> Vim, ze nulta stopa pro Sharpa ma format 16 sektoru po 256B. Co se ale
> stane, kdyz se da do Sharpa disk s nultou stopou 9x512B a korektnim 0.
> sektorem s IPLPRO textem a v 1. sektoru loader pod 256B?
>
> Zkousne to WD279x nebo bude error ?
>
> Vasek
>
>
> _______________________________________________
> 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/20160124/eb02f117/attachment.html
Další informace o konferenci SharpMZ