Home » CEEFAX disks » telesoftware7.adl » PICCY

PICCY

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: PICCY
Read OK:
File size: 0592 bytes
Load address: 0800
Exec address: 802B
File contents
   10REM
   20REM
   30REM
   40REM
   50MODE0:PROCvdu
   60ltx%=-1:lty%=1:ltz%=-1
   70sr=SQR(ltx%*ltx%+lty%*lty%+ltz%*ltz%)
   80np%=790:s%=12
   90DIM nd%(np%/s%+1),cd%(np%/s%+1)
  100v%=50:cv=COSRAD(v%):sv=SINRAD(v%)
  110T$="COS(2*r)*8"
  120wx%=0:wy%=200:lx%=0:ly%=0
  130hx%=10:hy%=10:mx%=(lx%+hx%)/2
  140lz%=0:hz%=150:my%=(ly%+hy%)/2
  150dx=(hx%-lx%)/np%:dy=(hy%-ly%)/np%
  160dz=(hz%-lz%)/np%
  170FORy%=np% TO 0 STEP -s%
  180FORA%=1 TO np%/s%:cd%(A%)=nd%(A%):NEXT
  190FORx%=0 TO np% STEP s%
  200x=x%*dx+lx%:y=y%*dy+ly%
  210r=SQR((mx%-x)*(mx%-x)+(my%-y)*(my%-y))
  220z%=EVAL(T$)/dz:nd%(x%/s%)=z%
  230IF x%=0 OR y%=np% ELSE PROCplot(x%,y%,z%)
  240z1%=z%:NEXT:NEXT:VDU4:END
  250DEFPROCplot(x%,y%,z%)
  260col%=FNcol(x%,y%,z%,x%-s%,y%,z1%,x%-s%,y%+s%,cd%(x%/s%-1),x%,y%+s%,cd%(x%/s%))
  270col%=col%/2.22
  280xs%=wx%+x%+y%*cv:ys%=wy%+z%+y%*sv
  290MOVE xs%,ys%:GCOL 2,0:VDU 137:GCOL 0,3:MOVE xs%,ys%:VDU 128+col%
  300ENDPROC
  310DEFFNcol(a1%,b1%,c1%,a2%,b2%,c2%,a3%,b3%,c3%,a4%,b4%,c4%)
  320xc%=a1%-a3%:yc%=b1%-b3%:zc%=c1%-c3%
  330xh%=a2%-a4%:yh%=b2%-b4%:zh%=c2%-c4%
  340ann%=DEG(ACS((xc%*ltx%+yc%*lty%+zc%*ltz%)/(SQR(xc%*xc%+yc%*yc%+zc%*zc%)*sr)))
  350ano%=DEG(ACS((xh%*ltx%+yh%*lty%+zh%*ltz%)/(SQR(xh%*xh%+yh%*yh%+zh%*zh%)*sr)))
  360IF ann%>90 ann%=180-ann%
  370IF ano%>90 ano%=180-ano%
  380=ann%*ano%/405
  390DEFPROCvdu:VDU23,128,0;0;0;0;
  400VDU23,129,0;0;0;0,128
  410VDU23,130,0;0;0,64,0,128
  420VDU23,131,0;0;0,64,128,32
  430VDU23,132,0;0;0,160,32,64
  440VDU23,133,0;0;0,160,32,160
  450VDU23,134,0;0;0,160,96,160
  460VDU23,135,0;0;0,192,96,160
  470VDU23,136,0;0;0,192,192,160
  480VDU23,137,0;0;0,224,224,224,5
  490ENDPROC

