# Acorn Atom

De Acorn Atom, die in Nederland ook bekendstond als de Hobbit Computer, is een uit 1979 stammende hobbycomputer van de firma Acorn Computers Ltd.
“Hobbit” was een hobby-elektronica tijdschrift van Kluwer Technische Tijdschriften, dat naast elektronische bouwpakketten, ook aandacht ging besteden aan computers. Paul Smulders werd in 1980 aangesteld als de eerste redacteur en schreef tussen 1980 en 1982 veel artikelen over de Acorn Atom, alsmede een boek ( Acorn Atom, praktisch gebruik, BASIC, assembly, programma's: ISBN 9020115774). Daarmee werd de Acorn Atom op de kaart gezet in Nederland. De computer werd naar Nederland gehaald door Paul Pardon van Compac computers uit Den Haag, die hem distribueerde. Het ontwerp was van Sophie (Roger) Wilson die toen daar werkte. De Atom werd geleverd, als bouwpakket of compleet gebouwd, met een uitvoerige handleiding, het complete schema met een technische documentatie. Het was voor de gebruikers een machine die bij uitstek geschikt was voor allerlei experimenten.
De Atom was de voorloper van de in Engeland en ver daarbuiten zeer bekende BBC-computer.

## Hardware

De Acorn Atom was gebaseerd op de 6502 processor. Voor veel gebruikers was een belangrijk gegeven dat naast BASIC ook een assembler in ROM meegeleverd was. Het middelste deel van de Engelstalige handleiding, (Atomic Theory and Practice) met de lichtblauwe bladzijden, vormde de leidraad voor het programmeren in assembly. BASIC en assembly kon door elkaar gebruikt worden. Alles, maar dan ook alles, aan de machine was goed gedocumenteerd. Het was een knutselmachine bij uitstek.
De machine werd ook als bouwpakket geleverd wat menig hobbyist noodzaakte zijn soldeervaardigheden te verbeteren. Vooral het toetsenbord was een lastige klus. Eenvoudige TTL-IC's waren de basis van het ontwerp. Deze IC's waren in vergelijking met vandaag de dag primitief. De toetsen waren in een matrix geschakeld die gedecodeerd werd met een TTL-decoder-driver (7445). Het gevolg was dat je geen twee knoppen tegelijk in mocht drukken op straffe van onjuiste invoer.
De MC6847 VDU video chip verzorgde de tekst- en graphicsmode (2 kleuren). De output kon via een HF-doosje op het moederbord aan een televisietoestel worden geleverd of, met een kleine modificatie op het moederbord, aan een videomonitor. Het basisvideogeheugen was 1 kiB groot maar kon naar 6 kiB worden uitgebreid. Een PAL-kleuruitbreidingskaart was eveneens beschikbaar.
Het geheugen was minimaal 2 kiB, maar het populairst was de 12 kiB-machine. Er was 6 kiB voor het grafisch geheugen dat bij lagere resolutie ook deels voor andere doeleinden gebruikt kon worden. Vanaf adres #0000 kwam eerst één kiB voor speciale doeleinden. Een kwart kiB om allerlei interrupts en ROM-aanroepen te onderscheppen. Een kwart kiB om de variabelen en pointers naar de arrays te bewaren. Dan een half kiB loze ruimte, die je kon gebruiken voor eigen doeleinden. Dan begon er hoger in het geheugen een stuk van 5 kiB RAM. De eerste kwart om de floatingpoint variabelen in te bewaren. Dan 4,75 k-B voor het BASIC-programma.
Standaard was een socket (IC24) vrijgehouden voor een extra EPROM van 4 kiB (van adres #A000 t/m #AFFF) waarin de meeste mensen de ‘Josbox' (AXR1) plaatsten. Hiermee kwamen nieuwe commando’s beschikbaar, en niet onbelangrijk, een snellere cassette-interface van maar liefst 1200 baud.
Het Acorn LAN, Econet, was eveneens ontwikkeld op de Atom.

## Atom BASIC

Wat de machine ook uniek maakte was zijn aparte BASIC. Weliswaar had elke hobbycomputer in die tijd zijn eigen BASIC, maar die van de Atom was uniek. Dit soms tot ergernis wanneer een Basicode programma, dat van de radio was opgenomen, weer eens helemaal omgewerkt moest worden. Maar tot genoegen wanneer met die unieke BASIC een extreem kort programma geschreven werd. De BASIC was redelijk primitief maar er waren ook een paar moderne features aanwezig. Het GOTO-statement kon behalve naar regelnummers ook naar labels springen, dat was sneller omdat de geheugenadressen al bekend waren. Er was naast de FOR-NEXT-loop ook een REPEAT-UNTIL en een WHILE-loop aanwezig. Alle statements konden worden afgekort wat gunstig was voor het geheugengebruik en de executietijd, maar in mindere mate voor de leesbaarheid. Zo stond ‘P.’ voor ‘PRINT’. Stringmanipulatie week in hoge mate af van andere BASICs en leek sterk op stringmanipulatie in de programmeertaal C. Een van de krachtigste aanvullingen op de Atom Basic was de PCharme EPROM op #A000 van Frans van Hoesel.
De programmacode werd vanaf adres #2900 opgeslagen zoals deze ingetypt was, dus zonder tokens. Dit bood de mogelijkheid van self-modifying code wat daardoor natuurlijk ook een sport werd.
De Atom BASIC had één groot nadeel; de variabelenamen waren slechts 1 letter lang. Er waren 26 integers, 26 arrays en 26 floatingpoint variabelen.
Error 94 was de meest voorkomende fout. Het meegeleverde plastic kaartje, met character- en errorcodes, gaf dan aan dat het hier om een Syntax Error ging.

## Meer

Behalve in BASIC kon er ook geprogrammeerd worden in Forth en Lisp met de daarvoor beschikbare programmatuur. Dit was echter alleen weggelegd voor de echte liefhebbers hiervan.
Naast het tijdschrift Hobbit, dat geen lang leven beschoren was, konden de hobbyisten ook bij de gebruikersclub terecht voor informatie. De Federatie van Atom Computerclubs in Nederland en België (FAC) bracht het Clubblad Atom Nieuws (AN) uit. Daarin werden keer op keer nieuwe en betere EPROMs, programmarecensies en tal van hardwareaanpassingen etc. gepubliceerd. In de nadagen van de machine, de tijd van de MSX-computers en de opkomst van de PC’s later in de jaren 80, kwamen er steeds meer geavanceerde features beschikbaar. Snellere cassetteinterfaces, nieuwe grafische kaarten (80 tekens per regel), geheugenuitbreidingskaarten, aanvullingen op het OS (Operating Systeem) met schakelroutines voor de extensie roms (c.q. EPROMs), harde schijven, kaartlezers, een CPM-kaart met harde-schijfinterface, een Atom in PC-kaart (op de ISA-bus in de PC) en ga zo maar door. De sky leek de limit. De gebruikersclub (FAC) heeft zelfs nog tot in 2000 met Atom Nieuws een stroom van publicaties verzorgd van een groot aantal nieuwe ontwikkelingen voor de Atom. Tot 2004 heeft een ELektronische versie van Atom Nieuws (ELAN) op onregelmatige basis nog voor een aantal interessante artikelen gezorgd. Op de site van de Atom-DVD zijn ook de laatste ontwikkelingen te zien; zoals onder meer een interface voor het gebruik van SD geheugenkaartjes aan de Atom. Nog steeds roept de Atom nostalgische herinneringen op bij velen.

## Specificaties

* CPU: MOS Technology 6502 Snelheid: 1 MHz
* RAM: 2 kiB, uitbreidbaar tot 12 kiB
* ROM: 8 kiB, uitbreidbaar tot 12kiB met Acorn en andere ROMs
* Tekstdisplay 32 tekens en 16 regels; graphics display 256x192 pixels monochroom
* Geluid: 1 kanaal, ingebouwde luidspreker
* I/O-poorten: Tape (cassette) interface Standard (CUTS), televisie-aansluiting, Centronics printerpoort
* Data in/uit: audio cassette-interface (Kansas City standard)
* Toetsenbord: type QWERTY
* 64-polige uitbreidingsplug (I/O data- en adreslijnen c.a. -- PL6/7)
* Voeding: 8 volt ongestabiliseerd DC, 5 volt stabilisatie was in de Atom aanwezig. De stabilisatie-IC's werden te warm bij volledige bezetting van alle geheugenplaatsen. Een externe gestabiliseerde voeding van 5 volt was dan noodzakelijk.
* Afmetingen: 381 x 241 x 64 mm
* De kast was ontworpen door een industrial designer Allen Boothroyd van Cambridge Product Design Ltd.

## Geheugenmap

Hieronder de geheugenmap voor de Atom. De gearceerde delen maken deel uit van het minimumsysteem.
| #0000 | Block Zero RAM |
| #0400 | Teletext VDG RAM |
| #0800 | VDG CRT Controller |
| #0900 | |
| #0A00 | Optional FDC |
| #0A80 | |
| #1000 | Peripherals space |
| #2000 | Catalogue buffer |
| #2200 | Sequential File buffers |
| #2800 | Floating point variables |
| #2900 | Extension Text space RAM |
| #3C00 | Off-board Extension RAM |
| #8000 | VDG Screen RAM |
| #8200 | Graphics Mode 1 |
| #8400 | Graphics Mode 2 |
| #8600 | Graphics Mode 3 |
| #8C00 | Graphics Mode 4 |
| #9800 | |
| #A000 | Optional Utility ROM |
| #B000 | PPIA I/O Device |
| #B800 | Optional VIA I/O Device for Printer Interface |
| #C000 | ATOM BASIC Interpreter |
| #D000 | Optional Extension ROM |
| #E000 | Optional Disk Operating System |
| #F000 | Assembler |
| | Cassette Operating System |