LoginSignup
0
1

More than 3 years have passed since last update.

RETROF-16 部品実装(その4)

Posted at

RETROF-16 部品実装(その4)

液晶モニタへの画像信号の生成回路(画像左上部分)以外はほぼ実装を終えた所

R0010138.JPG

本記事に対応する最新回路図はこちらです
RETROF-16 部品実装(その1)はこちらです
RETROF-16 部品実装(その2)はこちらです
RETROF-16 部品実装(その3)はこちらです

各種アドレッシングモードの実装/試験

本機RETROF-16は全機械語命令共通の4つのアドレッシングモードを有します。以下がその概略です。Xが命令種別、Aがアドレッシングモード、そして nはアドレッシングモードにより意味が変わるビットです。

本機の機械語命令コードの一般形

15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
X X X X X X A A n n n n n n n n
AA アドレッシングモード
00 nで示す値(0~255)がそのまま実効値(もしくは実効アドレス)となる
01 nで示すレジスタ(0番レジスタ~255番レジスタのいずれか)の値が実効値(もしくは実効アドレス)となる
10 nで示すレジスタが示すの主メモリの値(0~65535)が実効値(もしくは実効アドレス)となる
11 nは無視され、この命令語の次の語の値(0~65535)が実効値(もしくは実効アドレス)となる。本モードは2ワード命令となる。

ここでは、このアドレッシングモードを一つずつ試験します。この試験には74LS155(U31)と、F5~F11の実装が必要です。(本記事冒頭の画像はこれらの実装をした後のものです)
アドレッシングモードは全機械語命令で共通ですので、その試験は最も単純な機械語命令である「無条件HALT命令」にて行います。この命令は停止時にアドレッシングモードとオペランドで決定する値をアドレスバスに放出しますので、結果の視認も簡単です。

(1) 8bit即値アドレッシングモードによる無条件HALT命令の動作確認

命令コード0CXXを与えます。XXは任意の8bit値であり、この値(0~255)をアドレスバスに放出した状態で停止します。ここでは命令コードを0C55とし、それを0番地に書込み、0番地から実行します。

Φ アドレス
バスの値
データ
バスの値
IRの値 補足説明
0 不定 0000 不定 PCの値がデータバスに放出される
1 0000 0000 不定 PCの値がWRに転写される
2 0000 0C55 不定 実行すべき命令のコードが
データバスに放出される
3 0055 0055番地の
メモリの値
0C 命令コードの上位8bitがIRに、
下位8bitがWRに転写される
WRの上位8bitはゼロクリア)
4~7 同上 同上 同上
8~9 同上 0001 同上 データバスには次の命令の
アドレスが表示される
10 同上 アドレスバスの
ビット反転値
同上 アドレスバスに0055を放出し停止。
これ以上STEPボタンを押しても
Φの値は変化しない

(2) レジスタアドレッシングモードによる無条件HALT命令の動作確認

命令コード0DXXを与えます。XXは任意の8bit値であり、この値(十進で0~255)をレジスタ番号として、そのレジスタに格納されている値をアドレスバスに放出して停止します。ここでは命令コードを0D55とし、それを0番地に書込み、0番地から実行します。
本機の汎用レジスタは全て仮想レジスタであり、その実態は主メモリの0000~00FF番地にマッピングされています。従ってレジスタ番号として55Hを指定する本試験は予め0055番地に特定の値(ここでは1111とした)を書き込んでおく必要があります。

Φ アドレス
バスの値
データ
バスの値
IRの値 補足説明
0 不定 0000 不定 PCの値がデータバスに放出される
1 0000 0000 不定 PCの値がWRに転写される
2 0000 0D55 不定 実行すべき命令のコードが
データバスに放出される
3 0055 1111
0055番地の
メモリの値
0D 命令コードの上位8bitがIRに、
下位8bitがWRに転写される
WRの上位8bitはゼロクリア)
4~6 同上 同上 同上
7 1111 1111番地の
メモリの値
同上 データバスの値がWRに複写される
8~9 同上 0001 同上 データバスには次の命令の
アドレスが表示される
10 同上 アドレスバスの
ビット反転値
同上 アドレスバスに1111を放出し停止。
これ以上STEPボタンを押しても
Φの値は変化しない

(3) レジスタ間接アドレッシングモードによる無条件HALT命令の動作確認

命令コード0EXXを与えます。XXは任意の8bit値であり、この値(十進で0~255)をレジスタ番号として、そのレジスタが示す主メモリの値をアドレスバスに放出して停止します。ここでは命令コードを0E55とし、それを0番地に書込み、0番地から実行します。
本試験は予め0055番地に特定の値(ここでは1111とした)を、更に1111番地に特定の値(ここでは3333とした)書き込んでおく必要があります。

Φ アドレス
バスの値
データ
バスの値
IRの値 補足説明
0 不定 0000 不定 PCの値がデータバスに放出される
1 0000 0000 不定 PCの値がWRに転写される
2 0000 0E55 不定 実行すべき命令のコードが
データバスに放出される
3 0055 1111
0055番地の
メモリの値
**0E
** 命令コードの上位8bitがIRに、
下位8bitがWRに転写される
WRの上位8bitはゼロクリア)
4 同上 同上 同上
5~6 1111 3333
1111番地の
メモリの値
同上 データバスの値がWRに複写される
7 3333 3333番地の
メモリの値
同上 データバスの値がWRに複写される
8~9 同上 0001 同上 データバスには次の命令の
アドレスが表示される
10 同上 アドレスバスの
ビット反転値
同上 アドレスバスに3333を放出し停止。
これ以上STEPボタンを押しても
Φの値は変化しない

(4) 16bit即値アドレッシングモードによる無条件HALT命令の動作確認

このアドレッシングモードは2ワード命令となります。
は命令コード0FXX、YYYYを与えます。XXはこのモードでは意味を持ちません。YYYYは任意の16bit値であり、この値をアドレスバスに放出して停止します。
ここでは命令コードを0F00、1234とし、それを0番地と1番地に書込み、0番地から実行します。

Φ アドレス
バスの値
データ
バスの値
IRの値 補足説明
0 不定 0000 不定 PCの値がデータバスに放出される
1 0000 0000 不定 PCの値がWRに転写される
2 0000 0F00 不定 実行すべき命令の第1ワードが
データバスに放出される
3 0000 0F00
0000番地の
メモリの値
0F 命令コードの上位8bitがIRに、
下位8bitがWRに転写される
WRの上位8bitはゼロクリア)
4 0000 0001 同上 インクリメントされたPCの値が
データバスに放出される
5 0001 0001 同上 PCの値がWRに転写される
6 0001 1234
00001番地の
メモリの値
同上 データバスの値がWRに複写される
7 1234 1234番地の
メモリの値
同上 データバスの値がWRに複写される
8~9 同上 0002 同上 データバスには次の命令の
アドレスが表示される
10 同上 アドレスバスの
ビット反転値
同上 アドレスバスに1234を放出し停止。
これ以上STEPボタンを押しても
Φの値は変化しない
0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1