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 ------------------------------