続ポケコンPC-G803のメモリ増設

0Ω抵抗と抵抗入りのデジタルトランジスタを購入。
スズメッキ線のジャンパーを0Ω抵抗に交換。
デジタルトランジスタにしてみたところ起動しなくなったので、2SC1815に戻す。
適当な感じだったジャンパーを整えてポリイミドテープで固定。

配線がきれいになってまあよかった。

交換したSRAMについて、データシートからピンアサインとモードについて抜粋してみた。

元のSRAMと交換したSRAMの違いはCE2とNCのところにA13とA14がアサインされているところである。
/CE1(/CE)とCE2の信号はHとLで逆になっている。

PC-G803のSRAM回りのパターンを起こしてみる。
どうも『ポケコン・エレクトロニクス』に掲載されているポケコンの回路図とも異なっているような感じ。
どうも腑に落ちない。

回路と基板のパターンからすると、元の状態だとCPU(LZ8413)から出ているCERAM1とSRAMのCE2がつながって、これがチップセレクトになってるような感じである。
SRAMを交換し、それに合わせて0Ω抵抗をA13側に変更。

CERAM1の信号をトランジスタで反転させて/CEに入れることで動作させるようになっている。

しかしCERAM1を反転して/CEに入れているのはわかるけど、それ以外の抵抗の追加の意味がわからない。
ポケコンの回路図も不鮮明だし、PC-G801とPC-G803とでパターンが微妙に違っているみたいだし回路も微妙に違っているのだろうか。
さらにロットの違いまで考慮すると一体いくつのパターンがあるのだろう。
その辺が分からない限り、もやもやした感じは拭えないだろうなぁ・・・

なお、その後に何げなくCPUの型番『LZ8413』で検索したら、PC-E220のサービスマニュアルを見つけて、回路図を見てみたらPC-G803のパターンに合致していたのでこれが参考になりそう。
こうなるとロット違いのPC-G803も欲しくなるなぁ・・・
回路も違ってそうだなぁ・・・

カテゴリー: PC-G803, ポケコン, 電子工作 | コメントする

ポケコンPC-G803のメモリ増設

ポケコンPC-G803のメモリ増設に再度挑戦してみる。
今度は件のサイトのPC-G801の改造方法を参考にしてみる。

PC-G801の基板は元の状態でもジャンパーが飛び交っているが、PC-G803はそこは直っているみたいで、パターンの違いもあるのでそのまま適用していいものか若干不安はあった。

まず、A14(SRAMの1番ピン)はパターンがすでにあるようなので、このジャンパーは省略。
一番上の0Ω抵抗は取り外しの際、半田ごての熱で変色して使う気になれなかったので、スズメッキ線を使用。
真ん中の0Ω抵抗はそのまま。
100KΩの抵抗はサイズ的に無理があるので再利用せず、手持ちの100KΩのチップ抵抗を使用。
トランジスタのベースに直接信号がつながっているのが気になるが、とりあえず確認のため件のサイトの通りに配線してみた。
抵抗入りのトランジスタにしたほうがいいかもしれないが、手持ちがなかったし、とりあえず確認できればいいやと思いそのまま2SC1815をつかった。

配線ができた時点で、電源を入れて起動することを確認。

FREコマンドで容量が増えていることを確認。
仮配線のつもりで加工したけど、動いてしまったのでこのままいくか抵抗入りトランジスタを購入して仕上げるか思案中。

カテゴリー: PC-G803, ポケコン, 電子工作 | コメントする

続Z80-MBCの新ファームを試してみる

やっとCドライブとDドライブが使えるようになった。

順番としては、

  1. PCGET.COMを作る
    GitHubからpcget.asmを取得
    EDコマンドでPCGET.ASMファイル作成
    ASMコマンドでアセンブルしてHEXファイルを作成
    LOADコマンドでCOMファイルを作成
  2. FORMAT.COMの転送
    GitHubからformat.comを取得
    PCGET FORMAT.COMを実行
    TeraTermでファイル→転送→XMODEM→送信でformat.comを送信
  3. FORMATの実行
    FORMAT C:を実行
    FORMAT D:を実行

これで、CドライブとDドライブが使えるようになる。
PCGETコマンドを実行する場合、ディスク容量に気を付けないと転送失敗する(あたりまえだけど)

実際に実行してみたログを張り付けておく。
CP/MのコマンドはMS-DOS,MSX-DOSと違ってクセがあるのでちょっと戸惑うかも。

A>dir
A: ASM      COM : D        COM : DDT      COM : DUMP     COM
A: ED       COM : HELLO    COM : LOAD     COM : MAC      COM
A: MBASIC   COM : PEG      COM : PIP      COM : STAT     COM
A: SUBMIT   COM : XSUB     COM : HELLO    ASM : GPIO     BAS
A: AUTOEXEC SUB : IOTEST   BAS : patch1   bas : PCGET    ASM
A: PCPUT    ASM
A>
A>asm pcget.ABB
CP/M ASSEMBLER - VER 2.0
036C
003H USE FACTOR
END OF ASSEMBLY

CP/M WARM BOOT...


CP/M 2.2 Copyright 1979 (c) by Digital Research

A>dir b:
B: TINST    COM : TURBO    COM : ART      TXT : TINST    DTA
B: TINST    MSG : TURBO    MSG : TURBO    OVR : TURBOMSG OVR
B: SA       PAS : PSGTEST  HEX : PSGTEST  COM : PCGET    PRN
B: PCGET    HEX
A>
A>asm pcput.ABB
CP/M ASSEMBLER - VER 2.0
03CE
003H USE FACTOR
END OF ASSEMBLY

CP/M WARM BOOT...


CP/M 2.2 Copyright 1979 (c) by Digital Research

A>b:
B>dir
B: TINST    COM : TURBO    COM : ART      TXT : TINST    DTA
B: TINST    MSG : TURBO    MSG : TURBO    OVR : TURBOMSG OVR
B: SA       PAS : PSGTEST  HEX : PSGTEST  COM : PCGET    PRN
B: PCGET    HEX : PCPUT    PRN : PCPUT    HEX
B>
B>a:stat
A: R/W, Space: 10k
B: R/W, Space: 5k


B>
B>a:load pcget.hex

FIRST ADDRESS 0100
LAST  ADDRESS 033F
BYTES READ    0240
RECORDS WRITTEN 05


B>a:load pcput.hex

FIRST ADDRESS 0100
LAST  ADDRESS 039E
BYTES READ    029F
RECORDS WRITTEN 06


B>dir b:
B: TINST    COM : TURBO    COM : ART      TXT : TINST    DTA
B: TINST    MSG : TURBO    MSG : TURBO    OVR : TURBOMSG OVR
B: SA       PAS : PSGTEST  HEX : PSGTEST  COM : PCGET    PRN
B: PCGET    HEX : PCPUT    PRN : PCPUT    HEX : PCGET    COM
B: PCPUT    COM
B>
B>
B>era *.prn
B>era *.hex
B>dir
B: TINST    COM : TURBO    COM : ART      TXT : TINST    DTA
B: TINST    MSG : TURBO    MSG : TURBO    OVR : TURBOMSG OVR
B: SA       PAS : PSGTEST  COM : PCGET    COM : PCPUT    COM
B>
B>pcget format.com
Send the file now using XMODEM...

Transfer Complete

CP/M WARM BOOT...


CP/M 2.2 Copyright 1979 (c) by Digital Research

B>dir
B: TINST    COM : TURBO    COM : ART      TXT : TINST    DTA
B: TINST    MSG : TURBO    MSG : TURBO    OVR : TURBOMSG OVR
B: SA       PAS : FORMAT   COM : PSGTEST  COM : PCGET    COM
B: PCPUT    COM
B>
B>format
Usage: FORMAT DRIVE [LABEL] [/S] where DRIVE is 0-3 or A-P
Use /S to do a system generation using the current
drive 0 system tracks (default for drive 0)
CP/M WARM BOOT...


