Well this is the commented RAM
section of the code. Most bits and locations have been identified
for function but as always take with a grain of salt. I am always
learning more so these can change. The 68HC11 has 256 bytes of RAM
mapped to memory location $0000.
; -----------------------------------------------------------------------------
; This is the slope adjusted MAP ADC stash. The ADC reads the MAP's output
; voltage and then its slope and offset is adjusted slightly. The value in
; L0008 is the adjustment value that is added to the ADC reading and the
; sum is stashed here. Look at the L0008 location for more details as to
; where the breakpoints are located.
;
; NOTE: Look at mis49: L0008 is always zero so no correction is ever applied !
;
; NOTE: The only modifications to this value from the actual ADC reading is
; done by the Calibration routine (new L83e5) where it is increased by
; ~1.56%. L0008 is always zero so it is out of the picture.
;
;
L0000 equ $0000 ; slope adjusted MAP ADC reading
;
; The below table is what I measured for the MAP sensor that is in the '34
; (11/14/98)
; The displayed VAC was obtained from the simulator............12/29/98
;
; TAIR: 59 degrees
;
; Vacuum Voltage ADC L0000 VAC
; (in) (L002a) TAIR=59
; 0 4.55 237 240 -3.2"
; 1 4.44 231 234 -2.4"
; 2 4.32 225 228 -4.7"
; 3 4.15 216 219 -0.6"
; 4 4.00 208 211 0.2"
; 5 3.82 199 202 1.4"
; 6 3.65 190 192 2.5"
; 7 3.463 180 182 3.7"
; 8 3.302 172 174 4.7"
; 9 3.141 163 165 5.6"
; 10 2.953 154 156 6.8"
; 11 2.809 146 148 7.8"
; 12 2.632 137 139 8.8"
; 13 2.415 126 127 10.2"
; 14 2.263 118 119 11.0"
; 15 2.136 111 112 11.9"
; 16 1.954 102 103 13.0"
; 17 1.783 93 94 14.0"
; 18 1.607 84 85 15.2"
; 19 1.437 75 76 16.1"
; 20 1.238 64 65 17.4"
; 21 1.061 55 55 18.6"
; 22 .874 45 45 19.9"
; 23 .695 36 36 20.9"
; 24 .510 27 27 22.0"
; 25 .316 16 16 23.2"
; 26 .134 7 7 24.3"
; 27 .024 1 1 25.0"
; 28 .024 1 1 25.0"
; 29 .024 1 1 25.0"
;
; ALL BELOW IS WRONG - WRONG - WRONG !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
;
; The below table is what I measured for the MAP sensor that is in the '34
; (11/14/98)
;
; Input Voltage: 4.92 TAIR: 59 degrees H20: 55 degrees
;
; Vacuum Voltage ADC L0008 L0000 VAC Difference
; (in) (Displayed) (34-booster)
; 0 4.55 237 0 237 0.0 +1
; 1 4.44 231 0 229 0.0 +1
; 2 4.32 225 0 225 0.0 +4
; 3 4.15 216 1 217 0.1 +4
; 4 4.00 208 2 210 0.9 +5
; 5 3.82 199 3 202 1.9 +4
; 6 3.65 190 4 194 3.0 +4
; 7 3.463 180 5 185 4.2 +2
; 8 3.302 172 6 178 5.1 +3
; 9 3.141 163 6 169 6.1 +3
; 10 2.953 154 6 160 7.3 +2
; 11 2.809 146 6 152 8.1 0
; 12 2.632 137 6 143 9.1 +1
; 13 2.415 126 6 132 10.6 +1
; 14 2.263 118 6 124 11.5 0
; 15 2.136 111 6 117 12.2 +2
; 16 1.954 102 6 108 13.2 +5
; 17 1.783 93 6 99 14.3 +5
; 18 1.607 84 6 90 15.3 +3
; 19 1.437 75 6 81 16.5 +5
; 20 1.238 64 6 70 17.6 +3
; 21 1.061 55 6 61 18.6 +4
; 22 .874 45 6 51 19.9 +3
; 23 .695 36 6 42 20.9 +3
; 24 .510 27 6 33 22.0 +3
; 25 .316 16 6 22 23.2 +1
; 26 .134 7 6 13 24.2 +2
; 27 .024 1 6 7 25.0 0
; 28 .024 1 6 7 25.0 0
; 29 .024 1 6 7 25.0 0
;
; V_Step ~= 169.36 mv / in
; ADC_step(uncorrected) ~= 8.8 / in
;
; -----------------------------------------------
; The below table is what I measured for the MAP sensor I used on the vacuum
; booster pump controller....
;
; Vacuum Voltage ADC L0008 L0000
; (in)
; 0 4.61 236 0 236
; 1 4.45 228 0 228
; 2 4.29 220 1 221
; 3 4.13 211 2 213
; 4 3.96 203 2 205
; 5 3.80 195 3 198
; 6 3.63 186 4 190
; 7 3.475 178 5 183
; 8 3.30 169 6 175
; 9 3.12 160 6 166
; 10 2.971 152 6 158
; 11 2.85 146 6 152
; 12 2.656 136 6 142
; 13 2.444 125 6 131
; 14 2.301 118 6 124
; 15 2.123 109 6 115
; 16 1.890 97 6 103
; 17 1.713 88 6 94
; 18 1.574 81 6 87
; 19 1.368 70 6 76
; 20 1.201 61 6 67
; 21 1.000 51 6 57
; 22 .825 42 6 48
; 23 .637 33 6 39
; 24 .460 24 6 30
; 25 .285 15 6 21
; 26 .100 5 6 11
; 27 .026 1 6 7
; 28 .026 1 6 7
; 29 .026 1 6 7
;
; V_step ~= 173.4mv / in
; ADC_step(uncorrected) ~= 9 / in
; -----------------------------------------------------------------------------
L0001 equ $0001 ; flags
; ; xxxxxxx1 - Stop IAC 250ms periods (initial)
; ; xxxxxx1x - water over 60 degrees or
; ; motor over 5000 RPM (IAC flags)
; ; xxxxx1xx - computed Idle Air at max limit
; ; xxxx1xxx - computed Idle Air at min limit
; ; xxx1xxxx - TPS - Throttle plates Not closed
; ; x1xxxxxx - WOT throttle !
; ; 1xxxxxxx - Partial throttle only. Not closed
; ; or WOT.
; -----------------------------------------------------------------------------
; Air = (ECU_Air * 1.2375) - 103.0
;
; Note: These adjusted numbers seem to be about 2 degrees too high for
; how the controller reports the Air Temperature. I have noticed
; that on a cold start the Air always seems higher than the water
; when you would think they would have stablized to the same.....
;
L0002 equ $0002 ; TAIR - Air Temperature (Not ADC reading)
;
; Temp Res Vadc ADC ADC L0002 Ajusted
; -40 93000 4.18 214 D6 56 38
; -20 45000 4.06 208 D0 71 47
; 0 24200 3.87 198 C6 85 55
; 20 12850 3.57 183 B7 101 65
; 40 7130 3.15 161 A1 138 8A
; 50 5736 2.97 152 98 124 7C
; 60 4182 2.69 138 8A 133 85
; 70 3207 2.44 125 7D 142 8E
; 80 2543 2.22 114 72 149 95
; 90 1957 1.98 101 65 158 9E
; 100 1577 1.79 92 5C 165 A5
; 110 1260 1.60 82 52 174 AE
; 120 1028 1.45 74 4A 182 B6
; 130 814 1.29 66 42 190 BE
; 140 666 1.18 60 3C 199 C7
; 150 557 1.08 55 37 207 CF
; 160 445 0.98 50 32 215 D7
; 170 366 0.90 46 2E 223 DF
; 180 317 0.85 44 2C 228 E4
; 185 289 0.83 42 2A 232 E8
; 189 260 0.80 41 29 235 EB
; 193 248 0.78 40 28 237 ED
; 200 230 0.76 39 27 239 EF
; 203 206 0.74 38 26 242 F2
; 220 162 0.69 35 23 249 F9
; 248 106 0.63 32 20 255 FF
; 284 64 0.58 30 1E 255 FF
;
; All ADC values lower than $21 are $Ff (255)
; All ADC values higher than $DA are $00 (00)
;
; -----------------------------------------------------------------------------
; TH20 = (ECU_TH20 * 1.35) - 67.0
;
L0003 equ $0003 ; TH2O - Water Temperature (Not ADC reading)
;
; Temp Res Vadc ADC ADC L0003 Ajusted
; -40 93000 4.18 214 D6 21 15
; -20 45000 4.06 208 D0 38 26
; 0 24200 3.87 198 C6 50 32
; 20 12850 3.57 183 B7 66 42
; 40 7130 3.15 161 A1 82 52
; 50 5736 2.97 152 98 87 57
; 60 4182 2.69 138 8A 95 5F
; 70 3207 2.44 125 7D 102 66
; 80 2543 2.22 114 72 109 6D
; 90 1957 1.98 101 65 118 76
; 100 1577 1.79 92 5C 124 7C
; 110 1260 1.60 82 52 132 84
; 120 1028 1.45 74 4A 139 8B
; 130 814 1.29 66 42 147 93
; 140 666 1.18 60 3C 154 9A
; 150 557 1.08 55 37 162 A2
; 160 445 0.98 50 32 169 A9
; 170 366 0.90 46 2E 177 B1
; 180 317 0.85 44 2C 181 B5
; 185 289 0.83 42 2A 187 BB
; 189 260 0.80 41 29 190 BE
; 193 248 0.78 40 28 193 C1
; 200 230 0.76 39 27 197 C5
; 203 206 0.74 38 26 200 C8
; 220 162 0.69 35 23 214 D6
; 248 106 0.63 32 20 235 EB
; 284 64 0.58 30 1E 246 F6
;
; All ADC values lower than $20 are $F6 (246)
; All ADC values higher than $DA are $00 (00)
; --------------------------------------------------------
; Upper four bits of L0003 when used as index.
;
; Temp L0003
; < -40 00 0000 0000
; < -40 16 0001 0000
; -27 32 0010 0000
; - 3 48 0011 0000
; 18 64 0100 0000
; 38 80 0101 0000
; 61 96 0110 0000
; 83 112 0111 0000
; 105 128 1000 0000
; 126 144 1001 0000
; 148 160 1010 0000
; 169 176 1011 0000
; 192 192 1100 0000
; 212 208 1101 0000
; 233 224 1110 0000
; 264 240 1111 0000
;
; -----------------------------------------------------------------------------
L0004w equ $0004 ; Fuel requirement work stash and used by IAS
L0005w equ $0005 ; work stash
L0006w equ $0006 ; work stash
L0007w equ $0007 ; work stash
; -----------------------------------------------------------------------------
; This stash is a value that is added to the MAP ADC value. It is determined
; by the subroutine Ldc0e. It looks like a correction for a non-linearity
; in the MAP sensor itself. If you beleive the numbers I took on the MAP
; sensor I used for the vacuum booster control circuit the sensor is very
; linear.
;
; NOTE: Look at mis49: L0008 is always zero so no correction is ever applied !
;
; ADC Aprox L0008
; Entry MAP Return
;
; 000 - 173 29" - 8" 6
; 174 - 183 8" - 6.5" 5
; 184 - 193 6.5" - 5" 4
; 194 - 203 5" - 4" 3
; 204 - 213 4" - 3" 2
; 214 - 223 3" - 1.5" 1
; 224 - 255 1.5" - 0" 0
;
L0008 equ $0008 ; MAP offset value
; -----------------------------------------------------------------------------
; Battery correction value (Adjusted ADC reading)
;
L0009 equ $0009
; -----------------------------------------------------------------------------
; Battery = (ECU_Batt_ADC * .0625) = ADC / 16
; ADC = Battery * 16
;
L000a equ $000a ; BATT - Battery Voltage (in ADC counts)
;
; Battery ADC (ADC-95)*1.5
; 16.0 255 240
; 15.375 246 226
; 15.0 240 217
; 14.0 224 223
; 13.0 208 169
; 12.0 192 145
; 11.0 176 121
; 10.0 160 97
; 9.0 144 73
; 8.0 128 49
; 7.0 112 25
; 6.0 96 0
;
; -----------------------------------------------------------------------------
L000bw equ $000b ; general usage local work stash
L000cw equ $000c ; \
L000dw equ $000d ; \
L000ew equ $000e ; \
L000fw equ $000f ; \
L0011w equ $0011 ; \
L0012w equ $0012 ; \
L0013w equ $0013 ; \
; ----------------------------------------------------------------------------
L0014 equ $0014 ; This is the lowest MAP ADC reading (highest
; ; vacuum) ever detected this session. It is
; ; fed by the MAP average stash L002a.
; ; It only gets set under extreme conditions,
; ; like over 7324 rpm and extreme hi vacuum....
; ----------------------------------------------------------------------------
L0015 equ $0015 ; revolution counter for ?????
; Only get bumped in the Dist Trigger Handler
; Always counts down to zero. Once it hits zero
; it will not roll back to 255. Each count is
; one motor revolution (4 ignition events).
; It also looks like once the motor is running
; this counter is never re-seeded..
;
L0016 equ $0016 ; counter for ?????
; ; Will only count to zero and stop.
; ; Only bumped by Dist Trigger handler
;
L0017 equ $0017 ; RPM (timing_period/16) vs TH20 for dashpot
; ; threshold tests
L0018 equ $0018 ; RPM (timing_period/16) vs TH2O for potential
; ; fuel cutoff during deceleration that starts
; ; above this RPM.
L0019 equ $0019 ; TH2O adjusted Transient Fuel Modifier
L001a equ $001a ; TH2O adjusted Cold Start Fuel Modifier
L001bw equ $001b ; work stash
; -------------------------------
L001c equ $001c ; TPS closed threshold ADC value. This value
; ; is initially set to ADC 53 but is adjusted
; ; down to where the TPS actually is by L001d.
; -----------------------------------------------------------------------------
; This stash is a running value of the lowest TPS ADC reading ever read. It
; converges to the lowest value at a max rate of two ADC counts per itteration.
; Lf48c sets how fast it can increase and Lf48b sets how fast it can decrease.
; Its only purpose is to give us a real time throttle plates closed ADC value
; to keep L001c (the stash that gets compared) updated.
;
L001d equ $001d ; lowest TPS ADC reading (throttle closed)
; -----------------------------------------------------------------------------
L001e equ $001e ; Another last ADC TPS reading. This stash
; ; is another last TPS ADC reading.
; -------------------------------
mis39:
L001f equ $001f ; Some kind of counter that never gets used
; ; because it is seed with a zero and never can
; ; go below zero
;--------------------------------
mis38:
L0020 equ $0020 ; Whatever this is supposed to do it actually
; ; does nothing. Only zero ever gets loaded
; ; into it.
; -----------------------------------------------------------------------------
L0021 equ $0021 ; counter - .131ms tics
; ; Only increase the lowest TPS ADC stash (L001d)
; ; every 8 seconds and this is the counter.
; -----------------------------------------------------------------------------
; TPS(degrees) = (ECU_TPS * .4519) - 7.0
;
L0022 equ $0022 ; Current TPS ADC reading. This stash is always
; ; the last ADC reading taken.
; -----------------------------------------------------------------------------
L0023 equ $0023 ; MAT ADC reading
L0024 equ $0024 ; COOL ADC Reading
; ;
; ; Temp Res Vadc ADC
; ; -40 93000 4.18 214
; ; -20 45000 4.06 208
; ; 0 24200 3.87 198
; ; 20 12850 3.57 183
; ; 40 7130 3.15 161
; ; 50 5736 2.97 152
; ; 60 4182 2.69 138
; ; 70 3207 2.44 125
; ; 80 2543 2.22 114
; ; 90 1957 1.98 101
; ; 100 1577 1.79 92
; ; 110 1260 1.60 82
; ; 120 1028 1.45 74
; ; 130 814 1.29 66
; ; 140 666 1.18 60
; ; 150 557 1.08 55
; ; 160 445 0.98 50
; ; 170 366 0.90 46
; ; 180 317 0.85 44
; ; 185 289 0.83 42
; ; 189 260 0.80 41
; ; 193 248 0.78 40
; ; 200 230 0.76 39
; ; 203 206 0.74 38
; ; 220 162 0.69 35
; ; 248 106 0.63 32
; ; 284 64 0.58 30
;
; -----------------------------------------------------------------------------
; Fuel(ms) = (ECU_Fuel * .004)
;
L0025 equ $0025 ; Injector Pulse Width (4us / count) hi byte
L0026 equ $0026 ; ...... lo byte
; ----------------------------------------------------------------------------
;
; SPK(degrees) = (ECU_Spk * .25) + 10.0
;
L0027 equ $0027 ; Spark Angle (.25 degrees / count)
; ----------------------------------------------------------------------------
L0028 equ $0028 ; calculated optimum injector timing group
L0029 equ $0029 ; what injector phase group we are in
; 12 - 450 degrees BTDC
; 8 - 540 degrees BTDC
; 4 - 630 degrees BTDC
; 0 - 720 degrees BTDC
;
L002a equ $002a ; average of the last two MAP ADC readings
;
;
; The following four locations are used to store the averaged MAP ADC readings
; per cylinder pair. The Distributor Trigger handler stores and uses these
; for ???????
;
L002b equ $002b ; averaged MAP ADC for cylinders 1,8
L002c equ $002c ; 4,3
L002d equ $002d ; 6,5
L002e equ $002e ; 7,2
; ------------------------------------------------------------------------------
L002f equ $002f ; MAP ADC stash
; This one used in the Calibration routine and
; the Dist Trigger handler (#8 #3 #5 #2) event.
;
L0030 equ $0030 ; another MAP ADC reading stash
; This one is only used in the Dist Trigger
; handler on the #1 #4 #6 #7 firing event.
;
; This counter gets bumped each (most) time the main timer overflows. It is
; reset by the distributor trigger interrupt handler though...
;
L0031 equ $0031 ; Main timer overflow count (every 131ms)
;
L0032 equ $0032 ; Ign Trigger Timing Stash - timer count
; ; timer count when trigger got there
L0034 equ $0034 ; Ign Tigger - last tic-timer count
L0036 equ $0036 ; This is the period of time when the output
; ; from the distributor was high
L0038 equ $0038 ; Not Used ?????
L003a equ $003a ; accumulator used during shutter detect
; ----------------------------------------------------------------------------
; L003c and L003e and L0040 are timing periods in 8us units.
;
; L003e is the current timing period we just processed....
; L003c is the previous timing period processed...
; L0040 is the predicted next timing period...
;
;
; Timing_Period = ECU_x * 8us or ECU_x / 125000
;
; RPM = 1,875,000 / ECU_x
;
; 1,875,000 comes from.... 125,000 / events_per_rev (dist one-half engine)
; time 60 (Revs per minute)
; 1,875,000 = (125,000 / 4) * 60
;
L003c equ $003c ; Previous timing period (in 8us units). This
; ; one will not get reset to zero if a restart
; ; occurs
;
L003e equ $003e ; Current Timing period (in 8us units)
; ; (cleared at re-start)
; -------------------------------
; If we take the current timing pulse minus the period that occurred two
; pulses back plus the last one we can predict what the next one may be.
;
; L0040 = (t) - (t-2) + (t-1)
;
; If the motor was decelerating and the last three pulses were: .018 .019 .020
; then (.020) - (.018) + (.019) = .021 - predicted next timing pulse width
;
L0040 equ $0040 ; Predicted next timing period
; ; (cleared at re-start)
; -------------------------------
;
; RPM = (1/Pulse_Width) * 15
; Pulse_Width = 1 / (RPM/15)
; Timing_period = Pulse_Width / .000008
; L0042 = Timing_period / 16 = Pulse_Width / .000128
; RPM = ( 1/(L0042 * .000128) ) * 15
;
; What the controller has to do to display RPM......
;
; RPM = (187500 / ECU_RPM) * 10
; From ECU Displayed RPM
; 493E (18750) 100
; 0EA6 (3750) 500
; 0753 (1875) 1000
; 0271 (625) 3000
; 0138 (312) 6009
; 010C (268) 6996
; 00EA (234) 8010
;
; It looks like the ECU is transmitting the timing period times 125,000.
; At 1000 rpm, 16.666 revs / sec, 4 firings per rev so firing at 66.666 hertz,
; which has a period of .015 sec, so .015 * 125,000 = 1,875
; -----------------------------------------------------------------------------
; This value is the timing period divided by 16. It has the same scale as
; the target idle stash at L0061. The 11,718.75 at L0061 is 187,500 / 16
;
L0042 equ $0042 ; this is the ignition timing period * 16 / 256
; -----------------------------------------------------------------------------
; This value is either the high byte of the current timing period if bit
; xxx1xxxx of L0059 is set or a value that slowly approaches it if the
; bit is cleared. If the bit is set we are at or above 610 RPM.
;
L0043 equ $0043
;
; 2100 00100001 222 rpm
; 2000 00100000 229 rpm
; 1F00 00011111 236 rpm
; 1E00 00011110 244
; 1D00 00011101 253
; 1C00 00011100 262
; 1B00 00011011 271
; 1A00 00011010 282
; 1900 00011001 293
; 1800 00011000 305
; 1700 00010111 318
; 1600 00010110 333
; 1500 00010101 349
; 1400 00010100 366
; 1300 00010011 385
; 1200 00010010 407
; 1100 00010001 431 rpm
; 1000 00010000 458 rpm
; 0F00 00001111 488 rpm
;
; 1E00 244 rpm 0D00 563 rpm
; 1D00 253 rpm 0C00 610 rpm
; 1C00 262 rpm 0B00 666 rpm
; -----------------------------------------------------------------------------
L0044 equ $0044 ; This stash indicates which cylinder is firing.
; If bit 0 clear do Not fire injector this timing event.
; The #1 shutter detector will set this value after
; it is sure that it got #1 shutter followed
; immediately by a normal duty-cycle (#8) it will
; then set this sequencer to 2. This means that
; when L0044=2 we just hit TDC #8.
;
; 0000 #2
; 0001 #1
; 0010 #8
; 0011 #4
; 0100 #3
; 0101 #6
; 0110 #5
; 0111 #7
; ----------------------------------------------------------------------------
L0045 equ $0045 ; looks to be the pointer to fire an injector pair
; ; 0 - 1,8
; ; 2 - 4,3
; ; 4 - 6,5
; ; 6 - 7,2
; ;
; ------------------------
; When changing the injector timing we will actually fire two sets (four
; injectors) of injectors during one ignition trigger event. This is done
; to ease the transition period while changing timing. If we just changed
; the timing a couple of cylinder would get no fuel when they needed it.
; The pulse widht needed during this transition is put into the the below
; 16 bit stash...
;
L0046 equ $0046 ; extra pulse width needed when changing injector
;
L0048 equ $0048 ; new injector pulse width
L004aw equ $004a ; works stash in Dist Trigger and IGN Amp handlers
L004bw equ $004b ; work stash
;
L004c equ $004c ; This fuel is used during the transition period when
; ; the injector timing need to change. It is derived
; ; from the regular pulse width but the MAP ADC is
; ; factored into it. If the MAP ADC was 128 it would
; ; be the same value as what is in L0048, but as vacuum
; ; goes up (>>>29") and the ADC goes down this value
; ; increases.....
; ; Centered arround 13" then ??????
;
;------------------------------------------------------------------------------
; The two stashs below and the two counters below them, look to be used by the
; Dist Trigger handler in calculating magnitude of change (MAP ADC changes)
; and decay rates for transient fuel responses. Both L004e and L004f are
; initially seeded with a percentage of delta MAP (56% of ADC change), then
; when the L0050 counter hits zero (12 trigger events) start reducing it
; at a TH2O determined rate. When the L0051 counts down (6 ignition events)
; start reducing L004f at a constant rate (19% of its current value). These
; two stashs are then summed together and used to determine along with
; the user deterimined transient fuel modifier how much extra fuel is needed.
; L0052 and L0054 are later used in these calculations.
;
L004e equ $004e
L004f equ $004f
;
L0050 equ $0050 ; L004e decay rate counter
L0051 equ $0051 ; L004f decay rate counter
;
L0052 equ $0052 ; how much and what direction we changed Pulse Width
L0054w equ $0054 ; just a work stash for transient fuel calculations
; -----------------------------------------------------------------------------
L0056 equ $0056 ; flags
; xxxx1xxx - Turning Slower than Idle Target RPM
; xxxx0xxx - Turning Faster than Idle Target RPM
; xxxxx1xx - Turning Faster than 5,500 RPM
; xxxxx0xx - Turning Slower than 5,500 RPM
; xxxxxx1x - Last Pulse Width was made longer or No
; change last ignition event.
; xxxxxxx1 - Throttle closed and MAP ADC is decreasing
; Vacuum is increasing.
; -----------------------------------------------------------------------------
L0057 equ $0057 ; Last TPS ADC reading. This stash is the last ADC
; reading taken. It its loaded from L0022 before
; L0022 is updated with the new ADC reading.
; -----------------------------------------------------------------------------
L0058 equ $0058 ; flags
; 1xxxxxxx - Hard to tell what this was supposed to do
; because of mistakes. TPS set/clr'd.
; mis38: mis47:
; x1xxxxxx - This be gets set the first time we make it
; all the way thru the calibration routine.
; It is cleared when then initialization
; code is run.
; xx1xxxxx - To set this bit we need to be:
; RPM above fuel cutoff, throttle plates
; closed and counter(L0016) = zero.
; - or -
; Faster than 7,324 and under No Load
; condition and counter(L0016) = zero.
; - or -
; In a high speed high vacuum condition.
;
; xxx1xxxx - To set this bit we need to be:
; Not in high speed high vacuum situation
; - and -
; RPM above fuel cutoff threshold and
; throttle closed
; - or -
; Faster than 7,324 rpm and under no load
;
; When this bit gets set the counter at
; L0016 is seeded (6)
;
; xxxx1xxx - To set this bit we need to be:
; Slower than dashpot rpm or partial/WOT
; condition
; - and -
; slower than 3,662 rpm or under some Load.
;
; xxxxx1xx - This bit gets toggled every time we run
; thru the Calibration loop.
; Useless because it is never tested. mis55:
; xxxxxx1x - Water is hot or over 3 min running.
; xxxxxxx1 - We have a current MAP ADC reading.
; This bit only gets set every other Dist
; trigger event. The Calibration loop will
; wait till it gets a new MAP ADC reading.
; This bit holds the Calibration loop.
; -----------------------------------------------------------------------------
L0059 equ $0059 ;
; xxxxxxx1 - Engine operating parms requested
; xxxxxx1x - Used during IAC motor activity computaions.
; Can't tell exactly what it does because
; it always gets set. Looks to be sign flag
; xxxxx1xx - Signal 8x8 cell lookup table matrix
; xxxxx0xx - Signal 8x16 cell matrix
; xxxx1xxx - Signal Load (MAP) out of bounds
; xxx1xxxx - When set timing period accumulator (L0043)
; is updated directly by the hi-byte of the
; current timing period. When set we are
; at or above 610 RPM.
; xx1xxxxx - RPM is past Rev Limit set +500 rpm.
; Motor is being shut down NOW !
; x1xxxxxx - During the Fuel requirement calculations
; we got an overflow.
; -----------------------------------------------------------------------------
L005a equ $005a ; this byte is used to determine when an injector pair
; is to be fired. It is used for injector timing.
;------------------------------------------------------------------------------
L005b equ $005b ; flags
; 1xxxxxxx - Gets set when we have a completed Dist
; Trigger period - Not used ???
; x1xxxxxx - A Dist Trigger interrupt has occurred after
; after intialiaztion. Got the TCNT count
; when this happened into L0032.
; xx1xxxxx - Signals we drove the SA output line low
; firing the Coil.
; xxx1xxxx - The first time we get the #2-#1-#8 sequence
; immediately sync the injector timing. We
; the set this bit. From that point on it
; will take another confirmed sequence to
; bring us into sync again.
; xxxx1xxx - Signals firing order sequencer is in sync.
; If not wait for next #2-#1-#8 sequence
; to come along before bringing sequencer
; into sync again.
; xxxxx1xx - Above 4,500 RPM
; xxxxxx1x - Signals that we have confirmed the #1
; shutter.
; xxxxxxx1 - Signals that we have confirmed a non #1
; shutter.
; -----------------------------------------------------------------------------
L005c equ $005c ; flags
; 1xxxxxxx - Signals dashpot is zero. NEVER gets
; cleared anywhere. mis41:
; x1xxxxxx - Set by timer overflow when dashpot
; counter has changed But NEVER cleared
; anywhere. mis40:
; xx1xxxxx - Dashpot modification of idle rpm is in
; operation.
; xxx1xxxx - Throttle closed and RPM is below dashpot
; trip point. Signal to continue dashpot
; till countdown or throttle opened.
; xxxx1xxx - Set if IAS saw that motor was slowing
; down. Will only get reset when throttle
; is opened again..
; xxxxx1xx - IAS acknowledged motor slowing down. Will
; only get reset when throttle plates are
; opened again.
; xxxxxx1x - Allow min IAS counter to tic
; xxxxxxx1 - Idle activity counter in L0072 has rolled
; thru zero.
; -----------------------------------------------------------------------------
L005d equ $005d ; flag byte
; xxxxxxx0 - Pulse Width < $8000 (65ms)
; xxxxxxx1 - Pulse Width > $8000
; xxxxxx1x - Only could have been set or cleared in a
; section of code that never gets executed.
; See below....
; xxxxx1xx - This bit gets set when the first valid
; Dist Trigger came in. The only place it
; can get cleared is in a section of code
; that never gets executed (mis21). It looked
; like it could have been part of the
; revolution counter stuff.
; xxxx1xxx - Timer has Overflowed - NEVER USED
; xxx1xxxx - EEPROM progaming in effect now
; xx1xxxxx - EEPROM erase/prgm operation active
; x1xxxxxx - EEPROM erase/prgm timer active
; -----------------------------------------------------------------------------
L005e equ $005e ; Mixture flag (LED control)
; 0xxxxxxx - Open Loop conditions
; 1xxxxxxx - Closed Loop operations
; x1xxxxxx - Only One LED is on
; x0xxxxxx - Both LED's are On or Off
; xx1xxxxx - Water Temp under 120 degrees
; xx0xxxxx - Water Temp over 120/140 degrees
; dumped.......... ; xxx1xxxx - Air Temp Above 248 degrees
; dumped........... ; xxx0xxxx - Air Temp below 248 degrees
; xxxx0xxx - Red LED On (lean)
; xxxx1xxx - Green LED On (rich)
;
; xxxxx1xx - Dist Trigger handler knows mixture is Rich.
; xxxxx0xx - Dist Trigger handler knows mixture is Lean.
; Used to detect change of state (rich/lean)
;
; xxxxxxx1 - Outside RPM range for closed loop operation
; xxxxxxx0 - Inside closed loop RPM range
; -----------------------------------------------------------------------------
L005f equ $005f ; flags - All of these bits (except bit 7) gets cleared
; every (most?) the Calibration routine runs
; thru. They also get set there.
; 1xxxxxxx - To get this set the motor had to be turning
; faster than 7,324 rpm and with highest
; vacuum (>>>29") we have ever seen before.
; Like we were really screaming and let off
; the gas !
; This is the only bit that gets set by
; another routine (Dist Trig) than the
; Calibration loop.
; x1xxxxxx - RPM above TH2O set trip RPM. If
; deceleration starts above this RPM the
; fuel is shut off.
; xx1xxxxx - Slower than TH2O set dashpot RPM
; xxx1xxxx - Motor turning faster than 7,324 rpm
; xxxx1xxx - Slower than 3,662 rpm
; xxxxx1xx - We are under some Load
; xxxxxx1x - We are under no/light Load
; xxxxxxx1 - In high speed high vacuum condition.
; This bit gets set by the Calibration loop
; when the 1xxxxxxx bit is set.
; -----------------------------------------------------------------------------
idle_fm_timer_60 equ $60 ; Idle fuel modifier timer
;
; L0060 equ $60 ; Fuel pump and PAL-44 (and what else) control
; ; x1xxxxxx - turn on PAL-44
; ; xx1xxxxx - turn on Fuel Pump PAL-43
;
; 01/04/99 - not used any more for this purpose - just hardcoded Fuel pump
;
; -----------------------------------------------------------------------------
; Target Idle RPM = (11,718.75 / ECU_Target) * 10.0
; Note: Look at L0042 for scaling information...
; Remember, Bigger number lower rpm
;
L0061 equ $0061 ; Target Idle RPM
;
; 0 52 2254 104 1127 156 751 208 563
; 1 117188 53 2211 105 1116 157 746 209 561
; 2 58594 54 2170 106 1106 158 742 210 558
; 3 39063 55 2131 107 1095 159 737 211 555
; 4 29297 56 2093 108 1085 160 732 212 553
; 5 23438 57 2056 109 1075 161 728 213 550
; 6 19531 58 2020 110 1065 162 723 214 548
; 7 16741 59 1986 111 1056 163 719 215 545
; 8 14648 60 1953 112 1046 164 715 216 543
; 9 13021 61 1921 113 1037 165 710 217 540
; 10 11719 62 1890 114 1028 166 706 218 538
; 11 10653 63 1860 115 1019 167 702 219 535
; 12 9766 64 1831 116 1010 168 698 220 533
; 13 9014 65 1803 117 1002 169 693 221 530
; 14 8371 66 1776 118 993 170 689 222 528
; 15 7813 67 1749 119 985 171 685 223 526
; 16 7324 68 1723 120 977 172 681 224 523
; 17 6893 69 1698 121 968 173 677 225 521
; 18 6510 70 1674 122 961 174 673 226 519
; 19 6168 71 1651 123 953 175 670 227 516
; 20 5859 72 1628 124 945 176 666 228 514
; 21 5580 73 1605 125 938 177 662 229 512
; 22 5327 74 1584 126 930 178 658 230 510
; 23 5095 75 1563 127 923 179 655 231 507
; 24 4883 76 1542 128 916 180 651 232 505
; 25 4688 77 1522 129 908 181 647 233 503
; 26 4507 78 1502 130 901 182 644 234 501
; 27 4340 79 1483 131 895 183 640 235 499
; 28 4185 80 1465 132 888 184 637 236 497
; 29 4041 81 1447 133 881 185 633 237 494
; 30 3906 82 1429 134 875 186 630 238 492
; 31 3780 83 1412 135 868 187 627 239 490
; 32 3662 84 1395 136 862 188 623 240 488
; 33 3551 85 1379 137 855 189 620 241 486
; 34 3447 86 1363 138 849 190 617 242 484
; 35 3348 87 1347 139 843 191 614 243 482
; 36 3255 88 1332 140 837 192 610 244 480
; 37 3167 89 1317 141 831 193 607 245 478
; 38 3084 90 1302 142 825 194 604 246 476
; 39 3005 91 1288 143 819 195 601 247 474
; 40 2930 92 1274 144 814 196 598 248 473
; 41 2858 93 1260 145 808 197 595 249 471
; 42 2790 94 1247 146 803 198 592 250 469
; 43 2725 95 1234 147 797 199 589 251 467
; 44 2663 96 1221 148 792 200 586 252 465
; 45 2604 97 1208 149 786 201 583 253 463
; 46 2548 98 1196 150 781 202 580 254 461
; 47 2493 99 1184 151 776 203 577 255 460
; 48 2441 100 1172 152 771 204 574
; 49 2392 101 1160 153 766 205 572
; 50 2344 102 1149 154 761 206 569
; 51 2298 103 1138 155 756 207 566
;
; -----------------------------------------------------------------------------
L0062 equ $0062 ; an accumulator used in IAS calculations
L0064 equ $0064 ; always zero because of mis14a:
; -----------------------------------------------------------------------------
; All of these values are in 1Mhz (1us) units. They are divided by 2 in the
; IAC motor interrupt handler before being added to the timer's counter
; register which is being updated at the tic-count rate of 500 KHz (2us).
; A number like 6666 is .006666 seconds, 6.666ms
;
L0066 equ $0066 ; New IAC motor On time
L0068 equ $0068 ; New IAC total period
L006a equ $006a ; last IAC motor On time.
L006c equ $006c ; last IAC total period stash
; -----------------------------------------------------------------------------
L006e equ $006e ; This is the electronic dashpot counter
; ; Other than seeding and clearing, the only
; ; place it is bumped is by the timer overflow
; ; handler (at a max 131ms rate).
L0070 equ $0070 ; last min IAS% requirement
L0071 equ $0071 ; min IAS% required for a particular rpm
L0072 equ $0072 ; up counter used in idle activity. Max rate
; ; of change is 131ms from timer overflow.
L0073 equ $0073 ; counter that never gets used !!!!! mis44:
; -----------------------------------------------------------------------------
L0074 equ $0074 ; O2 Sensor ADC reading
;
; Volt(mv) ADC AFR (best guess here)
; 0 2 >16.9:1
;
; 317 15.4:1
; 447 70 14.7:1
; 600 14.0:1
;
;
;------------------------------------------------------------------------------
L0075 equ $0075 ; How much to change the injectors pulse width
; accumulator (L0079) during closed loop
; operation.
; -----------------------------------------------------------------------------
; this timer is usless because when true the number that gets multiplied by 16
; is then it is divided by 16 ???? mis26:
L0076 equ $0076 ; when counts down zero would have allowed
; ; the closed loop rate of change value to be
; ; further adjusted. (X*16)/16
; -----------------------------------------------------------------------------
; This counter is used to determine if we have an O2 sensor error. If both
; LED are on for more than 255 iterations and we have been running more than
; one minute and closed loop fuel is on then signal an error...
;
; 01/13/99 - Changed this so it get reset every time we cross the 447mv
; threshold. Also it gets bumped in the timer overflow handler.
;
L0077 equ $0077 ; O2 sensor error counter
; -----------------------------------------------------------------------------
L0078 equ $0078 ; delay counter before Closed Loop is activate
;
L0079 equ $0079 ; This value is a scaled accumulated amount that is
; added/subtracted from the injectors PW. It accumulates
; how much the mixture needs to change. This value is
; limited to +-16,000. A negative value will increase
; the Fuel PW.
; This accumulator gets bumped and range checked every
; ignition event by the dist trigger handler. It is
; adjusted by the value in L0075
;
L007b equ $007b ; As long as this counter is Not zero a new rate of
; change value is calculated. Every time we get a
; rich/lean state change it goes to zero.
;
L007c equ $007c ; Warmup timer. If the water is below 120 deg
; ; at startup this timer starts counting.
; ; It is used in determining when we can go
; ; closed loop and believe the O2 sensor.
; ; When the water then gets over 140 degrees
; ; it is pushed to the max count ($ffff).
; ; Set only in the timer overflow handler.
; ; Note: Once this counter hits $ffff it will
; ; stay there forever.
; ;
L007e equ $007e ; How much time to add or subtract from the injector
; pulse width to lean/richen the mixture. It is
; returned from the Calibration routine and is added/
; subtracted from the PW during each ignition event.
; This value is very small and does almost nothing.
; The max amount it could modify is .5ms....
;
; -----------------------------------------------------------------------------
L007f equ $007f ; Commands to Save and Restore Datasets here
;
; If Second Byte = 06 then
; 10010001 91 - Save dataset 'A'
; 10010010 92 - Save dataset 'B'
; 10010011 93 - Save dataset 'C'
; 10100000 A0 - Restore Base dataset
; 10100001 A1 - Restore 'A' dataset
; 10100010 A2 - Restore 'B' dataset
; 10100011 A3 - Restore 'C' dataset
;
; If Second byte = 05 then ; return success(zr) or fail code(nz)
; 10010001 91 - Saving dataset 'A' ?
; 10010010 92 - Saving dataset 'B' ?
; 10010011 93 - Saving dataset 'C' ?
; 10100000 A0 - Restoring Base dataset ?
; 10100001 A1 - Restoring 'A' dataset ?
; 10100010 A2 - Restoring 'B' dataset ?
; 10100011 A3 - Restoring 'C' dataset ?
;
; If an error occurred this location gets set to the following. This is what
; goes back to the controller signaling success or failure.....
;
; 01000000 40 - Checksum or command structure error occurred
; Operation not completed.
; 00000000 00 - Save / Restore operation completed to Success
;
; ----------------------------------------------------------------------------
; The current modifier table is stored here. Normally the Dataset 'A' at
; EEPROM $b600 is loaded. If it is bad then load from ROM at $f740 into
; this location. Dataset 'B' and 'C' can also be loaded into this list.
;
; All the values between $0080 thru $0097 are the Fuel Modifiers. Each is
; adjustable between +50% and -30% That means their range is from 90 to
; 192. The scaling factor of .78125 comes from (Max_Percentage / 64).
;
; NOTE: This address must stay the same (or atleast be on a boundry) to
; allow the EEPROM programing to work correctly....
;
L0080 equ $0080 ; - Fuel @ WOT @ 1000 RPM
L0081 equ $0081 ; - Fuel @ WOT @ 2000 RPM
L0082 equ $0082 ; - Fuel @ WOT @ 3000 RPM
L0083 equ $0083 ; - Fuel @ WOT @ 4000 RPM
L0084 equ $0084 ; - Fuel @ WOT @ 5000 RPM
L0085 equ $0085 ; - Fuel @ WOT @ 7000 RPM
; ;
L0086 equ $0086 ; - Fuel @ 06" @ 1000 RPM
L0087 equ $0087 ; - Fuel @ 06" @ 2000 RPM
L0088 equ $0088 ; - Fuel @ 06" @ 3000 RPM
L0089 equ $0089 ; - Fuel @ 06" @ 4000 RPM
L008a equ $008A ; - Fuel @ 06" @ 5000 RPM
L008b equ $008B ; - Fuel @ 06" @ 7000 RPM
; ;
L008c equ $008C ; - Fuel @ 12" @ 1000 RPM
L008d equ $008D ; - Fuel @ 12" @ 2000 RPM
L008e equ $008E ; - Fuel @ 12" @ 3000 RPM
L008f equ $008F ; - Fuel @ 12" @ 4000 RPM
L0090 equ $0090 ; - Fuel @ 12" @ 5000 RPM
L0091 equ $0091 ; - Fuel @ 12" @ 7000 RPM
; ;
L0092 equ $0092 ; - Fuel @ 18" @ 1000 RPM
L0093 equ $0093 ; - Fuel @ 18" @ 2000 RPM
L0094 equ $0094 ; - Fuel @ 18" @ 3000 RPM
L0095 equ $0095 ; - Fuel @ 18" @ 4000 RPM
L0096 equ $0096 ; - Fuel @ 18" @ 5000 RPM
L0097 equ $0097 ; - Fuel @ 18" @ 7000 RPM
;
; The following are the Spark Modifiers. They occupy the ram space between
; $0098 and $00AE. All Spark modifiers are +8 degrees / -16 degrees.
; Each value is weighted by .25 degrees. The controller changes them with
; a stepsize of 4 counts which represents 1 degree change. A count of 128
; equals a zero degree modifier. 160 = +8 degrees 64 = -16 degrees
;
L0098 equ $0098 ; - Sprk @ WOT @ 1000 RPM
L0099 equ $0099 ; - Sprk @ WOT @ 1750 RPM
L009A equ $009A ; - Sprk @ WOT @ 2500 RPM
L009B equ $009B ; - Sprk @ WOT @ 3500 RPM
L009C equ $009C ; - Sprk @ WOT @ 4500 RPM
L009D equ $009D ; - Sprk @ WOT @ 6000 RPM
L009E equ $009E ; - Sprk @ 09" @ 1000 RPM
L009F equ $009F ; - Sprk @ 09" @ 1750 RPM
L00A0 equ $00A0 ; - Sprk @ 09" @ 2500 RPM
L00A1 equ $00A1 ; - Sprk @ 09" @ 3500 RPM
L00A2 equ $00A2 ; - Sprk @ 09" @ 4500 RPM
L00A3 equ $00A3 ; - Sprk @ 09" @ 6000 RPM
L00A4 equ $00A4 ; - Sprk @ 18" @ 1000 RPM
L00A5 equ $00A5 ; - Sprk @ 18" @ 1750 RPM
L00A6 equ $00A6 ; - Sprk @ 18" @ 2500 RPM
L00A7 equ $00A7 ; - Sprk @ 18" @ 3500 RPM
L00A8 equ $00A8 ; - Sprk @ 18" @ 4500 RPM
L00A9 equ $00A9 ; - Sprk @ 18" @ 6000 RPM
; ;
L00aa equ $00aa ; Global Fuel Modifier (xx-128)*.78125
; ; This value can range from 90 to 192 which
; ; represents -30% to +50% The scaling factor
; ; comes from 50/64 = .78125
; ;
L00ab equ $00ab ; Idle Fuel Modifier (xx-128)*.78125 +-50%
; ; This value can range from 64 to 192 which
; ; represents +-50% The scaling factor
; ; comes from 50/64=.78125
; ;
L00ac equ $00ac ; Cold Start Fuel (xx-128)*.78125
; ; This value can range from 90 to 192 which
; ; represents -30% to +50% The scaling factor
; ; comes from 50/64 = .78125
; ;
L00ad equ $00ad ; Transient Fuel (xx-128)*.78125
; ; This value can range from 90 to 192 which
; ; represents -30% to +50% The scaling factor
; ; comes from 50/64 = .78125
; ;
L00ae equ $00ae ; Global Spark Modifier +8 / -16 degrees
; ; Each count is .25 degrees. 160 = +8 degrees
; ; 64 = -16 degrees
; ;
L00af equ $00af ; Idle Sprk modifier (xx-128)*.25=percentage
; ; Each percenatge of change is 4 counts
; ; centered arround 128. So the max 16% = 192
; ; The min (-16%) equals 64...
; ;
L00b0 equ $00b0 ; Target Idle RPM modifier - stepsize = 25 rpm
; ; Each value weight is 25 rpm. The ROM default
; ; is 134. This value is 128 biased. Each
; ; count is a +-25 rpm modification of the
; ; current idle rpm in L0061.
; ;
L00b1 equ $00b1 ; Idle Speed Activity (xx-128) * .78125
; ; This value can range from 64 to 192 which
; ; represents +-50%. The scaling factor
; ; comes from 50/64=.78125
; ;
L00b2 equ $00b2 ; Rev Limiter RPM - stepsize = 250 rpm
; ; This value times 250 equals the Rev Limit.
; ; Min=20 (5000rpm) max=38 (9500rpm)
; ;
L00b3 equ $00b3 ; control flags
; ; 1xxxxxxx - Base Timing Set: On
; ; 0xxxxxxx - Base Timing Set: Off
; ; x1xxxxxx - Closed Loop Fuel: Off
; ; x0xxxxxx - Closed Loop Fuel: On
; ; xx1xxxxx - Idle Control: Off
; ; xx0xxxxx - Idle Control: On
L00b4 equ $00b4 ; ???? - not modifed by controller - Spare ?
L00b5 equ $00b5 ; ...... always seens to be zero - Spares ??
; -----------------------------------------------------------------------------
L00b6 equ $00b6 ; This byte is used to point to the start of
; ; the correct EEPROM row/byte that is being
; ; erased or written to.
; -----------------------------------------------------------------------------
L00b7 equ $00b7 ; This value is the current timing period
; ; converted into RPM/25
;------------------------------------------------------------------------------
L00b8 equ $00b8 ; current MAP ADC reading
; -----------------------------------------------------------------------------
L00b9 equ $00b9 ; Warning message flags
; ; 1xxxxxxx - MAP Sensor Error
; ; x1xxxxxx - H20 Temperature Error
; ; xx1xxxxx - Voltage Hi/Low
; ; xxx1xxxx - Throttle Input Error
; ; xxxx1xxx - AIR Temp. error
; ; xxxxx1xx - O2 Sensor error
; -----------------------------------------------------------------------------
L00ba equ $00ba ; flags - Most never tested !!!!!!!!
; cleared 01/02/99 ; 1xxxxxxx - never set here ! one test
; ; x1xxxxxx - H20 Temperature Error
;
; cleared 01/01/99 ; xxx1xxxx - MAP above 21" - never tested
; cleared 01/01/99 ; xxxx1xxx - TPS - - never tested
; cleared 01/01/99 ; xxxxx1xx - - never tested
; cleared 01/01/99 ; xxxxxx1x - - never tested
; -----------------------------------------------------------------------------
L00bb equ $00bb ; flags - NEVER USED ANYWHERE !!!!!!!!!
; ; xxxxxx1x - MAT out of range too Hot
; ; xxxxxx0x - MAT out of range too Cold
; ; xxxxx1xx - H20 out of range too Hot
; ; xxxxx0xx - H20 out of range too Cold
; ; xxxx1xxx - TPS out of range too low
; ; xxxx0xxx - TPS out of range too high
; ; 1xxxxxxx - MAP voltage too Low
; ; 0xxxxxxx - MAP voltage too High
;
; -----------------------------------------------------------------------------
; These locations are used by the Serial handler routines and communication
; with the remote controller...
;
L00bc equ $00bc ; Serial flags
; 1xxxxxxx - If this bit stays high more than
; 131ms (one timer overflow period)
; the overflow routine will clr L00bc
; x1xxxxxx - first byte (7B) received
; xx1xxxxx - data set/requested (2nd=06/05)
; xxx1xxxx - have a completed request
; xxxx1xxx - need to transmitt data to controler
; xxxxx00x - can't find where set but are tested
; xxxxx001 - allow engine status data to be
; sent to the controller.
; ; ---------------------------------------------
L00bd equ $00bd ; number of bytes sent/received
L00be equ $00be ; index into the Serial Buffer
L00c0 equ $00c0 ; start of Serial work buffer
L00c1 equ $00c1 ; number of characters sent/received location
L00c2 equ $00c2 ; either adddress or data start
; -----------------------------------------------------------------------------
L00fb equ $00fb ; This location has some testmode only meaning
; =============================================================================
;
timer_tcnt_reg equ $100e ; TCNT - Timer Count
toc1_data_reg equ $1016 ; OC1 data register IAC
toc2_data_reg equ $1018 ; TOC2 - Timer Output Compare 2 data register
toc4_data_reg equ $101c ; TOC4 - IGN Amp data register OC4
L1020 equ $1020 ; Timer Control register 1
baud_register equ $102b ; BAUD - Baud Rate prescaler register
sccr1_register equ $102c ; SCI Control register
scsr_register equ $102e ; Serial SCI Status Register
scdr_register equ $102f ; Serial SCI Data Register
adc_control_reg equ $1030 ; ADC Control/Status Register
adc_result_adr1 equ $1031 ; ADR1 ADC result register
adc_result_adr3 equ $1033 ; ADR3 ADC result register
adc_result_adr4 equ $1034 ; ADR4 ADC result register
;
; The whole COP thing is usless because of mis69: !!!!!!!!!!!!!!!!!!!!!!!!!!
;
coprst_register equ $103a ; COPRST - COP arm/reset register
; ; Write $55 to this register to arm the COP
; ; timer, then immediately write $AA to it
; ; to clear the timer. If this sequnce isn't
; ; performed within the specified timer rate
; ; period a system reset will occur.
;
cop_arm equ $55 ; to arm COP
cop_reset equ $AA ; to reset the COP
;
; -----------------------------------------------------------------------------
; This seven section inverter (L9112D) is a strange part. All of its inputs
; seem to have a 4.7k resistor to ground, so with nothing pulling it up
; that sections output will be high. One section (pins 3,4) is used to drive
; INJ-D from the 68HC11's internall timer, and another section is the serial
; interface reciever. All the others, with the exception of the one that seems
; to be monitoring the IAC motor driver transistor collector (pins 1,2), have
; some connection to the outside world thru J1. Some are pulled up and some
; pulled down either internally and/or externally. The below displayed bits
; are the defualt conditions observed.
;
; The only bit that is tested in this code is 00000100. It is tested several
; places. Noting is connected to J1-21 so it is always high.
;
L6000 equ $6000 ; The PAL loacation reads information from
; the L9112D inverter
; xxxxxxx1 - PAL-1 L9912-15 - J1-14
; xxxxxx0x - PAL-2 L9112-7 - J1-13
; xxxxx1xx - PAL-3 L9112-12 - J1-21
; xxxx1xxx - PAL-4 L9112-2 - IAC motor
; xxx1xxxx - PAL-5 L9112-6 - J1-16
;
; ;
; =============================================================================