Atom Emulator D. Bronsdijk

Acorn Atom Emulator version 0.9 with R65C02 Processor

(c) Dick Bronsdijk
Graphics (c) Roland Leurs

In een van de vorige nummers van Atom Nieuws is de laatste versie van Dick Bronsdijk’s Atom emulator (versie 0.9) aangekondigd. Leendert Bijnagte heeft al in AN15-3 een technisch verhaal geschreven over de opbouw en werking van dit programma. Op verzoek van enkele aspirantgebruikers van dit programma beschrijf ik in dit artikel hoe dit programma gebruikt kan worden.

In deze handleiding:

  1. Installatie
  2. Starten
  3. Bediening van het programma
  4. Werken met bestanden
  5. Tips
  6. Afsluiting
1. Installatie

Op de regioschijf bij het vorige nummer, disk AN-97-01, staat de hele software al gebruiksklaar. U kunt de emulator starten vanaf diskette. Maar het is handiger om de emulator naar harddisk te kopieren. Maak op uw harddisk een directory, bijvoorbeeld ATOMEMUL. Kopieer de software van die regiodisk naar deze directory en de software is geïnstalleerd.

voorbeeld:

MD C:\ATOMEMUL
XCOPY A:\EMUDOS\*.* C:\ATOMEMUL

2. Starten

Ga naar de directory waar de Atom emulator in opgeslagen is, volgens bovenstaand voorbeeld is dat dus

CD \ATOMEMUL

en start het programma met ATOM9 <enter>

Nu wordt het programma gestart en een aantal roms worden geladen. Na korte tijd verschijnt de bekende standaard Atom melding met de prompt op het scherm.

3. Bediening van het programma.

De meesten onder u zullen inmiddels wel zover gekomen zijn; maar nu het gebruik van de emulator. Een aantal functietoetsen zijn in gebruik. Ik zet ze even op een rij:

F1 Helpscherm
F2 File menu
F3 Schakelaar tussen Atom VDU en 80 kolomsmode
F9 Breaktoets (=reset)

Verder zijn er nog twee speciale toetsen:

INS Atom COPY toets
ALT Atom REPT toets

Denk eraan dat deze emulator dus INS gebruikt voor copy-toets; de terminal emulator voor de Atom-in-PC kaart gebruikt hiervoor de TAB toets (ik vergis me hier dikwijls mee). De Atom-in-PC kent geen REPT toets emulatie – maar dat terzijde- .

../../graphics/aehelp.gif

Uit de omschrijving van F3 blijkt dat deze emulator ook de Atom graphics kan emuleren. Met enige gepaste trots kan ik hierover zeggen dat dit dezelfde routines zijn die ook in het Atom-in-PC terminal programma gebruikt worden. Een mooi voorbeeld dat er binnen onze club toch iets in samenwerking wordt gemaakt 🙂

Met F3 kunt u on-line omschakelen tussen de twee video-modi. Er is ook een toetscombinatie om op te starten in 32 kolomsmode bij een reset: CTRL+F9. Op het scherm verschijnt dan de emulatie van het Atom clear0 scherm. Let er wel op dat de lees- en schrijfvectoren ongewijzigd blijven. Maar hierover later meer.

De belangrijkste functietoets is F2, deze brengt ons naar het file-menu. Dit menu hebben we nodig om bestanden van disk te lezen en ze ernaar te schrijven. Dit kan op twee manieren:

  1. Emulatie van een Atomdiskette
  2. Rechtstreekse toegang tot bestanden op MS-DOS diskettes.

Het werken met bestanden wordt in het volgende hoofdstuk beschreven.

../../graphics/ae01.gif

4. Werken met bestanden

Emulatie van een Atomdiskette:

Door in het programma niet alleen een R65C02 te emuleren, maar ook de 8271FDC is het mogelijk om de DOSROM probleemloos op te nemen als uitbreiding in dit systeem. Hierdoor kunnen bekende commando’s als *CAT, LOAD "…", F=FIN"bestand" etc ook gebruikt worden in de Atom emulator. De technische truc hierachter is dat alles wat door de DOSROM naar de 8271FDC geschreven wordt te onderscheppen en naar een bestand te schrijven.

