images/terug.gif

Atom-in-PC Software
door Roland Leurs.

pictures/terminal.jpg

Deze pagina geeft een indruk van de software voor de Atom in PC print.
Meer details zijn te vinden in het Atom-in-PC EPOS/3 User Manual.

De software voor de Atom-in-PC print draait op elke R6502 gelijkwaardige processor. Zoals de R65C02 en de R65802 die op deze print zijn getest, het operating systeem EPOS/3 gebruikt slechts de native R6502 instructies. Andere toepassingen kunnen de aanvullende instructies van de R65C02 and R65802 microprocessors gebruiken.

Het Atom Systeem

De Atom software bestaat uit drie delen:

De Machine Operating Systeem ROM is geplaatst in de adresruimte #F000 - #FFFF. Ik heb een groot aantal modificaties moeten maken om het te laten werken op de Atom in PC print. Er zijn nieuwe operating systeem vectoren gemaakt om de joystick poort te lezen en bytes te zenden naar de PC en een OSBYTE vector, zoals in de BBC, is geïmplementeerd. Ik heb ook de reset routine en een aantal grafische routines gewijzigd. Dit kost waardevol Atom ROM geheugen en daarom moest ik bijna het gehele Atom Cassette Operating Systeem verwijderen. Dit is in detail te lezen in het Nederlandse handboek: hoofdstuk 8.

Als u uw eigen machine operating systeem wilt schrijven, ga je gang! Van oorsprong start Atom-in-PC op van een 16 KB EPROM maar het is mogelijk uw eigen OS te laden in de schaduw RAM op de adresruimte #C000 - #FFFF. Een voorbeeld van een ander operating systeem is BBC Basic, dat verderop besproken wordt.

De Atom Basic Interpreter, op de adresruimte van #C000 - #CFFF, is op verschillende adressen gewijzigd. De meeste van die wijzigingen hebben betrekking op het executie-adres in het SAVE"file" statement. De originele Atom filepointer is 24 bits; met de huidige disk omvang zouden we in problemen kunnen komen met zo'n kleine pointer. Daarom heb ik die vergroot naar 32 bits. Dit biedt de Atom de mogelijkheid om files van 2GB groot te hanteren. Ik heb ook een kleine bug gerepareerd die het hangen veroorzaakt als u intikt "OLD" en als er geen of een misvormd Basic programma in het geheugen aanwezig is. De Basic Interpreter zoekt nu het TOP-adres van het programma op. Als er geen TOP (two bytes: #0D #FF) is gevonden wordt de "Bad program" boodschap op het scherm gezet en een NEW statement uitgevoerd.

De Atom heeft een mogelijkheid om uitbreiding ROMS te gebruiken. Wie herinnert zich niet voetje 21 voor de Floating Point ROM en voet 24 for the "Program Powers Toolbox"? De Atom in PC ondersteunt Floating Point berekeningen in Basic en acht utility Roms. Behalve dat is er ook een Disk Operating Systeem aanwezig.
De tabel hieronder geeft een overzicht van de uitbreiding Roms in het Atom-in-PC systeem:

Memory Map

Expansion ROM

Omschrijving

#E000 - #EFFF

PC-DOS

Disk Operating Systeem

#D000 - #DFFF

Floating Point ROM

Floating Point berekeningen in Atom Basic

#A000 - #AFFF

Utility ROM

8 aanvullende Basic uitbreidingen

#1000 - #1FFF

Branquar

BBC - alike shadow rom OS uitbreiding

PC-DOS is het nieuwe Disk Operating Systeem voor de Atom-in-PC. De meest gebruikte MS-DOS en Atom-DOS commando's zijn bechikbaar zoals de *-commands, bijv:

*CAT

Laat een catalog van files zien

*LOAD

Laad een file in het Atom geheugen

*SAVE

Schrijft een stuk geheugen naar de (hard)disk

*INFO

Laat de eigenschappen zien

*(UN)LOCK

Disable/enable schrijf toegang tot file

*CD

Verandert de directory

*MD

Maakt een nieuwe directory

*DELETE

Wist een of meer files

Dit zijn slechts een paar commando's. Lees meer over het PC-DOS in het Atom in PC manual in hoofdstuk 6.

De Atom-in-PC emuleert niet de Atom disk controller noch werkt ze met disk images. Alle files zijn native MS-DOS files. Slechts de header van 16 bytes wordt toegevoegd aan de data. Dus de eerste 16 bytes maken de Atom alles over het file duidelijk. Ik heb een DOS en een OS/2 tool geschreven om files te converteren tussen native MS-DOS file formaat, Atom-in-PC formaat en Wouter's Atom Disk Image formaat. Het is in de download sectie te vinden.

DE originele Floating Point ROM werkt goed in de Atom-in-PC. De standaard ROM is gemodificeerd door de FAC gebruikersgroep om verder te worden geïmplementeerd in uitbreiding Roms. Er zijn een paar patches aangebracht die het mogelijk maken om uitbreiding op het #1xxx geheugen blok.

