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 Image
> CLICK IMAGE PREVIEW FOR FULL MODAL