PBMファイル出力機能を追加
authorj8takagi <j8takagi@nifty.com>
Thu, 22 Nov 2012 01:17:46 +0000 (10:17 +0900)
committerj8takagi <j8takagi@nifty.com>
Thu, 22 Nov 2012 01:50:36 +0000 (10:50 +0900)
21 files changed:
as/app/pbm/.gitignore [new file with mode: 0644]
as/app/pbm/call_outpbm.casl [new file with mode: 0644]
as/app/pbm/call_pbm16.casl [new file with mode: 0644]
as/app/pbm/call_rotate.casl [new file with mode: 0644]
as/app/pbm/call_rotate3.casl [new file with mode: 0644]
as/app/pbm/five.casl [new file with mode: 0644]
as/app/pbm/pbm16.casl [new file with mode: 0644]
as/app/pbm/rotate.casl [new file with mode: 0644]
as/app/pbm/rotate2.casl [new file with mode: 0644]
as/app/pbm/rotate3.casl [new file with mode: 0644]
as/casl2lib/outb_w.casl [new file with mode: 0644]
as/casl2lib/outpbm.casl [new file with mode: 0644]
as/fe_tests/2011_06/Q12.txt [new file with mode: 0644]
as/fe_tests/2011_06/call_rotate.casl [new file with mode: 0644]
as/fe_tests/2011_06/rotate.casl [new file with mode: 0644]
test/system/casl2/lib_outb_w/0.txt [new file with mode: 0644]
test/system/casl2/lib_outb_w/Makefile [new file with mode: 0644]
test/system/casl2/lib_outb_w/cmd [new file with mode: 0755]
test/system/casl2/lib_outb_w/cmd0 [new file with mode: 0755]
test/system/casl2/lib_outb_w/outb_w.casl [new file with mode: 0644]
test/system/casl2/lib_outb_w/outb_w0.casl [new file with mode: 0644]

diff --git a/as/app/pbm/.gitignore b/as/app/pbm/.gitignore
new file mode 100644 (file)
index 0000000..a4195d0
--- /dev/null
@@ -0,0 +1 @@
+*.pbm
diff --git a/as/app/pbm/call_outpbm.casl b/as/app/pbm/call_outpbm.casl
new file mode 100644 (file)
index 0000000..35d3d0e
--- /dev/null
@@ -0,0 +1,5 @@
+MAIN    START
+        LAD     GR2,16
+        LAD     GR3,16
+        CALL    OUTPBM
+        END
diff --git a/as/app/pbm/call_pbm16.casl b/as/app/pbm/call_pbm16.casl
new file mode 100644 (file)
index 0000000..4846fbd
--- /dev/null
@@ -0,0 +1,21 @@
+MAIN    START
+        LAD     GR1,GRAPH
+        CALL    PBM16
+        RET
+GRAPH   DC      #FFFC
+        DC      #FFFC
+        DC      #FFFC
+        DC      #0700
+        DC      #0700
+        DC      #0700
+        DC      #FFFC
+        DC      #FFFC
+        DC      #FFFC
+        DC      #071C
+        DC      #071C
+        DC      #071C
+        DC      #FFFF
+        DC      #FFFF
+        DC      #FFFF
+        DC      #0000
+        END
diff --git a/as/app/pbm/call_rotate.casl b/as/app/pbm/call_rotate.casl
new file mode 100644 (file)
index 0000000..322fd31
--- /dev/null
@@ -0,0 +1,32 @@
+;;; casl2 call_rotate.casl ../../casl2lib/outb_w.casl ../../casl2lib/divl.casl ../../casl2lib/rev.casl rotate.casl | cat 16_16.pbm - >five_rot.pbm
+MAIN    START
+        LAD     GR1,ORG
+        LAD     GR2,RES
+        CALL    ROTATE
+        LAD     GR2,0
+LOOP    LD      GR1,RES,GR2
+        CALL    OUTB
+        LAD     GR2,1,GR2
+        CPA     GR2,HEIGHT
+        JZE     FIN
+        JUMP    LOOP
+FIN     RET
+ORG     DC      #FFFC
+        DC      #FFFC
+        DC      #FFFC
+        DC      #0700
+        DC      #0700
+        DC      #0700
+        DC      #FFFC
+        DC      #FFFC
+        DC      #FFFC
+        DC      #071C
+        DC      #071C
+        DC      #071C
+        DC      #FFFF
+        DC      #FFFF
+        DC      #FFFF
+        DC      #0000
+HEIGHT  DC      16
+RES     DS      16
+        END
diff --git a/as/app/pbm/call_rotate3.casl b/as/app/pbm/call_rotate3.casl
new file mode 100644 (file)
index 0000000..67a2a4c
--- /dev/null
@@ -0,0 +1,33 @@
+;;; casl2 call_rotate3.casl ../../casl2lib/outb_w.casl ../../casl2lib/divl.casl ../../casl2lib/rev.casl rotate3.casl | cat 16_16.pbm - >five_rot3.pbm
+MAIN    START
+        LAD     GR1,ORG
+        LAD     GR2,RES
+        LAD     GR3,8
+        CALL    ROTATE
+        LAD     GR2,0
+LOOP    LD      GR1,RES,GR2
+        CALL    OUTB
+        LAD     GR2,1,GR2
+        CPA     GR2,HEIGHT
+        JZE     FIN
+        JUMP    LOOP
+FIN     RET
+ORG     DC      #FFFC
+        DC      #FFFC
+        DC      #FFFC
+        DC      #0700
+        DC      #0700
+        DC      #0700
+        DC      #FFFC
+        DC      #FFFC
+        DC      #FFFC
+        DC      #071C
+        DC      #071C
+        DC      #071C
+        DC      #FFFF
+        DC      #FFFF
+        DC      #FFFF
+        DC      #0000
+HEIGHT  DC      16
+RES     DS      16
+        END
diff --git a/as/app/pbm/five.casl b/as/app/pbm/five.casl
new file mode 100644 (file)
index 0000000..74d9d0e
--- /dev/null
@@ -0,0 +1,28 @@
+;;; casl2 outl_call.casl outl.casl
+MAIN    START
+        LAD     GR2,0
+LOOP    LD      GR1,VAL,GR2
+        CALL    OUTB
+        LAD     GR2,1,GR2
+        CPA     GR2,HEIGHT
+        JZE     FIN
+        JUMP    LOOP
+FIN     RET
+VAL     DC      #FFFC
+        DC      #FFFC
+        DC      #FFFC
+        DC      #0700
+        DC      #0700
+        DC      #0700
+        DC      #FFFC
+        DC      #FFFC
+        DC      #FFFC
+        DC      #071C
+        DC      #071C
+        DC      #071C
+        DC      #FFFF
+        DC      #FFFF
+        DC      #FFFF
+        DC      #0000
+HEIGHT  DC      16
+        END
diff --git a/as/app/pbm/pbm16.casl b/as/app/pbm/pbm16.casl
new file mode 100644 (file)
index 0000000..2b9404a
--- /dev/null
@@ -0,0 +1,31 @@
+;;; PBM16
+;;; GR1で指定されたアドレス以降のメモリを 16×16 の
+;;; 白黒ビットマップ画像データ(白:0 黒:1)とみなし、
+;;; PBM画像ファイルとして出力
+;;; 入力: GR1 画像データの先頭アドレス
+;;; 依存副プログラム: outl.casl
+PBM16   START
+        PUSH    0,GR1
+        PUSH    0,GR2
+        ST      GR1,BEG
+        OUT     L1,L1LEN
+        OUT     L2,L2LEN
+        XOR     GR2,GR2
+LOOP    CPL     GR2,HEIGHT
+        JZE     FIN
+        LD      GR1,BEG
+        ADDL    GR1,GR2
+        LD      GR1,0,GR1
+        CALL    OUTB
+        LAD     GR2,1,GR2
+        JUMP    LOOP
+FIN     POP     GR2
+        POP     GR1
+        RET
+L1      DC      'P1'
+L1LEN   DC      2
+L2      DC      '16 16'
+L2LEN   DC      5
+HEIGHT  DC      16
+BEG     DS      1
+        END
diff --git a/as/app/pbm/rotate.casl b/as/app/pbm/rotate.casl
new file mode 100644 (file)
index 0000000..4d24664
--- /dev/null
@@ -0,0 +1,29 @@
+;; 副プログラム ROTATE
+;; 連続する16語に格納した16 × 16 ドットの白黒の図形を,時計回りに90度回転する
+;; 1ドットを1ビットで表し,白は0,黒は1が格納されている。
+;;  1. 図形を表す 16 語の先頭アドレスは GR1 に設定されて,主プログラムから渡される。
+;;  2. 回転した結果の図形を格納する領域の先頭アドレスは GR2 に設定されて, 主プログラムから渡される。
+;;  3. 元の図形と回転した図形は,異なる領域に格納される。
+;;  4. 副プログラムから戻るとき,汎用レジスタ GR1 ~ GR7 の内容は元に戻す。
+ROTATE  START
+        RPUSH
+        LD     GR3,=16
+LOOP1   LD     GR4,=16
+        LD     GR5,GR2         ; GR5 ← 結果の領域のアドレス
+        LD     GR6,0,GR1       ; GR6 ← 元の図形の先頭語の内容
+LOOP2   LD     GR7,0,GR5       ; GR7 ← 結果の領域の1語の内容
+        SRL    GR7,1
+        SLL    GR6,1
+        JOV    ON
+        JUMP   CONT
+ON      OR     GR7,=#8000
+CONT    ST     GR7,0,GR5       ; 処理した1語を結果の領域に格納
+        LAD    GR5,1,GR5
+        SUBA   GR4,=1
+        JNZ    LOOP2
+        LAD    GR1,1,GR1
+        SUBA   GR3,=1
+        JNZ    LOOP1
+        RPOP
+        RET
+        END
diff --git a/as/app/pbm/rotate2.casl b/as/app/pbm/rotate2.casl
new file mode 100644 (file)
index 0000000..a647c83
--- /dev/null
@@ -0,0 +1,29 @@
+;; 副プログラム ROTATE
+;; 連続する16語に格納した16 × 16 ドットの白黒の図形を,時計回りに90度回転する
+;; 1ドットを1ビットで表し,白は0,黒は1が格納されている。
+;;  1. 図形を表す 16 語の先頭アドレスは GR1 に設定されて,主プログラムから渡される。
+;;  2. 回転した結果の図形を格納する領域の先頭アドレスは GR2 に設定されて, 主プログラムから渡される。
+;;  3. 元の図形と回転した図形は,異なる領域に格納される。
+;;  4. 副プログラムから戻るとき,汎用レジスタ GR1 ~ GR7 の内容は元に戻す。
+ROTATE  START
+        RPUSH
+        LD     GR3,=16
+LOOP1   LD     GR4,=16
+        LD     GR5,GR2         ; GR5 ← 結果の領域のアドレス
+        LD     GR6,0,GR1       ; GR6 ← 元の図形の先頭語の内容
+LOOP2   LD     GR7,0,GR5       ; GR7 ← 結果の領域の1語の内容
+        SRL    GR7,1
+        SRL    GR6,1
+        JOV    ON
+        JUMP   CONT
+ON      OR     GR7,=#8000
+CONT    ST     GR7,0,GR5       ; 処理した1語を結果の領域に格納
+        LAD    GR5,1,GR5
+        SUBA   GR4,=1
+        JNZ    LOOP2
+        LAD    GR1,1,GR1
+        SUBA   GR3,=1
+        JNZ    LOOP1
+        RPOP
+        RET
+        END
diff --git a/as/app/pbm/rotate3.casl b/as/app/pbm/rotate3.casl
new file mode 100644 (file)
index 0000000..b40ad07
--- /dev/null
@@ -0,0 +1,50 @@
+;; 副プログラム ROTATE
+;; 16 × 16 ドットの図形のうち 左上の n × n ドットの部分だけを時計回りに90度回転する
+;; 1ドットを1ビットで表し,白は0,黒は1が格納されている。
+;; 値 n ( 1 <= n <= 16 )は GR3 に設定されて主プログラムから渡される。
+;;  1. 図形を表す 16 語の先頭アドレスは GR1 に設定されて,主プログラムから渡される。
+;;  2. 回転した結果の図形を格納する領域の先頭アドレスは GR2 に設定されて, 主プログラムから渡される。
+;;  3. 元の図形と回転した図形は,異なる領域に格納される。
+;;  4. 副プログラムから戻るとき,汎用レジスタ GR1 ~ GR7 の内容は元に戻す。
+ROTATE  START
+        RPUSH
+        ST     GR3,N          ; nを保存
+        LD     GR4,GR3        ; GR4 ← n
+        LD     GR5,GR1        ; GR5 ← 元の図形のアドレス
+        LD     GR6,GR2        ; GR6 ← 結果の領域のアドレス
+        LD     GR7,=16
+        SUBA   GR7,GR3        ; GR7 ← 16-n
+SHIFT   LD     GR0,0,GR5      ; GR0 ← 元の図形の1語の内容
+        SLL    GR0,0,GR3
+        ST     GR0,0,GR6      ; 結果の領域 ← GR0
+        LAD    GR5,1,GR5      ; 元の図形の1語のアドレス更新
+        LAD    GR6,1,GR6      ; 結果の領域の1語のアドレス更新
+        SUBA   GR4,=1         ; n語処理済み?
+        JNZ    SHIFT
+COPY    SUBA   GR7,=1         ; 残りの語の内容を結果の領域に複写
+        JMI    LOOP1
+        LD     GR0,0,GR5
+        ST     GR0,0,GR6
+        LAD    GR5,1,GR5
+        LAD    GR6,1,GR6
+        JUMP   COPY
+N       DS     1
+LOOP1   LD     GR4,N
+        LD     GR5,GR2         ; GR5 ← 結果の領域のアドレス
+        LD     GR6,0,GR1       ; GR6 ← 元の図形の先頭語の内容
+LOOP2   LD     GR7,0,GR5       ; GR7 ← 結果の領域の1語の内容
+        SRL    GR7,1
+        SRL    GR6,1
+        JOV    ON
+        JUMP   CONT
+ON      OR     GR7,=#8000
+CONT    ST     GR7,0,GR5       ; 処理した1語を結果の領域に格納
+        LAD    GR5,1,GR5
+        SUBA   GR4,=1
+        JNZ    LOOP2
+        LAD    GR1,1,GR1
+        SUBA   GR3,=1
+        JNZ    LOOP1
+        RPOP
+        RET
+        END
diff --git a/as/casl2lib/outb_w.casl b/as/casl2lib/outb_w.casl
new file mode 100644 (file)
index 0000000..d64bff6
--- /dev/null
@@ -0,0 +1,43 @@
+;;; GR1に格納された値を、空白付きの2進数値として表示
+OUTB    START
+        RPUSH
+        LD      GR2,BIN         ; GR2に2進数の「2」を格納。
+        XOR     GR4,GR4         ; GR4: 2進数値の長さ
+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,SPC         ; GR1 <- SPC
+        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
+EMLOOP  CPL     GR4,DIG         ; ループ先頭。(GR4 = DIG)の場合は、ループ脱出
+        JZE     PRT             ; ↓
+        LD      GR1,SPC         ; GR1 <- SPC
+        ST      GR1,STR,GR4     ; (STR + GR4) <- GR1
+        LAD     GR4,1,GR4       ; GR4 <- GR4 + 1
+        LD      GR1,NCHAR       ; GR1 <- NCHAR:'0'
+        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      32
+LEN     DS      1
+BIN     DC      2
+NCHAR   DC      '01'
+SPC     DC      ' '
+DIG     DC      31
+        END
diff --git a/as/casl2lib/outpbm.casl b/as/casl2lib/outpbm.casl
new file mode 100644 (file)
index 0000000..70803c3
--- /dev/null
@@ -0,0 +1,36 @@
+;;; PBM画像ファイルを出力
+;;;   GR1: 画像ビット列の先頭アドレス
+;;;   GR2: 画像の幅
+;;;   GR3: 画像の高さ
+OUTPBM  START
+        OUT     HEADER,HLEN
+        PUSH    0,GR1
+        PUSH    0,GR2
+        PUSH    0,GR3
+        PUSH    0,GR4
+        XOR     GR4,GR4
+        LD      GR1,GR2
+        LAD     GR2,WIDTH
+        CALL    L2STR
+        LD      GR4,GR0
+        LAD     GR4,1,GR4
+        LD      GR1,SPC
+        ST      GR1,WIDTH,GR4
+        LAD     GR4,1,GR4
+        LD      GR1,GR3
+        LAD     GR2,WIDTH,GR4
+        CALL    L2STR
+        ADDL    GR4,GR0
+        ST      GR4,WHLEN
+        OUT     WIDTH,WHLEN
+        POP     GR4
+        POP     GR3
+        POP     GR2
+        POP     GR1
+        RET
+HEADER  DC      'P1'
+HLEN    DC      2
+WIDTH   DS      32
+SPC     DC      ' '
+HEIGHT  DS      1
+WHLEN   DS      1
diff --git a/as/fe_tests/2011_06/Q12.txt b/as/fe_tests/2011_06/Q12.txt
new file mode 100644 (file)
index 0000000..fef9a99
--- /dev/null
@@ -0,0 +1,14 @@
+次のアセンブラプログラムの説明及びプログラムを読んで,設問1~3に答えよ。
+
+〔プログラム1の説明〕
+
+ 連続する 16 語に格納した 16 × 16 ドットの白黒の図形を,時計回りに 90 度回転する 副プログラム ROTATE である。図形の回転の実行例を図1に示す。このとき,1ドットを1ビットで 表し,白は0,黒は1が格納されている。
+
+(1) 図形を表す 16 語の先頭アドレスは GR1 に設定されて,主プログラムから渡される。
+
+(2) 回転した結果の図形を格納する領域の先頭アドレスは GR2 に設定されて, 主プログラムから渡される。
+
+(3) 元の図形と回転した図形は,異なる領域に格納される。
+
+(4) 副プログラムから戻るとき,汎用レジスタ GR1 ~ GR7 の内容は元に戻す。
+
diff --git a/as/fe_tests/2011_06/call_rotate.casl b/as/fe_tests/2011_06/call_rotate.casl
new file mode 100644 (file)
index 0000000..375e5db
--- /dev/null
@@ -0,0 +1,5 @@
+        MAIN    START
+        RPUSH
+        LD      GR1,ORG
+        LAD     GR2,RES
+ORG     DC      #FC,#FC,#FC,#70,#70,#70,#FC,#FC,#FC,
diff --git a/as/fe_tests/2011_06/rotate.casl b/as/fe_tests/2011_06/rotate.casl
new file mode 100644 (file)
index 0000000..6d33995
--- /dev/null
@@ -0,0 +1,22 @@
+        ROTATE  START
+        RPUSH
+        LD     GR3,=16
+LOOP1   LD     GR4,=16
+        LD     GR5,GR2         ; GR5 ← 結果の領域のアドレス
+        LD     GR6,0,GR1       ; GR6 ← 元の図形の先頭語の内容
+LOOP2   LD     GR7,0,GR5       ; GR7 ← 結果の領域の1語の内容
+        SRL    GR7,1
+        SLL    GR6,1
+        JOV    ON
+        JUMP   CONT
+ON      OR     GR7,=#8000
+CONT    ST     GR7,0,GR5       ; 処理した1語を結果の領域に格納
+        LAD    GR5,1,GR5
+        SUBA   GR4,=1
+        JNZ    LOOP2
+        LAD    GR1,1,GR1
+        SUBA   GR3,=1
+        JNZ    LOOP1
+        RPOP
+        RET
+        END
diff --git a/test/system/casl2/lib_outb_w/0.txt b/test/system/casl2/lib_outb_w/0.txt
new file mode 100644 (file)
index 0000000..028cc06
--- /dev/null
@@ -0,0 +1,34 @@
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
+1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1
+1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0
+1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0
+1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0
+1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0
+1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0
+1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0
+1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0
+1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0
+1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0
+1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0
+1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0
+1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0
+1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0
+1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
diff --git a/test/system/casl2/lib_outb_w/Makefile b/test/system/casl2/lib_outb_w/Makefile
new file mode 100644 (file)
index 0000000..b6dac59
--- /dev/null
@@ -0,0 +1,2 @@
+include ../Define.mk
+include ../Test.mk
diff --git a/test/system/casl2/lib_outb_w/cmd b/test/system/casl2/lib_outb_w/cmd
new file mode 100755 (executable)
index 0000000..1ad83b2
--- /dev/null
@@ -0,0 +1 @@
+../../../../casl2 outb_w.casl ../../../../as/casl2lib/outb_w.casl ../../../../as/casl2lib/divl.casl ../../../../as/casl2lib/rev.casl
diff --git a/test/system/casl2/lib_outb_w/cmd0 b/test/system/casl2/lib_outb_w/cmd0
new file mode 100755 (executable)
index 0000000..f153b05
--- /dev/null
@@ -0,0 +1 @@
+../../../../casl2 outb_w0.casl ../../../../as/casl2lib/outb_w.casl ../../../../as/casl2lib/divl.casl ../../../../as/casl2lib/rev.casl
diff --git a/test/system/casl2/lib_outb_w/outb_w.casl b/test/system/casl2/lib_outb_w/outb_w.casl
new file mode 100644 (file)
index 0000000..9ba7189
--- /dev/null
@@ -0,0 +1,22 @@
+;;; casl2 outb_call.casl outb.casl
+MAIN    START
+        LAD     GR2,0
+LOOP    LD      GR1,VAL,GR2
+        CALL    OUTB
+        LAD     GR2,1,GR2
+        CPA     GR2,CNT
+        JZE     FIN
+        JUMP    LOOP
+FIN     RET
+VAL     DC      0
+        DC      #0001,#0002,#0004,#0008
+        DC      #0010,#0020,#0040,#0080
+        DC      #0100,#0200,#0400,#0800
+        DC      #1000,#2000,#4000,#7FFF
+        DC      #8000
+        DC      #8001,#C000,#E000,#F000
+        DC      #F800,#FC00,#FE00,#FF00
+        DC      #FF80,#FFC0,#FFE0,#FFF0
+        DC      #FFF8,#FFFC,#FFFE,#FFFF
+CNT     DC      34
+        END
diff --git a/test/system/casl2/lib_outb_w/outb_w0.casl b/test/system/casl2/lib_outb_w/outb_w0.casl
new file mode 100644 (file)
index 0000000..ad8c17f
--- /dev/null
@@ -0,0 +1,13 @@
+;;; casl2 outb_call.casl outb.casl
+MAIN    START
+        LAD     GR2,0
+LOOP    LD      GR1,VAL,GR2
+        CALL    OUTB
+        LAD     GR2,1,GR2
+        CPA     GR2,CNT
+        JZE     FIN
+        JUMP    LOOP
+FIN     RET
+VAL     DC      #0001,#8000
+CNT     DC      2
+        END