Home » CEEFAX disks » telesoftware7.adl » 06-05-88/B\OSB25

06-05-88/B\OSB25

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 » CEEFAX disks » telesoftware7.adl
Filename: 06-05-88/B\OSB25
Read OK:
File size: 0E79 bytes
Load address: FFFF1F00
Exec address: FFFF8023
Duplicates

There is 1 duplicate copy of this file in the archive:

File contents
   10REM  OSbits Module B/osb25
   20REM  Illegal Screen Fill Routine
   30REM  Version 1.2 31.5.87
   40 
   50*KEY1MO.3|M|NL.|M
   60*KEY4MO.1|MTIME=0|MCALL code%|MP.TIME|M
   70 
   80DIM code% &100
   90 
  100osbyte = &FFF4
  110osword = &FFF1
  120temp_counter = &70
  130 
  140REM  Trap a co-processor.  Note it's up to you to deselect shadow mode.
  150 
  160X%=0
  170Y%=&FF
  180A%=234
  190IF (USR(osbyte) AND &FF00)>0 THEN PRINT "I think you have a second processor"'"Please switch it off and start again":STOP
  200 
  210FOR pass% = 0 TO 3 STEP 3
  220P% = code%
  230[OPT pass%
  240 
  250.y_routine
  260 
  270LDA #0                \ Clear vertical counter and temp workspace
  280STA vertical+1
  290STA vertical
  300STA temp_counter
  310STA temp_counter+1
  320 
  330.y_loop
  340 
  350LDA #0                \ Clear horizontal counter
  360STA horizontal
  370STA horizontal+1
  380 
  390JSR y_pos
  400 
  410.x_loop
  420 
  430LDX horizontal        \ X contains X co-ordinate lo
  440LDA horizontal+1
  450LSR A
  460TAY                   \ Y contains X co-ordinate hi
  470TXA
  480ROR A
  490TAX                   \ X+Y now contain X DIV 2
  500TYA
  510LSR A
  520TAY
  530TXA
  540ROR A
  550AND #&FC              \ H DIV 4 * 4 in A(lo) Y(hi)
  560 
  570ASL A
  580TAX
  590TYA
  600ROL A                 \ 8*H DIV4 in A(lo) Y(hi)
  610TAY
  620TXA
  630CLC
  640ADC temp_1
  650TAX
  660TYA
  670ADC temp_1+1          \ X+A now &280*VDIV8 + VMOD8 + 8*HDIV4
  680CLC
  690ADC start_address
  700STA temp_counter+1
  710TXA
  720STA temp_counter      \ temp_counter now contains screen address
  730 
  740LDA #&FF              \ This byte sent to screen ..... experiment with it
  750LDY #0
  760STA (temp_counter),Y
  770 
  780LDA horizontal        \ A byte represents 16 units horizontally
  790CLC
  800ADC #16
  810STA horizontal
  820BNE x_loop
  830INC horizontal+1
  840LDA horizontal+1
  850CMP #5                \ When you reach &500 you have finished X
  860BNE x_loop
  870 
  880LDA vertical          \ Our vertical step is 4
  890CLC
  900ADC #4
  910STA vertical
  920BNE y_loop
  930INC vertical+1
  940LDA vertical+1
  950CMP #4                \ When you reach &400 you have finished Y
  960BNE y_loop
  970RTS
  980 
  990.y_pos
 1000 
 1010LDA vertical
 1020STA temp_y            \ temp_y contains Y
 1030LDA vertical+1
 1040STA temp_y+1
 1050LSR temp_y+1
 1060ROR temp_y            \ temp_y contains Y DIV2
 1070LSR temp_y+1
 1080ROR temp_y            \ temp_y contains Y DIV4
 1090 
 1100LDA temp_y
 1110AND #&F8              \ blank last 3 bits = DIV8 * 8
 1120STA temp_1
 1130LDA temp_y+1
 1140STA temp_1+1          \ temp_1 contains V [Y DIV4] DIV8 * 2^3
 1150ASL temp_1
 1160ROL temp_1+1
 1170ASL temp_1
 1180ROL temp_1+1
 1190ASL temp_1
 1200ROL temp_1+1
 1210ASL temp_1
 1220ROL temp_1+1          \ temp_1 contains 2^7 * VDIV8 = 2^4 * V
 1230LDA temp_1
 1240STA temp_2
 1250LDA temp_1+1
 1260STA temp_2+1          \ temp_2 now contains 2^7 * VDIV8 = 2^4 * V
 1270ASL temp_2
 1280ROL temp_2+1
 1290ASL temp_2
 1300ROL temp_2+1          \ temp_2 now contains 2^9 * VDIV8 = 2^6 * V
 1310LDA temp_1
 1320CLC
 1330ADC temp_2
 1340STA temp_1
 1350LDA temp_1+1
 1360ADC temp_2+1
 1370STA temp_1+1          \ temp_1 now contains &280 * VDIV8
 1380LDA temp_y
 1390AND #7                \ VMOD8
 1400CLC
 1410ADC temp_1
 1420STA temp_1
 1430LDA #0
 1440ADC temp_1+1          \ temp_1 now contains &280 * VDIV8 + VMOD8
 1450STA temp_1+1
 1460RTS
 1470 
 1480.horizontal    OPT  FNEQUW(0)
 1490.vertical      OPT  FNEQUW(0)
 1500.temp_x        OPT  FNEQUW(0)
 1510.temp_y        OPT  FNEQUW(0)
 1520.temp_1        OPT  FNEQUW(0)
 1530.temp_2        OPT  FNEQUW(0)
 1540.start_address OPT  FNEQUB(&30) \ hi byte of start of screen memory
 1550 
 1560]
 1570NEXT
 1580END
 1590 
 1600**** EQUate a Byte ****
 1610DEF FNEQUB(N%)
 1620?P%=N% MOD 256
 1630IF (pass% AND 3) = 3 THEN PRINT ~?P%
 1640P%=P%+1
 1650=pass%
 1660 
 1670**** EQUate a Word (2 bytes) ****
 1680DEF FNEQUW(N%)
 1690?P%=N% MOD 256
 1700P%?1=N% DIV 256
 1710IF (pass% AND 3) = 3 THEN PRINT ~?P%,~?(P%+1)
 1720P%=P%+2
 1730=pass%