Op de (hard)disk van de PC wordt een bestand gebruikt (bijvoorbeeld ATOMDISK, maar deze naam mag u zelf opgeven) met een grootte van 100 kB. Hierin wordt alle informatie bewaard die normaliter op een Atom diskette wordt geschreven. Voordat we gebruik kunnen maken van die disk emulatie moeten we natuurlijk bekend maken welk bestand door de emulator gebruikt wordt als diskette en voor welke drive ( 0 of 1) deze emulatie gebruikt wordt.

Stap voor stap, vanuit het Atomscherm:

  • Druk F2 voor het filemenu
  • Kies optie 1 – Atom diskette emulatie
  • Geef het drivenummer
  • Geef de bestandsnaam waarmee de Atomdisk geëmuleerd wordt.
../../graphics/ae02.gif

n bovenstaande afbeelding ziet u een voorbeeld van het initialiseren van de diskette emulatie. In dit geval bestaat de emulatie-file ATOMDISK nog niet en er wordt netjes gevraagd of deze file aangemaakt mag worden

Hierna komt u terug in het File I/O menu. Met <Esc> gaat u verder terug naar de Atom emulatie. Nu kan de geëmuleerde diskette gebruikt worden. Zoals bij de echte Atom moeten we eerst DOS aanroepen met LINK #E000 of *DOS. Slaan we dit over dan krijgen we keurig de melding PLAY TAPE en dat wordt nieks. Roept u DOS wel aan maar u vergeet de diskette emulatie te initialiseren dan volgt de typische DOS foutmelding

DISK ERROR 10
ERROR 211
>_

Alle bekende doscommando’s en -statements kunnen nu gebruikt worden.

Direct MS-DOS bestanden inlezen:

ets anders wordt het als u een programma krijgt dat als MS-DOS file is opgeslagen. Dit is o.a. het geval als u een regioschijf krijgt of als u files download vanaf het Unicorn BBS. Daar staat u dan met de diskette emulatie. Gelukkig heeft Dick ook hier een voorziening in getroffen. Vanuit het File I/O menu kiest u optie 2 waarmee u een Atom programma als MS-DOS bestand kunt inlezen.

../../graphics/ae03.gif

