-
Notifications
You must be signed in to change notification settings - Fork 0
/
03-2-echoback.simh
54 lines (50 loc) · 1.4 KB
/
03-2-echoback.simh
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
# [メイン処理]
# キー入力を待ち、ACへ1文字取得
d -m 100 jms 500
# ACの文字を出力
d -m 101 jms 300
# AC != CR(アドレス0o160)なら、次の命令をスキップ
d -m 102 sad 160
# (AC == CRの場合)LF出力処理へジャンプ
d -m 103 jmp 105
# (AC != CRの場合)最初へ戻る
d -m 104 jmp 100
# LF出力処理
# - ACへLFを設定
d -m 105 law 12
# - ACの文字を出力
d -m 106 jms 300
# - 最初へ戻る
d -m 107 jmp 100
# メイン処理内定数
# - CR(+0o200)
d 160 215
# [300: 指定された1文字を出力する関数]
# ACレジスタに設定されている文字(ASCII)を出力する
# - 文字出力完了フラグをクリア
d -m 301 tcf
# - ACレジスタの文字を出力バッファへ設定
d -m 302 tls
# - 文字出力完了フラグがセットされていれば次の命令をスキップ
d -m 303 tsf
# - TSF命令へ戻る
d -m 304 jmp 303
# - return
d -m 305 jmp i 300
# [500: 入力された1文字を取得する関数]
# 入力された文字(ASCII)をACレジスタへ取得する
# - 入力フラグがセットされていたら次の命令をスキップ
d -m 501 ksf
# - 再度KSF命令へ(入力を待つ)
d -m 502 jmp 501
# - 入力バッファから文字をACレジスタへ取得
d -m 503 krb
# - return
d -m 504 jmp i 500
# [実行]
# テレタイプ入力デバイスへ全二重設定
set tti fdx
# メイン処理を実行
go 100
# [終了]
by