zoom.gif

 G DOS

          

GDOS 1.3 : DOUBLE DENSITY

Het nieuwe Atom disc-pack met GDOS 1.0 is gebaseerd op de goedkope maar o zo krachtige WD1793. Kort na de eerste demonstratie was de hard- en de software al zodanig aangepast, dat er vanuit GDDOS 1.0 de nieuwe GDOS 1.3 was ontstaan.
In de eerste versie kunnen geen double density discs gelezen worden. De Atom loopt op 1Mhz en daardoor zijn de loops in het programma te langzaam om data te lezen en te schrijven voor de controller. Dit is opgelost door disc-controller nu via interrupts te laten communiceren. Daardoor ontstaat meer speelruimte in de lees- en schrijfroutines met als gevolg dat double density nu mogelijk is en daardoor de gebruiker de mogelijkheid geeft om 160K per kant op te slaan.
De oude Atom schijven konden niet gelezen worden. Omdat de 8271 controller uit de oude Atom-disc de IBM standaard volledig aan zijn laars lapt. De standaard verlangt dat de sectoren moeten beginnen met nummer 1. De 8271 begint met nummer 0 ! < /br> Daarbij komt nog dat de directory-structuur van GDOS volledig verschilt met die van de oude DOS t,g,v, de mogelijkheid om filenamen een lengte van 15 karakters te geven en het maximaal aantil files per kant nu 46 bedraagt.
Oplossing: introduceer trucs (m.b.v. een programma bijv.) waarbij van de oude Atom schijf sector voor sector of track voor track wordt gelezen en wegschrijft volgens het nieuwe GDOS protocol. Het programma dat dit doet staat aan de staart van dit artikel. Op deze manier is ook het gebrek vin random-access files op te heffen: m.b.v. RSECT en WSECT zijn ook commando's als SPOOL etc. na te bootsen! < /br> In ieder geval is het nu mogelijk de veel te dure ( en beperkte ) controller 8271 te laten varen en gebruik te gaan maken van de overweldigende kracht van de Western Digital 1793.

images/terug.gif

De hardware:

  • disc controller: WD1793 of WD1797
  • 40 of 80 tracks
  • 4Single- en Double density
  • 4shugart compatible bus
  • 4write precompensation
  • 4eigen clock
  • 44 SS- of 2DS drives aan te sluiten
  • 415 IC's
  • 4gedecodeerd op #BFC0-#BFC7
images/terug.gif De software (GDOS 1.31)
  • softwarematige density selectie
  • 46 files per kant
  • filenamen met lengte van 15 karakters mogelijk
  • alle 'oude' DOS commando's (excl. random files)
  • vele nieuwe commando's
  • geschreven in SALFAA 1.5 (symbolische assembler)
  • codelengte ongeveer 3 314 K.
  • echte foutmeldingen
images/terug.gif Instructies GDOS 1.3

Hieronder volgt hier een alphabetische opsomming van de commando's die GD0S 1.3 op dit moment biedt:

