Home » Archimedes archive » Acorn User » AU 1993-10.adf » !StarInfo_StarInfo » Disint

Disint

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 1993-10.adf » !StarInfo_StarInfo
Filename: Disint
Read OK:
File size: 0D44 bytes
Load address: 0000
Exec address: 0000
File contents
   10REM     >Disint
   20REM By  Mark Hobson
   30REM For 32-bit machines
   40REM (c) BAU October 1993
   50:
   60MODE 15
   70OFF
   80SYS "Hourglass_On"
   90PROCass
  100PROCinit
  110SYS "Hourglass_Off"
  120MODE 13
  130OFF
  140ON ERROR IF ERR<>17 MODE0:REPORT:PRINT" at line ";ERL:END ELSE PROCend
  150CALL swop
  160!scr1=!screen
  170CALL swop
  180!scr2=!screen
  190CLS
  200FOR i=0 TO 200
  210 GCOL RND(63) TINT (RND(3)+1)*64
  220 CIRCLE FILL RND(1279),RND(1023),RND(200)
  230NEXT
  240PROCtext("SCREEN FADING ROUTINE",700,63,3)
  250PROCtext("by Mark Hobson",650,63,1)
  260PROCtext("Press any key to fade",450,42,3)
  270PROCtext("Press ESCAPE to exit",400,42,2)
  280CALL change
  290CLS
  300FOR i=0 TO 200
  310 GCOL RND(63) TINT (RND(3)+1)*64
  320 RECTANGLE FILL RND(1279),RND(1023),RND(400),RND(400)
  330NEXT
  340PROCtext("Works by using two screen banks",700,63,3)
  350PROCtext("and swapping the contents 'randomly'",634,63,1)
  360PROCtext("Press any key to fade",450,42,3)
  370PROCtext("Press ESCAPE to exit",400,42,2)
  380REPEAT
  390 a=INKEY(500)
  400 CALL change
  410UNTIL INKEY-113
  420PROCend
  430END
  440:
  450DEF PROCass
  460len%=1024*8
  470speed=32
  480DIM code len%
  490FOR pass=8 TO 10 STEP 2
  500P%=code
  510L%=code+len%
  520[OPT pass
  530.change    STMFD  R13!,{R14}
  540           ADR    R4,table
  550           MOV    R5,#speed
  560.main_loop MOV    R2,#63
  570.y_loop    MOV    R3,#79
  580.x_loop    ADD    R6,R2,R3,LSL#6
  590           LDRB   R7,[R4,R6]
  600           CMP    R7,R5
  610           BNE    skip
  620           ADR    R8,offsets
  630           LDR    R0,scr1
  640           LDR    R1,scr2
  650           ADD    R7,R3,R2,LSL#6
  660           ADD    R7,R7,R2,LSL#8
  670           ADD    R0,R0,R7
  680           ADD    R1,R1,R7
  690]
  700FOR loop=1 TO 4
  710[OPT pass
  720           LDMIA  R8!,{R9-R12}
  730           LDRB   R7,[R0,R9]
  740           LDRB   R14,[R1,R9]
  750           STRB   R7,[R1,R9]
  760           STRB   R14,[R0,R9]
  770           LDRB   R7,[R0,R10]
  780           LDRB   R14,[R1,R10]
  790           STRB   R7,[R1,R10]
  800           STRB   R14,[R0,R10]
  810           LDRB   R7,[R0,R11]
  820           LDRB   R14,[R1,R11]
  830           STRB   R7,[R1,R11]
  840           STRB   R14,[R0,R11]
  850           LDRB   R7,[R0,R12]
  860           LDRB   R14,[R1,R12]
  870           STRB   R7,[R1,R12]
  880           STRB   R14,[R0,R12]
  890]
  900NEXT
  910[OPT pass
  920.skip      SUBS   R3,R3,#1
  930           BPL    x_loop
  940           SUBS   R2,R2,#1
  950           BPL    y_loop
  960           SUBS   R5,R5,#1
  970           BNE    main_loop
  980           LDMFD  R13!,{PC}
  990
 1000.scr1      EQUD   0
 1010.scr2      EQUD   0
 1020
 1030.offsets   FNarray(64)
 1040.table     FNarray(64*80+4)
 1050
 1060.swop      STMFD  R13!,{R14}
 1070           LDR    R4,bank
 1080           RSB    R4,R4,#3
 1090           STR    R4,bank
 1100           MOV    R0,#112
 1110           MOV    R1,R4
 1120           SWI    "OS_Byte"
 1130           MOV    R0,#113
 1140           RSB    R1,R4,#3
 1150           SWI    "OS_Byte"
 1160           ADR    R0,vduin
 1170           ADR    R1,screen
 1180           SWI    "OS_ReadVduVariables"
 1190           LDMFD  R13!,{PC}
 1200
 1210.bank      EQUD   1
 1220.vduin     EQUD   148
 1230           EQUD   -1
 1240.screen    EQUD   0
 1250]
 1260NEXT
 1270FOR i%=0 TO 3
 1280 FOR j%=0 TO 3
 1290  offsets!(4*i%+16*j%)=80*i%+320*64*j%
 1300 NEXT
 1310NEXT
 1320ENDPROC
 1330:
 1340DEF FNarray(b%)
 1350P%+=b%
 1360=0
 1370:
 1380DEF PROCinit
 1390FOR i=0 TO 64*80
 1400 table?i=RND(speed)
 1410NEXT
 1420ENDPROC
 1430:
 1440DEF PROCtext(a$,y%,c%,t%)
 1450x%=640-((LENa$*32)/2)
 1460VDU 5
 1470GCOL 0 TINT 0
 1480FOR x=-4 TO 4 STEP 4
 1490 FOR y=-4 TO 4 STEP 4
 1500  MOVE x%+x,y%+y
 1510  PRINTa$
 1520 NEXT
 1530NEXT
 1540GCOL c% TINT t%*64
 1550MOVE x%,y%
 1560PRINTa$
 1570VDU 4
 1580OFF
 1590ENDPROC
 1600:
 1610DEF PROCend
 1620MODE 0
 1630END
 1640ENDPROC
