From e46d8634095f166ac28f03b17a8e0676e6c275a0 Mon Sep 17 00:00:00 2001 From: j8takagi Date: Thu, 22 Nov 2012 10:17:46 +0900 Subject: [PATCH] =?utf8?q?PBM=E3=83=95=E3=82=A1=E3=82=A4=E3=83=AB=E5=87=BA?= =?utf8?q?=E5=8A=9B=E6=A9=9F=E8=83=BD=E3=82=92=E8=BF=BD=E5=8A=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit --- as/app/pbm/.gitignore | 1 + as/app/pbm/call_outpbm.casl | 5 +++ as/app/pbm/call_pbm16.casl | 21 ++++++++++ as/app/pbm/call_rotate.casl | 32 +++++++++++++++ as/app/pbm/call_rotate3.casl | 33 +++++++++++++++ as/app/pbm/five.casl | 28 +++++++++++++ as/app/pbm/pbm16.casl | 31 ++++++++++++++ as/app/pbm/rotate.casl | 29 +++++++++++++ as/app/pbm/rotate2.casl | 29 +++++++++++++ as/app/pbm/rotate3.casl | 50 +++++++++++++++++++++++ as/casl2lib/outb_w.casl | 43 +++++++++++++++++++ as/casl2lib/outpbm.casl | 36 ++++++++++++++++ as/fe_tests/2011_06/Q12.txt | 14 +++++++ as/fe_tests/2011_06/call_rotate.casl | 5 +++ as/fe_tests/2011_06/rotate.casl | 22 ++++++++++ test/system/casl2/lib_outb_w/0.txt | 34 +++++++++++++++ test/system/casl2/lib_outb_w/Makefile | 2 + test/system/casl2/lib_outb_w/cmd | 1 + test/system/casl2/lib_outb_w/cmd0 | 1 + test/system/casl2/lib_outb_w/outb_w.casl | 22 ++++++++++ test/system/casl2/lib_outb_w/outb_w0.casl | 13 ++++++ 21 files changed, 452 insertions(+) create mode 100644 as/app/pbm/.gitignore create mode 100644 as/app/pbm/call_outpbm.casl create mode 100644 as/app/pbm/call_pbm16.casl create mode 100644 as/app/pbm/call_rotate.casl create mode 100644 as/app/pbm/call_rotate3.casl create mode 100644 as/app/pbm/five.casl create mode 100644 as/app/pbm/pbm16.casl create mode 100644 as/app/pbm/rotate.casl create mode 100644 as/app/pbm/rotate2.casl create mode 100644 as/app/pbm/rotate3.casl create mode 100644 as/casl2lib/outb_w.casl create mode 100644 as/casl2lib/outpbm.casl create mode 100644 as/fe_tests/2011_06/Q12.txt create mode 100644 as/fe_tests/2011_06/call_rotate.casl create mode 100644 as/fe_tests/2011_06/rotate.casl create mode 100644 test/system/casl2/lib_outb_w/0.txt create mode 100644 test/system/casl2/lib_outb_w/Makefile create mode 100755 test/system/casl2/lib_outb_w/cmd create mode 100755 test/system/casl2/lib_outb_w/cmd0 create mode 100644 test/system/casl2/lib_outb_w/outb_w.casl create mode 100644 test/system/casl2/lib_outb_w/outb_w0.casl diff --git a/as/app/pbm/.gitignore b/as/app/pbm/.gitignore new file mode 100644 index 0000000..a4195d0 --- /dev/null +++ b/as/app/pbm/.gitignore @@ -0,0 +1 @@ +*.pbm diff --git a/as/app/pbm/call_outpbm.casl b/as/app/pbm/call_outpbm.casl new file mode 100644 index 0000000..35d3d0e --- /dev/null +++ b/as/app/pbm/call_outpbm.casl @@ -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 index 0000000..4846fbd --- /dev/null +++ b/as/app/pbm/call_pbm16.casl @@ -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 index 0000000..322fd31 --- /dev/null +++ b/as/app/pbm/call_rotate.casl @@ -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 index 0000000..67a2a4c --- /dev/null +++ b/as/app/pbm/call_rotate3.casl @@ -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 index 0000000..74d9d0e --- /dev/null +++ b/as/app/pbm/five.casl @@ -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 index 0000000..2b9404a --- /dev/null +++ b/as/app/pbm/pbm16.casl @@ -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 index 0000000..4d24664 --- /dev/null +++ b/as/app/pbm/rotate.casl @@ -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 index 0000000..a647c83 --- /dev/null +++ b/as/app/pbm/rotate2.casl @@ -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 index 0000000..b40ad07 --- /dev/null +++ b/as/app/pbm/rotate3.casl @@ -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 index 0000000..d64bff6 --- /dev/null +++ b/as/casl2lib/outb_w.casl @@ -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 index 0000000..70803c3 --- /dev/null +++ b/as/casl2lib/outpbm.casl @@ -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 index 0000000..fef9a99 --- /dev/null +++ b/as/fe_tests/2011_06/Q12.txt @@ -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 index 0000000..375e5db --- /dev/null +++ b/as/fe_tests/2011_06/call_rotate.casl @@ -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 index 0000000..6d33995 --- /dev/null +++ b/as/fe_tests/2011_06/rotate.casl @@ -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 index 0000000..028cc06 --- /dev/null +++ b/test/system/casl2/lib_outb_w/0.txt @@ -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 index 0000000..b6dac59 --- /dev/null +++ b/test/system/casl2/lib_outb_w/Makefile @@ -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 index 0000000..1ad83b2 --- /dev/null +++ b/test/system/casl2/lib_outb_w/cmd @@ -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 index 0000000..f153b05 --- /dev/null +++ b/test/system/casl2/lib_outb_w/cmd0 @@ -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 index 0000000..9ba7189 --- /dev/null +++ b/test/system/casl2/lib_outb_w/outb_w.casl @@ -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 index 0000000..ad8c17f --- /dev/null +++ b/test/system/casl2/lib_outb_w/outb_w0.casl @@ -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 -- 2.18.0