Een andere interessante Floating Point ROM is door Lendert Bijnagte gemaakt. Deze ROM gebruikt de 80387 mathematische coprocessor in uw PC om de Atom floating point berekeningen uit te voeren. Als een floating point routine is aangeroepen, verzameld deze floating point rom alle benodigde data en geeft die door aan het terminal programma. De resultaten worden doorgegeven aan de aangeroepen floating point functie. Dit voert de floating point berekeningen op de Atom erg snel uit. Wouter Ras gebruikt dezelfde ROM in zijn Atom emulator als u beschikt over 80387 ondersteuning.

Er zijn veel utility ROMS voor de Atom. Daarvoor zijn een ROM schakelkaarten beschikbaar. De meeste ontwerpen bieden plaats aan zes 2732 of 2532 EPROMS en twee blokken van 4 KB RAM elk. Deze ROMS hebben dezelfde geheugeadres ruimte tussen #A000 - #AFFF. Een paar mooie uitbreiding ROMS zijn:

P-Charme

Voegt procedures en functies toe aan Atom Basic.

GAGS

Graphics And Game Support, met software spritesvoor de Atom.

SALFAA

Een symbolische assembler, gebruikt echte labels ipv Atom's array elementen.

Atomic Windows

Voorziet in een grafisch user interface, heeft niets van doen met Microsoft.

tot slot., een extra blok van 4 KB geheugen dat is gereserveerd voor het Schakekaart Operating Systeem. Branquar SOS is een veel gebruikt stuk software voor deze taak. Het SOS laat de verschillende utility ROMS netjes samenwerken. U kunt alle statements van alle Roms door elkaar gebruiken en het lijkt of U over één grote EPROM beschikt. Denkt u een ander utility nodig te hebben U kunt die laden en zonder reboot gebruiken. :-)

Het Branquar SOS is door Theo denExter geschreven; een aantal anderen hebben een paar aanvullinge togevoegd. Het is te vergelijken met het Shadow Ram in de BBC Micro.

images/terug.gif

BBC Basic draaien

Ja, het is mogelijk om programma's in BBC basic te draaien maar met enige beperkingen:

  • Dit deel van de software is nog in ontwikkeling, dus niet alle functioes zijn reeds geimplementeerd.

  • BBC Basic, geen BBC Micro programma's geschreven in assembly (de meeste spelletjes )

Maar er is ook een positieve benadering:

  • Met een 2 MHz R65C02A processor draaait BBC Basic runs een beetje sneller in MODE 3 of MODE 6 toepassingen

  • Een paar grafische statements werken reeds, zoals MOVE, DRAW en een paar PLOTs.

De oorspronkelijke BBC Basic Interpreter legt beslag op de geheugenruimte adressen van #8000 - #BFFF. Nogal onplezierig voor een Atom systeem. Dat is precies de ruimte voor het videogeheugen, de utility ROM en de I/O ruimte. Op het BBC Basic Board voor de echte Atom, deeg Acorn een slimmeaet: ze verwisselden de processor adreslijnen A13 en A12. Op die manier veranderde de geheugenruimte #8000 - #BFFF in Atom mode naar #4000 - #7FFF en visa versa. Acorn voegde wat geheugen toe boven het block zero geheugen (op die manier hebben we RAM van #0000 - #07FF). Natuurlijk, op het BBC Basic Board was ook een 16 KB EPROM met de BASIC en een 4 KB EPROM met het machine operating systeem aanwezig.

Het meest belangrijkste deel van deze BBC Basic implementatie is dat Acorn used precies dezelfde Basic Interpreter gebruikt als in de BBC Micro en Acorn Electron. Ik heb bit voor bit vergeleken en ze zijn exact gelijk. Alle verschillen zijn in de machine operating systeem ROM. Dat maakt het mogelijk om BBC Basic te draaien op de Atom-in-PC.

Omdat ik geen hardware modificaties wenste te maken op het printed circuit board, moest ik een andere oplossing bedenken om BBC Basic te implementereen. ik reloceerde de BBC Basic Interpreter naar een andere adres ruimte. Zie de onderstaane tabel:

Adres ruimte in hex

Atom mode

BBC mode

0000 - 0FFF

Zero page & OS werkruimte

Zero page & OS werkruimte

1000 - 1FFF

Branquar SOS

Machine Operating Systeem ROM

2000 - 9FFF

User program & video RAM

User program geheugen (40 kB!)

B000 - BFFF

I/O ruimte

I/O ruimte

A000 - AFFF

Utility ROMS

Machine Operating Uitbreidingen

C000 - FFFF

Machine Operating Systeem & Basic

BBC Basic Interpreter

Het reloceren van de BBC Basic Interpreter was een tijdrovende zaak. Maar ik deed het en het is gelukt. Ik vond alle adressen van de absolute JMP en JSR instructies en nog erger al die tabellen, het ergst waren de loading registers voor geïndexeerde adressering zoals::

LDA #&B0
STA &70
LDA #&85
STA &71
LDA (&70),Y

