Home » Archimedes archive » Acorn User » AU 1996-01.adf » Regulars » StarInfo/Norman/GUC

StarInfo/Norman/GUC

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 1996-01.adf » Regulars
Filename: StarInfo/Norman/GUC
Read OK:
File size: 14B6 bytes
Load address: 0000
Exec address: 0000
File contents
   10ON ERROR REPORT:PRINT ERL:END
   20MODE27:OFF
   30
   40PROCassemble
   50
   60PRINT "Press mouse buttons to add guck (try combinations of buttons)."
   70PRINT "Press <SPACE> to toggle guck flow."
   80PRINT "Press a key to continue..."
   90IFGET
  100flow%=TRUE
  110PROCmode("X480 Y352 G256"):OFF
  120FOR x%=0 TO 255
  130 COLOUR x%,x%/4,x%,x%/3
  140NEXT
  150MOUSE ON
  160
  170REPEAT
  180FORq%=0TO1<<30
  190IFINKEY$(0)=" "flow%=flow%EORTRUE
  200MOUSEx%,y%,z%
  210IFz%>0PROCcircles(x%,y%,z%)
  220IFflow%=TRUE CALL slide
  230NEXT
  240UNTIL 1=2
  250
  260END
  270
  280
  290
  300DEF PROCcircles(x%,y%,z%)
  310 LOCAL s%,c%,cn%
  320 s%=10*z%+5
  330 cn%=1
  340 FOR c%=s% TO 0 STEP -z%
  350  SYS "OS_SetColour",1,1<<cn%
  360  CIRCLEFILLx%,y%,c%
  370  cn%+=1
  380 NEXT
  390ENDPROC
  400
  410
  420
  430DEF PROCassemble
  440DIM code 1024
  450
  460sp=13         :     link=14     :    pc=15
  470
  480REM       ******    ARM CODE COMPILING LOOP           ******
  490
  500top%=195
  510bot%=50
  520d%=1
  530
  540FOR pass=0 TO 2 STEP 2
  550P%=code
  560[OPT pass
  570.slide
  580   LDR R12,screen
  590   MOV R10,#0                 ;xpos
  600   MOV R8,#168960
  610   SUB R8,R8,#480
  620.sloop1
  630   ADD R11,R10,R8             ;ypos
  640   MOV R9,R11                 ;store old ypos
  650   LDR R6,[R12,R11]           ;get byte at top of screen
  660   MOV R2,R6,LSR #24
  670   MOV R3,R6,LSL #8
  680   MOV R3,R3,LSR #24
  690   MOV R4,R6,LSL #16
  700   MOV R4,R3,LSR #24
  710   AND R5,R6,#&FF
  720   ADD R10,R10,#4             ;increment xpos
  730.sloop2
  740   MOV R7,R6
  750   SUB R11,R11,#480           ;decrement ypos
  760   LDR R6,[R12,R11]           ;get next byte
  770   MOV R1,R6,LSR #24
  780   CMP R2,#top%               ;if upper byte is big...
  790   BGT spoint1                ;move past next bit
  800   CMP R1,#bot%               ;if blob is not 'full' enough...
  810   BLE spoint1                ;move past next bit
  820   SUB R6,R6,R1,LSL #24
  830   SUB R7,R7,R2,LSL #24
  840   ADD R2,R2,R1,LSR #d%        ;add a bit of higher to lower
  850   SUB R1,R1,R1,LSR #d%        ;wipe that bit from higher.
  860   ADD R6,R6,R1,LSL #24
  870   ADD R7,R7,R2,LSL #24
  880   MOV R2,R1
  890.spoint1
  900   MOV R1,R6,LSL #8
  910   MOV R1,R1,LSR #24
  920   CMP R3,#top%               ;if upper byte is big...
  930   BGT spoint2                ;move past next bit
  940   CMP R1,#bot%               ;if blob is not 'full' enough...
  950   BLE spoint2                ;move past next bit
  960   SUB R6,R6,R1,LSL #16
  970   SUB R7,R7,R3,LSL #16
  980   ADD R3,R3,R1,LSR #d%        ;add a bit of higher to lower
  990   SUB R1,R1,R1,LSR #d%        ;wipe that bit from higher.
 1000   ADD R6,R6,R1,LSL #16
 1010   ADD R7,R7,R3,LSL #16
 1020   MOV R3,R1
 1030.spoint2
 1040   MOV R1,R6,LSL #16
 1050   MOV R1,R1,LSR #24
 1060   CMP R4,#top%               ;if upper byte is big...
 1070   BGT spoint3                ;move past next bit
 1080   CMP R1,#bot%               ;if blob is not 'full' enough...
 1090   BLE spoint3                ;move past next bit
 1100   SUB R6,R6,R1,LSL #8
 1110   SUB R7,R7,R4,LSL #8
 1120   ADD R4,R4,R1,LSR #d%        ;add a bit of higher to lower
 1130   SUB R1,R1,R1,LSR #d%        ;wipe that bit from higher.
 1140   ADD R6,R6,R1,LSL #8
 1150   ADD R7,R7,R4,LSL #8
 1160   MOV R4,R1
 1170.spoint3
 1180   AND R1,R6,#&FF
 1190   CMP R5,#top%               ;if upper byte is big...
 1200   BGT spoint4                ;move past next bit
 1210   CMP R1,#bot%               ;if blob is not 'full' enough...
 1220   BLE spoint4                ;move past next bit
 1230   SUB R6,R6,R1
 1240   SUB R7,R7,R5
 1250   ADD R5,R5,R1,LSR #d%        ;add a bit of higher to lower
 1260   SUB R1,R1,R1,LSR #d%        ;wipe that bit from higher.
 1270   ADD R6,R6,R1
 1280   ADD R7,R7,R5
 1290   MOV R5,R1
 1300.spoint4
 1310   STR R7,[R12,R9]          ;store bytes back
 1320   MOV R9,R11
 1330   CMP R11,#480               ;if ypos is not off top...
 1340   BGT sloop2                 ;loop back
 1350   CMP R10,#480               ;if xpos is not off side...
 1360   BLT sloop1                 ;loop back
 1370;next bit will plot a black line at bottom of screen so
 1380;the goo can slide off the bottom
 1390   MOV R0,#0                  ;GCOL
 1400   ADD R8,R8,R12
 1410   ADD R11,R8,#480
 1420   SUB R8,R8,#4               ;so it plots 1st 4 bytes too.
 1430.lineloop
 1440   STR R0,[R8,#4]!            ;plot 4 bytes and increment counter
 1450   CMP R8,R11                 ;if counter is on screen...
 1460   BLT lineloop               ;loop back
 1470;next bit plots line at top so goo is cleared up after
 1480   ADD R11,R12,#480
 1490   SUB R12,R12,#4
 1500.lineloop2
 1510   STR R0,[R12,#4]!
 1520   CMP R12,R11
 1530   BLT lineloop2
 1540.exit
 1550   MOV pc,link                ;bye!
 1560
 1570
 1580.screen
 1590   EQUD      148
 1600   EQUD      -1
 1610]NEXT
 1620SYS "OS_ReadVduVariables",screen,screen
 1630ENDPROC
 1640
 1650
 1660
 1670DEF PROCmode(mode$)
 1680LOCAL c$,ex,ey,mode,end
 1690DIM mode 64
 1700end=mode+20
 1710!mode=1
 1720mode!4=VALFN_m(mode$,"X","")
 1730mode!8=VALFN_m(mode$,"Y","")
 1740c$=FN_m(mode$,"C","*")
 1750IF c$="*" THEN
 1760 c$=FN_m(mode$,"G","")
 1770 IF c$="256" !end=3:end!4=255:end+=8
 1780ENDIF
 1790mode!12=FN_bpp(c$)
 1800mode!16=VALFN_m(mode$,"F","-1")
 1810ex=VALFN_m(mode$,"EX","-1")
 1820IF ex<>-1 !end=4:end!4=ex:end+=8
 1830ey=VALFN_m(mode$,"EY","-1")
 1840IF ey<>-1 !end=5:end!4=ey:end+=8
 1850!end=-1
 1860MODE mode
 1870ENDPROC
 1880
 1890DEF FN_m(s$,p$,d$)
 1900LOCAL i,j
 1910i=INSTR(s$,p$)
 1920IF i<1 AND d$="" ERROR 490,"Missing "+p$
 1930IF i<1 THEN =d$
 1940j=INSTR(s$+" "," ",i+1)
 1950=MID$(s$,i+1,j-i-1)
 1960
 1970DEF FN_bpp(n$)
 1980CASE n$ OF
 1990 WHEN "2":=0
 2000 WHEN "4":=1
 2010 WHEN "16":=2
 2020 WHEN "256":=3
 2030 WHEN "32T","32t","32K","32k":=4
 2040 WHEN "16M","16m":=5
 2050 OTHERWISE: ERROR 490,"Bad parameter "+n$
 2060ENDCASE

� � �:� �:�
	�27:�

(
�assemble
2
<F� "Press mouse buttons to add guck (try combinations of buttons)."
F*� "Press <SPACE> to toggle guck flow."
P"� "Press a key to continue..."
Z�
dflow%=�
n�mode("X480 Y352 G256"):�
x� x%=0 � 255
� � x%,x%/4,x%,x%/3
��
�ȗ �
�
��
��q%=0�1<<30
��(0)=" "flow%=flow%��
�ȗx%,y%,z%
��z%>0�circles(x%,y%,z%)
��flow%=� � slide
��
�	� 1=2
�
�


"
,� �circles(x%,y%,z%)
6 � s%,c%,cn%
@ s%=10*z%+5
J
 cn%=1
T � c%=s% � 0 � -z%
^   ș "OS_SetColour",1,1<<cn%
h  ȏȐx%,y%,c%
r  cn%+=1
| �
��
�
�
�
�� �assemble
�� code 1024
�
�.sp=13         :     link=14     :    pc=15
�
�>�       ******    ARM CODE COMPILING LOOP           ******
�
�top%=195
�bot%=50
d%=1

� pass=0 � 2 � 2
&P%=code
0
[OPT pass
:
.slide
D   LDR R12,screen
N'   MOV R10,#0                 ;xpos
X   MOV R8,#168960
b   SUB R8,R8,#480
l.sloop1
v'   ADD R11,R10,R8             ;ypos
�1   MOV R9,R11                 ;store old ypos
�<   LDR R6,[R12,R11]           ;get byte at top of screen
�   MOV R2,R6,LSR #24
�   MOV R3,R6,LSL #8
�   MOV R3,R3,LSR #24
�   MOV R4,R6,LSL #16
�   MOV R4,R3,LSR #24
�   � R5,R6,#&FF
�1   ADD R10,R10,#4             ;increment xpos
�.sloop2
�   MOV R7,R6
�1   SUB R11,R11,#480           ;decrement ypos
�0   LDR R6,[R12,R11]           ;get next byte
   MOV R1,R6,LSR #24
:   CMP R2,#top%               ;if upper byte is big...
5   BGT spoint1                ;move past next bit
 B   CMP R1,#bot%               ;if blob is not 'full' enough...
*5   BLE spoint1                ;move past next bit
4   SUB R6,R6,R1,LSL #24
>   SUB R7,R7,R2,LSL #24
H@   ADD R2,R2,R1,LSR #d%        ;add a bit of higher to lower
R>   SUB R1,R1,R1,LSR #d%        ;wipe that bit from higher.
\   ADD R6,R6,R1,LSL #24
f   ADD R7,R7,R2,LSL #24
p   MOV R2,R1
z.spoint1
�   MOV R1,R6,LSL #8
�   MOV R1,R1,LSR #24
�:   CMP R3,#top%               ;if upper byte is big...
�5   BGT spoint2                ;move past next bit
�B   CMP R1,#bot%               ;if blob is not 'full' enough...
�5   BLE spoint2                ;move past next bit
�   SUB R6,R6,R1,LSL #16
�   SUB R7,R7,R3,LSL #16
�@   ADD R3,R3,R1,LSR #d%        ;add a bit of higher to lower
�>   SUB R1,R1,R1,LSR #d%        ;wipe that bit from higher.
�   ADD R6,R6,R1,LSL #16
�   ADD R7,R7,R3,LSL #16
�   MOV R3,R1
.spoint2
   MOV R1,R6,LSL #16
   MOV R1,R1,LSR #24
$:   CMP R4,#top%               ;if upper byte is big...
.5   BGT spoint3                ;move past next bit
8B   CMP R1,#bot%               ;if blob is not 'full' enough...
B5   BLE spoint3                ;move past next bit
L   SUB R6,R6,R1,LSL #8
V   SUB R7,R7,R4,LSL #8
`@   ADD R4,R4,R1,LSR #d%        ;add a bit of higher to lower
j>   SUB R1,R1,R1,LSR #d%        ;wipe that bit from higher.
t   ADD R6,R6,R1,LSL #8
~   ADD R7,R7,R4,LSL #8
�   MOV R4,R1
�.spoint3
�   � R1,R6,#&FF
�:   CMP R5,#top%               ;if upper byte is big...
�5   BGT spoint4                ;move past next bit
�B   CMP R1,#bot%               ;if blob is not 'full' enough...
�5   BLE spoint4                ;move past next bit
�   SUB R6,R6,R1
�   SUB R7,R7,R5
�@   ADD R5,R5,R1,LSR #d%        ;add a bit of higher to lower
�>   SUB R1,R1,R1,LSR #d%        ;wipe that bit from higher.
�   ADD R6,R6,R1
   ADD R7,R7,R5

   MOV R5,R1
.spoint4
1   STR R7,[R12,R9]          ;store bytes back
(   MOV R9,R11
2<   CMP R11,#480               ;if ypos is not off top...
<,   BGT sloop2                 ;loop back
F=   CMP R10,#480               ;if xpos is not off side...
P,   BLT sloop1                 ;loop back
Z;;next bit will plot a black line at bottom of screen so
d%;the goo can slide off the bottom
n$   MOV R0,#0                  ;�
x   ADD R8,R8,R12
�   ADD R11,R8,#480
�?   SUB R8,R8,#4               ;so it plots 1st 4 bytes too.
�
.lineloop
�E   STR R0,[R8,#4]!            ;plot 4 bytes and increment counter
�=   CMP R8,R11                 ;if counter is on screen...
�,   BLT lineloop               ;loop back
�:;next bit plots line at top so goo is cleared up after
�   ADD R11,R12,#480
�   SUB R12,R12,#4
�.lineloop2
�   STR R0,[R12,#4]!
�   CMP R12,R11
�   BLT lineloop2
	.exit
'   MOV pc,link                ;bye!

"
,.screen
6   EQUD      148
@   EQUD      -1
J]�
T*ș "OS_ReadVduVariables",screen,screen
^�
h
r
|
�� �mode(mode$)
�� c$,ex,ey,mode,end
�
� mode 64
�end=mode+20
�!mode=1
�mode!4=��_m(mode$,"X","")
�mode!8=��_m(mode$,"Y","")
�c$=�_m(mode$,"C","*")
�� c$="*" �
� c$=�_m(mode$,"G","")
�' � c$="256" !end=3:end!4=255:end+=8
��
�mode!12=�_bpp(c$)
 mode!16=��_m(mode$,"F","-1")
ex=��_m(mode$,"EX","-1")
#� ex<>-1 !end=4:end!4=ex:end+=8
&ey=��_m(mode$,"EY","-1")
0#� ey<>-1 !end=5:end!4=ey:end+=8
:!end=-1
D
� mode
N�
X
b� �_m(s$,p$,d$)
l	� i,j
v
i=�s$,p$)
�%� i<1 � d$="" � 490,"Missing "+p$
�� i<1 � =d$
�j=�s$+" "," ",i+1)
�=�s$,i+1,j-i-1)
�
�� �_bpp(n$)
�Ȏ n$ �
�
 � "2":=0
�
 � "4":=1
� � "16":=2
� � "256":=3
�! � "32T","32t","32K","32k":=4
� � "16M","16m":=5
! : � 490,"Bad parameter "+n$
�
�
00000000  0d 00 0a 0f ee 20 85 20  f6 3a f1 20 9e 3a e0 0d  |..... . .:. .:..|
00000010  00 14 09 eb 32 37 3a 87  0d 00 1e 04 0d 00 28 0d  |....27:.......(.|
00000020  f2 61 73 73 65 6d 62 6c  65 0d 00 32 04 0d 00 3c  |.assemble..2...<|
00000030  46 f1 20 22 50 72 65 73  73 20 6d 6f 75 73 65 20  |F. "Press mouse |
00000040  62 75 74 74 6f 6e 73 20  74 6f 20 61 64 64 20 67  |buttons to add g|
00000050  75 63 6b 20 28 74 72 79  20 63 6f 6d 62 69 6e 61  |uck (try combina|
00000060  74 69 6f 6e 73 20 6f 66  20 62 75 74 74 6f 6e 73  |tions of buttons|
00000070  29 2e 22 0d 00 46 2a f1  20 22 50 72 65 73 73 20  |)."..F*. "Press |
00000080  3c 53 50 41 43 45 3e 20  74 6f 20 74 6f 67 67 6c  |<SPACE> to toggl|
00000090  65 20 67 75 63 6b 20 66  6c 6f 77 2e 22 0d 00 50  |e guck flow."..P|
000000a0  22 f1 20 22 50 72 65 73  73 20 61 20 6b 65 79 20  |". "Press a key |
000000b0  74 6f 20 63 6f 6e 74 69  6e 75 65 2e 2e 2e 22 0d  |to continue...".|
000000c0  00 5a 06 e7 a5 0d 00 64  0b 66 6c 6f 77 25 3d b9  |.Z.....d.flow%=.|
000000d0  0d 00 6e 1d f2 6d 6f 64  65 28 22 58 34 38 30 20  |..n..mode("X480 |
000000e0  59 33 35 32 20 47 32 35  36 22 29 3a 87 0d 00 78  |Y352 G256"):...x|
000000f0  10 e3 20 78 25 3d 30 20  b8 20 32 35 35 0d 00 82  |.. x%=0 . 255...|
00000100  16 20 fb 20 78 25 2c 78  25 2f 34 2c 78 25 2c 78  |. . x%,x%/4,x%,x|
00000110  25 2f 33 0d 00 8c 05 ed  0d 00 96 08 c8 97 20 ee  |%/3........... .|
00000120  0d 00 a0 04 0d 00 aa 05  f5 0d 00 b4 0f e3 71 25  |..............q%|
00000130  3d 30 b8 31 3c 3c 33 30  0d 00 be 1a e7 bf 28 30  |=0.1<<30......(0|
00000140  29 3d 22 20 22 66 6c 6f  77 25 3d 66 6c 6f 77 25  |)=" "flow%=flow%|
00000150  82 b9 0d 00 c8 0e c8 97  78 25 2c 79 25 2c 7a 25  |........x%,y%,z%|
00000160  0d 00 d2 1b e7 7a 25 3e  30 f2 63 69 72 63 6c 65  |.....z%>0.circle|
00000170  73 28 78 25 2c 79 25 2c  7a 25 29 0d 00 dc 14 e7  |s(x%,y%,z%).....|
00000180  66 6c 6f 77 25 3d b9 20  d6 20 73 6c 69 64 65 0d  |flow%=. . slide.|
00000190  00 e6 05 ed 0d 00 f0 09  fd 20 31 3d 32 0d 00 fa  |......... 1=2...|
000001a0  04 0d 01 04 05 e0 0d 01  0e 04 0d 01 18 04 0d 01  |................|
000001b0  22 04 0d 01 2c 18 dd 20  f2 63 69 72 63 6c 65 73  |"...,.. .circles|
000001c0  28 78 25 2c 79 25 2c 7a  25 29 0d 01 36 10 20 ea  |(x%,y%,z%)..6. .|
000001d0  20 73 25 2c 63 25 2c 63  6e 25 0d 01 40 0f 20 73  | s%,c%,cn%..@. s|
000001e0  25 3d 31 30 2a 7a 25 2b  35 0d 01 4a 0a 20 63 6e  |%=10*z%+5..J. cn|
000001f0  25 3d 31 0d 01 54 16 20  e3 20 63 25 3d 73 25 20  |%=1..T. . c%=s% |
00000200  b8 20 30 20 88 20 2d 7a  25 0d 01 5e 20 20 20 c8  |. 0 . -z%..^   .|
00000210  99 20 22 4f 53 5f 53 65  74 43 6f 6c 6f 75 72 22  |. "OS_SetColour"|
00000220  2c 31 2c 31 3c 3c 63 6e  25 0d 01 68 12 20 20 c8  |,1,1<<cn%..h.  .|
00000230  8f c8 90 78 25 2c 79 25  2c 63 25 0d 01 72 0c 20  |...x%,y%,c%..r. |
00000240  20 63 6e 25 2b 3d 31 0d  01 7c 06 20 ed 0d 01 86  | cn%+=1..|. ....|
00000250  05 e1 0d 01 90 04 0d 01  9a 04 0d 01 a4 04 0d 01  |................|
00000260  ae 0f dd 20 f2 61 73 73  65 6d 62 6c 65 0d 01 b8  |... .assemble...|
00000270  0f de 20 63 6f 64 65 20  31 30 32 34 0d 01 c2 04  |.. code 1024....|
00000280  0d 01 cc 2e 73 70 3d 31  33 20 20 20 20 20 20 20  |....sp=13       |
00000290  20 20 3a 20 20 20 20 20  6c 69 6e 6b 3d 31 34 20  |  :     link=14 |
000002a0  20 20 20 20 3a 20 20 20  20 70 63 3d 31 35 0d 01  |    :    pc=15..|
000002b0  d6 04 0d 01 e0 3e f4 20  20 20 20 20 20 20 2a 2a  |.....>.       **|
000002c0  2a 2a 2a 2a 20 20 20 20  41 52 4d 20 43 4f 44 45  |****    ARM CODE|
000002d0  20 43 4f 4d 50 49 4c 49  4e 47 20 4c 4f 4f 50 20  | COMPILING LOOP |
000002e0  20 20 20 20 20 20 20 20  20 20 2a 2a 2a 2a 2a 2a  |          ******|
000002f0  0d 01 ea 04 0d 01 f4 0c  74 6f 70 25 3d 31 39 35  |........top%=195|
00000300  0d 01 fe 0b 62 6f 74 25  3d 35 30 0d 02 08 08 64  |....bot%=50....d|
00000310  25 3d 31 0d 02 12 04 0d  02 1c 14 e3 20 70 61 73  |%=1......... pas|
00000320  73 3d 30 20 b8 20 32 20  88 20 32 0d 02 26 0b 50  |s=0 . 2 . 2..&.P|
00000330  25 3d 63 6f 64 65 0d 02  30 0d 5b 4f 50 54 20 70  |%=code..0.[OPT p|
00000340  61 73 73 0d 02 3a 0a 2e  73 6c 69 64 65 0d 02 44  |ass..:..slide..D|
00000350  15 20 20 20 4c 44 52 20  52 31 32 2c 73 63 72 65  |.   LDR R12,scre|
00000360  65 6e 0d 02 4e 27 20 20  20 4d 4f 56 20 52 31 30  |en..N'   MOV R10|
00000370  2c 23 30 20 20 20 20 20  20 20 20 20 20 20 20 20  |,#0             |
00000380  20 20 20 20 3b 78 70 6f  73 0d 02 58 15 20 20 20  |    ;xpos..X.   |
00000390  4d 4f 56 20 52 38 2c 23  31 36 38 39 36 30 0d 02  |MOV R8,#168960..|
000003a0  62 15 20 20 20 53 55 42  20 52 38 2c 52 38 2c 23  |b.   SUB R8,R8,#|
000003b0  34 38 30 0d 02 6c 0b 2e  73 6c 6f 6f 70 31 0d 02  |480..l..sloop1..|
000003c0  76 27 20 20 20 41 44 44  20 52 31 31 2c 52 31 30  |v'   ADD R11,R10|
000003d0  2c 52 38 20 20 20 20 20  20 20 20 20 20 20 20 20  |,R8             |
000003e0  3b 79 70 6f 73 0d 02 80  31 20 20 20 4d 4f 56 20  |;ypos...1   MOV |
000003f0  52 39 2c 52 31 31 20 20  20 20 20 20 20 20 20 20  |R9,R11          |
00000400  20 20 20 20 20 20 20 3b  73 74 6f 72 65 20 6f 6c  |       ;store ol|
00000410  64 20 79 70 6f 73 0d 02  8a 3c 20 20 20 4c 44 52  |d ypos...<   LDR|
00000420  20 52 36 2c 5b 52 31 32  2c 52 31 31 5d 20 20 20  | R6,[R12,R11]   |
00000430  20 20 20 20 20 20 20 20  3b 67 65 74 20 62 79 74  |        ;get byt|
00000440  65 20 61 74 20 74 6f 70  20 6f 66 20 73 63 72 65  |e at top of scre|
00000450  65 6e 0d 02 94 18 20 20  20 4d 4f 56 20 52 32 2c  |en....   MOV R2,|
00000460  52 36 2c 4c 53 52 20 23  32 34 0d 02 9e 17 20 20  |R6,LSR #24....  |
00000470  20 4d 4f 56 20 52 33 2c  52 36 2c 4c 53 4c 20 23  | MOV R3,R6,LSL #|
00000480  38 0d 02 a8 18 20 20 20  4d 4f 56 20 52 33 2c 52  |8....   MOV R3,R|
00000490  33 2c 4c 53 52 20 23 32  34 0d 02 b2 18 20 20 20  |3,LSR #24....   |
000004a0  4d 4f 56 20 52 34 2c 52  36 2c 4c 53 4c 20 23 31  |MOV R4,R6,LSL #1|
000004b0  36 0d 02 bc 18 20 20 20  4d 4f 56 20 52 34 2c 52  |6....   MOV R4,R|
000004c0  33 2c 4c 53 52 20 23 32  34 0d 02 c6 13 20 20 20  |3,LSR #24....   |
000004d0  80 20 52 35 2c 52 36 2c  23 26 46 46 0d 02 d0 31  |. R5,R6,#&FF...1|
000004e0  20 20 20 41 44 44 20 52  31 30 2c 52 31 30 2c 23  |   ADD R10,R10,#|
000004f0  34 20 20 20 20 20 20 20  20 20 20 20 20 20 3b 69  |4             ;i|
00000500  6e 63 72 65 6d 65 6e 74  20 78 70 6f 73 0d 02 da  |ncrement xpos...|
00000510  0b 2e 73 6c 6f 6f 70 32  0d 02 e4 10 20 20 20 4d  |..sloop2....   M|
00000520  4f 56 20 52 37 2c 52 36  0d 02 ee 31 20 20 20 53  |OV R7,R6...1   S|
00000530  55 42 20 52 31 31 2c 52  31 31 2c 23 34 38 30 20  |UB R11,R11,#480 |
00000540  20 20 20 20 20 20 20 20  20 20 3b 64 65 63 72 65  |          ;decre|
00000550  6d 65 6e 74 20 79 70 6f  73 0d 02 f8 30 20 20 20  |ment ypos...0   |
00000560  4c 44 52 20 52 36 2c 5b  52 31 32 2c 52 31 31 5d  |LDR R6,[R12,R11]|
00000570  20 20 20 20 20 20 20 20  20 20 20 3b 67 65 74 20  |           ;get |
00000580  6e 65 78 74 20 62 79 74  65 0d 03 02 18 20 20 20  |next byte....   |
00000590  4d 4f 56 20 52 31 2c 52  36 2c 4c 53 52 20 23 32  |MOV R1,R6,LSR #2|
000005a0  34 0d 03 0c 3a 20 20 20  43 4d 50 20 52 32 2c 23  |4...:   CMP R2,#|
000005b0  74 6f 70 25 20 20 20 20  20 20 20 20 20 20 20 20  |top%            |
000005c0  20 20 20 3b 69 66 20 75  70 70 65 72 20 62 79 74  |   ;if upper byt|
000005d0  65 20 69 73 20 62 69 67  2e 2e 2e 0d 03 16 35 20  |e is big......5 |
000005e0  20 20 42 47 54 20 73 70  6f 69 6e 74 31 20 20 20  |  BGT spoint1   |
000005f0  20 20 20 20 20 20 20 20  20 20 20 20 20 3b 6d 6f  |             ;mo|
00000600  76 65 20 70 61 73 74 20  6e 65 78 74 20 62 69 74  |ve past next bit|
00000610  0d 03 20 42 20 20 20 43  4d 50 20 52 31 2c 23 62  |.. B   CMP R1,#b|
00000620  6f 74 25 20 20 20 20 20  20 20 20 20 20 20 20 20  |ot%             |
00000630  20 20 3b 69 66 20 62 6c  6f 62 20 69 73 20 6e 6f  |  ;if blob is no|
00000640  74 20 27 66 75 6c 6c 27  20 65 6e 6f 75 67 68 2e  |t 'full' enough.|
00000650  2e 2e 0d 03 2a 35 20 20  20 42 4c 45 20 73 70 6f  |....*5   BLE spo|
00000660  69 6e 74 31 20 20 20 20  20 20 20 20 20 20 20 20  |int1            |
00000670  20 20 20 20 3b 6d 6f 76  65 20 70 61 73 74 20 6e  |    ;move past n|
00000680  65 78 74 20 62 69 74 0d  03 34 1b 20 20 20 53 55  |ext bit..4.   SU|
00000690  42 20 52 36 2c 52 36 2c  52 31 2c 4c 53 4c 20 23  |B R6,R6,R1,LSL #|
000006a0  32 34 0d 03 3e 1b 20 20  20 53 55 42 20 52 37 2c  |24..>.   SUB R7,|
000006b0  52 37 2c 52 32 2c 4c 53  4c 20 23 32 34 0d 03 48  |R7,R2,LSL #24..H|
000006c0  40 20 20 20 41 44 44 20  52 32 2c 52 32 2c 52 31  |@   ADD R2,R2,R1|
000006d0  2c 4c 53 52 20 23 64 25  20 20 20 20 20 20 20 20  |,LSR #d%        |
000006e0  3b 61 64 64 20 61 20 62  69 74 20 6f 66 20 68 69  |;add a bit of hi|
000006f0  67 68 65 72 20 74 6f 20  6c 6f 77 65 72 0d 03 52  |gher to lower..R|
00000700  3e 20 20 20 53 55 42 20  52 31 2c 52 31 2c 52 31  |>   SUB R1,R1,R1|
00000710  2c 4c 53 52 20 23 64 25  20 20 20 20 20 20 20 20  |,LSR #d%        |
00000720  3b 77 69 70 65 20 74 68  61 74 20 62 69 74 20 66  |;wipe that bit f|
00000730  72 6f 6d 20 68 69 67 68  65 72 2e 0d 03 5c 1b 20  |rom higher...\. |
00000740  20 20 41 44 44 20 52 36  2c 52 36 2c 52 31 2c 4c  |  ADD R6,R6,R1,L|
00000750  53 4c 20 23 32 34 0d 03  66 1b 20 20 20 41 44 44  |SL #24..f.   ADD|
00000760  20 52 37 2c 52 37 2c 52  32 2c 4c 53 4c 20 23 32  | R7,R7,R2,LSL #2|
00000770  34 0d 03 70 10 20 20 20  4d 4f 56 20 52 32 2c 52  |4..p.   MOV R2,R|
00000780  31 0d 03 7a 0c 2e 73 70  6f 69 6e 74 31 0d 03 84  |1..z..spoint1...|
00000790  17 20 20 20 4d 4f 56 20  52 31 2c 52 36 2c 4c 53  |.   MOV R1,R6,LS|
000007a0  4c 20 23 38 0d 03 8e 18  20 20 20 4d 4f 56 20 52  |L #8....   MOV R|
000007b0  31 2c 52 31 2c 4c 53 52  20 23 32 34 0d 03 98 3a  |1,R1,LSR #24...:|
000007c0  20 20 20 43 4d 50 20 52  33 2c 23 74 6f 70 25 20  |   CMP R3,#top% |
000007d0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 3b 69  |              ;i|
000007e0  66 20 75 70 70 65 72 20  62 79 74 65 20 69 73 20  |f upper byte is |
000007f0  62 69 67 2e 2e 2e 0d 03  a2 35 20 20 20 42 47 54  |big......5   BGT|
00000800  20 73 70 6f 69 6e 74 32  20 20 20 20 20 20 20 20  | spoint2        |
00000810  20 20 20 20 20 20 20 20  3b 6d 6f 76 65 20 70 61  |        ;move pa|
00000820  73 74 20 6e 65 78 74 20  62 69 74 0d 03 ac 42 20  |st next bit...B |
00000830  20 20 43 4d 50 20 52 31  2c 23 62 6f 74 25 20 20  |  CMP R1,#bot%  |
00000840  20 20 20 20 20 20 20 20  20 20 20 20 20 3b 69 66  |             ;if|
00000850  20 62 6c 6f 62 20 69 73  20 6e 6f 74 20 27 66 75  | blob is not 'fu|
00000860  6c 6c 27 20 65 6e 6f 75  67 68 2e 2e 2e 0d 03 b6  |ll' enough......|
00000870  35 20 20 20 42 4c 45 20  73 70 6f 69 6e 74 32 20  |5   BLE spoint2 |
00000880  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 3b  |               ;|
00000890  6d 6f 76 65 20 70 61 73  74 20 6e 65 78 74 20 62  |move past next b|
000008a0  69 74 0d 03 c0 1b 20 20  20 53 55 42 20 52 36 2c  |it....   SUB R6,|
000008b0  52 36 2c 52 31 2c 4c 53  4c 20 23 31 36 0d 03 ca  |R6,R1,LSL #16...|
000008c0  1b 20 20 20 53 55 42 20  52 37 2c 52 37 2c 52 33  |.   SUB R7,R7,R3|
000008d0  2c 4c 53 4c 20 23 31 36  0d 03 d4 40 20 20 20 41  |,LSL #16...@   A|
000008e0  44 44 20 52 33 2c 52 33  2c 52 31 2c 4c 53 52 20  |DD R3,R3,R1,LSR |
000008f0  23 64 25 20 20 20 20 20  20 20 20 3b 61 64 64 20  |#d%        ;add |
00000900  61 20 62 69 74 20 6f 66  20 68 69 67 68 65 72 20  |a bit of higher |
00000910  74 6f 20 6c 6f 77 65 72  0d 03 de 3e 20 20 20 53  |to lower...>   S|
00000920  55 42 20 52 31 2c 52 31  2c 52 31 2c 4c 53 52 20  |UB R1,R1,R1,LSR |
00000930  23 64 25 20 20 20 20 20  20 20 20 3b 77 69 70 65  |#d%        ;wipe|
00000940  20 74 68 61 74 20 62 69  74 20 66 72 6f 6d 20 68  | that bit from h|
00000950  69 67 68 65 72 2e 0d 03  e8 1b 20 20 20 41 44 44  |igher.....   ADD|
00000960  20 52 36 2c 52 36 2c 52  31 2c 4c 53 4c 20 23 31  | R6,R6,R1,LSL #1|
00000970  36 0d 03 f2 1b 20 20 20  41 44 44 20 52 37 2c 52  |6....   ADD R7,R|
00000980  37 2c 52 33 2c 4c 53 4c  20 23 31 36 0d 03 fc 10  |7,R3,LSL #16....|
00000990  20 20 20 4d 4f 56 20 52  33 2c 52 31 0d 04 06 0c  |   MOV R3,R1....|
000009a0  2e 73 70 6f 69 6e 74 32  0d 04 10 18 20 20 20 4d  |.spoint2....   M|
000009b0  4f 56 20 52 31 2c 52 36  2c 4c 53 4c 20 23 31 36  |OV R1,R6,LSL #16|
000009c0  0d 04 1a 18 20 20 20 4d  4f 56 20 52 31 2c 52 31  |....   MOV R1,R1|
000009d0  2c 4c 53 52 20 23 32 34  0d 04 24 3a 20 20 20 43  |,LSR #24..$:   C|
000009e0  4d 50 20 52 34 2c 23 74  6f 70 25 20 20 20 20 20  |MP R4,#top%     |
000009f0  20 20 20 20 20 20 20 20  20 20 3b 69 66 20 75 70  |          ;if up|
00000a00  70 65 72 20 62 79 74 65  20 69 73 20 62 69 67 2e  |per byte is big.|
00000a10  2e 2e 0d 04 2e 35 20 20  20 42 47 54 20 73 70 6f  |.....5   BGT spo|
00000a20  69 6e 74 33 20 20 20 20  20 20 20 20 20 20 20 20  |int3            |
00000a30  20 20 20 20 3b 6d 6f 76  65 20 70 61 73 74 20 6e  |    ;move past n|
00000a40  65 78 74 20 62 69 74 0d  04 38 42 20 20 20 43 4d  |ext bit..8B   CM|
00000a50  50 20 52 31 2c 23 62 6f  74 25 20 20 20 20 20 20  |P R1,#bot%      |
00000a60  20 20 20 20 20 20 20 20  20 3b 69 66 20 62 6c 6f  |         ;if blo|
00000a70  62 20 69 73 20 6e 6f 74  20 27 66 75 6c 6c 27 20  |b is not 'full' |
00000a80  65 6e 6f 75 67 68 2e 2e  2e 0d 04 42 35 20 20 20  |enough.....B5   |
00000a90  42 4c 45 20 73 70 6f 69  6e 74 33 20 20 20 20 20  |BLE spoint3     |
00000aa0  20 20 20 20 20 20 20 20  20 20 20 3b 6d 6f 76 65  |           ;move|
00000ab0  20 70 61 73 74 20 6e 65  78 74 20 62 69 74 0d 04  | past next bit..|
00000ac0  4c 1a 20 20 20 53 55 42  20 52 36 2c 52 36 2c 52  |L.   SUB R6,R6,R|
00000ad0  31 2c 4c 53 4c 20 23 38  0d 04 56 1a 20 20 20 53  |1,LSL #8..V.   S|
00000ae0  55 42 20 52 37 2c 52 37  2c 52 34 2c 4c 53 4c 20  |UB R7,R7,R4,LSL |
00000af0  23 38 0d 04 60 40 20 20  20 41 44 44 20 52 34 2c  |#8..`@   ADD R4,|
00000b00  52 34 2c 52 31 2c 4c 53  52 20 23 64 25 20 20 20  |R4,R1,LSR #d%   |
00000b10  20 20 20 20 20 3b 61 64  64 20 61 20 62 69 74 20  |     ;add a bit |
00000b20  6f 66 20 68 69 67 68 65  72 20 74 6f 20 6c 6f 77  |of higher to low|
00000b30  65 72 0d 04 6a 3e 20 20  20 53 55 42 20 52 31 2c  |er..j>   SUB R1,|
00000b40  52 31 2c 52 31 2c 4c 53  52 20 23 64 25 20 20 20  |R1,R1,LSR #d%   |
00000b50  20 20 20 20 20 3b 77 69  70 65 20 74 68 61 74 20  |     ;wipe that |
00000b60  62 69 74 20 66 72 6f 6d  20 68 69 67 68 65 72 2e  |bit from higher.|
00000b70  0d 04 74 1a 20 20 20 41  44 44 20 52 36 2c 52 36  |..t.   ADD R6,R6|
00000b80  2c 52 31 2c 4c 53 4c 20  23 38 0d 04 7e 1a 20 20  |,R1,LSL #8..~.  |
00000b90  20 41 44 44 20 52 37 2c  52 37 2c 52 34 2c 4c 53  | ADD R7,R7,R4,LS|
00000ba0  4c 20 23 38 0d 04 88 10  20 20 20 4d 4f 56 20 52  |L #8....   MOV R|
00000bb0  34 2c 52 31 0d 04 92 0c  2e 73 70 6f 69 6e 74 33  |4,R1.....spoint3|
00000bc0  0d 04 9c 13 20 20 20 80  20 52 31 2c 52 36 2c 23  |....   . R1,R6,#|
00000bd0  26 46 46 0d 04 a6 3a 20  20 20 43 4d 50 20 52 35  |&FF...:   CMP R5|
00000be0  2c 23 74 6f 70 25 20 20  20 20 20 20 20 20 20 20  |,#top%          |
00000bf0  20 20 20 20 20 3b 69 66  20 75 70 70 65 72 20 62  |     ;if upper b|
00000c00  79 74 65 20 69 73 20 62  69 67 2e 2e 2e 0d 04 b0  |yte is big......|
00000c10  35 20 20 20 42 47 54 20  73 70 6f 69 6e 74 34 20  |5   BGT spoint4 |
00000c20  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 3b  |               ;|
00000c30  6d 6f 76 65 20 70 61 73  74 20 6e 65 78 74 20 62  |move past next b|
00000c40  69 74 0d 04 ba 42 20 20  20 43 4d 50 20 52 31 2c  |it...B   CMP R1,|
00000c50  23 62 6f 74 25 20 20 20  20 20 20 20 20 20 20 20  |#bot%           |
00000c60  20 20 20 20 3b 69 66 20  62 6c 6f 62 20 69 73 20  |    ;if blob is |
00000c70  6e 6f 74 20 27 66 75 6c  6c 27 20 65 6e 6f 75 67  |not 'full' enoug|
00000c80  68 2e 2e 2e 0d 04 c4 35  20 20 20 42 4c 45 20 73  |h......5   BLE s|
00000c90  70 6f 69 6e 74 34 20 20  20 20 20 20 20 20 20 20  |point4          |
00000ca0  20 20 20 20 20 20 3b 6d  6f 76 65 20 70 61 73 74  |      ;move past|
00000cb0  20 6e 65 78 74 20 62 69  74 0d 04 ce 13 20 20 20  | next bit....   |
00000cc0  53 55 42 20 52 36 2c 52  36 2c 52 31 0d 04 d8 13  |SUB R6,R6,R1....|
00000cd0  20 20 20 53 55 42 20 52  37 2c 52 37 2c 52 35 0d  |   SUB R7,R7,R5.|
00000ce0  04 e2 40 20 20 20 41 44  44 20 52 35 2c 52 35 2c  |..@   ADD R5,R5,|
00000cf0  52 31 2c 4c 53 52 20 23  64 25 20 20 20 20 20 20  |R1,LSR #d%      |
00000d00  20 20 3b 61 64 64 20 61  20 62 69 74 20 6f 66 20  |  ;add a bit of |
00000d10  68 69 67 68 65 72 20 74  6f 20 6c 6f 77 65 72 0d  |higher to lower.|
00000d20  04 ec 3e 20 20 20 53 55  42 20 52 31 2c 52 31 2c  |..>   SUB R1,R1,|
00000d30  52 31 2c 4c 53 52 20 23  64 25 20 20 20 20 20 20  |R1,LSR #d%      |
00000d40  20 20 3b 77 69 70 65 20  74 68 61 74 20 62 69 74  |  ;wipe that bit|
00000d50  20 66 72 6f 6d 20 68 69  67 68 65 72 2e 0d 04 f6  | from higher....|
00000d60  13 20 20 20 41 44 44 20  52 36 2c 52 36 2c 52 31  |.   ADD R6,R6,R1|
00000d70  0d 05 00 13 20 20 20 41  44 44 20 52 37 2c 52 37  |....   ADD R7,R7|
00000d80  2c 52 35 0d 05 0a 10 20  20 20 4d 4f 56 20 52 35  |,R5....   MOV R5|
00000d90  2c 52 31 0d 05 14 0c 2e  73 70 6f 69 6e 74 34 0d  |,R1.....spoint4.|
00000da0  05 1e 31 20 20 20 53 54  52 20 52 37 2c 5b 52 31  |..1   STR R7,[R1|
00000db0  32 2c 52 39 5d 20 20 20  20 20 20 20 20 20 20 3b  |2,R9]          ;|
00000dc0  73 74 6f 72 65 20 62 79  74 65 73 20 62 61 63 6b  |store bytes back|
00000dd0  0d 05 28 11 20 20 20 4d  4f 56 20 52 39 2c 52 31  |..(.   MOV R9,R1|
00000de0  31 0d 05 32 3c 20 20 20  43 4d 50 20 52 31 31 2c  |1..2<   CMP R11,|
00000df0  23 34 38 30 20 20 20 20  20 20 20 20 20 20 20 20  |#480            |
00000e00  20 20 20 3b 69 66 20 79  70 6f 73 20 69 73 20 6e  |   ;if ypos is n|
00000e10  6f 74 20 6f 66 66 20 74  6f 70 2e 2e 2e 0d 05 3c  |ot off top.....<|
00000e20  2c 20 20 20 42 47 54 20  73 6c 6f 6f 70 32 20 20  |,   BGT sloop2  |
00000e30  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 3b  |               ;|
00000e40  6c 6f 6f 70 20 62 61 63  6b 0d 05 46 3d 20 20 20  |loop back..F=   |
00000e50  43 4d 50 20 52 31 30 2c  23 34 38 30 20 20 20 20  |CMP R10,#480    |
00000e60  20 20 20 20 20 20 20 20  20 20 20 3b 69 66 20 78  |           ;if x|
00000e70  70 6f 73 20 69 73 20 6e  6f 74 20 6f 66 66 20 73  |pos is not off s|
00000e80  69 64 65 2e 2e 2e 0d 05  50 2c 20 20 20 42 4c 54  |ide.....P,   BLT|
00000e90  20 73 6c 6f 6f 70 31 20  20 20 20 20 20 20 20 20  | sloop1         |
00000ea0  20 20 20 20 20 20 20 20  3b 6c 6f 6f 70 20 62 61  |        ;loop ba|
00000eb0  63 6b 0d 05 5a 3b 3b 6e  65 78 74 20 62 69 74 20  |ck..Z;;next bit |
00000ec0  77 69 6c 6c 20 70 6c 6f  74 20 61 20 62 6c 61 63  |will plot a blac|
00000ed0  6b 20 6c 69 6e 65 20 61  74 20 62 6f 74 74 6f 6d  |k line at bottom|
00000ee0  20 6f 66 20 73 63 72 65  65 6e 20 73 6f 0d 05 64  | of screen so..d|
00000ef0  25 3b 74 68 65 20 67 6f  6f 20 63 61 6e 20 73 6c  |%;the goo can sl|
00000f00  69 64 65 20 6f 66 66 20  74 68 65 20 62 6f 74 74  |ide off the bott|
00000f10  6f 6d 0d 05 6e 24 20 20  20 4d 4f 56 20 52 30 2c  |om..n$   MOV R0,|
00000f20  23 30 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |#0              |
00000f30  20 20 20 20 3b e6 0d 05  78 14 20 20 20 41 44 44  |    ;...x.   ADD|
00000f40  20 52 38 2c 52 38 2c 52  31 32 0d 05 82 16 20 20  | R8,R8,R12....  |
00000f50  20 41 44 44 20 52 31 31  2c 52 38 2c 23 34 38 30  | ADD R11,R8,#480|
00000f60  0d 05 8c 3f 20 20 20 53  55 42 20 52 38 2c 52 38  |...?   SUB R8,R8|
00000f70  2c 23 34 20 20 20 20 20  20 20 20 20 20 20 20 20  |,#4             |
00000f80  20 20 3b 73 6f 20 69 74  20 70 6c 6f 74 73 20 31  |  ;so it plots 1|
00000f90  73 74 20 34 20 62 79 74  65 73 20 74 6f 6f 2e 0d  |st 4 bytes too..|
00000fa0  05 96 0d 2e 6c 69 6e 65  6c 6f 6f 70 0d 05 a0 45  |....lineloop...E|
00000fb0  20 20 20 53 54 52 20 52  30 2c 5b 52 38 2c 23 34  |   STR R0,[R8,#4|
00000fc0  5d 21 20 20 20 20 20 20  20 20 20 20 20 20 3b 70  |]!            ;p|
00000fd0  6c 6f 74 20 34 20 62 79  74 65 73 20 61 6e 64 20  |lot 4 bytes and |
00000fe0  69 6e 63 72 65 6d 65 6e  74 20 63 6f 75 6e 74 65  |increment counte|
00000ff0  72 0d 05 aa 3d 20 20 20  43 4d 50 20 52 38 2c 52  |r...=   CMP R8,R|
00001000  31 31 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |11              |
00001010  20 20 20 3b 69 66 20 63  6f 75 6e 74 65 72 20 69  |   ;if counter i|
00001020  73 20 6f 6e 20 73 63 72  65 65 6e 2e 2e 2e 0d 05  |s on screen.....|
00001030  b4 2c 20 20 20 42 4c 54  20 6c 69 6e 65 6c 6f 6f  |.,   BLT lineloo|
00001040  70 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |p               |
00001050  3b 6c 6f 6f 70 20 62 61  63 6b 0d 05 be 3a 3b 6e  |;loop back...:;n|
00001060  65 78 74 20 62 69 74 20  70 6c 6f 74 73 20 6c 69  |ext bit plots li|
00001070  6e 65 20 61 74 20 74 6f  70 20 73 6f 20 67 6f 6f  |ne at top so goo|
00001080  20 69 73 20 63 6c 65 61  72 65 64 20 75 70 20 61  | is cleared up a|
00001090  66 74 65 72 0d 05 c8 17  20 20 20 41 44 44 20 52  |fter....   ADD R|
000010a0  31 31 2c 52 31 32 2c 23  34 38 30 0d 05 d2 15 20  |11,R12,#480.... |
000010b0  20 20 53 55 42 20 52 31  32 2c 52 31 32 2c 23 34  |  SUB R12,R12,#4|
000010c0  0d 05 dc 0e 2e 6c 69 6e  65 6c 6f 6f 70 32 0d 05  |.....lineloop2..|
000010d0  e6 17 20 20 20 53 54 52  20 52 30 2c 5b 52 31 32  |..   STR R0,[R12|
000010e0  2c 23 34 5d 21 0d 05 f0  12 20 20 20 43 4d 50 20  |,#4]!....   CMP |
000010f0  52 31 32 2c 52 31 31 0d  05 fa 14 20 20 20 42 4c  |R12,R11....   BL|
00001100  54 20 6c 69 6e 65 6c 6f  6f 70 32 0d 06 04 09 2e  |T lineloop2.....|
00001110  65 78 69 74 0d 06 0e 27  20 20 20 4d 4f 56 20 70  |exit...'   MOV p|
00001120  63 2c 6c 69 6e 6b 20 20  20 20 20 20 20 20 20 20  |c,link          |
00001130  20 20 20 20 20 20 3b 62  79 65 21 0d 06 18 04 0d  |      ;bye!.....|
00001140  06 22 04 0d 06 2c 0b 2e  73 63 72 65 65 6e 0d 06  |."...,..screen..|
00001150  36 14 20 20 20 45 51 55  44 20 20 20 20 20 20 31  |6.   EQUD      1|
00001160  34 38 0d 06 40 13 20 20  20 45 51 55 44 20 20 20  |48..@.   EQUD   |
00001170  20 20 20 2d 31 0d 06 4a  06 5d ed 0d 06 54 2a c8  |   -1..J.]...T*.|
00001180  99 20 22 4f 53 5f 52 65  61 64 56 64 75 56 61 72  |. "OS_ReadVduVar|
00001190  69 61 62 6c 65 73 22 2c  73 63 72 65 65 6e 2c 73  |iables",screen,s|
000011a0  63 72 65 65 6e 0d 06 5e  05 e1 0d 06 68 04 0d 06  |creen..^....h...|
000011b0  72 04 0d 06 7c 04 0d 06  86 12 dd 20 f2 6d 6f 64  |r...|...... .mod|
000011c0  65 28 6d 6f 64 65 24 29  0d 06 90 17 ea 20 63 24  |e(mode$)..... c$|
000011d0  2c 65 78 2c 65 79 2c 6d  6f 64 65 2c 65 6e 64 0d  |,ex,ey,mode,end.|
000011e0  06 9a 0d de 20 6d 6f 64  65 20 36 34 0d 06 a4 0f  |.... mode 64....|
000011f0  65 6e 64 3d 6d 6f 64 65  2b 32 30 0d 06 ae 0b 21  |end=mode+20....!|
00001200  6d 6f 64 65 3d 31 0d 06  b8 1d 6d 6f 64 65 21 34  |mode=1....mode!4|
00001210  3d bb a4 5f 6d 28 6d 6f  64 65 24 2c 22 58 22 2c  |=.._m(mode$,"X",|
00001220  22 22 29 0d 06 c2 1d 6d  6f 64 65 21 38 3d bb a4  |"")....mode!8=..|
00001230  5f 6d 28 6d 6f 64 65 24  2c 22 59 22 2c 22 22 29  |_m(mode$,"Y","")|
00001240  0d 06 cc 19 63 24 3d a4  5f 6d 28 6d 6f 64 65 24  |....c$=._m(mode$|
00001250  2c 22 43 22 2c 22 2a 22  29 0d 06 d6 0e e7 20 63  |,"C","*")..... c|
00001260  24 3d 22 2a 22 20 8c 0d  06 e0 19 20 63 24 3d a4  |$="*" ..... c$=.|
00001270  5f 6d 28 6d 6f 64 65 24  2c 22 47 22 2c 22 22 29  |_m(mode$,"G","")|
00001280  0d 06 ea 27 20 e7 20 63  24 3d 22 32 35 36 22 20  |...' . c$="256" |
00001290  21 65 6e 64 3d 33 3a 65  6e 64 21 34 3d 32 35 35  |!end=3:end!4=255|
000012a0  3a 65 6e 64 2b 3d 38 0d  06 f4 05 cd 0d 06 fe 15  |:end+=8.........|
000012b0  6d 6f 64 65 21 31 32 3d  a4 5f 62 70 70 28 63 24  |mode!12=._bpp(c$|
000012c0  29 0d 07 08 20 6d 6f 64  65 21 31 36 3d bb a4 5f  |)... mode!16=.._|
000012d0  6d 28 6d 6f 64 65 24 2c  22 46 22 2c 22 2d 31 22  |m(mode$,"F","-1"|
000012e0  29 0d 07 12 1c 65 78 3d  bb a4 5f 6d 28 6d 6f 64  |)....ex=.._m(mod|
000012f0  65 24 2c 22 45 58 22 2c  22 2d 31 22 29 0d 07 1c  |e$,"EX","-1")...|
00001300  23 e7 20 65 78 3c 3e 2d  31 20 21 65 6e 64 3d 34  |#. ex<>-1 !end=4|
00001310  3a 65 6e 64 21 34 3d 65  78 3a 65 6e 64 2b 3d 38  |:end!4=ex:end+=8|
00001320  0d 07 26 1c 65 79 3d bb  a4 5f 6d 28 6d 6f 64 65  |..&.ey=.._m(mode|
00001330  24 2c 22 45 59 22 2c 22  2d 31 22 29 0d 07 30 23  |$,"EY","-1")..0#|
00001340  e7 20 65 79 3c 3e 2d 31  20 21 65 6e 64 3d 35 3a  |. ey<>-1 !end=5:|
00001350  65 6e 64 21 34 3d 65 79  3a 65 6e 64 2b 3d 38 0d  |end!4=ey:end+=8.|
00001360  07 3a 0b 21 65 6e 64 3d  2d 31 0d 07 44 0a eb 20  |.:.!end=-1..D.. |
00001370  6d 6f 64 65 0d 07 4e 05  e1 0d 07 58 04 0d 07 62  |mode..N....X...b|
00001380  13 dd 20 a4 5f 6d 28 73  24 2c 70 24 2c 64 24 29  |.. ._m(s$,p$,d$)|
00001390  0d 07 6c 09 ea 20 69 2c  6a 0d 07 76 0d 69 3d a7  |..l.. i,j..v.i=.|
000013a0  73 24 2c 70 24 29 0d 07  80 25 e7 20 69 3c 31 20  |s$,p$)...%. i<1 |
000013b0  80 20 64 24 3d 22 22 20  85 20 34 39 30 2c 22 4d  |. d$="" . 490,"M|
000013c0  69 73 73 69 6e 67 20 22  2b 70 24 0d 07 8a 0f e7  |issing "+p$.....|
000013d0  20 69 3c 31 20 8c 20 3d  64 24 0d 07 94 16 6a 3d  | i<1 . =d$....j=|
000013e0  a7 73 24 2b 22 20 22 2c  22 20 22 2c 69 2b 31 29  |.s$+" "," ",i+1)|
000013f0  0d 07 9e 13 3d c1 73 24  2c 69 2b 31 2c 6a 2d 69  |....=.s$,i+1,j-i|
00001400  2d 31 29 0d 07 a8 04 0d  07 b2 0f dd 20 a4 5f 62  |-1)......... ._b|
00001410  70 70 28 6e 24 29 0d 07  bc 0b c8 8e 20 6e 24 20  |pp(n$)...... n$ |
00001420  ca 0d 07 c6 0d 20 c9 20  22 32 22 3a 3d 30 0d 07  |..... . "2":=0..|
00001430  d0 0d 20 c9 20 22 34 22  3a 3d 31 0d 07 da 0e 20  |.. . "4":=1.... |
00001440  c9 20 22 31 36 22 3a 3d  32 0d 07 e4 0f 20 c9 20  |. "16":=2.... . |
00001450  22 32 35 36 22 3a 3d 33  0d 07 ee 21 20 c9 20 22  |"256":=3...! . "|
00001460  33 32 54 22 2c 22 33 32  74 22 2c 22 33 32 4b 22  |32T","32t","32K"|
00001470  2c 22 33 32 6b 22 3a 3d  34 0d 07 f8 15 20 c9 20  |,"32k":=4.... . |
00001480  22 31 36 4d 22 2c 22 31  36 6d 22 3a 3d 35 0d 08  |"16M","16m":=5..|
00001490  02 21 20 7f 3a 20 85 20  34 39 30 2c 22 42 61 64  |.! .: . 490,"Bad|
000014a0  20 70 61 72 61 6d 65 74  65 72 20 22 2b 6e 24 0d  | parameter "+n$.|
000014b0  08 0c 05 cb 0d ff                                 |......|
000014b6