�     >Disint
� By  Mark Hobson
� For 32-bit machines
(� (c) BAU October 1993
2:
<� 15
F�
Pș "Hourglass_On"
Z�ass
d	�init
nș "Hourglass_Off"
x� 13
��
�,� � � �<>17 �0:�:�" at line ";�:� � �end
�
� swop
�!scr1=!screen
�
� swop
�!scr2=!screen
��
�� i=0 � 200
� � �(63) Ȝ (�(3)+1)*64
�! ȏ Ȑ �(1279),�(1023),�(200)
��
�+�text("SCREEN FADING ROUTINE",700,63,3)
�$�text("by Mark Hobson",650,63,1)
+�text("Press any key to fade",450,42,3)
*�text("Press ESCAPE to exit",400,42,2)
� change
"�
,� i=0 � 200
6 � �(63) Ȝ (�(3)+1)*64
@( ȓ Ȑ �(1279),�(1023),�(400),�(400)
J�
T5�text("Works by using two screen banks",700,63,3)
^:�text("and swapping the contents 'randomly'",634,63,1)
h+�text("Press any key to fade",450,42,3)
r*�text("Press ESCAPE to exit",400,42,2)
|�
�
 a=�(500)
�
 � change
�� �-113
��end
��
�:
�
� �ass
�len%=1024*8
�speed=32
�� code len%
�� pass=8 � 10 � 2
�P%=code
�L%=code+len%

[OPT pass
 .change    STMFD  R13!,{R14}
           ADR    R4,table
&           MOV    R5,#speed
0.main_loop MOV    R2,#63
:.y_loop    MOV    R3,#79
D$.x_loop    ADD    R6,R2,R3,LSL#6
N            LDRB   R7,[R4,R6]
X           CMP    R7,R5
b           BNE    skip
l            ADR    R8,offsets
v           LDR    R0,scr1
�           LDR    R1,scr2
�$           ADD    R7,R3,R2,LSL#6
�$           ADD    R7,R7,R2,LSL#8
�           ADD    R0,R0,R7
�           ADD    R1,R1,R7
�]
�� loop=1 � 4
�
[OPT pass
�"           LDMIA  R8!,{R9-R12}
�            LDRB   R7,[R0,R9]
�!           LDRB   R14,[R1,R9]
�            STRB   R7,[R1,R9]
�!           STRB   R14,[R0,R9]
!           LDRB   R7,[R0,R10]
"           LDRB   R14,[R1,R10]
!           STRB   R7,[R1,R10]
 "           STRB   R14,[R0,R10]
*!           LDRB   R7,[R0,R11]
4"           LDRB   R14,[R1,R11]
>!           STRB   R7,[R1,R11]
H"           STRB   R14,[R0,R11]
R!           LDRB   R7,[R0,R12]
\"           LDRB   R14,[R1,R12]
f!           STRB   R7,[R1,R12]
p"           STRB   R14,[R0,R12]
z]
��
�
[OPT pass
�.skip      SUBS   R3,R3,#1
�           BPL    x_loop
�           SUBS   R2,R2,#1
�           BPL    y_loop
�           SUBS   R5,R5,#1
�           BNE    main_loop
�           LDMFD  R13!,{PC}
�
�.scr1      EQUD   0
�.scr2      EQUD   0
�
.offsets   �array(64)
.table     �array(64*80+4)

$ .swop      STMFD  R13!,{R14}
.           LDR    R4,bank
8           RSB    R4,R4,#3
B           STR    R4,bank
L           MOV    R0,#112
V           MOV    R1,R4
`           SWI    "OS_Byte"
j           MOV    R0,#113
t           RSB    R1,R4,#3
~           SWI    "OS_Byte"
�           ADR    R0,vduin
�           ADR    R1,screen
�+           SWI    "OS_ReadVduVariables"
�           LDMFD  R13!,{PC}
�
�.bank      EQUD   1
�.vduin     EQUD   148
�           EQUD   -1
�.screen    EQUD   0
�]
��
�� i%=0 � 3
 � j%=0 � 3

*  offsets!(4*i%+16*j%)=80*i%+320*64*j%
 �
�
(�
2:
<� �array(b%)
F
P%+=b%
P=0
Z:
d� �init
n� i=0 � 64*80
x table?i=�(speed)
��
��
�:
�� �text(a$,y%,c%,t%)
�x%=640-((�a$*32)/2)
�� 5
�� 0 Ȝ 0
�� x=-4 � 4 � 4
� � y=-4 � 4 � 4
�  � x%+x,y%+y
�	  �a$
� �
��
� c% Ȝ t%*64
� x%,y%
�a$
"� 4
,�
6�
@:
J
� �end
T� 0
^�
h�
�
00000000  0d 00 0a 11 f4 20 20 20  20 20 3e 44 69 73 69 6e  |.....     >Disin|
00000010  74 0d 00 14 15 f4 20 42  79 20 20 4d 61 72 6b 20  |t..... By  Mark |
00000020  48 6f 62 73 6f 6e 0d 00  1e 19 f4 20 46 6f 72 20  |Hobson..... For |
00000030  33 32 2d 62 69 74 20 6d  61 63 68 69 6e 65 73 0d  |32-bit machines.|
00000040  00 28 1a f4 20 28 63 29  20 42 41 55 20 4f 63 74  |.(.. (c) BAU Oct|
00000050  6f 62 65 72 20 31 39 39  33 0d 00 32 05 3a 0d 00  |ober 1993..2.:..|
00000060  3c 08 eb 20 31 35 0d 00  46 05 87 0d 00 50 15 c8  |<.. 15..F....P..|
00000070  99 20 22 48 6f 75 72 67  6c 61 73 73 5f 4f 6e 22  |. "Hourglass_On"|
00000080  0d 00 5a 08 f2 61 73 73  0d 00 64 09 f2 69 6e 69  |..Z..ass..d..ini|
00000090  74 0d 00 6e 16 c8 99 20  22 48 6f 75 72 67 6c 61  |t..n... "Hourgla|
000000a0  73 73 5f 4f 66 66 22 0d  00 78 08 eb 20 31 33 0d  |ss_Off"..x.. 13.|
000000b0  00 82 05 87 0d 00 8c 2c  ee 20 85 20 e7 20 9f 3c  |.......,. . . .<|
000000c0  3e 31 37 20 eb 30 3a f6  3a f1 22 20 61 74 20 6c  |>17 .0:.:." at l|
000000d0  69 6e 65 20 22 3b 9e 3a  e0 20 8b 20 f2 65 6e 64  |ine ";.:. . .end|
000000e0  0d 00 96 0a d6 20 73 77  6f 70 0d 00 a0 11 21 73  |..... swop....!s|
000000f0  63 72 31 3d 21 73 63 72  65 65 6e 0d 00 aa 0a d6  |cr1=!screen.....|
00000100  20 73 77 6f 70 0d 00 b4  11 21 73 63 72 32 3d 21  | swop....!scr2=!|
00000110  73 63 72 65 65 6e 0d 00  be 05 db 0d 00 c8 0f e3  |screen..........|
00000120  20 69 3d 30 20 b8 20 32  30 30 0d 00 d2 1b 20 e6  | i=0 . 200.... .|
00000130  20 b3 28 36 33 29 20 c8  9c 20 28 b3 28 33 29 2b  | .(63) .. (.(3)+|
00000140  31 29 2a 36 34 0d 00 dc  21 20 c8 8f 20 c8 90 20  |1)*64...! .. .. |
00000150  b3 28 31 32 37 39 29 2c  b3 28 31 30 32 33 29 2c  |.(1279),.(1023),|
00000160  b3 28 32 30 30 29 0d 00  e6 05 ed 0d 00 f0 2b f2  |.(200)........+.|
00000170  74 65 78 74 28 22 53 43  52 45 45 4e 20 46 41 44  |text("SCREEN FAD|
00000180  49 4e 47 20 52 4f 55 54  49 4e 45 22 2c 37 30 30  |ING ROUTINE",700|
00000190  2c 36 33 2c 33 29 0d 00  fa 24 f2 74 65 78 74 28  |,63,3)...$.text(|
000001a0  22 62 79 20 4d 61 72 6b  20 48 6f 62 73 6f 6e 22  |"by Mark Hobson"|
000001b0  2c 36 35 30 2c 36 33 2c  31 29 0d 01 04 2b f2 74  |,650,63,1)...+.t|
000001c0  65 78 74 28 22 50 72 65  73 73 20 61 6e 79 20 6b  |ext("Press any k|
000001d0  65 79 20 74 6f 20 66 61  64 65 22 2c 34 35 30 2c  |ey to fade",450,|
000001e0  34 32 2c 33 29 0d 01 0e  2a f2 74 65 78 74 28 22  |42,3)...*.text("|
000001f0  50 72 65 73 73 20 45 53  43 41 50 45 20 74 6f 20  |Press ESCAPE to |
00000200  65 78 69 74 22 2c 34 30  30 2c 34 32 2c 32 29 0d  |exit",400,42,2).|
00000210  01 18 0c d6 20 63 68 61  6e 67 65 0d 01 22 05 db  |.... change.."..|
00000220  0d 01 2c 0f e3 20 69 3d  30 20 b8 20 32 30 30 0d  |..,.. i=0 . 200.|
00000230  01 36 1b 20 e6 20 b3 28  36 33 29 20 c8 9c 20 28  |.6. . .(63) .. (|
00000240  b3 28 33 29 2b 31 29 2a  36 34 0d 01 40 28 20 c8  |.(3)+1)*64..@( .|
00000250  93 20 c8 90 20 b3 28 31  32 37 39 29 2c b3 28 31  |. .. .(1279),.(1|
00000260  30 32 33 29 2c b3 28 34  30 30 29 2c b3 28 34 30  |023),.(400),.(40|
00000270  30 29 0d 01 4a 05 ed 0d  01 54 35 f2 74 65 78 74  |0)..J....T5.text|
00000280  28 22 57 6f 72 6b 73 20  62 79 20 75 73 69 6e 67  |("Works by using|
00000290  20 74 77 6f 20 73 63 72  65 65 6e 20 62 61 6e 6b  | two screen bank|
000002a0  73 22 2c 37 30 30 2c 36  33 2c 33 29 0d 01 5e 3a  |s",700,63,3)..^:|
000002b0  f2 74 65 78 74 28 22 61  6e 64 20 73 77 61 70 70  |.text("and swapp|
000002c0  69 6e 67 20 74 68 65 20  63 6f 6e 74 65 6e 74 73  |ing the contents|
000002d0  20 27 72 61 6e 64 6f 6d  6c 79 27 22 2c 36 33 34  | 'randomly'",634|
000002e0  2c 36 33 2c 31 29 0d 01  68 2b f2 74 65 78 74 28  |,63,1)..h+.text(|
000002f0  22 50 72 65 73 73 20 61  6e 79 20 6b 65 79 20 74  |"Press any key t|
00000300  6f 20 66 61 64 65 22 2c  34 35 30 2c 34 32 2c 33  |o fade",450,42,3|
00000310  29 0d 01 72 2a f2 74 65  78 74 28 22 50 72 65 73  |)..r*.text("Pres|
00000320  73 20 45 53 43 41 50 45  20 74 6f 20 65 78 69 74  |s ESCAPE to exit|
00000330  22 2c 34 30 30 2c 34 32  2c 32 29 0d 01 7c 05 f5  |",400,42,2)..|..|
00000340  0d 01 86 0d 20 61 3d a6  28 35 30 30 29 0d 01 90  |.... a=.(500)...|
00000350  0d 20 d6 20 63 68 61 6e  67 65 0d 01 9a 0b fd 20  |. . change..... |
00000360  a6 2d 31 31 33 0d 01 a4  08 f2 65 6e 64 0d 01 ae  |.-113.....end...|
00000370  05 e0 0d 01 b8 05 3a 0d  01 c2 0a dd 20 f2 61 73  |......:..... .as|
00000380  73 0d 01 cc 0f 6c 65 6e  25 3d 31 30 32 34 2a 38  |s....len%=1024*8|
00000390  0d 01 d6 0c 73 70 65 65  64 3d 33 32 0d 01 e0 0f  |....speed=32....|
000003a0  de 20 63 6f 64 65 20 6c  65 6e 25 0d 01 ea 15 e3  |. code len%.....|
000003b0  20 70 61 73 73 3d 38 20  b8 20 31 30 20 88 20 32  | pass=8 . 10 . 2|
000003c0  0d 01 f4 0b 50 25 3d 63  6f 64 65 0d 01 fe 10 4c  |....P%=code....L|
000003d0  25 3d 63 6f 64 65 2b 6c  65 6e 25 0d 02 08 0d 5b  |%=code+len%....[|
000003e0  4f 50 54 20 70 61 73 73  0d 02 12 20 2e 63 68 61  |OPT pass... .cha|
000003f0  6e 67 65 20 20 20 20 53  54 4d 46 44 20 20 52 31  |nge    STMFD  R1|
00000400  33 21 2c 7b 52 31 34 7d  0d 02 1c 1e 20 20 20 20  |3!,{R14}....    |
00000410  20 20 20 20 20 20 20 41  44 52 20 20 20 20 52 34  |       ADR    R4|
00000420  2c 74 61 62 6c 65 0d 02  26 1f 20 20 20 20 20 20  |,table..&.      |
00000430  20 20 20 20 20 4d 4f 56  20 20 20 20 52 35 2c 23  |     MOV    R5,#|
00000440  73 70 65 65 64 0d 02 30  1c 2e 6d 61 69 6e 5f 6c  |speed..0..main_l|
00000450  6f 6f 70 20 4d 4f 56 20  20 20 20 52 32 2c 23 36  |oop MOV    R2,#6|
00000460  33 0d 02 3a 1c 2e 79 5f  6c 6f 6f 70 20 20 20 20  |3..:..y_loop    |
00000470  4d 4f 56 20 20 20 20 52  33 2c 23 37 39 0d 02 44  |MOV    R3,#79..D|
00000480  24 2e 78 5f 6c 6f 6f 70  20 20 20 20 41 44 44 20  |$.x_loop    ADD |
00000490  20 20 20 52 36 2c 52 32  2c 52 33 2c 4c 53 4c 23  |   R6,R2,R3,LSL#|
000004a0  36 0d 02 4e 20 20 20 20  20 20 20 20 20 20 20 20  |6..N            |
000004b0  4c 44 52 42 20 20 20 52  37 2c 5b 52 34 2c 52 36  |LDRB   R7,[R4,R6|
000004c0  5d 0d 02 58 1b 20 20 20  20 20 20 20 20 20 20 20  |]..X.           |
000004d0  43 4d 50 20 20 20 20 52  37 2c 52 35 0d 02 62 1a  |CMP    R7,R5..b.|
000004e0  20 20 20 20 20 20 20 20  20 20 20 42 4e 45 20 20  |           BNE  |
000004f0  20 20 73 6b 69 70 0d 02  6c 20 20 20 20 20 20 20  |  skip..l       |
00000500  20 20 20 20 20 41 44 52  20 20 20 20 52 38 2c 6f  |     ADR    R8,o|
00000510  66 66 73 65 74 73 0d 02  76 1d 20 20 20 20 20 20  |ffsets..v.      |
00000520  20 20 20 20 20 4c 44 52  20 20 20 20 52 30 2c 73  |     LDR    R0,s|
00000530  63 72 31 0d 02 80 1d 20  20 20 20 20 20 20 20 20  |cr1....         |
00000540  20 20 4c 44 52 20 20 20  20 52 31 2c 73 63 72 32  |  LDR    R1,scr2|
00000550  0d 02 8a 24 20 20 20 20  20 20 20 20 20 20 20 41  |...$           A|
00000560  44 44 20 20 20 20 52 37  2c 52 33 2c 52 32 2c 4c  |DD    R7,R3,R2,L|
00000570  53 4c 23 36 0d 02 94 24  20 20 20 20 20 20 20 20  |SL#6...$        |
00000580  20 20 20 41 44 44 20 20  20 20 52 37 2c 52 37 2c  |   ADD    R7,R7,|
00000590  52 32 2c 4c 53 4c 23 38  0d 02 9e 1e 20 20 20 20  |R2,LSL#8....    |
000005a0  20 20 20 20 20 20 20 41  44 44 20 20 20 20 52 30  |       ADD    R0|
000005b0  2c 52 30 2c 52 37 0d 02  a8 1e 20 20 20 20 20 20  |,R0,R7....      |
000005c0  20 20 20 20 20 41 44 44  20 20 20 20 52 31 2c 52  |     ADD    R1,R|
000005d0  31 2c 52 37 0d 02 b2 05  5d 0d 02 bc 10 e3 20 6c  |1,R7....]..... l|
000005e0  6f 6f 70 3d 31 20 b8 20  34 0d 02 c6 0d 5b 4f 50  |oop=1 . 4....[OP|
000005f0  54 20 70 61 73 73 0d 02  d0 22 20 20 20 20 20 20  |T pass..."      |
00000600  20 20 20 20 20 4c 44 4d  49 41 20 20 52 38 21 2c  |     LDMIA  R8!,|
00000610  7b 52 39 2d 52 31 32 7d  0d 02 da 20 20 20 20 20  |{R9-R12}...     |
00000620  20 20 20 20 20 20 20 4c  44 52 42 20 20 20 52 37  |       LDRB   R7|
00000630  2c 5b 52 30 2c 52 39 5d  0d 02 e4 21 20 20 20 20  |,[R0,R9]...!    |
00000640  20 20 20 20 20 20 20 4c  44 52 42 20 20 20 52 31  |       LDRB   R1|
00000650  34 2c 5b 52 31 2c 52 39  5d 0d 02 ee 20 20 20 20  |4,[R1,R9]...    |
00000660  20 20 20 20 20 20 20 20  53 54 52 42 20 20 20 52  |        STRB   R|
00000670  37 2c 5b 52 31 2c 52 39  5d 0d 02 f8 21 20 20 20  |7,[R1,R9]...!   |
00000680  20 20 20 20 20 20 20 20  53 54 52 42 20 20 20 52  |        STRB   R|
00000690  31 34 2c 5b 52 30 2c 52  39 5d 0d 03 02 21 20 20  |14,[R0,R9]...!  |
000006a0  20 20 20 20 20 20 20 20  20 4c 44 52 42 20 20 20  |         LDRB   |
000006b0  52 37 2c 5b 52 30 2c 52  31 30 5d 0d 03 0c 22 20  |R7,[R0,R10]..." |
000006c0  20 20 20 20 20 20 20 20  20 20 4c 44 52 42 20 20  |          LDRB  |
000006d0  20 52 31 34 2c 5b 52 31  2c 52 31 30 5d 0d 03 16  | R14,[R1,R10]...|
000006e0  21 20 20 20 20 20 20 20  20 20 20 20 53 54 52 42  |!           STRB|
000006f0  20 20 20 52 37 2c 5b 52  31 2c 52 31 30 5d 0d 03  |   R7,[R1,R10]..|
00000700  20 22 20 20 20 20 20 20  20 20 20 20 20 53 54 52  | "           STR|
00000710  42 20 20 20 52 31 34 2c  5b 52 30 2c 52 31 30 5d  |B   R14,[R0,R10]|
00000720  0d 03 2a 21 20 20 20 20  20 20 20 20 20 20 20 4c  |..*!           L|
00000730  44 52 42 20 20 20 52 37  2c 5b 52 30 2c 52 31 31  |DRB   R7,[R0,R11|
00000740  5d 0d 03 34 22 20 20 20  20 20 20 20 20 20 20 20  |]..4"           |
00000750  4c 44 52 42 20 20 20 52  31 34 2c 5b 52 31 2c 52  |LDRB   R14,[R1,R|
00000760  31 31 5d 0d 03 3e 21 20  20 20 20 20 20 20 20 20  |11]..>!         |
00000770  20 20 53 54 52 42 20 20  20 52 37 2c 5b 52 31 2c  |  STRB   R7,[R1,|
00000780  52 31 31 5d 0d 03 48 22  20 20 20 20 20 20 20 20  |R11]..H"        |
00000790  20 20 20 53 54 52 42 20  20 20 52 31 34 2c 5b 52  |   STRB   R14,[R|
000007a0  30 2c 52 31 31 5d 0d 03  52 21 20 20 20 20 20 20  |0,R11]..R!      |
000007b0  20 20 20 20 20 4c 44 52  42 20 20 20 52 37 2c 5b  |     LDRB   R7,[|
000007c0  52 30 2c 52 31 32 5d 0d  03 5c 22 20 20 20 20 20  |R0,R12]..\"     |
000007d0  20 20 20 20 20 20 4c 44  52 42 20 20 20 52 31 34  |      LDRB   R14|
000007e0  2c 5b 52 31 2c 52 31 32  5d 0d 03 66 21 20 20 20  |,[R1,R12]..f!   |
000007f0  20 20 20 20 20 20 20 20  53 54 52 42 20 20 20 52  |        STRB   R|
00000800  37 2c 5b 52 31 2c 52 31  32 5d 0d 03 70 22 20 20  |7,[R1,R12]..p"  |
00000810  20 20 20 20 20 20 20 20  20 53 54 52 42 20 20 20  |         STRB   |
00000820  52 31 34 2c 5b 52 30 2c  52 31 32 5d 0d 03 7a 05  |R14,[R0,R12]..z.|
00000830  5d 0d 03 84 05 ed 0d 03  8e 0d 5b 4f 50 54 20 70  |].........[OPT p|
00000840  61 73 73 0d 03 98 1e 2e  73 6b 69 70 20 20 20 20  |ass.....skip    |
00000850  20 20 53 55 42 53 20 20  20 52 33 2c 52 33 2c 23  |  SUBS   R3,R3,#|
00000860  31 0d 03 a2 1c 20 20 20  20 20 20 20 20 20 20 20  |1....           |
00000870  42 50 4c 20 20 20 20 78  5f 6c 6f 6f 70 0d 03 ac  |BPL    x_loop...|
00000880  1e 20 20 20 20 20 20 20  20 20 20 20 53 55 42 53  |.           SUBS|
00000890  20 20 20 52 32 2c 52 32  2c 23 31 0d 03 b6 1c 20  |   R2,R2,#1.... |
000008a0  20 20 20 20 20 20 20 20  20 20 42 50 4c 20 20 20  |          BPL   |
000008b0  20 79 5f 6c 6f 6f 70 0d  03 c0 1e 20 20 20 20 20  | y_loop....     |
000008c0  20 20 20 20 20 20 53 55  42 53 20 20 20 52 35 2c  |      SUBS   R5,|
000008d0  52 35 2c 23 31 0d 03 ca  1f 20 20 20 20 20 20 20  |R5,#1....       |
000008e0  20 20 20 20 42 4e 45 20  20 20 20 6d 61 69 6e 5f  |    BNE    main_|
000008f0  6c 6f 6f 70 0d 03 d4 1f  20 20 20 20 20 20 20 20  |loop....        |
00000900  20 20 20 4c 44 4d 46 44  20 20 52 31 33 21 2c 7b  |   LDMFD  R13!,{|
00000910  50 43 7d 0d 03 de 04 0d  03 e8 17 2e 73 63 72 31  |PC}.........scr1|
00000920  20 20 20 20 20 20 45 51  55 44 20 20 20 30 0d 03  |      EQUD   0..|
00000930  f2 17 2e 73 63 72 32 20  20 20 20 20 20 45 51 55  |...scr2      EQU|
00000940  44 20 20 20 30 0d 03 fc  04 0d 04 06 19 2e 6f 66  |D   0.........of|
00000950  66 73 65 74 73 20 20 20  a4 61 72 72 61 79 28 36  |fsets   .array(6|
00000960  34 29 0d 04 10 1e 2e 74  61 62 6c 65 20 20 20 20  |4).....table    |
00000970  20 a4 61 72 72 61 79 28  36 34 2a 38 30 2b 34 29  | .array(64*80+4)|
00000980  0d 04 1a 04 0d 04 24 20  2e 73 77 6f 70 20 20 20  |......$ .swop   |
00000990  20 20 20 53 54 4d 46 44  20 20 52 31 33 21 2c 7b  |   STMFD  R13!,{|
000009a0  52 31 34 7d 0d 04 2e 1d  20 20 20 20 20 20 20 20  |R14}....        |
000009b0  20 20 20 4c 44 52 20 20  20 20 52 34 2c 62 61 6e  |   LDR    R4,ban|
000009c0  6b 0d 04 38 1e 20 20 20  20 20 20 20 20 20 20 20  |k..8.           |
000009d0  52 53 42 20 20 20 20 52  34 2c 52 34 2c 23 33 0d  |RSB    R4,R4,#3.|
000009e0  04 42 1d 20 20 20 20 20  20 20 20 20 20 20 53 54  |.B.           ST|
000009f0  52 20 20 20 20 52 34 2c  62 61 6e 6b 0d 04 4c 1d  |R    R4,bank..L.|
00000a00  20 20 20 20 20 20 20 20  20 20 20 4d 4f 56 20 20  |           MOV  |
00000a10  20 20 52 30 2c 23 31 31  32 0d 04 56 1b 20 20 20  |  R0,#112..V.   |
00000a20  20 20 20 20 20 20 20 20  4d 4f 56 20 20 20 20 52  |        MOV    R|
00000a30  31 2c 52 34 0d 04 60 1f  20 20 20 20 20 20 20 20  |1,R4..`.        |
00000a40  20 20 20 53 57 49 20 20  20 20 22 4f 53 5f 42 79  |   SWI    "OS_By|
00000a50  74 65 22 0d 04 6a 1d 20  20 20 20 20 20 20 20 20  |te"..j.         |
00000a60  20 20 4d 4f 56 20 20 20  20 52 30 2c 23 31 31 33  |  MOV    R0,#113|
00000a70  0d 04 74 1e 20 20 20 20  20 20 20 20 20 20 20 52  |..t.           R|
00000a80  53 42 20 20 20 20 52 31  2c 52 34 2c 23 33 0d 04  |SB    R1,R4,#3..|
00000a90  7e 1f 20 20 20 20 20 20  20 20 20 20 20 53 57 49  |~.           SWI|
00000aa0  20 20 20 20 22 4f 53 5f  42 79 74 65 22 0d 04 88  |    "OS_Byte"...|
00000ab0  1e 20 20 20 20 20 20 20  20 20 20 20 41 44 52 20  |.           ADR |
00000ac0  20 20 20 52 30 2c 76 64  75 69 6e 0d 04 92 1f 20  |   R0,vduin.... |
00000ad0  20 20 20 20 20 20 20 20  20 20 41 44 52 20 20 20  |          ADR   |
00000ae0  20 52 31 2c 73 63 72 65  65 6e 0d 04 9c 2b 20 20  | R1,screen...+  |
00000af0  20 20 20 20 20 20 20 20  20 53 57 49 20 20 20 20  |         SWI    |
00000b00  22 4f 53 5f 52 65 61 64  56 64 75 56 61 72 69 61  |"OS_ReadVduVaria|
00000b10  62 6c 65 73 22 0d 04 a6  1f 20 20 20 20 20 20 20  |bles"....       |
00000b20  20 20 20 20 4c 44 4d 46  44 20 20 52 31 33 21 2c  |    LDMFD  R13!,|
00000b30  7b 50 43 7d 0d 04 b0 04  0d 04 ba 17 2e 62 61 6e  |{PC}.........ban|
00000b40  6b 20 20 20 20 20 20 45  51 55 44 20 20 20 31 0d  |k      EQUD   1.|
00000b50  04 c4 19 2e 76 64 75 69  6e 20 20 20 20 20 45 51  |....vduin     EQ|
00000b60  55 44 20 20 20 31 34 38  0d 04 ce 18 20 20 20 20  |UD   148....    |
00000b70  20 20 20 20 20 20 20 45  51 55 44 20 20 20 2d 31  |       EQUD   -1|
00000b80  0d 04 d8 17 2e 73 63 72  65 65 6e 20 20 20 20 45  |.....screen    E|
00000b90  51 55 44 20 20 20 30 0d  04 e2 05 5d 0d 04 ec 05  |QUD   0....]....|
00000ba0  ed 0d 04 f6 0e e3 20 69  25 3d 30 20 b8 20 33 0d  |...... i%=0 . 3.|
00000bb0  05 00 0f 20 e3 20 6a 25  3d 30 20 b8 20 33 0d 05  |... . j%=0 . 3..|
00000bc0  0a 2a 20 20 6f 66 66 73  65 74 73 21 28 34 2a 69  |.*  offsets!(4*i|
00000bd0  25 2b 31 36 2a 6a 25 29  3d 38 30 2a 69 25 2b 33  |%+16*j%)=80*i%+3|
00000be0  32 30 2a 36 34 2a 6a 25  0d 05 14 06 20 ed 0d 05  |20*64*j%.... ...|
00000bf0  1e 05 ed 0d 05 28 05 e1  0d 05 32 05 3a 0d 05 3c  |.....(....2.:..<|
00000c00  10 dd 20 a4 61 72 72 61  79 28 62 25 29 0d 05 46  |.. .array(b%)..F|
00000c10  0a 50 25 2b 3d 62 25 0d  05 50 06 3d 30 0d 05 5a  |.P%+=b%..P.=0..Z|
00000c20  05 3a 0d 05 64 0b dd 20  f2 69 6e 69 74 0d 05 6e  |.:..d.. .init..n|
00000c30  11 e3 20 69 3d 30 20 b8  20 36 34 2a 38 30 0d 05  |.. i=0 . 64*80..|
00000c40  78 15 20 74 61 62 6c 65  3f 69 3d b3 28 73 70 65  |x. table?i=.(spe|
00000c50  65 64 29 0d 05 82 05 ed  0d 05 8c 05 e1 0d 05 96  |ed).............|
00000c60  05 3a 0d 05 a0 18 dd 20  f2 74 65 78 74 28 61 24  |.:..... .text(a$|
00000c70  2c 79 25 2c 63 25 2c 74  25 29 0d 05 aa 17 78 25  |,y%,c%,t%)....x%|
00000c80  3d 36 34 30 2d 28 28 a9  61 24 2a 33 32 29 2f 32  |=640-((.a$*32)/2|
00000c90  29 0d 05 b4 07 ef 20 35  0d 05 be 0c e6 20 30 20  |)..... 5..... 0 |
00000ca0  c8 9c 20 30 0d 05 c8 12  e3 20 78 3d 2d 34 20 b8  |.. 0..... x=-4 .|
00000cb0  20 34 20 88 20 34 0d 05  d2 13 20 e3 20 79 3d 2d  | 4 . 4.... . y=-|
00000cc0  34 20 b8 20 34 20 88 20  34 0d 05 dc 11 20 20 ec  |4 . 4 . 4....  .|
00000cd0  20 78 25 2b 78 2c 79 25  2b 79 0d 05 e6 09 20 20  | x%+x,y%+y....  |
00000ce0  f1 61 24 0d 05 f0 06 20  ed 0d 05 fa 05 ed 0d 06  |.a$.... ........|
00000cf0  04 11 e6 20 63 25 20 c8  9c 20 74 25 2a 36 34 0d  |... c% .. t%*64.|
00000d00  06 0e 0b ec 20 78 25 2c  79 25 0d 06 18 07 f1 61  |.... x%,y%.....a|
00000d10  24 0d 06 22 07 ef 20 34  0d 06 2c 05 87 0d 06 36  |$..".. 4..,....6|
00000d20  05 e1 0d 06 40 05 3a 0d  06 4a 0a dd 20 f2 65 6e  |....@.:..J.. .en|
00000d30  64 0d 06 54 07 eb 20 30  0d 06 5e 05 e0 0d 06 68  |d..T.. 0..^....h|
00000d40  05 e1 0d ff                                       |....|
00000d44