ASをCP-1600対応に

2021-10-24 21:29 - asano

CP-1600を実際に動かしてみるとなると問題になるものの一つとして開発環境をどうするかというのがあります。

ざっと探してみましたが使えそうなアセンブラが見当たりません。

Cコンパイラなどが無いのはともかく、アセンブラも無いのはさすがに困ります。いくら昔を懐かしむといっても今さらハンドアセンブルはしたくありません。

というわけで以前ASをMN1610対応させたようにCP-1600対応のコードジェネレータを書いてみました。

16ビットワードマシンであることなどMN1610に似ている点もあり、基本的な枠組みはMN1610とほぼ一緒です。

続いて各命令のデコーダを書いていきますが、結論から言うととても楽でした。

TMPZ84C015のRレジスタ

2021-10-11 12:42 - asano

テーマ

カテゴリー

TMPZ84C015にはA7RFという出力があって、リフレッシュアドレスが8ビットになっているのですが、そうなるとRレジスタの動きはどうなるのだろうという疑問が出てきます。ならば現物で確認するのが一番、というわけでAKI-80を引っ張り出して動かしてみることにしました。


いずれEMILY Boardにつなげてみたいということでそれを意識した配置にしています。

でもまずは上記の疑問を解決したいということで最低限の配線しかしていません。

uPD78C10

2021-10-01 17:11 - asano

テーマ

カテゴリー

μCOM-87シリーズはQuad in-line Packageで取り上げたμPD7800Gがありますが、シュリンクDIP品を見かけたので買ってみました。


μPD78C10ACW、μCOM-87ADファミリの一員です。NECの独自アーキテクチャのいわゆるワンチップマイコンです。

レジスタセットはBC, DE, HLなどというのがあって、しかも2セットを交換できるなどZ80によく似ています。命令は(まだデータシートを流し読みしただけですが)ニーモニック数が多い印象ですね。

μCOM-87/ADファミリはサポートする命令によっていくつかのグループに分かれます。

INS8070ボード(その2)

2021-09-28 22:25 - asano

テーマ

カテゴリー

手持ちのINS8073/Nを仮に載せていたINS8070ボードですが、INS8070も到着したことですし、INS8073でやろうとしていたことも一通りできたので、本来のINS8070に載せ替えました。


INS8073とINS8070の違いは内蔵ROMの有無だけですのでそのまま載せ替えられますが、メモリ配置は変更が必要です。

0x0000番地から起動用のメモリが必要なので0x1000~0x1FFFに配置していたものを0x0000~0x0FFFに移動しました。0xF000以降をRead Onlyにしておく理由もなくなったので書き込み可能にしました。

INS8073のBASICで独自のコンソールを使う

2021-09-27 21:58 - asano
カテゴリー

前にBASICの持つコンソールルーチンをモニタから使用する方法を書きましたが、今度は逆に独自に用意したコンソールルーチンをBASICに使用させる方法です。

こちらは一応マニュアルにも載っている公認の機能です。

マニュアルの情報不足と誤りのせいでROMを読むまでは動かせませんでしたが...

ということでINS8073のコンソールの設定方法についてまとめておきます。

INS8070

2021-09-25 19:01 - asano

テーマ

カテゴリー

INS8073のBASICでユーザが用意したコンソール入出力ルーチンを使う方法を予定していましたが、到着を待っていたCPUが届いたので先に取りあげることにします。


National SemiconductorのINS8070、そもそもINS8070ボードを製作した目的のデバイスです。

製造は1983年の26週のようですね。

INS8073が8051やTLCS-90などのように内蔵ROMを切り離せれば良かったのですが、データシート見るかぎりできそうもないのでROM無しのINS8070を探し出すことになりました。現役の頃はどうだったのかわかりませんが、現在ではTiny BASICのROM入りのINS8073の方が安くまた入手も容易です。

INS8073のROMを読む(続き)

2021-09-24 20:59 - asano

前回、ROM内のコンソールからの1文字入力ルーチンは0x092Bではないかという予測が立ちました。これをもう少し確認してみます。

まず0x0020~0x003FまでのCALL命令のベクタには0x092Bは登場しません。

それではJSR 0x092Bはどこかにないか、と探してみると1箇所だけありました。1箇所からしか呼ばれないなら貴重なCALL命令のベクタを割り当てないのも納得がいきます。

例によって付近を逆アセンブルしてみます。