PC-6001のメモリマップ

PC-6001のメモリマップを表示するJavascriptです。

取扱説明書のメモリマップが見づらいので作ってみました。カートリッジ基板を自作した時にこういうツールの必要性を感じてました。

GitHub - nicotakuya/pc6001memorymap

 

サーバーで実行したい場合は、こちら。

nicotak.com

 

f:id:nicotakuya:20210730071648p:plain

実行例

実行結果はこんな感じ。カラフる感じる。

画面1のVRAMが1KBしかありません。これは厳しすぎる。

32KBモードの場合、VRAMやワークが使ってしまうので、実際に使えるメモリは23KBだということが理解できました。今更ですが。これでタイニーゼビウスが作れてしまうというのが恐ろしい。

あと、ソース内にメモリマップの並びを上下反転する処理をコメントにしておきました。逆だと思う人は修正してお使いください。

 

f:id:nicotakuya:20210731170640p:plain

ちょっと修正

「SCREEN」だとスクリーンモードを間違えるので「PAGE」に変更しました。

目盛りも追加しました。

PC-6001用カートリッジ基板の自作(組み立て編)

PC-6001用カートリッジ作りの続きです。

nicotakuya.hatenablog.com

 

約1年2か月ぶりに進展しました。もう細かいことを忘れてしまい、自分で作った気になっていたのですが、ブログを読み直すと、p6ers.netの記事を参考に作ってるだけでした。

 

とりあえず動いたレベルですが、製作過程を動画にしてみました。


www.youtube.com

  

f:id:nicotakuya:20210726041418j:plain

材料

プリント基板ができました。

板の厚みは1mmにしました。本来は1.6mmくらいがベストだと思うので、挿し込むとゆるいです。

フラッシュメモリは1Mbit(128KB)を使ってますが、8KBしか使いません。容量余りまくりです。

 

f:id:nicotakuya:20210726042153p:plain

HELLOと表示するプログラム(p6ers.netより)

動作検証用のプログラムはp6ers.netからもらってきました。

p6ers.net

 

Z80アセンブラは何を使ったらいいのか皆目わからないのですが、T.Sagaeさんという方が開発した「AASM  version 3.73」を使ってみました。マクロとラベルの記述のルールが違うので、そこだけ修正しています。

 

f:id:nicotakuya:20210726042508p:plain

バッチファイル

 

そのままHEXファイルをバイナリ出力すると、0番地から出力されてしまいます。そこで、付属のツール(hex_ut)を使って、0x0000~0x3FFF番地の中身を捨てて、0x4000番地から始まるようにします。p6hello.binというファイル名で出力しました。

 

f:id:nicotakuya:20210726051658p:plain

PC-6001mkIIのエミュレータで実行

バイナリファイルをPC-6001mkIIのエミュレータで実行すると、こうなります。PC-6001mkIIでも動くのか謎だったのですが、全く問題ないです。自動でPC-6001モードに切り替えるだけですね。

 

f:id:nicotakuya:20210726042854j:plain

自作のフラッシュメモリライター

フラッシュメモリライターは以前作ったゲームボーイ用を改造して作りました。

50pinのカードエッジコネクタは千石電商で売ってます。

 

f:id:nicotakuya:20210726042618p:plain

ライター用プログラム

フラッシュメモリライターの実行画面です。

自分の回路はデコードなし、A0~A14までのアドレスバスを直結してるので、ROMイメージの0x0000~1FFF番地の内容を0x4000~5FFF番地に書き込みます。フラッシュメモリ内部の0x0000~0x3FFF番地がムダになってしまうので、そこがダサいですね。

 

f:id:nicotakuya:20210727000048p:plain

スロットに入れる

書き込みが終わったら、カートリッジ基板をスロットに入れます。カートリッジを検出するスイッチがスロットの内側にあるので、onにする必要があります。

 

f:id:nicotakuya:20210726104353j:plain

実行中