CP/M 2.2 Copyright 1979 (c) by Digital Research

B>
B>format c:
This will format drive 2 (C:) as volume <NONE> and destroy all contents on the drive. Are you sure? y
Formatting...
Done

CP/M WARM BOOT...


CP/M 2.2 Copyright 1979 (c) by Digital Research

B>format d:
This will format drive 3 (D:) as volume <NONE> and destroy all contents on the drive. Are you sure? y
Formatting...
Done

CP/M WARM BOOT...


CP/M 2.2 Copyright 1979 (c) by Digital Research

B>
B>dir c:
No file
B>
B>a:pip c:=b:psgtest.*

COPYING -
PSGTEST.COM

CP/M WARM BOOT...


CP/M 2.2 Copyright 1979 (c) by Digital Research

B>dir c:
C: PSGTEST  COM
B>
B>a:pip d:=b:p*.*

COPYING -
PSGTEST.COM
PCGET.COM
PCPUT.COM

CP/M WARM BOOT...


CP/M 2.2 Copyright 1979 (c) by Digital Research

B>
B>dir d:
D: PSGTEST  COM : PCGET    COM : PCPUT    COM
B>
B>dir a:
A: ASM      COM : D        COM : DDT      COM : DUMP     COM
A: ED       COM : HELLO    COM : LOAD     COM : MAC      COM
A: MBASIC   COM : PEG      COM : PIP      COM : STAT     COM
A: SUBMIT   COM : XSUB     COM : HELLO    ASM : GPIO     BAS
A: AUTOEXEC SUB : IOTEST   BAS : patch1   bas : PCGET    ASM
A: PCPUT    ASM
B>
B>dir b:
B: TINST    COM : TURBO    COM : ART      TXT : TINST    DTA
B: TINST    MSG : TURBO    MSG : TURBO    OVR : TURBOMSG OVR
B: SA       PAS : FORMAT   COM : PSGTEST  COM : PCGET    COM
B: PCPUT    COM
B>
B>dir c:
C: PSGTEST  COM
B>
B>dir d:
D: PSGTEST  COM : PCGET    COM : PCPUT    COM
B>
B>a:stat
A: R/W, Space: 10k
B: R/W, Space: 28k
C: R/W, Space: 125k
D: R/W, Space: 123k


B>

 

カテゴリー: CP/M, Z80-MBC, 電子工作 | コメントする

Z80-MBCの新ファームを試してみる

先日、Z80-MBCでPSGを鳴らした後、何気にZ80MBCの本家サイトをのぞいてみたら新しいファームウエア(S221116_R050720_Z80.ino)がリリースされていたようである。

ちなみにZ80-MBC2に手を出さないのは、I/Oが自由に使えなさそうだから。
回路図を見るとアドレスバスのA0だけがATMEGA32につながっていて、どうやってDMA転送とかI/O制御とかやっているのかわからない。

それはともかく新しいファームウエアではEEPROM4つで4ドライブ使えるようになったらしい。
元の構成ではEEPROMの容量が心許ない感じだったので早速試してみる。

まずはダウンロードしたファームウエアをそのままArduinoで焼いてみることにする。
シリアルの通信速度が変わっているので注意。
新しいファームでは、9,600bpsではなく38,400bpsなのでTeraTermの設定も直す。
起動してみた結果、全然使い物にならない。
CP/Mの起動が極端に重い。
DIRコマンドでファイル名1個づつ表示され非常に遅い。
MBASICを立ち上げようとしたら、固まってしまったかと思うくらい時間がかかる。
どうもディスクアクセスがうまくいってないようだ、

S221116_R050720_Z80.inoのソースをのぞいてみる。
どうもI2Cの通信速度もいじっているようだ。
ソースを見ると、I2Cの速度を800KHzに対応したようだが、肝心のEEPROMは400KHzまでしか対応していない。
何となく原因が分かったので、ソースを一部修正する。

