16KBの壁
2026.01.21
HB-101でRAM16KBは十分な容量でした。
最初は何も知りませんから、BASICで12431bytes freeと表示されるのを見て、16KBって12,431バイトなんだと思ったかもしれません。
16KBは16,384バイトだけど、BASICのワークエリアがあるので自分がBASICで使えるのはそれだけのバイト数だよっていう意味。
16KBで十分かと思ったら、たまに32KBを要求されるソフトがあって、その時だけは不満でした。なんだ32KBじゃないと動かないのかとガッカリ。
高校1年の時にプリンタを買ったら、画面コピーユニットというカートリッジが付属していました。
それは内部にRAMを持っていて、画面コピーとして使わない時は切り替えて本体RAMの増設用になるという物。
これでとりあえず32KB使えるようになりました。
画面コピーを当時は勘違いしていて、ビデオキャプチャーだと思っていたのです。これで好きなアニメを取り込んでカラー印刷できると思っていたら、現実は違っていた。
それは単純に、MSXの画面を印刷するだけだったのです。
ビデオ信号の取り込みではありませんでした。(カートリッジを最初取り出した時、どこにビデオ信号の端子があるんだろうと思った)
PAUSEボタンで一時的にMSXの動きを止めておき、画面コピーボタンを押すとプリンタが動き出して印刷されるというものでした。
そういえばPAUSEボタンの操作で時々暴走したことがあったような。あれは何だったんだろうと、後年になってHB-101の回路図を追ってみたりしました。
そのうちに64KBのRAMを持つMSXが登場したけれど、
BASICで使えるフリーエリアは32KB機と同じ、どうやってあとの32KBを使うのかが最初全くわかりませんでした。
最初は何も知りませんから、BASICで12431bytes freeと表示されるのを見て、16KBって12,431バイトなんだと思ったかもしれません。
16KBは16,384バイトだけど、BASICのワークエリアがあるので自分がBASICで使えるのはそれだけのバイト数だよっていう意味。
16KBで十分かと思ったら、たまに32KBを要求されるソフトがあって、その時だけは不満でした。なんだ32KBじゃないと動かないのかとガッカリ。
高校1年の時にプリンタを買ったら、画面コピーユニットというカートリッジが付属していました。
それは内部にRAMを持っていて、画面コピーとして使わない時は切り替えて本体RAMの増設用になるという物。
これでとりあえず32KB使えるようになりました。
画面コピーを当時は勘違いしていて、ビデオキャプチャーだと思っていたのです。これで好きなアニメを取り込んでカラー印刷できると思っていたら、現実は違っていた。
それは単純に、MSXの画面を印刷するだけだったのです。
ビデオ信号の取り込みではありませんでした。(カートリッジを最初取り出した時、どこにビデオ信号の端子があるんだろうと思った)
PAUSEボタンで一時的にMSXの動きを止めておき、画面コピーボタンを押すとプリンタが動き出して印刷されるというものでした。
そういえばPAUSEボタンの操作で時々暴走したことがあったような。あれは何だったんだろうと、後年になってHB-101の回路図を追ってみたりしました。
そのうちに64KBのRAMを持つMSXが登場したけれど、
BASICで使えるフリーエリアは32KB機と同じ、どうやってあとの32KBを使うのかが最初全くわかりませんでした。
PV-7との縁
2026.01.21
最初にMSXを買おうとした中学生の頃、
やはり予算的に厳しく、PV-7で我慢すると言ったら変だけど、それしかないかと思っていました。でも、RAM容量には不満がありました。
増設RAMを買い足して・・・そうすると他の機種のほうが・・・。
田舎なので選択肢に困るような店はありません。ちょろっとしか置いてありません。
まず、PV-7が陳列されている店(デパート)へ行き、店員さんに聞いてみると在庫がないって。
それじゃ、向かい側の電器店へ行ってみよう。
HB-101が有って、確か¥46,800じゃなかったかな。ゲームソフト無しなら\40,300にしますと言われました。じゃあ、これにしますということで買って帰ってきました。
図書館で読んだ、良いパソコン悪いパソコンという本。これに「ついに出た使い捨てパソコン」と称してPV-7が紹介されていたのにショックを受けました。ひどいなー。
「キャラメルかヌガーを並べたようなキーボード」という文章を今も覚えています。当時ヌガーは知らなかった。
PV-7は直接触る機会がなかったけど、同級生がMX-10を買いました。それを持ってうちに遊びに来たけど、これはこれで小さくまとまってて良いなあ、欲しくなった。
しかも電波が飛ばせるでしょう。私がSC-3000でやっていた事が最初からできるなんて。あの丸い玉の付いたアンテナ。(記憶あいまい)
その後何十年も経過して、実際にPV-7に触れる機会がなかったのです。
たまたまオークションで見つけた、汚れたPV-7(泥がくっついていた)
なんと、たった\500だって。誰も買わない。
落札したら、ほんとにどこで拾ってきたという汚れ具合。一応動くけどキーは強く押さないと受け付けないし。電源アダプタも無い。
できるだけ手入れしました。
主に自分で作ったMSX周辺機器のテスト用として活用していました。
数年後に部屋を掃除したくなり、整備してから売りました。これで一旦は縁が切れました。
そしてまた、去年か・・・動作しないという個体を某フリマから買って、確かに動かない。
かえってこういうのは単純な原因だよなーと思いながら調べていきました。
以前ここに書いたようにROMの不良。マスターとベリファイしてみると特定ビットが異常。
ソケットの接触ではなく、やはりROM自体が不良になっていました。
ROMの不良は過去何度か経験がありました。別のパソコンで。
こうして復活し、電解コンデンサも交換してリフレッシュした個体は今も手元にあります。
やはり予算的に厳しく、PV-7で我慢すると言ったら変だけど、それしかないかと思っていました。でも、RAM容量には不満がありました。
増設RAMを買い足して・・・そうすると他の機種のほうが・・・。
田舎なので選択肢に困るような店はありません。ちょろっとしか置いてありません。
まず、PV-7が陳列されている店(デパート)へ行き、店員さんに聞いてみると在庫がないって。
それじゃ、向かい側の電器店へ行ってみよう。
HB-101が有って、確か¥46,800じゃなかったかな。ゲームソフト無しなら\40,300にしますと言われました。じゃあ、これにしますということで買って帰ってきました。
図書館で読んだ、良いパソコン悪いパソコンという本。これに「ついに出た使い捨てパソコン」と称してPV-7が紹介されていたのにショックを受けました。ひどいなー。
「キャラメルかヌガーを並べたようなキーボード」という文章を今も覚えています。当時ヌガーは知らなかった。
PV-7は直接触る機会がなかったけど、同級生がMX-10を買いました。それを持ってうちに遊びに来たけど、これはこれで小さくまとまってて良いなあ、欲しくなった。
しかも電波が飛ばせるでしょう。私がSC-3000でやっていた事が最初からできるなんて。あの丸い玉の付いたアンテナ。(記憶あいまい)
その後何十年も経過して、実際にPV-7に触れる機会がなかったのです。
たまたまオークションで見つけた、汚れたPV-7(泥がくっついていた)
なんと、たった\500だって。誰も買わない。
落札したら、ほんとにどこで拾ってきたという汚れ具合。一応動くけどキーは強く押さないと受け付けないし。電源アダプタも無い。
できるだけ手入れしました。
主に自分で作ったMSX周辺機器のテスト用として活用していました。
数年後に部屋を掃除したくなり、整備してから売りました。これで一旦は縁が切れました。
そしてまた、去年か・・・動作しないという個体を某フリマから買って、確かに動かない。
かえってこういうのは単純な原因だよなーと思いながら調べていきました。
以前ここに書いたようにROMの不良。マスターとベリファイしてみると特定ビットが異常。
ソケットの接触ではなく、やはりROM自体が不良になっていました。
ROMの不良は過去何度か経験がありました。別のパソコンで。
こうして復活し、電解コンデンサも交換してリフレッシュした個体は今も手元にあります。
PICマイコンを振り返る
2026.01.21
最初のきっかけは1995年12月号のトラ技の特集(例によって間違いも結構あった)
そこで興味を持って、マイクロチップ社のデータブックを取り寄せた。当時は英文のみで分厚い本だった。
当時はネットでPDFファイルを入手することはできなかった。
パソコン通信のアクセスポイントが有り、そこからダイヤルアップで接続して書込用ソフトか、サンプルプログラムか何かを取ってきた事がある。通話料を気にしながらのアクセスで、あせりそう。
とにかく、PIC16C84を手に入れた。さてこれをどうやって書き込もうか。
当時有名だったのはPCのパラレルポートに接続する回路で、アプリケーションノートの何番だっけ。(AN589)
実際に作ったけど・・・最終的には書き込めた。途中でうまくいかない事があって、あれこれ試行錯誤した。そこらへんはよく覚えてない。
トラ技に載っていたシリアル通信で書き込むライターを作るために、その制御プログラムの書き込まれたPICが必要だったから、それを書き込む為のライターが要るという、たまごとにわとりのような話。
ただ、それは1種類のPICしか書けなかった。しばらくは、それで何とかなった。
そのうちに秋月のキットが出て乗り換えた。アルミケースを加工して組み込み、わりと最近まで(使わなくなっても)持っていた。
PIC16C84はPIC16F84になり、やがてA付きのPIC16F84Aになった。(以下PICは略す)
その次に乗り換えたのは16F628で、これもA付きの16F628Aになった。
A無しからA有りに乗り換える時、プログラムを修正しないと動かなかった。ここのところが面倒だった。確かI/Oの初期設定でコンパレータか何か。
非常に興味を持ったのは8ピンPICで、確か最初は12C508
容量の違いで508と509が有った。
最初はワンタイムか窓付きだけ。フラッシュは無かった。
その窓付きは確か当時二千円ぐらい?
これは最初に動かそうとした時、なかなか動かなくて苦労した。
CONFIGの設定を完全に理解していなかったと思う。調べてあれこれ変えて試すことの繰り返し。ようやくLEDの点滅。
8ピンに入るなんて純粋にすごいなーと思った。ただ、機能的には物足りなかった。タイマー割り込みなどが無かった。TMR0がカウントアップするだけ。
その頃、現場で遊技機の検査をする業者(裏ROMや不正な部品が仕込まれていないか調べる)が、「こんなものが付いていた」と持ってきたのがPIC16C84を使った「ぶら下がり」基板。
それと、フラットケーブルコネクタの中に仕込まれた8ピンPIC。よくこんなもん作るなあ、と。
そしてEEPROM内蔵の12CE508。518だったか。これも窓付きとワンタイムで、窓付きは中をのぞいてみると2チップ構成になっていた。とりあえずくっつけて作った感じ?
個人的にPICの法則と呼んでいる事があって、何かというと、I/Oポートの割り付けでいつもピンが微妙に足りない。
18ピンPICだとピンが不足する。それじゃ次は28ピンだ。いや40ピンだ。
28ピンは16F873、40ピンは16F877を使うようになり、それと18F4550も使った。
書込機の課題はどうしたかというと、結局は純正が一番ということで落ち着いた。
当時PSTART PLUSを秋月から買った。
会社ではマイクロチップ純正のPICSTART PLUSを買って使っていた。
バージョンアップごとに対応するPICの型番が増えてきたけど、17C44だっけ。最初は40ピンの窓付きPICが入っていた。
その容量が足りなくなったんだろう、基板に置き換わったけれど、当初それが壊れやすかった。
物理的に壊れるんじゃなくて、ファームウェアが飛んでしまう。ふとした事で動かなくなり、秋月に問い合わせて書き換えてもらった。
そのうちに安定して、現在も使える状態にある。
使いたい時に使えないと困るから、同じ物を2台も買って持っていた。
自分で書き換えられないか試したことがある。基板の回路を追って、PGCとPGDなどの端子を調べて別のライターから。
いつだったかマイクロチップ社のセミナーが九州で開催され、参加した時にICD2 LEの販売があったと思う。これを手に入れたら書込が飛躍的に速くなった。
これは解剖して回路図を書き起こしたんだっけ。顕微鏡を見ながらパターンを追って・・・同じ働きをする物を自作した。
最初からずっとアセンブラを使っていて、このマイコンのアーキテクチャはC言語向きじゃないだろう、メモリを食うだろうと思いこんでいました。
それに最初の頃、Cコンパイラは高価でした。買ってまで試そうと思わなかったですね。秋月で安いのが出てなかったっけ。使い方がわからなくて放置してそれっきりだったような。
いつからCコンパイラを使い始めたかというと、確か2009年あたりじゃないかと思う。
今までアセンブラで長々と打ち込んでいたのがシンプルに書けて、もっと早くから使えばよかったなと後悔。
タイミング的にギリギリな所はアセンブラで書くのは仕方ない。
ただ、ちょっと浮動小数点の計算が入るだけで容量が膨れ上がるから、なるべくそんな処理は避けるように工夫する必要があった。
くせのあるPICだったけど、慣れてしまうとあまり気にならなくなり、しかもC言語を使っているとそれがなおさら感じられなくなる。
これでいいと思っていたら、Arduinoが出始めた。出始めたというより以前からあったんだろうけど、知られるようになった、自分が知った頃か。
私は最初ArduinoではなくAVRをAVR Studioで使っていた。こっちのアーキテクチャのほうが素直で良いなと、但しアセンブラは試したことがない。
仕事でも結構複雑なプログラムを作ったりして、かなり活躍した。
PICについては、やっぱり慣れもあるし、もともとそれで作られた物の改良などを請け負ったりしてそれなりに使い続けていた。
ただ、18Fシリーズは1種類しか使った覚えが無いような。それとdspicも使ったことがない。
Ethernetをいじった時に使ったのは何だったか忘れた。
仕事でやったのは、たとえば最新ソースが失われて、PIC現物から読み出すしかない、最新ソースを再現してくれというもの。しかも、それに新機能を加えてくれ、と。
なんだろうな。担当者が失踪したのかPCが壊れたのか間違って消したのかは定かでない。
まあでもプロテクトがかかってなくて良かった。
そこから逆アセして、旧版のソースは有ったのでそれと照合しながら相違点を埋めていって徐々に再現した。
なんと、16F877のプログラムメモリを広範囲に使っている。バンク切り替えだらけ。これが地獄の入口よ。
バンク切り替えイチイチメンドクセー!!
新機能の追加でプログラムを書き足すと、バンクをまたいでしまうのである。あふれないように見直してみるが、やはり詰めようがないのでどこか空いている所へ移動できないか検討したりして何とか入れ込む。
それで動かしてみると暴走する。
また見直して、これが原因だったかと特定して、これはどうにかならんものかと頭を抱えて、また直して試して・・・
もうアセンブラやめてCで全部書き直したほうがマシじゃないのかと。でも容量的に厳しくなるかもな。やっぱり地獄に変わりは無く、再度この仕事が来ても受けたくないな。
そこで興味を持って、マイクロチップ社のデータブックを取り寄せた。当時は英文のみで分厚い本だった。
当時はネットでPDFファイルを入手することはできなかった。
パソコン通信のアクセスポイントが有り、そこからダイヤルアップで接続して書込用ソフトか、サンプルプログラムか何かを取ってきた事がある。通話料を気にしながらのアクセスで、あせりそう。
とにかく、PIC16C84を手に入れた。さてこれをどうやって書き込もうか。
当時有名だったのはPCのパラレルポートに接続する回路で、アプリケーションノートの何番だっけ。(AN589)
実際に作ったけど・・・最終的には書き込めた。途中でうまくいかない事があって、あれこれ試行錯誤した。そこらへんはよく覚えてない。
トラ技に載っていたシリアル通信で書き込むライターを作るために、その制御プログラムの書き込まれたPICが必要だったから、それを書き込む為のライターが要るという、たまごとにわとりのような話。
ただ、それは1種類のPICしか書けなかった。しばらくは、それで何とかなった。
そのうちに秋月のキットが出て乗り換えた。アルミケースを加工して組み込み、わりと最近まで(使わなくなっても)持っていた。
PIC16C84はPIC16F84になり、やがてA付きのPIC16F84Aになった。(以下PICは略す)
その次に乗り換えたのは16F628で、これもA付きの16F628Aになった。
A無しからA有りに乗り換える時、プログラムを修正しないと動かなかった。ここのところが面倒だった。確かI/Oの初期設定でコンパレータか何か。
非常に興味を持ったのは8ピンPICで、確か最初は12C508
容量の違いで508と509が有った。
最初はワンタイムか窓付きだけ。フラッシュは無かった。
その窓付きは確か当時二千円ぐらい?
これは最初に動かそうとした時、なかなか動かなくて苦労した。
CONFIGの設定を完全に理解していなかったと思う。調べてあれこれ変えて試すことの繰り返し。ようやくLEDの点滅。
8ピンに入るなんて純粋にすごいなーと思った。ただ、機能的には物足りなかった。タイマー割り込みなどが無かった。TMR0がカウントアップするだけ。
その頃、現場で遊技機の検査をする業者(裏ROMや不正な部品が仕込まれていないか調べる)が、「こんなものが付いていた」と持ってきたのがPIC16C84を使った「ぶら下がり」基板。
それと、フラットケーブルコネクタの中に仕込まれた8ピンPIC。よくこんなもん作るなあ、と。
そしてEEPROM内蔵の12CE508。518だったか。これも窓付きとワンタイムで、窓付きは中をのぞいてみると2チップ構成になっていた。とりあえずくっつけて作った感じ?
個人的にPICの法則と呼んでいる事があって、何かというと、I/Oポートの割り付けでいつもピンが微妙に足りない。
18ピンPICだとピンが不足する。それじゃ次は28ピンだ。いや40ピンだ。
28ピンは16F873、40ピンは16F877を使うようになり、それと18F4550も使った。
書込機の課題はどうしたかというと、結局は純正が一番ということで落ち着いた。
当時PSTART PLUSを秋月から買った。
会社ではマイクロチップ純正のPICSTART PLUSを買って使っていた。
バージョンアップごとに対応するPICの型番が増えてきたけど、17C44だっけ。最初は40ピンの窓付きPICが入っていた。
その容量が足りなくなったんだろう、基板に置き換わったけれど、当初それが壊れやすかった。
物理的に壊れるんじゃなくて、ファームウェアが飛んでしまう。ふとした事で動かなくなり、秋月に問い合わせて書き換えてもらった。
そのうちに安定して、現在も使える状態にある。
使いたい時に使えないと困るから、同じ物を2台も買って持っていた。
自分で書き換えられないか試したことがある。基板の回路を追って、PGCとPGDなどの端子を調べて別のライターから。
いつだったかマイクロチップ社のセミナーが九州で開催され、参加した時にICD2 LEの販売があったと思う。これを手に入れたら書込が飛躍的に速くなった。
これは解剖して回路図を書き起こしたんだっけ。顕微鏡を見ながらパターンを追って・・・同じ働きをする物を自作した。
最初からずっとアセンブラを使っていて、このマイコンのアーキテクチャはC言語向きじゃないだろう、メモリを食うだろうと思いこんでいました。
それに最初の頃、Cコンパイラは高価でした。買ってまで試そうと思わなかったですね。秋月で安いのが出てなかったっけ。使い方がわからなくて放置してそれっきりだったような。
いつからCコンパイラを使い始めたかというと、確か2009年あたりじゃないかと思う。
今までアセンブラで長々と打ち込んでいたのがシンプルに書けて、もっと早くから使えばよかったなと後悔。
タイミング的にギリギリな所はアセンブラで書くのは仕方ない。
ただ、ちょっと浮動小数点の計算が入るだけで容量が膨れ上がるから、なるべくそんな処理は避けるように工夫する必要があった。
くせのあるPICだったけど、慣れてしまうとあまり気にならなくなり、しかもC言語を使っているとそれがなおさら感じられなくなる。
これでいいと思っていたら、Arduinoが出始めた。出始めたというより以前からあったんだろうけど、知られるようになった、自分が知った頃か。
私は最初ArduinoではなくAVRをAVR Studioで使っていた。こっちのアーキテクチャのほうが素直で良いなと、但しアセンブラは試したことがない。
仕事でも結構複雑なプログラムを作ったりして、かなり活躍した。
PICについては、やっぱり慣れもあるし、もともとそれで作られた物の改良などを請け負ったりしてそれなりに使い続けていた。
ただ、18Fシリーズは1種類しか使った覚えが無いような。それとdspicも使ったことがない。
Ethernetをいじった時に使ったのは何だったか忘れた。
仕事でやったのは、たとえば最新ソースが失われて、PIC現物から読み出すしかない、最新ソースを再現してくれというもの。しかも、それに新機能を加えてくれ、と。
なんだろうな。担当者が失踪したのかPCが壊れたのか間違って消したのかは定かでない。
まあでもプロテクトがかかってなくて良かった。
そこから逆アセして、旧版のソースは有ったのでそれと照合しながら相違点を埋めていって徐々に再現した。
なんと、16F877のプログラムメモリを広範囲に使っている。バンク切り替えだらけ。これが地獄の入口よ。
バンク切り替えイチイチメンドクセー!!
新機能の追加でプログラムを書き足すと、バンクをまたいでしまうのである。あふれないように見直してみるが、やはり詰めようがないのでどこか空いている所へ移動できないか検討したりして何とか入れ込む。
それで動かしてみると暴走する。
また見直して、これが原因だったかと特定して、これはどうにかならんものかと頭を抱えて、また直して試して・・・
もうアセンブラやめてCで全部書き直したほうがマシじゃないのかと。でも容量的に厳しくなるかもな。やっぱり地獄に変わりは無く、再度この仕事が来ても受けたくないな。
2026.01.21 21:26
|