Inmiddels had ik en goede debugger nodig voor mijn Atom-in-PC. Die was niet beschikbaar dus moook zelf schrijven. Maar per slot het was het waard alles werkt. BBC Basic draait op mijn Atom-in-PC board. Maar wat nog belangrijker was: ik weet welke adressen ik moet veranderen als ik de BBC Basic op een ander, op de 6502-gebaseerd processor board, wil draaien. Door middel van een eenvoudig programma kan ik de gehele BBC Basic Interpreter binnen een paar minuten naar elke gewenste geheugenruimte van een 6502 microprocessor reloceren.

Het enige dat nog moet geschreven worden is een goed Machine Operating Systeem volgens de regels van de BBC Micro. Deze ROM onderstent de basic I/O functies zoals keyboard entry, schrijft een karakter naar het display en zelfs een paar eenvoudige graphics (MOVE, DRAW en een subsetvan het PLOT statement).

Eén van de Machine Operating Uitbreidinge op &Axxx vvorziet in een complete PC-DFS. Het biedt toegang tot het MS-DOS file systeem vanuit de BBC Basic. U kunt dit vergelijken met PC-DFS naar PC-DOS in de Atom-mode. PC-DFS voorziet in file systeem service naar BBC Basic door middel van de Operating Systeem vectoren op pagina &2xx. Het grooteste verschil met bijv. (A)DFS is het gebruik van karakters zoals $ en / (in MS-DOS worden ze vertegenwoordigt door \ resp .)

Delen van deze software is op de download pagina te vinden, andere delen nog niet omdat die nog in ontwikkeling zijn.

images/terug.gif


Het Terminal Programma

De Atom-in-PC print moet met de PDC communiceren. De Atom gebruikt de 6522 systeem VIA voor dit doel. Aan de PC-kant is er de i8255 PPI. Samen vormen ze twee uni-directional 8-bit datapaden met hardware handshake. Binnen de Atom draagt het Machine Operating System zorg voor de communicatie. Aan de PC-kant draait een programma dat voorziet in terminal functionalliteit (en meer).
Het hoofd terminal programma isgeschreven in 80x86 assembly als een MS-DOS programma. Als dit programma is gestart reset dit de Atom-in-PC print door de R65C02 reset pin van een lage spanning (logisch 0) te voorzien. En maakt die spanning weer hoog (logisch 1) anders zou de Atom langdurig in slaap vallen. Na de reset wacht de atom slechts op bytes ...........

Deze bytes kunnen commando's of karakters zijn. Als het terminal programma een niet-nul (non-zero) byte ontvangt van de Atom, neemt het aan dat het een karakter is en stuurt het byte naar de monitor. Als het ontvangen byte een nul (zero) is, weet het terminal programma dat er op zijn minst nog een byte zal komen. Het tweede byte is het commando nummer. Daarna, worden een massa bytes in beide richtingen verzonden, overeenkomdtig met dat speciale commando, Bijvoorbeeld:

#41 Schrijf een byte naar een geopend random access file
Input: handle (1 byte)
data (1 byte)
Return: result (1 byte)
De data wordt naar een file geschreven met de aangegeven file handle. De resultcode is het aantal
bytes dat naar een file wordt geschreven. Bij goed resultaat, zal dit '1' zijn. Een '0' waarde geeft aan dat geen
data naar de disk => (the disk is full) kon worden geschreven.

Er zijn meer dan 100 commando's (een aantal daarvan gebruiken subcommando's) die de Atom gebruik laten maken van elk stukje hardware en software inuw PC. Bekijk deze lijst maar:

  • Hard-Disk gebruik

  • Tekst en grafisch beeld output (tot resolutie van 1280 * 1024 * 256 als uw video subsysteem dat ondersteunt)

  • Mouse gebruik

  • Joystick invoer

  • Gebruik tot 4 MB XMS geheugen

  • Maken van floating point berekeningen

  • Serial I/O

  • Printen

  • Toegang to het MS-DOS geheugen

  • Toegang tot de ISA bus

De laatste version van het terminal program is 4.23. Een volledige beschrijving van alle commando's staat in het EPOS manual: Hoofdstuk 5.

In versie 4.25, die nog in ontwikeling is, ebn ik begonnen met de scheiding van de hardware communicatie routines en de commando's op source niveau. Ik hierdoor meer flexabiliteit tot stand brengen. Als deze twee delen gescheiden zijn kan ik het terminal programma gebruiken om te communiceren met de echte Atom, een BBC Micro of welk computer systeem dan ook. Het enige dat ik moet schrijven zijn de communicatie routines. Dit zou ook interessant kunnen zijn voor iedereen die zijn of haar eigen microprocessor basis circuit ontwerpt. Door eenvoudig een klein communicatie onderdeel als een RS232 poort toe te veogen kan uw print elke PC bedienen.


Als u denkt dat u een deel van deze software goed kunt gebruiken vooréén van uw eigen projecten dan kunt u gebruik maken van de sources. Zoals vermeld vallen deze onder de restricties van de GNU Licentie overeenkomst.

images/terug.gif


Laatste update door R. Leurs: 12 december 1999. Bewerking H.v.d.Heijden 13/11/2002.