先日、ユニクラフト(http://unicraft-jp.com)にお願いした基板が届いた。
注文したのが12/14だったので年明けを覚悟していたが、思っていたよりも早く届いてよかった。。
漢字ROM PAC2、JOY PAC2と一緒に並べてみる。
こちらは部品面。シルク文字も綺麗に入っている。
JOY PAC2の上に置いてみたが、大きさも大丈夫。
半田面の仕上がりも、とても綺麗
取り付ける部品を並べてみた。
明日から、少しずつ取り付けてみよう。。
2014年12月30日火曜日
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圧縮して、見積もり・製造依頼してみる。
初めての基板作成でミスもあると思うし、年末で時間がかかると思われるが、進捗があれば追って報告したいと思う。
プリント基板を作ってみようと思う。
調べてみたら、ユニクラフト(http://unicraft-jp.com)が安くて評判がよさそう。
製造依頼には拡張ガーバー(RS-274X)が必要なので、以前作成したEagleの回路図から作ってみる
回路図からプリント基板図を作成すると、部品が左側に配置される。
部品配置してワイヤーを引くと交差が多い配置になってしまったので、AVR周りを中心に配線を見直し
あとEagleの場合、デザインルール指定してチェックできるので、以下パターンでチェックしてみる。
最小パターン幅0.18mm、最小ランド間距離0.2mm、スルーホール最小サイズ0.3mm
エラーがでたところは配置を見直しながら修正、出来たのが以下の基板図
間隔は狭いが、ぎりぎり収まった。
RS-274Xデータを作成するため、EagleのCAMジョブから必要なファイルをエクスポートする。
「excellon.com」から、ドリルデータもエクスポートする
PCBEを起動して、「ファイル」→「ガーバー入力」でEagleで作成したRS-274Xファイルをインポート
Eagleが作成したデータは少数4桁なので、ドリルデータも含めて4桁を指定する。
インポートした後、シルク文字や部品レジストの微調整を行って、できたのが下の基板図。
ファイル名を以下のように指定、「拡張出力」にチェックしてRS-274Xファイルにエクスポート。
初めての基板作成でミスもあると思うし、年末で時間がかかると思われるが、進捗があれば追って報告したいと思う。
2014年11月29日土曜日
2014年10月5日日曜日
Space Shooter
I/O 1983年1月号に掲載されていた、初代パソピア用のSpace Shooter
いわゆるアレです。
エミュでは色がおかしかったので、実機での画面。
かなりいいです。
名古屋撃ちもできるとのこと。
動画は、こちら
先日作った128KB RAM PAC2に入っているので、起動はやいです。
いわゆるアレです。
エミュでは色がおかしかったので、実機での画面。
かなりいいです。
名古屋撃ちもできるとのこと。
動画は、こちら
先日作った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側のスルー時間を最大まで調整しても、間に合わない。。
「ピポッ」のあと、「ピッ」もなってしまう。。
動画はこちら
中は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拡張ユニットの命令がそのまま利用可能
※スロット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のバッファに書き込まれる
64KBのRAM PAC2は、純正のフォーマッタでは対応できていない様子。
純正フォーマッタを使わずに、フォーマット済みイメージのバイナリファイルを用意して、ld命令で各ドライブにマウントすれば64KBフルに使えるようになる。
Eagleで回路図を作ってみた。
結局、基板は2枚に。
この配線をもう一度作るのは、かなり厳しい。。
プリント基板が作れるとよいのだが。
主な機能は、以下のようになった
・128KB (64KB x 2) RAM PAC2
・SDカード (FAT対応)
・Joystickアダプタ
・漢字ROM PAC2
特徴は、不揮発メモリ(MRAM)を使ったので、純正RAM PAC2と異なり電池不要。
また、PAC拡張ユニットなしで1スロットに集約できたのも特徴
スロットの切り替えは、PAC拡張ユニットの命令がそのまま利用可能
| スロット番号 | 機能 | 備考 | 初代パソピアでの利用 |
|---|---|---|---|
| 1 | Joystickアダプタ | MSXタイプジョイスティック | OUT &H1B,1 |
| 2 | 漢字ROM PAC2 | OUT &H1B,2 | |
| 3 | 64KB RAM PAC2 #2 (ドライブ6) | MRAM (不揮発メモリ) | OUT &H1B,3 |
| 4 | 64KB RAM PAC2 #1 (ドライブ5) | MRAM (不揮発メモリ) | OUT &H1B,4 (デフォルト) |
| 7 | 4KB RAM PAC2 #3 ※ | SRAM | OUT &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を持っている。
ATmega1284Pは、128KBのフラッシュメモリ、4KBのEEPROM、16KBのSRAMを持っている。
パソピアの漢字ROMは128KBなので、漢字ROMも内蔵できるようにしてみる。
SDカードから漢字ROMを読み込んで、フラッシュメモリに書き込めるようにブートローダに対応する。
プチFatFsに対応したためプログラムサイズは8KB近くになった。
ブートローダ領域は、ATmega1284P最大の4096ワード(8KB)にセットする。
LockとFuseビットは、以下のように
これで128KBのフラッシュメモリは、漢字ROM用の応用プログラム領域120KB+プログラム用のブートローダー領域8KBに分割された。
このままだと漢字ROM領域が8KB不足するので、EEPROM 4KBに圧縮して保存する。
一番圧縮がかかりやすい0x6000~0x7FFFの領域をEEPROMに保存することにする。
EEPROMに圧縮して保存されたデータは、AVR起動時に解凍されて8KBのSRAM領域に展開される
パソピアから漢字データの要求があった場合、アドレスが0x6000~0x7FFFならSRAMから、それ以外はフラッシュ領域からデータを読み込むようにする
漢字ROM PAC2の場合、I/Oポートは以下
上位・中位・下位の合計17ビットで128KBのアドレスを指定した後、18h~1Bhのどれかで8ビットデータをリードする。
続いて、漢字ROMをATmega1284Pへ書き込み。
漢字ROMの吸出しは、昔のブログを参照
使用するROMは、初代パソピア用(PA7246)、パソピア7用(PA7247)、どちらでもOK。
ラベルのシールは異なるが、ROMデータは同じっぽい。
テストプログラムを作って、パソピア7で動作確認
問題なさそう。
初代パソピア用(PA7246)は、ROM BASIC Ver1.1用のサブルーチンがテープで付属している
初代パソピア(Ver1.1)でも、サブルーチンを使って漢字表示できた
表示スピードは、やはりパソピア7の方が速い
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ポート アドレス | リード/ライト | 内容 | CAD1 | CAD0 |
|---|---|---|---|---|
| 18h | ライト | 漢字ROM PAC2下位アドレス8ビット | Low | Low |
| 19h | ライト | 漢字ROM PAC2中位アドレス8ビット | Low | High |
| 1Ah | ライト | 漢字ROM PAC2上位アドレス1ビット | High | Low |
| 18h-1Bh | リード | 漢字ROM PAC2リードデータ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の方が速い
登録:
投稿 (Atom)