修正前 145行目

// ------------------------------------------------------------------------------
//
// Hardware definitions for A110417 (Virtual Disk Module)
//
// ------------------------------------------------------------------------------

#define EEPROM_TWBR (((F_CPU/800000)-16)/2)	// set I2C rate

修正後

// ------------------------------------------------------------------------------
//
// Hardware definitions for A110417 (Virtual Disk Module)
//
// ------------------------------------------------------------------------------

//#define EEPROM_TWBR (((F_CPU/800000)-16)/2)	// set I2C rate
#define EEPROM_TWBR (((F_CPU/400000)-16)/2)	// set I2C rate

ついでにI/O部分も直す。
修正前 2330行目

      }
      DDRA = 0xFF;					// Configure Z80 data bus D0-D7 (PA0-PA7) as output
      PORTA = ioData;					// Current output on data bus

      // Control bus sequence to exit from a wait state (M I/O read cycle)

修正後

      }

      if (ioAddress <= 0x0f)
      {
        DDRA = 0xFF;                               // Configure Z80 data bus D0-D7 (PA0-PA7) as output
        PORTA = ioData;                            // Current output on data bus
      }

      // Control bus sequence to exit from a wait state (M I/O read cycle)

修正したら問題なく動くようになった。
82C55ボードをつないでI/Oの読み書きもできる。
早速、追加のEEPROMをつなげるための基板を作る。

秋月でEEPROMなど買ってきて基板を組む。
最初、Z80-MBCの基板上に組みたかったなと思ったが、よくよく考えるとこれなら必要に応じて取り換えて使うこともできるなと思いなおす。

増設したEEPROMはつないだだけでは認識されず、BASICでパッチをあてる必要がある。
パッチは、Z80-MBCのGitHubの中にあって、patchの下にpatch1.basがあるのでそれをMBASICで実行すればよい。

実行すると、C:とD:が見えるようになる。

見えるようになるのだが、どうもそのままでは使えないようだ。

何気にformat.comがリリースされているが、formatが必要なのかな。
pcgetやpcputもリリースされているし、まだ準備が必要らしい。

ちなみに、パッチはZ80-MBCを起動するたび毎回実行が必要なようだ。
なんとかならんのかな。
ググっても情報全然ない・・・

カテゴリー: Arduino, Z80-MBC, 電子工作 | コメントする

Z80-MBC(改)でPSGを鳴らしてみる

さて先日作ったPSGボードだが、Z80-MBC(改)で動くのではないかと思い早速試してみることにする。
Z80-MBCに82C55ボードつないだ時に作ったI/F基板なのだが、これはサンハヤトのポケコン基板に合わせたピンアサインになっている。
どういうことかというと奇数番号と偶数番号のピンが通常とは逆になっている。
一方PSGボードは通常のピンアサインにしている。
よって普通のフラットケーブルのコネクタは使えないため、奇数と偶数で逆転したケーブルをこさえた。
ケーブル作るのに2回ぐらい失敗して3回目で何とかできた。

写真ではケーブルが斜めってるように見えるが、ケーブルが曲がっている関係でそう見えるだけで、実際はそこまで斜めってはいない。

さてつないで実際鳴らすためには、プログラムの準備が必要。
BASICでのテストプログラムが動くことを確認。
実際に曲も鳴らしてみる。
PC-E200/PC-G8xxシリーズでは、マシン語は0x0100から利用できることになっている。
CP/MやMSX-DOSのCOMファイルは0x0100にロードされこの番地から実行されることになっている。
すなわち0x0100から始まっているものなら何ら手を加えることなく実行できる。
あとはどうやってプログラムを転送するかである。

CP/MのEDコマンドでテキストエディタを起動。
TeraTermでHEXファイルを転送してHEXファイルを作る。
次にLOADコマンドでHEXファイルからCOMファイルに変換。
最後に生成したCOMファイルを実行。

