_  __   _  _         _ _     _      _           _           
  __| |/ /_ | || |     __| (_)___| | __ (_)_ __   __| | _____  __
 / _` | '_ \| || |_   / _` | / __| |/ / | | '_ \ / _` |/ _ \ \/ /
| (_| | (_) |__   _| | (_| | \__ \   <  | | | | | (_| |  __/>  < 
 \__,_|\___/   |_|    \__,_|_|___/_|\_\ |_|_| |_|\__,_|\___/_/\_\
                                                                 
            

SHAPE.SRC

FILE INFORMATION

FILENAME(S): SHAPE.SRC

FILE TYPE(S): SEQ

FILE SIZE: 14K

FIRST SEEN: 2025-11-30 21:13:03

APPEARS ON: 1 disk(s)

FILE HASH

90590f7de5be23287a7234fbcaeff2a3f40c180c19924d5ff78405992362538c

FOUND ON DISKS (1 DISKS)

DISK TITLE FILENAME FILE TYPE COLLECTION TRACK SECTOR ACTIONS
SONDERH 4 85 II SHAPE.SRC SEQ DuncanTwain 7 9 DOWNLOAD FILE

FILE CONTENT & ANALYSIS

00000000: 3B 20 50 52 49 4D 49 54  49 56 45 20 53 4F 4C 49  |; PRIMITIVE SOLI|
00000010: 44 20 53 48 41 50 45 20  44 52 41 57 49 4E 47 0D  |D SHAPE DRAWING.|
00000020: 3B 0D 3B 20 52 49 43 48  41 52 44 20 4C 2E 20 52  |;.; RICHARD L. R|
00000030: 59 4C 41 4E 44 45 52 20  20 20 31 31 2F 37 2F 38  |YLANDER   11/7/8|
00000040: 34 0D 3B 0D 3B 20 4C 4F  41 44 20 41 52 49 54 48  |4.;.; LOAD ARITH|
00000050: 4D 45 54 49 43 20 41 4E  44 20 47 52 41 50 48 49  |METIC AND GRAPHI|
00000060: 43 20 55 54 49 4C 49 54  49 45 53 20 46 49 52 53  |C UTILITIES FIRS|
00000070: 54 0D 3B 0D 3B 2A 2A 2A  2A 2A 2A 2A 2A 2A 2A 2A  |T.;.;***********|
00000080: 2A 2A 2A 2A 2A 2A 2A 2A  2A 2A 2A 2A 2A 2A 2A 2A  |****************|
00000090: 2A 2A 2A 2A 2A 2A 2A 2A  2A 2A 2A 2A 2A 2A 0D 52  |**************.R|
000000A0: 41 4D 3D 24 30 33 36 41  0D 4F 52 49 47 49 4E 3D  |AM=$036A.ORIGIN=|
000000B0: 24 43 35 45 41 0D 3B 0D  4D 4C 50 43 4E 44 3D 24  |$C5EA.;.MLPCND=$|
000000C0: 41 43 20 20 20 20 20 3B  20 4D 55 4C 54 49 50 4C  |AC     ; MULTIPL|
000000D0: 49 43 41 4E 44 20 28 53  29 0D 4D 4C 50 4C 45 52  |ICAND (S).MLPLER|
000000E0: 3D 24 41 44 20 20 20 20  20 3B 20 4D 55 4C 54 49  |=$AD     ; MULTI|
000000F0: 50 4C 49 45 52 20 28 53  29 0D 50 52 4F 44 3D 24  |PLIER (S).PROD=$|
00000100: 41 45 20 20 20 20 20 20  3B 20 50 52 4F 44 55 43  |AE      ; PRODUC|
00000110: 54 20 28 44 29 0D 4D 55  4C 54 3D 24 43 30 31 31  |T (D).MULT=$C011|
00000120: 20 20 20 20 3B 20 43 41  4C 4C 20 46 4F 52 20 4D  |    ; CALL FOR M|
00000130: 55 4C 54 49 50 4C 59 0D  3B 0D 44 56 44 4E 44 3D  |ULTIPLY.;.DVDND=|
00000140: 24 46 44 20 20 20 20 20  3B 20 44 49 56 49 44 45  |$FD     ; DIVIDE|
00000150: 4E 44 20 28 44 29 0D 44  56 53 4F 52 3D 24 46 42  |ND (D).DVSOR=$FB|
00000160: 20 20 20 20 20 3B 20 44  49 56 49 53 4F 52 20 28  |     ; DIVISOR (|
00000170: 44 29 0D 51 55 4F 54 3D  24 46 44 20 20 20 20 20  |D).QUOT=$FD     |
00000180: 20 3B 20 51 55 4F 54 49  45 4E 54 20 28 44 29 0D  | ; QUOTIENT (D).|
00000190: 44 49 56 49 44 45 3D 24  43 30 32 35 20 20 3B 20  |DIVIDE=$C025  ; |
000001A0: 43 41 4C 4C 20 46 4F 52  20 44 49 56 49 44 45 0D  |CALL FOR DIVIDE.|
000001B0: 3B 0D 41 52 47 3D 24 41  43 20 20 20 20 20 20 20  |;.ARG=$AC       |
000001C0: 3B 20 41 52 47 55 4D 45  4E 54 20 28 53 29 0D 53  |; ARGUMENT (S).S|
000001D0: 51 52 3D 24 41 45 20 20  20 20 20 20 20 3B 20 53  |QR=$AE       ; S|
000001E0: 51 55 41 52 45 20 4F 46  20 41 52 47 20 28 44 29  |QUARE OF ARG (D)|
000001F0: 0D 53 51 55 41 52 45 3D  24 43 30 30 34 20 20 3B  |.SQUARE=$C004  ;|
00000200: 20 43 41 4C 4C 20 46 4F  52 20 53 51 55 41 52 45  | CALL FOR SQUARE|
00000210: 0D 3B 0D 52 41 44 43 4E  44 3D 24 41 43 20 20 20  |.;.RADCND=$AC   |
00000220: 20 3B 20 52 41 44 49 43  41 4E 44 20 28 44 29 0D  | ; RADICAND (D).|
00000230: 52 4F 4F 54 3D 24 30 33  33 43 20 20 20 20 3B 20  |ROOT=$033C    ; |
00000240: 53 51 55 41 52 45 20 52  4F 4F 54 20 28 53 29 0D  |SQUARE ROOT (S).|
00000250: 53 51 52 54 3D 24 43 30  36 34 20 20 20 20 3B 20  |SQRT=$C064    ; |
00000260: 43 41 4C 4C 20 46 4F 52  20 53 51 52 54 0D 3B 0D  |CALL FOR SQRT.;.|
00000270: 52 4E 44 4D 3D 24 43 30  30 30 20 20 20 20 3B 20  |RNDM=$C000    ; |
00000280: 52 41 4E 44 4F 4D 20 4E  55 4D 42 45 52 0D 52 41  |RANDOM NUMBER.RA|
00000290: 4E 44 4F 4D 3D 24 43 30  43 38 20 20 3B 20 43 41  |NDOM=$C0C8  ; CA|
000002A0: 4C 4C 20 46 4F 52 20 52  41 4E 44 4F 4D 0D 3B 20  |LL FOR RANDOM.; |
000002B0: 4E 4F 54 45 20 2D 20 41  20 43 41 4C 4C 20 54 4F  |NOTE - A CALL TO|
000002C0: 20 27 52 41 4E 44 4F 4D  27 20 4C 45 41 56 45 53  | 'RANDOM' LEAVES|
000002D0: 20 41 20 52 41 4E 44 4F  4D 20 42 59 54 45 0D 3B  | A RANDOM BYTE.;|
000002E0: 20 49 4E 20 54 48 45 20  41 43 43 55 4D 55 4C 41  | IN THE ACCUMULA|
000002F0: 54 4F 52 0D 3B 0D 58 50  4C 54 3D 24 30 33 33 46  |TOR.;.XPLT=$033F|
00000300: 0D 59 50 4C 54 3D 24 30  33 34 31 0D 4E 4F 52 4D  |.YPLT=$0341.NORM|
00000310: 3D 24 43 32 32 34 0D 50  4C 54 53 48 44 3D 24 43  |=$C224.PLTSHD=$C|
00000320: 32 30 46 0D 56 41 4C 55  45 3D 24 30 33 34 34 20  |20F.VALUE=$0344 |
00000330: 20 20 3B 20 46 49 4E 41  4C 20 4E 4F 52 4D 41 4C  |  ; FINAL NORMAL|
00000340: 49 5A 45 44 20 53 48 41  44 45 20 56 41 4C 55 45  |IZED SHADE VALUE|
00000350: 0D 48 54 4F 52 52 4E 3D  24 30 33 34 36 20 20 3B  |.HTORRN=$0346  ;|
00000360: 20 53 48 41 44 45 20 46  4C 41 47 2C 20 31 3D 48  | SHADE FLAG, 1=H|
00000370: 41 4C 46 54 4F 4E 45 0D  4E 4F 53 43 41 4C 3D 24  |ALFTONE.NOSCAL=$|
00000380: 30 33 34 37 20 20 3B 20  53 43 41 4C 45 20 46 4C  |0347  ; SCALE FL|
00000390: 41 47 2C 20 31 3D 4E 4F  20 53 43 41 4C 45 0D 3B  |AG, 1=NO SCALE.;|
000003A0: 0D 20 20 20 20 20 20 20  2A 3D 52 41 4D 0D 58 43  |.       *=RAM.XC|
000003B0: 45 4E 54 20 20 2A 3D 2A  2B 32 20 20 3B 20 43 45  |ENT  *=*+2  ; CE|
000003C0: 4E 54 45 52 20 43 4F 4F  52 44 0D 58 52 45 4C 20  |NTER COORD.XREL |
000003D0: 20 20 2A 3D 2A 2B 31 20  20 3B 20 52 45 4C 41 54  |  *=*+1  ; RELAT|
000003E0: 49 56 45 20 28 54 4F 20  43 45 4E 54 45 52 29 0D  |IVE (TO CENTER).|
000003F0: 58 53 48 44 20 20 20 2A  3D 2A 2B 32 20 20 3B 20  |XSHD   *=*+2  ; |
00000400: 55 53 45 44 20 49 4E 20  53 48 41 44 45 20 43 41  |USED IN SHADE CA|
00000410: 4C 43 0D 59 43 45 4E 54  20 20 2A 3D 2A 2B 31 20  |LC.YCENT  *=*+1 |
00000420: 20 3B 20 43 45 4E 54 45  52 20 43 4F 4F 52 44 0D  | ; CENTER COORD.|
00000430: 59 52 45 4C 20 20 20 2A  3D 2A 2B 31 20 20 3B 20  |YREL   *=*+1  ; |
00000440: 52 45 4C 41 54 49 56 45  20 28 54 4F 20 43 45 4E  |RELATIVE (TO CEN|
00000450: 54 45 52 29 0D 59 53 48  44 20 20 20 2A 3D 2A 2B  |TER).YSHD   *=*+|
00000460: 32 20 20 3B 20 55 53 45  44 20 49 4E 20 53 48 41  |2  ; USED IN SHA|
00000470: 44 45 20 43 41 4C 43 0D  5A 52 45 4C 20 20 20 2A  |DE CALC.ZREL   *|
00000480: 3D 2A 2B 32 20 20 3B 20  52 45 4C 41 54 49 56 45  |=*+2  ; RELATIVE|
00000490: 20 28 54 4F 20 43 45 4E  54 45 52 29 0D 5A 57 58  | (TO CENTER).ZWX|
000004A0: 20 20 20 20 2A 3D 2A 2B  32 20 20 3B 20 5A 20 57  |    *=*+2  ; Z W|
000004B0: 49 54 48 20 58 20 28 2B  20 4F 52 20 2D 29 0D 3B  |ITH X (+ OR -).;|
000004C0: 0D 52 41 44 49 55 53 20  2A 3D 2A 2B 32 20 20 3B  |.RADIUS *=*+2  ;|
000004D0: 20 4C 4F 43 41 4C 20 52  41 44 49 55 53 20 4F 46  | LOCAL RADIUS OF|
000004E0: 20 53 55 52 46 41 43 45  0D 54 4F 4E 45 20 20 20  | SURFACE.TONE   |
000004F0: 2A 3D 2A 2B 32 20 20 3B  20 55 53 45 44 20 49 4E  |*=*+2  ; USED IN|
00000500: 20 53 48 41 44 45 20 43  41 4C 43 0D 54 4E 54 4D  | SHADE CALC.TNTM|
00000510: 50 20 20 2A 3D 2A 2B 32  20 20 3B 20 55 53 45 44  |P  *=*+2  ; USED|
00000520: 20 49 4E 20 53 48 41 44  45 20 43 41 4C 43 0D 3B  | IN SHADE CALC.;|
00000530: 0D 43 4C 49 50 4C 20 20  2A 3D 2A 2B 31 20 20 3B  |.CLIPL  *=*+1  ;|
00000540: 20 4C 45 46 54 20 43 4C  49 50 50 49 4E 47 20 42  | LEFT CLIPPING B|
00000550: 4F 55 4E 44 0D 43 4C 49  50 52 20 20 2A 3D 2A 2B  |OUND.CLIPR  *=*+|
00000560: 31 20 20 3B 20 52 49 47  48 54 20 43 4C 49 50 50  |1  ; RIGHT CLIPP|
00000570: 49 4E 47 20 42 4F 55 4E  44 0D 43 4C 49 50 55 20  |ING BOUND.CLIPU |
00000580: 20 2A 3D 2A 2B 31 20 20  3B 20 55 50 20 43 4C 49  | *=*+1  ; UP CLI|
00000590: 50 50 49 4E 47 20 42 4F  55 4E 44 0D 43 4C 49 50  |PPING BOUND.CLIP|
000005A0: 44 20 20 2A 3D 2A 2B 31  20 20 3B 20 44 4F 57 4E  |D  *=*+1  ; DOWN|
000005B0: 20 43 4C 49 50 50 49 4E  47 20 42 4F 55 4E 44 0D  | CLIPPING BOUND.|
000005C0: 3B 0D 48 45 4D 49 20 20  20 2A 3D 2A 2B 31 20 20  |;.HEMI   *=*+1  |
000005D0: 3B 20 50 4C 4F 54 54 49  4E 47 20 48 45 4D 49 53  |; PLOTTING HEMIS|
000005E0: 50 48 45 52 45 0D 3B 0D  42 41 4B 4C 49 54 20 2A  |PHERE.;.BAKLIT *|
000005F0: 3D 2A 2B 31 20 20 3B 20  42 41 43 4B 4C 49 54 20  |=*+1  ; BACKLIT |
00000600: 46 4C 41 47 0D 48 56 46  4C 41 47 20 2A 3D 2A 2B  |FLAG.HVFLAG *=*+|
00000610: 31 20 20 3B 20 48 4F 52  49 5A 4F 4E 54 41 4C 2F  |1  ; HORIZONTAL/|
00000620: 56 45 52 54 49 43 41 4C  20 46 4C 41 47 0D 54 45  |VERTICAL FLAG.TE|
00000630: 4D 50 20 20 20 2A 3D 2A  2B 32 20 20 3B 20 54 45  |MP   *=*+2  ; TE|
00000640: 4D 50 4F 52 41 52 59 20  53 54 4F 52 41 47 45 0D  |MPORARY STORAGE.|
00000650: 43 4E 54 58 20 20 20 2A  3D 2A 2B 31 20 20 20 3B  |CNTX   *=*+1   ;|
00000660: 20 4C 4F 4F 50 20 43 4F  55 4E 54 45 52 0D 43 4E  | LOOP COUNTER.CN|
00000670: 54 59 20 20 20 2A 3D 2A  2B 31 20 20 20 3B 20 4C  |TY   *=*+1   ; L|
00000680: 4F 4F 50 20 43 4F 55 4E  54 45 52 0D 4D 41 58 20  |OOP COUNTER.MAX |
00000690: 20 20 20 2A 3D 2A 2B 31  20 20 20 3B 20 4C 4F 4F  |   *=*+1   ; LOO|
000006A0: 50 20 4C 49 4D 49 54 0D  3B 0D 48 4C 45 4E 20 20  |P LIMIT.;.HLEN  |
000006B0: 20 2A 3D 2A 2B 31 20 20  20 3B 20 48 41 4C 46 2D  | *=*+1   ; HALF-|
000006C0: 4C 45 4E 47 54 48 20 4F  46 20 43 59 4C 49 4E 44  |LENGTH OF CYLIND|
000006D0: 45 52 53 0D 52 53 20 20  20 20 20 2A 3D 2A 2B 32  |ERS.RS     *=*+2|
000006E0: 20 20 20 3B 20 53 51 55  41 52 45 20 4F 46 20 54  |   ; SQUARE OF T|
000006F0: 4F 52 4F 49 44 20 52 41  44 49 55 53 0D 52 54 20  |OROID RADIUS.RT |
00000700: 20 20 20 20 2A 3D 2A 2B  31 20 20 20 3B 20 54 4F  |    *=*+1   ; TO|
00000710: 52 4F 49 44 20 28 52 49  4E 47 29 20 52 41 44 49  |ROID (RING) RADI|
00000720: 55 53 0D 52 43 20 20 20  20 20 2A 3D 2A 2B 31 20  |US.RC     *=*+1 |
00000730: 20 20 3B 20 43 45 4E 54  45 52 20 52 41 44 49 55  |  ; CENTER RADIU|
00000740: 53 20 4F 46 20 54 4F 52  4F 49 44 0D 52 4F 20 20  |S OF TOROID.RO  |
00000750: 20 20 20 2A 3D 2A 2B 31  20 20 20 3B 20 4F 55 54  |   *=*+1   ; OUT|
00000760: 45 52 20 52 41 44 49 55  53 20 4F 46 20 54 4F 52  |ER RADIUS OF TOR|
00000770: 4F 49 44 0D 52 49 20 20  20 20 20 2A 3D 2A 2B 31  |OID.RI     *=*+1|
00000780: 20 20 20 3B 20 49 4E 4E  45 52 20 52 41 44 49 55  |   ; INNER RADIU|
00000790: 53 20 4F 46 20 54 4F 52  4F 49 44 0D 58 53 51 52  |S OF TOROID.XSQR|
000007A0: 20 20 20 2A 3D 2A 2B 32  0D 58 4D 41 58 20 20 20  |   *=*+2.XMAX   |
000007B0: 2A 3D 2A 2B 31 0D 3B 0D  52 30 3D 48 4C 45 4E 0D  |*=*+1.;.R0=HLEN.|
000007C0: 3B 0D 20 20 20 20 20 20  20 2A 3D 4F 52 49 47 49  |;.       *=ORIGI|
000007D0: 4E 0D 3B 2A 2A 2A 2A 2A  2A 2A 2A 2A 2A 2A 2A 2A  |N.;*************|
000007E0: 2A 2A 2A 2A 2A 2A 2A 2A  2A 2A 2A 2A 2A 2A 2A 2A  |****************|
000007F0: 2A 2A 2A 2A 2A 2A 2A 2A  2A 2A 2A 2A 0D 3B 0D 3B  |************.;.;|
00000800: 20 44 49 56 49 44 45 20  57 49 54 48 20 53 49 4E  | DIVIDE WITH SIN|
00000810: 47 4C 45 20 50 52 45 43  49 53 49 4F 4E 20 44 49  |GLE PRECISION DI|
00000820: 56 49 53 4F 52 0D 3B 20  28 55 53 45 44 20 4F 46  |VISOR.; (USED OF|
00000830: 54 45 4E 20 49 4E 20 53  48 41 50 45 20 52 4F 55  |TEN IN SHAPE ROU|
00000840: 54 49 4E 45 53 29 0D 3B  0D 53 44 49 56 20 20 20  |TINES).;.SDIV   |
00000850: 4C 44 41 20 23 30 0D 20  20 20 20 20 20 20 53 54  |LDA #0.       ST|
00000860: 41 20 44 56 53 4F 52 2B  31 0D 20 20 20 20 20 20  |A DVSOR+1.      |
00000870: 20 4A 4D 50 20 44 49 56  49 44 45 0D 3B 0D 3B 2A  | JMP DIVIDE.;.;*|
00000880: 2A 2A 2A 2A 2A 2A 2A 2A  2A 2A 2A 2A 2A 2A 2A 2A  |****************|
00000890: 2A 2A 2A 2A 2A 2A 2A 2A  2A 2A 2A 2A 2A 2A 2A 2A  |****************|
000008A0: 2A 2A 2A 2A 2A 2A 2A 2A  0D 3B 0D 3B 20 43 41 4C  |********.;.; CAL|
000008B0: 43 55 4C 41 54 45 20 53  48 41 44 45 20 56 41 4C  |CULATE SHADE VAL|
000008C0: 55 45 20 28 30 2D 36 33  29 20 42 59 0D 3B 20 4D  |UE (0-63) BY.; M|
000008D0: 55 4C 54 49 50 4C 59 49  4E 47 20 27 54 4F 4E 45  |ULTIPLYING 'TONE|
000008E0: 27 20 42 59 20 32 36 20  54 48 45 4E 0D 3B 20 44  |' BY 26 THEN.; D|
000008F0: 49 56 49 44 45 20 52 45  53 55 4C 54 20 42 59 20  |IVIDE RESULT BY |
00000900: 52 41 44 49 55 53 20 4F  46 20 53 55 52 46 41 43  |RADIUS OF SURFAC|
00000910: 45 0D 3B 0D 47 45 54 56  41 4C 20 42 49 54 20 54  |E.;.GETVAL BIT T|
00000920: 4F 4E 45 2B 31 0D 20 20  20 20 20 20 20 42 50 4C  |ONE+1.       BPL|
00000930: 20 43 4E 54 4E 55 20 20  20 3B 20 49 46 20 27 54  | CNTNU   ; IF 'T|
00000940: 4F 4E 45 27 3C 30 2C 20  54 48 45 4E 0D 20 20 20  |ONE'<0, THEN.   |
00000950: 20 20 20 20 4C 44 41 20  42 41 4B 4C 49 54 20 20  |    LDA BAKLIT  |
00000960: 3B 20 4D 41 4B 45 20 56  41 4C 55 45 20 30 20 4F  |; MAKE VALUE 0 O|
00000970: 52 20 41 42 53 28 54 4F  4E 45 29 0D 20 20 20 20  |R ABS(TONE).    |
00000980: 20 20 20 42 4E 45 20 4E  45 47 41 54 45 20 20 3B  |   BNE NEGATE  ;|
00000990: 20 44 45 50 45 4E 44 49  4E 47 20 4F 4E 20 42 41  | DEPENDING ON BA|
000009A0: 4B 4C 49 54 20 46 4C 41  47 0D 20 20 20 20 20 20  |KLIT FLAG.      |
000009B0: 20 53 54 41 20 56 41 4C  55 45 0D 20 20 20 20 20  | STA VALUE.     |
000009C0: 20 20 52 54 53 0D 4E 45  47 41 54 45 20 53 45 43  |  RTS.NEGATE SEC|
000009D0: 0D 20 20 20 20 20 20 20  4C 44 41 20 23 24 30 30  |.       LDA #$00|
000009E0: 0D 20 20 20 20 20 20 20  53 42 43 20 54 4F 4E 45  |.       SBC TONE|
000009F0: 0D 20 20 20 20 20 20 20  53 54 41 20 54 4F 4E 45  |.       STA TONE|
00000A00: 0D 43 4E 54 4E 55 20 20  4C 44 41 20 54 4F 4E 45  |.CNTNU  LDA TONE|
00000A10: 0D 20 20 20 20 20 20 20  53 54 41 20 4D 4C 50 43  |.       STA MLPC|
00000A20: 4E 44 0D 20 20 20 20 20  20 20 4C 44 41 20 23 24  |ND.       LDA #$|
00000A30: 31 41 0D 20 20 20 20 20  20 20 53 54 41 20 4D 4C  |1A.       STA ML|
00000A40: 50 4C 45 52 0D 20 20 20  20 20 20 20 4A 53 52 20  |PLER.       JSR |
00000A50: 4D 55 4C 54 0D 20 20 20  20 20 20 20 53 54 41 20  |MULT.       STA |
00000A60: 44 56 44 4E 44 2B 31 0D  20 20 20 20 20 20 20 4C  |DVDND+1.       L|
00000A70: 44 41 20 50 52 4F 44 0D  20 20 20 20 20 20 20 53  |DA PROD.       S|
00000A80: 54 41 20 44 56 44 4E 44  0D 20 20 20 20 20 20 20  |TA DVDND.       |
00000A90: 4C 44 41 20 52 41 44 49  55 53 0D 20 20 20 20 20  |LDA RADIUS.     |
00000AA0: 20 20 53 54 41 20 44 56  53 4F 52 0D 20 20 20 20  |  STA DVSOR.    |
00000AB0: 20 20 20 4A 53 52 20 53  44 49 56 0D 20 20 20 20  |   JSR SDIV.    |
00000AC0: 20 20 20 4C 44 41 20 51  55 4F 54 0D 20 20 20 20  |   LDA QUOT.    |
00000AD0: 20 20 20 53 54 41 20 56  41 4C 55 45 0D 20 20 20  |   STA VALUE.   |
00000AE0: 20 20 20 20 52 54 53 0D  3B 0D 3B 2A 2A 2A 2A 2A  |    RTS.;.;*****|
00000AF0: 2A 2A 2A 2A 2A 2A 2A 2A  2A 2A 2A 2A 2A 2A 2A 2A  |****************|
00000B00: 2A 2A 2A 2A 2A 2A 2A 2A  2A 2A 2A 2A 2A 2A 2A 2A  |****************|
00000B10: 2A 2A 2A 2A 0D 3B 0D 3B  20 50 4F 49 4E 54 20 50  |****.;.; POINT P|
00000B20: 4C 4F 54 54 49 4E 47 20  42 59 20 51 55 41 44 52  |LOTTING BY QUADR|
00000B30: 41 4E 54 53 20 55 53 49  4E 47 0D 3B 20 54 48 45  |ANTS USING.; THE|
00000B40: 20 46 4F 55 52 2D 46 4F  4C 44 20 53 59 4D 4D 45  | FOUR-FOLD SYMME|
00000B50: 54 52 59 20 4F 46 20 53  49 4D 50 4C 45 20 4F 42  |TRY OF SIMPLE OB|
00000B60: 4A 45 43 54 53 0D 3B 0D  3B 20 44 45 50 45 4E 44  |JECTS.;.; DEPEND|
00000B70: 49 4E 47 20 4F 4E 20 53  54 41 54 55 53 20 4F 46  |ING ON STATUS OF|
00000B80: 20 27 48 56 46 4C 41 47  27 2C 20 45 58 43 48 41  | 'HVFLAG', EXCHA|
00000B90: 4E 47 45 0D 3B 20 58 20  41 4E 44 20 59 20 43 4F  |NGE.; X AND Y CO|
00000BA0: 4F 52 44 49 4E 41 54 45  53 20 54 4F 20 52 4F 54  |ORDINATES TO ROT|
00000BB0: 41 54 45 20 4F 42 4A 45  43 54 53 20 39 30 20 44  |ATE OBJECTS 90 D|
00000BC0: 45 47 0D 3B 20 53 49 4E  47 4C 45 20 53 48 41 50  |EG.; SINGLE SHAP|
00000BD0: 45 20 52 4F 55 54 49 4E  45 20 43 41 4E 20 54 48  |E ROUTINE CAN TH|
00000BE0: 45 4E 20 42 45 20 55 53  45 44 20 54 4F 0D 3B 20  |EN BE USED TO.; |
00000BF0: 44 52 41 57 20 27 48 4F  52 49 5A 4F 4E 54 41 4C  |DRAW 'HORIZONTAL|
00000C00: 27 20 4F 52 20 27 56 45  52 54 49 43 41 4C 27 20  |' OR 'VERTICAL' |
00000C10: 56 45 52 53 49 4F 4E 53  0D 3B 20 4F 46 20 41 4E  |VERSIONS.; OF AN|
00000C20: 20 4F 42 4A 45 43 54 0D  3B 0D 3B 20 54 48 45 20  | OBJECT.;.; THE |
00000C30: 46 4F 4C 4F 57 49 4E 47  20 49 53 20 41 20 27 42  |FOLOWING IS A 'B|
00000C40: 41 53 49 43 20 53 55 42  52 4F 55 54 49 4E 45 27  |ASIC SUBROUTINE'|
00000C50: 0D 3B 20 45 51 55 49 56  41 4C 45 4E 54 20 54 4F  |.; EQUIVALENT TO|
00000C60: 20 45 58 50 4C 41 49 4E  20 49 54 53 20 4F 50 45  | EXPLAIN ITS OPE|
00000C70: 52 41 54 49 4F 4E 0D 3B  0D 3B 20 4E 4F 54 45 20  |RATION.;.; NOTE |
00000C80: 54 48 41 54 20 4C 41 42  45 4C 53 20 41 52 45 20  |THAT LABELS ARE |
00000C90: 55 53 45 44 20 49 4E 20  50 4C 41 43 45 20 4F 46  |USED IN PLACE OF|
00000CA0: 0D 3B 20 4C 49 4E 45 20  4E 55 4D 42 45 52 53 0D  |.; LINE NUMBERS.|
00000CB0: 3B 0D 3B 20 27 50 54 50  4C 4F 54 27 20 49 46 20  |;.; 'PTPLOT' IF |
00000CC0: 48 56 46 4C 41 47 3C 30  20 54 48 45 4E 20 47 4F  |HVFLAG<0 THEN GO|
00000CD0: 54 4F 20 27 4E 4F 52 4F  54 27 0D 3B 20 20 20 20  |TO 'NOROT'.;    |
00000CE0: 20 20 20 20 20 20 28 53  54 41 43 4B 29 3D 58 52  |      (STACK)=XR|
00000CF0: 45 4C 3A 58 52 45 4C 3D  59 52 45 4C 3A 59 52 45  |EL:XREL=YREL:YRE|
00000D00: 4C 3D 28 53 54 41 43 4B  29 0D 3B 20 20 20 20 20  |L=(STACK).;     |
00000D10: 20 20 20 20 20 28 53 54  41 43 4B 29 3D 58 53 48  |     (STACK)=XSH|
00000D20: 44 3A 58 53 48 44 3D 59  53 48 44 3A 59 53 48 44  |D:XSHD=YSHD:YSHD|
00000D30: 3D 28 53 54 41 43 4B 29  0D 3B 20 27 4E 4F 52 4F  |=(STACK).; 'NORO|
00000D40: 54 27 20 20 47 4F 53 55  42 20 27 47 45 54 5A 27  |T'  GOSUB 'GETZ'|
00000D50: 0D 3B 20 20 20 20 20 20  20 20 20 20 52 45 4D 20  |.;          REM |
00000D60: 43 41 4C 43 55 4C 41 54  45 20 32 2A 5A 20 46 52  |CALCULATE 2*Z FR|
00000D70: 4F 4D 20 58 2C 59 20 41  4E 44 20 52 41 44 49 55  |OM X,Y AND RADIU|
00000D80: 53 0D 3B 20 20 20 20 20  20 20 20 20 20 48 45 4D  |S.;          HEM|
00000D90: 49 20 3D 20 31 0D 3B 20  20 20 20 20 20 20 20 20  |I = 1.;         |
00000DA0: 20 49 46 20 58 52 45 4C  3E 43 4C 49 50 4C 20 54  | IF XREL>CLIPL T|
00000DB0: 48 45 4E 20 47 4F 54 4F  20 27 52 48 45 4D 49 27  |HEN GOTO 'RHEMI'|
00000DC0: 0D 3B 20 20 20 20 20 20  20 20 20 20 5A 57 58 3D  |.;          ZWX=|
00000DD0: 32 2A 5A 2D 58 53 48 44  0D 3B 20 20 20 20 20 20  |2*Z-XSHD.;      |
00000DE0: 20 20 20 20 58 50 4C 54  3D 58 43 45 4E 54 2D 58  |    XPLT=XCENT-X|
00000DF0: 52 45 4C 3A 52 45 4D 20  4C 45 46 54 20 48 45 4D  |REL:REM LEFT HEM|
00000E00: 49 53 50 48 45 52 45 0D  3B 20 27 43 48 43 4C 55  |ISPHERE.; 'CHCLU|
00000E10: 50 27 20 49 46 20 59 52  45 4C 3E 43 4C 49 50 55  |P' IF YREL>CLIPU|
00000E20: 20 54 48 45 4E 20 47 4F  54 4F 20 27 44 48 45 4D  | THEN GOTO 'DHEM|
00000E30: 49 27 0D 3B 20 20 20 20  20 20 20 20 20 20 54 4F  |I'.;          TO|
00000E40: 4E 45 3D 5A 57 58 2B 59  53 48 44 0D 3B 20 20 20  |NE=ZWX+YSHD.;   |
00000E50: 20 20 20 20 20 20 20 47  4F 53 55 42 20 27 47 45  |       GOSUB 'GE|
00000E60: 54 56 41 4C 27 3A 52 45  4D 20 4E 4F 52 4D 41 4C  |TVAL':REM NORMAL|
00000E70: 49 5A 45 20 53 48 41 44  45 20 56 41 4C 0D 3B 20  |IZE SHADE VAL.; |
00000E80: 20 20 20 20 20 20 20 20  20 59 50 4C 54 3D 59 43  |         YPLT=YC|
00000E90: 45 4E 54 2B 59 52 45 4C  0D 3B 20 20 20 20 20 20  |ENT+YREL.;      |
00000EA0: 20 20 20 20 47 4F 53 55  42 20 27 50 4C 54 53 48  |    GOSUB 'PLTSH|
00000EB0: 44 27 3A 52 45 4D 20 50  4C 4F 54 20 4F 52 20 55  |D':REM PLOT OR U|
00000EC0: 4E 50 4C 4F 54 0D 3B 20  20 20 20 20 20 20 20 20  |NPLOT.;         |
00000ED0: 20 52 45 4D 20 20 20 50  4F 49 4E 54 53 20 57 45  | REM   POINTS WE|
00000EE0: 49 47 48 54 45 44 20 42  59 20 53 48 41 44 45 20  |IGHTED BY SHADE |
00000EF0: 56 41 4C 55 45 0D 3B 20  27 44 48 45 4D 49 27 20  |VALUE.; 'DHEMI' |
00000F00: 20 49 46 20 59 52 45 4C  3E 43 4C 49 50 44 20 54  | IF YREL>CLIPD T|
00000F10: 48 45 4E 20 47 4F 54 4F  20 27 52 48 45 4D 49 27  |HEN GOTO 'RHEMI'|
00000F20: 0D 3B 20 20 20 20 20 20  20 20 20 20 54 4F 4E 45  |.;          TONE|
00000F30: 3D 5A 57 58 2D 59 53 48  44 0D 3B 20 20 20 20 20  |=ZWX-YSHD.;     |
00000F40: 20 20 20 20 20 47 4F 53  55 42 20 27 47 45 54 56  |     GOSUB 'GETV|
00000F50: 41 4C 27 0D 3B 20 20 20  20 20 20 20 20 20 20 59  |AL'.;          Y|
00000F60: 50 4C 54 3D 59 43 45 4E  54 2D 59 52 45 4C 0D 3B  |PLT=YCENT-YREL.;|
00000F70: 20 20 20 20 20 20 20 20  20 20 47 4F 53 55 42 20  |          GOSUB |
00000F80: 27 50 4C 54 53 48 44 27  0D 3B 20 27 52 48 45 4D  |'PLTSHD'.; 'RHEM|
00000F90: 49 27 20 20 49 46 20 48  45 4D 49 3D 30 20 54 48  |I'  IF HEMI=0 TH|
00000FA0: 45 4E 20 52 45 54 55 52  4E 0D 3B 20 20 20 20 20  |EN RETURN.;     |
00000FB0: 20 20 20 20 20 48 45 4D  49 3D 30 0D 3B 20 20 20  |     HEMI=0.;   |
00000FC0: 20 20 20 20 20 20 20 49  46 20 58 52 45 4C 3E 43  |       IF XREL>C|
00000FD0: 4C 49 50 52 20 54 48 45  4E 20 52 45 54 55 52 4E  |LIPR THEN RETURN|
00000FE0: 0D 3B 20 20 20 20 20 20  20 20 20 20 5A 57 58 3D  |.;          ZWX=|
00000FF0: 32 2A 5A 2B 58 53 48 44  0D 3B 20 20 20 20 20 20  |2*Z+XSHD.;      |
00001000: 20 20 20 20 58 50 4C 54  3D 58 43 45 4E 54 2B 58  |    XPLT=XCENT+X|
00001010: 52 45 4C 0D 3B 20 20 20  20 20 20 20 20 20 20 47  |REL.;          G|
00001020: 4F 53 55 42 20 27 43 48  43 4C 55 50 27 0D 3B 20  |OSUB 'CHCLUP'.; |
00001030: 20 20 20 20 20 20 20 20  20 52 45 54 55 52 4E 0D  |         RETURN.|
00001040: 3B 0D 50 54 50 4C 4F 54  20 42 49 54 20 48 56 46  |;.PTPLOT BIT HVF|
00001050: 4C 41 47 0D 20 20 20 20  20 20 20 42 50 4C 20 4E  |LAG.       BPL N|
00001060: 4F 52 4F 54 0D 20 20 20  20 20 20 20 4C 44 41 20  |OROT.       LDA |
00001070: 58 52 45 4C 0D 20 20 20  20 20 20 20 50 48 41 0D  |XREL.       PHA.|
00001080: 20 20 20 20 20 20 20 50  48 41 0D 20 20 20 20 20  |       PHA.     |
00001090: 20 20 4C 44 41 20 59 52  45 4C 0D 20 20 20 20 20  |  LDA YREL.     |
000010A0: 20 20 53 54 41 20 58 52  45 4C 0D 20 20 20 20 20  |  STA XREL.     |
000010B0: 20 20 50 4C 41 0D 20 20  20 20 20 20 20 53 54 41  |  PLA.       STA|
000010C0: 20 59 52 45 4C 0D 20 20  20 20 20 20 20 4C 44 41  | YREL.       LDA|
000010D0: 20 58 53 48 44 0D 20 20  20 20 20 20 20 50 48 41  | XSHD.       PHA|
000010E0: 0D 20 20 20 20 20 20 20  50 48 41 0D 20 20 20 20  |.       PHA.    |
000010F0: 20 20 20 4C 44 41 20 59  53 48 44 0D 20 20 20 20  |   LDA YSHD.    |
00001100: 20 20 20 53 54 41 20 58  53 48 44 0D 20 20 20 20  |   STA XSHD.    |
00001110: 20 20 20 50 4C 41 0D 20  20 20 20 20 20 20 53 54  |   PLA.       ST|
00001120: 41 20 59 53 48 44 0D 20  20 20 20 20 20 20 4C 44  |A YSHD.       LD|
00001130: 41 20 58 53 48 44 2B 31  0D 20 20 20 20 20 20 20  |A XSHD+1.       |
00001140: 50 48 41 0D 20 20 20 20  20 20 20 50 48 41 0D 20  |PHA.       PHA. |
00001150: 20 20 20 20 20 20 4C 44  41 20 59 53 48 44 2B 31  |      LDA YSHD+1|
00001160: 0D 20 20 20 20 20 20 20  53 54 41 20 58 53 48 44  |.       STA XSHD|
00001170: 2B 31 0D 20 20 20 20 20  20 20 50 4C 41 0D 20 20  |+1.       PLA.  |
00001180: 20 20 20 20 20 53 54 41  20 59 53 48 44 2B 31 0D  |     STA YSHD+1.|
00001190: 4E 4F 52 4F 54 20 20 4A  53 52 20 47 45 54 5A 0D  |NOROT  JSR GETZ.|
000011A0: 50 54 50 4C 54 32 20 4C  44 41 20 23 24 30 31 0D  |PTPLT2 LDA #$01.|
000011B0: 20 20 20 20 20 20 20 53  54 41 20 48 45 4D 49 0D  |       STA HEMI.|
000011C0: 20 20 20 20 20 20 20 53  45 43 0D 20 20 20 20 20  |       SEC.     |
000011D0: 20 20 4C 44 41 20 43 4C  49 50 4C 20 20 3B 20 43  |  LDA CLIPL  ; C|
000011E0: 48 45 43 4B 20 4C 45 46  54 20 48 45 4D 49 53 50  |HECK LEFT HEMISP|
000011F0: 48 45 52 45 0D 20 20 20  20 20 20 20 43 4D 50 20  |HERE.       CMP |
00001200: 58 52 45 4C 0D 20 20 20  20 20 20 20 42 43 43 20  |XREL.       BCC |
00001210: 52 48 45 4D 49 0D 20 20  20 20 20 20 20 53 45 43  |RHEMI.       SEC|
00001220: 0D 20 20 20 20 20 20 20  4C 44 41 20 52 4F 4F 54  |.       LDA ROOT|
00001230: 0D 20 20 20 20 20 20 20  53 42 43 20 58 53 48 44  |.       SBC XSHD|
00001240: 0D 20 20 20 20 20 20 20  53 54 41 20 5A 57 58 0D  |.       STA ZWX.|
00001250: 20 20 20 20 20 20 20 4C  44 41 20 52 4F 4F 54 2B  |       LDA ROOT+|
00001260: 31 0D 20 20 20 20 20 20  20 53 42 43 20 58 53 48  |1.       SBC XSH|
00001270: 44 2B 31 0D 20 20 20 20  20 20 20 53 54 41 20 5A  |D+1.       STA Z|
00001280: 57 58 2B 31 0D 20 20 20  20 20 20 20 53 45 43 0D  |WX+1.       SEC.|
00001290: 20 20 20 20 20 20 20 4C  44 41 20 58 43 45 4E 54  |       LDA XCENT|
000012A0: 0D 20 20 20 20 20 20 20  53 42 43 20 58 52 45 4C  |.       SBC XREL|
000012B0: 0D 20 20 20 20 20 20 20  53 54 41 20 58 50 4C 54  |.       STA XPLT|
000012C0: 0D 20 20 20 20 20 20 20  4C 44 41 20 58 43 45 4E  |.       LDA XCEN|
000012D0: 54 2B 31 0D 20 20 20 20  20 20 20 53 42 43 20 23  |T+1.       SBC #|
000012E0: 24 30 30 0D 20 20 20 20  20 20 20 53 54 41 20 58  |$00.       STA X|
000012F0: 50 4C 54 2B 31 0D 3B 0D  43 48 43 4C 55 50 20 53  |PLT+1.;.CHCLUP S|
00001300: 45 43 0D 20 20 20 20 20  20 20 4C 44 41 20 43 4C  |EC.       LDA CL|
00001310: 49 50 55 20 20 3B 20 43  48 45 43 4B 20 46 4F 52  |IPU  ; CHECK FOR|
00001320: 20 55 50 20 43 4C 49 50  50 49 4E 47 0D 20 20 20  | UP CLIPPING.   |
00001330: 20 20 20 20 43 4D 50 20  59 52 45 4C 0D 20 20 20  |    CMP YREL.   |
00001340: 20 20 20 20 42 43 43 20  44 48 45 4D 49 0D 20 20  |    BCC DHEMI.  |
00001350: 20 20 20 20 20 43 4C 43  0D 20 20 20 20 20 20 20  |     CLC.       |
00001360: 4C 44 41 20 5A 57 58 0D  20 20 20 20 20 20 20 41  |LDA ZWX.       A|
00001370: 44 43 20 59 53 48 44 0D  20 20 20 20 20 20 20 53  |DC YSHD.       S|
00001380: 54 41 20 54 4F 4E 45 0D  20 20 20 20 20 20 20 4C  |TA TONE.       L|
00001390: 44 41 20 5A 57 58 2B 31  0D 20 20 20 20 20 20 20  |DA ZWX+1.       |
000013A0: 41 44 43 20 59 53 48 44  2B 31 0D 20 20 20 20 20  |ADC YSHD+1.     |
000013B0: 20 20 53 54 41 20 54 4F  4E 45 2B 31 0D 20 20 20  |  STA TONE+1.   |
000013C0: 20 20 20 20 4A 53 52 20  47 45 54 56 41 4C 0D 20  |    JSR GETVAL. |
000013D0: 20 20 20 20 20 20 43 4C  43 0D 20 20 20 20 20 20  |      CLC.      |
000013E0: 20 4C 44 41 20 59 43 45  4E 54 0D 20 20 20 20 20  | LDA YCENT.     |
000013F0: 20 20 41 44 43 20 59 52  45 4C 0D 20 20 20 20 20  |  ADC YREL.     |
00001400: 20 20 53 54 41 20 59 50  4C 54 0D 20 20 20 20 20  |  STA YPLT.     |
00001410: 20 20 4A 53 52 20 50 4C  54 53 48 44 0D 3B 0D 44  |  JSR PLTSHD.;.D|
00001420: 48 45 4D 49 20 20 53 45  43 0D 20 20 20 20 20 20  |HEMI  SEC.      |
00001430: 20 4C 44 41 20 43 4C 49  50 44 20 20 3B 20 43 48  | LDA CLIPD  ; CH|
00001440: 45 43 4B 20 46 4F 52 20  44 4F 57 4E 20 43 4C 49  |ECK FOR DOWN CLI|
00001450: 50 50 49 4E 47 0D 20 20  20 20 20 20 20 43 4D 50  |PPING.       CMP|
00001460: 20 59 52 45 4C 0D 20 20  20 20 20 20 20 42 43 43  | YREL.       BCC|
00001470: 20 52 48 45 4D 49 0D 20  20 20 20 20 20 20 53 45  | RHEMI.       SE|
00001480: 43 0D 20 20 20 20 20 20  20 4C 44 41 20 5A 57 58  |C.       LDA ZWX|
00001490: 0D 20 20 20 20 20 20 20  53 42 43 20 59 53 48 44  |.       SBC YSHD|
000014A0: 0D 20 20 20 20 20 20 20  53 54 41 20 54 4F 4E 45  |.       STA TONE|
000014B0: 0D 20 20 20 20 20 20 20  4C 44 41 20 5A 57 58 2B  |.       LDA ZWX+|
000014C0: 31 0D 20 20 20 20 20 20  20 53 42 43 20 59 53 48  |1.       SBC YSH|
000014D0: 44 2B 31 0D 20 20 20 20  20 20 20 53 54 41 20 54  |D+1.       STA T|
000014E0: 4F 4E 45 2B 31 0D 20 20  20 20 20 20 20 4A 53 52  |ONE+1.       JSR|
000014F0: 20 47 45 54 56 41 4C 0D  20 20 20 20 20 20 20 53  | GETVAL.       S|
00001500: 45 43 0D 20 20 20 20 20  20 20 4C 44 41 20 59 43  |EC.       LDA YC|
00001510: 45 4E 54 0D 20 20 20 20  20 20 20 53 42 43 20 59  |ENT.       SBC Y|
00001520: 52 45 4C 0D 20 20 20 20  20 20 20 53 54 41 20 59  |REL.       STA Y|
00001530: 50 4C 54 0D 20 20 20 20  20 20 20 4A 53 52 20 50  |PLT.       JSR P|
00001540: 4C 54 53 48 44 0D 3B 0D  52 48 45 4D 49 20 20 4C  |LTSHD.;.RHEMI  L|
00001550: 44 41 20 48 45 4D 49 0D  20 20 20 20 20 20 20 42  |DA HEMI.       B|
00001560: 45 51 20 50 4C 44 4F 4E  45 0D 20 20 20 20 20 20  |EQ PLDONE.      |
00001570: 20 44 45 43 20 48 45 4D  49 0D 20 20 20 20 20 20  | DEC HEMI.      |
00001580: 20 53 45 43 0D 20 20 20  20 20 20 20 4C 44 41 20  | SEC.       LDA |
00001590: 43 4C 49 50 52 20 20 3B  20 43 48 45 43 4B 20 46  |CLIPR  ; CHECK F|
000015A0: 4F 52 20 52 49 47 48 54  20 43 4C 49 50 50 49 4E  |OR RIGHT CLIPPIN|
000015B0: 47 0D 20 20 20 20 20 20  20 43 4D 50 20 58 52 45  |G.       CMP XRE|
000015C0: 4C 0D 20 20 20 20 20 20  20 42 43 43 20 50 4C 44  |L.       BCC PLD|
000015D0: 4F 4E 45 0D 20 20 20 20  20 20 20 43 4C 43 0D 20  |ONE.       CLC. |
000015E0: 20 20 20 20 20 20 4C 44  41 20 52 4F 4F 54 0D 20  |      LDA ROOT. |
000015F0: 20 20 20 20 20 20 41 44  43 20 58 53 48 44 0D 20  |      ADC XSHD. |
00001600: 20 20 20 20 20 20 53 54  41 20 5A 57 58 0D 20 20  |      STA ZWX.  |
00001610: 20 20 20 20 20 4C 44 41  20 52 4F 4F 54 2B 31 0D  |     LDA ROOT+1.|
00001620: 20 20 20 20 20 20 20 41  44 43 20 58 53 48 44 2B  |       ADC XSHD+|
00001630: 31 0D 20 20 20 20 20 20  20 53 54 41 20 5A 57 58  |1.       STA ZWX|
00001640: 2B 31 0D 20 20 20 20 20  20 20 43 4C 43 0D 20 20  |+1.       CLC.  |
00001650: 20 20 20 20 20 4C 44 41  20 58 43 45 4E 54 0D 20  |     LDA XCENT. |
00001660: 20 20 20 20 20 20 41 44  43 20 58 52 45 4C 0D 20  |      ADC XREL. |
00001670: 20 20 20 20 20 20 53 54  41 20 58 50 4C 54 0D 20  |      STA XPLT. |
00001680: 20 20 20 20 20 20 4C 44  41 20 58 43 45 4E 54 2B  |      LDA XCENT+|
00001690: 31 0D 20 20 20 20 20 20  20 41 44 43 20 23 24 30  |1.       ADC #$0|
000016A0: 30 0D 20 20 20 20 20 20  20 53 54 41 20 58 50 4C  |0.       STA XPL|
000016B0: 54 2B 31 0D 20 20 20 20  20 20 20 4A 4D 50 20 43  |T+1.       JMP C|
000016C0: 48 43 4C 55 50 0D 50 4C  44 4F 4E 45 20 42 49 54  |HCLUP.PLDONE BIT|
000016D0: 20 48 56 46 4C 41 47 0D  20 20 20 20 20 20 20 42  | HVFLAG.       B|
000016E0: 50 4C 20 4E 4F 52 53 54  52 0D 20 20 20 20 20 20  |PL NORSTR.      |
000016F0: 20 4C 44 41 20 58 53 48  44 2B 31 20 20 20 20 3B  | LDA XSHD+1    ;|
00001700: 20 52 45 53 54 4F 52 45  20 43 4F 4F 52 44 53 0D  | RESTORE COORDS.|
00001710: 20 20 20 20 20 20 20 53  54 41 20 59 53 48 44 2B  |       STA YSHD+|
00001720: 31 0D 20 20 20 20 20 20  20 50 4C 41 0D 20 20 20  |1.       PLA.   |
00001730: 20 20 20 20 53 54 41 20  58 53 48 44 2B 31 0D 20  |    STA XSHD+1. |
00001740: 20 20 20 20 20 20 4C 44  41 20 58 53 48 44 0D 20  |      LDA XSHD. |
00001750: 20 20 20 20 20 20 53 54  41 20 59 53 48 44 0D 20  |      STA YSHD. |
00001760: 20 20 20 20 20 20 50 4C  41 0D 20 20 20 20 20 20  |      PLA.      |
00001770: 20 53 54 41 20 58 53 48  44 0D 20 20 20 20 20 20  | STA XSHD.      |
00001780: 20 4C 44 41 20 58 52 45  4C 0D 20 20 20 20 20 20  | LDA XREL.      |
00001790: 20 53 54 41 20 59 52 45  4C 0D 20 20 20 20 20 20  | STA YREL.      |
000017A0: 20 50 4C 41 0D 20 20 20  20 20 20 20 53 54 41 20  | PLA.       STA |
000017B0: 58 52 45 4C 0D 4E 4F 52  53 54 52 20 52 54 53 0D  |XREL.NORSTR RTS.|
000017C0: 3B 0D 3B 2A 2A 2A 2A 2A  2A 2A 2A 2A 2A 2A 2A 2A  |;.;*************|
000017D0: 2A 2A 2A 2A 2A 2A 2A 2A  2A 2A 2A 2A 2A 2A 2A 2A  |****************|
000017E0: 2A 2A 2A 2A 2A 2A 2A 2A  2A 2A 2A 2A 0D 3B 0D 3B  |************.;.;|
000017F0: 20 43 41 4C 43 55 4C 41  54 45 20 5A 20 46 52 4F  | CALCULATE Z FRO|
00001800: 4D 20 4C 4F 43 41 4C 20  58 2C 59 20 42 59 0D 3B  |M LOCAL X,Y BY.;|
00001810: 20 50 59 54 48 41 47 4F  52 45 41 4E 20 53 55 4D  | PYTHAGOREAN SUM|
00001820: 0D 3B 0D 47 45 54 5A 20  20 20 4C 44 41 20 52 41  |.;.GETZ   LDA RA|
00001830: 44 49 55 53 0D 20 20 20  20 20 20 20 53 54 41 20  |DIUS.       STA |
00001840: 41 52 47 0D 20 20 20 20  20 20 20 4A 53 52 20 53  |ARG.       JSR S|
00001850: 51 55 41 52 45 0D 20 20  20 20 20 20 20 53 54 41  |QUARE.       STA|
00001860: 20 54 4E 54 4D 50 2B 31  0D 20 20 20 20 20 20 20  | TNTMP+1.       |
00001870: 4C 44 41 20 53 51 52 0D  20 20 20 20 20 20 20 53  |LDA SQR.       S|
00001880: 54 41 20 54 4E 54 4D 50  0D 20 20 20 20 20 20 20  |TA TNTMP.       |
00001890: 4C 44 41 20 58 53 48 44  0D 20 20 20 20 20 20 20  |LDA XSHD.       |
000018A0: 53 54 41 20 41 52 47 0D  20 20 20 20 20 20 20 4A  |STA ARG.       J|
000018B0: 53 52 20 53 51 55 41 52  45 0D 20 20 20 20 20 20  |SR SQUARE.      |
000018C0: 20 53 45 43 0D 20 20 20  20 20 20 20 4C 44 41 20  | SEC.       LDA |
000018D0: 54 4E 54 4D 50 0D 20 20  20 20 20 20 20 53 42 43  |TNTMP.       SBC|
000018E0: 20 53 51 52 0D 20 20 20  20 20 20 20 53 54 41 20  | SQR.       STA |
000018F0: 54 4E 54 4D 50 0D 20 20  20 20 20 20 20 4C 44 41  |TNTMP.       LDA|
00001900: 20 54 4E 54 4D 50 2B 31  0D 20 20 20 20 20 20 20  | TNTMP+1.       |
00001910: 53 42 43 20 53 51 52 2B  31 0D 20 20 20 20 20 20  |SBC SQR+1.      |
00001920: 20 53 54 41 20 54 4E 54  4D 50 2B 31 0D 20 20 20  | STA TNTMP+1.   |
00001930: 20 20 20 20 4C 44 41 20  59 53 48 44 0D 20 20 20  |    LDA YSHD.   |
00001940: 20 20 20 20 53 54 41 20  41 52 47 0D 20 20 20 20  |    STA ARG.    |
00001950: 20 20 20 4A 53 52 20 53  51 55 41 52 45 0D 20 20  |   JSR SQUARE.  |
00001960: 20 20 20 20 20 53 45 43  0D 20 20 20 20 20 20 20  |     SEC.       |
00001970: 4C 44 41 20 54 4E 54 4D  50 0D 20 20 20 20 20 20  |LDA TNTMP.      |
00001980: 20 53 42 43 20 53 51 52  0D 20 20 20 20 20 20 20  | SBC SQR.       |
00001990: 53 54 41 20 52 41 44 43  4E 44 0D 20 20 20 20 20  |STA RADCND.     |
000019A0: 20 20 4C 44 41 20 54 4E  54 4D 50 2B 31 0D 20 20  |  LDA TNTMP+1.  |
000019B0: 20 20 20 20 20 53 42 43  20 53 51 52 2B 31 0D 20  |     SBC SQR+1. |
000019C0: 20 20 20 20 20 20 53 54  41 20 52 41 44 43 4E 44  |      STA RADCND|
000019D0: 2B 31 0D 20 20 20 20 20  20 20 42 4D 49 20 5A 45  |+1.       BMI ZE|
000019E0: 52 4F 4F 54 0D 20 20 20  20 20 20 20 4A 53 52 20  |ROOT.       JSR |
000019F0: 53 51 52 54 0D 20 20 20  20 20 20 20 41 53 4C 20  |SQRT.       ASL |
00001A00: 52 4F 4F 54 0D 20 20 20  20 20 20 20 52 4F 4C 20  |ROOT.       ROL |
00001A10: 52 4F 4F 54 2B 31 0D 20  20 20 20 20 20 20 52 54  |ROOT+1.       RT|
00001A20: 53 0D 5A 45 52 4F 4F 54  20 4C 44 41 20 23 24 30  |S.ZEROOT LDA #$0|
00001A30: 30 0D 20 20 20 20 20 20  20 53 54 41 20 52 4F 4F  |0.       STA ROO|
00001A40: 54 0D 20 20 20 20 20 20  20 53 54 41 20 52 4F 4F  |T.       STA ROO|
00001A50: 54 2B 31 0D 20 20 20 20  20 20 20 52 54 53 0D 3B  |T+1.       RTS.;|
00001A60: 0D 3B 2A 2A 2A 2A 2A 2A  2A 2A 2A 2A 2A 2A 2A 2A  |.;**************|
00001A70: 2A 2A 2A 2A 2A 2A 2A 2A  2A 2A 2A 2A 2A 2A 2A 2A  |****************|
00001A80: 2A 2A 2A 2A 2A 2A 2A 2A  2A 2A 2A 0D 3B 0D 3B 20  |***********.;.; |
00001A90: 53 45 54 20 55 50 20 50  41 52 41 4D 45 54 45 52  |SET UP PARAMETER|
00001AA0: 53 20 46 4F 52 20 54 4F  52 4F 49 44 53 0D 3B 0D  |S FOR TOROIDS.;.|
00001AB0: 3B 20 52 54 3D 28 52 4F  2D 52 49 29 2F 32 20 20  |; RT=(RO-RI)/2  |
00001AC0: 20 52 53 3D 52 54 2A 52  54 20 20 20 52 43 3D 52  | RS=RT*RT   RC=R|
00001AD0: 54 2B 52 49 0D 3B 0D 54  50 41 52 4D 20 20 4C 44  |T+RI.;.TPARM  LD|
00001AE0: 41 20 52 4F 0D 20 20 20  20 20 20 20 53 45 43 0D  |A RO.       SEC.|
00001AF0: 20 20 20 20 20 20 20 53  42 43 20 52 49 0D 20 20  |       SBC RI.  |
00001B00: 20 20 20 20 20 4C 53 52  20 41 0D 20 20 20 20 20  |     LSR A.     |
00001B10: 20 20 53 54 41 20 52 54  0D 20 20 20 20 20 20 20  |  STA RT.       |
00001B20: 53 54 41 20 52 41 44 49  55 53 0D 20 20 20 20 20  |STA RADIUS.     |
00001B30: 20 20 43 4C 43 0D 20 20  20 20 20 20 20 41 44 43  |  CLC.       ADC|
00001B40: 20 52 49 0D 20 20 20 20  20 20 20 53 54 41 20 52  | RI.       STA R|
00001B50: 43 0D 20 20 20 20 20 20  20 4C 44 41 20 52 54 0D  |C.       LDA RT.|
00001B60: 20 20 20 20 20 20 20 53  54 41 20 41 52 47 0D 20  |       STA ARG. |
00001B70: 20 20 20 20 20 20 4A 53  52 20 53 51 55 41 52 45  |      JSR SQUARE|
00001B80: 0D 20 20 20 20 20 20 20  4C 44 41 20 53 51 52 0D  |.       LDA SQR.|
00001B90: 20 20 20 20 20 20 20 53  54 41 20 52 53 0D 20 20  |       STA RS.  |
00001BA0: 20 20 20 20 20 4C 44 41  20 53 51 52 2B 31 0D 20  |     LDA SQR+1. |
00001BB0: 20 20 20 20 20 20 53 54  41 20 52 53 2B 31 0D 20  |      STA RS+1. |
00001BC0: 20 20 20 20 20 20 4C 44  41 20 23 30 0D 20 20 20  |      LDA #0.   |
00001BD0: 20 20 20 20 53 54 41 20  43 4E 54 58 0D 20 20 20  |    STA CNTX.   |
00001BE0: 20 20 20 20 52 54 53 0D  3B 0D 3B 2A 2A 2A 2A 2A  |    RTS.;.;*****|
00001BF0: 2A 2A 2A 2A 2A 2A 2A 2A  2A 2A 2A 2A 2A 2A 2A 2A  |****************|
00001C00: 2A 2A 2A 2A 2A 2A 2A 2A  2A 2A 2A 2A 2A 2A 2A 2A  |****************|
00001C10: 2A 2A 2A 2A 0D 3B 0D 3B  20 44 52 41 57 20 41 20  |****.;.; DRAW A |
00001C20: 53 48 41 44 45 44 20 53  50 48 45 52 45 0D 3B 0D  |SHADED SPHERE.;.|
00001C30: 3B 20 27 42 41 53 49 43  20 53 55 42 52 4F 55 54  |; 'BASIC SUBROUT|
00001C40: 49 4E 45 27 20 45 51 55  49 56 41 4C 45 4E 54 0D  |INE' EQUIVALENT.|
00001C50: 3B 0D 3B 20 27 53 50 48  45 52 45 27 20 46 4F 52  |;.; 'SPHERE' FOR|
00001C60: 20 43 4E 54 58 3D 30 20  54 4F 20 52 41 44 49 55  | CNTX=0 TO RADIU|
00001C70: 53 2F 53 51 52 28 32 29  0D 3B 20 20 20 20 20 20  |S/SQR(2).;      |
00001C80: 20 20 20 20 58 52 45 4C  3D 43 4E 54 58 3A 58 53  |    XREL=CNTX:XS|
00001C90: 48 44 3D 43 4E 54 58 0D  3B 20 20 20 20 20 20 20  |HD=CNTX.;       |
00001CA0: 20 20 20 46 4F 52 20 43  4E 54 59 3D 43 4E 54 58  |   FOR CNTY=CNTX|
00001CB0: 20 54 4F 20 53 51 52 28  52 41 44 2A 52 41 44 2D  | TO SQR(RAD*RAD-|
00001CC0: 43 4E 54 58 2A 43 4E 54  58 29 0D 3B 20 20 20 20  |CNTX*CNTX).;    |
00001CD0: 20 20 20 20 20 20 59 52  45 4C 3D 43 4E 54 59 3A  |      YREL=CNTY:|
00001CE0: 59 53 48 44 3D 43 4E 54  59 0D 3B 20 20 20 20 20  |YSHD=CNTY.;     |
00001CF0: 20 20 20 20 20 48 56 46  4C 41 47 3D 30 0D 3B 20  |     HVFLAG=0.; |
00001D00: 20 20 20 20 20 20 20 20  20 47 4F 53 55 42 20 27  |         GOSUB '|
00001D10: 50 54 50 4C 4F 54 27 0D  3B 20 20 20 20 20 20 20  |PTPLOT'.;       |
00001D20: 20 20 20 52 45 4D 20 45  58 43 48 41 4E 47 45 20  |   REM EXCHANGE |
00001D30: 58 20 26 20 59 20 54 4F  20 55 53 45 20 38 2D 46  |X & Y TO USE 8-F|
00001D40: 4F 4C 44 20 53 59 4D 0D  3B 20 20 20 20 20 20 20  |OLD SYM.;       |
00001D50: 20 20 20 48 56 46 4C 41  47 3D 2D 31 32 38 0D 3B  |   HVFLAG=-128.;|
00001D60: 0D 3B 20 20 20 20 20 20  20 20 20 20 47 4F 53 55  |.;          GOSU|
00001D70: 42 20 27 50 54 50 4C 4F  54 27 0D 3B 20 20 20 20  |B 'PTPLOT'.;    |
00001D80: 20 20 20 20 20 20 4E 45  58 54 20 43 4E 54 59 0D  |      NEXT CNTY.|
00001D90: 3B 20 20 20 20 20 20 20  20 20 20 4E 45 58 54 20  |;          NEXT |
00001DA0: 43 4E 54 58 0D 3B 20 20  20 20 20 20 20 20 20 20  |CNTX.;          |
00001DB0: 52 45 54 55 52 4E 0D 3B  0D 3B 0D 53 50 48 45 52  |RETURN.;.;.SPHER|
00001DC0: 45 20 4C 44 41 20 52 41  44 49 55 53 0D 20 20 20  |E LDA RADIUS.   |
00001DD0: 20 20 20 20 53 54 41 20  41 52 47 0D 20 20 20 20  |    STA ARG.    |
00001DE0: 20 20 20 4A 53 52 20 53  51 55 41 52 45 0D 20 20  |   JSR SQUARE.  |
00001DF0: 20 20 20 20 20 41 53 4C  20 53 51 52 0D 20 20 20  |     ASL SQR.   |
00001E00: 20 20 20 20 52 4F 4C 20  53 51 52 2B 31 0D 20 20  |    ROL SQR+1.  |
00001E10: 20 20 20 20 20 4C 44 41  20 53 51 52 0D 20 20 20  |     LDA SQR.   |
00001E20: 20 20 20 20 53 54 41 20  52 41 44 43 4E 44 0D 20  |    STA RADCND. |
00001E30: 20 20 20 20 20 20 4C 44  41 20 53 51 52 2B 31 0D  |      LDA SQR+1.|
00001E40: 20 20 20 20 20 20 20 53  54 41 20 52 41 44 43 42  |       STA RADCB|
00001E50: 44 2B 31 0D 8E 8E 8E 8E  8E 8E 8E EC E9 79 8E E9  |D+1..........y..|
00001E60: 7F 79 E7 E4 9E 8E 8E 8E  8E 8E 8E EE 79 79 8E E9  |.y..........yy..|
00001E70: E0 70 77 8C 9F F4 9E 8E  8E 8E 8E 8E 8E E9 E0 79  |.pw............y|
00001E80: 8E E9 E0 70 77 E4 9E 8E  8E 8E 8E 8E 8E EE 7E EE  |...pw.........~.|
00001E90: 9E E9 E0 70 77 E4 9E 8E  8E 8E 8E 8E 8E E9 77 EE  |...pw.........w.|
00001EA0: 9E EE 74 7E 7E F4 9E 8E  8E 8E 8E 8E 8E EE 7E EE  |..t~~.........~.|
00001EB0: 9E 88 9E 8F 8F E4 9E 8E  8E 8E 8E 8E 8E E9 77 EE  |..............w.|
00001EC0: 9E E8 4E 54 58 0D 20 20  20 20 20 20 20 53 54 41  |..NTX.       STA|
00001ED0: 20 58 53 48 44 2B 31 0D  20 20 20 20 20 20 20 53  | XSHD+1.       S|
00001EE0: 54 41 20 59 53 48 44 2B  31 0D 20 20 20 20 20 20  |TA YSHD+1.      |
00001EF0: 20 4C 44 41 20 52 41 44  49 55 53 0D 20 20 20 20  | LDA RADIUS.    |
00001F00: 20 20 20 53 54 41 20 41  52 47 0D 20 20 20 20 20  |   STA ARG.     |
00001F10: 20 20 4A 53 52 20 53 51  55 41 52 45 0D 20 20 20  |  JSR SQUARE.   |
00001F20: 20 20 20 20 53 54 41 20  54 45 4D 50 2B 31 0D 20  |    STA TEMP+1. |
00001F30: 20 20 20 20 20 20 4C 44  41 20 53 51 52 0D 20 20  |      LDA SQR.  |
00001F40: 20 20 20 20 20 53 54 41  20 54 45 4D 50 0D 4C 4F  |     STA TEMP.LO|
00001F50: 4F 50 58 20 20 4C 44 41  20 43 4E 54 58 0D 20 20  |OPX  LDA CNTX.  |
00001F60: 20 20 20 20 20 53 54 41  20 43 4E 54 59 0D 20 20  |     STA CNTY.  |
00001F70: 20 20 20 20 20 53 54 41  20 41 52 47 0D 20 20 20  |     STA ARG.   |
00001F80: 20 20 20 20 53 54 41 20  58 52 45 4C 0D 20 20 20  |    STA XREL.   |
00001F90: 20 20 20 20 53 54 41 20  58 53 48 44 0D 20 20 20  |    STA XSHD.   |
00001FA0: 20 20 20 20 4A 53 52 20  53 51 55 41 52 45 0D 20  |    JSR SQUARE. |
00001FB0: 20 20 20 20 20 20 53 45  43 0D 20 20 20 20 20 20  |      SEC.      |
00001FC0: 20 4C 44 41 20 54 45 4D  50 0D 20 20 20 20 20 20  | LDA TEMP.      |
00001FD0: 20 53 42 43 20 53 51 52  0D 20 20 20 20 20 20 20  | SBC SQR.       |
00001FE0: 53 54 41 20 52 41 44 43  4E 44 0D 20 20 20 20 20  |STA RADCND.     |
00001FF0: 20 20 4C 44 41 20 54 45  4D 50 2B 31 0D 20 20 20  |  LDA TEMP+1.   |
00002000: 20 20 20 20 53 42 43 20  53 51 52 2B 31 0D 20 20  |    SBC SQR+1.  |
00002010: 20 20 20 20 20 53 54 41  20 52 41 44 43 4E 44 2B  |     STA RADCND+|
00002020: 31 0D 20 20 20 20 20 20  20 4A 53 52 20 53 51 52  |1.       JSR SQR|
00002030: 54 0D 20 20 20 20 20 20  20 4C 44 41 20 52 4F 4F  |T.       LDA ROO|
00002040: 54 0D 20 20 20 20 20 20  20 53 54 41 20 4D 41 58  |T.       STA MAX|
00002050: 0D 4C 4F 4F 50 59 20 20  4C 44 41 20 43 4E 54 59  |.LOOPY  LDA CNTY|
00002060: 0D 20 20 20 20 20 20 20  53 54 41 20 59 52 45 4C  |.       STA YREL|
00002070: 0D 20 20 20 20 20 20 20  53 54 41 20 59 53 48 44  |.       STA YSHD|
00002080: 0D 20 20 20 20 20 20 20  4C 44 41 20 23 30 0D 20  |.       LDA #0. |
00002090: 20 20 20 20 20 20 53 54  41 20 48 56 46 4C 41 47  |      STA HVFLAG|
000020A0: 0D 20 20 20 20 20 20 20  4A 53 52 20 50 54 50 4C  |.       JSR PTPL|
000020B0: 4F 54 0D 20 20 20 20 20  20 20 4C 44 41 20 23 24  |OT.       LDA #$|
000020C0: 38 30 0D 20 20 20 20 20  20 20 53 54 41 20 48 56  |80.       STA HV|
000020D0: 46 4C 41 47 0D 20 20 20  20 20 20 20 4A 53 52 20  |FLAG.       JSR |
000020E0: 50 54 50 4C 4F 54 0D 20  20 20 20 20 20 20 4C 44  |PTPLOT.       LD|
000020F0: 41 20 43 4E 54 59 0D 20  20 20 20 20 20 20 43 4D  |A CNTY.       CM|
00002100: 50 20 4D 41 58 0D 20 20  20 20 20 20 20 42 45 51  |P MAX.       BEQ|
00002110: 20 44 4F 4E 45 59 0D 20  20 20 20 20 20 20 49 4E  | DONEY.       IN|
00002120: 43 20 43 4E 54 59 0D 20  20 20 20 20 20 20 4A 4D  |C CNTY.       JM|
00002130: 50 20 4C 4F 4F 50 59 0D  44 4F 4E 45 59 20 20 4C  |P LOOPY.DONEY  L|
00002140: 44 41 20 43 4E 54 58 0D  20 20 20 20 20 20 20 43  |DA CNTX.       C|
00002150: 4D 50 20 58 4D 41 58 0D  20 20 20 20 20 20 20 42  |MP XMAX.       B|
00002160: 45 51 20 44 4F 4E 45 0D  20 20 20 20 20 20 20 49  |EQ DONE.       I|
00002170: 4E 43 20 43 4E 54 58 0D  20 20 20 20 20 20 20 4A  |NC CNTX.       J|
00002180: 4D 50 20 4C 4F 4F 50 58  0D 44 4F 4E 45 20 20 20  |MP LOOPX.DONE   |
00002190: 52 54 53 0D 3B 0D 3B 2A  2A 2A 2A 2A 2A 2A 2A 2A  |RTS.;.;*********|
000021A0: 2A 2A 2A 2A 2A 2A 2A 2A  2A 2A 2A 2A 2A 2A 2A 2A  |****************|
000021B0: 2A 2A 2A 2A 2A 2A 2A 2A  2A 2A 2A 2A 2A 2A 2A 2A  |****************|
000021C0: 0D 3B 0D 3B 20 44 52 41  57 20 53 48 41 44 45 44  |.;.; DRAW SHADED|
000021D0: 20 43 59 4C 49 4E 44 45  52 53 0D 3B 0D 3B 20 27  | CYLINDERS.;.; '|
000021E0: 42 41 53 49 43 20 53 55  42 52 4F 55 54 49 4E 45  |BASIC SUBROUTINE|
000021F0: 27 20 45 51 55 49 56 41  4C 45 4E 54 0D 3B 0D 3B  |' EQUIVALENT.;.;|
00002200: 20 27 43 59 4C 4E 44 52  27 20 58 53 48 44 3D 30  | 'CYLNDR' XSHD=0|
00002210: 0D 3B 20 20 20 20 20 20  20 20 20 20 46 4F 52 20  |.;          FOR |
00002220: 59 52 45 4C 3D 52 41 44  49 55 53 20 54 4F 20 30  |YREL=RADIUS TO 0|
00002230: 0D 3B 20 20 20 20 20 20  20 20 20 20 59 53 48 44  |.;          YSHD|
00002240: 3D 59 52 45 4C 0D 3B 20  20 20 20 20 20 20 20 20  |=YREL.;         |
00002250: 20 46 4F 52 20 58 52 45  4C 3D 48 4C 45 4E 20 54  | FOR XREL=HLEN T|
00002260: 4F 20 30 0D 3B 20 20 20  20 20 20 20 20 20 20 47  |O 0.;          G|
00002270: 4F 53 55 42 20 27 50 54  50 4C 4F 54 27 0D 3B 20  |OSUB 'PTPLOT'.; |
00002280: 20 20 20 20 20 20 20 20  20 4E 45 58 54 20 58 52  |         NEXT XR|
00002290: 45 4C 0D 3B 20 20 20 20  20 20 20 20 20 20 4E 45  |EL.;          NE|
000022A0: 58 54 20 59 52 45 4C 0D  3B 20 20 20 20 20 20 20  |XT YREL.;       |
000022B0: 20 20 20 52 45 54 55 52  4E 0D 3B 0D 43 59 4C 4E  |   RETURN.;.CYLN|
000022C0: 44 52 20 4C 44 41 20 23  30 0D 20 20 20 20 20 20  |DR LDA #0.      |
000022D0: 20 53 54 41 20 58 53 48  44 0D 20 20 20 20 20 20  | STA XSHD.      |
000022E0: 20 53 54 41 20 58 53 48  44 2B 31 0D 20 20 20 20  | STA XSHD+1.    |
000022F0: 20 20 20 53 54 41 20 59  53 48 44 2B 31 0D 20 20  |   STA YSHD+1.  |
00002300: 20 20 20 20 20 4C 44 41  20 52 41 44 49 55 53 0D  |     LDA RADIUS.|
00002310: 20 20 20 20 20 20 20 53  54 41 20 59 52 45 4C 0D  |       STA YREL.|
00002320: 43 59 4C 4F 4F 50 20 4C  44 41 20 48 4C 45 4E 0D  |CYLOOP LDA HLEN.|
00002330: 20 20 20 20 20 20 20 53  54 41 20 58 52 45 4C 0D  |       STA XREL.|
00002340: 20 20 20 20 20 20 20 4C  44 41 20 59 52 45 4C 0D  |       LDA YREL.|
00002350: 20 20 20 20 20 20 20 53  54 41 20 59 53 48 44 0D  |       STA YSHD.|
00002360: 43 58 4C 4F 4F 50 20 4A  53 52 20 50 54 50 4C 4F  |CXLOOP JSR PTPLO|
00002370: 54 0D 20 20 20 20 20 20  20 44 45 43 20 58 52 45  |T.       DEC XRE|
00002380: 4C 0D 20 20 20 20 20 20  20 42 50 4C 20 43 58 4C  |L.       BPL CXL|
00002390: 4F 4F 50 0D 20 20 20 20  20 20 20 44 45 43 20 59  |OOP.       DEC Y|
000023A0: 52 45 4C 0D 20 20 20 20  20 20 20 42 50 4C 20 43  |REL.       BPL C|
000023B0: 59 4C 4F 4F 50 0D 20 20  20 20 20 20 20 52 54 53  |YLOOP.       RTS|
000023C0: 0D 3B 0D 3B 2A 2A 2A 2A  2A 2A 2A 2A 2A 2A 2A 2A  |.;.;************|
000023D0: 2A 2A 2A 2A 2A 2A 2A 2A  2A 2A 2A 2A 2A 2A 2A 2A  |****************|
000023E0: 2A 2A 2A 2A 2A 2A 2A 2A  2A 2A 2A 2A 2A 0D 3B 0D  |*************.;.|
000023F0: 3B 20 44 52 41 57 20 45  44 47 45 2D 56 49 45 57  |; DRAW EDGE-VIEW|
00002400: 20 54 4F 52 4F 49 44 53  0D 3B 0D 3B 20 27 42 41  | TOROIDS.;.; 'BA|
00002410: 53 49 43 20 53 55 42 52  4F 55 54 49 4E 45 27 20  |SIC SUBROUTINE' |
00002420: 45 51 55 49 56 41 4C 45  4E 54 0D 3B 0D 3B 20 27  |EQUIVALENT.;.; '|
00002430: 45 44 47 54 4F 52 27 20  47 4F 53 55 42 20 27 54  |EDGTOR' GOSUB 'T|
00002440: 50 41 52 4D 27 3A 52 45  4D 20 53 45 54 20 55 50  |PARM':REM SET UP|
00002450: 20 52 41 44 49 49 0D 3B  20 20 20 20 20 20 20 20  | RADII.;        |
00002460: 20 20 46 4F 52 20 43 4E  54 58 3D 30 20 54 4F 20  |  FOR CNTX=0 TO |
00002470: 52 54 0D 3B 20 20 20 20  20 20 20 20 20 20 58 52  |RT.;          XR|
00002480: 45 4C 3D 43 4E 54 58 3A  58 53 48 44 3D 43 4E 54  |EL=CNTX:XSHD=CNT|
00002490: 58 0D 3B 20 20 20 20 20  20 20 20 20 20 52 30 3D  |X.;          R0=|
000024A0: 53 51 52 28 52 54 2A 52  54 2D 43 4E 54 58 2A 43  |SQR(RT*RT-CNTX*C|
000024B0: 4E 54 58 29 0D 3B 20 20  20 20 20 20 20 20 20 20  |NTX).;          |
000024C0: 46 4F 52 20 43 4E 54 59  3D 30 20 54 4F 20 52 30  |FOR CNTY=0 TO R0|
000024D0: 2B 52 43 0D 3B 20 20 20  20 20 20 20 20 20 20 59  |+RC.;          Y|
000024E0: 52 45 4C 3D 43 4E 54 59  0D 3B 20 20 20 20 20 20  |REL=CNTY.;      |
000024F0: 20 20 20 20 59 53 48 44  3D 28 52 30 2A 43 4E 54  |    YSHD=(R0*CNT|
00002500: 59 29 2F 28 52 30 2B 52  43 29 0D 3B 20 20 20 20  |Y)/(R0+RC).;    |
00002510: 20 20 20 20 20 20 47 4F  53 55 42 20 27 50 54 50  |      GOSUB 'PTP|
00002520: 4C 4F 54 27 0D 3B 20 20  20 20 20 20 20 20 20 20  |LOT'.;          |
00002530: 4E 45 58 54 20 43 4E 54  59 0D 3B 20 20 20 20 20  |NEXT CNTY.;     |
00002540: 20 20 20 20 20 4E 45 58  54 20 43 4E 54 58 0D 3B  |     NEXT CNTX.;|
00002550: 20 20 20 20 20 20 20 20  20 20 52 45 54 55 52 4E  |          RETURN|
00002560: 0D 3B 0D 45 44 47 54 4F  52 20 4A 53 52 20 54 50  |.;.EDGTOR JSR TP|
00002570: 41 52 4D 0D 20 20 20 20  20 20 20 4C 44 41 20 23  |ARM.       LDA #|
00002580: 24 30 30 0D 20 20 20 20  20 20 20 53 54 41 20 58  |$00.       STA X|
00002590: 53 48 44 2B 31 0D 20 20  20 20 20 20 20 53 54 41  |SHD+1.       STA|
000025A0: 20 59 53 48 44 2B 31 0D  4C 4F 4F 50 58 34 20 4C  | YSHD+1.LOOPX4 L|
000025B0: 44 41 20 43 4E 54 58 0D  20 20 20 20 20 20 20 53  |DA CNTX.       S|
000025C0: 54 41 20 58 52 45 4C 0D  20 20 20 20 20 20 20 53  |TA XREL.       S|
000025D0: 54 41 20 58 53 48 44 0D  20 20 20 20 20 20 20 53  |TA XSHD.       S|
000025E0: 54 41 20 41 52 47 0D 20  20 20 20 20 20 20 4A 53  |TA ARG.       JS|
000025F0: 52 20 53 51 55 41 52 45  0D 20 20 20 20 20 20 20  |R SQUARE.       |
00002600: 53 45 43 0D 20 20 20 20  20 20 20 4C 44 41 20 52  |SEC.       LDA R|
00002610: 53 0D 20 20 20 20 20 20  20 53 42 43 20 53 51 52  |S.       SBC SQR|
00002620: 0D 20 20 20 20 20 20 20  53 54 41 20 52 41 44 43  |.       STA RADC|
00002630: 4E 44 0D 20 20 20 20 20  20 20 4C 44 41 20 52 53  |ND.       LDA RS|
00002640: 2B 31 0D 20 20 20 20 20  20 20 53 42 43 20 53 51  |+1.       SBC SQ|
00002650: 52 2B 31 0D 20 20 20 20  20 20 20 53 54 41 20 52  |R+1.       STA R|
00002660: 41 44 43 4E 44 2B 31 0D  20 20 20 20 20 20 20 4A  |ADCND+1.       J|
00002670: 53 52 20 53 51 52 54 0D  20 20 20 20 20 20 20 4C  |SR SQRT.       L|
00002680: 44 41 20 52 4F 4F 54 0D  20 20 20 20 20 20 20 53  |DA ROOT.       S|
00002690: 54 41 20 52 30 0D 20 20  20 20 20 20 20 43 4C 43  |TA R0.       CLC|
000026A0: 0D 20 20 20 20 20 20 20  41 44 43 20 52 43 0D 20  |.       ADC RC. |
000026B0: 20 20 20 20 20 20 53 54  41 20 4D 41 58 0D 20 20  |      STA MAX.  |
000026C0: 20 20 20 20 20 4C 44 41  20 23 24 30 30 0D 20 20  |     LDA #$00.  |
000026D0: 20 20 20 20 20 53 54 41  20 43 4E 54 59 0D 4C 4F  |     STA CNTY.LO|
000026E0: 4F 50 59 34 20 4C 44 41  20 43 4E 54 59 0D 20 20  |OPY4 LDA CNTY.  |
000026F0: 20 20 20 20 20 53 54 41  20 59 52 45 4C 0D 20 20  |     STA YREL.  |
00002700: 20 20 20 20 20 53 54 41  20 4D 4C 50 4C 45 52 0D  |     STA MLPLER.|
00002710: 20 20 20 20 20 20 20 4C  44 41 20 52 30 0D 20 20  |       LDA R0.  |
00002720: 20 20 20 20 20 53 54 41  20 4D 4C 50 43 4E 44 0D  |     STA MLPCND.|
00002730: 20 20 20 20 20 20 20 4A  53 52 20 4D 55 4C 54 0D  |       JSR MULT.|
00002740: 20 20 20 20 20 20 20 53  54 41 20 44 56 44 4E 44  |       STA DVDND|
00002750: 2B 31 0D 20 20 20 20 20  20 20 4C 44 41 20 50 52  |+1.       LDA PR|
00002760: 4F 44 0D 20 20 20 20 20  20 20 53 54 41 20 44 56  |OD.       STA DV|
00002770: 44 4E 44 0D 20 20 20 20  20 20 20 4C 44 41 20 4D  |DND.       LDA M|
00002780: 41 58 0D 20 20 20 20 20  20 20 53 54 41 20 44 56  |AX.       STA DV|
00002790: 53 4F 52 0D 20 20 20 20  20 20 20 4A 53 52 20 53  |SOR.       JSR S|
000027A0: 44 49 56 0D 20 20 20 20  20 20 20 4C 44 41 20 51  |DIV.       LDA Q|
000027B0: 55 4F 54 0D 20 20 20 20  20 20 20 53 54 41 20 59  |UOT.       STA Y|
000027C0: 53 48 44 0D 20 20 20 20  20 20 20 4A 53 52 20 50  |SHD.       JSR P|
000027D0: 54 50 4C 4F 54 0D 20 20  20 20 20 20 20 4C 44 41  |TPLOT.       LDA|
000027E0: 20 43 4E 54 59 0D 20 20  20 20 20 20 20 43 4D 50  | CNTY.       CMP|
000027F0: 20 4D 41 58 0D 20 20 20  20 20 20 20 42 45 51 20  | MAX.       BEQ |
00002800: 44 4F 4E 45 34 0D 20 20  20 20 20 20 20 49 4E 43  |DONE4.       INC|
00002810: 20 43 4E 54 59 0D 20 20  20 20 20 20 20 4A 4D 50  | CNTY.       JMP|
00002820: 20 4C 4F 4F 50 59 34 0D  44 4F 4E 45 34 20 20 4C  | LOOPY4.DONE4  L|
00002830: 44 41 20 43 4E 54 58 0D  20 20 20 20 20 20 20 43  |DA CNTX.       C|
00002840: 4D 50 20 52 54 0D 20 20  20 20 20 20 20 42 45 51  |MP RT.       BEQ|
00002850: 20 44 4F 4E 45 48 54 0D  20 20 20 20 20 20 20 49  | DONEHT.       I|
00002860: 4E 43 20 43 4E 54 58 0D  20 20 20 20 20 20 20 4A  |NC CNTX.       J|
00002870: 4D 50 20 4C 4F 4F 50 58  34 0D 44 4F 4E 45 48 54  |MP LOOPX4.DONEHT|
00002880: 20 52 54 53 0D 3B 0D 3B  2A 2A 2A 2A 2A 2A 2A 2A  | RTS.;.;********|
00002890: 2A 2A 2A 2A 2A 2A 2A 2A  2A 2A 2A 2A 2A 2A 2A 2A  |****************|
000028A0: 2A 2A 2A 2A 2A 2A 2A 2A  2A 2A 2A 2A 2A 2A 2A 2A  |****************|
000028B0: 2A 0D 3B 0D 3B 20 44 52  41 57 20 41 20 53 48 41  |*.;.; DRAW A SHA|
000028C0: 44 45 44 2C 20 54 4F 50  2D 56 49 45 57 20 54 4F  |DED, TOP-VIEW TO|
000028D0: 52 4F 49 44 0D 3B 0D 3B  20 27 42 41 53 49 43 20  |ROID.;.; 'BASIC |
000028E0: 53 55 42 52 4F 55 54 49  4E 45 27 20 45 51 55 49  |SUBROUTINE' EQUI|
000028F0: 56 41 4C 45 4E 54 0D 3B  0D 3B 20 27 54 4F 52 4F  |VALENT.;.; 'TORO|
00002900: 49 44 27 20 47 4F 53 55  42 20 27 54 50 41 52 4D  |ID' GOSUB 'TPARM|
00002910: 27 0D 3B 20 20 20 20 20  20 20 20 20 20 46 4F 52  |'.;          FOR|
00002920: 20 43 4E 54 58 3D 30 20  54 4F 20 52 4F 2F 53 51  | CNTX=0 TO RO/SQ|
00002930: 52 28 32 29 0D 3B 20 20  20 20 20 20 20 20 20 20  |R(2).;          |
00002940: 52 45 4D 20 38 2D 46 4F  4C 44 20 53 59 4D 4D 45  |REM 8-FOLD SYMME|
00002950: 54 52 59 20 55 53 45 44  0D 3B 20 20 20 20 20 20  |TRY USED.;      |
00002960: 20 20 20 20 58 52 45 4C  3D 43 4E 54 58 0D 3B 20  |    XREL=CNTX.; |
00002970: 20 20 20 20 20 20 20 20  20 4D 41 58 3D 53 51 52  |         MAX=SQR|
00002980: 28 52 4F 2A 52 4F 2D 43  4E 54 58 2A 43 4E 54 58  |(RO*RO-CNTX*CNTX|
00002990: 29 0D 3B 20 20 20 20 20  20 20 20 20 20 49 46 20  |).;          IF |
000029A0: 43 4E 54 58 3E 52 49 20  54 48 45 4E 20 47 4F 54  |CNTX>RI THEN GOT|
000029B0: 4F 20 27 47 52 54 52 27  0D 3B 20 20 20 20 20 20  |O 'GRTR'.;      |
000029C0: 20 20 20 20 43 4E 54 59  3D 53 51 52 28 52 49 2A  |    CNTY=SQR(RI*|
000029D0: 52 49 2D 43 4E 54 59 2A  43 4E 54 59 29 0D 3B 20  |RI-CNTY*CNTY).; |
000029E0: 20 20 20 20 20 20 20 20  20 47 4F 54 4F 20 27 4C  |         GOTO 'L|
000029F0: 4C 50 59 31 27 0D 3B 20  27 47 52 54 52 27 20 20  |LPY1'.; 'GRTR'  |
00002A00: 20 43 4E 54 59 3D 43 4E  54 58 0D 3B 20 27 4C 4C  | CNTY=CNTX.; 'LL|
00002A10: 50 59 31 27 20 20 59 52  45 4C 3D 43 4E 54 59 0D  |PY1'  YREL=CNTY.|
00002A20: 3B 20 20 20 20 20 20 20  20 20 20 52 30 3D 53 51  |;          R0=SQ|
00002A30: 52 28 43 4E 54 59 2A 43  4E 54 59 2B 43 4E 54 58  |R(CNTY*CNTY+CNTX|
00002A40: 2A 43 4E 54 58 29 0D 3B  20 20 20 20 20 20 20 20  |*CNTX).;        |
00002A50: 20 20 58 53 48 44 3D 43  4E 54 58 2D 28 43 4E 54  |  XSHD=CNTX-(CNT|
00002A60: 58 2A 52 43 29 2F 52 30  0D 3B 20 20 20 20 20 20  |X*RC)/R0.;      |
00002A70: 20 20 20 20 59 53 48 44  3D 43 4E 54 59 2D 28 43  |    YSHD=CNTY-(C|
00002A80: 4E 54 59 2A 52 43 29 2F  52 30 0D 3B 20 20 20 20  |NTY*RC)/R0.;    |
00002A90: 20 20 20 20 20 20 48 56  46 4C 41 47 3D 30 3A 47  |      HVFLAG=0:G|
00002AA0: 4F 53 55 42 20 27 50 54  50 4C 4F 54 27 0D 3B 20  |OSUB 'PTPLOT'.; |
00002AB0: 20 20 20 20 20 20 20 20  20 48 56 46 4C 41 47 3D  |         HVFLAG=|
00002AC0: 2D 31 32 38 3A 47 4F 53  55 42 20 27 50 54 50 4C  |-128:GOSUB 'PTPL|
00002AD0: 4F 54 27 0D 3B 20 20 20  20 20 20 20 20 20 20 49  |OT'.;          I|
00002AE0: 46 20 43 4E 54 59 3D 4D  41 58 20 54 48 45 4E 20  |F CNTY=MAX THEN |
00002AF0: 47 4F 54 4F 20 27 44 44  4E 59 31 27 0D 3B 20 20  |GOTO 'DDNY1'.;  |
00002B00: 20 20 20 20 20 20 20 20  43 4E 54 59 3D 43 4E 54  |        CNTY=CNT|
00002B10: 59 2B 31 0D 3B 20 20 20  20 20 20 20 20 20 20 47  |Y+1.;          G|
00002B20: 4F 54 4F 20 27 4C 4C 50  59 31 27 0D 3B 20 27 44  |OTO 'LLPY1'.; 'D|
00002B30: 44 4E 59 31 27 20 20 4E  45 58 54 20 43 4E 54 58  |DNY1'  NEXT CNTX|
00002B40: 0D 3B 20 20 20 20 20 20  20 20 20 20 52 45 54 55  |.;          RETU|
00002B50: 52 4E 0D 3B 0D 54 4F 52  4F 49 44 20 4A 53 52 20  |RN.;.TOROID JSR |
00002B60: 54 50 41 52 4D 0D 20 20  20 20 20 20 20 4C 44 41  |TPARM.       LDA|
00002B70: 20 52 4F 0D 20 20 20 20  20 20 20 53 54 41 20 41  | RO.       STA A|
00002B80: 52 47 0D 20 20 20 20 20  20 20 4A 53 52 20 53 51  |RG.       JSR SQ|
00002B90: 55 41 52 45 0D 20 20 20  20 20 20 20 41 53 4C 20  |UARE.       ASL |
00002BA0: 53 51 52 0D 20 20 20 20  20 20 20 52 4F 4C 20 53  |SQR.       ROL S|
00002BB0: 51 52 2B 31 0D 20 20 20  20 20 20 20 4C 44 41 20  |QR+1.       LDA |
00002BC0: 53 51 52 0D 20 20 20 20  20 20 20 53 54 41 20 52  |SQR.       STA R|
00002BD0: 41 44 43 4E 44 0D 20 20  20 20 20 20 20 4C 44 41  |ADCND.       LDA|
00002BE0: 20 53 51 52 2B 31 0D 20  20 20 20 20 20 20 53 54  | SQR+1.       ST|
00002BF0: 41 20 52 41 44 43 4E 44  2B 31 0D 20 20 20 20 20  |A RADCND+1.     |
00002C00: 20 20 4A 53 52 20 53 51  52 54 0D 20 20 20 20 20  |  JSR SQRT.     |
00002C10: 20 20 4C 53 52 20 52 4F  4F 54 2B 31 0D 20 20 20  |  LSR ROOT+1.   |
00002C20: 20 20 20 20 52 4F 52 20  52 4F 4F 54 0D 20 20 20  |    ROR ROOT.   |
00002C30: 20 20 20 20 4C 44 41 20  52 4F 4F 54 0D 20 20 20  |    LDA ROOT.   |
00002C40: 20 20 20 20 53 54 41 20  58 4D 41 58 0D 4C 4C 50  |    STA XMAX.LLP|
00002C50: 58 31 20 20 4C 44 41 20  43 4E 54 58 0D 20 20 20  |X1  LDA CNTX.   |
00002C60: 20 20 20 20 53 54 41 20  58 52 45 4C 0D 20 20 20  |    STA XREL.   |
00002C70: 20 20 20 20 53 54 41 20  41 52 47 0D 20 20 20 20  |    STA ARG.    |
00002C80: 20 20 20 4A 53 52 20 53  51 55 41 52 45 0D 20 20  |   JSR SQUARE.  |
00002C90: 20 20 20 20 20 53 54 41  20 58 53 51 52 2B 31 0D  |     STA XSQR+1.|
00002CA0: 20 20 20 20 20 20 20 4C  44 41 20 53 51 52 0D 20  |       LDA SQR. |
00002CB0: 20 20 20 20 20 20 53 54  41 20 58 53 51 52 0D 20  |      STA XSQR. |
00002CC0: 20 20 20 20 20 20 4C 44  41 20 52 4F 0D 20 20 20  |      LDA RO.   |
00002CD0: 20 20 20 20 53 54 41 20  41 52 47 0D 20 20 20 20  |    STA ARG.    |
00002CE0: 20 20 20 4A 53 52 20 53  51 55 41 52 45 0D 20 20  |   JSR SQUARE.  |
00002CF0: 20 20 20 20 20 53 45 43  0D 20 20 20 20 20 20 20  |     SEC.       |
00002D00: 4C 44 41 20 53 51 52 0D  20 20 20 20 20 20 20 53  |LDA SQR.       S|
00002D10: 42 43 20 58 53 51 52 0D  20 20 20 20 20 20 20 53  |BC XSQR.       S|
00002D20: 54 41 20 52 41 44 43 4E  44 0D 20 20 20 20 20 20  |TA RADCND.      |
00002D30: 20 4C 44 41 20 53 51 52  2B 31 0D 20 20 20 20 20  | LDA SQR+1.     |
00002D40: 20 20 53 42 43 20 58 53  51 52 2B 31 0D 20 20 20  |  SBC XSQR+1.   |
00002D50: 20 20 20 20 53 54 41 20  52 41 44 43 4E 44 2B 31  |    STA RADCND+1|
00002D60: 0D 20 20 20 20 20 20 20  4A 53 52 20 53 51 52 54  |.       JSR SQRT|
00002D70: 0D 20 20 20 20 20 20 20  4C 44 41 20 52 4F 4F 54  |.       LDA ROOT|
00002D80: 0D 20 20 20 20 20 20 20  53 54 41 20 4D 41 58 0D  |.       STA MAX.|
00002D90: 20 20 20 20 20 20 20 53  45 43 0D 20 20 20 20 20  |       SEC.     |
00002DA0: 20 20 4C 44 41 20 52 49  0D 20 20 20 20 20 20 20  |  LDA RI.       |
00002DB0: 53 42 43 20 43 4E 54 58  0D 20 20 20 20 20 20 20  |SBC CNTX.       |
00002DC0: 42 43 43 20 47 52 54 52  0D 20 20 20 20 20 20 20  |BCC GRTR.       |
00002DD0: 4C 44 41 20 52 49 0D 20  20 20 20 20 20 20 53 54  |LDA RI.       ST|
00002DE0: 41 20 41 52 47 0D 20 20  20 20 20 20 20 4A 53 52  |A ARG.       JSR|
00002DF0: 20 53 51 55 41 52 45 0D  20 20 20 20 20 20 20 53  | SQUARE.       S|
00002E00: 45 43 0D 20 20 20 20 20  20 20 4C 44 41 20 53 51  |EC.       LDA SQ|
00002E10: 52 0D 20 20 20 20 20 20  20 53 42 43 20 58 53 51  |R.       SBC XSQ|
00002E20: 52 0D 20 20 20 20 20 20  20 53 54 41 20 52 41 44  |R.       STA RAD|
00002E30: 43 4E 44 0D 20 20 20 20  20 20 20 4C 44 41 20 53  |CND.       LDA S|
00002E40: 51 52 2B 31 0D 20 20 20  20 20 20 20 53 42 43 20  |QR+1.       SBC |
00002E50: 58 53 51 52 2B 31 0D 20  20 20 20 20 20 20 53 54  |XSQR+1.       ST|
00002E60: 41 20 52 41 44 43 4E 44  2B 31 0D 20 20 20 20 20  |A RADCND+1.     |
00002E70: 20 20 4A 53 52 20 53 51  52 54 0D 20 20 20 20 20  |  JSR SQRT.     |
00002E80: 20 20 4C 44 41 20 52 4F  4F 54 0D 20 20 20 20 20  |  LDA ROOT.     |
00002E90: 20 20 53 54 41 20 43 4E  54 59 0D 20 20 20 20 20  |  STA CNTY.     |
00002EA0: 20 20 4A 4D 50 20 4C 4C  50 59 31 0D 47 52 54 52  |  JMP LLPY1.GRTR|
00002EB0: 20 20 20 4C 44 41 20 43  4E 54 58 0D 20 20 20 20  |   LDA CNTX.    |
00002EC0: 20 20 20 53 54 41 20 43  4E 54 59 0D 4C 4C 50 59  |   STA CNTY.LLPY|
00002ED0: 31 20 20 4C 44 41 20 43  4E 54 59 0D 20 20 20 20  |1  LDA CNTY.    |
00002EE0: 20 20 20 53 54 41 20 59  52 45 4C 0D 20 20 20 20  |   STA YREL.    |
00002EF0: 20 20 20 53 54 41 20 41  52 47 0D 20 20 20 20 20  |   STA ARG.     |
00002F00: 20 20 4A 53 52 20 53 51  55 41 52 45 0D 20 20 20  |  JSR SQUARE.   |
00002F10: 20 20 20 20 43 4C 43 0D  20 20 20 20 20 20 20 4C  |    CLC.       L|
00002F20: 44 41 20 53 51 52 0D 20  20 20 20 20 20 20 41 44  |DA SQR.       AD|
00002F30: 43 20 58 53 51 52 0D 20  20 20 20 20 20 20 53 54  |C XSQR.       ST|
00002F40: 41 20 52 41 44 43 4E 44  0D 20 20 20 20 20 20 20  |A RADCND.       |
00002F50: 4C 44 41 20 53 51 52 2B  31 0D 20 20 20 20 20 20  |LDA SQR+1.      |
00002F60: 20 41 44 43 20 58 53 51  52 2B 31 0D 20 20 20 20  | ADC XSQR+1.    |
00002F70: 20 20 20 53 54 41 20 52  41 44 43 4E 44 2B 31 0D  |   STA RADCND+1.|
00002F80: 20 20 20 20 20 20 20 4A  53 52 20 53 51 52 54 0D  |       JSR SQRT.|
00002F90: 20 20 20 20 20 20 20 4C  44 41 20 52 4F 4F 54 0D  |       LDA ROOT.|
00002FA0: 20 20 20 20 20 20 20 53  54 41 20 52 30 0D 20 20  |       STA R0.  |
00002FB0: 20 20 20 20 20 53 54 41  20 44 56 53 4F 52 0D 20  |     STA DVSOR. |
00002FC0: 20 20 20 20 20 20 4C 44  41 20 43 4E 54 58 0D 20  |      LDA CNTX. |
00002FD0: 20 20 20 20 20 20 53 54  41 20 4D 4C 50 4C 45 52  |      STA MLPLER|
00002FE0: 0D 20 20 20 20 20 20 20  4C 44 41 20 52 43 0D 20  |.       LDA RC. |
00002FF0: 20 20 20 20 20 20 53 54  41 20 4D 4C 50 43 4E 44  |      STA MLPCND|
00003000: 0D 20 20 20 20 20 20 20  4A 53 52 20 4D 55 4C 54  |.       JSR MULT|
00003010: 0D 20 20 20 20 20 20 20  53 54 41 20 44 56 44 4E  |.       STA DVDN|
00003020: 44 2B 31 0D 20 20 20 20  20 20 20 4C 44 41 20 50  |D+1.       LDA P|
00003030: 52 4F 44 0D 20 20 20 20  20 20 20 53 54 41 20 44  |ROD.       STA D|
00003040: 56 44 4E 44 0D 20 20 20  20 20 20 20 4A 53 52 20  |VDND.       JSR |
00003050: 53 44 49 56 0D 20 20 20  20 20 20 20 53 45 43 0D  |SDIV.       SEC.|
00003060: 20 20 20 20 20 20 20 4C  44 41 20 43 4E 54 58 0D  |       LDA CNTX.|
00003070: 20 20 20 20 20 20 20 53  42 43 20 51 55 4F 54 0D  |       SBC QUOT.|
00003080: 20 20 20 20 20 20 20 53  54 41 20 58 53 48 44 0D  |       STA XSHD.|
00003090: 20 20 20 20 20 20 20 4C  44 41 20 23 24 30 30 0D  |       LDA #$00.|
000030A0: 20 20 20 20 20 20 20 53  42 43 20 51 55 4F 54 2B  |       SBC QUOT+|
000030B0: 31 0D 20 20 20 20 20 20  20 53 54 41 20 58 53 48  |1.       STA XSH|
000030C0: 44 2B 31 0D 20 20 20 20  20 20 20 4C 44 41 20 43  |D+1.       LDA C|
000030D0: 4E 54 59 0D 20 20 20 20  20 20 20 53 54 41 20 4D  |NTY.       STA M|
000030E0: 4C 50 4C 45 52 0D 20 20  20 20 20 20 20 4C 44 41  |LPLER.       LDA|
000030F0: 20 52 43 0D 20 20 20 20  20 20 20 53 54 41 20 4D  | RC.       STA M|
00003100: 4C 50 43 4E 44 0D 20 20  20 20 20 20 20 4A 53 52  |LPCND.       JSR|
00003110: 20 4D 55 4C 54 0D 20 20  20 20 20 20 20 53 54 41  | MULT.       STA|
00003120: 20 44 56 44 4E 44 2B 31  0D 20 20 20 20 20 20 20  | DVDND+1.       |
00003130: 4C 44 41 20 50 52 4F 44  0D 20 20 20 20 20 20 20  |LDA PROD.       |
00003140: 53 54 41 20 44 56 44 4E  44 0D 20 20 20 20 20 20  |STA DVDND.      |
00003150: 20 4C 44 41 20 52 30 0D  20 20 20 20 20 20 20 53  | LDA R0.       S|
00003160: 54 41 20 44 56 53 4F 52  0D 20 20 20 20 20 20 20  |TA DVSOR.       |
00003170: 4A 53 52 20 53 44 49 56  0D 20 20 20 20 20 20 20  |JSR SDIV.       |
00003180: 53 45 43 0D 20 20 20 20  20 20 20 4C 44 41 20 43  |SEC.       LDA C|
00003190: 4E 54 59 0D 20 20 20 20  20 20 20 53 42 43 20 51  |NTY.       SBC Q|
000031A0: 55 4F 54 0D 20 20 20 20  20 20 20 53 54 41 20 59  |UOT.       STA Y|
000031B0: 53 48 44 0D 20 20 20 20  20 20 20 4C 44 41 20 23  |SHD.       LDA #|
000031C0: 24 30 30 0D 20 20 20 20  20 20 20 53 54 41 20 48  |$00.       STA H|
000031D0: 56 46 4C 41 47 0D 20 20  20 20 20 20 20 53 42 43  |VFLAG.       SBC|
000031E0: 20 51 55 4F 54 2B 31 0D  20 20 20 20 20 20 20 53  | QUOT+1.       S|
000031F0: 54 41 20 59 53 48 44 2B  31 0D 20 20 20 20 20 20  |TA YSHD+1.      |
00003200: 20 4A 53 52 20 50 54 50  4C 4F 54 0D 20 20 20 20  | JSR PTPLOT.    |
00003210: 20 20 20 4C 44 41 20 23  24 38 30 0D 20 20 20 20  |   LDA #$80.    |
00003220: 20 20 20 53 54 41 20 48  56 46 4C 41 47 0D 20 20  |   STA HVFLAG.  |
00003230: 20 20 20 20 20 4A 53 52  20 50 54 50 4C 4F 54 0D  |     JSR PTPLOT.|
00003240: 20 20 20 20 20 20 20 4C  44 41 20 43 4E 54 59 0D  |       LDA CNTY.|
00003250: 20 20 20 20 20 20 20 43  4D 50 20 4D 41 58 0D 20  |       CMP MAX. |
00003260: 20 20 20 20 20 20 42 45  51 20 44 44 4E 59 31 0D  |      BEQ DDNY1.|
00003270: 20 20 20 20 20 20 20 49  4E 43 20 43 4E 54 59 0D  |       INC CNTY.|
00003280: 20 20 20 20 20 20 20 4A  4D 50 20 4C 4C 50 59 31  |       JMP LLPY1|
00003290: 0D 44 44 4E 59 31 20 20  4C 44 41 20 43 4E 54 58  |.DDNY1  LDA CNTX|
000032A0: 0D 20 20 20 20 20 20 20  43 4D 50 20 58 4D 41 58  |.       CMP XMAX|
000032B0: 0D 20 20 20 20 20 20 20  42 45 51 20 44 55 4E 54  |.       BEQ DUNT|
000032C0: 4F 52 0D 20 20 20 20 20  20 20 49 4E 43 20 43 4E  |OR.       INC CN|
000032D0: 54 58 0D 20 20 20 20 20  20 20 4A 4D 50 20 4C 4C  |TX.       JMP LL|
000032E0: 50 58 31 0D 44 55 4E 54  4F 52 20 52 54 53 0D 3B  |PX1.DUNTOR RTS.;|
000032F0: 0D 3B 2A 2A 2A 2A 2A 2A  2A 2A 2A 2A 2A 2A 2A 2A  |.;**************|
00003300: 2A 2A 2A 2A 2A 2A 2A 2A  2A 2A 2A 2A 2A 2A 2A 2A  |****************|
00003310: 2A 2A 2A 2A 2A 2A 2A 2A  2A 2A 2A 0D 3B 0D 3B 20  |***********.;.; |
00003320: 44 52 41 57 20 22 49 4E  53 49 44 45 20 56 49 45  |DRAW "INSIDE VIE|
00003330: 57 22 20 54 4F 52 4F 49  44 53 0D 3B 0D 3B 20 27  |W" TOROIDS.;.; '|
00003340: 42 41 53 49 43 20 53 55  42 52 4F 55 54 49 4E 45  |BASIC SUBROUTINE|
00003350: 27 20 45 51 55 49 56 41  4C 45 4E 54 0D 3B 0D 3B  |' EQUIVALENT.;.;|
00003360: 20 27 53 50 4F 4F 4C 27  20 20 47 4F 53 55 42 20  | 'SPOOL'  GOSUB |
00003370: 27 54 50 41 52 4D 27 0D  3B 20 20 20 20 20 20 20  |'TPARM'.;       |
00003380: 20 20 20 46 4F 52 20 43  4E 54 58 3D 30 20 54 4F  |   FOR CNTX=0 TO|
00003390: 20 52 54 0D 3B 20 20 20  20 20 20 20 20 20 20 58  | RT.;          X|
000033A0: 52 45 4C 3D 43 4E 54 58  3A 58 53 48 44 3D 43 4E  |REL=CNTX:XSHD=CN|
000033B0: 54 58 0D 3B 20 20 20 20  20 20 20 20 20 20 4D 41  |TX.;          MA|
000033C0: 58 3D 52 43 2D 53 51 52  28 52 53 2D 43 4E 54 58  |X=RC-SQR(RS-CNTX|
000033D0: 2A 43 4E 54 58 29 0D 3B  20 20 20 20 20 20 20 20  |*CNTX).;        |
000033E0: 20 20 46 4F 52 20 43 4E  54 59 3D 30 20 54 4F 20  |  FOR CNTY=0 TO |
000033F0: 4D 41 58 0D 3B 20 20 20  20 20 20 20 20 20 20 59  |MAX.;          Y|
00003400: 52 45 4C 3D 43 4E 54 59  0D 3B 20 20 20 20 20 20  |REL=CNTY.;      |
00003410: 20 20 20 20 59 53 48 44  3D 28 52 43 2A 43 4E 54  |    YSHD=(RC*CNT|
00003420: 59 2F 4D 41 58 29 2D 43  4E 54 59 0D 3B 20 20 20  |Y/MAX)-CNTY.;   |
00003430: 20 20 20 20 20 20 20 47  4F 53 55 42 20 27 50 54  |       GOSUB 'PT|
00003440: 50 4C 4F 84 27 0D 3B 20  20 20 20 20 20 20 20 20  |PLO.'.;         |
00003450: 20 4E 45 58 54 20 43 4E  54 59 0D 3B 20 20 20 20  | NEXT CNTY.;    |
00003460: 20 20 20 20 20 20 4E 45  58 54 20 43 4E 54 58 0D  |      NEXT CNTX.|
00003470: 3B 20 20 20 20 20 20 20  20 20 20 52 45 54 55 52  |;          RETUR|
00003480: 4E 0D 3B 0D 53 50 4F 4F  4C 20 20 4A 53 52 20 54  |N.;.SPOOL  JSR T|
00003490: 50 41 52 4D 0D 4C 4C 50  58 32 20 20 4C 44 41 20  |PARM.LLPX2  LDA |
000034A0: 43 4E 54 58 0D 20 20 20  20 20 20 20 53 54 41 20  |CNTX.       STA |
000034B0: 58 52 45 4C 0D 20 20 20  20 20 20 20 53 54 41 20  |XREL.       STA |
000034C0: 41 52 47 0D 20 20 20 20  20 20 20 53 45 43 0D 20  |ARG.       SEC. |
000034D0: 20 20 20 20 20 20 4C 44  41 20 23 24 30 30 0D 20  |      LDA #$00. |
000034E0: 20 20 20 20 20 20 53 42  43 20 43 4E 54 58 0D 20  |      SBC CNTX. |
000034F0: 20 20 20 20 20 20 53 54  41 20 58 53 48 44 0D 20  |      STA XSHD. |
00003500: 20 20 20 20 20 20 4C 44  41 20 23 24 30 30 0D 20  |      LDA #$00. |
00003510: 20 20 20 20 20 20 53 42  43 20 23 24 30 30 0D 20  |      SBC #$00. |
00003520: 20 20 20 20 20 20 53 54  41 20 58 53 48 44 2B 31  |      STA XSHD+1|
00003530: 0D 20 20 20 20 20 20 20  4A 53 52 20 53 51 55 41  |.       JSR SQUA|
00003540: 52 45 0D 20 20 20 20 20  20 20 53 45 43 0D 20 20  |RE.       SEC.  |
00003550: 20 20 20 20 20 4C 44 41  20 52 53 0D 20 20 20 20  |     LDA RS.    |
00003560: 20 20 20 53 42 43 20 53  51 52 0D 20 20 20 20 20  |   SBC SQR.     |
00003570: 20 20 53 54 41 20 52 41  44 43 4E 44 0D 20 20 20  |  STA RADCND.   |
00003580: 20 20 20 20 4C 44 41 20  52 53 2B 31 0D 20 20 20  |    LDA RS+1.   |
00003590: 20 20 20 20 53 42 43 20  53 51 52 2B 31 0D 20 20  |    SBC SQR+1.  |
000035A0: 20 20 20 20 20 53 54 41  20 52 41 44 43 4E 44 2B  |     STA RADCND+|
000035B0: 31 0D 20 20 20 20 20 20  20 4A 53 52 20 53 51 52  |1.       JSR SQR|
000035C0: 54 0D 20 20 20 20 20 20  20 53 45 43 0D 20 20 20  |T.       SEC.   |
000035D0: 20 20 20 20 4C 44 41 20  52 43 0D 20 20 20 20 20  |    LDA RC.     |
000035E0: 20 20 53 42 43 20 52 4F  4F 54 0D 20 20 20 20 20  |  SBC ROOT.     |
000035F0: 20 20 53 54 41 20 4D 41  58 0D 20 20 20 20 20 20  |  STA MAX.      |
00003600: 20 4C 44 41 20 23 24 30  30 0D 20 20 20 20 20 20  | LDA #$00.      |
00003610: 20 53 54 41 20 43 4E 54  59 0D 4C 4C 50 59 32 20  | STA CNTY.LLPY2 |
00003620: 20 4C 44 41 20 43 4E 54  59 0D 20 20 20 20 20 20  | LDA CNTY.      |
00003630: 20 53 54 41 20 59 52 45  4C 0D 20 20 20 20 20 20  | STA YREL.      |
00003640: 20 53 54 41 20 4D 4C 50  4C 45 52 0D 20 20 20 20  | STA MLPLER.    |
00003650: 20 20 20 4C 44 41 20 52  43 0D 20 20 20 20 20 20  |   LDA RC.      |
00003660: 20 53 54 41 20 4D 4C 50  43 4E 44 0D 20 20 20 20  | STA MLPCND.    |
00003670: 20 20 20 4A 53 52 20 4D  55 4C 54 0D 20 20 20 20  |   JSR MULT.    |
00003680: 20 20 20 53 54 41 20 44  56 44 4E 44 2B 31 0D 20  |   STA DVDND+1. |
00003690: 20 20 20 20 20 20 4C 44  41 20 50 52 4F 44 0D 20  |      LDA PROD. |
000036A0: 20 20 20 20 20 20 53 54  41 20 44 56 44 4E 44 0D  |      STA DVDND.|
000036B0: 20 20 20 20 20 20 20 4C  44 41 20 4D 41 58 0D 20  |       LDA MAX. |
000036C0: 20 20 20 20 20 20 53 54  41 20 44 56 53 4F 52 0D  |      STA DVSOR.|
000036D0: 20 20 20 20 20 20 20 4A  53 52 20 53 44 49 56 0D  |       JSR SDIV.|
000036E0: 20 20 20 20 20 20 20 4C  44 41 20 51 55 4F 54 0D  |       LDA QUOT.|
000036F0: 20 20 20 20 20 20 20 53  45 43 0D 20 20 20 20 20  |       SEC.     |
00003700: 20 20 53 42 43 20 43 4E  54 59 0D 20 20 20 20 20  |  SBC CNTY.     |
00003710: 20 20 53 54 41 20 59 53  48 44 0D 20 20 20 20 20  |  STA YSHD.     |
00003720: 20 20 4C 44 41 20 51 55  4F 54 2B 31 0D 20 20 20  |  LDA QUOT+1.   |
00003730: 20 20 20 20 53 42 43 20  23 24 30 30 0D 20 20 20  |    SBC #$00.   |
00003740: 20 20 20 20 53 54 41 20  59 53 48 44 2B 31 0D 20  |    STA YSHD+1. |
00003750: 20 20 20 20 20 20 4A 53  52 20 50 54 50 4C 4F 54  |      JSR PTPLOT|
00003760: 0D 20 20 20 20 20 20 20  4C 44 41 20 43 4E 54 59  |.       LDA CNTY|
00003770: 0D 20 20 20 20 20 20 20  43 4D 50 20 4D 41 58 0D  |.       CMP MAX.|
00003780: 20 20 20 20 20 20 20 42  45 51 20 44 44 4E 59 32  |       BEQ DDNY2|
00003790: 0D 20 20 20 20 20 20 20  49 4E 43 20 43 4E 54 59  |.       INC CNTY|
000037A0: 0D 20 20 20 20 20 20 20  4A 4D 50 20 4C 4C 50 59  |.       JMP LLPY|
000037B0: 32 0D 44 44 4E 59 32 20  20 4C 44 41 20 43 4E 54  |2.DDNY2  LDA CNT|
000037C0: 58 0D 20 20 20 20 20 20  20 43 4D 50 20 52 54 0D  |X.       CMP RT.|
000037D0: 20 20 20 20 20 20 20 42  45 51 20 44 55 4E 48 53  |       BEQ DUNHS|
000037E0: 50 0D 20 20 20 20 20 20  20 49 4E 43 20 43 4E 54  |P.       INC CNT|
000037F0: 58 0D 20 20 20 20 20 20  20 4A 4D 50 20 4C 4C 50  |X.       JMP LLP|
00003800: 58 32 0D 44 55 4E 48 53  50 20 52 54 53 0D 2E 45  |X2.DUNHSP RTS..E|
00003810: 4E 44 0D                                          |ND.             |
; PRIMITIVE SOLID SHAPE DRAWING.;.; RICH
ARD L. RYLANDER   11/7/84.;.; LOAD ARITH
METIC AND GRAPHIC UTILITIES FIRST.;.;***
**************************************.R
AM=$036A.ORIGIN=$C5EA.;.MLPCND=$AC     ;
 MULTIPLICAND (S).MLPLER=$AD     ; MULTI
PLIER (S).PROD=$AE      ; PRODUCT (D).MU
LT=$C011    ; CALL FOR MULTIPLY.;.DVDND=
$FD     ; DIVIDEND (D).DVSOR=$FB     ; D
IVISOR (D).QUOT=$FD      ; QUOTIENT (D).
DIVIDE=$C025  ; CALL FOR DIVIDE.;.ARG=$A
C       ; ARGUMENT (S).SQR=$AE       ; S
QUARE OF ARG (D).SQUARE=$C004  ; CALL FO
R SQUARE.;.RADCND=$AC    ; RADICAND (D).
ROOT=$033C    ; SQUARE ROOT (S).SQRT=$C0
64    ; CALL FOR SQRT.;.RNDM=$C000    ; 
RANDOM NUMBER.RANDOM=$C0C8  ; CALL FOR R
ANDOM.; NOTE - A CALL TO 'RANDOM' LEAVES
 A RANDOM BYTE.; IN THE ACCUMULATOR.;.XP
LT=$033F.YPLT=$0341.NORM=$C224.PLTSHD=$C
20F.VALUE=$0344   ; FINAL NORMALIZED SHA
DE VALUE.HTORRN=$0346  ; SHADE FLAG, 1=H
ALFTONE.NOSCAL=$0347  ; SCALE FLAG, 1=NO
 SCALE.;.       *=RAM.XCENT  *=*+2  ; CE
NTER COORD.XREL   *=*+1  ; RELATIVE (TO 
CENTER).XSHD   *=*+2  ; USED IN SHADE CA
LC.YCENT  *=*+1  ; CENTER COORD.YREL   *
=*+1  ; RELATIVE (TO CENTER).YSHD   *=*+
2  ; USED IN SHADE CALC.ZREL   *=*+2  ; 
RELATIVE (TO CENTER).ZWX    *=*+2  ; Z W
ITH X (+ OR -).;.RADIUS *=*+2  ; LOCAL R
ADIUS OF SURFACE.TONE   *=*+2  ; USED IN
 SHADE CALC.TNTMP  *=*+2  ; USED IN SHAD
E CALC.;.CLIPL  *=*+1  ; LEFT CLIPPING B
OUND.CLIPR  *=*+1  ; RIGHT CLIPPING BOUN
D.CLIPU  *=*+1  ; UP CLIPPING BOUND.CLIP
D  *=*+1  ; DOWN CLIPPING BOUND.;.HEMI  
 *=*+1  ; PLOTTING HEMISPHERE.;.BAKLIT *
=*+1  ; BACKLIT FLAG.HVFLAG *=*+1  ; HOR
IZONTAL/VERTICAL FLAG.TEMP   *=*+2  ; TE
MPORARY STORAGE.CNTX   *=*+1   ; LOOP CO
UNTER.CNTY   *=*+1   ; LOOP COUNTER.MAX 
   *=*+1   ; LOOP LIMIT.;.HLEN   *=*+1  
 ; HALF-LENGTH OF CYLINDERS.RS     *=*+2
   ; SQUARE OF TOROID RADIUS.RT     *=*+
1   ; TOROID (RING) RADIUS.RC     *=*+1 
  ; CENTER RADIUS OF TOROID.RO     *=*+1
   ; OUTER RADIUS OF TOROID.RI     *=*+1
   ; INNER RADIUS OF TOROID.XSQR   *=*+2
.XMAX   *=*+1.;.R0=HLEN.;.       *=ORIGI
N.;*************************************
****.;.; DIVIDE WITH SINGLE PRECISION DI
VISOR.; (USED OFTEN IN SHAPE ROUTINES).;
.SDIV   LDA #0.       STA DVSOR+1.      
 JMP DIVIDE.;.;*************************
****************.;.; CALCULATE SHADE VAL
UE (0-63) BY.; MULTIPLYING 'TONE' BY 26 
THEN.; DIVIDE RESULT BY RADIUS OF SURFAC
E.;.GETVAL BIT TONE+1.       BPL CNTNU  
 ; IF 'TONE'<0, THEN.       LDA BAKLIT  
; MAKE VALUE 0 OR ABS(TONE).       BNE N
EGATE  ; DEPENDING ON BAKLIT FLAG.      
 STA VALUE.       RTS.NEGATE SEC.       
LDA #$00.       SBC TONE.       STA TONE
.CNTNU  LDA TONE.       STA MLPCND.     
  LDA #$1A.       STA MLPLER.       JSR 
MULT.       STA DVDND+1.       LDA PROD.
       STA DVDND.       LDA RADIUS.     
  STA DVSOR.       JSR SDIV.       LDA Q
UOT.       STA VALUE.       RTS.;.;*****
************************************.;.;
 POINT PLOTTING BY QUADRANTS USING.; THE
 FOUR-FOLD SYMMETRY OF SIMPLE OBJECTS.;.
; DEPENDING ON STATUS OF 'HVFLAG', EXCHA
NGE.; X AND Y COORDINATES TO ROTATE OBJE
CTS 90 DEG.; SINGLE SHAPE ROUTINE CAN TH
EN BE USED TO.; DRAW 'HORIZONTAL' OR 'VE
RTICAL' VERSIONS.; OF AN OBJECT.;.; THE 
FOLOWING IS A 'BASIC SUBROUTINE'.; EQUIV
ALENT TO EXPLAIN ITS OPERATION.;.; NOTE 
THAT LABELS ARE USED IN PLACE OF.; LINE 
NUMBERS.;.; 'PTPLOT' IF HVFLAG<0 THEN GO
TO 'NOROT'.;          (STACK)=XREL:XREL=
YREL:YREL=(STACK).;          (STACK)=XSH
D:XSHD=YSHD:YSHD=(STACK).; 'NOROT'  GOSU
B 'GETZ'.;          REM CALCULATE 2*Z FR
OM X,Y AND RADIUS.;          HEMI = 1.; 
         IF XREL>CLIPL THEN GOTO 'RHEMI'
.;          ZWX=2*Z-XSHD.;          XPLT
=XCENT-XREL:REM LEFT HEMISPHERE.; 'CHCLU
P' IF YREL>CLIPU THEN GOTO 'DHEMI'.;    
      TONE=ZWX+YSHD.;          GOSUB 'GE
TVAL':REM NORMALIZE SHADE VAL.;         
 YPLT=YCENT+YREL.;          GOSUB 'PLTSH
D':REM PLOT OR UNPLOT.;          REM   P
OINTS WEIGHTED BY SHADE VALUE.; 'DHEMI' 
 IF YREL>CLIPD THEN GOTO 'RHEMI'.;      
    TONE=ZWX-YSHD.;          GOSUB 'GETV
AL'.;          YPLT=YCENT-YREL.;        
  GOSUB 'PLTSHD'.; 'RHEMI'  IF HEMI=0 TH
EN RETURN.;          HEMI=0.;          I
F XREL>CLIPR THEN RETURN.;          ZWX=
2*Z+XSHD.;          XPLT=XCENT+XREL.;   
       GOSUB 'CHCLUP'.;          RETURN.
;.PTPLOT BIT HVFLAG.       BPL NOROT.   
    LDA XREL.       PHA.       PHA.     
  LDA YREL.       STA XREL.       PLA.  
     STA YREL.       LDA XSHD.       PHA
.       PHA.       LDA YSHD.       STA X
SHD.       PLA.       STA YSHD.       LD
A XSHD+1.       PHA.       PHA.       LD
A YSHD+1.       STA XSHD+1.       PLA.  
     STA YSHD+1.NOROT  JSR GETZ.PTPLT2 L
DA #$01.       STA HEMI.       SEC.     
  LDA CLIPL  ; CHECK LEFT HEMISPHERE.   
    CMP XREL.       BCC RHEMI.       SEC
.       LDA ROOT.       SBC XSHD.       
STA ZWX.       LDA ROOT+1.       SBC XSH
D+1.       STA ZWX+1.       SEC.       L
DA XCENT.       SBC XREL.       STA XPLT
.       LDA XCENT+1.       SBC #$00.    
   STA XPLT+1.;.CHCLUP SEC.       LDA CL
IPU  ; CHECK FOR UP CLIPPING.       CMP 
YREL.       BCC DHEMI.       CLC.       
LDA ZWX.       ADC YSHD.       STA TONE.
       LDA ZWX+1.       ADC YSHD+1.     
  STA TONE+1.       JSR GETVAL.       CL
C.       LDA YCENT.       ADC YREL.     
  STA YPLT.       JSR PLTSHD.;.DHEMI  SE
C.       LDA CLIPD  ; CHECK FOR DOWN CLI
PPING.       CMP YREL.       BCC RHEMI. 
      SEC.       LDA ZWX.       SBC YSHD
.       STA TONE.       LDA ZWX+1.      
 SBC YSHD+1.       STA TONE+1.       JSR
 GETVAL.       SEC.       LDA YCENT.    
   SBC YREL.       STA YPLT.       JSR P
LTSHD.;.RHEMI  LDA HEMI.       BEQ PLDON
E.       DEC HEMI.       SEC.       LDA 
CLIPR  ; CHECK FOR RIGHT CLIPPING.      
 CMP XREL.       BCC PLDONE.       CLC. 
      LDA ROOT.       ADC XSHD.       ST
A ZWX.       LDA ROOT+1.       ADC XSHD+
1.       STA ZWX+1.       CLC.       LDA
 XCENT.       ADC XREL.       STA XPLT. 
      LDA XCENT+1.       ADC #$00.      
 STA XPLT+1.       JMP CHCLUP.PLDONE BIT
 HVFLAG.       BPL NORSTR.       LDA XSH
D+1    ; RESTORE COORDS.       STA YSHD+
1.       PLA.       STA XSHD+1.       LD
A XSHD.       STA YSHD.       PLA.      
 STA XSHD.       LDA XREL.       STA YRE
L.       PLA.       STA XREL.NORSTR RTS.
;.;*************************************
****.;.; CALCULATE Z FROM LOCAL X,Y BY.;
 PYTHAGOREAN SUM.;.GETZ   LDA RADIUS.   
    STA ARG.       JSR SQUARE.       STA
 TNTMP+1.       LDA SQR.       STA TNTMP
.       LDA XSHD.       STA ARG.       J
SR SQUARE.       SEC.       LDA TNTMP.  
     SBC SQR.       STA TNTMP.       LDA
 TNTMP+1.       SBC SQR+1.       STA TNT
MP+1.       LDA YSHD.       STA ARG.    
   JSR SQUARE.       SEC.       LDA TNTM
P.       SBC SQR.       STA RADCND.     
  LDA TNTMP+1.       SBC SQR+1.       ST
A RADCND+1.       BMI ZEROOT.       JSR 
SQRT.       ASL ROOT.       ROL ROOT+1. 
      RTS.ZEROOT LDA #$00.       STA ROO
T.       STA ROOT+1.       RTS.;.;******
***********************************.;.; 
SET UP PARAMETERS FOR TOROIDS.;.; RT=(RO
-RI)/2   RS=RT*RT   RC=RT+RI.;.TPARM  LD
A RO.       SEC.       SBC RI.       LSR
 A.       STA RT.       STA RADIUS.     
  CLC.       ADC RI.       STA RC.      
 LDA RT.       STA ARG.       JSR SQUARE
.       LDA SQR.       STA RS.       LDA
 SQR+1.       STA RS+1.       LDA #0.   
    STA CNTX.       RTS.;.;*************
****************************.;.; DRAW A 
SHADED SPHERE.;.; 'BASIC SUBROUTINE' EQU
IVALENT.;.; 'SPHERE' FOR CNTX=0 TO RADIU
S/SQR(2).;          XREL=CNTX:XSHD=CNTX.
;          FOR CNTY=CNTX TO SQR(RAD*RAD-
CNTX*CNTX).;          YREL=CNTY:YSHD=CNT
Y.;          HVFLAG=0.;          GOSUB '
PTPLOT'.;          REM EXCHANGE X & Y TO
 USE 8-FOLD SYM.;          HVFLAG=-128.;
.;          GOSUB 'PTPLOT'.;          NE
XT CNTY.;          NEXT CNTX.;          
RETURN.;.;.SPHERE LDA RADIUS.       STA 
ARG.       JSR SQUARE.       ASL SQR.   
    ROL SQR+1.       LDA SQR.       STA 
RADCND.       LDA SQR+1.       STA RADCB
D+1..........Y..Y..........YY...PW.....
.......Y...PW.........~....PW.........W.
..T~~.........~...............W...NTX.  
     STA XSHD+1.       STA YSHD+1.      
 LDA RADIUS.       STA ARG.       JSR SQ
UARE.       STA TEMP+1.       LDA SQR.  
     STA TEMP.LOOPX  LDA CNTX.       STA
 CNTY.       STA ARG.       STA XREL.   
    STA XSHD.       JSR SQUARE.       SE
C.       LDA TEMP.       SBC SQR.       
STA RADCND.       LDA TEMP+1.       SBC 
SQR+1.       STA RADCND+1.       JSR SQR
T.       LDA ROOT.       STA MAX.LOOPY  
LDA CNTY.       STA YREL.       STA YSHD
.       LDA #0.       STA HVFLAG.       
JSR PTPLOT.       LDA #$80.       STA HV
FLAG.       JSR PTPLOT.       LDA CNTY. 
      CMP MAX.       BEQ DONEY.       IN
C CNTY.       JMP LOOPY.DONEY  LDA CNTX.
       CMP XMAX.       BEQ DONE.       I
NC CNTX.       JMP LOOPX.DONE   RTS.;.;*
****************************************
.;.; DRAW SHADED CYLINDERS.;.; 'BASIC SU
BROUTINE' EQUIVALENT.;.; 'CYLNDR' XSHD=0
.;          FOR YREL=RADIUS TO 0.;      
    YSHD=YREL.;          FOR XREL=HLEN T
O 0.;          GOSUB 'PTPLOT'.;         
 NEXT XREL.;          NEXT YREL.;       
   RETURN.;.CYLNDR LDA #0.       STA XSH
D.       STA XSHD+1.       STA YSHD+1.  
     LDA RADIUS.       STA YREL.CYLOOP L
DA HLEN.       STA XREL.       LDA YREL.
       STA YSHD.CXLOOP JSR PTPLOT.      
 DEC XREL.       BPL CXLOOP.       DEC Y
REL.       BPL CYLOOP.       RTS.;.;****
*************************************.;.
; DRAW EDGE-VIEW TOROIDS.;.; 'BASIC SUBR
OUTINE' EQUIVALENT.;.; 'EDGTOR' GOSUB 'T
PARM':REM SET UP RADII.;          FOR CN
TX=0 TO RT.;          XREL=CNTX:XSHD=CNT
X.;          R0=SQR(RT*RT-CNTX*CNTX).;  
        FOR CNTY=0 TO R0+RC.;          Y
REL=CNTY.;          YSHD=(R0*CNTY)/(R0+R
C).;          GOSUB 'PTPLOT'.;          
NEXT CNTY.;          NEXT CNTX.;        
  RETURN.;.EDGTOR JSR TPARM.       LDA #
$00.       STA XSHD+1.       STA YSHD+1.
LOOPX4 LDA CNTX.       STA XREL.       S
TA XSHD.       STA ARG.       JSR SQUARE
.       SEC.       LDA RS.       SBC SQR
.       STA RADCND.       LDA RS+1.     
  SBC SQR+1.       STA RADCND+1.       J
SR SQRT.       LDA ROOT.       STA R0.  
     CLC.       ADC RC.       STA MAX.  
     LDA #$00.       STA CNTY.LOOPY4 LDA
 CNTY.       STA YREL.       STA MLPLER.
       LDA R0.       STA MLPCND.       J
SR MULT.       STA DVDND+1.       LDA PR
OD.       STA DVDND.       LDA MAX.     
  STA DVSOR.       JSR SDIV.       LDA Q
UOT.       STA YSHD.       JSR PTPLOT.  
     LDA CNTY.       CMP MAX.       BEQ 
DONE4.       INC CNTY.       JMP LOOPY4.
DONE4  LDA CNTX.       CMP RT.       BEQ
 DONEHT.       INC CNTX.       JMP LOOPX
4.DONEHT RTS.;.;************************
*****************.;.; DRAW A SHADED, TOP
-VIEW TOROID.;.; 'BASIC SUBROUTINE' EQUI
VALENT.;.; 'TOROID' GOSUB 'TPARM'.;     
     FOR CNTX=0 TO RO/SQR(2).;          
REM 8-FOLD SYMMETRY USED.;          XREL
=CNTX.;          MAX=SQR(RO*RO-CNTX*CNTX
).;          IF CNTX>RI THEN GOTO 'GRTR'
.;          CNTY=SQR(RI*RI-CNTY*CNTY).; 
         GOTO 'LLPY1'.; 'GRTR'   CNTY=CN
TX.; 'LLPY1'  YREL=CNTY.;          R0=SQ
R(CNTY*CNTY+CNTX*CNTX).;          XSHD=C
NTX-(CNTX*RC)/R0.;          YSHD=CNTY-(C
NTY*RC)/R0.;          HVFLAG=0:GOSUB 'PT
PLOT'.;          HVFLAG=-128:GOSUB 'PTPL
OT'.;          IF CNTY=MAX THEN GOTO 'DD
NY1'.;          CNTY=CNTY+1.;          G
OTO 'LLPY1'.; 'DDNY1'  NEXT CNTX.;      
    RETURN.;.TOROID JSR TPARM.       LDA
 RO.       STA ARG.       JSR SQUARE.   
    ASL SQR.       ROL SQR+1.       LDA 
SQR.       STA RADCND.       LDA SQR+1. 
      STA RADCND+1.       JSR SQRT.     
  LSR ROOT+1.       ROR ROOT.       LDA 
ROOT.       STA XMAX.LLPX1  LDA CNTX.   
    STA XREL.       STA ARG.       JSR S
QUARE.       STA XSQR+1.       LDA SQR. 
      STA XSQR.       LDA RO.       STA 
ARG.       JSR SQUARE.       SEC.       
LDA SQR.       SBC XSQR.       STA RADCN
D.       LDA SQR+1.       SBC XSQR+1.   
    STA RADCND+1.       JSR SQRT.       
LDA ROOT.       STA MAX.       SEC.     
  LDA RI.       SBC CNTX.       BCC GRTR
.       LDA RI.       STA ARG.       JSR
 SQUARE.       SEC.       LDA SQR.      
 SBC XSQR.       STA RADCND.       LDA S
QR+1.       SBC XSQR+1.       STA RADCND
+1.       JSR SQRT.       LDA ROOT.     
  STA CNTY.       JMP LLPY1.GRTR   LDA C
NTX.       STA CNTY.LLPY1  LDA CNTY.    
   STA YREL.       STA ARG.       JSR SQ
UARE.       CLC.       LDA SQR.       AD
C XSQR.       STA RADCND.       LDA SQR+
1.       ADC XSQR+1.       STA RADCND+1.
       JSR SQRT.       LDA ROOT.       S
TA R0.       STA DVSOR.       LDA CNTX. 
      STA MLPLER.       LDA RC.       ST
A MLPCND.       JSR MULT.       STA DVDN
D+1.       LDA PROD.       STA DVDND.   
    JSR SDIV.       SEC.       LDA CNTX.
       SBC QUOT.       STA XSHD.       L
DA #$00.       SBC QUOT+1.       STA XSH
D+1.       LDA CNTY.       STA MLPLER.  
     LDA RC.       STA MLPCND.       JSR
 MULT.       STA DVDND+1.       LDA PROD
.       STA DVDND.       LDA R0.       S
TA DVSOR.       JSR SDIV.       SEC.    
   LDA CNTY.       SBC QUOT.       STA Y
SHD.       LDA #$00.       STA HVFLAG.  
     SBC QUOT+1.       STA YSHD+1.      
 JSR PTPLOT.       LDA #$80.       STA H
VFLAG.       JSR PTPLOT.       LDA CNTY.
       CMP MAX.       BEQ DDNY1.       I
NC CNTY.       JMP LLPY1.DDNY1  LDA CNTX
.       CMP XMAX.       BEQ DUNTOR.     
  INC CNTX.       JMP LLPX1.DUNTOR RTS.;
.;**************************************
***.;.; DRAW "INSIDE VIEW" TOROIDS.;.; '
BASIC SUBROUTINE' EQUIVALENT.;.; 'SPOOL'
  GOSUB 'TPARM'.;          FOR CNTX=0 TO
 RT.;          XREL=CNTX:XSHD=CNTX.;    
      MAX=RC-SQR(RS-CNTX*CNTX).;        
  FOR CNTY=0 TO MAX.;          YREL=CNTY
.;          YSHD=(RC*CNTY/MAX)-CNTY.;   
       GOSUB 'PTPLO.'.;          NEXT CN
TY.;          NEXT CNTX.;          RETUR
N.;.SPOOL  JSR TPARM.LLPX2  LDA CNTX.   
    STA XREL.       STA ARG.       SEC. 
      LDA #$00.       SBC CNTX.       ST
A XSHD.       LDA #$00.       SBC #$00. 
      STA XSHD+1.       JSR SQUARE.     
  SEC.       LDA RS.       SBC SQR.     
  STA RADCND.       LDA RS+1.       SBC 
SQR+1.       STA RADCND+1.       JSR SQR
T.       SEC.       LDA RC.       SBC RO
OT.       STA MAX.       LDA #$00.      
 STA CNTY.LLPY2  LDA CNTY.       STA YRE
L.       STA MLPLER.       LDA RC.      
 STA MLPCND.       JSR MULT.       STA D
VDND+1.       LDA PROD.       STA DVDND.
       LDA MAX.       STA DVSOR.       J
SR SDIV.       LDA QUOT.       SEC.     
  SBC CNTY.       STA YSHD.       LDA QU
OT+1.       SBC #$00.       STA YSHD+1. 
      JSR PTPLOT.       LDA CNTY.       
CMP MAX.       BEQ DDNY2.       INC CNTY
.       JMP LLPY2.DDNY2  LDA CNTX.      
 CMP RT.       BEQ DUNHSP.       INC CNT
X.       JMP LLPX2.DUNHSP RTS..END.
C64 Preview

> CLICK IMAGE PREVIEW FOR FULL MODAL