Single user BIOS 860409 (c) 1986 by ORD-GROUP 25 Single user BIOS Inleiding Onze single user BIOS is een standaard CP/M BIOS met wat extra mogelijkheden. De BIOS is natuurlijk zelfgeschreven en is zo flexibel dat het relatief weinig moeite is om de BIOS aan te passen voor een andere machine, hetgeen we dan ook al enkele keren gedaan hebben. Onze BIOS heeft de volgende speciale mogelijkheden. ALIEN Zie voor een beschrijving hiervan de ALIEN documentatie. Door lock en disk requesting Omdat de drives die wij gebruiken een door-lock hebben, is deze ook gebruikt. Dit heeft het voordeel dat de diskdeur niet geopend kan worden als er een diskoperatie actief is, waardoor onjuist afbreken voorkomen wordt. Als er geen disk in een drive zit, of de disk verwisseld moet worden, is het door-lock uiteraard niet actief. Indien er geen disk in de drive zit, wordt dit door het systeem gedetecteerd, waarna er om gevraagd wordt. In het algemeen betekent dit dat je rustig disks eruit kunt halen, er wordt wel om gevraagd wanneer dat nodig is. Met meerdere disk-compatibele computer systemen aanwezig is dit een groot gemak. De C: drive Tijdens het werken met CP/M is het soms handig om meer als 2 disk drives ter beschikking te hebben. We hebben daarom een virtuele derde disk drive toegevoegd, de C: drive (onder CP/M heten de drives A:, B:, enzovoorts). De C: disk deelt de B: drive samen met de B: disk. Indien nodig verzoekt het systeem de gebruiker om de disks te verwisselen. De software houdt zelf bij welke disk in de B: drive zit: de gebruiker hoeft hier geen rekening mee te houden. De C: drive wordt ook gebruikt voor ALIEN; zie de desbetreffende documentatie. Bootfinder We hebben diverse computer systemen die disk compatibel zijn, maar uiteraard niet dezelfde CP/M kunnen draaien. Dat wil zeggen, die niet dezelfde BIOS, het hardware afhankelijke deel van CP/M, kunnen gebruiken. Bovendien kan de CP/M voor één machine ver- schillende geheugengroottes hebben. Voor een warme start is een CP/M van dezelfde machine en geheugengrootte nodig. Daar na ieder kommando een warme start plaats heeft, zou dit leiden tot de eis dat een disk met een geschikt CP/M systeem er op continue in de A: drive aanwezig moet zijn. Dit was ons een doorn in het oog, en we hebben er dus iets aan gedaan. Bij een warme start probeert het systeem eerst om een geschikte CP/M te vinden vanaf de drive waar die het laatst vandaan kwam. Als er daar geen is, wordt de andere drive geprobeerd. Indien er Single user BIOS 860409 (c) 1986 by ORD-GROUP 26 daar ook geen is, vraagt het systeem om disks te verwisselen, waarna het opnieuw geprobeerd wordt. De computer crashed dus niet meer wanneer er per ongeluk een vreemde disk in de drive zit, maar schakelt gewoon om. Deblocking algorithme CP/M werkt intern met sectoren van 128 bytes. Met de huidige disk-technologie is het efficienter om grotere sectoren te gebruiken. Daarom is de grootte van deze sectoren bij ons 512 bytes (128 x 4). Dit houdt in dat er software gemaakt moet worden om het een in het ander om te zetten. Bij CP/M wordt een algorithme geleverd om dit te doen, maar dat algorithme levert slechts een eenvoudige benadering van wat eigenlijk gewenst is. De door ons gebruikte aanpak werkt met een sector buffer van 512 bytes. Van elk van de 4 partjes van 128 bytes wordt bijgehouden of het geldig is. Voor de totale buffer wordt bijgehouden of zij gewijzigde delen bevat. Indien een partje nodig is dat in de buffer niet valide is, wordt de sector (eventueel partieel) van disk ingelezen. Wanneer de buffer terug geschreven moet worden, wordt zij in zijn geheel valide geëist, en vervolgens in zijn geheel teruggeschreven naar disk. Dit algorithme voert het kleinst mogelijke aantal lees/schrijf operaties uit dat mogelijk is met slechts één buffer. Het verschil met het standaard CP/M algorithme komt hoofdzakelijk naar voren wanneer het schrijven van een sequentieel bestand afgewisseld wordt met lezen of schrijven elders op disk. Er zij op gewezen dat dit algorithme niet specifiek voor sectoren van 512 bytes werkt, doch voor alle veelvouden van 128 bytes. Voor een ALIEN disk wordt dan ook hetzelfde algorithme gebruikt.