A>dir
A: ASM      COM : D        COM : DDT      COM : DUMP     COM
A: ED       COM : HELLO    COM : LOAD     COM : MAC      COM
A: MBASIC   COM : PEG      COM : PIP      COM : STAT     COM
A: SUBMIT   COM : XSUB     COM : HELLO    ASM : GPIO     BAS
A: AUTOEXEC SUB : IOTEST   BAS
A>
A>ed psgtest.hex

NEW FILE
     : *i
    1:  :10010000CD1501CD8801C9F5D5ED5B01781B7BB21A
    2:  :1001100020FBD1F1C921350106100E0079D3247ED0
    3:  :10012000D325230C10F63E603204783E0332067865
    4:  :10013000AF320A78C900010001000200F810101067
    5:  :100140000800600100D5F57AD3247BD325F1D1C90D
 :
 :
 中略
 :
 :
   61:  :1004C0001B323B128F313A0622323B128F313A06F1
   62:  :1004D00027323B18258F8F1824344012892B380679
   63:  :1004E0002430391821218F1822323B128F293606E9
   64:  :0B04F000172B371827278F1A8C02FFEC
   65:  :00000001FF
   66:  ←[Ctrl]+[Z]押す
     : *e

CP/M WARM BOOT...

CP/M 2.2 Copyright 1979 (c) by Digital Research

A>dir
A: ASM      COM : D        COM : DDT      COM : DUMP     COM
A: ED       COM : HELLO    COM : LOAD     COM : MAC      COM
A: MBASIC   COM : PEG      COM : PIP      COM : STAT     COM
A: SUBMIT   COM : XSUB     COM : HELLO    ASM : GPIO     BAS
A: AUTOEXEC SUB : IOTEST   BAS : PSGTEST  BAK : PSGTEST  HEX
A>
A>load psgtest.hex

FIRST ADDRESS 0100
LAST  ADDRESS 04FA
BYTES READ    03FB
RECORDS WRITTEN 08

A>dir
A: ASM      COM : D        COM : DDT      COM : DUMP     COM
A: ED       COM : HELLO    COM : LOAD     COM : MAC      COM
A: MBASIC   COM : PEG      COM : PIP      COM : STAT     COM
A: SUBMIT   COM : XSUB     COM : HELLO    ASM : GPIO     BAS
A: AUTOEXEC SUB : IOTEST   BAS : PSGTEST  BAK : PSGTEST  HEX
A: PSGTEST  COM
A>
A>psgtest

A>

さて実際に試したらすんなり音楽が鳴ってくれた。
さてとこの後どうするかな。

あと、COMファイルをHEXファイルに変換するプログラムはないものか。
FabGLのCP/MエミュレータのファイルをZ80-MBCで実行してみたい。
BASICで簡単に作れそうだけど面倒だ。

カテゴリー: CP/M, Z80-MBC, 電子工作 | タグ: , | コメントする

ポケコンのシステムバスコネクタ

ポケコンから出ているシステムバスの40Pコネクタだが、現在は適合するコネクタがない。

さて自分ははるか昔に買った基板やコネクタがあったのでそれを使えたが、新たに入手することはできない。
PC-G850VSを手に入れた時、代替となるコネクタの候補をいくつか買ってあったが確認することができなかった。
今回PSGボードを作ったので、ついでに買ったコネクタについて試してみた。
結果、aitendoのエッジコネクタ(1.27/40P) [ECN50A220PV]が意外と悪くないと思った。

ポケコン側の基板が薄く、若干ゆるゆるなので気を付けないといけない感じかな。

同じようなエッジコネクタなら使えそうな気はするが、物によってはポケコン側のパターンが短めになっており、接触部分が届かずに使えないものもあるようだ。
aitendoで手に入れたこれも在庫が少ない(12/25現在30点)が、コネクタは根気強く探してみるしかないかな。

