Webブラウザの入力支援ツール

Webブラウザを使っている時、「名前」とか「電話番号」とか決まりきった情報を何度も入力しないといけない時があります。
その面倒くささを解消するために作ったツールです。
たぶん、似たようなツールがもうあると思います。

#include "hspext.as"
screen 0,200,200
str1 = "012345"
str2 = "0123456789"
str3 = "name"
str4 = "furigana"
str5 = "tel"
str6 = "sonota"
print "Copy Clipboard"
objsize 200,25
button gosub str1,*button1
button gosub str2,*button2
button gosub str3,*button3
button gosub str4,*button4
button gosub str5,*button5
button gosub str6,*button6
stop
*button1
clipset str1:return
*button2
clipset str2:return
*button3
clipset str3:return
*button4
clipset str4:return
*button5
clipset str5:return
*button6
clipset str6:return

プログラムはこれだけ。HSPで動きます。
変数str~の中に、電話番号とか、名前とかをあらかじめ入力しておきます。この段階ではダミーを入れてます。
個人情報が画面に見えまくりになってしまうのが欠点です。

f:id:nicotakuya:20210805183237p:plain
ボタンを押すと、クリップボードにコピーされる

実行すると、こうなります。ボタンを押すと、その文字がクリップボードにコピーされます。あとはWebブラウザの入力フォームにペーストするだけです。
このツール、ワクチン接種の予約システムでの個人情報(市区町村コード、接種券番号、生年月日)の入力に使えるかと思ったのですが、自衛隊のところだと生年月日がペーストに反応してくれません。ちょっと失敗。

PC-6006の解析

f:id:nicotakuya:20210729012008j:plain

PC-6006

PC-6001用の周辺機器、「ROM/RAMカートリッジ PC-6006」です。

RAMの増設と、DIPタイプのROM(UVEPROMなど)を挿せるという2つの機能を搭載しています。

 私自身はPC-6001mkIIで育ったので、このPC-6006にお世話になったことがありません(PC-6001mkIIは最初からRAMが増設されている)。

ICソケットには容量4KBのROMを2個追加できます。なぜ4KBなのか? なぜ2個なのか? っていうのが謎ですが、当時のROMって4KBが主流だったのでしょうか。

 

f:id:nicotakuya:20210801200840j:plain

PC-6001に接続

PC-6006は、PC-6001で「OLION」とか「タイニーゼビウス」を遊ぶ時の必需品とのこと。PC-6001で4色グラフィック(ページ2)を使おうすると、RAMがほとんどなくなってしまうので、増設は必須となるわけです。

しかし、RAMの増設で、1つしかないスロットが埋まってしまうのは、かなり問題だと思います。

 

f:id:nicotakuya:20210731195645p:plain

メモリマップ

PC-6006を装着した場合のメモリマップ(PAGE 2)です。元々のRAMが16KBで、それに16KBを追加して32KBになります。mkII起動時のメニューの「2:N60 BASIC (RAM-32K)」に相当します。

 

f:id:nicotakuya:20210729011858p:plain

分解

私自身、PC-6006についての理解が足りてなかったので、分解してみました。

 

f:id:nicotakuya:20210803225430p:plain

回路図

解析して、回路図に書き起こしてみました。おそらく、どこかに間違いがあるはず。

間違いがあったら直します。

 

昔は普通だったのかもしれませんが、DRAMの使い勝手が悪すぎです。-5V、+5V、+12Vを供給しないと動きません。一度に1bitしか読み書きできないので、8個並べる必要があります。DINとDOUTで端子が2つに分かれてます。DOUTとDINが衝突しないようにするために74LS367を2個使ってます。あと、DRAMの仕様でもありますが、アドレスはA0~A6(Row)とA7~A13(Column)で 2回に分けて送信しています。このアドレスを分割する処理に74LS157を2個使ってます。

結果として、非常にゴテゴテの回路になってます。今だったらSRAM 1個で済みますね。実際のところ、ROMを挿して使う人はほとんど居なかったと思うので、RAM機能だけバージョンのカートリッジを発売すれば良かった気がします。

仕組みが理解できたので、次回からはRAMカートリッジも自作できると思います。

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」に変更しました。

目盛りも追加しました。

 

(2021/08/06)

f:id:nicotakuya:20210806222711p:plain

上下反転機能を追加

上下反転できるようにしました。

「Start from FFFF」を選択すると、FFFF番地が上になります。

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

本体に挿した場合

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

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

 

f:id:nicotakuya:20210801010303j:plain

PC-6001でテスト

f:id:nicotakuya:20210801010609j:plain

ガワの修正

(2021/08/01追記)PC-6001で動作チェックしてみましたが、問題なく動きました。

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

 

nicotakuya.hatenablog.com

nicotakuya.hatenablog.com

日経ソフトウエア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

 

(追記)誤植のお詫びと訂正

nicotakuya.hatenablog.com