-.PHONY: all install-casl2lib uninstall-casl2lib
+.PHONY: all libfiles install-casl2lib uninstall-casl2lib
CAT := cat
+CASL2OUT := casl2 -M4096 -O
RMF := rm -f
RMDIR := rmdir
ECHO := echo
prefix ?= ~
casl2libdir ?= $(prefix)/share/casl2lib
-all: stdlib.casl abs.casl addl32.casl diva.casl divl.casl inl.casl l2str.casl max.casl minim.casl mula.casl mull.casl outa.casl outa_q15.casl outb.casl outb_w.casl outl.casl outl_q15.casl outpbm.casl pbm16.casl str2l.casl
+all: stdlib.casl libfiles
%.casl: src/%.casl
$(CAT) $^ >$@
+%.o: %.casl
+ $(CASL2OUT)$< $@
+
include casl2lib.dep
clean:
-stdlib.casl: src/stdlib.casl src/abs.casl src/addl32.casl src/diva.casl src/divl.casl src/inl.casl src/l2str.casl src/max.casl src/minim.casl src/mula.casl src/mull.casl src/outa.casl src/outa_q15.casl src/outb.casl src/outb_w.casl src/outl.casl src/outl_q15.casl src/outpbm.casl src/pbm16.casl src/rev.casl src/str2l.casl
+stdlib.casl: src/stdlib.casl src/abs.casl src/addl32.casl src/diva.casl src/divl.casl src/inl.casl src/l2str.casl src/max.casl src/minim.casl src/mula.casl src/mull.casl src/outa.casl src/outaq15.casl src/outb.casl src/outbw.casl src/outl.casl src/outlq15.casl src/outpbm.casl src/pbm16.casl src/rev.casl src/str2l.casl
+
+libfiles: abs.casl addl32.casl diva.casl divl.casl inl.casl l2str.casl max.casl minim.casl mula.casl mull.casl outa.casl outaq15.casl outb.casl outbw.casl outl.casl outlq15.casl outpbm.casl pbm16.casl str2l.casl
abs.casl: src/abs.casl
mull.casl: src/mull.casl
-outa.casl: src/outa.casl abs.casl divl.casl
+outa.casl: src/outa.casl abs.casl divl.casl rev.casl
-outa_q15.casl: src/outa_q15.casl abs.casl mull.casl
+outaq15.casl: src/outaq15.casl abs.casl mull.casl
outb.casl: src/outb.casl divl.casl rev.casl
-outb_w.casl: src/outb_w.casl divl.casl rev.casl
+outbw.casl: src/outbw.casl divl.casl rev.casl
outl.casl: src/outl.casl divl.casl rev.casl
-outl_q15.casl: src/outl_q15.casl mull.casl
+outlq15.casl: src/outlq15.casl mull.casl
outpbm.casl: src/outpbm.casl l2str.casl
pbm16.casl: src/pbm16.casl outb.casl
+rev.casl: src/rev.casl
+
str2l.casl: src/str2l.casl mull.casl
LENMAX DC 5
IBUF DS 5
END
-;;; 0〜65535の範囲にある正数のかけ算(筆算方式)を行う
-;;; 入力 GR1:被乗数 GR2:乗数
-;;; 出力 GR0:積の下位WORD GR3:積の上位WORD
-;;; 積が65535より大きい場合は、オーバーフロー
-MULL START
+;;; 10進数の整数を表す文字列を数値に変換
+;;; 数値の範囲は、0から65535
+;;; 入力 GR1: 文字列を格納するアドレス
+;;; GR2: 文字列の長さ。最大5けた
+;;; 出力 GR0: 数値
+;;; 文字列が最大長より大きい場合や数値以外の場合は、GR0は#FFFF、OFは1
+;;; 依存プログラム: MULL
+STR2L START
PUSH 0,GR4
PUSH 0,GR5
- XOR GR0,GR0 ; 積
- XOR GR3,GR3 ; 上位word
- XOR GR5,GR5 ; 上位wordの一時値
- AND GR1,GR1 ; (GR1 = 0)の場合、終了
- JZE CHKOV ; ↓
- AND GR2,GR2 ; (GR2 = 0)の場合、終了
- JZE CHKOV ; ↓
- LAD GR4,1 ; 対象ビット
-LOOP PUSH 0,GR4 ; ループ先頭。GR2のビット中でGR4が示すビットが0の場合、NEXTへジャンプ
- AND GR4,GR2 ; ↓
- POP GR4 ; ↓
- JZE NEXT1 ; ↓
- ADDL GR3,GR5 ; GR3 <- GR3 + GR5
- ADDL GR0,GR1 ; GR0 <- GR0 + GR1
- JOV AHB1 ; GR0がオーバーフローした場合、AHB1へジャンプ
- JUMP NEXT1 ; ↓
-AHB1 LAD GR3,1,GR3 ; GR3 <- GR3 + 1
-NEXT1 SLL GR4,1 ; GR4を1回左シフト
- JOV CHKOV ; ↓
- SLL GR5,1 ; GR5を1回左シフト
- CPL GR4,GR2 ; (GR4 > GR2)の場合、CHKOVへジャンプ
- JPL CHKOV ; ↓
- SLL GR1,1 ; GR1を1回左シフト
- JOV AHB2 ; GR1がオーバーフローした場合、AHBへジャンプ
- JUMP NEXT2 ; ↓
-AHB2 LAD GR5,1,GR5 ; GR5 <- GR5 + 1
-NEXT2 JUMP LOOP ; ループ終端
-CHKOV AND GR3,GR3 ; GR3 = 0の場合、終了
+ XOR GR0,GR0 ; GR0:初期化
+ AND GR2,GR2 ; (GR2 = 0)の場合、FINへジャンプ
JZE FIN ; ↓
- LAD GR4,#FFFF ; GR3 <> 0の場合、オーバーフロー
- SLL GR4,1 ; ↓
+ CPL GR2,MAXLEN ; (GR2 > MAXLEN)の場合、LENOVへジャンプ
+ JPL LENOV ; ↓
+ ST GR1,STR ; STR <- GR1 文字列の開始アドレス
+ ST GR2,LEN ; LEN <- GR2
+ LAD GR2,10 ; GR2:10進数の「10」
+ XOR GR4,GR4 ; GR4:値の一時格納
+ XOR GR5,GR5 ; GR5:インデックス
+STOL CPL GR5,LEN ; ループ先頭。(GR5 = LEN)の場合、ループ脱出
+ JZE CP ; ↓
+ LD GR1,STR ; GR1に、入力文字列中の次の桁を格納
+ ADDL GR1,GR5 ; ↓
+ LD GR1,0,GR1 ; ↓
+ CPL GR1,ZERO ; (GR1 < '0')の場合、NANへジャンプ
+ JMI NAN ; ↓
+ CPL GR1,NINE ; (GR1 > '9')の場合、NANへジャンプ
+ JPL NAN ; ↓
+ SUBL GR1,ZERO ; GR1の文字を、対応する数値に変換
+ ST GR5,NLEN ; GR5 <- LEN - NLEN - 1
+ LD GR5,LEN ; ↓
+ SUBA GR5,NLEN ; ↓
+MUL10 CPA GR5,=1 ; ループ先頭。GR1 <- 10 ** GR5
+ JZE NEXT ; (GR5 = 1)の場合、ループ脱出
+ JMI NEXT ; ↓
+ CALL MULL ; MULLを呼び出し、GR0 <- GR1 * GR2
+ JOV FIN ; ↓ オーバーフロー時は、プログラム終端へジャンプ
+ LD GR1,GR0 ; GR1 <- GR0
+ LAD GR5,-1,GR5 ; GR5 <- GR5 -1
+ JUMP MUL10 ; ループ終端へジャンプ
+NEXT LD GR5,NLEN ; GR5 <- NLEN。復元
+ ADDL GR4,GR1 ; GR4 <- GR4 + GR1
+ JOV FIN ; ↓
+ LAD GR5,1,GR5 ; GR5 <- GR5 + 1
+ JUMP STOL ; ループ終端
+NAN LAD GR2,#FFFF ; GR2 <- #FFFF
+ JUMP FIN ; FINへジャンプ
+CP LD GR1,GR4 ; GR0 <- GR4
+ LD GR0,LEN ; GR0 <- LEN
+ JUMP FIN ; プログラム終端へジャンプ
+LENOV LAD GR0,#FFFF ; 文字列が最大長より大きい場合、GR0 <- #FFFF
+ SRA GR0,1 ; ↓ オーバーフロー発生
FIN POP GR5
POP GR4
RET
+ZERO DC '0'
+NINE DC '9'
+MAXLEN DC 5 ; 文字列の最大長
+STR DS 1
+LEN DS 1
+NLEN DS 1
END
;;; 0〜65535の範囲にある正数のかけ算(筆算方式)を行う
;;; 入力 GR1:被乗数 GR2:乗数
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
+++ /dev/null
-;; GR1に格納された値を、10進数の符号付き小数値として表示
-OUTAQ15 START
- RPUSH
- LAD GR2,10 ; GR2に10進数の「10」を格納
- XOR GR4,GR4 ; 整数値の長さ
- XOR GR3,GR3 ; 出力する文字を一時的に格納
- AND GR1,GR1 ; GR1の符号をチェック
- JPL STDN ; ↓ GR1が正数の場合、STDNにジャンプ
- LD GR3,='-' ; ↓ GR1が負数の場合、「-」をSTR領域に格納
- ST GR3,STR ; ↓ ↓
- LAD GR4,1,GR4 ; ↓ ↓ GR4 <- GR4 + 1
- CPA GR1,=#8000 ; (GR1 = #8000)の場合、MINONEへジャンプ
- JZE MINONE ; ↓
- CALL ABS ; GR1を正数に変換
-STDN LD GR3,='0' ; 「0」をSTR領域に格納
- ST GR3,STR,GR4 ; ↓
- AND GR1,GR1 ; GR1が0の場合、PRTへジャンプ
- JZE PRT ; ↓
- LAD GR4,1,GR4 ; ↓ GR4 <- GR4 + 1
- LD GR3,='.' ; 「.」をSTR領域に格納
- ST GR3,STR,GR4 ; ↓
- LAD GR4,1,GR4 ; ↓ GR4 <- GR4 + 1
- SLL GR1,1 ; GR1を1回左シフト
-;; GR1の内容を小数値と見なし、10進数の文字列に変換してSTRに格納
-TODIG AND GR1,GR1 ; GR1が0の場合は、ループを脱出
- JZE PRT ; ↓
- CALL MULL ; GR1とGR2の、積をGR1、オーバーフロー値をGR3に格納
- LD GR1,GR0 ; GR0をGR1にコピー
- ADDA GR3,='0' ; GR1を文字に変換
- ST GR3,STR,GR4 ; (STR + GR4) <- GR1
- LAD GR4,1,GR4 ; GR4 <- GR4 + 1
- JUMP TODIG ; ループ
-;; GR1 = -1の場合
-MINONE LD GR1,='1' ; GR1が#8000の場合、-1を出力
- ST GR1,STR,GR4 ; (STR + GR4) <- GR1
- LAD GR4,1,GR4 ; GR4 <- GR4 + 1
- JUMP PRT ; ↓
-;; 値を出力
-PRT ST GR4,LEN ; LEN <- GR4
- OUT STR,LEN ; ↓
- RPOP
- RET
-STR DS 20
-LEN DS 1
- END
-
-;;; GR1を符号付き整数とみなし、絶対値に変換
-;;; 入力 GR1: -32768から32767の整数
-;;; 出力 GR1: 入力された整数の絶対値
-;;; OF: 入力されたGR1が-32768の場合、1
-;;; SF: 入力されたGR1が負数(-32767〜-1)の場合、1
-ABS START
- AND GR1,GR1 ; GR1が0以上の場合は、FINへジャンプ
- JPL FIN ; ↓
- JZE FIN ; ↓
- XOR GR1,ALLON ; GR1のビットを反転
- ADDA GR1,ONE ; GR1に1を追加
- JOV FIN ; 足し算でオーバーフローの場合は、OF:1を保持してFINへジャンプ
- CPL GR1,ALLON ; SF:1を設定
-FIN RET
-ONE DC 1
-ALLON DC #FFFF
- END
-;;; 0〜65535の範囲にある正数のかけ算(筆算方式)を行う
-;;; 入力 GR1:被乗数 GR2:乗数
-;;; 出力 GR0:積の下位WORD GR3:積の上位WORD
-;;; 積が65535より大きい場合は、オーバーフロー
-MULL START
- PUSH 0,GR4
- PUSH 0,GR5
- XOR GR0,GR0 ; 積
- XOR GR3,GR3 ; 上位word
- XOR GR5,GR5 ; 上位wordの一時値
- AND GR1,GR1 ; (GR1 = 0)の場合、終了
- JZE CHKOV ; ↓
- AND GR2,GR2 ; (GR2 = 0)の場合、終了
- JZE CHKOV ; ↓
- LAD GR4,1 ; 対象ビット
-LOOP PUSH 0,GR4 ; ループ先頭。GR2のビット中でGR4が示すビットが0の場合、NEXTへジャンプ
- AND GR4,GR2 ; ↓
- POP GR4 ; ↓
- JZE NEXT1 ; ↓
- ADDL GR3,GR5 ; GR3 <- GR3 + GR5
- ADDL GR0,GR1 ; GR0 <- GR0 + GR1
- JOV AHB1 ; GR0がオーバーフローした場合、AHB1へジャンプ
- JUMP NEXT1 ; ↓
-AHB1 LAD GR3,1,GR3 ; GR3 <- GR3 + 1
-NEXT1 SLL GR4,1 ; GR4を1回左シフト
- JOV CHKOV ; ↓
- SLL GR5,1 ; GR5を1回左シフト
- CPL GR4,GR2 ; (GR4 > GR2)の場合、CHKOVへジャンプ
- JPL CHKOV ; ↓
- SLL GR1,1 ; GR1を1回左シフト
- JOV AHB2 ; GR1がオーバーフローした場合、AHBへジャンプ
- JUMP NEXT2 ; ↓
-AHB2 LAD GR5,1,GR5 ; GR5 <- GR5 + 1
-NEXT2 JUMP LOOP ; ループ終端
-CHKOV AND GR3,GR3 ; GR3 = 0の場合、終了
- JZE FIN ; ↓
- LAD GR4,#FFFF ; GR3 <> 0の場合、オーバーフロー
- SLL GR4,1 ; ↓
-FIN POP GR5
- POP GR4
- RET
- END
+++ /dev/null
-;;; 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
-;;; 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
+++ /dev/null
-;; GR1に格納された値を、10進数の符号なし小数値として表示
-OUTLQ15 START
- RPUSH
- LAD GR2,10 ; GR2に10進数の「10」を格納
- XOR GR4,GR4 ; 整数値の長さ
-STDN LD GR3,='0' ; 「0」をSTR領域に格納
- ST GR3,STR,GR4 ; ↓
- AND GR1,GR1 ; GR1が0の場合、PRTへジャンプ
- JZE PRT ; ↓
- LAD GR4,1,GR4 ; ↓ GR4 <- GR4 + 1
- LD GR3,='.' ; 「.」をSTR領域に格納
- ST GR3,STR,GR4 ; ↓
- LAD GR4,1,GR4 ; ↓ GR4 <- GR4 + 1
-;; GR1の内容を小数値と見なし、10進数の文字列に変換してSTRに格納
-TODIG AND GR1,GR1 ; GR1が0の場合は、ループを脱出
- JZE PRT ; ↓
- CALL MULL ; GR1とGR2の、積をGR0、オーバーフロー値をGR3に格納
- LD GR1,GR0 ; GR0をGR1にコピー
- ADDA GR3,='0' ; GR3を文字に変換
- ST GR3,STR,GR4 ; (STR + GR3) <- GR1
- LAD GR4,1,GR4 ; GR4 <- GR4 + 1
- JUMP TODIG ; ループ
-PRT ST GR4,LEN ; LEN <- GR4
- OUT STR,LEN ; 文字列を出力
- RPOP
- RET
-STR DS 20
-LEN DS 1
- END
-;;; 0〜65535の範囲にある正数のかけ算(筆算方式)を行う
-;;; 入力 GR1:被乗数 GR2:乗数
-;;; 出力 GR0:積の下位WORD GR3:積の上位WORD
-;;; 積が65535より大きい場合は、オーバーフロー
-MULL START
- PUSH 0,GR4
- PUSH 0,GR5
- XOR GR0,GR0 ; 積
- XOR GR3,GR3 ; 上位word
- XOR GR5,GR5 ; 上位wordの一時値
- AND GR1,GR1 ; (GR1 = 0)の場合、終了
- JZE CHKOV ; ↓
- AND GR2,GR2 ; (GR2 = 0)の場合、終了
- JZE CHKOV ; ↓
- LAD GR4,1 ; 対象ビット
-LOOP PUSH 0,GR4 ; ループ先頭。GR2のビット中でGR4が示すビットが0の場合、NEXTへジャンプ
- AND GR4,GR2 ; ↓
- POP GR4 ; ↓
- JZE NEXT1 ; ↓
- ADDL GR3,GR5 ; GR3 <- GR3 + GR5
- ADDL GR0,GR1 ; GR0 <- GR0 + GR1
- JOV AHB1 ; GR0がオーバーフローした場合、AHB1へジャンプ
- JUMP NEXT1 ; ↓
-AHB1 LAD GR3,1,GR3 ; GR3 <- GR3 + 1
-NEXT1 SLL GR4,1 ; GR4を1回左シフト
- JOV CHKOV ; ↓
- SLL GR5,1 ; GR5を1回左シフト
- CPL GR4,GR2 ; (GR4 > GR2)の場合、CHKOVへジャンプ
- JPL CHKOV ; ↓
- SLL GR1,1 ; GR1を1回左シフト
- JOV AHB2 ; GR1がオーバーフローした場合、AHBへジャンプ
- JUMP NEXT2 ; ↓
-AHB2 LAD GR5,1,GR5 ; GR5 <- GR5 + 1
-NEXT2 JUMP LOOP ; ループ終端
-CHKOV AND GR3,GR3 ; GR3 = 0の場合、終了
- JZE FIN ; ↓
- LAD GR4,#FFFF ; GR3 <> 0の場合、オーバーフロー
- SLL GR4,1 ; ↓
-FIN POP GR5
- POP GR4
- RET
- END
-;;; 0〜65535の範囲にある正数のかけ算(筆算方式)を行う
-;;; 入力 GR1:被乗数 GR2:乗数
-;;; 出力 GR0:積の下位WORD GR3:積の上位WORD
-;;; 積が65535より大きい場合は、オーバーフロー
-MULL START
+;;; 10進数の整数を表す文字列を数値に変換
+;;; 数値の範囲は、0から65535
+;;; 入力 GR1: 文字列を格納するアドレス
+;;; GR2: 文字列の長さ。最大5けた
+;;; 出力 GR0: 数値
+;;; 文字列が最大長より大きい場合や数値以外の場合は、GR0は#FFFF、OFは1
+;;; 依存プログラム: MULL
+STR2L START
PUSH 0,GR4
PUSH 0,GR5
- XOR GR0,GR0 ; 積
- XOR GR3,GR3 ; 上位word
- XOR GR5,GR5 ; 上位wordの一時値
- AND GR1,GR1 ; (GR1 = 0)の場合、終了
- JZE CHKOV ; ↓
- AND GR2,GR2 ; (GR2 = 0)の場合、終了
- JZE CHKOV ; ↓
- LAD GR4,1 ; 対象ビット
-LOOP PUSH 0,GR4 ; ループ先頭。GR2のビット中でGR4が示すビットが0の場合、NEXTへジャンプ
- AND GR4,GR2 ; ↓
- POP GR4 ; ↓
- JZE NEXT1 ; ↓
- ADDL GR3,GR5 ; GR3 <- GR3 + GR5
- ADDL GR0,GR1 ; GR0 <- GR0 + GR1
- JOV AHB1 ; GR0がオーバーフローした場合、AHB1へジャンプ
- JUMP NEXT1 ; ↓
-AHB1 LAD GR3,1,GR3 ; GR3 <- GR3 + 1
-NEXT1 SLL GR4,1 ; GR4を1回左シフト
- JOV CHKOV ; ↓
- SLL GR5,1 ; GR5を1回左シフト
- CPL GR4,GR2 ; (GR4 > GR2)の場合、CHKOVへジャンプ
- JPL CHKOV ; ↓
- SLL GR1,1 ; GR1を1回左シフト
- JOV AHB2 ; GR1がオーバーフローした場合、AHBへジャンプ
- JUMP NEXT2 ; ↓
-AHB2 LAD GR5,1,GR5 ; GR5 <- GR5 + 1
-NEXT2 JUMP LOOP ; ループ終端
-CHKOV AND GR3,GR3 ; GR3 = 0の場合、終了
+ XOR GR0,GR0 ; GR0:初期化
+ AND GR2,GR2 ; (GR2 = 0)の場合、FINへジャンプ
JZE FIN ; ↓
- LAD GR4,#FFFF ; GR3 <> 0の場合、オーバーフロー
- SLL GR4,1 ; ↓
+ CPL GR2,MAXLEN ; (GR2 > MAXLEN)の場合、LENOVへジャンプ
+ JPL LENOV ; ↓
+ ST GR1,STR ; STR <- GR1 文字列の開始アドレス
+ ST GR2,LEN ; LEN <- GR2
+ LAD GR2,10 ; GR2:10進数の「10」
+ XOR GR4,GR4 ; GR4:値の一時格納
+ XOR GR5,GR5 ; GR5:インデックス
+STOL CPL GR5,LEN ; ループ先頭。(GR5 = LEN)の場合、ループ脱出
+ JZE CP ; ↓
+ LD GR1,STR ; GR1に、入力文字列中の次の桁を格納
+ ADDL GR1,GR5 ; ↓
+ LD GR1,0,GR1 ; ↓
+ CPL GR1,ZERO ; (GR1 < '0')の場合、NANへジャンプ
+ JMI NAN ; ↓
+ CPL GR1,NINE ; (GR1 > '9')の場合、NANへジャンプ
+ JPL NAN ; ↓
+ SUBL GR1,ZERO ; GR1の文字を、対応する数値に変換
+ ST GR5,NLEN ; GR5 <- LEN - NLEN - 1
+ LD GR5,LEN ; ↓
+ SUBA GR5,NLEN ; ↓
+MUL10 CPA GR5,=1 ; ループ先頭。GR1 <- 10 ** GR5
+ JZE NEXT ; (GR5 = 1)の場合、ループ脱出
+ JMI NEXT ; ↓
+ CALL MULL ; MULLを呼び出し、GR0 <- GR1 * GR2
+ JOV FIN ; ↓ オーバーフロー時は、プログラム終端へジャンプ
+ LD GR1,GR0 ; GR1 <- GR0
+ LAD GR5,-1,GR5 ; GR5 <- GR5 -1
+ JUMP MUL10 ; ループ終端へジャンプ
+NEXT LD GR5,NLEN ; GR5 <- NLEN。復元
+ ADDL GR4,GR1 ; GR4 <- GR4 + GR1
+ JOV FIN ; ↓
+ LAD GR5,1,GR5 ; GR5 <- GR5 + 1
+ JUMP STOL ; ループ終端
+NAN LAD GR2,#FFFF ; GR2 <- #FFFF
+ JUMP FIN ; FINへジャンプ
+CP LD GR1,GR4 ; GR0 <- GR4
+ LD GR0,LEN ; GR0 <- LEN
+ JUMP FIN ; プログラム終端へジャンプ
+LENOV LAD GR0,#FFFF ; 文字列が最大長より大きい場合、GR0 <- #FFFF
+ SRA GR0,1 ; ↓ オーバーフロー発生
FIN POP GR5
POP GR4
RET
+ZERO DC '0'
+NINE DC '9'
+MAXLEN DC 5 ; 文字列の最大長
+STR DS 1
+LEN DS 1
+NLEN DS 1
END
;;; 0〜65535の範囲にある正数のかけ算(筆算方式)を行う
;;; 入力 GR1:被乗数 GR2:乗数
# 複数の子ディレクトリーでmakeを実行
-CMD = casl2 comet2 dumpword
+CMD = casl2_smoke casl2_opt casl2_cmd casl2_err casl2_lib comet2_smoke comet2_opt comet2_cmd comet2_err comet2_lib dumpword
define make_dirs
$(foreach d,$1,$(MAKE) -sC $d $2)
endef
+++ /dev/null
-MAIN START
- OUT OBUF,LEN
- RET
-OBUF DC 'Hello, World!'
-LEN DC 13
- END
-
-Assemble ../../../../as/hello.casl (0)
-../../../../as/hello.casl: 1:MAIN START
-../../../../as/hello.casl: 2: OUT OBUF,LEN
-../../../../as/hello.casl: 3: RET
-../../../../as/hello.casl: 4:OBUF DC 'Hello, World!'
-../../../../as/hello.casl: 5:LEN DC 13
-../../../../as/hello.casl: 6: END
-
-Label::::
-MAIN ---> #0000
-MAIN.OBUF ---> #0013
-MAIN.LEN ---> #0020
-
-Assemble ../../../../as/hello.casl (1)
-../../../../as/hello.casl: 1:MAIN START
-../../../../as/hello.casl: 2: OUT OBUF,LEN
- #0000 #7001
- #0001 #0000
- #0002 #7002
- #0003 #0000
- #0004 #1210
- #0005 #0013
- #0006 #1220
- #0007 #0020
- #0008 #F000
- #0009 #0002
- #0021 #000A
- #000A #1210
- #000B #0021
- #0022 #0001
- #000C #1220
- #000D #0022
- #000E #F000
- #000F #0002
- #0010 #7120
- #0011 #7110
-../../../../as/hello.casl: 3: RET
- #0012 #8100
-../../../../as/hello.casl: 4:OBUF DC 'Hello, World!'
- #0013 #0048
- #0014 #0065
- #0015 #006C
- #0016 #006C
- #0017 #006F
- #0018 #002C
- #0019 #0020
- #001A #0057
- #001B #006F
- #001C #0072
- #001D #006C
- #001E #0064
- #001F #0021
-../../../../as/hello.casl: 5:LEN DC 13
- #0020 #000D
-../../../../as/hello.casl: 6: END
-Hello, World!
+++ /dev/null
-cat ../../../../as/hello.casl
-../../../../casl2 -sla ../../../../as/hello.casl
+++ /dev/null
-../../../../casl2 ../../../../as/casl2lib/sample/call_abs.casl ../../../../as/casl2lib/outa.casl ../../../../as/casl2lib/abs.casl ../../../../as/casl2lib/divl.casl ../../../../as/casl2lib/rev.casl
+++ /dev/null
-../../../../casl2 ../../../../as/casl2lib/sample/call_addl32.casl ../../../../as/casl2lib/addl32.casl ../../../../as/casl2lib/outl.casl ../../../../as/casl2lib/divl.casl ../../../../as/casl2lib/rev.casl
+++ /dev/null
-../../../../casl2 -M640 ../../../../as/casl2lib/sample/call_divl.casl ../../../../as/casl2lib/outl.casl ../../../../as/casl2lib/divl.casl ../../../../as/casl2lib/rev.casl
+++ /dev/null
-../../../../casl2 -M720 ../../../../as/casl2lib/sample/call_inl.casl ../../../../as/casl2lib/inl.casl ../../../../as/casl2lib/outl.casl ../../../../as/casl2lib/mull.casl ../../../../as/casl2lib/str2l.casl ../../../../as/casl2lib/divl.casl ../../../../as/casl2lib/rev.casl <teststr.txt
+++ /dev/null
-../../../../casl2 ../../../../as/casl2lib/sample/call_minim.casl ../../../../as/casl2lib/minim.casl ../../../../as/casl2lib/outa.casl ../../../../as/casl2lib/divl.casl ../../../../as/casl2lib/rev.casl ../../../../as/casl2lib/abs.casl
+++ /dev/null
-../../../../casl2 -M640 ../../../../as/casl2lib/sample/call_mula.casl ../../../../as/casl2lib/mula.casl ../../../../as/casl2lib/mull.casl ../../../../as/casl2lib/outa.casl ../../../../as/casl2lib/abs.casl ../../../../as/casl2lib/divl.casl ../../../../as/casl2lib/rev.casl
+++ /dev/null
-../../../../casl2 -M4096 ../../../../as/casl2lib/sample/call_mull.casl ../../../../as/casl2lib/mull.casl ../../../../as/casl2lib/outl.casl ../../../../as/casl2lib/divl.casl ../../../../as/casl2lib/rev.casl
+++ /dev/null
-../../../../casl2 ../../../../as/casl2lib/sample/call_outa.casl ../../../../as/casl2lib/outa.casl ../../../../as/casl2lib/divl.casl ../../../../as/casl2lib/abs.casl ../../../../as/casl2lib/rev.casl
+++ /dev/null
-../../../../casl2 ../../../../as/casl2lib/sample/call_outa_q15.casl ../../../../as/casl2lib/outa_q15.casl ../../../../as/casl2lib/mull.casl ../../../../as/casl2lib/abs.casl
+++ /dev/null
-../../../../casl2 ../../../../as/casl2lib/sample/call_outb.casl ../../../../as/casl2lib/outb.casl ../../../../as/casl2lib/divl.casl ../../../../as/casl2lib/rev.casl
+++ /dev/null
-../../../../casl2 ../../../../as/casl2lib/sample/call_outb_w.casl ../../../../as/casl2lib/outb_w.casl ../../../../as/casl2lib/divl.casl ../../../../as/casl2lib/rev.casl
+++ /dev/null
-../../../../casl2 ../../../../as/casl2lib/sample/call_outl.casl ../../../../as/casl2lib/outl.casl ../../../../as/casl2lib/divl.casl ../../../../as/casl2lib/rev.casl
+++ /dev/null
-../../../../casl2 ../../../../as/casl2lib/sample/call_outl_q15.casl ../../../../as/casl2lib/outl_q15.casl ../../../../as/casl2lib/mull.casl
+++ /dev/null
-;;; sum_10.casl
-;;; 出力 GR0: 1から10までの整数をすべて加算した値
-MAIN START
- PUSH 0,GR1
- LAD GR0,0 ; GR0を初期化
- LD GR1,FST ; GR1に初項を転送
-LOOP ADDL GR0,GR1 ; ループ先頭
- ADDL GR1,STEP ; GR1 <- GR1 + 公差
- CPL GR1,LST ; GR1が末項より大きい場合は終了
- JPL FIN ; ↓
- JUMP LOOP ; ループ終端
-FIN POP GR1
- RET
-FST DC 1 ; 初項
-LST DC 10 ; 末項
-STEP DC 1 ; 公差
- END
-
-Assemble ../../../../as/sum_10.casl (0)
-../../../../as/sum_10.casl: 1:;;; sum_10.casl
-../../../../as/sum_10.casl: 2:;;; 出力 GR0: 1から10までの整数をすべて加算した値
-../../../../as/sum_10.casl: 3:MAIN START
-../../../../as/sum_10.casl: 4: PUSH 0,GR1
-../../../../as/sum_10.casl: 5: LAD GR0,0 ; GR0を初期化
-../../../../as/sum_10.casl: 6: LD GR1,FST ; GR1に初項を転送
-../../../../as/sum_10.casl: 7:LOOP ADDL GR0,GR1 ; ループ先頭
-../../../../as/sum_10.casl: 8: ADDL GR1,STEP ; GR1 <- GR1 + 公差
-../../../../as/sum_10.casl: 9: CPL GR1,LST ; GR1が末項より大きい場合は終了
-../../../../as/sum_10.casl: 10: JPL FIN ; ↓
-../../../../as/sum_10.casl: 11: JUMP LOOP ; ループ終端
-../../../../as/sum_10.casl: 12:FIN POP GR1
-../../../../as/sum_10.casl: 13: RET
-../../../../as/sum_10.casl: 14:FST DC 1 ; 初項
-../../../../as/sum_10.casl: 15:LST DC 10 ; 末項
-../../../../as/sum_10.casl: 16:STEP DC 1 ; 公差
-../../../../as/sum_10.casl: 17: END
-
-Assemble ../../../../as/sum_10.casl (1)
+++ /dev/null
-cat ../../../../as/sum_10.casl
-../../../../casl2 -s ../../../../as/sum_10.casl
+++ /dev/null
-;;; sum_10.casl
-;;; 出力 GR0: 1から10までの整数をすべて加算した値
-MAIN START
- PUSH 0,GR1
- LAD GR0,0 ; GR0を初期化
- LD GR1,FST ; GR1に初項を転送
-LOOP ADDL GR0,GR1 ; ループ先頭
- ADDL GR1,STEP ; GR1 <- GR1 + 公差
- CPL GR1,LST ; GR1が末項より大きい場合は終了
- JPL FIN ; ↓
- JUMP LOOP ; ループ終端
-FIN POP GR1
- RET
-FST DC 1 ; 初項
-LST DC 10 ; 末項
-STEP DC 1 ; 公差
- END
-
-Assemble ../../../../as/sum_10.casl (0)
-../../../../as/sum_10.casl: 1:;;; sum_10.casl
-../../../../as/sum_10.casl: 2:;;; 出力 GR0: 1から10までの整数をすべて加算した値
-../../../../as/sum_10.casl: 3:MAIN START
-../../../../as/sum_10.casl: 4: PUSH 0,GR1
-../../../../as/sum_10.casl: 5: LAD GR0,0 ; GR0を初期化
-../../../../as/sum_10.casl: 6: LD GR1,FST ; GR1に初項を転送
-../../../../as/sum_10.casl: 7:LOOP ADDL GR0,GR1 ; ループ先頭
-../../../../as/sum_10.casl: 8: ADDL GR1,STEP ; GR1 <- GR1 + 公差
-../../../../as/sum_10.casl: 9: CPL GR1,LST ; GR1が末項より大きい場合は終了
-../../../../as/sum_10.casl: 10: JPL FIN ; ↓
-../../../../as/sum_10.casl: 11: JUMP LOOP ; ループ終端
-../../../../as/sum_10.casl: 12:FIN POP GR1
-../../../../as/sum_10.casl: 13: RET
-../../../../as/sum_10.casl: 14:FST DC 1 ; 初項
-../../../../as/sum_10.casl: 15:LST DC 10 ; 末項
-../../../../as/sum_10.casl: 16:STEP DC 1 ; 公差
-../../../../as/sum_10.casl: 17: END
-
-Label::::
-MAIN ---> #0000
-MAIN.LOOP ---> #0006
-MAIN.FIN ---> #000F
-MAIN.FST ---> #0011
-MAIN.LST ---> #0012
-MAIN.STEP ---> #0013
+++ /dev/null
-cat ../../../../as/sum_10.casl
-../../../../casl2 -sL ../../../../as/sum_10.casl
+++ /dev/null
-;;; sum_10.casl
-;;; 出力 GR0: 1から10までの整数をすべて加算した値
-MAIN START
- PUSH 0,GR1
- LAD GR0,0 ; GR0を初期化
- LD GR1,FST ; GR1に初項を転送
-LOOP ADDL GR0,GR1 ; ループ先頭
- ADDL GR1,STEP ; GR1 <- GR1 + 公差
- CPL GR1,LST ; GR1が末項より大きい場合は終了
- JPL FIN ; ↓
- JUMP LOOP ; ループ終端
-FIN POP GR1
- RET
-FST DC 1 ; 初項
-LST DC 10 ; 末項
-STEP DC 1 ; 公差
- END
-
-Assemble ../../../../as/sum_10.casl (0)
-../../../../as/sum_10.casl: 1:;;; sum_10.casl
-../../../../as/sum_10.casl: 2:;;; 出力 GR0: 1から10までの整数をすべて加算した値
-../../../../as/sum_10.casl: 3:MAIN START
-../../../../as/sum_10.casl: 4: PUSH 0,GR1
-../../../../as/sum_10.casl: 5: LAD GR0,0 ; GR0を初期化
-../../../../as/sum_10.casl: 6: LD GR1,FST ; GR1に初項を転送
-../../../../as/sum_10.casl: 7:LOOP ADDL GR0,GR1 ; ループ先頭
-../../../../as/sum_10.casl: 8: ADDL GR1,STEP ; GR1 <- GR1 + 公差
-../../../../as/sum_10.casl: 9: CPL GR1,LST ; GR1が末項より大きい場合は終了
-../../../../as/sum_10.casl: 10: JPL FIN ; ↓
-../../../../as/sum_10.casl: 11: JUMP LOOP ; ループ終端
-../../../../as/sum_10.casl: 12:FIN POP GR1
-../../../../as/sum_10.casl: 13: RET
-../../../../as/sum_10.casl: 14:FST DC 1 ; 初項
-../../../../as/sum_10.casl: 15:LST DC 10 ; 末項
-../../../../as/sum_10.casl: 16:STEP DC 1 ; 公差
-../../../../as/sum_10.casl: 17: END
-
-Label::::
-MAIN ---> #0000
-MAIN.LOOP ---> #0006
-MAIN.FIN ---> #000F
-MAIN.FST ---> #0011
-MAIN.LST ---> #0012
-MAIN.STEP ---> #0013
-
-Assemble ../../../../as/sum_10.casl (1)
-../../../../as/sum_10.casl: 1:;;; sum_10.casl
-../../../../as/sum_10.casl: 2:;;; 出力 GR0: 1から10までの整数をすべて加算した値
-../../../../as/sum_10.casl: 3:MAIN START
-../../../../as/sum_10.casl: 4: PUSH 0,GR1
- #0000 #7001
- #0001 #0000
-../../../../as/sum_10.casl: 5: LAD GR0,0 ; GR0を初期化
- #0002 #1200
- #0003 #0000
-../../../../as/sum_10.casl: 6: LD GR1,FST ; GR1に初項を転送
- #0004 #1010
- #0005 #0011
-../../../../as/sum_10.casl: 7:LOOP ADDL GR0,GR1 ; ループ先頭
- #0006 #2601
-../../../../as/sum_10.casl: 8: ADDL GR1,STEP ; GR1 <- GR1 + 公差
- #0007 #2210
- #0008 #0013
-../../../../as/sum_10.casl: 9: CPL GR1,LST ; GR1が末項より大きい場合は終了
- #0009 #4110
- #000A #0012
-../../../../as/sum_10.casl: 10: JPL FIN ; ↓
- #000B #6500
- #000C #000F
-../../../../as/sum_10.casl: 11: JUMP LOOP ; ループ終端
- #000D #6400
- #000E #0006
-../../../../as/sum_10.casl: 12:FIN POP GR1
- #000F #7110
-../../../../as/sum_10.casl: 13: RET
- #0010 #8100
-../../../../as/sum_10.casl: 14:FST DC 1 ; 初項
- #0011 #0001
-../../../../as/sum_10.casl: 15:LST DC 10 ; 末項
- #0012 #000A
-../../../../as/sum_10.casl: 16:STEP DC 1 ; 公差
- #0013 #0001
-../../../../as/sum_10.casl: 17: END
+++ /dev/null
-cat ../../../../as/sum_10.casl
-../../../../casl2 -slA ../../../../as/sum_10.casl
+++ /dev/null
-;;; sum_10.casl
-;;; 出力 GR0: 1から10までの整数をすべて加算した値
-MAIN START
- PUSH 0,GR1
- LAD GR0,0 ; GR0を初期化
- LD GR1,FST ; GR1に初項を転送
-LOOP ADDL GR0,GR1 ; ループ先頭
- ADDL GR1,STEP ; GR1 <- GR1 + 公差
- CPL GR1,LST ; GR1が末項より大きい場合は終了
- JPL FIN ; ↓
- JUMP LOOP ; ループ終端
-FIN POP GR1
- RET
-FST DC 1 ; 初項
-LST DC 10 ; 末項
-STEP DC 1 ; 公差
- END
-
-Assemble ../../../../as/sum_10.casl (0)
-../../../../as/sum_10.casl: 1:;;; sum_10.casl
-../../../../as/sum_10.casl: 2:;;; 出力 GR0: 1から10までの整数をすべて加算した値
-../../../../as/sum_10.casl: 3:MAIN START
-../../../../as/sum_10.casl: 4: PUSH 0,GR1
-../../../../as/sum_10.casl: 5: LAD GR0,0 ; GR0を初期化
-../../../../as/sum_10.casl: 6: LD GR1,FST ; GR1に初項を転送
-../../../../as/sum_10.casl: 7:LOOP ADDL GR0,GR1 ; ループ先頭
-../../../../as/sum_10.casl: 8: ADDL GR1,STEP ; GR1 <- GR1 + 公差
-../../../../as/sum_10.casl: 9: CPL GR1,LST ; GR1が末項より大きい場合は終了
-../../../../as/sum_10.casl: 10: JPL FIN ; ↓
-../../../../as/sum_10.casl: 11: JUMP LOOP ; ループ終端
-../../../../as/sum_10.casl: 12:FIN POP GR1
-../../../../as/sum_10.casl: 13: RET
-../../../../as/sum_10.casl: 14:FST DC 1 ; 初項
-../../../../as/sum_10.casl: 15:LST DC 10 ; 末項
-../../../../as/sum_10.casl: 16:STEP DC 1 ; 公差
-../../../../as/sum_10.casl: 17: END
-
-Label::::
-MAIN ---> #0000
-MAIN.LOOP ---> #0006
-MAIN.FIN ---> #000F
-MAIN.FST ---> #0011
-MAIN.LST ---> #0012
-MAIN.STEP ---> #0013
-
-Assemble ../../../../as/sum_10.casl (1)
-../../../../as/sum_10.casl: 1:;;; sum_10.casl
-../../../../as/sum_10.casl: 2:;;; 出力 GR0: 1から10までの整数をすべて加算した値
-../../../../as/sum_10.casl: 3:MAIN START
-../../../../as/sum_10.casl: 4: PUSH 0,GR1
- #0000 #7001
- #0001 #0000
-../../../../as/sum_10.casl: 5: LAD GR0,0 ; GR0を初期化
- #0002 #1200
- #0003 #0000
-../../../../as/sum_10.casl: 6: LD GR1,FST ; GR1に初項を転送
- #0004 #1010
- #0005 #0011
-../../../../as/sum_10.casl: 7:LOOP ADDL GR0,GR1 ; ループ先頭
- #0006 #2601
-../../../../as/sum_10.casl: 8: ADDL GR1,STEP ; GR1 <- GR1 + 公差
- #0007 #2210
- #0008 #0013
-../../../../as/sum_10.casl: 9: CPL GR1,LST ; GR1が末項より大きい場合は終了
- #0009 #4110
- #000A #0012
-../../../../as/sum_10.casl: 10: JPL FIN ; ↓
- #000B #6500
- #000C #000F
-../../../../as/sum_10.casl: 11: JUMP LOOP ; ループ終端
- #000D #6400
- #000E #0006
-../../../../as/sum_10.casl: 12:FIN POP GR1
- #000F #7110
-../../../../as/sum_10.casl: 13: RET
- #0010 #8100
-../../../../as/sum_10.casl: 14:FST DC 1 ; 初項
- #0011 #0001
-../../../../as/sum_10.casl: 15:LST DC 10 ; 末項
- #0012 #000A
-../../../../as/sum_10.casl: 16:STEP DC 1 ; 公差
- #0013 #0001
-../../../../as/sum_10.casl: 17: END
+++ /dev/null
-cat ../../../../as/sum_10.casl
-../../../../casl2 -sla -O ../../../../as/sum_10.casl
+++ /dev/null
-;;; sum_10.casl
-;;; 出力 GR0: 1から10までの整数をすべて加算した値
-MAIN START
- PUSH 0,GR1
- LAD GR0,0 ; GR0を初期化
- LD GR1,FST ; GR1に初項を転送
-LOOP ADDL GR0,GR1 ; ループ先頭
- ADDL GR1,STEP ; GR1 <- GR1 + 公差
- CPL GR1,LST ; GR1が末項より大きい場合は終了
- JPL FIN ; ↓
- JUMP LOOP ; ループ終端
-FIN POP GR1
- RET
-FST DC 1 ; 初項
-LST DC 10 ; 末項
-STEP DC 1 ; 公差
- END
-
-Assemble ../../../../as/sum_10.casl (0)
-../../../../as/sum_10.casl: 1:;;; sum_10.casl
-../../../../as/sum_10.casl: 2:;;; 出力 GR0: 1から10までの整数をすべて加算した値
-../../../../as/sum_10.casl: 3:MAIN START
-../../../../as/sum_10.casl: 4: PUSH 0,GR1
-../../../../as/sum_10.casl: 5: LAD GR0,0 ; GR0を初期化
-../../../../as/sum_10.casl: 6: LD GR1,FST ; GR1に初項を転送
-../../../../as/sum_10.casl: 7:LOOP ADDL GR0,GR1 ; ループ先頭
-../../../../as/sum_10.casl: 8: ADDL GR1,STEP ; GR1 <- GR1 + 公差
-../../../../as/sum_10.casl: 9: CPL GR1,LST ; GR1が末項より大きい場合は終了
-../../../../as/sum_10.casl: 10: JPL FIN ; ↓
-../../../../as/sum_10.casl: 11: JUMP LOOP ; ループ終端
-../../../../as/sum_10.casl: 12:FIN POP GR1
-../../../../as/sum_10.casl: 13: RET
-../../../../as/sum_10.casl: 14:FST DC 1 ; 初項
-../../../../as/sum_10.casl: 15:LST DC 10 ; 末項
-../../../../as/sum_10.casl: 16:STEP DC 1 ; 公差
-../../../../as/sum_10.casl: 17: END
-
-Label::::
-MAIN ---> #0000
-MAIN.LOOP ---> #0006
-MAIN.FIN ---> #000F
-MAIN.FST ---> #0011
-MAIN.LST ---> #0012
-MAIN.STEP ---> #0013
-
-Assemble ../../../../as/sum_10.casl (1)
-../../../../as/sum_10.casl: 1:;;; sum_10.casl
-../../../../as/sum_10.casl: 2:;;; 出力 GR0: 1から10までの整数をすべて加算した値
-../../../../as/sum_10.casl: 3:MAIN START
-../../../../as/sum_10.casl: 4: PUSH 0,GR1
- #0000 #7001
- #0001 #0000
-../../../../as/sum_10.casl: 5: LAD GR0,0 ; GR0を初期化
- #0002 #1200
- #0003 #0000
-../../../../as/sum_10.casl: 6: LD GR1,FST ; GR1に初項を転送
- #0004 #1010
- #0005 #0011
-../../../../as/sum_10.casl: 7:LOOP ADDL GR0,GR1 ; ループ先頭
- #0006 #2601
-../../../../as/sum_10.casl: 8: ADDL GR1,STEP ; GR1 <- GR1 + 公差
- #0007 #2210
- #0008 #0013
-../../../../as/sum_10.casl: 9: CPL GR1,LST ; GR1が末項より大きい場合は終了
- #0009 #4110
- #000A #0012
-../../../../as/sum_10.casl: 10: JPL FIN ; ↓
- #000B #6500
- #000C #000F
-../../../../as/sum_10.casl: 11: JUMP LOOP ; ループ終端
- #000D #6400
- #000E #0006
-../../../../as/sum_10.casl: 12:FIN POP GR1
- #000F #7110
-../../../../as/sum_10.casl: 13: RET
- #0010 #8100
-../../../../as/sum_10.casl: 14:FST DC 1 ; 初項
- #0011 #0001
-../../../../as/sum_10.casl: 15:LST DC 10 ; 末項
- #0012 #000A
-../../../../as/sum_10.casl: 16:STEP DC 1 ; 公差
- #0013 #0001
-../../../../as/sum_10.casl: 17: END
+++ /dev/null
-cat ../../../../as/sum_10.casl
-../../../../casl2 -sla -Oopt.o ../../../../as/sum_10.casl
+++ /dev/null
-cat ../../../../as/sum_10.casl
-../../../../casl2 -slaTo ../../../../as/sum_10.casl
+++ /dev/null
-cat ../../../../as/sum_10.casl
-../../../../casl2 -slat -o ../../../../as/sum_10.casl
+++ /dev/null
-cat ../../../../as/sum_10.casl
-../../../../casl2 -slatdo ../../../../as/sum_10.casl
--- /dev/null
+../../template/Define.mk
\ No newline at end of file
--- /dev/null
+../../template/Group.mk
\ No newline at end of file
--- /dev/null
+../../template/Test.mk
\ No newline at end of file
--- /dev/null
+../../../../casl2 -M2048 ../../../../as/casl2lib/sample/call_abs.casl ../../../../as/casl2lib/stdlib.casl
--- /dev/null
+../../../../casl2 -M2048 ../../../../as/casl2lib/sample/call_addl32.casl ../../../../as/casl2lib/stdlib.casl
--- /dev/null
+../../../../casl2 -M2048 ../../../../as/casl2lib/sample/call_divl.casl ../../../../as/casl2lib/stdlib.casl
--- /dev/null
+../../../../casl2 -M2048 ../../../../as/casl2lib/sample/call_inl.casl ../../../../as/casl2lib/stdlib.casl <teststr.txt
--- /dev/null
+../../../../casl2 -M2048 ../../../../as/casl2lib/sample/call_minim.casl ../../../../as/casl2lib/stdlib.casl
--- /dev/null
+../../../../casl2 -M2048 ../../../../as/casl2lib/sample/call_mula.casl ../../../../as/casl2lib/stdlib.casl
--- /dev/null
+../../../../casl2 -M2048 ../../../../as/casl2lib/sample/call_mull.casl ../../../../as/casl2lib/stdlib.casl
--- /dev/null
+../../../../casl2 ../../../../as/casl2lib/sample/call_outa.casl ../../../../as/casl2lib/outa.casl
--- /dev/null
+../../../../casl2 -M2048 ../../../../as/casl2lib/sample/call_outaq15.casl ../../../../as/casl2lib/stdlib.casl
--- /dev/null
+../../../../casl2 ../../../../as/casl2lib/sample/call_outb.casl ../../../../as/casl2lib/outb.casl
--- /dev/null
+../../../../casl2 -M2048 ../../../../as/casl2lib/sample/call_outbw.casl ../../../../as/casl2lib/outbw.casl
--- /dev/null
+../../../../casl2 ../../../../as/casl2lib/sample/call_outl.casl ../../../../as/casl2lib/outl.casl
--- /dev/null
+../../../../casl2 ../../../../as/casl2lib/sample/call_outlq15.casl ../../../../as/casl2lib/outlq15.casl
--- /dev/null
+../../template/Define.mk
\ No newline at end of file
--- /dev/null
+../../template/Group.mk
\ No newline at end of file
--- /dev/null
+../../template/Test.mk
\ No newline at end of file
--- /dev/null
+;;; sum_10.casl
+;;; 出力 GR0: 1から10までの整数をすべて加算した値
+MAIN START
+ PUSH 0,GR1
+ LAD GR0,0 ; GR0を初期化
+ LD GR1,FST ; GR1に初項を転送
+LOOP ADDL GR0,GR1 ; ループ先頭
+ ADDL GR1,STEP ; GR1 <- GR1 + 公差
+ CPL GR1,LST ; GR1が末項より大きい場合は終了
+ JPL FIN ; ↓
+ JUMP LOOP ; ループ終端
+FIN POP GR1
+ RET
+FST DC 1 ; 初項
+LST DC 10 ; 末項
+STEP DC 1 ; 公差
+ END
+
+Assemble ../../../../as/sample/sum_10.casl (0)
+../../../../as/sample/sum_10.casl: 1:;;; sum_10.casl
+../../../../as/sample/sum_10.casl: 2:;;; 出力 GR0: 1から10までの整数をすべて加算した値
+../../../../as/sample/sum_10.casl: 3:MAIN START
+../../../../as/sample/sum_10.casl: 4: PUSH 0,GR1
+../../../../as/sample/sum_10.casl: 5: LAD GR0,0 ; GR0を初期化
+../../../../as/sample/sum_10.casl: 6: LD GR1,FST ; GR1に初項を転送
+../../../../as/sample/sum_10.casl: 7:LOOP ADDL GR0,GR1 ; ループ先頭
+../../../../as/sample/sum_10.casl: 8: ADDL GR1,STEP ; GR1 <- GR1 + 公差
+../../../../as/sample/sum_10.casl: 9: CPL GR1,LST ; GR1が末項より大きい場合は終了
+../../../../as/sample/sum_10.casl: 10: JPL FIN ; ↓
+../../../../as/sample/sum_10.casl: 11: JUMP LOOP ; ループ終端
+../../../../as/sample/sum_10.casl: 12:FIN POP GR1
+../../../../as/sample/sum_10.casl: 13: RET
+../../../../as/sample/sum_10.casl: 14:FST DC 1 ; 初項
+../../../../as/sample/sum_10.casl: 15:LST DC 10 ; 末項
+../../../../as/sample/sum_10.casl: 16:STEP DC 1 ; 公差
+../../../../as/sample/sum_10.casl: 17: END
+
+Assemble ../../../../as/sample/sum_10.casl (1)
--- /dev/null
+cat ../../../../as/sample/sum_10.casl
+../../../../casl2 -s ../../../../as/sample/sum_10.casl
--- /dev/null
+;;; sum_10.casl
+;;; 出力 GR0: 1から10までの整数をすべて加算した値
+MAIN START
+ PUSH 0,GR1
+ LAD GR0,0 ; GR0を初期化
+ LD GR1,FST ; GR1に初項を転送
+LOOP ADDL GR0,GR1 ; ループ先頭
+ ADDL GR1,STEP ; GR1 <- GR1 + 公差
+ CPL GR1,LST ; GR1が末項より大きい場合は終了
+ JPL FIN ; ↓
+ JUMP LOOP ; ループ終端
+FIN POP GR1
+ RET
+FST DC 1 ; 初項
+LST DC 10 ; 末項
+STEP DC 1 ; 公差
+ END
+
+Assemble ../../../../as/sample/sum_10.casl (0)
+../../../../as/sample/sum_10.casl: 1:;;; sum_10.casl
+../../../../as/sample/sum_10.casl: 2:;;; 出力 GR0: 1から10までの整数をすべて加算した値
+../../../../as/sample/sum_10.casl: 3:MAIN START
+../../../../as/sample/sum_10.casl: 4: PUSH 0,GR1
+../../../../as/sample/sum_10.casl: 5: LAD GR0,0 ; GR0を初期化
+../../../../as/sample/sum_10.casl: 6: LD GR1,FST ; GR1に初項を転送
+../../../../as/sample/sum_10.casl: 7:LOOP ADDL GR0,GR1 ; ループ先頭
+../../../../as/sample/sum_10.casl: 8: ADDL GR1,STEP ; GR1 <- GR1 + 公差
+../../../../as/sample/sum_10.casl: 9: CPL GR1,LST ; GR1が末項より大きい場合は終了
+../../../../as/sample/sum_10.casl: 10: JPL FIN ; ↓
+../../../../as/sample/sum_10.casl: 11: JUMP LOOP ; ループ終端
+../../../../as/sample/sum_10.casl: 12:FIN POP GR1
+../../../../as/sample/sum_10.casl: 13: RET
+../../../../as/sample/sum_10.casl: 14:FST DC 1 ; 初項
+../../../../as/sample/sum_10.casl: 15:LST DC 10 ; 末項
+../../../../as/sample/sum_10.casl: 16:STEP DC 1 ; 公差
+../../../../as/sample/sum_10.casl: 17: END
+
+Label::::
+MAIN ---> #0000
+MAIN.LOOP ---> #0006
+MAIN.FIN ---> #000F
+MAIN.FST ---> #0011
+MAIN.LST ---> #0012
+MAIN.STEP ---> #0013
--- /dev/null
+cat ../../../../as/sample/sum_10.casl
+../../../../casl2 -sL ../../../../as/sample/sum_10.casl
--- /dev/null
+;;; sum_10.casl
+;;; 出力 GR0: 1から10までの整数をすべて加算した値
+MAIN START
+ PUSH 0,GR1
+ LAD GR0,0 ; GR0を初期化
+ LD GR1,FST ; GR1に初項を転送
+LOOP ADDL GR0,GR1 ; ループ先頭
+ ADDL GR1,STEP ; GR1 <- GR1 + 公差
+ CPL GR1,LST ; GR1が末項より大きい場合は終了
+ JPL FIN ; ↓
+ JUMP LOOP ; ループ終端
+FIN POP GR1
+ RET
+FST DC 1 ; 初項
+LST DC 10 ; 末項
+STEP DC 1 ; 公差
+ END
+
+Assemble ../../../../as/sample/sum_10.casl (0)
+../../../../as/sample/sum_10.casl: 1:;;; sum_10.casl
+../../../../as/sample/sum_10.casl: 2:;;; 出力 GR0: 1から10までの整数をすべて加算した値
+../../../../as/sample/sum_10.casl: 3:MAIN START
+../../../../as/sample/sum_10.casl: 4: PUSH 0,GR1
+../../../../as/sample/sum_10.casl: 5: LAD GR0,0 ; GR0を初期化
+../../../../as/sample/sum_10.casl: 6: LD GR1,FST ; GR1に初項を転送
+../../../../as/sample/sum_10.casl: 7:LOOP ADDL GR0,GR1 ; ループ先頭
+../../../../as/sample/sum_10.casl: 8: ADDL GR1,STEP ; GR1 <- GR1 + 公差
+../../../../as/sample/sum_10.casl: 9: CPL GR1,LST ; GR1が末項より大きい場合は終了
+../../../../as/sample/sum_10.casl: 10: JPL FIN ; ↓
+../../../../as/sample/sum_10.casl: 11: JUMP LOOP ; ループ終端
+../../../../as/sample/sum_10.casl: 12:FIN POP GR1
+../../../../as/sample/sum_10.casl: 13: RET
+../../../../as/sample/sum_10.casl: 14:FST DC 1 ; 初項
+../../../../as/sample/sum_10.casl: 15:LST DC 10 ; 末項
+../../../../as/sample/sum_10.casl: 16:STEP DC 1 ; 公差
+../../../../as/sample/sum_10.casl: 17: END
+
+Label::::
+MAIN ---> #0000
+MAIN.LOOP ---> #0006
+MAIN.FIN ---> #000F
+MAIN.FST ---> #0011
+MAIN.LST ---> #0012
+MAIN.STEP ---> #0013
+
+Assemble ../../../../as/sample/sum_10.casl (1)
+../../../../as/sample/sum_10.casl: 1:;;; sum_10.casl
+../../../../as/sample/sum_10.casl: 2:;;; 出力 GR0: 1から10までの整数をすべて加算した値
+../../../../as/sample/sum_10.casl: 3:MAIN START
+../../../../as/sample/sum_10.casl: 4: PUSH 0,GR1
+ #0000 #7001
+ #0001 #0000
+../../../../as/sample/sum_10.casl: 5: LAD GR0,0 ; GR0を初期化
+ #0002 #1200
+ #0003 #0000
+../../../../as/sample/sum_10.casl: 6: LD GR1,FST ; GR1に初項を転送
+ #0004 #1010
+ #0005 #0011
+../../../../as/sample/sum_10.casl: 7:LOOP ADDL GR0,GR1 ; ループ先頭
+ #0006 #2601
+../../../../as/sample/sum_10.casl: 8: ADDL GR1,STEP ; GR1 <- GR1 + 公差
+ #0007 #2210
+ #0008 #0013
+../../../../as/sample/sum_10.casl: 9: CPL GR1,LST ; GR1が末項より大きい場合は終了
+ #0009 #4110
+ #000A #0012
+../../../../as/sample/sum_10.casl: 10: JPL FIN ; ↓
+ #000B #6500
+ #000C #000F
+../../../../as/sample/sum_10.casl: 11: JUMP LOOP ; ループ終端
+ #000D #6400
+ #000E #0006
+../../../../as/sample/sum_10.casl: 12:FIN POP GR1
+ #000F #7110
+../../../../as/sample/sum_10.casl: 13: RET
+ #0010 #8100
+../../../../as/sample/sum_10.casl: 14:FST DC 1 ; 初項
+ #0011 #0001
+../../../../as/sample/sum_10.casl: 15:LST DC 10 ; 末項
+ #0012 #000A
+../../../../as/sample/sum_10.casl: 16:STEP DC 1 ; 公差
+ #0013 #0001
+../../../../as/sample/sum_10.casl: 17: END
--- /dev/null
+cat ../../../../as/sample/sum_10.casl
+../../../../casl2 -slA ../../../../as/sample/sum_10.casl
--- /dev/null
+;;; sum_10.casl
+;;; 出力 GR0: 1から10までの整数をすべて加算した値
+MAIN START
+ PUSH 0,GR1
+ LAD GR0,0 ; GR0を初期化
+ LD GR1,FST ; GR1に初項を転送
+LOOP ADDL GR0,GR1 ; ループ先頭
+ ADDL GR1,STEP ; GR1 <- GR1 + 公差
+ CPL GR1,LST ; GR1が末項より大きい場合は終了
+ JPL FIN ; ↓
+ JUMP LOOP ; ループ終端
+FIN POP GR1
+ RET
+FST DC 1 ; 初項
+LST DC 10 ; 末項
+STEP DC 1 ; 公差
+ END
+
+Assemble ../../../../as/sample/sum_10.casl (0)
+../../../../as/sample/sum_10.casl: 1:;;; sum_10.casl
+../../../../as/sample/sum_10.casl: 2:;;; 出力 GR0: 1から10までの整数をすべて加算した値
+../../../../as/sample/sum_10.casl: 3:MAIN START
+../../../../as/sample/sum_10.casl: 4: PUSH 0,GR1
+../../../../as/sample/sum_10.casl: 5: LAD GR0,0 ; GR0を初期化
+../../../../as/sample/sum_10.casl: 6: LD GR1,FST ; GR1に初項を転送
+../../../../as/sample/sum_10.casl: 7:LOOP ADDL GR0,GR1 ; ループ先頭
+../../../../as/sample/sum_10.casl: 8: ADDL GR1,STEP ; GR1 <- GR1 + 公差
+../../../../as/sample/sum_10.casl: 9: CPL GR1,LST ; GR1が末項より大きい場合は終了
+../../../../as/sample/sum_10.casl: 10: JPL FIN ; ↓
+../../../../as/sample/sum_10.casl: 11: JUMP LOOP ; ループ終端
+../../../../as/sample/sum_10.casl: 12:FIN POP GR1
+../../../../as/sample/sum_10.casl: 13: RET
+../../../../as/sample/sum_10.casl: 14:FST DC 1 ; 初項
+../../../../as/sample/sum_10.casl: 15:LST DC 10 ; 末項
+../../../../as/sample/sum_10.casl: 16:STEP DC 1 ; 公差
+../../../../as/sample/sum_10.casl: 17: END
+
+Label::::
+MAIN ---> #0000
+MAIN.LOOP ---> #0006
+MAIN.FIN ---> #000F
+MAIN.FST ---> #0011
+MAIN.LST ---> #0012
+MAIN.STEP ---> #0013
+
+Assemble ../../../../as/sample/sum_10.casl (1)
+../../../../as/sample/sum_10.casl: 1:;;; sum_10.casl
+../../../../as/sample/sum_10.casl: 2:;;; 出力 GR0: 1から10までの整数をすべて加算した値
+../../../../as/sample/sum_10.casl: 3:MAIN START
+../../../../as/sample/sum_10.casl: 4: PUSH 0,GR1
+ #0000 #7001
+ #0001 #0000
+../../../../as/sample/sum_10.casl: 5: LAD GR0,0 ; GR0を初期化
+ #0002 #1200
+ #0003 #0000
+../../../../as/sample/sum_10.casl: 6: LD GR1,FST ; GR1に初項を転送
+ #0004 #1010
+ #0005 #0011
+../../../../as/sample/sum_10.casl: 7:LOOP ADDL GR0,GR1 ; ループ先頭
+ #0006 #2601
+../../../../as/sample/sum_10.casl: 8: ADDL GR1,STEP ; GR1 <- GR1 + 公差
+ #0007 #2210
+ #0008 #0013
+../../../../as/sample/sum_10.casl: 9: CPL GR1,LST ; GR1が末項より大きい場合は終了
+ #0009 #4110
+ #000A #0012
+../../../../as/sample/sum_10.casl: 10: JPL FIN ; ↓
+ #000B #6500
+ #000C #000F
+../../../../as/sample/sum_10.casl: 11: JUMP LOOP ; ループ終端
+ #000D #6400
+ #000E #0006
+../../../../as/sample/sum_10.casl: 12:FIN POP GR1
+ #000F #7110
+../../../../as/sample/sum_10.casl: 13: RET
+ #0010 #8100
+../../../../as/sample/sum_10.casl: 14:FST DC 1 ; 初項
+ #0011 #0001
+../../../../as/sample/sum_10.casl: 15:LST DC 10 ; 末項
+ #0012 #000A
+../../../../as/sample/sum_10.casl: 16:STEP DC 1 ; 公差
+ #0013 #0001
+../../../../as/sample/sum_10.casl: 17: END
--- /dev/null
+cat ../../../../as/sample/sum_10.casl
+../../../../casl2 -sla -O ../../../../as/sample/sum_10.casl
--- /dev/null
+;;; sum_10.casl
+;;; 出力 GR0: 1から10までの整数をすべて加算した値
+MAIN START
+ PUSH 0,GR1
+ LAD GR0,0 ; GR0を初期化
+ LD GR1,FST ; GR1に初項を転送
+LOOP ADDL GR0,GR1 ; ループ先頭
+ ADDL GR1,STEP ; GR1 <- GR1 + 公差
+ CPL GR1,LST ; GR1が末項より大きい場合は終了
+ JPL FIN ; ↓
+ JUMP LOOP ; ループ終端
+FIN POP GR1
+ RET
+FST DC 1 ; 初項
+LST DC 10 ; 末項
+STEP DC 1 ; 公差
+ END
+
+Assemble ../../../../as/sample/sum_10.casl (0)
+../../../../as/sample/sum_10.casl: 1:;;; sum_10.casl
+../../../../as/sample/sum_10.casl: 2:;;; 出力 GR0: 1から10までの整数をすべて加算した値
+../../../../as/sample/sum_10.casl: 3:MAIN START
+../../../../as/sample/sum_10.casl: 4: PUSH 0,GR1
+../../../../as/sample/sum_10.casl: 5: LAD GR0,0 ; GR0を初期化
+../../../../as/sample/sum_10.casl: 6: LD GR1,FST ; GR1に初項を転送
+../../../../as/sample/sum_10.casl: 7:LOOP ADDL GR0,GR1 ; ループ先頭
+../../../../as/sample/sum_10.casl: 8: ADDL GR1,STEP ; GR1 <- GR1 + 公差
+../../../../as/sample/sum_10.casl: 9: CPL GR1,LST ; GR1が末項より大きい場合は終了
+../../../../as/sample/sum_10.casl: 10: JPL FIN ; ↓
+../../../../as/sample/sum_10.casl: 11: JUMP LOOP ; ループ終端
+../../../../as/sample/sum_10.casl: 12:FIN POP GR1
+../../../../as/sample/sum_10.casl: 13: RET
+../../../../as/sample/sum_10.casl: 14:FST DC 1 ; 初項
+../../../../as/sample/sum_10.casl: 15:LST DC 10 ; 末項
+../../../../as/sample/sum_10.casl: 16:STEP DC 1 ; 公差
+../../../../as/sample/sum_10.casl: 17: END
+
+Label::::
+MAIN ---> #0000
+MAIN.LOOP ---> #0006
+MAIN.FIN ---> #000F
+MAIN.FST ---> #0011
+MAIN.LST ---> #0012
+MAIN.STEP ---> #0013
+
+Assemble ../../../../as/sample/sum_10.casl (1)
+../../../../as/sample/sum_10.casl: 1:;;; sum_10.casl
+../../../../as/sample/sum_10.casl: 2:;;; 出力 GR0: 1から10までの整数をすべて加算した値
+../../../../as/sample/sum_10.casl: 3:MAIN START
+../../../../as/sample/sum_10.casl: 4: PUSH 0,GR1
+ #0000 #7001
+ #0001 #0000
+../../../../as/sample/sum_10.casl: 5: LAD GR0,0 ; GR0を初期化
+ #0002 #1200
+ #0003 #0000
+../../../../as/sample/sum_10.casl: 6: LD GR1,FST ; GR1に初項を転送
+ #0004 #1010
+ #0005 #0011
+../../../../as/sample/sum_10.casl: 7:LOOP ADDL GR0,GR1 ; ループ先頭
+ #0006 #2601
+../../../../as/sample/sum_10.casl: 8: ADDL GR1,STEP ; GR1 <- GR1 + 公差
+ #0007 #2210
+ #0008 #0013
+../../../../as/sample/sum_10.casl: 9: CPL GR1,LST ; GR1が末項より大きい場合は終了
+ #0009 #4110
+ #000A #0012
+../../../../as/sample/sum_10.casl: 10: JPL FIN ; ↓
+ #000B #6500
+ #000C #000F
+../../../../as/sample/sum_10.casl: 11: JUMP LOOP ; ループ終端
+ #000D #6400
+ #000E #0006
+../../../../as/sample/sum_10.casl: 12:FIN POP GR1
+ #000F #7110
+../../../../as/sample/sum_10.casl: 13: RET
+ #0010 #8100
+../../../../as/sample/sum_10.casl: 14:FST DC 1 ; 初項
+ #0011 #0001
+../../../../as/sample/sum_10.casl: 15:LST DC 10 ; 末項
+ #0012 #000A
+../../../../as/sample/sum_10.casl: 16:STEP DC 1 ; 公差
+ #0013 #0001
+../../../../as/sample/sum_10.casl: 17: END
--- /dev/null
+cat ../../../../as/sample/sum_10.casl
+../../../../casl2 -sla -Oopt.o ../../../../as/sample/sum_10.casl
STEP DC 1 ; 公差
END
-Assemble ../../../../as/sum_10.casl (0)
-../../../../as/sum_10.casl: 1:;;; sum_10.casl
-../../../../as/sum_10.casl: 2:;;; 出力 GR0: 1から10までの整数をすべて加算した値
-../../../../as/sum_10.casl: 3:MAIN START
-../../../../as/sum_10.casl: 4: PUSH 0,GR1
-../../../../as/sum_10.casl: 5: LAD GR0,0 ; GR0を初期化
-../../../../as/sum_10.casl: 6: LD GR1,FST ; GR1に初項を転送
-../../../../as/sum_10.casl: 7:LOOP ADDL GR0,GR1 ; ループ先頭
-../../../../as/sum_10.casl: 8: ADDL GR1,STEP ; GR1 <- GR1 + 公差
-../../../../as/sum_10.casl: 9: CPL GR1,LST ; GR1が末項より大きい場合は終了
-../../../../as/sum_10.casl: 10: JPL FIN ; ↓
-../../../../as/sum_10.casl: 11: JUMP LOOP ; ループ終端
-../../../../as/sum_10.casl: 12:FIN POP GR1
-../../../../as/sum_10.casl: 13: RET
-../../../../as/sum_10.casl: 14:FST DC 1 ; 初項
-../../../../as/sum_10.casl: 15:LST DC 10 ; 末項
-../../../../as/sum_10.casl: 16:STEP DC 1 ; 公差
-../../../../as/sum_10.casl: 17: END
+Assemble ../../../../as/sample/sum_10.casl (0)
+../../../../as/sample/sum_10.casl: 1:;;; sum_10.casl
+../../../../as/sample/sum_10.casl: 2:;;; 出力 GR0: 1から10までの整数をすべて加算した値
+../../../../as/sample/sum_10.casl: 3:MAIN START
+../../../../as/sample/sum_10.casl: 4: PUSH 0,GR1
+../../../../as/sample/sum_10.casl: 5: LAD GR0,0 ; GR0を初期化
+../../../../as/sample/sum_10.casl: 6: LD GR1,FST ; GR1に初項を転送
+../../../../as/sample/sum_10.casl: 7:LOOP ADDL GR0,GR1 ; ループ先頭
+../../../../as/sample/sum_10.casl: 8: ADDL GR1,STEP ; GR1 <- GR1 + 公差
+../../../../as/sample/sum_10.casl: 9: CPL GR1,LST ; GR1が末項より大きい場合は終了
+../../../../as/sample/sum_10.casl: 10: JPL FIN ; ↓
+../../../../as/sample/sum_10.casl: 11: JUMP LOOP ; ループ終端
+../../../../as/sample/sum_10.casl: 12:FIN POP GR1
+../../../../as/sample/sum_10.casl: 13: RET
+../../../../as/sample/sum_10.casl: 14:FST DC 1 ; 初項
+../../../../as/sample/sum_10.casl: 15:LST DC 10 ; 末項
+../../../../as/sample/sum_10.casl: 16:STEP DC 1 ; 公差
+../../../../as/sample/sum_10.casl: 17: END
Label::::
MAIN ---> #0000
MAIN.LST ---> #0012
MAIN.STEP ---> #0013
-Assemble ../../../../as/sum_10.casl (1)
-../../../../as/sum_10.casl: 1:;;; sum_10.casl
-../../../../as/sum_10.casl: 2:;;; 出力 GR0: 1から10までの整数をすべて加算した値
-../../../../as/sum_10.casl: 3:MAIN START
-../../../../as/sum_10.casl: 4: PUSH 0,GR1
+Assemble ../../../../as/sample/sum_10.casl (1)
+../../../../as/sample/sum_10.casl: 1:;;; sum_10.casl
+../../../../as/sample/sum_10.casl: 2:;;; 出力 GR0: 1から10までの整数をすべて加算した値
+../../../../as/sample/sum_10.casl: 3:MAIN START
+../../../../as/sample/sum_10.casl: 4: PUSH 0,GR1
#0000 #7001
#0001 #0000
-../../../../as/sum_10.casl: 5: LAD GR0,0 ; GR0を初期化
+../../../../as/sample/sum_10.casl: 5: LAD GR0,0 ; GR0を初期化
#0002 #1200
#0003 #0000
-../../../../as/sum_10.casl: 6: LD GR1,FST ; GR1に初項を転送
+../../../../as/sample/sum_10.casl: 6: LD GR1,FST ; GR1に初項を転送
#0004 #1010
#0005 #0011
-../../../../as/sum_10.casl: 7:LOOP ADDL GR0,GR1 ; ループ先頭
+../../../../as/sample/sum_10.casl: 7:LOOP ADDL GR0,GR1 ; ループ先頭
#0006 #2601
-../../../../as/sum_10.casl: 8: ADDL GR1,STEP ; GR1 <- GR1 + 公差
+../../../../as/sample/sum_10.casl: 8: ADDL GR1,STEP ; GR1 <- GR1 + 公差
#0007 #2210
#0008 #0013
-../../../../as/sum_10.casl: 9: CPL GR1,LST ; GR1が末項より大きい場合は終了
+../../../../as/sample/sum_10.casl: 9: CPL GR1,LST ; GR1が末項より大きい場合は終了
#0009 #4110
#000A #0012
-../../../../as/sum_10.casl: 10: JPL FIN ; ↓
+../../../../as/sample/sum_10.casl: 10: JPL FIN ; ↓
#000B #6500
#000C #000F
-../../../../as/sum_10.casl: 11: JUMP LOOP ; ループ終端
+../../../../as/sample/sum_10.casl: 11: JUMP LOOP ; ループ終端
#000D #6400
#000E #0006
-../../../../as/sum_10.casl: 12:FIN POP GR1
+../../../../as/sample/sum_10.casl: 12:FIN POP GR1
#000F #7110
-../../../../as/sum_10.casl: 13: RET
+../../../../as/sample/sum_10.casl: 13: RET
#0010 #8100
-../../../../as/sum_10.casl: 14:FST DC 1 ; 初項
+../../../../as/sample/sum_10.casl: 14:FST DC 1 ; 初項
#0011 #0001
-../../../../as/sum_10.casl: 15:LST DC 10 ; 末項
+../../../../as/sample/sum_10.casl: 15:LST DC 10 ; 末項
#0012 #000A
-../../../../as/sum_10.casl: 16:STEP DC 1 ; 公差
+../../../../as/sample/sum_10.casl: 16:STEP DC 1 ; 公差
#0013 #0001
-../../../../as/sum_10.casl: 17: END
+../../../../as/sample/sum_10.casl: 17: END
Executing machine codes
#0000: Register::::
--- /dev/null
+cat ../../../../as/sample/sum_10.casl
+../../../../casl2 -slaTo ../../../../as/sample/sum_10.casl
STEP DC 1 ; 公差
END
-Assemble ../../../../as/sum_10.casl (0)
-../../../../as/sum_10.casl: 1:;;; sum_10.casl
-../../../../as/sum_10.casl: 2:;;; 出力 GR0: 1から10までの整数をすべて加算した値
-../../../../as/sum_10.casl: 3:MAIN START
-../../../../as/sum_10.casl: 4: PUSH 0,GR1
-../../../../as/sum_10.casl: 5: LAD GR0,0 ; GR0を初期化
-../../../../as/sum_10.casl: 6: LD GR1,FST ; GR1に初項を転送
-../../../../as/sum_10.casl: 7:LOOP ADDL GR0,GR1 ; ループ先頭
-../../../../as/sum_10.casl: 8: ADDL GR1,STEP ; GR1 <- GR1 + 公差
-../../../../as/sum_10.casl: 9: CPL GR1,LST ; GR1が末項より大きい場合は終了
-../../../../as/sum_10.casl: 10: JPL FIN ; ↓
-../../../../as/sum_10.casl: 11: JUMP LOOP ; ループ終端
-../../../../as/sum_10.casl: 12:FIN POP GR1
-../../../../as/sum_10.casl: 13: RET
-../../../../as/sum_10.casl: 14:FST DC 1 ; 初項
-../../../../as/sum_10.casl: 15:LST DC 10 ; 末項
-../../../../as/sum_10.casl: 16:STEP DC 1 ; 公差
-../../../../as/sum_10.casl: 17: END
+Assemble ../../../../as/sample/sum_10.casl (0)
+../../../../as/sample/sum_10.casl: 1:;;; sum_10.casl
+../../../../as/sample/sum_10.casl: 2:;;; 出力 GR0: 1から10までの整数をすべて加算した値
+../../../../as/sample/sum_10.casl: 3:MAIN START
+../../../../as/sample/sum_10.casl: 4: PUSH 0,GR1
+../../../../as/sample/sum_10.casl: 5: LAD GR0,0 ; GR0を初期化
+../../../../as/sample/sum_10.casl: 6: LD GR1,FST ; GR1に初項を転送
+../../../../as/sample/sum_10.casl: 7:LOOP ADDL GR0,GR1 ; ループ先頭
+../../../../as/sample/sum_10.casl: 8: ADDL GR1,STEP ; GR1 <- GR1 + 公差
+../../../../as/sample/sum_10.casl: 9: CPL GR1,LST ; GR1が末項より大きい場合は終了
+../../../../as/sample/sum_10.casl: 10: JPL FIN ; ↓
+../../../../as/sample/sum_10.casl: 11: JUMP LOOP ; ループ終端
+../../../../as/sample/sum_10.casl: 12:FIN POP GR1
+../../../../as/sample/sum_10.casl: 13: RET
+../../../../as/sample/sum_10.casl: 14:FST DC 1 ; 初項
+../../../../as/sample/sum_10.casl: 15:LST DC 10 ; 末項
+../../../../as/sample/sum_10.casl: 16:STEP DC 1 ; 公差
+../../../../as/sample/sum_10.casl: 17: END
Label::::
MAIN ---> #0000
MAIN.LST ---> #0012
MAIN.STEP ---> #0013
-Assemble ../../../../as/sum_10.casl (1)
-../../../../as/sum_10.casl: 1:;;; sum_10.casl
-../../../../as/sum_10.casl: 2:;;; 出力 GR0: 1から10までの整数をすべて加算した値
-../../../../as/sum_10.casl: 3:MAIN START
-../../../../as/sum_10.casl: 4: PUSH 0,GR1
+Assemble ../../../../as/sample/sum_10.casl (1)
+../../../../as/sample/sum_10.casl: 1:;;; sum_10.casl
+../../../../as/sample/sum_10.casl: 2:;;; 出力 GR0: 1から10までの整数をすべて加算した値
+../../../../as/sample/sum_10.casl: 3:MAIN START
+../../../../as/sample/sum_10.casl: 4: PUSH 0,GR1
#0000 #7001
#0001 #0000
-../../../../as/sum_10.casl: 5: LAD GR0,0 ; GR0を初期化
+../../../../as/sample/sum_10.casl: 5: LAD GR0,0 ; GR0を初期化
#0002 #1200
#0003 #0000
-../../../../as/sum_10.casl: 6: LD GR1,FST ; GR1に初項を転送
+../../../../as/sample/sum_10.casl: 6: LD GR1,FST ; GR1に初項を転送
#0004 #1010
#0005 #0011
-../../../../as/sum_10.casl: 7:LOOP ADDL GR0,GR1 ; ループ先頭
+../../../../as/sample/sum_10.casl: 7:LOOP ADDL GR0,GR1 ; ループ先頭
#0006 #2601
-../../../../as/sum_10.casl: 8: ADDL GR1,STEP ; GR1 <- GR1 + 公差
+../../../../as/sample/sum_10.casl: 8: ADDL GR1,STEP ; GR1 <- GR1 + 公差
#0007 #2210
#0008 #0013
-../../../../as/sum_10.casl: 9: CPL GR1,LST ; GR1が末項より大きい場合は終了
+../../../../as/sample/sum_10.casl: 9: CPL GR1,LST ; GR1が末項より大きい場合は終了
#0009 #4110
#000A #0012
-../../../../as/sum_10.casl: 10: JPL FIN ; ↓
+../../../../as/sample/sum_10.casl: 10: JPL FIN ; ↓
#000B #6500
#000C #000F
-../../../../as/sum_10.casl: 11: JUMP LOOP ; ループ終端
+../../../../as/sample/sum_10.casl: 11: JUMP LOOP ; ループ終端
#000D #6400
#000E #0006
-../../../../as/sum_10.casl: 12:FIN POP GR1
+../../../../as/sample/sum_10.casl: 12:FIN POP GR1
#000F #7110
-../../../../as/sum_10.casl: 13: RET
+../../../../as/sample/sum_10.casl: 13: RET
#0010 #8100
-../../../../as/sum_10.casl: 14:FST DC 1 ; 初項
+../../../../as/sample/sum_10.casl: 14:FST DC 1 ; 初項
#0011 #0001
-../../../../as/sum_10.casl: 15:LST DC 10 ; 末項
+../../../../as/sample/sum_10.casl: 15:LST DC 10 ; 末項
#0012 #000A
-../../../../as/sum_10.casl: 16:STEP DC 1 ; 公差
+../../../../as/sample/sum_10.casl: 16:STEP DC 1 ; 公差
#0013 #0001
-../../../../as/sum_10.casl: 17: END
+../../../../as/sample/sum_10.casl: 17: END
Executing machine codes
#0000: Register::::
--- /dev/null
+cat ../../../../as/sample/sum_10.casl
+../../../../casl2 -slat -o ../../../../as/sample/sum_10.casl
STEP DC 1 ; 公差
END
-Assemble ../../../../as/sum_10.casl (0)
-../../../../as/sum_10.casl: 1:;;; sum_10.casl
-../../../../as/sum_10.casl: 2:;;; 出力 GR0: 1から10までの整数をすべて加算した値
-../../../../as/sum_10.casl: 3:MAIN START
-../../../../as/sum_10.casl: 4: PUSH 0,GR1
-../../../../as/sum_10.casl: 5: LAD GR0,0 ; GR0を初期化
-../../../../as/sum_10.casl: 6: LD GR1,FST ; GR1に初項を転送
-../../../../as/sum_10.casl: 7:LOOP ADDL GR0,GR1 ; ループ先頭
-../../../../as/sum_10.casl: 8: ADDL GR1,STEP ; GR1 <- GR1 + 公差
-../../../../as/sum_10.casl: 9: CPL GR1,LST ; GR1が末項より大きい場合は終了
-../../../../as/sum_10.casl: 10: JPL FIN ; ↓
-../../../../as/sum_10.casl: 11: JUMP LOOP ; ループ終端
-../../../../as/sum_10.casl: 12:FIN POP GR1
-../../../../as/sum_10.casl: 13: RET
-../../../../as/sum_10.casl: 14:FST DC 1 ; 初項
-../../../../as/sum_10.casl: 15:LST DC 10 ; 末項
-../../../../as/sum_10.casl: 16:STEP DC 1 ; 公差
-../../../../as/sum_10.casl: 17: END
+Assemble ../../../../as/sample/sum_10.casl (0)
+../../../../as/sample/sum_10.casl: 1:;;; sum_10.casl
+../../../../as/sample/sum_10.casl: 2:;;; 出力 GR0: 1から10までの整数をすべて加算した値
+../../../../as/sample/sum_10.casl: 3:MAIN START
+../../../../as/sample/sum_10.casl: 4: PUSH 0,GR1
+../../../../as/sample/sum_10.casl: 5: LAD GR0,0 ; GR0を初期化
+../../../../as/sample/sum_10.casl: 6: LD GR1,FST ; GR1に初項を転送
+../../../../as/sample/sum_10.casl: 7:LOOP ADDL GR0,GR1 ; ループ先頭
+../../../../as/sample/sum_10.casl: 8: ADDL GR1,STEP ; GR1 <- GR1 + 公差
+../../../../as/sample/sum_10.casl: 9: CPL GR1,LST ; GR1が末項より大きい場合は終了
+../../../../as/sample/sum_10.casl: 10: JPL FIN ; ↓
+../../../../as/sample/sum_10.casl: 11: JUMP LOOP ; ループ終端
+../../../../as/sample/sum_10.casl: 12:FIN POP GR1
+../../../../as/sample/sum_10.casl: 13: RET
+../../../../as/sample/sum_10.casl: 14:FST DC 1 ; 初項
+../../../../as/sample/sum_10.casl: 15:LST DC 10 ; 末項
+../../../../as/sample/sum_10.casl: 16:STEP DC 1 ; 公差
+../../../../as/sample/sum_10.casl: 17: END
Label::::
MAIN ---> #0000
MAIN.LST ---> #0012
MAIN.STEP ---> #0013
-Assemble ../../../../as/sum_10.casl (1)
-../../../../as/sum_10.casl: 1:;;; sum_10.casl
-../../../../as/sum_10.casl: 2:;;; 出力 GR0: 1から10までの整数をすべて加算した値
-../../../../as/sum_10.casl: 3:MAIN START
-../../../../as/sum_10.casl: 4: PUSH 0,GR1
+Assemble ../../../../as/sample/sum_10.casl (1)
+../../../../as/sample/sum_10.casl: 1:;;; sum_10.casl
+../../../../as/sample/sum_10.casl: 2:;;; 出力 GR0: 1から10までの整数をすべて加算した値
+../../../../as/sample/sum_10.casl: 3:MAIN START
+../../../../as/sample/sum_10.casl: 4: PUSH 0,GR1
#0000 #7001
#0001 #0000
-../../../../as/sum_10.casl: 5: LAD GR0,0 ; GR0を初期化
+../../../../as/sample/sum_10.casl: 5: LAD GR0,0 ; GR0を初期化
#0002 #1200
#0003 #0000
-../../../../as/sum_10.casl: 6: LD GR1,FST ; GR1に初項を転送
+../../../../as/sample/sum_10.casl: 6: LD GR1,FST ; GR1に初項を転送
#0004 #1010
#0005 #0011
-../../../../as/sum_10.casl: 7:LOOP ADDL GR0,GR1 ; ループ先頭
+../../../../as/sample/sum_10.casl: 7:LOOP ADDL GR0,GR1 ; ループ先頭
#0006 #2601
-../../../../as/sum_10.casl: 8: ADDL GR1,STEP ; GR1 <- GR1 + 公差
+../../../../as/sample/sum_10.casl: 8: ADDL GR1,STEP ; GR1 <- GR1 + 公差
#0007 #2210
#0008 #0013
-../../../../as/sum_10.casl: 9: CPL GR1,LST ; GR1が末項より大きい場合は終了
+../../../../as/sample/sum_10.casl: 9: CPL GR1,LST ; GR1が末項より大きい場合は終了
#0009 #4110
#000A #0012
-../../../../as/sum_10.casl: 10: JPL FIN ; ↓
+../../../../as/sample/sum_10.casl: 10: JPL FIN ; ↓
#000B #6500
#000C #000F
-../../../../as/sum_10.casl: 11: JUMP LOOP ; ループ終端
+../../../../as/sample/sum_10.casl: 11: JUMP LOOP ; ループ終端
#000D #6400
#000E #0006
-../../../../as/sum_10.casl: 12:FIN POP GR1
+../../../../as/sample/sum_10.casl: 12:FIN POP GR1
#000F #7110
-../../../../as/sum_10.casl: 13: RET
+../../../../as/sample/sum_10.casl: 13: RET
#0010 #8100
-../../../../as/sum_10.casl: 14:FST DC 1 ; 初項
+../../../../as/sample/sum_10.casl: 14:FST DC 1 ; 初項
#0011 #0001
-../../../../as/sum_10.casl: 15:LST DC 10 ; 末項
+../../../../as/sample/sum_10.casl: 15:LST DC 10 ; 末項
#0012 #000A
-../../../../as/sum_10.casl: 16:STEP DC 1 ; 公差
+../../../../as/sample/sum_10.casl: 16:STEP DC 1 ; 公差
#0013 #0001
-../../../../as/sum_10.casl: 17: END
+../../../../as/sample/sum_10.casl: 17: END
Executing machine codes
#0000: Register::::
--- /dev/null
+cat ../../../../as/sample/sum_10.casl
+../../../../casl2 -slatdo ../../../../as/sample/sum_10.casl
--- /dev/null
+../../template/Define.mk
\ No newline at end of file
--- /dev/null
+../../template/Group.mk
\ No newline at end of file
--- /dev/null
+../../template/Test.mk
\ No newline at end of file
--- /dev/null
+MAIN START
+ OUT OBUF,LEN
+ RET
+OBUF DC 'Hello, World!'
+LEN DC 13
+ END
+
+Assemble ../../../../as/sample/hello.casl (0)
+../../../../as/sample/hello.casl: 1:MAIN START
+../../../../as/sample/hello.casl: 2: OUT OBUF,LEN
+../../../../as/sample/hello.casl: 3: RET
+../../../../as/sample/hello.casl: 4:OBUF DC 'Hello, World!'
+../../../../as/sample/hello.casl: 5:LEN DC 13
+../../../../as/sample/hello.casl: 6: END
+
+Label::::
+MAIN ---> #0000
+MAIN.OBUF ---> #0013
+MAIN.LEN ---> #0020
+
+Assemble ../../../../as/sample/hello.casl (1)
+../../../../as/sample/hello.casl: 1:MAIN START
+../../../../as/sample/hello.casl: 2: OUT OBUF,LEN
+ #0000 #7001
+ #0001 #0000
+ #0002 #7002
+ #0003 #0000
+ #0004 #1210
+ #0005 #0013
+ #0006 #1220
+ #0007 #0020
+ #0008 #F000
+ #0009 #0002
+ #0021 #000A
+ #000A #1210
+ #000B #0021
+ #0022 #0001
+ #000C #1220
+ #000D #0022
+ #000E #F000
+ #000F #0002
+ #0010 #7120
+ #0011 #7110
+../../../../as/sample/hello.casl: 3: RET
+ #0012 #8100
+../../../../as/sample/hello.casl: 4:OBUF DC 'Hello, World!'
+ #0013 #0048
+ #0014 #0065
+ #0015 #006C
+ #0016 #006C
+ #0017 #006F
+ #0018 #002C
+ #0019 #0020
+ #001A #0057
+ #001B #006F
+ #001C #0072
+ #001D #006C
+ #001E #0064
+ #001F #0021
+../../../../as/sample/hello.casl: 5:LEN DC 13
+ #0020 #000D
+../../../../as/sample/hello.casl: 6: END
+Hello, World!
--- /dev/null
+cat ../../../../as/sample/hello.casl
+../../../../casl2 -sla ../../../../as/sample/hello.casl
+++ /dev/null
-../../../../casl2 -O ../../../../as/hello.casl
-../../../../comet2 a.o
-rm -f a.o
+++ /dev/null
-../../../../casl2 -O abs.casl ../../../../as/casl2lib/outa.casl ../../../../as/casl2lib/abs.casl ../../../../as/casl2lib/divl.casl ../../../../as/casl2lib/rev.casl
-../../../../comet2 a.o
-rm -f a.o
+++ /dev/null
-../../../../casl2 -O addl32.casl ../../../../as/casl2lib/addl32.casl ../../../../as/casl2lib/outl.casl ../../../../as/casl2lib/divl.casl ../../../../as/casl2lib/rev.casl
-../../../../comet2 a.o
-rm -f a.o
+++ /dev/null
-../../../../casl2 -M640 -O divl.casl ../../../../as/casl2lib/outl.casl ../../../../as/casl2lib/divl.casl ../../../../as/casl2lib/rev.casl
-../../../../comet2 -M640 a.o
-rm -f a.o
+++ /dev/null
-../../../../casl2 -M720 -O inl.casl ../../../../as/casl2lib/inl.casl ../../../../as/casl2lib/outl.casl ../../../../as/casl2lib/mull.casl ../../../../as/casl2lib/str2l.casl ../../../../as/casl2lib/divl.casl ../../../../as/casl2lib/rev.casl
-../../../../comet2 -M720 a.o <teststr.txt
-rm -f a.o
+++ /dev/null
-../../../../casl2 -O minim.casl ../../../../as/casl2lib/minim.casl ../../../../as/casl2lib/outa.casl ../../../../as/casl2lib/divl.casl ../../../../as/casl2lib/rev.casl ../../../../as/casl2lib/abs.casl
-../../../../comet2 a.o
-rm -f a.o
+++ /dev/null
-../../../../casl2 -M640 -O mula.casl ../../../../as/casl2lib/mula.casl ../../../../as/casl2lib/mull.casl ../../../../as/casl2lib/outa.casl ../../../../as/casl2lib/abs.casl ../../../../as/casl2lib/divl.casl ../../../../as/casl2lib/rev.casl
-../../../../comet2 -M640 a.o
-rm -f a.o
+++ /dev/null
-../../../../casl2 -O -M4096 mull.casl ../../../../as/casl2lib/mull.casl ../../../../as/casl2lib/outl.casl ../../../../as/casl2lib/divl.casl ../../../../as/casl2lib/rev.casl
-../../../../comet2 -M4096 a.o
-rm -f a.o
+++ /dev/null
-../../../../casl2 -O outa.casl ../../../../as/casl2lib/outa.casl ../../../../as/casl2lib/divl.casl ../../../../as/casl2lib/abs.casl ../../../../as/casl2lib/rev.casl
-../../../../comet2 a.o
-rm -f a.o
+++ /dev/null
-;; casl2 outi_call.casl outi.casl
-MAIN START
- LAD GR1,VAL
- LAD GR2,0
-LOOP CPA GR2,CNT
- JZE FIN
- LD GR1,VAL,GR2
- CALL OUTA
- LAD GR2,1,GR2
- 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
+++ /dev/null
-../../../../casl2 -O outa_q15.casl ../../../../as/casl2lib/outa_q15.casl ../../../../as/casl2lib/mull.casl ../../../../as/casl2lib/abs.casl
-../../../../comet2 a.o
-rm -f a.o
+++ /dev/null
-../../../../casl2 -O outb.casl ../../../../as/casl2lib/outb.casl ../../../../as/casl2lib/divl.casl ../../../../as/casl2lib/rev.casl
-../../../../comet2 a.o
-rm -f a.o
+++ /dev/null
-;;; 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
+++ /dev/null
-../../../../casl2 -O outl.casl ../../../../as/casl2lib/outl.casl ../../../../as/casl2lib/divl.casl ../../../../as/casl2lib/rev.casl
-../../../../comet2 a.o
-rm -f a.o
+++ /dev/null
-;;; casl2 outl_call.casl outl.casl
-MAIN START
- LAD GR2,0
-LOOP LD GR1,VAL,GR2
- CALL OUTL
- 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
+++ /dev/null
-../../../../casl2 -O outl_q15.casl ../../../../as/casl2lib/outl_q15.casl ../../../../as/casl2lib/mull.casl
-../../../../comet2 a.o
-rm -f a.o
+++ /dev/null
-;; outd_q15.caslを呼び出し、33個の数値を表示する
-MAIN START
- LAD GR2,0
-LOOP LD GR1,VAL,GR2
- CALL OUTLQ15
- LAD GR2,1,GR2
- CPA GR2,CNT
- JZE FIN
- JUMP LOOP
-FIN RET
-VAL 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 33
- END
+++ /dev/null
-../../../../casl2 -O rev.casl ../../../../as/casl2lib/rev.casl
-../../../../comet2 a.o
-rm -f a.o
+++ /dev/null
-MAIN START
- OUT STR,LEN
- LAD GR1,STR
- LD GR2,LEN
- CALL REV
- OUT STR,LEN
- RET
-STR DC '12345'
-LEN DC 5
- END
+++ /dev/null
-../../../../casl2 -O ../../../../as/sum_10.casl
-../../../../comet2 -T a.o
-rm -f a.o
+++ /dev/null
-../../../../casl2 -O ../../../../as/sum_10.casl
-../../../../comet2 -t a.o
-rm -f a.o
+++ /dev/null
-../../../../casl2 -O ../../../../as/sum_10.casl
-../../../../comet2 -td a.o
-rm -f a.o
--- /dev/null
+../../template/Define.mk
\ No newline at end of file
--- /dev/null
+../../template/Group.mk
\ No newline at end of file
--- /dev/null
+../../template/Test.mk
\ No newline at end of file
--- /dev/null
+../../template/Define.mk
\ No newline at end of file
--- /dev/null
+../../template/Group.mk
\ No newline at end of file
--- /dev/null
+../../template/Test.mk
\ No newline at end of file
--- /dev/null
+../../template/Define.mk
\ No newline at end of file
--- /dev/null
+../../template/Group.mk
\ No newline at end of file
--- /dev/null
+../../template/Test.mk
\ No newline at end of file
--- /dev/null
+../../../../casl2 -M2048 -O ../../../../as/casl2lib/sample/call_abs.casl ../../../../as/casl2lib/stdlib.casl
+../../../../comet2 -M2048 a.o
+rm -f a.o
--- /dev/null
+../../../../casl2 -M2048 -O ../../../../as/casl2lib/sample/call_addl32.casl ../../../../as/casl2lib/stdlib.casl
+../../../../comet2 -M2048 a.o
+rm -f a.o
--- /dev/null
+../../../../casl2 -M2048 -O ../../../../as/casl2lib/sample/call_divl.casl ../../../../as/casl2lib/stdlib.casl
+../../../../comet2 -M2048 a.o
+rm -f a.o
--- /dev/null
+../../../../casl2 -M2048 -O ../../../../as/casl2lib/sample/call_inl.casl ../../../../as/casl2lib/stdlib.casl <teststr.txt
+../../../../comet2 -M2048 a.o <teststr.txt
+rm -f a.o
--- /dev/null
+../../../../casl2 -M2048 -O ../../../../as/casl2lib/sample/call_minim.casl ../../../../as/casl2lib/stdlib.casl
+../../../../comet2 -M2048 a.o
+rm -f a.o
--- /dev/null
+../../../../casl2 -M2048 -O ../../../../as/casl2lib/sample/call_mula.casl ../../../../as/casl2lib/stdlib.casl
+../../../../comet2 -M2048 a.o
+rm -f a.o
--- /dev/null
+../../../../casl2 -M4096 -O ../../../../as/casl2lib/sample/call_mull.casl ../../../../as/casl2lib/stdlib.casl
+../../../../comet2 -M4096 a.o
+rm -f a.o
--- /dev/null
+../../../../casl2 -O ../../../../as/casl2lib/sample/call_outa.casl ../../../../as/casl2lib/outa.casl
+../../../../comet2 a.o
+rm -f a.o
--- /dev/null
+../../../../casl2 -O -M2048 ../../../../as/casl2lib/sample/call_outaq15.casl ../../../../as/casl2lib/stdlib.casl
+../../../../comet2 -M2048 a.o
+rm -f a.o
--- /dev/null
+../../../../casl2 -O ../../../../as/casl2lib/sample/call_outb.casl ../../../../as/casl2lib/outb.casl
+../../../../comet2 a.o
+rm -f a.o
--- /dev/null
+../../../../casl2 -O ../../../../as/casl2lib/sample/call_outl.casl ../../../../as/casl2lib/outl.casl
+../../../../comet2 a.o
+rm -f a.o
--- /dev/null
+../../../../casl2 -O ../../../../as/casl2lib/sample/call_outlq15.casl ../../../../as/casl2lib/outlq15.casl
+../../../../comet2 a.o
+rm -f a.o
--- /dev/null
+../../../../casl2 -O ../../../../as/casl2lib/sample/call_rev.casl ../../../../as/casl2lib/rev.casl
+../../../../comet2 a.o
+rm -f a.o
--- /dev/null
+../../template/Define.mk
\ No newline at end of file
--- /dev/null
+../../template/Group.mk
\ No newline at end of file
--- /dev/null
+../../template/Test.mk
\ No newline at end of file
--- /dev/null
+../../../../casl2 -O ../../../../as/sample/sum_10.casl
+../../../../comet2 -T a.o
+rm -f a.o
-../../../../casl2 -O ../../../../as/sum_10.casl
+../../../../casl2 -O ../../../../as/sample/sum_10.casl
../../../../comet2 -z a.o 2>&1 | tail -1 1>&2
rm -f a.o
--- /dev/null
+../../../../casl2 -O ../../../../as/sample/sum_10.casl
+../../../../comet2 -t a.o
+rm -f a.o
--- /dev/null
+../../../../casl2 -O ../../../../as/sample/sum_10.casl
+../../../../comet2 -td a.o
+rm -f a.o
--- /dev/null
+../../template/Define.mk
\ No newline at end of file
--- /dev/null
+../../template/Group.mk
\ No newline at end of file
--- /dev/null
+../../template/Test.mk
\ No newline at end of file
--- /dev/null
+../../../../casl2 -O ../../../../as/sample/hello.casl
+../../../../comet2 a.o
+rm -f a.o