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
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.
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:
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 aanhalingatekens 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 diekettetitel 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 syateem 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 autoematisch 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 (prograamma 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
systeee 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
heengeschreven. Deze laatste gaat dan verloren. Na het $SAVE
commando gaat de drive op de diskette zoeken (vanaf track 0
naar binnen toe) totdat een plaate 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 wrodt 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 filenaae = (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 randam file is een zgn. "open" file waarin gegevens
opgeslagen kunnen woden. 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 randoe 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
rendom 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 (maxiaaal 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 direkt 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 geidentificeerd 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
bestandnamen 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 zonderregelnummers). 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
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
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
36
DOORSNEDE / FIGUREN
===================
37
|