Home » Archimedes archive » Archimedes World » AW-1996-09.adf » !AcornAns_AcornAns » AmazeCirc

AmazeCirc

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 » Archimedes World » AW-1996-09.adf » !AcornAns_AcornAns
Filename: AmazeCirc
Read OK:
File size: 0AEE bytes
Load address: 0000
Exec address: 0000
File contents
   10MODE 13 : REM try modes 15 and 21 if you can!
   20PROCinitvbles
   30REPEAT
   40 PROCinputparams
   50 PROCassemble
   60 CLS:OFF
   70 PROCmaze(numz,szmz)
   80 VDU 7
   90 dummy%=GET
  100UNTIL FALSE
  110END
  120:
  130:
  140DEF PROCinitvbles
  150mem=512
  160DIM code mem
  170!code=148:code!4=-1
  180SYS "OS_ReadVduVariables",code,code
  190scn=!code
  200wcol=77
  210tcol=3
  220mcol=192
  230fcol=79
  240sz$="35":nu$="1":sl$="0"
  250SYS "OS_ReadModeVariable",-1,11 TO ,,hpix:hpix+=1
  260SYS "OS_ReadModeVariable",-1,12 TO ,,vpix:vpix+=1
  270ENDPROC
  280:
  290DEF PROCinputparams
  300PROCinput("Maze size (5-123) ",sz$,szmz,"v>=5 AND v<=123")
  310PROCinput("Maze number ",nu$,numz,"v<>0")
  320PROCinput("Slow (1 yes, 0 no) ",sl$,slow%,"v=0 OR v=1")
  330ENDPROC
  340:
  350DEF PROCinput(p$,RETURN v$,RETURN v,c$)
  360LOCAL w$
  370PRINT
  380REPEAT
  390VDU11,13:PRINTSPC(39):VDU11,13
  400PRINTp$;"{"+v$+"}";:INPUT w$
  410IF w$="" w$=v$
  420IF w$="R" w$="random"
  430IF w$="random" REPEAT v=RND:UNTIL v<>0 ELSE v=VALw$
  440UNTIL EVALc$=TRUE
  450v$=w$
  460ENDPROC
  470:
  480DEF PROCmaze(num%,size%)
  490size%=size%<<2
  500IF size%>490 size%=490
  510IF size%<20 size%=20
  520GCOLwcol AND63TINTwcol
  530WAIT
  540CIRCLE FILL 640,512,511
  550GCOLfcol AND63TINTfcol
  560CIRCLE FILL 640,512,505
  570GCOLwcol AND63TINTwcol
  580CIRCLE FILL 640,512,size%
  590!ased=num%
  600GCOLmcol AND63TINTmcol
  610CIRCLE FILL 640,512,2816/vpix
  620CALL maze
  630ENDPROC
  640:
  650DEF FNlcol(c%) = ((c%AND33)<<2)+((c%AND14)<<3)+((c%AND16)>>1)+((c%AND192)>>6)
  660:
  670DEF PROCassemble
  680addr=0:xor=1:seed=2:a=3:b=4:l=5
  690tc=6:r=7:fc=8:of=9:newad=10:tmp4=11
  700sp=13:link=14:pc=15
  710L%=code+mem
  720FOR pass%=8 TO 10 STEP 2
  730P%=code
  740[OPT pass%
  750.axor EQUD &82D4E1B8
  760.ased EQUD -1
  770.ascn EQUD scn+hpix/2+vpix/2*hpix
  780:
  790.maze
  800LDR    xor,axor
  810LDR    seed,ased
  820LDR    addr,ascn
  830MOV    tc,#FNlcol(tcol)
  840MOV    fc,#FNlcol(mcol)
  850:
  860.rep
  870]
  880IF slow% THEN
  890 [OPT pass%
  900 STMFD  (sp)!,{0,1,2}
  910 MOV    0, #19
  920 SWI    "OS_Byte"
  930 LDMFD  (sp)!,{0,1,2}
  940 SWI    "OS_ReadEscapeState"
  950 MOVCS  pc, link
  960 ]
  970ENDIF
  980[OPT pass%
  990LDRB   r,[addr,#2]
 1000LDRB   l,[addr,#-2]
 1010LDRB   b,[addr,#hpix*2]
 1020LDRB   a,[addr,#-hpix*2]
 1030CMP    r,#FNlcol(wcol)
 1040CMPNE  l,#FNlcol(wcol)
 1050CMPNE  b,#FNlcol(wcol)
 1060CMPNE  a,#FNlcol(wcol)
 1070BEQ    endw
 1080:
 1090STRB   fc,[addr]
 1100LDRB   r,[addr,#1]!
 1110CMP    r,tc
 1120STREQB fc,[addr],#1
 1130BEQ    rep
 1140LDRB   l,[addr,#-2]!
 1150CMP    l,tc
 1160STREQB fc,[addr],#-1
 1170BEQ    rep
 1180LDRB   b,[addr,#1+hpix]!
 1190CMP    b,tc
 1200STREQB fc,[addr],#hpix
 1210BEQ    rep
 1220LDRB   a,[addr,#-2*hpix]!
 1230CMP    a,tc
 1240STREQB fc,[addr],#-hpix
 1250BEQ    rep
 1260MOV    pc,link
 1270:
 1280.endw
 1290MOVS   seed,seed,LSR #1
 1300EORCS  seed,seed,xor
 1310MOVCS  of,#2
 1320MOVCC  of,#2*hpix
 1330MOVS   seed,seed,LSR #1
 1340EORCS  seed,seed,xor
 1350ADDCS  newad,addr,of
 1360SUBCC  newad,addr,of
 1370LDRB   tmp4,[newad]
 1380CMP    tmp4,#FNlcol(wcol)
 1390BNE    endw
 1400ADDS   addr,addr,newad
 1410MOV    addr,addr,RRX
 1420STRB   tc,[addr]
 1430STRB   tc,[newad]
 1440MOV    addr,newad
 1450B      rep
 1460]
 1470NEXT
 1480ENDPROC

,� 13 : � try modes 15 and 21 if you can!
�initvbles
�
( �inputparams
2 �assemble
< �:�
F �maze(numz,szmz)
P � 7
Z
 dummy%=�
d� �
n�
x:
�:
�� �initvbles
�mem=512
�� code mem
�!code=148:code!4=-1
�&ș "OS_ReadVduVariables",code,code
�
scn=!code
�wcol=77
�
tcol=3
�mcol=192
�fcol=79
�sz$="35":nu$="1":sl$="0"
�3ș "OS_ReadModeVariable",-1,11 � ,,hpix:hpix+=1
3ș "OS_ReadModeVariable",-1,12 � ,,vpix:vpix+=1
�
:
"� �inputparams
,;�input("Maze size (5-123) ",sz$,szmz,"v>=5 AND v<=123")
6*�input("Maze number ",nu$,numz,"v<>0")
@8�input("Slow (1 yes, 0 no) ",sl$,slow%,"v=0 OR v=1")
J�
T:
^� �input(p$,� v$,� v,c$)
h� w$
r�
|�
��11,13:�(39):�11,13
��p$;"{"+v$+"}";:� w$
�� w$="" w$=v$
�� w$="R" w$="random"
�&� w$="random" � v=�:� v<>0 � v=�w$
�� �c$=�
�	v$=w$
��
�:
�� �maze(num%,size%)
�size%=size%<<2
�� size%>490 size%=490
�� size%<20 size%=20
�wcol �63Ȝwcol
Ȗ
ȏ Ȑ 640,512,511
&�fcol �63Ȝfcol
0ȏ Ȑ 640,512,505
:�wcol �63Ȝwcol
Dȏ Ȑ 640,512,size%
N!ased=num%
X�mcol �63Ȝmcol
bȏ Ȑ 640,512,2816/vpix
l
� maze
v�
�:
�F� �lcol(c%) = ((c%�33)<<2)+((c%�14)<<3)+((c%�16)>>1)+((c%�192)>>6)
�:
�� �assemble
�#addr=0:xor=1:seed=2:a=3:b=4:l=5
�'tc=6:r=7:fc=8:of=9:newad=10:tmp4=11
�sp=13:link=14:pc=15
�L%=code+mem
�� pass%=8 � 10 � 2
�P%=code
�[OPT pass%
�.axor EQUD &82D4E1B8
�.ased EQUD -1
%.ascn EQUD scn+hpix/2+vpix/2*hpix
:
	.maze
 LDR    xor,axor
*LDR    seed,ased
4LDR    addr,ascn
>MOV    tc,#�lcol(tcol)
HMOV    fc,#�lcol(mcol)
R:
\.rep
f]
p
� slow% �
z [OPT pass%
� STMFD  (sp)!,{0,1,2}
� MOV    0, #19
� SWI    "OS_Byte"
� LDMFD  (sp)!,{0,1,2}
�  SWI    "OS_ReadEscapeState"
� MOVCS  pc, link
� ]
��
�[OPT pass%
�LDRB   r,[addr,#2]
�LDRB   l,[addr,#-2]
�LDRB   b,[addr,#hpix*2]
�LDRB   a,[addr,#-hpix*2]
CMP    r,#�lcol(wcol)
CMPNE  l,#�lcol(wcol)
CMPNE  b,#�lcol(wcol)
$CMPNE  a,#�lcol(wcol)
.BEQ    endw
8:
BSTRB   fc,[addr]
LLDRB   r,[addr,#1]!
VCMP    r,tc
`STREQB fc,[addr],#1
jBEQ    rep
tLDRB   l,[addr,#-2]!
~CMP    l,tc
�STREQB fc,[addr],#-1
�BEQ    rep
�LDRB   b,[addr,#1+hpix]!
�CMP    b,tc
�STREQB fc,[addr],#hpix
�BEQ    rep
�LDRB   a,[addr,#-2*hpix]!
�CMP    a,tc
�STREQB fc,[addr],#-hpix
�BEQ    rep
�MOV    pc,link
�:
	.endw

MOVS   seed,seed,LSR #1
�CS  seed,seed,xor
MOVCS  of,#2
(MOVCC  of,#2*hpix
2MOVS   seed,seed,LSR #1
<�CS  seed,seed,xor
FADDCS  newad,addr,of
PSUBCC  newad,addr,of
ZLDRB   tmp4,[newad]
dCMP    tmp4,#�lcol(wcol)
nBNE    endw
xADDS   addr,addr,newad
�MOV    addr,addr,RRX
�STRB   tc,[addr]
�STRB   tc,[newad]
�MOV    addr,newad
�B      rep
�]
��
��
�
00000000  0d 00 0a 2c eb 20 31 33  20 3a 20 f4 20 74 72 79  |...,. 13 : . try|
00000010  20 6d 6f 64 65 73 20 31  35 20 61 6e 64 20 32 31  | modes 15 and 21|
00000020  20 69 66 20 79 6f 75 20  63 61 6e 21 0d 00 14 0e  | if you can!....|
00000030  f2 69 6e 69 74 76 62 6c  65 73 0d 00 1e 05 f5 0d  |.initvbles......|
00000040  00 28 11 20 f2 69 6e 70  75 74 70 61 72 61 6d 73  |.(. .inputparams|
00000050  0d 00 32 0e 20 f2 61 73  73 65 6d 62 6c 65 0d 00  |..2. .assemble..|
00000060  3c 08 20 db 3a 87 0d 00  46 15 20 f2 6d 61 7a 65  |<. .:...F. .maze|
00000070  28 6e 75 6d 7a 2c 73 7a  6d 7a 29 0d 00 50 08 20  |(numz,szmz)..P. |
00000080  ef 20 37 0d 00 5a 0d 20  64 75 6d 6d 79 25 3d a5  |. 7..Z. dummy%=.|
00000090  0d 00 64 07 fd 20 a3 0d  00 6e 05 e0 0d 00 78 05  |..d.. ...n....x.|
000000a0  3a 0d 00 82 05 3a 0d 00  8c 10 dd 20 f2 69 6e 69  |:....:..... .ini|
000000b0  74 76 62 6c 65 73 0d 00  96 0b 6d 65 6d 3d 35 31  |tvbles....mem=51|
000000c0  32 0d 00 a0 0e de 20 63  6f 64 65 20 6d 65 6d 0d  |2..... code mem.|
000000d0  00 aa 17 21 63 6f 64 65  3d 31 34 38 3a 63 6f 64  |...!code=148:cod|
000000e0  65 21 34 3d 2d 31 0d 00  b4 26 c8 99 20 22 4f 53  |e!4=-1...&.. "OS|
000000f0  5f 52 65 61 64 56 64 75  56 61 72 69 61 62 6c 65  |_ReadVduVariable|
00000100  73 22 2c 63 6f 64 65 2c  63 6f 64 65 0d 00 be 0d  |s",code,code....|
00000110  73 63 6e 3d 21 63 6f 64  65 0d 00 c8 0b 77 63 6f  |scn=!code....wco|
00000120  6c 3d 37 37 0d 00 d2 0a  74 63 6f 6c 3d 33 0d 00  |l=77....tcol=3..|
00000130  dc 0c 6d 63 6f 6c 3d 31  39 32 0d 00 e6 0b 66 63  |..mcol=192....fc|
00000140  6f 6c 3d 37 39 0d 00 f0  1c 73 7a 24 3d 22 33 35  |ol=79....sz$="35|
00000150  22 3a 6e 75 24 3d 22 31  22 3a 73 6c 24 3d 22 30  |":nu$="1":sl$="0|
00000160  22 0d 00 fa 33 c8 99 20  22 4f 53 5f 52 65 61 64  |"...3.. "OS_Read|
00000170  4d 6f 64 65 56 61 72 69  61 62 6c 65 22 2c 2d 31  |ModeVariable",-1|
00000180  2c 31 31 20 b8 20 2c 2c  68 70 69 78 3a 68 70 69  |,11 . ,,hpix:hpi|
00000190  78 2b 3d 31 0d 01 04 33  c8 99 20 22 4f 53 5f 52  |x+=1...3.. "OS_R|
000001a0  65 61 64 4d 6f 64 65 56  61 72 69 61 62 6c 65 22  |eadModeVariable"|
000001b0  2c 2d 31 2c 31 32 20 b8  20 2c 2c 76 70 69 78 3a  |,-1,12 . ,,vpix:|
000001c0  76 70 69 78 2b 3d 31 0d  01 0e 05 e1 0d 01 18 05  |vpix+=1.........|
000001d0  3a 0d 01 22 12 dd 20 f2  69 6e 70 75 74 70 61 72  |:..".. .inputpar|
000001e0  61 6d 73 0d 01 2c 3b f2  69 6e 70 75 74 28 22 4d  |ams..,;.input("M|
000001f0  61 7a 65 20 73 69 7a 65  20 28 35 2d 31 32 33 29  |aze size (5-123)|
00000200  20 22 2c 73 7a 24 2c 73  7a 6d 7a 2c 22 76 3e 3d  | ",sz$,szmz,"v>=|
00000210  35 20 41 4e 44 20 76 3c  3d 31 32 33 22 29 0d 01  |5 AND v<=123")..|
00000220  36 2a f2 69 6e 70 75 74  28 22 4d 61 7a 65 20 6e  |6*.input("Maze n|
00000230  75 6d 62 65 72 20 22 2c  6e 75 24 2c 6e 75 6d 7a  |umber ",nu$,numz|
00000240  2c 22 76 3c 3e 30 22 29  0d 01 40 38 f2 69 6e 70  |,"v<>0")..@8.inp|
00000250  75 74 28 22 53 6c 6f 77  20 28 31 20 79 65 73 2c  |ut("Slow (1 yes,|
00000260  20 30 20 6e 6f 29 20 22  2c 73 6c 24 2c 73 6c 6f  | 0 no) ",sl$,slo|
00000270  77 25 2c 22 76 3d 30 20  4f 52 20 76 3d 31 22 29  |w%,"v=0 OR v=1")|
00000280  0d 01 4a 05 e1 0d 01 54  05 3a 0d 01 5e 1c dd 20  |..J....T.:..^.. |
00000290  f2 69 6e 70 75 74 28 70  24 2c f8 20 76 24 2c f8  |.input(p$,. v$,.|
000002a0  20 76 2c 63 24 29 0d 01  68 08 ea 20 77 24 0d 01  | v,c$)..h.. w$..|
000002b0  72 05 f1 0d 01 7c 05 f5  0d 01 86 18 ef 31 31 2c  |r....|.......11,|
000002c0  31 33 3a f1 89 28 33 39  29 3a ef 31 31 2c 31 33  |13:..(39):.11,13|
000002d0  0d 01 90 18 f1 70 24 3b  22 7b 22 2b 76 24 2b 22  |.....p$;"{"+v$+"|
000002e0  7d 22 3b 3a e8 20 77 24  0d 01 9a 11 e7 20 77 24  |}";:. w$..... w$|
000002f0  3d 22 22 20 77 24 3d 76  24 0d 01 a4 18 e7 20 77  |="" w$=v$..... w|
00000300  24 3d 22 52 22 20 77 24  3d 22 72 61 6e 64 6f 6d  |$="R" w$="random|
00000310  22 0d 01 ae 26 e7 20 77  24 3d 22 72 61 6e 64 6f  |"...&. w$="rando|
00000320  6d 22 20 f5 20 76 3d b3  3a fd 20 76 3c 3e 30 20  |m" . v=.:. v<>0 |
00000330  8b 20 76 3d bb 77 24 0d  01 b8 0b fd 20 a0 63 24  |. v=.w$..... .c$|
00000340  3d b9 0d 01 c2 09 76 24  3d 77 24 0d 01 cc 05 e1  |=.....v$=w$.....|
00000350  0d 01 d6 05 3a 0d 01 e0  17 dd 20 f2 6d 61 7a 65  |....:..... .maze|
00000360  28 6e 75 6d 25 2c 73 69  7a 65 25 29 0d 01 ea 12  |(num%,size%)....|
00000370  73 69 7a 65 25 3d 73 69  7a 65 25 3c 3c 32 0d 01  |size%=size%<<2..|
00000380  f4 19 e7 20 73 69 7a 65  25 3e 34 39 30 20 73 69  |... size%>490 si|
00000390  7a 65 25 3d 34 39 30 0d  01 fe 17 e7 20 73 69 7a  |ze%=490..... siz|
000003a0  65 25 3c 32 30 20 73 69  7a 65 25 3d 32 30 0d 02  |e%<20 size%=20..|
000003b0  08 13 e6 77 63 6f 6c 20  80 36 33 c8 9c 77 63 6f  |...wcol .63..wco|
000003c0  6c 0d 02 12 06 c8 96 0d  02 1c 15 c8 8f 20 c8 90  |l............ ..|
000003d0  20 36 34 30 2c 35 31 32  2c 35 31 31 0d 02 26 13  | 640,512,511..&.|
000003e0  e6 66 63 6f 6c 20 80 36  33 c8 9c 66 63 6f 6c 0d  |.fcol .63..fcol.|
000003f0  02 30 15 c8 8f 20 c8 90  20 36 34 30 2c 35 31 32  |.0... .. 640,512|
00000400  2c 35 30 35 0d 02 3a 13  e6 77 63 6f 6c 20 80 36  |,505..:..wcol .6|
00000410  33 c8 9c 77 63 6f 6c 0d  02 44 17 c8 8f 20 c8 90  |3..wcol..D... ..|
00000420  20 36 34 30 2c 35 31 32  2c 73 69 7a 65 25 0d 02  | 640,512,size%..|
00000430  4e 0e 21 61 73 65 64 3d  6e 75 6d 25 0d 02 58 13  |N.!ased=num%..X.|
00000440  e6 6d 63 6f 6c 20 80 36  33 c8 9c 6d 63 6f 6c 0d  |.mcol .63..mcol.|
00000450  02 62 1b c8 8f 20 c8 90  20 36 34 30 2c 35 31 32  |.b... .. 640,512|
00000460  2c 32 38 31 36 2f 76 70  69 78 0d 02 6c 0a d6 20  |,2816/vpix..l.. |
00000470  6d 61 7a 65 0d 02 76 05  e1 0d 02 80 05 3a 0d 02  |maze..v......:..|
00000480  8a 46 dd 20 a4 6c 63 6f  6c 28 63 25 29 20 3d 20  |.F. .lcol(c%) = |
00000490  28 28 63 25 80 33 33 29  3c 3c 32 29 2b 28 28 63  |((c%.33)<<2)+((c|
000004a0  25 80 31 34 29 3c 3c 33  29 2b 28 28 63 25 80 31  |%.14)<<3)+((c%.1|
000004b0  36 29 3e 3e 31 29 2b 28  28 63 25 80 31 39 32 29  |6)>>1)+((c%.192)|
000004c0  3e 3e 36 29 0d 02 94 05  3a 0d 02 9e 0f dd 20 f2  |>>6)....:..... .|
000004d0  61 73 73 65 6d 62 6c 65  0d 02 a8 23 61 64 64 72  |assemble...#addr|
000004e0  3d 30 3a 78 6f 72 3d 31  3a 73 65 65 64 3d 32 3a  |=0:xor=1:seed=2:|
000004f0  61 3d 33 3a 62 3d 34 3a  6c 3d 35 0d 02 b2 27 74  |a=3:b=4:l=5...'t|
00000500  63 3d 36 3a 72 3d 37 3a  66 63 3d 38 3a 6f 66 3d  |c=6:r=7:fc=8:of=|
00000510  39 3a 6e 65 77 61 64 3d  31 30 3a 74 6d 70 34 3d  |9:newad=10:tmp4=|
00000520  31 31 0d 02 bc 17 73 70  3d 31 33 3a 6c 69 6e 6b  |11....sp=13:link|
00000530  3d 31 34 3a 70 63 3d 31  35 0d 02 c6 0f 4c 25 3d  |=14:pc=15....L%=|
00000540  63 6f 64 65 2b 6d 65 6d  0d 02 d0 16 e3 20 70 61  |code+mem..... pa|
00000550  73 73 25 3d 38 20 b8 20  31 30 20 88 20 32 0d 02  |ss%=8 . 10 . 2..|
00000560  da 0b 50 25 3d 63 6f 64  65 0d 02 e4 0e 5b 4f 50  |..P%=code....[OP|
00000570  54 20 70 61 73 73 25 0d  02 ee 18 2e 61 78 6f 72  |T pass%.....axor|
00000580  20 45 51 55 44 20 26 38  32 44 34 45 31 42 38 0d  | EQUD &82D4E1B8.|
00000590  02 f8 11 2e 61 73 65 64  20 45 51 55 44 20 2d 31  |....ased EQUD -1|
000005a0  0d 03 02 25 2e 61 73 63  6e 20 45 51 55 44 20 73  |...%.ascn EQUD s|
000005b0  63 6e 2b 68 70 69 78 2f  32 2b 76 70 69 78 2f 32  |cn+hpix/2+vpix/2|
000005c0  2a 68 70 69 78 0d 03 0c  05 3a 0d 03 16 09 2e 6d  |*hpix....:.....m|
000005d0  61 7a 65 0d 03 20 13 4c  44 52 20 20 20 20 78 6f  |aze.. .LDR    xo|
000005e0  72 2c 61 78 6f 72 0d 03  2a 14 4c 44 52 20 20 20  |r,axor..*.LDR   |
000005f0  20 73 65 65 64 2c 61 73  65 64 0d 03 34 14 4c 44  | seed,ased..4.LD|
00000600  52 20 20 20 20 61 64 64  72 2c 61 73 63 6e 0d 03  |R    addr,ascn..|
00000610  3e 1a 4d 4f 56 20 20 20  20 74 63 2c 23 a4 6c 63  |>.MOV    tc,#.lc|
00000620  6f 6c 28 74 63 6f 6c 29  0d 03 48 1a 4d 4f 56 20  |ol(tcol)..H.MOV |
00000630  20 20 20 66 63 2c 23 a4  6c 63 6f 6c 28 6d 63 6f  |   fc,#.lcol(mco|
00000640  6c 29 0d 03 52 05 3a 0d  03 5c 08 2e 72 65 70 0d  |l)..R.:..\..rep.|
00000650  03 66 05 5d 0d 03 70 0d  e7 20 73 6c 6f 77 25 20  |.f.]..p.. slow% |
00000660  8c 0d 03 7a 0f 20 5b 4f  50 54 20 70 61 73 73 25  |...z. [OPT pass%|
00000670  0d 03 84 19 20 53 54 4d  46 44 20 20 28 73 70 29  |.... STMFD  (sp)|
00000680  21 2c 7b 30 2c 31 2c 32  7d 0d 03 8e 12 20 4d 4f  |!,{0,1,2}.... MO|
00000690  56 20 20 20 20 30 2c 20  23 31 39 0d 03 98 15 20  |V    0, #19.... |
000006a0  53 57 49 20 20 20 20 22  4f 53 5f 42 79 74 65 22  |SWI    "OS_Byte"|
000006b0  0d 03 a2 19 20 4c 44 4d  46 44 20 20 28 73 70 29  |.... LDMFD  (sp)|
000006c0  21 2c 7b 30 2c 31 2c 32  7d 0d 03 ac 20 20 53 57  |!,{0,1,2}...  SW|
000006d0  49 20 20 20 20 22 4f 53  5f 52 65 61 64 45 73 63  |I    "OS_ReadEsc|
000006e0  61 70 65 53 74 61 74 65  22 0d 03 b6 14 20 4d 4f  |apeState".... MO|
000006f0  56 43 53 20 20 70 63 2c  20 6c 69 6e 6b 0d 03 c0  |VCS  pc, link...|
00000700  06 20 5d 0d 03 ca 05 cd  0d 03 d4 0e 5b 4f 50 54  |. ].........[OPT|
00000710  20 70 61 73 73 25 0d 03  de 16 4c 44 52 42 20 20  | pass%....LDRB  |
00000720  20 72 2c 5b 61 64 64 72  2c 23 32 5d 0d 03 e8 17  | r,[addr,#2]....|
00000730  4c 44 52 42 20 20 20 6c  2c 5b 61 64 64 72 2c 23  |LDRB   l,[addr,#|
00000740  2d 32 5d 0d 03 f2 1b 4c  44 52 42 20 20 20 62 2c  |-2]....LDRB   b,|
00000750  5b 61 64 64 72 2c 23 68  70 69 78 2a 32 5d 0d 03  |[addr,#hpix*2]..|
00000760  fc 1c 4c 44 52 42 20 20  20 61 2c 5b 61 64 64 72  |..LDRB   a,[addr|
00000770  2c 23 2d 68 70 69 78 2a  32 5d 0d 04 06 19 43 4d  |,#-hpix*2]....CM|
00000780  50 20 20 20 20 72 2c 23  a4 6c 63 6f 6c 28 77 63  |P    r,#.lcol(wc|
00000790  6f 6c 29 0d 04 10 19 43  4d 50 4e 45 20 20 6c 2c  |ol)....CMPNE  l,|
000007a0  23 a4 6c 63 6f 6c 28 77  63 6f 6c 29 0d 04 1a 19  |#.lcol(wcol)....|
000007b0  43 4d 50 4e 45 20 20 62  2c 23 a4 6c 63 6f 6c 28  |CMPNE  b,#.lcol(|
000007c0  77 63 6f 6c 29 0d 04 24  19 43 4d 50 4e 45 20 20  |wcol)..$.CMPNE  |
000007d0  61 2c 23 a4 6c 63 6f 6c  28 77 63 6f 6c 29 0d 04  |a,#.lcol(wcol)..|
000007e0  2e 0f 42 45 51 20 20 20  20 65 6e 64 77 0d 04 38  |..BEQ    endw..8|
000007f0  05 3a 0d 04 42 14 53 54  52 42 20 20 20 66 63 2c  |.:..B.STRB   fc,|
00000800  5b 61 64 64 72 5d 0d 04  4c 17 4c 44 52 42 20 20  |[addr]..L.LDRB  |
00000810  20 72 2c 5b 61 64 64 72  2c 23 31 5d 21 0d 04 56  | r,[addr,#1]!..V|
00000820  0f 43 4d 50 20 20 20 20  72 2c 74 63 0d 04 60 17  |.CMP    r,tc..`.|
00000830  53 54 52 45 51 42 20 66  63 2c 5b 61 64 64 72 5d  |STREQB fc,[addr]|
00000840  2c 23 31 0d 04 6a 0e 42  45 51 20 20 20 20 72 65  |,#1..j.BEQ    re|
00000850  70 0d 04 74 18 4c 44 52  42 20 20 20 6c 2c 5b 61  |p..t.LDRB   l,[a|
00000860  64 64 72 2c 23 2d 32 5d  21 0d 04 7e 0f 43 4d 50  |ddr,#-2]!..~.CMP|
00000870  20 20 20 20 6c 2c 74 63  0d 04 88 18 53 54 52 45  |    l,tc....STRE|
00000880  51 42 20 66 63 2c 5b 61  64 64 72 5d 2c 23 2d 31  |QB fc,[addr],#-1|
00000890  0d 04 92 0e 42 45 51 20  20 20 20 72 65 70 0d 04  |....BEQ    rep..|
000008a0  9c 1c 4c 44 52 42 20 20  20 62 2c 5b 61 64 64 72  |..LDRB   b,[addr|
000008b0  2c 23 31 2b 68 70 69 78  5d 21 0d 04 a6 0f 43 4d  |,#1+hpix]!....CM|
000008c0  50 20 20 20 20 62 2c 74  63 0d 04 b0 1a 53 54 52  |P    b,tc....STR|
000008d0  45 51 42 20 66 63 2c 5b  61 64 64 72 5d 2c 23 68  |EQB fc,[addr],#h|
000008e0  70 69 78 0d 04 ba 0e 42  45 51 20 20 20 20 72 65  |pix....BEQ    re|
000008f0  70 0d 04 c4 1d 4c 44 52  42 20 20 20 61 2c 5b 61  |p....LDRB   a,[a|
00000900  64 64 72 2c 23 2d 32 2a  68 70 69 78 5d 21 0d 04  |ddr,#-2*hpix]!..|
00000910  ce 0f 43 4d 50 20 20 20  20 61 2c 74 63 0d 04 d8  |..CMP    a,tc...|
00000920  1b 53 54 52 45 51 42 20  66 63 2c 5b 61 64 64 72  |.STREQB fc,[addr|
00000930  5d 2c 23 2d 68 70 69 78  0d 04 e2 0e 42 45 51 20  |],#-hpix....BEQ |
00000940  20 20 20 72 65 70 0d 04  ec 12 4d 4f 56 20 20 20  |   rep....MOV   |
00000950  20 70 63 2c 6c 69 6e 6b  0d 04 f6 05 3a 0d 05 00  | pc,link....:...|
00000960  09 2e 65 6e 64 77 0d 05  0a 1b 4d 4f 56 53 20 20  |..endw....MOVS  |
00000970  20 73 65 65 64 2c 73 65  65 64 2c 4c 53 52 20 23  | seed,seed,LSR #|
00000980  31 0d 05 14 16 82 43 53  20 20 73 65 65 64 2c 73  |1.....CS  seed,s|
00000990  65 65 64 2c 78 6f 72 0d  05 1e 10 4d 4f 56 43 53  |eed,xor....MOVCS|
000009a0  20 20 6f 66 2c 23 32 0d  05 28 15 4d 4f 56 43 43  |  of,#2..(.MOVCC|
000009b0  20 20 6f 66 2c 23 32 2a  68 70 69 78 0d 05 32 1b  |  of,#2*hpix..2.|
000009c0  4d 4f 56 53 20 20 20 73  65 65 64 2c 73 65 65 64  |MOVS   seed,seed|
000009d0  2c 4c 53 52 20 23 31 0d  05 3c 16 82 43 53 20 20  |,LSR #1..<..CS  |
000009e0  73 65 65 64 2c 73 65 65  64 2c 78 6f 72 0d 05 46  |seed,seed,xor..F|
000009f0  18 41 44 44 43 53 20 20  6e 65 77 61 64 2c 61 64  |.ADDCS  newad,ad|
00000a00  64 72 2c 6f 66 0d 05 50  18 53 55 42 43 43 20 20  |dr,of..P.SUBCC  |
00000a10  6e 65 77 61 64 2c 61 64  64 72 2c 6f 66 0d 05 5a  |newad,addr,of..Z|
00000a20  17 4c 44 52 42 20 20 20  74 6d 70 34 2c 5b 6e 65  |.LDRB   tmp4,[ne|
00000a30  77 61 64 5d 0d 05 64 1c  43 4d 50 20 20 20 20 74  |wad]..d.CMP    t|
00000a40  6d 70 34 2c 23 a4 6c 63  6f 6c 28 77 63 6f 6c 29  |mp4,#.lcol(wcol)|
00000a50  0d 05 6e 0f 42 4e 45 20  20 20 20 65 6e 64 77 0d  |..n.BNE    endw.|
00000a60  05 78 1a 41 44 44 53 20  20 20 61 64 64 72 2c 61  |.x.ADDS   addr,a|
00000a70  64 64 72 2c 6e 65 77 61  64 0d 05 82 18 4d 4f 56  |ddr,newad....MOV|
00000a80  20 20 20 20 61 64 64 72  2c 61 64 64 72 2c 52 52  |    addr,addr,RR|
00000a90  58 0d 05 8c 14 53 54 52  42 20 20 20 74 63 2c 5b  |X....STRB   tc,[|
00000aa0  61 64 64 72 5d 0d 05 96  15 53 54 52 42 20 20 20  |addr]....STRB   |
00000ab0  74 63 2c 5b 6e 65 77 61  64 5d 0d 05 a0 15 4d 4f  |tc,[newad]....MO|
00000ac0  56 20 20 20 20 61 64 64  72 2c 6e 65 77 61 64 0d  |V    addr,newad.|
00000ad0  05 aa 0e 42 20 20 20 20  20 20 72 65 70 0d 05 b4  |...B      rep...|
00000ae0  05 5d 0d 05 be 05 ed 0d  05 c8 05 e1 0d ff        |.]............|
00000aee