Acorn Atom Emulator v1.33
Noot van de redactie: Deze Atom emulator is geschreven door Wouter Ras ©, Delft 1997. NL vertaling P.Leurs.
De emulator bijgevoegd in de directory
atomarch/Pc99-2/Atom133/Atom133.
Inhoud UK version 1.32
- Introductie
- Configuratie
- Toetsenbord
- Emulator desktop
- cassette
- opties
- monitor
- disk
- Atomgeheugen
- Rom
- Ram
- I/O-devices
- 8255 PPI
- 6522 VIA
- 8271 FDC
- Schakelkaart en latch
- Printer
- Muis
- PC I/O
Bestandsoverdracht
- AtomTape
utility
- AtomCom
utililty
Compatibiliteit
Versie overzicht
Problemen
oplossen
Referenties
Contacten
1. INTRODUCTIE
De emulator van Wouter Ras maakt het mogelijk om de meeste, originele Acorn Atom software, op uw PC te laten draaien.
Minimum systeem vereisten:
- 80286 CPU ( 80486 DX-40 is
nodig voor real-time emulatie)
- VGA beeldscherm
- 300 KB Ram
- MS-Dos 3.0
Het pakket bevat de volgende files:
- ATOM.EXE - Acorn Atom software emulator (286+)
- ATOMTAPE.EXE - programma om Atom cassettes in te lezen in het PC geheugen
- ATOMCOM.EXE - Atom cassette interface via soundblaster
- ATOM.DOC - Engelse documentatie
De emulator is getest op diverse computers en het is gebleken dat ze op allen werkt. Het
programma is geschreven voor een MS-DOS omgeving maar het werkt ook onder OS/2 Warp, Windows 3.1 en Windows 95 (alleen full-screen). Timing, synchronisatie en geluid werken beter onder MS-DOS dan onder Windows.
2. CONFIGURATIE
De emulator is naar uw eigen wensen te configureren. Uw instellingen worden dan
opgeslagen worden in de ATOM.INI file. Als er geen INI-file aanwezig is bij het starten dan zal de emulator gebruik maken van de standaard waarden (aangegeven tussen haakjes, zie ook hoofdstuk 4.2)
.
De parameters die met een asterisk (*) zijn aangegeven kunnen vanuit de emulator desktop ingesteld worden.
*ASMLayout (0)
|
De assembler listings in de ingebouwde monitor kunnen weergegeven worden op
twee verschillende manieren: de Atom notatie (met @ voor immediate, # voor
hexadecimale getallen) of de algemene notatie (met # voor immediate en $
voor hexadecimale getallen).
|
*Sound (1)
|
Hiermee kan ingesteld worden of geluid via de PC-speaker of via de Soundblaster
gemaakt wordt. Soundblaster detectie gebeurt automatisch.
|
-SpeedIndex (auto)
|
Als de emulator niet onder de
juiste snelheid draait dan kunt u een specifiek nummer opgeven
dat de emulator op een bepaalde snelheid zet. Hoe hoger het
nummer hoe langzamer de emulatie. Voor 486/Pentium machines is
dit ongeveer de zelfde snelheid als op uw CPU in MHz. Op de wat
langzamere systemen (bijvoorbeeld 486-40 MHz) moet de waarde van
de snelheidsindex lager zijn dan de CPU snelheid.
|
-ExtRomFile (EXTROM.TAP]
|
De emulator is uitgerust met de AXR1 chip (zie hoofdstuk 5.1) in het
geheugengebied #A000-#AFFF. Als je op dit adres een andere
(EP)ROM wilt gebruiken kunt u de filenaam van het gewenste
ROM-image opgeven. De lengte van de file moet 4118 bytes zijn.
Het formaat dient het zelfde te zijn als van de .ATM-files (zie hoofdstuk 6). Indien u gebruik maakt van
schakelkaart emulatie mag de opgegeven file meerdere rom images
bevatten. In de EXTROM.TAP file in de \SOFTWARE\Atom133 directory
zijn meerdere boxen opgenomen, waaronder P-Charme, MouseDos Box,
GAGSROM en Atomic Windows.
|
-Use80x87 (0)
|
De emulator kan voor floating point berekeningen de nieuwe Floating
Point ROM op #D000 van Leendert Bijnagte gebruiken. Deze ROM, geschreven voor
de Atom-in-PC kaart, maakt gebruik van de 80387 coprocessor van de PC voor
extreem snelle floating point berekeningen. Indien geen 80387 of hoger beschikbaar
is dient deze waarde op 0 gezet te worden.
|
-IgnoreZpFEh (1)
|
Voordat een teken naar de printer gestuurd wordt vergelijkt de Atom eerst de waarde
met de inhoud van zeropage adres #FE. Indien deze gelijk zijn wordt het teken niet
naar de printer gestuurd. Na een break bevat het adres #FE de waarde #0A (LineFeed)
hetgeen voor de meeste printers inhoudt dat ze telkens op dezelfde regel afdrukken.
Als deze parameter in de .INI file op 1 gezet is zal de vergelijking genegeerd worden
omdat geheugenadres #FF07 gewijzigd wordt in #00.
|
-BoxSwitch (1)
|
Als u geen gebruik wilt maken van de schakelkaart emulatie zet u deze parameter op 0. De
eerste box van ExtROMFile zal dan geladen worden. Als er geen file gevonden kan worden zal
AXR1 geladen worden op #Axxx. Zie hoofdstuk 5.3 voor meer informatie.
|
-Box0onBreak (1)
|
Als deze waarde op 1 gezet wordt zal na een reset altijd Box0 van de schakelkaart
actief worden. Bij de waarde 0 blijft de huidige (EP)ROM actief.
|
-NMIResponse (15)
|
Deze parameter mag een waarde hebben tussen 15 en 255 en bepaalt de reactie tijd waarop
de processor antwoordt op een NMI. De echte Atom gebruikt de NMI voor data transfer van of
naar de diskdrive. Om dezelfde snelheid te behalen als de Atom dient deze parameter op
ongeveer 40 gezet te worden. De default waarde 15 is het minimum voor foutloze data transfer
in de Atom DOS routines.
|
*Colours
|
Hiermee kunnen de zeven kleuren die door de emulator gebruikt worden gekozen worden.
- BackGr is de achtergrondkleur
- ForeGr is de voorgrondkleur
- GreySb is de kleur van de "grijze symbolen" (#C0-#FF)
- Color0 .. Color3 zijn de kleuren in de Hi-res grafische kleurenmodi
Elke kleur is een 6-digit (3 bytes) hexadecimaal getal; het eerste byte staat voor de
hoeveelheid rood, de tweede voor de hoeveelheid groen en de derde voor de hoeveelheid
blauw in de kleur. Elk byte heeft een waarde van 00h-3Fh.
|
*Drives
|
Hiermee wordt vastgelegd welke disk image files gekoppeld worden aan de drives bij het
opstarten van de emulator. Deze instellingen maakt u het best vanuit de emulator desktop;
zie ook hoofdstuk 4.4.
|
3. TOETSENBORD
Vanwege het feit dat het Atom-toetsenbord anders is dan dat van de PC zijn een paar toetsen
gewijzigd. De belangrijkste zijn:
F12 | = | Break | ALT | = | Rept |
TAB | = | COPY | CAPSLOCK | = | LOCK |
` | = | ^ | | | |
Bovendien zijn de Atom-cursortoetsen vervangen door de PC cursortoetsen. Daarom is
de SHIFT toets niet langer meer nodig om de cursor naar beneden of naar links te laten bewegen.
NB: Als numlock aan staat dan geven alleen de pijltjes op het numerieke toetsenbord de juiste
waarden af.
Echter bij veel spellen zou het beter zijn als sommige toetsen ergens anders geplaatst waren. Dit
kunt u doen door te wisselen tussen het standaard toetsenbord zoals hier boven beschreven en het alternatieve toetsenbord. Als u het alternatieve toetsenbord kiest moet u de volgende toetsen
gebruiken:
Tab: links of rechts bewegen
Capslock: boven of beneden bewegen
Linker shift: Ctrl
Rechter shift: Rept
Ctrl/Alt: Shift
Cursor L: Lock
Cursor R: Copy
Wisselen tussen de standaard en de
alternatieve toetsenbord uitvoering wordt gedaan door tijdens de
emulatie door de <F4> toets in te drukken. Bij een break of
een reset wordt automatisch het standaard toetsenbord
geselecteerd.
De volgende toetsen hebben een
speciale funktie:
- F4 Wisselen tussen
standaard/alternatief toetsenbord
- F5 Wisselen tussen orginele
en maximum CPU snelheid
- F6 Laat het toolbox informatie
scherm zien
- F8 Roep de emulator desktop
op - Disk scherm
- F9 Roep de emulator desktop
op - Tape scherm
- F10 Roep de emulator desktop
op - Opties scherm
- F11 Roep de emulator desktop
op - Monitor scherm
- Ctrl+F12 Afsluiten van de
emulator
- Shift+F12 Tijdelijk naar
MS-DOS
- ALT+F12 Boot van disk image
in drive 0 (MouseDos Box vereist)
- Print Scrn kopieert het scherm
naar een .BMP file
4. EMULATOR DESKTOP
Druk op F8, F9, F10 of F11 om de emulator desktop
op te roepen. Bovenaan krijgt u dan de drie onderdelen van de
desktop te zien. Deze kunnen geselecteerd worden door <Alt>
en de oplichtende letter gelijktijdig in te drukken.
- Disk Alt+D (of F8)
- Tape Alt+T (of F9)
- Opties Alt+O (of F10)
- Monitor Alt+M (of F11)
De desktop interface lijkt veel op de C64S desktop van Miha Peternel. Indien u bekend
bent met die interface, zult u geen moeilijkheden hebben met het gebruik van de desktop.
4.1 TAPE
Met het Tape menu is het mogelijk om Tape bestanden te selecteren (TAP files) van waaruit Atomfiles
inlezen kunnen worden. Het beeldscherm heeft twee verschillende gebieden; het gebied aan de linker kant laat je de adressen van alle Tape bestanden zien, het gebied aan de rechterkant laat u de inhoud van de geselecteerde Tape gebieden zien.
Een tape bestand bevat een aantal
Atom files. (.ATM files; zie hoofdstuk 6 voor de beschrijving) bij elkaar gevoegd. Een tape
bestand kan tot maximaal 500 Atom files opslaan.
Als de cursor in het linker gebied de Tape bestanden laat zien kunt u de volgende acties ondernemen:
- Druk op <Cursor Up> of <Page Up> toets om de cursor omhoog te bewegen.
- Druk op <Cursor Down> of <Page Down> toets om de cursor omlaag te bewegen.
- Druk op de <N> toets om een nieuw Tape gebied te maken. U moet dan een filenaam
intypen. Als er geen file met die naam bestaat dan wordt er een nieuwe file aangemaakt en de lengte is dan 0.
- Druk op de <O>, <enter> of op de <Rechter Cursor> toets om de cursor naar de rechterkant van het scherm te bewegen, waar de Atom files te zien zijn.
Als de Cursor het rechter gebied
laat zien kan het geselecteerde bestand gebruikt of bewerkt
worden. De inhoud van het Tape bestand wordt regel voor regel
getoond. Elke regel staat voor een atom file waarvan de naam
gevolgd wordt door drie hexidecimale getallen: het eerste getal
is het laad-adres van het programma, het tweede getal is het
executie-adres en het laatste getal is de lengte van het
programma in bytes.
De volgende acties zijn mogelijk:
- Druk op <Cursor Up> of <page Up> toets om de cursor omhoog te bewegen.
- Druk op <Cursor Down) of <Page Down> toets om de cursor naar beneden te bewegen.
- Druk op de <S> of de <enter> om de tape file pointer bij cursorpositie te zetten.
- Druk op de <L> om de file te laden waar de cursor naar verwijst en terug te keren naar de emulator. Nu zijn er drie mogelijkheden:
- Het programma start op #2900 en het executieadres is #C2B2; nu wordt het basciccommando Load uitgevoerd. Dit betekent dat de file geladen wordt in het Atom text gebied #2900. Dan zal het text gebied gescand worden om de waarde van de TOP goed te zetten. Denk er wel aan dat als de file geen BASIC programma is de prompt niet zal
verschijnen.
- Het programma start niet op #2900 maar het executieadres is #C2B2 dan is het COS commando *LOAD nodig. De waarde van de TOP zal dan niet goed gezet worden.
- In alle andere gevallen is het COS commando *RUN nodig. Dit zal de file laden vanaf het start adres en dan wordt de executie getransporteerd naar het executie adres gespecificeerd in de file. De waarde van de TOP is
niet goed gezet.
Denk er wel aan dat alle commando's die vooraf gaan bij een asterisk (*) COS
commando's zijn dat wil zeggen dat de waarde in de TOP
niet goed gezet kan worden nadat de file geladen is.
Statements als DIM zullen de foutmelding Error 216 geven
tenzij het END of OLD statement zijn gegeven voordat het
programma wordt gestart.
Als u de file wilt openen
op een andere manier dan de desktop op te vragen of als u
het wilt laden vanaf een ander adres moet de naam wel in
de Atom BASIC prompt handmatig vermeld worden. Als geen
naam opgegeven is (zoals met het BASIC LOAD ""
commando), zal de de file die dan bij de cursor positie
is aangegeven geladen worden. De emulator ondersteunt ook
de wildcard aan het einde van de filenaam. Als u een file
probeert te laden die niet in het huidige Tape bestand
voorkomt of als een DOS leesfout optreedt, zal de
beroemde ERROR6 (checksum error) gegenereerd worden.
- Druk op de <R> om de huidige Atom file een nieuwe naam te geven.
- Druk op de <I> om de Atom file te importeren. In het rechter gebied zullen dan
alle, voor import geschikte files in de huidige directory te zien zijn. U kunt een file selecteren door op
<Enter> te drukken en dan zal deze op de huidige cursor positie toegevoegd worden.
- Druk op de <E> om de huidige file te exporteren. De MS-DOS filenaam zal dan door de emulator gegeven worden. De file kan niet geexporteerd worden als er al een file met dezelfde naam is.
- Druk op de <D> om de huidige file te verwijderen. Er wordt om bevestiging gevraagd.
- Druk op de <F> om de emulator stil te zetten in de huidige toestand.
- Druk op de <T> of op de <Linker cursor> toets om de cursor naar de linkerkant van het scherm te bewegen waar de tape bestanden getoond worden.
4.2 OPTIES
Door middel van het optiescherm kunt u de emulator settings veranderen en ze saven op de
INI-file. De mogelijke instellingen zijn:
- CPU snelheid: De emulator kan op twee snelheden draaien, namelijk:
- Orgineel: De emulator zal proberen om zo dicht mogelijk bij de orginele
6502 operating snelheid van 1MHz te komen.
- Maximum: De emulator zal onder maximum snelheid draaien. Je kunt ook
op <F5> drukken tijdens de emulatie om te wisselen tussen deze twee CPU modes. Als je op de
BREAK toets drukt zal de CPU snelheid weer in zijn orginele staat terug gereset worden.
- ASM Layout: De assembly listings van de ingebouwde monitor kunnen weergegeven
worden op twee verschillende manieren, de Atom notatie ( @ direkt, # voor de hexadecimal getallen) of de normale
notitie (#voor direkt, $ voor hex .getallen.)
- Colors : Tijdens de emulatie wordt gebruik gemaakt van alle zeven kleuren .
- BackGr is de achtergrondkleur.
- ForeGr is de voorgrondkleur.
- GreySb is de kleur van de "grijze symbolen"(#C0-#FF).
- Color0-Color3 zijn de kleuren van de HIRES kleuren modes
Elke kleur is een 3 bytes hexadecimal getal; het eerste byte staat voor de hoeveelheid ROOD de
tweede byte staat voor de hoeveelheid GROEN en de derde byte voor de hoeveelheid BLAUW. Het bereik
van elk van deze bytes is 00h tot 3Fh.
- Geluid: U selecteert hier of de gluidseffecten via de PC luidsprekers of via de SoundBlasterkaart weergegeven worden.
- Save options : Hiermee worden de ingestelde opties opgeslagen in de .INI-file. Een bestaande .INI-file zal overschreven worden.
4.3 MONITOR
De ingebouwde monitor laat je de
programma's zien terwijl ze draaien. Op het monitorscherm zijn de
volgende dingen te zien:
- 6502 registers (bovenaan
rechts)
- Assembly code (bovenaan
links)
- Geheugen dump (onderaan)
Blader met de cursor toetsen of
met de Page Up, Page Down toets.
De acties die mogelijk zijn zijn:
- Trace: Voert een instruktie
uit en werkt het assembly code venster bij. Aangezien het
beeldscherm bijgewerkt wordt verschijnen soms enkele
pixels tussen de monitor informatie.
- Step: Stapt over de
instructie heen, slaat het assembly code venster over
voor de subroutines. (JSR). In het geval van een
subroutine wordt deze uitgevoerd in een debug mode. Deze
debug mode wordt onderbreken door <F1> in te
drukken.
- Goto: Vraagt voor een nieuw
adres en springt er naar toe.
- Here: Zet een breakpoint op
de positie van het code venster en draait de emulatie in
debug mode totdat de CPU de instruktie van het breakpoint
heeft bereikt of <F1> toets is in gedrukt.
- Mode: Schakelt tussen de code
en dump.
- Where: Beweegt het assembly
code venster naar de positie van de programma teller waar
de emulatie was onder broken. Als de emulator draait in
debug mode werkt de Break toets (F12) niet. Druk op F1 om
de debug mode te beeindigen. Van de diverse I/O poorten
worden verder soms de actuele waarden niet weergegeven.
4.4 DISK
Het disk-scherm biedt de mogelijkheid om een disk image
(.DSK file) te selecteren. Een disk image wordt als zodanig herkend indien de lengte 102.400
bytes is. Iedere disk heeft 40 tracks, 10 sectoren en 256 bytes per sector.
Aan de linkerkant van het scherm zijn de aanwezige disk image files te zien. De Atom, en ook
deze emulator ondersteunt twee dubbelzijdige diskdrives:
+-----------+ +-----------+
| DRIVE 0 | | DRIVE 1 |
| ========= | | ========= |
| DRIVE 2 | | DRIVE 3 |
+-----------+ +-----------+
De drivenummers zijn in het rechter gedeelte van het scherm te zien. Gebruik de volgende toetsen
om de instellingen te maken:
- Gebruik de [CURSOR UP] of [PAGE UP] toetsen om de cursor naar boven te verplaatsen
- Gebruik de [CURSOR DOWN] of [PAGE DOWN] toetsen om de cursor naar beneden te verplaatsen
- Druk [TAB] en [SHIFT-TAB] of [0], [1], [2] en [3] om een drive te selecteren.
- Druk op [N] om een nieuwe disk image file te maken. De emulator vraagt om een filenaam. Indien
deze file nog niet bestaat wordt deze aangemaakt. Het is niet nodig om de nieuwe disk te formatteren
- Druk de [O] of [ENTER] toets om een image aan de geselecteerde drive te koppelen. Indien de cursor
op de laatste (=lege) positie staat wordt de disk uit de drive verwijderd.
- Als u op [S] drukt worden de drives met de daarbij behorende image files in de .INI file
opgeslagen en zal bij een volgende start deze configuratie automatisch geladen worden.
- Om de disk write-protected te maken drukt u op de [P] toets.
Het laden van bestanden vanaf een Atom disk geschiedt vanuit de Atom zelf. Vergeet niet om ATOM-DOS te
activeren door middel van het bekende *DOS commando. Terugkeren naar het cassette systeem kan met *COS.
Na iedere reset wordt het cassette systeem actief en moet het disk systeem opnieuw aangeroepen
worden.
In hoofdstuk 5.1 worden de DOS commando's toegelicht.
Zoals net beschreven kan een disk op write protect gezet worden. Dit gebeurt door het "ReadOnly" attribuut
van de image file te zetten. Een write protect disk wordt in het desktop scherm aangegeven met
een # achter de filenaam. Write-protect geldt alleen voor de disk in de overeenkomende drive en
niet voor de "achterkant" (Immers bij de echte Atom zijn de "voorkant" en "achterkant" beiden
write protect of beiden niet; het is tenslotte één fysieke schijf.) De emulator
kent dus ook geen relatie tussen de drives 0-2 en 1-3. Zie het meer als vier enkelzijdige drives
i.p.v. twee dubbelzijdige!
Disk activiteit vanuit de Atom wordt visueel weergegeven met een icon in de linker benedenhoek
van het scherm waarbij het ledje van de actieve drive oplicht.
ATOM GEHEUGEN
5.1 ROM
De geëmuleerde Acon Atom heeft 96
KB ROM:
- Assembler en Cassette operating Systeem op #F000 (4kB)
- Disk Operating System (DOS) op #E000 (4kB)
- Uitbreidings Rom (floating Point) op #D000 (4kB)
- Basic Interpreter op #C000 (4kB)
- 16 toolboxen op #A000 (4kB per toolbox)
Alle Basic Atom funkties en de floating point operaties worden ondersteund. De cassette load en
save routines zijn vervangen door snelle ROM-trapped routines zonder de Atom ROM te veranderen. Het *CAT commando is nu ook afgevangen zodat dit een overzicht geeft van de bestanden in de actieve .TAP file. Hierbij
is de wildcard * toegestaan. Voorbeeld: *CAT P* laat alle bestanden zien die met de letter 'P' beginnnen.
De functies FIN, FOUT, GET, BGET en FGET alsmede de statements SGET, PUT, BPUT,
FPUT en SPUT statement voor het Cassette Operating Systeem zijn ook beschikbaar
ofschoon ze zich ietwat anders gedragen als bij de echte Atom:
- Een file kan met de FIN functie geopend worden en in tegenstelling tot de Atom
zelf kan hier een filenaam, eventueel met wildcard *, opgegeven worden. Ook het
gebruik van variabelen is nodig voor de filenaam (bijv. F=FIN S of F=FIN $S). Indien
geen filenaam gegeven wordt zal de file waar de cursor naar wijst (de volgende file als
het ware) geopend worden. Bij iedere leesopdracht met GET, BGET, FGET of SGET zal data
uit de .TAP file in de emuator gelezen worden. Komt een leesopdracht voor na het einde van
de file of zonder dat een file geopend is, dan zal voor elk gelezen byte het teken #0D
teruggeven worden.
- Met de FOUT functie kan een file geopend worden om te lezen en te schrijven. Ook hier kan
weer een filenaam met eventueel een wildcard of in de vorm van een variabele gegeven worden.
Als er geen filenaam wordt opgegeven zal een bestand met de naam 'FILE' gemaakt worden aan het
eind van de huidig .TAP file. Achtereenvolgende PUT, BPUT, FPUT of SPUT statements schrijven
de data in een buffer. Telkens als de buffer vol is, er op F12 (Break) gedrukt wordt,het
desktop tape scherm opgeroepen wordt of de emulator afgesloten wordt zal de inhoud van de
buffer naar de .TAP file geschreven worden. Mocht dit om welke reden niet lukken dan klinkt een
korte pieptoon en gaat de data verloren.
Aangezien het SHUT statement onder COS genegeerd wordt blijft een file geopend totdat een
bufferfout optreedt, de F12 (Break) toets gedrukt wordt of een nieuwe file geopend wordt. Elke
keer als de buffer wordt toegevoegd aan het bestand wordt de naam van het laatste bestand in
de .TAP file gecontroleerd. Mocht deze niet kloppen (omdat er bijvoorbeeld een nieuwe file met
het SAVE commando is weggeschreven) gaat de bufferinhoud verloren. Tevens wordt ook de naam
van de .TAP file gecontroleerd. Daarbij geldt hetzelfde verhaal. Het is dus af te raden om
tijdens het wegschrijven van data in Random Access Files de .TAP file te wisselen.
- In Atom DOS mode werken de statements voor Random Access Files identiek aan de echte
Atom.
De AXR1 is een EPROM die ontwikkeld is door de
Stichting Electronica Workshop (ECD/SEW), Delft in 1981 tot 1983
en voorziet de Atom van negentien extra commando's. Zie ook Josbox Omdat het
geen standaard Acorn Atom ROM is zijn de extra commando's in het
kort beschreven:
Command Abbr. Description
------- ----- -------------------------------------------------------
DATA DA. A sequential one line file marker
Syntax: [<ARGUMENT0> ... <ARGUMENTn>]
RESTORE RES. Resets the file pointer to a specified DATA line
Syntax: [<LINENUMBER>|<EXPRESSION>|<LABEL>]
READ REA. Get records from a DATA line
Syntax: <VARIABLE0>[,<VARIABLE1> ... <VARIABLEn>]
FIND - Locates specified strings in a BASIC program
Syntax: <LITTERAL STRING>|<STRING VARIABLE>
RENUM REN. Renumbers a BASIC program and adjusts GOTO's etc.
Syntax: [<START LINE>,<INCREMENT>]
FCOS FC. Fast 1200 bps COS with visible tape transfer
indication
SCOS SC. Same as FCOS, but with 300 bps
XDUMP X. Gives ASCII/hexadecimal memory dumps
Syntax: <START ADDRESS>[,<END ADDRESS>]
HDUMP H. Gives hexadecimal memory dumps
Syntax: <START ADDRESS>[,<END ADDRESS>]
DISAS DI. A fast 6502 machine code disassembler
Syntax: <START ADDRESS>[,<END ADDRESS>]
COPY COP. Copies memory blocks to a specified destination
Syntax: <START ADDRESS>,<END ADDRESS>,<DESTINATION ADDRESS>
RELOC REL. Relocates 6502 machine code to a specified destination
Syntax: <START ADDRESS>,<END ADDRESS>,<DESTINATION ADDRESS>
STEP STE. A versatile 6502 machine code debugger
Syntax: <START ADDRESS>[,<DISPLAY ADDRESS>]
PLAY PL. Provides a versatile method of sound output
Syntax: <NOTE0>[,<NOTE1> ... <NOTEn>]
KEY K. Performs a single keyboard scan
Syntax: <VARIABLE>
ON ERR O. Redefines error handling
Syntax: <BASIC STATEMENT>
SHAPE SHA. Draws anything you want on the screen in any mode
GRMOD GR. Allows HIRES graphics to be mixed with normal characters
TXMOD T. Disables GRMOD and returns control to the 6847
FCOS en SCOS hebben geen effect in
de Emulator, omdat de casette laad en save routines worden
afgevangen de ROM. De meeste AXR1 commando's kunnen niet op
gestept worden met het STEP commando omdat het STEP commando en
het AXR1 commando van dezelfde zeropage locaties gebruik maken;
vanuit de ingebouwde monitor (zie hoofdstuk 4.3) kan echter alles
gestept worden. Alle AXR1 commando's worden gedemonstreerd in de
AXR1 demo-casette, die geladen kan worden en gerund in de
emulator.
Sinds versie 1.31 wordt ook de Atom disk controller
ondersteund. Aangezien velen geen DiskPack aan hun Atom hadden hangen of de commando's
inmiddels zijn vergeten volgt hieronder een opsomming van de commando's en meldingen:
*DOS (*D.)
Enters the Disk Operation System. The COS is re-entered on BREAK. Note:
In the ATOM emulator the COS can also be re-entered by typing *COS.
*DRIVE <drive number> (*DR.)
Selects drive number without reading the catalogue.
*CAT [drive number] (*.)
Displays the catalogue. The first line shows the title of the disk and
the current qualifier. The filenames are displayed arranged by qualifier,
with the '#' indicating that the file is locked.
The catalogue is read off disk unless the disk is in the 'ready'
condition (still spinning), in which case it is transferred from the
catalogue buffer (at 2000h).
*DIR [drive number] (*D.)
Reads the catalogue from disk to the buffer, but does not display it.
This command is often used to wait for completion of a previous
operation, since the prompt may re-appear while a transfer continues
under interrupt.
*TITLE <title> (*T.)
Sets the title of the disk to the first 13 characters of <title>.
*SETx
Sets the qualifier for all subsequent operations on files to x.
Operations that use the existing files will only search among those
created under the qualifier currently set. The default qualifier is
space. When returning to the default qualifier, be sure to enter space
after the set command.
*USEx
Temporarily sets the qualifier to x. The system returns to the previous
qualifier after the next successful operation. Two successive USE
commands are equivalent to a SET.
*LOCK <name>
Locks the named file. Locked files cannot be deleted or updated.
*UNLOCK <name> (*U.)
Unlocks the named file.
*INFO <name> (*I.)
Displays information about the named file. The format is:
qualifier : lockstate filename loadaddr execaddr length startsector
For example:
s: #BASIC C000 C2B2 01000 002
The '#' indicates that the file is locked.
*MON (*M.)
Turns on messages. Subsequent file operations print out the file's
information in the format of *INFO.
*NOMON (*N.)
Turns off messages.
*SAVE <name> aaaa bbbb cccc (*S.)
Creates a file. The contents of memory from aaaa to bbbb-1 are saved as
the named file. If a file with the same name already exists under the
current qualifier, it is deleted. The address cccc is an optional
execution address and it defaults to aaaa is not supplied.
*LOAD <name> aaaa (*L.)
Loads the named file. The file is loaded into memory starting at aaaa,
or at the file's start address if this is missing.
*DELETE <name> aaaa (*DE.)
Deletes the named file.
*GO aaaa
Executes the machine-code subroutine at aaaa.
*RUN <name> <string> (*R.)
Load and run the named file, using the start and execution address.
<string> is transferred to memory starting at 0140h with a terminating
CR, where it can be accessed by the user's program.
*EXEC <name> (*E.)
Executes the named text file as if it had been entered at the keyboard.
*SPOOL <name>
Outputs all data from keyboard first to the named file, and then to the
screen.
DOS responses and error messages:
Command?
The command is not recognised.
Syntax?
The paramters are illegal or incorrectly presented.
Name?
The filename is longer than seven characters.
File?
The file is not found.
Disc prot
The disk is write-protected.
File prot
The file has been locked.
Disc full
There is insufficient room on the disk to create the new file.
Full
There are already 31 files in the catalogue.
Disk error 08 (Clock error)
During a disk read operation a clock bit was missing.
Disk error 0A (Late DMA)
During a disk transfer the processor did not respond fast enough.
Probably due to a faulty disk controller card.
Disk error 0C (ID filed CRC error)
The cyclic redundancy check derived from the data read back differed
from that stored on the disk.
Disk error 0E (Data CRC error)
The cyclic redundancy check from the data read back differed from that
stored on the disk during a disk read.
Disk error 10 (Drive not ready)
During a transfer the disk stopped rotating. Often due to a badly
inserted disk.
Disk error 14 (Track 0 not found)
The controller failed to find track 0. Often due to an unformatted disk.
Disk error 18 (Sector not found)
The controller failed to find the required sector. Often due to a
corrupted or unformatted disk.
Atom DOS gebruikt de zeropage adressen #9A-#FD, met uitzondering van #A4, #CE-D4 en #D7-#E8.
5.2 RAM
De geemuleerde Acorn Atom heeft 40
kB Random Acess Geheugen:
-0000h: Zero Block RAM (1 kB)
-0400h: Expansion RAM (7 kB)
-2000h: DOS Catalogue Buffer (0.5 kB)
-2200h: DOS Sequential File Buffers (1.5 kB)
-2800h: Floating Point Variable Space (0.25 kB)
-2900h: Text RAM (21.75 kB)
-8000h: Graphics RAM (6 kB)
-9800h: Expansion RAM (2 kB)
5.3 I/O-DEVICES
Van het 4 kB block op #Bxxx zijn de volgende I/O-devices
geïmplementeerd in de emulator. Ze zijn echter niet volledig
uitgevoerd omdat niet alle funkties nodig zijn in de emulator.
1. 8255 Programmable Peripheral Interface Adapter (PPIA)
- Port A at #B000: Output bits: Function:
- 0 - 3 Keyboard row
- 4 - 7 Graphics mode
- Port B at #B001: Input bits: Function:
- 0 - 5 Keyboard column
- 6 CTRL key (low when pressed)
- 7 SHIFT keys (low when pressed)
- Port C at #B002: Output bits: Function:
- 0 Tape output (not implemented)
- 1 Enable 2.4 kHz to casette output (n.i.)
- 2 Loudspeaker
- 3 Intensity
- Port C at #B002: Input bits: Function:
- 4 2.4 kHz input (not implemented)
- 5 Casette input (not implemented)
- 6 REPT key (low when pressed)
- 7 60 Hz sync signal (low during flyback)
NB: Poort C, bit 3
schakelt tussen de twee mogelijke sets van vier kleuren.
Ik heb er echter voor gekozen om maar een kleurenset te
gebruiken die naar wens gewijzigd kan worden zoals in
hoofdstuk 4.2 beschreven staat. Bit 3 bepaalt wel de
intensiteit voor ForeGr in tekstmode of CLEAR0 want zo
heb ik het altijd gezien op de echte Atom en zijn groene
monitor. Als het bit gezet (1) is worden de waarden voor
rood, groen en blauw van de ForeGr en Color0 kleuren met
1,5 vermenigvuldigd. De 8-bit poort op #B003 is voor zover
nodig geïmplementeerd maar niet gedocumenteerd.
2. 6522 Versatile Interface
Adapter (VIA)
- Data Register B B800h DB (part. implemented)
- Data Register A B801h DA (printer)
- Data Direction Register B B802h DDRB (part. implemented)
- Data Direction Register A B803h DDRA (alleen lezen van DA)
- Timer 1 low counter, latch B804h T1CL
- Timer 1 high counter B805h T1CH
- Timer 1 low latch B806h T1LL
- Timer 1 high latch B807h T1LH
- Timer 2 low counter, latch B808h T2CL
- Timer 2 high counter B809h T2CH
- Shift Register B80Ah SR (not implemented)
- Auxiliary Control Register B80Bh ACR (part. implemented)
- Peripheral Control Register B80Ch PCR (alleen lage nibble)
- Interrupt Flag Register B80Dh IFR (part. implemented)
- Interrupt Enable Register B80Eh IER (part. implemented)
- Data Register A B80Fh DA
NB:
- DB en DDRB zijn dusdanig uitgevoerd dat alleen de blokgolf
gegenereerd door Timer 1 op PB7 gebruikt kan worden.
- Timer2 pulse mode kan niet gebruikt worden omdat DA niet
geïmplementeerd is. Timer2 werkt alleen in one-shot mode en staat stil in pulse mode.
- Van ACR, IFR en IER zijn alleen bits 7-5 geïmplementeerd.
Ofwel kort samengevat: de emulator biedt volledige ondersteuning van de 16 bits
timers, de interrupts die daardoor opgewekt worden en de printerpoort.
3. 8271 FDC
Een 8271 FDC is geplaatst op het adres #BA00. Waarom Acorn ooit heeft
besloten om de FDC op #0A00 te plaatsen zal voor altijd een raadsel blijven. In de
echte Atom was het met wat soldeerwerk mogelijk om de FDC te verplaatsen naar het
I/O gebied. Deze emulator maakt van deze technieken ook gebruik en de FDC staat dus
netjes op de plek waar het zou moeten. De DOSROM is uiteraard hierop aangepast.
De 8271 kent de volgende poorten:
Address Write Read
BA00h Command register Status register
BA01h Parameter register Result register
BA02h Reset register -
BA03h - -
BA04h Data register Data register
De emulator gebruikt disk image files (.DSK bestanden) die één kant
van de disk van het standaard AtomDOS bevatten, namelijk 40 tracks van elk 10 sectoren
met 256 bytes per sector; in logische volgorde.
De meeste van de commando's van de 8271 worden ondersteund. Alle AtomDOS commando's
zijn in ieder geval beschikbaar. Daarbij is het zelfs mogelijk om de geëmuleerde
diskettes te formatteren. Zie hoofdstuk 5.1 voor de dos *-commando's.
4. Schakelkaart en latch
Bits 0-3 van de poort #BFFF bepalen welke RAMBANK (of toolbox) van 4 kB groot actief is
in het adresgebied #A000-#AFFF. Door een waarde naar deze poort te schrijven
kan men handmatig een box selecteren. Tijdens de uitvoering van een programma
zal het operating systeem deze poort ook gebruiken om automatische van toolbox te wisselen.
Als in een programma een onbekend statement voorkomt zal het systeem in de huidige
box gaan zoeken naar dit statement. Als het statement niet gevonden wordt schakelt
het systeem automatisch een volgende box voor. Dit gaat door totdat alle boxen doorzocht
zijn of uiteraard totdat het statement wel gevonden is. Tijdens het wisselen van boxen
worden ook de zeropage adressen #90-#9F bewaard en voor elke specifieke box teruggezet.
5. Printer
Het is inmiddels ook mogelijk om rechtstreeks data van de Atom Emulator naar de printer
te sturen waarbij gebruik gemaakt wordt van de ROM routines in de Atom. De emulator
voorziet standaard al van een 8-bits printerpoort tegenover de 7-bits poort van de
Atom zelf. Zie ook de beschrijving van de 6522 VIA voor meer informatie over de
implementatie van de printerpoort.
De Atom gebruikt DRA (Data Register A) van de 6522 VIA om met de printer te
communiceren. In deze 8-bits poort wordt het bit7 gebruikt als statussignaal (input) en
de overige zeven bits worden gebruikt als datalijn (output). Hiertoe wordt de waarde
#7F naar het Data Directorion Register A (DDRA) op #B803 geschreven. De emulator handelt
de printer als volgt af: als DRA gelezen wordt zal bit7 aangeven of de printer on-line
is of niet, zoals aangegeven via DDRA. Bij het schrijven naar DRA zullen alle bits naar
de printer gestuurd worden. Met andere woorden, tijdens het schrijven naar DRA negeert
de emulator de status van DDRA en zullen er altijd acht bits geschreven worden.
Verder werkt de emulator volgens de routine in de Atom ROM; als in het Peripheral
Control Register (PCR) op #B80C een lage pulse wordt geschreven (dit is de waarde 1100
voor de bits 3-0) zal het byte in het register DRA naar de printer gestuurd worden.
6. Muis
Standaard kent de Atom geen muis. Kees van Os heeft echter een protocol en adressen
gemaakt om de computer toch van een dergelijk aanwijsding te voorzien. De Atom emulator
emuleert deze muis op transparante wijze. De muisinterface bestaat uit vier I/O poorten:
Address Type Description
BFE0h RW Mouse x coordinate
00h - Most left coordinate
F8h - Most right coordinate
BFE1h RW Mouse y coordinate
FFh - Top line
47h - Bottom line
BFE2h R Mouse buttons
bit 0 = 0: Left button pressed
bit 1 = 0: Right button pressed
bit 2 = 0: Middle button pressed (if available)
BFE2h W Mouse properties
bit 7 : Mouse shown/hidden (0=on, 1=off)
bits 4-0 : Mouse cursor number (00h-1Fh)
Merk hierbij op dat de laatste twee poorten op hetzelfde logische adres zitten. De
muiscursor is maximaal 8x8 (clear4) pixels groot. Dit formaat is in alle grafische
modi en in text mode hetzelfde. Dit komt omdat de muis onafhankelijk van de geselecteerde
mode werkt. De kleur van de pointer is wit.
De muis kan aangezet worden door een waarde tussen #00 en #31 naar de "Mouse
properties" poort op #BFE2 te schrijven. Er kan hiermee gekozen worden uit 32
voorgedefiniëerde cursors. De muis wordt uitgezet door een waarde > 128 (#80) naar
poort #BFE2 te schrijven.
5.4 PC I/O
Met ingang van versie 1.33 is het mogelijk om vanuit de Atom emulator
ook de ISA-bus van de PC aan te spreken. De ISA I/O map is beschikbaar op de adressen #B400-#B7FF.
De ISA I/O map loopt van $0000 - $03FF waarbij de eerste 512 bytes gereserveerd zijn voor I/O devices op
het moederbord (zoals DMA controller, timer en toetsenbordcontroller) en de hoogste groep van 512 bytes zijn
gereserveerd voor I/O uitbreidingen op de ISA bus (parallelle- en seriële poorten, videokaart etc). De
"omnummering" van Atom-naar-ISA ziet er als volgt uit:
ISA BUS I/O Map |
Atom emulator I/O Map |
$0000 |
#B400 |
$0001 |
#B401 |
$0002 |
#B402 |
...... |
...... |
$03FF |
#B7FF |
6.1 DE ATOMTAPE UTILITY
De ATOMTAPE.EXE utility zorgt
ervoor dat files overgezet kunnen worden van de orginele Acorn
Atom of cassette naar de PC. Er is echter wel een geluidskaart
voor nodig omdat de ATOMTAPE.EXE utility VOC-files analyzeerd. De
Atom of cassetterecorder wordt aansgeloten op de Line In
connector van de geluidskaart, waarbij line_2 als grond en line_1
als output signaal dient (line_3 is het input signaal naar de
Atom van de recorder; zie tekening).
Start een VOC/WAV maker op je pc
en neem op van de Line In connector. De VOC file moet 8-bits
zijn, mono en opnemen vanaf 22050 Hz. De VOC-file mag maar
gebruik maken van een datablock (type1). Het block mag wel of
niet voortgezet worden bij een blocktype 8.
Druk op Play van je
casetterecorder of save een file op je orginele Atom op of 300 of
1200 bps ( de laatste volgens het AXR1 1200 bps protocol). Het
programma kan alleen maar files met een naam verwerken; deze
files bevatten een controle block/header en een data block van
257 bytes (256 databytes en een checksum), het volgende controle
block, het volgende data block enz.
Over de casettesnelheid:
Elke byte op casette is voorzien van een startbit (0) en een
stopbit (1). Daartussen zitten de 8 bits van het databyte. In
300 bps mode bevat elke 0-bit bevat vier pulsen van een 1.2
kHz blokgolf en ieder 1-bit bevat acht pulsen van een 2.4 kHz
blokgolf. In 1200 baud mode alle 0-bits één puls van de
1.2kHz golf en elke 1-bit bevat twee 2.4 kHz pulsen. Het
stopbit bevat altijd een extra 2.4kHz puls.
Nadat de VOC file is opgenomen,
start u de ATOMTAPE.EXE utility. Type de VOC file naam in en of
het opgenomen is op 300 bps of 1200 bps. De utility controleert
dan of de VOC file het goede formaat heeft (8-bits, mono, 22050
Hz) en begint met het analyseren van de data. Als alles goed gaat
zullen de op een volgende controle blocks (headers) van de file
te zien zijn en de data blocks geladen worden. Als er geen errors
zijn dan zal de file gesaved worden onder de dezelfde naam als de
VOC file maar wel met de .ATM extensie.
Het formaat voor
de .ATM files is als volgt:
Offset |
Size |
Beschrijving |
0000h |
16 bytes |
Atom filenaam (Als deze korter is dan 16 karakters
wordt de rest opgevuld met 00h) |
0010h |
1 word |
Load address |
0012h |
1 word |
Exec address |
0014h |
1 word |
Lengte van de data in bytes |
0016h |
lengte data |
Programma / file data |
6.2 ATOMCOM utility
AtomCom is een kleine utility om
files uit te wisselen tussen de PC en de Atom via enerzijds de
geluidskaart en anderzijds de cassettepoort. Benodigd voor dit
programma zijn:
- 80286 processor
- Soundblaster 2.0 of hoger
Sluit op de Atom connector (zie
tekening bij 6.1) pen 1 aan op de line-in plug van de
geluidskaart en pen 2 op de line-out of luidsprekeruitgang van de
geluidskaart. Pen 2 gaat naar de ground aansluiting. Start het
AtomCom programma. De geluidskaart wordt geïdentificeerd en de
gevonden parameters worden op het scherm getoond. U ziet
vervolgens het hoofdmenu:
Kiest u voor 1) dan wordt om een
filenaam gevraagd; geef hier de naam op van een ATM file. Zorg
dat de Atom klaar staat om data te ontvangen, bijvoorbeeld:
FCOS
LOAD "INVADERS"
Omgekeerd, optie 2), zet u de PC
klaar om data te ontvangen. Start nu de data-overdracht op de
Atom met bijvoorbeeld:
FCOS
*SAVE "SNAPPER"2900 3C00 CE86
Let erop dat deze utility alleen
werkt met bestanden die een filenaam hebben; een opdracht als
*SAVE "" 2900 3C00 CE86 werkt dus niet. Voor een
uitgebreidere uitleg van deze utility wordt u verwezen naar de
file ATOMCOM.TXT die bij de emulator geleverd wordt.
7. COMPATIBILITEIT
CPU
- 65C02 instructie set
- Zeven extra 65802 instructies
- IRQ, RES en NMI worden afgehandeld
- 80x87 co-processor ondersteuning voor snelle floating point
berekeningen
De 65C02 kent enkele verbeteringen ten opzichte van de 6502:
- Er zijn geen illegale opcodes. Alle ongebruikte opcodes worden als NOP met geen,
één, of twee operands.
- De C, N en V vlag zijn nu ook geldig in decimale mode (de emulator behandelde deze
vlaggen ook al juist in de 6502 emulaties).
- De instructie JMP (addr) mag nu over de paginagrens heengaan, de wrap-around bug in
de 6502 is hiermee verholpen. De emulator kende deze bug overigens niet.
- De D(ecimal) vlag wordt gewist bij een RES, IRQ of NMI service
De 65C02 biedt 12 nieuwe instructies, waaronder:
- BRA - Branch always
- PHX - Push x-register onto stack
- PHY - Push y-register onto stack
- PLX - Pull x-register from stack
- PLY - Pull y-register from stack
- STZ - Store zero to memory
- TRB - Test and reset memory bits against accumulator
- TSB - Test and set memory bits against accumulator
Daarnaast nog twee nieuwe adresseermogelijkheden:
- indirect, bijvoorbeeld LDA (#55)
- Absolute Indexed Indirect, bijvoorbeeld JMP (#241A)
Naast de 65C02 instructieset biedt de emulator nog de volgende instructies van de 65802
processor:
- COP - Co-processor enable
- JSR (addr,x) - Jump to subroutine, absolute indexed indirect
- TAS implied - Transfer accumulator to stack pointer
- TSA implied - Transfer stack pointer to accumulator
- TXY implied - Transfer x-register to y-register
- TYX implied - Transfer y-register to x-register
- SWA implied - Swap high and low order bytes of accumulator
Vanwege de laatste instructie is een extra register beschikbaar geworden dat met de accu
gewisseld kan worden met de SWA instructie. Wellicht dat in een latere versie ook de 16 bits
registers en meerdere instructies ondersteund worden.
De COP instructie (#02) wijkt af van de echte 65802 processoren. In de emulator is het een
zg. implied instruction. De instructie wekt geen interrupt op maar roept een 80x87 coprocessor
routine aan. Deze routine bevat diverse functies die middels de accu geselecteerd kunnen worden.
Parameters kunnen van en naar de co-processor doorgegeven worden via het Atom geheugen. De X en Y
registers dienen hierbij als pointers naar het geheugenadres (X=lage byte en Y=hoge byte).
Verder documentatie is nog niet beschikbaar omdat de implementatie en standarisatie van deze
functies nog volop in ontwikkeling is.
VIDEO
GELUID
- ondersteunt de PC speaker en
de Soundblaster of compatible
I/O POORTEN
- 8255 PPI toetsenbord poort
- 6522 VIA timers/timer interrupts, 8 bits printerpoort
- 8271 FDC Floppy Disk Controller
- Hardware muis I/O poorten
- Schakelkaart latch
- Read-only flip-flop (#55,#AA) op adres #BF7F voor emulator detectie
COS
- ROM afgevangen LOAD en SAVE
routines
- ROM afgevangen FIN, FOUT, GET en PUT
routines
- Cassette image files met een
directory
- *CAT wordt afgevangen in ROM
- ATOMTAPE.EXE utility leest de
orginele cassettes van .VOC-files
- ATOMCOM.EXE utility voor data uitwisseling
tussen Atom en PC
Disk systeem
- Werkt via image files
- Drive status leds op het beeldscherm
Overige apparaten
- Uitvoer naar (PC) printer
- Hardware muis ondersteuning met 32 muiscursors
8. Versie overzicht
Upgrade v1.0 -> 1.1
Op het eerste gezicht is er niets
nieuw in de versie 1.0. Ondanks dat de emulator v1.1 runs in VGA
mode 12h in plaats van 13h kan bij sommige grafic adapters geen
stabiel beeld worden bereikt. Ik hoop dat dit het probleem
oplost.
Upgrade v1.1 -> 1.2
Enkele kleine aanpassingen:
- een rom kan geladen worden in
het geheugengebied #A000-#AFFF. Andere ROM gebieden
kunnen niet meer overschreven worden.
- een bugfix: de AND instructie
werkt nu ook op I/O adressen
- soms verdwenen files en
kwamen weer terug of konden niet geimporteerd worden.
Door domweg een interne errorvlag te resetten (gebruikt
door Turbo Pascal's I/O afhandeling) voordat een file
geopend wordt blijkt dit probleem te verdwijnen.
- nog een bugfix: het laden van
een uitbreidingsrom die opgegeven was in de INI file
werkte niet. Moet nu goed gaan.
- Hotkeys gewijzigd.
Versie 1.2 -> 1.21
- Gedeeltelijke implementatie
van PPIA poort #B003
- Optionele disassembler van
illegale opcodes in de desktop monitor
Versie 1.21 -> 1.22
- Foutje in v1.21 hersteld:
geheugen #0000-#9FFF RAM toegevoegd en #C000-#DFFF
beschermd tegen overschrijven bij het laden.
- Op sommige systemen met
bepaalde videokaarten ging de monitor in stand-by mode
kort nadat de emulator gestart was. Dit is nu verholpen.
Versie 1.22 -> 1.30
- *CAT commando wordt afgevangen in ROM.
- Debugger opties uitgebreid. Nu kunnen maximaal vier breakpoints
gelijktijdig gezet worden. De speciale toetsen F4, F5, F6, F9, F10,
F11, F12, Shift+F12, Alt+F12, Ctrl+F12 kunnen nu ook tijdens het debuggen
gebruikt worden.
- Implementatie van schakelkaart met maximaal 8 toolboxen op #Axxx. Box
informatie wordt met F6 getoond.
- De functies FIN, FOUT, GET, BGET en FGET, alsmede de statements SGET,
PUT, BPUT, FPUT en SPUT werken nu ook in COS.
- MS-DOS shell (tijdelijk naar MS-DOS).
- Printer uitvoer geïmplementeerd.
Versie 1.30 -> 1.31
- Screendump naar BMP file.
- Muis ondersteuning ingevoerd.
- Floppy Disk Controller en DOSROM opgenomen in emulator.
- Disk Screen in emulator desktop opgenomen.
- Maximaal aantal toolboxen op #Axxx uitgebreid naar 16.
Versie 1.31 -> 1.32
- Geluid via PC-speaker verbeterd.
- 65C02 emulatie i.p.v. 6502.
- Zeven extra 65802 instructies toegevoegd.
- Boot vanaf disk image in drive 0 door ALT+F12 te drukken.
- Alternatieve Floating Point ROM met 80x87 co-processor ondersteuning.
9. PROBLEMEN OPLOSSEN
Elke keer als de emulator wordt
gestart zal deze de snelheid van de CPU vaststellen. Als dit niet
correct wordt gedaan dat moet de waarde van de
"Speedindex" in de .INI-file handmatig gezet worden.
Deze waarde zal ongeveer hetzelfde zijn als de de waarde van de
CPU snelheid van de eigen PC (in MHz) voor de 486/pentium
machines.
Voorbeelden:
Processor | Index |
AMD 486DX-40 MHz | 39 |
Intel 486DX2-66 MHz | 65 |
Intel Pentium-120 MHz | 123 |
Intel Pentium-233 MHz | 236 |
NB: De waardes zoals hier boven
beschreven zijn van toepassing op een emulator die draait onder
een MS-DOS omgeving. Als het programma onder Windows draait zal de emulator
een beetje langzamer draaien (automatische snelheid detectie op
een P120 resulteert in een waarde van 123 als deze draait onder
MS-DOS en resulteert in 121 als het draait onder Windows 95).
Als je een andere extensie ROM
wilt gebruiken dan de AXR1 op geheugen adres #A000, kunt u de filenaam als volgt in de .INI-file opgeven:
AltExtROM=<filenaam.ext>
Als de emulator gestart wordt zal de uitbreidingsrom vanaf geheugen adres #A000 geladen worden
indien de lengte exact 4118 bytes is. De file mag elke naam en extensie hebben zolang het formaat van de file hetzelfde is als het formaat van een ATM-file.
indien soms een paar
toetsen niet werken (shift, Alt, CTRL enz) denk er dan aan dat u
kunt schakelen tussen het standaard en het alternatieve
toetsenbord door op de <F4> toets te drukken. Na een BREAK
(F12) wordt automatisch het standaard toetsenbord geselecteerd.
Onder Windows 95
kan het gebeuren dat na het switchen naar een ander
programma en vervolgens weer terug naar de Atom emulator het
scherm blanco is. Er is niets ernstigs aan de hand, het scherm
moet alleen opnieuw opgebouwd worden, wat u kunt doen door de
emulator desktop <F9> even op te roepen en dan weer terug
te keren naar emulatie door op <Esc> te drukken.
Het kan gebeuren dat de Atom hangt vanwege incompatibiliteiten
tussen (EP)ROM boxen. Neem het volgende geval:
GRMOD <return>
VAR <return>
Het eerste commando staat in de AXR1 box en wijzigt de lees- en schrijfvectoren op #208/#209 en
#20A/#20B. Het tweede commando staat in de P-Charme toolbox; dit commando stuurt de output via
de zojuist genoemde vectoren. Deze wijzen echter naar de nu niet beschikbare AXR1 box. Echter,
de emulator zorgt ervoor dat de AXR1 box voorgeschakeld wordt, voert de schrijfopdracht uit en keert
terug naar P-Charme. Dit gebeurt door de Branquar Schakelsoft die een interne tabel met "destination"-
boxen opbouwt van de vectoren #200-#21A en #3FE. Hiervoor geldt echter een maximum van 32 "bank swapped
calls" die gelijktijdig gemaakt kunnen worden. Overschreiding van deze 32 niveau's leidt tot een
Error 33.
Denk er ook aan dat de zero page adressen #90-#9F apart per box bewaard worden. Gezamenlijk gebruik
van andere zeropage adressen kan leiden tot ongewenste effecten. Als dat problemen oplevert kunt u
de BoxSwitch parameter in de Atom.ini veranderen.
Als een frozen-file geladen wordt en het zaakje crasht meteen ligt dat meestal aan een andere
volgorde van geladen toolboxen. Herstel de fout door de toolboxen weer als tijdens het freezen
van de file te laden of draai de emulatie zonder box-switching, waarbij de juiste toolbox
handmatig voorgeschakeld is.
De optie om tijdelijk naar MS-DOS te gaan kan mislukken bij te weinig conventioneel geheugen. De
emulator draait geheel in dit geheugen waardoor er slechts weinig geheugen overblijft voor andere
toepassingen. De geselecteerde disk image files blijven geopend en kunnen door andere applicaties
alleen voor lezen geopend worden.
Ofschoon alle COS routines vanuit de ROM afgevangen worden kan het nog steeds voorkomen dat
de meldingen PLAY TAPE, RECORD TAPE danwel REWIND TAPE op het scherm verschijnen. Een COS routine
wordt alleen afgevangen als de bijbehorende vector naar het oorspronkelijk adres wijst (dus de het
adres dat gezet wordt na een BREAK). Als er in de vector een ander adres staat gaat de emulator
ervan uit dat het een DOS routine is en wordt de vector gevolgd zoals op een echte Atom.
10. REFERENTIES
Onderstaande literatuur is gebruikt bij het schrijven van dit programma:
- Johnson-Davies, David: "Atomic theory and practice", second ed. 1980, Acorn Computers Ltd.
- "Atom Technical Manual", 2nd issue, october 1980, Acorn Computers Ltd.
- Greenley, Larry et al.: "Commodore 128 Programmer's Reference Guide", february 1986, Bantam Books.
- Lincklaen Arriens, H.J. and Horsmeier, J.A.: "Atom Extension ROM (AXR1) Instructions Manual", second edition 1983, ECD/SEW Stichting Elektronica Workshop.
- Vardy, Adam: "Extra instructions of the 65xx series CPU", text document of 27 september 1996, downloaded from " http: /www.funet.fi/".
- Kontros, Frank: "R6522 Versatile Interface Adapter", text document downloaded from "http: //www.funet.fi/".
- Brown, Ralf: "Interrupt List Release 54", "file PORTS.LST", june
1997.
- Reinders, Henk: "Atom Ware deel 2: De FDC en DOS ROM",Federatie van Acorn Computer
Clubs Nederland/België.
- "Atom Disc Pack ", Acorn Computers LTD.
Daarnaast zijn de volgende, engelstalige, documentatiefiles nog beschikbaar via deze CD-ROM:
11. CONTACT MET DE AUTEUR
Wouter Ras is helaas door drukke werkzaamheden niet meer actief met de Atom. H.
|