• No results found

Beschrijving Monitor09

N/A
N/A
Protected

Academic year: 2021

Share "Beschrijving Monitor09"

Copied!
49
0
0

Bezig met laden.... (Bekijk nu de volledige tekst)

Hele tekst

(1)

Beschrijving Monitor09

Citation for published version (APA):

Tiesinga, J. (1987). Beschrijving Monitor09. (IPO-Rapport; Vol. 618). Instituut voor Perceptie Onderzoek (IPO).

Document status and date:

Gepubliceerd: 18/11/1987

Document Version:

Uitgevers PDF, ook bekend als Version of Record

Please check the document version of this publication:

• A submitted manuscript is the version of the article upon submission and before peer-review. There can be

important differences between the submitted version and the official published version of record. People

interested in the research are advised to contact the author for the final version of the publication, or visit the

DOI to the publisher's website.

• The final author version and the galley proof are versions of the publication after peer review.

• The final published version features the final layout of the paper including the volume, issue and page

numbers.

Link to publication

General rights

Copyright and moral rights for the publications made accessible in the public portal are retained by the authors and/or other copyright owners and it is a condition of accessing publications that users recognise and abide by the legal requirements associated with these rights. • Users may download and print one copy of any publication from the public portal for the purpose of private study or research. • You may not further distribute the material or use it for any profit-making activity or commercial gain

• You may freely distribute the URL identifying the publication in the public portal.

If the publication is distributed under the terms of Article 25fa of the Dutch Copyright Act, indicated by the “Taverne” license above, please follow below link for the End User Agreement:

www.tue.nl/taverne Take down policy

If you believe that this document breaches copyright please contact us at: openaccess@tue.nl

providing details and we will investigate your claim.

(2)

Instituut voor Perceptie Onderzoek

Postbus 513, 5600 MB

EINDHOVEN

Rapport no. 618

Beschrijving Monitor09

J. Tiesinga

JT/jt 87/06

18.11.1987

(3)

Contents

1

Inleiding

2

2 Gebruikte afkortingen

3

3

Initialisatie

4

3.1

Aanmaak van de monitor

4

3.2

Programmaexecutie

4

4

Commando's

6

4.1

Go

...

7

4.2

Help

...

7

4.3

Modify ..

7

4.3.1

Data.

7

4.3.2

Commando's

8

4.4

Print .

8

4.5

Send

0 o o 0 I 0 0 I

8

5

Wetenswaardigheden

9

5.1

Oude werkwijze . .

9

5.2

Praktijkervaringen

9

5.3

Jumptabel .

11

6

Literatuur

12

A

Programma listing

13

1

(4)

1

Inleiding

De monitor09 is een assemblerprogramma voor 6809-georiënteerde

applika-ties. Het programma is een stuk gereedschap, waarmee interactief hardware

en software getest kan worden. De monitor zelf maakt voor de communicatie

met de buitenwereld gebruik van een aciapoort: als daarop een terminal

aangesloten wordt kunnen de commando's met het toetsenbord ingegeven

worden, verzonden data verschijnt dan op het beeldscherm.

(5)

2

Gebruikte afkortingen

De volgende tabel bevat een aantal gebruikte afkortingen en hun betekenis:

Afkorting Betekenis

adres

hexadecimaal getal in de range $0000 - $FFFF

adresl

hexadecimaal getal in de range $0000 - $FFFF

adres2

hexadecimaal getal in de range $0000 - $FFFF

byte

hexadecimaal getal in de range $00 - $FF

CR

carriage return (wagenterugloop, ascii 'char' $00)

spatie

spatie (ascii 'char' $20)

IRQ

normale interrupt van de 6809 processor

FIRQ

fast interrupt van de 6809 processor

NMI

non rnaskabie interrupt van de 6809 processor

(6)

3

Initialisatie

3.1 Aanmaak van de monitor

Het assemblerfile

1

dat de monitor beschrijft

2

heeft de mogelijkheid een

aantal monitoren te genereren voor verschillende toepassingen. Om deze

toepassingen van elkaar te onderscheiden wordt gebruik gemaakt van

'as-sembler directives'. In onderhavig geval zijn er twee constanten gedefinieerd:

'LABBUS' en 'ALGEMEEN'. Slechts een van twee kan actief zijn, wat

aangegeven wordt met het ongelijk aan nul zijn van de constante. In geval

'LAB:BUS' wordt een monitor gegenereerd voor de LABBUS 6809 CPU

mod-ule, waarin een prom van het type 2532 past. Op deze kaart is een aciapoort

aanwezig (6551) waarvan de monitor dan ook gebruikt maakt.

Wanneer 'ALGEMEEN' actief is kan een applikatiemonitor. Voor de

ap-plikatie kan nu gekozen worden uit twee pramgroottes (2K/4K bytes), in

te stellen met de variabie 'PROMTYPE'. Afhankelijk van de pramgrootte

wordt de Helpfunctie meegegeven. Nu moet nog het acia-adres opgegeven

worden en de invuloefening is af. Als acia wordt alleen het type 6850

on-dersteund.

3.2 Programmaexecutie

Wat gebeurt er nu wanneer een prom met de de monitor geïnstaleerd is en

de spanning staat aan e.d.?

Nou, het volgende:

• Aannemende dat alle hardware correct functioneert en de acia

inder-daad op het gegeven adres geselecteerd wordt beginnen we bij powerup

('PWRUP') met het zoeken naar in het systeem aanwezig geheugen

('FIND'). Wanneer er een adres gevonden wordt dat zich als geheugen

gedraagt, wordt dit ter plekke bewaard, aannemende dat er tenminste

twee opeenvolgende geheugenplaatsen zijn.

• Nu wordt het eind van dit geheugen gezocht. Als dit gevonden wordt

dient de adreswaarde van het begin nog steeds op die plek te staan.

Is dit niet het geval, dat zat daar dus geen geheugen en het spelletje

kan dan opnieuw beginnen. Is de waarde nog steeds op zijn plaats dan

dient het gevonden eindadres minimaal een aantal geheugenplaatsten

1

VAX: Monitor09.txt, PMDS: monitor09.s

2Bij deze beschrijving is uitgegaan van het VAX assemblerfile, dat op het PMDS is

(7)

van het begin verwijderd te zijn, wil de monitor er mee kunnen werken,

anders beginnen we opnieuw naar geheugen te zoeken.

• Lukt het niet voldoende geheugen te vinden dan wordt de acia geïnitialiseerd

en de boodschap 'FATAL ERROR: NOT ENOUGH RAM 1111'

ver-stuurd, waarna gewacht wordt totdat iemand de spanning van het

cirquit afhaalt (of de resetknop bedient).

• Wordt er wel voldoende geheugen gevonden, dan verschijnt de

vol-gende mededeling op het scherm: 'RAM END: $adres', met daarna de

prompt 'TESTMON09: '. De mededeling over het laatste ramadres

geeft een indicatie over de werking van het systeem.

(8)

4

Commando's

Het programma kent een aantal commando's. Het zijn:

j

Commando

J

Parameter(s)

J

Betekenis / Naam

B

Laat het Base-adres van de

moni-torvariabelen zien

D

F

Disable FIRQ

I

Disable IRQ

E

F

Enable FIRQ

I

Enable IRQ

--·--- -· ---

I--F

Find ram in system

G

adres

Go: start programma op

adres

---.

H

Help functie (alleen voor prom van

4k bytes)

I

adresl adres2 byte

Initialize memory van

adresl

t/m

adres2

met

byte

L

-

Load motorola Sl records

M

adres

Modify memory, start at

adres

p

adresl adres2

Print geheugeninhoud van

adresl

tjm

adres2 in hexadecimale en ascii

notatie

R

-

Reset vectoren voor NMI, IRQ,

en FIRQ naar in de monitor

gedefiniëerde interruptroutines

s

,adresl adres2

Sendinhoud van

adresl

t/m adres2

1'

in de vorm van motorola S 1 records

T

-

Test ram en meldt het laatst

gevon-den ramadres. De test laat de

infor-rnatie in het ram onaangetast

V

F adres

Vector definitie voor FIRQ routine

I

adres

Vector definitie voor IRQ routine

N

adres

Vector definitie voor NMI routine

De commando's en parameters dienen in hoofdletters achter de prompt

'TESTMON09: ' ingegeven te worden. Wanneer een fout gemaakt wordt

in het commando of een van de parameters verschijnt de foutmelding

'?'

(9)

achter de fout op het scherm. De gegeven karakters worden genegeerd en

de prompt verschijnt weer. Het commando moet nu opnieuw in zijn geheel

gegeven worden. Er is geen herstelmogelijkheid van eenmaal gegeven

com-mando's, niet anders dan opzettelijk een fout veroorzaken in een van de

parameters, zo het gegeven commando deze heeft. Na het uitvoeren van een

commando wordt weer een prompt gegeven.

4.1

Go

Het commando Go start de executie van een programma door dit programma

als subroutine aan te roepen. Wanneer het programma afgesloten wordt met

de instructie RTS ($39) komt men na executie van de routine automatisch

weer terug in de monitor. Loopt een programma 'vast' dan helpt alleen

RESET.

4.2

Help

Het Helpcommando geeft allereerst een lijstje van items, waarover

infor-matie beschikbaar is, waarna achter de prompt 'HLP: ' de hoofdletter van

het gewenste item ingetoetst kan worden. Vervolgens wordt die informatie

gegeven of een foutmelding als het item niet bestaat, waarna de prompt

weer verschijnt. Het intoetsen van

CR beëindigt het commando.

4.3

Modify

Het Modifycommando is een buitenbeentje in het gezelschap. Na

aan-roep wordt wordt de gevraagde geheugenplaats afgedrukt met daarachter de

waarde, welke gelezen is uit die geheugenplaats (in HEX formaat). Achter

de afgedrukte waarde heeft

ie

gebruiker nu de mogelijkheid nieuwe data of

een commando in te voeren.

4.3.1 Data

Data dient het formaat van een

byte te hebben. Is de data correct dan

wordt deze naar de geheugenplaats geschreven. Vervolgens wordt dezelfde

geheugenplaats weer gelezen, om te controleren of de data overeenkomt met

de opgegeven data. Is dit het geval, dan wordt een spatie geschreven en op

het volgende commando gewacht. Komen gelezen en geschreven data niet

overeen, dan wordt achter de gegeven data een '?' geschreven waarna op een

(10)

