INS8070
カテゴリー:
INS8073のBASICでユーザが用意したコンソール入出力ルーチンを使う方法を予定していましたが、到着を待っていたCPUが届いたので先に取りあげることにします。
National SemiconductorのINS8070、そもそもINS8070ボードを製作した目的のデバイスです。
製造は1983年の26週のようですね。
INS8073のROMを読む(続き)
INS8073のROMを読む
カテゴリー:
INS8070ボードでROMのBASICの1文字入出力ルーチンを独自のものにしようとしてうまくいかなかったと書きましたが、モニタを移植したことでROM内を読めるようになったので関連箇所を調べてみることにしました。
まずはPコマンドでROMのアドレス範囲(0x0000~0x09FF)をPCに持ってきます。
手頃な逆アセンブラがないかネットを探してみたのですが見当たらなかったので簡単なものを書いてしまいました。
さて、どこから手を付けるかですが、先頭から読んでいくのはしんどいです。
今回調べたいのは文字入出力だけなのでメッセージから追っていくことにします。
メモリダンプを見ていくとASCII文字列がいくつもありますが、多くはBASICの予約語なので今回の目的には使えません。その中で良さそうなものが見つかりました。
INS807xにモニタを移植
カテゴリー:
前回書き始めていたモニタですが、いつものようにD(ump)コマンドが動くころには慣れてしまって残りはサクサク進み基本的なD,G,S,Lコマンドはすぐにできました。今回はちょっとわけあってP(unch)コマンドも追加しています。
SC/MP(I と II)とは以下のような相違点があります。
- 16ビット演算命令
これ自体は便利でありがたいのですが、キャリ/ボロー込みの加減算命令がなくなってしまいました。モニタには必要ありませんでしたが、16ビットを超える演算は相当面倒になると思われます。条件分岐がAレジスタ(下位8ビット)でしかできないのも意外に不便です。
SC/MPでは16ビットの値をメモリとやり取りすることがなかったのでエンディアンの概念がありませんでしたが、SC/MP IIIはリトルエンディアンです。 - スタックとサブルーチン
サブルーチン呼び出しの機能が追加されたのは助かります。同時に長距離ジャンプも追加され、4kBページの制約も解消されています。
INS8070ボード
カテゴリー:
CDP1802ボードの次は何にしよう、と考えていて選んだのがこれです。実は先日eBayを眺めていてついINS8070をポチってしまったので...
いつものようにEMILY Boardで動かします。
私は普段ボードを作るときは少なくともメインのチップを手に入れて(ヘタをすると何年も寝かせて)からなのですが、今回は珍しく到着前に作り始めてしまいました。
作っているうちに着くかなと思っていたのですが... 海外からなので時間がかかっているようです。
COSMACのI/O
カテゴリー:
このところCOSMAC関係が続いておりますが、今回をもって一旦終わる予定です。
ソフトウェアUARTも動いたことですし今更感もあるのですが、せっかく準備したUSARTも動かしてみました。
当初8251を考えていましたが、せっかく他がCMOSなのでそれに合わせるためと、クロックを5MHzにしてしまったので分周しなくても使えるという理由からμPD71051Cを使うことにしました。
ソフトウェアUART
カテゴリー:
前々回や前回書いたような厄介な点はありましたが、CDP1802ボードでUniversal Monitorを動かすのは思っていたより簡単でD(ump), G(o), S(et), L(oad)の各コマンドは動作するようになりました。
そうなると今度はSBC1802でも動かしてみたくなります。
ところがこれにはUART相当のハードウェアは無く、CPU内蔵のQ, EF3をシリアルポートとして使うようになっています。UARTの機能をソフトウェアで実現しなくてはなりません。
COSMACでサブルーチン
COSMACのソフトウェア
カテゴリー:
CDP1802のハードウェアができたのでいつものようにUniversal Monitorを移植していきます。
以前SC/MP使いの憂鬱で書いたようにSC/MPはかなり癖の強いアーキテクチャでしたが、このCOSMACも負けず劣らずですね。
- PCがない
プログラムカウンタに相当するものが無いわけではありません。複数あるレジスタのどれをプログラムカウンタとして使うか選択できるようになっています。専用のものがないという点でだいぶ変わっています。