20         *= $4000  ; ARBITRARY STARTING POINT›30   FMOVE  = $DDB6›40   FSUB   = $DA60›50   FTEMP  = $0482›60   FSTOR  = $DDA7›70   FASC   = $D8E6›80   INBUFF = $00F3›85   AFP    = $D800›90   CIX    = $00F2›0100 LBUFF  = $0580›0120 CR     = $9B›0130 PUTREC = $09›0140 GETREC = $05›0150 CIOV   = $E456›0160 ICCOM  = $0342›0170 ICBAL  = $0344›0180 ICBLL  = $0348›0190 ;›0200 ; FLOATING POINT DEMONSTRATION›0210 ; READS TWO NUMBERS FROM SCREEN EDITOR,›0215 ; CONVERTS THEM TO FLOATING POINT,›0220 ; SUBTRACTS THE FIRST FROM THE SECOND,›0225 ; STORES THE RESULT IN FTEMP,›0230 ; WHICH IS A USER DEFINED FP REGISTER,›0240 ; AND DISPLAYS THE RESULT.›0260 START  JSR GETNUM ; GET 1ST NUMBER FROM E:›0270        JSR FMOVE  ; MOVE NUMBER FROM FRO TO FR1›0280        JSR GETNUM ; GET 2ND NUMBER FROM E:›0290        JSR FSUB ; FRO <-- FR0-FR1›0300        BCC NOERR  ; SKIP IF NO ERROR›0340        LDA #ERRMSG&255 ; IF ERR., DISPLAY MESSAGE›0350        STA ICBAL›0360        LDA #ERRMSG/256›0370        JMP CONTIN›0390 NOERR  LDX #FTEMP&255 ; STORE RESULT IN FTEMP›0400        LDY #FTEMP/256›0410        JSR FSTOR›0420 ;›0430 ; CONVERT NUMBER TO ATACSII STRING.›0440 ; FIND END OF STRING,›0445 ; CHANGE NEGATIVE NUM. TO POSITIVE,›0450 ; AND ADD CARRIAGE RETURN.›0470        JSR FASC ; FP TO ATASCII, RESULT IN LBUFF›0480        LDY #$FF›0490 MLOOP  INY›0500        LDA (INBUFF),Y ; LOAD NEXT BYTE›0510        BPL MLOOP  ; IF POSITIVE, CONTINUE›0520        AND #$7F ; IF NOT, MASK OFF MSBIT›0530        STA (INBUFF),Y›0540        INY›0550        LDA #CR  ; STORE CARRIAGE RETURN›0560        STA (INBUFF),Y›0570 ;›0580 ; DISPLAY RESULT›0600        LDA INBUFF ; GET BUFFER ADDRESS›0610        STA ICBAL›0620        LDA INBUFF+1›0630 CONTIN STA ICBAL+1›0640        LDA #PUTREC  ; COMMAND FOR PUT RECORD›0650        STA ICCOM›0660        LDA #40  ; SET BUFFER LENGTH = 40›0670        STA ICBLL›0690        LDA #0›0700        STA ICBLL+1›0710        LDX #0 ; IOCB 0 FOR SCREEN EDITOR›0720        JSR CIOV ; CALL CIO›0730        JMP START  ; DO IT AGAIN›0750 ; GET ATASCII STRING FROM E:›0755 ; CONVERT TO FP, RESULT IN FR0›0780 GETNUM LDA #GETREC  ; GET RECORD (ENDS WITH CR)›0790        STA ICCOM›0800        LDA #LBUFF&255 ; SET BUFFER ADDRESS = LBUFF›0810        STA ICBAL›0820        LDA #LBUFF/256›0830        STA ICBAL+1›0840        LDA #40  ; SET BUFFER LENGTH =40›0850        STA ICBLL›0860        LDA #0›0870        STA ICBLL+1›0880        LDX #0 ; IOCB 0 FOR SCREEN EDITOR›0890        JSR CIOV ; CALL CIO›0900        LDA #LBUFF&255 ; STORE BUFFER ADD. IN INBUFF›0910        STA INBUFF›0920        LDA #LBUFF/256›0930        STA INBUFF+1›0940        LDA #0 ; SET BUFFER INDEX = 0›0950        STA CIX›0960        JSR AFP  ; CALL ATASCII TO FP›0970        RTS›0980 ERRMSG .BYTE "ERROR",CR›1000 ; ROUTINE START INFO›1020        * = $2E0›1030        .WORD START›1040        .END›