2014年12月30日火曜日

プリント基板到着

先日、ユニクラフト(http://unicraft-jp.com)にお願いした基板が届いた。
注文したのが12/14だったので年明けを覚悟していたが、思っていたよりも早く届いてよかった。。

漢字ROM PAC2、JOY PAC2と一緒に並べてみる。

こちらは部品面。シルク文字も綺麗に入っている。
JOY PAC2の上に置いてみたが、大きさも大丈夫。

半田面の仕上がりも、とても綺麗

取り付ける部品を並べてみた。

明日から、少しずつ取り付けてみよう。。

2014年12月14日日曜日

プリント基板作成

以前作成したPAC2コンボカード
プリント基板を作ってみようと思う。

調べてみたら、ユニクラフト(http://unicraft-jp.com)が安くて評判がよさそう。
製造依頼には拡張ガーバー(RS-274X)が必要なので、以前作成したEagleの回路図から作ってみる

回路図からプリント基板図を作成すると、部品が左側に配置される。
基板サイズは、PAC2スロットに収まるように、横100mm×縦65mmにする

部品配置してワイヤーを引くと交差が多い配置になってしまったので、AVR周りを中心に配線を見直し
あとEagleの場合、デザインルール指定してチェックできるので、以下パターンでチェックしてみる。
最小パターン幅0.18mm、最小ランド間距離0.2mm、スルーホール最小サイズ0.3mm

エラーがでたところは配置を見直しながら修正、出来たのが以下の基板図
間隔は狭いが、ぎりぎり収まった。

RS-274Xデータを作成するため、EagleのCAMジョブから必要なファイルをエクスポートする。

「excellon.com」から、ドリルデータもエクスポートする

PCBEを起動して、「ファイル」→「ガーバー入力」でEagleで作成したRS-274Xファイルをインポート
Eagleが作成したデータは少数4桁なので、ドリルデータも含めて4桁を指定する。

インポートした後、シルク文字や部品レジストの微調整を行って、できたのが下の基板図。

ファイル名を以下のように指定、「拡張出力」にチェックしてRS-274Xファイルにエクスポート。
作成されたRS-274XファイルをZIP圧縮して、見積もり・製造依頼してみる。

初めての基板作成でミスもあると思うし、年末で時間がかかると思われるが、進捗があれば追って報告したいと思う。

2014年11月29日土曜日

Z80 Collection

先日、秋葉原に行った際に、うわさのガチャを発見

400円だったので、記念に1回やってみた。
選んだのは「ぜっぱちこれくしょん」

日立製が出てきた。


今のところ、使い道は無い。。

2014年10月5日日曜日

Space Shooter

I/O 1983年1月号に掲載されていた、初代パソピア用のSpace Shooter

いわゆるアレです。

エミュでは色がおかしかったので、実機での画面。
かなりいいです。
名古屋撃ちもできるとのこと。

動画は、こちら

先日作った128KB RAM PAC2に入っているので、起動はやいです。

2014年9月22日月曜日

PiPo Ver.6.2B

以前紹介した98

中はAT互換機なので、起動時に「プッ」しか鳴らない。
せっかく98ガワを使っているので、やはり「ピポッ」と鳴らしたい。

前々から気になっていたPiPoをようやく購入
Ver.6.2Bだった。
スポンジとPC側と接続するケーブルも付属。

半田で組み立て。

98のスピーカー横に取り付け。
そのままだとショートするので、間にスポンジを挟んで鉄板に固定

あと、PiPoとは関係ないが、この98、最近FD読み取りに失敗することが多くなった。
せっかく蓋を開けたので、一緒に交換しておく。
NEC FD1231T。同じ型番で98用もあるようだが、Compaq用のシールもありAT互換機用

FDDも交換完了。
PiPoは、この写真で左側にある。

唯一残念なのは、このマザーボード(P5N-D)の場合、電源ONから「ピッ」がなるまで10秒以上かかってしまうため、PiPo側のスルー時間を最大まで調整しても、間に合わない。。
「ピポッ」のあと、「ピッ」もなってしまう。。

動画はこちら


2014年8月3日日曜日

PAC2コンボカード

RAM PAC2から始まったパソピア用PAC2コンボカードは、これで一旦終了

主な機能は、以下のようになった
・128KB (64KB x 2) RAM PAC2
・SDカード (FAT対応)
・Joystickアダプタ
・漢字ROM PAC2

特徴は、不揮発メモリ(MRAM)を使ったので、純正RAM PAC2と異なり電池不要。
また、PAC拡張ユニットなしで1スロットに集約できたのも特徴

スロットの切り替えは、PAC拡張ユニットの命令がそのまま利用可能
スロット番号機能備考初代パソピアでの利用
1JoystickアダプタMSXタイプジョイスティックOUT &H1B,1
2漢字ROM PAC2
OUT &H1B,2
364KB RAM PAC2 #2 (ドライブ6)MRAM (不揮発メモリ)OUT &H1B,3
464KB RAM PAC2 #1 (ドライブ5)MRAM (不揮発メモリ)OUT &H1B,4 (デフォルト)
74KB RAM PAC2 #3 ※SRAMOUT &H1B,7

※スロット7は、SRAMのため電源OFF時にクリアされる
・SDカードアクセス時に、バッファとして使うため、メモリ内容は変更される
・フォーマットすると、4KBのRAM PAC2として利用可能
・T-BASIC7の場合、SLOT命令でドライブ切替え可能
 「SLOT 7」:ドライブ5は、4KB RAM PAC2 #3
 「SLOT 4」:ドライブ5は、64KB RAM PAC2 #1

T-BASIC7で利用する場合、特別な変更は必要ないが、
初代パソピアで利用する場合は、SLOT命令が使えないので、OUT命令で切替えが必要

SDカードの読み書きは、SLOT7のバッファを通してコマンドで制御する
戻り値もSLOT7のバッファに書き込まれる
機能コマンドパラメータ戻り値備考
MRAMのメモリ内容を
SDカードのファイルへセーブ
sv [slot] [file name][slot] : セーブ元
 5 : RAMPAC1: SLOT4: デフォルト装置番号5
 6 : RAMPAC2: SLOT3: デフォルト装置番号6
 7 : BUFFER: SLOT7
[file name] : SDカードセーブ先ファイル名
 "/"から始まった場合、絶対パス
Ok : セーブが成功した場合
(エラー文字列) : エラーが発生した場合
事前に、SDカードにファイルが存在する必要がある
ファイル名は、半角英数8.3形式
書き込み後も、タイムスタンプは更新されない
SDカードのファイルをロードld [slot] [file name][slot] : ロード先
 0 : SDカードの漢字ROMファイルをAVRに保存
 5 : RAMPAC1: SLOT4: デフォルト装置番号5
 6 : RAMPAC2: SLOT3: デフォルト装置番号6
 7 : BUFFER: SLOT7
[file name] : SDカードロード元ファイル名
 "/"から始まった場合、絶対パス
Ok : セーブが成功した場合
(エラー文字列) : エラーが発生した場合
漢字ROMは、ファイル読み込み後にフラッシュと
EEPROMに保存する
フォルダとファイルの
リストを表示
ls [path][path] : 読込元のSDカードのパスとファイル名(ファイル名 or フォルダ名)の一覧
(エラー文字列) : エラーが発生した場合
フォルダの場合は名称の最後に"/"が付く
カレントディレクトリの変更cd [path][path] : パス名(フォルダ名) : カレントフォルダ
(エラー文字列) : エラーが発生した場合
電源OFFされるまで、パスは保持される

64KBのRAM PAC2は、純正のフォーマッタでは対応できていない様子。
純正フォーマッタを使わずに、フォーマット済みイメージのバイナリファイルを用意して、ld命令で各ドライブにマウントすれば64KBフルに使えるようになる。

Eagleで回路図を作ってみた。

結局、基板は2枚に。

この配線をもう一度作るのは、かなり厳しい。。
プリント基板が作れるとよいのだが。

2014年8月2日土曜日

漢字ROM組込み

ここまできたら、漢字ROMにも対応してみる。

ATmega1284Pは、128KBのフラッシュメモリ、4KBのEEPROM、16KBのSRAMを持っている。
パソピアの漢字ROMは128KBなので、漢字ROMも内蔵できるようにしてみる。

SDカードから漢字ROMを読み込んで、フラッシュメモリに書き込めるようにブートローダに対応する。
プチFatFsに対応したためプログラムサイズは8KB近くになった。
ブートローダ領域は、ATmega1284P最大の4096ワード(8KB)にセットする。
LockとFuseビットは、以下のように

Lock Bit
11111111
|||||||+-- LB1
||||||+--- LB2
|||||+---- BLB01
||||+----- BLB02
|||+------ BLB11
||+------- BLB12
++-------- -

0xFF
1 (非プログラム) LB1~0=11:フラッシュとEEPROMメモリに対する一般保護用施錠ビット:施錠しない
1 (非プログラム)
1 (非プログラム) BLB02~01=11:フラッシュメモリの応用領域に対する一般保護用施錠ビット:施錠しない
1 (非プログラム)
1 (非プログラム) BLB12~11=11:フラッシュメモリのブートローダー領域に対する一般保護用施錠ビット:施錠しない
1 (非プログラム)
1 (非プログラム)
Extended
11111100
|||||||+-- BODLEVEL0
||||||+--- BODLEVEL1
|||||+---- BODLEVEL2
+++++----- -

0xFC
0 (プログラム) 低電圧検出(BOD)リセットの制御と検出電圧選択 111:無し,110:1.8V,101:2.7V,100:4.3V
0 (プログラム) BODLEVEL2~0=100:低電圧検出(4.3V)リセット
1 (非プログラム)
1 (非プログラム)
High
11011000
|||||||+-- BOOTRST
||||||+--- BOOTSZ0
|||||+---- BOOTSZ1
||||+----- EESAVE
|||+------ WDTON
||+------- SPIEN
|+-------- JTAGEN
+--------- OCDEN

0xD8
0 (プログラム) ブートローダーを使用。
0 (プログラム) BOOTSZ1~0=00:ブートローダ領域=4096、ページ数=32、ブートリセットアドレス=$F000
0 (プログラム)
1 (非プログラム) 消去でEEPROMを 1:消去, 0:保持
1 (非プログラム) WDTはWDTCSR(ウォッチドックタイマ制御レジスタ)で許可
0 (プログラム)   シリアルプログラミング許可
1 (非プログラム) 1:JTAG禁止, 0:JTAG許可
1 (非プログラム) JTAGデバッグを 1:無効, 0:有効
Low
11110111
|||||||+-- CKSEL0
||||||+--- CKSEL1
|||||+---- CKSEL2
||||+----- CKSEL3
|||+------ SUT0
||+------- SUT1
|+-------- CKOUT
+--------- CKDIV8

0xF7
1 (非プログラム) CKSEL0=1,SUT1~0=11:外部クリスタル発振子、低速上昇電源
1 (非プログラム) CKSEL3~1=011:外部クロック 0.4~20MHz
1 (非プログラム)
0 (プログラム)
1 (非プログラム)
1 (非プログラム)
1 (非プログラム) システムクロック出力許可 (1:不許可)
1 (非プログラム) システムクロック8分周選択はしない

これで128KBのフラッシュメモリは、漢字ROM用の応用プログラム領域120KB+プログラム用のブートローダー領域8KBに分割された。
このままだと漢字ROM領域が8KB不足するので、EEPROM 4KBに圧縮して保存する。
一番圧縮がかかりやすい0x6000~0x7FFFの領域をEEPROMに保存することにする。
EEPROMに圧縮して保存されたデータは、AVR起動時に解凍されて8KBのSRAM領域に展開される

パソピアから漢字データの要求があった場合、アドレスが0x6000~0x7FFFならSRAMから、それ以外はフラッシュ領域からデータを読み込むようにする

漢字ROM PAC2の場合、I/Oポートは以下
I/Oポート
アドレス
リード/ライト内容CAD1CAD0
18hライト漢字ROM PAC2下位アドレス8ビット LowLow
19hライト漢字ROM PAC2中位アドレス8ビット LowHigh
1Ahライト漢字ROM PAC2上位アドレス1ビット HighLow
18h-1Bhリード漢字ROM PAC2リードデータ8ビット --
上位・中位・下位の合計17ビットで128KBのアドレスを指定した後、18h~1Bhのどれかで8ビットデータをリードする。

続いて、漢字ROMをATmega1284Pへ書き込み。

漢字ROMの吸出しは、昔のブログを参照
使用するROMは、初代パソピア用(PA7246)、パソピア7用(PA7247)、どちらでもOK。
ラベルのシールは異なるが、ROMデータは同じっぽい。

SDカードに吸い出した漢字ROMのデータを書き込んでおき、以下の命令でフラッシュROMとEEPROMへ書き込みできるようにした
ld 0 [file name] : SDカードの漢字ROMファイルをAVRへロード
 [file name] : SDカード漢字ROMファイル名
  "/"から始まった場合、絶対パス
 [戻り値]
  Ok : ロードが成功した場合
  (エラー文字列) : エラーが発生した場合

テストプログラムを作って、パソピア7で動作確認
問題なさそう。

初代パソピア用(PA7246)は、ROM BASIC Ver1.1用のサブルーチンがテープで付属している

初代パソピア(Ver1.1)でも、サブルーチンを使って漢字表示できた

表示スピードは、やはりパソピア7の方が速い