�  OSbits Module B/osb25
"�  Illegal Screen Fill Routine
�  Version 1.2 31.5.87
( 
2*KEY1MO.3|M|NL.|M
<+*KEY4MO.1|MTIME=0|MCALL code%|MP.TIME|M
F 
P� code% &100
Z 
dosbyte = &FFF4
nosword = &FFF1
xtemp_counter = &70
� 
�I�  Trap a co-processor.  Note it's up to you to deselect shadow mode.
� 
�X%=0
�
Y%=&FF
�
A%=234
�n� (�(osbyte) � &FF00)>0 � � "I think you have a second processor"'"Please switch it off and start again":�
� 
�� pass% = 0 � 3 � 3
�P% = code%
�[OPT pass%
� 
�.y_routine
 
ELDA #0                \ Clear vertical counter and temp workspace
STA vertical+1
"STA vertical
,STA temp_counter
6STA temp_counter+1
@ 
J.y_loop
T 
^4LDA #0                \ Clear horizontal counter
hSTA horizontal
rSTA horizontal+1
| 
�
JSR y_pos
� 
�.x_loop
� 
�7LDX horizontal        \ X contains X co-ordinate lo
�LDA horizontal+1
�	LSR A
�7TAY                   \ Y contains X co-ordinate hi
�TXA
�	ROR A
�1TAX                   \ X+Y now contain X � 2
�TYA
�	LSR A
TAY
TXA
	ROR A
&2� #&FC              \ H � 4 * 4 in A(lo) Y(hi)
0 
:	ASL A
DTAX
NTYA
X1ROL A                 \ 8*H �4 in A(lo) Y(hi)
bTAY
lTXA
vCLC
�ADC temp_1
�TAX
�TYA
�@ADC temp_1+1          \ X+A now &280*VDIV8 + VMOD8 + 8*HDIV4
�CLC
�ADC start_address
�STA temp_counter+1
�TXA
�DSTA temp_counter      \ temp_counter now contains screen address
� 
�MLDA #&FF              \ This byte sent to screen ..... experiment with it
�
LDY #0
�STA (temp_counter),Y
 
CLDA horizontal        \ A byte represents 16 units horizontally
CLC
 ADC #16
*STA horizontal
4BNE x_loop
>INC horizontal+1
HLDA horizontal+1
RCCMP #5                \ When you reach &500 you have finished X
\BNE x_loop
f 
p2LDA vertical          \ Our vertical step is 4
zCLC
�
ADC #4
�STA vertical
�BNE y_loop
�INC vertical+1
�LDA vertical+1
�CCMP #4                \ When you reach &400 you have finished Y
�BNE y_loop
�RTS
� 
�
.y_pos
� 
�LDA vertical
�-STA temp_y            \ temp_y contains Y
LDA vertical+1
STA temp_y+1
LSR temp_y+1
$0ROR temp_y            \ temp_y contains Y �2
.LSR temp_y+1
80ROR temp_y            \ temp_y contains Y �4
B 
LLDA temp_y
V4� #&F8              \ blank last 3 bits = �8 * 8
`STA temp_1
jLDA temp_y+1
t=STA temp_1+1          \ temp_1 contains V [Y �4] �8 * 2^3
~ASL temp_1
�ROL temp_1+1
�ASL temp_1
�ROL temp_1+1
�ASL temp_1
�ROL temp_1+1
�ASL temp_1
�AROL temp_1+1          \ temp_1 contains 2^7 * VDIV8 = 2^4 * V
�LDA temp_1
�STA temp_2
�LDA temp_1+1
�ESTA temp_2+1          \ temp_2 now contains 2^7 * VDIV8 = 2^4 * V
�ASL temp_2
ROL temp_2+1

ASL temp_2
EROL temp_2+1          \ temp_2 now contains 2^9 * VDIV8 = 2^6 * V
LDA temp_1
(CLC
2ADC temp_2
<STA temp_1
FLDA temp_1+1
PADC temp_2+1
Z<STA temp_1+1          \ temp_1 now contains &280 * VDIV8
dLDA temp_y
n� #7                \ VMOD8
xCLC
�ADC temp_1
�STA temp_1
�
LDA #0
�DADC temp_1+1          \ temp_1 now contains &280 * VDIV8 + VMOD8
�STA temp_1+1
�RTS
� 
� .horizontal    OPT  �EQUW(0)
� .vertical      OPT  �EQUW(0)
� .temp_x        OPT  �EQUW(0)
� .temp_y        OPT  �EQUW(0)
� .temp_1        OPT  �EQUW(0)
� .temp_2        OPT  �EQUW(0)
F.start_address OPT  �EQUB(&30) \ hi byte of start of screen memory
 
]
"�
,�
6 
@**** EQUate a Byte ****
J� �EQUB(N%)
T?P%=N% � 256
^� (pass% � 3) = 3 � � ~?P%
hP%=P%+1
r
=pass%
| 
�%**** EQUate a Word (2 bytes) ****
�� �EQUW(N%)
�?P%=N% � 256
�P%?1=N% � 256
�'� (pass% � 3) = 3 � � ~?P%,~?(P%+1)
�P%=P%+2
�
=pass%
�
00000000  0d 00 0a 1c f4 20 20 4f  53 62 69 74 73 20 4d 6f  |.....  OSbits Mo|
00000010  64 75 6c 65 20 42 2f 6f  73 62 32 35 0d 00 14 22  |dule B/osb25..."|
00000020  f4 20 20 49 6c 6c 65 67  61 6c 20 53 63 72 65 65  |.  Illegal Scree|
00000030  6e 20 46 69 6c 6c 20 52  6f 75 74 69 6e 65 0d 00  |n Fill Routine..|
00000040  1e 1a f4 20 20 56 65 72  73 69 6f 6e 20 31 2e 32  |...  Version 1.2|
00000050  20 33 31 2e 35 2e 38 37  0d 00 28 05 20 0d 00 32  | 31.5.87..(. ..2|
00000060  15 2a 4b 45 59 31 4d 4f  2e 33 7c 4d 7c 4e 4c 2e  |.*KEY1MO.3|M|NL.|
00000070  7c 4d 0d 00 3c 2b 2a 4b  45 59 34 4d 4f 2e 31 7c  ||M..<+*KEY4MO.1||
00000080  4d 54 49 4d 45 3d 30 7c  4d 43 41 4c 4c 20 63 6f  |MTIME=0|MCALL co|
00000090  64 65 25 7c 4d 50 2e 54  49 4d 45 7c 4d 0d 00 46  |de%|MP.TIME|M..F|
000000a0  05 20 0d 00 50 10 de 20  63 6f 64 65 25 20 26 31  |. ..P.. code% &1|
000000b0  30 30 0d 00 5a 05 20 0d  00 64 12 6f 73 62 79 74  |00..Z. ..d.osbyt|
000000c0  65 20 3d 20 26 46 46 46  34 0d 00 6e 12 6f 73 77  |e = &FFF4..n.osw|
000000d0  6f 72 64 20 3d 20 26 46  46 46 31 0d 00 78 16 74  |ord = &FFF1..x.t|
000000e0  65 6d 70 5f 63 6f 75 6e  74 65 72 20 3d 20 26 37  |emp_counter = &7|
000000f0  30 0d 00 82 05 20 0d 00  8c 49 f4 20 20 54 72 61  |0.... ...I.  Tra|
00000100  70 20 61 20 63 6f 2d 70  72 6f 63 65 73 73 6f 72  |p a co-processor|
00000110  2e 20 20 4e 6f 74 65 20  69 74 27 73 20 75 70 20  |.  Note it's up |
00000120  74 6f 20 79 6f 75 20 74  6f 20 64 65 73 65 6c 65  |to you to desele|
00000130  63 74 20 73 68 61 64 6f  77 20 6d 6f 64 65 2e 0d  |ct shadow mode..|
00000140  00 96 05 20 0d 00 a0 08  58 25 3d 30 0d 00 aa 0a  |... ....X%=0....|
00000150  59 25 3d 26 46 46 0d 00  b4 0a 41 25 3d 32 33 34  |Y%=&FF....A%=234|
00000160  0d 00 be 6e e7 20 28 ba  28 6f 73 62 79 74 65 29  |...n. (.(osbyte)|
00000170  20 80 20 26 46 46 30 30  29 3e 30 20 8c 20 f1 20  | . &FF00)>0 . . |
00000180  22 49 20 74 68 69 6e 6b  20 79 6f 75 20 68 61 76  |"I think you hav|
00000190  65 20 61 20 73 65 63 6f  6e 64 20 70 72 6f 63 65  |e a second proce|
000001a0  73 73 6f 72 22 27 22 50  6c 65 61 73 65 20 73 77  |ssor"'"Please sw|
000001b0  69 74 63 68 20 69 74 20  6f 66 66 20 61 6e 64 20  |itch it off and |
000001c0  73 74 61 72 74 20 61 67  61 69 6e 22 3a fa 0d 00  |start again":...|
000001d0  c8 05 20 0d 00 d2 17 e3  20 70 61 73 73 25 20 3d  |.. ..... pass% =|
000001e0  20 30 20 b8 20 33 20 88  20 33 0d 00 dc 0e 50 25  | 0 . 3 . 3....P%|
000001f0  20 3d 20 63 6f 64 65 25  0d 00 e6 0e 5b 4f 50 54  | = code%....[OPT|
00000200  20 70 61 73 73 25 0d 00  f0 05 20 0d 00 fa 0e 2e  | pass%.... .....|
00000210  79 5f 72 6f 75 74 69 6e  65 0d 01 04 05 20 0d 01  |y_routine.... ..|
00000220  0e 45 4c 44 41 20 23 30  20 20 20 20 20 20 20 20  |.ELDA #0        |
00000230  20 20 20 20 20 20 20 20  5c 20 43 6c 65 61 72 20  |        \ Clear |
00000240  76 65 72 74 69 63 61 6c  20 63 6f 75 6e 74 65 72  |vertical counter|
00000250  20 61 6e 64 20 74 65 6d  70 20 77 6f 72 6b 73 70  | and temp worksp|
00000260  61 63 65 0d 01 18 12 53  54 41 20 76 65 72 74 69  |ace....STA verti|
00000270  63 61 6c 2b 31 0d 01 22  10 53 54 41 20 76 65 72  |cal+1..".STA ver|
00000280  74 69 63 61 6c 0d 01 2c  14 53 54 41 20 74 65 6d  |tical..,.STA tem|
00000290  70 5f 63 6f 75 6e 74 65  72 0d 01 36 16 53 54 41  |p_counter..6.STA|
000002a0  20 74 65 6d 70 5f 63 6f  75 6e 74 65 72 2b 31 0d  | temp_counter+1.|
000002b0  01 40 05 20 0d 01 4a 0b  2e 79 5f 6c 6f 6f 70 0d  |.@. ..J..y_loop.|
000002c0  01 54 05 20 0d 01 5e 34  4c 44 41 20 23 30 20 20  |.T. ..^4LDA #0  |
000002d0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 5c 20  |              \ |
000002e0  43 6c 65 61 72 20 68 6f  72 69 7a 6f 6e 74 61 6c  |Clear horizontal|
000002f0  20 63 6f 75 6e 74 65 72  0d 01 68 12 53 54 41 20  | counter..h.STA |
00000300  68 6f 72 69 7a 6f 6e 74  61 6c 0d 01 72 14 53 54  |horizontal..r.ST|
00000310  41 20 68 6f 72 69 7a 6f  6e 74 61 6c 2b 31 0d 01  |A horizontal+1..|
00000320  7c 05 20 0d 01 86 0d 4a  53 52 20 79 5f 70 6f 73  ||. ....JSR y_pos|
00000330  0d 01 90 05 20 0d 01 9a  0b 2e 78 5f 6c 6f 6f 70  |.... .....x_loop|
00000340  0d 01 a4 05 20 0d 01 ae  37 4c 44 58 20 68 6f 72  |.... ...7LDX hor|
00000350  69 7a 6f 6e 74 61 6c 20  20 20 20 20 20 20 20 5c  |izontal        \|
00000360  20 58 20 63 6f 6e 74 61  69 6e 73 20 58 20 63 6f  | X contains X co|
00000370  2d 6f 72 64 69 6e 61 74  65 20 6c 6f 0d 01 b8 14  |-ordinate lo....|
00000380  4c 44 41 20 68 6f 72 69  7a 6f 6e 74 61 6c 2b 31  |LDA horizontal+1|
00000390  0d 01 c2 09 4c 53 52 20  41 0d 01 cc 37 54 41 59  |....LSR A...7TAY|
000003a0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
000003b0  20 20 20 5c 20 59 20 63  6f 6e 74 61 69 6e 73 20  |   \ Y contains |
000003c0  58 20 63 6f 2d 6f 72 64  69 6e 61 74 65 20 68 69  |X co-ordinate hi|
000003d0  0d 01 d6 07 54 58 41 0d  01 e0 09 52 4f 52 20 41  |....TXA....ROR A|
000003e0  0d 01 ea 31 54 41 58 20  20 20 20 20 20 20 20 20  |...1TAX         |
000003f0  20 20 20 20 20 20 20 20  20 20 5c 20 58 2b 59 20  |          \ X+Y |
00000400  6e 6f 77 20 63 6f 6e 74  61 69 6e 20 58 20 81 20  |now contain X . |
00000410  32 0d 01 f4 07 54 59 41  0d 01 fe 09 4c 53 52 20  |2....TYA....LSR |
00000420  41 0d 02 08 07 54 41 59  0d 02 12 07 54 58 41 0d  |A....TAY....TXA.|
00000430  02 1c 09 52 4f 52 20 41  0d 02 26 32 80 20 23 26  |...ROR A..&2. #&|
00000440  46 43 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |FC              |
00000450  5c 20 48 20 81 20 34 20  2a 20 34 20 69 6e 20 41  |\ H . 4 * 4 in A|
00000460  28 6c 6f 29 20 59 28 68  69 29 0d 02 30 05 20 0d  |(lo) Y(hi)..0. .|
00000470  02 3a 09 41 53 4c 20 41  0d 02 44 07 54 41 58 0d  |.:.ASL A..D.TAX.|
00000480  02 4e 07 54 59 41 0d 02  58 31 52 4f 4c 20 41 20  |.N.TYA..X1ROL A |
00000490  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
000004a0  5c 20 38 2a 48 20 81 34  20 69 6e 20 41 28 6c 6f  |\ 8*H .4 in A(lo|
000004b0  29 20 59 28 68 69 29 0d  02 62 07 54 41 59 0d 02  |) Y(hi)..b.TAY..|
000004c0  6c 07 54 58 41 0d 02 76  07 43 4c 43 0d 02 80 0e  |l.TXA..v.CLC....|
000004d0  41 44 43 20 74 65 6d 70  5f 31 0d 02 8a 07 54 41  |ADC temp_1....TA|
000004e0  58 0d 02 94 07 54 59 41  0d 02 9e 40 41 44 43 20  |X....TYA...@ADC |
000004f0  74 65 6d 70 5f 31 2b 31  20 20 20 20 20 20 20 20  |temp_1+1        |
00000500  20 20 5c 20 58 2b 41 20  6e 6f 77 20 26 32 38 30  |  \ X+A now &280|
00000510  2a 56 44 49 56 38 20 2b  20 56 4d 4f 44 38 20 2b  |*VDIV8 + VMOD8 +|
00000520  20 38 2a 48 44 49 56 34  0d 02 a8 07 43 4c 43 0d  | 8*HDIV4....CLC.|
00000530  02 b2 15 41 44 43 20 73  74 61 72 74 5f 61 64 64  |...ADC start_add|
00000540  72 65 73 73 0d 02 bc 16  53 54 41 20 74 65 6d 70  |ress....STA temp|
00000550  5f 63 6f 75 6e 74 65 72  2b 31 0d 02 c6 07 54 58  |_counter+1....TX|
00000560  41 0d 02 d0 44 53 54 41  20 74 65 6d 70 5f 63 6f  |A...DSTA temp_co|
00000570  75 6e 74 65 72 20 20 20  20 20 20 5c 20 74 65 6d  |unter      \ tem|
00000580  70 5f 63 6f 75 6e 74 65  72 20 6e 6f 77 20 63 6f  |p_counter now co|
00000590  6e 74 61 69 6e 73 20 73  63 72 65 65 6e 20 61 64  |ntains screen ad|
000005a0  64 72 65 73 73 0d 02 da  05 20 0d 02 e4 4d 4c 44  |dress.... ...MLD|
000005b0  41 20 23 26 46 46 20 20  20 20 20 20 20 20 20 20  |A #&FF          |
000005c0  20 20 20 20 5c 20 54 68  69 73 20 62 79 74 65 20  |    \ This byte |
000005d0  73 65 6e 74 20 74 6f 20  73 63 72 65 65 6e 20 2e  |sent to screen .|
000005e0  2e 2e 2e 2e 20 65 78 70  65 72 69 6d 65 6e 74 20  |.... experiment |
000005f0  77 69 74 68 20 69 74 0d  02 ee 0a 4c 44 59 20 23  |with it....LDY #|
00000600  30 0d 02 f8 18 53 54 41  20 28 74 65 6d 70 5f 63  |0....STA (temp_c|
00000610  6f 75 6e 74 65 72 29 2c  59 0d 03 02 05 20 0d 03  |ounter),Y.... ..|
00000620  0c 43 4c 44 41 20 68 6f  72 69 7a 6f 6e 74 61 6c  |.CLDA horizontal|
00000630  20 20 20 20 20 20 20 20  5c 20 41 20 62 79 74 65  |        \ A byte|
00000640  20 72 65 70 72 65 73 65  6e 74 73 20 31 36 20 75  | represents 16 u|
00000650  6e 69 74 73 20 68 6f 72  69 7a 6f 6e 74 61 6c 6c  |nits horizontall|
00000660  79 0d 03 16 07 43 4c 43  0d 03 20 0b 41 44 43 20  |y....CLC.. .ADC |
00000670  23 31 36 0d 03 2a 12 53  54 41 20 68 6f 72 69 7a  |#16..*.STA horiz|
00000680  6f 6e 74 61 6c 0d 03 34  0e 42 4e 45 20 78 5f 6c  |ontal..4.BNE x_l|
00000690  6f 6f 70 0d 03 3e 14 49  4e 43 20 68 6f 72 69 7a  |oop..>.INC horiz|
000006a0  6f 6e 74 61 6c 2b 31 0d  03 48 14 4c 44 41 20 68  |ontal+1..H.LDA h|
000006b0  6f 72 69 7a 6f 6e 74 61  6c 2b 31 0d 03 52 43 43  |orizontal+1..RCC|
000006c0  4d 50 20 23 35 20 20 20  20 20 20 20 20 20 20 20  |MP #5           |
000006d0  20 20 20 20 20 5c 20 57  68 65 6e 20 79 6f 75 20  |     \ When you |
000006e0  72 65 61 63 68 20 26 35  30 30 20 79 6f 75 20 68  |reach &500 you h|
000006f0  61 76 65 20 66 69 6e 69  73 68 65 64 20 58 0d 03  |ave finished X..|
00000700  5c 0e 42 4e 45 20 78 5f  6c 6f 6f 70 0d 03 66 05  |\.BNE x_loop..f.|
00000710  20 0d 03 70 32 4c 44 41  20 76 65 72 74 69 63 61  | ..p2LDA vertica|
00000720  6c 20 20 20 20 20 20 20  20 20 20 5c 20 4f 75 72  |l          \ Our|
00000730  20 76 65 72 74 69 63 61  6c 20 73 74 65 70 20 69  | vertical step i|
00000740  73 20 34 0d 03 7a 07 43  4c 43 0d 03 84 0a 41 44  |s 4..z.CLC....AD|
00000750  43 20 23 34 0d 03 8e 10  53 54 41 20 76 65 72 74  |C #4....STA vert|
00000760  69 63 61 6c 0d 03 98 0e  42 4e 45 20 79 5f 6c 6f  |ical....BNE y_lo|
00000770  6f 70 0d 03 a2 12 49 4e  43 20 76 65 72 74 69 63  |op....INC vertic|
00000780  61 6c 2b 31 0d 03 ac 12  4c 44 41 20 76 65 72 74  |al+1....LDA vert|
00000790  69 63 61 6c 2b 31 0d 03  b6 43 43 4d 50 20 23 34  |ical+1...CCMP #4|
000007a0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
000007b0  5c 20 57 68 65 6e 20 79  6f 75 20 72 65 61 63 68  |\ When you reach|
000007c0  20 26 34 30 30 20 79 6f  75 20 68 61 76 65 20 66  | &400 you have f|
000007d0  69 6e 69 73 68 65 64 20  59 0d 03 c0 0e 42 4e 45  |inished Y....BNE|
000007e0  20 79 5f 6c 6f 6f 70 0d  03 ca 07 52 54 53 0d 03  | y_loop....RTS..|
000007f0  d4 05 20 0d 03 de 0a 2e  79 5f 70 6f 73 0d 03 e8  |.. .....y_pos...|
00000800  05 20 0d 03 f2 10 4c 44  41 20 76 65 72 74 69 63  |. ....LDA vertic|
00000810  61 6c 0d 03 fc 2d 53 54  41 20 74 65 6d 70 5f 79  |al...-STA temp_y|
00000820  20 20 20 20 20 20 20 20  20 20 20 20 5c 20 74 65  |            \ te|
00000830  6d 70 5f 79 20 63 6f 6e  74 61 69 6e 73 20 59 0d  |mp_y contains Y.|
00000840  04 06 12 4c 44 41 20 76  65 72 74 69 63 61 6c 2b  |...LDA vertical+|
00000850  31 0d 04 10 10 53 54 41  20 74 65 6d 70 5f 79 2b  |1....STA temp_y+|
00000860  31 0d 04 1a 10 4c 53 52  20 74 65 6d 70 5f 79 2b  |1....LSR temp_y+|
00000870  31 0d 04 24 30 52 4f 52  20 74 65 6d 70 5f 79 20  |1..$0ROR temp_y |
00000880  20 20 20 20 20 20 20 20  20 20 20 5c 20 74 65 6d  |           \ tem|
00000890  70 5f 79 20 63 6f 6e 74  61 69 6e 73 20 59 20 81  |p_y contains Y .|
000008a0  32 0d 04 2e 10 4c 53 52  20 74 65 6d 70 5f 79 2b  |2....LSR temp_y+|
000008b0  31 0d 04 38 30 52 4f 52  20 74 65 6d 70 5f 79 20  |1..80ROR temp_y |
000008c0  20 20 20 20 20 20 20 20  20 20 20 5c 20 74 65 6d  |           \ tem|
000008d0  70 5f 79 20 63 6f 6e 74  61 69 6e 73 20 59 20 81  |p_y contains Y .|
000008e0  34 0d 04 42 05 20 0d 04  4c 0e 4c 44 41 20 74 65  |4..B. ..L.LDA te|
000008f0  6d 70 5f 79 0d 04 56 34  80 20 23 26 46 38 20 20  |mp_y..V4. #&F8  |
00000900  20 20 20 20 20 20 20 20  20 20 20 20 5c 20 62 6c  |            \ bl|
00000910  61 6e 6b 20 6c 61 73 74  20 33 20 62 69 74 73 20  |ank last 3 bits |
00000920  3d 20 81 38 20 2a 20 38  0d 04 60 0e 53 54 41 20  |= .8 * 8..`.STA |
00000930  74 65 6d 70 5f 31 0d 04  6a 10 4c 44 41 20 74 65  |temp_1..j.LDA te|
00000940  6d 70 5f 79 2b 31 0d 04  74 3d 53 54 41 20 74 65  |mp_y+1..t=STA te|
00000950  6d 70 5f 31 2b 31 20 20  20 20 20 20 20 20 20 20  |mp_1+1          |
00000960  5c 20 74 65 6d 70 5f 31  20 63 6f 6e 74 61 69 6e  |\ temp_1 contain|
00000970  73 20 56 20 5b 59 20 81  34 5d 20 81 38 20 2a 20  |s V [Y .4] .8 * |
00000980  32 5e 33 0d 04 7e 0e 41  53 4c 20 74 65 6d 70 5f  |2^3..~.ASL temp_|
00000990  31 0d 04 88 10 52 4f 4c  20 74 65 6d 70 5f 31 2b  |1....ROL temp_1+|
000009a0  31 0d 04 92 0e 41 53 4c  20 74 65 6d 70 5f 31 0d  |1....ASL temp_1.|
000009b0  04 9c 10 52 4f 4c 20 74  65 6d 70 5f 31 2b 31 0d  |...ROL temp_1+1.|
000009c0  04 a6 0e 41 53 4c 20 74  65 6d 70 5f 31 0d 04 b0  |...ASL temp_1...|
000009d0  10 52 4f 4c 20 74 65 6d  70 5f 31 2b 31 0d 04 ba  |.ROL temp_1+1...|
000009e0  0e 41 53 4c 20 74 65 6d  70 5f 31 0d 04 c4 41 52  |.ASL temp_1...AR|
000009f0  4f 4c 20 74 65 6d 70 5f  31 2b 31 20 20 20 20 20  |OL temp_1+1     |
00000a00  20 20 20 20 20 5c 20 74  65 6d 70 5f 31 20 63 6f  |     \ temp_1 co|
00000a10  6e 74 61 69 6e 73 20 32  5e 37 20 2a 20 56 44 49  |ntains 2^7 * VDI|
00000a20  56 38 20 3d 20 32 5e 34  20 2a 20 56 0d 04 ce 0e  |V8 = 2^4 * V....|
00000a30  4c 44 41 20 74 65 6d 70  5f 31 0d 04 d8 0e 53 54  |LDA temp_1....ST|
00000a40  41 20 74 65 6d 70 5f 32  0d 04 e2 10 4c 44 41 20  |A temp_2....LDA |
00000a50  74 65 6d 70 5f 31 2b 31  0d 04 ec 45 53 54 41 20  |temp_1+1...ESTA |
00000a60  74 65 6d 70 5f 32 2b 31  20 20 20 20 20 20 20 20  |temp_2+1        |
00000a70  20 20 5c 20 74 65 6d 70  5f 32 20 6e 6f 77 20 63  |  \ temp_2 now c|
00000a80  6f 6e 74 61 69 6e 73 20  32 5e 37 20 2a 20 56 44  |ontains 2^7 * VD|
00000a90  49 56 38 20 3d 20 32 5e  34 20 2a 20 56 0d 04 f6  |IV8 = 2^4 * V...|
00000aa0  0e 41 53 4c 20 74 65 6d  70 5f 32 0d 05 00 10 52  |.ASL temp_2....R|
00000ab0  4f 4c 20 74 65 6d 70 5f  32 2b 31 0d 05 0a 0e 41  |OL temp_2+1....A|
00000ac0  53 4c 20 74 65 6d 70 5f  32 0d 05 14 45 52 4f 4c  |SL temp_2...EROL|
00000ad0  20 74 65 6d 70 5f 32 2b  31 20 20 20 20 20 20 20  | temp_2+1       |
00000ae0  20 20 20 5c 20 74 65 6d  70 5f 32 20 6e 6f 77 20  |   \ temp_2 now |
00000af0  63 6f 6e 74 61 69 6e 73  20 32 5e 39 20 2a 20 56  |contains 2^9 * V|
00000b00  44 49 56 38 20 3d 20 32  5e 36 20 2a 20 56 0d 05  |DIV8 = 2^6 * V..|
00000b10  1e 0e 4c 44 41 20 74 65  6d 70 5f 31 0d 05 28 07  |..LDA temp_1..(.|
00000b20  43 4c 43 0d 05 32 0e 41  44 43 20 74 65 6d 70 5f  |CLC..2.ADC temp_|
00000b30  32 0d 05 3c 0e 53 54 41  20 74 65 6d 70 5f 31 0d  |2..<.STA temp_1.|
00000b40  05 46 10 4c 44 41 20 74  65 6d 70 5f 31 2b 31 0d  |.F.LDA temp_1+1.|
00000b50  05 50 10 41 44 43 20 74  65 6d 70 5f 32 2b 31 0d  |.P.ADC temp_2+1.|
00000b60  05 5a 3c 53 54 41 20 74  65 6d 70 5f 31 2b 31 20  |.Z<STA temp_1+1 |
00000b70  20 20 20 20 20 20 20 20  20 5c 20 74 65 6d 70 5f  |         \ temp_|
00000b80  31 20 6e 6f 77 20 63 6f  6e 74 61 69 6e 73 20 26  |1 now contains &|
00000b90  32 38 30 20 2a 20 56 44  49 56 38 0d 05 64 0e 4c  |280 * VDIV8..d.L|
00000ba0  44 41 20 74 65 6d 70 5f  79 0d 05 6e 1f 80 20 23  |DA temp_y..n.. #|
00000bb0  37 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |7               |
00000bc0  20 5c 20 56 4d 4f 44 38  0d 05 78 07 43 4c 43 0d  | \ VMOD8..x.CLC.|
00000bd0  05 82 0e 41 44 43 20 74  65 6d 70 5f 31 0d 05 8c  |...ADC temp_1...|
00000be0  0e 53 54 41 20 74 65 6d  70 5f 31 0d 05 96 0a 4c  |.STA temp_1....L|
00000bf0  44 41 20 23 30 0d 05 a0  44 41 44 43 20 74 65 6d  |DA #0...DADC tem|
00000c00  70 5f 31 2b 31 20 20 20  20 20 20 20 20 20 20 5c  |p_1+1          \|
00000c10  20 74 65 6d 70 5f 31 20  6e 6f 77 20 63 6f 6e 74  | temp_1 now cont|
00000c20  61 69 6e 73 20 26 32 38  30 20 2a 20 56 44 49 56  |ains &280 * VDIV|
00000c30  38 20 2b 20 56 4d 4f 44  38 0d 05 aa 10 53 54 41  |8 + VMOD8....STA|
00000c40  20 74 65 6d 70 5f 31 2b  31 0d 05 b4 07 52 54 53  | temp_1+1....RTS|
00000c50  0d 05 be 05 20 0d 05 c8  20 2e 68 6f 72 69 7a 6f  |.... ... .horizo|
00000c60  6e 74 61 6c 20 20 20 20  4f 50 54 20 20 a4 45 51  |ntal    OPT  .EQ|
00000c70  55 57 28 30 29 0d 05 d2  20 2e 76 65 72 74 69 63  |UW(0)... .vertic|
00000c80  61 6c 20 20 20 20 20 20  4f 50 54 20 20 a4 45 51  |al      OPT  .EQ|
00000c90  55 57 28 30 29 0d 05 dc  20 2e 74 65 6d 70 5f 78  |UW(0)... .temp_x|
00000ca0  20 20 20 20 20 20 20 20  4f 50 54 20 20 a4 45 51  |        OPT  .EQ|
00000cb0  55 57 28 30 29 0d 05 e6  20 2e 74 65 6d 70 5f 79  |UW(0)... .temp_y|
00000cc0  20 20 20 20 20 20 20 20  4f 50 54 20 20 a4 45 51  |        OPT  .EQ|
00000cd0  55 57 28 30 29 0d 05 f0  20 2e 74 65 6d 70 5f 31  |UW(0)... .temp_1|
00000ce0  20 20 20 20 20 20 20 20  4f 50 54 20 20 a4 45 51  |        OPT  .EQ|
00000cf0  55 57 28 30 29 0d 05 fa  20 2e 74 65 6d 70 5f 32  |UW(0)... .temp_2|
00000d00  20 20 20 20 20 20 20 20  4f 50 54 20 20 a4 45 51  |        OPT  .EQ|
00000d10  55 57 28 30 29 0d 06 04  46 2e 73 74 61 72 74 5f  |UW(0)...F.start_|
00000d20  61 64 64 72 65 73 73 20  4f 50 54 20 20 a4 45 51  |address OPT  .EQ|
00000d30  55 42 28 26 33 30 29 20  5c 20 68 69 20 62 79 74  |UB(&30) \ hi byt|
00000d40  65 20 6f 66 20 73 74 61  72 74 20 6f 66 20 73 63  |e of start of sc|
00000d50  72 65 65 6e 20 6d 65 6d  6f 72 79 0d 06 0e 05 20  |reen memory.... |
00000d60  0d 06 18 05 5d 0d 06 22  05 ed 0d 06 2c 05 e0 0d  |....].."....,...|
00000d70  06 36 05 20 0d 06 40 1b  2a 2a 2a 2a 20 45 51 55  |.6. ..@.**** EQU|
00000d80  61 74 65 20 61 20 42 79  74 65 20 2a 2a 2a 2a 0d  |ate a Byte ****.|
00000d90  06 4a 0f dd 20 a4 45 51  55 42 28 4e 25 29 0d 06  |.J.. .EQUB(N%)..|
00000da0  54 10 3f 50 25 3d 4e 25  20 83 20 32 35 36 0d 06  |T.?P%=N% . 256..|
00000db0  5e 1e e7 20 28 70 61 73  73 25 20 80 20 33 29 20  |^.. (pass% . 3) |
00000dc0  3d 20 33 20 8c 20 f1 20  7e 3f 50 25 0d 06 68 0b  |= 3 . . ~?P%..h.|
00000dd0  50 25 3d 50 25 2b 31 0d  06 72 0a 3d 70 61 73 73  |P%=P%+1..r.=pass|
00000de0  25 0d 06 7c 05 20 0d 06  86 25 2a 2a 2a 2a 20 45  |%..|. ...%**** E|
00000df0  51 55 61 74 65 20 61 20  57 6f 72 64 20 28 32 20  |QUate a Word (2 |
00000e00  62 79 74 65 73 29 20 2a  2a 2a 2a 0d 06 90 0f dd  |bytes) ****.....|
00000e10  20 a4 45 51 55 57 28 4e  25 29 0d 06 9a 10 3f 50  | .EQUW(N%)....?P|
00000e20  25 3d 4e 25 20 83 20 32  35 36 0d 06 a4 11 50 25  |%=N% . 256....P%|
00000e30  3f 31 3d 4e 25 20 81 20  32 35 36 0d 06 ae 27 e7  |?1=N% . 256...'.|
00000e40  20 28 70 61 73 73 25 20  80 20 33 29 20 3d 20 33  | (pass% . 3) = 3|
00000e50  20 8c 20 f1 20 7e 3f 50  25 2c 7e 3f 28 50 25 2b  | . . ~?P%,~?(P%+|
00000e60  31 29 0d 06 b8 0b 50 25  3d 50 25 2b 32 0d 06 c2  |1)....P%=P%+2...|
00000e70  0a 3d 70 61 73 73 25 0d  ff                       |.=pass%..|
00000e79
06-05-88/B\OSB25.m0
06-05-88/B\OSB25.m1
06-05-88/B\OSB25.m2
06-05-88/B\OSB25.m4
06-05-88/B\OSB25.m5