CASL2LIBで、固定小数点表示のプログラムを中心に修正
[YACASL2.git] / as / casl2lib / outd_q15.casl
diff --git a/as/casl2lib/outd_q15.casl b/as/casl2lib/outd_q15.casl
deleted file mode 100644 (file)
index 4728936..0000000
+++ /dev/null
@@ -1,71 +0,0 @@
-;; GR1に格納された値を、10進数の小数値として表示
-OUTD    START
-        RPUSH
-        LAD     GR2,10          ; GR2に10進数の「10」を格納
-        LAD     GR0,0           ; 負数フラグ。GR1が負数の場合、GR0は1
-        XOR     GR4,GR4         ; 整数値の長さ
-        AND     GR1,GR1         ; GR1が0の場合
-        JZE     ZPRT            ; ↓
-        JPL     STDN            ; GR1が正数の場合、STDNにジャンプ
-        LD      GR5,='-'        ; GR1が負数の場合、「-」をSTR領域に格納
-        ST      GR5,STR         ; ↓
-        LAD     GR4,1,GR4       ; ↓ GR4 <- GR4 + 1
-        CPA     GR1,=#8000      ; GR1が#8000より大きい場合、MDNへジャンプ
-        JPL     MDN             ; ↓
-        LD      GR1,='1'        ; GR1が#8000の場合、-1を出力
-        ST      GR1,STR,GR4     ; (STR + GR4) <- GR1
-        LAD     GR4,1,GR4       ; GR4 <- GR4 + 1
-        JUMP    PRT             ; ↓
-MDN     CALL    ABS             ; GR1を正数に変換
-STDN    LD      GR5,='0'        ; 「0」をSTR領域に格納
-        ST      GR5,STR,GR4     ; ↓
-        LAD     GR4,1,GR4       ; ↓ GR4 <- GR4 + 1
-        LD      GR5,='.'        ; 「.」をSTR領域に格納
-        ST      GR5,STR,GR4     ; ↓
-        LAD     GR4,1,GR4       ; ↓ GR4 <- GR4 + 1
-;; GR1の内容を小数値と見なし、10進数の文字列に変換してSTRに格納
-TODIG   AND     GR1,GR1         ; GR1が0の場合は、ループを脱出
-        JZE     PRT             ; ↓
-        CALL    MUL             ; GR1とGR2の、積をGR1、オーバーフロー値をGR3に格納
-        LD      GR5,GR3         ; GR3をGR1にコピー
-        ADDA    GR5,='0'        ; GR1を文字に変換
-        ST      GR5,STR,GR4     ; (STR + GR4) <- GR1
-        LAD     GR4,1,GR4       ; GR4 <- GR4 + 1
-        JUMP    TODIG           ; ループ
-ZPRT    LD      GR5,='0'        ; 「0」をSTR領域に格納
-        ST      GR5,STR,GR4     ; (STR + GR4) <- GR1
-        LAD     GR4,1,GR4       ; GR4 <- GR4 + 1
-PRT     ST      GR4,LEN         ; LEN <- GR4
-        OUT     STR,LEN         ; ↓
-        RPOP
-        RET
-STR     DS      20
-LEN     DS      1
-        END
-;; GR1の値を10倍にし、GR3にオーバーフロー値を格納
-MUL     START
-        PUSH    0,GR5
-        PUSH    0,GR6
-        LAD     GR3,0           ; GR3は、オーバーフロー値を格納
-        LAD     GR5,1           ; GR5は、インデックス
-        LD      GR6,GR1         ; GR6は、GR4の元の値を保持
-MLOOP   CPA     GR5,=10         ; GR5が10になったらループ脱出
-        JZE     MFIN            ; ↓
-        ADDA    GR1,GR6         ; GR4 <- GR4 + GR6
-        LAD     GR5,1,GR5       ; GR5 <- GR5 + 1
-        JOV     MADD            ; オーバーフローした場合、MADDへジャンプ
-        JUMP    MLOOP           ; ループ
-MADD    LAD     GR3,1,GR3       ; GR3 <- GR3 + 1
-        AND     GR1,=#7FFF      ; GR4の最上位ビットをクリア
-        JUMP    MLOOP           ; ループ
-MFIN    POP     GR6
-        POP     GR5
-        RET
-        END
-;; GR1の値を絶対値に変換する。GR1には0未満の数値が格納されていると想定。
-;; 例: -10 => 10, -20 => 20
-ABS     START
-        XOR     GR1,=#FFFF      ; GR1の値を反転
-        LAD     GR1,1,GR1       ; GR1 <- GR1 + 1
-        RET
-        END