Code:
ROM:622D ldd word_185 ; MAF frequency in Hz ROM:6230 subd #$5D0 ; make lowest limit of MAF 1 table(1488Hz) ROM:6233 bcc loc_6238 ; 11,216Hz ROM:6235 ldd #0 ROM:6238 cpd #$25FF ; 11,216Hz ROM:623C bls loc_6241 ; mult LSB by 2 ROM:623E ldd #$25FF ; cap to 11,216Hz if necessary ROM:6241 lsld ; mult LSB by 2 ROM:6242 stab byte_187 ; LSB of MAF Hz stored here after a doubling ROM:6245 tab ; move MSB to LSB ROM:6246 clra ; ignore MSB for now ROM:6247 lsld ; double LSB again ROM:6248 addd #$241A ; location of MAF table ROM:624B xgdx ; move current location to X ROM:624C pshx ; save current location ROM:624D ldd 2,x ; load value 1 entry rounded up from frequency to D ROM:624F subd 0,x ; subtract entry from 1 entry rounded down cell ROM:6251 pshb ; save D ROM:6252 psha ROM:6253 tsx ; point X to stack ROM:6254 ldaa byte_187 ; LSB of MAF Hz stored here after a doubling ROM:6257 ldab 1,x ; LSB of lookup ROM:6259 mul ; multiply ROM:625A adca #0 ; add a count to MSB of result if necessary ROM:625C ldab byte_187 ; LSB of MAF Hz stored here after a doubling ROM:625F psha ; save LSB ROM:6260 ldaa 0,x ; MSB of lookup ROM:6262 mul ; multipy ROM:6263 tsx ; point X to stack ROM:6264 addb 0,x ; add LSB to D ROM:6266 adca #0 ; round MSB up if necessary ROM:6268 ins ; restore stack ROM:6269 pulx ; ... ROM:626A pulx ; first PSHX (241A + offset) ROM:626B addd 0,x ; add 241A + offset to value to make final G/S ROM:626D std word_18B ; MAF Grams/Sec value

Leave a comment: