2026.9.1
前へ
次へ
ホームページトップへ戻る


[新連載開始]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

前へ
次へ
ホームページトップへ戻る