Home » Archimedes archive » Acorn User » AU 1995-05.adf » !MikeCook_RunTheRISC » PportMod

PportMod

This website contains an archive of files for the Acorn Electron, BBC Micro, Acorn Archimedes, Commodore 16 and Commodore 64 computers, which Dominic Ford has rescued from his private collection of floppy disks and cassettes.

Some of these files were originally commercial releases in the 1980s and 1990s, but they are now widely available online. I assume that copyright over them is no longer being asserted. If you own the copyright and would like files to be removed, please contact me.

Tape/disk: Home » Archimedes archive » Acorn User » AU 1995-05.adf » !MikeCook_RunTheRISC
Filename: PportMod
Read OK:
File size: 0B47 bytes
Load address: 0000
Exec address: 0000
File contents
   10REM >Develop.PportMod
   20REM ASSEMBLE A RELOCATABLE MODULE
   30REM To drive the printer Port like the new modles
   40REM With SWIs
   50PROC_DINT
   60PRINTSPC(24);~MS;" ";~ME
   70*KEY 1 OSCLI("*SAVE Develop.Prms "+STR$~MS+" "+STR$~ME) |M
   80*KEY 2 *SETTYPE Develop.Prms FFA |M
   90*KEY 3 *RMLOAD Develop.Prms |M
  100*KEY 4 CHAIN"D_TST"
  110*KEY 5 LOAD"Develop.PportMs"|MEDIT|M
  120*KEY 9 SYS&42EC1, 1,&FF|M
  130*KEY 10 SYS&42EC1, 1,&00|M
  140*KEY 11 SYS&42EC1,0 TO ,A%,B%:P.~A%,~B%|M
  150END
  160DEF PROC_DINT
  170REM DUMP INITILISATION
  180DIM CODE% 1800
  190OS_WriteI=&100
  200FOR A%=0 TO 3 STEP 3
  210P%=CODE%
  220[
  230OPT A%
  240.MS \ MODULE START LABLE
  250EQUD 0      \ START CODE
  260EQUD IC-MS  \ INITILISATION OFFSET
  270EQUD FC-MS  \ FINILISATION CODE
  280EQUD 0      \ SERVICE CODE
  290EQUD TS-MS  \ TITLE STRING OFFSET
  300EQUD HS-MS  \ HELP STRING OFFSET
  310EQUD 0      \ COMMAND TABLE OFFSET
  320EQUD &42EC0 \ SWI CHUNK BASE
  330EQUD PP-MS  \ SWI HANDLER CODE
  340EQUD 0      \ SWI DECODING TABLE
  350EQUD 0      \ SWI DECODING CODE
  360EQUD 0      \ END OF TABLE MARKER
  370.HS EQUS "Printer Port"
  380EQUB 09
  390EQUS "0.10 (10 Mar 1995) Driver for old machines"
  400EQUB 0
  410ALIGN
  420.TS EQUS "Printer_Port_Driver"
  430EQUB 0
  440ALIGN
  450
  460.IC \ START CODE
  470\ CLAIM MEMORY
  480STMFD (13)!,{14} \ RENUMBER RETURN
  490MOV R0,#6 \ CLAIM SPACE
  500MOV R3,#&4 \ AMOUNT OF SPACE
  510SWI "OS_Module" \ ask for space
  520STRVC R2,[R12]
  530LDMFD (13) !,{15} \ BACK FROM WHENST CAME
  540
  550.FC \ FINILISATION CODE
  560STMFD (13)!,{14} \ RENUMBER RETURN
  570MOV R0,#7 \ FREE SPACE
  580LDR R2,[R12] \ POINTER TO MEMORY
  590MOV R3,#&3E00 \ AMOUNT OF SPACE
  600SWI "OS_Module" \ GIVE IT BACK
  610LDMFD (13) !,{15} \ BACK FROM WHENST CAME
  620
  630.PP \ MACHINE CODE TO HANDLE PRINTER ACCESS
  640
  650LDR R12,[R12]
  660CMP R11,#(EOJ - JT)/4
  670ADDLO PC, PC, R11, LSL #2
  680B UNKN
  690.JT
  700B PP0
  710B PP1
  720.EOJ
  730.UNKN
  740ADR R0,ErrTok
  750MOV R1, #0
  760MOV R2, #0
  770ADR R4, HS
  780SWI "XMessageTrans_ErrorLookup"
  790ORRS  PC, R14, #&10000000\ #Overflow_Flag
  800.ErrTok
  810EQUD &1E6
  820EQUS "BadSWI"
  830EQUB 0
  840ALIGN
  850\ Return Printer Address
  860.PP0
  870MOV R0,#&3200000 \ Address of Printer Port
  880ADD R0,R0,#&50000
  890ADD R0,R0,#&10
  900MOVS PC,R14
  910
  920\
  930.PP1
  940CMP R0,#0
  950BEQ Rs
  960CMP R0,#1
  970BEQ WDR
  980CMP R0,#2
  990BEQ CT
 1000MOVS PC,R14
 1010
 1020\Read status & data
 1030.Rs
 1040MOV R4,#&3200000 \ Address of Printer Port
 1050LDR R3,[R4,#&10] \ Get Busy
 1060AND R3,R3,#1 \ Mask out busy
 1070MOV R3,R3,ASL #7
 1080
 1090LDR R2,[R4,#&00] \ Get ACK
 1100AND R2,R2,#&40
 1110ORR R2,R2,R3 \ Mearge together
 1120LDR R1,[R12] \ Get what has been written to printer before
 1130MOVS PC,R14
 1140
 1150\ Write Data to printer
 1160.WDR
 1170MOV R4,#&3200000 \ Address of Printer Port
 1180ADD R4,R4,#&50000
 1190MOV R3,R1,ASL #16
 1200STR R3,[R4,#&10]
 1210STR R1,[R12] \ Record of what has been written
 1220MOVS PC,R14
 1230
 1240\ Read & Write control reg
 1250.CT
 1260MOV R1,#0
 1270MOV R2,#0
 1280MOVS PC,R14
 1290
 1300.ME \ LABLE FOR MODULE END
 1310]
 1320NEXT
 1330ENDPROC

� >Develop.PportMod
#� ASSEMBLE A RELOCATABLE MODULE
3� To drive the printer Port like the new modles
(� With SWIs
2
�_DINT
<�(24);~MS;" ";~ME
F>*KEY 1 OSCLI("*SAVE Develop.Prms "+STR$~MS+" "+STR$~ME) |M
P'*KEY 2 *SETTYPE Develop.Prms FFA |M
Z"*KEY 3 *RMLOAD Develop.Prms |M
d*KEY 4 CHAIN"D_TST"
n(*KEY 5 LOAD"Develop.PportMs"|MEDIT|M
x*KEY 9 SYS&42EC1, 1,&FF|M
�*KEY 10 SYS&42EC1, 1,&00|M
�-*KEY 11 SYS&42EC1,0 TO ,A%,B%:P.~A%,~B%|M
��
�� �_DINT
�� DUMP INITILISATION
�� CODE% 1800
�OS_WriteI=&100
�� A%=0 � 3 � 3
�P%=CODE%
�[
�
OPT A%
�.MS \ �ULE START LABLE
�EQUD 0      \ START CODE
$EQUD IC-MS  \ INITILISATION �SET
#EQUD FC-MS  \ FINILISATION CODE
EQUD 0      \ SERVICE CODE
"#EQUD TS-MS  \ TITLE STRING �SET
, EQUD HS-MS  \ Ǔ STRING �SET
6$EQUD 0      \ COMMAND TABLE �SET
@ EQUD &42EC0 \ SWI CHUNK BASE
J"EQUD PP-MS  \ SWI HANDLER CODE
T$EQUD 0      \ SWI DECODING TABLE
^#EQUD 0      \ SWI DECODING CODE
h"EQUD 0      \ � � TABLE MARKER
r.HS EQUS "Printer Port"
|EQUB 09
�5EQUS "0.10 (10 Mar 1995) Driver for old machines"
�
EQUB 0
�	ALIGN
�".TS EQUS "Printer_Port_Driver"
�
EQUB 0
�	ALIGN
�
�.IC \ START CODE
�\ CLAIM MEMORY
�STMFD (13)!,{14} \ Ǚ �
�MOV R0,#6 \ CLAIM SPACE
�MOV R3,#&4 \ AMOUNT � SPACE
�#SWI "OS_Module" \ ask for space
STRVC R2,[R12]
*LDMFD (13) !,{15} \ BACK FROM �ST CAME

&.FC \ FINILISATION CODE
0STMFD (13)!,{14} \ Ǚ �
:MOV R0,#7 \ FREE SPACE
D LDR R2,[R12] \ ȒER � MEMORY
N"MOV R3,#&3E00 \ AMOUNT � SPACE
X"SWI "OS_Module" \ GIVE IT BACK
b*LDMFD (13) !,{15} \ BACK FROM �ST CAME
l
v*.PP \ MACHINE CODE � HANDLE �ER ACCESS
�
�LDR R12,[R12]
�CMP R11,#(EOJ - JT)/4
�ADDLO PC, PC, R11, LSL #2
�
B UNKN
�.JT
�	B PP0
�	B PP1
�.EOJ
�	.UNKN
�ADR R0,ErrTok
�MOV R1, #0
�MOV R2, #0
ADR R4, HS
#SWI "XMessageTrans_ErrorLookup"
,�RS  PC, R14, #&10000000\ #Overflow_Flag
 .ErrTok
*
EQUD &1E6
4EQUS "BadSWI"
>
EQUB 0
H	ALIGN
R\ Return Printer Address
\.PP0
f.MOV R0,#&3200000 \ Address of Printer Port
pADD R0,R0,#&50000
zADD R0,R0,#&10
�MOVS PC,R14
�
�\
�.PP1
�
CMP R0,#0
�
BEQ Rs
�
CMP R0,#1
�BEQ WDR
�
CMP R0,#2
�
BEQ CT
�MOVS PC,R14
�
�\Read status & data
.Rs
.MOV R4,#&3200000 \ Address of Printer Port
LDR R3,[R4,#&10] \ Get Busy
$� R3,R3,#1 \ Mask out busy
.MOV R3,R3,ASL #7
8
BLDR R2,[R4,#&00] \ Get ACK
L� R2,R2,#&40
V!�R R2,R2,R3 \ Mearge together
`>LDR R1,[R12] \ Get what has been written to printer before
jMOVS PC,R14
t
~\ Write Data to printer
�.WDR
�.MOV R4,#&3200000 \ Address of Printer Port
�ADD R4,R4,#&50000
�MOV R3,R1,ASL #16
�STR R3,[R4,#&10]
�2STR R1,[R12] \ Record of what has been written
�MOVS PC,R14
�
�\ Read & Write control reg
�.CT
�
MOV R1,#0
�
MOV R2,#0
MOVS PC,R14


.ME \ LABLE � �ULE �
]
(�
2�
�
00000000  0d 00 0a 17 f4 20 3e 44  65 76 65 6c 6f 70 2e 50  |..... >Develop.P|
00000010  70 6f 72 74 4d 6f 64 0d  00 14 23 f4 20 41 53 53  |portMod...#. ASS|
00000020  45 4d 42 4c 45 20 41 20  52 45 4c 4f 43 41 54 41  |EMBLE A RELOCATA|
00000030  42 4c 45 20 4d 4f 44 55  4c 45 0d 00 1e 33 f4 20  |BLE MODULE...3. |
00000040  54 6f 20 64 72 69 76 65  20 74 68 65 20 70 72 69  |To drive the pri|
00000050  6e 74 65 72 20 50 6f 72  74 20 6c 69 6b 65 20 74  |nter Port like t|
00000060  68 65 20 6e 65 77 20 6d  6f 64 6c 65 73 0d 00 28  |he new modles..(|
00000070  0f f4 20 57 69 74 68 20  53 57 49 73 0d 00 32 0a  |.. With SWIs..2.|
00000080  f2 5f 44 49 4e 54 0d 00  3c 16 f1 89 28 32 34 29  |._DINT..<...(24)|
00000090  3b 7e 4d 53 3b 22 20 22  3b 7e 4d 45 0d 00 46 3e  |;~MS;" ";~ME..F>|
000000a0  2a 4b 45 59 20 31 20 4f  53 43 4c 49 28 22 2a 53  |*KEY 1 OSCLI("*S|
000000b0  41 56 45 20 44 65 76 65  6c 6f 70 2e 50 72 6d 73  |AVE Develop.Prms|
000000c0  20 22 2b 53 54 52 24 7e  4d 53 2b 22 20 22 2b 53  | "+STR$~MS+" "+S|
000000d0  54 52 24 7e 4d 45 29 20  7c 4d 0d 00 50 27 2a 4b  |TR$~ME) |M..P'*K|
000000e0  45 59 20 32 20 2a 53 45  54 54 59 50 45 20 44 65  |EY 2 *SETTYPE De|
000000f0  76 65 6c 6f 70 2e 50 72  6d 73 20 46 46 41 20 7c  |velop.Prms FFA ||
00000100  4d 0d 00 5a 22 2a 4b 45  59 20 33 20 2a 52 4d 4c  |M..Z"*KEY 3 *RML|
00000110  4f 41 44 20 44 65 76 65  6c 6f 70 2e 50 72 6d 73  |OAD Develop.Prms|
00000120  20 7c 4d 0d 00 64 17 2a  4b 45 59 20 34 20 43 48  | |M..d.*KEY 4 CH|
00000130  41 49 4e 22 44 5f 54 53  54 22 0d 00 6e 28 2a 4b  |AIN"D_TST"..n(*K|
00000140  45 59 20 35 20 4c 4f 41  44 22 44 65 76 65 6c 6f  |EY 5 LOAD"Develo|
00000150  70 2e 50 70 6f 72 74 4d  73 22 7c 4d 45 44 49 54  |p.PportMs"|MEDIT|
00000160  7c 4d 0d 00 78 1d 2a 4b  45 59 20 39 20 53 59 53  ||M..x.*KEY 9 SYS|
00000170  26 34 32 45 43 31 2c 20  31 2c 26 46 46 7c 4d 0d  |&42EC1, 1,&FF|M.|
00000180  00 82 1e 2a 4b 45 59 20  31 30 20 53 59 53 26 34  |...*KEY 10 SYS&4|
00000190  32 45 43 31 2c 20 31 2c  26 30 30 7c 4d 0d 00 8c  |2EC1, 1,&00|M...|
000001a0  2d 2a 4b 45 59 20 31 31  20 53 59 53 26 34 32 45  |-*KEY 11 SYS&42E|
000001b0  43 31 2c 30 20 54 4f 20  2c 41 25 2c 42 25 3a 50  |C1,0 TO ,A%,B%:P|
000001c0  2e 7e 41 25 2c 7e 42 25  7c 4d 0d 00 96 05 e0 0d  |.~A%,~B%|M......|
000001d0  00 a0 0c dd 20 f2 5f 44  49 4e 54 0d 00 aa 18 f4  |.... ._DINT.....|
000001e0  20 44 55 4d 50 20 49 4e  49 54 49 4c 49 53 41 54  | DUMP INITILISAT|
000001f0  49 4f 4e 0d 00 b4 10 de  20 43 4f 44 45 25 20 31  |ION..... CODE% 1|
00000200  38 30 30 0d 00 be 12 4f  53 5f 57 72 69 74 65 49  |800....OS_WriteI|
00000210  3d 26 31 30 30 0d 00 c8  12 e3 20 41 25 3d 30 20  |=&100..... A%=0 |
00000220  b8 20 33 20 88 20 33 0d  00 d2 0c 50 25 3d 43 4f  |. 3 . 3....P%=CO|
00000230  44 45 25 0d 00 dc 05 5b  0d 00 e6 0a 4f 50 54 20  |DE%....[....OPT |
00000240  41 25 0d 00 f0 1a 2e 4d  53 20 5c 20 83 55 4c 45  |A%.....MS \ .ULE|
00000250  20 53 54 41 52 54 20 4c  41 42 4c 45 0d 00 fa 1c  | START LABLE....|
00000260  45 51 55 44 20 30 20 20  20 20 20 20 5c 20 53 54  |EQUD 0      \ ST|
00000270  41 52 54 20 43 4f 44 45  0d 01 04 24 45 51 55 44  |ART CODE...$EQUD|
00000280  20 49 43 2d 4d 53 20 20  5c 20 49 4e 49 54 49 4c  | IC-MS  \ INITIL|
00000290  49 53 41 54 49 4f 4e 20  87 53 45 54 0d 01 0e 23  |ISATION .SET...#|
000002a0  45 51 55 44 20 46 43 2d  4d 53 20 20 5c 20 46 49  |EQUD FC-MS  \ FI|
000002b0  4e 49 4c 49 53 41 54 49  4f 4e 20 43 4f 44 45 0d  |NILISATION CODE.|
000002c0  01 18 1e 45 51 55 44 20  30 20 20 20 20 20 20 5c  |...EQUD 0      \|
000002d0  20 53 45 52 56 49 43 45  20 43 4f 44 45 0d 01 22  | SERVICE CODE.."|
000002e0  23 45 51 55 44 20 54 53  2d 4d 53 20 20 5c 20 54  |#EQUD TS-MS  \ T|
000002f0  49 54 4c 45 20 53 54 52  49 4e 47 20 87 53 45 54  |ITLE STRING .SET|
00000300  0d 01 2c 20 45 51 55 44  20 48 53 2d 4d 53 20 20  |.., EQUD HS-MS  |
00000310  5c 20 c7 93 20 53 54 52  49 4e 47 20 87 53 45 54  |\ .. STRING .SET|
00000320  0d 01 36 24 45 51 55 44  20 30 20 20 20 20 20 20  |..6$EQUD 0      |
00000330  5c 20 43 4f 4d 4d 41 4e  44 20 54 41 42 4c 45 20  |\ COMMAND TABLE |
00000340  87 53 45 54 0d 01 40 20  45 51 55 44 20 26 34 32  |.SET..@ EQUD &42|
00000350  45 43 30 20 5c 20 53 57  49 20 43 48 55 4e 4b 20  |EC0 \ SWI CHUNK |
00000360  42 41 53 45 0d 01 4a 22  45 51 55 44 20 50 50 2d  |BASE..J"EQUD PP-|
00000370  4d 53 20 20 5c 20 53 57  49 20 48 41 4e 44 4c 45  |MS  \ SWI HANDLE|
00000380  52 20 43 4f 44 45 0d 01  54 24 45 51 55 44 20 30  |R CODE..T$EQUD 0|
00000390  20 20 20 20 20 20 5c 20  53 57 49 20 44 45 43 4f  |      \ SWI DECO|
000003a0  44 49 4e 47 20 54 41 42  4c 45 0d 01 5e 23 45 51  |DING TABLE..^#EQ|
000003b0  55 44 20 30 20 20 20 20  20 20 5c 20 53 57 49 20  |UD 0      \ SWI |
000003c0  44 45 43 4f 44 49 4e 47  20 43 4f 44 45 0d 01 68  |DECODING CODE..h|
000003d0  22 45 51 55 44 20 30 20  20 20 20 20 20 5c 20 e0  |"EQUD 0      \ .|
000003e0  20 ca 20 54 41 42 4c 45  20 4d 41 52 4b 45 52 0d  | . TABLE MARKER.|
000003f0  01 72 1b 2e 48 53 20 45  51 55 53 20 22 50 72 69  |.r..HS EQUS "Pri|
00000400  6e 74 65 72 20 50 6f 72  74 22 0d 01 7c 0b 45 51  |nter Port"..|.EQ|
00000410  55 42 20 30 39 0d 01 86  35 45 51 55 53 20 22 30  |UB 09...5EQUS "0|
00000420  2e 31 30 20 28 31 30 20  4d 61 72 20 31 39 39 35  |.10 (10 Mar 1995|
00000430  29 20 44 72 69 76 65 72  20 66 6f 72 20 6f 6c 64  |) Driver for old|
00000440  20 6d 61 63 68 69 6e 65  73 22 0d 01 90 0a 45 51  | machines"....EQ|
00000450  55 42 20 30 0d 01 9a 09  41 4c 49 47 4e 0d 01 a4  |UB 0....ALIGN...|
00000460  22 2e 54 53 20 45 51 55  53 20 22 50 72 69 6e 74  |".TS EQUS "Print|
00000470  65 72 5f 50 6f 72 74 5f  44 72 69 76 65 72 22 0d  |er_Port_Driver".|
00000480  01 ae 0a 45 51 55 42 20  30 0d 01 b8 09 41 4c 49  |...EQUB 0....ALI|
00000490  47 4e 0d 01 c2 04 0d 01  cc 14 2e 49 43 20 5c 20  |GN.........IC \ |
000004a0  53 54 41 52 54 20 43 4f  44 45 0d 01 d6 12 5c 20  |START CODE....\ |
000004b0  43 4c 41 49 4d 20 4d 45  4d 4f 52 59 0d 01 e0 1b  |CLAIM MEMORY....|
000004c0  53 54 4d 46 44 20 28 31  33 29 21 2c 7b 31 34 7d  |STMFD (13)!,{14}|
000004d0  20 5c 20 c7 99 20 f8 0d  01 ea 1b 4d 4f 56 20 52  | \ .. .....MOV R|
000004e0  30 2c 23 36 20 5c 20 43  4c 41 49 4d 20 53 50 41  |0,#6 \ CLAIM SPA|
000004f0  43 45 0d 01 f4 1f 4d 4f  56 20 52 33 2c 23 26 34  |CE....MOV R3,#&4|
00000500  20 5c 20 41 4d 4f 55 4e  54 20 ca 20 53 50 41 43  | \ AMOUNT . SPAC|
00000510  45 0d 01 fe 23 53 57 49  20 22 4f 53 5f 4d 6f 64  |E...#SWI "OS_Mod|
00000520  75 6c 65 22 20 5c 20 61  73 6b 20 66 6f 72 20 73  |ule" \ ask for s|
00000530  70 61 63 65 0d 02 08 12  53 54 52 56 43 20 52 32  |pace....STRVC R2|
00000540  2c 5b 52 31 32 5d 0d 02  12 2a 4c 44 4d 46 44 20  |,[R12]...*LDMFD |
00000550  28 31 33 29 20 21 2c 7b  31 35 7d 20 5c 20 42 41  |(13) !,{15} \ BA|
00000560  43 4b 20 46 52 4f 4d 20  c9 53 54 20 43 41 4d 45  |CK FROM .ST CAME|
00000570  0d 02 1c 04 0d 02 26 1b  2e 46 43 20 5c 20 46 49  |......&..FC \ FI|
00000580  4e 49 4c 49 53 41 54 49  4f 4e 20 43 4f 44 45 0d  |NILISATION CODE.|
00000590  02 30 1b 53 54 4d 46 44  20 28 31 33 29 21 2c 7b  |.0.STMFD (13)!,{|
000005a0  31 34 7d 20 5c 20 c7 99  20 f8 0d 02 3a 1a 4d 4f  |14} \ .. ...:.MO|
000005b0  56 20 52 30 2c 23 37 20  5c 20 46 52 45 45 20 53  |V R0,#7 \ FREE S|
000005c0  50 41 43 45 0d 02 44 20  4c 44 52 20 52 32 2c 5b  |PACE..D LDR R2,[|
000005d0  52 31 32 5d 20 5c 20 c8  92 45 52 20 b8 20 4d 45  |R12] \ ..ER . ME|
000005e0  4d 4f 52 59 0d 02 4e 22  4d 4f 56 20 52 33 2c 23  |MORY..N"MOV R3,#|
000005f0  26 33 45 30 30 20 5c 20  41 4d 4f 55 4e 54 20 ca  |&3E00 \ AMOUNT .|
00000600  20 53 50 41 43 45 0d 02  58 22 53 57 49 20 22 4f  | SPACE..X"SWI "O|
00000610  53 5f 4d 6f 64 75 6c 65  22 20 5c 20 47 49 56 45  |S_Module" \ GIVE|
00000620  20 49 54 20 42 41 43 4b  0d 02 62 2a 4c 44 4d 46  | IT BACK..b*LDMF|
00000630  44 20 28 31 33 29 20 21  2c 7b 31 35 7d 20 5c 20  |D (13) !,{15} \ |
00000640  42 41 43 4b 20 46 52 4f  4d 20 c9 53 54 20 43 41  |BACK FROM .ST CA|
00000650  4d 45 0d 02 6c 04 0d 02  76 2a 2e 50 50 20 5c 20  |ME..l...v*.PP \ |
00000660  4d 41 43 48 49 4e 45 20  43 4f 44 45 20 b8 20 48  |MACHINE CODE . H|
00000670  41 4e 44 4c 45 20 f1 45  52 20 41 43 43 45 53 53  |ANDLE .ER ACCESS|
00000680  0d 02 80 04 0d 02 8a 11  4c 44 52 20 52 31 32 2c  |........LDR R12,|
00000690  5b 52 31 32 5d 0d 02 94  19 43 4d 50 20 52 31 31  |[R12]....CMP R11|
000006a0  2c 23 28 45 4f 4a 20 2d  20 4a 54 29 2f 34 0d 02  |,#(EOJ - JT)/4..|
000006b0  9e 1d 41 44 44 4c 4f 20  50 43 2c 20 50 43 2c 20  |..ADDLO PC, PC, |
000006c0  52 31 31 2c 20 4c 53 4c  20 23 32 0d 02 a8 0a 42  |R11, LSL #2....B|
000006d0  20 55 4e 4b 4e 0d 02 b2  07 2e 4a 54 0d 02 bc 09  | UNKN.....JT....|
000006e0  42 20 50 50 30 0d 02 c6  09 42 20 50 50 31 0d 02  |B PP0....B PP1..|
000006f0  d0 08 2e 45 4f 4a 0d 02  da 09 2e 55 4e 4b 4e 0d  |...EOJ.....UNKN.|
00000700  02 e4 11 41 44 52 20 52  30 2c 45 72 72 54 6f 6b  |...ADR R0,ErrTok|
00000710  0d 02 ee 0e 4d 4f 56 20  52 31 2c 20 23 30 0d 02  |....MOV R1, #0..|
00000720  f8 0e 4d 4f 56 20 52 32  2c 20 23 30 0d 03 02 0e  |..MOV R2, #0....|
00000730  41 44 52 20 52 34 2c 20  48 53 0d 03 0c 23 53 57  |ADR R4, HS...#SW|
00000740  49 20 22 58 4d 65 73 73  61 67 65 54 72 61 6e 73  |I "XMessageTrans|
00000750  5f 45 72 72 6f 72 4c 6f  6f 6b 75 70 22 0d 03 16  |_ErrorLookup"...|
00000760  2c 84 52 53 20 20 50 43  2c 20 52 31 34 2c 20 23  |,.RS  PC, R14, #|
00000770  26 31 30 30 30 30 30 30  30 5c 20 23 4f 76 65 72  |&10000000\ #Over|
00000780  66 6c 6f 77 5f 46 6c 61  67 0d 03 20 0b 2e 45 72  |flow_Flag.. ..Er|
00000790  72 54 6f 6b 0d 03 2a 0d  45 51 55 44 20 26 31 45  |rTok..*.EQUD &1E|
000007a0  36 0d 03 34 11 45 51 55  53 20 22 42 61 64 53 57  |6..4.EQUS "BadSW|
000007b0  49 22 0d 03 3e 0a 45 51  55 42 20 30 0d 03 48 09  |I"..>.EQUB 0..H.|
000007c0  41 4c 49 47 4e 0d 03 52  1c 5c 20 52 65 74 75 72  |ALIGN..R.\ Retur|
000007d0  6e 20 50 72 69 6e 74 65  72 20 41 64 64 72 65 73  |n Printer Addres|
000007e0  73 0d 03 5c 08 2e 50 50  30 0d 03 66 2e 4d 4f 56  |s..\..PP0..f.MOV|
000007f0  20 52 30 2c 23 26 33 32  30 30 30 30 30 20 5c 20  | R0,#&3200000 \ |
00000800  41 64 64 72 65 73 73 20  6f 66 20 50 72 69 6e 74  |Address of Print|
00000810  65 72 20 50 6f 72 74 0d  03 70 15 41 44 44 20 52  |er Port..p.ADD R|
00000820  30 2c 52 30 2c 23 26 35  30 30 30 30 0d 03 7a 12  |0,R0,#&50000..z.|
00000830  41 44 44 20 52 30 2c 52  30 2c 23 26 31 30 0d 03  |ADD R0,R0,#&10..|
00000840  84 0f 4d 4f 56 53 20 50  43 2c 52 31 34 0d 03 8e  |..MOVS PC,R14...|
00000850  04 0d 03 98 05 5c 0d 03  a2 08 2e 50 50 31 0d 03  |.....\.....PP1..|
00000860  ac 0d 43 4d 50 20 52 30  2c 23 30 0d 03 b6 0a 42  |..CMP R0,#0....B|
00000870  45 51 20 52 73 0d 03 c0  0d 43 4d 50 20 52 30 2c  |EQ Rs....CMP R0,|
00000880  23 31 0d 03 ca 0b 42 45  51 20 57 44 52 0d 03 d4  |#1....BEQ WDR...|
00000890  0d 43 4d 50 20 52 30 2c  23 32 0d 03 de 0a 42 45  |.CMP R0,#2....BE|
000008a0  51 20 43 54 0d 03 e8 0f  4d 4f 56 53 20 50 43 2c  |Q CT....MOVS PC,|
000008b0  52 31 34 0d 03 f2 04 0d  03 fc 17 5c 52 65 61 64  |R14........\Read|
000008c0  20 73 74 61 74 75 73 20  26 20 64 61 74 61 0d 04  | status & data..|
000008d0  06 07 2e 52 73 0d 04 10  2e 4d 4f 56 20 52 34 2c  |...Rs....MOV R4,|
000008e0  23 26 33 32 30 30 30 30  30 20 5c 20 41 64 64 72  |#&3200000 \ Addr|
000008f0  65 73 73 20 6f 66 20 50  72 69 6e 74 65 72 20 50  |ess of Printer P|
00000900  6f 72 74 0d 04 1a 1f 4c  44 52 20 52 33 2c 5b 52  |ort....LDR R3,[R|
00000910  34 2c 23 26 31 30 5d 20  5c 20 47 65 74 20 42 75  |4,#&10] \ Get Bu|
00000920  73 79 0d 04 24 1e 80 20  52 33 2c 52 33 2c 23 31  |sy..$.. R3,R3,#1|
00000930  20 5c 20 4d 61 73 6b 20  6f 75 74 20 62 75 73 79  | \ Mask out busy|
00000940  0d 04 2e 14 4d 4f 56 20  52 33 2c 52 33 2c 41 53  |....MOV R3,R3,AS|
00000950  4c 20 23 37 0d 04 38 04  0d 04 42 1e 4c 44 52 20  |L #7..8...B.LDR |
00000960  52 32 2c 5b 52 34 2c 23  26 30 30 5d 20 5c 20 47  |R2,[R4,#&00] \ G|
00000970  65 74 20 41 43 4b 0d 04  4c 10 80 20 52 32 2c 52  |et ACK..L.. R2,R|
00000980  32 2c 23 26 34 30 0d 04  56 21 84 52 20 52 32 2c  |2,#&40..V!.R R2,|
00000990  52 32 2c 52 33 20 5c 20  4d 65 61 72 67 65 20 74  |R2,R3 \ Mearge t|
000009a0  6f 67 65 74 68 65 72 0d  04 60 3e 4c 44 52 20 52  |ogether..`>LDR R|
000009b0  31 2c 5b 52 31 32 5d 20  5c 20 47 65 74 20 77 68  |1,[R12] \ Get wh|
000009c0  61 74 20 68 61 73 20 62  65 65 6e 20 77 72 69 74  |at has been writ|
000009d0  74 65 6e 20 74 6f 20 70  72 69 6e 74 65 72 20 62  |ten to printer b|
000009e0  65 66 6f 72 65 0d 04 6a  0f 4d 4f 56 53 20 50 43  |efore..j.MOVS PC|
000009f0  2c 52 31 34 0d 04 74 04  0d 04 7e 1b 5c 20 57 72  |,R14..t...~.\ Wr|
00000a00  69 74 65 20 44 61 74 61  20 74 6f 20 70 72 69 6e  |ite Data to prin|
00000a10  74 65 72 0d 04 88 08 2e  57 44 52 0d 04 92 2e 4d  |ter.....WDR....M|
00000a20  4f 56 20 52 34 2c 23 26  33 32 30 30 30 30 30 20  |OV R4,#&3200000 |
00000a30  5c 20 41 64 64 72 65 73  73 20 6f 66 20 50 72 69  |\ Address of Pri|
00000a40  6e 74 65 72 20 50 6f 72  74 0d 04 9c 15 41 44 44  |nter Port....ADD|
00000a50  20 52 34 2c 52 34 2c 23  26 35 30 30 30 30 0d 04  | R4,R4,#&50000..|
00000a60  a6 15 4d 4f 56 20 52 33  2c 52 31 2c 41 53 4c 20  |..MOV R3,R1,ASL |
00000a70  23 31 36 0d 04 b0 14 53  54 52 20 52 33 2c 5b 52  |#16....STR R3,[R|
00000a80  34 2c 23 26 31 30 5d 0d  04 ba 32 53 54 52 20 52  |4,#&10]...2STR R|
00000a90  31 2c 5b 52 31 32 5d 20  5c 20 52 65 63 6f 72 64  |1,[R12] \ Record|
00000aa0  20 6f 66 20 77 68 61 74  20 68 61 73 20 62 65 65  | of what has bee|
00000ab0  6e 20 77 72 69 74 74 65  6e 0d 04 c4 0f 4d 4f 56  |n written....MOV|
00000ac0  53 20 50 43 2c 52 31 34  0d 04 ce 04 0d 04 d8 1e  |S PC,R14........|
00000ad0  5c 20 52 65 61 64 20 26  20 57 72 69 74 65 20 63  |\ Read & Write c|
00000ae0  6f 6e 74 72 6f 6c 20 72  65 67 0d 04 e2 07 2e 43  |ontrol reg.....C|
00000af0  54 0d 04 ec 0d 4d 4f 56  20 52 31 2c 23 30 0d 04  |T....MOV R1,#0..|
00000b00  f6 0d 4d 4f 56 20 52 32  2c 23 30 0d 05 00 0f 4d  |..MOV R2,#0....M|
00000b10  4f 56 53 20 50 43 2c 52  31 34 0d 05 0a 04 0d 05  |OVS PC,R14......|
00000b20  14 18 2e 4d 45 20 5c 20  4c 41 42 4c 45 20 e3 20  |...ME \ LABLE . |
00000b30  83 55 4c 45 20 e0 0d 05  1e 05 5d 0d 05 28 05 ed  |.ULE .....]..(..|
00000b40  0d 05 32 05 e1 0d ff                              |..2....|
00000b47