casl2libが自動でビルドされるように
authorj8takagi <j8takagi@nifty.com>
Thu, 18 Feb 2010 17:23:20 +0000 (02:23 +0900)
committerj8takagi <j8takagi@nifty.com>
Thu, 18 Feb 2010 17:23:20 +0000 (02:23 +0900)
22 files changed:
Makefile
as/casl2lib/.gitignore [new file with mode: 0644]
as/casl2lib/BUILD.mk [deleted file]
as/casl2lib/Makefile
as/casl2lib/inl.casl [deleted file]
as/casl2lib/mula.casl [deleted file]
as/casl2lib/outa.casl [deleted file]
as/casl2lib/outb.casl [deleted file]
as/casl2lib/outl.casl [deleted file]
as/casl2lib/src_inl/Makefile [deleted file]
as/casl2lib/src_l2str/l2str_main.casl [new file with mode: 0644]
as/casl2lib/src_mula/Makefile [deleted file]
as/casl2lib/src_outa/Makefile [deleted file]
as/casl2lib/src_outb/Makefile [deleted file]
as/casl2lib/src_outl/Makefile [deleted file]
as/casl2lib/src_outl/outl_main.casl
as/casl2lib/test/Test.log [deleted file]
as/casl2lib/test/divl/0.txt
as/casl2lib/test/divl/Makefile
as/casl2lib/test/inl/0.txt
as/casl2lib/test/inl/Makefile
as/casl2lib/test/mull/0.txt

index d7e61ee..e36b37f 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -1,10 +1,15 @@
 prefix = $(HOME)
-CLEANDIR = src test/integration test/unit
-.PHPNY: all clean check install uninstall
-all:
+CLEANDIR = src test/integration test/unit as/casl2lib
+.PHPNY: all build clean check doc casl2lib install uninstall
+all: build casl2lib
+build:
        make -C src
+casl2lib:
+       @make -C as/casl2lib
 check:
        @make -sC test/integration
+doc:
+       @make -sC doc
 clean:
        @for target in $(CLEANDIR); do $(MAKE) -sC $$target clean; done
 install: all
diff --git a/as/casl2lib/.gitignore b/as/casl2lib/.gitignore
new file mode 100644 (file)
index 0000000..c2862b0
--- /dev/null
@@ -0,0 +1,6 @@
+inl.casl
+l2str.casl
+mula.casl
+outa.casl
+outb.casl
+outl.casl
\ No newline at end of file
diff --git a/as/casl2lib/BUILD.mk b/as/casl2lib/BUILD.mk
deleted file mode 100644 (file)
index 704f247..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-.PHONY: clean
-
-$(TARGET): $(SRCFILE)
-       @echo ";;; *** This file is auto generated from $(SRCFILE) of `pwd | xargs basename` ***" >$@; \
-     cat $^ >>$@
-clean:
-       @rm $(TARGET)
index 7ee2687..c77731e 100644 (file)
@@ -1,10 +1,24 @@
-SRCDIR = `ls -d src_*`
-TESTDIR = test
+ECHOHEADER = 'echo ";;; *** This file is auto generated. ***"'
+TARGETS = inl.casl l2str.casl mula.casl outa.casl outb.casl outl.casl
 .PHONY: all clean
-all:
-       @for target in $(SRCDIR); do $(MAKE) -C $$target; done
+all: $(TARGETS)
+inl.casl: src_inl/inl_main.casl mull.casl
+       @echo ";;; *** This file is auto generated. ***" >$@; \
+     cat $^ >>$@
+l2str.casl: src_l2str/l2str_main.casl divl.casl rev.casl
+       @echo ";;; *** This file is auto generated. ***" >$@; \
+     cat $^ >>$@
+mula.casl: src_mula/mula_main.casl mull.casl
+       @echo ";;; *** This file is auto generated. ***" >$@; \
+     cat $^ >>$@
+outa.casl: src_outa/outa_main.casl divl.casl rev.casl abs.casl
+       @echo ";;; *** This file is auto generated. ***" >$@; \
+     cat $^ >>$@
+outb.casl: src_outb/outb_main.casl divl.casl rev.casl
+       @echo ";;; *** This file is auto generated. ***" >$@; \
+     cat $^ >>$@
+outl.casl: src_outl/outl_main.casl l2str.casl
+       @echo ";;; *** This file is auto generated. ***" >$@; \
+     cat $^ >>$@
 clean:
-       @for target in $(SRCDIR); do $(MAKE) -C $$target clean; done;
-     make -C $(TESTDIR) clean
-check:
-       @make -C $(TESTDIR)
+       @for target in $(TARGETS); do rm -f $$target; done
diff --git a/as/casl2lib/inl.casl b/as/casl2lib/inl.casl
deleted file mode 100644 (file)
index aaca184..0000000
+++ /dev/null
@@ -1,86 +0,0 @@
-;;; *** This file is auto generated from inl_main.casl ../mull.casl of src_inl ***
-;;; 0〜65535の範囲にある整数の入力を受け付ける
-;;; 入力 (SVC)
-;;; 出力 GR1: 入力された数値 GR0: 文字の長さ。入力が数字以外の場合は、#FFFF
-;;;      65536以上の正数が入力された場合はエラー
-INL     START
-        PUSH    0,GR2
-        PUSH    0,GR3
-        PUSH    0,GR4
-        IN      IBUF,ILEN       ; 入力文字列を格納
-        LD      GR0,ILEN        ; ILEN = 0の場合、FINへジャンプ
-        JZE     FIN             ; ↓
-        XOR     GR1,GR1         ; GR1:各桁の数値 初期化
-        LAD     GR2,10          ; GR2:10進数の「10」 初期化
-        LAD     GR3,0           ; GR3:値の一時格納 初期化
-        LAD     GR4,0           ; GR4:インデックス 初期化
-STOL    CPL     GR4,ILEN        ; ループ先頭。(GR4 = ILEN)の場合、ループ脱出
-        JZE     CP              ; ↓
-        LD      GR1,IBUF,GR4    ; GR1に、入力文字列中の次の桁を格納
-        CPL     GR1,ZERO        ; (GR1 < '0')の場合、NANへジャンプ
-        JMI     NAN              ; ↓
-        CPL     GR1,NINE        ; (GR1 > '9')の場合、NANへジャンプ
-        JPL     NAN              ; ↓
-        SUBL    GR1,ZERO        ; GR1の文字を、対応する数値に変換
-        ST      GR4,NLEN        ; GR4 <- ILEN - NLEN - 1
-        LD      GR4,ILEN        ; ↓
-        SUBA    GR4,NLEN        ; ↓
-MUL10   CPA     GR4,=1          ; ループ先頭。GR1 <- 10 ** GR4
-        JZE     NEXT            ; (GR4 = 1)の場合、ループ脱出
-        JMI     NEXT            ; ↓
-        CALL    MULL            ; MULLを呼び出し、GR0 <- GR1 * GR2
-        JOV     FIN             ; ↓
-        LD      GR1,GR0         ; GR1 <- GR0
-        LAD     GR4,-1,GR4      ; GR4 <- GR4 -1
-        JUMP    MUL10           ; ループ終端
-NEXT    LD      GR4,NLEN        ; GR4 <- NLEN。復元
-        ADDL    GR3,GR1         ; GR3 <- GR3 + GR1
-        JOV     FIN             ; ↓
-        LAD     GR4,1,GR4       ; GR4 <- GR4 + 1
-        JUMP    STOL            ; ループ終端
-NAN     LAD     GR0,#FFFF       ; GR0 <- #FFFF
-        JUMP    FIN             ; FINへジャンプ
-CP      LD      GR1,GR3         ; GR0 <- GR3
-        LD      GR0,ILEN        ; GR0 <- ILEN
-FIN     POP     GR4
-        POP     GR3
-        POP     GR2
-        RET
-ZERO    DC      '0'
-NINE    DC      '9'
-IBUF    DS      5
-ILEN    DS      1
-NLEN    DS      1
-        END
-
-;;; 0〜65535の範囲にある正数のかけ算(筆算方式)を行う
-;;; 入力 GR1:被乗数 GR2:乗数
-;;; 出力 GR0:積
-;;; 積が65535より大きい場合は、GR0は積の下位16ビットになり、オーバーフロー
-MULL    START
-        PUSH    0,GR1
-        PUSH    0,GR3
-        XOR     GR0,GR0         ; 積
-        AND     GR1,GR1         ; (GR1 = 0)の場合、終了
-        JZE     FIN             ; ↓
-        AND     GR2,GR2         ; (GR2 = 0)の場合、終了
-        JZE     FIN             ; ↓
-        LAD     GR3,1           ; 対象ビット
-LOOP    PUSH    0,GR3           ; ループ先頭。GR2のビット中でGR3が示すビットが0の場合、NEXTへジャンプ
-        AND     GR3,GR2         ; ↓
-        POP     GR3             ; ↓
-        JZE     NEXT            ; ↓
-        ADDL    GR0,GR1         ; GR0 <- GR0 + GR1
-        JOV     FIN             ; GR0がオーバーフローした場合、ループ脱出
-NEXT    SLL     GR3,1           ; GR3を1回左シフト
-        AND     GR3,GR3         ; (GR3 = 0)の場合、ループ脱出
-        JZE     FIN             ; ↓
-        CPL     GR3,GR2         ; (GR3 > GR2)の場合、ループ脱出
-        JPL     FIN             ; ↓
-        SLL     GR1,1           ; GR1を1回左シフト
-        JOV     FIN             ; GR1がオーバーフローした場合、ループ脱出
-        JUMP    LOOP            ; ループ終端
-FIN     POP     GR3
-        POP     GR1
-        RET
-        END
diff --git a/as/casl2lib/mula.casl b/as/casl2lib/mula.casl
deleted file mode 100644 (file)
index 6155e55..0000000
+++ /dev/null
@@ -1,72 +0,0 @@
-;;; -32767〜32767の範囲にある正数のかけ算(筆算方式)を行う
-;;; 入力 GR1:被乗数 GR2:乗数
-;;; 出力 GR0:積
-;;; 被乗数または乗数が-32768の場合は、オーバーフロー
-;;; 積が-32767未満または32767より大きい場合は、GR0は積の下位16ビットになり、オーバーフロー
-MULA    START
-        RPUSH
-        XOR     GR0,GR0         ; 積
-        AND     GR1,GR1         ; (GR1 = 0)の場合、終了
-        JZE     FIN             ; ↓
-        AND     GR2,GR2         ; (GR2 = 0)の場合、終了
-        JZE     FIN             ; ↓
-        LAD     GR3,1           ; 対象ビット
-        XOR     GR4,GR4         ; マイナスフラグ
-CHK1    AND     GR1,GR1         ; (GR1 > 0)の場合は、CHK2へジャンプ
-        JPL     CHK2            ; ↓
-        XOR     GR1,ALLON       ; GR1の正負を反転
-        ADDA    GR1,ONE         ; ↓
-        JOV     FIN             ; (GR1 = -32768)の場合は終了
-        XOR     GR4,ONE         ; GR4 <- 1
-CHK2    AND     GR2,GR2         ; (GR1 > 0)の場合は、LOOPへジャンプ
-        JPL     MUL             ; ↓
-        XOR     GR2,ALLON       ; GR2の正負を反転
-        ADDA    GR2,ONE         ; ↓
-        JOV     FIN             ; (GR2 = -32768)の場合は終了
-        XOR     GR4,ONE         ; マイナスフラグを反転
-MUL     CALL    MULL            ; GR0 <- GR1 * GR2
-        JOV     FIN
-        AND     GR0,GR0
-        JMI     OV
-MIN     AND     GR4,GR4         ; マイナスフラグがオフの場合、終了
-        JZE     FIN             ; ↓
-        XOR     GR0,ALLON       ; GR1の正負を反転
-        ADDA    GR0,ONE         ; ↓
-        JUMP    FIN
-OV      ADDL    GR0,=#8000
-FIN     RPOP
-        RET
-ONE     DC      1
-ALLON   DC      #FFFF
-        END
-;;; 0〜65535の範囲にある正数のかけ算(筆算方式)を行う
-;;; 入力 GR1:被乗数 GR2:乗数
-;;; 出力 GR0:積
-;;; 積が65535より大きい場合は、GR0は積の下位16ビットになり、オーバーフロー
-MULL    START
-        PUSH    0,GR1
-        PUSH    0,GR3
-        XOR     GR0,GR0         ; 積
-        AND     GR1,GR1         ; (GR1 = 0)の場合、終了
-        JZE     FIN             ; ↓
-        AND     GR2,GR2         ; (GR2 = 0)の場合、終了
-        JZE     FIN             ; ↓
-        LAD     GR3,1           ; 対象ビット
-LOOP    PUSH    0,GR3           ; ループ先頭。GR2のビット中でGR3が示すビットが0の場合、NEXTへジャンプ
-        AND     GR3,GR2         ; ↓
-        POP     GR3             ; ↓
-        JZE     NEXT            ; ↓
-        ADDL    GR0,GR1         ; GR0 <- GR0 + GR1
-        JOV     FIN             ; GR0がオーバーフローした場合、ループ脱出
-NEXT    SLL     GR3,1           ; GR3を1回左シフト
-        AND     GR3,GR3         ; (GR3 = 0)の場合、ループ脱出
-        JZE     FIN             ; ↓
-        CPL     GR3,GR2         ; (GR3 > GR2)の場合、ループ脱出
-        JPL     FIN             ; ↓
-        SLL     GR1,1           ; GR1を1回左シフト
-        JOV     FIN             ; GR1がオーバーフローした場合、ループ脱出
-        JUMP    LOOP            ; ループ終端
-FIN     POP     GR3
-        POP     GR1
-        RET
-        END
diff --git a/as/casl2lib/outa.casl b/as/casl2lib/outa.casl
deleted file mode 100644 (file)
index 4d0f161..0000000
+++ /dev/null
@@ -1,135 +0,0 @@
-;;; GR1に格納された値を、10進数の整数値(-32768〜32767)として表示
-OUTA    START
-        RPUSH
-        LAD     GR2,10          ; GR2に10進数の「10」を格納。
-        LAD     GR0,0           ; GR0 <- 0
-        LAD     GR4,0           ; 負数フラグ。GR1が負数の場合、GR4は1
-        LAD     GR5,0           ; 整数値の長さ
-        AND     GR1,GR1         ; GR1をテスト
-        JZE     ZPRT            ; GR1が0の場合、ZPRTにジャンプ
-        JPL     STI             ; GR1が正数の場合、STIにジャンプ
-        LAD     GR4,1           ; GR1が負数の場合、GR4をオン
-        CALL    ABS             ;                  GR1を正数に変換
-STI     CPL     GR1,GR2         ; ループ先頭。(GR1 < GR2)の場合は、ループ脱出
-        JMI     STLST           ; ↓
-        CALL    DIVL            ; GR1とGR2の、商をGR0、剰余をGR3に格納
-        LD      GR1,GR3         ; GR1にGR3をコピー
-        LD      GR1,NCHAR,GR1   ; GR1を文字に変換
-        ST      GR1,STR,GR5     ; (STR + GR5) <- GR1
-        LAD     GR5,1,GR5       ; GR5 <- GR5 + 1
-        LD      GR1,GR0         ; GR0をGR1にコピー
-        JUMP    STI             ; ループ終端
-STLST   LD      GR1,NCHAR,GR1   ; GR1を文字に変換
-        ST      GR1,STR,GR5     ; (STR + GR5) <- GR1
-        LAD     GR5,1,GR5       ; GR5 <- GR5 + 1
-        AND     GR4,GR4         ; 正数の場合
-        JZE     PRT             ; ↓
-        LD      GR1,='-'        ; 負数の場合、「-」をSTR領域に格納
-        ST      GR1,STR,GR5     ; (STR + GR5) <- GR1
-        LAD     GR5,1,GR5       ; GR5 <- GR5 + 1
-        JUMP    PRT             ; PRTにジャンプ
-ZPRT    LD      GR1,NCHAR       ; 「0」をSTR領域に格納
-        ST      GR1,STR,GR5     ; (STR + GR5) <- GR1
-        LAD     GR5,1,GR5       ; GR5 <- GR5 + 1
-PRT     ST      GR5,LEN         ; LEN <- GR5
-        LD      GR2,LEN         ; GR2にLENの値を格納
-        LAD     GR1,STR         ; GR1に文字列のアドレスを格納
-        CALL    REV             ; 文字列を逆順に並べ替え
-        OUT     STR,LEN         ; 文字列を出力
-        RPOP
-        RET
-STR     DS      17
-LEN     DS      1
-NCHAR   DC      '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ'
-        END
-;;; 0〜65535の範囲にある正数の割算(筆算方式)を行う
-;;; 入力 GR1:被除数 GR2:除数
-;;; 出力 GR0:商 GR3:剰余
-;;; (GR2 = 0)の場合、GR0 GR3とも0になり、オーバーフロー
-DIVL    START
-        PUSH    0,GR1
-        PUSH    0,GR2
-        PUSH    0,GR4
-        XOR     GR0,GR0         ; GR0:商 初期化
-        XOR     GR3,GR3         ; GR3:剰余 初期化
-        AND     GR2,GR2         ; (GR2 = 0)の場合、DIVZEROへジャンプ
-        JZE     DIVZERO         ; ↓
-        AND     GR1,GR1         ; (GR1 = 0)の場合、FINへジャンプ
-        JZE     FIN             ; ↓
-        ST      GR2,Y           ; YにGR2の初期値を保存
-        LAD     GR4,1           ; GR4:対象ビットのインデックス 初期化
-SL      CPL     GR2,GR1         ; ループ先頭。(GR2 > GR1)の場合、LOOPへループ脱出
-        JPL     LOOP            ; ↓
-        SLL     GR4,1           ; GR4を1回左シフト
-        ST      GR2,TMP         ; GR2の値をTMPに退避
-        SLL     GR2,1           ; GR2を1回左シフト
-        JOV     YOV             ; オーバーフローの場合は、YOVへジャンプ
-        JUMP    SL              ; ループ終端
-YOV     LD      GR2,TMP         ; GR2の値をTMPから復元
-        SRL     GR4,1           ; GR4を1回右シフト
-        JUMP    LPIN            ; LPINへジャンプ
-LOOP    SRL     GR4,1           ; ループ先頭。GR4を1回右シフト
-        JZE     SETMOD          ; (GR4 = 0)の場合、SETMODへループ脱出
-        SRL     GR2,1           ; GR2を1回右シフト
-        CPL     GR1,Y           ; (GR1 < Y)の場合、SETMODへループ脱出
-        JMI     SETMOD          ; ↓
-        CPL     GR1,GR2         ; (GR1 < GR2)の場合、ループ先頭へジャンプ
-        JMI     LOOP            ; ↓
-LPIN    SUBL    GR1,GR2         ; GR1 <- GR1 - GR2
-        ADDL    GR0,GR4         ; GR0 <- GR0 + GR4
-        JUMP    LOOP            ; ループ終端
-DIVZERO LAD     GR3,#8000       ; 強制的にオーバーフローを発生させ、GR3 <- 0
-        SLL     GR3,1           ; ↓
-        JUMP    FIN             ; FIN へジャンプ
-SETMOD  LD      GR3,GR1         ; GR3 <- GR1。剰余の設定
-FIN     POP     GR4
-        POP     GR2
-        POP     GR1
-        RET
-Y       DS      1
-TMP     DS      1
-        END
-;;; メモリー上にある指定されたアドレス、長さの文字列を逆順に並べ替える
-;;;     例: 12345 -> 54321、54321- -> -12345
-;;; 入力 GR1:文字列のアドレス GR2:文字列の長さ
-;;; 出力 (同上)
-REV     START
-        RPUSH
-        LAD     GR3,0           ; GR3の初期化
-PU      CPL     GR3,GR2         ; ループ先頭。(GR3 = GR2)の場合、ループ脱出
-        JZE     NEXT            ; ↓
-        LD      GR4,GR1         ; GR4 <- GR1
-        ADDL    GR4,GR3         ; GR4 <- GR4 + GR3
-        LD      GR5,0,GR4       ; GR5 <- GR4アドレスの値
-        PUSH    0,GR5           ; GR5をプッシュ
-        LAD     GR3,1,GR3       ; GR3 <- GR3 + 1
-        JUMP    PU              ; ループ終端
-NEXT    LAD     GR3,0           ; GR3の初期化
-PO      CPL     GR3,GR2         ; ループ先頭。(GR3 = GR2)の場合、ループ脱出
-        JZE     FIN             ; ↓
-        POP     GR5             ; GR5にポップ
-        LD      GR4,GR1         ; GR4にGR1の値をコピー
-        ADDL    GR4,GR3         ; GR4 <- GR4 + GR3
-        ST      GR5,0,GR4       ; GR4のアドレス <- GR5の値
-        LAD     GR3,1,GR3       ; GR3 <- GR3 + 1
-        JUMP    PO              ; ループ終端
-FIN     RPOP
-        RET
-        END
-;;; GR1を絶対値に変換する
-;;; 入力 GR1:-32768〜32767の整数
-;;; 出力 GR1:入力された整数の絶対値
-;;;       OF:入力されたGR1が-32768の場合、1
-;;;       SF:入力されたGR1が負数(-32767〜-1)の場合、1
-ABS     START
-        AND     GR1,GR1
-        JPL     FIN
-        JZE     FIN
-        XOR     GR1,ALLON
-        ADDA    GR1,ONE
-        JOV     FIN
-        CPL     GR1,ALLON
-FIN     RET
-ONE     DC      1
-ALLON   DC      #FFFF
-        END
diff --git a/as/casl2lib/outb.casl b/as/casl2lib/outb.casl
deleted file mode 100644 (file)
index 6b1d274..0000000
+++ /dev/null
@@ -1,116 +0,0 @@
-;;; GR1に格納された値を、2進数値として表示
-OUTB    START
-        RPUSH
-        LAD     GR2,2           ; GR2に2進数の「2」を格納。
-        LAD     GR0,0           ; GR0 <- 0
-        XOR     GR4,GR4         ; 2進数値の長さ
-        AND     GR1,GR1         ; GR1をテスト
-        JZE     ZERO            ; GR1が0の場合、ZEROにジャンプ
-STI     CPL     GR1,GR2         ; ループ先頭。(GR1 < GR2)の場合は、ループ脱出
-        JMI     STLST           ; ↓
-        CALL    DIVL            ; GR1とGR2の、商をGR0、剰余をGR3に格納
-        LD      GR1,GR3         ; GR1にGR3をコピー
-        LD      GR1,NCHAR,GR1   ; GR1を文字に変換
-        ST      GR1,STR,GR4     ; (STR + GR4) <- GR1
-        LAD     GR4,1,GR4       ; GR4 <- GR4 + 1
-        LD      GR1,GR0         ; GR0をGR1にコピー
-        JUMP    STI             ; ループ終端
-STLST   LD      GR1,NCHAR,GR1   ; GR1を文字に変換
-        ST      GR1,STR,GR4     ; (STR + GR4) <- GR1
-        LAD     GR4,1,GR4       ; GR4 <- GR4 + 1
-        JUMP    EMB             ; EMBにジャンプ
-ZERO    LD      GR1,NCHAR       ; 「0」をSTR領域に格納
-        ST      GR1,STR,GR4     ; ↓ (STR + GR4) <- GR1
-        LAD     GR4,1,GR4       ; ↓ GR4 <- GR4 + 1
-EMB     LD      GR1,NCHAR       ; GR1 <- '0'
-EMLOOP  CPA     GR4,DIG         ; ループ先頭。(GR4 = DIG)の場合は、ループ脱出
-        JZE     PRT             ; ↓
-        ST      GR1,STR,GR4     ; ↓ (STR + GR4) <- GR1
-        LAD     GR4,1,GR4       ; ↓ GR4 <- GR4 + 1
-        JUMP    EMLOOP          ; ループ終端
-PRT     ST      GR4,LEN         ; LEN <- GR4
-        LD      GR2,LEN         ; GR2にLENの値を格納
-        LAD     GR1,STR         ; GR1に文字列のアドレスを格納
-        CALL    REV             ; 文字列を逆順に並べ替え
-        OUT     STR,LEN         ; 文字列を出力
-        RPOP
-        RET
-STR     DS      17
-LEN     DS      1
-NCHAR   DC      '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ'
-DIG     DC      16
-        END
-;;; 0〜65535の範囲にある正数の割算(筆算方式)を行う
-;;; 入力 GR1:被除数 GR2:除数
-;;; 出力 GR0:商 GR3:剰余
-;;; (GR2 = 0)の場合、GR0 GR3とも0になり、オーバーフロー
-DIVL    START
-        PUSH    0,GR1
-        PUSH    0,GR2
-        PUSH    0,GR4
-        XOR     GR0,GR0         ; GR0:商 初期化
-        XOR     GR3,GR3         ; GR3:剰余 初期化
-        AND     GR2,GR2         ; (GR2 = 0)の場合、DIVZEROへジャンプ
-        JZE     DIVZERO         ; ↓
-        AND     GR1,GR1         ; (GR1 = 0)の場合、FINへジャンプ
-        JZE     FIN             ; ↓
-        ST      GR2,Y           ; YにGR2の初期値を保存
-        LAD     GR4,1           ; GR4:対象ビットのインデックス 初期化
-SL      CPL     GR2,GR1         ; ループ先頭。(GR2 > GR1)の場合、LOOPへループ脱出
-        JPL     LOOP            ; ↓
-        SLL     GR4,1           ; GR4を1回左シフト
-        ST      GR2,TMP         ; GR2の値をTMPに退避
-        SLL     GR2,1           ; GR2を1回左シフト
-        JOV     YOV             ; オーバーフローの場合は、YOVへジャンプ
-        JUMP    SL              ; ループ終端
-YOV     LD      GR2,TMP         ; GR2の値をTMPから復元
-        SRL     GR4,1           ; GR4を1回右シフト
-        JUMP    LPIN            ; LPINへジャンプ
-LOOP    SRL     GR4,1           ; ループ先頭。GR4を1回右シフト
-        JZE     SETMOD          ; (GR4 = 0)の場合、SETMODへループ脱出
-        SRL     GR2,1           ; GR2を1回右シフト
-        CPL     GR1,Y           ; (GR1 < Y)の場合、SETMODへループ脱出
-        JMI     SETMOD          ; ↓
-        CPL     GR1,GR2         ; (GR1 < GR2)の場合、ループ先頭へジャンプ
-        JMI     LOOP            ; ↓
-LPIN    SUBL    GR1,GR2         ; GR1 <- GR1 - GR2
-        ADDL    GR0,GR4         ; GR0 <- GR0 + GR4
-        JUMP    LOOP            ; ループ終端
-DIVZERO LAD     GR3,#8000       ; 強制的にオーバーフローを発生させ、GR3 <- 0
-        SLL     GR3,1           ; ↓
-        JUMP    FIN             ; FIN へジャンプ
-SETMOD  LD      GR3,GR1         ; GR3 <- GR1。剰余の設定
-FIN     POP     GR4
-        POP     GR2
-        POP     GR1
-        RET
-Y       DS      1
-TMP     DS      1
-        END
-;;; メモリー上にある指定されたアドレス、長さの文字列を逆順に並べ替える
-;;;     例: 12345 -> 54321、54321- -> -12345
-;;; 入力 GR1:文字列のアドレス GR2:文字列の長さ
-;;; 出力 (同上)
-REV     START
-        RPUSH
-        LAD     GR3,0           ; GR3の初期化
-PU      CPL     GR3,GR2         ; ループ先頭。(GR3 = GR2)の場合、ループ脱出
-        JZE     NEXT            ; ↓
-        LD      GR4,GR1         ; GR4 <- GR1
-        ADDL    GR4,GR3         ; GR4 <- GR4 + GR3
-        LD      GR5,0,GR4       ; GR5 <- GR4アドレスの値
-        PUSH    0,GR5           ; GR5をプッシュ
-        LAD     GR3,1,GR3       ; GR3 <- GR3 + 1
-        JUMP    PU              ; ループ終端
-NEXT    LAD     GR3,0           ; GR3の初期化
-PO      CPL     GR3,GR2         ; ループ先頭。(GR3 = GR2)の場合、ループ脱出
-        JZE     FIN             ; ↓
-        POP     GR5             ; GR5にポップ
-        LD      GR4,GR1         ; GR4にGR1の値をコピー
-        ADDL    GR4,GR3         ; GR4 <- GR4 + GR3
-        ST      GR5,0,GR4       ; GR4のアドレス <- GR5の値
-        LAD     GR3,1,GR3       ; GR3 <- GR3 + 1
-        JUMP    PO              ; ループ終端
-FIN     RPOP
-        RET
-        END
diff --git a/as/casl2lib/outl.casl b/as/casl2lib/outl.casl
deleted file mode 100644 (file)
index a7a6d15..0000000
+++ /dev/null
@@ -1,109 +0,0 @@
-;;; GR1に格納された値を、10進数の整数値(0〜65535)として表示
-OUTL    START
-        RPUSH
-        LAD     GR2,10          ; GR2に10進数の「10」を格納。
-        LAD     GR0,0           ; GR0 <- 0
-        XOR     GR4,GR4         ; 整数値の長さ
-        AND     GR1,GR1         ; GR1をテスト
-        JZE     ZERO            ; GR1が0の場合、ZEROにジャンプ
-STI     CPL     GR1,GR2         ; ループ先頭。(GR1 < GR2)の場合は、ループ脱出
-        JMI     STLST           ; ↓
-        CALL    DIVL            ; GR1とGR2の、商をGR0、剰余をGR3に格納
-        LD      GR1,GR3         ; GR1にGR3をコピー
-        LD      GR1,NCHAR,GR1   ; GR1を文字に変換
-        ST      GR1,STR,GR4     ; (STR + GR4) <- GR1
-        LAD     GR4,1,GR4       ; GR4 <- GR4 + 1
-        LD      GR1,GR0         ; GR0をGR1にコピー
-        JUMP    STI             ; ループ終端
-STLST   LD      GR1,NCHAR,GR1   ; GR1を文字に変換
-        ST      GR1,STR,GR4     ; (STR + GR4) <- GR1
-        LAD     GR4,1,GR4       ; GR4 <- GR4 + 1
-        JUMP    PRT             ; PRTにジャンプ
-ZERO    LD      GR1,NCHAR       ; 「0」をSTR領域に格納
-        ST      GR1,STR,GR4     ; ↓ (STR + GR4) <- GR1
-        LAD     GR4,1,GR4       ; ↓ GR4 <- GR4 + 1
-PRT     ST      GR4,LEN         ; LEN <- GR4
-        LD      GR2,LEN         ; GR2にLENの値を格納
-        LAD     GR1,STR         ; GR1に文字列のアドレスを格納
-        CALL    REV             ; 文字列を逆順に並べ替え
-        OUT     STR,LEN         ; 文字列を出力
-        RPOP
-        RET
-STR     DS      17
-LEN     DS      1
-NCHAR   DC      '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ'
-        END
-;;; 0〜65535の範囲にある正数の割算(筆算方式)を行う
-;;; 入力 GR1:被除数 GR2:除数
-;;; 出力 GR0:商 GR3:剰余
-;;; (GR2 = 0)の場合、GR0 GR3とも0になり、オーバーフロー
-DIVL    START
-        PUSH    0,GR1
-        PUSH    0,GR2
-        PUSH    0,GR4
-        XOR     GR0,GR0         ; GR0:商 初期化
-        XOR     GR3,GR3         ; GR3:剰余 初期化
-        AND     GR2,GR2         ; (GR2 = 0)の場合、DIVZEROへジャンプ
-        JZE     DIVZERO         ; ↓
-        AND     GR1,GR1         ; (GR1 = 0)の場合、FINへジャンプ
-        JZE     FIN             ; ↓
-        ST      GR2,Y           ; YにGR2の初期値を保存
-        LAD     GR4,1           ; GR4:対象ビットのインデックス 初期化
-SL      CPL     GR2,GR1         ; ループ先頭。(GR2 > GR1)の場合、LOOPへループ脱出
-        JPL     LOOP            ; ↓
-        SLL     GR4,1           ; GR4を1回左シフト
-        ST      GR2,TMP         ; GR2の値をTMPに退避
-        SLL     GR2,1           ; GR2を1回左シフト
-        JOV     YOV             ; オーバーフローの場合は、YOVへジャンプ
-        JUMP    SL              ; ループ終端
-YOV     LD      GR2,TMP         ; GR2の値をTMPから復元
-        SRL     GR4,1           ; GR4を1回右シフト
-        JUMP    LPIN            ; LPINへジャンプ
-LOOP    SRL     GR4,1           ; ループ先頭。GR4を1回右シフト
-        JZE     SETMOD          ; (GR4 = 0)の場合、SETMODへループ脱出
-        SRL     GR2,1           ; GR2を1回右シフト
-        CPL     GR1,Y           ; (GR1 < Y)の場合、SETMODへループ脱出
-        JMI     SETMOD          ; ↓
-        CPL     GR1,GR2         ; (GR1 < GR2)の場合、ループ先頭へジャンプ
-        JMI     LOOP            ; ↓
-LPIN    SUBL    GR1,GR2         ; GR1 <- GR1 - GR2
-        ADDL    GR0,GR4         ; GR0 <- GR0 + GR4
-        JUMP    LOOP            ; ループ終端
-DIVZERO LAD     GR3,#8000       ; 強制的にオーバーフローを発生させ、GR3 <- 0
-        SLL     GR3,1           ; ↓
-        JUMP    FIN             ; FIN へジャンプ
-SETMOD  LD      GR3,GR1         ; GR3 <- GR1。剰余の設定
-FIN     POP     GR4
-        POP     GR2
-        POP     GR1
-        RET
-Y       DS      1
-TMP     DS      1
-        END
-;;; メモリー上にある指定されたアドレス、長さの文字列を逆順に並べ替える
-;;;     例: 12345 -> 54321、54321- -> -12345
-;;; 入力 GR1:文字列のアドレス GR2:文字列の長さ
-;;; 出力 (同上)
-REV     START
-        RPUSH
-        LAD     GR3,0           ; GR3の初期化
-PU      CPL     GR3,GR2         ; ループ先頭。(GR3 = GR2)の場合、ループ脱出
-        JZE     NEXT            ; ↓
-        LD      GR4,GR1         ; GR4 <- GR1
-        ADDL    GR4,GR3         ; GR4 <- GR4 + GR3
-        LD      GR5,0,GR4       ; GR5 <- GR4アドレスの値
-        PUSH    0,GR5           ; GR5をプッシュ
-        LAD     GR3,1,GR3       ; GR3 <- GR3 + 1
-        JUMP    PU              ; ループ終端
-NEXT    LAD     GR3,0           ; GR3の初期化
-PO      CPL     GR3,GR2         ; ループ先頭。(GR3 = GR2)の場合、ループ脱出
-        JZE     FIN             ; ↓
-        POP     GR5             ; GR5にポップ
-        LD      GR4,GR1         ; GR4にGR1の値をコピー
-        ADDL    GR4,GR3         ; GR4 <- GR4 + GR3
-        ST      GR5,0,GR4       ; GR4のアドレス <- GR5の値
-        LAD     GR3,1,GR3       ; GR3 <- GR3 + 1
-        JUMP    PO              ; ループ終端
-FIN     RPOP
-        RET
-        END
diff --git a/as/casl2lib/src_inl/Makefile b/as/casl2lib/src_inl/Makefile
deleted file mode 100644 (file)
index 20a23ff..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-TARGET = ../inl.casl
-SRCFILE = inl_main.casl ../mull.casl
-include ../BUILD.mk
diff --git a/as/casl2lib/src_l2str/l2str_main.casl b/as/casl2lib/src_l2str/l2str_main.casl
new file mode 100644 (file)
index 0000000..3623c72
--- /dev/null
@@ -0,0 +1,45 @@
+;;; 数値を10進数の整数を表す文字列として格納
+;;; 入力 GR1: 数値(0〜65535) GR2: 文字列を格納するアドレス
+;;; 出力 GR0: 文字列の長さ
+L2STR   START
+        PUSH    0,GR1
+        PUSH    0,GR3
+        PUSH    0,GR4
+        LAD     GR2,10          ; GR2に10進数の「10」を格納。
+        LAD     GR0,0           ; GR0 <- 0
+        LD      GR4,GR2         ; GR4 <- GR2
+        AND     GR1,GR1         ; GR1をテスト
+        JZE     ZERO            ; GR1が0の場合、ZEROにジャンプ
+        PUSH    0,GR2           ; GR2を退避
+        LAD     GR2,BASE        ; GR2 <- BASE:基数10
+STI     CPL     GR1,GR2         ; ループ先頭。(GR1 < GR2)の場合は、ループ脱出
+        JMI     STLST           ; ↓
+        CALL    DIVL            ; GR1とGR2の、商をGR0、剰余をGR3に格納
+        LD      GR1,GR3         ; GR1にGR3をコピー
+        LD      GR1,NCHAR,GR1   ; GR1を文字に変換
+        ST      GR1,0,GR4       ; GR4のアドレス <- GR1
+        LAD     GR4,1,GR4       ; GR4 <- GR4 + 1
+        LD      GR1,GR0         ; GR1 <- GR0:商
+        JUMP    STI             ; ループ終端
+STLST   LD      GR1,NCHAR,GR1   ; GR1を文字に変換
+        ST      GR1,0,GR4       ; GR4のアドレス <- GR1
+        LAD     GR4,1,GR4       ; GR4 <- GR4 + 1
+        POP     GR2             ; GR2を復元
+        SUBL    GR4,GR2         ; GR4 <- (GR4 - GR2):文字列の長さ
+        JUMP    RV              ; RVへジャンプ
+ZERO    LD      GR1,NCHAR       ; 「0」をSTR領域に格納
+        ST      GR1,0,GR4       ; ↓ GR4のアドレス <- GR1
+        LAD     GR4,1,GR4       ; ↓ GR4 <- GR4 + 1
+RV      LD      GR1,GR2         ; 文字列を逆順に並べ替え
+        LD      GR2,GR4         ; ↓
+        CALL    REV             ; ↓
+FIN     LD      GR0,GR2         ; GR0 <- GR2
+        LD      GR2,GR1         ; GR2 <- GR1
+        POP     GR4
+        POP     GR3
+        POP     GR1
+        RET
+BASE    DC      10
+LEN     DS      1
+NCHAR   DC      '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ'
+        END
diff --git a/as/casl2lib/src_mula/Makefile b/as/casl2lib/src_mula/Makefile
deleted file mode 100644 (file)
index ab620ae..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-TARGET = ../mula.casl
-SRCFILE = mula_main.casl ../mull.casl
-include ../BUILD.mk
diff --git a/as/casl2lib/src_outa/Makefile b/as/casl2lib/src_outa/Makefile
deleted file mode 100644 (file)
index f44a6d7..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-TARGET = ../outa.casl
-SRCFILE = outa_main.casl ../divl.casl ../rev.casl ../abs.casl
-include ../BUILD.mk
diff --git a/as/casl2lib/src_outb/Makefile b/as/casl2lib/src_outb/Makefile
deleted file mode 100644 (file)
index 4daa88c..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-TARGET = ../outb.casl
-SRCFILE = outb_main.casl ../divl.casl ../rev.casl
-include ../BUILD.mk
diff --git a/as/casl2lib/src_outl/Makefile b/as/casl2lib/src_outl/Makefile
deleted file mode 100644 (file)
index 2c75dcb..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-TARGET = ../outl.casl
-SRCFILE = outl_main.casl ../divl.casl ../rev.casl
-include ../BUILD.mk
index 74da31d..881db90 100644 (file)
@@ -29,7 +29,7 @@ PRT     ST      GR4,LEN         ; LEN <- GR4
         OUT     STR,LEN         ; 文字列を出力
         RPOP
         RET
-STR     DS      17
+STR     DS      17              ; 符号付き2進数で表記した場合を想定
 LEN     DS      1
 NCHAR   DC      '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ'
         END
diff --git a/as/casl2lib/test/Test.log b/as/casl2lib/test/Test.log
deleted file mode 100644 (file)
index d993fbc..0000000
+++ /dev/null
@@ -1,13 +0,0 @@
-abs: Test Success 2010-02-14 09:43:43
-addl32: Test Success 2010-02-14 09:43:43
-divl: Test Success 2010-02-14 09:43:45
-inl: Test Success 2010-02-14 09:43:45
-minim: Test Failure 2010-02-14 09:43:45
-mula: Test Success 2010-02-14 09:43:46
-mull: Test Success 2010-02-14 09:43:47
-outa: Test Success 2010-02-14 09:43:47
-outb_call: Test Success 2010-02-12 01:13:06
-outd_q15_call: Test Success 2010-02-12 01:13:06
-outl_call: Test Success 2010-02-12 01:13:06
-rev_call: Test Success 2010-02-12 01:13:07
-sum_call: Test Success 2010-02-12 01:13:08
index 9c60439..f19f6b8 100644 (file)
@@ -1,4 +1,4 @@
-../../../../casl2 divl.casl ../../../../as/casl2lib/outl.casl
+../../../../casl2 -M640 divl.casl ../../../../as/casl2lib/outl.casl
 --------------------
 100
 0
index aa42833..068f49f 100644 (file)
@@ -1,6 +1,7 @@
 YACASL2DIR= ../../../..
 CASL2 = $(YACASL2DIR)/casl2
+CASL2FLAG = -M640
 LIBDIR = $(YACASL2DIR)/as/casl2lib
 ASFILE = divl.casl $(LIBDIR)/outl.casl    # DIVLは、outl.caslに含まれる
-CMD = $(CASL2) $(ASFILE)
+CMD = $(CASL2) $(CASL2FLAG) $(ASFILE)
 include $(YACASL2DIR)/test/integration/casl2/TEST.mk
index c7e7298..e0c6218 100644 (file)
@@ -1,4 +1,4 @@
-../../../../casl2 inl.casl ../../../../as/casl2lib/inl.casl ../../../../as/casl2lib/outl.casl
+../../../../casl2 -M640 inl.casl ../../../../as/casl2lib/inl.casl ../../../../as/casl2lib/outl.casl
 0
 1
 2
index 661568e..ede7252 100644 (file)
@@ -1,7 +1,8 @@
 YACASL2DIR= ../../../..
 CASL2 = $(YACASL2DIR)/casl2
+CASL2FLAG = -M640
 LIBDIR = $(YACASL2DIR)/as/casl2lib
 ASFILE = inl.casl $(LIBDIR)/inl.casl $(LIBDIR)/outl.casl
 IN = teststr.txt
