Floating Point Routines#
00010 .LI OFF 00020 ------------------------------ 00030 * * 00040 * FLOTINGPOINT BERECHNUNGEN * 00050 * * 00060 ------------------------------ 00070 * 00080 * 00090 * 00100 * 00110 LBUFF .EQ $580 WIRD VOM ROM FESTGELEGT 00120 * 00130 INBUFF .EQ $F3 POINTER AUF LBUFF 00140 CIX .EQ $F2 INDEXREGISTER. NORMAL =0 00150 FR0 .EQ $D4 00160 FR1 .EQ $E0 00170 FPPNTR .EQ $FC POINTER AUF FP ZAHL 00180 * 00190 ------------------------------ 00200 AFP .EQ $D800 ASCII=>FLOATING POINT (FP) 00210 FASC .EQ $D8E6 FP=>ASCII IN LBUFF 00220 IFP .EQ $D9AA INTEGER FR0 ($D4)=> FP 00230 FPI .EQ $D9D2 FP=>INTEGER IN FR0 ($D4) 00240 FSUB .EQ $DA60 FR0<= FR0-FR1 00250 FADD .EQ $DA66 FR0<= FR0+FR1 00260 FMUL .EQ $DADB FR0<= FR0*FR1 00270 FDIV .EQ $DB28 FR0<= FR0/FR1 00280 ------------------------------ 00290 FLD0R .EQ $DD89 LADE FR0 MIT ZAHL 00300 * AUF DIE DIE REGISTER <X> UND <Y> 00310 * ZEIGEN. <X>=MSB, <Y>=LSB 00320 FLD0P .EQ $DD8D LADE FR0 MIT ZAHL 00330 * AUF DIE DER POINTER FPPNTR 00340 * ZEIGT. 00350 FLD1R .EQ $DD98 WIE FLD0R DOCH MIT FR1 00360 FLD1P .EQ $DD9C WIE FLD0P DICH MIT FR1 00370 FSTOR .EQ $DDA7 WIE FLD0R NUR IN ANDERER 00380 * RICHTUNG (SPEICHERN) 00390 FSTOP .EQ $DDAB WIE FSTOR NUR DURCH 00400 * FPPNTR ADRESSIERT. 00410 FMOVE .EQ $DDB6 FR0=>FR1 00420 * 00430 ------------------------------ 00440 INITFP LDA #0 FP-ROUTINEN 00450 STA CIX INITIALISIEREN 00460 LDA #LBUFF 00470 STA INBUFF 00480 LDA /LBUFF 00490 STA INBUFF+1 00500 RTS 00510 ------------------------------ 00520 * 00530 ------------------------------ 00540 PRINTFR0 JSR INITFP INITIALISIERUNG 00550 JSR FASC FP=>ASCII WANDELN 00560 LDY #0 00570 .1 STY WERT ZEICHEN AUS 00580 LDA (INBUFF),Y PUFFER HOLEN 00590 BMI ENDE INVERS? JA: LETZTES ZEICHEN 00600 JSR PUTCHAR AUSGEBEN 00610 LDY WERT NAECHSTES ZEICHEN 00620 INY 00630 BNE .1 HIER EIN JUMP 00640 ENDE AND #$7F INVERSES ZEICHEN ALS 00650 JMP PUTCHAR NORMALZEICHEN AUSGEBEN 00660 * 00670 WERT .HX 00 ZWISCHENSPEICHER 00680 * 00690 ------------------------------ 00700 * 00710 ------------------------------ 00720 PUTCHAR TAX VECTOR 00730 LDA $E407 JUMP 00740 PHA UEBER 00750 LDA $E406 ROM 00760 PHA 00770 TXA 00780 RTS JMP 00790 * 00800 ------------------------------ 00810 CLRFR0 LDY #5 FR0 00820 LDA #0 LOESCHEN 00830 .1 STA FR0,Y 00840 DEY 00850 BPL .1 00860 RTS 00870 ------------------------------ 00880 CLRFR1 LDY #5 FR1 00890 LDA #0 LOESCHEN 00900 .1 STA FR1,Y 00910 DEY 00920 BPL .1 00930 RTS 00940 ------------------------------