HANDLEIDING
===========
Bij het TELEC Diskdrivepakket voor de Acorn Atom.
Bevat:
- Disk Drive TEAC FD-55A of B
- Controller PCB
- Disk Operating System
- Utilities diskette
- Handleiding
- Onderdelen
INHOUD
inleiding..............................................blz. 2
de controllerprint.................................... blz. 3
de diskette............................................blz. 4
de disk drive..........................................blz. 6
de voeding.............................................blz. 7
de systeemcommando's...................................blz. 8
andere *-commando's....................................blz.13
DOS commando's in de Basic.............................blz.14
ASCII files............................................blz.19
subroutines COS/DOS....................................blz.21
adressen OS-calls / block O............................blz.24 
foutmeldingen..........................................blz.25 
technische beschrijving................................blz.26
utilities-diskette.....................................blz.31
connectoren............................................blz.32
memory map.............................................blz.33 
schema.................................................blz.36
doorsnede / figuren....................................blz.37
gegevens...............................................blz.38
C Copyright TELEC BV 1982 JTE
1

INLEIDING ========= Deze handleiding beschrijft de mogelijkheden en de onder- delen van het TELEC Diskdrive-pakket. Het bijgeleverde onder- delen kunnen maxiaaal twee dubbelzijdige, of vier enkel- zijdige drives op de Acorn Atom aangesloten worden het Disk Operating Systeem (DOS) is hierop voorbereid. Toepassing in een ander 6502-systeem is in principe mogelijk, maar dan zal het DOS aan dit systeem aangepast moeten worden. Op de bijgeleverde controllerkaart bevinden zich o.a. de DOS-EPROM en de INTEL 8271 Floppy Disk Controller (FDC). Door gebruikmaking van deze geavanceerde electronica is zeer snelle programma- en dataverwerking mogelijk. Het DOS wordt in het geheugen geadresseerd. Verder gebruikt het systeem adreslocaties voor de FDC en geheugenlocaties voor de catalog- en filebuffers Deze geheugenlocaties moeten aanwezig zijn: bij gebruik van de TELEC 64K geheugenkaart is dit het geval. Een andere mogelijkheid is door middel van het "stapelen" van geheugen-IC's. In de Acorn Atom moet de 64-polige connector PL7 en de IC's 2, 3, 4 en 5 gemonteerd zijn. Verder worden twee draden, komend vanaf de controllerkaart, nl. CLOCK en CHIPSELECT met de hoofdprint van de Acorn Atom verbonden. Zie voor technische beschri jving blz. 26 e.v. De diskettes zijn van het zgn. soft-sectored type; ze moeten met behulp van de bijgeleverde utilities-diskette eerst geformateerd worden. De tracks (sporen) worden hierbij o.a. genummerd van 0 tot 40. Op track 0 komt de catalog (inhoudsopgave) van de diskette te staan. Het maximum aantal entries (verschillende programma’s) op een diskette is 31 bij enkelzijdig, en dus 62 bij dubbelzijdig gebruik. De capaciteit bedraagt ca. 100 Kbyte per kant. Het DOS kan met behulp van een andere MONITOR-ROM omgebouwd worden tot autostart-DOS (nadere inlichtingen op aanvraag). - LEES VOOR HET INBOUWEN DE TECHNISCHE BESCHRIJVING - (blz.26 e. v.) - TELEC BV is niet aansprakelijk voor gevolgen van eventuele onjuistheden in deze handleiding. - Het vermenigvuldigen en/of afdrukken van deze handleiding of delen hiervan zijn zonder de schriftelijke toestemming vooraf van TELEC BV uitdrukkelijk verboden. 2
DE CONTROLLER PRINT De TELEC Controller print is apeciaal ontwikkeld voor de Acorn Atom en bevat naast een aantal TTL-circuits, een INTEL 8271 FDC en het DOS. De kaart is zodanig ontworpen, dat deze in de Acorn Atom past (op PL7), of in b.v. een 19" Euro-rack system te gebruiken is (zie hiervoor fig. 11). De afmetingen bedragen ca. 10 * 14 cm. De 8271 FDC is een zeer geavanceerd besturingscircuit, dat een aantal taken van de CPU overneemt bij lees- of schrijf- operaties op diskette, zodat het syeteem en de CPU ook afzonderlijk kunnen werken. Dit in tegenstelling tot bepaalde controller-kaarten waarbij eigenlijk alleen de CPU het werk doet. De FDC wordt geadresseerd op #0A00 – #OA80; de decodering hiervan gebeurt met IC 4. De DOS-EPROM op de controllerprint wordt op blz. #Exxx geadresseerd. De decodering hiervan gebeurt op de hoofd- print, nl. door. IC 23 (74LS138, pen 9). Door middel van een draadverbinding wordt dit CHIPSELECT-signaal met de DOS- EPROM op de controllerprint verbonden. Het systeem heeft zelf enig geheugen nodig voer de catalog- en filebuffers. Dit geheugen bevindt zich op de adreslocaties #2000 - #27FF, en zal nog bijgeplaatst moeten worden, want het is in de "normale" Acorn Atom niet aanwezig (zie hiervoor blz. 26, 33). De adresdecodering is echter wel aanwezig. Om de controllerprint zo betrouwbaar mogelijk te doen werken, is de systeemklok "afgetapt": pen 11 van IC 44 op de hoofd- print is de 2MHz uitgang van de deler van de oorspronke- lijk 4 MHz systeemklok (CLOCK). De hele computer inclusief de cantrollerkaart blijft op 1 MHz draaien, oedat in de 8271 FDC de 2 MHz nog een keer gedeeld wordt. De IC’s 5 en 6 (SN 7438) worden als buffer geschakeld tussen de FDC en de diskdrive IC’s 3 en 7 vorman samen de zgn. DATA-WINDOW. Omdat de clock- en data-signalen tegelijk op de diskette gezet worden tijdens het schrijven, moeten ze weer van elkaar gescheiden worden als data teruggelezen wordt; dit gebeurt dan d.m.v. deze DATA-WINDOW. IC 3 vormt een MMV (mono- stabiele multivibrator) en IC 7 geeft op bepaalde momenten "resets". De optional output van de 8271 FDC wordt gebruikt om samen met een inverter en een versterker (T1 en T2) een side select output te maken, zodat de drive, mits van een tweede lees / schrijfkop voorzien, dubbelzijdig kan werken. Het NMI-signaal wordt gebruikt om de FDC en de CPU te synchroniseren. Voor verdere informatie wordt verwezen naar de datasheet van de INTEL 8271 FDC; deze is op aanvraag leverbaar. 3 DE DISKETTE =========== Om beschadiging te voorkomen moet op de volgende punten worden gelet: * Raak nooit met de handen het schijfoppervlak aan. * Doe de diskette in de beschermhoes als ze niet gebruikt wordt. * Bij het insteken van de diskette in de drive voorzichtig doordrukken. Dan pas deurtje sluiten. * Diskettes nooit buigen. * Diskettes mogen niet verhit worden (zonlicht) omdat ze dan kunnen gaan "hobbelen". * Diskettes niet in de buurt van magneetvelden als TV’s, luidsprekerboxen, voedingstrafo’s e.d. bewaren. * Bij het opnieuw formateren: van reeds beschreven diskettes gaat de "oude" inhoud verloren. * Diskettes bewaren bij temperaturen tussen l0 en 50 graden Celcius. * Bevestig aan de diskette geen paperclips of andere dingen waarmee druk kan worden uitgeoefend. * Schrijf niet met ballpoint o.i.d op het diskettelabel, maar gebruik bv. een viltstift. De diskette bestaat uit een beschermende hoes, met daar binnenin een schijfje wat kan draaien. De oppervlakte van dit ’mylar’ schijfje is bedekt met een metaaloxidelaag, te vergelijken met de laag op audiotape. In de hoes zit een aantal openingen (fig. 2) die dienen voor de aandrijving, index-pulsen, het kop-spoor en opnamebeveiliging (write protect). Door deze openingen is een gedeelte van de magne- tische laag zichtbaar; deze mag beslist niet beschadigd worden. De diskette kan als geheel beveiligd worden tegen onbedoeld wegschrijven van data. Hiertoe wordt de inkeping aan de zijkant afgeplakt (zie fig. 2). De kant met de labels is eigenlijk de "onderkant" van de diskette; bij dubbelzijdig gebruik wordt deze zijde gekozen met *DRIVE 2; met *DRIVE O wordt de kant zonder labels geselecteerd. De tracks op de diskette zijn van buiten naar binnen genummerd van O tot 40 (c.q. 35). Het buitenste spoor is track 0. De diskettes moeten voordat ze de eerste keer gebruikt kunnen worden (eenmalig) geformateerd zijn. Hiertoe wordt een formateer-programma bijgeleverd (utilities-diskette). De diskette wordt bij dit formateren omderverdeeld in tien sectoren. Omdat in de datastroom een combinatie kan zitten, die overeenkomt met de sectoridentificatie, wordt de start van een reeks sectoren aangegeven met de indexpuls, veroorzaakt door een gat in de diskette. Bij zgn. hard-sectored disks bevindt zich zo'n indezgat aan het begin van iedere sector. Het aantal sectoren ligt dan ook vast, terwijl het in principe mogelijk is bij soft-sectored diskettes het aantal sectoren te veranderen. Dit gebeurt dan tijdens het formateren. 4
https://acornatom.nl/hardware/fdc/telec/fig2.gif https://acornatom.nl/hardware/fdc/telec/fig3.gif
Hard-sectored diskettes kunnen in dit systeem dan ook niet gebruikt worden. Iedere keer als er informatie gelezen wordt vanaf de diskette, wordt een checksumberekening gedaan; de uitkomst hiervan wordt vergeleken met de waarde, die vastgelegd is in de CRC-code op de diskette. Komen de waarden niet overeen, dan zal een (vermoedelijke) fout vastgesteld worden door de 8271 FDC. Deze geeft echter maxiaaal tien keer een nieuwe leesopdracht, voordat een werkelijke foutmelding aan de CPU wordt doorgegeven. sectoren Het aantal sectoren wordt door het formateer-programma bepaald (standaard 10 sectoren). Iedere sector kan 256 bytes bevatten. Daarnaast wordt nog een aantal bytes gebruikt voor sector-identificatie etc. Deze sectoridentificatie bevat een Address Mark, Track Address, Head Adress, Sector Address, Sector Length en een CRC (checksum) code. Er zijn daarom maar 2560 van de totale 3125 bytes per track beschikbaar voor werkelijke data-opslag. fig 1 - soft sector layout 5
DE DISK DRIVE ============= Als diskdrives kunnen een aantal types worden gebruikt. Bij het diskdrivepakket wordt de TEAC Fb-55A of FD-55B geleverd: van deze drive volgt nu een korte beschrijving. Vanaf de voorkant gezien, heeft de drive een horizontale opening, met aan de rechterzijde daarvan een vergrendeling. Door deze vergrendeling naar rechts opzij en omhoog te draaien, komt de insteekopening voor de diskette vrij. Overtuig U ervan, dat dit ook werkelijk het geval is. Bij verzending van de drive wordt een kartonnen plaatje in de opening gestoken; dit moet eerst verwijderd worden. Nu kan de diskette in de drive gebracht worden (de labels bovenop, met de langgerekte sleuf naar de drive toe - zie fig. 3); een lichte druk is voldoende om de diskette geheel in de drive te schuiven; pas hierna map de vergrendeling gesloten worden (naar linksonder draaien). Hierdoor wordt de diskette gecentreerd en aan de aandrijving gekoppeld. Een LED op de voorzijde geeft aan dat de drive in gebruik is. Op de onderzijde ie de direct-drivemotor zichtbaar: deze is zodanig geconstrueerd, dat moterlawaai tot een minimum beperkt blijft; de omwentelingssnelheid is 300 omw/min. De stappenmotor zorgt voor het bewegen van de lees/schrijfkop over de diskette, waarbij elke "stap" een nieuw track (spoor) betekent. Deze stap-pulsen worden door de 8271 FDC gegeven. Voor het koptransport wordt gebruik gemaakt van een metalen band, wat zeer snel en precies verplaatsen van de kop(pen) mogelijk maakt (track-to-tracktime 6 ms.). Met behulp van een sensor wordt vastgesteld, of de kop op track O staat, en met een andere sensor of de schijf van een opnamebeveiliging is voorzien. Van buiten (track 0) naar binnen geteld heeft de TEAC FD-55 40 tracks per kant. Bij gebruik van een dubbele lees/schrijfkop (FD-55B) blijft het aantal tracks hetzelfde, maar wordt er nu ook gebruik gemaakt van de bovenkant van de diskette. Beide koppen bewegen tegelijkertijd over de schijf, waarbij softwarematig tussen beide koppen geschakeld kan worden, om "boven" of "onder" te kiezen. De kop wordt automatisch van de diskette gehaald, wanneer gedurende 10 omwentelingen geen nieuwe lees/schrijf opdracht is gegeven. Een fotocel/diodecombinatie zorgt voor de indexpulsen aan de hand van het indexgat van de diskette. Aan de achterzijde van de drive bevinden zich de volgende aansluitingen: een 4-polig chassisdeel voor de voedings- aansluitingen (5V en 12V), en een 34-polige aansluiting voor de verbindingskabel met de computer. Worden twee drives tegelijk aangesloten, dan kunnen beide 34-polige connectoren parallel op dezelfde kabel gezet worden. In de drive aan het eind van de kabel kan het pull-up weerstandsnetwerk blijven zitten; uit de andere drive moet dit verwijderd wordenn het bevindt zich op de print bovenop de drive (zie fig. 3, 10) 6
DE VOEDING ========== De voeding die voor de disk drive gebruikt wordt bestaat uit een 5V en een 12V deel. Het 12V gedeelte moet gemiddeld 1A kunnen leveren, met kortstondige pieken van ca. 1.6A; het 5V gedeelte gemiddeld 500mA. Deze waarden gelden per drive: een voeding geschikt voer beide drives zal dus met 12V/3A en 5V/5A voldoende bemeten zijn, eventueel inclusief de (5V) voeding voor de Acorn Atom. Dit laatste verdient enige aandacht. De voeding voor de Acorn Atom kan ook uit dezc voeding betrokken worden: het aantal "kastjes" wordt niet nog meer uitgebreid en het altijd spelende probleem van heet wordende koelplaatjes kan hiermee afdoende aangepakt worden. Door de spanningsregelaars met het bijbehorende koelplaatje uit de Acorn Atom te verwijderen wordt veel ellende opgelost. In de kast moet dan een voedingschassisdeel aangebracht worden dat geschikt(er) is voor het verwerken van grotere stromen dan het "originele" chassisdeel (ook link 6 en 7 solderen). Een goede beveiliging tegen verkeerd aansluiten, evenals het goed ontkoppelen en bufferen van de voedingsspanning is dan wel vereist. Ook wordt een dikkere voedingsleiding aangeraden dan standaard wordt bijgeleverd. Deze "kabel" fungeert bij grotere stromen zelf als weerstand met als resultaat een spanningsval over deze kabel van 1V of meer (meet dit maar eens!). Een geschikte diameter zal ca. 0.75 kwadraat zijn. Het is af te raden, computer-voedingsleidingen zonder extra maatregelen langer dan 1 meter te maken in verband met storingen. Hieronder volgt een principeschema van de voeding: fig 4 - 5 + 12 Volt voeding 7
SYSTEEMCOMMANDO'S ================= Hieronder volgt een bespreking van de commando’s die in het DOS gebruikt worden. Het DOS wordt opgestart met het commando: *DOS [RETURN] Hierna kunnen alle andere ATOM-BASIC commando’s nog steeds in ongewijzigde vorm gebruikt worden, terwijl alle DOS- commando’s voorafgegaan moeten warden door een "*". Na een [BREAK] moet het DOS opnieuw opgestart worden. Door het DOS wordt een aantal foutmeldingen gebruikt, die op blz. 25 worden toegelicht. definitie <s> Met <S> wordt een karakterstring bedoeld. Als de string geen spaties bevat en niet met aanhalingstekens begint, mag deze string zonder aanhalingstekens worden ingevoerd. Bevat de string wel " dan moeten ze twee keer worden ingevoerd. TEST wordt: TEST of "TEST" "TEST - """TEST" "TEST" - """TEST""" "[SPATIE] - """[SPATIE]" T E S T - "T E S T" Als <S> wel spaties bevat moet de gehele string tussen aanhalingstekens geplaatst worden. <S> mag voorafgegaan worden doer spaties en moet een even aantal aanhalingstekens bevatten De maximum lengte voor <S> in een filenaam is 7 letters. Een term tussen rechte haken [] geeft een via het toetsenbord in te voeren functie aan b.v. [BREAK]. diskettetitel Onder de diskettetitel wordt de tekst verstaan die bij een *CAT bovenaan het scherm komt te staan. Deze titel bevat diskettenaam, drivenummer en qualifier. Het DOS herkent de op de volgende bladzijden behandelde commando’s. Ze kunnen worden afgekort door net zoveel letters te gebruiken als nodig is om twee commando’s van elkaar te kunnen onderscheiden, gevolgd door een punt. Tussen een commando en b.v. de filenaam hoeft geen spatie gebruikt worden. z.o.z. 8
commando's ---------- *CAT X *. ========================== Zorgt voor het opslaan van de catalog van de met X gespecificeerde drive in het geheugen en schrijft alle filenamen, diskettetitel, drivenummer en qualifier op het beeldscherm. Wordt het nummer van een niet aangesloten drive ingevoerd, en een *CAT gevraagd, dan zal het systeem daar wel naar gaan zoeken, maar niets vinden. De aangesloten drives gaan wel draaien, maar de enige manier om dit te stoppen is dmv. [BREAK). Bij reset wordt X automatisch op O gezet. Een catalog ziet er b.v. na *CAT 0 [RETURN] als volgt uit: UTILITIES 1 DRIVE 0 QUAL n : #FORM #DISASS n: HELP waarbij de diskettenaam UTILITIES 1 is; FORM, DISASS en HELP zijn de verschillende filenamen en DRIVE 0 geeft aan dat de op dit moment gebruikte drive het nummer 0 heeft. Twee filenamen zijn geLOCKED (aangegeven met #), om ongewild wissen te voorkomen. Dit gebeurt met *LOCK <S>; zie #LOCK. De dubbele punt geeft de plaats aan, waar de qualifier staat. Er is maar 1 file onder de titel-qualifier "n" weggeschreven namelijk: HELP. De andere files (FORM, DISASS) zijn onder qualifier (spatie) weggeschreven. Om deze files te kunnen gebruiken, moet de qualifier geSET worden met (spatie). Bij gebruik van *CAT of *. (afkorting voor *CAT) zonder nummer wordt aangenomen, dat het commando voor de op dat moment in gebruik zijnde drive bedoeld is. Als de diskette verwisseld wordt moet altijd een nieuw *CAT- of *DIR-commando gegeven worden oe de catalog in de buffer te zetten. *DIR X *D. ========================== Dit zet de catalog van de in X gespecificeerde drive in de catalog buffer (#2000 - #23FF) en niet op het beeldscherm. Als files vanuit programma’s worden aangeroepen is het aan te raden eerst een "directory" DIR aan te vragen. *DRIVE X *DR. ========================== Met dit commando kan drive X geselecteerd worden, of (bij dubbelzijdig gebruik) de boven- of onderkant van de diskette (cylinder). X mag 0, 1, 2 of 3 zijn. Drive 0 is bij dubbelzijdig gebruik de onderkant, drive 2 de "bovenkant" van de diskette in drive 0 (resp. drive 1 en 3 van drive 1). *DRIVE (zonder nummer) is wel toegestaan, maar geldt voor de op dat moment in gebruik zijnde drive en is dus eigenlijk zinloos. 9
*SET N ========================== Hiermee wordt de qualifier in de diskette-titel veranderd in (N), waarbij (N) ieder ASCII-teken kan zijn. Vanaf nu is het alleen mogelijk om met (N) gequalificeerde files te werken. Nieuw aangemaakte files worden automatisch met deze qualifier weggeschreven. Na [BREAK] wordt de qualifier weer = (spatie). *USE N ========================== Dit commando maakt het mogelijk files met een andere qualifier dan die in de diskette-titel toch te gebruiken. De qualifier uit de titel blijft geldig. Bij het optreden van een fout gedurende een operatie blijft het commando geldig, zodat nog een poging mogelijk gemaakt wordt. Om na een foutmelding toch weer naar de geldende qualifier in de titel terug te keren, kunnen *MON of *NOMOM gebruikt worden. Twee maal: *USE N ( beide keren gevolgd door [RETURN] ) heeft het zelfde effect als *SET N. *TITLE <S> *T. ========================== Met dit commando wordt de naam van de diskette veranderd in de eerste 13 letters van <S>. Bestaat de naam uit minder letters dan worden de resterende plaatsen opgevuld met spaties. Er. kunnen ook CTRL-tekens in de naam worden opgenomen: bv. CTRL-L waardoor de diskette-titel op de eerste regel van een "schoon" scherm wrodt weergegeven. *MON *M. ========================== Hiermee wordt de file-informatie bij iedere filebewerking op het scherm gezet. *NOMON *N. ========================== Dit heft het *MON commando weer op. *LOAD <S> XXXX *L. ========================== Hiermee wordt een file (programma of data) van de diskette in het geheugen geladen vanaf adres XXXX. Dit adres wordt zonder #-teken ingevoerd. Als het adres dat bij *SAVE is vastgelegd wordt gebruikt, dan kan XXXX weggelaten worden. De volgende *LOAD opdrachten zijn toegestaan: *LOAD TEST *LOAD"TEST" *LOAD TEST 2900 *LOAD"TEST"2900 *LOAD (filenaam = spatie) 10
Hiermee wordt file <S1> in het voor deze file opgegeven geheugenadres geladen. <S2> wordt in string-vorm omgezet en op adreslocatie #0140 tot #017F in block 0 gezet. De informatie <S2> kan dan hierna in het file <S1> gebracht worden. De laatst gebruikte locatie wordt gevolgd door een CR (carriage return). De volgende *RUN-opdrachten zijn toegestaan: *RUN TEST *RUN"TEST" *RUN TEST test *RUN"TEST" test *RUN"TEST" "test" *SAVE <S> XXXX YYYY ZZZZ ========================== Dit commando dient voor het opslaan van een file <S>, vanaf adreslocatie XXXX tot aan adreslocatie YYYY, met als startadres ZZZZ. Dit startadres hoeft niet opgegeven te worden als het niet in de *SAVE opdracht voorkomt, neemt het systeem aan dat het startadres gelijk is aan de eerste geheugenlocatie, opgegeven met XXXX. Als <S> al op de diskette voorkomt, en niet met een qualifier is beveiligd, dan wordt de nieuwe file <S> over de oude file heen geschreven. Deze laatste gaat dan verloren. Na het $SAVE commando gaat de drive op de diskette zoeken (vanaf track 0 naar binnen toe) totdat een plaats gevonden is, die groot genoeg is om <S> te bevatten. *DELETE <S> *DE. ========================== Met dit commando kan file <S> gewist worden, als het niet met een qualifier of een lock beveiligd is. *GO XXXX *G. ========================== Dit commando is vergelijkbaar met LINK en zorgt voor het starten van een machinetaalprogramma op adres XXXX (zonder #) . *LOCK <S> *LOC. ========================== Lock dient om ongewild wissen te voorkomen (zie *SAVE en *CAT). Voor een beveiligd file komt in de catalog een "#" te staan. *UNLOCK <S> *U. =========================== Dit is het reset-commando voor *LOCK. De beveiliging van een file wordt hiermee verwijderd. 11
*INFO *I. ========================== Dit commando geeft informatie over file <S> na bv. *INFO TEST [RETURN] in de volgende vorm: n: #TEST 2900 C2B2 001DE 003 waarbij "n" de qualifier is (voor de dubbele punt); 2900 is het laadadres, C2B2 het startadres en 001DE geeft de lengte van de file in bytes. De eerste sector van de file is 003. File TEST is met LOCK beveiligd. *EXEC <S> *E. ========================== Dit commando voert gegevens in van het ASCII-file <S> in vanaf diskette alsof ze van het toetsenbord afkomstig waren. Een ASCII-file is een soort programma zonder regelnummers. De file wordt automatisch geSHUT als hij helemaal gelezen is. De vectoren OSFIND, OSSHUT en 0SBGET worden door dit commando gebruikt (zie blz. 19 en 21). *SPOOL <S> *SP. ========================== SPOOL (Simultaneous Peripheral Output On Line) wordt gebruikt oa informatie, die op het scherm staat via de buffer naar de diskette te schrijven. Op de diskette wordt dan een ASCII- file gemaakt met filenaam <S>. Het is uiterst belangrijk, dat een dergelijk file wanneer de SPOOL-operatie klaar is, ook weer afgesloten wordt: een SPOOL-file moet afgesloten worden met *SHUT. Gebeurt dit niet, dan kunnen de andere files op de diskette vernietigd worden. N.b. : *SPOOL (spatie) is ook toegestaan: de filenaam wordt dan (spatie). Toepassingen zijn bv. data-logging: het over langere tijd opslaan van bv. meetresultaten. Alles wat op het scherm verschenen is, kan later van de diskette teruggelezen worden. Zo kunnen bv. ook twee programma’s aan elkaar geschakeld worden. Het ASCII-file kan bv. teruggelezen worden met: 10 A=FIN"<filenaam>" 20 DO PRINT $BGET A; UNTIL 0 *SHUT (T) *SH. ========================== Hiermee wordt de random input- of output file met file-handle (T) afgesloten. Deze is in het Y-register (block 0) opgeslagen: de vector die hiernaar wijst wordt veranderd. Bij een output-file wordt de bufferinhoud naar die file overgebracht. Als (T)=0 worden alle random files afgesloten. *SHUT (zonder toevoeging) sluit alle random files c.q. SPOOL-files af. 12
ANDERE *-COMMANDO'S =================== Als een *commando gebruikt wordt wat hierboven niet genoemd is, dan zal het als een *RUN opdracht uitgevoerd worden. Het systeem neemt aan, dat drive 0 bedoeld wordt, en dat de qualifier voor de filename = (spatie). Op deze manier kan een filenaam een commando worden: bv. *SNAPPER (een dergelijk file kan dan ook nog van het autostart-adres #CE86 voorzien worden). Hierbij komt het gebruik van de <S2>-string (zie *RUN) het best naar voren: vooropgesteld, dat "EDIT" op de diskette voorkomt, en dus als "commando" gebruikt kan worden, mag het volgende ingevoerd worden: *EDIT "<test>" (*RUN <S1> <S2>) of: *ADVENTURES "HOUSE" Op deze manier kunnen ook de Utilities aangeroepen worden, mits ze op schijf gezet zijn, en blz. #Axxx van RAM is voorzien (zie blz. 29, punt 6): bv. *TK (Toolkit) *WP (Tekstverwerker) enz. De Toolkit is op diskette gezet met bv.: *SAVE TOOLKIT A000 B000 AF00 Na het commando *TK zal de Toolkit in blz. #Axxx geladen, en meteen opgestart worden. 13
DOS-COMMANDO'S IN DE BASIC ========================== In Atomic Theory and Practice wordt een aantal DOS-commando’s genoemd, die hieronder nog eens kort besproken worden. Eerst volgt een aantal omschrijvingen van gebruikte termen. Zie hiervoor ook de hoofdstukken 9 en 20 van AT&P. random files ------------ Een random file is een zgn. "open" file waarin gegevens opgeslagen kunnen worden. Deze files zijn bij uitstek geschikt voor bv. database omdat ze willekeurig toegankelijk zijn: zgn. "random access". Dit betekent dat een bepaald gegeven direct opgehaald of veranderd kan warden, als het adres ervan bekend is. De grootheden die in een random file gebruikt worden zijn: - de file-handle (T); - de pointer (P); - de grootte (E); - de ruimte (R); - het argueent (Z). Deze worden afzonderlijk besproken. Het maximum aantal random files bedraagt 5: deze kunnen naast elkaar bestaan. Het DOS gebruikt voor het werken met random files de volgende Operating System (0S) subroutines: OSFIND het openen van een random accessfile; OSSHUT het sluiten van een random access file. De buffer wordt leeggemaakt; OSRDAR het lezen van gegevens uit een geopend file; OSSTAR het vervangen van gegevens uit een geopend file; OSBGET het lezen van een byte uit een geopend file; OSBPUT het schrijven van een byte in een geopend file. de file-handle (T) ------------------ In het OOS wordt veelvuldig gebruik gemaakt van de term "file-handle". Dit is een soort "handvat" met men lengte van 1 byte dat wordt gebruikt om gegevens betreffende het file op te roepen. In het Atom OS (Operating System) is de file- handle = 13. Hiermee worden "RECORD TAPE" en "PLAY TAPE" Opgeroepen. In Atom DOS wordt de file-handle in eerste instantie = 0 gemaakt. Als een random output file geopend wordt met behulp van "FOUT" krijgt dat file een getalswaarde tussen 0 en 255 toegewezen. Aan de hand van dit getal vindt een eenduidige identificatie van de desbetreffende file plaats. Deze getalswaarde wordt aan een variabele toegekend: deze variabele is dan de zgn. file-handle. Dit handvat wordt gebruikt als naar dit file verwezen wordt. In de navolgende tekst wordt de file-handle aangeduid met (T). 14
de pointer (P) -------------- Een random file kan beschouwd worden als een reeks bytes die opeenvolgend genummerd zijn. De sequential file-pointer wijst naar het byte dat vervolgens gelezen of veranderd moet worden. Bij een nieuw file wijst de pointer naar het eerste byte (P=0). Als steeds andere OSBPUT- of OSBGET-subroutines gebruikt worden in een file, zal de pointer steeds mee veranderen. Normaliter geldt bij het "volschrijven" van een file dat P=E. De pointer kan veranderd worden met bv.: PTRA=PTRA+27 de grootte (E) -------------- (zie ook EXT) De lengte van een file (c.q. het aantal karakters) ligt vast in de waarde E (EXT). Als E=0 dan is het file leeg; de lengte E van een nieuwe file is dus = 0. Naarmate de file meer en meer met data gevuld wordt, zal E steeds groter worden tot aan het punt waar E=R. Indien de lengte E gelijk is aan de ruimte R dan betekent dit dat de file vol is; er volgt een sprong naar de BREAK-routine. de ruimte (R) ------------- Bij het openen van een file wordt een bepaalde ruimte R op de schijf gereserveerd. Deze vrijgemaakte ruimte is ca. 16 KByte groot. De grootte van R za1 altijd een veelvoud van het aantal bytes per sector zijn (R=256 * aantal sectoren). Na SHUT kunnen niet gebruikte sectoren weer voor andere files gebruikt worden (maximaal 5). In het algemeen geldt: R >= E >= P >= 0 het argument (Z) ---------------- Het argument (Z) is een rekenkundige bewerking met een willekeurig aantal variabelen. De uitkomst van deze bewerking wordt opgevat als een geheugenadres. Vanaf dat adres worden de bytes opgeslagen, die achtereenvolgens uit de input file met filehandle (T) worden gehaald totdat een [RETURN] gelezen wordt. De pointer wordt op de locatie direct na deze [RETURN] gezet. Er volgt een foutmelding als de pointer het eind van de file passeert. 15
commando's ---------- SAVE "<test>" S. =========================== Hiermee wordt een BASIC-programma (geheugen-inhoud vanaf het startadres tot TOP) weggeschreven onder filenaam "test". Het startadres wrodt gevonden met: ?18*256. Zodra de "prompt" op het scherm verschijnt is het weer mogelijk met de computer te werken. Het is eehter mogelijk, dat ondertussen het wegschrijven van de geheugen-inhoud nog steeds doorgaat. LOAD "<test> L. =========================== Hiermee wordt een BASIC programma in het tekstgeheugen geladen. Het systeem kan niet gebruikt worden zolang de LOAD-operatie (nog) niet voltooid is, ook niet als het een DMA (Direct Memory Access) of laadcommando op interrupt-basis betreft. Na het laden wordt het tekstgeheugen afgezocht om de waarde van de TOP-pointer vast te stellen. Als het geen BASIC-programma betreft (bv. machinetaal of alleen data), dan kan de computer "hangen": de prompt komt niet meer terug. FIN "<test>" F. =========================== Hiermee wordt een random input-file geopend. Op het commando FIN wijst het systeem dat file een getal toe tussen 0 en 255, waarmee de file eenduidig geïdentificeerd kan worden. Hierbij wordt gebruik gemaakt van de file-handler bv. A: A=FIN"<test>" FOUT "<test>" FO. =========================== Dit is het commando voor het openen van een random output-file. Ook hier wordt weer een "file-handle" gebruikt: B=FOUT "<test>" De variabele B fungeert nu als handvat voor de random output-file "<test>" Als B=0 dan wordt daarmee aangegeven dat er iets aan de hand is met de output-file "<test>": 1- de file is tegen (per ongeluk) wegschrijven beveiligd; 2- de diskette is tegen schrijven beveiligd; 3- er is niet voldoende geheugen om de file op te slaan; 4- de file wordt al als input-file gebruikt; (het is echter tevens mogelijk iets naar dit file weg te schrijven) 5- de directory is vol (tabel in geheugen waarin de bestandsnamen en -lengten staan). EXT (T) E. =========================== EXTend geeft de momentele lengte in bytes (op het moment dat E gelezen wordt) van een input- of output-file met file-handle (T) aan. 16
PTR (T) PTR =========================== De inhoud van een 16 bits "woord", wat kan worden opgevat als geheugenadres : het "verwijst" naar een bepaalde geheugenlocatie, of in het geval van random files naar een bepaald punt in dat file. Door de waarde van de pointer te wijzigen is random file-access mogelijk. SHUT (T) SH. =========================== Hiermee wordt een random input- of output-file met file- handle (T) afgesloten. Dat betekent, dat de bufferinhoud weggeschreven wordt naar de file; de waarde van R wordt aan de waarde van E gelijk gemaakt. GET (T) G. =========================== Leest een woord van 32 bits (4 bytes) uit een random file met filehandle (T) op de plaats aangegeven door de filepointer P. De waarde van de pointer wordt na GET met 4 bytes opgehoogd: (P=P+4). PUT (T),(Z) PUT. =========================== Schrijft een woord van 32 bits (4 bytes) in een random file met filehandle (T) en argument (Z), op de plaats aangegeven door de filepointer P. (P=P+1). BGET (T) B. =========================== Als GET, echter leest 1 byte i.p.v. vier uit een sequentieel file met file-handle (T) en argument (Z). (P=P+1). BPUT (T),(Z) B. =========================== Als PUT, echter schrijft 1 byte in een sequentieel file met file-handle (T) en argument (Z) (P=P+1). SGET (T),(Z) S. =========================== Hiermee wordt een string uit een random file met file-pointer (T) en argument (Z) gelezen. (P=P.+lengte string+CR+1). SPUT (T),<string> SP. =========================== Hiermee wordt de gehele string <string>, inclusief de [RETURN] aan het eind ervan, in een random file met filehandle (T) geschreven. De pointer wijst hierna naar de locatie direct achter deze [RETURN]. (P=P+lengte string +CR+1). 17
FGET (T),(Z) FGET =========================== Als GET, maar leest 5 bytes uit een file met file-handle (T) en argument (Z). Wordt gebruikt bij floating-point getallen. (P=P+5). FPUT (T),(Z) FPUT =========================== Als PUT, maar schrijft 5 bytes naar een sequentieel file met file-handle (T). (Z) is het argument. Wordt gebruikt bij floating-point getallen. (P=P+5). 18
ASCII-FILES =========== ASCII (American Standard Code for Information Interchange) is een 7-bits code gebruikt voor het weergeven van letters, cijfers en leestekens. Het achtste (MSB) = 0. Een ASCIl-file bestaat alleen uit tekst (dus zonder regelnummers). Aan de hand van een voorbeeld wordt toegelicht hoe een ASCII-file gemaakt moet worden. Hierbij kan heel nuttig gebruik gemaakt worden van het *SPOOL-commando. Eerst moet een testprogramma geschreven worden: dit programma wordt later met *EXEC opgeroepen. Dit programma moet op diskette gezet worden met SAVE "NAAM". Daarna wordt de *SPOOL-funktie gebruikt om het programma "NAAM" in een ASCII-file om te zetten. 5 @=0 10 DIM A(20) 20 INPUT "NAAM " $A 30 PRINT "DAG "$A’ 40 PRINT "HOE LAAT IS HET" $A' 50 INPUT "UUR "B 60 INPUT "MINUTEN "C 70 PRINT "HET IS DUS "B"."C’ 80 INPUT "NU JE ECHTE NAAM " $A 90 GOTO 20 Voer nu in: >*DOS >*MON >SAVE"NAAM" NAAM 2900 C2B2 OOOBE 059 >NEW 10*SPOOL "TEST" 20 PRINT "LOAD ""NAAM"" $13 30 PRINT "RUN $13 40 PRINT " IEMAND" $13 50 PRINT " 24" $13 " OO" $13 60*SHUT 70 END >RUN De CR $13 wordt hier gebruikt i.p.v. het normale commando " ' ", omdat " ’ " zowel een Carriage Return als een Line Feed tot gevolg heeft. De LF moet vermeden worden omdat deze tot een foutmelding tijdens *EXEC leidt. Voer nu in: >*EXEC TEST nu volgt: z.o.z. 19
>LOAD "NAAM" NAAM 2900 C2B2 000BE 059 >RUN NAAM?IEMAND DAG IEMAND HOE LAAT IS HET IEMAND UUR?24 MINUTEN?00 HET IS DUS 24.00 NU JE ECHTE NAAM? Nu kan een andere naam ingevuld worden en het eerste programma zal weer verder lopen. Een ASCII-file kan ook met behulp van de Acorn Atom- tekstverwerker (verkrijgbaar bij TELEC BV) samengesteld worden. Deze tekstverwerker bevat een soort SPOOL-fuctie: d.m.v. het invoeren van [TEXT] wordt; alle informatie op het scherm ook in het lage tekstgeheugen gezet. Na [EDIT) (het aanroepen van de tekstverwerker) verschijnt de tekst "Old Text?" in grafische mode 4 op het scherm. Na het invoeren van de letter Y wordt alle tekst, die vanaf het commando [TEXT] op het scherm verschenen is, zichtbaar gemaakt. Deze "bewerking" wordt normaliter gebruikt om Basic- programma’s te "editen“ (veranderen). Deze programma’s moeten dan wel in het hogere geheugen (#8200) staan. Het samenstellen van een ASCII-file (bijvoorbeeld een BOOT-file zoals dat gebruikt wordt bij de autostart-uitbreiding van het DOS) met de tekstverwerker gaat als volgt: * voer een aantal commando’s in die in de file nodig zijn. * zet elk nieuw commando op een nieuwe rege1. * vraag met ’W’ het eind van de file aan: dit wordt b.v. (#) 2810. * schrijf de BOOT-file weg met *SAVE BOOT 2800 2810 (en niet met 2811); in dit geval mag de TOP-pointer niet meegeschreven worden. In de tekstverwerker wordt hiervoor nl. #04 gebruikt i.p.v. #FF. Aangezien #04 geen ASCII code is, zal dit resulteren in een foutmelding bij het uitvoeren van het *EXEC <ASCII-file>-commando. Zie voor verdere details de handleiding bij de tekstverwerker. 20
SUBROUTINES (COS / DOS) ======================= OSRDAR (#C2AC/#E461): read argument OSSTAR (#C2AC/#ECAO): store argument bepalen de waarde van R, P en E ; in het geval van P bestaat ook de mogelijkheid P te veranderen. Dit betekent dat random access. (willekeurige toegang) tot de sequentiele file mogelijk is. Als met behulp van OSSTAR de pointer P op een positie achter de file geplaatst wordt, wordt de inhoud van de file tuseen de oude en de nieuwe positie gevuld met #FF. Bij het gebruik van de subroutine OSRDAR wijst de inhoud van het X-register naar block 0. locaties waar het resultaat moet worden opgeslagen. Het Y-register bevat de file-handle en met behulp van de accumulator wordt bepaald welk argument bedoeld wordt: P (A=0), E (A=1) of R (A=2). OSBPUT (#FC7C/#EBBC): write byte to random file wordt gebruikt om bytes naar een file te schrijven. De accumulator A bevat het byte en het Y-register de file- handle. Als de file volgeschreven is dan is P=R; OSBPUT sluit de file af en springt naar de BREAK routine. Als P<>R wordt de pointer op de gewenste positie gezet. Normaliter geldt dat P=E; tijdens het schrijven van bytes naar de file worden zowel P als E opgehoogd. Als bestaande data vervangen wordt door andere, wordt alleen P opgehoogd. Het byte wordt in de checksumberekening betrokken. Het resultaet daarvan komt in #00DCte staan. OSBGET (#FBEE/#EAF0): get byte from random file wordt gebruikt om data uit een file te lezen. Het byte dat aangewezen wordt door P wordt in de accumulator A gebracht, daarna wordt P opgehoogd en de carry-flag wordt gereset. Het Y-register bevat weer de file-handle. Normaliter geldt in de file dat P=E. OSBGET "set" de carry-flag en maakt de accu-inhoud = #FF. Bij de tweede poging om het laatste byte van een file te lezen word naar de BREAK routine gesprongen. Het byte wordt in de checksum berekening betrokken (resultaat in #00DC). In het speciale geval dat P=0, vervullen OSBGET en OSBPUT speciale functies: OSBGET 1eest via de OSECHO routine, terwijl OSBPUT schrijft via de OSASCI routine. OSSHUT (#C278/#E89E): shut random file sluit de file af waarvan de file-handle zich in het Y-register bevindt. Hiertoe wordt de inhoud van de buffer, waarin zich nog data kan bevinden, weggeschreven naar de file en de catalog wordt ean de nieuwe filelengte aangepast. Als de file-handle in het Y-register = 0, worden alle files afgesloten. OSFIND (#FC38/#E953): find random file opent een input- of output-file. Om deze subroutine aan te kunnen roepen moet een bepaalde opslagruimte gereserveerd zijn, voorzien van een naam. Deze naam moet afgesloten zijn met een carriage return (CR, #0D). Block 0 bevat twee bytes die hiernaar verwijzen, en het X-register bevat het pointer- 21
adres. Als de carry-flag geset is dan betekent dit dat de filenaan al voor een input-file gebruikt wordt (is de carry-flag clear dan is het een output-file). E en R worden dan met de bijbehorende waarden gevuld. Als de filenaam nog niet wordt gebruikt (dus bij een nieuw file) dan is de file-handle = 0, zodat aan de hand hiervan bepaald kan worden of een filenaam al dan niet bestaat. Als de carry-flag "clear" is, de filenaam wordt al gebruikt (dus outputfile) en de subroutine OSFIND wordt nog eens gebruikt, dan zal E weer = 0 worden, behalve als het file beveiligd is. Het gevolg hiervan is dat de oude file met nieuwe data gevuld wordt. De data uit de oude file kan niet meer gebruikt worden; de "nieuwe" file is net zo groot als de oude. Bij het openen van een nieuee file met een nieuwe naam wordt een gedeelte van de diskette gereserveerd: R wordt in eerste instantie 16 Kbytes. Is er oeer ruimte nodig dan moet op een andere eanier dan via OSFIND, dus bv. met SAVE een bepaalde ruimte gereserveerd worden. N.b.: filenamen gebruikt via OSFIND worden onder een bepaald drivenummer en qualifier opgeborgen. OSCLI (#F8EF/#E3E5): command line interpreter interpreteert een karakterstring op adres #0100 tot en met de CR (#0D) als zijnde een OS-commando, bv. CAT, LOAD, SAVE, RUN, MON, NOMON, FLOAD en DOS. Alle processor registers worden gebruikt. Bij een gedetecteerde fout volgt een sprong naar de BREAK-vector. OSWRCH (#FE52/#FE52): write character schrijft het byte wat op dat moment in de accumulator staat naar de printer en op het scherm. Control-karakters worden ook herkend. Ed inhoud van alle registers blijft bestaan. OSCRLF: carriage return + line feed genereerd een CR en LF via OSWRCH. OSASCI: write ASCII character is gelijk aan OSWRCH, maar van CR wordt LF + CR gemaakt. OSECHO: read character with echo haalt een byte op via OSRDCH en schrijft het daarna weg met OSASCI. OSRDCH (#FE94/#FE94): read character leest een byte in en brengt de ASCII-waarde ervan over naar de accumulator. De processor registers N, Z en C zijn ongedefinieerd; alle andere registers blijven bewaard. OSLOAD (#F96E/#E477): load random file laadt een file in een op te geven geheugengebied. De inhoud van het X-register moet naar 5 opeenvolgende bytes in block 0 wijzen. De eerste twee bytes moeten het adres van de filenaamstring bevatten; byte 2 en 3 geven het laadadres van de file aan. Dir is in het geheugen het beginpunt van de file bij het laden. Het zevende bit van het vierde byte moet = 0 zijn om het file-startadres te kunnen gebruiken. Als dit bit = 1 dan wordt het laadadres als startadres beschouwd. 22
|-----------------| | byte 0 & 1 | adres filenaamstring |-----------------| | byte 2 & 3 | laadadres |-----------------| | . 7 . . . . . . | |-----------------| OSSAVE (#FAE5/#E613): save random file brengt de inhoud van een geheugenblok over naar diskette of tape. De inhoud van het X-register moet verwijzen naar 10 opeenvolgende bytes in block 0. De eerste twee bytes moeten het adres van de filenaamstring bevatten; de volgende twee het geheugenadres waarop de file latwer weer moet worden ingeladen. Byte 4 en 5 bevatten het startadres, 6 en 7 het eerste geheugenadres en 8 en 9 het laatste geheugenadres + 1 van het geheugenblok dat weggeschreven moet worden. |-----------------| | byte 0 & 1 | adres filenaamstring |-----------------| | byte 2 & 3 | laadadres |-----------------| | byte 4 & 5 | startadres |-----------------| | byte 6 & 7 | beginadres |-----------------| | byte 8 & 9 | eindadres +1 |-----------------| De geheugenruimte #2200 - #27FF wordt gebruikt voor de file- buffer en voor het opslaan van de CRC codes. Als een CRC niet klopt dan springt het systeem naar de BREAK routine. Als dit gebeurt dan moet het gehele systeem gereset worden met [BREAK]. Dit nadat alle files eest afgesloten zijn. Ook kan locatie #00C0 = 0 gemaakt worden. Hierdoor wordt de verwijzing naar een file gereset ("vergeten"). 23
ADRESSEN VAN OPERATING SYSTEM CALLS =================================== adres subroutine instructie ----- ---------- ---------- #FFBD - JMP(#0204) (IRQVEC) #FFC4 - JMP(#0202) (BRKVEC) #FFC8 - JMP(#0200) (NMIVEC) #FFCB OSSHUT JMP(#021A) (SHTVEC) #FFCE OSFIND JMP(#0218) (FNDVEC) #FFD1 OSBPUT JMP(#0216) (BPTVEC) #FFD4 OSBGET JMP(#0214) (BGTVEC) #FFD7 OSSTAR JMP(#0212) (STRVEC) #FFDA OSRDAR JMP(#0210) (RDRVEC) #FFDD OSSAVE JMP(#020E) (SAVVEC) #FFE6 OSLOAD JMP(#020C) (LODVEC) #FFE0 OSRDCH JMP(#020A) (RDCVEC) #FFE3 OSECHO JSR #FFE3 [OSRDCH] #FFE9 OSASCI CMP@#0D #FFEB BNE #FFF4 [OSWRCH] #FFED OSCRLF LDA@#0A #FFEF JSR #FFF4 [OSWRCH] #FFF2 LDA@#?? #FFF4 OSWRCH JMP(#0208) (WRCVEC) #FFF7 OSCLI JMP(#0206) (COMVEC) BLOCK 0 ADRESSEN ================ De volgende block 0 adressen bevatten indirecte vectoren die gebruikt worden door bovenstaande calls. De adressen worden zowel door COS als door DOS gebruikt. (NMIVEC wordt niet geset door COS of BASIC) adres inh.COS inh.DOS subroutine ----- ------- ------- ---------- #0200 - #E87B NMIVEC #0202 #C9D8 #ADDB BRKVEC #0204 #A000 #A000 IRQVEC #0206 #F8EF #E3E5 COMVEC #0208 #FE52 #FE52 WRCVEC #020A #FE94 #FE94 RDCVEC #020C #F96E #E477 LODVEC #020E #FAE5 #E613 SAVVEC #0210 #C2AC #EA61 RDRVEC #0212 #C2AC #ECA0 STRVEC #0214 #FBEE #EAF0 BGTVEC #0216 #FC7C #EBBC BPTVEC #0218 #FC38 #E953 FNDVEC #021A #C278 #E89E SHTVEC #021C - - - #021E - - - 24
FOUTMELDINGEN ============= DISK ERROR 08 (CLOCK ERROR) Tijdens een leesoperatie een clockbit gemist DISK ERROR 0A (LATE DMA) Gedurende een lees/schrijf-operatie waren de datalijnen niet vrij waardoor data verloren gegaan of overschreven zou kunnen zijn. Om dit te voorkomen werd een interrupt gegenereerd. DISK ERROR 0C (ID FIELD CRC ERROR) De CRC (Cyclic Redundancy Check; checksumberekening) afgeleid van het teruggelezen ID FIELD komt niet overeen met de checksum die tijdens het wegschrijven berekend en op schijf gezet is. DISK ERROR 0E (DATA CRC ERROR) De checksum afgeleid van de teruggelezen data komt niet overeen met die vastgelegd op schijf tijdens het wegschrijven van die data. DISK ERROR 14 (SECTOR NOT FOUND) Track 0 niet aanwezig. Vaak een niet-geformateerde diskette. DISK ERROR 18 (SECTOR NOT FOUND) Vaak een defecte of ongeformateerde diskette. Het opgegeven sectoradres kan niet gevonden worden of het trackadres komt niet overeen met dat in het ID FIELD DISK PROTECT De diskette is tegen wegschrijven beveiligd. FILE PROTECT De file is geLOCKED. COMMAND? Een commando wordt wel als zodanig herkend, maar is bv. verkeerd geschreven. DRIVE? De opgegeven drive komt niet voor. SYNTAX? Er is iets ingevoerd wat niet door de interpreter "begrepen" wordt, bv. "0" (nul) i.p.v. O of iets dergelijks. 25
TECHNISCHE BESCHRIJVING ======================= Bij het inbouwen van de controllerkaart. * LEES EERST DE BOUWINSTRUKTIE DOOR VOORDAT U BEGINT. * LEG ALLE BENODIGDE ONDERDELEN KLAAR. * NEEM RUSTIG DE TIJD. * ZORG VOOR SCHOON SOLDEERGEREEDSCHAP * KOPPEL DE VOEDING AF. * CONTROLEER AAN DE HAND VAN DE ONDERDELENLIJST (blz.32) OF ALLE ONDERDELEN GELEVERD ZIJN. * ALS U EEN INSTRUKTIE NIET BEGRIJPT, BEGIN ER DAN NIET AAN. * DE MONTAGEVOORSCHRIFTEN WORDEN NA DE TEKST NOG EENS PUNT VOOR PUNT HERHAALD (cursief). 1- Het plaatsen van de edres- en databuffers. De buffers IC 2, 3 en 4 en ook IC 5 moeten geplaatst zijn om de controllerkaart te laten werken. Zijn ze reeds geplaatst, vervolg dan met punt 2. De adresbuffers IC 2 en 3 en de bi-directionele databuffer IC4 kunnen zonder meer in de voeten geplaatst worden. Let hierbij wel op de juiste richting: zie ook de Acorn Technical Manual: blz. 9 (het kleine dunne boekje). Dit heeft U bij de aanschaf van de Acorn Atom reeds gekregen. Met behulp van een kleine ingreep, welke in punt 2 besproken wordt, is er voor gezorgd dat IC 4 alleen "enabled" wordt als een van de adressen #0400 - ??FFF, #3C00 - #7FFF of #E000 - #EFFF geselecteerd wordt. * Plaats achtereenvolgens IC 2, IC 3 (2 x 81LS95), IC 4 (DP8304), en IC 5 (74LS30). Let op de juiste richting. 2- Het p1aatsen van geheugen op adreslocatie #2000 - #27FF. Als de Acorn Atom waar de controllerkaart ingebouwed moet worden, niet voorzien is van een TELEC 64K geheugenkaart, dan kunnen door middel van stapelen van geheugen-IC’s bovenstaande adreslocaties van geheugen worden voorzien. Bezit U wel een 64K-kaart zie dan punt 6. Nadat de Acorn Atom op zijn kop gelegd is, wordt de bodem verwijderd. We gaan eerst het extra geheugen aanbrengen ten behoeve van de catalog- en filebuffers. De decodering is in de Acorn Atom wel aanwezig, maar is niet met een geheugen-IC verbonden. Om databus- problemen te voorkomen moeten we ervoor zorgen, dat de bidirectionele data-buffer 8304 (IC 4) niet werkt als geheugen op de locaties #2000 – #27FF wordt geadresseerd. Dit gebeurt door middel van twee diodes en een weerstand. Localiseer en verwijder met een passend stuk gereedschap de IC’s 12, 13, 18 en 19. Let erop dat de aansluitpennetjes niet beschadigen of verbuigen. Neem nu de 4 bijgeleverde geheugen-IC’s van het type 2114 en localiseer pennetje 8. Buig dit vo0rzichtig naar buiten en naar boven bij alle vier IC’s. Nu kan elke 2114 afkomstig uit de Acorn Atom voorzien worden van een "bovenbuurman" door alle andere pennetjes aan elkaar vast te solderen. 26
Let hierbij goed op de inkepingen van de IC’s waarmee pen 1 aangegegeven wordt: ze moeten boven elkaar komen te liggen (fig. 5). Nadat alle vier 2114’s "dubbeldekkers" zijn geworden kunnen ze weer in de voeten geplaatst worden. Let ook nu weer op de juiste richting. Worden ze verkeerd om geplaatst dan kan dat vervelende gevolgen hebben voor Uw computer. Verbind nu met een passend stukje draad de beide pennen 8 van de IC's 12 en 13 resp. 18 en 19 met elkaar. Verwijder IC 5 en 6. Pak nu de twee bijgeleverde diodes en de weerstand van 4K7; knip de draadjes aan beide kanten af tot plm. 1 cm. Soldeer de beide diodes met de kathode-kant aan de pennen 14 en 15 van IC 6 (74LS138) vast. Buig van IC 5 (74LS30) pen 1 naar buiten en omhoog. Soldeer een kant van de weerstand hier aan vast en de andere kant aan pen 14 van dit IC (zie fig. 5). Plaats nu beide IC’s weer in de voeten (IC 5 = 74LS30 en IC 6 = 74LS138). Buig de diodes zodanig dat ze ook aan pen 1 van IC 5 gesoldeerd kunnen worden. Aan dit punt zitten nu twee diodes en een weeratand vast. Controleer op juiste verbinding. Bevestig nu een draadje aan de doorverbonden pennen 8 van IC 17, 13, 18 en 19. Het andere eind van deze draden wordt aan de kathode- kant van de diodes gesoldeerd (1 draad per diode); dat is de kant waarmee ze aan IC 6 vastzitten (fig. 6 en 7). * Buig van de bijgeleverde 2114’s het achtste pennetje naar buiten en naar boven. * Verwijder de IC’s 12, 13, 18 en 19. * Soldeer op elk IC. een 2114 met uitgebogen pen 8: pen 1 op pen 1 enz. * Plaats de IC’s weet in de voet. * Soldeer een draadje tussen de pennen 8 van IC 12 en 13, en van 18 en 19. * Verwijder IC 5 (74LS3O) en IC 6 (74LSl38). * Knip de draadjes van twee van de bijgeleverde diodes tot op ca. 1 cm. af. Doe hetzelfde met een 4K7 weerstand. * Soldeer een diode met de kathode aan pen 14 van IC 6. * Soldeer de andere diode met de kathode aan pen 15 van IC 6. * Plaats IC 6 weer in de voet. * Buig pen 1 van IC 5 (74LS30) naar buiten en naar boven. Plaats het IC weer in de voet. * Soldeer de weerstand aan pin 1 van IC 5 vast evenals de beide anodes van de diodes. * Soldeer zowel aan pen 14 als aan pen 15 van IC 6 een draadje van ca. 8 cm. lengte. * Verbind het andere einde van de draadjes met de door- verbonden pennen van resp. IC 12 en 13 c.q. 18 en 19. 3- De montage van PL7 Verwijder de vier schroeven waarmee de hoofdprint van de Acorn Atom in de kast bevestigd is en leg de print met het toetsenbord naar beneden voor U neer. Neem nu de controller- kaart en de bijgeleverde 64-polige connector en pas deze connector in de 64-polige connector op de controllerkaart. 27
Plaats het geheel in de gaatjes van PL7 zodanig dat de kaart niet buiten de print uit steekt (zie fig. 8 ). Verwijder de controllerkaart van de connector terwijl U deze goed op de plaats houdt. Soldeer nu aan de toetsenbordzijde: de connector zelf komt aan de lC-kant. Controleer hierna op tinresten en ga met behulp van een universeelmeter na, of er geen kortsluiting tussen twee naast elkaar gelegen pennetjes is ontstaan. Plaats nu de controllerkaart. Monteer de hoofdprint weer de kast met de vier schroefjes. * Schroef de hoofdprint los. * Pas de 64-polige connector in de controllerkaart. Plaats de connector in de gaatjes van PL 7. * Houd de connector vast en verwijder de controllerkaart. * Soldeer de connector aan de keyboard-zijde. * Monteer de hoofdprint. * Plaats de controllerkaart. 4- Het aanbrengen van de verbindingen CLOCK en CHIPSELECT Localiseer en verwijder IC 44 (74LS393). Buig pen 11 naar buiten en naar boven. Plaats dit IC weer terug in de voet en soldeer de draad komend vanaf de controllerkaart naast IC 74LS93 (CLOCK) aan deze pen vast. Localiseer pen 9 van IC 23 en soldeer hier de andere draad (CHIPSELECT) aan vast (pen NIET uitbuigen) (fig. 7). * Verwijder IC 44 (74LS393) Buig pen 11 naar buiten en naar boven. Plaats het IC weer in de voet. * Soldeer de CLOCK-draad (naast 74LS93 op controllerkaart) aan pen 11 van IC 44 op de hoofdprint. * Soldeer de CHIPSELECT-draad (naast de EPROM op de controllerkaart) aan pen 9 van IC 23 (74LS138) op de hoofdprint. Hiervan geen pennen uitbuigen. 5- Het aansluiten van de disk drive Steek de header die aan de flatcable is bevestigd in de 40-polige connector op de controllerkaart en leid de kabel om de print heen naar buiten toe zoals te zien is op fig. 8. Nu kan de kaat van de Acorn Atom weer gesloten worden. Sluit het kabeldeel aan de andere kant van de flatcable aan op de drive (zie fig. 9). Worden twee drives aangesloten dan kan een tweede kabeldeel op de gewenste afstand aan de kabel bevestigd worden. Uit de drive die niet aan het eind van deze kabel aangesloten wordt moet het pull-up weerstandsnetwerk verwijderd worden (zie fig. 1O). Vervolgens kunnen de voedings-aansluitingen gemaakt worden. Ook hier kunnen in het geval van twee drives de verbindingen parallel gemaakt worden. Zie voor nadere details fig. 10. Zorg ervoor dat in geen geval de 12V en 5V voeding verwisseld wordt of kan worden. Dit kan fataal voor de diskdrive zijn! 28
* Steek de header in de 40-polige voet op de controllerkaart en leid de flatcable naar buiten (zie blz 37). * Steek het kabeldeel (de card-edge connector) op de drive (zie fig.8); bevestig bij gebruik van twee drives een tweede kabeldeel: meet eerst de afstand en houd rekening met de inbouw in een kast). * Verwijder bij gebruik van twee drives het weerstands- netwerk uit de eerste drive vanuit de computer gezien. * Maak de voedingsaansluitingen (zie connctoren, blz. 32). 6- De aansluiting bij gebruik van de TELEC 64K geheugenkaart. Deze geheugenkaart is bij uitstek geschikt om samen met het disk drive systeem een krachtig systeem van Uw Acorn Atom te maken. Door adresbadzijde #Axxx (utilities) van geheugen te voorzien heeft U de mogelijkheid gekregen de utilities (TOOLKIT, SOFTTOOL, TOOLBUG, TEKSTVERWERKER etc.) vanaf diskette in te laden. Hiertoe moeten enige wijzigingen worden aangebracht, welke hieronder staan beschreven. Het spreekt vanzelf, dat de utilities eerst op schijf gezet moeten zijn. Dit gebeurt als volgt: * SAVE TK A000 B000 AF00 Nadat de modificatie is aangebracht wordt geheugenlocatie #A000 - #AFFF van geheugen voorzien, waarin bv. de TOOLKIT d.m.v. *TK vanaf schijf kan worden geladen en opgestart. Omdat dit normaal geheugen is, bestaat de mogelijkheid de inhoud naar eigen wens te veranderen en aangepast weer weg te schrijven. Ook moeten enige voorzorgen worden genomen om te voorkomen dat drive en geheugenkaart tegelijk van de databus gebruik maken. De card enable lijn (de rode draad) wordt met het block 0 signaal verbonden (pen 31 van PL 6 of pen 8 van IC 8 op de hoofdprint van de Acorn Atom). Hierdoor wordt de geheugenkaart ge-"disabled" als een locatie op blz. #0xxx gebruikt wordt (#0000 - #0FFF). Tevens moet een draad verbinding aangebracht worden tussen pen 1 van IC 5 (74LS30) op de hoofdprint en pen 1 van de 74LS04 op de RAM-kaart. Hierdoor wordt de buffer ge-"disabled" als de RAW-kaart geadresseerd wordt. Op de 64K-kaart bevindt zich een 74LS138 met daarnaast een aantal draadbrugjes en een weerstand van 68 ohm. Deze weerstand moet vervangen worden door een diode (bijgeleverd). Knip de draadjes op de juiste lengte. De anode moet aan pen 5 van de 74LSO8 gesoldeerd worden. Aan dit zelfde punt komen ook de anode van de tweede diode en de weerstand van 4K7. De andere kant van de weerstand wordt met +5V verbonden, dus bv. op het punt vlak naast pen 14 van de 74LSO8 (zie fig. 14). Aan de kathode van de tweede diode wordt een draad gesoldeerd die met pen 13 van IC 23 op de hoofdprint van de Acorn Atom verbonden wordt. Dit is de selectlijn van adresbladzijde #Axxx. De witte draad blijft de bankselect. Zie voor de indeling: memory map op blz. 33. * Soldeer de card-enable lijn aan pen 8 van IC 8 op de hoofdprint (niet uitbuigen). 29
* Knip de 68 ohm weerstand op de 64-K kaart (over de draadbrugjes) vlak bij de print af. * Knip de draadjes van een diode op de juiste lengte. Soldeer de anode hiervan aan pen 5 van de 74LS08 en de kathode aan pen 15 van de 74LS138 (op de 64-K kaart). * Soldeer aan pen 5 (74LS08) ook de 4K7 weerstand en de anode van de laatste diode. Knip eerst de draden op passen- de lengte. * Soldeer de andere kant van de weerstand aan pen l4 van de 74LS08. * Soldeer een draadje van ca. 18 cm. aan de kathode van de laatste diode. De andere kant van dit draadje komt aan pen 13 van IC 23 (74LS138) op de hoofdprint. * Soldeer een draadje van ca. 18 cm. aan pen 1 van de 74LS04 op de RAM-kaart. Soldeer het andere eind aan pen 1 van IC 5 (74LS30) op de hoofdprint. 7- Het testen van het systeem. Na het opstarten van de computer moet nu alles normaal functioneren. Op het scherm moet gewoon ACORN ATOM met bijbehorende prompt verschijnen. (Is dit niet het geval, schakel dan de voeding weer uit en onderzoek Uw soldeerwerk op sluiting etc.) Hierna *DOS intypen. Ook nu moet de prompt weer gewoon terugkomen. Is dit het geval dan zal het systeem vanaf dat moment alle DOS-commando’s ook herkennen. Zorg er bij het testen voor dat de drive volkoemen vrij staat en nergens tegenaan kan lopen. Maak de vergrendeling van de drive vrij door de vergrendeling naar rects opzij te draaien. Controleer of de opening inderdaad vrij is. Plaats de Utilities-diskette in de drive (zie blz. 5): labels naar boven en de lange opening in de .richting van de drive. Voorzichtig doordrukken totdat de diskette niet verder ingeschoven kan worden. Daarna pas de vergrendeling sluiten. Na het intypen van *CAT moet de drive gaan draaien en is eeo scherpe tik hoorbaar. Dit is het laden van de kop op de diskette. Op het beeldscherm van Uw computer moet nu de catalog van de Utilities-diskette zichtbaar worden. Gebruik voor het testen een lege diskette. Zo bestaat er weinig kans dat bij een fout belangrijke informatie verloren gaat. Ook een diskdrive kan "in de war" raken. Zorg bij belangrijke programma’s altijd voor een zgn. backup: vele weken werk kunnen door een kop koffie vernietigd worden! Gebruik in het begin in geen geval de Utilities-diskette voor het wegschrijven van informatie. Formateer een testdiskette zoals aangegeven wordt bij de Utilities-diskette (blz. 31). Verwijder de Utilities-diskette uit de drive nadat de tekst: DO you REALLY WANT TO FORMAT DRIVE 0? op het scherm verschenen is!. N.b.: alles wat voor het formateren op deze diskette stond is nu "gewist". Het is dus aan te raden diskettes die geformateerd worden voordien te controleren met *CAT of ze werkelijk leeg zijn. Het plakken van labeltjes met de inhoudsopgave van de disk is om voor de hand liggende redenen erg belangrijk. 30
UTILITIES-DISKETTE ================== Op de bijgeleverde Utilities-diekette staat een aantal programma’s die bij het systeem gebruikt kunnen worden. *FORM is een programma wat dient om een nieuwe diskette te initialiseren. Voordat de schijf geformateerd wordt is het aan te raden eerst met *CAT te controleren of de diskette werkelijk leeg is om te voorkomen dat programma’s per ongeluk vernietigd worden. Daarna de Utilities-diskette plaatsen. Na *FORM verschijnt de tekst: DO YOU REALLY WANT TO FORMAT DRIVE X?", waarbij X het drivenummer van de drive is,: waarin zich de Utilities-diskette bevindt. Verwijder nu de Utilities-Diskette uit de drive. Gebeurt dit niet, dan za1 de Utilities-diskette zelf geformateerd (en dus gewist) kunnen worden. Plaats een "schone" diskette in de drive en voer de letters Y, E en S in. Na de S gaat de drive direkt draaien en wordt de diskette gerformateerd; een andere letter heeft tot gevolg dat het programma niet uitgevoerd wordt. (Opnieuw opstarten b.v. na het veranderen van het driven kan gebeuren met LINK#2800). Na enige tijd verschijnt op het scherm de tekst FORMATTED. Daarna een aantal hexadecimale codes (de tracknummers) en dan de tekst VERIFIED. Nu is de diskette geforeateerd. Bi j een foutmelding de gehele procedure nog eens herhalen. *INFALL geeft de gehele file-informatie van alle filed op de diskette. Dit programma kan op een andere diskette overgebracht worden nadat het in het geheugen geladen is. Op deze manier kunnen alle diskettes van de gewenste utilities vorzien worden. *CRC is een snelle manier om een checksum te berekenen. *COMPACT is een programma om een schijf opnieuw in te delen. Alle files worden "economischer" op de diskette gezet doordat de ontstane "gaten" weer gebruikt worden. Na het commando *COMPACT verschijnt op het scherm de tekst: "COMPACTING DRIVE 0". Op dit moment kan eventueel van schijf gewisseld worden. Als de diskette geplaatst is, wordt het "compacten" gestart door een willekeurige toets (behalve [ESCAPE] ) in te drukken. Op het sherm verschijnt de file-informatie van de "oude" en de "nieuwe" plaats van de files. Dit is te zien aan de sectornummers: het laatste (hexadecimale) getal geeft de eerste door de file ingenomen sector aan. Na het "compacten" verschijnt het aantal vrije sectoren na de laatste gebruikte sector op het scherm. Hierna kan eventueel een volgende schijf ge-"compact" worden. Het programma wordt dan opgestart met LINK#2800. 31
CONNECTOREN =========== 34-polige connector aan drive (alle oneven pennen aan massa) pen 2 NC pen 4 NC reserve pen 6 select drive 3 NC pen 8 index pen 10 select drive 0 pen 12 select drive 1 pen 14 select drive 2 NC pen 16 motor on pen 18 step direction pen 20 step pen 22 write data pen 24 write enable pen 26 track 0 peo 28 write protect pen 30 read data pen 32 side/cylinder select pen 34 NC NC: Not Connected 4-polige voedingssteker
FDD voedings connector

pen 1 +12V pen 2 GND pen 3 GND pen 4 +5V ONDERDELEN ========== Onderstaande lijst vermeldt alle onderdelen die in het TELEC Diskdrivepakket geleverd worden. - diskdrive TEAC FD-55A of B; - utilitiesdiskette met hoes; - voedingsconnector,4-polig; - 64-polige connector, female, recht, soldeer; - 4 * 2114 geheugen-IC; - 2 * 81LS95 adresbuffer; - 1 * DP8304 databuffer; - 4 * diode 1N914 o.i.d.; - 2 8 weerstand 4K7; - vlakbandkabel met 40-polige header en 34-polig kabeldeel; - controller=PCB met daarop de FDC en het DOS (EPROM). 32


https://acornatom.nl/hardware/fdc/telec/map.gif 33
De in grijs aangegeven gedeelten zijn de adressen die door een 12K ROM / 12 K RAM Acorn Atom gebruikt worden. De gearceerde gedeelten zijn adressen gebruikt doar de diskdrive, en de dik omlijnde die door de 64Kgeheugenkaart in de versie zoals deze standaard geleverd wordt. Bij de ombouw naar autostart (zie blz.2) kan dit gewijzigd worden. Hierover wordt nadere informatie verstrekt bij aanvraag bij TELEC BV. 35
SCHEMA FDC 36
DOORSNEDE / FIGUREN =================== DOORSNEDE / FIGUREN 37