GI CP-1600A
また買ったまま忘れていたデバイスです。最近ブレッドボードで動かそうとされている方がいて思い出しました。
General InstrumentのCP-1600A、1982年48週の製造のようです。
また買ったまま忘れていたデバイスです。最近ブレッドボードで動かそうとされている方がいて思い出しました。
General InstrumentのCP-1600A、1982年48週の製造のようです。
TMPZ84C015にはA7RFという出力があって、リフレッシュアドレスが8ビットになっているのですが、そうなるとR
レジスタの動きはどうなるのだろうという疑問が出てきます。ならば現物で確認するのが一番、というわけでAKI-80を引っ張り出して動かしてみることにしました。
いずれEMILY Boardにつなげてみたいということでそれを意識した配置にしています。
でもまずは上記の疑問を解決したいということで最低限の配線しかしていません。
前回μCOM-87/ADファミリの命令についてグループを書きましたが、詳しく見てみると結構複雑な状況でした。
まずはプロセッサのグループ分け、このグループ自体は前回のものであっています。
μCOM-87シリーズはQuad in-line Packageで取り上げたμPD7800Gがありますが、シュリンクDIP品を見かけたので買ってみました。
μPD78C10ACW、μCOM-87ADファミリの一員です。NECの独自アーキテクチャのいわゆるワンチップマイコンです。
レジスタセットはBC
, DE
, HL
などというのがあって、しかも2セットを交換できるなどZ80によく似ています。命令は(まだデータシートを流し読みしただけですが)ニーモニック数が多い印象ですね。
μCOM-87/ADファミリはサポートする命令によっていくつかのグループに分かれます。
手持ちのINS8073/Nを仮に載せていたINS8070ボードですが、INS8070も到着したことですし、INS8073でやろうとしていたことも一通りできたので、本来のINS8070に載せ替えました。
INS8073とINS8070の違いは内蔵ROMの有無だけですのでそのまま載せ替えられますが、メモリ配置は変更が必要です。
0x0000番地から起動用のメモリが必要なので0x1000~0x1FFFに配置していたものを0x0000~0x0FFFに移動しました。0xF000以降をRead Onlyにしておく理由もなくなったので書き込み可能にしました。
前にBASICの持つコンソールルーチンをモニタから使用する方法を書きましたが、今度は逆に独自に用意したコンソールルーチンをBASICに使用させる方法です。
こちらは一応マニュアルにも載っている公認の機能です。
ということでINS8073のコンソールの設定方法についてまとめておきます。
INS8073のBASICでユーザが用意したコンソール入出力ルーチンを使う方法を予定していましたが、到着を待っていたCPUが届いたので先に取りあげることにします。
National SemiconductorのINS8070、そもそもINS8070ボードを製作した目的のデバイスです。
製造は1983年の26週のようですね。
INS8073が8051やTLCS-90などのように内蔵ROMを切り離せれば良かったのですが、データシート見るかぎりできそうもないのでROM無しのINS8070を探し出すことになりました。現役の頃はどうだったのかわかりませんが、現在ではTiny BASICのROM入りのINS8073の方が安くまた入手も容易です。
前回、ROM内のコンソールからの1文字入力ルーチンは0x092Bではないかという予測が立ちました。これをもう少し確認してみます。
まず0x0020~0x003FまでのCALL
命令のベクタには0x092Bは登場しません。
それではJSR 0x092B
はどこかにないか、と探してみると1箇所だけありました。1箇所からしか呼ばれないなら貴重なCALL
命令のベクタを割り当てないのも納得がいきます。
例によって付近を逆アセンブルしてみます。
INS8070ボードでROMのBASICの1文字入出力ルーチンを独自のものにしようとしてうまくいかなかったと書きましたが、モニタを移植したことでROM内を読めるようになったので関連箇所を調べてみることにしました。
まずはPコマンドでROMのアドレス範囲(0x0000~0x09FF)をPCに持ってきます。
手頃な逆アセンブラがないかネットを探してみたのですが見当たらなかったので簡単なものを書いてしまいました。
さて、どこから手を付けるかですが、先頭から読んでいくのはしんどいです。
今回調べたいのは文字入出力だけなのでメッセージから追っていくことにします。
メモリダンプを見ていくとASCII文字列がいくつもありますが、多くはBASICの予約語なので今回の目的には使えません。その中で良さそうなものが見つかりました。