2011年9月30日金曜日

8ビットはここに。。

北海道でいくつか見つけた8ビットを紹介。

まずは、歌志内市郷土館 にあるPC-6001。
横のポータブル(?) 白黒テレビもすてき。。

次は、仁頃ハッカ御殿のX1。
キーボードだけでは?という突っ込みは無し

最後は、青函連絡船「摩周丸」の操舵室にあるFM-TOWNS。
こちらは現役で動作中。
ん?TOWNSは32bitか。

あとおまけで、苫小牧市科学センターにある無線・ラジオ系の雑誌。
整理されたのか、昔より減ってしまったが、入場料無料なので気軽に読める
ここにも旧ソ連製の古いパソコンが展示していた気がするが、うろ覚え

2011年9月19日月曜日

完成

これにて、パソピア700用USBキーボード・アダプタは完成。

ガチャガチャ押打するパソピアのキーボードも嫌いではないが、いまどきの軽いキータッチに慣れてしまうと、このUSBキーボードの方が使いやすい。


ALPHOSとか、マシン語のゲームも問題なく動作。

88mkII用USBキーボード・アダプタを購入してから、はや1年以上。ようやく、まともに動くものができました

協力してくれた皆さん、ありがとうございました。

キーマップ

USBキーボードとパソピアのキーボードは、キーが若干異なるので、以下のようにマッピング
USBキーボードパソピア700
EscTAB/ESC
TabSHIFT+TAB/ESC
F1~F8PF1~PF8
F9~12SHIFT+PF5~PF8
EndHOME/CLS
HomeSHIFT+HOME/CLS
半角/全角漢字
Print Screen(COPY)
Pause(STOP)
Caps Lock/英数CAPS LOCK
CtrlCTRL
ShiftSHIFT
AltGRAPH
1~0 A~Z Space - ^ ¥ @ [ ; : ] , . /同左
\(ろ)=(ロ)
Delete BackspaceINS/DEL
InsertSHIFT+INS/DEL
EnterRETURN
カタカナ/ひらがなカナ
↓/↑
← →同左
SHIFT+↓/↑
(10Key)0~9 . / * + -同左
※ 変換/無変換/Winキーは割り当てなし

パソピア7/700は、2つの役割を持たせているキーがあって、↓/↑とか、INS/DEL、HOME/CLS、TAB/ESC。

これらをシフトキーなしで入力できるようになったのは、かなり便利。
特に、↓/↑。カーソル移動は、劇的に楽になった。

2011年9月18日日曜日

クロック見直し

ATTiny2313と4313の定格クロックは最大20MHz。
現在は両方とも、オーバークロックの27MHzで動作させていたが、見直しして最適化することに。

USB制御側(ATTiny2313)は、USB low speed (1.5 M BPS)のデータ変化の周期(666.6ns)を作成するために、27MHz(18clock/bit)はそのまま。

パソピアへのキーリターン側(ATTiny4213)は、DIR信号に間に合うように返答する必要がある。
20MHzの場合、稀に間に合わない場合があったのでオーバークロックしたが、27MHzでは余裕があったので、24MHzに落としてみる。

ATTiny4313は、DIR信号の立ち上がりで、以下の割り込み処理を実施
(1) nOEをLowにセット
(2) Clock信号がLowになるのを待って、スキャン信号を取得
(3) スキャン信号に応じたリターン信号を発信。
(4) nOEをHighに戻す

課題は、DIR信号の立ち上がりから4313の割り込み開始までの間隔が0.1us程度のぱらつきがあること。
まずはクロックを24MHzにして波形を見てみる。

以下は割り込み開始が早い場合。
B0(nOE)がB1(Clock)立ち上がり前に切り替わるので、スキャン信号取得タイミングはnopで調整してある

以下は、割り込み処理開始が遅いパターン
B2(DIR信号)がLowになる前に、B0(nOE)をHighに戻すのが間に合っている

割り込み開始が早い場合でも遅い場合でも間に合いそうなので、24MHzを採用することに。

2011年9月17日土曜日

ケース

基板に足をつけて、ケースに固定する

ケースは、リュータで穴あけ、棒ヤスリで微調整。
蓋を閉めて、ひっくり返すとこんな感じ。

キーボードは、BUFFALOのBSKBU02LG。
パソピアに接続すると、こんな感じ。
キーボードがみょーに白い。

2011年9月12日月曜日

デュアルコア

さて、仕切り直し。

USBの割り込み禁止で、パソピアへのキーリターンができないタイミングがあるので、CPUを2つに。
片方はUSB処理に専念、もう片方はキーリターン専用にして、非同期で通信させる。

キーリターンが0.5usに間に合わない問題は、スキャンコード7bitをそのままアドレスに変換して、リターンコードを取得することで、ジャンプ命令を排除。INT0割り込み処理で必要クロック数を最小にすることで対処。

ただ7bit=128byteは、ATTiny2313のSRAM容量いっぱいで、ぎりぎりアウト。キーリターン側は、ATTiny4313を導入することに。クロックは、どちらも定格20MHzをオーバークロック27MHzで動作。

基板を準備。裏はこんな感じ。通電させないパターンは、予めリューターでカットしておく。

コネクターは、CDチェンジャー用を切断して利用。
コネクター内部で3pinと7pinがつながっていたので、分解して切り離し。

完成した配線は、こんな感じ。



2011年9月10日土曜日

ATTiny4313とAVR Dragon

このままでは使い物にならないので、ATTiny4313を投入することに。
TOP2007は4313をサポートしていないので、プログラマとしてAVR Dragonを選択。