電源を入れ、「HELLO PC-6001と表示されたら成功です。

 

f:id:nicotakuya:20210726174944p:plain

パターンのミス(A10つなぎ忘れ)

フラッシュメモリの書き込みの途中、A10をつなぎ忘れるというパターンのミスを発見しました。ジャンパ線で対応しました。

作ってから改めて考えると、SRAMも載せたほうが良い感じがします。余力があったら、さらに改良版を作りたいです。

 

パターンを直した修正版を公開しています。

sites.google.com

 

(2021/07/30追記)

カートリッジのガワ(シェル)を作ってみました。

秋月で売っているケースが丁度良かったので使ってみました。

ABS樹脂ケース(蝶番式・中薄型) 112−TSS: 電子工作便利商品 秋月電子通商-電子部品・ネット通販

f:id:nicotakuya:20210730194440j:plain

ガワを自作

 

加工が大変です。ケースのまず底を丸ごと削り取ります。ヒンジも、合わせ部分のツメも削ります。

フタが閉じなくなってしまうので、テープで貼り合わせてます。

基板の固定は、1cmねじに5mmくらいに切ったストロー(コンビニでもらったやつ)を通して、ホットボンドでくっ付けてます。

f:id:nicotakuya:20210730194628j:plain

本体に挿した場合

挿し込むとこんな感じです。ホットボンドで付けてるだけなので、強度が足りないと思ったのですが、問題なかったです。

一発でストンと入らないで、どこかに衝突してしまいます。ちょっと下側に寄せると入ります。

 

(2021/08/01追記)

f:id:nicotakuya:20210801010303j:plain

PC-6001でテスト

f:id:nicotakuya:20210801010609j:plain

ガワの修正

PC-6001で動作チェックしてみましたが、問題なく動きました。

でも、mkIIと違って、カートリッジがコネクタに衝突してしまうので、ガワを削りました。これは見た目が悪いですね。

日経ソフトウエア2021年9月号(ゲームボーイ特集完結編)

雑誌「日経ソフトウエア2021年9月号」で2件ほど記事を書かせて頂きました。1つは特集記事「ゲームボーイで動くゲームを作ろう 第2部」。もう一つは新連載の「IoT時代の電子工作」です。普段、日経ソフトウエアは24日あたりに発売するのですが、今回は20日発売のようです。

f:id:nicotakuya:20210617030247j:plain

自作したゲームボーイ用カートリッジ

ゲームボーイ特集は全16ページです。前回はGBDKを使って、ボタン入力のプログラムを作成しました。今回はパズルゲームを作り、さらに自作のカートリッジ基板に書き込んで実機で動かす方法まで紹介しています。上の写真は読者プレゼント用のカートリッジです。初代ゲームボーイスーパーゲームボーイで動作チェックしました。

 


www.youtube.com

 

f:id:nicotakuya:20210721195052j:plain

読者プレゼントがゲームボーイのカートリッジ

巻末の読者プレゼントのページです。

 

f:id:nicotakuya:20210721195012j:plain

最新号、日経ソフトウエア2021年9月号

ちなみに雑誌の表紙にどこにも「ゲームボーイ」と書かれていませんが、ちゃんと載ってます。間違って別の号を買ってしまわないようにご注意ください。


掲載しているプログラムは雑誌の公式ページで配布しています。

基板のCADデータは筆者の個人サイトで公開しています。 

sites.google.com

トラ技Jr.のAI関連のWeb記事

トラ技Jr.で「Jetson AI Specialist」のWeb記事を書かせて頂きました。これで「Jetson AI Specialist」に認定してもらいました。

 

toragijr.cqpub.co.jp

 

f:id:nicotakuya:20210714151337j:plain

100円玉を数える装置

提出課題として、100円玉を数える装置を作りました。骨組みの部分にはLEGO education SPIKEを使ってみました。

 

PCエンジン用ゲームパッド・モジュールの自作

