Apple ii Battery Charger User Manual


 
335 1F41 45 09 EOR M1
336 1F43 30 04 BMI RTS1 YES,RETURN WITH MANT1 NORMALIZED
337 1F45 A5 08 LDA X1 EXP1 ZERO?
338 1F47 D0 ED BNE NORM1 NO, CONTINUE NORMALIZING
339 1F49 60 RTS1 RTS RETURN
340 *
341 *
342 * EXP/MANT2-EXP/MANT1 RESULT IN EXP/MANT1
343 *
344 1F4A 20 8F 1F FSUB JSR FCOMPL CMPL MANT1 CLEARS CARRY UNLESS ZERO
345 1F4D 20 5D 1F SWPALG JSR ALGNSW RIGHT SHIFT MANT1 OR SWAP WITH MANT2 ON CARRY
346 *
347 * ADD EXP/MANT1 AND EXP/MANT2 RESULT IN EXP/MANT1
348 *
349 1F50 A5 04 FADD LDA X2
350 1F52 C5 08 CMP X1 COMPARE EXP1 WITH EXP2
351 1F54 D0 F7 BNE SWPALG IF UNEQUAL, SWAP ADDENDS OR ALIGN MANTISSAS
352 1F56 20 00 1F JSR ADD ADD ALIGNED MANTISSAS
353 1F59 50 E3 ADDEND BVC NORM NO OVERFLOW, NORMALIZE RESULTS
354 1F5B 70 05 BVS RTLOG OV: SHIFT MANT1 RIGHT. NOTE CARRY IS CORRECT
SIGN
355 1F5D 90 BD ALGNSW BCC SWAP SWAP IF CARRY CLEAR, ELSE SHIFT RIGHT ARITH.
356 1F5F A5 09 RTAR LDA M1 SIGN OF MANT1 INTO CARRY FOR
357 1F61 0A ASL RIGHT ARITH SHIFT
358 1F62 E6 08 RTLOG INC X1 INCR EXP1 TO COMPENSATE FOR RT SHIFT
359 1F64 F0 7E BEQ OVFL EXP1 OUT OF RANGE.
360 1F66 A2 FA RTLOG1 LDX =$FA INDEX FOR 6 BYTE RIGHT SHIFT
361 1F68 A9 80 ROR1 LDA =$80
362 1F6A B0 01 BCS ROR2
363 1F6C 0A ASL
364 1F6D 56 0F ROR2 LSR E+3,X SIMULATE ROR E+3,X
365 1F6F 15 0F ORA E+3,X
366 1F71 95 0F STA E+3,X
367 1F73 E8 INX NEXT BYTE OF SHIFT
368 1F74 D0 F2 BNE ROR1 LOOP UNTIL DONE
369 1F76 60 RTS RETURN
370 *
371 *
372 * EXP/MANT1 X EXP/MANT2 RESULT IN EXP/MANT1
373 *
374 1F77 20 0D 1F FMUL JSR MD1 ABS. VAL OF MANT1, MANT2
375 1F7A 65 08 ADC X1 ADD EXP1 TO EXP2 FOR PRODUCT EXPONENT
376 1F7C 20 CD 1F JSR MD2 CHECK PRODUCT EXP AND PREPARE FOR MUL
377 1F7F 18 CLC CLEAR CARRY
378 1F80 20 66 1F MUL1 JSR RTLOG1 MANT1 AND E RIGHT.(PRODUCT AND MPLIER)
379 1F83 90 03 BCC MUL2 IF CARRY CLEAR, SKIP PARTIAL PRODUCT
380 1F85 20 00 1F JSR ADD ADD MULTIPLICAN TO PRODUCT
381 1F88 88 MUL2 DEY NEXT MUL ITERATION
382 1F89 10 F5 BPL MUL1 LOOP UNTIL DONE
383 1F8B 46 03 MDEND LSR SIGN TEST SIGN (EVEN/ODD)
384 1F8D 90 AF NORMX BCC NORM IF EXEN, NORMALIZE PRODUCT, ELSE COMPLEMENT
385 1F8F 38 FCOMPL SEC SET CARRY FOR SUBTRACT
386 1F90 A2 03 LDX =$03 INDEX FOR 3 BYTE SUBTRACTION
387 1F92 A9 00 COMPL1 LDA =$00 CLEAR A
388 1F94 F5 08 SBC X1,X SUBTRACT BYTE OF EXP1
389 1F96 95 08 STA X1,X RESTORE IT
390 1F98 CA DEX NEXT MORE SIGNIFICANT BYTE
391 1F99 D0 F7 BNE COMPL1 LOOP UNTIL DONE
392 1F9B F0 BC BEQ ADDEND NORMALIZE (OR SHIFT RIGHT IF OVERFLOW)
393 *
394 *
395 * EXP/MANT2 / EXP/MANT1 RESULT IN EXP/MANT1