カテゴリー: ポケコン, 電子工作 | コメントする

続続続・ポケコン活用研究のPSGの記事

ポケコンとPSGのタイミングについて追記。
Z80側のタイミングについても検討していたわけだが、74HC138に/IORQが使われている。
その結果、元の回路ではチップセレクト代わりの/A9が非選択状態になってからA0~A1(バスコントロールのBDIR,BC1)が変更される状態。
非選択状態でバスコントロールが変更されるためレジスタ指定機能が動かない。

MSXはどうなっているのかなと調べてみたら、MSX Datapack wiki化計画ってところに回路図があった
やっぱりちゃんとタイミングを考えてる回路になっていた。

さて、基板ができただけで終わっても面白くないので、プログラム例を実際に動かしてみることにした。
打ち込むのは面倒なのでスキャナのOCR機能を使って取り込んでみたが・・・

文字化けがひどいやorz

一応取り込むことはできたので、テキストを成型して化けてる文字の修正を行う。
特に多かったのが「H」が「11」になっていたり、「0(ゼロ)」が「O(オー)」になっていたり。
他には「P」が「F」になったり「HL」が組み合わさって別の漢字になっていたり・・・
まあなんとか見直して修正していったりしたわけだが。

それでもいきなり実行できるわけもなく、実際にアセンブラに通ってエラーが出ないことを確認したいと思った。
さてポケコンでアセンブラしてもエラーがどこで出てどこを修正すべきか小さい画面では確認しづらい。
Windowsで動くZ80のクロスアセンブラでいいものないかと探したがなかなかいいものは見つからず。
他になにかいいものはないかと思ったら目の前にはMSXが。
MSXでM80を動かせばいい、ということで実行してみる。

やはり、修正漏れがあった。
M80でアセンブルした結果がファイルに保存できるのもありがたい。
案の定「0(ゼロ)」が「O(オー)」の違いがたくさん。
テキストエディタじゃわかりにくいわ。
ほかにも、EQUでラベル定義で数式が使えないっぽいので、そこは直接数値を設定。
M80でできないのではポケコンでも無理だろう。

そうやってエラーをつぶして最終的にエラーがない状態までもっていく。
エラーがなくなった状態のPRNファイルがこちら→PSG.PRN_.txt
WordPressでアップロードしたらなんで「_」がつくのか?
アセンブラできたので今度はL80でHEXファイルを作りたいと思ったが、使い方が思い出せん。
ググってもやっぱりわからん。
まあアセンブルできたので、全角のコメントは削除してポケコンでアセンブルすることにする。
そしたら、今度はラベルの文字数がオーバーしているため4か所ぐらいでエラー。
こちらは文字数をなおしてアセンブルしなおして無事実行できる状態に。

知らない曲だったので、音程が違っているのかテンポが速いのかはよくわからなかった。
音階データは元のままなのでPSGを4MHzで動かす前提になっているので、ディップスイッチを操作して4分周の3.579545MHzに設定するが、やっぱり元の曲が分からないので音程がどうなのかわからなかった。
一応クロックで音程は確かに変わっていたのは確認できた。

次に、PC-G803とPC-G850VSで比べてみたら、やっぱりPC-G850VSの方が倍速で再生された。

さてここまで確認出来たら速度調整をどうするか考えて、音程データをMSX仕様に直して知っている曲でも鳴らしてみるか。
文章だけじゃつまらないから動画で上げたいところだけど、動画の編集って面倒だな。
まう何年もやってないし。

カテゴリー: PC-G803, PC-G850VS, ポケコン, 電子工作 | タグ: , | コメントする

続続・ポケコン活用研究のPSGの記事

やっと音を鳴らすことができた。
いろいろ試しながら、最終的にできた回路。

若干の不満は残っているものの想定通りの動作はするようになった。

回路の挙動を確認するため、いつものI/Oボードに追加で作ったスイッチボード、何年か前のトラ技の付録基板のロジックチェッカを駆使して動作確認をする。
ちゃんとしたロジアナが欲しい。