Wat moet er nog meer gezegd worden dan wat bovenstaande afbeelding laat zien. U geeft de bestandsnaam op en het laadadres (hexadecimaal zonder #-teken). Deze bestandsnaam mag overigens voorafgegaan worden door een drive-aanduiding en pad. Let op als u bestanden inleest die zijn weggeschreven door de Atom-in-PC kaart dat daar een header van 16 bytes in verwerkt is. De emulator (her)kent deze header niet en gaat ervan uit dat dit gewoon programmadata is. U kunt deze bestanden toch inladen maar dan dient u het Start adres 16 bytes lager te kiezen. In bovenstaand voorbeeld wordt dat dan 28F0. De header wordt wel geladen, maar het uiteindelijke programma start toch op #2900

Optie 3, Intel HEX bestanden lezen, hoeft u waarschijnlijk niet vaak te gebruiken. Dit type bestanden wordt vaak gegenereerd door (cross)assemblers. Als u een programma schrijft met een 65C02 crossassembler kan deze het uitvoerbestand wegschrijven als Intel HEX bestand; de emulator kan dit programma dan direct inlezen.

Optie 4 schrijft een programma in het geheugen van de Atom emulator naar disk als MS-DOS bestand, zonder header. De emutor vraagt naar de filenaam, het startadres van het programma en het eindadres. De filenaam mag ook hier voorzien zijn van een drive- en pad aanduiding./p>

../../graphics/ae04.gif

5. Tips

Omschakelen van 80 naar 32 kolommen en vice versa

Met adres #BFFE kunt u omschakelen tussen 32 kolommen Atom video en 80 kolommen display. ?#BFFE=0 schakelt naar 32 kolommen; ?#BFFE=1 schakelt naar 80 kolommen. Let erop dat de lees- en schrijfvector niet gewijzigd wordt. Daardoor zal een printopdracht ogenschijnlijk niets op het scherm zetten. Door ook de vectoren aan te passen kan wel omgeschakeld worden tussen deze twee video modi.

Bijvoorbeeld van 80 naar 32 kolommen:

?#BFFE=0;!#208=#FE94FE52;PRINT $12

of andersom, van 32 naar 80 kolommen:

?#BFFE=1;!#208=#BEB3BE77;PRINT $12;END

nitialisatie randomgenerator

De randomgenerator is een software routine die een willekeurig 32 bits getal teruggeeft. Een voorwaarde is wel dat de inhoud van de adressen niet #00 is. Dit is helaas wel het geval als de emulator wordt gestart. Alle randomgetallen zijn 0. Dit is op te lossen door het volgende statement:
!8=123456 (of een willekeurig ander getal)

Het is aan te raden dat u iedere keer een ander getal kiest want er zit toch enige logica achter deze ogenschijnlijke willekeur. Als u steeds hetzelfde getal invoert bepaalt de randomgenerator ook steeds hetzelfde "random" getal.

Afdrukken van floating point getallen

Dick levert met zijn emulator een floating point rom mee die gewijzigd is voor wat betreft het afdrukken van floating point getallen. Hierin zit de mogelijkheid om floating point getallen met een vast aantal decimalen achter de punt af te drukken. Let op: het getal wordt afgekapt; niet afgerond. Door het statement !#2800=xx op te geven, waarbij xx een getal tussen 1 en 8 moet zijn worden de getallen afgekapt bij het printen. Net als bij de randomgenerator bevat !#2800 alleen maar #00. Zodoende moet aan het begin van een programma hier rekening mee gehouden worden, anders worden alle floating point getallen afgedrukt als 0.0.

Voor de gevorderde gebruiker: de debugger

Voor mensen die wat dieper willen gaan in deze emulator is ook de debugger beschikbaar. Met de functietoets F6 onderbreekt u de emulator en komt u in de debugger-mode terecht. Ik ga hier niet dieper op in maar volsta met een overzicht van de helpfunctie:

Step mode OFF
Xray mode OFF
BreakDetect OFF
PC:FE7B Op:F0 A:04 X:01 Y:14 SP:F4 P:F0 SV.Bdizc Next: BEQ #08 
-> #FE85
-?
6502 Emulator in Maintenance mode
r [PC|SP|A|X|Y|P] <val> load register
d [<addr>] display memory
u [<addr>] unassemble
e [<addr>] edit address contents
p [<nmbr>] eProm selection
l <file> [<addr>] [i|b] load file into memory
w <file> [<addr>] <size> write memory to file
h [<addr>] halt at address
s step mode on/off
x xray (debug) mode on/off
b breakdetect on/off
t trace
c continue after BRK stop
@ <msec> pause between steps
g <[addr]> goto run mode (at addr)
f <[addr]> fast (?) run (at addr)
-
6. Afsluiting

Ofschoon de emulator een kant en klaar product is heb ik onderstaande verbeterpunten nog op mijn lijstje staan:

  • bij opstarten een echte random waarde in !8 zetten en een zinnige waarde plaatsen in !#2800
  • mogelijkheid om Atom-in-PC files te lezen en te schrijven (dus inclusief header)
  • emulatie van Atom kleuren modi

Tenslotte voor als het een hele slechte zomer wordt: software compatible met de Atom-in-PC. De emulator is een prima werkend product, maar biedt helaas geen extra functionaliteit waarvan de pc ons toch veel te bieden heeft. Ik besef wel dat dit een enorme uitbreiding is op de bestaande emulator plus dat het karakter van de Atom emulator helemaal omgegooid wordt

De sources zijn eveneens beschikbaar via deze website: Atom Emulator v0.9 sources.