-CMD = $(CASL2) $(ASFILE) <$(IN)
+CMD = $(CASL2) $(CASL2FLAG) $(ASFILE) <$(IN)
 include $(YACASL2DIR)/test/TEST.mk
index 8666054..5f2a4fd 100644 (file)
@@ -1,485 +1,3 @@
 ../../../../casl2 mull.casl ../../../../as/casl2lib/mull.casl ../../../../as/casl2lib/outl.casl
-0
-0
-0
---------------------
-0
-1
-0
---------------------
-0
-2
-0
---------------------
-0
-127
-0
---------------------
-0
-128
-0
---------------------
-0
-255
-0
---------------------
-0
-256
-0
---------------------
-0
-257
-0
---------------------
-0
-32767
-0
---------------------
-0
-32768
-0
---------------------
-0
-65535
-0
---------------------
-1
-0
-0
---------------------
-1
-1
-1
---------------------
-1
-2
-2
---------------------
-1
-127
-127
---------------------
-1
-128
-128
---------------------
-1
-255
-255
---------------------
-1
-256
-256
---------------------
-1
-257
-257
---------------------
-1
-32767
-32767
---------------------
-1
-32768
-32768
---------------------
-1
-65535
-65535
---------------------
-2
-0
-0
---------------------
-2
-1
-2
---------------------
-2
-2
-4
---------------------
-2
-127
-254
---------------------
-2
-128
-256
---------------------
-2
-255
-510
---------------------
-2
-256
-512
---------------------
-2
-257
-514
---------------------
-2
-32767
-65534
---------------------
-2
-32768
-Warning: overflow
---------------------
-2
-65535
-Warning: overflow
---------------------
-127
-0
-0
---------------------
-127
-1
-127
---------------------
-127
-2
-254
---------------------
-127
-127
-16129
---------------------
-127
-128
-16256
---------------------
-127
-255
-32385
---------------------
-127
-256
-32512
---------------------
-127
-257
-32639
---------------------
-127
-32767
-Warning: overflow
---------------------
-127
-32768
-Warning: overflow
---------------------
-127
-65535
-Warning: overflow
---------------------
-128
-0
-0
---------------------
-128
-1
-128
---------------------
-128
-2
-256
---------------------
-128
-127
-16256
---------------------
-128
-128
-16384
---------------------
-128
-255
-32640
---------------------
-128
-256
-32768
---------------------
-128
-257
-32896
---------------------
-128
-32767
-Warning: overflow
---------------------
-128
-32768
-Warning: overflow
---------------------
-128
-65535
-Warning: overflow
---------------------
-255
-0
-0
---------------------
-255
-1
-255
---------------------
-255
-2
-510
---------------------
-255
-127
-32385
---------------------
-255
-128
-32640
---------------------
-255
-255
-65025
---------------------
-255
-256
-65280
---------------------
-255
-257
-65535
---------------------
-255
-32767
-Warning: overflow
---------------------
-255
-32768
-Warning: overflow
---------------------
-255
-65535
-Warning: overflow
---------------------
-256
-0
-0
---------------------
-256
-1
-256
---------------------
-256
-2
-512
---------------------
-256
-127
-32512
---------------------
-256
-128
-32768
---------------------
-256
-255
-65280
---------------------
-256
-256
-Warning: overflow
---------------------
-256
-257
-Warning: overflow
---------------------
-256
-32767
-Warning: overflow
---------------------
-256
-32768
-Warning: overflow
---------------------
-256
-65535
-Warning: overflow
---------------------
-257
-0
-0
---------------------
-257
-1
-257
---------------------
-257
-2
-514
---------------------
-257
-127
-32639
---------------------
-257
-128
-32896
---------------------
-257
-255
-65535
---------------------
-257
-256
-Warning: overflow
---------------------
-257
-257
-Warning: overflow
---------------------
-257
-32767
-Warning: overflow
---------------------
-257
-32768
-Warning: overflow
---------------------
-257
-65535
-Warning: overflow
---------------------
-32767
-0
-0
---------------------
-32767
-1
-32767
---------------------
-32767
-2
-65534
---------------------
-32767
-127
-Warning: overflow
---------------------
-32767
-128
-Warning: overflow
---------------------
-32767
-255
-Warning: overflow
---------------------
-32767
-256
-Warning: overflow
---------------------
-32767
-257
-Warning: overflow
---------------------
-32767
-32767
-Warning: overflow
---------------------
-32767
-32768
-Warning: overflow
---------------------
-32767
-65535
-Warning: overflow
---------------------
-32768
-0
-0
---------------------
-32768
-1
-32768
---------------------
-32768
-2
-Warning: overflow
---------------------
-32768
-127
-Warning: overflow
---------------------
-32768
-128
-Warning: overflow
---------------------
-32768
-255
-Warning: overflow
---------------------
-32768
-256
-Warning: overflow
---------------------
-32768
-257
-Warning: overflow
---------------------
-32768
-32767
-Warning: overflow
---------------------
-32768
-32768
-Warning: overflow
---------------------
-32768
-65535
-Warning: overflow
---------------------
-65535
-0
-0
---------------------
-65535
-1
-65535
---------------------
-65535
-2
-Warning: overflow
---------------------
-65535
-127
-Warning: overflow
---------------------
-65535
-128
-Warning: overflow
---------------------
-65535
-255
-Warning: overflow
---------------------
-65535
-256
-Warning: overflow
---------------------
-65535
-257
-Warning: overflow
---------------------
-65535
-32767
-Warning: overflow
---------------------
-65535
-32768
-Warning: overflow
---------------------
-65535
-65535
-Warning: overflow
---------------------
+Assemble error - 119: 512: out of COMET II memory
+../../../../as/casl2lib/outl.casl:  143:        LAD     GR3,1,GR3       ; GR3 <- GR3 + 1