最初にできた回路をチェックして、回路を変えたり追加したりするたびこんな感じで挙動の確認。
回路の挙動を見ながらデータシートの方もチェックする。
AY-3-8910のデータシートのタイミングの図。

元の回路は、「H」「L」の信号だけ見ればいくつか間違いがあるものの理屈はあっているようだが、タイミングまで考慮して回路を見ると動くかどうか怪しい感じ。
いろいろ試しながら回路を検討した結果、冒頭の回路図に至る。

細かいところは飛ばして、大まかにいうと、データの読み込みタイミングに影響がありそうなので、74HC245は撤去。
チップセレクト代わりの/A9はアドレス切り替わりとAY-3-9810のバスコントロール(BDIR,BC1)の切り替わりタイミングが重なってうまく動かないようなので、/A9はGND固定。
代わりに、アドレスが指定されていないタイミングではバスコントロールはINACTIVEとなるように74HC02を追加。
INACTIVE状態ではデータバスはハイインピーダンスとなるので、74HC245を撤去したことでの影響はなし。
クロックは手抜きするため多出力オシレータにおきかえ。
16MHzを4分周すれば4MHzで本の通りの音程データでいけるけど、秋月で売ってなかったので、秋月にあった14.31818MHzのものを8分周してMSXの仕様に合わせた。
ICソケットを使っているので同シリーズの違う周波数に変えられるし、ディップスイッテで設定を変えられるのでクロック周波数を変えて試すことができる。

74HC02をうまく使えば74HC04も不要になりそうだが、取り外しが面倒なのと検討用に追加した回路で74HC04を使っているのでこのままにした。

さて、実際にポケコンにつないで音を鳴らしてみる。

アセンブラなんて何年ぶりだろう。20年以上前か。
ポケコン活用研究1に載っているリストを打ち込んで音が鳴ることを確認。

 
 	ORG	100H
START:	LD	IX,R00
	LD	B,16
	LD	C,0
FLG:	LD	A,C
	OUT	(24H),A
	LD	A,(IX)
	OUT	(25H),A
	INC	C
	INC	IX
	DJNZ	FLG
	RET
R00:	DB	0DEH
R01:	DB	02H
R02:	DB	7BH
R03:	DB	01H
R04:	DB	3FH
R05:	DB	01H
R06:	DB	00H
R07:	DB	0F8H
R08:	DB	09H
R09:	DB	09H
R0A:	DB	08H
R0C:	DB	90H
R0D:	DB	01H
R0E:	DB	00H
R0F:	DB	00H

レジスタの値をいろいろ変えて動作を確認できるようにBASICでも試してみる。

 
10 PRINT "PSG TEST"
20 RA=0:RD=0
30 PRINT "Now RegAdd=";RA
40 INPUT "RegAdd  ";RA
50 INPUT "RegData ";RD
60 PRINT "OUTPUT RA=";RA;" RD=";RD
70 OUT &H24,RA
80 OUT &H25,RD
95 FOR I=0 TO 500:NEXT
100 PRINT "READ "; INP &H26
110 PRINT
120 GOTO 30

たしかPC-G801~803あたりまではBASICで直接I/Oアドレス指定の入出力はできずマシン語の準備が必要だったはず。
どのタイミングか知らないけどBASICからI/Oできるようになって楽になったものだ。
BASICのプログラムは、RegAddでレジスタを指定して、RegDataで値を入力。
それをPSGに送って、少し間をおいてPSGから値を読み込むようになっている。
いろいろ値を変えて音が変化するのを確認できる。

最後に出来上がった基板。
ブレッドボードで試作してから基板に組めばもう少しきれいにできそうなのだが、同じものを2回も組むのは面倒なので直接ユニバーサル基板に組む。
手持ちのブレッドボードでは間に合わなかったてのもあるけど。

結果、74HC245の跡地にジャンパー8本。
74HC02の追加スペースがなかったので、小型基板を使って無理やり実装。