volgende regel het adres van de geheugenplaats en de gelezen data getoont

worden.

4.3.2

Conunando's

De volgende commando's worden binnen Modify herkend:

4.4 Print

Commando

I

Betekenis

"

schrijf de ascii waarde van

het volgende karakter als data

weg (de Helpfunctie is door

plaatsgebrek op dit punt

on-volledig).

lees volgende geheugenplaats

lees vorige geheughenplaats

=

lees deze geheugenplaats

nog-maals

G adres

start een programma op adres

spatie adres lees

geheugeninhoud

van

adres

CR

verlaat modify commando

Het printcommando kan afgebroken worden door control-C. Con trol- W stopt

alleen de uitvoer. Een andere toetsaanslag laat deze weer verder gaan.

4.5

Send

(11)

5

Wetenswaardigheden

5.1

Oude werkwijze

Het programma MONITOR09 is geschreven voordat de PMDS systemen op

het IPO de intrede hadden gedaan. Mijn werkwijze was toen:

1. Schrijf het programma op de VAX. Als dit programma enigzins uit

de klauwen dreigt te lopen, deel het dan op in modules: Deze kunnen

apart van elkaar geassembleerd worden.

2. Assembleer het daar middels de x6809 assembler, welke ook de

mo-gelijkheid heeft een listing en cross-referencelist te genereren. Laat de

listing eventueel door de VAX uitprinten.

3. Link het geheel van objectfiles aan elkaar middels Rload. Dit

pro-gramma produceert een outputfile waarin de data in het motorola S1

record format staat.

4. Laadt dit file up in de op dat moment op kamer 1.25 aanwezige

EX-ORCISER systeem. Nu waren er twee mogelijkheden:

1) Laadt het file nu down in een applikatie waarin de monitor09 draait

(met het commando Load) en test vervolgens middels de monitor de

geschreven programmatuur.

2) Programmeer een prom op de EXORCISER met de inhoud van het

ge-uploade file (Nadat dit binair gemaakt was) en stop deze prom in

de applikatie om vervolgens het programma te kunnen testen.

Na de aankomst van de PMDS systemen kan de programmatuur ook op

deze systemen geschreven worden. De MAB6809 maakt het testen van de

applikatie met de geschreven programmatuur mogelijk. Er is echter nog wel

een (klein) kinkje in de kabel: niet alle hardware, met name de originele

6809CPU-kaarten van LABBUS, kunnen gestuurd worden door de MAB.

Voor het testen van nieuwe hardware is de monitor dan nog steeds handig.

In de hier op het IPO ontwikkelde 6809 CPU kaart kan de MAB wel gebruikt

worden. (de kaart is NB! met dat doel ontwikkeld!) In praktijk blijkt het

ook dan handig te wezen eerst de monitor te gebruiken om de hardware te

testen voordat aan het eigenlijke programma begonnen wordt.

5.2 Praktijkervaringen

Het is natuurlijk niet te verwachten dan de maker over zijn produkt een

objectief oordeel zal geven dus de lezer is gewaarschuwd! Ik heb de monitor

(12)

vaak toegepast. Een aantal zaken vond ik bijzonder handig:

• Omdat de monitor standaard messages afdrukt bij ontvangst van een

interrupt kun je makkelijk ontdekken of een interrupt aankomt en of

