[新連載開始]W65C02マイコンボードの製作
〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜
私としてはW65C02をさわるのは全く初めてです。何から何まで未経験です。さてどうなりますでしょうか。
〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜
[第61回]
●RMB,SMB
RMBはゼロページのビットをクリアする命令です。
フラグは変化しません。
RMBには以下の命令があります。
| ニーモニック | マシン語コード | アセンブラ書式 | バイト数 | クロック数 |
| RMB0 zp | 07 | RMB0 $12 | 2 | 5 |
| RMB1 zp | 17 | RMB1 $12 | 2 | 5 |
| RMB2 zp | 27 | RMB2 $12 | 2 | 5 |
| RMB3 zp | 37 | RMB3 $12 | 2 | 5 |
| RMB4 zp | 47 | RMB4 $12 | 2 | 5 |
| RMB5 zp | 57 | RMB5 $12 | 2 | 5 |
| RMB6 zp | 67 | RMB6 $12 | 2 | 5 |
| RMB7 zp | 77 | RMB7 $12 | 2 | 5 |
RMB0はzp(ゼロページ)のビット0をクリアします。
RMB1はzp(ゼロページ)のビット1をクリアします。
以下同様です。
SMBはゼロページのビットをセットする命令です。
フラグは変化しません。
SMBには以下の命令があります。
| ニーモニック | マシン語コード | アセンブラ書式 | バイト数 | クロック数 |
| SMB0 zp | 87 | SMB0 $12 | 2 | 5 |
| SMB1 zp | 97 | SMB1 $12 | 2 | 5 |
| SMB2 zp | A7 | SMB2 $12 | 2 | 5 |
| SMB3 zp | B7 | SMB3 $12 | 2 | 5 |
| SMB4 zp | C7 | SMB4 $12 | 2 | 5 |
| SMB5 zp | D7 | SMB5 $12 | 2 | 5 |
| SMB6 zp | E7 | SMB6 $12 | 2 | 5 |
| SMB7 zp | F7 | SMB7 $12 | 2 | 5 |
SMB0はzp(ゼロページ)のビット0をセットします。
SMB1はzp(ゼロページ)のビット1をセットします。
以下同様です。
[第57回]に書きましたようにW65C02の命令クロック数は下記サイトから引用させていただいております。
https://www.zophar.net/fileuploads/2/10533qqcap/6502ref.html
ところが今回の記事を書くにあたっていつものように上記から引用させていただこうとしましたところRMBもSMBも見当たりません。
完全に落ちているようです。
前回もそうですがこのところ欲しいデータが見つからない場合にはGoogle様にお聞きすることが多くなりました。
それで今回もお尋ねしましたところ即お答えいただきました。
ほんとすごいですねえ。

[第57回]ではちょいと疑って簡単なテストプログラムを作ってカメレオンロジアナで確認したのでしたが今回はそこまでしなくてもよいだろうということでGoogle様のご託宣をそのままいただくことにいたしました。
下がテストプログラム(ソースプログラム)です。
;w65c02test35 26/8/12
;
;RMB,SMB
;
org $8000
;
ldx #$07
lda #$ff
lp1:
sta $00,x
dex
bpl lp1
;
ldx #$07
lp2:
stz $10,x
dex
bpl lp2
;
rmb0 $00
rmb1 $01
rmb2 $02
rmb3 $03
rmb4 $04
rmb5 $05
rmb6 $06
rmb7 $07
;
smb0 $10
smb1 $11
smb2 $12
smb3 $13
smb4 $14
smb5 $15
smb6 $16
smb7 $17
stp
;end
|
W65C02アセンブラでアセンブルしました。

下はアセンブルした結果作成されたアセンブルリストです。
0000 ;w65c02test35 26/8/12 0000 ; 0000 ;RMB,SMB 0000 ; 8000 org $8000 8000 ; 8000 A207 ldx #$07 8002 A9FF lda #$ff 8004 lp1: 8004 9500 sta $00,x 8006 CA dex 8007 10FB bpl lp1 8009 ; 8009 A207 ldx #$07 800B lp2: 800B 7410 stz $10,x 800D CA dex 800E 10FB bpl lp2 8010 ; 8010 0700 rmb0 $00 8012 1701 rmb1 $01 8014 2702 rmb2 $02 8016 3703 rmb3 $03 8018 4704 rmb4 $04 801A 5705 rmb5 $05 801C 6706 rmb6 $06 801E 7707 rmb7 $07 8020 ; 8020 8710 smb0 $10 8022 9711 smb1 $11 8024 A712 smb2 $12 8026 B713 smb3 $13 8028 C714 smb4 $14 802A D715 smb5 $15 802C E716 smb6 $16 802E F717 smb7 $17 8030 DB stp 8031 ;end |
アドレス$00〜$07にはFFを入れておきます。
$10〜$07には00を入れておきます。
そして$00〜$07に対して順にRMB0〜RMB7を実行します。
また$10〜$17に対しては順にSMB0〜SMB7を実行します。
プログラムの実行終了後に$00〜$07、$10〜$17の値を確認します。
65c02test35.binをロードして実行しました。

/DM 00でゼロページを表示させました。
W65C02マイコンボードの製作[第61回]
2026.9.1 upload
前へ
次へ
ホームページトップへ戻る