Home » Archimedes archive » Acorn User » AU 1996-08.adf » Regulars » StarInfo/Northcott/QUAD4

StarInfo/Northcott/QUAD4

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-08.adf » Regulars
Filename: StarInfo/Northcott/QUAD4
Read OK:
File size: 04C7 bytes
Load address: 0000
Exec address: 0000
File contents
   10REM >QUAD4
   20REM vastly speeded up version of an OLD acorn user 1-liner, original author lost
   30REM in the mists of time, this version hacked up by D.Northcott,
   40REM uses a precalculated file if available, generates one otherwise.
   50REM Original prog used MODE4, VDU29 , *FX112/113  , *FX19, this version uses
   60REM                    MODE0, ORIGIN, SYS6,112/113, WAIT ,
   70
   80MODE0:MODE128:ORIGIN640,512
   90OFF
  100U%=3
  110V%=360/U%
  120B%=360
  130C%=6
  140D%=480
  150ON ERROR PROCERR:END
  160DIM X(B%),Y(B%),Z(B%),X%(B%,V%-1),Y%(B%,V%-1)
  170
  171E%=-1
  230PROCCALC
  250
  260s%=0
  270t%=1
  280E%=0
  290
  300REPEAT:FORF%=0TOV%-1
  310WAIT:SYS6,112,s%:SYS6,113,t%:SWAPs%,t%:CLS:MOVEX%(0,F%),Y%(0,F%):FORK%=1TOB%
  320DRAW X%(K%,F%),Y%(K%,F%):NEXT
  330NEXT
  340UNTILINKEY(-1)
  350
  360*FX21
  370*FX15
  380*DESKTOP
  390END
  400
  410DEFPROCCALC
  420PRINTTAB(16)"Calculating SINE/COSINE Lookup tables"
  430FOR P%=0 TO B%
  440PRINTB%-P%;CHR$11
  450C=COSRAD(E%)*D%
  460A%=P%*C%
  470X(P%)=SINRAD(A%)*C
  480Y(P%)=COSRAD(A%)*C
  490Z(P%)=(SINRAD(A%+E%)*COSRAD(A%+E%))*C
  500E%=E%+7
  510NEXT
  520PRINT'TAB(16)"Calculating FRAME Lookup tables"
  530FOR F%=0 TO V%-1
  540PRINTV%-F%;CHR$11
  550P%=P%+U%
  560C=COSRADP%
  570A=SINRADP%
  580FOR K%=0 TO B%
  590Y=X(K%)*A+Y(K%)*C
  600X%(K%,F%)=(X(K%)*C-Y(K%)*A)*C+(Y*A+Z(K%)*C)*A
  610Y%(K%,F%)=Y*C-Z(K%)*A
  620NEXT
  630NEXT
  650ENDPROC
  660
  670DEFPROCERR
  680*FX112,0
  690*FX113,0
  700REPORT:PRINT" at line ";ERL
  710ENDPROC

