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