まごころせいじつ堂

浜町庄金 研究開発  マイコンで遊んでばっかりで

PASOPIA7の電源修理と分解写真

 PASOPIA7でASCIIARTを実行して遊んでいたが
2020-04-19 00.40.19

 発煙!
2020-04-19 00.42.40

 花火のにおい。こういうとき電源スイッチがすぐ切れるパソコンは便利ですね。
分解すると電源ユニット内、ヒューズ隣のフィルムコンデンサが膨らんでいた。
2020-04-19 00.59.37

 上は同等品の0.1μF 250V メタライズドフィルムコンデンサ。これと交換。
IMGP3513


 先にPASOPIA7(パソピア7)のレストア(「僧兵ちまちま」のゲーム日記。)を読んでいたのでそういこともあるのね程度に思っていたらまさか自分のところでも発煙するとは。本当に花火で遊んでるときのようなにおいで電解コンデンサが黒煙を吐いたときのような刺激臭とはまた違います。

 電源ユニットだけ先に通電。よさげ。
IMGP3514

  動作確認。PASOPIAはCOLOR=(パレット番号、色1、色2)で0-7に割り当てられているパレット番号に0-7の色を2つ混ぜて中間色を表示できる。I/O 1983年9月号の回路図を見たら74S189(16bitx4)で色を管理し、$DOTI(大元はCRTCのクロック)でパタパタと色1/色2を切り替えているハードウェアによるタイリング。なのでよく見ると縦縞がわかる。

  分解写真。独自のカスタムICらしきものはない。

 マザーボード全体
IMGP3515

 CPUとBASIC/IPL/BIOS ROM(2764x6)。
IMGP3516

 8255,8255,Z80-CTC,Z80-PIO。中央の20Pコネクタはキーボード用。
IMGP3518

 HD46505(CRTC)
IMGP3519

 2732 これはCGROMかな?
IMGP3521

 カートリッジコネクタ近辺
IMGP3520

 PSG、SN76489 x2
IMGP3523




SBC6800+W65C02Sで2MHz動作

 SBC6800を改造せずにW65C02Sを動かす&unimon_6502の移植で動作確認できたので動作周波数を上げてみる。手持ちのACIAは68B50、2MHz品なので目標2MHz動作。
 SBC6800ではPIC12F1822をクロックジェネレータとして使っている。MC6800用なので相補のφ1(P1A)、φ2を(P1B)ハーフブリッジモードで1MHzを出力しているが、6502用に使っているφ2はハーフブリッジモードでしか出力できない端子(P1B)に割り当てられている。φ1(P1A)側だったらCLKOUTをそのまま使えたみたいだけど。
 ディレイ設定を使わなければデューティ50で2MHzをφ1側に出力でき、φ2はその反転出力となる。これで無改造で使えそうだ。

 SBC6800ルーズキットのデータパックより6800crgenのプロジェクトを持ってきてmain.c内の以下を書き換え、MPLABX4.02でビルドした。
PR2 = 3;
CCPR1L = 2;
PWM1CON = 0;
 以下にmain.cの差し替えとPIC12F1822書き込み用のHEXファイルを置いた。

 波形観測。OK。
IMGP3506

 これを使って動作確認。せっかくなので電脳伝説さんが"SBC6800のプチ改造で6502を動かす"で移植したOSI MS-BASICで確認する。実行速度の確認にASCIIART.BASを使用。
ASCIIART.BASのソースは以下にある。

ASCIIART

 1MHzの実行速度が6分50秒に対して1MHzでは3分25秒とちょうど半分だった。

※はせりんさんのまとめで他にもいろいろな機種でのASCIIART.BASの実行速度の一覧が確認できます。

 さて、さらに上を目指すには。W65C02Sは14MHzまでOKだがACIAが足を引っ張るためW65C51あたりが必要。ただしMC6850との互換性はない。PICを使えば2/4/8MHzが生成できそうだがその間が難しい。最大動作周波数が40MHzのPICを使えば5/10MHzができるかもしれない。この場合はPICのCLKOUTがダイレクトに出せる端子に修正したほうがよさそう。


モトローラ6800伝説
鈴木哲哉
ラトルズ
2017-12-16





YAMAHA RX21Lリズムマシンの分解写真

 ハードオフで千円で買ってきたヤマハのリズムマシンRX21L。一応動く。中は8bitマイコンでもはいってるんだろうか。

