2009年07月05日

レーザー光線プログラム:さらに改造

 先に書いた、レーザー光線プログラムだけど、ちょっとした変更によって、「外から内に流れる」から「内から外に流れる」に変わる方法を思い付いたので、書いてみる。

 実はこれ、AIAやAIY命令で「1」を指定すれば「+1」だけど、「F」を指定すれば「-1」と同じ効果が得られる事に気付いたので、やってみた。
 もしかして、プログラム全体を見れば、それによってもっと縮まるかもしれないけど、それはまた次の機会という事で。

変更点
 プログラムリストから、次のアドレスのみ修正する。

06:2 → B
15:1 → F
17:B → 2
25:4 → 3

リスト
 アセンブルリストを掲載。これにより、赤文字で書いた所が変わっている。

TIY 1
TIA D
AM      ;アドレス51にDを入れる
TIY B      ;アドレス5Bから
TIA 0
CS: AM      ;データメモリにArを入れる
CAL SIFT   ;Arを右にシフト
JUMP CYES   ;偶数ならCYESにジャンプ
JUMP CNO   ;奇数ならCNOにジャンプ
CYES: AIA 8   ;Arの4ビット目をON
CNO: AIY F   ;Yrを1減らす
CIY 2      ;Yrは2?
JUMP CS      ;2以外ならループ
TIA 0
AM      ;アドレス52に0を入れる
LOOP: KA   ;キー待ち
JUMP LOOP
TIY 0
TIA 3      ;3から始める
MAIN:AM      ;アドレス50に現在の数値保存
CY      ;現在の数値を点灯アドレスにする
MA      ;Arに点灯番号
TIY F
AM      ;アドレス5Fに2進の左LED点灯番号
TIY 0
MA      ;もう一度アドレス50から現在の数値取得
TIY 1
M-      ;Arにアドレス51の数値(D)-現在の数値
CY      ;その数値を点灯アドレスに
MA      ;Arに点灯番号
TIY E
AM      ;アドレス5Eに2進の右LED点灯番号
CAL DSPR   ;2進LED点灯
TIA 0
CAL TIMR   ;タイマー
TIY 0
MA
AIA 1      ;Arに現在の数値+1
CIA C      ;現在の数値が12?
JUMP MAIN   ;12以外なら、次の点灯
JUMP LOOP   ;12なら、キー入力に戻る




posted by 司隆 at 20:58 | Comment(0) | TrackBack(0) | Computer
この記事へのコメント
コメントを書く
お名前: [必須入力]

メールアドレス:

ホームページアドレス:

コメント: [必須入力]


この記事へのトラックバック
×

この広告は180日以上新しい記事の投稿がないブログに表示されております。