2009年07月08日

レーザー光線:大幅な改造

 先日書いた、レーザー光線のプログラムだけど、また改造w
 というのも、これだけ長くなったのは「数字のシフトは、左→右しかできない」と思っていたからで、「右→左のシフトは、その数字を倍にする」事によって可能なのを教えてもらった。それを利用して改造、というか書き直し。
 そのおかげで、リストはかなり短くなった。

 また今回、リストからアセンブルするのに、TINY ASSEMBLER for FX-Micomのサイトを使わせてもらいました。本誌にも載っていたサイトを使わせてもらっていたけど、ジャンプ関係のバグがあったので。

リスト
00 (0000000)  0      KA
01 (0000001)  F  0  0  JUMP <00>
04 (0000100)  8  8    TIA <8>
06 (0000110)  A  F    TIY
08 (0001000)  4      AM
09 (0001001)  2      CH
0A (0001010)  8  0    TIA <0>
0C (0001100)  A  E    TIY
0E (0001110)  4      AM
0F (0001111)  6      M+
10 (0010000)  F  1  5  JUMP <15>
13 (0010011)  9  1    AIA <1>
15 (0010101)  4      AM
16 (0010110)  2      CH
17 (0010111)  E  6    CAL SIFT
19 (0011001)  F  1  F  JUMP <1F>
1C (0011100)  F  2  1  JUMP <21>
1F (0011111)  9  8    AIA <8>
21 (0100001)  4      AM
22 (0100010)  2      CH
23 (0100011)  E  D    CAL DSPR
25 (0100101)  8  0    TIA <0>
27 (0100111)  E  C    CAL TIMR
29 (0101001)  5      MA
2A (0101010)  C  0    CIA <0>
2C (0101100)  F  0  F  JUMP <0F>
2F (0101111)  F  0  0  JUMP <00>

START:
KA       ;キー待ち
JUMP START
TIA 08
TIY 0Fh
AM       ;左LEDセット
CH
TIA 00
TIY 0Eh
AM       ;右LEDセット
LOOP:
M+       ;右LEDシフト
JUMP ROK    ;桁上がりしてる?
AIA 01     ;していなければ、1ビット目を足す
ROK:
AM       ;右LEDセット
CH       ;左LEDに切り替え
CAL SIFT    ;左LEDシフト
JUMP LOK    ;元の数字は偶数?
JUMP LNO
LOK:
AIA 8      ;偶数なら、4ビット目を足す
LNO:
AM       ;左LEDセット
CH       ;右LEDに戻す
CAL DSPR    ;2進LED表示
TIA 0
CAL TIMR    ;タイマー
MA       ;Arを右LEDの値に戻す
CIA 0      ;右LEDは0?
JUMP LOOP    ;0でなければループ
JUMP START   ;0なら最初に戻る





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

メールアドレス:

ホームページアドレス:

コメント: [必須入力]


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

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