; UrQ MAC-02 "F" ROM disassembly (ECU VW/Audi part # 035 905 383F) ; ; ; ************************************************************************ ; 128 Bytes RAM -- definitions ; ************************************************************************ ; ; Location 07 (word) -- RPMValue ; Last read RPM value from Mag90RPMValue register ; ; Location 09 (byte) -- BoostByteValue ; Last read "normalized" byte value of manifold ; absolute pressure ; ; Location 1A (table) - RAMTable1A ; Seems to parallel ROMByteTable1A ; ; Location 24 (word) -- TablePtrW ; Scratch RAMWord used to point to end of table, etc. ; ; Location 26 (byte) -- RPMIndex ; Last RPMMap16 index generated ; ; Location 27 (byte) -- RPMStep ; Last RPMMap16 Step/differential generated ; ; Location 28 (byte) -- BoostIndex ; Last Manifold absolute pressure index ; ; Location 29 (byte) -- BoostStep ; Step/differential for BoostIndex ; ; ; ************************************************************************ ; I/O registers, addresses, bits, and so forth ; ************************************************************************ ; ; Register 90 (word) -- RPM value register ; ; Register 96 (word) -- Manifold Absolute Pressure ; ; Register 99 (byte) -- Engine Control/Status register. ; ; Bi-directional data port -- bits are: ; ; 0 = full throttle switch input ; 1 = idle switch ; 2 = unused ; 3 = haven't figured out yet ; 4 = 1=fuel pump on, 0=fuel pump off ; 5 = unused ; 6 = output such that it is 0 when RPM is less than 1100 and the ; throttle switch is closed, outputs a 1 if the RPM is greater ; than 1300 rpm or the throttle switch is open ; 7 = some kind of watchdog timer stuff ; ; Register 100 - 107 -- 6840 Clock/Timer registers ; ; ; ************************************************************************ ; The 4KB ROM -- Data Segment comes first, starting at 0xF000 ; ************************************************************************ ; ; The master timing table, two-dimensional, 16 x 16 entries. ; ; "X" axis is RPM, ascending (left-to-right) from 0 to max; ; "Y" axis (mod 16) is manifold pressure, descending (top-to- ; bottom) max boost to max vacuum: ; ; F000 is max boost at idle; ; F00F is max boost at max RPM; ; F0F0 is max vacuum idle; ; F0FF is max vacuum at max RPM. ; ; values are 60 - ==> degrees BTDC: ; ; 0x36 = 6 degrees BTDC ; 0x28 = 20 degrees BTDC TimingTable: F000: 26=038 23=035 23=035 23=035 29=041 29=041 29=041 2B=043 2E=046 31=049 30=048 30=048 31=049 2E=046 2E=046 2D=045 F010: 24=036 21=033 21=033 21=033 27=039 27=039 27=039 2A=042 2C=044 2F=047 2E=046 2E=046 2F=047 2B=043 2A=042 29=041 F020: 22=034 1F=031 1F=031 1E=030 25=037 25=037 25=037 28=040 2A=042 2C=044 2B=043 2B=043 2C=044 28=040 27=039 26=038 F030: 22=034 1F=031 1F=031 1F=031 25=037 25=037 26=038 26=038 29=041 2A=042 2A=042 2B=043 2D=045 28=040 25=037 24=036 F040: 22=034 1F=031 1F=031 21=033 25=037 24=036 22=034 21=033 21=033 21=033 23=035 23=035 25=037 23=035 20=032 1E=030 F050: 22=034 1F=031 1F=031 23=035 26=038 23=035 22=034 1F=031 1E=030 1E=030 20=032 23=035 22=034 1F=031 1E=030 1D=029 F060: 22=034 1F=031 23=035 24=036 24=036 23=035 21=033 1C=028 1C=028 1C=028 1E=030 21=033 21=033 1F=031 18=024 1A=026 F070: 22=034 20=032 22=034 24=036 23=035 22=034 20=032 1D=029 1B=027 1B=027 1B=027 1F=031 1F=031 1A=026 16=022 16=022 F080: 22=034 22=034 22=034 24=036 22=034 21=033 1F=031 1C=028 19=025 18=024 18=024 1C=028 1C=028 16=022 14=020 13=019 F090: 21=033 21=033 22=034 24=036 20=032 1C=028 1B=027 1A=026 18=024 17=023 15=021 19=025 19=025 12=018 13=019 13=019 F0A0: 22=034 20=032 22=034 27=039 23=035 1C=028 1D=029 17=023 15=021 14=020 15=021 14=020 15=021 12=018 12=018 11=017 F0B0: 22=034 1F=031 21=033 26=038 22=034 1E=030 1D=029 14=020 11=017 11=017 13=019 12=018 12=018 12=018 11=017 10=016 F0C0: 22=034 1F=031 20=032 22=034 21=033 1F=031 1D=029 15=021 13=019 12=018 12=018 12=018 12=018 11=017 10=016 0F=015 F0D0: 2C=044 22=034 20=032 21=033 20=032 1F=031 1C=028 15=021 13=019 13=019 12=018 11=017 10=016 0F=015 0F=015 0F=015 F0E0: 31=049 2A=042 28=040 20=032 1F=031 1F=031 1C=028 15=021 13=019 13=019 12=018 12=018 12=018 12=018 11=017 10=016 F0F0: 36=054 30=048 27=039 20=032 1F=031 1F=031 1C=028 15=021 13=019 13=019 12=018 13=019 14=020 16=022 13=019 11=017 ; The engine RPM => Index-16 (into TimingTable) ; ; values in RPM * 10, ascending from idle to max RPM: ; ; 0x0064 = 1000 RPM ; 0x028A = 6500 RPM RPMMap16: F100: 0064=00100 0085=00133 00A7=00167 00C8=00200 00E9=00233 0108=00264 012C=00300 014D=00333 016F=00367 0190=00400 01B1=00433 01D3=00467 01F4=00500 0226=00550 0258=00600 028A=00650 ; The Manifold Absolute Pressure => Index-16 map (into TimingTable, ; OverBoostTable, etc.) ; ; values A/D converted, from max boost to max vacuum (high numbers ; decending to low numbers): ; ; 0xFE = ~16.0 PSI ; 0xF0 = 14.75 PSI ; 0xE0 = 13.25 PSI ; 0xD0 = 11.75 PSI ; 0xC0 = 10.00 PSI ; 0xB0 = 8.75 PSI ; 0xA0 = 7.00 PSI ; 0x90 = 5.25 PSI ; 0x80 = 4.00 PSI ; 0x70 = 2.75 PSI ; 0x60 = ~1.00 PSI ; 0x50 = 0 - 1 InHg ; 0x48 = 1-1.5 InHg ; 0x40 = 4 InHg ; 0x30 = 7 InHg ManPressureMap16: F120: E0=224 C0=192 A0=160 89=137 67=103 5F=095 56=086 50=080 47=071 3F=063 38=056 2F=047 28=040 20=032 19=025 11=017 ; Throttle-closed ("Deceleration") timing table ; ; values are 60 - ==> degrees BTDC, as in TimingMap above. DecelTimingTable: F130: 36=054 34=052 32=050 30=048 2E=046 2C=044 2A=042 27=039 24=036 21=033 21=033 21=033 21=033 21=033 21=033 21=033 ; Engine Idle Stabilization RPM => Index-3 map (into IdleTimingTable) ; ; values are RPM * 10, as in RPMMapIndex16 above. IdleRPMMap3: F140: 003C=00060 0048=00072 005E=00094 ; Engine Idle Stabilization timing, index by IdleRPMMap3 index ; ; values are 60 - ==> degrees BTDC, as in TimingMap above. IdleTimingTable: F146: 22=034 22=034 36=054 ; Engine RPM Red Line value, in RPM * 10 RPMRedline: F149: 02A3=00675 ; Engine RPM "limp home" limit value, in RPM * 10 RPMLimpHome: F14B: 0190=00400 InitVal_01: F14D: 3C=060 ROMByteF14E: F14E: 00=000 ROMByteF14F: F14F: 00=000 ; Manifold Air Temperature ==> Index-8 Map ; ; From Pg 19: ; 0x9B = 30C ; 0x92 = 40C ; 0x89 = 50C ; 0x80 = 60C ; 0x77 = 70C ; 0x6E = 80C ; 0x65 = 90C ; 0x52 = 110C AirTempMap8: F150: 9B=155 92=146 89=137 80=128 77=119 6E=110 65=101 52=082 ; Ignition timing retard based on manifold air temperature index-8 ; ; values are 60 - ==> degrees BTDC, as in TimingMap above. HotAirRetard: F158: 3B=059 3B=059 3C=060 3D=061 3E=062 3F=063 40=064 42=066 ; The Over-Boost Engine-shutdown table, indexed by RPMMap16 index. ; ; values A/D converted, as in BoostMapIndex16 above. OverBoostTable: F160: 60=096 70=112 80=128 A0=160 D8=216 D8=216 D8=216 D8=216 D8=216 D8=216 D8=216 D8=216 D8=216 D8=216 D0=208 C8=200 ; Cold-engine Block temperature ==> Index-16 map ; Pg 19... ColdEngMap16: F170: F8=248 F3=243 ED=237 E8=232 E3=227 DE=222 D7=215 D0=208 C9=201 C1=193 B9=185 B0=176 A8=168 98=152 89=137 7A=122 ; Cold-engine ignition timing advance, based on ColdEngineMap16 index ; ; First entry serves as grounded-sensor test point (Pg 22); ; Last entry does double-duty as open-sensor test point (Pg 22); ; ; values are 60 - ==> degrees BTDC, as in TimingMap above. ColdEngAdvance: F180: 42=066 35=053 35=053 35=053 35=053 35=053 35=053 37=055 37=055 39=057 39=057 3C=060 3C=060 3C=060 3C=060 3C=060 ; Block temperature => Index-8 map, used to determine cold engine open ; loop warmup mixture (Pg 24 -- warmup frequency valve duty cycle ). ; ; Values are A/D converted: ; ; 0xE0 = TBD ; 0xC4 = -20C / -4F (by the book; empirically ~ +10F) ; 0xA7 = -10C / 14F (by the book; empirically ~ +25/30F) ; 0x89 = 0C / 32F ; 0x7A = 10C / 50F ; 0x6C = 20C / 68F ; 0x5C ~ 25C / 77F ; 0x53 ~ 32C / 90F ; 0x40 ~ 38C / 100F ; 0x1D ~ 60C / 140F BlockTempMap8: F190: E0=224 B0=176 89=137 7A=122 6C=108 67=103 1A=026 18=024 ; Table of cold engine open-loop FreqValve duty cycle values, indexed by ; BlockTempMap8 index, with last entry also doubling as a general-purpose ; "open-loop" default. ; ; Values (8-bit) percentage (duty cycle): ; ; 0x41 = 65% ; 0x3C = 60% ; 0x37 = 55% ; 0x32 = 50% ; 0x2A = 42% ColdOpenLoopFQV: F198: 46=070 42=066 41=065 40=064 3F=063 3E=062 3D=061 3C=060 ; Another RPM value => Index-8, this for 8-entry tables (esp., the four ; tables immediately following) ; ; values are RPM * 10, as RPMMapIndex16 above. RPMMap8: F1A0: 0064=00100 0096=00150 00C8=00200 012C=00300 0190=00400 01F4=00500 0258=00600 02BC=00700 Map11Byte: F1B0: 06=006 3E=062 3E=062 50=080 32=050 23=035 5F=095 05=005 Map12Byte: F1B8: 06=006 07=007 07=007 08=008 0A=010 0C=012 0E=014 0E=014 Map13Byte: F1C0: 40=064 57=087 5C=092 61=097 6D=109 7E=126 93=147 93=147 Map14Byte: F1C8: 3E=062 80=128 80=128 80=128 82=130 82=130 82=130 82=130 ; Table of Wide-Open-Throttle open loop Frequency-Valve duty cycle settings ; indexed by RPM Index-16. ; ; Note that unlike the "B" code which activates solely based on the WOT ; switch physically mounted on the throttle body, the "F" code activates ; "wide open throttle" open-loop enrichment starting about 4-5PSI of boost, ; depending on RPM range... ; ; Values (8-bit) percentage (duty cycle), as in ColdOpenLoopFQV above. WOTOpenLoopFQV: F1D0: 4F=079 4D=077 4D=077 4D=077 4D=077 4C=076 4F=079 4C=076 4A=074 4B=075 4A=074 4A=074 4A=074 50=080 58=088 60=096 Map16Byte: F1E0: 3C=060 3C=060 3C=060 3F=063 41=065 42=066 43=067 43=067 44=068 46=070 46=070 46=070 46=070 40=064 3F=063 3F=063 Map18Byte: F1F0: 59=089 5C=092 60=096 65=101 79=121 8A=138 94=148 9C=156 A1=161 9E=158 8D=141 8B=139 94=148 98=152 99=153 9B=155 Map19Byte: F200: 57=087 59=089 5C=092 60=096 74=116 7F=127 8B=139 8E=142 85=133 7D=125 66=102 63=099 65=101 76=118 82=130 85=133 HiIdleRPM1: F210: 006E=00110 HiIdleRPM2: F212: 0082=00130 F214: FF=255 FF=255 FF=255 FF=255 F218: FF=255 FF=255 FF=255 FF=255 FF=255 FF=255 FF=255 FF=255 F220: FF=255 FF=255 FF=255 FF=255 FF=255 FF=255 FF=255 FF=255 F228: FF=255 FF=255 FF=255 FF=255 FF=255 FF=255 FF=255 FF=255 ; WRMag9A9B() ; Writes A+B to [9A]+[9B], pauses, returns new [9A]+[9B] in A+B F230: WRMag9A9B: F230: 0F SEI F231: 97 9A STAA Mag9AWord ; -> [9A] F233: D7 9B STAB Mag9AWord+1 ; -> [9B] F235: 01 NOP F236: 01 NOP F237: 01 NOP F238: 01 NOP F239: 96 9A LDAA Mag9AWord ; -> [9A] F23B: D6 9B LDAB Mag9AWord+1 ; -> [9B] F23D: 0E CLI F23E: 39 RTS ; GetTabStepB -- Get table step (??) for Byte-wide table match ; Call: ; A Byte value ; X Table pointer (to bracketing value) ; Returns: ; B Step (??) value ; ; Trashes A and X F23F: Orphan23F: F23F: 5F CLRB F240: A0 00 SUBA 0(X) F242: 27 36 BEQ GetTabStepB+48 ; -> 0xF27A F244: E6 01 LDAB 1(X) F246: E0 00 SUBB 0(X) F248: 20 0B BRA GetTabStepB+11 ; -> 0xF255 F24A: GetTabStepB: F24A: 5F CLRB F24B: A0 00 SUBA 0(X) F24D: 40 NEGA F24E: 27 2A BEQ GetTabStepB+48 ; -> 0xF27A F250: E6 01 LDAB 1(X) F252: E0 00 SUBB 0(X) F254: 50 NEGB F255: 37 PSHB F256: 36 PSHA F257: 34 DECS F258: 30 TSX F259: 86 08 LDAA #0x08 F25B: A7 00 STAA 0(X) F25D: A6 01 LDAA 1(X) F25F: C6 FF LDAB #0xFF ; = 255 F261: E7 01 STAB 1(X) F263: 5F CLRB F264: 48 ASLA F265: 59 ROLB F266: A0 02 SUBA 2(X) F268: C2 00 SBCB #0x00 F26A: 24 04 BHIS GetTabStepB+38 ; -> 0xF270 F26C: AB 02 ADDA 2(X) F26E: C9 00 ADCB #0x00 F270: 69 01 ROL 1(X) F272: 6A 00 DEC 0(X) F274: 26 EE BNE GetTabStepB+26 ; -> 0xF264 F276: 32 POPA F277: 33 POPB F278: 31 INCS F279: 53 COMB F27A: 39 RTS F27B: Subr27B: F27B: DF 24 STX TablePtrW ; -> [24] F27D: D6 25 LDAB TablePtrW+1 ; -> [25] F27F: DB 26 ADDB RPMIndex ; -> [26] F281: D7 25 STAB TablePtrW+1 ; -> [25] F283: DE 24 LDX TablePtrW ; -> [24] F285: D6 27 LDAB RPMStep ; -> [27] ; IndexMag90() -- Get index into Map1Word for RAMMag90 ; Returns: ; RAMByte26 Table index ; RAMByte27 Table step/differential/??? F287: Subr287: F287: A6 00 LDAA 0(X) F289: 36 PSHA F28A: A6 01 LDAA 1(X) F28C: 36 PSHA F28D: 30 TSX F28E: A6 00 LDAA 0(X) F290: 6F 00 CLR 0(X) F292: A0 01 SUBA 1(X) F294: 24 03 BHIS Subr287+18 ; -> 0xF299 F296: 40 NEGA F297: 63 00 COM 0(X) F299: BD F2 30 JSR WRMag9A9B ; -> 0xF230 F29C: 58 ASLB F29D: 89 00 ADCA #0x00 F29F: 33 POPB F2A0: 5D TSTB F2A1: 27 01 BEQ Subr287+29 ; -> 0xF2A4 F2A3: 40 NEGA F2A4: 33 POPB F2A5: 1B ABA F2A6: 39 RTS F2A7: IndexMag90: F2A7: CE F1 20 LDX #ManPressureMap16 ; -> 0xF120 = 61728 F2AA: DF 24 STX TablePtrW ; -> [24] F2AC: CE F1 00 LDX #RPMMap16 ; -> 0xF100 = 61696 ; GetTabIndexW() -- Get Table Index, Word-wide table, increasing value ; Call with: ; A+B 16-bit value to find in table ; X 16-bit table to search ; RAMWord24 End of 16-bit table (+1) ; RamByte2A scratch ; ; Returns: ; A+B 16-bit value to find, or min/max value from table ; (i.e., "legal" values) ; X Pointer to table entry ; RAMByte2A Ordinal index into table F2AF: IndexMag90Map: F2AF: 0F SEI F2B0: 96 07 LDAA RPMValue ; -> [07] F2B2: D6 08 LDAB RPMValue+1 ; -> [08] F2B4: 0E CLI F2B5: 8D 20 BSR GetTabIndexW ; -> 0xF2D7 F2B7: 37 PSHB F2B8: 36 PSHA F2B9: 96 2A LDAA RAMByte2A ; -> [2A] F2BB: 97 26 STAA RPMIndex ; -> [26] F2BD: E6 03 LDAB 3(X) F2BF: A6 02 LDAA 2(X) F2C1: E0 01 SUBB 1(X) F2C3: A2 00 SBCA 0(X) F2C5: 97 24 STAA TablePtrW ; -> [24] F2C7: D7 25 STAB TablePtrW+1 ; -> [25] F2C9: 32 POPA F2CA: 33 POPB F2CB: E0 01 SUBB 1(X) F2CD: A2 00 SBCA 0(X) F2CF: CE 00 24 LDX #TablePtrW ; -> 0x0024 = 36 F2D2: 8D 32 BSR Subr306 ; -> 0xF306 F2D4: 97 27 STAA RPMStep ; -> [27] F2D6: 39 RTS F2D7: GetTabIndexW: F2D7: 7F 00 2A CLR RAMByte2A ; -> 0x2A F2DA: E0 01 SUBB 1(X) F2DC: A2 00 SBCA 0(X) F2DE: 25 17 BLO GetTabIndexW+32 ; -> 0xF2F7 F2E0: EB 01 ADDB 1(X) F2E2: A9 00 ADCA 0(X) F2E4: 7C 00 2A INC RAMByte2A ; -> 0x2A F2E7: 08 INCX F2E8: 08 INCX F2E9: 9C 24 CPX TablePtrW ; -> [24] F2EB: 26 ED BNE GetTabIndexW+3 ; -> 0xF2DA F2ED: 7A 00 2A DEC RAMByte2A ; -> 0x2A F2F0: 09 DECX F2F1: 09 DECX F2F2: A6 00 LDAA 0(X) F2F4: E6 01 LDAB 1(X) F2F6: 39 RTS F2F7: 7D 00 2A TST RAMByte2A ; -> 0x2A F2FA: 27 F6 BEQ GetTabIndexW+27 ; -> 0xF2F2 F2FC: EB 01 ADDB 1(X) F2FE: A9 00 ADCA 0(X) F300: 7A 00 2A DEC RAMByte2A ; -> 0x2A F303: 09 DECX F304: 09 DECX F305: 39 RTS F306: Subr306: F306: 6D 00 TST 0(X) F308: 26 07 BNE Subr311 ; -> 0xF311 F30A: 6D 01 TST 1(X) F30C: 26 03 BNE Subr311 ; -> 0xF311 F30E: 4F CLRA F30F: 5F CLRB F310: 39 RTS F311: Subr311: F311: 36 PSHA F312: 37 PSHB F313: A6 00 LDAA 0(X) F315: E6 01 LDAB 1(X) F317: 36 PSHA F318: 37 PSHB F319: 86 10 LDAA #0x10 ; = 16 F31B: 36 PSHA F31C: 30 TSX F31D: E6 03 LDAB 3(X) F31F: A6 04 LDAA 4(X) F321: 6F 03 CLR 3(X) F323: 6F 04 CLR 4(X) F325: 63 03 COM 3(X) F327: 63 04 COM 4(X) F329: 58 ASLB F32A: 49 ROLA F32B: E0 01 SUBB 1(X) F32D: A2 02 SBCA 2(X) F32F: 24 04 BHIS Subr311+36 ; -> 0xF335 F331: EB 01 ADDB 1(X) F333: A9 02 ADCA 2(X) F335: 69 03 ROL 3(X) F337: 69 04 ROL 4(X) F339: 6A 00 DEC 0(X) F33B: 26 EC BNE Subr311+24 ; -> 0xF329 F33D: 31 INCS F33E: 31 INCS F33F: 31 INCS F340: 33 POPB F341: 32 POPA F342: 43 COMA F343: 53 COMB F344: 39 RTS F345: Subr345: F345: D0 11 SUBB RAMByte11 ; -> [11] F347: 92 10 SBCA RAMByte10 ; -> [10] F349: 24 02 BHIS Subr345+8 ; -> 0xF34D F34B: 4F CLRA F34C: 5F CLRB F34D: CE 00 0E LDX #RAMWord0E ; -> 0x000E = 14 F350: Subr350: F350: 36 PSHA F351: 37 PSHB F352: E0 01 SUBB 1(X) F354: A2 00 SBCA 0(X) F356: 24 0A BHIS Subr350+18 ; -> 0xF362 F358: A6 00 LDAA 0(X) F35A: E6 01 LDAB 1(X) F35C: 36 PSHA F35D: 37 PSHB F35E: 86 0A LDAA #0x0A ; = 10 F360: 20 B9 BRA Subr311+10 ; -> 0xF31B F362: 31 INCS F363: 31 INCS F364: 86 03 LDAA #0x03 F366: C6 FF LDAB #0xFF ; = 255 F368: 39 RTS ; GetTabIndexB() -- Get Table Index, Byte-wide table, decreasing value ; Call: ; A Value to index into table ; B Length of table ; X Pointer to start of 8-bit table ; Returns: ; A Value, normalized (min/max bounded by table) ; B Ordinal index into table ; X Pointer to table entry F369: Subr369: F369: 36 PSHA F36A: A6 00 LDAA 0(X) F36C: E6 01 LDAB 1(X) F36E: 37 PSHB F36F: 36 PSHA F370: 30 TSX F371: A6 02 LDAA 2(X) F373: E6 01 LDAB 1(X) F375: BD F2 30 JSR WRMag9A9B ; -> 0xF230 F378: 58 ASLB F379: E6 02 LDAB 2(X) F37B: A7 02 STAA 2(X) F37D: A6 00 LDAA 0(X) F37F: BD F2 30 JSR WRMag9A9B ; -> 0xF230 F382: E9 02 ADCB 2(X) F384: 89 00 ADCA #0x00 F386: 31 INCS F387: 31 INCS F388: 31 INCS F389: 39 RTS F38A: GetTabIndexB: F38A: 36 PSHA F38B: 37 PSHB F38C: A1 00 CMPA 0(X) F38E: 22 06 BHI GetTabIndexB+12 ; -> 0xF396 F390: 08 INCX F391: 5A DECB F392: 27 0E BEQ GetTabIndexB+24 ; -> 0xF3A2 F394: 20 F6 BRA GetTabIndexB+2 ; -> 0xF38C F396: 32 POPA F397: 10 SBA F398: 16 TAB F399: 27 04 BEQ GetTabIndexB+21 ; -> 0xF39F F39B: 5A DECB F39C: 09 DECX F39D: 32 POPA F39E: 39 RTS F39F: 32 POPA F3A0: 20 04 BRA GetTabIndexB+28 ; -> 0xF3A6 F3A2: 33 POPB F3A3: 32 POPA F3A4: 5A DECB F3A5: 09 DECX F3A6: A6 00 LDAA 0(X) F3A8: 39 RTS F3A9: 43 COMA F3AA: 53 COMB F3AB: CB 01 ADDB #0x01 F3AD: 89 00 ADCA #0x00 F3AF: 39 RTS F3B0: FF=255 ... F3FF: FF=255 F400: Init: F400: 8E 00 7F LDS #0x007F ; = 127 F403: 96 9F LDAA Mag9FByte ; -> [9F] F405: 97 9F STAA Mag9FByte ; -> [9F] F407: 86 03 LDAA #0x03 F409: 97 80 STAA Magic ; -> [80] F40B: 86 01 LDAA #0x01 F40D: 97 81 STAA Magic+1 ; -> [81] F40F: CE 00 0A LDX #RAMByte0A ; -> 0x000A = 10 F412: DF 82 STX Mag82Word ; -> [82] F414: CE 01 45 LDX #0x0145 ; = 325 F417: DF 84 STX Mag84Word ; -> [84] F419: CE 01 68 LDX #0x0168 ; = 360 F41C: DF 86 STX Mag86Word ; -> [86] F41E: CE 00 2A LDX #RAMByte2A ; -> 0x002A = 42 F421: DF 88 STX Mag88Word ; -> [88] F423: CE 00 1B LDX #0x001B ; = 27 F426: DF 8A STX Mag8AWord ; -> [8A] F428: CE 00 AE LDX #0x00AE ; = 174 F42B: DF 90 STX Mag90RPMWord ; -> [90] F42D: C6 D0 LDAB #0xD0 ; = 208 F42F: D7 98 STAB Mag98Byte ; -> [98] F431: 86 01 LDAA #0x01 F433: B7 01 01 STAA TimerCSR ; -> 0x101 F436: 86 80 LDAA #0x80 ; = 128 F438: B7 01 00 STAA TimerWCR13 ; -> 0x100 F43B: 86 02 LDAA #0x02 F43D: B7 01 01 STAA TimerCSR ; -> 0x101 F440: 86 A2 LDAA #0xA2 ; = 162 F442: B7 01 00 STAA TimerWCR13 ; -> 0x100 F445: CE 00 1A LDX #RAMTable1A ; -> 0x001A = 26 F448: FF 01 02 STX Timer1Data ; -> 0x102 F44B: CE 37 DB LDX #0x37DB ; = 14299 F44E: FF 01 04 STX Timer2Data ; -> 0x104 F451: CE 00 00 LDX #0x0000 F454: FF 01 06 STX Timer3Data ; -> 0x106 F457: 86 55 LDAA #0x55 ; = 85 F459: C6 AA LDAB #0xAA ; = 170 F45B: TestRAM: F45B: A7 00 STAA 0(X) F45D: A1 00 CMPA 0(X) F45F: 26 5F BNE FailRAM ; -> 0xF4C0 F461: E7 00 STAB 0(X) F463: E1 00 CMPB 0(X) F465: 26 59 BNE FailRAM ; -> 0xF4C0 F467: 6F 00 CLR 0(X) F469: 08 INCX F46A: 8C 00 80 CPX #Magic ; -> 0x0080 = 128 F46D: 26 EC BNE TestRAM ; -> 0xF45B F46F: CE F0 00 LDX #TimingTable ; -> 0xF000 = 61440 F472: 4F CLRA F473: 5F CLRB F474: TestROM: F474: AB 00 ADDA 0(X) F476: 5C INCB F477: 26 07 BNE TestROM+12 ; -> 0xF480 F479: D6 99 LDAB Mag99EngCSR ; -> [99] F47B: C8 80 EORB #0x80 ; = 128 F47D: D7 99 STAB Mag99EngCSR ; -> [99] F47F: 5F CLRB F480: 08 INCX F481: 26 F1 BNE TestROM ; -> 0xF474 F483: 4F CLRA F484: 26 3E BNE FailROM ; -> 0xF4C4 F486: C6 02 LDAB #0x02 F488: D7 12 STAB Magic10_1A_State ; -> [12] F48A: C6 0A LDAB #0x0A ; = 10 F48C: D7 0D STAB RAMByte0D ; -> [0D] F48E: 86 40 LDAA #0x40 ; = 64 F490: 97 00 STAA Track_Mag9E ; -> [00] F492: 97 9E STAA Mag9EByte ; -> [9E] F494: 86 02 LDAA #0x02 F496: 97 17 STAA RAMByte17 ; -> [17] F498: D7 94 STAB Mag94Word ; -> [94] F49A: 0E CLI F49B: 3E WAI F49C: D6 0D LDAB RAMByte0D ; -> [0D] F49E: C1 0A CMPB #0x0A ; = 10 F4A0: 26 F6 BNE TestROM+36 ; -> 0xF498 F4A2: 0F SEI F4A3: C6 A0 LDAB #0xA0 ; = 160 F4A5: D7 17 STAB RAMByte17 ; -> [17] F4A7: CE 3A 98 LDX #Const15000 ; -> 0x3A98 = 15000 F4AA: DF 43 STX RAMWdCount15K ; -> [43] F4AC: C6 10 LDAB #0x10 ; = 16 F4AE: D7 00 STAB Track_Mag9E ; -> [00] F4B0: D7 9E STAB Mag9EByte ; -> [9E] F4B2: 96 9F LDAA Mag9FByte ; -> [9F] F4B4: 85 04 BITA #0x04 F4B6: 27 FA BEQ TestROM+62 ; -> 0xF4B2 F4B8: 86 01 LDAA #0x01 F4BA: 97 9D STAA Mag9DByte ; -> [9D] F4BC: 0E CLI F4BD: MainLoop: F4BD: 3E WAI F4BE: 20 FD BRA MainLoop ; -> 0xF4BD F4C0: FailRAM: F4C0: 86 36 LDAA #0x36 ; = 54 F4C2: 20 02 BRA FailROM+2 ; -> 0xF4C6 F4C4: FailROM: F4C4: 86 51 LDAA #0x51 ; = 81 F4C6: 97 8B STAA Mag8AWord+1 ; -> [8B] F4C8: 86 03 LDAA #0x03 F4CA: 97 9D STAA Mag9DByte ; -> [9D] F4CC: D6 99 LDAB Mag99EngCSR ; -> [99] F4CE: FailLoop: F4CE: C8 80 EORB #0x80 ; = 128 F4D0: D7 99 STAB Mag99EngCSR ; -> [99] F4D2: CE 04 E2 LDX #0x04E2 ; = 1250 F4D5: 09 DECX F4D6: 26 FD BNE FailLoop+7 ; -> 0xF4D5 F4D8: 20 F4 BRA FailLoop ; -> 0xF4CE F4DA: F4=244 F4DB: Magic08ISR: F4DB: 7C 00 06 INC RAMByte06 ; -> 0x6 F4DE: 96 06 LDAA RAMByte06 ; -> [06] F4E0: 80 03 SUBA #0x03 F4E2: 27 05 BEQ ReInit ; -> 0xF4E9 F4E4: 86 08 LDAA #0x08 F4E6: 97 9F STAA Mag9FByte ; -> [9F] F4E8: 3B RTI F4E9: ReInit: F4E9: 97 9D STAA Mag9DByte ; -> [9D] F4EB: 97 9E STAA Mag9EByte ; -> [9E] F4ED: 97 99 STAA Mag99EngCSR ; -> [99] F4EF: 7E F4 00 JMP Init ; -> 0xF400 F4F2: FF=255 ... F4FF: FF=255 F500: MainISR: F500: B6 01 01 LDAA TimerCSR ; -> 0x101 F503: 2B 19 BMI TimerISR ; -> 0xF51E F505: 96 9F LDAA Mag9FByte ; -> [9F] F507: 94 00 ANDA Track_Mag9E ; -> [00] F509: 2B 3C BMI Magic80ISR ; -> 0xF547 F50B: 85 10 BITA #0x10 ; = 16 F50D: 26 09 BNE Magic10JMP ; -> 0xF518 F50F: 85 40 BITA #0x40 ; = 64 F511: 26 08 BNE Magic40JMP ; -> 0xF51B F513: 85 08 BITA #0x08 F515: 26 C4 BNE Magic08ISR ; -> 0xF4DB F517: 3B RTI F518: Magic10JMP: F518: 7E F5 91 JMP Magic10ISR ; -> 0xF591 F51B: Magic40JMP: F51B: 7E F6 13 JMP Magic40ISR ; -> 0xF613 F51E: TimerISR: F51E: 96 99 LDAA Mag99EngCSR ; -> [99] F520: DE 45 LDX RAMByte45 ; -> [45] F522: FF 01 06 STX Timer3Data ; -> 0x106 F525: FE 01 04 LDX Timer2Data ; -> 0x104 F528: D6 40 LDAB RAMByte40 ; -> [40] F52A: 85 08 BITA #0x08 F52C: 26 11 BNE TimerISR+33 ; -> 0xF53F F52E: C5 10 BITB #0x10 ; = 16 F530: 26 14 BNE TimerISR+40 ; -> 0xF546 F532: 7C 00 42 INC RAMByte42 ; -> 0x42 F535: 96 42 LDAA RAMByte42 ; -> [42] F537: 80 47 SUBA #0x47 ; = 71 F539: 25 0B BLO TimerISR+40 ; -> 0xF546 F53B: CA 10 ORAB #0x10 ; = 16 F53D: 20 05 BRA TimerISR+38 ; -> 0xF544 F53F: 7F 00 42 CLR RAMByte42 ; -> 0x42 F542: C4 EF ANDB #0xEF ; = 239 F544: D7 40 STAB RAMByte40 ; -> [40] F546: 3B RTI F547: Magic80ISR: F547: 86 88 LDAA #0x88 ; = 136 F549: 97 9F STAA Mag9FByte ; -> [9F] F54B: 7F 00 06 CLR RAMByte06 ; -> 0x6 F54E: 96 05 LDAA RAMByte05 ; -> [05] F550: 16 TAB F551: D0 04 SUBB RAMByte04 ; -> [04] F553: 27 18 BEQ Magic80ISR+38 ; -> 0xF56D F555: 2B 0C BMI Magic80ISR+28 ; -> 0xF563 F557: 80 01 SUBA #0x01 F559: 23 04 BLOS Magic80ISR+24 ; -> 0xF55F F55B: 91 04 CMPA RAMByte04 ; -> [04] F55D: 22 0C BHI Magic80ISR+36 ; -> 0xF56B F55F: 96 04 LDAA RAMByte04 ; -> [04] F561: 20 08 BRA Magic80ISR+36 ; -> 0xF56B F563: 8B 03 ADDA #0x03 F565: 23 F8 BLOS Magic80ISR+24 ; -> 0xF55F F567: 91 04 CMPA RAMByte04 ; -> [04] F569: 24 F4 BHIS Magic80ISR+24 ; -> 0xF55F F56B: 97 05 STAA RAMByte05 ; -> [05] F56D: 97 89 STAA Mag88Word+1 ; -> [89] F56F: 96 17 LDAA RAMByte17 ; -> [17] F571: 85 40 BITA #0x40 ; = 64 F573: 26 1B BNE Magic80ISR+73 ; -> 0xF590 F575: D6 08 LDAB RPMValue+1 ; -> [08] F577: C0 78 SUBB #0x78 ; = 120 F579: D6 07 LDAB RPMValue ; -> [07] F57B: C2 00 SBCB #0x00 F57D: 24 06 BHIS Magic80ISR+62 ; -> 0xF585 F57F: CE 3A 98 LDX #Const15000 ; -> 0x3A98 = 15000 F582: DF 43 STX RAMWdCount15K ; -> [43] F584: 3B RTI F585: DE 43 LDX RAMWdCount15K ; -> [43] F587: 09 DECX F588: DF 43 STX RAMWdCount15K ; -> [43] F58A: 26 04 BNE Magic80ISR+73 ; -> 0xF590 F58C: 8A 40 ORAA #0x40 ; = 64 F58E: 97 17 STAA RAMByte17 ; -> [17] F590: 3B RTI F591: Magic10ISR: F591: D6 99 LDAB Mag99EngCSR ; -> [99] F593: C8 80 EORB #0x80 ; = 128 F595: D7 99 STAB Mag99EngCSR ; -> [99] F597: 86 10 LDAA #0x10 ; = 16 F599: 97 9F STAA Mag9FByte ; -> [9F] F59B: 0E CLI F59C: CE F6 0F LDX #ROMByteTable1A ; -> 0xF60F = 62991 F59F: DF 1E STX ByteTable_Ptr1 ; -> [1E] F5A1: CE 00 1A LDX #RAMTable1A ; -> 0x001A = 26 F5A4: 6C 00 INC 0(X) F5A6: A6 00 LDAA 0(X) F5A8: DF 20 STX ByteTable_Ptr2 ; -> [20] F5AA: DE 1E LDX ByteTable_Ptr1 ; -> [1E] F5AC: E6 00 LDAB 0(X) F5AE: 08 INCX F5AF: DF 1E STX ByteTable_Ptr1 ; -> [1E] F5B1: DE 20 LDX ByteTable_Ptr2 ; -> [20] F5B3: 84 3F ANDA #0x3F ; = 63 F5B5: 10 SBA F5B6: 26 07 BNE Magic10ISR+46 ; -> 0xF5BF F5B8: A6 00 LDAA 0(X) F5BA: 8A 40 ORAA #0x40 ; = 64 F5BC: 10 SBA F5BD: A7 00 STAA 0(X) F5BF: 08 INCX F5C0: 8C 00 1E CPX #ByteTable_Ptr1 ; -> 0x001E = 30 F5C3: 26 DF BNE Magic10ISR+19 ; -> 0xF5A4 F5C5: 5F CLRB F5C6: CE 00 1A LDX #RAMTable1A ; -> 0x001A = 26 F5C9: A6 00 LDAA 0(X) F5CB: 2B 0B BMI Magic10ISR+71 ; -> 0xF5D8 F5CD: 85 40 BITA #0x40 ; = 64 F5CF: 26 08 BNE Magic10Disp ; -> 0xF5D9 F5D1: 5C INCB F5D2: 08 INCX F5D3: 8C 00 1E CPX #ByteTable_Ptr1 ; -> 0x001E = 30 F5D6: 26 F1 BNE Magic10ISR+56 ; -> 0xF5C9 F5D8: 3B RTI F5D9: Magic10Disp: F5D9: 0F SEI F5DA: 8A 80 ORAA #0x80 ; = 128 F5DC: 80 40 SUBA #0x40 ; = 64 F5DE: A7 00 STAA 0(X) F5E0: CE F5 F7 LDX #Magic10Table ; -> 0xF5F7 = 62967 F5E3: DF 1E STX ByteTable_Ptr1 ; -> [1E] F5E5: 96 1E LDAA ByteTable_Ptr1 ; -> [1E] F5E7: 58 ASLB F5E8: DB 1F ADDB ByteTable_Ptr1+1 ; -> [1F] F5EA: 89 00 ADCA #0x00 F5EC: 97 1E STAA ByteTable_Ptr1 ; -> [1E] F5EE: D7 1F STAB ByteTable_Ptr1+1 ; -> [1F] F5F0: DE 1E LDX ByteTable_Ptr1 ; -> [1E] F5F2: EE 00 LDX 0(X) F5F4: 0E CLI F5F5: 6E 00 JMP 0(X) Magic10Table: F5F7: F800=63488 F5F9: F8F9=63737 F5FB: FAA8=64168 F5FD: FC68=64616 F5FF: ReMagic10: F5FF: CE 00 1A LDX #RAMTable1A ; -> 0x001A = 26 F602: A6 00 LDAA 0(X) F604: 2B 03 BMI ReMagic10+10 ; -> 0xF609 F606: 08 INCX F607: 20 F9 BRA ReMagic10+3 ; -> 0xF602 F609: 84 7F ANDA #0x7F ; = 127 F60B: A7 00 STAA 0(X) F60D: 20 B6 BRA Magic10ISR+52 ; -> 0xF5C5 ROMByteTable1A: F60F: 01=001 F610: 02=002 F611: 04=004 F612: 0A=010 F613: Magic40ISR: F613: 86 40 LDAA #0x40 ; = 64 F615: 97 9F STAA Mag9FByte ; -> [9F] F617: 0E CLI F618: 96 94 LDAA Mag94Word ; -> [94] F61A: D6 95 LDAB Mag94Word+1 ; -> [95] F61C: 36 PSHA F61D: 96 0D LDAA RAMByte0D ; -> [0D] F61F: 81 0B CMPA #0x0B ; = 11 F621: 26 0D BNE Magic40ISR+29 ; -> 0xF630 F623: 32 POPA F624: D0 11 SUBB RAMByte11 ; -> [11] F626: 92 10 SBCA RAMByte10 ; -> [10] F628: 97 0E STAA RAMWord0E ; -> [0E] F62A: D7 0F STAB RAMWord0E+1 ; -> [0F] F62C: 86 02 LDAA #0x02 F62E: 20 2D BRA Magic40ISR+74 ; -> 0xF65D F630: 81 0A CMPA #0x0A ; = 10 F632: 26 09 BNE Magic40ISR+42 ; -> 0xF63D F634: 32 POPA F635: 97 10 STAA RAMByte10 ; -> [10] F637: D7 11 STAB RAMByte11 ; -> [11] F639: 86 0B LDAA #0x0B ; = 11 F63B: 20 20 BRA Magic40ISR+74 ; -> 0xF65D F63D: 32 POPA F63E: BD F3 45 JSR Subr345 ; -> 0xF345 F641: 44 LSRA F642: 56 RORB F643: 44 LSRA F644: 56 RORB F645: CE 00 09 LDX #0x0009 F648: DF 22 STX RAMWord22 ; -> [22] F64A: 96 23 LDAA RAMWord22+1 ; -> [23] F64C: 9B 0D ADDA RAMByte0D ; -> [0D] F64E: 97 23 STAA RAMWord22+1 ; -> [23] F650: DE 22 LDX RAMWord22 ; -> [22] F652: E7 00 STAB 0(X) F654: 96 0D LDAA RAMByte0D ; -> [0D] F656: 4C INCA F657: 81 04 CMPA #0x04 F659: 26 02 BNE Magic40ISR+74 ; -> 0xF65D F65B: 86 0A LDAA #0x0A ; = 10 F65D: 97 0D STAA RAMByte0D ; -> [0D] F65F: D6 17 LDAB RAMByte17 ; -> [17] F661: C5 02 BITB #0x02 F663: 26 0C BNE Magic40ISR+94 ; -> 0xF671 F665: 86 01 LDAA #0x01 F667: 97 94 STAA Mag94Word ; -> [94] F669: 96 00 LDAA Track_Mag9E ; -> [00] F66B: 84 BF ANDA #0xBF ; = 191 F66D: 97 00 STAA Track_Mag9E ; -> [00] F66F: 97 9E STAA Mag9EByte ; -> [9E] F671: 3B RTI F672: FF=255 ... F7FF: FF=255 F800: Magic10_1A: F800: 96 9F LDAA Mag9FByte ; -> [9F] F802: 85 20 BITA #0x20 ; = 32 F804: 27 4B BEQ CalcBoostByte+23 ; -> 0xF851 F806: 86 20 LDAA #0x20 ; = 32 F808: 97 9F STAA Mag9FByte ; -> [9F] F80A: 96 96 LDAA Mag96BoostWord ; -> [96] F80C: D6 97 LDAB Mag96BoostWord+1 ; -> [97] F80E: 36 PSHA F80F: 96 12 LDAA Magic10_1A_State ; -> [12] F811: 84 0F ANDA #0x0F ; = 15 F813: Magic10_1A_S03: F813: 81 03 CMPA #0x03 F815: 26 0F BNE Magic10_1A_S02 ; -> 0xF826 F817: 32 POPA F818: D0 16 SUBB BoostWord2+1 ; -> [16] F81A: 92 15 SBCA BoostWord2 ; -> [15] F81C: 97 13 STAA BoostWord1 ; -> [13] F81E: D7 14 STAB BoostWord1+1 ; -> [14] F820: 86 01 LDAA #0x01 F822: 97 12 STAA Magic10_1A_State ; -> [12] F824: 20 2B BRA CalcBoostByte+23 ; -> 0xF851 F826: Magic10_1A_S02: F826: 81 02 CMPA #0x02 F828: 26 07 BNE Magic10_1A_S01 ; -> 0xF831 F82A: 32 POPA F82B: 97 15 STAA BoostWord2 ; -> [15] F82D: D7 16 STAB BoostWord2+1 ; -> [16] F82F: 20 1D BRA CalcBoostByte+20 ; -> 0xF84E F831: Magic10_1A_S01: F831: 32 POPA F832: D0 16 SUBB BoostWord2+1 ; -> [16] F834: 92 15 SBCA BoostWord2 ; -> [15] F836: 24 02 BHIS CalcBoostByte ; -> 0xF83A F838: 4F CLRA F839: 5F CLRB F83A: CalcBoostByte: F83A: CE 00 13 LDX #BoostWord1 ; -> 0x0013 = 19 F83D: BD F3 50 JSR Subr350 ; -> 0xF350 F840: 44 LSRA F841: 56 RORB F842: 44 LSRA F843: 56 RORB F844: D7 09 STAB BoostByteValue ; -> [09] F846: 96 12 LDAA Magic10_1A_State ; -> [12] F848: 8B 10 ADDA #0x10 ; = 16 F84A: 97 12 STAA Magic10_1A_State ; -> [12] F84C: 24 03 BHIS CalcBoostByte+23 ; -> 0xF851 F84E: 7C 00 12 INC Magic10_1A_State ; -> 0x12 F851: 96 12 LDAA Magic10_1A_State ; -> [12] F853: 97 96 STAA Mag96BoostWord ; -> [96] F855: 96 9F LDAA Mag9FByte ; -> [9F] F857: 85 40 BITA #0x40 ; = 64 F859: 27 15 BEQ CalcBoostByte+54 ; -> 0xF870 F85B: 86 40 LDAA #0x40 ; = 64 F85D: 97 9F STAA Mag9FByte ; -> [9F] F85F: DE 0E LDX RAMWord0E ; -> [0E] F861: 27 0D BEQ CalcBoostByte+54 ; -> 0xF870 F863: 96 94 LDAA Mag94Word ; -> [94] F865: D6 95 LDAB Mag94Word+1 ; -> [95] F867: BD F3 45 JSR Subr345 ; -> 0xF345 F86A: 44 LSRA F86B: 56 RORB F86C: 44 LSRA F86D: 56 RORB F86E: D7 0A STAB RAMByte0A ; -> [0A] F870: D6 0D LDAB RAMByte0D ; -> [0D] F872: D7 94 STAB Mag94Word ; -> [94] F874: D6 00 LDAB Track_Mag9E ; -> [00] F876: CA 40 ORAB #0x40 ; = 64 F878: D7 00 STAB Track_Mag9E ; -> [00] F87A: D7 9E STAB Mag9EByte ; -> [9E] F87C: DE 90 LDX Mag90RPMWord ; -> [90] F87E: DF 07 STX RPMValue ; -> [07] F880: 96 0A LDAA RAMByte0A ; -> [0A] F882: D6 39 LDAB RAMByte39 ; -> [39] F884: C5 40 BITB #0x40 ; = 64 F886: 27 6E BEQ F8F6 F888: 80 2E SUBA #0x2E ; = 46 F88A: CE F1 B0 LDX #Map11Byte ; -> 0xF1B0 = 61872 F88D: 96 99 LDAA Mag99EngCSR ; -> [99] F88F: 24 2D BHIS F8BE F891: 5D TSTB F892: 2A 62 BPL F8F6 F894: C4 7F ANDB #0x7F ; = 127 F896: D7 39 STAB RAMByte39 ; -> [39] F898: 85 10 BITA #0x10 ; = 16 F89A: 27 5A BEQ F8F6 F89C: D6 3A LDAB RAMByte3A ; -> [3A] F89E: C5 F0 BITB #0xF0 ; = 240 F8A0: 26 54 BNE F8F6 F8A2: 85 02 BITA #0x02 F8A4: 26 04 BNE F8AA F8A6: D6 40 LDAB RAMByte40 ; -> [40] F8A8: 2A 03 BPL F8AD F8AA: CE 00 30 LDX #RAMByte30 ; -> 0x0030 = 48 F8AD: 96 2D LDAA RAMByte2D ; -> [2D] F8AF: AB 00 ADDA 0(X) F8B1: 97 2D STAA RAMByte2D ; -> [2D] F8B3: CE F1 B6 LDX #0xF1B6 ; = 61878 F8B6: 25 31 BLO F8E9 F8B8: A1 00 CMPA 0(X) F8BA: 25 34 BLO F8F0 F8BC: 20 2B BRA F8E9 F8BE: 5D TSTB F8BF: 2B 35 BMI F8F6 F8C1: CA 80 ORAB #0x80 ; = 128 F8C3: D7 39 STAB RAMByte39 ; -> [39] F8C5: 85 10 BITA #0x10 ; = 16 F8C7: 27 2D BEQ F8F6 F8C9: D6 3A LDAB RAMByte3A ; -> [3A] F8CB: C5 F0 BITB #0xF0 ; = 240 F8CD: 26 27 BNE F8F6 F8CF: 85 02 BITA #0x02 F8D1: 26 04 BNE F8D7 F8D3: D6 40 LDAB RAMByte40 ; -> [40] F8D5: 2A 03 BPL F8DA F8D7: CE 00 30 LDX #RAMByte30 ; -> 0x0030 = 48 F8DA: 96 2D LDAA RAMByte2D ; -> [2D] F8DC: A0 00 SUBA 0(X) F8DE: 97 2D STAA RAMByte2D ; -> [2D] F8E0: CE F1 B7 LDX #0xF1B7 ; = 61879 F8E3: 25 04 BLO F8E9 F8E5: A1 00 CMPA 0(X) F8E7: 24 07 BHIS F8F0 F8E9: A6 00 LDAA 0(X) F8EB: 97 2D STAA RAMByte2D ; -> [2D] F8ED: 7F 00 2E CLR RAMByte2E ; -> 0x2E F8F0: 96 39 LDAA RAMByte39 ; -> [39] F8F2: 8A 02 ORAA #0x02 F8F4: 97 39 STAA RAMByte39 ; -> [39] F8F6: 7E F5 FF JMP ReMagic10 ; -> 0xF5FF F8F9: Magic10_1B: F8F9: D6 17 LDAB RAMByte17 ; -> [17] F8FB: 2A 06 BPL Magic10_1B+10 ; -> 0xF903 F8FD: B6 F1 48 LDAA IdleTimingTable+2 ; -> 0xF148 F900: 7E F9 BB JMP IgnTiming+83 ; -> 0xF9BB F903: 96 40 LDAA RAMByte40 ; -> [40] F905: D6 99 LDAB Mag99EngCSR ; -> [99] F907: C5 02 BITB #0x02 F909: 26 16 BNE Magic10_1B+40 ; -> 0xF921 F90B: D6 09 LDAB BoostByteValue ; -> [09] F90D: C0 38 SUBB #0x38 ; = 56 F90F: 23 10 BLOS Magic10_1B+40 ; -> 0xF921 F911: 4D TSTA F912: 2B 14 BMI Magic10_1B+47 ; -> 0xF928 F914: 7C 00 41 INC RAMByte41 ; -> 0x41 F917: D6 41 LDAB RAMByte41 ; -> [41] F919: C0 32 SUBB #0x32 ; = 50 F91B: 25 0B BLO Magic10_1B+47 ; -> 0xF928 F91D: 8A 80 ORAA #0x80 ; = 128 F91F: 20 05 BRA Magic10_1B+45 ; -> 0xF926 F921: 7F 00 41 CLR RAMByte41 ; -> 0x41 F924: 84 7F ANDA #0x7F ; = 127 F926: 97 40 STAA RAMByte40 ; -> [40] F928: D6 99 LDAB Mag99EngCSR ; -> [99] F92A: C5 02 BITB #0x02 F92C: 26 3A BNE IgnTiming ; -> 0xF968 F92E: 4D TSTA F92F: 2B 37 BMI IgnTiming ; -> 0xF968 F931: DE 07 LDX RPMValue ; -> [07] F933: DF 24 STX TablePtrW ; -> [24] F935: 96 24 LDAA TablePtrW ; -> [24] F937: D6 25 LDAB TablePtrW+1 ; -> [25] F939: F0 F1 01 SUBB RPMMap16+1 ; -> 0xF101 F93C: B2 F1 00 SBCA RPMMap16 ; -> 0xF100 F93F: 25 0B BLO Magic10_1B+83 ; -> 0xF94C F941: BD F2 A7 JSR IndexMag90 ; -> 0xF2A7 F944: CE F1 30 LDX #DecelTimingTable ; -> 0xF130 = 61744 F947: BD F2 7B JSR Subr27B ; -> 0xF27B F94A: 20 08 BRA Magic10_1B+91 ; -> 0xF954 F94C: D6 17 LDAB RAMByte17 ; -> [17] F94E: 54 LSRB F94F: 25 07 BLO Magic10_1B+95 ; -> 0xF958 F951: B6 F1 48 LDAA IdleTimingTable+2 ; -> 0xF148 F954: 9B 03 ADDA RAMByte03 ; -> [03] F956: 20 5B BRA IgnTiming+75 ; -> 0xF9B3 F958: CE F1 46 LDX #IdleTimingTable ; -> 0xF146 = 61766 F95B: DF 24 STX TablePtrW ; -> [24] F95D: CE F1 40 LDX #IdleRPMMap3 ; -> 0xF140 = 61760 F960: BD F2 AF JSR IndexMag90Map ; -> 0xF2AF F963: CE F1 46 LDX #IdleTimingTable ; -> 0xF146 = 61766 F966: 20 DF BRA Magic10_1B+78 ; -> 0xF947 F968: IgnTiming: F968: BD F2 A7 JSR IndexMag90 ; -> 0xF2A7 F96B: CE F1 20 LDX #ManPressureMap16 ; -> 0xF120 = 61728 F96E: 96 09 LDAA BoostByteValue ; -> [09] F970: C6 10 LDAB #0x10 ; = 16 F972: BD F3 8A JSR GetTabIndexB ; -> 0xF38A F975: D7 28 STAB BoostIndex ; -> [28] F977: BD F2 4A JSR GetTabStepB ; -> 0xF24A F97A: D7 29 STAB BoostStep ; -> [29] F97C: CE F0 00 LDX #TimingTable ; -> 0xF000 = 61440 F97F: DF 24 STX TablePtrW ; -> [24] F981: 96 28 LDAA BoostIndex ; -> [28] F983: 48 ASLA F984: 48 ASLA F985: 48 ASLA F986: 48 ASLA F987: 9B 26 ADDA RPMIndex ; -> [26] F989: 97 25 STAA TablePtrW+1 ; -> [25] F98B: DE 24 LDX TablePtrW ; -> [24] F98D: D6 27 LDAB RPMStep ; -> [27] F98F: BD F2 87 JSR Subr287 ; -> 0xF287 F992: 97 26 STAA RPMIndex ; -> [26] F994: 96 25 LDAA TablePtrW+1 ; -> [25] F996: 8B 10 ADDA #0x10 ; = 16 F998: 97 25 STAA TablePtrW+1 ; -> [25] F99A: DE 24 LDX TablePtrW ; -> [24] F99C: D6 27 LDAB RPMStep ; -> [27] F99E: BD F2 87 JSR Subr287 ; -> 0xF287 F9A1: D6 29 LDAB BoostStep ; -> [29] F9A3: 97 27 STAA RPMStep ; -> [27] F9A5: CE 00 26 LDX #RPMIndex ; -> 0x0026 = 38 F9A8: BD F2 87 JSR Subr287 ; -> 0xF287 F9AB: D6 09 LDAB BoostByteValue ; -> [09] F9AD: C0 66 SUBB #0x66 ; = 102 F9AF: 25 02 BLO IgnTiming+75 ; -> 0xF9B3 F9B1: 9B 02 ADDA RAMByte02 ; -> [02] F9B3: B1 F1 4D CMPA InitVal_01 ; -> 0xF14D F9B6: 25 03 BLO IgnTiming+83 ; -> 0xF9BB F9B8: B6 F1 4D LDAA InitVal_01 ; -> 0xF14D F9BB: 97 01 STAA RAMByte01 ; -> [01] F9BD: DE 07 LDX RPMValue ; -> [07] F9BF: DF 24 STX TablePtrW ; -> [24] F9C1: 96 24 LDAA TablePtrW ; -> [24] F9C3: D6 25 LDAB TablePtrW+1 ; -> [25] F9C5: CE F1 49 LDX #RPMRedline ; -> 0xF149 = 61769 F9C8: BD F3 11 JSR Subr311 ; -> 0xF311 F9CB: C6 03 LDAB #0x03 F9CD: BD F2 30 JSR WRMag9A9B ; -> 0xF230 F9D0: 16 TAB F9D1: 96 01 LDAA RAMByte01 ; -> [01] F9D3: 10 SBA F9D4: 80 04 SUBA #0x04 F9D6: C6 C0 LDAB #0xC0 ; = 192 F9D8: BD F2 30 JSR WRMag9A9B ; -> 0xF230 F9DB: 97 04 STAA RAMByte04 ; -> [04] F9DD: D6 17 LDAB RAMByte17 ; -> [17] F9DF: 2A 02 BPL F9E3 F9E1: 97 05 STAA RAMByte05 ; -> [05] F9E3: CE F1 B0 LDX #Map11Byte ; -> 0xF1B0 = 61872 F9E6: DF 24 STX TablePtrW ; -> [24] F9E8: CE F1 A0 LDX #RPMMap8 ; -> 0xF1A0 = 61856 F9EB: 0F SEI F9EC: 96 07 LDAA RPMValue ; -> [07] F9EE: D6 08 LDAB RPMValue+1 ; -> [08] F9F0: 0E CLI F9F1: BD F2 D7 JSR GetTabIndexW ; -> 0xF2D7 F9F4: CE F1 B8 LDX #Map12Byte ; -> 0xF1B8 = 61880 F9F7: DF 24 STX TablePtrW ; -> [24] F9F9: 96 25 LDAA TablePtrW+1 ; -> [25] F9FB: 9B 2A ADDA RAMByte2A ; -> [2A] F9FD: 97 25 STAA TablePtrW+1 ; -> [25] F9FF: DE 24 LDX TablePtrW ; -> [24] FA01: A6 00 LDAA 0(X) FA03: 97 30 STAA RAMByte30 ; -> [30] FA05: A6 08 LDAA 8(X) FA07: 97 31 STAA RAMByte31 ; -> [31] FA09: A6 10 LDAA 10(X) FA0B: 97 32 STAA RAMByte32 ; -> [32] FA0D: BD F2 A7 JSR IndexMag90 ; -> 0xF2A7 FA10: CE F1 D0 LDX #WOTOpenLoopFQV ; -> 0xF1D0 = 61904 FA13: DF 24 STX TablePtrW ; -> [24] FA15: 96 25 LDAA TablePtrW+1 ; -> [25] FA17: 9B 26 ADDA RPMIndex ; -> [26] FA19: 97 25 STAA TablePtrW+1 ; -> [25] FA1B: DE 24 LDX TablePtrW ; -> [24] FA1D: A6 00 LDAA 0(X) FA1F: 97 33 STAA RAMByte33 ; -> [33] FA21: A6 10 LDAA 10(X) FA23: 97 34 STAA RAMByte34 ; -> [34] FA25: CE F1 60 LDX #OverBoostTable ; -> 0xF160 = 61792 FA28: BD F2 7B JSR Subr27B ; -> 0xF27B FA2B: 97 28 STAA BoostIndex ; -> [28] FA2D: CE F1 F0 LDX #Map18Byte ; -> 0xF1F0 = 61936 FA30: BD F2 7B JSR Subr27B ; -> 0xF27B FA33: 97 29 STAA BoostStep ; -> [29] FA35: CE F2 00 LDX #Map19Byte ; -> 0xF200 = 61952 FA38: BD F2 7B JSR Subr27B ; -> 0xF27B FA3B: 97 2A STAA RAMByte2A ; -> [2A] FA3D: 96 09 LDAA BoostByteValue ; -> [09] FA3F: C6 80 LDAB #0x80 ; = 128 FA41: CE 00 28 LDX #BoostIndex ; -> 0x0028 = 40 FA44: 8D 0C BSR FA52 FA46: C6 40 LDAB #0x40 ; = 64 FA48: 08 INCX FA49: 8D 07 BSR FA52 FA4B: C6 20 LDAB #0x20 ; = 32 FA4D: 08 INCX FA4E: 8D 02 BSR FA52 FA50: 20 19 BRA FA6B FA52: 37 PSHB FA53: E6 00 LDAB 0(X) FA55: 11 CBA FA56: 24 0B BHIS FA63 FA58: C0 05 SUBB #0x05 FA5A: 11 CBA FA5B: 24 0C BHIS FA69 FA5D: 33 POPB FA5E: 53 COMB FA5F: D4 18 ANDB RAMByte18 ; -> [18] FA61: 20 03 BRA FA66 FA63: 33 POPB FA64: DA 18 ORAB RAMByte18 ; -> [18] FA66: D7 18 STAB RAMByte18 ; -> [18] FA68: 39 RTS FA69: 33 POPB FA6A: 39 RTS FA6B: CE F1 49 LDX #RPMRedline ; -> 0xF149 = 61769 FA6E: 96 40 LDAA RAMByte40 ; -> [40] FA70: 84 F7 ANDA #0xF7 ; = 247 FA72: 27 02 BEQ FA76 FA74: 08 INCX FA75: 08 INCX FA76: EE 00 LDX 0(X) FA78: DF 24 STX TablePtrW ; -> [24] FA7A: 96 24 LDAA TablePtrW ; -> [24] FA7C: D6 25 LDAB TablePtrW+1 ; -> [25] FA7E: C0 0A SUBB #0x0A ; = 10 FA80: 82 00 SBCA #0x00 FA82: 97 26 STAA RPMIndex ; -> [26] FA84: D7 27 STAB RPMStep ; -> [27] FA86: 0F SEI FA87: 96 07 LDAA RPMValue ; -> [07] FA89: D6 08 LDAB RPMValue+1 ; -> [08] FA8B: 0E CLI FA8C: 7D 00 19 TST RAMByte19 ; -> 0x19 FA8F: 2B 0B BMI FA9C FA91: D0 25 SUBB TablePtrW+1 ; -> [25] FA93: 92 24 SBCA TablePtrW ; -> [24] FA95: 25 0E BLO FAA5 FA97: 73 00 19 COM RAMByte19 ; -> 0x19 FA9A: 20 09 BRA FAA5 FA9C: D0 27 SUBB RPMStep ; -> [27] FA9E: 92 26 SBCA RPMIndex ; -> [26] FAA0: 24 03 BHIS FAA5 FAA2: 7F 00 19 CLR RAMByte19 ; -> 0x19 FAA5: 7E F5 FF JMP ReMagic10 ; -> 0xF5FF FAA8: Magic10_1C: FAA8: D6 17 LDAB RAMByte17 ; -> [17] FAAA: C5 20 BITB #0x20 ; = 32 FAAC: 27 10 BEQ Magic10_1C+22 ; -> 0xFABE FAAE: F6 F1 B4 LDAB Map11Byte+4 ; -> 0xF1B4 FAB1: 96 0C LDAA RAMByte0C ; -> [0C] FAB3: B0 F1 B5 SUBA Map11Byte+5 ; -> 0xF1B5 FAB6: 23 03 BLOS Magic10_1C+19 ; -> 0xFABB FAB8: F6 F1 B3 LDAB Map11Byte+3 ; -> 0xF1B3 FABB: 7E FB 8B JMP FB8B FABE: D6 2F LDAB RAMByte2F ; -> [2F] FAC0: 96 17 LDAA RAMByte17 ; -> [17] FAC2: 2B F7 BMI Magic10_1C+19 ; -> 0xFABB FAC4: 96 3A LDAA RAMByte3A ; -> [3A] FAC6: D6 99 LDAB Mag99EngCSR ; -> [99] FAC8: C4 03 ANDB #0x03 FACA: 26 0E BNE Magic10_1C+50 ; -> 0xFADA FACC: D6 39 LDAB RAMByte39 ; -> [39] FACE: C5 40 BITB #0x40 ; = 64 FAD0: 27 08 BEQ Magic10_1C+50 ; -> 0xFADA FAD2: 8A 40 ORAA #0x40 ; = 64 FAD4: 97 3A STAA RAMByte3A ; -> [3A] FAD6: C6 32 LDAB #0x32 ; = 50 FAD8: 20 E1 BRA Magic10_1C+19 ; -> 0xFABB FADA: 84 BF ANDA #0xBF ; = 191 FADC: 97 3A STAA RAMByte3A ; -> [3A] FADE: D6 2F LDAB RAMByte2F ; -> [2F] FAE0: 96 99 LDAA Mag99EngCSR ; -> [99] FAE2: 85 10 BITA #0x10 ; = 16 FAE4: 27 D5 BEQ Magic10_1C+19 ; -> 0xFABB FAE6: 96 3A LDAA RAMByte3A ; -> [3A] FAE8: D6 99 LDAB Mag99EngCSR ; -> [99] FAEA: C5 01 BITB #0x01 FAEC: 27 1F BEQ FB0D FAEE: 7F 00 37 CLR RAMByte37 ; -> 0x37 FAF1: 4D TSTA FAF2: 2A 35 BPL FB29 FAF4: 7C 00 38 INC RAMByte38 ; -> 0x38 FAF7: D6 38 LDAB RAMByte38 ; -> [38] FAF9: C0 19 SUBB #0x19 ; = 25 FAFB: 26 0B BNE Magic10_1C+96 ; -> 0xFB08 FAFD: D7 38 STAB RAMByte38 ; -> [38] FAFF: 84 7F ANDA #0x7F ; = 127 FB01: 97 3A STAA RAMByte3A ; -> [3A] FB03: D6 2F LDAB RAMByte2F ; -> [2F] FB05: 7E FB 8B JMP FB8B FB08: D6 33 LDAB RAMByte33 ; -> [33] FB0A: 7E FB 8B JMP FB8B FB0D: 7F 00 38 CLR RAMByte38 ; -> 0x38 FB10: 4D TSTA FB11: 2B 11 BMI FB24 FB13: 7C 00 37 INC RAMByte37 ; -> 0x37 FB16: D6 37 LDAB RAMByte37 ; -> [37] FB18: C0 19 SUBB #0x19 ; = 25 FB1A: 26 0D BNE FB29 FB1C: D7 37 STAB RAMByte37 ; -> [37] FB1E: 8A 80 ORAA #0x80 ; = 128 FB20: 84 CF ANDA #0xCF ; = 207 FB22: 97 3A STAA RAMByte3A ; -> [3A] FB24: D6 33 LDAB RAMByte33 ; -> [33] FB26: 7E FB 8B JMP FB8B FB29: D6 18 LDAB RAMByte18 ; -> [18] FB2B: C5 40 BITB #0x40 ; = 64 FB2D: 27 0B BEQ FB3A FB2F: 8A 20 ORAA #0x20 ; = 32 FB31: 84 EF ANDA #0xEF ; = 239 FB33: 97 3A STAA RAMByte3A ; -> [3A] FB35: D6 33 LDAB RAMByte33 ; -> [33] FB37: 7E FB 8B JMP FB8B FB3A: C5 20 BITB #0x20 ; = 32 FB3C: 27 09 BEQ FB47 FB3E: 8A 10 ORAA #0x10 ; = 16 FB40: 97 3A STAA RAMByte3A ; -> [3A] FB42: D6 34 LDAB RAMByte34 ; -> [34] FB44: 7E FB 8B JMP FB8B FB47: 85 30 BITA #0x30 ; = 48 FB49: 27 09 BEQ FB54 FB4B: 84 CF ANDA #0xCF ; = 207 FB4D: 97 3A STAA RAMByte3A ; -> [3A] FB4F: D6 2F LDAB RAMByte2F ; -> [2F] FB51: 7E FB 8B JMP FB8B FB54: 96 39 LDAA RAMByte39 ; -> [39] FB56: 85 40 BITA #0x40 ; = 64 FB58: 26 53 BNE FBAD FB5A: D6 2F LDAB RAMByte2F ; -> [2F] FB5C: 96 40 LDAA RAMByte40 ; -> [40] FB5E: 85 08 BITA #0x08 FB60: 26 07 BNE FB69 FB62: 96 0C LDAA RAMByte0C ; -> [0C] FB64: B0 F1 97 SUBA BlockTempMap8+7 ; -> 0xF197 FB67: 22 22 BHI FB8B FB69: D6 0A LDAB RAMByte0A ; -> [0A] FB6B: C1 36 CMPB #0x36 ; = 54 FB6D: 24 11 BHIS FB80 FB6F: C1 26 CMPB #0x26 ; = 38 FB71: 23 0D BLOS FB80 FB73: D6 2F LDAB RAMByte2F ; -> [2F] FB75: 96 40 LDAA RAMByte40 ; -> [40] FB77: 85 08 BITA #0x08 FB79: 27 10 BEQ FB8B FB7B: F6 F1 9F LDAB ColdOpenLoopFQV+7 ; -> 0xF19F FB7E: 20 0B BRA FB8B FB80: 86 40 LDAA #0x40 ; = 64 FB82: 0F SEI FB83: 9A 39 ORAA RAMByte39 ; -> [39] FB85: 97 39 STAA RAMByte39 ; -> [39] FB87: 0E CLI FB88: F6 F1 9F LDAB ColdOpenLoopFQV+7 ; -> 0xF19F FB8B: D7 2D STAB RAMByte2D ; -> [2D] FB8D: 7F 00 2E CLR RAMByte2E ; -> 0x2E FB90: 96 2D LDAA RAMByte2D ; -> [2D] FB92: CE F1 B6 LDX #0xF1B6 ; = 61878 FB95: A1 00 CMPA 0(X) FB97: 24 05 BHIS FB9E FB99: 08 INCX FB9A: A1 00 CMPA 0(X) FB9C: 24 07 BHIS FBA5 FB9E: A6 00 LDAA 0(X) FBA0: 97 2D STAA RAMByte2D ; -> [2D] FBA2: 7F 00 2E CLR RAMByte2E ; -> 0x2E FBA5: CE 00 00 LDX #0x0000 FBA8: DF 35 STX RAMByte35 ; -> [35] FBAA: 7E FC 53 JMP FC53 FBAD: 96 40 LDAA RAMByte40 ; -> [40] FBAF: 2B 06 BMI FBB7 FBB1: 96 99 LDAA Mag99EngCSR ; -> [99] FBB3: 85 02 BITA #0x02 FBB5: 27 29 BEQ FBE0 FBB7: DE 35 LDX RAMByte35 ; -> [35] FBB9: 08 INCX FBBA: DF 35 STX RAMByte35 ; -> [35] FBBC: 86 00 LDAA #0x00 FBBE: C6 71 LDAB #0x71 ; = 113 FBC0: D0 36 SUBB RAMByte36 ; -> [36] FBC2: 92 35 SBCA RAMByte35 ; -> [35] FBC4: 24 24 BHIS FBEA FBC6: 96 0A LDAA RAMByte0A ; -> [0A] FBC8: 81 2C CMPA #0x2C ; = 44 FBCA: 24 19 BHIS FBE5 FBCC: 81 28 CMPA #0x28 ; = 40 FBCE: 25 15 BLO FBE5 FBD0: 86 00 LDAA #0x00 FBD2: C6 7D LDAB #0x7D ; = 125 FBD4: D0 36 SUBB RAMByte36 ; -> [36] FBD6: 92 35 SBCA RAMByte35 ; -> [35] FBD8: 24 10 BHIS FBEA FBDA: D6 39 LDAB RAMByte39 ; -> [39] FBDC: C4 BF ANDB #0xBF ; = 191 FBDE: D7 39 STAB RAMByte39 ; -> [39] FBE0: CE 00 00 LDX #0x0000 FBE3: 20 03 BRA FBE8 FBE5: CE 00 71 LDX #0x0071 ; = 113 FBE8: DF 35 STX RAMByte35 ; -> [35] FBEA: DE 2D LDX RAMByte2D ; -> [2D] FBEC: DF 2B STX RAMByte2B ; -> [2B] FBEE: 96 99 LDAA Mag99EngCSR ; -> [99] FBF0: D6 39 LDAB RAMByte39 ; -> [39] FBF2: 2B 25 BMI FC19 FBF4: CE 00 32 LDX #RAMByte32 ; -> 0x0032 = 50 FBF7: 85 02 BITA #0x02 FBF9: 26 07 BNE FC02 FBFB: 96 40 LDAA RAMByte40 ; -> [40] FBFD: 2B 03 BMI FC02 FBFF: CE F1 B2 LDX #0xF1B2 ; = 61874 FC02: 96 2B LDAA RAMByte2B ; -> [2B] FC04: D6 2C LDAB RAMByte2C ; -> [2C] FC06: EB 00 ADDB 0(X) FC08: 89 00 ADCA #0x00 FC0A: 97 2B STAA RAMByte2B ; -> [2B] FC0C: D7 2C STAB RAMByte2C ; -> [2C] FC0E: CE F1 B6 LDX #0xF1B6 ; = 61878 FC11: 25 29 BLO FC3C FC13: A1 00 CMPA 0(X) FC15: 25 2C BLO FC43 FC17: 20 23 BRA FC3C FC19: CE 00 31 LDX #RAMByte31 ; -> 0x0031 = 49 FC1C: 85 02 BITA #0x02 FC1E: 26 07 BNE FC27 FC20: 96 40 LDAA RAMByte40 ; -> [40] FC22: 2B 03 BMI FC27 FC24: CE F1 B1 LDX #0xF1B1 ; = 61873 FC27: 96 2B LDAA RAMByte2B ; -> [2B] FC29: D6 2C LDAB RAMByte2C ; -> [2C] FC2B: E0 00 SUBB 0(X) FC2D: 82 00 SBCA #0x00 FC2F: 97 2B STAA RAMByte2B ; -> [2B] FC31: D7 2C STAB RAMByte2C ; -> [2C] FC33: CE F1 B7 LDX #0xF1B7 ; = 61879 FC36: 25 04 BLO FC3C FC38: A1 00 CMPA 0(X) FC3A: 24 07 BHIS FC43 FC3C: A6 00 LDAA 0(X) FC3E: 97 2B STAA RAMByte2B ; -> [2B] FC40: 7F 00 2C CLR RAMByte2C ; -> 0x2C FC43: DE 2B LDX RAMByte2B ; -> [2B] FC45: 0F SEI FC46: D6 39 LDAB RAMByte39 ; -> [39] FC48: C5 02 BITB #0x02 FC4A: 26 02 BNE FC4E FC4C: DF 2D STX RAMByte2D ; -> [2D] FC4E: C4 FD ANDB #0xFD ; = 253 FC50: D7 39 STAB RAMByte39 ; -> [39] FC52: 0E CLI FC53: DE 2D LDX RAMByte2D ; -> [2D] FC55: DF 2B STX RAMByte2B ; -> [2B] FC57: CE 00 2B LDX #RAMByte2B ; -> 0x002B = 43 FC5A: 86 8F LDAA #0x8F ; = 143 FC5C: BD F3 69 JSR Subr369 ; -> 0xF369 FC5F: 0F SEI FC60: 97 45 STAA RAMByte45 ; -> [45] FC62: D7 46 STAB RAMByte46 ; -> [46] FC64: 0E CLI FC65: 7E F5 FF JMP ReMagic10 ; -> 0xF5FF ; Calculate next engine timing value (wild guess...) ; (Magic10 interrupt, part of Magic10_1B) ; Some data/tables interspersed with the ROM code FC68: Magic10_1D: FC68: D6 40 LDAB RAMByte40 ; -> [40] FC6A: 96 0B LDAA RAMByte0B ; -> [0B] FC6C: 81 12 CMPA #0x12 ; = 18 FC6E: 25 04 BLO Magic10_1D+12 ; -> 0xFC74 FC70: 81 ED CMPA #0xED ; = 237 FC72: 25 06 BLO Magic10_1D+18 ; -> 0xFC7A FC74: 86 00 LDAA #0x00 FC76: CA 20 ORAB #0x20 ; = 32 FC78: 20 02 BRA Magic10_1D+20 ; -> 0xFC7C FC7A: C4 DF ANDB #0xDF ; = 223 FC7C: D7 40 STAB RAMByte40 ; -> [40] FC7E: CE F1 50 LDX #AirTempMap8 ; -> 0xF150 = 61776 FC81: C6 08 LDAB #0x08 FC83: BD F3 8A JSR GetTabIndexB ; -> 0xF38A FC86: 37 PSHB FC87: BD F2 4A JSR GetTabStepB ; -> 0xF24A FC8A: 32 POPA FC8B: CE F1 58 LDX #HotAirRetard ; -> 0xF158 = 61784 FC8E: DF 3B STX RAMByte3B ; -> [3B] FC90: 9B 3C ADDA RAMByte3C ; -> [3C] FC92: 97 3C STAA RAMByte3C ; -> [3C] FC94: DE 3B LDX RAMByte3B ; -> [3B] FC96: BD F2 87 JSR Subr287 ; -> 0xF287 FC99: 80 3C SUBA #0x3C ; = 60 FC9B: 97 02 STAA RAMByte02 ; -> [02] FC9D: D6 40 LDAB RAMByte40 ; -> [40] FC9F: 96 17 LDAA RAMByte17 ; -> [17] FCA1: 85 40 BITA #0x40 ; = 64 FCA3: 27 0E BEQ Magic10_1D+75 ; -> 0xFCB3 FCA5: 96 0C LDAA RAMByte0C ; -> [0C] FCA7: 80 F3 SUBA #0xF3 ; = 243 FCA9: 25 04 BLO Magic10_1D+71 ; -> 0xFCAF FCAB: CA 08 ORAB #0x08 FCAD: 20 02 BRA Magic10_1D+73 ; -> 0xFCB1 FCAF: C4 F7 ANDB #0xF7 ; = 247 FCB1: D7 40 STAB RAMByte40 ; -> [40] FCB3: 4F CLRA FCB4: C5 08 BITB #0x08 FCB6: 26 1F BNE FCD7 FCB8: CE F1 70 LDX #ColdEngMap16 ; -> 0xF170 = 61808 FCBB: 96 0C LDAA RAMByte0C ; -> [0C] FCBD: C6 10 LDAB #0x10 ; = 16 FCBF: BD F3 8A JSR GetTabIndexB ; -> 0xF38A FCC2: 37 PSHB FCC3: BD F2 4A JSR GetTabStepB ; -> 0xF24A FCC6: 32 POPA FCC7: CE F1 80 LDX #ColdEngAdvance ; -> 0xF180 = 61824 FCCA: DF 3B STX RAMByte3B ; -> [3B] FCCC: 9B 3C ADDA RAMByte3C ; -> [3C] FCCE: 97 3C STAA RAMByte3C ; -> [3C] FCD0: DE 3B LDX RAMByte3B ; -> [3B] FCD2: BD F2 87 JSR Subr287 ; -> 0xF287 FCD5: 80 3C SUBA #0x3C ; = 60 FCD7: 97 03 STAA RAMByte03 ; -> [03] FCD9: 96 40 LDAA RAMByte40 ; -> [40] FCDB: 85 08 BITA #0x08 FCDD: 27 05 BEQ FCE4 FCDF: B6 F1 9F LDAA ColdOpenLoopFQV+7 ; -> 0xF19F FCE2: 20 1F BRA FD03 FCE4: CE F1 90 LDX #BlockTempMap8 ; -> 0xF190 = 61840 FCE7: 96 0C LDAA RAMByte0C ; -> [0C] FCE9: C6 08 LDAB #0x08 FCEB: BD F3 8A JSR GetTabIndexB ; -> 0xF38A FCEE: 37 PSHB FCEF: BD F2 4A JSR GetTabStepB ; -> 0xF24A FCF2: 32 POPA FCF3: 37 PSHB FCF4: CE F1 98 LDX #ColdOpenLoopFQV ; -> 0xF198 = 61848 FCF7: DF 3B STX RAMByte3B ; -> [3B] FCF9: 9B 3C ADDA RAMByte3C ; -> [3C] FCFB: 97 3C STAA RAMByte3C ; -> [3C] FCFD: DE 3B LDX RAMByte3B ; -> [3B] FCFF: 33 POPB FD00: BD F2 87 JSR Subr287 ; -> 0xF287 FD03: 97 2F STAA RAMByte2F ; -> [2F] FD05: 96 99 LDAA Mag99EngCSR ; -> [99] FD07: D6 17 LDAB RAMByte17 ; -> [17] FD09: 2B 0C BMI FD17 FD0B: 84 EF ANDA #0xEF ; = 239 FD0D: D6 18 LDAB RAMByte18 ; -> [18] FD0F: 2B 06 BMI FD17 FD11: D6 19 LDAB RAMByte19 ; -> [19] FD13: 2B 02 BMI FD17 FD15: 8A 10 ORAA #0x10 ; = 16 FD17: DE 07 LDX RPMValue ; -> [07] FD19: DF 3B STX RAMByte3B ; -> [3B] FD1B: 85 02 BITA #0x02 FD1D: 26 24 BNE FD43 FD1F: D6 40 LDAB RAMByte40 ; -> [40] FD21: 2B 20 BMI FD43 FD23: 85 40 BITA #0x40 ; = 64 FD25: 26 10 BNE FD37 FD27: D6 3C LDAB RAMByte3C ; -> [3C] FD29: F0 F2 13 SUBB HiIdleRPM2+1 ; -> 0xF213 FD2C: D6 3B LDAB RAMByte3B ; -> [3B] FD2E: F2 F2 12 SBCB HiIdleRPM2 ; -> 0xF212 FD31: 25 12 BLO FD45 FD33: 8A 40 ORAA #0x40 ; = 64 FD35: 20 0E BRA FD45 FD37: D6 3C LDAB RAMByte3C ; -> [3C] FD39: F0 F2 11 SUBB HiIdleRPM1+1 ; -> 0xF211 FD3C: D6 3B LDAB RAMByte3B ; -> [3B] FD3E: F2 F2 10 SBCB HiIdleRPM1 ; -> 0xF210 FD41: 24 02 BHIS FD45 FD43: 84 BF ANDA #0xBF ; = 191 FD45: 84 50 ANDA #0x50 ; = 80 FD47: 0F SEI FD48: D6 99 LDAB Mag99EngCSR ; -> [99] FD4A: C4 AF ANDB #0xAF ; = 175 FD4C: 1B ABA FD4D: 97 99 STAA Mag99EngCSR ; -> [99] FD4F: 0E CLI FD50: DE 07 LDX RPMValue ; -> [07] FD52: DF 3B STX RAMByte3B ; -> [3B] FD54: D6 17 LDAB RAMByte17 ; -> [17] FD56: 2A 2F BPL FD87 FD58: 96 3C LDAA RAMByte3C ; -> [3C] FD5A: 80 03 SUBA #0x03 FD5C: 96 3B LDAA RAMByte3B ; -> [3B] FD5E: 82 00 SBCA #0x00 FD60: 25 25 BLO FD87 FD62: 96 00 LDAA Track_Mag9E ; -> [00] FD64: 2B 21 BMI FD87 FD66: 96 9F LDAA Mag9FByte ; -> [9F] FD68: 2A 1D BPL FD87 FD6A: 86 80 LDAA #0x80 ; = 128 FD6C: 97 9F STAA Mag9FByte ; -> [9F] FD6E: 0F SEI FD6F: 96 99 LDAA Mag99EngCSR ; -> [99] FD71: 8A 10 ORAA #0x10 ; = 16 FD73: 97 99 STAA Mag99EngCSR ; -> [99] FD75: 0E CLI FD76: 86 03 LDAA #0x03 FD78: 97 9D STAA Mag9DByte ; -> [9D] FD7A: 96 00 LDAA Track_Mag9E ; -> [00] FD7C: 8A 88 ORAA #0x88 ; = 136 FD7E: 97 00 STAA Track_Mag9E ; -> [00] FD80: 97 9E STAA Mag9EByte ; -> [9E] FD82: 86 42 LDAA #0x42 ; = 66 FD84: B7 01 01 STAA TimerCSR ; -> 0x101 FD87: 96 17 LDAA RAMByte17 ; -> [17] FD89: 2B 10 BMI FD9B FD8B: D6 3C LDAB RAMByte3C ; -> [3C] FD8D: F0 F1 45 SUBB IdleRPMMap3+5 ; -> 0xF145 FD90: D6 3B LDAB RAMByte3B ; -> [3B] FD92: F2 F1 44 SBCB IdleRPMMap3+4 ; -> 0xF144 FD95: 25 04 BLO FD9B FD97: 8A 01 ORAA #0x01 FD99: 20 1E BRA FDB9 FD9B: D6 3C LDAB RAMByte3C ; -> [3C] FD9D: C0 28 SUBB #0x28 ; = 40 FD9F: D6 3B LDAB RAMByte3B ; -> [3B] FDA1: C2 00 SBCB #0x00 FDA3: 25 02 BLO FDA7 FDA5: 84 DF ANDA #0xDF ; = 223 FDA7: D6 3C LDAB RAMByte3C ; -> [3C] FDA9: F0 F1 41 SUBB IdleRPMMap3+1 ; -> 0xF141 FDAC: D6 3B LDAB RAMByte3B ; -> [3B] FDAE: F2 F1 40 SBCB IdleRPMMap3 ; -> 0xF140 FDB1: 25 04 BLO FDB7 FDB3: 84 7F ANDA #0x7F ; = 127 FDB5: 20 02 BRA FDB9 FDB7: 84 FE ANDA #0xFE ; = 254 FDB9: 84 A1 ANDA #0xA1 ; = 161 FDBB: 0F SEI FDBC: D6 17 LDAB RAMByte17 ; -> [17] FDBE: C4 5E ANDB #0x5E ; = 94 FDC0: 1B ABA FDC1: 97 17 STAA RAMByte17 ; -> [17] FDC3: 0E CLI FDC4: 7E F5 FF JMP ReMagic10 ; -> 0xF5FF FDC7: FF=255 ... FFEF: FF=255 FFF0: 3F=063 3F=063 3F=063 3F=063 3F=063 3F=063 3F=063 3F=063 IntVector: FFF8: F500=62720 FFFA: F400=62464 FFFC: F400=62464 FFFE: F400=62464