�
�
�
(�
2�0:�vdu
<ltx%=-1:lty%=1:ltz%=-1
F'sr=�(ltx%*ltx%+lty%*lty%+ltz%*ltz%)
Pnp%=790:s%=12
Z!� nd%(np%/s%+1),cd%(np%/s%+1)
dv%=50:cv=��(v%):sv=��(v%)
nT$="COS(2*r)*8"
xwx%=0:wy%=200:lx%=0:ly%=0
�!hx%=10:hy%=10:mx%=(lx%+hx%)/2
�!lz%=0:hz%=150:my%=(ly%+hy%)/2
�%dx=(hx%-lx%)/np%:dy=(hy%-ly%)/np%
�dz=(hz%-lz%)/np%
��y%=np% � 0 � -s%
�$�A%=1 � np%/s%:cd%(A%)=nd%(A%):�
��x%=0 � np% � s%
�x=x%*dx+lx%:y=y%*dy+ly%
�(r=�((mx%-x)*(mx%-x)+(my%-y)*(my%-y))
�z%=�(T$)/dz:nd%(x%/s%)=z%
�%� x%=0 � y%=np% � �plot(x%,y%,z%)
�z1%=z%:�:�:�4:�
���plot(x%,y%,z%)
Qcol%=�col(x%,y%,z%,x%-s%,y%,z1%,x%-s%,y%+s%,cd%(x%/s%-1),x%,y%+s%,cd%(x%/s%))
col%=col%/2.22
%xs%=wx%+x%+y%*cv:ys%=wy%+z%+y%*sv
"4� xs%,ys%:� 2,0:� 137:� 0,3:� xs%,ys%:� 128+col%
,�
6:ݤcol(a1%,b1%,c1%,a2%,b2%,c2%,a3%,b3%,c3%,a4%,b4%,c4%)
@'xc%=a1%-a3%:yc%=b1%-b3%:zc%=c1%-c3%
J'xh%=a2%-a4%:yh%=b2%-b4%:zh%=c2%-c4%
TKann%=�(�((xc%*ltx%+yc%*lty%+zc%*ltz%)/(�(xc%*xc%+yc%*yc%+zc%*zc%)*sr)))
^Kano%=�(�((xh%*ltx%+yh%*lty%+zh%*ltz%)/(�(xh%*xh%+yh%*yh%+zh%*zh%)*sr)))
h� ann%>90 ann%=180-ann%
r� ano%>90 ano%=180-ano%
|=ann%*ano%/405
���vdu:�23,128,0;0;0;0;
��23,129,0;0;0;0,128
��23,130,0;0;0,64,0,128
��23,131,0;0;0,64,128,32
��23,132,0;0;0,160,32,64
��23,133,0;0;0,160,32,160
��23,134,0;0;0,160,96,160
��23,135,0;0;0,192,96,160
��23,136,0;0;0,192,192,160
��23,137,0;0;0,224,224,224,5
��
�
00000000  0d 00 0a 05 f4 0d 00 14  05 f4 0d 00 1e 05 f4 0d  |................|
00000010  00 28 05 f4 0d 00 32 0b  eb 30 3a f2 76 64 75 0d  |.(....2..0:.vdu.|
00000020  00 3c 1a 6c 74 78 25 3d  2d 31 3a 6c 74 79 25 3d  |.<.ltx%=-1:lty%=|
00000030  31 3a 6c 74 7a 25 3d 2d  31 0d 00 46 27 73 72 3d  |1:ltz%=-1..F'sr=|
00000040  b6 28 6c 74 78 25 2a 6c  74 78 25 2b 6c 74 79 25  |.(ltx%*ltx%+lty%|
00000050  2a 6c 74 79 25 2b 6c 74  7a 25 2a 6c 74 7a 25 29  |*lty%+ltz%*ltz%)|
00000060  0d 00 50 11 6e 70 25 3d  37 39 30 3a 73 25 3d 31  |..P.np%=790:s%=1|
00000070  32 0d 00 5a 21 de 20 6e  64 25 28 6e 70 25 2f 73  |2..Z!. nd%(np%/s|
00000080  25 2b 31 29 2c 63 64 25  28 6e 70 25 2f 73 25 2b  |%+1),cd%(np%/s%+|
00000090  31 29 0d 00 64 1d 76 25  3d 35 30 3a 63 76 3d 9b  |1)..d.v%=50:cv=.|
000000a0  b2 28 76 25 29 3a 73 76  3d b5 b2 28 76 25 29 0d  |.(v%):sv=..(v%).|
000000b0  00 6e 13 54 24 3d 22 43  4f 53 28 32 2a 72 29 2a  |.n.T$="COS(2*r)*|
000000c0  38 22 0d 00 78 1d 77 78  25 3d 30 3a 77 79 25 3d  |8"..x.wx%=0:wy%=|
000000d0  32 30 30 3a 6c 78 25 3d  30 3a 6c 79 25 3d 30 0d  |200:lx%=0:ly%=0.|
000000e0  00 82 21 68 78 25 3d 31  30 3a 68 79 25 3d 31 30  |..!hx%=10:hy%=10|
000000f0  3a 6d 78 25 3d 28 6c 78  25 2b 68 78 25 29 2f 32  |:mx%=(lx%+hx%)/2|
00000100  0d 00 8c 21 6c 7a 25 3d  30 3a 68 7a 25 3d 31 35  |...!lz%=0:hz%=15|
00000110  30 3a 6d 79 25 3d 28 6c  79 25 2b 68 79 25 29 2f  |0:my%=(ly%+hy%)/|
00000120  32 0d 00 96 25 64 78 3d  28 68 78 25 2d 6c 78 25  |2...%dx=(hx%-lx%|
00000130  29 2f 6e 70 25 3a 64 79  3d 28 68 79 25 2d 6c 79  |)/np%:dy=(hy%-ly|
00000140  25 29 2f 6e 70 25 0d 00  a0 14 64 7a 3d 28 68 7a  |%)/np%....dz=(hz|
00000150  25 2d 6c 7a 25 29 2f 6e  70 25 0d 00 aa 15 e3 79  |%-lz%)/np%.....y|
00000160  25 3d 6e 70 25 20 b8 20  30 20 88 20 2d 73 25 0d  |%=np% . 0 . -s%.|
00000170  00 b4 24 e3 41 25 3d 31  20 b8 20 6e 70 25 2f 73  |..$.A%=1 . np%/s|
00000180  25 3a 63 64 25 28 41 25  29 3d 6e 64 25 28 41 25  |%:cd%(A%)=nd%(A%|
00000190  29 3a ed 0d 00 be 14 e3  78 25 3d 30 20 b8 20 6e  |):......x%=0 . n|
000001a0  70 25 20 88 20 73 25 0d  00 c8 1b 78 3d 78 25 2a  |p% . s%....x=x%*|
000001b0  64 78 2b 6c 78 25 3a 79  3d 79 25 2a 64 79 2b 6c  |dx+lx%:y=y%*dy+l|
000001c0  79 25 0d 00 d2 28 72 3d  b6 28 28 6d 78 25 2d 78  |y%...(r=.((mx%-x|
000001d0  29 2a 28 6d 78 25 2d 78  29 2b 28 6d 79 25 2d 79  |)*(mx%-x)+(my%-y|
000001e0  29 2a 28 6d 79 25 2d 79  29 29 0d 00 dc 1d 7a 25  |)*(my%-y))....z%|
000001f0  3d a0 28 54 24 29 2f 64  7a 3a 6e 64 25 28 78 25  |=.(T$)/dz:nd%(x%|
00000200  2f 73 25 29 3d 7a 25 0d  00 e6 25 e7 20 78 25 3d  |/s%)=z%...%. x%=|
00000210  30 20 84 20 79 25 3d 6e  70 25 20 8b 20 f2 70 6c  |0 . y%=np% . .pl|
00000220  6f 74 28 78 25 2c 79 25  2c 7a 25 29 0d 00 f0 13  |ot(x%,y%,z%)....|
00000230  7a 31 25 3d 7a 25 3a ed  3a ed 3a ef 34 3a e0 0d  |z1%=z%:.:.:.4:..|
00000240  00 fa 14 dd f2 70 6c 6f  74 28 78 25 2c 79 25 2c  |.....plot(x%,y%,|
00000250  7a 25 29 0d 01 04 51 63  6f 6c 25 3d a4 63 6f 6c  |z%)...Qcol%=.col|
00000260  28 78 25 2c 79 25 2c 7a  25 2c 78 25 2d 73 25 2c  |(x%,y%,z%,x%-s%,|
00000270  79 25 2c 7a 31 25 2c 78  25 2d 73 25 2c 79 25 2b  |y%,z1%,x%-s%,y%+|
00000280  73 25 2c 63 64 25 28 78  25 2f 73 25 2d 31 29 2c  |s%,cd%(x%/s%-1),|
00000290  78 25 2c 79 25 2b 73 25  2c 63 64 25 28 78 25 2f  |x%,y%+s%,cd%(x%/|
000002a0  73 25 29 29 0d 01 0e 12  63 6f 6c 25 3d 63 6f 6c  |s%))....col%=col|
000002b0  25 2f 32 2e 32 32 0d 01  18 25 78 73 25 3d 77 78  |%/2.22...%xs%=wx|
000002c0  25 2b 78 25 2b 79 25 2a  63 76 3a 79 73 25 3d 77  |%+x%+y%*cv:ys%=w|
000002d0  79 25 2b 7a 25 2b 79 25  2a 73 76 0d 01 22 34 ec  |y%+z%+y%*sv.."4.|
000002e0  20 78 73 25 2c 79 73 25  3a e6 20 32 2c 30 3a ef  | xs%,ys%:. 2,0:.|
000002f0  20 31 33 37 3a e6 20 30  2c 33 3a ec 20 78 73 25  | 137:. 0,3:. xs%|
00000300  2c 79 73 25 3a ef 20 31  32 38 2b 63 6f 6c 25 0d  |,ys%:. 128+col%.|
00000310  01 2c 05 e1 0d 01 36 3a  dd a4 63 6f 6c 28 61 31  |.,....6:..col(a1|
00000320  25 2c 62 31 25 2c 63 31  25 2c 61 32 25 2c 62 32  |%,b1%,c1%,a2%,b2|
00000330  25 2c 63 32 25 2c 61 33  25 2c 62 33 25 2c 63 33  |%,c2%,a3%,b3%,c3|
00000340  25 2c 61 34 25 2c 62 34  25 2c 63 34 25 29 0d 01  |%,a4%,b4%,c4%)..|
00000350  40 27 78 63 25 3d 61 31  25 2d 61 33 25 3a 79 63  |@'xc%=a1%-a3%:yc|
00000360  25 3d 62 31 25 2d 62 33  25 3a 7a 63 25 3d 63 31  |%=b1%-b3%:zc%=c1|
00000370  25 2d 63 33 25 0d 01 4a  27 78 68 25 3d 61 32 25  |%-c3%..J'xh%=a2%|
00000380  2d 61 34 25 3a 79 68 25  3d 62 32 25 2d 62 34 25  |-a4%:yh%=b2%-b4%|
00000390  3a 7a 68 25 3d 63 32 25  2d 63 34 25 0d 01 54 4b  |:zh%=c2%-c4%..TK|
000003a0  61 6e 6e 25 3d 9d 28 95  28 28 78 63 25 2a 6c 74  |ann%=.(.((xc%*lt|
000003b0  78 25 2b 79 63 25 2a 6c  74 79 25 2b 7a 63 25 2a  |x%+yc%*lty%+zc%*|
000003c0  6c 74 7a 25 29 2f 28 b6  28 78 63 25 2a 78 63 25  |ltz%)/(.(xc%*xc%|
000003d0  2b 79 63 25 2a 79 63 25  2b 7a 63 25 2a 7a 63 25  |+yc%*yc%+zc%*zc%|
000003e0  29 2a 73 72 29 29 29 0d  01 5e 4b 61 6e 6f 25 3d  |)*sr)))..^Kano%=|
000003f0  9d 28 95 28 28 78 68 25  2a 6c 74 78 25 2b 79 68  |.(.((xh%*ltx%+yh|
00000400  25 2a 6c 74 79 25 2b 7a  68 25 2a 6c 74 7a 25 29  |%*lty%+zh%*ltz%)|
00000410  2f 28 b6 28 78 68 25 2a  78 68 25 2b 79 68 25 2a  |/(.(xh%*xh%+yh%*|
00000420  79 68 25 2b 7a 68 25 2a  7a 68 25 29 2a 73 72 29  |yh%+zh%*zh%)*sr)|
00000430  29 29 0d 01 68 1b e7 20  61 6e 6e 25 3e 39 30 20  |))..h.. ann%>90 |
00000440  61 6e 6e 25 3d 31 38 30  2d 61 6e 6e 25 0d 01 72  |ann%=180-ann%..r|
00000450  1b e7 20 61 6e 6f 25 3e  39 30 20 61 6e 6f 25 3d  |.. ano%>90 ano%=|
00000460  31 38 30 2d 61 6e 6f 25  0d 01 7c 12 3d 61 6e 6e  |180-ano%..|.=ann|
00000470  25 2a 61 6e 6f 25 2f 34  30 35 0d 01 86 1a dd f2  |%*ano%/405......|
00000480  76 64 75 3a ef 32 33 2c  31 32 38 2c 30 3b 30 3b  |vdu:.23,128,0;0;|
00000490  30 3b 30 3b 0d 01 90 17  ef 32 33 2c 31 32 39 2c  |0;0;.....23,129,|
000004a0  30 3b 30 3b 30 3b 30 2c  31 32 38 0d 01 9a 1a ef  |0;0;0;0,128.....|
000004b0  32 33 2c 31 33 30 2c 30  3b 30 3b 30 2c 36 34 2c  |23,130,0;0;0,64,|
000004c0  30 2c 31 32 38 0d 01 a4  1b ef 32 33 2c 31 33 31  |0,128.....23,131|
000004d0  2c 30 3b 30 3b 30 2c 36  34 2c 31 32 38 2c 33 32  |,0;0;0,64,128,32|
000004e0  0d 01 ae 1b ef 32 33 2c  31 33 32 2c 30 3b 30 3b  |.....23,132,0;0;|
000004f0  30 2c 31 36 30 2c 33 32  2c 36 34 0d 01 b8 1c ef  |0,160,32,64.....|
00000500  32 33 2c 31 33 33 2c 30  3b 30 3b 30 2c 31 36 30  |23,133,0;0;0,160|
00000510  2c 33 32 2c 31 36 30 0d  01 c2 1c ef 32 33 2c 31  |,32,160.....23,1|
00000520  33 34 2c 30 3b 30 3b 30  2c 31 36 30 2c 39 36 2c  |34,0;0;0,160,96,|
00000530  31 36 30 0d 01 cc 1c ef  32 33 2c 31 33 35 2c 30  |160.....23,135,0|
00000540  3b 30 3b 30 2c 31 39 32  2c 39 36 2c 31 36 30 0d  |;0;0,192,96,160.|
00000550  01 d6 1d ef 32 33 2c 31  33 36 2c 30 3b 30 3b 30  |....23,136,0;0;0|
00000560  2c 31 39 32 2c 31 39 32  2c 31 36 30 0d 01 e0 1f  |,192,192,160....|
00000570  ef 32 33 2c 31 33 37 2c  30 3b 30 3b 30 2c 32 32  |.23,137,0;0;0,22|
00000580  34 2c 32 32 34 2c 32 32  34 2c 35 0d 01 ea 05 e1  |4,224,224,5.....|
00000590  0d ff                                             |..|
00000592
PICCY.m0
PICCY.m1
PICCY.m2
PICCY.m4
PICCY.m5