� >QUAD4
R� vastly speeded up version of an OLD acorn user 1-liner, original author lost
B� in the mists of time, this version hacked up by D.Northcott,
(F� uses a precalculated file if available, generates one otherwise.
2N� Original prog used MODE4, VDU29 , *FX112/113  , *FX19, this version uses
<<�                    MODE0, ORIGIN, SYS6,112/113, WAIT ,
F
P�0:�128:ȑ640,512
Z�
dU%=3
n
V%=360/U%
x
B%=360
�C%=6
�
D%=480
�� � �ERR:�
�/� X(B%),Y(B%),Z(B%),X%(B%,V%-1),Y%(B%,V%-1)
�
�	E%=-1
�	�CALC
�
s%=0
t%=1
E%=0
"
,�:�F%=0�V%-1
6BȖ:ș6,112,s%:ș6,113,t%:Ȕs%,t%:�:�X%(0,F%),Y%(0,F%):�K%=1�B%
@� X%(K%,F%),Y%(K%,F%):�
J�
T
��(-1)
^
h	*FX21
r	*FX15
|*DESKTOP
��
�
�
��CALC
�0�16)"Calculating SINE/COSINE Lookup tables"
�� P%=0 � B%
��B%-P%;�11
�C=��(E%)*D%
�A%=P%*C%
�X(P%)=��(A%)*C
�Y(P%)=��(A%)*C
�!Z(P%)=(��(A%+E%)*��(A%+E%))*C
�E%=E%+7
��
+�'�16)"Calculating FRAME Lookup tables"
� F%=0 � V%-1
�V%-F%;�11
&P%=P%+U%
0
C=��P%
:
A=��P%
D� K%=0 � B%
NY=X(K%)*A+Y(K%)*C
X1X%(K%,F%)=(X(K%)*C-Y(K%)*A)*C+(Y*A+Z(K%)*C)*A
bY%(K%,F%)=Y*C-Z(K%)*A
l�
v�
��
�
�	��ERR
�*FX112,0
�*FX113,0
��:�" at line ";�
��
�
00000000  0d 00 0a 0c f4 20 3e 51  55 41 44 34 0d 00 14 52  |..... >QUAD4...R|
00000010  f4 20 76 61 73 74 6c 79  20 73 70 65 65 64 65 64  |. vastly speeded|
00000020  20 75 70 20 76 65 72 73  69 6f 6e 20 6f 66 20 61  | up version of a|
00000030  6e 20 4f 4c 44 20 61 63  6f 72 6e 20 75 73 65 72  |n OLD acorn user|
00000040  20 31 2d 6c 69 6e 65 72  2c 20 6f 72 69 67 69 6e  | 1-liner, origin|
00000050  61 6c 20 61 75 74 68 6f  72 20 6c 6f 73 74 0d 00  |al author lost..|
00000060  1e 42 f4 20 69 6e 20 74  68 65 20 6d 69 73 74 73  |.B. in the mists|
00000070  20 6f 66 20 74 69 6d 65  2c 20 74 68 69 73 20 76  | of time, this v|
00000080  65 72 73 69 6f 6e 20 68  61 63 6b 65 64 20 75 70  |ersion hacked up|
00000090  20 62 79 20 44 2e 4e 6f  72 74 68 63 6f 74 74 2c  | by D.Northcott,|
000000a0  0d 00 28 46 f4 20 75 73  65 73 20 61 20 70 72 65  |..(F. uses a pre|
000000b0  63 61 6c 63 75 6c 61 74  65 64 20 66 69 6c 65 20  |calculated file |
000000c0  69 66 20 61 76 61 69 6c  61 62 6c 65 2c 20 67 65  |if available, ge|
000000d0  6e 65 72 61 74 65 73 20  6f 6e 65 20 6f 74 68 65  |nerates one othe|
000000e0  72 77 69 73 65 2e 0d 00  32 4e f4 20 4f 72 69 67  |rwise...2N. Orig|
000000f0  69 6e 61 6c 20 70 72 6f  67 20 75 73 65 64 20 4d  |inal prog used M|
00000100  4f 44 45 34 2c 20 56 44  55 32 39 20 2c 20 2a 46  |ODE4, VDU29 , *F|
00000110  58 31 31 32 2f 31 31 33  20 20 2c 20 2a 46 58 31  |X112/113  , *FX1|
00000120  39 2c 20 74 68 69 73 20  76 65 72 73 69 6f 6e 20  |9, this version |
00000130  75 73 65 73 0d 00 3c 3c  f4 20 20 20 20 20 20 20  |uses..<<.       |
00000140  20 20 20 20 20 20 20 20  20 20 20 20 20 4d 4f 44  |             MOD|
00000150  45 30 2c 20 4f 52 49 47  49 4e 2c 20 53 59 53 36  |E0, ORIGIN, SYS6|
00000160  2c 31 31 32 2f 31 31 33  2c 20 57 41 49 54 20 2c  |,112/113, WAIT ,|
00000170  0d 00 46 04 0d 00 50 15  eb 30 3a eb 31 32 38 3a  |..F...P..0:.128:|
00000180  c8 91 36 34 30 2c 35 31  32 0d 00 5a 05 87 0d 00  |..640,512..Z....|
00000190  64 08 55 25 3d 33 0d 00  6e 0d 56 25 3d 33 36 30  |d.U%=3..n.V%=360|
000001a0  2f 55 25 0d 00 78 0a 42  25 3d 33 36 30 0d 00 82  |/U%..x.B%=360...|
000001b0  08 43 25 3d 36 0d 00 8c  0a 44 25 3d 34 38 30 0d  |.C%=6....D%=480.|
000001c0  00 96 0e ee 20 85 20 f2  45 52 52 3a e0 0d 00 a0  |.... . .ERR:....|
000001d0  2f de 20 58 28 42 25 29  2c 59 28 42 25 29 2c 5a  |/. X(B%),Y(B%),Z|
000001e0  28 42 25 29 2c 58 25 28  42 25 2c 56 25 2d 31 29  |(B%),X%(B%,V%-1)|
000001f0  2c 59 25 28 42 25 2c 56  25 2d 31 29 0d 00 aa 04  |,Y%(B%,V%-1)....|
00000200  0d 00 ab 09 45 25 3d 2d  31 0d 00 e6 09 f2 43 41  |....E%=-1.....CA|
00000210  4c 43 0d 00 fa 04 0d 01  04 08 73 25 3d 30 0d 01  |LC........s%=0..|
00000220  0e 08 74 25 3d 31 0d 01  18 08 45 25 3d 30 0d 01  |..t%=1....E%=0..|
00000230  22 04 0d 01 2c 10 f5 3a  e3 46 25 3d 30 b8 56 25  |"...,..:.F%=0.V%|
00000240  2d 31 0d 01 36 42 c8 96  3a c8 99 36 2c 31 31 32  |-1..6B..:..6,112|
00000250  2c 73 25 3a c8 99 36 2c  31 31 33 2c 74 25 3a c8  |,s%:..6,113,t%:.|
00000260  94 73 25 2c 74 25 3a db  3a ec 58 25 28 30 2c 46  |.s%,t%:.:.X%(0,F|
00000270  25 29 2c 59 25 28 30 2c  46 25 29 3a e3 4b 25 3d  |%),Y%(0,F%):.K%=|
00000280  31 b8 42 25 0d 01 40 1b  df 20 58 25 28 4b 25 2c  |1.B%..@.. X%(K%,|
00000290  46 25 29 2c 59 25 28 4b  25 2c 46 25 29 3a ed 0d  |F%),Y%(K%,F%):..|
000002a0  01 4a 05 ed 0d 01 54 0a  fd a6 28 2d 31 29 0d 01  |.J....T...(-1)..|
000002b0  5e 04 0d 01 68 09 2a 46  58 32 31 0d 01 72 09 2a  |^...h.*FX21..r.*|
000002c0  46 58 31 35 0d 01 7c 0c  2a 44 45 53 4b 54 4f 50  |FX15..|.*DESKTOP|
000002d0  0d 01 86 05 e0 0d 01 90  04 0d 01 9a 0a dd f2 43  |...............C|
000002e0  41 4c 43 0d 01 a4 30 f1  8a 31 36 29 22 43 61 6c  |ALC...0..16)"Cal|
000002f0  63 75 6c 61 74 69 6e 67  20 53 49 4e 45 2f 43 4f  |culating SINE/CO|
00000300  53 49 4e 45 20 4c 6f 6f  6b 75 70 20 74 61 62 6c  |SINE Lookup tabl|
00000310  65 73 22 0d 01 ae 0f e3  20 50 25 3d 30 20 b8 20  |es"..... P%=0 . |
00000320  42 25 0d 01 b8 0e f1 42  25 2d 50 25 3b bd 31 31  |B%.....B%-P%;.11|
00000330  0d 01 c2 0f 43 3d 9b b2  28 45 25 29 2a 44 25 0d  |....C=..(E%)*D%.|
00000340  01 cc 0c 41 25 3d 50 25  2a 43 25 0d 01 d6 12 58  |...A%=P%*C%....X|
00000350  28 50 25 29 3d b5 b2 28  41 25 29 2a 43 0d 01 e0  |(P%)=..(A%)*C...|
00000360  12 59 28 50 25 29 3d 9b  b2 28 41 25 29 2a 43 0d  |.Y(P%)=..(A%)*C.|
00000370  01 ea 21 5a 28 50 25 29  3d 28 b5 b2 28 41 25 2b  |..!Z(P%)=(..(A%+|
00000380  45 25 29 2a 9b b2 28 41  25 2b 45 25 29 29 2a 43  |E%)*..(A%+E%))*C|
00000390  0d 01 f4 0b 45 25 3d 45  25 2b 37 0d 01 fe 05 ed  |....E%=E%+7.....|
000003a0  0d 02 08 2b f1 27 8a 31  36 29 22 43 61 6c 63 75  |...+.'.16)"Calcu|
000003b0  6c 61 74 69 6e 67 20 46  52 41 4d 45 20 4c 6f 6f  |lating FRAME Loo|
000003c0  6b 75 70 20 74 61 62 6c  65 73 22 0d 02 12 11 e3  |kup tables".....|
000003d0  20 46 25 3d 30 20 b8 20  56 25 2d 31 0d 02 1c 0e  | F%=0 . V%-1....|
000003e0  f1 56 25 2d 46 25 3b bd  31 31 0d 02 26 0c 50 25  |.V%-F%;.11..&.P%|
000003f0  3d 50 25 2b 55 25 0d 02  30 0a 43 3d 9b b2 50 25  |=P%+U%..0.C=..P%|
00000400  0d 02 3a 0a 41 3d b5 b2  50 25 0d 02 44 0f e3 20  |..:.A=..P%..D.. |
00000410  4b 25 3d 30 20 b8 20 42  25 0d 02 4e 15 59 3d 58  |K%=0 . B%..N.Y=X|
00000420  28 4b 25 29 2a 41 2b 59  28 4b 25 29 2a 43 0d 02  |(K%)*A+Y(K%)*C..|
00000430  58 31 58 25 28 4b 25 2c  46 25 29 3d 28 58 28 4b  |X1X%(K%,F%)=(X(K|
00000440  25 29 2a 43 2d 59 28 4b  25 29 2a 41 29 2a 43 2b  |%)*C-Y(K%)*A)*C+|
00000450  28 59 2a 41 2b 5a 28 4b  25 29 2a 43 29 2a 41 0d  |(Y*A+Z(K%)*C)*A.|
00000460  02 62 19 59 25 28 4b 25  2c 46 25 29 3d 59 2a 43  |.b.Y%(K%,F%)=Y*C|
00000470  2d 5a 28 4b 25 29 2a 41  0d 02 6c 05 ed 0d 02 76  |-Z(K%)*A..l....v|
00000480  05 ed 0d 02 8a 05 e1 0d  02 94 04 0d 02 9e 09 dd  |................|
00000490  f2 45 52 52 0d 02 a8 0c  2a 46 58 31 31 32 2c 30  |.ERR....*FX112,0|
000004a0  0d 02 b2 0c 2a 46 58 31  31 33 2c 30 0d 02 bc 14  |....*FX113,0....|
000004b0  f6 3a f1 22 20 61 74 20  6c 69 6e 65 20 22 3b 9e  |.:." at line ";.|
000004c0  0d 02 c6 05 e1 0d ff                              |.......|
000004c7