まあ何とか音を鳴らすことができたので、ポケコン活用研究1に載っているサンプルプログラムを入れてみたいところだが、打ち込みが面倒だな。
音階データをMSX仕様に直さないといけないけど、そこはググってデータがあったのでそのデータに置き換えれば良さそう。
問題は当時のポケコンは3MHzで動いていたけど、PC-G850VSは8MHzで動いていること。音の長さをどうやって調整するか。
PC-G803を手に入れたから、そっちで動かせばいいか。

カテゴリー: ポケコン, 電子工作 | タグ: , | コメントする

ポケコンPC-G803をヤフオクで手に入れた

ヤフオクで、ポケコンPC-G803が安く出ていたので、落札してみた。

PC-G803は高校時代に使っていたポケコンなのだが、『ラジオの製作』でやっていた工作コンテストに出したところ、ポケコンだけ戻ってこなかったのだ。
確か当時問い合わせたのだが結局戻らずじまいで、それより以前に先生に頼んで個人的に購入したPC-G813を以降使うことになった。

それはともかくとして、懐かしさと格安さから落札に至ったのだが、これだけ古いとすんなりと動いてはくれない。
ヤフオクのページでは通電チェックはしてあると書いてあったが電源はいらず。
電池が入っていないかヘタレているのだろうと思い、新しい電池を用意して電池の蓋を開けてみる。
電池が入っていたので入れ替えてみたところ、MEMORY CLEAR O.K.?(Y/N)の画面が。
Yキーを押してALL RESETの画面になってキーを押すが、ALL RESETの画面のまま先に進まない。
どうもキーを押して反応するキーと反応しないキーがあるようだ。
ということで、分解してキーの裏側にアルミテープを小さく切って張り付けていく。

ちまちま切って貼って切って貼ってを繰り返していたら2時間ぐらいかかってた。
アルファベットキーだけでなく関数キーやテンキーにもアルミテープを張って仮組してキーの反応を確認。
少し押し方に気を付けないといけないキーもあるが、おおむね反応してくれるようになった。

さてここで本題。
これを手に入れたらやりたかったことがある。
SHARP PC-G801シリーズのRAMを増設するを参考にRAMを増設すること。

完全に蓋をする前にRAMを交換することにする。

・・・
・・・・・・
・・・・・・・・・

件のサイトの基板の写真と全然違うじゃねーか。
RAMを挟んで左側はサイトの写真そっくりだが、右側がPC-G801のパターンのようだ。
右上の0Ω抵抗の位置を変えればいけそうな気がしたので、試しにRAMを換装して0Ω抵抗の位置を変えてみたが電源はいらず。
元の位置に戻して、いったん取り外したRAMに戻して、元の状態に戻ったのを確認。
容量は元のまま無駄に時間を費やしてしまった。

ロットによって基板のタイプが違うようだが、その辺の情報が全然ないなぁ・・・

カテゴリー: PC-G803, ポケコン, 電子工作 | コメントする

続・ポケコン活用研究のPSGの記事

ポケコンでPSGを鳴らすべく、件の回路図を元に手直しして実験してみる。
しかしうまくいかないので、よくよく回路図をみると致命的な間違いを見つける。

ポケコンから出ているIORESETは通常時はLレベルで、リセット時にHになる。
一方PSGの/RESETは通常時はHレベルで、リセットするときにLにする。

これじゃ動くわけないと思い、手直しをしてみる。
しかしやっぱり動かない。

この本をみてPSG鳴らそうとした人で、うまくいった人いるのかな。
今でこそデータシートなんかはググれば容易に見つけられるけど、当時はというと自分は高校生ぐらいのころ。そう簡単に情報は手に入らない。
そんな時代にこの中途半端な回路図でうまく組み立てられたのだろうか。

もうしばらく飽きるまで粘ってみるか。

 

カテゴリー: ポケコン, 電子工作 | タグ: , | コメントする