----------------------------------------------------

Anhang IV

Beispiel für Fließkomma-Arithmetik

----------------------------------------------------

 

 

0000      20        *= 4000        ;BELIEBIGER STARTPUNKT

DDB6      30   FMOVE = $DDB6

DA60      40   FSUB = $DA60

0482      50   FTEMP = $0482

DDA7      60   FSTOR = $DDA7

D8E6      70   FASC  = $D8E6

00F3      90   INBUFF= $00F3

D800      85   AFP   = $D800

00F2      90   CIX   = $00F2

0580      0100 LBUFF = $0580

          0110 ;

0098      0120 CR    = $9B

0009      0130 PUTREC= $09

0005      0140 GETREC= $05

E456      0150 CIOV  = $E456

0342      0160 ICCOM = $0342

0344      0170 ICBAL = $0344

0348      0180 ICBLL = $0348

          0190 ; VON CAROL SHAW

          0200 ; DEMO-PROGRAMM ZUR FLIESSKOMMA-ARITHMETIK.

          0210 ; ES WERDEN ZWEI ZAHLEN VOM BILDSCHIRM-

          0211 ; EDITOR EINGELESEN UND IN FLIESSKOMMA-WERTE

          0212 ; UMGEWANDELT, DANACH WIRD DIE ERSTE ZAHL

          0220 ; VON DER ZWEITEN SUBTRAHIERT, SPEICHERT DAS

          0221 ; ERGEBNIS IN FTEMP (DURCH DEN BENUTZER

          0222 ; FESTGELEGTES RESISTER) UND ZEIGT ES AUF

          0230 ; DEM BILDSCHIRM AN.

          0240 ;

          0250 START

4000 205340 0260 JSR GETNUM    ;ERSTE ZAHL VON E: IN F.K.

                                UMWANDELN

4003 20B6DD 0270 JSR FMOVE     ;ZAHL VON FR0 NACH FR1

                                BRINGEN

4006 205340 0280 JSR GETNUM    ;ZWEITE ZAHL VON E: IN F.K.

                                UMWANDELN - AUSLASSEN, WENN

                                NUR EIN ARGUMENT

4009 2060DA 0290 JSR FSUB      ;FR0 <== FR0 - FR1

400C 900A   0300 BCC NOERR     ;VERZWEIGEN, WENN KEIN FEHLER

            0310 ;

            0320 ; FEHLER -- MITTEILUNG ANZEIGEN

            0330 ;

400E A981   0340 LDA #ERRMSG&255

4010 8D4403 0350 STA ICBAL

4013 A940   0360 LDA #ERRMSG/256

4015 4C3940 0370 JMP CONTIN

            0380 NOERR

4018 A282   0390 LDX #FTEMP&255     ;ERGENBIS IN FTEMP

                                     SPEICHERN

401A A004   0400 LDY #FTEMP/256

401C 20A7DD 0410 JSR FSTOR

            0420 ;

            0430 ; ZAHL IN ATASCII-STRING

            0440 ; UMWANDELN. ENDE DES STRINGS

            0450 ; SUCHEN UND NEGATIVE ZAHL IN

            0451 ; POSITIVE UMWANDELN UND ZEILEN-

            0452 ; VORSCHUB ANF‹GEN.

            0453 ;

401F 20E6DB 0460 JSR FASC           ;VON F.K. IN ASCII-

                                     STRING NACH LBUFF

                                     UMWANDELN

4022 A0FF   0470 LDY #$FF

            0480 MLOOP

4024 C8    0490 INY

4025 B1F3   0500 LDA (INBUFF),Y     ;NƒCHTES

                                     BYTE LADEN (WIRD

                                     DURCH INBUFF ANGE-

                                     ZEIGT) POSITIV?

4027 10FB   0510 BPL MLOOP          ;JA - FORTFAHREN

4029 297F  0520 AND #$7F           ;NEIN. NEGATIV -

                                     MSBIT AUSMASKIEREN

402B 91F3   0530 STA (INBUFF),Y

402D CS    0540 INY

402E A99B   0550 LDA #CR            ;ZEILENVORSCHUB SPEICHERN

4030 91F3   0560 STA (INBUFF),Y

            0570 ;

            0580 ;ERGEBNIS ANZEIBEN

            0590 ;

4032 A5F3   0600 LDA INBUFF         ;PUFFER-ADRESSE STEHT IN

                                     INBUFF

4034 8D4403 0610 STA ICBAL

4037 A5F4   0620 LDA INBUFF+l

            0630 CONTIN

4039 8D4503 0640 STA ICBAL+l

403C A909   0650 LDA #PUTREC        ;PUTREC-KOMMANDO

403E 8D4203 0660 STA ICCOM

4041 A928   0670 LDA #40            ;PUFFER-LƒNGE = 40

4043 8D4B03 0680 STA ICBLL

4046 A900   0690 LDA #0

4048 8D4903 0700 STA ICBLL+l

404B A200   0710 LDX #0             ;IOCB NR.-0 (BILDSCHIRM-

                                     EDITOR

404D 2056E4 0720 JSR CIOV           ;CIO AUFRUFEN

4050 4C0040 0730 JMP START          ;VON VORNE ANFANGEN

            0740 ;

            0750 ; GETNUM -- ASCII-STRING VON E: LESEN

            0755 ; UND ZU F.K. NACH FRO UMWANDELN.

            0760 ;

            0770 GETNUM

4053 A905   0780 LDA #GETREC        ;GET RECORD (ENDE MIT CR)

4055 8D4203 0790 STA ICCOM

4058 A980   0800 LDA #LBUFF&255     ;BUFFER-ADRESSE = LBUFF

405A 8D4403 0810 STA ICBAL

405D A905   0820 LDA #LBUFF/256

405F 8D4503 0830 STA ICBAL+l

4062 A929   0840 LDA #40            ;PUFFER-LANGE = 40

4064 8D4803 0850 STA ICBLL

4067 A900   0860 LDA #0

4069 8D4903 0870 STA ICBLL+l

406C A200   0880 LDX #0             ;IOCB NR.-0(BILD-

                                     SCHIRM-EDITOR)

406E 2056E4 0890 JSR CIOV           ;CIO AUFRUFEN

4071 A980   0900 LDA #BUFF&255      ;PUFFER-ADRESSE IM

                                     ZEIGER (INBUFF)

                                     SPEICHERN

4073 85F3   0910 STA INBUFF

4075 A905   0920 LDA #LBUFF/256

4077 85F4   0930 STA INBUFF+l

4079 A900   0940 LDA #0             ;BUFFER-INDEX = 0

407B 85F2   0950 STA CIX

407D 4C00D8 0960 JMP AFP            ;AUFRUFEN DER ASCII ZU

                                     F.K. UND RüCKSPRUNG

4080 60     0970 INIT RTS           ;EINSCHALT (POWER-UP)-

                                     ROUTINE(KEINE AKTION)

4081 45     0980 ERRMSG .BYTE ìERRORî,CR

                                    ;ZEIGT GESETZTES

                                     CARRY-BIT BEI

                                     R‹CKSPRUNG VON

                                     F.K.-ROUTINE AN.

4082 52

4083 52

4084 F4

4085 52

4086 9B

             0990 ;

             1000 ; ROUTINEN-START INFORMATION

             1010 ;

4087         1020 *= $2E2

02E0 0040    1030 .WORD START

02E2         1040 .END

 

 

Routinen der Fließomma-Arithmetik