INPUTDRVSRC.TXT
FILE INFORMATION
FILENAME(S): INPUTDRVSRC.TXT
FILE TYPE(S): SEQ
FILE SIZE: 13.9K
FIRST SEEN: 2025-11-30 18:24:05
APPEARS ON: 1 disk(s)
FILE HASH
b92e82967eb5ca34dcfb0bfb16e935e34678112ebab60f4ca1d4697a193005bb
FOUND ON DISKS (1 DISKS)
| DISK TITLE | FILENAME | FILE TYPE | COLLECTION | TRACK | SECTOR | ACTIONS |
|---|---|---|---|---|---|---|
| GO64 08 99 | INPUTDRVSRC.TXT | SEQ | Sailor, Pbv | 29 | 2 | DOWNLOAD FILE |
FILE CONTENT & ANALYSIS
00000000: 3B C1 C3 CD C5 20 30 2E 30 37 0D 0D 0D 3B 20 2D |;.... 0.07...; -|
00000010: 2D 2D 20 C3 4F 4E 46 49 47 55 52 41 42 4C 45 20 |-- .ONFIGURABLE |
00000020: 56 41 4C 55 45 53 0D 0D 3B 20 D3 54 41 52 54 20 |VALUES..; .TART |
00000030: 41 44 44 52 45 53 53 0D 2A 3D 24 43 30 30 30 3B |ADDRESS.*=$C000;|
00000040: 20 C3 36 34 20 56 41 4C 55 45 0D 3B 2A 3D 24 30 | .64 VALUE.;*=$0|
00000050: 43 30 30 3B 20 C3 31 32 38 20 56 41 4C 55 45 0D |C00; .128 VALUE.|
00000060: 0D 3B 20 CF 55 54 50 55 54 20 46 49 4C 45 20 4E |.; .UTPUT FILE N|
00000070: 41 4D 45 0D 21 54 4F 20 22 49 4E 50 55 54 44 52 |AME.!TO "INPUTDR|
00000080: 56 36 34 2E 42 49 4E 22 3B 20 C3 36 34 20 46 49 |V64.BIN"; .64 FI|
00000090: 4C 45 20 4E 41 4D 45 0D 3B 21 54 4F 20 22 49 4E |LE NAME.;!TO "IN|
000000A0: 50 55 54 44 52 56 31 32 38 2E 42 49 4E 22 3B 20 |PUTDRV128.BIN"; |
000000B0: C3 31 32 38 20 46 49 4C 45 20 4E 41 4D 45 0D 0D |.128 FILE NAME..|
000000C0: 3B 20 D0 4F 49 4E 54 45 52 27 53 20 4D 41 58 49 |; .OINTER'S MAXI|
000000D0: 4D 55 4D 20 43 4F 4F 52 44 49 4E 41 54 45 53 0D |MUM COORDINATES.|
000000E0: CD 41 58 49 4D 55 4D C3 4F 4F 52 44 49 4E 41 54 |.AXIMUM.OORDINAT|
000000F0: 45 D8 20 3D 20 33 31 39 3B 20 D6 C9 C3 20 56 41 |E. = 319; ... VA|
00000100: 4C 55 45 0D 3B CD 41 58 49 4D 55 4D C3 4F 4F 52 |LUE.;.AXIMUM.OOR|
00000110: 44 49 4E 41 54 45 D8 20 3D 20 36 33 39 3B 20 D6 |DINATE. = 639; .|
00000120: C4 C3 20 56 41 4C 55 45 0D CD 41 58 49 4D 55 4D |.. VALUE..AXIMUM|
00000130: C3 4F 4F 52 44 49 4E 41 54 45 D9 20 3D 20 31 39 |.OORDINATE. = 19|
00000140: 39 0D 0D 3B 20 CD 41 58 49 4D 55 4D 20 53 54 45 |9..; .AXIMUM STE|
00000150: 50 20 53 49 5A 45 20 28 22 53 50 45 45 44 22 29 |P SIZE ("SPEED")|
00000160: 20 46 4F 52 0D 3B 20 4A 4F 59 53 54 49 43 4B 20 | FOR.; JOYSTICK |
00000170: 41 43 43 45 4C 45 52 41 54 49 4F 4E 20 52 4F 55 |ACCELERATION ROU|
00000180: 54 49 4E 45 2C 20 49 4E 0D 3B 20 50 49 58 45 4C |TINE, IN.; PIXEL|
00000190: 53 2E 0D CD 41 58 D3 54 45 50 20 3D 20 24 31 30 |S...AX.TEP = $10|
000001A0: 3B 20 28 4D 41 58 2E 20 24 37 46 29 0D 0D 3B 20 |; (MAX. $7F)..; |
000001B0: C4 49 53 54 41 4E 43 45 20 42 45 46 4F 52 45 20 |.ISTANCE BEFORE |
000001C0: 41 43 43 45 4C 45 52 41 54 49 4F 4E 20 53 54 41 |ACCELERATION STA|
000001D0: 52 54 53 2C 0D 3B 20 49 4E 20 50 49 58 45 4C 53 |RTS,.; IN PIXELS|
000001E0: 2E 0D CD 41 58 D4 49 4D 45 20 3D 20 24 30 34 3B |...AX.IME = $04;|
000001F0: 20 28 4D 41 58 2E 20 24 37 46 29 0D 0D 3B 20 D3 | (MAX. $7F)..; .|
00000200: 50 52 49 54 45 53 20 54 4F 20 55 53 45 20 46 4F |PRITES TO USE FO|
00000210: 52 20 4F 56 45 52 4C 41 59 20 50 4F 49 4E 54 45 |R OVERLAY POINTE|
00000220: 52 0D D3 50 52 49 54 45 5F C1 20 3D 20 30 0D D3 |R..PRITE_. = 0..|
00000230: 50 52 49 54 45 5F C2 20 3D 20 31 0D 0D 3B 20 C3 |PRITE_. = 1..; .|
00000240: 4F 4F 52 44 49 4E 41 54 45 53 20 4F 46 20 22 50 |OORDINATES OF "P|
00000250: 4F 49 4E 54 45 52 20 50 49 58 45 4C 22 20 57 49 |OINTER PIXEL" WI|
00000260: 54 48 49 4E 0D 3B 20 50 4F 49 4E 54 45 52 20 53 |THIN.; POINTER S|
00000270: 50 52 49 54 45 53 3B 20 41 44 4A 55 53 54 20 54 |PRITES; ADJUST T|
00000280: 48 45 53 45 20 49 46 20 59 4F 55 0D 3B 20 55 53 |HESE IF YOU.; US|
00000290: 45 20 44 49 46 46 45 52 45 4E 54 20 53 50 52 49 |E DIFFERENT SPRI|
000002A0: 54 45 53 2E 0D 3B 20 28 30 2C 30 29 20 49 53 20 |TES..; (0,0) IS |
000002B0: 53 50 52 49 54 45 27 53 20 55 50 50 45 52 20 4C |SPRITE'S UPPER L|
000002C0: 45 46 54 20 50 49 58 45 4C 2E 0D D3 50 52 49 54 |EFT PIXEL...PRIT|
000002D0: 45 5F C8 4F 54 53 50 4F 54 D8 20 3D 20 31 0D D3 |E_.OTSPOT. = 1..|
000002E0: 50 52 49 54 45 5F C8 4F 54 53 50 4F 54 D9 20 3D |PRITE_.OTSPOT. =|
000002F0: 20 31 0D 0D 3B 20 C2 41 53 45 20 4F 46 20 D6 C9 | 1..; .ASE OF ..|
00000300: C3 20 52 45 47 49 53 54 45 52 53 20 54 4F 20 57 |. REGISTERS TO W|
00000310: 52 49 54 45 20 54 4F 2E 0D D6 C9 C3 5F C2 41 53 |RITE TO....._.AS|
00000320: 45 20 3D 20 24 44 30 30 30 3B 20 C3 36 34 20 56 |E = $D000; .64 V|
00000330: 41 4C 55 45 0D 3B D6 C9 C3 5F C2 41 53 45 20 3D |ALUE.;..._.ASE =|
00000340: 20 24 31 31 44 36 3B 20 C3 31 32 38 20 56 41 4C | $11D6; .128 VAL|
00000350: 55 45 2C 20 4C 4F 43 41 54 49 4F 4E 0D 3B 20 4F |UE, LOCATION.; O|
00000360: 46 20 4D 49 52 52 4F 52 20 52 45 47 49 53 54 45 |F MIRROR REGISTE|
00000370: 52 53 2E 0D 0D 3B 20 CC 4F 43 41 54 49 4F 4E 53 |RS...; .OCATIONS|
00000380: 20 54 4F 20 53 54 4F 52 45 20 42 55 54 54 4F 4E | TO STORE BUTTON|
00000390: 20 53 54 41 54 45 53 2C 0D 3B 20 24 46 46 20 3D | STATES,.; $FF =|
000003A0: 20 50 52 45 53 53 45 44 2C 20 24 30 30 20 3D 20 | PRESSED, $00 = |
000003B0: 4E 4F 54 20 50 52 45 53 53 45 44 2E 0D 3B 20 CD |NOT PRESSED..; .|
000003C0: 4F 55 53 45 20 55 53 45 53 20 42 4F 54 48 20 42 |OUSE USES BOTH B|
000003D0: 55 54 54 4F 4E 53 2C 20 4A 4F 59 53 54 49 43 4B |UTTONS, JOYSTICK|
000003E0: 0D 3B 20 4F 4E 4C 59 20 55 53 45 53 20 22 CC 45 |.; ONLY USES ".E|
000003F0: 46 54 C2 55 54 54 4F 4E 22 2E 0D CC 45 46 54 C2 |FT.UTTON"...EFT.|
00000400: 55 54 54 4F 4E 20 20 3D 20 24 41 34 3B 20 C3 36 |UTTON = $A4; .6|
00000410: 34 20 56 41 4C 55 45 0D D2 49 47 48 54 C2 55 54 |4 VALUE..IGHT.UT|
00000420: 54 4F 4E 20 3D 20 24 41 35 3B 20 C3 36 34 20 56 |TON = $A5; .64 V|
00000430: 41 4C 55 45 0D 3B CC 45 46 54 C2 55 54 54 4F 4E |ALUE.;.EFT.UTTON|
00000440: 20 20 3D 20 24 46 41 3B 20 C3 31 32 38 20 56 41 | = $FA; .128 VA|
00000450: 4C 55 45 0D 3B D2 49 47 48 54 C2 55 54 54 4F 4E |LUE.;.IGHT.UTTON|
00000460: 20 3D 20 24 46 46 3B 20 C3 31 32 38 20 56 41 4C | = $FF; .128 VAL|
00000470: 55 45 0D 0D 3B 20 CC 4F 43 41 54 49 4F 4E 20 54 |UE..; .OCATION T|
00000480: 4F 20 53 54 4F 52 45 20 50 4F 49 4E 54 45 52 27 |O STORE POINTER'|
00000490: 53 20 43 55 52 52 45 4E 54 0D 3B 20 50 49 58 45 |S CURRENT.; PIXE|
000004A0: 4C 20 43 4F 4F 52 44 49 4E 41 54 45 53 2E 20 D4 |L COORDINATES. .|
000004B0: 48 45 20 44 52 49 56 45 52 20 43 4F 44 45 0D 3B |HE DRIVER CODE.;|
000004C0: 20 52 45 4C 49 45 53 20 4F 4E 20 48 41 56 49 4E | RELIES ON HAVIN|
000004D0: 47 20 2A 46 4F 55 52 20 43 4F 4E 53 45 43 55 54 |G *FOUR CONSECUT|
000004E0: 49 56 45 2A 0D 3B 20 42 59 54 45 53 3A 0D 3B 20 |IVE*.; BYTES:.; |
000004F0: 58 20 4C 4F 57 2C 20 58 20 48 49 47 48 2C 20 59 |X LOW, X HIGH, Y|
00000500: 20 4C 4F 57 2C 20 59 20 48 49 47 48 2E 0D C3 4F | LOW, Y HIGH...O|
00000510: 4F 52 44 49 4E 41 54 45 53 20 3D 20 24 46 42 3B |ORDINATES = $FB;|
00000520: 20 24 46 42 2D 24 46 45 0D 0D 3B 20 CC 4F 43 41 | $FB-$FE..; .OCA|
00000530: 54 49 4F 4E 20 54 4F 20 53 54 4F 52 45 20 50 4F |TION TO STORE PO|
00000540: 49 4E 54 45 52 27 53 20 43 55 52 52 45 4E 54 0D |INTER'S CURRENT.|
00000550: 3B 20 43 48 41 52 41 43 54 45 52 20 43 4F 4F 52 |; CHARACTER COOR|
00000560: 44 49 4E 41 54 45 53 2E 0D C3 48 41 52 D8 20 3D |DINATES...HAR. =|
00000570: 20 24 42 33 3B 20 C3 36 34 20 56 41 4C 55 45 0D | $B3; .64 VALUE.|
00000580: C3 48 41 52 D9 20 3D 20 24 42 34 3B 20 C3 36 34 |.HAR. = $B4; .64|
00000590: 20 56 41 4C 55 45 0D 3B C3 48 41 52 D8 20 3D 20 | VALUE.;.HAR. = |
000005A0: 24 39 42 3B 20 C3 31 32 38 20 56 41 4C 55 45 0D |$9B; .128 VALUE.|
000005B0: 3B C3 48 41 52 D9 20 3D 20 24 39 43 3B 20 C3 31 |;.HAR. = $9C; .1|
000005C0: 32 38 20 56 41 4C 55 45 0D 0D 0D 3B 20 2D 2D 2D |28 VALUE...; ---|
000005D0: 20 D3 59 53 54 45 4D 20 43 4F 4E 53 54 41 4E 54 | .YSTEM CONSTANT|
000005E0: 53 0D 0D 3B 20 C9 4E 54 45 52 52 55 50 54 20 56 |S..; .NTERRUPT V|
000005F0: 45 43 54 4F 52 0D 53 59 53 5F 49 49 52 51 20 3D |ECTOR.SYS_IIRQ =|
00000600: 20 24 30 33 31 34 0D 0D 3B 20 C9 2F CF 20 52 45 | $0314..; ./. RE|
00000610: 47 49 53 54 45 52 53 0D 53 49 44 5F 50 4F 54 20 |GISTERS.SID_POT |
00000620: 20 20 3D 20 24 44 34 31 39 0D 43 49 41 31 5F 50 | = $D419.CIA1_P|
00000630: 52 41 20 20 3D 20 24 44 43 30 30 0D 43 49 41 31 |RA = $DC00.CIA1|
00000640: 5F 50 52 42 20 20 3D 20 24 44 43 30 31 0D 43 49 |_PRB = $DC01.CI|
00000650: 41 31 5F 44 44 52 42 20 3D 20 24 44 43 30 33 0D |A1_DDRB = $DC03.|
00000660: 3B 4D 4D 55 5F 43 52 20 20 20 20 3D 20 24 46 46 |;MMU_CR = $FF|
00000670: 30 30 3B 20 C3 31 32 38 20 4F 4E 4C 59 0D 0D 0D |00; .128 ONLY...|
00000680: 3B 20 2D 2D 2D 20 CC 41 42 45 4C 20 44 45 46 49 |; --- .ABEL DEFI|
00000690: 4E 49 54 49 4F 4E 53 0D 0D 3B 20 CE 45 57 20 4E |NITIONS..; .EW N|
000006A0: 41 4D 45 53 20 46 4F 52 20 53 4F 4D 45 20 50 52 |AMES FOR SOME PR|
000006B0: 45 43 41 4C 43 55 4C 41 54 45 44 0D 3B 20 56 41 |ECALCULATED.; VA|
000006C0: 4C 55 45 53 2C 20 4F 4E 4C 59 20 54 4F 20 49 4D |LUES, ONLY TO IM|
000006D0: 50 52 4F 56 45 20 52 45 41 44 41 42 49 4C 49 54 |PROVE READABILIT|
000006E0: 59 2E 0D 3B 20 C4 4F 4E 27 54 20 43 48 41 4E 47 |Y..; .ON'T CHANG|
000006F0: 45 20 54 48 45 53 45 2E 0D D0 4F 49 4E 54 45 52 |E THESE...OINTER|
00000700: D8 4E 4F 57 20 3D 20 C3 4F 4F 52 44 49 4E 41 54 |.NOW = .OORDINAT|
00000710: 45 53 0D D0 4F 49 4E 54 45 52 D9 4E 4F 57 20 3D |ES..OINTER.NOW =|
00000720: 20 C3 4F 4F 52 44 49 4E 41 54 45 53 2B 32 0D D3 | .OORDINATES+2..|
00000730: 50 52 49 54 45 C1 5F D8 20 3D 20 D6 C9 C3 5F C2 |PRITE._. = ..._.|
00000740: 41 53 45 2B 32 2A D3 50 52 49 54 45 5F C1 0D D3 |ASE+2*.PRITE_...|
00000750: 50 52 49 54 45 C1 5F D9 20 3D 20 D6 C9 C3 5F C2 |PRITE._. = ..._.|
00000760: 41 53 45 2B 32 2A D3 50 52 49 54 45 5F C1 2B 31 |ASE+2*.PRITE_.+1|
00000770: 0D D3 50 52 49 54 45 C2 5F D8 20 3D 20 D6 C9 C3 |..PRITE._. = ...|
00000780: 5F C2 41 53 45 2B 32 2A D3 50 52 49 54 45 5F C2 |_.ASE+2*.PRITE_.|
00000790: 0D D3 50 52 49 54 45 C2 5F D9 20 3D 20 D6 C9 C3 |..PRITE._. = ...|
000007A0: 5F C2 41 53 45 2B 32 2A D3 50 52 49 54 45 5F C2 |_.ASE+2*.PRITE_.|
000007B0: 2B 31 0D D3 50 52 49 54 45 53 5F CF C6 20 3D 20 |+1..PRITES_.. = |
000007C0: D6 C9 C3 5F C2 41 53 45 2B 31 36 3B 20 D8 20 CF |..._.ASE+16; . .|
000007D0: 56 45 52 46 4C 4F 57 0D 3B 20 D4 48 45 20 43 48 |VERFLOW.; .HE CH|
000007E0: 41 52 41 43 54 45 52 20 22 5E 22 20 49 4E 20 54 |ARACTER "^" IN T|
000007F0: 48 45 20 46 4F 4C 4C 4F 57 49 4E 47 0D 3B 20 43 |HE FOLLOWING.; C|
00000800: 41 4C 43 55 4C 41 54 49 4F 4E 20 4D 45 41 4E 53 |ALCULATION MEANS|
00000810: 20 22 54 4F 20 54 48 45 20 50 4F 57 45 52 20 4F | "TO THE POWER O|
00000820: 46 22 2E 0D 3B 20 C9 54 20 49 53 20 C1 C3 CD C5 |F"..; .T IS ....|
00000830: 20 53 59 4E 54 41 58 20 2D 20 49 46 20 59 4F 55 | SYNTAX - IF YOU|
00000840: 52 20 41 53 53 45 4D 42 4C 45 52 0D 3B 20 43 41 |R ASSEMBLER.; CA|
00000850: 4E 4E 4F 54 20 44 4F 20 54 48 49 53 2C 20 59 4F |NNOT DO THIS, YO|
00000860: 55 20 4D 41 59 20 57 41 4E 54 20 54 4F 20 55 53 |U MAY WANT TO US|
00000870: 45 0D 3B 20 48 41 52 44 43 4F 44 45 44 20 56 41 |E.; HARDCODED VA|
00000880: 4C 55 45 53 20 48 45 52 45 20 49 4E 53 54 45 41 |LUES HERE INSTEA|
00000890: 44 20 4F 46 0D 3B 20 43 41 4C 43 55 4C 41 54 49 |D OF.; CALCULATI|
000008A0: 4F 4E 53 2E 0D D3 50 52 49 54 45 53 5F C2 49 54 |ONS...PRITES_.IT|
000008B0: 4D 41 53 4B 20 3D 20 32 5E D3 50 52 49 54 45 5F |MASK = 2^.PRITE_|
000008C0: C1 2B 32 5E D3 50 52 49 54 45 5F C2 0D D3 50 52 |.+2^.PRITE_...PR|
000008D0: 49 54 45 CF 46 46 53 45 54 5F D8 20 3D 20 24 31 |ITE.FFSET_. = $1|
000008E0: 38 2D D3 50 52 49 54 45 5F C8 4F 54 53 50 4F 54 |8-.PRITE_.OTSPOT|
000008F0: D8 0D D3 50 52 49 54 45 CF 46 46 53 45 54 5F D9 |...PRITE.FFSET_.|
00000900: 20 3D 20 24 33 32 2D D3 50 52 49 54 45 5F C8 4F | = $32-.PRITE_.O|
00000910: 54 53 50 4F 54 D9 0D 3B 20 C9 4E 20 54 48 45 20 |TSPOT..; .N THE |
00000920: 53 50 52 49 54 45 20 43 4F 4F 52 44 49 4E 41 54 |SPRITE COORDINAT|
00000930: 45 20 53 59 53 54 45 4D 2C 20 54 48 45 0D 3B 20 |E SYSTEM, THE.; |
00000940: 47 52 41 50 48 49 43 53 20 50 49 58 45 4C 20 28 |GRAPHICS PIXEL (|
00000950: 30 2C 30 29 20 48 41 53 20 54 48 45 0D 3B 20 43 |0,0) HAS THE.; C|
00000960: 4F 4F 52 44 49 4E 41 54 45 53 20 28 24 31 38 2C |OORDINATES ($18,|
00000970: 24 33 32 29 2C 20 53 4F 20 54 48 45 53 45 20 41 |$32), SO THESE A|
00000980: 52 45 0D 3B 20 4E 45 45 44 45 44 20 46 4F 52 20 |RE.; NEEDED FOR |
00000990: 43 4F 4E 56 45 52 54 49 4E 47 2E 20 C2 4C 41 4D |CONVERTING. .LAM|
000009A0: 45 20 54 48 45 20 D6 C9 C3 2E 0D 0D 0D 3B 20 2D |E THE .......; -|
000009B0: 2D 2D 20 C5 4E 54 52 59 20 50 4F 49 4E 54 0D 0D |-- .NTRY POINT..|
000009C0: 3B 20 C2 45 43 41 55 53 45 20 54 48 49 53 20 52 |; .ECAUSE THIS R|
000009D0: 4F 55 54 49 4E 45 20 49 53 20 54 48 45 20 46 49 |OUTINE IS THE FI|
000009E0: 52 53 54 2C 0D 3B 20 54 48 45 20 46 49 4C 45 20 |RST,.; THE FILE |
000009F0: 43 41 4E 20 42 45 20 C2 CF CF D4 45 44 20 4F 4E |CAN BE ....ED ON|
00000A00: 20 41 20 C3 31 32 38 2E 0D C9 4E 49 54 0D 3B 20 | A .128...NIT.; |
00000A10: C9 4E 49 54 49 41 4C 49 53 41 54 49 4F 4E 20 43 |.NITIALISATION C|
00000A20: 4F 44 45 2C 20 49 4E 53 54 41 4C 4C 53 20 44 52 |ODE, INSTALLS DR|
00000A30: 49 56 45 52 0D 3B 20 4F 4E 20 C9 D2 D1 20 56 45 |IVER.; ON ... VE|
00000A40: 43 54 4F 52 2E 0D 3B 20 C6 45 54 43 48 20 C9 D2 |CTOR..; .ETCH ..|
00000A50: D1 20 56 45 43 54 4F 52 20 41 4E 44 20 57 52 49 |. VECTOR AND WRI|
00000A60: 54 45 20 54 4F 20 45 4E 44 0D 20 20 20 20 20 20 |TE TO END. |
00000A70: 20 20 4C 44 41 20 53 59 53 5F 49 49 52 51 0D 20 | LDA SYS_IIRQ. |
00000A80: 20 20 20 20 20 20 20 4C 44 58 20 53 59 53 5F 49 | LDX SYS_I|
00000A90: 49 52 51 2B 31 0D 20 20 20 20 20 20 20 20 53 54 |IRQ+1. ST|
00000AA0: 41 20 4D 4F 44 31 36 2B 31 0D 20 20 20 20 20 20 |A MOD16+1. |
00000AB0: 20 20 53 54 58 20 4D 4F 44 31 36 2B 32 0D 3B 20 | STX MOD16+2.; |
00000AC0: CC 45 54 20 C9 D2 D1 20 56 45 43 54 4F 52 20 50 |.ET ... VECTOR P|
00000AD0: 4F 49 4E 54 20 54 4F 20 44 52 49 56 45 52 20 43 |OINT TO DRIVER C|
00000AE0: 4F 44 45 0D 20 20 20 20 20 20 20 20 4C 44 41 20 |ODE. LDA |
00000AF0: 23 3C C5 4E 54 52 59 0D 20 20 20 20 20 20 20 20 |#<.NTRY. |
00000B00: 4C 44 58 20 23 3E C5 4E 54 52 59 0D 20 20 20 20 |LDX #>.NTRY. |
00000B10: 20 20 20 20 50 48 50 0D 20 20 20 20 20 20 20 20 | PHP. |
00000B20: 53 45 49 0D 20 20 20 20 20 20 20 20 53 54 41 20 |SEI. STA |
00000B30: 53 59 53 5F 49 49 52 51 0D 20 20 20 20 20 20 20 |SYS_IIRQ. |
00000B40: 20 53 54 58 20 53 59 53 5F 49 49 52 51 2B 31 0D | STX SYS_IIRQ+1.|
00000B50: 20 20 20 20 20 20 20 20 50 4C 50 0D 3B 20 D4 48 | PLP.; .H|
00000B60: 45 20 46 4F 4C 4C 4F 57 49 4E 47 20 46 49 56 45 |E FOLLOWING FIVE|
00000B70: 20 43 4F 4D 4D 41 4E 44 53 20 41 52 45 20 4F 4E | COMMANDS ARE ON|
00000B80: 4C 59 0D 3B 20 4E 45 45 44 45 44 20 4F 4E 20 54 |LY.; NEEDED ON T|
00000B90: 48 45 20 C3 31 32 38 2E 0D 3B 20 20 20 20 20 20 |HE .128..; |
00000BA0: 20 4C 44 41 20 4D 4D 55 5F 43 52 0D 3B 20 20 20 | LDA MMU_CR.; |
00000BB0: 20 20 20 20 54 41 59 0D 3B 20 20 20 20 20 20 20 | TAY.; |
00000BC0: 41 4E 44 20 23 24 46 45 3B 20 41 43 54 49 56 41 |AND #$FE; ACTIVA|
00000BD0: 54 45 20 C9 2F CF 20 43 48 49 50 53 0D 3B 20 20 |TE ./. CHIPS.; |
00000BE0: 20 20 20 20 20 53 54 41 20 4D 4D 55 5F 43 52 0D | STA MMU_CR.|
00000BF0: 3B 20 C9 4E 49 54 20 4D 4F 55 53 45 20 42 55 54 |; .NIT MOUSE BUT|
00000C00: 54 4F 4E 53 0D 20 20 20 20 20 20 20 20 4C 44 41 |TONS. LDA|
00000C10: 20 23 24 31 31 0D 20 20 20 20 20 20 20 20 53 54 | #$11. ST|
00000C20: 41 20 43 49 41 31 5F 50 52 42 0D 3B 20 20 20 20 |A CIA1_PRB.; |
00000C30: 20 20 20 53 54 59 20 4D 4D 55 5F 43 52 3B 20 C3 | STY MMU_CR; .|
00000C40: 31 32 38 20 4F 4E 4C 59 0D 0D 3B 20 D4 48 45 20 |128 ONLY..; .HE |
00000C50: 46 4F 4C 4C 4F 57 49 4E 47 20 54 48 52 45 45 20 |FOLLOWING THREE |
00000C60: 4D 49 4E 49 2D 52 4F 55 54 49 4E 45 53 20 41 52 |MINI-ROUTINES AR|
00000C70: 45 0D 3B 20 4F 4E 4C 59 20 4E 45 45 44 45 44 20 |E.; ONLY NEEDED |
00000C80: 4F 4E 20 54 48 45 20 C3 36 34 2E 0D 0D 3B 20 C3 |ON THE .64...; .|
00000C90: 4F 50 59 20 53 50 52 49 54 45 53 20 54 4F 20 54 |OPY SPRITES TO T|
00000CA0: 41 50 45 20 42 55 46 46 45 52 0D 20 20 20 20 20 |APE BUFFER. |
00000CB0: 20 20 20 4C 44 58 20 23 31 32 37 0D C3 50 CC 50 | LDX #127..P.P|
00000CC0: 20 20 20 20 4C 44 41 20 D3 50 52 49 54 45 53 2C | LDA .PRITES,|
00000CD0: 58 0D 20 20 20 20 20 20 20 20 53 54 41 20 24 30 |X. STA $0|
00000CE0: 33 34 30 2C 58 0D 20 20 20 20 20 20 20 20 44 45 |340,X. DE|
00000CF0: 58 0D 20 20 20 20 20 20 20 20 42 50 4C 20 C3 50 |X. BPL .P|
00000D00: CC 50 0D 20 20 20 20 20 20 20 20 4C 44 41 20 23 |.P. LDA #|
00000D10: D3 50 52 49 54 45 53 5F C2 49 54 4D 41 53 4B 0D |.PRITES_.ITMASK.|
00000D20: 3B 20 D3 45 54 20 53 50 52 49 54 45 20 42 4C 4F |; .ET SPRITE BLO|
00000D30: 43 4B 20 50 4F 49 4E 54 45 52 53 0D 20 20 20 20 |CK POINTERS. |
00000D40: 20 20 20 20 4C 44 58 20 23 24 30 44 0D 20 20 20 | LDX #$0D. |
00000D50: 20 20 20 20 20 53 54 58 20 32 30 34 30 2B D3 50 | STX 2040+.P|
00000D60: 52 49 54 45 5F C1 0D 20 20 20 20 20 20 20 20 49 |RITE_.. I|
00000D70: 4E 58 0D 20 20 20 20 20 20 20 20 53 54 58 20 32 |NX. STX 2|
00000D80: 30 34 30 2B D3 50 52 49 54 45 5F C2 0D 3B 20 C1 |040+.PRITE_..; .|
00000D90: 43 54 49 56 41 54 45 20 50 4F 49 4E 54 45 52 20 |CTIVATE POINTER |
00000DA0: 53 50 52 49 54 45 53 0D 20 20 20 20 20 20 20 20 |SPRITES. |
00000DB0: 4F 52 41 20 D6 C9 C3 5F C2 41 53 45 2B 32 31 0D |ORA ..._.ASE+21.|
00000DC0: 20 20 20 20 20 20 20 20 53 54 41 20 D6 C9 C3 5F | STA ..._|
00000DD0: C2 41 53 45 2B 32 31 0D 0D 3B 20 C6 52 4F 4D 20 |.ASE+21..; .ROM |
00000DE0: 48 45 52 45 20 4F 4E 2C 20 42 4F 54 48 20 C3 36 |HERE ON, BOTH .6|
00000DF0: 34 2B C3 31 32 38 20 41 47 41 49 4E 2E 20 3A 29 |4+.128 AGAIN. :)|
00000E00: 0D 20 20 20 20 20 20 20 20 52 54 53 0D 0D 0D 3B |. RTS...;|
00000E10: 20 2D 2D 2D 20 D6 41 52 49 41 42 4C 45 53 0D 0D | --- .ARIABLES..|
00000E20: 3B 20 D0 49 58 45 4C 20 43 4F 55 4E 54 45 52 20 |; .IXEL COUNTER |
00000E30: 42 45 46 4F 52 45 20 41 43 43 45 4C 45 52 41 54 |BEFORE ACCELERAT|
00000E40: 49 4E 47 0D CA 4F 59 D7 41 49 54 54 49 4D 45 20 |ING..OY.AITTIME |
00000E50: 21 42 59 54 45 20 30 0D 0D 0D 3B 20 2D 2D 2D 20 |!BYTE 0...; --- |
00000E60: CD 41 49 4E 20 43 4F 44 45 0D 0D C5 4E 54 52 59 |.AIN CODE...NTRY|
00000E70: 0D 3B 20 D4 48 45 20 44 52 49 56 45 52 20 43 4F |.; .HE DRIVER CO|
00000E80: 4E 53 49 53 54 53 20 4F 46 20 53 45 56 45 52 41 |NSISTS OF SEVERA|
00000E90: 4C 0D 3B 20 44 49 53 54 49 4E 43 54 20 50 41 52 |L.; DISTINCT PAR|
00000EA0: 54 53 2E 20 D4 4F 20 4D 49 4E 49 4D 49 53 45 0D |TS. .O MINIMISE.|
00000EB0: 3B 20 50 45 52 46 4F 52 4D 41 4E 43 45 20 57 41 |; PERFORMANCE WA|
00000EC0: 53 54 41 47 45 2C 20 59 4F 55 20 53 48 4F 55 4C |STAGE, YOU SHOUL|
00000ED0: 44 0D 3B 20 52 45 4D 4F 56 45 20 41 4C 4C 20 50 |D.; REMOVE ALL P|
00000EE0: 41 52 54 53 20 59 4F 55 20 44 4F 4E 27 54 20 4E |ARTS YOU DON'T N|
00000EF0: 45 45 44 20 46 4F 52 0D 3B 20 54 48 45 20 53 50 |EED FOR.; THE SP|
00000F00: 45 43 49 46 49 43 20 41 50 50 4C 49 43 41 54 49 |ECIFIC APPLICATI|
00000F10: 4F 4E 2E 0D 0D 0D 3B 20 2D 2D 2D 20 D0 41 52 54 |ON....; --- .ART|
00000F20: 20 30 2C 20 49 4E 49 54 49 41 4C 49 53 41 54 49 | 0, INITIALISATI|
00000F30: 4F 4E 53 0D 0D 3B 20 CD 41 4B 45 20 53 55 52 45 |ONS..; .AKE SURE|
00000F40: 20 44 45 43 49 4D 41 4C 20 4D 4F 44 45 20 49 53 | DECIMAL MODE IS|
00000F50: 20 4F 46 46 0D 20 20 20 20 20 20 20 20 43 4C 44 | OFF. CLD|
00000F60: 0D 3B 20 D3 45 54 20 42 55 54 54 4F 4E 20 53 54 |.; .ET BUTTON ST|
00000F70: 41 54 45 53 20 54 4F 20 22 4E 4F 54 20 50 52 45 |ATES TO "NOT PRE|
00000F80: 53 53 45 44 22 2C 0D 3B 20 53 4F 20 54 48 45 20 |SSED",.; SO THE |
00000F90: 4F 54 48 45 52 20 50 41 52 54 53 20 4F 4E 4C 59 |OTHER PARTS ONLY|
00000FA0: 20 48 41 56 45 20 54 4F 20 44 45 41 4C 0D 3B 20 | HAVE TO DEAL.; |
00000FB0: 57 49 54 48 20 53 45 54 54 49 4E 47 20 54 48 45 |WITH SETTING THE|
00000FC0: 4D 20 54 4F 20 22 50 52 45 53 53 45 44 22 2E 0D |M TO "PRESSED"..|
00000FD0: 20 20 20 20 20 20 20 20 4C 44 41 20 23 24 30 30 | LDA #$00|
00000FE0: 0D 20 20 20 20 20 20 20 20 53 54 41 20 CC 45 46 |. STA .EF|
00000FF0: 54 C2 55 54 54 4F 4E 0D 20 20 20 20 20 20 20 20 |T.UTTON. |
00001000: 53 54 41 20 D2 49 47 48 54 C2 55 54 54 4F 4E 0D |STA .IGHT.UTTON.|
00001010: 0D 0D 3B 20 2D 2D 2D 20 D0 41 52 54 20 31 2C 20 |..; --- .ART 1, |
00001020: 48 41 4E 44 4C 49 4E 47 20 4D 4F 55 53 45 20 4D |HANDLING MOUSE M|
00001030: 4F 56 45 4D 45 4E 54 53 0D 0D 3B 20 4D 4F 55 53 |OVEMENTS..; MOUS|
00001040: 45 20 58 0D 20 20 20 20 20 20 20 20 4C 44 58 20 |E X. LDX |
00001050: 23 24 30 30 3B 20 30 20 4D 45 41 4E 53 20 22 58 |#$00; 0 MEANS "X|
00001060: 20 53 54 55 46 46 22 0D 20 20 20 20 20 20 20 20 | STUFF". |
00001070: 4A 53 52 20 D0 4F 54 C4 45 4C 54 41 0D 3B 20 CE |JSR .OT.ELTA.; .|
00001080: 4F 57 20 53 49 47 4E 45 44 20 58 20 4D 4F 56 45 |OW SIGNED X MOVE|
00001090: 4D 45 4E 54 20 49 53 20 49 4E 20 C1 2F D9 2E 0D |MENT IS IN ./...|
000010A0: 3B 20 C1 44 44 20 54 4F 20 43 55 52 52 45 4E 54 |; .DD TO CURRENT|
000010B0: 20 58 20 56 41 4C 55 45 2E 0D 20 20 20 20 20 20 | X VALUE.. |
000010C0: 20 20 43 4C 43 0D 20 20 20 20 20 20 20 20 41 44 | CLC. AD|
000010D0: 43 20 D0 4F 49 4E 54 45 52 D8 4E 4F 57 0D 20 20 |C .OINTER.NOW. |
000010E0: 20 20 20 20 20 20 53 54 41 20 D0 4F 49 4E 54 45 | STA .OINTE|
000010F0: 52 D8 4E 4F 57 0D 20 20 20 20 20 20 20 20 54 59 |R.NOW. TY|
00001100: 41 0D 20 20 20 20 20 20 20 20 41 44 43 20 D0 4F |A. ADC .O|
00001110: 49 4E 54 45 52 D8 4E 4F 57 2B 31 0D 20 20 20 20 |INTER.NOW+1. |
00001120: 20 20 20 20 53 54 41 20 D0 4F 49 4E 54 45 52 D8 | STA .OINTER.|
00001130: 4E 4F 57 2B 31 0D 3B 20 4D 4F 55 53 45 20 59 0D |NOW+1.; MOUSE Y.|
00001140: 20 20 20 20 20 20 20 20 4C 44 58 20 23 24 30 31 | LDX #$01|
00001150: 3B 20 31 20 4D 45 41 4E 53 20 22 59 20 53 54 55 |; 1 MEANS "Y STU|
00001160: 46 46 22 0D 20 20 20 20 20 20 20 20 4A 53 52 20 |FF". JSR |
00001170: D0 4F 54 C4 45 4C 54 41 0D 3B 20 CE 4F 57 20 53 |.OT.ELTA.; .OW S|
00001180: 49 47 4E 45 44 20 59 20 4D 4F 56 45 4D 45 4E 54 |IGNED Y MOVEMENT|
00001190: 20 49 53 20 49 4E 20 C1 2F D9 2E 0D 3B 20 CD 4F | IS IN ./...; .O|
000011A0: 55 53 45 20 41 4E 44 20 43 4F 4D 50 55 54 45 52 |USE AND COMPUTER|
000011B0: 20 55 53 45 20 44 49 46 46 45 52 45 4E 54 20 59 | USE DIFFERENT Y|
000011C0: 0D 3B 20 44 49 52 45 43 54 49 4F 4E 53 2C 20 53 |.; DIRECTIONS, S|
000011D0: 4F 20 44 4F 4E 27 54 20 41 44 44 20 54 4F 2C 20 |O DON'T ADD TO, |
000011E0: 42 55 54 0D 3B 20 53 55 42 54 52 41 43 54 20 46 |BUT.; SUBTRACT F|
000011F0: 52 4F 4D 20 43 55 52 52 45 4E 54 20 59 20 56 41 |ROM CURRENT Y VA|
00001200: 4C 55 45 2E 0D 3B 20 D4 48 49 53 20 49 53 20 41 |LUE..; .HIS IS A|
00001210: 20 52 45 56 45 52 53 45 20 53 55 42 54 52 41 43 | REVERSE SUBTRAC|
00001220: 54 49 4F 4E 20 2D 20 49 54 0D 3B 20 4D 49 47 48 |TION - IT.; MIGH|
00001230: 54 20 42 45 20 48 41 52 44 45 52 20 54 4F 20 55 |T BE HARDER TO U|
00001240: 4E 44 45 52 53 54 41 4E 44 2C 20 42 55 54 20 49 |NDERSTAND, BUT I|
00001250: 54 0D 3B 20 49 53 20 46 41 53 54 45 52 20 41 4E |T.; IS FASTER AN|
00001260: 44 20 53 4D 41 4C 4C 45 52 20 54 48 41 4E 20 54 |D SMALLER THAN T|
00001270: 48 45 20 55 53 55 41 4C 0D 3B 20 57 41 59 2E 0D |HE USUAL.; WAY..|
00001280: 20 20 20 20 20 20 20 20 43 4C 43 0D 20 20 20 20 | CLC. |
00001290: 20 20 20 20 53 42 43 20 D0 4F 49 4E 54 45 52 D9 | SBC .OINTER.|
000012A0: 4E 4F 57 0D 20 20 20 20 20 20 20 20 45 4F 52 20 |NOW. EOR |
000012B0: 23 24 46 46 0D 20 20 20 20 20 20 20 20 53 54 41 |#$FF. STA|
000012C0: 20 D0 4F 49 4E 54 45 52 D9 4E 4F 57 0D 20 20 20 | .OINTER.NOW. |
000012D0: 20 20 20 20 20 54 59 41 0D 20 20 20 20 20 20 20 | TYA. |
000012E0: 20 53 42 43 20 D0 4F 49 4E 54 45 52 D9 4E 4F 57 | SBC .OINTER.NOW|
000012F0: 2B 31 0D 20 20 20 20 20 20 20 20 45 4F 52 20 23 |+1. EOR #|
00001300: 24 46 46 0D 20 20 20 20 20 20 20 20 53 54 41 20 |$FF. STA |
00001310: D0 4F 49 4E 54 45 52 D9 4E 4F 57 2B 31 0D 0D 0D |.OINTER.NOW+1...|
00001320: 3B 20 2D 2D 2D 20 D0 41 52 54 20 32 2C 20 48 41 |; --- .ART 2, HA|
00001330: 4E 44 4C 49 4E 47 20 4D 4F 55 53 45 20 42 55 54 |NDLING MOUSE BUT|
00001340: 54 4F 4E 53 0D 0D 3B 20 D0 52 45 50 41 52 45 20 |TONS..; .REPARE |
00001350: C3 C9 C1 20 42 59 20 53 45 54 54 49 4E 47 20 42 |... BY SETTING B|
00001360: 49 54 53 20 54 4F 20 49 4E 50 55 54 0D 20 20 20 |ITS TO INPUT. |
00001370: 20 20 20 20 20 4C 44 59 20 23 24 31 31 0D 20 20 | LDY #$11. |
00001380: 20 20 20 20 20 20 53 54 59 20 43 49 41 31 5F 44 | STY CIA1_D|
00001390: 44 52 42 0D 20 20 20 20 20 20 20 20 4C 44 58 20 |DRB. LDX |
000013A0: 23 24 46 46 3B 20 24 46 46 20 4D 45 41 4E 53 20 |#$FF; $FF MEANS |
000013B0: 22 50 52 45 53 53 45 44 22 0D 20 20 20 20 20 20 |"PRESSED". |
000013C0: 20 20 4C 44 41 20 23 24 31 30 3B 20 43 48 45 43 | LDA #$10; CHEC|
000013D0: 4B 20 4C 45 46 54 20 42 55 54 54 4F 4E 0D 20 20 |K LEFT BUTTON. |
000013E0: 20 20 20 20 20 20 42 49 54 20 43 49 41 31 5F 50 | BIT CIA1_P|
000013F0: 52 42 0D 20 20 20 20 20 20 20 20 42 4E 45 20 CE |RB. BNE .|
00001400: 4F 54 CC C2 0D 20 20 20 20 20 20 20 20 53 54 58 |OT... STX|
00001410: 20 CC 45 46 54 C2 55 54 54 4F 4E 3B 20 53 54 4F | .EFT.UTTON; STO|
00001420: 52 45 20 53 54 41 54 45 0D CE 4F 54 CC C2 20 20 |RE STATE..OT.. |
00001430: 20 4C 44 41 20 23 24 30 31 3B 20 43 48 45 43 4B | LDA #$01; CHECK|
00001440: 20 52 49 47 48 54 20 42 55 54 54 4F 4E 0D 20 20 | RIGHT BUTTON. |
00001450: 20 20 20 20 20 20 42 49 54 20 43 49 41 31 5F 50 | BIT CIA1_P|
00001460: 52 42 0D 20 20 20 20 20 20 20 20 42 4E 45 20 CE |RB. BNE .|
00001470: 4F 54 D2 C2 0D 20 20 20 20 20 20 20 20 53 54 58 |OT... STX|
00001480: 20 D2 49 47 48 54 C2 55 54 54 4F 4E 3B 20 53 54 | .IGHT.UTTON; ST|
00001490: 4F 52 45 20 53 54 41 54 45 0D 3B 20 D2 45 53 45 |ORE STATE.; .ESE|
000014A0: 54 20 C3 C9 C1 20 54 4F 20 4E 4F 52 4D 41 4C 20 |T ... TO NORMAL |
000014B0: 53 54 41 54 45 0D CE 4F 54 D2 C2 20 20 20 4C 44 |STATE..OT.. LD|
000014C0: 59 20 23 24 30 30 0D 20 20 20 20 20 20 20 20 53 |Y #$00. S|
000014D0: 54 59 20 43 49 41 31 5F 44 44 52 42 0D 0D 0D 3B |TY CIA1_DDRB...;|
000014E0: 20 2D 2D 2D 20 D0 41 52 54 20 33 2C 20 48 41 4E | --- .ART 3, HAN|
000014F0: 44 4C 49 4E 47 20 54 48 45 20 4A 4F 59 53 54 49 |DLING THE JOYSTI|
00001500: 43 4B 0D 0D 3B 20 C6 45 54 43 48 20 42 59 54 45 |CK..; .ETCH BYTE|
00001510: 20 48 4F 4C 44 49 4E 47 20 44 49 52 45 43 54 49 | HOLDING DIRECTI|
00001520: 4F 4E 20 46 4C 41 47 53 0D 20 20 20 20 20 20 20 |ON FLAGS. |
00001530: 20 4C 44 41 20 43 49 41 31 5F 50 52 41 0D 20 20 | LDA CIA1_PRA. |
00001540: 20 20 20 20 20 20 54 41 58 3B 20 2E 2E 2E 41 4E | TAX; ...AN|
00001550: 44 20 52 45 4D 45 4D 42 45 52 20 49 54 0D 0D 3B |D REMEMBER IT..;|
00001560: 20 C3 48 45 43 4B 20 27 55 50 27 20 44 49 52 45 | .HECK 'UP' DIRE|
00001570: 43 54 49 4F 4E 0D 20 20 20 20 20 20 20 20 52 4F |CTION. RO|
00001580: 52 0D 20 20 20 20 20 20 20 20 42 43 53 20 44 4F |R. BCS DO|
00001590: 57 4E 0D 3B 20 D3 55 42 54 52 41 43 54 20 43 55 |WN.; .UBTRACT CU|
000015A0: 52 52 45 4E 54 20 53 54 45 50 20 53 49 5A 45 20 |RRENT STEP SIZE |
000015B0: 46 52 4F 4D 20 59 0D 3B 20 56 41 4C 55 45 20 49 |FROM Y.; VALUE I|
000015C0: 46 20 4E 45 45 44 45 44 2E 0D 20 20 20 20 20 20 |F NEEDED.. |
000015D0: 20 20 54 41 59 0D 20 20 20 20 20 20 20 20 53 45 | TAY. SE|
000015E0: 43 0D 20 20 20 20 20 20 20 20 4C 44 41 20 D0 4F |C. LDA .O|
000015F0: 49 4E 54 45 52 D9 4E 4F 57 0D 20 20 20 20 20 20 |INTER.NOW. |
00001600: 20 20 53 42 43 20 CA 4F 59 D3 54 45 50 53 49 5A | SBC .OY.TEPSIZ|
00001610: 45 0D 20 20 20 20 20 20 20 20 53 54 41 20 D0 4F |E. STA .O|
00001620: 49 4E 54 45 52 D9 4E 4F 57 0D 20 20 20 20 20 20 |INTER.NOW. |
00001630: 20 20 42 43 53 20 46 49 58 C8 49 D5 50 0D 20 20 | BCS FIX.I.P. |
00001640: 20 20 20 20 20 20 44 45 43 20 D0 4F 49 4E 54 45 | DEC .OINTE|
00001650: 52 D9 4E 4F 57 2B 31 0D 46 49 58 C8 49 D5 50 20 |R.NOW+1.FIX.I.P |
00001660: 54 59 41 0D 0D 3B 20 C3 48 45 43 4B 20 27 44 4F |TYA..; .HECK 'DO|
00001670: 57 4E 27 20 44 49 52 45 43 54 49 4F 4E 0D 44 4F |WN' DIRECTION.DO|
00001680: 57 4E 20 20 20 20 52 4F 52 0D 20 20 20 20 20 20 |WN ROR. |
00001690: 20 20 42 43 53 20 4C 45 46 54 0D 3B 20 C1 44 44 | BCS LEFT.; .DD|
000016A0: 20 43 55 52 52 45 4E 54 20 53 54 45 50 20 53 49 | CURRENT STEP SI|
000016B0: 5A 45 20 54 4F 20 59 20 56 41 4C 55 45 20 49 46 |ZE TO Y VALUE IF|
000016C0: 0D 3B 20 4E 45 45 44 45 44 2E 0D 20 20 20 20 20 |.; NEEDED.. |
000016D0: 20 20 20 54 41 59 0D 20 20 20 20 20 20 20 20 3B | TAY. ;|
000016E0: 43 4C 43 3B 20 C3 20 49 53 20 41 4C 57 41 59 53 |CLC; . IS ALWAYS|
000016F0: 20 43 4C 45 41 52 20 48 45 52 45 0D 20 20 20 20 | CLEAR HERE. |
00001700: 20 20 20 20 4C 44 41 20 D0 4F 49 4E 54 45 52 D9 | LDA .OINTER.|
00001710: 4E 4F 57 0D 20 20 20 20 20 20 20 20 41 44 43 20 |NOW. ADC |
00001720: CA 4F 59 D3 54 45 50 53 49 5A 45 0D 20 20 20 20 |.OY.TEPSIZE. |
00001730: 20 20 20 20 53 54 41 20 D0 4F 49 4E 54 45 52 D9 | STA .OINTER.|
00001740: 4E 4F 57 0D 20 20 20 20 20 20 20 20 42 43 43 20 |NOW. BCC |
00001750: 46 49 58 C8 49 C4 4F 57 4E 0D 20 20 20 20 20 20 |FIX.I.OWN. |
00001760: 20 20 49 4E 43 20 D0 4F 49 4E 54 45 52 D9 4E 4F | INC .OINTER.NO|
00001770: 57 2B 31 0D 46 49 58 C8 49 C4 4F 57 4E 20 20 20 |W+1.FIX.I.OWN |
00001780: 20 20 20 20 54 59 41 0D 0D 3B 20 C3 48 45 43 4B | TYA..; .HECK|
00001790: 20 27 4C 45 46 54 27 20 44 49 52 45 43 54 49 4F | 'LEFT' DIRECTIO|
000017A0: 4E 0D 4C 45 46 54 20 20 20 20 52 4F 52 0D 20 20 |N.LEFT ROR. |
000017B0: 20 20 20 20 20 20 42 43 53 20 52 49 47 48 54 0D | BCS RIGHT.|
000017C0: 3B 20 D3 55 42 54 52 41 43 54 20 43 55 52 52 45 |; .UBTRACT CURRE|
000017D0: 4E 54 20 53 54 45 50 20 53 49 5A 45 20 46 52 4F |NT STEP SIZE FRO|
000017E0: 4D 20 58 0D 3B 20 56 41 4C 55 45 20 49 46 20 4E |M X.; VALUE IF N|
000017F0: 45 45 44 45 44 2E 0D 20 20 20 20 20 20 20 20 54 |EEDED.. T|
00001800: 41 59 0D 20 20 20 20 20 20 20 20 53 45 43 0D 20 |AY. SEC. |
00001810: 20 20 20 20 20 20 20 4C 44 41 20 D0 4F 49 4E 54 | LDA .OINT|
00001820: 45 52 D8 4E 4F 57 0D 20 20 20 20 20 20 20 20 53 |ER.NOW. S|
00001830: 42 43 20 CA 4F 59 D3 54 45 50 53 49 5A 45 0D 20 |BC .OY.TEPSIZE. |
00001840: 20 20 20 20 20 20 20 53 54 41 20 D0 4F 49 4E 54 | STA .OINT|
00001850: 45 52 D8 4E 4F 57 0D 20 20 20 20 20 20 20 20 42 |ER.NOW. B|
00001860: 43 53 20 46 49 58 C8 49 CC 45 46 54 0D 20 20 20 |CS FIX.I.EFT. |
00001870: 20 20 20 20 20 44 45 43 20 D0 4F 49 4E 54 45 52 | DEC .OINTER|
00001880: D8 4E 4F 57 2B 31 0D 46 49 58 C8 49 CC 45 46 54 |.NOW+1.FIX.I.EFT|
00001890: 20 20 20 20 20 20 20 54 59 41 0D 0D 3B 20 C3 48 | TYA..; .H|
000018A0: 45 43 4B 20 27 52 49 47 48 54 27 20 44 49 52 45 |ECK 'RIGHT' DIRE|
000018B0: 43 54 49 4F 4E 0D 52 49 47 48 54 20 20 20 52 4F |CTION.RIGHT RO|
000018C0: 52 0D 20 20 20 20 20 20 20 20 42 43 53 20 D0 41 |R. BCS .A|
000018D0: 52 54 33 C5 4E 44 0D 3B 20 C1 44 44 20 43 55 52 |RT3.ND.; .DD CUR|
000018E0: 52 45 4E 54 20 53 54 45 50 20 53 49 5A 45 20 54 |RENT STEP SIZE T|
000018F0: 4F 20 58 20 56 41 4C 55 45 20 49 46 0D 3B 20 4E |O X VALUE IF.; N|
00001900: 45 45 44 45 44 2E 0D 20 20 20 20 20 20 20 20 54 |EEDED.. T|
00001910: 41 59 0D 20 20 20 20 20 20 20 20 3B 43 4C 43 3B |AY. ;CLC;|
00001920: 20 C3 20 49 53 20 41 4C 57 41 59 53 20 43 4C 45 | . IS ALWAYS CLE|
00001930: 41 52 20 48 45 52 45 0D 20 20 20 20 20 20 20 20 |AR HERE. |
00001940: 4C 44 41 20 D0 4F 49 4E 54 45 52 D8 4E 4F 57 0D |LDA .OINTER.NOW.|
00001950: 20 20 20 20 20 20 20 20 41 44 43 20 CA 4F 59 D3 | ADC .OY.|
00001960: 54 45 50 53 49 5A 45 0D 20 20 20 20 20 20 20 20 |TEPSIZE. |
00001970: 53 54 41 20 D0 4F 49 4E 54 45 52 D8 4E 4F 57 0D |STA .OINTER.NOW.|
00001980: 20 20 20 20 20 20 20 20 42 43 43 20 46 49 58 C8 | BCC FIX.|
00001990: 49 D2 49 47 48 54 0D 20 20 20 20 20 20 20 20 49 |I.IGHT. I|
000019A0: 4E 43 20 D0 4F 49 4E 54 45 52 D8 4E 4F 57 2B 31 |NC .OINTER.NOW+1|
000019B0: 0D 46 49 58 C8 49 D2 49 47 48 54 20 20 20 20 20 |.FIX.I.IGHT |
000019C0: 20 54 59 41 0D D0 41 52 54 33 C5 4E 44 0D 0D 0D | TYA..ART3.ND...|
000019D0: 3B 20 2D 2D 2D 20 D0 41 52 54 20 34 2C 20 48 41 |; --- .ART 4, HA|
000019E0: 4E 44 4C 49 4E 47 20 4A 4F 59 53 54 49 43 4B 20 |NDLING JOYSTICK |
000019F0: 42 55 54 54 4F 4E 0D 0D 20 20 20 20 20 20 20 20 |BUTTON.. |
00001A00: 52 4F 52 0D 20 20 20 20 20 20 20 20 42 43 53 20 |ROR. BCS |
00001A10: D0 41 52 54 34 C5 4E 44 0D 20 20 20 20 20 20 20 |.ART4.ND. |
00001A20: 20 4C 44 41 20 23 24 46 46 3B 20 24 46 46 20 4D | LDA #$FF; $FF M|
00001A30: 45 41 4E 53 20 22 50 52 45 53 53 45 44 22 0D 20 |EANS "PRESSED". |
00001A40: 20 20 20 20 20 20 20 53 54 41 20 CC 45 46 54 C2 | STA .EFT.|
00001A50: 55 54 54 4F 4E 0D D0 41 52 54 34 C5 4E 44 0D 0D |UTTON..ART4.ND..|
00001A60: 0D 3B 20 2D 2D 2D 20 D0 41 52 54 20 35 2C 20 4A |.; --- .ART 5, J|
00001A70: 4F 59 53 54 49 43 4B 20 41 43 43 45 4C 45 52 41 |OYSTICK ACCELERA|
00001A80: 54 49 4F 4E 0D 0D 3B 20 D2 45 53 54 4F 52 45 20 |TION..; .ESTORE |
00001A90: 4A 4F 59 53 54 49 43 4B 20 44 49 52 45 43 54 49 |JOYSTICK DIRECTI|
00001AA0: 4F 4E 20 42 49 54 53 20 41 4E 44 0D 3B 20 43 48 |ON BITS AND.; CH|
00001AB0: 45 43 4B 20 57 48 45 54 48 45 52 20 54 4F 20 53 |ECK WHETHER TO S|
00001AC0: 45 54 20 53 50 45 45 44 20 54 4F 20 5A 45 52 4F |ET SPEED TO ZERO|
00001AD0: 2E 0D 20 20 20 20 20 20 20 20 54 58 41 0D 20 20 |.. TXA. |
00001AE0: 20 20 20 20 20 20 41 4E 44 20 23 24 30 46 3B 20 | AND #$0F; |
00001AF0: C3 4C 45 41 52 20 55 4E 4E 45 45 44 45 44 20 42 |.LEAR UNNEEDED B|
00001B00: 49 54 53 0D 20 20 20 20 20 20 20 20 43 4D 50 20 |ITS. CMP |
00001B10: 23 24 30 46 3B 20 C1 4E 59 20 44 49 52 45 43 54 |#$0F; .NY DIRECT|
00001B20: 49 4F 4E 20 42 49 54 20 3F 0D 20 20 20 20 20 20 |ION BIT ?. |
00001B30: 20 20 42 4E 45 20 49 4E 43 54 45 4D 50 4F 0D 3B | BNE INCTEMPO.;|
00001B40: 20 CE 4F 20 44 49 52 45 43 54 49 4F 4E 20 57 41 | .O DIRECTION WA|
00001B50: 53 20 55 53 45 44 2C 20 53 4F 20 52 45 53 45 54 |S USED, SO RESET|
00001B60: 20 53 50 45 45 44 0D 3B 20 41 4E 44 20 57 41 49 | SPEED.; AND WAI|
00001B70: 54 20 43 4F 55 4E 54 45 52 20 54 4F 20 4E 4F 52 |T COUNTER TO NOR|
00001B80: 4D 41 4C 2E 0D 20 20 20 20 20 20 20 20 4C 44 41 |MAL.. LDA|
00001B90: 20 23 24 30 31 0D 20 20 20 20 20 20 20 20 53 54 | #$01. ST|
00001BA0: 41 20 CA 4F 59 D3 54 45 50 53 49 5A 45 0D 20 20 |A .OY.TEPSIZE. |
00001BB0: 20 20 20 20 20 20 4C 44 41 20 23 CD 41 58 D4 49 | LDA #.AX.I|
00001BC0: 4D 45 0D 20 20 20 20 20 20 20 20 53 54 41 20 CA |ME. STA .|
00001BD0: 4F 59 D7 41 49 54 54 49 4D 45 0D 20 20 20 20 20 |OY.AITTIME. |
00001BE0: 20 20 20 4A 4D 50 20 D0 41 52 54 35 C5 4E 44 0D | JMP .ART5.ND.|
00001BF0: 49 4E 43 54 45 4D 50 4F 0D 3B 20 C1 20 44 49 52 |INCTEMPO.; . DIR|
00001C00: 45 43 54 49 4F 4E 20 42 49 54 20 57 41 53 20 55 |ECTION BIT WAS U|
00001C10: 53 45 44 2C 20 53 4F 20 43 48 45 43 4B 0D 3B 20 |SED, SO CHECK.; |
00001C20: 57 48 45 54 48 45 52 20 54 4F 20 41 43 43 45 4C |WHETHER TO ACCEL|
00001C30: 45 52 41 54 45 3A 20 C9 46 20 53 50 45 45 44 20 |ERATE: .F SPEED |
00001C40: 49 53 0D 3B 20 41 4C 52 45 41 44 59 20 4D 41 58 |IS.; ALREADY MAX|
00001C50: 49 4D 55 4D 20 53 50 45 45 44 2C 20 44 4F 4E 27 |IMUM SPEED, DON'|
00001C60: 54 0D 3B 20 41 43 43 45 4C 45 52 41 54 45 2E 0D |T.; ACCELERATE..|
00001C70: CA 4F 59 D3 54 45 50 53 49 5A 45 3D 2A 2B 31 0D |.OY.TEPSIZE=*+1.|
00001C80: 20 20 20 20 20 20 20 20 4C 44 41 20 23 24 30 30 | LDA #$00|
00001C90: 3B 20 28 53 45 4C 46 2D 4D 4F 44 49 46 59 49 4E |; (SELF-MODIFYIN|
00001CA0: 47 29 0D 3B 20 C9 46 20 54 48 45 20 56 41 52 49 |G).; .F THE VARI|
00001CB0: 41 42 4C 45 20 22 CA 4F 59 D3 54 45 50 53 49 5A |ABLE ".OY.TEPSIZ|
00001CC0: 45 22 20 57 4F 55 4C 44 0D 3B 20 48 41 56 45 20 |E" WOULD.; HAVE |
00001CD0: 42 45 45 4E 20 44 45 46 49 4E 45 44 20 41 53 20 |BEEN DEFINED AS |
00001CE0: 41 20 53 45 50 41 52 41 54 45 0D 3B 20 4C 4F 43 |A SEPARATE.; LOC|
00001CF0: 41 54 49 4F 4E 20 28 55 53 49 4E 47 20 22 21 42 |ATION (USING "!B|
00001D00: 59 54 45 22 29 2C 20 49 54 20 57 4F 55 4C 44 0D |YTE"), IT WOULD.|
00001D10: 3B 20 48 41 56 45 20 54 41 4B 45 4E 20 41 20 42 |; HAVE TAKEN A B|
00001D20: 59 54 45 20 4F 46 20 4D 45 4D 4F 52 59 2E 20 C2 |YTE OF MEMORY. .|
00001D30: 59 0D 3B 20 53 54 4F 52 49 4E 47 20 54 48 45 20 |Y.; STORING THE |
00001D40: 56 41 4C 55 45 20 49 4E 53 49 44 45 20 41 4E 20 |VALUE INSIDE AN |
00001D50: CC C4 C1 0D 3B 20 43 4F 4D 4D 41 4E 44 27 53 20 |....; COMMAND'S |
00001D60: 41 52 47 55 4D 45 4E 54 2C 20 57 45 20 53 41 56 |ARGUMENT, WE SAV|
00001D70: 45 20 54 48 41 54 20 4F 4E 45 0D 3B 20 42 59 54 |E THAT ONE.; BYT|
00001D80: 45 2E 20 C9 54 20 4D 49 47 48 54 20 4D 41 4B 45 |E. .T MIGHT MAKE|
00001D90: 20 41 20 44 49 46 46 45 52 45 4E 43 45 2E 20 3A | A DIFFERENCE. :|
00001DA0: 29 0D 20 20 20 20 20 20 20 20 43 4D 50 20 23 CD |). CMP #.|
00001DB0: 41 58 D3 54 45 50 3B 20 C9 46 20 53 50 45 45 44 |AX.TEP; .F SPEED|
00001DC0: 20 49 53 20 4D 41 58 2E 2C 0D 20 20 20 20 20 20 | IS MAX.,. |
00001DD0: 20 20 42 43 53 20 D0 41 52 54 35 C5 4E 44 3B 20 | BCS .ART5.ND; |
00001DE0: 44 4F 4E 27 54 20 41 43 43 45 4C 45 52 41 54 45 |DON'T ACCELERATE|
00001DF0: 2E 0D 3B 20 D3 50 45 45 44 20 49 53 4E 27 54 20 |..; .PEED ISN'T |
00001E00: 4D 41 58 49 4D 55 4D 20 59 45 54 2E 20 C3 48 45 |MAXIMUM YET. .HE|
00001E10: 43 4B 0D 3B 20 57 48 45 54 48 45 52 20 57 45 20 |CK.; WHETHER WE |
00001E20: 48 41 56 45 20 54 4F 20 57 41 49 54 20 42 45 46 |HAVE TO WAIT BEF|
00001E30: 4F 52 45 0D 3B 20 41 43 43 45 4C 45 52 41 54 49 |ORE.; ACCELERATI|
00001E40: 4E 47 2E 0D 20 20 20 20 20 20 20 20 44 45 43 20 |NG.. DEC |
00001E50: CA 4F 59 D7 41 49 54 54 49 4D 45 0D 20 20 20 20 |.OY.AITTIME. |
00001E60: 20 20 20 20 42 50 4C 20 D0 41 52 54 35 C5 4E 44 | BPL .ART5.ND|
00001E70: 0D 3B 20 C3 4F 55 4E 54 45 52 20 48 41 53 20 55 |.; .OUNTER HAS U|
00001E80: 4E 44 45 52 52 55 4E 2C 20 53 4F 20 41 43 43 45 |NDERRUN, SO ACCE|
00001E90: 4C 45 52 41 54 45 2E 0D 20 20 20 20 20 20 20 20 |LERATE.. |
00001EA0: 49 4E 43 20 CA 4F 59 D7 41 49 54 54 49 4D 45 3B |INC .OY.AITTIME;|
00001EB0: 20 52 45 53 45 54 20 43 4F 55 4E 54 45 52 0D 20 | RESET COUNTER. |
00001EC0: 20 20 20 20 20 20 20 49 4E 43 20 CA 4F 59 D3 54 | INC .OY.T|
00001ED0: 45 50 53 49 5A 45 3B 20 49 4E 43 52 45 41 53 45 |EPSIZE; INCREASE|
00001EE0: 20 53 50 45 45 44 0D D0 41 52 54 35 C5 4E 44 0D | SPEED..ART5.ND.|
00001EF0: 0D 0D 3B 20 2D 2D 2D 20 D0 41 52 54 20 36 2C 20 |..; --- .ART 6, |
00001F00: 52 45 53 54 52 49 43 54 20 43 4F 4F 52 44 49 4E |RESTRICT COORDIN|
00001F10: 41 54 45 20 52 41 4E 47 45 0D 0D 3B 20 52 45 53 |ATE RANGE..; RES|
00001F20: 54 52 49 43 54 20 58 20 56 41 4C 55 45 0D 20 20 |TRICT X VALUE. |
00001F30: 20 20 20 20 20 20 4C 44 58 20 23 24 30 30 3B 20 | LDX #$00; |
00001F40: 30 20 4D 45 41 4E 53 20 22 58 20 53 54 55 46 46 |0 MEANS "X STUFF|
00001F50: 22 0D 20 20 20 20 20 20 20 20 4A 53 52 20 D2 45 |". JSR .E|
00001F60: 53 54 52 49 43 54 0D 3B 20 52 45 53 54 52 49 43 |STRICT.; RESTRIC|
00001F70: 54 20 59 20 56 41 4C 55 45 0D 20 20 20 20 20 20 |T Y VALUE. |
00001F80: 20 20 4C 44 58 20 23 24 30 32 3B 20 32 20 4D 45 | LDX #$02; 2 ME|
00001F90: 41 4E 53 20 22 59 20 53 54 55 46 46 22 0D 20 20 |ANS "Y STUFF". |
00001FA0: 20 20 20 20 20 20 4A 53 52 20 D2 45 53 54 52 49 | JSR .ESTRI|
00001FB0: 43 54 0D 0D 0D 3B 20 2D 2D 2D 20 D0 41 52 54 20 |CT...; --- .ART |
00001FC0: 37 2C 20 50 4F 53 49 54 49 4F 4E 49 4E 47 20 53 |7, POSITIONING S|
00001FD0: 50 52 49 54 45 53 0D 0D 3B 20 D3 45 54 20 53 50 |PRITES..; .ET SP|
00001FE0: 52 49 54 45 53 27 20 58 20 50 4F 53 49 54 49 4F |RITES' X POSITIO|
00001FF0: 4E 53 0D 20 20 20 20 20 20 20 20 4C 44 41 20 D0 |NS. LDA .|
00002000: 4F 49 4E 54 45 52 D8 4E 4F 57 0D 20 20 20 20 20 |OINTER.NOW. |
00002010: 20 20 20 43 4C 43 0D 20 20 20 20 20 20 20 20 41 | CLC. A|
00002020: 44 43 20 23 D3 50 52 49 54 45 CF 46 46 53 45 54 |DC #.PRITE.FFSET|
00002030: 5F D8 0D 20 20 20 20 20 20 20 20 53 54 41 20 D3 |_.. STA .|
00002040: 50 52 49 54 45 C1 5F D8 3B 20 53 45 54 20 42 4F |PRITE._.; SET BO|
00002050: 54 48 20 53 50 52 49 54 45 53 0D 20 20 20 20 20 |TH SPRITES. |
00002060: 20 20 20 53 54 41 20 D3 50 52 49 54 45 C2 5F D8 | STA .PRITE._.|
00002070: 0D 20 20 20 20 20 20 20 20 4C 44 41 20 D3 50 52 |. LDA .PR|
00002080: 49 54 45 53 5F CF C6 3B 20 47 45 54 20 58 20 4F |ITES_..; GET X O|
00002090: 56 45 52 46 4C 4F 57 0D 20 20 20 20 20 20 20 20 |VERFLOW. |
000020A0: 42 43 53 20 D3 45 54 CF C6 0D 20 20 20 20 20 20 |BCS .ET... |
000020B0: 20 20 4C 44 58 20 D0 4F 49 4E 54 45 52 D8 4E 4F | LDX .OINTER.NO|
000020C0: 57 2B 31 0D 20 20 20 20 20 20 20 20 42 4E 45 20 |W+1. BNE |
000020D0: D3 45 54 CF C6 0D 20 20 20 20 20 20 20 20 41 4E |.ET... AN|
000020E0: 44 20 23 D3 50 52 49 54 45 53 5F C2 49 54 4D 41 |D #.PRITES_.ITMA|
000020F0: 53 4B 20 C5 CF D2 20 24 46 46 0D 20 20 20 20 20 |SK ... $FF. |
00002100: 20 20 20 42 43 43 20 D3 54 4F 52 45 CF C6 3B 20 | BCC .TORE..; |
00002110: C3 20 49 53 20 43 4C 45 41 52 20 48 45 52 45 0D |. IS CLEAR HERE.|
00002120: 0D D3 45 54 CF C6 20 20 20 4F 52 41 20 23 D3 50 |..ET.. ORA #.P|
00002130: 52 49 54 45 53 5F C2 49 54 4D 41 53 4B 0D D3 54 |RITES_.ITMASK..T|
00002140: 4F 52 45 CF C6 20 53 54 41 20 D3 50 52 49 54 45 |ORE.. STA .PRITE|
00002150: 53 5F CF C6 3B 20 53 45 54 20 58 20 4F 56 45 52 |S_..; SET X OVER|
00002160: 46 4C 4F 57 0D 0D 3B 20 D3 45 54 20 53 50 52 49 |FLOW..; .ET SPRI|
00002170: 54 45 53 27 20 59 20 50 4F 53 49 54 49 4F 4E 53 |TES' Y POSITIONS|
00002180: 0D 20 20 20 20 20 20 20 20 4C 44 41 20 D0 4F 49 |. LDA .OI|
00002190: 4E 54 45 52 D9 4E 4F 57 0D 20 20 20 20 20 20 20 |NTER.NOW. |
000021A0: 20 43 4C 43 0D 20 20 20 20 20 20 20 20 41 44 43 | CLC. ADC|
000021B0: 20 23 D3 50 52 49 54 45 CF 46 46 53 45 54 5F D9 | #.PRITE.FFSET_.|
000021C0: 0D 20 20 20 20 20 20 20 20 53 54 41 20 D3 50 52 |. STA .PR|
000021D0: 49 54 45 C1 5F D9 0D 20 20 20 20 20 20 20 20 53 |ITE._.. S|
000021E0: 54 41 20 D3 50 52 49 54 45 C2 5F D9 0D 3B 20 D4 |TA .PRITE._..; .|
000021F0: 48 45 20 59 20 56 41 4C 55 45 27 53 20 48 49 47 |HE Y VALUE'S HIG|
00002200: 48 20 42 59 54 45 20 49 53 20 55 53 45 4C 45 53 |H BYTE IS USELES|
00002210: 53 20 49 4E 0D 3B 20 54 48 49 53 20 43 41 53 45 |S IN.; THIS CASE|
00002220: 2E 0D 0D 0D 3B 20 2D 2D 2D 20 D0 41 52 54 20 38 |....; --- .ART 8|
00002230: 2C 20 4D 41 4B 49 4E 47 20 43 48 41 52 20 43 4F |, MAKING CHAR CO|
00002240: 4F 52 44 49 4E 41 54 45 53 0D 0D 3B 20 C3 4F 4E |ORDINATES..; .ON|
00002250: 56 45 52 54 20 58 20 43 4F 4F 52 44 49 4E 41 54 |VERT X COORDINAT|
00002260: 45 2E 20 D4 48 45 52 45 20 41 52 45 0D 3B 20 44 |E. .HERE ARE.; D|
00002270: 49 46 46 45 52 45 4E 54 20 22 42 45 53 54 22 20 |IFFERENT "BEST" |
00002280: 52 4F 55 54 49 4E 45 53 20 46 4F 52 0D 3B 20 44 |ROUTINES FOR.; D|
00002290: 49 46 46 45 52 45 4E 54 20 52 45 53 4F 4C 55 54 |IFFERENT RESOLUT|
000022A0: 49 4F 4E 53 2C 20 53 4F 20 C9 27 56 45 20 47 49 |IONS, SO .'VE GI|
000022B0: 56 45 4E 0D 3B 20 54 48 45 20 D6 C9 C3 20 41 4E |VEN.; THE ... AN|
000022C0: 44 20 D6 C4 C3 20 52 4F 55 54 49 4E 45 53 2E 0D |D ... ROUTINES..|
000022D0: 20 20 20 20 20 20 20 20 4C 44 41 20 D0 4F 49 4E | LDA .OIN|
000022E0: 54 45 52 D8 4E 4F 57 0D 20 20 20 20 20 20 20 20 |TER.NOW. |
000022F0: 4C 53 52 0D 20 20 20 20 20 20 20 20 4C 53 52 0D |LSR. LSR.|
00002300: 20 20 20 20 20 20 20 20 4C 53 52 0D 20 20 20 20 | LSR. |
00002310: 20 20 20 20 4C 44 58 20 D0 4F 49 4E 54 45 52 D8 | LDX .OINTER.|
00002320: 4E 4F 57 2B 31 0D 20 20 20 20 20 20 20 20 42 45 |NOW+1. BE|
00002330: 51 20 D3 45 54 C3 D8 3B 20 D6 C9 C3 20 4F 4E 4C |Q .ET..; ... ONL|
00002340: 59 0D 20 20 20 20 20 20 20 20 4F 52 41 20 23 24 |Y. ORA #$|
00002350: 32 30 3B 20 D6 C9 C3 20 4F 4E 4C 59 0D 3B 20 20 |20; ... ONLY.; |
00002360: 20 20 20 20 20 4F 52 41 20 CF 52 D4 41 42 4C 45 | ORA .R.ABLE|
00002370: 2C 58 3B 20 D6 C4 C3 20 4F 4E 4C 59 0D D3 45 54 |,X; ... ONLY..ET|
00002380: C3 D8 20 20 20 53 54 41 20 C3 48 41 52 D8 0D 0D |.. STA .HAR...|
00002390: 3B 20 C3 4F 4E 56 45 52 54 20 59 20 43 4F 4F 52 |; .ONVERT Y COOR|
000023A0: 44 49 4E 41 54 45 2E 0D 20 20 20 20 20 20 20 20 |DINATE.. |
000023B0: 4C 44 41 20 D0 4F 49 4E 54 45 52 D9 4E 4F 57 0D |LDA .OINTER.NOW.|
000023C0: 20 20 20 20 20 20 20 20 4C 53 52 0D 20 20 20 20 | LSR. |
000023D0: 20 20 20 20 4C 53 52 0D 20 20 20 20 20 20 20 20 | LSR. |
000023E0: 4C 53 52 0D 20 20 20 20 20 20 20 20 53 54 41 20 |LSR. STA |
000023F0: C3 48 41 52 D9 0D 0D 0D 3B 20 2D 2D 2D 20 C1 44 |.HAR....; --- .D|
00002400: 44 20 46 55 52 54 48 45 52 20 50 41 52 54 53 20 |D FURTHER PARTS |
00002410: 48 45 52 45 0D 0D 3B 20 C8 45 52 45 20 59 4F 55 |HERE..; .ERE YOU|
00002420: 20 43 41 4E 20 41 44 44 20 46 55 52 54 48 45 52 | CAN ADD FURTHER|
00002430: 20 52 4F 55 54 49 4E 45 53 2C 0D 3B 20 46 4F 52 | ROUTINES,.; FOR|
00002440: 20 45 58 41 4D 50 4C 45 20 54 4F 20 55 53 45 20 | EXAMPLE TO USE |
00002450: 54 48 45 20 42 55 54 54 4F 4E 20 53 54 41 54 45 |THE BUTTON STATE|
00002460: 53 0D 3B 20 54 4F 20 46 41 4B 45 20 4B 45 59 50 |S.; TO FAKE KEYP|
00002470: 52 45 53 53 45 53 20 45 54 43 2E 0D 0D 0D 3B 20 |RESSES ETC....; |
00002480: 2D 2D 2D 20 D4 48 45 20 45 4E 44 0D 0D 3B 20 D4 |--- .HE END..; .|
00002490: 48 45 20 49 4E 49 54 49 41 4C 49 53 41 54 49 4F |HE INITIALISATIO|
000024A0: 4E 20 52 4F 55 54 49 4E 45 20 53 45 54 53 20 54 |N ROUTINE SETS T|
000024B0: 48 45 0D 3B 20 41 52 47 55 4D 45 4E 54 20 54 4F |HE.; ARGUMENT TO|
000024C0: 20 54 48 45 20 41 44 44 52 45 53 53 20 4F 46 20 | THE ADDRESS OF |
000024D0: 54 48 45 0D 3B 20 50 52 45 56 49 4F 55 53 20 C9 |THE.; PREVIOUS .|
000024E0: D2 D1 20 52 4F 55 54 49 4E 45 2E 0D 4D 4F 44 31 |.. ROUTINE..MOD1|
000024F0: 36 20 20 20 4A 4D 50 20 24 46 46 46 46 3B 20 28 |6 JMP $FFFF; (|
00002500: 53 45 4C 46 2D 4D 4F 44 49 46 59 49 4E 47 29 0D |SELF-MODIFYING).|
00002510: 0D 3B 20 D4 48 49 53 20 54 41 42 4C 45 20 49 53 |.; .HIS TABLE IS|
00002520: 20 46 4F 52 20 50 41 52 54 20 38 2E 0D 3B CF 52 | FOR PART 8..;.R|
00002530: D4 41 42 4C 45 20 21 42 59 54 45 20 30 2C 33 32 |.ABLE !BYTE 0,32|
00002540: 2C 36 34 3B 20 D6 C4 C3 20 4F 4E 4C 59 0D 0D 0D |,64; ... ONLY...|
00002550: 3B 20 2D 2D 2D 20 22 D2 45 53 54 52 49 43 54 22 |; --- ".ESTRICT"|
00002560: 20 53 55 42 52 4F 55 54 49 4E 45 0D 0D D0 4F 49 | SUBROUTINE...OI|
00002570: 4E 54 45 52 D8 4D 41 58 20 21 57 4F 52 44 20 CD |NTER.MAX !WORD .|
00002580: 41 58 49 4D 55 4D C3 4F 4F 52 44 49 4E 41 54 45 |AXIMUM.OORDINATE|
00002590: D8 0D D0 4F 49 4E 54 45 52 D9 4D 41 58 20 21 57 |...OINTER.MAX !W|
000025A0: 4F 52 44 20 CD 41 58 49 4D 55 4D C3 4F 4F 52 44 |ORD .AXIMUM.OORD|
000025B0: 49 4E 41 54 45 D9 0D 3B 20 22 59 22 20 57 4F 52 |INATE..; "Y" WOR|
000025C0: 44 20 4D 55 53 54 20 46 4F 4C 4C 4F 57 20 44 49 |D MUST FOLLOW DI|
000025D0: 52 45 43 54 4C 59 20 41 46 54 45 52 0D 3B 20 22 |RECTLY AFTER.; "|
000025E0: 58 22 20 57 4F 52 44 20 49 4E 20 4D 45 4D 4F 52 |X" WORD IN MEMOR|
000025F0: 59 2E 0D 0D D2 45 53 54 52 49 43 54 0D 3B 20 D2 |Y....ESTRICT.; .|
00002600: 45 53 54 52 49 43 54 20 49 4E 54 45 52 4E 41 4C |ESTRICT INTERNAL|
00002610: 20 43 4F 4F 52 44 49 4E 41 54 45 53 20 54 4F 0D | COORDINATES TO.|
00002620: 3B 20 43 4F 4E 46 49 47 55 52 45 44 20 52 41 4E |; CONFIGURED RAN|
00002630: 47 45 2E 20 C5 4E 54 52 59 20 43 4F 4E 44 49 54 |GE. .NTRY CONDIT|
00002640: 49 4F 4E 53 3A 0D 3B 20 D8 20 49 53 20 44 49 52 |IONS:.; . IS DIR|
00002650: 45 43 54 49 4F 4E 20 48 41 4E 44 4C 45 20 28 30 |ECTION HANDLE (0|
00002660: 20 3D 20 58 2C 20 32 20 3D 20 59 29 0D 20 20 20 | = X, 2 = Y). |
00002670: 20 20 20 20 20 4C 44 41 20 D0 4F 49 4E 54 45 52 | LDA .OINTER|
00002680: D8 4E 4F 57 2B 31 2C 58 0D 20 20 20 20 20 20 20 |.NOW+1,X. |
00002690: 20 42 4D 49 20 D3 45 54 D4 4F 30 0D 20 20 20 20 | BMI .ET.O0. |
000026A0: 20 20 20 20 43 4D 50 20 D0 4F 49 4E 54 45 52 D8 | CMP .OINTER.|
000026B0: 4D 41 58 2B 31 2C 58 0D 20 20 20 20 20 20 20 20 |MAX+1,X. |
000026C0: 42 43 43 20 C5 4F 53 52 0D 20 20 20 20 20 20 20 |BCC .OSR. |
000026D0: 20 42 4E 45 20 D2 45 53 45 54 C3 4F 0D 20 20 20 | BNE .ESET.O. |
000026E0: 20 20 20 20 20 4C 44 41 20 D0 4F 49 4E 54 45 52 | LDA .OINTER|
000026F0: D8 4D 41 58 2C 58 0D 20 20 20 20 20 20 20 20 43 |.MAX,X. C|
00002700: 4D 50 20 D0 4F 49 4E 54 45 52 D8 4E 4F 57 2C 58 |MP .OINTER.NOW,X|
00002710: 0D 20 20 20 20 20 20 20 20 42 43 53 20 C5 4F 53 |. BCS .OS|
00002720: 52 0D D2 45 53 45 54 C3 4F 20 4C 44 41 20 D0 4F |R..ESET.O LDA .O|
00002730: 49 4E 54 45 52 D8 4D 41 58 2C 58 0D 20 20 20 20 |INTER.MAX,X. |
00002740: 20 20 20 20 4C 44 59 20 D0 4F 49 4E 54 45 52 D8 | LDY .OINTER.|
00002750: 4D 41 58 2B 31 2C 58 0D 20 20 20 20 20 20 20 20 |MAX+1,X. |
00002760: 4A 4D 50 20 C4 45 46 C3 4F 0D 0D D3 45 54 D4 4F |JMP .EF.O...ET.O|
00002770: 30 20 20 4C 44 41 20 23 30 0D 20 20 20 20 20 20 |0 LDA #0. |
00002780: 20 20 54 41 59 0D C4 45 46 C3 4F 20 20 20 53 54 | TAY..EF.O ST|
00002790: 41 20 D0 4F 49 4E 54 45 52 D8 4E 4F 57 2C 58 0D |A .OINTER.NOW,X.|
000027A0: 20 20 20 20 20 20 20 20 53 54 59 20 D0 4F 49 4E | STY .OIN|
000027B0: 54 45 52 D8 4E 4F 57 2B 31 2C 58 0D C5 4F 53 52 |TER.NOW+1,X..OSR|
000027C0: 20 20 20 20 52 54 53 0D 0D 0D 3B 20 2D 2D 2D 20 | RTS...; --- |
000027D0: 22 D0 4F 54 22 20 53 55 42 52 4F 55 54 49 4E 45 |".OT" SUBROUTINE|
000027E0: 0D 0D 3B 20 D4 48 49 53 20 52 4F 55 54 49 4E 45 |..; .HIS ROUTINE|
000027F0: 20 43 4F 4D 50 55 54 45 53 20 54 48 45 20 4D 4F | COMPUTES THE MO|
00002800: 55 53 45 0D 3B 20 4D 4F 56 45 4D 45 4E 54 53 20 |USE.; MOVEMENTS |
00002810: 41 4E 44 20 54 48 45 52 45 46 4F 52 45 20 43 4F |AND THEREFORE CO|
00002820: 4E 54 41 49 4E 53 20 54 48 45 0D 3B 20 53 45 4C |NTAINS THE.; SEL|
00002830: 46 2D 43 41 4C 49 42 52 41 54 49 4F 4E 20 53 54 |F-CALIBRATION ST|
00002840: 55 46 46 20 41 4E 44 20 54 48 45 20 4F 54 48 45 |UFF AND THE OTHE|
00002850: 52 0D 3B 20 49 4D 50 52 4F 56 45 4D 45 4E 54 53 |R.; IMPROVEMENTS|
00002860: 20 4F 56 45 52 20 54 48 45 20 53 54 41 4E 44 41 | OVER THE STANDA|
00002870: 52 44 20 31 33 35 31 0D 3B 20 44 52 49 56 45 52 |RD 1351.; DRIVER|
00002880: 2E 0D D0 4F 54 CD 41 58 20 21 57 4F 52 44 20 30 |...OT.AX !WORD 0|
00002890: 3B 20 4D 41 58 2E 20 D0 CF D4 53 20 59 45 54 20 |; MAX. ...S YET |
000028A0: 50 4C 55 53 20 31 20 21 0D D0 4F 54 CD 49 4E 20 |PLUS 1 !..OT.IN |
000028B0: 21 57 4F 52 44 20 24 46 46 46 46 3B 20 4C 4F 57 |!WORD $FFFF; LOW|
000028C0: 45 53 54 20 D0 CF D4 53 20 59 45 54 0D D0 4F 54 |EST ...S YET..OT|
000028D0: CF 4C 44 20 21 57 4F 52 44 20 30 3B 20 4F 4C 44 |.LD !WORD 0; OLD|
000028E0: 20 56 41 4C 55 45 53 0D D0 4F 54 D7 49 44 54 48 | VALUES..OT.IDTH|
000028F0: 20 21 57 4F 52 44 20 30 3B 20 49 4E 54 45 52 56 | !WORD 0; INTERV|
00002900: 41 4C 20 57 49 44 54 48 0D C8 41 4C 46 D0 4F 54 |AL WIDTH..ALF.OT|
00002910: D7 49 44 54 48 20 21 57 4F 52 44 20 30 3B 20 48 |.IDTH !WORD 0; H|
00002920: 41 4C 46 20 57 49 44 54 48 0D 3B 20 28 42 55 46 |ALF WIDTH.; (BUF|
00002930: 46 45 52 45 44 20 46 4F 52 20 53 50 45 45 44 20 |FERED FOR SPEED |
00002940: 49 4E 43 52 45 41 53 45 29 0D 3B 20 D4 48 45 20 |INCREASE).; .HE |
00002950: 41 42 4F 56 45 20 56 41 52 49 41 42 4C 45 53 20 |ABOVE VARIABLES |
00002960: 41 52 45 20 4E 4F 54 20 52 45 41 4C 4C 59 0D 3B |ARE NOT REALLY.;|
00002970: 20 57 4F 52 44 53 3A 20 D4 48 45 20 46 49 52 53 | WORDS: .HE FIRS|
00002980: 54 20 42 59 54 45 20 49 53 20 54 48 45 20 58 20 |T BYTE IS THE X |
00002990: 56 41 4C 55 45 2C 0D 3B 20 54 48 45 20 53 45 43 |VALUE,.; THE SEC|
000029A0: 4F 4E 44 20 42 59 54 45 20 49 53 20 54 48 45 20 |OND BYTE IS THE |
000029B0: 59 20 56 41 4C 55 45 0D 3B 20 52 45 53 50 45 43 |Y VALUE.; RESPEC|
000029C0: 54 49 56 45 4C 59 2E 0D 0D D0 4F 54 C4 45 4C 54 |TIVELY....OT.ELT|
000029D0: 41 0D 3B 20 C3 4F 4D 50 55 54 45 20 54 48 45 20 |A.; .OMPUTE THE |
000029E0: 53 49 47 4E 45 44 20 44 49 53 54 41 4E 43 45 20 |SIGNED DISTANCE |
000029F0: 4F 46 20 4D 4F 55 53 45 0D 3B 20 4D 4F 56 45 4D |OF MOUSE.; MOVEM|
00002A00: 45 4E 54 2E 20 C5 4E 54 52 59 20 43 4F 4E 44 49 |ENT. .NTRY CONDI|
00002A10: 54 49 4F 4E 53 3A 0D 3B 20 D8 20 49 53 20 44 49 |TIONS:.; . IS DI|
00002A20: 52 45 43 54 49 4F 4E 20 48 41 4E 44 4C 45 20 28 |RECTION HANDLE (|
00002A30: 30 20 3D 20 58 2C 20 31 20 3D 20 59 29 0D 3B 20 |0 = X, 1 = Y).; |
00002A40: C5 58 49 54 20 43 4F 4E 44 49 54 49 4F 4E 53 3A |.XIT CONDITIONS:|
00002A50: 0D 3B 20 C1 2F D9 20 41 52 45 20 53 49 47 4E 45 |.; ./. ARE SIGNE|
00002A60: 44 20 44 49 53 54 41 4E 43 45 20 28 4C 4F 57 2F |D DISTANCE (LOW/|
00002A70: 48 49 47 48 29 0D 0D 3B 20 C6 49 52 53 54 2C 20 |HIGH)..; .IRST, |
00002A80: 47 45 54 20 4E 45 57 20 56 41 4C 55 45 20 41 4E |GET NEW VALUE AN|
00002A90: 44 20 43 4C 45 41 52 0D 3B 20 22 52 45 43 41 4C |D CLEAR.; "RECAL|
00002AA0: 43 55 4C 41 54 45 20 53 49 47 4E 41 4C 20 57 49 |CULATE SIGNAL WI|
00002AB0: 44 54 48 22 20 46 4C 41 47 2E 0D 20 20 20 20 20 |DTH" FLAG.. |
00002AC0: 20 20 20 4C 44 41 20 53 49 44 5F 50 4F 54 2C 58 | LDA SID_POT,X|
00002AD0: 0D 20 20 20 20 20 20 20 20 4C 44 59 20 23 24 30 |. LDY #$0|
00002AE0: 30 0D 3B 20 C3 48 45 43 4B 20 57 48 45 54 48 45 |0.; .HECK WHETHE|
00002AF0: 52 20 4E 45 57 20 56 41 4C 55 45 20 49 53 20 4C |R NEW VALUE IS L|
00002B00: 4F 57 45 52 20 54 48 41 4E 0D 3B 20 4C 4F 57 45 |OWER THAN.; LOWE|
00002B10: 53 54 20 4B 4E 4F 57 4E 2E 0D 20 20 20 20 20 20 |ST KNOWN.. |
00002B20: 20 20 43 4D 50 20 D0 4F 54 CD 49 4E 2C 58 0D 20 | CMP .OT.IN,X. |
00002B30: 20 20 20 20 20 20 20 42 43 53 20 4D 30 0D 3B 20 | BCS M0.; |
00002B40: D3 54 4F 52 45 20 4E 45 57 20 22 4C 4F 57 45 53 |.TORE NEW "LOWES|
00002B50: 54 22 20 55 4E 44 20 53 45 54 0D 3B 20 22 52 45 |T" UND SET.; "RE|
00002B60: 43 41 4C 43 55 4C 41 54 45 20 53 49 47 4E 41 4C |CALCULATE SIGNAL|
00002B70: 20 57 49 44 54 48 22 20 46 4C 41 47 2E 0D 20 20 | WIDTH" FLAG.. |
00002B80: 20 20 20 20 20 20 53 54 41 20 D0 4F 54 CD 49 4E | STA .OT.IN|
00002B90: 2C 58 0D 20 20 20 20 20 20 20 20 4C 44 59 20 23 |,X. LDY #|
00002BA0: 24 46 46 0D 0D 3B 20 C3 48 45 43 4B 20 57 48 45 |$FF..; .HECK WHE|
00002BB0: 54 48 45 52 20 4E 45 57 20 56 41 4C 55 45 20 49 |THER NEW VALUE I|
00002BC0: 53 20 48 49 47 48 45 52 0D 3B 20 54 48 41 4E 20 |S HIGHER.; THAN |
00002BD0: 48 49 47 48 45 53 54 20 4B 4E 4F 57 4E 2E 0D 4D |HIGHEST KNOWN..M|
00002BE0: 30 20 20 20 20 20 20 43 4D 50 20 D0 4F 54 CD 41 |0 CMP .OT.A|
00002BF0: 58 2C 58 0D 20 20 20 20 20 20 20 20 42 43 43 20 |X,X. BCC |
00002C00: 4D 31 0D 3B 20 D3 45 54 20 22 52 45 43 41 4C 43 |M1.; .ET "RECALC|
00002C10: 55 4C 41 54 45 20 53 49 47 4E 41 4C 20 57 49 44 |ULATE SIGNAL WID|
00002C20: 54 48 22 20 46 4C 41 47 0D 3B 20 41 4E 44 20 53 |TH" FLAG.; AND S|
00002C30: 54 4F 52 45 20 4E 45 57 20 22 48 49 47 48 45 53 |TORE NEW "HIGHES|
00002C40: 54 22 2E 0D 20 20 20 20 20 20 20 20 4C 44 59 20 |T".. LDY |
00002C50: 23 24 46 46 0D 20 20 20 20 20 20 20 20 50 48 41 |#$FF. PHA|
00002C60: 3B 20 D2 45 4D 45 4D 42 45 52 20 43 55 52 52 45 |; .EMEMBER CURRE|
00002C70: 4E 54 20 56 41 4C 55 45 0D 20 20 20 20 20 20 20 |NT VALUE. |
00002C80: 20 41 44 43 20 23 24 30 30 3B 20 C1 44 44 20 4F | ADC #$00; .DD O|
00002C90: 4E 45 20 28 C3 20 49 53 20 53 45 54 29 0D 20 20 |NE (. IS SET). |
00002CA0: 20 20 20 20 20 20 53 54 41 20 D0 4F 54 CD 41 58 | STA .OT.AX|
00002CB0: 2C 58 0D 3B 20 D6 41 4C 55 45 20 24 46 46 20 28 |,X.; .ALUE $FF (|
00002CC0: 30 20 41 46 54 45 52 20 41 44 44 49 4E 47 29 20 |0 AFTER ADDING) |
00002CD0: 4D 45 41 4E 53 20 54 48 41 54 0D 3B 20 54 48 45 |MEANS THAT.; THE|
00002CE0: 52 45 20 49 53 20 4E 4F 20 4D 4F 55 53 45 20 43 |RE IS NO MOUSE C|
00002CF0: 4F 4E 4E 45 43 54 45 44 2C 20 53 4F 20 52 45 53 |ONNECTED, SO RES|
00002D00: 45 54 0D 3B 20 4D 49 4E 2F 4D 41 58 20 49 4E 20 |ET.; MIN/MAX IN |
00002D10: 54 48 41 54 20 43 41 53 45 2E 0D 20 20 20 20 20 |THAT CASE.. |
00002D20: 20 20 20 42 45 51 20 D2 45 53 45 54 CD CD 3B 20 | BEQ .ESET..; |
00002D30: D3 54 41 43 4B 20 49 53 20 55 4E 54 49 44 59 2E |.TACK IS UNTIDY.|
00002D40: 2E 2E 0D 20 20 20 20 20 20 20 20 50 4C 41 3B 20 |... PLA; |
00002D50: D2 45 53 54 4F 52 45 20 43 55 52 52 45 4E 54 20 |.ESTORE CURRENT |
00002D60: 56 41 4C 55 45 0D 0D 3B 20 C9 46 20 46 4C 41 47 |VALUE..; .F FLAG|
00002D70: 20 49 53 20 53 45 54 2C 20 52 45 43 41 4C 43 55 | IS SET, RECALCU|
00002D80: 4C 41 54 45 20 53 49 47 4E 41 4C 0D 3B 20 57 49 |LATE SIGNAL.; WI|
00002D90: 44 54 48 2E 0D 4D 31 0D 20 20 20 20 20 20 20 20 |DTH..M1. |
00002DA0: 49 4E 59 3B 20 C3 48 45 43 4B 20 46 4C 41 47 0D |INY; .HECK FLAG.|
00002DB0: 20 20 20 20 20 20 20 20 42 4E 45 20 4D 33 0D 20 | BNE M3. |
00002DC0: 20 20 20 20 20 20 20 54 41 59 3B 20 C2 55 46 46 | TAY; .UFF|
00002DD0: 45 52 20 43 55 52 52 45 4E 54 20 56 41 4C 55 45 |ER CURRENT VALUE|
00002DE0: 2E 0D 20 20 20 20 20 20 20 20 4C 44 41 20 D0 4F |.. LDA .O|
00002DF0: 54 CD 41 58 2C 58 3B 20 C7 45 54 20 48 49 47 48 |T.AX,X; .ET HIGH|
00002E00: 45 53 54 2B 31 0D 20 20 20 20 20 20 20 20 53 45 |EST+1. SE|
00002E10: 43 3B 20 D3 55 42 54 52 41 43 54 20 4C 4F 57 45 |C; .UBTRACT LOWE|
00002E20: 53 54 0D 20 20 20 20 20 20 20 20 53 42 43 20 D0 |ST. SBC .|
00002E30: 4F 54 CD 49 4E 2C 58 0D 20 20 20 20 20 20 20 20 |OT.IN,X. |
00002E40: 42 43 43 20 4D 32 0D 20 20 20 20 20 20 20 20 53 |BCC M2. S|
00002E50: 54 41 20 D0 4F 54 D7 49 44 54 48 2C 58 3B 20 D3 |TA .OT.IDTH,X; .|
00002E60: 54 4F 52 45 20 53 49 47 4E 41 4C 0D 20 20 20 20 |TORE SIGNAL. |
00002E70: 20 20 20 20 4C 53 52 3B 20 57 49 44 54 48 20 41 | LSR; WIDTH A|
00002E80: 4E 44 20 48 41 4C 46 20 53 49 47 4E 41 4C 0D 20 |ND HALF SIGNAL. |
00002E90: 20 20 20 20 20 20 20 53 54 41 20 C8 41 4C 46 D0 | STA .ALF.|
00002EA0: 4F 54 D7 49 44 54 48 2C 58 3B 20 57 49 44 54 48 |OT.IDTH,X; WIDTH|
00002EB0: 0D 4D 32 20 20 20 20 20 20 54 59 41 3B 20 D2 45 |.M2 TYA; .E|
00002EC0: 53 54 4F 52 45 20 43 55 52 52 45 4E 54 20 56 41 |STORE CURRENT VA|
00002ED0: 4C 55 45 2E 0D 0D 3B 20 C3 41 4C 43 55 4C 41 54 |LUE...; .ALCULAT|
00002EE0: 45 20 44 49 53 54 41 4E 43 45 0D 4D 33 20 20 20 |E DISTANCE.M3 |
00002EF0: 20 20 20 54 41 59 3B 20 C2 55 46 46 45 52 20 43 | TAY; .UFFER C|
00002F00: 55 52 52 45 4E 54 20 56 41 4C 55 45 2E 0D 20 20 |URRENT VALUE.. |
00002F10: 20 20 20 20 20 20 53 45 43 0D 20 20 20 20 20 20 | SEC. |
00002F20: 20 20 53 42 43 20 D0 4F 54 CF 4C 44 2C 58 0D 20 | SBC .OT.LD,X. |
00002F30: 20 20 20 20 20 20 20 50 48 41 0D 20 20 20 20 20 | PHA. |
00002F40: 20 20 20 54 59 41 0D 20 20 20 20 20 20 20 20 53 | TYA. S|
00002F50: 54 41 20 D0 4F 54 CF 4C 44 2C 58 0D 20 20 20 20 |TA .OT.LD,X. |
00002F60: 20 20 20 20 50 4C 41 0D 20 20 20 20 20 20 20 20 | PLA. |
00002F70: 42 45 51 20 5A 45 52 4F 3B 20 C9 46 20 4E 4F 54 |BEQ ZERO; .F NOT|
00002F80: 20 4D 4F 56 45 44 2C 20 45 58 49 54 2E 0D 20 20 | MOVED, EXIT.. |
00002F90: 20 20 20 20 20 20 42 43 43 20 4D 49 4E 55 53 3B | BCC MINUS;|
00002FA0: 20 CE 45 47 41 54 49 56 45 20 44 49 46 46 45 52 | .EGATIVE DIFFER|
00002FB0: 45 4E 43 45 0D 0D 3B 20 D0 4F 53 49 54 49 56 45 |ENCE..; .OSITIVE|
00002FC0: 20 44 49 46 46 45 52 45 4E 43 45 3A 0D 3B 20 C3 | DIFFERENCE:.; .|
00002FD0: 48 45 43 4B 20 57 48 45 54 48 45 52 20 4D 4F 56 |HECK WHETHER MOV|
00002FE0: 45 4D 45 4E 54 20 43 41 55 53 45 44 20 41 20 56 |EMENT CAUSED A V|
00002FF0: 41 4C 55 45 0D 3B 20 57 52 41 50 2D 41 52 4F 55 |ALUE.; WRAP-AROU|
00003000: 4E 44 2E 0D 20 20 20 20 20 20 20 20 43 4D 50 20 |ND.. CMP |
00003010: C8 41 4C 46 D0 4F 54 D7 49 44 54 48 2C 58 0D 20 |.ALF.OT.IDTH,X. |
00003020: 20 20 20 20 20 20 20 42 43 43 20 C4 45 43 52 45 | BCC .ECRE|
00003030: 41 53 45 0D 20 20 20 20 20 20 20 20 42 45 51 20 |ASE. BEQ |
00003040: C4 45 43 52 45 41 53 45 0D 3B 20 C9 54 20 44 49 |.ECREASE.; .T DI|
00003050: 44 2C 20 53 4F 20 43 41 4C 43 55 4C 41 54 45 20 |D, SO CALCULATE |
00003060: 22 52 45 41 4C 22 20 44 49 53 54 41 4E 43 45 0D |"REAL" DISTANCE.|
00003070: 3B 20 41 4E 44 20 4A 55 4D 50 20 54 4F 20 45 58 |; AND JUMP TO EX|
00003080: 49 54 0D 20 20 20 20 20 20 20 20 3B 53 45 43 3B |IT. ;SEC;|
00003090: 20 C3 20 49 53 20 41 4C 57 41 59 53 20 53 45 54 | . IS ALWAYS SET|
000030A0: 20 48 45 52 45 0D 20 20 20 20 20 20 20 20 53 42 | HERE. SB|
000030B0: 43 20 D0 4F 54 D7 49 44 54 48 2C 58 3B 20 C6 49 |C .OT.IDTH,X; .I|
000030C0: 58 20 44 49 53 54 41 4E 43 45 0D 0D 3B 20 D7 45 |X DISTANCE..; .E|
000030D0: 20 4E 4F 57 20 4B 4E 4F 57 20 54 48 41 54 20 54 | NOW KNOW THAT T|
000030E0: 48 45 20 28 46 49 58 45 44 29 20 44 49 53 54 41 |HE (FIXED) DISTA|
000030F0: 4E 43 45 0D 3B 20 49 53 20 52 45 41 4C 4C 59 20 |NCE.; IS REALLY |
00003100: 4E 45 47 41 54 49 56 45 2C 20 53 4F 20 57 45 20 |NEGATIVE, SO WE |
00003110: 46 49 4E 41 4C 4C 59 0D 3B 20 57 49 50 45 20 4F |FINALLY.; WIPE O|
00003120: 55 54 20 54 48 41 54 20 41 4E 4E 4F 59 49 4E 47 |UT THAT ANNOYING|
00003130: 20 42 49 54 20 30 20 4E 4F 49 53 45 20 42 59 0D | BIT 0 NOISE BY.|
00003140: 3B 20 49 4E 43 52 45 4D 45 4E 54 49 4E 47 20 54 |; INCREMENTING T|
00003150: 48 45 20 56 41 4C 55 45 2E 0D C9 4E 43 52 45 41 |HE VALUE...NCREA|
00003160: 53 45 0D 20 20 20 20 20 20 20 20 3B 43 4C 43 3B |SE. ;CLC;|
00003170: 20 C3 20 49 53 20 41 4C 57 41 59 53 20 43 4C 45 | . IS ALWAYS CLE|
00003180: 41 52 20 48 45 52 45 0D 20 20 20 20 20 20 20 20 |AR HERE. |
00003190: 41 44 43 20 23 24 30 31 0D 20 20 20 20 20 20 20 |ADC #$01. |
000031A0: 20 42 45 51 20 5A 45 52 4F 3B 20 C9 46 20 49 4E | BEQ ZERO; .F IN|
000031B0: 43 52 45 41 53 49 4E 47 0D 3B 20 44 45 4C 49 56 |CREASING.; DELIV|
000031C0: 45 52 53 20 5A 45 52 4F 2C 20 4A 55 4D 50 20 54 |ERS ZERO, JUMP T|
000031D0: 4F 20 5A 45 52 4F 20 48 41 4E 44 4C 45 52 2E 0D |O ZERO HANDLER..|
000031E0: 20 20 20 20 20 20 20 20 4C 44 59 20 23 24 46 46 | LDY #$FF|
000031F0: 3B 20 D3 45 54 20 55 50 20 48 49 47 48 20 42 59 |; .ET UP HIGH BY|
00003200: 54 45 20 46 4F 52 0D 3B 20 4E 45 47 41 54 49 56 |TE FOR.; NEGATIV|
00003210: 45 20 56 41 4C 55 45 53 2E 0D 20 20 20 20 20 20 |E VALUES.. |
00003220: 20 20 52 54 53 0D 0D 3B 20 CE 45 47 41 54 49 56 | RTS..; .EGATIV|
00003230: 45 20 44 49 46 46 45 52 45 4E 43 45 3A 0D 3B 20 |E DIFFERENCE:.; |
00003240: C3 48 45 43 4B 20 57 48 45 54 48 45 52 20 4D 4F |.HECK WHETHER MO|
00003250: 56 45 4D 45 4E 54 20 43 41 55 53 45 44 20 41 20 |VEMENT CAUSED A |
00003260: 56 41 4C 55 45 0D 3B 20 57 52 41 50 2D 41 52 4F |VALUE.; WRAP-ARO|
00003270: 55 4E 44 2E 0D 4D 49 4E 55 53 20 20 20 45 4F 52 |UND..MINUS EOR|
00003280: 20 23 24 46 46 3B 20 C3 4F 4D 50 4C 45 4D 45 4E | #$FF; .OMPLEMEN|
00003290: 54 0D 3B 20 C9 46 20 57 45 20 57 4F 55 4C 44 20 |T.; .F WE WOULD |
000032A0: 44 4F 20 41 20 52 45 41 4C 20 4E 45 47 41 54 49 |DO A REAL NEGATI|
000032B0: 4F 4E 20 28 42 59 0D 3B 20 41 44 44 49 4E 47 20 |ON (BY.; ADDING |
000032C0: 22 31 22 29 2C 20 54 48 45 4E 20 57 45 20 57 4F |"1"), THEN WE WO|
000032D0: 55 4C 44 20 4E 45 45 44 20 54 4F 0D 3B 20 42 52 |ULD NEED TO.; BR|
000032E0: 41 4E 43 48 20 55 53 49 4E 47 20 C2 C3 C3 20 2A |ANCH USING ... *|
000032F0: 41 4E 44 2A 20 C2 C5 D1 2E 20 D3 4F 20 54 48 45 |AND* .... .O THE|
00003300: 0D 3B 20 41 42 4F 56 45 20 57 41 59 20 4D 49 47 |.; ABOVE WAY MIG|
00003310: 48 54 20 42 45 20 48 41 52 44 45 52 20 54 4F 0D |HT BE HARDER TO.|
00003320: 3B 20 55 4E 44 45 52 53 54 41 4E 44 2C 20 42 55 |; UNDERSTAND, BU|
00003330: 54 20 49 54 20 49 53 20 42 4F 54 48 20 53 48 4F |T IT IS BOTH SHO|
00003340: 52 54 45 52 0D 3B 20 2A 41 4E 44 2A 20 46 41 53 |RTER.; *AND* FAS|
00003350: 54 45 52 20 2D 20 57 48 49 43 48 20 C9 20 4C 49 |TER - WHICH . LI|
00003360: 4B 45 2E 20 3A 29 0D 20 20 20 20 20 20 20 20 43 |KE. :). C|
00003370: 4D 50 20 C8 41 4C 46 D0 4F 54 D7 49 44 54 48 2C |MP .ALF.OT.IDTH,|
00003380: 58 0D 20 20 20 20 20 20 20 20 45 4F 52 20 23 24 |X. EOR #$|
00003390: 46 46 3B 20 D2 45 53 54 4F 52 45 20 56 41 4C 55 |FF; .ESTORE VALU|
000033A0: 45 0D 20 20 20 20 20 20 20 20 42 43 43 20 C9 4E |E. BCC .N|
000033B0: 43 52 45 41 53 45 0D 3B 20 CD 4F 56 45 4D 45 4E |CREASE.; .OVEMEN|
000033C0: 54 20 43 41 55 53 45 44 20 41 20 56 41 4C 55 45 |T CAUSED A VALUE|
000033D0: 20 57 52 41 50 2D 41 52 4F 55 4E 44 2C 0D 3B 20 | WRAP-AROUND,.; |
000033E0: 53 4F 20 43 41 4C 43 55 4C 41 54 45 20 22 52 45 |SO CALCULATE "RE|
000033F0: 41 4C 22 20 44 49 53 54 41 4E 43 45 20 41 4E 44 |AL" DISTANCE AND|
00003400: 0D 3B 20 45 58 49 54 2E 0D 20 20 20 20 20 20 20 |.; EXIT.. |
00003410: 20 43 4C 43 0D 20 20 20 20 20 20 20 20 41 44 43 | CLC. ADC|
00003420: 20 D0 4F 54 D7 49 44 54 48 2C 58 3B 20 C6 49 58 | .OT.IDTH,X; .IX|
00003430: 20 44 49 53 54 41 4E 43 45 0D 0D 3B 20 D7 45 20 | DISTANCE..; .E |
00003440: 4E 4F 57 20 4B 4E 4F 57 20 54 48 41 54 20 54 48 |NOW KNOW THAT TH|
00003450: 45 20 28 46 49 58 45 44 29 20 44 49 53 54 41 4E |E (FIXED) DISTAN|
00003460: 43 45 0D 3B 20 49 53 20 52 45 41 4C 4C 59 20 50 |CE.; IS REALLY P|
00003470: 4F 53 49 54 49 56 45 2C 20 53 4F 20 57 45 20 46 |OSITIVE, SO WE F|
00003480: 49 4E 41 4C 4C 59 0D 3B 20 57 49 50 45 20 4F 55 |INALLY.; WIPE OU|
00003490: 54 20 54 48 41 54 20 41 4E 4E 4F 59 49 4E 47 20 |T THAT ANNOYING |
000034A0: 42 49 54 20 30 20 4E 4F 49 53 45 20 42 59 0D 3B |BIT 0 NOISE BY.;|
000034B0: 20 44 45 43 52 45 4D 45 4E 54 49 4E 47 20 54 48 | DECREMENTING TH|
000034C0: 45 20 56 41 4C 55 45 2E 0D C4 45 43 52 45 41 53 |E VALUE...ECREAS|
000034D0: 45 0D 20 20 20 20 20 20 20 20 53 45 43 0D 20 20 |E. SEC. |
000034E0: 20 20 20 20 20 20 53 42 43 20 23 24 30 31 0D 0D | SBC #$01..|
000034F0: 3B 20 CE 4F 20 44 49 46 46 45 52 45 4E 43 45 20 |; .O DIFFERENCE |
00003500: 4F 52 20 50 4F 53 49 54 49 56 45 20 44 49 46 46 |OR POSITIVE DIFF|
00003510: 45 52 45 4E 43 45 3B 0D 3B 20 42 4F 54 48 20 4E |ERENCE;.; BOTH N|
00003520: 45 45 44 20 5A 45 52 4F 20 41 53 20 54 48 45 20 |EED ZERO AS THE |
00003530: 48 49 47 48 20 42 59 54 45 2E 0D 5A 45 52 4F 20 |HIGH BYTE..ZERO |
00003540: 20 20 20 4C 44 59 20 23 30 0D 20 20 20 20 20 20 | LDY #0. |
00003550: 20 20 52 54 53 0D 0D 3B 20 C9 46 20 54 48 45 52 | RTS..; .F THER|
00003560: 45 20 49 53 20 4E 4F 20 4D 4F 55 53 45 2C 20 52 |E IS NO MOUSE, R|
00003570: 45 53 45 54 20 22 4C 4F 57 45 53 54 22 0D 3B 20 |ESET "LOWEST".; |
00003580: 28 22 48 49 47 48 45 53 54 22 20 57 49 4C 4C 20 |("HIGHEST" WILL |
00003590: 48 41 56 45 20 42 45 45 4E 20 52 45 53 45 54 0D |HAVE BEEN RESET.|
000035A0: 3B 20 41 4C 52 45 41 44 59 29 20 41 4E 44 20 52 |; ALREADY) AND R|
000035B0: 45 54 55 52 4E 20 5A 45 52 4F 2E 0D D2 45 53 45 |ETURN ZERO...ESE|
000035C0: 54 CD CD 20 54 41 59 3B 20 D3 45 54 20 D9 20 54 |T.. TAY; .ET . T|
000035D0: 4F 20 5A 45 52 4F 2E 0D 20 20 20 20 20 20 20 20 |O ZERO.. |
000035E0: 50 4C 41 3B 20 D4 49 44 59 20 53 54 41 43 4B 0D |PLA; .IDY STACK.|
000035F0: 20 20 20 20 20 20 20 20 4C 44 41 20 23 24 46 46 | LDA #$FF|
00003600: 3B 20 D2 45 53 45 54 20 22 4C 4F 57 45 53 54 22 |; .ESET "LOWEST"|
00003610: 0D 20 20 20 20 20 20 20 20 53 54 41 20 D0 4F 54 |. STA .OT|
00003620: CD 49 4E 2C 58 0D 20 20 20 20 20 20 20 20 54 59 |.IN,X. TY|
00003630: 41 3B 20 D2 45 54 55 52 4E 20 57 49 54 48 20 C1 |A; .ETURN WITH .|
00003640: 2F D9 20 3D 20 30 0D 20 20 20 20 20 20 20 20 52 |/. = 0. R|
00003650: 54 53 0D 0D 0D 3B 20 2D 2D 2D 20 C9 4E 43 4C 55 |TS...; --- .NCLU|
00003660: 44 45 20 53 50 52 49 54 45 53 0D 0D 3B 20 C2 45 |DE SPRITES..; .E|
00003670: 43 41 55 53 45 20 54 48 45 20 C3 36 34 20 56 45 |CAUSE THE .64 VE|
00003680: 52 53 49 4F 4E 20 43 4F 50 49 45 53 20 54 48 45 |RSION COPIES THE|
00003690: 0D 3B 20 53 50 52 49 54 45 20 44 41 54 41 20 49 |.; SPRITE DATA I|
000036A0: 4E 54 4F 20 54 48 45 20 54 41 50 45 20 42 55 46 |NTO THE TAPE BUF|
000036B0: 46 45 52 20 4F 4E 0D 3B 20 49 4E 49 54 49 41 4C |FER ON.; INITIAL|
000036C0: 49 53 41 54 49 4F 4E 2C 20 54 48 45 20 44 41 54 |ISATION, THE DAT|
000036D0: 41 20 49 53 20 49 4E 43 4C 55 44 45 44 0D 3B 20 |A IS INCLUDED.; |
000036E0: 52 49 47 48 54 20 48 45 52 45 2E 0D 3B 20 C9 4E |RIGHT HERE..; .N|
000036F0: 20 54 48 45 20 C3 31 32 38 20 56 45 52 53 49 4F | THE .128 VERSIO|
00003700: 4E 2C 20 57 45 20 53 4B 49 50 20 4D 45 4D 4F 52 |N, WE SKIP MEMOR|
00003710: 59 0D 3B 20 55 4E 54 49 4C 20 57 45 20 52 45 41 |Y.; UNTIL WE REA|
00003720: 43 48 20 24 30 45 30 30 20 2D 20 54 48 49 53 20 |CH $0E00 - THIS |
00003730: 49 53 20 57 48 45 52 45 0D 3B 20 54 48 45 20 53 |IS WHERE.; THE S|
00003740: 50 52 49 54 45 53 20 41 52 45 20 53 54 4F 52 45 |PRITES ARE STORE|
00003750: 44 20 42 59 20 44 45 46 41 55 4C 54 2E 0D 3B 20 |D BY DEFAULT..; |
00003760: 20 20 20 20 20 20 21 41 4C 49 47 4E 20 24 46 46 | !ALIGN $FF|
00003770: 46 46 2C 24 45 30 30 2C 24 30 3B C3 31 32 38 20 |FF,$E00,$0;.128 |
00003780: 4F 4E 4C 59 0D D3 50 52 49 54 45 53 20 21 42 49 |ONLY..PRITES !BI|
00003790: 4E 41 52 59 20 22 50 4F 49 4E 54 45 52 53 50 52 |NARY "POINTERSPR|
000037A0: 49 54 45 53 22 2C 2C 20 32 0D |ITES",, 2. |
;ACME 0.07...; --- CONFIGURABLE VALUES..
; START ADDRESS.*=$C000; C64 VALUE.;*=$0
C00; C128 VALUE..; OUTPUT FILE NAME.!TO
"INPUTDRV64.BIN"; C64 FILE NAME.;!TO "IN
PUTDRV128.BIN"; C128 FILE NAME..; POINTE
R'S MAXIMUM COORDINATES.MAXIMUMCOORDINAT
EX = 319; VIC VALUE.;MAXIMUMCOORDINATEX
= 639; VDC VALUE.MAXIMUMCOORDINATEY = 19
9..; MAXIMUM STEP SIZE ("SPEED") FOR.; J
OYSTICK ACCELERATION ROUTINE, IN.; PIXEL
S..MAXSTEP = $10; (MAX. $7F)..; DISTANCE
BEFORE ACCELERATION STARTS,.; IN PIXELS
..MAXTIME = $04; (MAX. $7F)..; SPRITES T
O USE FOR OVERLAY POINTER.SPRITE_A = 0.S
PRITE_B = 1..; COORDINATES OF "POINTER P
IXEL" WITHIN.; POINTER SPRITES; ADJUST T
HESE IF YOU.; USE DIFFERENT SPRITES..; (
0,0) IS SPRITE'S UPPER LEFT PIXEL..SPRIT
E_HOTSPOTX = 1.SPRITE_HOTSPOTY = 1..; BA
SE OF VIC REGISTERS TO WRITE TO..VIC_BAS
E = $D000; C64 VALUE.;VIC_BASE = $11D6;
C128 VALUE, LOCATION.; OF MIRROR REGISTE
RS...; LOCATIONS TO STORE BUTTON STATES,
.; $FF = PRESSED, $00 = NOT PRESSED..; M
OUSE USES BOTH BUTTONS, JOYSTICK.; ONLY
USES "LEFTBUTTON"..LEFTBUTTON = $A4; C6
4 VALUE.RIGHTBUTTON = $A5; C64 VALUE.;LE
FTBUTTON = $FA; C128 VALUE.;RIGHTBUTTON
= $FF; C128 VALUE..; LOCATION TO STORE
POINTER'S CURRENT.; PIXEL COORDINATES. T
HE DRIVER CODE.; RELIES ON HAVING *FOUR
CONSECUTIVE*.; BYTES:.; X LOW, X HIGH, Y
LOW, Y HIGH..COORDINATES = $FB; $FB-$FE
..; LOCATION TO STORE POINTER'S CURRENT.
; CHARACTER COORDINATES..CHARX = $B3; C6
4 VALUE.CHARY = $B4; C64 VALUE.;CHARX =
$9B; C128 VALUE.;CHARY = $9C; C128 VALUE
...; --- SYSTEM CONSTANTS..; INTERRUPT V
ECTOR.SYS_IIRQ = $0314..; I/O REGISTERS.
SID_POT = $D419.CIA1_PRA = $DC00.CIA1
_PRB = $DC01.CIA1_DDRB = $DC03.;MMU_CR
= $FF00; C128 ONLY...; --- LABEL DEFI
NITIONS..; NEW NAMES FOR SOME PRECALCULA
TED.; VALUES, ONLY TO IMPROVE READABILIT
Y..; DON'T CHANGE THESE..POINTERXNOW = C
OORDINATES.POINTERYNOW = COORDINATES+2.S
PRITEA_X = VIC_BASE+2*SPRITE_A.SPRITEA_Y
= VIC_BASE+2*SPRITE_A+1.SPRITEB_X = VIC
_BASE+2*SPRITE_B.SPRITEB_Y = VIC_BASE+2*
SPRITE_B+1.SPRITES_OF = VIC_BASE+16; X O
VERFLOW.; THE CHARACTER "^" IN THE FOLLO
WING.; CALCULATION MEANS "TO THE POWER O
F"..; IT IS ACME SYNTAX - IF YOUR ASSEMB
LER.; CANNOT DO THIS, YOU MAY WANT TO US
E.; HARDCODED VALUES HERE INSTEAD OF.; C
ALCULATIONS..SPRITES_BITMASK = 2^SPRITE_
A+2^SPRITE_B.SPRITEOFFSET_X = $18-SPRITE
_HOTSPOTX.SPRITEOFFSET_Y = $32-SPRITE_HO
TSPOTY.; IN THE SPRITE COORDINATE SYSTEM
, THE.; GRAPHICS PIXEL (0,0) HAS THE.; C
OORDINATES ($18,$32), SO THESE ARE.; NEE
DED FOR CONVERTING. BLAME THE VIC....; -
-- ENTRY POINT..; BECAUSE THIS ROUTINE I
S THE FIRST,.; THE FILE CAN BE BOOTED ON
A C128..INIT.; INITIALISATION CODE, INS
TALLS DRIVER.; ON IRQ VECTOR..; FETCH IR
Q VECTOR AND WRITE TO END. LDA SY
S_IIRQ. LDX SYS_IIRQ+1. ST
A MOD16+1. STX MOD16+2.; LET IRQ
VECTOR POINT TO DRIVER CODE. LDA
#<ENTRY. LDX #>ENTRY. PHP.
SEI. STA SYS_IIRQ.
STX SYS_IIRQ+1. PLP.; THE FOLLOW
ING FIVE COMMANDS ARE ONLY.; NEEDED ON T
HE C128..; LDA MMU_CR.; TAY.
; AND #$FE; ACTIVATE I/O CHIPS.;
STA MMU_CR.; INIT MOUSE BUTTONS.
LDA #$11. STA CIA1_PRB.;
STY MMU_CR; C128 ONLY..; THE FOLLOWIN
G THREE MINI-ROUTINES ARE.; ONLY NEEDED
ON THE C64...; COPY SPRITES TO TAPE BUFF
ER. LDX #127.CPLP LDA SPRITES,
X. STA $0340,X. DEX.
BPL CPLP. LDA #SPRITES_BITMASK.
; SET SPRITE BLOCK POINTERS. LDX
#$0D. STX 2040+SPRITE_A. I
NX. STX 2040+SPRITE_B.; ACTIVATE
POINTER SPRITES. ORA VIC_BASE+21.
STA VIC_BASE+21..; FROM HERE ON,
BOTH C64+C128 AGAIN. :). RTS...;
--- VARIABLES..; PIXEL COUNTER BEFORE A
CCELERATING.JOYWAITTIME !BYTE 0...; ---
MAIN CODE..ENTRY.; THE DRIVER CONSISTS O
F SEVERAL.; DISTINCT PARTS. TO MINIMISE.
; PERFORMANCE WASTAGE, YOU SHOULD.; REMO
VE ALL PARTS YOU DON'T NEED FOR.; THE SP
ECIFIC APPLICATION....; --- PART 0, INIT
IALISATIONS..; MAKE SURE DECIMAL MODE IS
OFF. CLD.; SET BUTTON STATES TO
"NOT PRESSED",.; SO THE OTHER PARTS ONLY
HAVE TO DEAL.; WITH SETTING THEM TO "PR
ESSED".. LDA #$00. STA LEF
TBUTTON. STA RIGHTBUTTON...; ---
PART 1, HANDLING MOUSE MOVEMENTS..; MOUS
E X. LDX #$00; 0 MEANS "X STUFF".
JSR POTDELTA.; NOW SIGNED X MOVE
MENT IS IN A/Y..; ADD TO CURRENT X VALUE
.. CLC. ADC POINTERXNOW.
STA POINTERXNOW. TYA.
ADC POINTERXNOW+1. STA POINTERX
NOW+1.; MOUSE Y. LDX #$01; 1 MEAN
S "Y STUFF". JSR POTDELTA.; NOW S
IGNED Y MOVEMENT IS IN A/Y..; MOUSE AND
COMPUTER USE DIFFERENT Y.; DIRECTIONS, S
O DON'T ADD TO, BUT.; SUBTRACT FROM CURR
ENT Y VALUE..; THIS IS A REVERSE SUBTRAC
TION - IT.; MIGHT BE HARDER TO UNDERSTAN
D, BUT IT.; IS FASTER AND SMALLER THAN T
HE USUAL.; WAY.. CLC. SBC
POINTERYNOW. EOR #$FF. STA
POINTERYNOW. TYA. SBC POI
NTERYNOW+1. EOR #$FF. STA
POINTERYNOW+1...; --- PART 2, HANDLING M
OUSE BUTTONS..; PREPARE CIA BY SETTING B
ITS TO INPUT. LDY #$11. ST
Y CIA1_DDRB. LDX #$FF; $FF MEANS
"PRESSED". LDA #$10; CHECK LEFT B
UTTON. BIT CIA1_PRB. BNE N
OTLB. STX LEFTBUTTON; STORE STATE
.NOTLB LDA #$01; CHECK RIGHT BUTTON.
BIT CIA1_PRB. BNE NOTRB.
STX RIGHTBUTTON; STORE STATE.; RESE
T CIA TO NORMAL STATE.NOTRB LDY #$00.
STY CIA1_DDRB...; --- PART 3, HAN
DLING THE JOYSTICK..; FETCH BYTE HOLDING
DIRECTION FLAGS. LDA CIA1_PRA.
TAX; ...AND REMEMBER IT..; CHECK '
UP' DIRECTION. ROR. BCS DO
WN.; SUBTRACT CURRENT STEP SIZE FROM Y.;
VALUE IF NEEDED.. TAY. SE
C. LDA POINTERYNOW. SBC JO
YSTEPSIZE. STA POINTERYNOW.
BCS FIXHIUP. DEC POINTERYNOW+1.
FIXHIUP TYA..; CHECK 'DOWN' DIRECTION.DO
WN ROR. BCS LEFT.; ADD CURRENT
STEP SIZE TO Y VALUE IF.; NEEDED..
TAY. ;CLC; C IS ALWAYS CLEAR H
ERE. LDA POINTERYNOW. ADC
JOYSTEPSIZE. STA POINTERYNOW.
BCC FIXHIDOWN. INC POINTERYNO
W+1.FIXHIDOWN TYA..; CHECK 'LEFT'
DIRECTION.LEFT ROR. BCS RIGHT.
; SUBTRACT CURRENT STEP SIZE FROM X.; VA
LUE IF NEEDED.. TAY. SEC.
LDA POINTERXNOW. SBC JOYST
EPSIZE. STA POINTERXNOW. B
CS FIXHILEFT. DEC POINTERXNOW+1.F
IXHILEFT TYA..; CHECK 'RIGHT' DIRE
CTION.RIGHT ROR. BCS PART3END.;
ADD CURRENT STEP SIZE TO X VALUE IF.; N
EEDED.. TAY. ;CLC; C IS AL
WAYS CLEAR HERE. LDA POINTERXNOW.
ADC JOYSTEPSIZE. STA POIN
TERXNOW. BCC FIXHIRIGHT. I
NC POINTERXNOW+1.FIXHIRIGHT TYA.PAR
T3END...; --- PART 4, HANDLING JOYSTICK
BUTTON.. ROR. BCS PART4END
. LDA #$FF; $FF MEANS "PRESSED".
STA LEFTBUTTON.PART4END...; --- P
ART 5, JOYSTICK ACCELERATION..; RESTORE
JOYSTICK DIRECTION BITS AND.; CHECK WHET
HER TO SET SPEED TO ZERO.. TXA.
AND #$0F; CLEAR UNNEEDED BITS.
CMP #$0F; ANY DIRECTION BIT ?.
BNE INCTEMPO.; NO DIRECTION WAS USED,
SO RESET SPEED.; AND WAIT COUNTER TO NOR
MAL.. LDA #$01. STA JOYSTE
PSIZE. LDA #MAXTIME. STA J
OYWAITTIME. JMP PART5END.INCTEMPO
.; A DIRECTION BIT WAS USED, SO CHECK.;
WHETHER TO ACCELERATE: IF SPEED IS.; ALR
EADY MAXIMUM SPEED, DON'T.; ACCELERATE..
JOYSTEPSIZE=*+1. LDA #$00; (SELF-
MODIFYING).; IF THE VARIABLE "JOYSTEPSIZ
E" WOULD.; HAVE BEEN DEFINED AS A SEPARA
TE.; LOCATION (USING "!BYTE"), IT WOULD.
; HAVE TAKEN A BYTE OF MEMORY. BY.; STOR
ING THE VALUE INSIDE AN LDA.; COMMAND'S
ARGUMENT, WE SAVE THAT ONE.; BYTE. IT MI
GHT MAKE A DIFFERENCE. :). CMP #M
AXSTEP; IF SPEED IS MAX.,. BCS PA
RT5END; DON'T ACCELERATE..; SPEED ISN'T
MAXIMUM YET. CHECK.; WHETHER WE HAVE TO
WAIT BEFORE.; ACCELERATING.. DEC
JOYWAITTIME. BPL PART5END.; COUNT
ER HAS UNDERRUN, SO ACCELERATE..
INC JOYWAITTIME; RESET COUNTER. I
NC JOYSTEPSIZE; INCREASE SPEED.PART5END.
..; --- PART 6, RESTRICT COORDINATE RANG
E..; RESTRICT X VALUE. LDX #$00;
0 MEANS "X STUFF". JSR RESTRICT.;
RESTRICT Y VALUE. LDX #$02; 2 ME
ANS "Y STUFF". JSR RESTRICT...; -
-- PART 7, POSITIONING SPRITES..; SET SP
RITES' X POSITIONS. LDA POINTERXN
OW. CLC. ADC #SPRITEOFFSET
_X. STA SPRITEA_X; SET BOTH SPRIT
ES. STA SPRITEB_X. LDA SPR
ITES_OF; GET X OVERFLOW. BCS SETO
F. LDX POINTERXNOW+1. BNE
SETOF. AND #SPRITES_BITMASK EOR $
FF. BCC STOREOF; C IS CLEAR HERE.
.SETOF ORA #SPRITES_BITMASK.STOREOF ST
A SPRITES_OF; SET X OVERFLOW..; SET SPRI
TES' Y POSITIONS. LDA POINTERYNOW
. CLC. ADC #SPRITEOFFSET_Y
. STA SPRITEA_Y. STA SPRIT
EB_Y.; THE Y VALUE'S HIGH BYTE IS USELES
S IN.; THIS CASE....; --- PART 8, MAKING
CHAR COORDINATES..; CONVERT X COORDINAT
E. THERE ARE.; DIFFERENT "BEST" ROUTINES
FOR.; DIFFERENT RESOLUTIONS, SO I'VE GI
VEN.; THE VIC AND VDC ROUTINES..
LDA POINTERXNOW. LSR. LSR.
LSR. LDX POINTERXNOW+1.
BEQ SETCX; VIC ONLY. ORA #$
20; VIC ONLY.; ORA ORTABLE,X; VDC
ONLY.SETCX STA CHARX..; CONVERT Y COOR
DINATE.. LDA POINTERYNOW.
LSR. LSR. LSR. STA
CHARY...; --- ADD FURTHER PARTS HERE..;
HERE YOU CAN ADD FURTHER ROUTINES,.; FOR
EXAMPLE TO USE THE BUTTON STATES.; TO F
AKE KEYPRESSES ETC....; --- THE END..; T
HE INITIALISATION ROUTINE SETS THE.; ARG
UMENT TO THE ADDRESS OF THE.; PREVIOUS I
RQ ROUTINE..MOD16 JMP $FFFF; (SELF-MOD
IFYING)..; THIS TABLE IS FOR PART 8..;OR
TABLE !BYTE 0,32,64; VDC ONLY...; --- "R
ESTRICT" SUBROUTINE..POINTERXMAX !WORD M
AXIMUMCOORDINATEX.POINTERYMAX !WORD MAXI
MUMCOORDINATEY.; "Y" WORD MUST FOLLOW DI
RECTLY AFTER.; "X" WORD IN MEMORY...REST
RICT.; RESTRICT INTERNAL COORDINATES TO.
; CONFIGURED RANGE. ENTRY CONDITIONS:.;
X IS DIRECTION HANDLE (0 = X, 2 = Y).
LDA POINTERXNOW+1,X. BMI SET
TO0. CMP POINTERXMAX+1,X.
BCC EOSR. BNE RESETCO. LDA
POINTERXMAX,X. CMP POINTERXNOW,X
. BCS EOSR.RESETCO LDA POINTERXMA
X,X. LDY POINTERXMAX+1,X.
JMP DEFCO..SETTO0 LDA #0. TAY.DE
FCO STA POINTERXNOW,X. STY POIN
TERXNOW+1,X.EOSR RTS...; --- "POT" SU
BROUTINE..; THIS ROUTINE COMPUTES THE MO
USE.; MOVEMENTS AND THEREFORE CONTAINS T
HE.; SELF-CALIBRATION STUFF AND THE OTHE
R.; IMPROVEMENTS OVER THE STANDARD 1351.
; DRIVER..POTMAX !WORD 0; MAX. POTS YET
PLUS 1 !.POTMIN !WORD $FFFF; LOWEST POTS
YET.POTOLD !WORD 0; OLD VALUES.POTWIDTH
!WORD 0; INTERVAL WIDTH.HALFPOTWIDTH !W
ORD 0; HALF WIDTH.; (BUFFERED FOR SPEED
INCREASE).; THE ABOVE VARIABLES ARE NOT
REALLY.; WORDS: THE FIRST BYTE IS THE X
VALUE,.; THE SECOND BYTE IS THE Y VALUE.
; RESPECTIVELY...POTDELTA.; COMPUTE THE
SIGNED DISTANCE OF MOUSE.; MOVEMENT. ENT
RY CONDITIONS:.; X IS DIRECTION HANDLE (
0 = X, 1 = Y).; EXIT CONDITIONS:.; A/Y A
RE SIGNED DISTANCE (LOW/HIGH)..; FIRST,
GET NEW VALUE AND CLEAR.; "RECALCULATE S
IGNAL WIDTH" FLAG.. LDA SID_POT,X
. LDY #$00.; CHECK WHETHER NEW VA
LUE IS LOWER THAN.; LOWEST KNOWN..
CMP POTMIN,X. BCS M0.; STORE NE
W "LOWEST" UND SET.; "RECALCULATE SIGNAL
WIDTH" FLAG.. STA POTMIN,X.
LDY #$FF..; CHECK WHETHER NEW VALUE I
S HIGHER.; THAN HIGHEST KNOWN..M0 C
MP POTMAX,X. BCC M1.; SET "RECALC
ULATE SIGNAL WIDTH" FLAG.; AND STORE NEW
"HIGHEST".. LDY #$FF. PHA
; REMEMBER CURRENT VALUE. ADC #$0
0; ADD ONE (C IS SET). STA POTMAX
,X.; VALUE $FF (0 AFTER ADDING) MEANS TH
AT.; THERE IS NO MOUSE CONNECTED, SO RES
ET.; MIN/MAX IN THAT CASE.. BEQ R
ESETMM; STACK IS UNTIDY.... PLA;
RESTORE CURRENT VALUE..; IF FLAG IS SET,
RECALCULATE SIGNAL.; WIDTH..M1.
INY; CHECK FLAG. BNE M3. T
AY; BUFFER CURRENT VALUE.. LDA PO
TMAX,X; GET HIGHEST+1. SEC; SUBTR
ACT LOWEST. SBC POTMIN,X.
BCC M2. STA POTWIDTH,X; STORE SIG
NAL. LSR; WIDTH AND HALF SIGNAL.
STA HALFPOTWIDTH,X; WIDTH.M2
TYA; RESTORE CURRENT VALUE...; CALCULAT
E DISTANCE.M3 TAY; BUFFER CURRENT V
ALUE.. SEC. SBC POTOLD,X.
PHA. TYA. STA POTOL
D,X. PLA. BEQ ZERO; IF NOT
MOVED, EXIT.. BCC MINUS; NEGATIV
E DIFFERENCE..; POSITIVE DIFFERENCE:.; C
HECK WHETHER MOVEMENT CAUSED A VALUE.; W
RAP-AROUND.. CMP HALFPOTWIDTH,X.
BCC DECREASE. BEQ DECREASE
.; IT DID, SO CALCULATE "REAL" DISTANCE.
; AND JUMP TO EXIT. ;SEC; C IS AL
WAYS SET HERE. SBC POTWIDTH,X; FI
X DISTANCE..; WE NOW KNOW THAT THE (FIXE
D) DISTANCE.; IS REALLY NEGATIVE, SO WE
FINALLY.; WIPE OUT THAT ANNOYING BIT 0 N
OISE BY.; INCREMENTING THE VALUE..INCREA
SE. ;CLC; C IS ALWAYS CLEAR HERE.
ADC #$01. BEQ ZERO; IF IN
CREASING.; DELIVERS ZERO, JUMP TO ZERO H
ANDLER.. LDY #$FF; SET UP HIGH BY
TE FOR.; NEGATIVE VALUES.. RTS..;
NEGATIVE DIFFERENCE:.; CHECK WHETHER MO
VEMENT CAUSED A VALUE.; WRAP-AROUND..MIN
US EOR #$FF; COMPLEMENT.; IF WE WOULD
DO A REAL NEGATION (BY.; ADDING "1"), TH
EN WE WOULD NEED TO.; BRANCH USING BCC *
AND* BEQ. SO THE.; ABOVE WAY MIGHT BE HA
RDER TO.; UNDERSTAND, BUT IT IS BOTH SHO
RTER.; *AND* FASTER - WHICH I LIKE. :).
CMP HALFPOTWIDTH,X. EOR #$
FF; RESTORE VALUE. BCC INCREASE.;
MOVEMENT CAUSED A VALUE WRAP-AROUND,.;
SO CALCULATE "REAL" DISTANCE AND.; EXIT.
. CLC. ADC POTWIDTH,X; FIX
DISTANCE..; WE NOW KNOW THAT THE (FIXED
) DISTANCE.; IS REALLY POSITIVE, SO WE F
INALLY.; WIPE OUT THAT ANNOYING BIT 0 NO
ISE BY.; DECREMENTING THE VALUE..DECREAS
E. SEC. SBC #$01..; NO DIF
FERENCE OR POSITIVE DIFFERENCE;.; BOTH N
EED ZERO AS THE HIGH BYTE..ZERO LDY #
0. RTS..; IF THERE IS NO MOUSE, R
ESET "LOWEST".; ("HIGHEST" WILL HAVE BEE
N RESET.; ALREADY) AND RETURN ZERO..RESE
TMM TAY; SET Y TO ZERO.. PLA; TID
Y STACK. LDA #$FF; RESET "LOWEST"
. STA POTMIN,X. TYA; RETUR
N WITH A/Y = 0. RTS...; --- INCLU
DE SPRITES..; BECAUSE THE C64 VERSION CO
PIES THE.; SPRITE DATA INTO THE TAPE BUF
FER ON.; INITIALISATION, THE DATA IS INC
LUDED.; RIGHT HERE..; IN THE C128 VERSIO
N, WE SKIP MEMORY.; UNTIL WE REACH $0E00
- THIS IS WHERE.; THE SPRITES ARE STORE
D BY DEFAULT..; !ALIGN $FFFF,$E00,
$0;C128 ONLY.SPRITES !BINARY "POINTERSPR
ITES",, 2.
×
C64 Image
> CLICK IMAGE PREVIEW FOR FULL MODAL