HRSUPP.SRC.C
FILE INFORMATION
FILENAME(S): HRSUPP.SRC.C
FILE TYPE(S): SEQ
FILE SIZE: 8.9K
FIRST SEEN: 2025-11-30 01:08:24
APPEARS ON: 2 disk(s)
FILE HASH
1e6bbe4665d42cca6ca81bd8e27676b0b1795b5ed9ce97a09f8a09147d32c390
FOUND ON DISKS (2 DISKS)
| DISK TITLE | FILENAME | FILE TYPE | COLLECTION | TRACK | SECTOR | ACTIONS |
|---|---|---|---|---|---|---|
| FREESOFT DISK NR | HRSUPP.SRC.C | SEQ | Treasure Chest - Wolfgang Rauprich | 23 | 0 | DOWNLOAD FILE |
| D IVERSE | HRSUPP.SRC.C | SEQ | Treasure Chest - Wolfgang Rauprich | 23 | 0 | DOWNLOAD FILE |
FILE CONTENT & ANALYSIS
00000000: 2E 4F 50 54 20 4E 4F 4C 0D 3B 0D 3B 2A 2A 20 48 |.OPT NOL.;.;** H| 00000010: 52 53 55 50 50 2F 36 34 20 2A 2A 0D 3B 0D 4F 52 |RSUPP/64 **.;.OR| 00000020: 49 47 49 4E 20 3D 20 24 36 30 30 30 0D 3B 0D 3B |IGIN = $6000.;.;| 00000030: 2A 2A 20 45 51 55 41 54 45 53 20 2A 2A 0D 3B 0D |** EQUATES **.;.| 00000040: 3B 53 59 53 54 45 4D 20 52 4F 55 54 49 4E 45 53 |;SYSTEM ROUTINES| 00000050: 0D 3B 0D 45 52 52 4F 52 20 3D 20 24 41 34 33 37 |.;.ERROR = $A437| 00000060: 20 3B 50 52 49 4E 54 20 45 52 52 4F 52 20 4D 45 | ;PRINT ERROR ME| 00000070: 53 53 41 47 45 0D 45 56 41 45 58 50 20 3D 20 24 |SSAGE.EVAEXP = $| 00000080: 41 44 39 45 20 3B 45 56 41 4C 55 41 54 45 20 45 |AD9E ;EVALUATE E| 00000090: 58 50 52 45 53 53 49 4F 4E 0D 43 48 4B 43 4F 4D |XPRESSION.CHKCOM| 000000A0: 20 3D 20 24 41 45 46 44 20 3B 43 48 45 43 4B 20 | = $AEFD ;CHECK | 000000B0: 46 4F 52 20 43 4F 4D 4D 41 0D 46 4C 54 46 49 58 |FOR COMMA.FLTFIX| 000000C0: 20 3D 20 24 42 31 41 41 20 3B 43 4F 4E 56 45 52 | = $B1AA ;CONVER| 000000D0: 54 20 54 4F 20 46 49 58 45 44 20 49 4E 20 59 20 |T TO FIXED IN Y | 000000E0: 28 4C 4F 57 29 20 41 4E 44 20 41 20 28 48 49 47 |(LOW) AND A (HIG| 000000F0: 48 29 0D 3B 0D 3B 56 45 43 54 4F 52 53 0D 3B 0D |H).;.;VECTORS.;.| 00000100: 45 52 52 56 45 43 20 3D 20 24 30 33 30 30 20 3B |ERRVEC = $0300 ;| 00000110: 45 52 52 4F 52 20 52 4F 55 54 49 4E 45 0D 57 41 |ERROR ROUTINE.WA| 00000120: 52 4D 56 20 3D 20 24 30 33 30 32 20 3B 42 41 53 |RMV = $0302 ;BAS| 00000130: 49 43 20 57 41 52 4D 20 53 54 41 52 54 0D 3B 0D |IC WARM START.;.| 00000140: 3B 48 49 2D 52 45 53 20 53 54 55 46 46 0D 3B 0D |;HI-RES STUFF.;.| 00000150: 56 49 43 20 3D 20 24 44 30 30 30 20 3B 41 44 44 |VIC = $D000 ;ADD| 00000160: 52 45 53 53 20 4F 46 20 56 49 43 20 43 48 49 50 |RESS OF VIC CHIP| 00000170: 0D 48 52 43 54 52 4C 20 3D 20 56 49 43 2B 31 37 |.HRCTRL = VIC+17| 00000180: 20 3B 4D 4F 44 45 20 43 4F 4E 54 52 4F 4C 0D 48 | ;MODE CONTROL.H| 00000190: 52 4D 52 45 47 20 3D 20 56 49 43 2B 32 34 20 3B |RMREG = VIC+24 ;| 000001A0: 4D 45 4D 4F 52 59 20 43 4F 4E 54 52 4F 4C 0D 3B |MEMORY CONTROL.;| 000001B0: 0D 53 43 52 45 45 4E 20 3D 20 24 30 34 30 30 20 |.SCREEN = $0400 | 000001C0: 3B 31 4B 20 53 43 52 45 45 4E 0D 53 43 52 45 4E |;1K SCREEN.SCREN| 000001D0: 44 20 3D 20 53 43 52 45 45 4E 2B 39 39 39 20 3B |D = SCREEN+999 ;| 000001E0: 4C 41 53 54 20 53 43 52 45 45 4E 20 4C 4F 43 27 |LAST SCREEN LOC'| 000001F0: 4E 0D 42 41 53 45 20 3D 20 24 32 30 30 30 20 3B |N.BASE = $2000 ;| 00000200: 53 54 41 52 54 20 4F 46 20 38 4B 20 42 59 54 0D |START OF 8K BYT.| 00000210: 48 52 4C 41 53 54 20 3D 20 42 41 53 45 2B 37 39 |HRLAST = BASE+79| 00000220: 39 39 20 3B 4C 41 53 54 20 4C 4F 43 27 4E 0D 52 |99 ;LAST LOC'N.R| 00000230: 41 4D 20 3D 20 24 30 33 33 43 20 3B 55 53 45 20 |AM = $033C ;USE | 00000240: 43 41 53 53 45 54 54 45 20 42 55 46 46 45 52 0D |CASSETTE BUFFER.| 00000250: 3B 0D 3B 2A 2A 5A 45 52 4F 20 50 41 47 45 2A 2A |;.;**ZERO PAGE**| 00000260: 0D 3B 0D 42 59 54 20 3D 20 24 46 44 20 3B 42 59 |.;.BYT = $FD ;BY| 00000270: 54 20 50 4F 49 4E 54 45 52 0D 3B 0D 2A 3D 52 41 |T POINTER.;.*=RA| 00000280: 4D 0D 3B 0D 58 31 20 2A 3D 2A 2B 32 20 3B 58 20 |M.;.X1 *=*+2 ;X | 00000290: 43 4F 4F 52 44 49 4E 41 54 45 20 28 30 20 2D 20 |COORDINATE (0 - | 000002A0: 33 31 39 29 0D 58 32 20 2A 3D 2A 2B 32 0D 59 31 |319).X2 *=*+2.Y1| 000002B0: 20 2A 3D 2A 2B 32 20 3B 59 20 43 4F 4F 52 44 49 | *=*+2 ;Y COORDI| 000002C0: 4E 41 54 45 20 28 30 20 2D 20 31 39 39 29 0D 59 |NATE (0 - 199).Y| 000002D0: 32 20 2A 3D 2A 2B 32 0D 42 49 54 4E 4F 20 2A 3D |2 *=*+2.BITNO *=| 000002E0: 2A 2B 31 20 3B 4F 4E 20 42 49 54 20 49 53 20 50 |*+1 ;ON BIT IS P| 000002F0: 49 58 45 4C 0D 44 45 4C 54 58 20 2A 3D 2A 2B 32 |IXEL.DELTX *=*+2| 00000300: 20 3B 58 32 2D 58 31 0D 44 45 4C 54 59 20 2A 3D | ;X2-X1.DELTY *=| 00000310: 2A 2B 32 20 3B 59 32 2D 59 31 0D 45 20 2A 3D 2A |*+2 ;Y2-Y1.E *=*| 00000320: 2B 32 0D 54 20 2A 3D 2A 2B 32 0D 43 20 2A 3D 2A |+2.T *=*+2.C *=*| 00000330: 2B 32 0D 49 20 2A 3D 2A 2B 31 20 3B 44 49 52 45 |+2.I *=*+1 ;DIRE| 00000340: 43 54 49 4F 4E 20 50 4F 49 4E 54 45 52 0D 54 45 |CTION POINTER.TE| 00000350: 4D 50 20 2A 3D 2A 2B 32 0D 45 52 56 45 43 20 2A |MP *=*+2.ERVEC *| 00000360: 3D 2A 2B 32 20 3B 48 4F 4C 44 53 20 53 59 53 54 |=*+2 ;HOLDS SYST| 00000370: 45 4D 20 45 52 52 4F 52 20 56 45 43 54 4F 52 0D |EM ERROR VECTOR.| 00000380: 3B 0D 3B 43 4F 4E 53 54 41 4E 54 53 0D 3B 0D 58 |;.;CONSTANTS.;.X| 00000390: 4D 41 58 3D 33 32 30 0D 59 4D 41 58 3D 32 30 30 |MAX=320.YMAX=200| 000003A0: 0D 43 4F 4C 53 3D 34 30 20 3B 4E 55 4D 42 45 52 |.COLS=40 ;NUMBER| 000003B0: 20 4F 46 20 43 4F 4C 55 4D 4E 53 2F 52 4F 57 0D | OF COLUMNS/ROW.| 000003C0: 43 4F 4C 4F 52 3D 24 35 30 20 3B 46 4F 52 45 47 |COLOR=$50 ;FOREG| 000003D0: 52 4F 55 4E 44 2F 42 41 43 4B 47 52 4F 55 4E 44 |ROUND/BACKGROUND| 000003E0: 20 3D 20 42 4C 41 43 4B 2F 47 52 45 45 4E 0D 3B | = BLACK/GREEN.;| 000003F0: 0D 2A 3D 4F 52 49 47 49 4E 0D 3B 0D 3B 4A 55 4D |.*=ORIGIN.;.;JUM| 00000400: 50 20 54 41 42 4C 45 20 46 4F 52 20 43 4F 56 45 |P TABLE FOR COVE| 00000410: 4E 49 45 4E 54 20 45 4E 54 52 59 20 50 4F 49 4E |NIENT ENTRY POIN| 00000420: 54 53 0D 3B 0D 4A 49 4E 49 54 20 4A 4D 50 20 48 |TS.;.JINIT JMP H| 00000430: 52 49 4E 49 54 20 3B 49 4E 49 54 49 41 4C 49 5A |RINIT ;INITIALIZ| 00000440: 45 0D 4A 52 45 53 54 20 4A 4D 50 20 48 52 52 45 |E.JREST JMP HRRE| 00000450: 53 54 20 3B 52 45 53 54 4F 52 45 0D 4A 43 4C 52 |ST ;RESTORE.JCLR| 00000460: 20 4A 4D 50 20 43 4C 52 48 52 20 3B 43 4C 45 41 | JMP CLRHR ;CLEA| 00000470: 52 20 53 43 52 45 45 4E 0D 4A 44 52 41 57 20 4A |R SCREEN.JDRAW J| 00000480: 4D 50 20 56 45 43 50 4C 54 20 3B 44 52 41 57 20 |MP VECPLT ;DRAW | 00000490: 53 54 52 41 49 47 48 54 20 4C 49 4E 45 0D 4A 53 |STRAIGHT LINE.JS| 000004A0: 45 54 50 58 20 4A 4D 50 20 53 45 54 50 49 58 20 |ETPX JMP SETPIX | 000004B0: 3B 54 55 52 4E 20 4F 4E 20 50 49 58 45 4C 0D 3B |;TURN ON PIXEL.;| 000004C0: 0D 3B 46 41 4C 4C 20 54 48 52 4F 55 47 48 20 54 |.;FALL THROUGH T| 000004D0: 4F 20 4D 4F 56 45 20 52 4F 55 54 49 4E 45 0D 3B |O MOVE ROUTINE.;| 000004E0: 0D 3B 48 52 41 44 44 52 20 2D 20 47 49 56 45 4E |.;HRADDR - GIVEN| 000004F0: 20 58 2D 43 4F 4F 52 44 20 28 32 20 42 59 54 45 | X-COORD (2 BYTE| 00000500: 53 29 0D 3B 41 4E 44 20 59 2D 43 4F 4F 52 44 20 |S).;AND Y-COORD | 00000510: 28 31 20 42 59 54 45 29 0D 3B 43 41 4C 43 55 4C |(1 BYTE).;CALCUL| 00000520: 41 54 45 20 42 59 54 20 41 44 44 52 45 53 53 20 |ATE BYT ADDRESS | 00000530: 41 4E 44 20 42 49 54 4E 4F 0D 3B 0D 3B 43 4C 4F |AND BITNO.;.;CLO| 00000540: 42 42 45 52 53 20 58 2C 20 4C 45 41 56 45 53 20 |BBERS X, LEAVES | 00000550: 59 3D 30 0D 3B 0D 3B 45 4E 54 45 52 20 48 45 52 |Y=0.;.;ENTER HER| 00000560: 45 20 49 46 20 46 52 4F 4D 20 42 41 53 49 43 0D |E IF FROM BASIC.| 00000570: 3B 0D 48 52 4D 4F 56 45 20 4A 53 52 20 47 45 54 |;.HRMOVE JSR GET| 00000580: 56 41 4C 20 3B 47 45 54 20 58 31 0D 20 53 54 59 |VAL ;GET X1. STY| 00000590: 20 58 31 0D 20 53 54 59 20 58 32 20 3B 46 4F 52 | X1. STY X2 ;FOR| 000005A0: 20 52 4E 47 43 48 4B 0D 20 53 54 41 20 58 31 2B | RNGCHK. STA X1+| 000005B0: 31 0D 20 53 54 41 20 58 32 2B 31 0D 20 4A 53 52 |1. STA X2+1. JSR| 000005C0: 20 47 45 54 56 41 4C 20 3B 47 45 54 20 59 31 0D | GETVAL ;GET Y1.| 000005D0: 20 53 54 59 20 59 31 0D 20 53 54 59 20 59 32 0D | STY Y1. STY Y2.| 000005E0: 20 53 54 41 20 59 32 2B 31 0D 20 4A 53 52 20 52 | STA Y2+1. JSR R| 000005F0: 4E 47 43 48 4B 0D 3B 0D 3B 45 4E 54 45 52 20 48 |NGCHK.;.;ENTER H| 00000600: 45 52 45 20 49 46 20 58 31 2C 20 59 31 20 41 52 |ERE IF X1, Y1 AR| 00000610: 45 20 53 45 54 0D 3B 0D 48 52 41 44 44 52 20 4C |E SET.;.HRADDR L| 00000620: 44 41 20 23 30 20 3B 53 45 54 20 48 49 47 48 20 |DA #0 ;SET HIGH | 00000630: 42 59 54 45 20 54 4F 20 5A 45 52 4F 0D 20 53 54 |BYTE TO ZERO. ST| 00000640: 41 20 42 59 54 2B 31 0D 20 53 45 43 20 3B 46 4F |A BYT+1. SEC ;FO| 00000650: 52 4D 20 31 39 39 2D 59 31 0D 20 4C 44 41 20 23 |RM 199-Y1. LDA #| 00000660: 59 4D 41 58 2D 31 0D 20 53 42 43 20 59 31 0D 20 |YMAX-1. SBC Y1. | 00000670: 50 48 41 20 3B 53 41 56 45 20 52 45 53 55 4C 54 |PHA ;SAVE RESULT| 00000680: 20 4F 4E 20 53 54 41 43 4B 0D 20 41 4E 44 20 23 | ON STACK. AND #| 00000690: 24 46 38 20 3B 46 4F 52 4D 20 52 4F 57 20 23 0D |$F8 ;FORM ROW #.| 000006A0: 20 41 53 4C 20 41 20 3B 4D 55 4C 54 20 42 59 20 | ASL A ;MULT BY | 000006B0: 32 0D 20 52 4F 4C 20 42 59 54 2B 31 0D 20 41 53 |2. ROL BYT+1. AS| 000006C0: 4C 20 41 20 3B 4D 55 4C 54 20 42 59 20 34 0D 20 |L A ;MULT BY 4. | 000006D0: 52 4F 4C 20 42 59 54 2B 31 0D 20 41 53 4C 20 41 |ROL BYT+1. ASL A| 000006E0: 20 3B 4D 55 4C 54 20 42 59 20 38 0D 20 52 4F 4C | ;MULT BY 8. ROL| 000006F0: 20 42 59 54 2B 31 0D 20 50 48 41 20 3B 53 41 56 | BYT+1. PHA ;SAV| 00000700: 45 20 4F 4E 20 53 54 41 43 4B 0D 20 53 54 41 20 |E ON STACK. STA | 00000710: 54 45 4D 50 20 3B 41 4E 44 20 49 4E 20 54 45 4D |TEMP ;AND IN TEM| 00000720: 50 0D 20 4C 44 41 20 42 59 54 2B 31 0D 20 53 54 |P. LDA BYT+1. ST| 00000730: 41 20 54 45 4D 50 2B 31 20 3B 54 45 4D 50 20 48 |A TEMP+1 ;TEMP H| 00000740: 41 53 20 38 2A 59 0D 20 50 4C 41 20 3B 52 45 53 |AS 8*Y. PLA ;RES| 00000750: 54 4F 52 45 20 41 0D 20 41 53 4C 20 41 20 3B 4D |TORE A. ASL A ;M| 00000760: 55 4C 54 20 42 59 20 31 36 0D 20 52 4F 4C 20 42 |ULT BY 16. ROL B| 00000770: 59 54 2B 31 0D 20 41 53 4C 20 41 20 3B 4D 55 4C |YT+1. ASL A ;MUL| 00000780: 54 20 42 59 20 33 32 0D 20 52 4F 4C 20 42 59 54 |T BY 32. ROL BYT| 00000790: 2B 31 20 3B 28 43 41 52 52 59 20 53 54 49 4C 4C |+1 ;(CARRY STILL| 000007A0: 20 43 4C 45 41 52 29 0D 20 41 44 43 20 54 45 4D | CLEAR). ADC TEM| 000007B0: 50 20 3B 46 4F 52 4D 20 33 32 2B 38 20 3D 20 34 |P ;FORM 32+8 = 4| 000007C0: 30 2A 0D 20 53 54 41 20 42 59 54 20 3B 49 4E 54 |0*. STA BYT ;INT| 000007D0: 4F 20 42 59 54 0D 20 4C 44 41 20 42 59 54 2B 31 |O BYT. LDA BYT+1| 000007E0: 0D 20 41 44 43 20 54 45 4D 50 2B 31 0D 20 53 54 |. ADC TEMP+1. ST| 000007F0: 41 20 42 59 54 2B 31 0D 20 4C 44 41 20 58 31 20 |A BYT+1. LDA X1 | 00000800: 3B 4E 4F 57 20 41 44 44 20 43 48 41 52 0D 20 41 |;NOW ADD CHAR. A| 00000810: 4E 44 20 23 24 46 38 0D 20 41 44 43 20 42 59 54 |ND #$F8. ADC BYT| 00000820: 0D 20 53 54 41 20 42 59 54 0D 20 4C 44 41 20 58 |. STA BYT. LDA X| 00000830: 31 2B 31 0D 20 41 44 43 20 42 59 54 2B 31 0D 20 |1+1. ADC BYT+1. | 00000840: 53 54 41 20 42 59 54 2B 31 20 3B 28 43 41 52 52 |STA BYT+1 ;(CARR| 00000850: 59 20 53 54 49 4C 4C 20 43 4C 45 41 52 29 0D 20 |Y STILL CLEAR). | 00000860: 50 4C 41 20 3B 4E 4F 57 20 41 44 44 20 4C 49 4E |PLA ;NOW ADD LIN| 00000870: 45 0D 20 41 4E 44 20 23 37 20 3B 42 59 20 4D 41 |E. AND #7 ;BY MA| 00000880: 53 4B 49 4E 47 20 48 49 47 48 20 42 49 54 53 0D |SKING HIGH BITS.| 00000890: 20 41 44 43 20 42 59 54 0D 20 53 54 41 20 42 59 | ADC BYT. STA BY| 000008A0: 54 0D 20 4C 44 41 20 42 59 54 2B 31 20 3B 46 49 |T. LDA BYT+1 ;FI| 000008B0: 4E 49 53 48 20 42 59 20 41 44 44 49 4E 47 20 42 |NISH BY ADDING B| 000008C0: 41 53 45 0D 20 41 44 43 20 23 3E 42 41 53 45 0D |ASE. ADC #>BASE.| 000008D0: 20 53 54 41 20 42 59 54 2B 31 0D 20 4C 44 41 20 | STA BYT+1. LDA | 000008E0: 58 31 20 3B 53 45 54 20 42 49 54 4E 4F 0D 20 41 |X1 ;SET BITNO. A| 000008F0: 4E 44 20 23 37 20 3B 49 53 20 4C 4F 57 20 33 20 |ND #7 ;IS LOW 3 | 00000900: 42 49 54 53 0D 20 54 41 58 20 3B 41 4E 44 20 49 |BITS. TAX ;AND I| 00000910: 4E 44 45 58 20 54 4F 20 54 41 42 4C 45 0D 20 4C |NDEX TO TABLE. L| 00000920: 44 41 20 4D 53 4B 54 42 2C 58 0D 20 53 54 41 20 |DA MSKTB,X. STA | 00000930: 42 49 54 4E 4F 0D 20 52 54 53 20 3B 42 59 54 20 |BITNO. RTS ;BYT | 00000940: 41 4E 44 20 42 49 54 4E 4F 20 4E 4F 57 20 53 45 |AND BITNO NOW SE| 00000950: 54 0D 3B 0D 3B 2A 2A 2A 20 46 41 53 54 50 4C 4F |T.;.;*** FASTPLO| 00000960: 54 20 2A 2A 2A 0D 3B 0D 3B 47 52 41 50 48 49 43 |T ***.;.;GRAPHIC| 00000970: 20 53 55 42 52 4F 55 54 49 4E 45 20 46 4F 52 20 | SUBROUTINE FOR | 00000980: 4C 49 4E 45 20 44 52 41 57 49 4E 47 0D 3B 4F 4E |LINE DRAWING.;ON| 00000990: 20 33 32 30 2A 32 30 30 20 48 49 2D 52 45 53 20 | 320*200 HI-RES | 000009A0: 4D 45 4D 4F 52 59 0D 3B 0D 3B 4F 52 49 47 49 4E |MEMORY.;.;ORIGIN| 000009B0: 41 4C 4C 59 20 57 52 49 54 54 45 4E 20 41 53 20 |ALLY WRITTEN AS | 000009C0: 56 45 43 54 4F 52 20 47 45 4E 45 52 41 54 4F 52 |VECTOR GENERATOR| 000009D0: 0D 3B 46 4F 52 20 48 4F 55 53 54 4F 4E 20 49 4E |.;FOR HOUSTON IN| 000009E0: 53 54 52 55 4D 45 4E 54 20 48 49 50 4C 4F 54 0D |STRUMENT HIPLOT.| 000009F0: 3B 44 49 47 49 54 41 4C 20 49 4E 43 52 45 4D 45 |;DIGITAL INCREME| 00000A00: 4E 54 41 4C 20 50 4C 4F 54 54 45 52 0D 3B 0D 3B |NTAL PLOTTER.;.;| 00000A10: 4D 4F 52 45 20 45 46 46 49 43 49 45 4E 54 20 41 |MORE EFFICIENT A| 00000A20: 4C 47 4F 52 49 54 48 4D 20 42 59 20 57 2E 20 4D |LGORITHM BY W. M| 00000A30: 43 57 4F 52 54 45 52 0D 3B 49 4E 20 42 59 54 45 |CWORTER.;IN BYTE| 00000A40: 20 4D 41 59 20 31 39 38 31 2C 20 50 32 30 32 0D | MAY 1981, P202.| 00000A50: 3B 0D 3B 52 45 2D 57 52 49 54 54 45 4E 20 46 4F |;.;RE-WRITTEN FO| 00000A60: 52 20 4D 54 55 20 56 49 53 49 42 4C 45 20 4D 45 |R MTU VISIBLE ME| 00000A70: 4D 4F 52 59 20 28 54 4D 29 0D 3B 42 59 20 46 2E |MORY (TM).;BY F.| 00000A80: 20 43 4F 56 49 54 5A 2C 20 41 55 47 2E 20 31 39 | COVITZ, AUG. 19| 00000A90: 38 31 0D 3B 52 45 56 49 53 45 44 20 4E 4F 56 2E |81.;REVISED NOV.| 00000AA0: 20 31 39 38 32 20 46 4F 52 20 43 42 4D 2D 36 34 | 1982 FOR CBM-64| 00000AB0: 0D 3B 0D 3B 0D 3B 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A |.;.;.;**********| 00000AC0: 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A |****************| 00000AD0: 2A 2A 2A 0D 3B 2A 20 54 59 50 4F 20 49 4E 20 4F |***.;* TYPO IN O| 00000AE0: 52 49 47 49 4E 41 4C 20 4C 45 54 54 45 52 20 20 |RIGINAL LETTER | 00000AF0: 20 2A 0D 3B 2A 20 20 20 20 20 20 20 20 20 20 20 | *.;* | 00000B00: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | | 00000B10: 2A 0D 3B 2A 20 49 54 20 52 45 41 44 53 3B 20 41 |*.;* IT READS; A| 00000B20: 24 3D 22 52 51 56 57 50 53 2E 2E 2E 2E 22 20 2A |$="RQVWPS...." *| 00000B30: 0D 3B 2A 20 20 20 20 20 20 20 20 20 20 20 20 20 |.;* | 00000B40: 20 20 20 20 20 20 2A 20 20 20 20 20 20 20 2A 0D | * *.| 00000B50: 3B 2A 53 48 4F 55 4C 44 20 42 45 3B 20 41 24 3D |;*SHOULD BE; A$=| 00000B60: 22 52 51 56 57 52 53 2E 2E 2E 2E 22 20 2A 0D 3B |"RQVWRS...." *.;| 00000B70: 2A 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 |* | 00000B80: 20 20 20 20 20 20 20 20 20 20 20 20 2A 0D 3B 2A | *.;*| 00000B90: 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A |****************| 00000BA0: 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 0D 3B 0D 3B |************.;.;| 00000BB0: 43 4F 4D 45 20 49 4E 20 57 49 54 48 20 58 31 2C |COME IN WITH X1,| 00000BC0: 59 31 20 41 4E 44 20 58 32 2C 59 32 0D 3B 41 4E |Y1 AND X2,Y2.;AN| 00000BD0: 44 20 46 49 52 53 54 20 50 49 58 45 4C 20 53 45 |D FIRST PIXEL SE| 00000BE0: 54 0D 3B 49 2E 45 2E 20 42 59 54 2C 42 59 54 2B |T.;I.E. BYT,BYT+| 00000BF0: 31 2C 20 41 4E 44 20 42 49 54 4E 4F 20 41 52 45 |1, AND BITNO ARE| 00000C00: 20 53 45 54 0D 3B 56 49 41 20 43 41 4C 4C 20 54 | SET.;VIA CALL T| 00000C10: 4F 20 50 49 58 41 44 52 0D 3B 52 4F 55 54 49 4E |O PIXADR.;ROUTIN| 00000C20: 45 20 44 52 41 57 53 20 42 45 53 54 20 53 54 52 |E DRAWS BEST STR| 00000C30: 41 49 47 48 54 20 4C 49 4E 45 0D 3B 4C 45 41 56 |AIGHT LINE.;LEAV| 00000C40: 45 53 20 57 49 54 48 20 58 31 5F 58 32 2C 59 31 |ES WITH X1_X2,Y1| 00000C50: 5F 59 32 0D 3B 0D 3B 4C 45 41 56 45 53 20 57 49 |_Y2.;.;LEAVES WI| 00000C60: 54 48 20 59 3D 30 2C 20 58 20 43 4C 4F 42 42 45 |TH Y=0, X CLOBBE| 00000C70: 52 45 44 0D 3B 52 4F 55 54 49 4E 45 20 43 48 45 |RED.;ROUTINE CHE| 00000C80: 43 4B 53 20 46 4F 52 20 4F 56 45 52 46 4C 4F 57 |CKS FOR OVERFLOW| 00000C90: 0D 3B 0D 3B 2A 2A 56 45 43 50 4C 54 2A 2A 0D 3B |.;.;**VECPLT**.;| 00000CA0: 0D 3B 45 4E 54 45 52 20 48 45 52 45 20 46 52 4F |.;ENTER HERE FRO| 00000CB0: 4D 20 42 41 53 49 43 0D 3B 0D 56 45 43 50 4C 54 |M BASIC.;.VECPLT| 00000CC0: 20 4A 53 52 20 47 45 54 56 41 4C 20 3B 47 45 54 | JSR GETVAL ;GET| 00000CD0: 20 58 2D 43 4F 4F 52 44 0D 20 53 54 59 20 58 32 | X-COORD. STY X2| 00000CE0: 0D 20 53 54 41 20 58 32 2B 31 0D 20 4A 53 52 20 |. STA X2+1. JSR | 00000CF0: 47 45 54 56 41 4C 20 3B 47 45 54 20 59 2D 43 4F |GETVAL ;GET Y-CO| 00000D00: 4F 52 44 0D 20 53 54 59 20 59 32 0D 20 53 54 41 |ORD. STY Y2. STA| 00000D10: 20 59 32 2B 31 0D 3B 0D 3B 45 4E 54 45 52 20 48 | Y2+1.;.;ENTER H| 00000D20: 45 52 45 20 49 46 20 58 32 2C 20 59 32 20 41 4C |ERE IF X2, Y2 AL| 00000D30: 52 45 41 44 59 20 53 45 54 0D 3B 0D 56 45 43 50 |READY SET.;.VECP| 00000D40: 4C 31 20 4A 53 52 20 52 4E 47 43 48 4B 20 3B 43 |L1 JSR RNGCHK ;C| 00000D50: 48 45 43 4B 20 58 32 2C 59 32 20 4F 56 45 52 46 |HECK X2,Y2 OVERF| 00000D60: 4C 4F 57 0D 20 53 45 43 20 3B 46 4F 52 4D 20 44 |LOW. SEC ;FORM D| 00000D70: 45 4C 54 58 20 28 53 49 47 4E 45 44 29 0D 20 4C |ELTX (SIGNED). L| 00000D80: 44 41 20 58 32 0D 20 53 42 43 20 58 31 0D 20 53 |DA X2. SBC X1. S| 00000D90: 54 41 20 44 45 4C 54 58 0D 20 4C 44 41 20 58 32 |TA DELTX. LDA X2| 00000DA0: 2B 31 0D 20 53 42 43 20 58 31 2B 31 0D 20 53 54 |+1. SBC X1+1. ST| 00000DB0: 41 20 44 45 4C 54 58 2B 31 0D 20 53 45 43 20 3B |A DELTX+1. SEC ;| 00000DC0: 46 4F 52 4D 20 44 45 4C 54 59 20 28 53 49 47 4E |FORM DELTY (SIGN| 00000DD0: 45 44 29 0D 20 4C 44 41 20 59 32 0D 20 53 42 43 |ED). LDA Y2. SBC| 00000DE0: 20 59 31 0D 20 53 54 41 20 44 45 4C 54 59 0D 20 | Y1. STA DELTY. | 00000DF0: 4C 44 41 20 59 32 2B 31 0D 20 53 42 43 20 59 31 |LDA Y2+1. SBC Y1| 00000E00: 2B 31 0D 3B 0D 20 53 54 41 20 44 45 4C 54 59 2B |+1.;. STA DELTY+| 00000E10: 31 0D 20 4C 44 41 20 58 32 20 3B 58 31 2C 59 31 |1. LDA X2 ;X1,Y1| 00000E20: 5F 58 32 2C 59 32 0D 20 53 54 41 20 58 31 0D 20 |_X2,Y2. STA X1. | 00000E30: 4C 44 41 20 58 32 2B 31 0D 20 53 54 41 20 58 31 |LDA X2+1. STA X1| 00000E40: 2B 31 0D 20 4C 44 41 20 59 32 0D 20 53 54 41 20 |+1. LDA Y2. STA | 00000E50: 59 31 0D 20 4C 44 41 20 59 32 2B 31 0D 20 53 54 |Y1. LDA Y2+1. ST| 00000E60: 41 20 59 31 2B 31 0D 3B 0D 3B 4E 4F 57 20 48 41 |A Y1+1.;.;NOW HA| 00000E70: 56 45 20 44 45 4C 54 58 2C 44 45 4C 54 59 20 28 |VE DELTX,DELTY (| 00000E80: 53 49 47 4E 45 44 29 0D 3B 0D 3B 2A 2A 20 4D 4F |SIGNED).;.;** MO| 00000E90: 56 45 20 2A 2A 0D 3B 0D 3B 47 49 56 45 4E 20 44 |VE **.;.;GIVEN D| 00000EA0: 45 4C 54 58 2C 20 44 45 4C 54 59 0D 3B 44 52 41 |ELTX, DELTY.;DRA| 00000EB0: 57 2F 4D 4F 56 45 20 54 48 45 20 42 45 53 54 20 |W/MOVE THE BEST | 00000EC0: 53 54 52 41 49 47 48 54 20 4C 49 4E 45 0D 3B 0D |STRAIGHT LINE.;.| 00000ED0: 4D 4F 56 45 20 4C 44 41 20 23 30 20 3B 44 45 54 |MOVE LDA #0 ;DET| 00000EE0: 45 52 4D 49 4E 45 20 4F 43 54 41 4E 54 0D 20 53 |ERMINE OCTANT. S| 00000EF0: 54 41 20 49 0D 20 42 49 54 20 44 45 4C 54 58 2B |TA I. BIT DELTX+| 00000F00: 31 20 3B 43 48 45 43 4B 20 44 45 4C 54 58 20 3C |1 ;CHECK DELTX <| 00000F10: 20 30 0D 20 42 50 4C 20 4D 56 31 0D 20 4C 44 41 | 0. BPL MV1. LDA| 00000F20: 20 44 45 4C 54 58 20 3B 43 48 41 4E 47 45 20 53 | DELTX ;CHANGE S| 00000F30: 49 47 4E 0D 20 4A 53 52 20 43 4F 4D 50 4C 0D 20 |IGN. JSR COMPL. | 00000F40: 53 54 41 20 44 45 4C 54 58 0D 20 4C 44 41 20 44 |STA DELTX. LDA D| 00000F50: 45 4C 54 58 2B 31 0D 20 4A 53 52 20 43 4F 4D 50 |ELTX+1. JSR COMP| 00000F60: 48 0D 20 53 54 41 20 44 45 4C 54 58 2B 31 0D 20 |H. STA DELTX+1. | 00000F70: 4C 44 41 20 23 32 0D 20 53 54 41 20 49 0D 4D 56 |LDA #2. STA I.MV| 00000F80: 31 20 42 49 54 20 44 45 4C 54 59 2B 31 20 3B 43 |1 BIT DELTY+1 ;C| 00000F90: 48 45 43 4B 20 44 45 4C 54 59 20 3C 20 30 0D 20 |HECK DELTY < 0. | 00000FA0: 42 50 4C 20 4D 56 32 0D 20 4C 44 41 20 44 45 4C |BPL MV2. LDA DEL| 00000FB0: 54 59 0D 20 4A 53 52 20 43 4F 4D 50 4C 0D 20 53 |TY. JSR COMPL. S| 00000FC0: 54 41 20 44 45 4C 54 59 0D 20 4C 44 41 20 44 45 |TA DELTY. LDA DE| 00000FD0: 4C 54 59 2B 31 0D 20 4A 53 52 20 43 4F 4D 50 48 |LTY+1. JSR COMPH| 00000FE0: 0D 20 53 54 41 20 44 45 4C 54 59 2B 31 0D 20 43 |. STA DELTY+1. C| 00000FF0: 4C 43 0D 20 4C 44 41 20 49 0D 20 41 44 43 20 23 |LC. LDA I. ADC #| 00001000: 34 0D 20 53 54 41 20 49 0D 4D 56 32 20 4C 44 58 |4. STA I.MV2 LDX| 00001010: 20 44 45 4C 54 58 20 3B 43 48 45 43 4B 20 44 45 | DELTX ;CHECK DE| 00001020: 4C 54 58 2D 44 45 4C 54 59 0D 20 43 50 58 20 44 |LTX-DELTY. CPX D| 00001030: 45 4C 54 59 20 3B 53 45 54 20 43 41 52 52 59 20 |ELTY ;SET CARRY | 00001040: 46 4F 52 20 4C 4F 57 20 42 59 54 45 0D 20 4C 44 |FOR LOW BYTE. LD| 00001050: 41 20 44 45 4C 54 58 2B 31 20 3B 4E 4F 57 20 48 |A DELTX+1 ;NOW H| 00001060: 49 47 48 20 42 59 54 45 0D 20 54 41 59 20 3B 53 |IGH BYTE. TAY ;S| 00001070: 45 54 20 59 20 3D 20 44 45 4C 54 58 0D 20 53 42 |ET Y = DELTX. SB| 00001080: 43 20 44 45 4C 54 59 2B 31 0D 20 42 50 4C 20 4D |C DELTY+1. BPL M| 00001090: 56 33 0D 20 4C 44 41 20 44 45 4C 54 59 20 3B 49 |V3. LDA DELTY ;I| 000010A0: 4E 54 45 52 43 48 41 4E 47 45 20 44 45 4C 54 58 |NTERCHANGE DELTX| 000010B0: 2C 59 0D 20 53 54 41 20 44 45 4C 54 58 0D 20 4C |,Y. STA DELTX. L| 000010C0: 44 41 20 44 45 4C 54 59 2B 31 0D 20 53 54 41 20 |DA DELTY+1. STA | 000010D0: 44 45 4C 54 58 2B 31 0D 20 53 54 58 20 44 45 4C |DELTX+1. STX DEL| 000010E0: 54 59 0D 20 53 54 59 20 44 45 4C 54 59 2B 31 0D |TY. STY DELTY+1.| 000010F0: 20 43 4C 43 0D 20 4C 44 41 20 49 0D 20 41 44 43 | CLC. LDA I. ADC| 00001100: 20 23 38 0D 20 53 54 41 20 49 0D 4D 56 33 20 4C | #8. STA I.MV3 L| 00001110: 44 41 20 44 45 4C 54 58 20 3B 46 4F 52 4D 20 45 |DA DELTX ;FORM E| 00001120: 3D 2D 44 45 4C 54 58 2F 32 0D 20 4A 53 52 20 43 |=-DELTX/2. JSR C| 00001130: 4F 4D 50 4C 0D 20 53 54 41 20 45 0D 20 4C 44 41 |OMPL. STA E. LDA| 00001140: 20 44 45 4C 54 58 2B 31 0D 20 4A 53 52 20 43 4F | DELTX+1. JSR CO| 00001150: 4D 50 48 0D 20 53 54 41 20 45 2B 31 0D 20 53 45 |MPH. STA E+1. SE| 00001160: 43 20 3B 43 48 45 43 4B 20 46 4F 52 20 4E 45 47 |C ;CHECK FOR NEG| 00001170: 41 54 49 56 45 0D 20 42 4D 49 20 4D 56 34 0D 20 |ATIVE. BMI MV4. | 00001180: 43 4C 43 0D 4D 56 34 20 52 4F 52 20 45 2B 31 20 |CLC.MV4 ROR E+1 | 00001190: 3B 44 49 56 49 44 45 20 42 59 20 32 0D 20 52 4F |;DIVIDE BY 2. RO| 000011A0: 52 20 45 0D 20 4C 44 59 20 23 30 20 3B 53 45 54 |R E. LDY #0 ;SET| 000011B0: 20 59 3D 30 0D 20 53 54 59 20 43 20 3B 53 45 54 | Y=0. STY C ;SET| 000011C0: 20 43 4F 55 4E 54 45 52 20 54 4F 20 5A 45 52 4F | COUNTER TO ZERO| 000011D0: 0D 20 53 54 59 20 43 2B 31 0D 20 42 45 51 20 4D |. STY C+1. BEQ M| 000011E0: 56 37 20 3B 41 42 53 4F 4C 55 54 45 20 42 52 41 |V7 ;ABSOLUTE BRA| 000011F0: 4E 43 48 0D 3B 0D 3B 2A 2A 20 4D 41 49 4E 20 44 |NCH.;.;** MAIN D| 00001200: 52 41 57 49 4E 47 20 4C 4F 4F 50 20 2A 2A 0D 3B |RAWING LOOP **.;| 00001210: 0D 4D 56 35 20 4C 44 58 20 49 20 3B 47 45 54 20 |.MV5 LDX I ;GET | 00001220: 44 49 52 45 43 54 49 4F 4E 20 49 4E 20 58 0D 20 |DIRECTION IN X. | 00001230: 43 4C 43 20 3B 46 4F 52 4D 20 45 3D 45 2B 44 45 |CLC ;FORM E=E+DE| 00001240: 4C 54 59 0D 20 4C 44 41 20 45 0D 20 41 44 43 20 |LTY. LDA E. ADC | 00001250: 44 45 4C 54 59 0D 20 53 54 41 20 45 20 3B 46 49 |DELTY. STA E ;FI| 00001260: 52 53 54 20 4C 4F 57 20 42 59 54 45 0D 20 4C 44 |RST LOW BYTE. LD| 00001270: 41 20 45 2B 31 0D 20 41 44 43 20 44 45 4C 54 59 |A E+1. ADC DELTY| 00001280: 2B 31 0D 20 53 54 41 20 45 2B 31 0D 20 42 4D 49 |+1. STA E+1. BMI| 00001290: 20 4D 56 36 0D 20 53 45 43 20 3B 46 4F 52 4D 20 | MV6. SEC ;FORM | 000012A0: 45 3D 45 2D 44 45 4C 54 58 0D 20 4C 44 41 20 45 |E=E-DELTX. LDA E| 000012B0: 0D 20 53 42 43 20 44 45 4C 54 58 0D 20 53 54 41 |. SBC DELTX. STA| 000012C0: 20 45 0D 20 4C 44 41 20 45 2B 31 0D 20 53 42 43 | E. LDA E+1. SBC| 000012D0: 20 44 45 4C 54 58 2B 31 0D 20 53 54 41 20 45 2B | DELTX+1. STA E+| 000012E0: 31 0D 20 49 4E 58 20 3B 58 20 42 55 4D 50 45 44 |1. INX ;X BUMPED| 000012F0: 20 55 50 20 4F 4E 45 0D 4D 56 36 20 4A 53 52 20 | UP ONE.MV6 JSR | 00001300: 4F 55 54 50 4C 54 20 3B 4F 55 54 50 55 54 20 4F |OUTPLT ;OUTPUT O| 00001310: 4E 45 20 4D 4F 56 45 0D 20 49 4E 43 20 43 20 3B |NE MOVE. INC C ;| 00001320: 42 55 4D 50 20 43 4F 55 4E 54 45 52 20 55 50 20 |BUMP COUNTER UP | 00001330: 31 0D 20 42 4E 45 20 4D 56 37 0D 20 49 4E 43 20 |1. BNE MV7. INC | 00001340: 43 2B 31 0D 3B 0D 3B 45 4E 54 45 52 20 48 45 52 |C+1.;.;ENTER HER| 00001350: 45 20 4F 4E 20 31 53 54 20 50 41 53 53 0D 3B 0D |E ON 1ST PASS.;.| 00001360: 4D 56 37 20 4C 44 41 20 28 42 59 54 29 2C 59 20 |MV7 LDA (BYT),Y | 00001370: 3B 54 55 52 4E 20 4F 4E 20 41 20 50 4F 49 4E 54 |;TURN ON A POINT| 00001380: 0D 20 4F 52 41 20 42 49 54 4E 4F 0D 20 53 54 41 |. ORA BITNO. STA| 00001390: 20 28 42 59 54 29 2C 59 0D 20 4C 44 41 20 43 20 | (BYT),Y. LDA C | 000013A0: 3B 44 4F 4E 45 20 57 48 45 4E 20 43 20 3E 20 3D |;DONE WHEN C > =| 000013B0: 20 44 45 4C 54 58 0D 20 43 4D 50 20 44 45 4C 54 | DELTX. CMP DELT| 000013C0: 58 0D 20 4C 44 41 20 43 2B 31 0D 20 53 42 43 20 |X. LDA C+1. SBC | 000013D0: 44 45 4C 54 58 2B 31 0D 20 42 43 43 20 4D 56 35 |DELTX+1. BCC MV5| 000013E0: 0D 20 52 54 53 20 3B 44 4F 4E 45 0D 3B 0D 3B 2A |. RTS ;DONE.;.;*| 000013F0: 2A 20 4F 55 54 50 4C 54 20 2A 2A 0D 3B 0D 3B 4F |* OUTPLT **.;.;O| 00001400: 55 54 50 55 54 20 41 4E 20 45 4C 45 4D 45 4E 54 |UTPUT AN ELEMENT| 00001410: 41 52 59 20 4D 4F 56 45 0D 3B 0D 4F 55 54 50 4C |ARY MOVE.;.OUTPL| 00001420: 54 20 54 58 41 0D 20 41 53 4C 20 41 20 3B 4D 55 |T TXA. ASL A ;MU| 00001430: 4C 54 20 42 59 20 54 57 4F 20 54 4F 20 47 45 54 |LT BY TWO TO GET| 00001440: 20 49 4E 44 45 58 0D 20 54 41 58 0D 20 4C 44 41 | INDEX. TAX. LDA| 00001450: 20 4D 4F 56 54 41 42 2B 31 2C 58 20 3B 47 45 54 | MOVTAB+1,X ;GET| 00001460: 20 54 48 45 20 56 45 43 54 4F 52 0D 20 50 48 41 | THE VECTOR. PHA| 00001470: 20 3B 48 49 47 48 20 42 59 54 45 20 4F 4E 20 53 | ;HIGH BYTE ON S| 00001480: 54 41 43 4B 0D 20 4C 44 41 20 4D 4F 56 54 41 42 |TACK. LDA MOVTAB| 00001490: 2C 58 0D 20 50 48 41 20 3B 4C 4F 57 20 42 59 54 |,X. PHA ;LOW BYT| 000014A0: 45 20 4F 4E 20 53 54 41 43 4B 0D 20 52 54 53 20 |E ON STACK. RTS | 000014B0: 3B 44 4F 20 43 4F 4D 50 55 54 45 44 20 4A 55 4D |;DO COMPUTED JUM| 000014C0: 50 0D 3B 0D 3B 52 45 54 55 52 4E 20 56 49 41 20 |P.;.;RETURN VIA | 000014D0: 52 54 53 20 54 4F 20 4A 53 52 20 4F 55 54 50 4C |RTS TO JSR OUTPL| 000014E0: 54 28 31 29 0D 3B 0D 3B 2A 2A 52 4E 47 43 48 4B |T(1).;.;**RNGCHK| 000014F0: 2A 2A 0D 3B 0D 3B 43 48 45 43 4B 20 58 32 2C 20 |**.;.;CHECK X2, | 00001500: 59 32 20 46 4F 52 20 4F 56 45 52 46 4C 4F 57 0D |Y2 FOR OVERFLOW.| 00001510: 3B 52 45 54 55 52 4E 20 54 4F 20 43 41 4C 4C 49 |;RETURN TO CALLI| 00001520: 4E 47 20 50 52 4F 47 52 41 4D 20 4F 4E 20 4F 56 |NG PROGRAM ON OV| 00001530: 45 52 46 4C 4F 57 0D 3B 0D 52 4E 47 43 48 4B 20 |ERFLOW.;.RNGCHK | 00001540: 4C 44 41 20 58 32 20 3B 43 48 45 43 4B 20 58 32 |LDA X2 ;CHECK X2| 00001550: 2C 20 4C 4F 57 0D 20 43 4D 50 20 23 3C 58 4D 41 |, LOW. CMP #<XMA| 00001560: 58 0D 20 4C 44 41 20 58 32 2B 31 20 3B 43 48 45 |X. LDA X2+1 ;CHE| 00001570: 43 4B 20 48 49 47 48 20 42 59 54 45 0D 20 53 42 |CK HIGH BYTE. SB| 00001580: 43 20 23 3E 58 4D 41 58 0D 20 42 43 53 20 52 4E |C #>XMAX. BCS RN| 00001590: 47 32 20 3B 58 32 20 3E 20 58 4D 41 58 2C 20 53 |G2 ;X2 > XMAX, S| 000015A0: 4F 20 41 42 4F 52 54 0D 52 4E 47 31 20 4C 44 41 |O ABORT.RNG1 LDA| 000015B0: 20 59 32 20 3B 43 48 45 43 4B 20 59 32 2C 20 4C | Y2 ;CHECK Y2, L| 000015C0: 4F 57 0D 20 43 4D 50 20 23 3C 59 4D 41 58 0D 20 |OW. CMP #<YMAX. | 000015D0: 4C 44 41 20 59 32 2B 31 20 3B 43 48 45 43 4B 20 |LDA Y2+1 ;CHECK | 000015E0: 48 49 47 48 20 42 59 54 45 0D 20 53 42 43 20 23 |HIGH BYTE. SBC #| 000015F0: 3E 59 4D 41 58 0D 20 42 43 43 20 52 4E 47 33 20 |>YMAX. BCC RNG3 | 00001600: 3B 59 32 20 3C 20 59 4D 41 58 2C 20 53 4F 20 4F |;Y2 < YMAX, SO O| 00001610: 4B 0D 52 4E 47 32 20 4A 53 52 20 48 52 52 45 53 |K.RNG2 JSR HRRES| 00001620: 54 20 3B 52 45 53 54 4F 52 45 20 4E 4F 52 4D 41 |T ;RESTORE NORMA| 00001630: 4C 0D 20 4C 44 58 20 23 31 34 20 3B 49 4C 4C 45 |L. LDX #14 ;ILLE| 00001640: 47 41 4C 20 51 55 41 4E 54 49 54 59 20 45 52 52 |GAL QUANTITY ERR| 00001650: 4F 52 0D 20 4A 4D 50 20 28 45 52 52 56 45 43 29 |OR. JMP (ERRVEC)| 00001660: 20 3B 46 55 4E 4E 45 4C 20 54 48 52 4F 55 47 48 | ;FUNNEL THROUGH| 00001670: 20 45 52 52 4F 52 20 52 4F 55 54 49 4E 45 0D 52 | ERROR ROUTINE.R| 00001680: 4E 47 33 20 52 54 53 0D 3B 0D 3B 43 4F 4D 50 4C |NG3 RTS.;.;COMPL| 00001690: 2C 48 0D 3B 0D 3B 46 4F 52 4D 20 43 4F 4D 50 4C |,H.;.;FORM COMPL| 000016A0: 45 4D 45 4E 54 20 4F 46 20 53 49 47 4E 45 44 20 |EMENT OF SIGNED | 000016B0: 4E 55 4D 42 45 52 0D 3B 31 53 54 20 45 4E 54 45 |NUMBER.;1ST ENTE| 000016C0: 52 20 41 54 20 43 4F 4D 50 4C 20 46 4F 52 20 4C |R AT COMPL FOR L| 000016D0: 4F 57 20 42 59 54 45 0D 3B 54 48 45 4E 20 45 4E |OW BYTE.;THEN EN| 000016E0: 54 45 52 20 41 54 20 43 4F 4D 50 48 20 46 4F 52 |TER AT COMPH FOR| 000016F0: 20 48 49 47 48 20 42 59 54 45 0D 3B 0D 3B 41 4E | HIGH BYTE.;.;AN| 00001700: 53 57 45 52 20 49 4E 20 41 0D 3B 0D 43 4F 4D 50 |SWER IN A.;.COMP| 00001710: 4C 20 53 45 43 20 3B 46 4F 52 20 4C 4F 57 20 42 |L SEC ;FOR LOW B| 00001720: 59 54 45 0D 43 4F 4D 50 48 20 45 4F 52 20 23 24 |YTE.COMPH EOR #$| 00001730: 46 46 20 3B 43 4F 4D 50 4C 45 4D 45 4E 54 0D 20 |FF ;COMPLEMENT. | 00001740: 41 44 43 20 23 30 20 3B 41 44 44 20 43 41 52 52 |ADC #0 ;ADD CARR| 00001750: 59 20 53 54 41 54 45 0D 20 52 54 53 0D 3B 0D 4C |Y STATE. RTS.;.L| 00001760: 4C 20 4A 53 52 20 4C 45 46 54 20 3B 47 4F 20 4C |L JSR LEFT ;GO L| 00001770: 45 46 54 20 41 4E 44 20 46 41 4C 4C 20 54 48 52 |EFT AND FALL THR| 00001780: 4F 55 47 48 20 54 4F 20 44 4F 57 4E 0D 44 4F 57 |OUGH TO DOWN.DOW| 00001790: 4E 20 4C 44 41 20 42 59 54 0D 20 41 4E 44 20 23 |N LDA BYT. AND #| 000017A0: 37 20 3B 45 58 41 4D 20 4C 4F 57 45 53 54 20 33 |7 ;EXAM LOWEST 3| 000017B0: 20 42 49 54 53 0D 20 45 4F 52 20 23 37 20 3B 46 | BITS. EOR #7 ;F| 000017C0: 4C 49 50 20 54 48 45 4D 0D 20 42 45 51 20 44 4E |LIP THEM. BEQ DN| 000017D0: 32 20 3B 4F 52 49 47 49 4E 41 4C 20 42 59 54 45 |2 ;ORIGINAL BYTE| 000017E0: 20 57 41 53 20 58 58 58 58 31 31 31 0D 20 49 4E | WAS XXXX111. IN| 000017F0: 43 20 42 59 54 20 3B 45 4C 53 45 20 4A 55 53 54 |C BYT ;ELSE JUST| 00001800: 20 42 55 4D 50 20 42 59 20 31 0D 20 42 4E 45 20 | BUMP BY 1. BNE | 00001810: 44 4E 33 0D 20 49 4E 43 20 42 59 54 2B 31 0D 20 |DN3. INC BYT+1. | 00001820: 42 4E 45 20 44 4E 33 20 3B 42 52 41 4E 43 48 20 |BNE DN3 ;BRANCH | 00001830: 41 4C 57 41 59 53 0D 44 4E 32 20 43 4C 43 20 3B |ALWAYS.DN2 CLC ;| 00001840: 41 44 44 20 33 32 30 2D 37 0D 20 4C 44 41 20 42 |ADD 320-7. LDA B| 00001850: 59 54 0D 20 41 44 43 20 23 3C 33 31 33 0D 20 53 |YT. ADC #<313. S| 00001860: 54 41 20 42 59 54 0D 20 4C 44 41 20 42 59 54 2B |TA BYT. LDA BYT+| 00001870: 31 0D 20 41 44 43 20 23 3E 33 31 33 0D 20 53 54 |1. ADC #>313. ST| 00001880: 41 20 42 59 54 2B 31 0D 44 4E 33 20 52 54 53 0D |A BYT+1.DN3 RTS.| 00001890: 3B 0D 55 52 20 4A 53 52 20 52 49 47 48 54 20 3B |;.UR JSR RIGHT ;| 000018A0: 46 49 52 53 54 20 52 49 47 48 54 20 54 48 45 4E |FIRST RIGHT THEN| 000018B0: 20 46 41 4C 4C 20 54 48 52 4F 55 47 48 20 54 4F | FALL THROUGH TO| 000018C0: 20 55 50 0D 55 50 20 4C 44 41 20 42 59 54 0D 20 | UP.UP LDA BYT. | 000018D0: 41 4E 44 20 23 37 20 3B 43 48 45 43 4B 20 4C 4F |AND #7 ;CHECK LO| 000018E0: 57 20 42 49 54 53 0D 20 42 4E 45 20 55 50 31 20 |W BITS. BNE UP1 | 000018F0: 3B 49 46 20 42 59 54 45 20 57 41 53 20 4E 4F 54 |;IF BYTE WAS NOT| 00001900: 20 58 58 58 58 58 30 30 30 0D 20 53 45 43 20 3B | XXXXX000. SEC ;| 00001910: 45 4C 53 45 20 53 55 42 54 52 41 43 54 20 33 32 |ELSE SUBTRACT 32| 00001920: 30 2D 37 0D 20 4C 44 41 20 42 59 54 0D 20 53 42 |0-7. LDA BYT. SB| 00001930: 43 20 23 3C 33 31 33 0D 20 53 54 41 20 42 59 54 |C #<313. STA BYT| 00001940: 0D 20 4C 44 41 20 42 59 54 2B 31 0D 20 53 42 43 |. LDA BYT+1. SBC| 00001950: 20 23 3E 33 31 33 0D 20 53 54 41 20 42 59 54 2B | #>313. STA BYT+| 00001960: 31 0D 20 42 4E 45 20 55 50 33 20 3B 42 52 41 4E |1. BNE UP3 ;BRAN| 00001970: 43 48 20 41 4C 57 41 59 53 0D 55 50 31 20 4C 44 |CH ALWAYS.UP1 LD| 00001980: 41 20 42 59 54 20 3B 44 45 43 52 45 4D 45 4E 54 |A BYT ;DECREMENT| 00001990: 20 42 59 20 31 0D 20 42 4E 45 20 55 50 32 0D 20 | BY 1. BNE UP2. | 000019A0: 44 45 43 20 42 59 54 2B 31 0D 55 50 32 20 44 45 |DEC BYT+1.UP2 DE| 000019B0: 43 20 42 59 54 0D 55 50 33 20 52 54 53 0D 3B 0D |C BYT.UP3 RTS.;.| 000019C0: 55 4C 20 4A 53 52 20 55 50 20 3B 31 53 54 20 55 |UL JSR UP ;1ST U| 000019D0: 50 20 54 48 45 4E 20 46 41 4C 4C 20 54 48 52 4F |P THEN FALL THRO| 000019E0: 55 47 48 20 54 4F 20 4C 45 46 54 0D 4C 45 46 54 |UGH TO LEFT.LEFT| 000019F0: 20 41 53 4C 20 42 49 54 4E 4F 20 3B 47 4F 20 31 | ASL BITNO ;GO 1| 00001A00: 20 50 49 58 45 4C 20 4C 45 46 54 0D 20 42 43 43 | PIXEL LEFT. BCC| 00001A10: 20 4C 46 32 20 3B 4E 4F 20 43 4F 52 52 45 43 54 | LF2 ;NO CORRECT| 00001A20: 49 4F 4E 20 4F 4E 20 43 41 52 52 59 20 43 4C 45 |ION ON CARRY CLE| 00001A30: 41 52 0D 20 52 4F 4C 20 42 49 54 4E 4F 20 3B 53 |AR. ROL BITNO ;S| 00001A40: 45 54 20 42 49 54 4E 4F 3D 31 20 41 4E 44 20 43 |ET BITNO=1 AND C| 00001A50: 4C 45 41 52 20 43 41 52 52 59 0D 20 4C 44 41 20 |LEAR CARRY. LDA | 00001A60: 42 59 54 0D 20 53 42 43 20 23 37 20 3B 28 2D 38 |BYT. SBC #7 ;(-8| 00001A70: 20 53 49 4E 43 45 20 43 41 52 52 59 20 49 53 20 | SINCE CARRY IS | 00001A80: 43 4C 45 41 52 29 0D 20 53 54 41 20 42 59 54 0D |CLEAR). STA BYT.| 00001A90: 20 42 43 53 20 4C 46 32 0D 20 44 45 43 20 42 59 | BCS LF2. DEC BY| 00001AA0: 54 2B 31 0D 4C 46 32 20 52 54 53 0D 3B 0D 4C 52 |T+1.LF2 RTS.;.LR| 00001AB0: 20 4A 53 52 20 44 4F 57 4E 20 3B 31 53 54 20 44 | JSR DOWN ;1ST D| 00001AC0: 4F 57 4E 20 54 48 45 4E 20 46 41 4C 4C 20 54 48 |OWN THEN FALL TH| 00001AD0: 52 4F 55 47 48 20 54 4F 20 52 49 47 48 54 0D 52 |ROUGH TO RIGHT.R| 00001AE0: 49 47 48 54 20 4C 53 52 20 42 49 54 4E 4F 20 3B |IGHT LSR BITNO ;| 00001AF0: 47 4F 20 31 20 50 49 58 45 4C 20 52 49 47 48 54 |GO 1 PIXEL RIGHT| 00001B00: 0D 20 42 43 43 20 52 47 54 31 0D 20 52 4F 52 20 |. BCC RGT1. ROR | 00001B10: 42 49 54 4E 4F 20 3B 53 45 54 20 42 49 54 4E 4F |BITNO ;SET BITNO| 00001B20: 3D 24 38 30 20 41 4E 44 20 43 4C 45 41 52 20 43 |=$80 AND CLEAR C| 00001B30: 41 52 52 59 0D 20 4C 44 41 20 42 59 54 0D 20 41 |ARRY. LDA BYT. A| 00001B40: 44 43 20 23 38 20 3B 4F 4E 45 20 43 45 4C 4C 20 |DC #8 ;ONE CELL | 00001B50: 52 49 47 48 54 0D 20 53 54 41 20 42 59 54 0D 20 |RIGHT. STA BYT. | 00001B60: 42 43 43 20 52 47 54 31 0D 20 49 4E 43 20 42 59 |BCC RGT1. INC BY| 00001B70: 54 2B 31 0D 52 47 54 31 20 52 54 53 0D 3B 0D 3B |T+1.RGT1 RTS.;.;| 00001B80: 43 4C 52 48 52 0D 3B 0D 3B 43 4C 45 41 52 53 20 |CLRHR.;.;CLEARS | 00001B90: 45 58 41 43 54 4C 59 20 38 30 30 30 20 42 59 54 |EXACTLY 8000 BYT| 00001BA0: 45 53 0D 3B 4C 45 41 56 45 53 20 59 3D 58 3D 30 |ES.;LEAVES Y=X=0| 00001BB0: 0D 3B 0D 43 4C 52 48 52 20 4C 44 41 20 23 3E 48 |.;.CLRHR LDA #>H| 00001BC0: 52 4C 41 53 54 0D 20 53 54 41 20 42 59 54 2B 31 |RLAST. STA BYT+1| 00001BD0: 20 3B 49 4E 49 54 2E 20 50 4F 49 4E 54 45 52 20 | ;INIT. POINTER | 00001BE0: 54 4F 20 4C 41 53 54 20 50 41 47 45 0D 20 4C 44 |TO LAST PAGE. LD| 00001BF0: 41 20 23 30 0D 20 53 54 41 20 42 59 54 0D 20 54 |A #0. STA BYT. T| 00001C00: 41 59 0D 20 53 54 41 20 42 59 54 0D 20 53 54 41 |AY. STA BYT. STA| 00001C10: 20 28 42 59 54 29 2C 59 20 3B 54 48 49 53 20 4F | (BYT),Y ;THIS O| 00001C20: 4E 45 20 44 4F 4E 45 20 53 45 50 41 52 41 54 45 |NE DONE SEPARATE| 00001C30: 4C 59 0D 20 4C 44 59 20 23 3C 48 52 4C 41 53 54 |LY. LDY #<HRLAST| 00001C40: 20 3B 53 54 41 52 54 20 41 54 20 42 41 53 45 2B | ;START AT BASE+| 00001C50: 24 31 46 33 46 0D 20 4C 44 58 20 23 24 32 30 20 |$1F3F. LDX #$20 | 00001C60: 3B 58 20 4B 45 45 50 53 20 54 52 41 43 4B 20 4F |;X KEEPS TRACK O| 00001C70: 46 20 50 41 47 45 53 0D 43 4C 52 48 52 31 20 53 |F PAGES.CLRHR1 S| 00001C80: 54 41 20 28 42 59 54 29 2C 59 20 3B 50 55 54 20 |TA (BYT),Y ;PUT | 00001C90: 49 4E 20 30 27 53 0D 20 44 45 59 0D 20 42 4E 45 |IN 0'S. DEY. BNE| 00001CA0: 20 43 4C 52 48 52 31 0D 20 44 45 43 20 42 59 54 | CLRHR1. DEC BYT| 00001CB0: 2B 31 0D 20 44 45 58 0D 20 42 4E 45 20 43 4C 52 |+1. DEX. BNE CLR| 00001CC0: 48 52 31 20 3B 44 4F 20 33 32 20 50 41 47 45 53 |HR1 ;DO 32 PAGES| 00001CD0: 0D 20 52 54 53 0D 3B 0D 3B 53 45 54 43 4F 4C 0D |. RTS.;.;SETCOL.| 00001CE0: 3B 0D 3B 53 45 54 20 46 4F 52 45 47 52 4F 55 4E |;.;SET FOREGROUN| 00001CF0: 44 2F 42 41 43 4B 47 52 4F 55 4E 44 20 43 4F 4C |D/BACKGROUND COL| 00001D00: 4F 52 0D 3B 0D 53 45 54 43 4F 4C 20 4C 44 41 20 |OR.;.SETCOL LDA | 00001D10: 23 43 4F 4C 4F 52 20 3B 49 4E 20 32 20 4E 59 42 |#COLOR ;IN 2 NYB| 00001D20: 42 4C 45 53 0D 53 45 54 43 4C 30 20 4C 44 58 20 |BLES.SETCL0 LDX | 00001D30: 23 30 0D 53 45 54 43 4C 31 20 53 54 41 20 53 43 |#0.SETCL1 STA SC| 00001D40: 52 45 45 4E 2C 58 20 3B 44 4F 20 34 20 50 41 47 |REEN,X ;DO 4 PAG| 00001D50: 45 53 0D 20 53 54 41 20 53 43 52 45 45 4E 2B 24 |ES. STA SCREEN+$| 00001D60: 30 31 30 30 2C 58 0D 20 53 54 41 20 53 43 52 45 |0100,X. STA SCRE| 00001D70: 45 4E 2B 24 30 32 30 30 2C 58 0D 20 49 4E 58 0D |EN+$0200,X. INX.| 00001D80: 20 42 4E 45 20 53 45 54 43 4C 31 0D 20 4C 44 58 | BNE SETCL1. LDX| 00001D90: 20 23 3C 53 43 52 45 4E 44 2B 31 20 3B 44 4F 20 | #<SCREND+1 ;DO | 00001DA0: 4C 41 53 54 20 50 41 47 45 0D 53 45 54 43 4C 32 |LAST PAGE.SETCL2| 00001DB0: 20 53 54 41 20 53 43 52 45 45 4E 2B 24 30 32 46 | STA SCREEN+$02F| 00001DC0: 46 2C 58 0D 20 44 45 58 0D 20 42 4E 45 20 53 45 |F,X. DEX. BNE SE| 00001DD0: 54 43 4C 32 0D 20 52 54 53 0D 3B 0D 3B 48 52 49 |TCL2. RTS.;.;HRI| 00001DE0: 4E 49 54 20 2D 20 53 45 54 53 20 55 50 20 48 49 |NIT - SETS UP HI| 00001DF0: 2D 52 45 53 0D 3B 0D 48 52 49 4E 49 54 20 4C 44 |-RES.;.HRINIT LD| 00001E00: 41 20 48 52 43 54 52 4C 20 3B 48 49 2D 52 45 53 |A HRCTRL ;HI-RES| 00001E10: 20 4D 4F 44 45 0D 20 4F 52 41 20 23 24 32 30 20 | MODE. ORA #$20 | 00001E20: 3B 54 55 52 4E 20 4F 4E 20 42 49 54 20 35 0D 20 |;TURN ON BIT 5. | 00001E30: 53 54 41 20 48 52 43 54 52 4C 0D 20 4C 44 41 20 |STA HRCTRL. LDA | 00001E40: 48 52 4D 52 45 47 20 3B 42 59 54 20 41 54 20 24 |HRMREG ;BYT AT $| 00001E50: 32 30 30 30 0D 20 4F 52 41 20 23 24 30 38 20 3B |2000. ORA #$08 ;| 00001E60: 54 55 52 4E 20 4F 4E 20 42 49 54 20 33 0D 20 53 |TURN ON BIT 3. S| 00001E70: 54 41 20 48 52 4D 52 45 47 0D 20 4A 53 52 20 53 |TA HRMREG. JSR S| 00001E80: 45 54 43 4F 4C 20 3B 46 4F 52 43 45 20 42 4C 41 |ETCOL ;FORCE BLA| 00001E90: 43 4B 20 41 4E 44 20 47 52 45 45 4E 0D 20 4A 53 |CK AND GREEN. JS| 00001EA0: 52 20 43 4C 52 48 52 20 3B 46 4F 52 43 45 20 54 |R CLRHR ;FORCE T| 00001EB0: 4F 20 41 4C 4C 20 5A 45 52 4F 45 53 0D 20 4C 44 |O ALL ZEROES. LD| 00001EC0: 41 20 45 52 52 56 45 43 20 3B 52 45 4D 45 4D 42 |A ERRVEC ;REMEMB| 00001ED0: 45 52 20 53 59 53 54 45 4D 20 45 52 52 4F 52 20 |ER SYSTEM ERROR | 00001EE0: 56 45 43 54 4F 52 0D 20 53 54 41 20 45 52 56 45 |VECTOR. STA ERVE| 00001EF0: 43 0D 20 4C 44 41 20 45 52 52 56 45 43 2B 31 0D |C. LDA ERRVEC+1.| 00001F00: 20 53 54 41 20 45 52 56 45 43 2B 31 0D 20 4C 44 | STA ERVEC+1. LD| 00001F10: 41 20 23 3C 41 42 52 54 20 3B 53 45 54 20 55 50 |A #<ABRT ;SET UP| 00001F20: 20 4E 45 57 20 45 52 52 4F 52 20 52 45 43 4F 56 | NEW ERROR RECOV| 00001F30: 45 52 59 0D 20 53 54 41 20 45 52 52 56 45 43 0D |ERY. STA ERRVEC.| 00001F40: 20 4C 44 41 20 23 3E 41 42 52 54 0D 20 53 54 41 | LDA #>ABRT. STA| 00001F50: 20 45 52 52 56 45 43 2B 31 0D 20 52 54 53 0D 3B | ERRVEC+1. RTS.;| 00001F60: 0D 3B 48 52 52 45 53 54 20 2D 20 52 45 53 54 4F |.;HRREST - RESTO| 00001F70: 52 45 20 4E 4F 52 4D 41 4C 20 4D 4F 44 45 0D 3B |RE NORMAL MODE.;| 00001F80: 0D 48 52 52 45 53 54 20 4A 53 52 20 43 4C 52 48 |.HRREST JSR CLRH| 00001F90: 52 20 3B 43 4C 45 41 52 20 48 49 2D 52 45 53 0D |R ;CLEAR HI-RES.| 00001FA0: 20 4C 44 41 20 48 52 43 54 52 4C 20 3B 4D 4F 44 | LDA HRCTRL ;MOD| 00001FB0: 45 20 52 45 47 49 53 54 45 52 0D 20 41 4E 44 20 |E REGISTER. AND | 00001FC0: 23 25 31 31 30 31 31 31 31 31 20 3B 54 55 52 4E |#%11011111 ;TURN| 00001FD0: 20 4F 46 46 20 42 49 54 20 35 0D 20 53 54 41 20 | OFF BIT 5. STA | 00001FE0: 48 52 43 54 52 4C 0D 20 4C 44 41 20 48 52 4D 52 |HRCTRL. LDA HRMR| 00001FF0: 45 47 20 3B 4D 45 4D 4F 52 59 20 52 45 47 49 53 |EG ;MEMORY REGIS| 00002000: 54 45 52 0D 20 41 4E 44 20 23 25 31 31 31 31 30 |TER. AND #%11110| 00002010: 31 31 31 20 3B 54 55 52 4E 20 4F 46 46 20 42 49 |111 ;TURN OFF BI| 00002020: 54 20 33 0D 20 53 54 41 20 48 52 4D 52 45 47 0D |T 3. STA HRMREG.| 00002030: 20 4C 44 41 20 23 27 20 27 20 3B 46 49 4C 4C 20 | LDA #' ' ;FILL | 00002040: 53 43 52 45 45 4E 20 57 49 54 48 20 53 50 41 43 |SCREEN WITH SPAC| 00002050: 45 53 0D 20 4A 53 52 20 53 45 54 43 4C 30 0D 20 |ES. JSR SETCL0. | 00002060: 4C 44 41 20 45 52 56 45 43 20 3B 52 45 53 54 4F |LDA ERVEC ;RESTO| 00002070: 52 45 20 53 59 53 54 45 4D 20 45 52 52 4F 52 20 |RE SYSTEM ERROR | 00002080: 56 45 43 54 4F 52 0D 20 53 54 41 20 45 52 52 56 |VECTOR. STA ERRV| 00002090: 45 43 0D 20 4C 44 41 20 45 52 56 45 43 2B 31 0D |EC. LDA ERVEC+1.| 000020A0: 20 53 54 41 20 45 52 52 56 45 43 2B 31 0D 20 52 | STA ERRVEC+1. R| 000020B0: 54 53 0D 3B 0D 3B 47 45 54 56 41 4C 20 2D 20 47 |TS.;.;GETVAL - G| 000020C0: 45 54 20 50 41 52 41 4D 45 54 45 52 0D 3B 0D 47 |ET PARAMETER.;.G| 000020D0: 45 54 56 41 4C 20 4A 53 52 20 43 48 4B 43 4F 4D |ETVAL JSR CHKCOM| 000020E0: 20 3B 43 48 45 43 4B 20 46 4F 52 20 43 4F 4D 4D | ;CHECK FOR COMM| 000020F0: 41 0D 20 4A 53 52 20 45 56 41 45 58 50 20 3B 45 |A. JSR EVAEXP ;E| 00002100: 56 41 4C 55 41 54 45 20 45 58 50 52 45 53 53 49 |VALUATE EXPRESSI| 00002110: 4F 4E 0D 20 4A 53 52 20 46 4C 54 46 49 58 20 3B |ON. JSR FLTFIX ;| 00002120: 43 4F 4E 56 45 52 54 20 54 4F 20 49 4E 54 45 47 |CONVERT TO INTEG| 00002130: 45 52 20 49 4E 20 59 20 41 4E 44 20 41 0D 20 52 |ER IN Y AND A. R| 00002140: 54 53 0D 3B 0D 3B 45 4E 54 45 52 20 48 45 52 45 |TS.;.;ENTER HERE| 00002150: 20 49 46 20 46 52 4F 4D 20 42 41 53 49 43 0D 3B | IF FROM BASIC.;| 00002160: 0D 53 45 54 50 49 58 20 4A 53 52 20 48 52 4D 4F |.SETPIX JSR HRMO| 00002170: 56 45 0D 3B 0D 3B 45 4E 54 45 52 20 48 45 52 45 |VE.;.;ENTER HERE| 00002180: 20 49 46 20 58 31 2C 59 31 20 41 4C 52 45 41 44 | IF X1,Y1 ALREAD| 00002190: 59 20 53 45 54 0D 3B 0D 53 54 50 49 58 30 20 4C |Y SET.;.STPIX0 L| 000021A0: 44 59 20 23 30 0D 20 4C 44 41 20 28 42 59 54 29 |DY #0. LDA (BYT)| 000021B0: 2C 59 0D 20 4F 52 41 20 42 49 54 4E 4F 0D 20 53 |,Y. ORA BITNO. S| 000021C0: 54 41 20 28 42 59 54 29 2C 59 0D 20 52 54 53 0D |TA (BYT),Y. RTS.| 000021D0: 3B 0D 3B 45 52 52 4F 52 20 52 45 43 4F 56 45 52 |;.;ERROR RECOVER| 000021E0: 59 0D 3B 0D 41 42 52 54 20 50 48 41 20 3B 53 41 |Y.;.ABRT PHA ;SA| 000021F0: 56 45 20 52 45 47 53 0D 20 54 58 41 0D 20 50 48 |VE REGS. TXA. PH| 00002200: 41 0D 20 54 59 41 0D 20 50 48 41 0D 20 4A 53 52 |A. TYA. PHA. JSR| 00002210: 20 48 52 52 45 53 54 20 3B 52 45 53 54 4F 52 45 | HRREST ;RESTORE| 00002220: 20 54 4F 20 4E 4F 52 4D 41 4C 0D 20 50 4C 41 20 | TO NORMAL. PLA | 00002230: 3B 52 45 53 54 4F 52 45 20 52 45 47 53 0D 20 54 |;RESTORE REGS. T| 00002240: 41 59 0D 20 50 4C 41 0D 20 54 41 58 0D 20 50 4C |AY. PLA. TAX. PL| 00002250: 41 0D 20 4A 4D 50 20 28 45 52 52 56 45 43 29 20 |A. JMP (ERRVEC) | 00002260: 3B 45 52 52 4F 52 20 4D 45 53 53 41 47 45 0D 3B |;ERROR MESSAGE.;| 00002270: 0D 4D 4F 56 54 41 42 20 2E 57 4F 52 44 20 52 49 |.MOVTAB .WORD RI| 00002280: 47 48 54 2D 31 0D 20 2E 57 4F 52 44 20 55 52 2D |GHT-1. .WORD UR-| 00002290: 31 0D 20 2E 57 4F 52 44 20 4C 45 46 54 2D 31 0D |1. .WORD LEFT-1.| 000022A0: 20 2E 57 4F 52 44 20 55 4C 2D 31 0D 20 2E 57 4F | .WORD UL-1. .WO| 000022B0: 52 44 20 52 49 47 48 54 2D 31 0D 20 2E 57 4F 52 |RD RIGHT-1. .WOR| 000022C0: 44 20 4C 52 2D 31 0D 20 2E 57 4F 52 44 20 4C 45 |D LR-1. .WORD LE| 000022D0: 46 54 2D 31 0D 20 2E 57 4F 52 44 20 4C 4C 2D 31 |FT-1. .WORD LL-1| 000022E0: 0D 20 2E 57 4F 52 44 20 55 50 2D 31 0D 20 2E 57 |. .WORD UP-1. .W| 000022F0: 4F 52 44 20 55 52 2D 31 0D 20 2E 57 4F 52 44 20 |ORD UR-1. .WORD | 00002300: 55 50 2D 31 0D 20 2E 57 4F 52 44 20 55 4C 2D 31 |UP-1. .WORD UL-1| 00002310: 0D 20 2E 57 4F 52 44 20 44 4F 57 4E 2D 31 0D 20 |. .WORD DOWN-1. | 00002320: 2E 57 4F 52 44 20 4C 52 2D 31 0D 20 2E 57 4F 52 |.WORD LR-1. .WOR| 00002330: 44 20 44 4F 57 4E 2D 31 0D 20 2E 57 4F 52 44 20 |D DOWN-1. .WORD | 00002340: 4C 4C 2D 31 0D 3B 0D 4D 53 4B 54 42 20 2E 42 59 |LL-1.;.MSKTB .BY| 00002350: 54 45 20 24 38 30 2C 24 34 30 2C 24 32 30 2C 24 |TE $80,$40,$20,$| 00002360: 31 30 0D 20 2E 42 59 54 45 20 24 30 38 2C 24 30 |10. .BYTE $08,$0| 00002370: 34 2C 24 30 32 2C 24 30 31 0D 3B 0D 2E 45 4E 44 |4,$02,$01.;..END| 00002380: 0D |. |
.OPT NOL.;.;** HRSUPP/64 **.;.ORIGIN = $
6000.;.;** EQUATES **.;.;SYSTEM ROUTINES
.;.ERROR = $A437 ;PRINT ERROR MESSAGE.EV
AEXP = $AD9E ;EVALUATE EXPRESSION.CHKCOM
= $AEFD ;CHECK FOR COMMA.FLTFIX = $B1AA
;CONVERT TO FIXED IN Y (LOW) AND A (HIG
H).;.;VECTORS.;.ERRVEC = $0300 ;ERROR RO
UTINE.WARMV = $0302 ;BASIC WARM START.;.
;HI-RES STUFF.;.VIC = $D000 ;ADDRESS OF
VIC CHIP.HRCTRL = VIC+17 ;MODE CONTROL.H
RMREG = VIC+24 ;MEMORY CONTROL.;.SCREEN
= $0400 ;1K SCREEN.SCREND = SCREEN+999 ;
LAST SCREEN LOC'N.BASE = $2000 ;START OF
8K BYT.HRLAST = BASE+7999 ;LAST LOC'N.R
AM = $033C ;USE CASSETTE BUFFER.;.;**ZER
O PAGE**.;.BYT = $FD ;BYT POINTER.;.*=RA
M.;.X1 *=*+2 ;X COORDINATE (0 - 319).X2
*=*+2.Y1 *=*+2 ;Y COORDINATE (0 - 199).Y
2 *=*+2.BITNO *=*+1 ;ON BIT IS PIXEL.DEL
TX *=*+2 ;X2-X1.DELTY *=*+2 ;Y2-Y1.E *=*
+2.T *=*+2.C *=*+2.I *=*+1 ;DIRECTION PO
INTER.TEMP *=*+2.ERVEC *=*+2 ;HOLDS SYST
EM ERROR VECTOR.;.;CONSTANTS.;.XMAX=320.
YMAX=200.COLS=40 ;NUMBER OF COLUMNS/ROW.
COLOR=$50 ;FOREGROUND/BACKGROUND = BLACK
/GREEN.;.*=ORIGIN.;.;JUMP TABLE FOR COVE
NIENT ENTRY POINTS.;.JINIT JMP HRINIT ;I
NITIALIZE.JREST JMP HRREST ;RESTORE.JCLR
JMP CLRHR ;CLEAR SCREEN.JDRAW JMP VECPL
T ;DRAW STRAIGHT LINE.JSETPX JMP SETPIX
;TURN ON PIXEL.;.;FALL THROUGH TO MOVE R
OUTINE.;.;HRADDR - GIVEN X-COORD (2 BYTE
S).;AND Y-COORD (1 BYTE).;CALCULATE BYT
ADDRESS AND BITNO.;.;CLOBBERS X, LEAVES
Y=0.;.;ENTER HERE IF FROM BASIC.;.HRMOVE
JSR GETVAL ;GET X1. STY X1. STY X2 ;FOR
RNGCHK. STA X1+1. STA X2+1. JSR GETVAL
;GET Y1. STY Y1. STY Y2. STA Y2+1. JSR R
NGCHK.;.;ENTER HERE IF X1, Y1 ARE SET.;.
HRADDR LDA #0 ;SET HIGH BYTE TO ZERO. ST
A BYT+1. SEC ;FORM 199-Y1. LDA #YMAX-1.
SBC Y1. PHA ;SAVE RESULT ON STACK. AND #
$F8 ;FORM ROW #. ASL A ;MULT BY 2. ROL B
YT+1. ASL A ;MULT BY 4. ROL BYT+1. ASL A
;MULT BY 8. ROL BYT+1. PHA ;SAVE ON STA
CK. STA TEMP ;AND IN TEMP. LDA BYT+1. ST
A TEMP+1 ;TEMP HAS 8*Y. PLA ;RESTORE A.
ASL A ;MULT BY 16. ROL BYT+1. ASL A ;MUL
T BY 32. ROL BYT+1 ;(CARRY STILL CLEAR).
ADC TEMP ;FORM 32+8 = 40*. STA BYT ;INT
O BYT. LDA BYT+1. ADC TEMP+1. STA BYT+1.
LDA X1 ;NOW ADD CHAR. AND #$F8. ADC BYT
. STA BYT. LDA X1+1. ADC BYT+1. STA BYT+
1 ;(CARRY STILL CLEAR). PLA ;NOW ADD LIN
E. AND #7 ;BY MASKING HIGH BITS. ADC BYT
. STA BYT. LDA BYT+1 ;FINISH BY ADDING B
ASE. ADC #>BASE. STA BYT+1. LDA X1 ;SET
BITNO. AND #7 ;IS LOW 3 BITS. TAX ;AND I
NDEX TO TABLE. LDA MSKTB,X. STA BITNO. R
TS ;BYT AND BITNO NOW SET.;.;*** FASTPLO
T ***.;.;GRAPHIC SUBROUTINE FOR LINE DRA
WING.;ON 320*200 HI-RES MEMORY.;.;ORIGIN
ALLY WRITTEN AS VECTOR GENERATOR.;FOR HO
USTON INSTRUMENT HIPLOT.;DIGITAL INCREME
NTAL PLOTTER.;.;MORE EFFICIENT ALGORITHM
BY W. MCWORTER.;IN BYTE MAY 1981, P202.
;.;RE-WRITTEN FOR MTU VISIBLE MEMORY (TM
).;BY F. COVITZ, AUG. 1981.;REVISED NOV.
1982 FOR CBM-64.;.;.;******************
***********.;* TYPO IN ORIGINAL LETTER
*.;* *.;* IT
READS; A$="RQVWPS...." *.;*
* *.;*SHOULD BE; A$="RQVWRS.
..." *.;* *.;*
****************************.;.;COME IN
WITH X1,Y1 AND X2,Y2.;AND FIRST PIXEL SE
T.;I.E. BYT,BYT+1, AND BITNO ARE SET.;VI
A CALL TO PIXADR.;ROUTINE DRAWS BEST STR
AIGHT LINE.;LEAVES WITH X1_X2,Y1_Y2.;.;L
EAVES WITH Y=0, X CLOBBERED.;ROUTINE CHE
CKS FOR OVERFLOW.;.;**VECPLT**.;.;ENTER
HERE FROM BASIC.;.VECPLT JSR GETVAL ;GET
X-COORD. STY X2. STA X2+1. JSR GETVAL ;
GET Y-COORD. STY Y2. STA Y2+1.;.;ENTER H
ERE IF X2, Y2 ALREADY SET.;.VECPL1 JSR R
NGCHK ;CHECK X2,Y2 OVERFLOW. SEC ;FORM D
ELTX (SIGNED). LDA X2. SBC X1. STA DELTX
. LDA X2+1. SBC X1+1. STA DELTX+1. SEC ;
FORM DELTY (SIGNED). LDA Y2. SBC Y1. STA
DELTY. LDA Y2+1. SBC Y1+1.;. STA DELTY+
1. LDA X2 ;X1,Y1_X2,Y2. STA X1. LDA X2+1
. STA X1+1. LDA Y2. STA Y1. LDA Y2+1. ST
A Y1+1.;.;NOW HAVE DELTX,DELTY (SIGNED).
;.;** MOVE **.;.;GIVEN DELTX, DELTY.;DRA
W/MOVE THE BEST STRAIGHT LINE.;.MOVE LDA
#0 ;DETERMINE OCTANT. STA I. BIT DELTX+
1 ;CHECK DELTX < 0. BPL MV1. LDA DELTX ;
CHANGE SIGN. JSR COMPL. STA DELTX. LDA D
ELTX+1. JSR COMPH. STA DELTX+1. LDA #2.
STA I.MV1 BIT DELTY+1 ;CHECK DELTY < 0.
BPL MV2. LDA DELTY. JSR COMPL. STA DELTY
. LDA DELTY+1. JSR COMPH. STA DELTY+1. C
LC. LDA I. ADC #4. STA I.MV2 LDX DELTX ;
CHECK DELTX-DELTY. CPX DELTY ;SET CARRY
FOR LOW BYTE. LDA DELTX+1 ;NOW HIGH BYTE
. TAY ;SET Y = DELTX. SBC DELTY+1. BPL M
V3. LDA DELTY ;INTERCHANGE DELTX,Y. STA
DELTX. LDA DELTY+1. STA DELTX+1. STX DEL
TY. STY DELTY+1. CLC. LDA I. ADC #8. STA
I.MV3 LDA DELTX ;FORM E=-DELTX/2. JSR C
OMPL. STA E. LDA DELTX+1. JSR COMPH. STA
E+1. SEC ;CHECK FOR NEGATIVE. BMI MV4.
CLC.MV4 ROR E+1 ;DIVIDE BY 2. ROR E. LDY
#0 ;SET Y=0. STY C ;SET COUNTER TO ZERO
. STY C+1. BEQ MV7 ;ABSOLUTE BRANCH.;.;*
* MAIN DRAWING LOOP **.;.MV5 LDX I ;GET
DIRECTION IN X. CLC ;FORM E=E+DELTY. LDA
E. ADC DELTY. STA E ;FIRST LOW BYTE. LD
A E+1. ADC DELTY+1. STA E+1. BMI MV6. SE
C ;FORM E=E-DELTX. LDA E. SBC DELTX. STA
E. LDA E+1. SBC DELTX+1. STA E+1. INX ;
X BUMPED UP ONE.MV6 JSR OUTPLT ;OUTPUT O
NE MOVE. INC C ;BUMP COUNTER UP 1. BNE M
V7. INC C+1.;.;ENTER HERE ON 1ST PASS.;.
MV7 LDA (BYT),Y ;TURN ON A POINT. ORA BI
TNO. STA (BYT),Y. LDA C ;DONE WHEN C > =
DELTX. CMP DELTX. LDA C+1. SBC DELTX+1.
BCC MV5. RTS ;DONE.;.;** OUTPLT **.;.;O
UTPUT AN ELEMENTARY MOVE.;.OUTPLT TXA. A
SL A ;MULT BY TWO TO GET INDEX. TAX. LDA
MOVTAB+1,X ;GET THE VECTOR. PHA ;HIGH B
YTE ON STACK. LDA MOVTAB,X. PHA ;LOW BYT
E ON STACK. RTS ;DO COMPUTED JUMP.;.;RET
URN VIA RTS TO JSR OUTPLT(1).;.;**RNGCHK
**.;.;CHECK X2, Y2 FOR OVERFLOW.;RETURN
TO CALLING PROGRAM ON OVERFLOW.;.RNGCHK
LDA X2 ;CHECK X2, LOW. CMP #<XMAX. LDA X
2+1 ;CHECK HIGH BYTE. SBC #>XMAX. BCS RN
G2 ;X2 > XMAX, SO ABORT.RNG1 LDA Y2 ;CHE
CK Y2, LOW. CMP #<YMAX. LDA Y2+1 ;CHECK
HIGH BYTE. SBC #>YMAX. BCC RNG3 ;Y2 < YM
AX, SO OK.RNG2 JSR HRREST ;RESTORE NORMA
L. LDX #14 ;ILLEGAL QUANTITY ERROR. JMP
(ERRVEC) ;FUNNEL THROUGH ERROR ROUTINE.R
NG3 RTS.;.;COMPL,H.;.;FORM COMPLEMENT OF
SIGNED NUMBER.;1ST ENTER AT COMPL FOR L
OW BYTE.;THEN ENTER AT COMPH FOR HIGH BY
TE.;.;ANSWER IN A.;.COMPL SEC ;FOR LOW B
YTE.COMPH EOR #$FF ;COMPLEMENT. ADC #0 ;
ADD CARRY STATE. RTS.;.LL JSR LEFT ;GO L
EFT AND FALL THROUGH TO DOWN.DOWN LDA BY
T. AND #7 ;EXAM LOWEST 3 BITS. EOR #7 ;F
LIP THEM. BEQ DN2 ;ORIGINAL BYTE WAS XXX
X111. INC BYT ;ELSE JUST BUMP BY 1. BNE
DN3. INC BYT+1. BNE DN3 ;BRANCH ALWAYS.D
N2 CLC ;ADD 320-7. LDA BYT. ADC #<313. S
TA BYT. LDA BYT+1. ADC #>313. STA BYT+1.
DN3 RTS.;.UR JSR RIGHT ;FIRST RIGHT THEN
FALL THROUGH TO UP.UP LDA BYT. AND #7 ;
CHECK LOW BITS. BNE UP1 ;IF BYTE WAS NOT
XXXXX000. SEC ;ELSE SUBTRACT 320-7. LDA
BYT. SBC #<313. STA BYT. LDA BYT+1. SBC
#>313. STA BYT+1. BNE UP3 ;BRANCH ALWAY
S.UP1 LDA BYT ;DECREMENT BY 1. BNE UP2.
DEC BYT+1.UP2 DEC BYT.UP3 RTS.;.UL JSR U
P ;1ST UP THEN FALL THROUGH TO LEFT.LEFT
ASL BITNO ;GO 1 PIXEL LEFT. BCC LF2 ;NO
CORRECTION ON CARRY CLEAR. ROL BITNO ;S
ET BITNO=1 AND CLEAR CARRY. LDA BYT. SBC
#7 ;(-8 SINCE CARRY IS CLEAR). STA BYT.
BCS LF2. DEC BYT+1.LF2 RTS.;.LR JSR DOW
N ;1ST DOWN THEN FALL THROUGH TO RIGHT.R
IGHT LSR BITNO ;GO 1 PIXEL RIGHT. BCC RG
T1. ROR BITNO ;SET BITNO=$80 AND CLEAR C
ARRY. LDA BYT. ADC #8 ;ONE CELL RIGHT. S
TA BYT. BCC RGT1. INC BYT+1.RGT1 RTS.;.;
CLRHR.;.;CLEARS EXACTLY 8000 BYTES.;LEAV
ES Y=X=0.;.CLRHR LDA #>HRLAST. STA BYT+1
;INIT. POINTER TO LAST PAGE. LDA #0. ST
A BYT. TAY. STA BYT. STA (BYT),Y ;THIS O
NE DONE SEPARATELY. LDY #<HRLAST ;START
AT BASE+$1F3F. LDX #$20 ;X KEEPS TRACK O
F PAGES.CLRHR1 STA (BYT),Y ;PUT IN 0'S.
DEY. BNE CLRHR1. DEC BYT+1. DEX. BNE CLR
HR1 ;DO 32 PAGES. RTS.;.;SETCOL.;.;SET F
OREGROUND/BACKGROUND COLOR.;.SETCOL LDA
#COLOR ;IN 2 NYBBLES.SETCL0 LDX #0.SETCL
1 STA SCREEN,X ;DO 4 PAGES. STA SCREEN+$
0100,X. STA SCREEN+$0200,X. INX. BNE SET
CL1. LDX #<SCREND+1 ;DO LAST PAGE.SETCL2
STA SCREEN+$02FF,X. DEX. BNE SETCL2. RT
S.;.;HRINIT - SETS UP HI-RES.;.HRINIT LD
A HRCTRL ;HI-RES MODE. ORA #$20 ;TURN ON
BIT 5. STA HRCTRL. LDA HRMREG ;BYT AT $
2000. ORA #$08 ;TURN ON BIT 3. STA HRMRE
G. JSR SETCOL ;FORCE BLACK AND GREEN. JS
R CLRHR ;FORCE TO ALL ZEROES. LDA ERRVEC
;REMEMBER SYSTEM ERROR VECTOR. STA ERVE
C. LDA ERRVEC+1. STA ERVEC+1. LDA #<ABRT
;SET UP NEW ERROR RECOVERY. STA ERRVEC.
LDA #>ABRT. STA ERRVEC+1. RTS.;.;HRREST
- RESTORE NORMAL MODE.;.HRREST JSR CLRH
R ;CLEAR HI-RES. LDA HRCTRL ;MODE REGIST
ER. AND #%11011111 ;TURN OFF BIT 5. STA
HRCTRL. LDA HRMREG ;MEMORY REGISTER. AND
#%11110111 ;TURN OFF BIT 3. STA HRMREG.
LDA #' ' ;FILL SCREEN WITH SPACES. JSR
SETCL0. LDA ERVEC ;RESTORE SYSTEM ERROR
VECTOR. STA ERRVEC. LDA ERVEC+1. STA ERR
VEC+1. RTS.;.;GETVAL - GET PARAMETER.;.G
ETVAL JSR CHKCOM ;CHECK FOR COMMA. JSR E
VAEXP ;EVALUATE EXPRESSION. JSR FLTFIX ;
CONVERT TO INTEGER IN Y AND A. RTS.;.;EN
TER HERE IF FROM BASIC.;.SETPIX JSR HRMO
VE.;.;ENTER HERE IF X1,Y1 ALREADY SET.;.
STPIX0 LDY #0. LDA (BYT),Y. ORA BITNO. S
TA (BYT),Y. RTS.;.;ERROR RECOVERY.;.ABRT
PHA ;SAVE REGS. TXA. PHA. TYA. PHA. JSR
HRREST ;RESTORE TO NORMAL. PLA ;RESTORE
REGS. TAY. PLA. TAX. PLA. JMP (ERRVEC)
;ERROR MESSAGE.;.MOVTAB .WORD RIGHT-1. .
WORD UR-1. .WORD LEFT-1. .WORD UL-1. .WO
RD RIGHT-1. .WORD LR-1. .WORD LEFT-1. .W
ORD LL-1. .WORD UP-1. .WORD UR-1. .WORD
UP-1. .WORD UL-1. .WORD DOWN-1. .WORD LR
-1. .WORD DOWN-1. .WORD LL-1.;.MSKTB .BY
TE $80,$40,$20,$10. .BYTE $08,$04,$02,$0
1.;..END.
×
C64 Image
> CLICK IMAGE PREVIEW FOR FULL MODAL