Home » Archimedes archive » Acorn User » AU 1997-Xmas B.adf » Regulars » StarInfo/Vibe/DRAWLINEC

StarInfo/Vibe/DRAWLINEC

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 1997-Xmas B.adf » Regulars
Filename: StarInfo/Vibe/DRAWLINEC
Read OK:
File size: 06BD bytes
Load address: 0000
Exec address: 0000
File contents
   10REM > DRAWLINEC
   20
   30MODE21:OFF
   40SYS"OS_ReadModeVariable",-1,4 TO,,SX%:SX%=2^SX%
   50SYS"OS_ReadModeVariable",-1,5 TO,,SY%:SY%=2^SY%
   60SYS"OS_ReadModeVariable",-1,11 TO,,XS%
   70SYS"OS_ReadModeVariable",-1,12 TO,,YS%
   80W%=SX%*XS%-1:H%=SY%*YS%-1
   90
  100DIM PATH% 100,JC% 15
  110JC%!0=0:JC%!4=0:JC%!8=0:JC%!12=0
  120
  130REPEAT
  140B%=RND(128)
  150X1%=RND(W%-B%)+B%/2:Y1%=RND(H%-B%)+B%/2
  160X2%=RND(W%-B%)+B%/2:Y2%=RND(H%-B%)+B%/2
  170REPEAT:R1%=RND(255):G1%=RND(255):B1%=RND(255):UNTILR1%+G1%+B1%<=255
  180REPEAT:R2%=RND(255):G2%=RND(255):B2%=RND(255):UNTILR2%+G2%+B2%>=511
  190PROCLINE(X1%,Y1%,R1%,G1%,B1%,X2%,Y2%,R2%,G2%,B2%,B%)
  200UNTIL0
  210
  220DEFPROCLINE(X1,Y1,R1%,G1%,B1%,X2,Y2,R2%,G2%,B2%,B)
  230LOCAL L,K%,N%,N1%,XA,YA,XB,YB,R%,G%,B%
  240L=SQR((X2-X1)^2+(Y2-Y1)^2)
  250K%=L/8+RND(8):IFK%<32 K%=24+RND(8)
  260XA=(X1+X2)/2:YA=(Y1+Y2)/2
  270JC%!0=&010000:PROCRGB(R1%,G1%,B1%):PROCL(X1,Y1,XA,YA,B)
  280JC%!0=&000100:PROCRGB(R2%,G2%,B2%):PROCL(XA,YA,X2,Y2,B)
  290JC%!0=&000000
  300FORN%=2TOK%:N1%=K%-N%
  310XA=(X1%*(N%-2)+X2%*(N1%+2))/K%:YA=(Y1%*(N%-2)+Y2%*(N1%+2))/K%
  320XB=(X1*N%+X2*N1%)/K%:YB=(Y1*N%+Y2*N1%)/K%
  330R%=((N%-2)*R1%+(N1%+2)*R2%)/K%:G%=((N%-2)*G1%+(N1%+2)*G2%)/K%
  340B%=((N%-2)*B1%+(N1%+2)*B2%)/K%:PROCRGB(R%,G%,B%)
  350PROCL(XA,YA,XB,YB,B)
  360NEXT
  370XA=(X1%*(K%-1)+X2%)/K%:YA=(Y1%*(K%-1)+Y2%)/K%:XB=X1:YB=Y1
  380R%=((K%-1)*R1%+R2%)/K%:G%=((K%-1)*G1%+G2%)/K%
  390B%=((K%-1)*B1%+B2%)/K%:PROCRGB(R%,G%,B%)
  400PROCL(XA,YA,XB,YB,B)
  410ENDPROC
  420
  430DEFPROCL(X1,Y1,X2,Y2,B)
  440LOCAL PP%,W
  450X1=256*X1:Y1=256*Y1:X2=256*X2:Y2=256*Y2
  460PATH%!PP%=2:PP%+=4:PATH%!PP%=X1:PP%+=4:PATH%!PP%=Y1:PP%+=4
  470PATH%!PP%=8:PP%+=4:PATH%!PP%=X2:PP%+=4:PATH%!PP%=Y2:PP%+=4
  480PATH%!PP%=0:PP%+=4:PATH%!PP%=PP%
  490W=256*B
  500SYS"Draw_Stroke",PATH%,0,0,0,W,JC%,0
  510ENDPROC
  520
  530DEFPROCRGB(R%,G%,B%)
  540LOCAL C%:C%=(R%<<8)+(G%<<16)+(B%<<24)
  550SYS "ColourTrans_SetGCOL",C%,,,&100,0
  560ENDPROC