legenda  
n= file naam, n = drive nummer (0, 1, 2 of 3)
<naam> = file naam, maximaal 15 karakters
t= track nummer (hex. zonder #)
s= sector nummer (hex. zonder #)
q= aantal sectoren (hex. zonder #)
l= load adres (hex, zonder #)
e= eind adres (hex. zonder #)
x= executie adres (hex, zonder I)
k= qualifier (ASCII karakter)
*CAT n displayed een catalogus op het scherm van de geselecteerde drive
*COS schakelt het cassette operating system weer in, zodat alle vectoren weer goed staan voor b.v. COS of FCOS
*DIR n haalt een directory van schijf n naar binnen op #2000 - #2480
*DD nzet de GDOS in double-density mode en schakelt drive n voor.
*DELETE <naam>haalt de filenaam weg uit de directory. De DOS kent nu de file niet meer.
*DOS schakelt het GDOS 1.3 in, waarna alle commando's te gebruiken zijn.
*DRIVE nselecteert de drive n
*ENABLE'enabled’ de gebruiker WIPE of FORMAT te gebruiken
*FOLDOUT t ‘vouwt' een condensed opgeslagen track formaat van track tuit in het geheugen vanaf #2000
*FORMAT nformatteert een schijf in de geschakelde density in drive nummer n
*GO adress te vergelijken met LINK
*HELP geeft op het scherm een overzicht van alle commando's inclusief het startadres daarvan
*INFALL n geeft op het beeldscherm van alle files op de schijf informatie
*INFO <naam> displayed informatie tabel omtrent de opgegeven file volgens: loadadres execadres endadres filelen startsector
*KEEP nslaat de directory van drive n op in de tweede directory op dezelfdeschijf t.b.v. directory-crashes
*LIB zelfde als CAT, doch directory wordt gelezen vanuit het geheugen en niet vanaf schijf.
*LOAD <naam> (l)laadt een file in het geheugen vanaf adres l, Indien l niet opgegeven, dan vanaf zijn load- adres zoals deze gesaved is op schijf.
*LOCK <naam>'locked' een file op schijf
*MONdisplayed op het beeldscherm tijdens DOS handling
*NOMONdisplayed NIET tijdens DOS handling
*OSCLI …… $13waanzinnig mooi commando. De volledige beschrijving is te vinden in AcornNieuws Nr,4.4 geschreven door de programmeur van dit commando: Bram Poot.
*RECOVERhaalt tweede directory van schijf en zet het in het geheugen en saved het wederom in de eerste directory.
*RENAME <naam> <naam> de naam van de file (naam1) wordt gewijzigd in de tweede naam (naam2)
*RSECT t s q memHaalt sector(s) vanaf schijf binnen. Beginnende bij sector s op track t. n totaal haalt het q sectoren binnen en plaatst deze achter elkaar in het geheugen vanaf mem.
*RUN <naam> file met de juiste naam wordt geladen en wordt direct gestart (springt naar executie adres).
*SAVE <naam> l e {x} saved file op schijf onder de naam <naam> met loadadres l en eindadres e. Optioneel is het executieadres x.
*SD n schakelt single-density mode en drive n in.
*SETk zet de qualifier op karakter k
*TITLE <naam> geeft de schijfkant een titel. (titel maximaal 14 karakters)
*UNLOCK <naam> opgegeven file wordt 'geunlocked'.
*USEkgeeft tijdelijk de qualifier de karakter k
*VERIFY n verifieert de schijf in drive n. (indien onbetrouwbaar dan zal er een vraagteken achter het track nummer geplaatst worden)
*WIPEdit commando zal. indien de faciliteit ge-'enabled' is de eerste directory wissen, d.w.z. bij een catalog opvraag zal de GDOS geen files meer vinden. Heb je er spijt van dan zal via RECOVER de tweede directory weer in de eerste geplaatst worden en men heeft weer de oude schijf (natuurlijk alleen indien deze ge'keep'ed was).
*WSECT t s q mem schrijft q sectoren naar schijf vanaf het adres mem, op track t te beginnen bij sector s
*WTRACK t schrijft de track t, welke uitgevouwen is op adres t200D. naar schijf,
* <naam>autostart. File wordt binnen gehaald en gestart.
images/terug.gif

De foutmeldingen

ErrorOmschrijving
NAME OF FILE?Indien de opgegeven file de 15 karakters overschrijdt of de file- naam is voorafgegaan door een dubbele quote maar hiermee niet af gesloten, dan zal deze foutmelding gegeven worden.
SYNTAX? Indien een commando niet beëindigd is met ‘ ; ‘ of een 'return' zal deze melding gegeven worden.
UNKNOWN DRIVE NUMBER
bij elk drivenummer ongelijk aan 0.1.2 of 3 zal deze melding ken- baar gemaakt worden,
FILE PROTECTED Een file welke 'gelocked' is, zal deze niet vervangen kunnen worden door een nieuwe met dezelfde naam of 'gedelete' kunnen worden. Bovenstaande foutmelding maakt dit duidelijk,
FILE NOT FOUND Een file opvragen welke niet op schijf staat of een qualifier heeft die niet overeenkomt met de huidige qualifier, wordt beloond met bovenstaande uitspraak.
COMMAND NOT YET SUPPORTED Het spreekt voor zich. Commando welke opgegeven is, bestaat (nog) niet.
FATAL SEEK ERROR TRACK: t De track t is niet gevonden, De oorzaak kan zijn: een ongeformatteerde schijf: een 'kapotte' schijf of de verkeerde density- selectie
CRC CRC fout, Oorzaak: kapotte sector, klok verschuivingen. Probeer de handeling nog een keer of probeer met RSECT te redden wat er te redden valt en formatteer de track opnieuw met FOLDOUT en WTRACK en save de sectors met WSECT.
BAD DATA Klokverschuivingen in de hardware is hier meestal de oorzaak. Probeer het nog een keer of anders zie CRC.
FACILITY NOT ENABLEDFORMAT en WIPE geprobeerd, zonder een ENABLE vooraf geeft deze foutmelding.
WRITE PROTECTED DISCSchrijfoperaties naar een beschermde schijf zullen beloond worden met deze spreuk.
WRITE FAULT TR: t SCT: sSchrijffout in sector s op track t. Oorzaak kan een kapotte sector zijn. Zie CRC
RECORD NOT FOUND TR: t SCT: s Sector s niet gevonden in track t. Oorzaak: verkeerde density. of foutief sectornummer bij RSECT en / of WSECT of een kapotte sector / track of een ongeformatteerde schijf.
NO SECTORS?Voor het aantal sectoren in RSECT of WSECT is 0 opgegeven. Dit is natuurlijk tamelijk onzinnig.
MAXIMUM ACCOUNT ON DISC Het maximum van 46 files op een schijfkant is bij deze melding bereikt.
NO ROOM ON DISC De te saven file past niet meer op de geselecteerde schijfkant.
images/terug.gif