YAMAHA RX21L(YAMAHA)

 1985年で42000円。当時のパソコンはFM77AVなどでそのくらいの時期。RX21Lは音源の出力とMIDIに加えカセットテープインターフェースも持っている。リズムパターンをセーブ/ロードできるのでほぼパソコン。
IMGP3496

底面のネジを外すだけ。片面基板。
IMGP3497

 音源部。アナログ回路部分はシールドされている。
IMGP3498

 YM2154。
IMGP3503

 コントローラはHD6303。
IMGP3500

 おそらくこれは音源ROM(27128)で差し替えると姉妹機のRX21相当になるのだろう。右は2KバイトのRAM。
IMGP3504

 キャラクタLCD部分はHD44780。これは現在一般的なキャラクタLCDのコントローラ。
IMGP3501

 さて、これですよ。
http://www.dtech.lv/techarticles_yamaha_chips.html によるとドラム波形のROMらしいのだがにわかには信じられん。片側全部NCで基板レイアウト時に寄せすぎてしまったんだろうか。

IMGP3502


おしまい

追記:別の人も発見。スレッドにROMの仕様が。


W65C02S(本物)の動作確認

 本物のW65C02Sが届いたので確認してみた。(オレンジピコショップ W65C02)


 動作確認にはunimonを使用。

 WDC W65C02S6TPG-14 A1S000.2 1148G016 / 裏面なし
IMGP3495

 pin1(VPB)とpin5(MLB)にICソケット経由でLEDをはんだ付け。
IMGP3492


(1)IRQ許可でWAI命令 抜けるとBRKでモニタに戻る

1000: 58 CB EA EA EA 00 // CLI ; WAI ; NOP ; NOP ; NOP ; BRK

→ 1000番地より実行で応答なし、IRQ-GNDショートでモニタに戻る

(2)IRQ禁止でWAI命令 抜けるとBRKでモニタに戻る

1000: 78 CB EA EA EA 00 // SEI ; WAI ; NOP ; NOP ; NOP ; BRK

→ 1000番地より実行で応答なし、IRQ-GNDショートでも変化なし。


(3)STP命令

1000: CB EA EA EA 00 // STP ; NOP ; NOP ; NOP ; BRK

→ 1000番地より実行で応答なし、IRQ-GNDショートでも変化なし。

(4)MLB信号観測

1000: 0C 10 10 4C 00 10 // TSB $1010 ; JMP $1000

→ MLBに接続したLEDが薄暗く点灯(高速で点滅)

・VPB(pin1)-Vss(pin21)間抵抗測定

NMOS品 6502 0.0Ω
R65C02 4.3Ω
フェイク品W65C02S 4.3Ω
W65C02S ∞Ω

 本物のW65C02Sの見分け方はpin1-pin21間の導通を確認するとよい。

 R65C02とW65C02Sはソフト的にはWAI/STP命令を使わないと区別できないことと、VPB-Vss間の抵抗値から手持ちのフェイク品W65C02SはR65C02を元にしたものの可能性がある。

W65C02Sの謎

 手持ちのW65C02Sについてだが、VPB(pin1)とMLB(pin5)を観測してみようと思いLEDを付けてみた。VPBは割り込みベクタ参照時にアサートされる。これは周辺デバイスから割り込みがあった時にデバイスごとに飛び先のアドレスをすり替えることができる。MLBはマルチプロセッサのためのメモリロック信号でASL,DEC,INC,LSR,ROL,ROR,TRB,TSB命令のメモリアクセスでアサートされる。

IMGP3488

 実際に動かしてみるとVPB側は点灯したまま。TSB命令を適当なRAMのアドレスを参照させて無限ループさせてもそちら側のLEDはなにも点灯しない。

 R65C02に追加されたW65C02Sの命令にWAI,STPがある。WAI命令は実行すると割り込みが発生するまで一時停止する。次のコードで停止すればW65C02Sのはずなのだが、通り過ぎてモニタに戻ってしまう。

SEI
WAI
NOP NOP NOP NOP NOP
RTS

追記:
※unimonではRTSではなくBRK命令でモニタに戻ると教えてもらいました。これはRTSで偶然戻っているようです。
WAI

 これらのW65C02Sは2014年にebay経由でgc_marketsというところから5個セットで購入。1つはPET2001で使用中。一番左は動かなかったもの。
IMGP3489

IMGP3490

 刻印は以下のとおり。

W65C02S8P-10 SA1034A // II450HI 0212 MEXICO
W65C02S8P-10 SA1034A // II450 77072-4 MEXICO
W65C02S8P-10 SA1034A // 11450 A48380-2 MEXICO
W65C02S8P-10 SA1034A // なし

 ということで別のところからW65C02Sを手配中。確認する予定。

 さてW65C02Sの作例だがL-Star-Liteのボードを確認してみた。VPBはオープンでバスはプルアップなどしていない。ただし電源は3.3V。

