*** HANDLEIDING VAN MDL-LIB ***

- COPYRIGHT 1990 BY MDL-SOFT -

Als  u  dit  nog  niet  gedaan  heeft,  lees  dan  eerst  de
inleiding, in het bestand INLEIDNG.TXT!

Het  bestand  DISKTOOL  bevat  verschillende   uitbreidings-
procedures voor beheer van de schijf. Turbo Pascal bezit  al
een groot aantal  standaardprocedures  om  met  schijven  te
werken, maar een directory-opdracht zat er bijvoorbeeld  nog
niet in (die kunt u nu makkelijk zelf maken). Ook opdrachten
om rechtstreeks sectoren van schijf te lezen en naar  schijf
te schrijven ontbraken.

Voor de disk-procedures zult u vaak een drive-nummer  moeten
opgeven  (geen  letter). Hier geldt altijd: 0 =  de  default
(huidige) drive, 1 = drive A, 2 = drive B, enzovoort.

Hieronder  worden  de procedures stuk voor  stuk  besproken,
maar  ik  wil  eerst  nog even uw aandacht  richten  op  een
tweetal in DISKTOOL.VAR gedefinierde systeemvariabelen.

Als u een COM-file vanuit DOS aanroept, wordt de  parameter-
regel  in  een  speciaal daarvoor  bestemd  stukje  geheugen
geplaatst. Dit stukje geheugen is in Pascal af te vragen met
de functies PARAMCOUNT en PARAMSTR (zie uw Pascal handboek).
Echter, twee stukjes geheugen zijn niet af te vragen. U kunt
in  de parameter-regel namelijk maximaal twee  bestandsnamen
opgeven,  die  door  DOS keurig worden  vertaald  naar  FCB-
formaat  (File  Control Block). Dit wil zeggen, dat de  naam
uit precies 8 karakters bestaat (evt. opgevuld met spaties),
en  de  extensie  uit  precies 3. Vr  de  naam  staat  het
drivenummer,  of  255 als er een  verkeerde  driveletter  is
opgegeven. Deze gegevens kunnen rechtstreeks in het FCB voor
SearchFirst  (zie aldaar) worden gecopierd, en ze staan  in
de  variabelen  'fname1' en 'fname2', die gedeclareerd  zijn
als ARRAY[1..12] OF CHAR ABSOLUTE xxxx.
Het is zaak om deze variabelen direct aan het begin van  het
programma  in  andere variabelen te copiren,  aangezien een
Turbo  Pascal programma het desbetreffende  stukje  geheugen
ook gebruikt om tijdelijk gegevens in op te slaan.

----

Naam      : MsxBdos
Actie     : Roept BDOS aan
Soort     : Procedure
Declaratie: Procedure MsxBdos;

Met deze procedure kunt u de MSX-BDOS aanroepen. Deze  wordt
hier  niet   uitgelegd,   hiervoor   dient   specialistische
literatuur  te  worden  geraadpleegd.  Een  goed   overzicht
staat bijvoorbeeld in MSX Computer Magazine nummer 17.

De register-waarden worden, net  als  met  Bios,  SubROM  en
CalBas uit LibRegs gehaald en daarin weer teruggezet.

----

Naam      : SetDrive
Actie     : Zet default drive
Soort     : Procedure
Declaratie: Procedure SetDrive(drive:byte);

Deze  procedure  stelt de default drive in. 'drive'  is  het
drive-nummer. 0 heeft geen effect, aangezien dat de  default
drive voorstelt.

----

Naam      : LoggedDrive
Actie     : Leest default drive
Soort     : Functie
Declaratie: Function LoggedDrive : byte;

Deze functie geeft het nummer van de default drive terug.

----

Naam      : ReadSector
Actie     : Leest sectoren van schijf
Soort     : Procedure
Declaratie: Procedure ReadSector(drive:byte;eerste:integer;
                                 aantal:byte;var sectoren);

Streng verboden toegang voor niet-deskundigen!!
Deze  procedure  leest sectoren van schijf. 'drive'  is  het
drivenummer, 'eerste' is de eerste te lezen sector, 'aantal'
het aantal te lezen sectoren. 'sectoren' is een typeloze VAR-
parameter, waarin de sectoren komen te staan. ZORG DAT  DEZE
VARIABELE GROOT GENOEG IS, anders crasht uw systeem!

----

Naam      : WriteSector
Actie     : Schrijft sectoren naar schijf
Soort     : Procedure
Declaratie: Procedure WriteSector(drive:byte; eerste:integer;
                                  aantal:byte; var sectoren);

ZEER streng verboden voor niet-deskundigen!!!
Deze procedure schrijft sectoren naar schijf. 'drive' is het
drivenummer,  'eerste'  is de eerste  te  schrijven  sector,
'aantal' het aantal te schrijven sectoren. 'sectoren' is een
typeloze  VAR-parameter, waarin de te  schrijven  sector(en)
staan.
Wellicht  ten overvloede wijs ik erop dat een verkeerd en/of
ondeskundig  gebruik  van  deze  procedure  kan  leiden  tot
verminking  van  een  schijf.  Voor  iedereen  geldt:  eerst
uitproberen  op een kladschijf, waarvan de inhoud  eventueel
verloren mag gaan.

----

Naam      : SearchFirst
Actie     : Zoekt eerste keer naar bestandsnamen
Soort     : Functie
Declaratie: Function SearchFirst(var FCB;var info):boolean;

Deze  functie zoekt de eerste keer naar een reeks filenamen.
De parameters zijn:

'FCB' is het File Control Block, waarin de zoekstring en  de
zoekdrive  staat.  De  lengte daarvan MOET  37  bytes  zijn,
aangezien  we nog wat ruimte voor systeem-informatie  moeten
openhouden.
De opbouw is als volgt:
Het eerste byte bevat het drivenummer. 0=default, etc.
De  volgende 8 bytes bevatten de zoeknaam. Vraagtekens  zijn
toegestaan,  GEEN  sterretjes. Als de naam korter is  dan  8
posities, moet hij opgevuld worden met spaties.
De  volgende  3 bytes bevatten de zoek-extensie.  Idem  dito
verder, alleen is de lengte 3.
De rest van de variabele kan het beste op 0 gezet worden.

Als er iets gevonden is, levert de functie de waarde TRUE af
en  staat  de gevonden filenaam in de variabele 'info',  die
hetzelfde formaat heeft als 'fcb', maar die slechts 32 bytes
lang is. Anders levert de functie de waarde FALSE af.

----

Naam      : SearchNext
Actie     : Zoekt naar volgende filenaam
Soort     : Functie
Declaratie: Function SearchNext(var info):boolean;

Deze functie werkt precies hetzelfde als SearchFirst, alleen
zoekt  deze  naar  de  volgende  naam.  Er  hoeft  geen  FCB
opgegeven  te worden (sterker nog: dat mag niet), dat is bij
SearchFirst al opgegeven. De gevonden naam komt ook weer  in
'info' te staan.

----

Naam      : Dskf
Actie     : Geeft vrije ruimte op schijf
Soort     : Functie
Declaratie: Function Dskf(drive:byte):integer;

Deze  functie levert het aantal vrije kilobytes op de schijf
in drive-nummer 'drive' af.
                                                                                                                      