4313とDragonは、DigiKeyで購入。
AVR Dragonはシウマイのような赤い箱に入って、基板だけ。マニュアルも付いてなかったで、Atmelのヘルプで調べてみる。

まずは、ピン(HV_PROG 20ピン、DEVICE 40ピン)と、ゼロプレッシャーソケットを半田付け。

次に、ISP(In System Programming)用の基板を作成。配線はSCKT3300D3を参考。対応デバイスは2313のみだが、4313もこれでOKだった。外部クロックを供給できるできるように、クリスタルも接続。

ISP用の基板を付けてみると、こんなかんじ。

USBでPCに接続して、AVR Studio 5.0で、「Tools」→「AVR Programming」メニューを選択。
プログラマーはAVR Dragon、デバイスはATTiny4313、インターフェイスはISPを選択。
ISPクロックは、デバイス動作クロックの1/4以下を設定しておく。

んで試しに書き込みしてみると、フラッシュ書き込みはOK。
しかし、ヒューズ設定で「RSTDISBL」を有効にして書き込むと、

フラッシュ書き込みもヒューズ読み込みもできなくなってしまった。

例の2313のエラッタは、4313にも受け継がれていた。

試しにTOP2007で、ヒューズ設定を戻してみると、再びDragonで読み書きできるようになった。
今回もTOP2007に助けられた。

2011年9月9日金曜日

パソピア700用USBキーボード・アダプタ

パソピア用の回路を書いてみる

74HC574APとSN74LS541の親亀小亀で

配置は、こんな感じ

ファームは、USB処理は西田さんのコードを参考、パソピアへのキーリターンはINT0割り込み処理でスクラッチから書いてみる。

んで実際に動かしてみると、時々キーが化ける。
Aキーを長押ししてると、たまにZが入力されたり、別のキーが入ったり。

波形を見てみると...

リターンが間に合ってない。
その他の原因として、USB処理中に割り込み禁止のタイミングあるので、INT0割り込みが遅れる時もあるはず。

10回に1回くらいキーが化けるので、ちょっと使い物にならん。

2011年9月8日木曜日

ATTiny2313

波形から、88mkII用USBアダプタをそのまま使うのは難しそうなので、基板を作ることに。

マイコンは同じATTiny2313。
ROMプログラマーが無かったので、TOP2007というのを購入。

デフォルトでATTiny2313をサポートしてて、これが結構よかった。

ATTiny2313は、PA2ピンをリセットピンとして使うかI/Oピンとして使うか、ヒューズ設定で切り替えられるが、I/Oピンを使う設定(RSTDISBL=0)にすると、プログラミングできなくなる(SELFPRGEN=0)エラッタがある。

TOP2007は、この状態でもヒューズ変更ができ、(RSTDISBL=1)と(SELFPRGEN=1)をセットすると、再びプログラミング可能に戻すことができる。

今回は、こいつのおかげで助かったが、それにしても、このエラッタはひどい...

2011年9月7日水曜日

波形

計測した波形を見ると、パソピアからキースキャン信号が届き、キーボードはそのスキャンライン上に押されたキーがあればリターン信号を返答する、という挙動。
PIN3~9がキースキャン、PIN3~10がキーリターンで共用。タイミングによって切り替わる。
PIN12(DIR)がHighでパソピアからスキャンラインとブロック信号が届くので、PIN11(CLOCK)の立ち上がりで、その信号を保持。

スキャンライン(KSL)とブロック信号(KB)から、キースキャン(nKS 0~B)の12通りを判断
KSL 0KSL 1KSL 2KSL 3
KB_AnKS 0nKS 1nKS 2nKS 3
KB_BnKS 4nKS 5nKS 6nKS 7
KB_CnKS 8nKS 9nKS AnKS B

DIRがLowになったら、そのキースキャン上で押されているキーをリターン(nKR)
DIRがHighの時間は1usで、CLOCKの立ち上がりは、ほぼその真ん中。
つまりキーボードは0.5us以内に、スキャン信号を読み取り、そのキースキャン上で押されているキーがあればリターン信号として返答していることに。

デフォルトはオールスキャン状態。キーボードは、押されたキーリターンを全て返答すればよい。
何かキーリターンすると、しばらくして37.5us間隔でキースキャン13回(KS 0~Bの12回と、最後はオールスキャン)が届くので、キーボードはそれぞれに対応するキーリターンをする

2011年9月5日月曜日

PC-8801mkII用USBキーボード・アダプタ

きっかけは、西田ラヂオさんのPC-8801mkII用USBキーボード・アダプタ。

同じDIN13pinだし、そのまま動けばラッキーの勢いで購入。

が、やはり動かず...
時々でたらめなキーが入力されたので、ファーム書き換えで動くかも、と調査を開始。

キーボードと本体の間に中間基板を用意し、ロジアナで波形を吸出してみる。

いないと思いますが、パソピア700に88キーボードを接続してはいけません。
信号が衝突して壊れる可能性があります。

2011年9月4日日曜日

PASOPIA700

Oh!PASOPIAの記事によると、パソピア700は
・東芝と旺文社が開発した家庭学習システムで利用されるパソコン
・東芝と旺文社が出資して作った会社が、訪問販売で販売する
とのこと。

スペックはパソピア7をベースに、5inch FDDを内蔵してキーセパレートにしたものと思われ。
前面にPACスロット2があるが、PACスロット1は無し。(マザーボードにコネクタはあるのだが)

セパレートされたキーボード信号を調べてみたので、備忘録がてらブログにまとめてみようと思う。