f:id:nicotakuya:20210622120632j:plain

PCエンジンゲームパッド・モジュール

 (miniではない)PCエンジン用のゲームパッドを自作してみました。ゲームパッドの形状をしていないので、正確にはゲームパッド・モジュールです。

PCエンジンゲームパッドは中古で2000円くらいで売っているので、自作のメリットはないと思いますが、作りたかったので作ってみました。

 

f:id:nicotakuya:20210622120856j:plain

純正ゲームパッド

まず最初に仕組みを調べるため、純正のゲームパッドを分解します。

この時代の製品はメンテしやすいので助かります。

 

f:id:nicotakuya:20210621124724j:plain

内部。基板の部品面

内部の様子です。メガドライブと同じ「74HC157」が入ってました。発売したのはメガドラより先ですが。

基板の左側に「74HC163」と書かれた空白部分があります。これは気になる。


f:id:nicotakuya:20210622120101p:plain

基板のハンダ面

見たところ、74HC163を付けると、ボタンの連射機能が追加されるようです。なんという親切設計。信号が衝突するので、J701/J702を外す必要があります。あと、速度設定用のスライドスイッチも必要ですね。

f:id:nicotakuya:20210622230131p:plain

回路図

仕組みがわかったので、回路図に書き写してみました。

回路はXHE-3によく似てます。こちらの場合は「~ST」端子が、7番ピンにつながっています。

XHE-3の場合は「~ST」がLowに落ちっぱなしで、7番ピンがDsub9pinの8番ピン(COMMON)につながっている点が違います。

 

f:id:nicotakuya:20210622120028p:plain

CADデータ

基板のCADデータを作ってみました。ボタンを付けず、入力用の端子を出すだけにします。基板の右側にはピンソケットと集合抵抗が付きます。

端子をGNDにつなぐとボタンがオンの状態になります。

「U」「D」「L」「R」が上/下/左/右ボタンです。1、2が Iボタンや IIボタン。

「セ」がSELECT、「ラ」がRUNボタンです。

「G」がGND、「V」がVCC(+5V)です。 

 

f:id:nicotakuya:20210620141144j:plain

プリント基板

プリント基板ができました。

 

f:id:nicotakuya:20210622120503j:plain

完成

組み立てるとこんな感じ。

74HC157は千石電商の地下で売ってます。8pinのミニDINプラグも千石電商で売ってます。

 

f:id:nicotakuya:20210622120632j:plain

コネクタが挿しにくい

ここで問題発生。 ミニDINプラグが太すぎて根本まで入りません。PCエンジン側の穴が小さいです。

しかたないので、プラグの外側のチューブを完全にハメ込まない状態で差し込んでます。

 

f:id:nicotakuya:20210622170329j:plain

PCエンジン用の自作プログラム

ボタンの動作チェックをしないといけないので、PCエンジン用のソフトを自作しました。

ボタンを押すと、それに対応するビットが0→1になります。GitHubで公開中。

https://github.com/nicotakuya/PCE_padtest

 

 

f:id:nicotakuya:20210623134821j:plain

フラッシュメモリに書き込み

ビルドしたら、ROMイメージを自作のメモリカードフラッシュメモリ)に書き込みます。

 

f:id:nicotakuya:20210623120254j:plain

テスト中の様子

PCエンジンの実機で動作テストしている様子です。

この場合、上ボタンの端子をGNDにつないでいるので、「UP」の項目が「1」になってます。

 

f:id:nicotakuya:20210623230503j:plain

ゲームボタンとレバーを接続

ゲーム用のボタンとレバーを付けるとこうなります。使いまわしなので、6ボタンになってますが、つながってるのは2ボタンだけです。

 

f:id:nicotakuya:20210624084945j:plain

XE-1 PROを接続

(2021/6/24追記)
アタリ仕様ジョイスティック(XE-1 PRO)を接続した例です。

  

sites.google.com