� > DRAWLINEC

	�21:�
(1ș"OS_ReadModeVariable",-1,4 �,,SX%:SX%=2^SX%
21ș"OS_ReadModeVariable",-1,5 �,,SY%:SY%=2^SY%
<(ș"OS_ReadModeVariable",-1,11 �,,XS%
F(ș"OS_ReadModeVariable",-1,12 �,,YS%
PW%=SX%*XS%-1:H%=SY%*YS%-1
Z
d� PATH% 100,JC% 15
n$JC%!0=0:JC%!4=0:JC%!8=0:JC%!12=0
x
��
�
B%=�(128)
�'X1%=�(W%-B%)+B%/2:Y1%=�(H%-B%)+B%/2
�'X2%=�(W%-B%)+B%/2:Y2%=�(H%-B%)+B%/2
�8�:R1%=�(255):G1%=�(255):B1%=�(255):�R1%+G1%+B1%<=255
�8�:R2%=�(255):G2%=�(255):B2%=�(255):�R2%+G2%+B2%>=511
�5�LINE(X1%,Y1%,R1%,G1%,B1%,X2%,Y2%,R2%,G2%,B2%,B%)
��0
�
�1��LINE(X1,Y1,R1%,G1%,B1%,X2,Y2,R2%,G2%,B2%,B)
�&� L,K%,N%,N1%,XA,YA,XB,YB,R%,G%,B%
�L=�((X2-X1)^2+(Y2-Y1)^2)
�!K%=L/8+�(8):�K%<32 K%=24+�(8)
XA=(X1+X2)/2:YA=(Y1+Y2)/2
5JC%!0=&010000:�RGB(R1%,G1%,B1%):�L(X1,Y1,XA,YA,B)
5JC%!0=&000100:�RGB(R2%,G2%,B2%):�L(XA,YA,X2,Y2,B)
"JC%!0=&000000
,�N%=2�K%:N1%=K%-N%
6AXA=(X1%*(N%-2)+X2%*(N1%+2))/K%:YA=(Y1%*(N%-2)+Y2%*(N1%+2))/K%
@-XB=(X1*N%+X2*N1%)/K%:YB=(Y1*N%+Y2*N1%)/K%
JAR%=((N%-2)*R1%+(N1%+2)*R2%)/K%:G%=((N%-2)*G1%+(N1%+2)*G2%)/K%
T1B%=((N%-2)*B1%+(N1%+2)*B2%)/K%:�RGB(R%,G%,B%)
^�L(XA,YA,XB,YB,B)
h�
r=XA=(X1%*(K%-1)+X2%)/K%:YA=(Y1%*(K%-1)+Y2%)/K%:XB=X1:YB=Y1
|1R%=((K%-1)*R1%+R2%)/K%:G%=((K%-1)*G1%+G2%)/K%
�)B%=((K%-1)*B1%+B2%)/K%:�RGB(R%,G%,B%)
��L(XA,YA,XB,YB,B)
��
�
���L(X1,Y1,X2,Y2,B)
�� PP%,W
�+X1=256*X1:Y1=256*Y1:X2=256*X2:Y2=256*Y2
�>PATH%!PP%=2:PP%+=4:PATH%!PP%=X1:PP%+=4:PATH%!PP%=Y1:PP%+=4
�>PATH%!PP%=8:PP%+=4:PATH%!PP%=X2:PP%+=4:PATH%!PP%=Y2:PP%+=4
�$PATH%!PP%=0:PP%+=4:PATH%!PP%=PP%
�W=256*B
�'ș"Draw_Stroke",PATH%,0,0,0,W,JC%,0
��

��RGB(R%,G%,B%)
%� C%:C%=(R%<<8)+(G%<<16)+(B%<<24)
&(ș "ColourTrans_SetGCOL",C%,,,&100,0
0�
�
00000000  0d 00 0a 11 f4 20 3e 20  44 52 41 57 4c 49 4e 45  |..... > DRAWLINE|
00000010  43 0d 00 14 04 0d 00 1e  09 eb 32 31 3a 87 0d 00  |C.........21:...|
00000020  28 31 c8 99 22 4f 53 5f  52 65 61 64 4d 6f 64 65  |(1.."OS_ReadMode|
00000030  56 61 72 69 61 62 6c 65  22 2c 2d 31 2c 34 20 b8  |Variable",-1,4 .|
00000040  2c 2c 53 58 25 3a 53 58  25 3d 32 5e 53 58 25 0d  |,,SX%:SX%=2^SX%.|
00000050  00 32 31 c8 99 22 4f 53  5f 52 65 61 64 4d 6f 64  |.21.."OS_ReadMod|
00000060  65 56 61 72 69 61 62 6c  65 22 2c 2d 31 2c 35 20  |eVariable",-1,5 |
00000070  b8 2c 2c 53 59 25 3a 53  59 25 3d 32 5e 53 59 25  |.,,SY%:SY%=2^SY%|
00000080  0d 00 3c 28 c8 99 22 4f  53 5f 52 65 61 64 4d 6f  |..<(.."OS_ReadMo|
00000090  64 65 56 61 72 69 61 62  6c 65 22 2c 2d 31 2c 31  |deVariable",-1,1|
000000a0  31 20 b8 2c 2c 58 53 25  0d 00 46 28 c8 99 22 4f  |1 .,,XS%..F(.."O|
000000b0  53 5f 52 65 61 64 4d 6f  64 65 56 61 72 69 61 62  |S_ReadModeVariab|
000000c0  6c 65 22 2c 2d 31 2c 31  32 20 b8 2c 2c 59 53 25  |le",-1,12 .,,YS%|
000000d0  0d 00 50 1d 57 25 3d 53  58 25 2a 58 53 25 2d 31  |..P.W%=SX%*XS%-1|
000000e0  3a 48 25 3d 53 59 25 2a  59 53 25 2d 31 0d 00 5a  |:H%=SY%*YS%-1..Z|
000000f0  04 0d 00 64 16 de 20 50  41 54 48 25 20 31 30 30  |...d.. PATH% 100|
00000100  2c 4a 43 25 20 31 35 0d  00 6e 24 4a 43 25 21 30  |,JC% 15..n$JC%!0|
00000110  3d 30 3a 4a 43 25 21 34  3d 30 3a 4a 43 25 21 38  |=0:JC%!4=0:JC%!8|
00000120  3d 30 3a 4a 43 25 21 31  32 3d 30 0d 00 78 04 0d  |=0:JC%!12=0..x..|
00000130  00 82 05 f5 0d 00 8c 0d  42 25 3d b3 28 31 32 38  |........B%=.(128|
00000140  29 0d 00 96 27 58 31 25  3d b3 28 57 25 2d 42 25  |)...'X1%=.(W%-B%|
00000150  29 2b 42 25 2f 32 3a 59  31 25 3d b3 28 48 25 2d  |)+B%/2:Y1%=.(H%-|
00000160  42 25 29 2b 42 25 2f 32  0d 00 a0 27 58 32 25 3d  |B%)+B%/2...'X2%=|
00000170  b3 28 57 25 2d 42 25 29  2b 42 25 2f 32 3a 59 32  |.(W%-B%)+B%/2:Y2|
00000180  25 3d b3 28 48 25 2d 42  25 29 2b 42 25 2f 32 0d  |%=.(H%-B%)+B%/2.|
00000190  00 aa 38 f5 3a 52 31 25  3d b3 28 32 35 35 29 3a  |..8.:R1%=.(255):|
000001a0  47 31 25 3d b3 28 32 35  35 29 3a 42 31 25 3d b3  |G1%=.(255):B1%=.|
000001b0  28 32 35 35 29 3a fd 52  31 25 2b 47 31 25 2b 42  |(255):.R1%+G1%+B|
000001c0  31 25 3c 3d 32 35 35 0d  00 b4 38 f5 3a 52 32 25  |1%<=255...8.:R2%|
000001d0  3d b3 28 32 35 35 29 3a  47 32 25 3d b3 28 32 35  |=.(255):G2%=.(25|
000001e0  35 29 3a 42 32 25 3d b3  28 32 35 35 29 3a fd 52  |5):B2%=.(255):.R|
000001f0  32 25 2b 47 32 25 2b 42  32 25 3e 3d 35 31 31 0d  |2%+G2%+B2%>=511.|
00000200  00 be 35 f2 4c 49 4e 45  28 58 31 25 2c 59 31 25  |..5.LINE(X1%,Y1%|
00000210  2c 52 31 25 2c 47 31 25  2c 42 31 25 2c 58 32 25  |,R1%,G1%,B1%,X2%|
00000220  2c 59 32 25 2c 52 32 25  2c 47 32 25 2c 42 32 25  |,Y2%,R2%,G2%,B2%|
00000230  2c 42 25 29 0d 00 c8 06  fd 30 0d 00 d2 04 0d 00  |,B%).....0......|
00000240  dc 31 dd f2 4c 49 4e 45  28 58 31 2c 59 31 2c 52  |.1..LINE(X1,Y1,R|
00000250  31 25 2c 47 31 25 2c 42  31 25 2c 58 32 2c 59 32  |1%,G1%,B1%,X2,Y2|
00000260  2c 52 32 25 2c 47 32 25  2c 42 32 25 2c 42 29 0d  |,R2%,G2%,B2%,B).|
00000270  00 e6 26 ea 20 4c 2c 4b  25 2c 4e 25 2c 4e 31 25  |..&. L,K%,N%,N1%|
00000280  2c 58 41 2c 59 41 2c 58  42 2c 59 42 2c 52 25 2c  |,XA,YA,XB,YB,R%,|
00000290  47 25 2c 42 25 0d 00 f0  1c 4c 3d b6 28 28 58 32  |G%,B%....L=.((X2|
000002a0  2d 58 31 29 5e 32 2b 28  59 32 2d 59 31 29 5e 32  |-X1)^2+(Y2-Y1)^2|
000002b0  29 0d 00 fa 21 4b 25 3d  4c 2f 38 2b b3 28 38 29  |)...!K%=L/8+.(8)|
000002c0  3a e7 4b 25 3c 33 32 20  4b 25 3d 32 34 2b b3 28  |:.K%<32 K%=24+.(|
000002d0  38 29 0d 01 04 1d 58 41  3d 28 58 31 2b 58 32 29  |8)....XA=(X1+X2)|
000002e0  2f 32 3a 59 41 3d 28 59  31 2b 59 32 29 2f 32 0d  |/2:YA=(Y1+Y2)/2.|
000002f0  01 0e 35 4a 43 25 21 30  3d 26 30 31 30 30 30 30  |..5JC%!0=&010000|
00000300  3a f2 52 47 42 28 52 31  25 2c 47 31 25 2c 42 31  |:.RGB(R1%,G1%,B1|
00000310  25 29 3a f2 4c 28 58 31  2c 59 31 2c 58 41 2c 59  |%):.L(X1,Y1,XA,Y|
00000320  41 2c 42 29 0d 01 18 35  4a 43 25 21 30 3d 26 30  |A,B)...5JC%!0=&0|
00000330  30 30 31 30 30 3a f2 52  47 42 28 52 32 25 2c 47  |00100:.RGB(R2%,G|
00000340  32 25 2c 42 32 25 29 3a  f2 4c 28 58 41 2c 59 41  |2%,B2%):.L(XA,YA|
00000350  2c 58 32 2c 59 32 2c 42  29 0d 01 22 11 4a 43 25  |,X2,Y2,B)..".JC%|
00000360  21 30 3d 26 30 30 30 30  30 30 0d 01 2c 16 e3 4e  |!0=&000000..,..N|
00000370  25 3d 32 b8 4b 25 3a 4e  31 25 3d 4b 25 2d 4e 25  |%=2.K%:N1%=K%-N%|
00000380  0d 01 36 41 58 41 3d 28  58 31 25 2a 28 4e 25 2d  |..6AXA=(X1%*(N%-|
00000390  32 29 2b 58 32 25 2a 28  4e 31 25 2b 32 29 29 2f  |2)+X2%*(N1%+2))/|
000003a0  4b 25 3a 59 41 3d 28 59  31 25 2a 28 4e 25 2d 32  |K%:YA=(Y1%*(N%-2|
000003b0  29 2b 59 32 25 2a 28 4e  31 25 2b 32 29 29 2f 4b  |)+Y2%*(N1%+2))/K|
000003c0  25 0d 01 40 2d 58 42 3d  28 58 31 2a 4e 25 2b 58  |%..@-XB=(X1*N%+X|
000003d0  32 2a 4e 31 25 29 2f 4b  25 3a 59 42 3d 28 59 31  |2*N1%)/K%:YB=(Y1|
000003e0  2a 4e 25 2b 59 32 2a 4e  31 25 29 2f 4b 25 0d 01  |*N%+Y2*N1%)/K%..|
000003f0  4a 41 52 25 3d 28 28 4e  25 2d 32 29 2a 52 31 25  |JAR%=((N%-2)*R1%|
00000400  2b 28 4e 31 25 2b 32 29  2a 52 32 25 29 2f 4b 25  |+(N1%+2)*R2%)/K%|
00000410  3a 47 25 3d 28 28 4e 25  2d 32 29 2a 47 31 25 2b  |:G%=((N%-2)*G1%+|
00000420  28 4e 31 25 2b 32 29 2a  47 32 25 29 2f 4b 25 0d  |(N1%+2)*G2%)/K%.|
00000430  01 54 31 42 25 3d 28 28  4e 25 2d 32 29 2a 42 31  |.T1B%=((N%-2)*B1|
00000440  25 2b 28 4e 31 25 2b 32  29 2a 42 32 25 29 2f 4b  |%+(N1%+2)*B2%)/K|
00000450  25 3a f2 52 47 42 28 52  25 2c 47 25 2c 42 25 29  |%:.RGB(R%,G%,B%)|
00000460  0d 01 5e 15 f2 4c 28 58  41 2c 59 41 2c 58 42 2c  |..^..L(XA,YA,XB,|
00000470  59 42 2c 42 29 0d 01 68  05 ed 0d 01 72 3d 58 41  |YB,B)..h....r=XA|
00000480  3d 28 58 31 25 2a 28 4b  25 2d 31 29 2b 58 32 25  |=(X1%*(K%-1)+X2%|
00000490  29 2f 4b 25 3a 59 41 3d  28 59 31 25 2a 28 4b 25  |)/K%:YA=(Y1%*(K%|
000004a0  2d 31 29 2b 59 32 25 29  2f 4b 25 3a 58 42 3d 58  |-1)+Y2%)/K%:XB=X|
000004b0  31 3a 59 42 3d 59 31 0d  01 7c 31 52 25 3d 28 28  |1:YB=Y1..|1R%=((|
000004c0  4b 25 2d 31 29 2a 52 31  25 2b 52 32 25 29 2f 4b  |K%-1)*R1%+R2%)/K|
000004d0  25 3a 47 25 3d 28 28 4b  25 2d 31 29 2a 47 31 25  |%:G%=((K%-1)*G1%|
000004e0  2b 47 32 25 29 2f 4b 25  0d 01 86 29 42 25 3d 28  |+G2%)/K%...)B%=(|
000004f0  28 4b 25 2d 31 29 2a 42  31 25 2b 42 32 25 29 2f  |(K%-1)*B1%+B2%)/|
00000500  4b 25 3a f2 52 47 42 28  52 25 2c 47 25 2c 42 25  |K%:.RGB(R%,G%,B%|
00000510  29 0d 01 90 15 f2 4c 28  58 41 2c 59 41 2c 58 42  |).....L(XA,YA,XB|
00000520  2c 59 42 2c 42 29 0d 01  9a 05 e1 0d 01 a4 04 0d  |,YB,B)..........|
00000530  01 ae 16 dd f2 4c 28 58  31 2c 59 31 2c 58 32 2c  |.....L(X1,Y1,X2,|
00000540  59 32 2c 42 29 0d 01 b8  0b ea 20 50 50 25 2c 57  |Y2,B)..... PP%,W|
00000550  0d 01 c2 2b 58 31 3d 32  35 36 2a 58 31 3a 59 31  |...+X1=256*X1:Y1|
00000560  3d 32 35 36 2a 59 31 3a  58 32 3d 32 35 36 2a 58  |=256*Y1:X2=256*X|
00000570  32 3a 59 32 3d 32 35 36  2a 59 32 0d 01 cc 3e 50  |2:Y2=256*Y2...>P|
00000580  41 54 48 25 21 50 50 25  3d 32 3a 50 50 25 2b 3d  |ATH%!PP%=2:PP%+=|
00000590  34 3a 50 41 54 48 25 21  50 50 25 3d 58 31 3a 50  |4:PATH%!PP%=X1:P|
000005a0  50 25 2b 3d 34 3a 50 41  54 48 25 21 50 50 25 3d  |P%+=4:PATH%!PP%=|
000005b0  59 31 3a 50 50 25 2b 3d  34 0d 01 d6 3e 50 41 54  |Y1:PP%+=4...>PAT|
000005c0  48 25 21 50 50 25 3d 38  3a 50 50 25 2b 3d 34 3a  |H%!PP%=8:PP%+=4:|
000005d0  50 41 54 48 25 21 50 50  25 3d 58 32 3a 50 50 25  |PATH%!PP%=X2:PP%|
000005e0  2b 3d 34 3a 50 41 54 48  25 21 50 50 25 3d 59 32  |+=4:PATH%!PP%=Y2|
000005f0  3a 50 50 25 2b 3d 34 0d  01 e0 24 50 41 54 48 25  |:PP%+=4...$PATH%|
00000600  21 50 50 25 3d 30 3a 50  50 25 2b 3d 34 3a 50 41  |!PP%=0:PP%+=4:PA|
00000610  54 48 25 21 50 50 25 3d  50 50 25 0d 01 ea 0b 57  |TH%!PP%=PP%....W|
00000620  3d 32 35 36 2a 42 0d 01  f4 27 c8 99 22 44 72 61  |=256*B...'.."Dra|
00000630  77 5f 53 74 72 6f 6b 65  22 2c 50 41 54 48 25 2c  |w_Stroke",PATH%,|
00000640  30 2c 30 2c 30 2c 57 2c  4a 43 25 2c 30 0d 01 fe  |0,0,0,W,JC%,0...|
00000650  05 e1 0d 02 08 04 0d 02  12 13 dd f2 52 47 42 28  |............RGB(|
00000660  52 25 2c 47 25 2c 42 25  29 0d 02 1c 25 ea 20 43  |R%,G%,B%)...%. C|
00000670  25 3a 43 25 3d 28 52 25  3c 3c 38 29 2b 28 47 25  |%:C%=(R%<<8)+(G%|
00000680  3c 3c 31 36 29 2b 28 42  25 3c 3c 32 34 29 0d 02  |<<16)+(B%<<24)..|
00000690  26 28 c8 99 20 22 43 6f  6c 6f 75 72 54 72 61 6e  |&(.. "ColourTran|
000006a0  73 5f 53 65 74 47 43 4f  4c 22 2c 43 25 2c 2c 2c  |s_SetGCOL",C%,,,|
000006b0  26 31 30 30 2c 30 0d 02  30 05 e1 0d ff           |&100,0..0....|
000006bd