de bron op de juiste interrupt aangesloten is. (commando's Een D)

• Omdat de vectoren van de interruptroutines in ram staan kun je

je applikatieprogramma deze laten wijzigen naar routines in het

ap-plikatieprogramma zelf. Nu kun je dus ook reai-time testen of de zaak

werkt zonder dat er een prom gemaakt moet worden. (B geeft de

basewaarde, of met de hand: commando V).

• Of data/programma op de juiste manier in het geheugen staat kan

handig met P bekeken worden.

• Controleren of een ram goed functioneert: Initialiseer het met $20

(spatie) end laat het printen. Alle fouten zullen een karakter in de

ascii-kolom te zien geven.

• Bij twijfel over het functioneren van ram : T. Het ram wordt getest

maar de inhoud gaat niet verloren en de test kan dus ook uitgevoerd

worden als er al een programma is geladen.

(13)

5.3 Jumptabel

Voor in de monitor is een jumptabel aanwezig. Deze maakt eenvoudige

input en output met de buitenwereld mogelijk, wat voor simpele testjes

wel eens makkelijk kan zijn. De functies kunnen worden aangeroepen door

een subroutine call naar een adres. De waarden van de registers blijven

behouden. Het zijn:

\ Adres

3

I

Functie

$FOOO

$F003

$F006

$F009

$FOOe

$FOOF

initialiseer acia

zend het karakter in accu a

zend een spatie

zend

CRLF

zend karakterstring welke eindgt met $04. Startadres

van de string in x

zend inhoud van a in HEX notatie (byte)

$F012

zend inhoud van x in HEX notatie (adres)

$F015

ontvang een karakter in accu a

$F018

ontvang een HEX in a

$F01B ontvang een byte in a

$F01E ontvang een adres in x

$F021

test op ontvangst van control-e en con trol-W. Set

carry by control-e

' - - - ' - - - '

3

Deze adressen gelden alleen voor 4K proms. Voor 2K proms: tel $800 bij het adres uit de tabel

(14)

6

Literatuur

De volgende boeken zijn erg handig bij het programmeren in 6809 assembler:

• Het 'MC6809-MC6809E Microprocesor Programming Manual' van

Mo-torola, te verkrijgen bij Manudax Nederland B.V. te Heeswijk-Dinther

(04139-8911).

• '6809 assembly language programming', door Lance A. LeventhaL

Uit-gever: OSBORNE/McGraw-Hill Berkeley, California.

ISBN: 0-931988-35-7. Dit boek is ook verkrijgbaar bij Manudax.

Het eerste boek maakt je wegwijs met de processor, het tweede is

~rg

handig

bij het programmeren zelf.

(15)
(16)

1ERR LINE ADDR B1 B2 B3 B4 B6 1 ZOEK

*

1 2 3 4 6 6 7 8 g 10 11 12 13 14 16 16 OP DE 6809. 17 ANDERE APPLICATIES 18 GENEEN' KUNNEN 11i 20 21 22 TOT BOK) 23 24 TOT 66K) 26 26 DEFAULT BAUDRATE) 27 GEBRUIKT)) 28 NIET GEBRUIKT) 29 30 31 (MINIMUM) 32 33 34 36 36

ZOEKT, WAAR ZICH IN 37

STACK EH SYSTEM-38

TONATISCH

GEIHITIALI-11809 ASSEMBLER VER 1 . ONR

•••••••••••••••••••••••••••••••••••••••••••••••••••••••

*

COPYRIGHT 1986 INSTITUUT VOOR PERCEPTIE

ONDER-•

*

POSTBUS 613 6600 NB EINDHOVEN (J.TIESINGA)

•••••••••••••••••••••••••••••••••••••••••••••••••••••••

*

*

TESTMONITOR VOOR 6809 GEORIENTEERDE

*

APPLICATIES

*

16 AUGUSTUS 1986 , J.TIESINGA

*

ALGENENE MONITOR VOOR TESTEN APPLICATIES, GEBASEERD

*

DE MONITOR KAN ZOWEL VOOR LABBUS-APPLICATIES ALS

*

pEBRUIKT WORDEN. NET DE SWITCHES 'LABBUS' EN

'AL-*

BIJ HET ASSEMBLEREN KEUZES OPGEGEVEN WORDEN. • KENNERKEN VAN DE GENOEMDE SWITCHES ZIJN:

PAGE

• LABBUS: SYSTEEM RON SPACE 8K ($EOOO-$FFFF);(UITBREIDBAAR

MONITOR RON SPACE 4K (tFOOO-$FFFF);

RAM SPACE MINIMAAL 4K ($DOOO-eDFFF);(UITBREIDBAAR

ACIA TYPE 6661 (tFF70-$FF73) ;

DIPSWITCH ($FF74); (READ:

REGISTER ($FF74); (RITE. (NIET

TIMER TYPE 6840 ($FF78-$FF7F);(WORDT

• ALGEMEEN: SYSTEEM RON SPACE IS APPLICATIE AFHANKELIJK;

*

MONITOR RON SPACE 2K (EPRON TYPE 2716);

*

*

4K (EPRON TYPE 2732/2632); RAM SPACE MINIMAAL 612 BYTES;

ACIA TYPE 6860.

*

VOOR BEIDE SYSTEMEN GELDT DAT DE MONITOR ZELF

UIT-*

HET SYSTEEM RAM BEVINDT. DE NONITORVARIABELEN,

(17)

AU-39

(VIA DE ACIA) AAN DE 40 GROOTTE IS EEN 41 42 43 44 46 46 47 0000 48 0001 49 0001 60 61 62 SEMBLER DIRECTIVES 63

JGEN. ;;IE WELKE 64

WORDT GESPECIFICEERD

* SEERD. ONVOLDOENDE RAM WORDT MET EEN FOUTMELDING

*BUITENWERELD KENBAAR GEMAAKT.AFHANKELIJK VAN DE

EPROM-*UITGEBREIDE HULP-FUNCTIE BESCHIKBAAR,(COMMANDO: 'H'), * WELKE HET FUliCTIONEREN VAN DE MONITOR UITLEGT.

NLIST D (ASSEMBLER DIRECTIVES) LIST X,E

PR2716 SET 0 2K EPROM (BIJ ALGEMENE TOEPASSING) PR2732 SET 1 4K EPROM (BIJ ALGEMENE TOEPASSING) PR2632 SET 1 4K EPROM (BIJ ALGEMENE TOEPASSING)

• AFHANKELIJK VAN DE TOEPASSING DIENT EEN VAN DE

AS-• 'LABBUS' OF 'ALGEMEEN' EEN WAARDE ONGELIJK 0 TE

(18)

1ERR LINE ADDR B1 B2 B3 B4 B6

2

66

HIERVOOR HEEFT MEN 66 OF 'PR2632'). 67 68 PRDM VAN 4K 69 60 61 0001 62 0000 63 64 86 66 0001 67 68 69 70 FF70 71 FF71 72 FF72 73 FF73 74 0010 76 OOBO 76 0008 77 FF74 78 79 80 81 FOOO 82 FEFF 83 84 86 86 87 88 89 90 91 92 93 94 96 98 97 98 99 100 101 102 103 104 106 106 107 108

8809 ASSEMBLER VER 1. OMR

*DIENT TEVENS DEPRONGROOTTE oPGEGEVEN TE lORDEN.

• DE KEUZE UIT EEN 2K ('PR2716') OF EEN 4K PRON ('PR2732'

• TEVENS DIENT HET ACIA ADRES OPGEGEVEN TE lORDEN.

• IN HET LABBUS GEVAL WORDT ER VAN UIT GEGAAN DAT EEN

• GEBRUIKT WORDT.

LABBUS SET 1 ALGEMEEN SET 0

IF LABBUS *********** LABBUS MONITOR *************

PitONTYPE SET PR2632

*****

GEBRUIKTE PROfil IS 4K.

• ACIA:

ACIADN EQU $FF70 DATA REGISTER ACIAST EQU ACIADN+1 STATUS REGISTER ACIACN EQU ACIAST+1 CONMAND REGISTER ACIACR EQU ACIACN+1 CONTROL REGISTER

TDRE EQU 100010000 TRAMSNIT DATA REGISTER EMPTY CKC EQU %10110000 7 BIT/EVENPAR/2 STOPBITS RDRF EQU %00001000 RECEIVER DATA REGISTER FULL SCHI EQU $FF74 DIP-SCHIITCH

*

* SYSTEM:

RON EQU $FOOO SYSTEN RON

NAXADR EQU $FEFF PROTECT VPA-AREA IN RAM SEARCH

ENDIF

IF ALGENEEN ************* ALGENENE MONITOR ************

PRONTYPE SET PR2716 ******* GEBRUIKTE PRON IS 2K.

IF PRONTYPE RON EQU $FOOO

ELSE RON EQU $F800

ENDIF

ACIA EQU $C800

<<---

MOET OPGEGEVEN lORDEN NAXADR EQU RON

• ACIA: TYPE 6860

ACIAC EQU ACIA ACIAD EQU ACIAC+1

*

NRESEI EQU $03 MASTER RESET 6860 TDRE EQU ~00000010

OV1UI EQU %00100000 PE EQU ~01000000

FE EQU ~00010000

(19)

1EPJl LIHE ADDR B1 B2 B3 B4 B6 68011 ASSEMBLER VER 1. OMR PAGE

3

1011 RDRF EQU "00000001

110 CKC EQU "00000001 :16,7B,EVENPAR,2STOP 111 RIS EQU "01000000 RIS LINE

112

113 ENDIF

114

..

116

*

GENERAL EQUATES:

116

..

117 0001 SET EQU 1 VALUE FOR BOOLEANS

118

..

1111

*

ASCII

120

..

121 0004 EOT EQU $4 122 OOOD CR. EQU $0D 123 OOOA J.F EQU $OA 124 ODOA CRLF EQU $0DOA

126 0020 SP EQU $20 SPACE 'CHAR' 126 0003 CNTRLC EQU 'C-'G CONTROL C 127 0017 CNTRLW EQU 'W-'G CONTROL W 128

1211

..

130 .. 68011 VECTOR DEF . 131

..

132 ORG $FFF6

133 FFF6 F6 611 FIRVEC FDB FIRQ JUMP VIA RAM 134 FFF8 F6 116 IRQVEC FDB IRQ INDIRECT JUMP VIA RAM 136 FFFA FO EO SWIVEC FDB MRHTR REENTER

136 FFFC F6 64 KMIVEC FDB NNI INDIRECT JUMP VIA RAM

T 137 FFFE FO 24 RESVEC FDB PWRUP RESTART

138

..

1311

MONITOR VARIABLES:

140

*

OFFSET VALUES MONITOR VARIABLES

141

142

*

INTERRUPT TEMPORARIES

143

..

144 0000 KMIT EQU 0 146 0002 IRQT EQU NMIT+2 146 0004 FIRQT EQU IRQT+2

147

148

*

FOR LOADING S1 REC.

1411

160 0006 CKSM EQU FIRQT+2 CHECKSUM 161 0007 BYTCNT EQU CKSM+1 BYTECOUNTER 162 0008 RADDR EQU BYTCNT+1 RUN-ADDRESS

163

164

*

GENERAL.

166

*

166 OOOA ECHO EQU RADDR+2 ECHO FLAG IN -RXCHR- (O=ON/ <>O=OFF) 167 OOOB RAMBEG EQU ECH0+1 RAM BEGIN ADDRESS

168 OOOD RAMEND EQU RAMBEG+2 RAM END ADDRESS

169

160 OOOF RAMSP EQU RAMEND+2 RAM SPACE NEEDED

161 0100 STACKS EQU $0100 STACK SPACE RESERVED FOR SYSTEM AND USER SUCK

(20)

lERR LIHE !DDR Bl B2 B3 B4 B6 4 ABORI 183 184 186 188 187 188 189 FOOO 7E F1 4E 170 171 F003 7E F1 84 172 F006 7E F1 99 173 F009 7E F1 A3 174 FOOC 7E F1 DC 176 FOOF 7E F1 F1 176 F012 7E F2 OF 177 178 F016 7E F1 78 179 F018 7E F2 26 180 F01B 7E F2 31 181 F01E 7E F2 4E 182 183 F021 7E F1 AF 184 185 F024 186 187 188 189 F024 8E 00 00 190 F027 8C FE FF 191 192 F02A 24 38 4-11-86 193 F02C A6 84 194 F02E 43 196 F02F 63 84 196 F031 A1 80 197 F033 26 F2 198 F036 43 199 F036 A7 1F 200 F038 Al 1F 201 F03A 26 EB 202 203 204 206 F03C 31 1F 206 F03E 10 AF A4 207 208 209 210 F041 A6 84 211 F043 43 212 F044 63 84 213 F046 A1 80 214 F048 26 07 216 F04A 43 216 F04B A7 1F

8809 ASSEMBLER VER 1. OMR

*

START OF TEST MONITOR

*

ORG ROM

*

*

JUMP TABLE I/0 FUNCIIONS

*

*

JMP INICP SIANDARD INII. OF COMM. PORT

JMP MTXCHR SEND CHAR IN A JMP IXSPC SEND SPACE JMP IXNYL SEND <CRLF>

JMP MIXSIR SEND STRING CLOSED BY EOI (=$04) JMP MIX2HX SEND CONIENIS OF A IN HEX FORMAT JMP MIX4HX 3END CONIENIS OF X IN HEX FORMAT

JMP MRXCHR RECEIVE CHAR IN A JMP MRX1HX RECEIVE ONE HEX IN A JMP MRX2HX RECEIVE ONE BYTE IN A JMP MRX4HX RECEIVE ONE WORD IN X

JMP BREAK TEST FOR CNTRLC AND CNIRLW / SET CARRY IF

PWRUP EQU •

*

DEIERMINE START AND END OF RAM AREA

*

LDX 10 START AI BOTTOM

FIND1 CMPX IMAXADR END OF MEMORY?

*

BEQ FIND3A EQ •> NO RAM IN SYSIEM

BHS FIND3A EQ => NO RAM IN SYSIEM <<<--- CHANGED DD

LDA O,X TRY IO FIND FIRSI RAM LOCAIION COMA

CON O,X CMPA O,X+

BNE FIND1 NE => TRY NEXI LOCAIION COMA

STA -1,X RESIORE DATA CMPA -1,X TEST IF FAIL BNE FIND1 NE => FAILED

*

BEGIN FOUND

*

LEAY -1,X SAVE BEGIN OF RAM AREA IN Y SIY O,Y ASSUME AI LEAST 2 BYTES OF MEMORY

*

FIND END

FIND2 LDA 0 , X COMA CON O,X CMPA O,X+

BNE FIND3 NE => END FOUND COMA

STA -1,X RESIORE DATA

(21)

1ERR LIRE ADDR Bl B2 B3 B4 B6 6 217 F04D A1 1F 218 F04F 27 FO 21G 220 221 222 F061 30 1E 223 F063 10 AC A4 224 226 F066 26 CF CONTINUE SEARCH. 226 F068 1F 10 227 F06A A3 A4 228 F06C 10 83 01 OF 22G F060 24 4F 230 F062 20 C3 -- CHANGED DD 4-11-86. 231 232 233 234 236 236 237 238 239 240 241 242 243 244 246 246 247 248 249 260 261 262 263 264 266 266 267 268 269 F064 B7 FF 71 260 F067 B6 FF 74 261 F06A 84 OF 262 F06C SB BO 263 F06E B7 FF 73 264 F071 86 4B 266 F073 B7 FF 72 266 F076 30 SC 13 12 267 F07A A6 80 268 F07C 81 04 269 FOTE 27 FE 270 FOBO F6 FF 71

6809 ASSEMBLER VER 1. OMR

CMPA -1,X TEST IF FAIL

BEQ FIND2 EQ => RAM / NE => END OF RAM AREA FOUND

*

END FOUIID

FIND3 LEAX -2,X ADJUST ENDPOINTER CNPY O,Y CHECK IF DATA DID STORE • BNE FIND3A NE => NO RAM

BNE FIND1 NE => NO RAM <<<--- CHANGED DD 4-11-86.

TFR X,D CALCULATE RANSPACE SUBSTRACTING SUBD 0, Y BEGIN FROM EJID

CMPD IRAMSP+STACKS MINIMUM OF RAM HEEDED FOR MONITOR BHS FIND4 HS => ENOUGH RAM

BRA FIND1 NOT ENOUGH RAM -> COliTINUE SEARCH

«<-*

NOT ENOUGH RAM!! I

IF ALGEMEEN

• INII COMM. PORT

FIND3A LDA IMRESET STA ACIAC LDA ICKC STA ACIAC LEAX MNRAM,PCR FIND5 LDA 0, X+

CMPA IEOI END OF TEXI?

FIND6 BEQ FIND6 EQ => lAlT FOR SERVICE FIND7 LDB ACIAC

*

*

BIIB IIDRE

BEQ FIND7 EQ => BUST STA ACIAD SEND CHAR BRA FIND6

ENDIF

IF LABBUS

*

INII COMM. PORT

FIND3A STA ACIAST MASTER RESET ACIA LDA SCHI GEI DEFAULT BAUDRATE ANDA I$0F STRIP NO DATA

ADDA ICKC FORMAT OF IRANSMISSION STA ACIACR

LDA 1%01001011 STA ACIACM LEAX MNRAM, PCR FIND6 LDA O,X+

CMPA IEOT END OF TEXT?

FIND6 BEQ FIND6 EQ => lAlT FOR SERVICE FIND7 LDB ACIASI

(22)

1ERR LINE ADDR B1 B2 B3 B4 BS 8809 ASSEMBLER VER 1. OMR PACE 8

271 F083 CS 10 8IT8 ITDRE

272 FOBS 27 F9 BEQ FIND7 EQ => BUSY 273 FOB7 B7 FF 70 STA ACIADM SEND CHAR 274 FOBA 20 EE BRA FINDS

27S

278 ENDIF

277

27B F08C OD OA NNRAM FDB CRLF

279 F08E 46 41 S4 41 4C FCC /FATAL ERROR: NOT ENOUGH RAM 11!1/

2BO FOAE OD OA FDB CRLF 2B1 FOBO 04 FCB EOT

282

2B3 • ENDUGH RAM FOUlm

2B4

2BS F081 33 10 FIND4 LEAU -(RAMSP+1),X INIT USERSTACK!'-;INTER 2B6 FOB3 36 20 PSHU Y SAVE END ADDRESS

287 FOBS 31 11 LEAY -RAMSP,X GET BASE OF MEMORVSPACE FOR MONITOR IN Y

2BB

2B9 F087 CC FF CO LDD INMIH 290 FOBA EDA4 !!TD NMIT,Y 291 FOBC CC FF AB LDD IIRQH 292 FOBF ED 22 STD IRQT,Y 293 FOC1 CC FF 82 LDD IFIRQH 294 FOC4 ED 24 STD FIRQT,Y 29S FOC6 CC FO EO LDD IMRNTR

296 FOC9 ED 2B STD RADDR,Y DEFAULT RUN-ADDRES

297 FOC8 6F 2A CLR ECHO,Y ECHO CHAR IN INPUT ROUTINE -RXCHR-29B FOCD AF 2D STX RAMEND,Y SAVE RAM END ADDRESS

299

roer

32 B9 FF 71 LEAS -(RAMSP+STACKS/2),X INIT SYSTEMSTACKPOINTER 300 FOD3 37 10 PULU X CET BEGIN OF RAM

301 FODS AF 28 STX RAMBEG,Y SAVE RAM BEGIN ADDRESS 302 FOD7 17 00 74 LBSR INTCP INIT COMM. PORT

303 FODA 17 OS 1C LBSR MTRAM RAM TEST 304 FODD 17 00 C3 LBSR TXNWL SEND <CRLF>

30S

306 • RE-ENTER POINT FOR COMMANDS

307

30B FCEO 17 00 S2 MRNTR LBSR MPRMPT SEND PROMPT 309 FOE3 17 00 97 LBSR RXCHR GET CHAR

310 FOE6 37 02 PULU A

311 FOEB 2S F6 BCS MRNTR RETRY ON ERROR 312 FOEA 17 00 AC L8SR TXSPC GIVE SEPARATOR 313 FOED 30 8C 1A 12 LEAX CMT8L,PCR GET BASE OF TABEL 314 FOF1 6D B4 MSRCH TST O,X

31S FOF3 27 10 BEQ XMONE EQ => NO MATCH 316 FOFS A1 84 CMPA O,X

317 FOF7 27 04 BEQ MEXEC EQ => EXECUTE ROUTINE 31B FOF9 30 03 LEAX 3,X NEXT ONE

319 FOFB 20 F4 BRA MSRCH 320 FOFD AD 9B 01 MEXEC JSR [1,X] 321 F100 17 00 AO LBSR TXNWL 322 F103 20 DB BRA MRNTR 323 F10S 17 01 BE XMONE LBSR MERROR 324 F10B 20 06 BRA MRNTR AND RETRY

(23)

1EIUl LINE .lDDR B1 B2 B3 B4 B6 880D ASSEMBLER VER 1 . OMR. PAGE 7 326

326 • CONMAND TABLE 327

328 F10A 42 CMTBL FCC /BI 329 F10B F2 A4 FDB BASE 330 F10D 44 FCC /D/ 331 F10E F2 DC FDB DIS 332 FUO 46 FCC /E/ 333 F111 F2 F7 FDB MEN 334 F113 46 FCC /F/ 336 F114 F3 OE FDB MFIND 336 F116 47 FCC /G/ 337 F117 F3 97 FDB MGD 338 IF PROMTYPE 339 F119 48 FCC /H/ 340 F11A F3 A7 FDB MHELP 341 ENDIF 342 FUC 49 FCC /I/ 343 FUD F3 E7 FDB MINITR 344 FUF 4C FCC /L/ 346 F120 F4 16 FDB MLOAD 346 F122 4D FCC /M/ 347 F1:13 F4 BE FDB NDD 348 F126 60 FCC /P/ 349 F126 F6 14 FDB MPRINT 360 F128 62 FCC /R/ 361 F129 F6 66 FDB RVECT 352 F12B 63 FCC /S/ 363 F12C F6 7D FDB MSEND 364 F12E 64 FCC /T/ 366 F12F F6 F9 FDB MTRAM 368 F131 66 FCC /V/ 367 F132 F6 28 FDB VECT 368 F134 00 FCB 00 END OF TABLE 369

*

360 • SUBROUTINES 361

*

362

*

-MPRMPT-363 • SEND PROMPT 364

*

366 F136 34 10 MPRMPT PSHS X 366 F137 30

ac oa

12 LEAX MMPRMP,PCR 367 F13B 36 10 PSHU X 388 F13D 17 00 9E LBSR TXSTR SEND STRING 369 F140 36 90 PULS X,PC 370

*

371 F142 64 46 63 64 4D NMPBNP FCC /TESTMON09: I 372 F14D 04 FCB EOT 373

*

374 IF ALGENEEli 376

376

*

-INTCP-377

*

IHITIALIZE COMM. PORT

(24)

1ERR LINE ADDR 81 82 83 84 86 8 3711 380 381 382 383 384 386 386 387 388 389 3110 3111 392 393 394 396 396 397 3118 399 400 401 402 403 404 406 F14E 34 02 406 F160 87 FF 71 407 F163 86 FF 74 408 F166 84 OF 409 F168 88 BO 410 F16A 87 FF 73 411 F16D 86 48 412 F16F 87 FF 72 413 F162 36 82 414 416 416 417 418 419 420 421 422 F164 36 02 423 F166 34 02 424 F168 86 FF 71 426 F16B 86 10 426 F16D 27 F9 427 F16F 37 02 428 F171 B7 FF 70 429 F174 1C FE 430 F176 36 82 431 432

68011 ASSEMBLER VER 1. OMR

IHTCP PSHS A SAVE REGISTER LDA 13 MASTER RESET STA ACIAC LDA ICKC STA ACIAC PULS A,PC

*

-TXCHR-*

SEND ASCII CHR. AT O,U

MTXCHR PSHU A EXTERNAL ENTRY POINT TXCHR PSHS A SAVE A

TXCHR1 LDA ACIAC GET ACIA STATUS BITA ITDRE CO!ISIDER IT

BEQ TXCHR1 BUSY PULU A GET CHAR STA ACIAD PULS A,PC

ENDIF

IF LABBUS

-I!ITCP-• !HIT COMM. PORT

INTCP PSHS A SAVE REG

STA ACIAST MASTER RESET LDA SCHW GET BAUDRATE A!IDA I$0F STRIP NO DATA

ADDA ICKC FORMAT OF TRANSMISSION STA ACIACR

LDA 1%01001011 STA ACIACM PULS A,PC

-TXCHR-• SEND CHAR TO MONITOR

• ENTRY 0 : CHAR TO SE!ID • LEA VE NONE

MTXCHR PSHU A EXTERNAL ENTRY POINT TXCHR PSHS A SAVE REG

TXCHR1 LDA ACIAST GET STATUS BITA ITDRE

BEQ TXCHR1 EQ => BUSY PULU A GET CHAR

STA ACIADM SE!ID CHAR TO MONITOR CLC

PULS A,PC

(25)

1EIUl LitlE ADDR Bl B2 83 B4 86 680!1 ASSEMBLER VER 1. ONR PAGE

g

433

*

-NRXCHR-434

*

RECEIVE CHAR FRON MONITOR

43S

436

*

ENTRY NOllE

437

*

LEAVE 0 : CHAR RECEIVED

438

43!1 F178 8D 03 NRXCHR BSR RXCHR 440 F17A 37 02 PULU A GET CHAR IN A 441 F17C 3!1 RIS

442

*

443 F17D 34 02 RXCHR PSHS A SAVE CHAR 444 F17F B6 FF 71 RXCHR1 LDA ACIAST GET STATUS 44S F182 8S 08 8ITA tRDRF

446 F184 27 F9 BEQ RXCHR1 EQ => NO DATA 447 F186 B6 FF 70 LD.l ACUDN

448 F189 84 7F ANDA t$7F STRIP PARITY 449 F18B 6D 2A TST ECHO,Y ECHO CHAR? 460 F180 26 04 BNE RXCHR2 NE => NO ECHO 461 F18F 36 02 PSHU A SAVE CHAR ON STACK 462 F191 80 03 BSR TXCHR ECHO CHAR

463 F~93 36 02 RXCHR2 PSHU A SAVE CHAR

464 F1ll6 1C FE CLC NO ERROR 46S F1ll7 3S 82 PULS A,PC tRETURN

466

*

467 ENDIF

468

*

469

*

-TXSPC-480

*

461

*

SEND ASCII SP ACE

462

463 F1ll9 34 02 TXSPC PSHS A SAVE REGISTER 464 F1liB 86 20 LDA tSP

465 F1ll0 36 02 PSHU A 466 F19F 8D CS 8SR TXCHR 467 F1A1 3S 82 PULS A,PC

468

*

469

*

-TXNVL-470

*

SEND NEW L INE

471

*

472

rus

34 10 TXNVL PSHS X SAVE X 473

rus

30 8C 31 1:1 LEAX NCRLF, PCR

474 F1All 36 10 PSHU X SAVE POINTER 47S FUB 80 31 8SR TXSTR SEND STRING 476 FUD

ss

10 PULS X RESTORE X

477

478

*

t FALL INTO BREAK

479

*

480

*

-BREAK-481

*

TEST FOR BREAK <CONTROL C 482

*

OR SUSPEND OUTPUT <CONTROL W>

483

484 FUF MBRAEK EQU

*

486 FUF 34 02 BREAK PSHS A SAVE A

(26)

1ERA LINE ADDR B1 B2 B3 B4 BEi 10 487 488 48Q 4QO 4Q1 4Q2 4Q3 4Q4 4Q6 4V6 4V7 4V8 F1B1 B6 FF 71 4V9 F1B4 86 08 600 F1B6 27 1D 601 F1B8 B6 FF 70 602 603 604 606 F1BB 84 7F 606 F1BD 81 17 607 F1BF 27 08 608 F1C1 81 03 609

neg

2e 10 610 F1C6 1A 01 611 F1C7 36 82 612 F1C9 86 01 613 F1CB A7 2A 614 F1CD 8D AE 616 F1CF 6F 2A 616 F1D1 37 02 617 F1D3 20 ES 618 F1D6 1C FE 619 F1D7 36 82 620 621 F1D9 OD OA 622 F1DB 04 623 624 626 626 627 628 629 F1DC 36 10 630 F1DE 34 12 631 F1EO 37 10 632 F1E2 A6 80 633 F1E4 81 04 634 F1E6 27 07 636 FlES 36 02 636 F1EA 17 FF 79 637 F1ED 20 F3 638 F1EF 36 92 639 640

*

6809 ASSEMBLER VER 1. ONR

IF ALGEMEEN

LDA ACIAC

BITA tRDRF ANY INPUT? BEQ NINP NO

LDA ACIAD YES, SO OET IT

ENDIF

IF LABBUS

LDA ACIAST GET STATUS BITA IRDRF ANY INPUT? BEQ NINP NO

LDA ACIADM YES, SO GET DATA

ENDIF

ANDA t$7F STRIP PARITY BRK1 CMPA ICNTRLW <CTRL W>?

BEQ SUSP!m YES , SUSPEND OUTPUT CMPA ICNTRLC <CTRL C>? BNE NINP IGNORE INPUT SEC SET ABORT INDICATOR PULS A,PC

SUSPND LDA tSET STA ECHO,Y ECHO OFF

BSR RXCHR WAIT FOR NEXT INPUT I NO ECHO CLR ECHO,Y ECHO ON PULU A BRA BRK1 CONSIDER IT NINP CLC PULS A,PC

NCRLF FDB CRLF FCB 4

*

-TXSTR-*

-NTXSTR-*

SEND STRING CLOSED BY 04 (EOT) CHR.

*

POINTER AT O,U

*

NTXSTR PSHU X EXTERNAL ENTRY POINT TXSTR PSHS A,X

PULU X GET POINTER

TXSTR1 LDA O,X+ GET CHAR I INCREMrulT POINTER CMPA #4 END OF TEXT?

BEQ XTXSTR EXIT IF SO PSHU A SAVE CHAR LBSR TXCHR SEND CHAR BRA TXSTR1 NEXT CHAR XTXSTR PULS A,X,PC

*

*

(27)

1ER.R LINE ADDR B1 B:Z B3 B4 B6 6809 ASSEMBLER VER 1. OMR PAGE 11

641 "

-MTX:ZHX-642 • SEND BYTE AT O,U

643

644 F1F1 36 02 MTX2HX PSHU A EXTERNAL ENTRY POINT 646 F1F3 34 02 TX2HX PSHS A SAVE REGISTER 646 F1F6 A6 C4 LDA O,U GET BYTE

647 F1F7 44 LSRA 648 F1F8 44 LSRA 649 F1F9 44 LSRA 660 F1FA 44 LSRA 661 F1FB 36 02 PSHU A 662 F1FD 8D 17 BSR CX1HX CONVERT NIBBLE 663 F1FF 17 FF 64 LBSR TXCHR SEND IT 664 F202 37 02 PULU A NOV LSB 666 F:Z04 84 OF ANDA #$F 666 F206 36 02 PSHU A 667 F208

so oe

BSR CX1HX CONVERT AGAIN 668 F:ZOA 17 FF 69 LBSR TXCHR SEND IT 669 F20D 36 82 PULS A,PC 660

661 • -TX4HX-662 • -MTX4HX-663

*

SEND VORD Cl

o,u

664

666 F:ZOF 36 10 MTX4HX PSHU X EXTERNAL ENTRY POINT 666 F211 8D EO TX4HX BSR TX2HX

667 F:Z13 8D DE BSR TX:ZHX 6118 F216 39 RTS

669

670 •

-CX1HX-671

*

CONVERT 1 HEX TO ASCII

672

673 F216 34 02 CX1HX PSHS A SAVE A 674 F218 A6 C4 LDA O,U GET NIBBLE 676 F21A SB 30 ADDA 11$30

676 F21C 81 39 CMPA 11$39 677 F21E 23 02 BLS XCX1HX

678 F2:ZO 8B 07 ADDA 17 CONVERT ALPA S 679 F222 A7 C4 ICX1HX STA O,U SAVE RESULT 680 F:Z24 36 82 PULS A,PC 681

682 IF ALGENEElf 683

684 • SUBROUTINE -RXCHR-686 • EN

-MRXCHR-686 • REC. 1 ASCII AT O,U

687

688 MRXCHR BSR RXCHR EXTERNAL EXTRY POINT

689 PULU A

690 RTS

691

692 RICHR PSHS A SAVE A 693 RXCHR1 LDA ACIAC

(28)

1ERR LINE ADDR B1 B2 B3 B4 B6 6809 ASSEMBLER VER 1 . OMR PAGE 12

696 BEQ RXCHR1 NOTHING YET

696 LDA ACIAD GET DATA

697 ANDA t$7F STRIP PARITY

698 TST ECHO,Y ECHO CHAR?

699 BNE RXCHR2 NE => NO

600 PSHU A

601 LBSR TXCHR ECHO DATA

602 RXCHR2 PSHU A SAVE CHAR

603 CLC 604 PULS A,PC 606

606 ENDIF 607

608

*

-RX1HX-609

*

-NRX1HX-810

*

RECEIVE ONE HEX AT O,U

611

812 F226 8D 03 NRX1HX BSR RX1HX EXTERIUL ENTRY POINT 613 F228 37 02 PULU A 814 F22A 39 RTS 816

618 F22B 17 FF 4F RilHX LBSR RXCHR 817 F22E 80 44 BSR CXCHR 618 F230 39 RTS 819

620

*

-RX2HX-821 •

-NRX2HX-822 • RECEIVE ONE BYTE

623

624 F231 80 03 MRX2HX BSR R.X2HX EXTERNAL ENTRY POI!lT 626 F233 37 02 PULU A 826 F236 39 RTS 827

628 F238 34 06 RX2HX PSHS 0 629 F238 80 F1 BSR RX1HX 630 F23A 26 10 BCS XRX2HX 631 F23C 37 02 PULU A 632 F23E 48 ASLA 633 F23F 48 ASLA 634 F240 48 ASLA 636 F241 48 ASLA 636 F242 8D E7 BSR RXlHX 837 F244 26 06 BCS XRX2HX 838 F246 AB CO ADDA O,U+

639 F248 36 02 PSHU A SAVE RESULT

840 F24A lC FE CLC

641 F24C 36 86 XRX2HX PULS O,PC

642

643

*

-RX4HX-644

*

-MRX4HX-646 • RECEIVE ONE WORD TO O,U

646

*

647 F24E 8D 03 MRX4HX BSR RX4HX EXTERNAL ENTRYPOINT 648 F260 37 10 PULU X

(29)

1ER.ll LIHE ADDR B1 B2 B3 B4 B6 6809 ASSEMBLER VER 1. OMR PAGE 13 649 F262 39 li.TS 660

661 F263 34 06 RX4HX PSHS D 662 F266 8D DF BSll. li.X2HX 663 F267 37 02 PULU A 664 F269 26 04 BCS XR.X4HX 666 F26B 8D D9 BSR. R.X2HX 666 F26D 37 04 PULU B 667 F26F 36 06 XRX4HX PSHU D 668 F261 36 86 PULS D,PC 869

*

660

*

-li.X8HX-661

*

li.ECEIVE 2 JOR.DS

662 • AT O,U A!ID 2,U (BADDR t EADDR.) 663 F263 34 10 li.X8HX PSHS X

664 F266 8D EC BSR. RX4HX 666 F267 26 07 BCS XR.X8HX

666 F269 37 10 PULU X GET BEGIN ADDli.ESS 667 F26B 17 FF 2B LBSR. TXSPC

668 F26E 8D E3 BSR. R.X4HX

669 F270 36 10 XR.X8HX PSHU X li.ESTOli.E BEG !U ADDRESS 670 F272 36 90 PULS X,PC

671

*

672

*

-CXCHR.

673

*

CONVERT ASCII TO HIBBLE

674

676 F274 34 02 CXCHR PSHS A 678 F276 26 1A BCS XCXCHR ON ERROR li.ETURJI 677 F278 A6 C4 LDA 0, U 678 F27A 80 30 SUBA t$30 679 F27C 2B 14 BMI XCXCHR 880 F27E 81 09 CMPA 19 681 F280 2F OA BLE CXCHR2 682 F282 81 11 CMPA 1$11 683 F284 2B

oe

BMI XCXCHR 684 F286 81 16 CMPA t$16 686 F288 2E 08 BGT XCXCHR 686 F28A 80 07 SUBA 17 687 F28C A7 C4 CXCHR2 STA 0, U 688 F28E 1C FE CLC 689 F290 36 82 PULS A,PC 690

*

ERROR! 691 F292 1A 01 XCXCHR SEC 692 F294 36 82 PULS A,PC 693

694 • -MER.R.OR-696 • PRI!li '?' 696

697 F296 34 02 MEli.ROR PSHS A 698 F298 86 3F LDA t$3F 699 F29A 36 02 PSHU A 700 F29C 17 FE C7 LBSR TXCHR 701 F29F 17 FF 01 LBSR TXt!WL 702 F2A2 36 82 PULS A,PC

(30)

1ERR LIHE lDDR B1 B:Z B3 B4 B6 14 703 704 706 706 707 708 709 710 711 712 F:ZA4 F2A6 TORVARAIBLES: $' 713 714 716 716 717 718 719 720 721 722 723 724 726 726 727 728 729 730 731 732 733 734 736 736 737 738 739 740 741 742 743 744 746 746 747 748 749 760 761 762 763 764 766 766 F2AA F:ZAC F2AF F:ZB1 F:ZB4 F2B6 F2B8 F2DB F2DC F2DE F2E1 F2E3 F2E6 F2E7 F2E9 F2EB F2ED F2EF F2F1 F2F3 F2F6 F2F7 F2F9 F2FC F2FE F300 F302 F304 F306 F308 F30A F30C 34 10 30 SC OD 12 36 10 17 FF :ZF 36

:zo

17 FF 6D 36 90 OD OA 42 41 63 46

:zo

04 34

o:z

17 FE 9C 37 02 81 49 27 08 81 46 26 08 1A 40

:zo

02 1A 10 36 82 8D Al 36 82 ... 34 02 17 FE 81 37 02 81 49 27 08 81 46 26 ED 1C BF 20 02 1C EF 36 82

6809 ASSEMBLER VER 1. ONR

*

•••••••••••••••••••••••••••••••

*

NONITOR09 ROUTINE SECTION

*

•••••••••••••••••••••••••••••••

*

CONMAND : B

*

PRINT BASE ADDRESS OF RAM AREA

BASE PSHS X SAVE REGISTER

*

LEAX MBASE,PCR PRINT '<CRLF>BASE ADDRESS OF

NON!-PSHU X LBSR TXSTR SEND STRING PSHU Y LBSR TX4HX SEND BASEADDRESS PULS X,PC NBASE FDB CRLF

FCC /BASE ADDRESS OF NONITORVARIABLES: $/

FCB EOT

*

COMMAND: D

*

DISABLE INTERRUPTS

DIS PSHS A LBSR RXCHR PULU A CNPA fi'I IRQ 1

BEQ DIS1 CNPA fi'F FIRQ? BNE XDISE => ERROR! ORCC 11%01000000 BRA XDIS

DIS1 ORCC fl%00010000 XDIS PULS A,PC

*

XDISE BSR MERlOR PULS A,PC

*

CONNAND: E

*

ENABLE INTERRUPTS

*

MEN PSHS A LBSR RXCHR PULU A CNPA fi'I BEQ MEN1 CNPA #'F BNE XNE!lE ANDCC #%10111111 BRA XMEll NEN1 AliDCC #%11101111 XNEN PULS A,PC

(31)

1ERA LINE ADDR B1 B2 B3 B4 B6 16 767 F2F3 768 769 760 761 762 763 F30E 34 12 764 F310 8E 00 00 766 F313 8C FE FF 766 F316 27 6D 767 F318 A6 84 768 F31A 43 769 F31B 63 84 770 F31D Al 80 771 F31F 26 F2 772 F321 43 773 F322 A7 1F 774 F324 A1 1F 776 F326 26 EB 776 777 778 779 F328 36 10 780 F32A 30 1F 781 F32C 36 10 782 F32E 30 SC 49 12 783 F332 36 10 784 F334 17 FE 17 786 F337 17 FE A4 786 F33A 17 FE D4 787 F33D 30 8C 49 12 788 F341 36 10 789 F343 17 FE 98 790 791 792 793 F346 37 10 794 F348 8C FE FF 796 F34B 27 28 796 F34D A6 84 797 F34.F 43 798 F360 63 84 799 F362 A1 80 800 F364 26 07 801 F366 43 802 F367 A7 1F 803 F369 A1 1F 804 F36B 27 EB 806 806 807 808 F36D 30 1E 809 F36F 36 10 810 F361 17 FD EA

6809 ASSEMBLER VER 1 . ONR

XMEHE EQU XDISE

• CONMAND : F

• FIND RAM AREA'S AND TELL USER

NFIND PSHS A,X SAVE REGISTERS LDX 10 START AT BOTTOM

NFIND1 CNPX IMAXADR END OF ADDRESS SPACE?

BEQ MFWDE EQ => EXIT

LDA O,X TRY TO FlliD FIRST RAM LOCATION COMA

CON O,X CMPA O,X+

BHE MFIND1 NE => TRY NEXT LOCATION COMA

STA -1,X RESTORE DATA CNPA -1,X TEST IF FAIL BHE MFIND1 NE => FAILED

• BEGIN FOUND

PSHU X SAVE BEGIN OF RAM LEAX -l,X ADJUST POINTER PSHU X

LEAX MBEGRF,PCR PRINT '<CRLF>RAM BEGIN: •• PSHU X

LBSR INTCP INIT CDMM. PORT LBSR TXSTR SEND STRING LBSR TX4HX SEND VALUE

LEAX MENDRF,PCR PRINT ' -RAM END: •• PSHU X

LBSR TXSTR SEND STRING

• FIND END

PULU X RESTORE BEGIN OF RAM

MFIND2 CMPX IMAXADR END OF MEMDRY SPACE?

BEQ MFINDE EQ => EXIT LDA O,X

COMA CON O,X C'U'A O,X+

BNE MFIND3 NE => END FDUND COMA

STA -1,X RESTORE DATA CMPA -1,1 TEST IF FAIL

BEQ NFIND2 EQ => RAM / NE => END OF RAM AREA FOUND

*

END FOUND

MFIND3 LEAX -2,X ADJUST ENDPOINTER PSHU X

LBSR INTCP INIT COMN. PORT

(32)

1ERA LIRE ADDR B1 B2 B3 B4 B6 18 811 F364 17 FE AA 812 F367 17 FE 2F 813 814 816 818 817 818 819 820 821 822 823 F36A BB FF 71 824 F3BD 86 10 826 F36F 27 F9 82B 827 828 F371 30 01 829 F373 20 9E 830 F375 17 FD D6 831 F378 36 92 832 833 F37A OD OA 834 F37C 62 41 4D 20 42 836 F388 04 836 837 F389 20 2D 20 838 F38C 62 41 4D 20 46 839 F396 04 840 841 842 843 844 F397 34 40 846 F399 17 FE B7 84B F39C 26 04 847 F39E AD D4 848 F3AO 20 03 849 F3A2 17 FE F1 860 F3A6 36 CO 861 862 863 864 866 86B 867 868 869 880 F3A7 34 12 861 F3A9 30 8D 02 C5 862 F3AD 3B 10 863 F3AF 17 FE 2C 864 F3B2 30 8D 02 BB

B809 ASSEMBLER VER 1. ONR

LBSR TX4HX SEND ENDADDRESS LBSR TXSPC SEND SPACE

*

*

WAlT UNTIL ALL CHAR ARE SEND

*

IF ALGEMEEN

MFIND4 LDA ACIAC GET STATUS BITA JTDRE REGISTER EHPTY? BEQ MFIND4 EQ •> NO ENDIF

IF LABBUS

MFIND4 LDA ACIAST GET STATUS BITA tTDRE REGISTER EHPTY? BEQ MFIND4 EQ •> NO ENDIF

*

LEAX 1,X ADJUST POINTER

BRA MFIND1 TRY TO FIND OTHER RAM AREAS MFINDE LBSR INTCP INIT COMM. PORT

PULS A,X,PC

*

MBEGRF FDB CRLF

*

FCC /RAM BEGIN: $/ FCB EOT MENDRF FCC I - I

NRMEND FCC /RAM END: $/ FCB EO!

*

• CONMAND : G

*

START USER PROGRAM

MGD PSHS U SAVE REGISTER LBSR RX4HX

BCS XMGO

JSR [O,U] EXECUTE ROUTINE BRA MG01

XMGO LBSR MERROR MGOl PULS U,PC

IF PROMTYPE

*

*

CONMAND : H

*

*

-MHELP-*

HELP FUliCTION

*

IS SELF EXPLANING

MHELP PSHS A,X LEAX MHLP1,PCR PSHU X

LBSR TXSTR SEND LEADING TEXT

MHELPO LEAX HLPPR,PCR SEND PROMPT 'HLP: '

(33)

1EIUI. LIHE ADDR B1 B~ B3 B4 B6 6809 ASSEMBLER VER 1 . OMR PAGE 17

866 F3B6 36 10 PSHU X 866 F3B8 17 FE 23 LBSR TXSTR

867 F3BB 17 FD BF LBSR RXCHR GET ANSWER 868 F3BE 37 02 PULU A GET CHAR

869 F3CO 81 OD CMPA tCR TERNINATE NODE? 870 F3C2 27 1F BEq XNHELP EQ => EXIT 871 F3C4 30 SD OB BB LEAX HTBL,PCR 872 F3C8 6D 84 MIIELP1 TST O,X

873 F3CA 27 11 BEQ NHELPE EQ => ERROR 874 F3CC A1 84 CMPA O,X

876 F3CE 27 04 BEQ MHELP2 876 F3DO 30 03 LEAX 3,X 877 F3D2 20 F4 BRA MIIELP1 NEXT 878 F3D4 AE 01 MIIELP2 LDX 1, X 879 F3D6 36 10 MIIELP3 PSHU X 880 F3D8 17 FE 03 LBSR TXSTR 881 F3DB 20 D6 BRA NHELPO

882 F3DD 30 SD 03 DA MHELPE LEAX NMHER,PCR 883 F3E1 20 F3 BRA MHELP3

884 F3E3 1C FE XMHELP CLC 886 F3E5 36 92 PULS A,X,PC

886

887 EHDIF 888

889

*

CONMAND 890

891

*

INIT RAM 8~2

893 F3E7 34 62 MINITR PSHS A,X,U SAVE REG.

894 F3E9 17 FE 77 LBSR RXSHX GET START AND END ADDRESSES 896 F3EC 37 10 PULU X SAVE BEGIN ADDRESS

896 F3EE 25 20 BCS XINITR CS => ERROR 897 F3FO 17 FD A6 LBSR TXSPC SEND SPACE 898 F3F3 17 FE 40 LBSR RX2HX GET DATA 899 F3F6 37 02 PULU A GET DATA 900 F3F8 26 16 BCS XINITR CS => ERROR 901 F3FA 34 10 PSHS X SAVE X 902 F3FC 37 10 PULU X GET END ADDRESS 903 F3FE 30 01 LEAX 1,X

904 F400 36 10 PSHU X PUT END ADDRESS+1 ON SIACK 906 F402 36 10 PULS X RESTORE BEGINADDRESS 906 F404 A7 80 INIIR1 STA O,X+

907 F406 AC C4 CMPX O,U

908 F408 27 02 BEQ INITR2 EQ => ALL DONE 909 F40A 20 FS BRA INITR1

910 F40C 1C FE INITR2 CLC 911 F40E 36 D2 PULS A,X,U,PC

912

*

913 F410 17 FE 83 XINIIR LBSR NERROR 914 F413 36 D2 PULS A,X,U,PC 1116

1116

*

CONMAND : L 917

*

(34)

1E!Ut LIRE .lDDR B1 B2 B3 B4 B6 8809 ASSEMBLER VER 1. ONR PAOE 18

019 F417 17 FD 63 L LBSR RXCHR GET CHAR 020 F41A 37 02 PULU A

921 F41C 81 63 CMPA J'S IS IT AN S? 922 F41E 26 F7 BNE L NO => WAlT FOR IT 923 F420 17 FD 6A LBSR RXCHR

024 F423 37 02 PULU A

926 F426 81 31 CMPA 1'1 IS IT AN 1?

026 F427 27 1D BEq LOADS1 EQ => LOAD S1 RECORD 027 F429 81 39 CMPA 1'9 IS IT AN 9?

028 F42B 26 EA BNE L HO => WAlT

029

030 F42D 8D 3E LOADS9 BSR LOAD21 GET RUN ADDRESS 031 F42F 26 11 BCS LOAD33 ABORT LOAD

032

*

STX RADDR,Y 033 F431 8D 1D BSR LOAD11

034 F433 26 OD BCS LOAD33 CS => CHECKSUM ERROR

036 F436 17 FD 46 LBSR RXCHR RECEIVE t RETURN

·z

(FOR MDOS FILE TRANSPORT) 036 F438 SC 00 00 CMPX #0

037 F43B 27 06 BEQ LOAD33 Eq => NO AUTO EXECUTE 1138 F43D 17 FD 83 LBSR TXNWL SEND <CRLF>

039 F440 AD 84 JSR O,X EXECUTE ROUTINE/RE-EHTER MONITOR AFTER

RTS I 040 F442 1C FE LOAD33 CLC 041 F444 36 D6 PULS A,B,X,U,PC 942

043 F446 8D 26 LOADS1 BSR LOAD21 044 F448 26 F8 BCS LOAD33 946 F44A 8D 04 BSR LOAD11 046 F44C 26 F4 BCS LOAD33 047 F44E 20 C7 BRA L 048

*

049 F460 17 FD E3 LDAD11 LBSR RX2HX 060 F463 26 33 BCS LOAD31 CS => NOT HEX 061 F466 EB C4 ADDB O,U PERFORM CHECKSUM 1162 F467 37 02 PULU A

063 F469 6A 27 DEC BYTCNT,Y

964 F46B 27 OA BEq LOAD15 ZERO BYTE COUNT 066 F45D A7 84 STA O,X

966 F46F A1 84 CMPA O,X 067 F461 26 25 BNE LOAD31 068 F463 30 01 LEAX 1,X 969 F465 20 E9 BRA LOAD11

060 F467 5C LOAD16 IHCB IN B CHECKSUM 961 F468 26 1E BNE LOAD31 CHECKSUM ERROR IJ62 F46A 1C FE CLC 063 F46C 39 RTS 1164

1165 F46D 17 FD C6 LOAD21 LBSR RX2HX 1166 F470 37 02 PULU A 067 F472 25 14 BCS LOAD31

IJ68 F474 1F 89 TFR A,B IN B CHECKSUM 1169 F476 80 02 SUBA 12

1170 F478 A7 27 STA BYTCNT,Y I OF BYTES IN RECORD 1171 F47A 17 FD D6 LBSR RX4HX

(35)

1E!Ul LIHE .lDDR B1 B2 B3 B4 B6 111 973 F47F EB C4 1174 F481 EB 41 976 F483 37 10 976 F486 1C FE 977 F487 39 1178 11711 980 1181 F488 17 FE OB 1182 F48B 1A 01 1183 F48D 31l 1184 986 1186 1187 1188 F48E 34 36 1181l F41l0 17 FD CO 11110 F41l3 37 10 11111 F41l6 26 70 11112 F497 30 1F 11113 F4119 30 01 11114 F49B 17 FD 06 llll6 F49E 36 10 11116 F4AO 17 FD 6E 1197 F4A3 17 FC F3 11118 F4A6 A6 84 11119 F4A8 36 02 1000 F4AA 17 FD 46 1001 F4AD 17 FC E9 1002 F4BO 17 FC CA 1003 F4B3 37 02 1004 F4B6 81 OD 1006 F4B7 27 67 1006 F4B9 81 :IE 1007 F4BB 27 DC 1008 F4BD 81 :IC 1009 F4BF 27 4B 1010 F4C1 81 3D 1011 F4C3 27 D2 1012 F4C6 81 20 1013 F4C7 27 C7 1014 F4C9 81 22 1016 F4CB 27 33 1016 F4CD 81 47 1017 F4CF 26 08 1018 F4D1 17 FC C6 1019 F4D4 17 FE CO 1020 F4D7 20 BE 1021 F4D9 1022 1023 F4D9 1C FE 1024 F4DB 36 02 1026 F4DD 17 FD 94 1026 F4EO 37 02

*

6809 ASSEMBLER VER 1 . OMR

.lDDB O,U ADJUST CHECKSUM ADDB 1,U PULU X CLC RTS

*

ERROR : EXIT

*

LOAD31 LBSR MERROR SEC RIS

*

-COMMAND

:M-*

MODIFY

*

MOD PSHS D,X,Y M LBSR RX4HX PULU X BCS XMR1 MOPEli LEAX -1 , X MNXT LEAX 1, X LBSR TXN'IL PSHU X LBSR TX4HX LBSR TXSPC SEND SPACE LDA O,X GE! DATA PSHU A

LBSR TX2HX SEND DATA MONP LBSR TXSPC SEND SPACE

LBSR RXCHR WAlT FOR COMM. OR DATA PULU A

CMPA ICR CARR. RETURN BEQ XM EQ => WANTS TO QUIT CMPA 1'. DECIMAL POINT BEQ MNXT EQ => OPEN NEXT CMPA I', COMMA

BEQ MPRV EQ => OPEN PREVIOUS CMPA I'= EQUATE SIGN BEQ NOPEN EQ => RE-OPE!i CMPA ISP SPACE

BEQ M OPEN AT GIVE!i ADDRESS CMPA I'" DOUBLE QUOTE BEQ STASC STORE ASCII IF SO CMPA I'G GO COMMAND? BNE MDAT

LBSR TXSPC SE!iD SPACE LBSR MGD

BRA MOPEli MDAT EQU

*

*

NO VALID COMMAND, PERRAPS DATA? CLC

PSHU A LBSR CXCHR PULU A

(36)

1El\R LIHE AD DR. B1 B:Z B3 B4 B6 68011 ASSEMBLER. VEil 1 . ONR PAGE

:zo

1027 F4E2 26 17 BCS MERR NOT HEX 1028 F4E4 1F 89 !FR. A,B

1029 F4E6 17 rD 42 LBSR. R.X1HX 1030 F4E9 37 02 PULU A

1031 F4EB 26 OE BCS MERR NOT HEX 1032 F4ED 68 ASLB

1033 F4EE 68 ASLB 1034 F4Er 68 ASLB 1036 F4rO 68 ASLB

1036 F4F1 34 04 AB EO ABA FORM BYTE G A 1037 F4F5 A7 84 SVDAT STA O,X SAVE DATA 1038 F4F7 A1 84 CMPA O,X DATA DID STORE ?

10311 F4F9 27 B2 BEQ NONP OK. 1040

*

MEMORY EllROR 1041 F4FB 17 FD 118 MERR LBSR MEI\ROR 1042 F4FE 20 97 BRA NOPEN l RE-OPEN 1043 F600 11 re 7A SIASC LBSR RXCHR 1044 F503 37 02 PULU A GEI CHAR 1046 r606 20 EE BRA SVDAI 1046 • EllROR EXITS 1047 F507 XMR1 EQU

*

1048 F607 17 FD 8C LBSR MEilROR 1049 F60A 36 B6 PULS D,X,Y,PC

1060

1061 F60C 30 1r MPRV LEAX -1,X 1062 F60E 20 87 BRA NOPEN

1063

10S4 rs10 1C FE XN CLC 10S6 FS12 3S B6 PULS D,X,Y,PC

10S6

10S7 • COMMAND: P

10S8 • PliNT MEMORY CONTENS

1069

1060 F614 34 66 MPRINT PSHS D,X,U SAVE REGISTERS 1061 F616 17 rD 4A LBSR R.X8HX GEI START AND END ADDRESSES 1062 F619 24 06 BCC MPRIN1 CS => EllROR

1063 FS1B 17 rD 78 XNONPE LBSR MEilROR. PR.INI I? I

1064 FS1E 36 D6 PULS D,X,U,PC 106S F620 17 re 80 MPRIN1 LBSR TXNYL 1066 F623 2s re BCS XMONPE CS=> ABORI. 1067 F62S AE C4 LDX O,U BEGIN ADDRESS 1068 FS:Z7 36 10 PSHU X SAVE ADDRESS 1069 r629 17 FC ES LBSR IX4HX PRINT ADDRESS 1070 FS2C 17 re eA LBSR IXSPC PRINT SPACE 1071 F62r 6F CLRB

1072 rS30 A6 84 MPRIN2 LDA O,X GEI CHAR 1073 F63:Z 36 02 PSHU A PUI CHAR. ON STACK 1074 F634 17 FC BC LBSR TX2HX PRINT 2 HEX 107S r637 17 FC SF LBSR TXSPC PRINT SPACE 1076 F63A SC INCB

1077 F63B AC 42 CMPX 2,U END ADDRESS 1078 F63D 27 06 BEQ MPRIN3

1079 FS3r 30 01 LEAX 1,X INX

(37)

1ERR LINE ADDR B1 B2 B3 B4 B6 21 1081 F643 26 EB 1082 F646 AE C4 1083 F647 A6 80 1084 F649 81 20 1086 F64B 2D 04 1086 F64D 81 7F 1087 F64F 2D 02 1088 F661 86 2E 1089 F663 36 02 1090 F666 17 FC OE 1091 F668 6A 1092 F669 26 EC 1093 F66B AF C4 1094 F66D 30 1F 1096 F66F AC 42 1096 F661 26 BD 1097 F663 36 DB 1098 1099 1100 1101 1102 F666 34 10 1103 F667 30 8D OA 3D 1104 F66B AF 22 1106 F66D 30 8D OA 4F 1106 F671 AF A4 1107 F673 30 BD OA SB 1108 F677 AF 24 1109 F679 1C FE 1110 F67B 36 90 1111 1112 1113 1114 1116 1116 F67D 34 66 1117 F67F 17 FC E1 1118 F682 24 06 1119 F684 17 FD OF 1120 F687 36 D6 1121 1122 F689 17 FC 17 1123 F68C 30 8C 6A 12 1124 F690 36 10 1126 F692 17 FC 49 1126 F696 EC 42 1127 F697 A3 C4 1128 F699 10 83 00 10 1129 F69D 26 02 1130 F69F C6 OF 1131 F6A1 CB 04 1132 F6A3 34 04 1133 F6A6 36 04 1134 F6A7 6F

6809 ASSEMBLER VER 1. OMR

BNE NPRIN2

NPRIN3 LDX O,U BEGIN ADDRESS NPRIN4 LDA O,X+

CNPA #SP

BLT MPRIN6 CHAR NOT READABLE CNPA #$7F

BLT NPRIN6 CHAR OK TO READ MPRIN6 LDA #'. PRINT '·' MPRIN6 PSHU A SAVE CHAR ON STACK

LBSR TXCHR SEND CHAR

DECB BNE NPRIN4

STX O,U SAVE NEW START ADDRESS LEAX -1,X

CNPX 2,U END ADDRESS BNE NPRIN1

PULS D,X,U,PC

*

CONMAND : R

*

RESET VECTORS FOR MONITOR USE

RVECT PSHS X LEAX IRQH,PCR STX IRQT,Y LEAX NMIH,PCR STX NMIT, Y LEAX FIRQH, PCR STX FIRQT,Y CLC PULS X,PC

*

CONMAND : S

• SEND S1 RECORDS TO TERMINAL

*

CAN BE ABORTED/SUSPENDED BY CNTRLC/CNTRLW

MSEIID PSHS D,U,X SAVE REGISTERS

LBSR RXBHX CET START A!ID END-ADDRESSES BCC SENDO CC => OK

LBSR MERROR

PULS D, X , U, PC AND RETUR!I

SENDO LBSR TXNWL SEND "<CRLF>" AND CHECK FOR CNTRLC SEND1 LEAX MS1,PCR

PSHU X

LBSR TXSTR SEND "51"

LDD 2,U TEST FOR ONE FULL RECORD SUBD O,U

CMPD #$10 LESS THAN 16 BYTE? BCS SEND2 CS => SEND REMAlNDER LDB #16 SEND FULL RECORD

SEND2 ADDB #4 ADJUST BYTECOUNTER FOR ADDRESS AND CHECKSUM PSHS B SAVE BYTECOUNTER ON STACK

PSHU B SEND BYTECOUNT VALUE CLRB IN B CHECKSUN

(38)

1ERR LINE ADDR B1 B2 83 B4 B6 22 1136 F6AS SD 37 1136 F6AA AE C4 1137 FSAC 36 10 113S FSAE 8D 2A 1139 FSBO A6 SO 1140 F6B2 36 02 1141 F6B4 SD 28 1142 F6B6 26 FS 1143 FSBS 32 61 1144 F6BA AF C4 1146 F6BC 63 1146 F6BD 36 04 1147 F6BF 17 FC 31 1148 F6C2 17 FB DE 1149 F6C6 26 08 1160 F6C7 AE C4 1161 F6C9 30 1F 1162 F6CB AC 42 1163 F6CD 26 BD 1164 F6CF 30 SC 1A 12 1166 F6D3 36 10 1166 F6D6 17 FC 06 1167 FSDS 35 D6 1168 1169 F6DA EB C4 1160 F6DC 17 FC 14 1161 F6DF 6A 62 1162 F6E1 EB C4 1163 F6E3 17 FC OD 1164 F6E6 6A 62 1166 F6ES 39 1166 1167 F6E9 63 31 1168 F6EB 04 1169 F6EC 63 39 30 33 30 1170 F6F6 OD OA 1171 F6F8 04 1172 1173 1174 1176 1176 F6F9 34 12 1177 F6FB 17 FB AS 117S F6FE 30 SD FD SA 1179 F602 36 10 1180 F604 17 FB D7 1181 F607 AE 2B 11S2 F609 A6 84 11S3 F60B 43 11S4 F60C 63 84 1186 F60E A1 S4 11S6 F610 26 OD 1187 F612 43 1188 F613 A7 S4

6S09 ASSEMBLER VER 1 . OMR

BSR SENDH2 SEND BYTECOUIIT LDX O,U GEI STARTADDRESS PSHU X

BSR SENDH1 SEND STARTADDRESS AND ADJUST CHECKSOM SEND3 LDA O,X+ GEI DATA / INCREMENT POINTER

PSHU A

BSR SENDH2 S~ID DATA AND ADJUST CHECKSOM BNE SEND3 NE => MORE DATA TO FOLLOW LEAS 1, S REMCVE BYTECOUUTER

STX O,U SAVE NEW BEGIN ADDRESS COMB CALCULATE CHECKSUN PSHU B

LBSR TX2HX SEND CHECKBUN

LBSR TXNWL SEND "<CRLF>" AND CHECK FOR CNTRLC BCS SEND4 CS => ABORT MODE

LDX O,U CHECK IF READY LEAX -1,X ADJUST POINTERVALUE CMPX 2,U

BNE SEND1 NE => NO

SEND4 LEAX MSQ,PCR SEND "S9030000FC<CRLF>" PSHU X

LBSR TXSTR SEND STRING PULS D,X,U,PC AND LEAVE

SENDH1 ADDB O,U ADJUST CHECKBUN (SEND ADDRESS) LBSR TX2HX SEND DATA

DEC 2,S DECREMENT BYTECOUNT

SENDH2 ADDB O,U ADJUSI CHECKSOM (SEND DATA) LBSR TX2HX SEND DATA

DEC 2,S DECRE~I BYTECOUNI RIS MS1 FCC /S1/ FCB 4 MS9 FCC /S9030000FC/ FDB CRLF FCB 4

• CDMMAND: I

*

TEST USER RAM

*

MIRAM PSHS A,X

LBSR TXNWL SEND <CRLF> LEAX ~D,PCR

PSHU X

LBSR TXSTR PRIIIT : "RAM ~ID : $"

LDX RANBEG,Y MTRAM1 LDA O,X

COMA CON O,X CMPA O,X

BNE MIRAN2 END OF RAM COMA

STA O,X RESIORE RAM LOCATIOll.

(39)

1ERR LINE ADDR B1 B2 B3 B4 B6 23 1189 r816 Al 84 1190 F817 26 06 1191 r619 30 01 1192 r81B AC 2D 1193 r61D 23 EA 1194 r81F 30 1r 1196 r821 36 10 1196 r623 17 rB EB 1197 r626 36 92 1198 1199 1200 1201 1202 re28 34 12 1203 r82A 17 rB 60 1204 r62D 17 rB 69 1206 r630 37 02 1206 r632 81 4E 1207 r634 27 13 1208 r636 81 49 1209 r638 27 1A 1210 r63A 81 46 1211 r63C 26 21 1212 r63E 17 FC 12 1213 r841 37 10 1214 r643 26 1A 1216 r646 AF 24 1216 r847 20 14 1217 re49 17 re 07 1218 F84C 37 10 1219 r84E 26 OF 1220 F860 AF A4 1221 r662 20 09 1222 r664 17 FB FC 1223 r667 37 10 1224 r669 26 04 1226 r66B AF 22 1226 r86D 36 92 1227 1228 re6F 17 re 34 1229 r662 36 92 1230 1231 1232 1233 1234 1236 r664 6E B4 1236 1237 1238 1239 1240 r666 6E B8 02 1241 1242

6809 ASSEMBLER VER 1. OMR

CMPA O,X TST IF FAIL BNE NTRAM2 END OF RAM? LEAX 1,X

CMPX RAMEND,Y FULL RAM? BLS MTRAM1 NOT YET

NTRAM2 LEAX -1,X CORRECT SIZE PSHU X SAVE END

LBSR TX4HX SEND ENDADDRESS PULS A,X,PC RESTORE STACK • COMMAND: V

• SET VECTORS 6809

VECT PSHS A,X

LBSR RXCHR GET CHAR AT O,U LBSR TXSPC PRINT SPACE PULU A GET CHAR CMPA I'N NNI VECTOR? BEQ VECTN

CMPA #'I IRQ VECTOR? BEQ VECTI

CMPA t•r riRQ VECTOR? BNE XVECTE ERROR!

VECTF LBSR RX4HX GET VECTOR VALUE PULU X BCS XVECTE STX FIRQT, Y BRA XVECT VECTN LBSR RX4HX PULU X BCS XVECTE STX NNIT, Y BRA XVECT VECTI LBSR RX4HX PULU X BCS XVECTE STX IRQT,Y XVECT PULS A,X,PC

XVECTE LBSR MERROR PULS A,X,PC

*

IF A NNI IS GENERArED THE PC IS LOADED • WITH THE ADRESS OF THE FOLLOWING ROUTINE:

NNI JMP [NNIT, Y]

• IF AN IRQ IS GENERATED THE PC IS LOADED • WITH THE ADRESS OF THE FOLLOWING ROUTIIIE:

IRQ JMP [IRQT,Y]

• IF A FIRQ IS ENCOUNTERED THE PC IS LOADED

Referenties

GERELATEERDE DOCUMENTEN

Zodra de nieuwe data is geladen, verschijnt er een nieuwe sectie op de pagina die een overzicht weergeeft van alle datasets die geladen zijn, zie Figuur 3.2.. Het is mogelijk

Doordat het hier vooral gaat om teksten worden (veel) analyses door mid- del van text mining -technieken uitgevoerd. Met behulp van technieken wordt informatie uit

Terwijl zwaar geschut wordt inge- zet om het electoraat ervan te over- tuigen dat flexicurity geen politiek besluit is, maar pure economische noodzaak – ‘we kunnen

Copyright and moral rights for the publications made accessible in the public portal are retained by the authors and/or other copyright owners and it is a condition of

https://www.amsterdamuas.com/library/contact/questions, or send a letter to: University Library (Library of the University of Amsterdam and Amsterdam University of Applied

The main deliverable of this research question is to determine the alignment model to bring the implicit data architecture outside, revealing the relationship with the case of

Graag willen wij met de Gemeente Albrandswaard als verhuurder van de Brinkhoeve een regeling treffen voor de verschuldigde huur.. Ons voorstel is de betalingen tijdelijk stop

General disadvantages of group profiles may involve, for instance, unjustified discrimination (for instance, when profiles contain sensitive characteristics like ethnicity or