LStar-Lite-MPU


 他にもAN-002: Replecement Notes for Obsolete Versions of 6502 8-bit Microprocessors には各種6502/65C02の違いについてまとめてある。


SBC6800を改造せずに6502を動かす&unimon_6502の移植

 今回はすでに動いているSBC6800ボード側に手を入れずに6502を動かす方法です。

 回路図の修正は以下。φ2inを基準に動作するよう変更。

SBC68006502R2

 実際の改造はCPU用の40P ICソケットとアドレスデコーダの74138を差し替え。

 40P ICソケットは丸ピンのものを使用。pin2,3,5,36,38,39をカット。
※W65C02Sはpin1がVssではなくVPBという出力信号なのでpin1もカット。他の6502/65C02はpin21だけをGND接続しても動きます
IMGP3481

プルアップ抵抗2つをはんだ付け。
pin2(RDY) -^v^v^- pin8(Vdd)
pin36(BE),pin38(SO) -^v^v^- pin8(Vdd)
IMGP3482

 もうひとつの40P ICソケットはpin2,3,5,36,38,39をカプトンテープで絶縁。これをSBC6800のCPUソケットに挿し、その上に先程加工したICソケットを挿す。
IMGP3484

 74138(LS138,HC138)はpin6-pin16をメッキ線でショートしSBC6800上の74138と差し替え。
IMGP3483

 このような感じに重ねる。
IMGP3485

 これでもともと動作しているSBC6800をベースに前回のような苦労をせずに簡単に6502を載せることができた。ループバックテストもOK。


 さて、色々遊ぶにはモニタが必要。そこでElectrelicさんのUniversal Monitorを動かすことにした。

 svnで最新のunimonを取得。6502用のソースが入っている~/unimon/6502 を作業ディレクトリとする。The Macro Assembler ASが必要なのでcurrentをインストールしておく。
SBC6800はMC6850で通信を行うのでこの定義を追加する。~/unimon/6502/dev/ 以下にdev_6850.asmという名前で動作するコードを記述し、~/unimon/6502/unimon_6502.asm内にデバイスを選択する部分を追加。
~/unimon/6502/config/ 以下のconfig.incにMC6850用の定義を追加する。config.incはmakeするときには~/unimon/6502/ 以下にコピーして書き換える。今回は開始アドレスROM_Bを$E000に書き換えた。

 必要なコードとアセンブル後のHEXファイルを以下に置いた。

 手持ちのW65C02/R65C02で動作確認。
unimon_pre

 MOS6502で確認。ちゃんとCPU判別をしている。
unimon_MOS6502

 これでもっと遊べますね。あらためてSBC6800作者の電脳伝説さんとunimonのElectrelicさんに感謝します。


モトローラ6800伝説
鈴木哲哉
ラトルズ
2017-12-16


SBC6800を改造して6502を動かす

  6502は6800にバスがよく似ててアドレス/データバスはまったく同じ。ユニバーサル基板で動かそうと思うとバス周りの配線が面倒くさいが電脳伝説さんのSBC6800ルーズキットをベースにすればいけるんではないかと改造を考えた。パターンカットはなし、MPUの差し替え以外は部品はまったく同じ、プルアップ抵抗を3つ追加。

 前回、6502のクロック調査でクロック周りはこれで観測した。
SBC6800mod-6502


 パターンカットは行わない。×印は無視。オレンジ色はソケットでピンを上げてカプトンテープなどで絶縁。
SBC6800mod-6502-board0

 ハンダ面はSO(pin38)と74138(pin6)のプルアップ2箇所。
SBC6800mod-6502-board1

 工作はこんな感じ。
IMGP3466

 クロックジェネレータであるPIC 12F1822とMPUの位置が近すぎるので基板に取り付ける前に配線。
IMGP3467

 が、それでも抜けがあった。7400のpin1に追加ではんだ付け。
IMGP3473

 RDY(pin2)のプルアップ
IMGP3471

 SO(pin38)と74138(pin6)のプルアップ
IMGP3472

 アクロバティックな改造になってしまった。素直にパターンカットをする方向で考えたほうがよかったかもしれない。次回、φ2inベースで改造する予定なのでそのときは考慮する。

IMGP3478


 エコーバックテスト。これはモトローラ6800伝説のコードをそのまま6502向けに移植したもの。The Macroassembler ASを使用した。書いてて思ったのがBRAないのね、とかASRはなくてLSR使うのね、とかビッグエンディアンなのね、など。


※一箇所、改行$0D,$0Aを$0F,$0Aと間違えた箇所があります。

echoback6502


今後の方針:
・現在R65C02を使って動いているがW65C02Sを使ったら動かなかった。クロックは正常だがA7,A8,データバスが変化しR/Wが'L'でこれはおかしい。Electrelicさんのところでも動かないらしい(W65C02続報)のだが、こちらでは別個体のW65C02がPET2001用ボードで動いている。要調査。
・φ2outをベースに動作させているが、φ2inベースの改造もやってみる。



モトローラ6800伝説
鈴木哲哉
ラトルズ
2017-12-16


6502のクロック調査

 6502とApple IIシステムROMの秘密を読んでSBC6800をちょっと改造すれば6502で遊べるのでは、と思いついた。クロックジェネレータ役のPICの1MHz出力を6502のφ2inに接続し、φ2outを6800のE信号代わりにすればできそうと思ったがW65C02のデータシートに気になる記述が。
PHI1O and PHI2O clock delay from PHI2 is no longer specified or tested and WDC recommends using an oscillator for system time base and PHI2 processor input clock.
φ2inとそれから生成するφ1out、φ2outのタイミングは規定せず外部からのφ2を基準にしろと書いてある。ということで手持ちの6502と65C02でφ2inとφ2outの観測を行った。

 CH1はPICの出力する1MHzで6502の37ピン、φ2in(φ0)に接続。CH2は39ピンのφ2outで受け端のLS00で観測。データシートでは下がりきった所のディレイだが、画像は立ち下がり始めの所の比較。
20206502-1

・W65C02 φ2inとφ2out間の規定なし 約50ns/25ns
20206502-2-W65C02


・R65C02 φ2in↓からφ2out↓までmax 50ns 実測値約50ns/25ns

R65C02-Tdly50ns


20206502-R65C02


・SY6502 φ2in↓からφ2out↓までmax 65ns 実測値約50ns/50ns
SY6502CLK-65ns

20206502-SY6502


・MOS6502 φ2inとφ2out間の規定なし、バスタイミングはφ2outベースで記述 約50ns/50ns
20206502-MOS6502

 1MHz動作でφ2in-φ2out間のディレイはNMOS品で約50ns/50ns、CMOS品で約50ns/25ns。NMOS品は立ち上がりがCMOS品よりもなだらか。
 この程度のディレイだと1MHz動作(有効時500ns)ではI/Oやメモリアクセスで300nsかかったとしても充分余裕がある。

 では実際のパソコンなどではどうか?回路図を探して確認してみる。

APPLE 1:φ2outを使用していない
APPLE II:φ2outを使用していない
PET2001(初代);φ2outはPIA/VIAのみ。バッファ経由で外部引き出し
PET2001N(DRAM版);φ2outはPIA/VIA/VRAMアクセスのみ

 ということで積極的には使っていない模様。MOS6502でφ2inとφ2outの規定がないにも関わらずφ2inベースで設計されているのはなぜなのか。考えられるのは:
・φ2out出力が弱く全体を駆動するのにバッファが必要だがそれをするくらいなら原発振から作ったほうがマシ
・システムクロックがMPUを経由してしまうのでビデオ出力のタイミングなどMPUを外す/故障してしまうと動かなくなる
あたりだろうか。

 さてSBC6800を改造して6502を搭載する方法だが実験で使ったPICの1MHz出力をφ2inへ、E信号の代わりをφ2outでも動きそうだが改造が非常に面倒だったのでφ2outを使わない方向で再検討する。


6502データシート一覧:




6502とApple II システムROMの秘密
柴田文彦
ラトルズ
2020-02-25



メモ:PET2001のROMセレクト

 PET2001のROMはこのように大きなアルミ製の放熱板が接着してある。これはROM自体が発熱し内容が読めなくなるようなトラブル対策だと思われるが、実際手持ちのPET2001は基板上のROM付近が悪さをして起動しない。

2020PET2001ROM

 で、現在はROM/RAM replacement boardを使っている。これはMPU 6502と差し替えて使うボードで、メモリアクセスはボード上のROM/RAMに対して行う。ROMやRAMは一部または全部、本体側のメモリをアクセスするような設定もできる。


 PET2001のROMはMOSテクノロジ製で入手困難。このROM/RAMreplacement boardでもできるのだが入手性と価格で2台目以降のPET2001にはもっと簡便な方法で対処したい。ということでPET2001のROM領域だけでもリプレースできないか考えた。

 PET2001のROM領域は$9000~$FFFFで、このうち$E800~$EFFFの2KバイトはI/O領域となる。これを整理すると:

$8000~$FFFF はVRAM,ROM,I/O領域
$8000~$8FFF はVRAM領域なのでROMアクセスから除外
$E800~$EFFF はI/O領域なのでROMアクセスから除外
基板上のROMは全部はずし、6502と差し替えるボード上のROMにアクセスする

 ROM/RAM replacement boardはPLDでアドレスデコードを実現している。これ汎用ロジック2個ぐらいでなんとかできんだろうか。できた。

PET2001ROMDECODE_2020-03-17 21_18_56

 LS139とLS138をそれぞれ1個。初段のLS139では以下をデコード。
(1) x000_xxxx_xxxx_xxxx
(2) x110_xxxx_xxxx_xxxx

 次段のLS139では(2)に追加。
(2') x110_1xxx_xxxx_xxxx

 これらと$8000~$FFFFのアクセスを最終段のLS138でまとめ、クロックφ2とあわせROMの*CSを得る。ロジックは三段になるがクロックは1MHzなので問題ない。これで汎用ロジックIC 2個で実現できそう。



 今朝方あまりにも寒くて眠れずずっと考えていたのをメモしました。

15KHz対応の液晶ディスプレイと注意点

  1980年代の古いパソコンで遊ぶためには専用のデジタルRGB対応ディスプレイが必要になることがあるのだけれども当時物はブラウン管で場所も取るしそもそもブツがない。だが一部の液晶ディスプレイではデジタルRGBからアナログRGBの変換をすれば非公式で約15KHzの水平同期周波数に対応しているものがある。

 まずデジタルRGBからアナログRGBへの変換について。

VGA端子(Wikipedia)

 8ピン角型端子はディスプレイ側の形状で、パソコン側はほとんどがDIN 8P。すべての信号はTTLレベルだが、映像信号(R,G,B)はFM-8の例をみるとオープンコレクタの74LS07出力を330Ωで+5Vにプルアップした出力になっている。これをアナログRGBの信号入力、ピークで0.7Vになるよう電圧を変換する。インピーダンスを75Ωとして、デジタルRGBとアナログRGBをつなぐケーブルに直列に挿入する抵抗値は約130Ω。VSYNC/HSYNCはTTLレベルなのでそのまま接続してよい。

Untitled_2020-03-10 16_08_31

 作ってみたもの。68Ωと75Ωを直列にして143Ωにしている。
2020VGA1

 一部の機種はDIN 8Pに+12Vが供給されていたり、FM-11などRGBに加えてI(Intensity)信号が追加されているものもある。この基板は電源供給チェックのLEDをつけてあり、RGBIには未対応。


手持ちの液晶ディスプレイで15KHz表示が確認できたもの:

MITSUBISHI RDT171LM
MITSUBISHI RDT202WM-S
SONY CPD-L150

15KHz表示できなかったもの:

MITSUBISHI RDT156V
ADTEC AD-AS15R
LG L1753S

 15KHz表示は320x200や640x200のように縦200ドット、24KHz表示は640x400のように縦400ドット。VGAは31KHzで640x480で縦480ドット。24KHzも試したかったけど機材故障につき実験できなかった。ADTEC AD-AS15Rは以前試した結果では24KHz OK。

 さて、CASIO FP-1100ではこのようにドットが欠けたように表示される。これは640x400表示を水平同期周波数15KHzで行う場合に縦の奇数ドットと偶数ドットを交互に出力するインターレース表示を行っているせいできちんと表示できない。日立ベーシックマスターレベル3もインターレース表示モードでは同様の結果。レベル3純正では長残光ディスプレイというものを使っていた。液晶ディスプレイでは直前のフレームが残像にならないのでこうなるようだ。

2020VGA2


 これはSONY CPD-L150にCASIO FP-1100を接続した例。文字の形はちゃんとしていそうだが表示が二重にだぶっている。これはCPD-L150がディスプレイ側に画面のバッファを持っていて、インターレース表示での奇数側、または偶数側のフレームが残っているようにみえる。
あと、CASIO FP-1100は常時インターレース表示らしい。

2020VGA3


 ケーブルは完成品がありますね ↓




記事検索
プロフィール

hardyboy

カテゴリ別アーカイブ
月別アーカイブ
QRコード
QRコード
  • ライブドアブログ