エントリー

カテゴリー「make:」の検索結果は以下のとおりです。

私のAppleII

 昨年秋に実家が引き払われ,すぐに必要がないが捨てるに惜しいものは,捨てるか自宅に運び込むかの判断を迫られました。

 多くが捨てられる運命にありながら(そしてそれは時に失敗でったことを思い起こさせますが),しぶとく生き残ったものがAppleIIです。

 このAppleII,経緯は良く思い出せないのですが,大学時代に働いていたパソコンショップに,ジャンクとして持ち込まれた大量の廃棄物に混じっていたものを,安く分けてもらったんじゃなかったかと思います。

 AppleIIに非純正の5インチドライブ,たったこれだけです。あとはお店に残っていた数枚のディスクのバックアップで,他の周辺機器もマニュアルも一切ありません。

 一応,DOS3.3が起動するところは確認出来たのですが,ProDOSは起動しません。そこから先はなにもすることが出来ず,また使い方もよく分からないので,そのまま放置していました。

 せめてなにかゲームが動けばなあ,と思ったりしましたが,ないものはないですし,そもそもこのAppleIIの素性がわからないですから,ゲームが動くものなのかどうかさえも判然としません。

 しかし,少し温かくなってきたこともあって,目の前にあるAppleIIを本気で動かして見ようという事になりました。(同時にPC-6001も復活させるのですがそれはまた後日)

 まず,このAppleIIが何者なのかです。調べてみると,AppleII J-plusであることがわかりました。RAMは48kB実装,ROMは10kBASICが搭載されています。キーボードにはカタカナも印刷されており,底面には冬至の代理店である東レのシールが貼られていますし,マザーボードにも"Toray"のスタンプがあちこちに押されています。

 当時わからなかったのはここから先で,まずJ-pulsとは何者なのか,です。互換性が低いので嫌われているとか,いろいろ話は耳にしますが,本当の所はどうなのでしょう。

 まず,東レが輸入したものですので,電源は100Vにもきちんと適応しますし,検査も行われています。信頼性は高いでしょう。ただし,F800からのモニタROMには,ベースとなったplusの"AUTOSTART"とは異なるROMが刺さっており,これが互換性を下げているのだそうです。

 ただ,この個体はROMがEPROM(2716)に換装されていて,そのためにCS2を反転させるインバータ(7404)を挟んだ下駄が履かされていました。これ,もしかしたらplusのAUTOSTARTに感想してあるんじゃないですかね・・・

 30年ぶりに通電しますが起動せず。ソケットを少し押し込めば起動するようになりましたので,接触不良だったのでしょう。

 次,ディスクドライブです。ニューテックという会社の互換ドライブ「飛鳥」で,チノンのハーフハイトのドライブが使われています。

 純正のDiskIIが良かったのですが,これもないものは仕方がありません。とはいえ,問題は互換性だけの話であって,信頼性や大きさなどは飛鳥の方がよいと思います。

 インターフェースカードは何故か純正と互換品の2枚が手元にあります。純正品は16と書かれたシールがあるので16トラック対応品でしょう。たしかどちらのカードも動作したと思うのですが,今回は純正品を使うことにします。

 これも最初は動かなかったのですが,抜き差しを何度かやっているうちに動くようになりました。接触不良には困ったものです。

 さて,ここまで動作する事がわかったので,一度分解して清掃します。ケースは風呂場でゴシゴシ荒い,キーボードはキートップを外して洗剤で洗います。マザーボードもホコリを払い,元通り組み立てます。

 綺麗になったAppleIIですが,さらに話を前に進めましょう。

 AppleIIには膨大なソフトがあるのですが,その多くが合法/非合法な形で,ディスクイメージとしてネット上に転がっています。体験するだけならエミュレータですぐ楽しめるのが良いところなのでしょうが,実機で動かすという話になると急激にハードルがあがります。

 AppleIIのディスクは一般的なフォーマットとは異なり,PCで書き込んだり出来ません。仮に出来たとしても,今どきPCに5インチの1Dや2Dのドライブが繋がっている可能性はほぼゼロでしょう。

 調べてみると,ADTProというソフトがあるそうで,これを使うとPCから実機に転送し,ディスクに書き込むことも出来るんだそうです。

 ただし,基本的にはAppleIIeやAppleIIcをターゲットにしているようで,私のAppleII+ではかなり大変なことがわかりました。

 まず,データの転送にはシリアルポートを使うのですが,AppleIIeやAppleII+ではSuperSerialCardなるカードが必要です。そんなもんあるかいな!

 そういう人のために,とカセットインターフェースを使う方法も用意されていて,その発想に感心したのですが,ディスクへの書き戻しはProDOSベースでないといけないそうです。

 そのProDOSはAppleII+でも動くのですが,RAMを64kBに増設しないといけないらしく,それにはLanguageCardなるカードが必要です。そんなもんあるかいな!

 とまあ,ここで詰んでしまったのですが,時代は21世紀です。今手元にある部品をかき集めれば,16kBくらいのメモリ増設など訳ないんじゃないかと,自作の道を模索してみました。

 AppleIIの生みの親のWozは,他社に先駆けてDRAMを手なずけて,安い価格で大容量メモリをAppleIIに与えることが出来ました。これがAppleIIの勝因の1つだと言えるのですが,私の手元には256kBitのSRAMが腐るほどあります。アクセスが簡単な非同期メモリであるSRAMを使えば,こんなカードは朝飯前,のはずでした。

 検討を始めて,私は増設っていうけど,どのアドレスにメモリを増設すんのよ,という疑問にぶち当たります。そう,AppleIIは,48kBのRAM,12kBのROM,そして4kBのI/Oがマッピングされていて,6502という8ビットCPUのアドレスをすべて使い切っています。

 64kBをすべてRAMにしてしまえば,ブートさえ出来ません。こういう時日本のマシンではバンク切り替えを使うんだよなあ・・・

 調べてみると,なかなかややこしいことがわかってきました。まず,64kBフルRAMしてBASIC以外の言語を走らせるために,LanguageCardというものがありました。

 これは16kBのRAMとF8のROMソケットがある純正カードですが,この16kBがマッピングされるのは本体のROMのエリアである$D000から$FFFFまでです。あれ,12kBしかこのエリアはあいていませんが,このうち$D000から$DFFFまでの4kBは,バンクを切り替えて2枚使えるようになっています。

 これで一応16kBマッピングできましたが,今後はROMとの切り替えが必要です。そこでカード内にソフトスイッチを設けて切り替えています。以下の様な感じです。

$C080 : BANK0のRAMをリード,ただし書き込みは禁止
$C081 : ROMをリード,2回目のアクセスでBANK0のRAMが書き込み可能
$C082 : ROMをリード,RAMへの書き込みは禁止
$C083 : BANK0のRAMをリード,2回目のアクセスでBANK0のRAMが書き込み可能
$C088 : BANK1のRAMをリード,ただし書き込みは禁止
$C089 : ROMをリード,2回目のアクセスでBANK1のRAMが書き込み可能
$C08A : ROMをリード,RAMへの書き込みは禁止
$C08B : BANK1のRAMをリード,2回目のアクセスでBANK1のRAMが書き込み可能

 いやはや,これを実装しないといけないんですね・・・面倒くさい。

 素直にLanguageCardやサードパーティーの互換品をデッドコピーすることも考えたのですが,これにはDRAMが使われているので面倒すぎます。ここはさくっとSRAMを使いたいのです。

 そこで,いろいろな回路を参考にして,256kBitのSRAMを使った16kB増設メモリカードを設計しました。

 256kBitだと計算があわない?鋭いですね,その通りで,今回は半分の16kBだけ使っています。もったいないですが,設計が楽なのでそうしました。

20220302153430.JPG

 これが完成写真です。SRAMは手持ちの関係でNECのuPD43256を使っています。あとは74HCが5チップで,なかなか小さくまとまっていると思います。余ったゲートは1つもありません。

 そうそう,~INHという信号を本体に戻す必要があるのですが,これ,本体内部でワイアードORされるので,オープンコレクタで出力しないといけないんですよ。でも,せっかくCMOSで作っていますし,わざわざこれだけのためにTTLを使うのもバカバカしいので,ここは基本に戻って,トランジスタで作ってあります。といっても抵抗内蔵のデジタルトランジスタなので簡単でしたが・・・

 あと,カードエッジコネクタと基板ですよ。今どきApple用のユニバーサル基板なんか簡単には手に入りませんので,MSX用のものを買いました。形がややいびつなのと,コネクタのサイズがやや大きいので削ったことを除けば,良い基板だったと思います。

 基板も高価ですし,せっかく作るのですから,真面目に回路を設計,検証して,間違いないように配線をしていきます。ソフトスイッチまわりはD-FFを多用しますので,その出力を上手く条件に当てはめて,SRAMのアドレスやらCSなどを作っていきます。

 慎重に進めた結果,一発動作です。これはうれしいなあ。

 DOS3.3では,整数型の6KBASICをこのカードにロードしてくれます。INTと打ち込めばプロンプトも>になりますし,6kBASICでないと動かないデモソフトも動くようになりました。

 さて,これでうちのAppleIIplusは64kBモデルになりました。ProDOSも動くはず・・・あれ,動きません。

 ロードが途中で止まりますので,RAMカードに問題があるのかも知れません。

 そこで,いろいろ調べたのですが,まずDOS3.3で6kBASICに切り替えが出来ているので,多分RAMは大丈夫なはずです。その後,どうにかRAMチェックプログラムを手に入れたのですが,やはり問題なしという結論になりました。

 ただ,このチェックプログラムは,文字化けがすごくて,まともに画面が表示されていませんでした。AppleIIeなど小文字が使えるマシンをターゲットにすれば文字化けも起こるものなので気にしてなかったのですが,どうも大文字ばかりが使われているようです。

 さらに同じプログラムでROMをチェックすると,F8のROMは"Unknown"となってしまいました。ここは本来"AUTOSTART"と出て欲しいのです。

 うーん,もしかしてこれがJ-plusの非互換性なのかも・・・

 とりあえず,AUTOSTARTのROMを入手しましょう。とはいえ,ROMそのものを手に入れるのはもう不可能。そこで,PlusのF8のROMイメージを手に入れ,これをEPROMに書き込むことにします。

 でも言うは易しで,私は2716や2732が書き込めるライタなど持っていません。これらはピン数が少ない,複数電源が必要,書き込みに21Vが必要ときつい縛りがあり,多くのROMライタが対応しなくなっています。

 ということで手持ちのライタで書ける2764を9316BというAppleIIのマスクROMに変換する下駄を作る事にしました。せっかくですので,PlusのROMの続きにJ-plusのROMも置いておき,スイッチで選べるようにしておきます。

 さっとバイナリを準備し,いざ書き込むとエラーで書き込めません。しばらく悩んだのですが,私が使っているLEAPER3cは27C64には対応していても,2764には対応していないことを忘れていました。そう,このデバイスには21Vの書き込み電圧が必要で,LEAPER3cは対応しないのです。

 仕方がないので27C256で書き込み,下駄基板を改造して本体に装着。凡ミスをいくつか修正して,起動させることができました。

 チェックプログラムでもROMを"AUTOSTART"と認識してくれるようになりましたので,ドキドキしながらProDOSをブートさせます。すると上手く起動してくれました。ああ,初めて見るProDOSの起動画面・・・

 こうなってくると,ADTProも動き出しますし,ゲームを書き戻すことも出来るようになりました。夢だったTimeZoneも,この目で実機で動くのを見る事が出来るなんて。移植版で死ぬほど遊んだChopLifterやLodeRunnerも,動いています。

 大きな感動に包まれ,こういう作業をちゃんと続けられる技術力がまだ残っていたことに安心したのですが,気が付いたのは5インチのFDの在庫です。2HDばかり手元に残し,2Dは捨ててしまったのですが,実はX68000もPC-9801も捨ててしまったので2HDには出番がありません。むしろ,X1turboやPC-6001,AppleIIといった2Dばなり使うマシンが残っているのです。

 しかも,貴重な10枚のブランクディスクは,カビにやられていました。

 そこで当時,高価だったディスクを節約する方法として良くおこなれた,裏返して使うという方法を試みました。

 AppleIIのディスクはかなり特殊で,インデックスホールを用いずソフトだけでセクタを管理します。なので書き込み禁止ノッチだけを開けてやれば,裏返しても使えるそうなのですが,果たして互換ドライブでも使える手口なのでしょうか?

 やってみたところ,上手くいきました。これでAE(ゲームです)なんかも1枚におさまります。

 ということで,立った1週間で急激にAppleIIを進化させました。まさか私のAppleIIのROMがAUTOSTARTではなく,それが原因でProDOSが動かなかったというのも,このAppleIIを入手した時には思いつくことすらなかったことでしょう。

 一発動作のRAMカードもうれしく,久々に30年前の根性による配線を堪能しました。面倒と思い土,やってみると楽しい作業でした。

 今回の製作にはもう1つ記念すべきことがあり,それはワイアリングペン用のワイヤを,とうとう使い切ったということです。

 それは小学6年生の時の話で,万能基板を使い出した当時の私は,配線をなんとか楽ちんに出来ないものかと悩んでいました。抵抗の足では交差させることができませんし,ビニール線では太くて盛りそばのようになってしまいます。

 そんなとき,ペンの先から細いワイヤーが出てきて,しかもハンダの熱で被覆が溶け,そのままハンダ付け出来てしまうと言う夢のような話があると耳にしました。当時よく行っていたシリコンハウス共立でも売られていましたが,輸入品だったのでびっくりするほど高価でした。

 そこで,消耗品として売られていたワイヤだけ買ってきました,それでも当時500円ほどしたと思うので,大変高価なものだったのです。

 本当にハンダの熱で被覆が溶け,そのままハンダ付けまで出来るのかなあと試したのですが,そんな甘い話はなく,被覆が溶けるのは事実でも,はんだめっきをしないでハンダ付けを行うのは難しく,そんなに作業が楽になるというものではありませんでした。

 ペン本体も,古いボールペンを改造して作ってはみたものの,やっぱり不便で使わなくなりましたが,一生かかっても使い切れないだけの長さのワイヤを,絶縁された極細のワイヤとして細々と使うことにしたのでした。

 しかし,数年後にはそこそこ使いこなせるようになり,このワイヤで多くのものを作ってきました。使っても使っても減ることのない,底なしのワイヤでした。

 そんなワイヤですが,少し前から量が減っているのが目立って来ました。そして今回,とうとう使い切ったというわけです。35年かかりました・・・

 実は,このワイヤはただのポリウレタン線で,コイルを巻いたり小型モーターをバラしたりすれば,簡単に手に入るものです。一応この太さのポリウレタン線はリールで買ってあるのでそれこそ一生困ることはないとおもいますが,独特の緑色で着色されたこのワイヤーが見納めになるというのは,さみしいと同時に妙な達成感もあったりします。

AVRの新シリーズとPICKIT4

  • 2022/02/09 13:36
  • カテゴリー:make:

 先日,SRAMとEEPROMを相互に読み書きする治具をAVR(ATmega88V)で作ったわけですが,実はブレッドボードで作りました。ブレッドボードはこれまで何かと窮屈ですし,綺麗に作る事が出来ない上に,苦労して作ったのにすぐに壊してしまうと言うはかなさが残念で,あまり積極的に使ってこなかったのです。

 まあ,結局の所ハンダ付けが好きだったという事に尽きるのですが・・・

 ですが,今年の冬の寒さは厳しくて,屋外並みに寒い作業部屋では耐えられず,暖かいリビングで作業をするために,ブレッドボードを使って見たところ,これがめっぽう面白いのです。

 DS1742Wの読み書きを行うプロジェクトは終わってしまいましたが,ちょっとさみしかったので,気になっていたAVR関係の宿題をやってみることにしました。

 私のAVRの開発環境は10年以上更新されておらず,IDEはAVR Studio4.19,コンパイラはWinAVR,ライタはデジットのAVRWRT2という,ミニマムかつ古くさいものです。そう,AtmelがMicrochipに買収されるだなんて,夢にも思わなかった時代のままです。

 ですが,tiny2313とかtiny13を使っている分にはこれでもう十分で,むしろ変に更新してしまうと,リビルドしたときにギリギリまで使い切ったメモリに入りきらないという話が出てきたりするので,そのままにしてあります。

 しかし,これではデバッグも厳しいですし,新しい品種に対応しません。秋月最安値のtiny13が値上がりして,代わりに最安値に躍り出たtiny202に移行しようにも,この環境ではコンパイルさえ出来ないのです。

 昨年の春にPICKIT4は買ってあったので,tiny202もこれで開発すれば良いのですが,それにはMPLAB XなりMicrochip Studioを導入しなくてはいけませんし,なによりAtmelがMicrochipに買収されたという現実を受け入れることから始めなくてはいけません。

 なにせツール類をアップデートせず,AVRをマイコンではなく汎用電子部品として使っていた私ですので,最新の状況にするには不安が伴います。

 AVRシリーズはどのくらいMicrochipに統合されているのだろう?
 AVRのコンパイラはXC8だけ?XC8ってフリーで使えるの?
 それまで書いたコードはリコンパイルで使える?
 PICKIT4でAVRってちゃんと使えるんかい?
 tiny202って旧シリーズのAVRとは何が違ってる?

 まあ,案ずるより産むが易し。AVRを使うと言うよりも,新しいマイコンを開発環境ごと新規に導入したので勉強し直しだ,くらいに考えて試してみましょう。

 まず,Microchipとの統合具合ですが,最近はかなり総合が進んでいるように思います。というのは,PICKIT4でAVRの開発をするのが当たり前になっているような感じですし,MPLAB Xを使って例もよく見るようになっているからです。

 ですが,私はAtmel Studioを引き継いだMicrochip Studioを使うことにしました。これでもちゃんとPICKIT4をサポートします。

 コンパイラはgccもちゃんと使えます。これは安心。XC8はフリーでも使えますが,最適化が出来ないので,メモリの小さな安いマイコンでは影響があるように思うので,私は使いません。

 そうなるとソースの互換性ですが,ほぼ大丈夫だと思います。思います,と言うのは正直に言って試していないからなのですが,実は知らない間にマクロの使い方が随分変わってしまっていて,リコンパイルする気が失せてしまったからです。

 例えば,_BV(PC0)なんていう書き方はもうしなくて,今はPIN0_bmと書いたりします。DDRBもPORTB.DIRと書きますし,これは本当に新しいマイコンを覚えるようなもんです。

 もちろん,古い表記でもビルドは通りますし,ちゃんと動きます。けど,わざわざ新しく書くコードで古い書き方を踏襲するのもおかしいので,この際新しい書き方を覚えることにしました。

 で,最初の一歩,ハードウェア界のHelloWorldたるLチカを書いて,PICKIT4でデバッグです。UPDIは非常に楽で,たった3本繋ぐだけでデバッグも書き込みもシームレスにこなしてくれます。これはいいですねえ。

 PICKIT4は高電圧書き込みも行えますので,私のようなうっかりヒューズビットを間違って設定してしまう人も救えます。

 ということで,tiny202 + PICKIT4 + MicrochipStudioで一連の作業が出来ました。やってみると簡単です。

 次はI2Cです。8ピンの小型マイコンではI2Cが使えるとなにかと便利で,LCDからEEPROMからセンサから,ピンを消費することなくペリフェラルを増やせます。しかも使う端子は2本だけ。

 tiny13やtiny2313では,私はGPIOを叩いてソフトでI2Cマスタを実装して使っていましたが,ATmegaシリーズではTWIというハードウェアが入っているので,随分と楽になりました。

 そのTWIが,tiny202には入っています。これは助かったと,早速使って見ようと思ったのですが,なかなか大変でした。

 こういう場合,同じTWIですのでコードの互換性はあると思うじゃないですか。レジスタ構成まで同じとはいいませんが,レジスタ名や手順などは同じじゃないかと期待していました。

 しかし,コードをベタ移植しても全然動きません。クロックが異なるせいかもと思って修正をしましたがだめでした。

 こういう場合は真面目にデータシートを読むに限ります。するとATmegaのTWIとtiny202のTWIは全然違うものだとわかりました。スタートコンディションの出し方も異なるほどですので,レジスタ構成だけではなく手順も異なるくらい全然違うものというのが正解でしょう。

 なんとか辻褄を合わせてようやく動き出しました。(実は回路も間違えていたので全く動かなかったのです)

 LCDもEEPROMも動いたので,これでI2Cは大丈夫でしょう。

 てなわけで,AVRの新シリーズを一通り動かしてみました。IDEもライタもデバッガも新しくなり,その上ソースを記述する作法や約束事も新しいとなれば,もう本当に新しいマイコンに手を出したこととなにもかわりません。

 ですが,そうだとしても,低価格,8ピン以下の小型が揃っている,多ピン大容量品もしかもDIPも手に入る,アーキテクチャが綺麗でCで書いても我慢しないですむ,そして世界中にユーザーがいる,というメリットはAVRの個性そのものであり,覚え直してでも使う価値があるものだと思います。

 特にtiny202などは,低価格なのに豊富なペリフェラルを備え,CPUにもハードウェア演算器を持つなど,安いマイコンでもここまで便利になったのかと思えるものに仕上がっています。

 惜しいのは,昨今の半導体不足のあおりを受けてか,秋月でも価格が上がったり入手が出来なくなっていたりすることでしょう。tiny13はかつて50円だったもんが110円と高騰していますし,tiny202は私が買った45円から50円に値上がりしてしかも在庫切れです。tiny202は安いときで1つ35円くらいだったこともあるわけで,それを考えるとホビーストにも厳しい状況が続いていると言わざるを得ません。

 私の場合,そのマイコンが使いこなせるとわかったとき,手元に在庫を持つようにしているのですが,今回改めて棚卸しをすると,おそらく死ぬまでに使い切らないくらいのAVRを抱えていました。tiny2313のフラットパッケージなんて,こんなにたくさんあってどうするのよ・・・



TDS3054BのRTCの電池を交換するためにAVRで治具を作る

 TDS3054Bというテクトロの古いオシロスコープは,私の持つオシロスコープでは最高のものです。4ch,500MHz,5GS/sと,今でも立派に通用するスペックですし,なんと言っても当時のベストセラー機であり,その測定結果はどこに出しても信用されるといって過言ではありません。

 ひょんなことから我が家にやってきたTDS3054Bですが,2年ほど前に内蔵の電池が切れてしまい,電源を切っている間は時計が進まなくなってしまいました。

 不便なのは測定前に時計を合わせることくらいなので別に困っていないのですが,やはりちょっと気持ちが悪いもので,このオシロスコープを使う作業が一区切り付いたら対策をしようと思っていました。

 TDS3054BなどのTDS3000シリーズは,リアルタイムクロック(RTC)として,DALLASのDS1742Wを使っています。このIC,コイン電池とRTCとSRAMをエポキシでパッケージしたもので,外からは16kbitのSRAMそのものに見えるのですが,電源を切っても中身が消えないという便利さから当時はずいぶん流行りました。

 しかし一次電池ですのでいつか電池切れになります。そうするとRTCもSRAMもバックアップ出来なくなるので,ある時急に「あれっ」となるわけです。

 今はフラッシュメモリやらEEPROMやらがあるのでこんなものを使うことはないのですが,ある時期の電子機器にはこういう特徴的なデバイスが多く使われ,その時は(ほぼ)永遠だと勘違いされた5年や10年がリアルに経過した時,様々な問題を引き起こしているんです。迷惑な話です,

 TDS3000シリーズは幸いなことに,SRAMでバックアップされる内容に重要なものはなく,完全に放電してデータが失われても使用を続けることが出来ますが,先程書いたように時刻を毎回合わせる必要があったり,セットアップが保存できなくなったりするので,やっぱり正常な状態に戻したいところです。

 戻すには2つの方法があり,1つは新しいDS1742Wに交換すること。しかしこのICは随分前に製造終了していて,入手はほぼ不可能です。よく中国の業者が売りに出していますが,あれはほぼ偽物です。

 ならばともう1つの方法ですが,これはパッケージを分解し,電池を交換することです。そんなに難しい作業ではありませんが,破損のリスクはあります。

 とはいえ,現実には後者しか選択肢がないわけで,私も電池交換で検討を始めました。

 まず,通電しながらだと電池の交換を行ってもデータは消えません。しかし,不慮の事故で消えてしまうと二度ととり戻せないので,なんとかバックアップを取っておきたいところです。

 先人達の知恵を借りれば,なにやらDS1742Wの読み書きも可能な安価なROMライタがあるそうです。ただこれ,かつては4000円ほどで買えたものが,今は8000円以上するようです。それでも十分安いとは思いますが,4000円が8000円ですからね,バカらしいです。

 そこで自作することにしました。DS1742Wのデータシートを見ていると,本当に普通の非同期SRAMです。ならば,使い慣れているAVRをつかってさっとでっち上げてしまいましょう。

 ピン数の関係で,ATmega88Vを使うことにします。まず8ビットのデータバスと11ビットのアドレスバス,これにコントロール信号を確保します。

 それから,16kbitのデータを保存するメモリがいりますが,これは電源を切っても残っている不揮発メモリであって欲しいのですが,あいにく内蔵のEEPROMでは全然たりません。なので外部にI2CのEEPROMを用意します。I2CはATmega88VではTWIで簡単に実現出来るので,ついでにI2CのLCDも取り付けて便利にしましょう。

 しかしこの段階で端子が1つ足りません。ならAVRのリセット端子をGPIOに切り替えればいいよと手を打ったのですが,これをヒューズビットで設定してしまうと,もう普通のプログラマでは書き込めないことを忘れていました。

 そこで,SRAMのCSとOEを常時Lowに落として読み書きすることにしました。SRAMからEEPROMへ転送,EEPROMからSRAMに書き戻し,そしてベリファイと機能を実装し,普通のSRAMでテストして完成!

 早速TDS3054Bを分解しDS1742Wを取り出し,自作のリーダーにセットします。そしてEEPROMにデータを保存します。EEPROMを専用のリーダーでPCに読み出してダンプすると,なんかおかしなデータっぽいのですが,正解がわかりませんのでこれまでのテスト結果を信じ,先に進めます。

 TDS3054Bにはソケットをハンダ付け,取り外したDS1742Wは慎重に削って電池を露出させます。すでに電圧は0.6Vになっていて,もう動かないも同然です。

 新しい電池はCR2032を外部に電池ケース使って用意します。古い電池と並列に繋いで直ちに古い電池をカットして作業は終了です。作業は上手くいったのでデータは消えていないと思っていたのですが,TDS3054Bに組み込むと,やっぱり時刻も狂っていますし,連続稼働時間も無茶苦茶になっていました。セットアップも初期化されています。

 ならばとすでに保存してあるデータをEEPROMから書き戻します。しかし,やっぱりデータは化けたままです。ああ,正常にデータを保存できていなかったのです。

 もう消えてしまったのですから,今さらどうすることも出来ません。あきらめてSRAMの内容を初期化しました。連続稼働時間も0時間にリセットです。

 しかし,何が悪かったのか気になるじゃないですか。そこでもう一度自作のリーダーのコードを見直し,さらに波形も確認すると,SRAMからのリードにバグがありました。実は,念のためにいれた一行を,結果が同じだからとコメントアウトしたんです。しかし,波形を見ると必要なコードであることがわかりました。

 AVRは,ポートに出力する時にデータを設定するレジスタが,入力時には内蔵プルアップを指定するレジスタとして機能します。SRAMをリードしてその結果を読み込んだあと,単に出力に切り替えただけだとプルアップの端子がデータによって毎回変わるようで,入力ポートにする時には同時にプルアップの設定もやり直す必要があるのでした。

 ここを修正して改めてDS1742Wをリードすると,今度はそれっぽいデータが読み込めています。これを書き戻してTDS3054Bにセットすると,元の状態で起動することも確認出来ました。しかし時既に遅し。DS1742Wは初期化されています。

 ならばと,連続稼働時間を復活させようと,メモっておいた時間を所定のアドレスに書き込んでやりました。すると連続稼働時間だけは元に戻せました。やれやれ・・・

 しかし,電源投入回数だけは戻せないのです。これは,電源投入回数はSRAMではない別のメモリに書き込まれているからだそうで,ここを初期化してゼロにすると,もう復活させる方法はないということでした。

 完全に元の状態に戻すことは出来ませんでしたが,バッテリは復活してデータの保存は出来るようになりましたし,時刻も毎回合わせずに済むようになりました。連続稼働時間は戻せましたが電源投入回数は失われてしまいました。その他に支障はなく,残念ながら今の私に出来る事はこれ以上ありません。

 加えて,私がAVRで作ったリーダーは正常に動作し,SRAMの読み書き,EEPROMの読み書きも問題なく出来ることが確認出来ました。つくづく惜しいのは,本番に行く前にちゃんと波形を見ておけばバグに気が付いただろうなあということです。波形確認は大事ですよ,本当に。

 そして,リセットをGPIOにしてしまった書き込み出来ないATmega88Vですが,これはリセッタを自作して復活させました。久々にAVRで遊んだわけですが,もう少し慎重にやらないといけません。

 ということで,久しぶりに仕組みを考え,ハードを設計して組み立て,ソフトを書いてバグを取って,という一連のパズルを楽しみました。目的がないとやる気が起きない不精者のホビーストですが,やっぱりモノづくりは楽しいものです。

 

今度こそ,これが最後のテスターだ

 amazonがブラックフライデーのセールをやっていたのですが,コロナをいいことに引き籠もっていた私も,買い物による散財を堪能させて頂きました。

 その1つ,念願の日置のテスターを買った話です。

 買ったのは,日置の最高級モデルであるDT4282です。直販サイトで6万円という,ハンドヘルド型としては最高級機種になると言って良いでしょう。

 スペックは60000カウントの5桁表示(つまり4.5桁というやつですね),その上更新周期が0.2秒と高速で,直流電圧の精度が±0.025%と,ベンチ型に匹敵する性能です。

 交流は真の実効値で測定可能,周波数帯域は20Hzから100kHzまでOKなので,音声信号も扱えます。そして630Hzのローパスフィルタも設定出来るので,高調波が問題になるような用途にも対応出来ます。すごい。

 電流は10Aまで測定出来るということで,今どきの安全性を重視した(規制されたとも言う)テスタとしては破格の性能で,これ一台でなんでも測定出来ます。

 登場は2012年11月,登場時の値段は56700円だったと言いますから結構値上げされていますが,登場から10年を経ても最高水準というのはさすがです。

 2013年に発行された日置技報によると,内部は16bitのマイコンと24bitのADコンバータを組み合わせたものということで,汎用のワンチップLSIを使ったものでもありませんし,下位機種で採用された専用カスタムICでもありません。性能を追求した設計になっているようです。

 amazonのセールでは,これが38400円になっていました。ここからさらにポイントが戻ってくるので,実質35000円くらいになるでしょう。このスペックのテスターがここまで安い,しかもテスターを真面目に作り続けている日置のテスターですから,これは買うしかありません。

 おそらく人生最後のテスターを,日置のモデルに出来た事を,うれしく思います。

 さて,そのDT4282ですが,一言で言うと一昔前のベンチ型マルチメータの性能をハンドヘルドにした物,と言っていいでしょう。精度もそうですが,レスポンスや機能についても,ベンチ型に負けてはいません。

 とはいえ,そこは部品のサイズや安定度に制限が緩いベンチ型で,私のDl2050という古い中級機でも120000カウントと倍のカウント数ですし,精度もDT4282が0.025%±2カウントなのに対して,DL2050は0.012%+5カウントとこれもなかなかの精度を誇ります。

 拮抗しているのは更新周期くらいで,DT4282が60000カウントで5回/秒,DL2050が40000カウントで4.8回/秒です。(ちなみにDL2050は120000カウントでは2.2回/秒です)

 テスターって,初心者向けの本はよく見るのですが,それだとどのテスターを買っても同じに見えてしまいます。しかし,DT4282のような高級機から1000円ほどの安いものまで千差万別なのも,またテスターの世界です。

 何が違うのかは,メーカーのホームページを見てもよく分からなかったりします。もちろん精度など細かい数字を比べて一喜一憂するのもよいのですが,先に紹介した日置技法に掲載されたDT4282の記事を見てみますと,設計者のこだわりが熱く語られています。いいですね,こういうの。

 丸写しするわけにはいかないので,かいつまんで紹介します。肝心なことは,カタログデータを実現するためにどんな工夫をしたのか,という点を含む,カタログスペックに出てこないような技術が,どんな風に盛り込まれたのかという点です。

・使用温度範囲
 DT4282では-15℃~55℃と広く,フィールドワークにもへこたれません。ベンチ型では0℃~50℃程度なので,特に低温での動作がありがたいでしょう。もちろん,精度がこの温度範囲で保証されるようなことはなく,そのあたりはベンチ型の方が有利だったりします。


・警告表示
 DT4282はバックライトが白色で見やすいのですが,電圧や電流の過大入力があった場合には,バックライトが赤になります。導通テストやダイオードテストでも赤になるのですが,命がかかっている強電の世界では,危険なことを自分と周囲に知らせる機能というのはとても大事で,このあたりさすがにプロの道具だなと思います。まいったかフルーク!


・フィルタ機能
 高級なテスタには搭載されることが増えたフィルタは,DT4282にも搭載されています。カットオフは630Hzです。これ,近年のインバータを使った設備の点検には必要となるもので,ノイズをカットし正確な測定を行う為には必須だと思います。

・表示更新速度の切り替え
 DT4282は表示を0.2秒で更新する高速性が売りですが,値が揺らいでいるときなどゆっくり変化した方がいい場合もあります。DT4282でも低速モードに出来るのですが,問題はどうやって低速にしているかです。
 取説によると,5回の平均を行って更新を行うそうです。こういうことがちゃんと書かれているテスターは珍しいかもしれないですよ。

・導通チェック
 導通チェックって,抵抗レンジの流用だと思っている方が多いと思いますし,私もそう信じていたのですが,DT4282ではわざわざサンプリング周期を早めて,レスポンスを高速化する工夫を行っているそうです。芸が細かい。

・抵抗測定
 抵抗はオームの法則で簡単に測定出来るので,古来からテスターで測定出来るものとして備わっているものです。しかし精度の高い抵抗測定は案外面倒なもので,DT4282は4端子法こそ使えませんが,高安定な定電流回路で作った定電流で抵抗を測定します。こういう安いテスタは抵抗だけの定電流回路だったりしますので,ここは信頼出来ます。


・静電容量測定
 アナログテスタ時代には,大容量の電解コンデンサに限って,直流を印加してその最大の振れ幅で容量を測定するという恐ろしいものが備わっていたりしましたが,DT4282では高精度な基準抵抗と被測定コンデンサで構成されたCR発振回路の周波数を測定することで,結果を得ます。


・電源
 単三4本で動く,と言う話はごく普通なのですが,ちょっとすごいと思ったのは,電池が消耗していても測定値が表示されている限り,その測定値の確度を保証する仕様になっていることです。他の製品だと,電池電圧が低下したという警告が出ているときは,動作はするけど確度は保証しないというものがおおいのですが,DT4282は違います。


・ADコンバータのサンプリング周期
 ADコンバータのサンプリング周期を公開しているというだけでも感心しますが,その周期は100msということです。これは,商用電源の周波数である50Hzや60Hzのノイズを上手く除去できる周波数になっています。
 まあ,ベンチ型のマルチメータでは良く行われている工夫ですが,これがハンドヘルド型でも利用されているというのは興味深いと思います。


・端子シャッタ
 そう,これです,これ。日置のテスターの売りは,このロータリースイッチに連動した端子シャッタがあることです。

 例えば,電圧端子にテスタリードが刺さっていれば,シャッタが引っかかってロータリースイッチが電流レンジに切り替わらないようになっています。また,電流レンジに切り替えてしまえば,電圧端子はシャッタが閉まって,テスタリードを差し込むことが出来なくなります。

 電流と電圧の測定を1つの機器で行うものは,誤操作によって火災や感電と言った事故が起きます。私も何度か怖い思いをしましたが,気を付けていたもうっかりしてしまうもので,こうやって安全装置が無理なく働くようになっていると,とてもありがたいです。

・応答時間
 なかなかスペックを見ても実感がわかないのですが,確かにレスポンスは良いです。実際に入力を印加してから,真値±5カウントになるまでの時間が日置技報に書かれていますが,直流電圧では0.8秒程度,交流電圧では2秒ちょっと,抵抗では1秒程度となっています。これ,他社の似たような製品ではそれぞれ1.2秒,8秒,2.4秒となっていて,結構待たされます。

 数をこなすプロの現場で,値が落ち着くまで8秒かかるか2秒でいいかは大きな違いで,こういうところにプロの道具としてこだわった日置の良心が見え隠れします。


 とまあ,まるで日置の中の人のように書いていますが,自分が選んだテスターを褒めちぎりたいのは人情というもの。ではその実力を実際にみてみたいと思います。

 
 評価には,いつものように基準で圧発生器を使います。

 製造元による実測値は,

2.50165V
5.00302V
7.50454V
10.00533V

 です。

 これがそのまま維持されている可能性は低いので,うちの基準器であるHP34401Aで測定した結果が以下です。

2.5017V
5.0035V
7.5054V
10.0065V

 うーん。基準器がズレたのか,34401Aがズレたのか,実際には両方がズレた結果なんだと思いますが,実はこの測定値,2019年4月の値と同じです。2年以上経過しても測定値が変わらないって,すごくないですか?

 ただ,製造元による実測値からズレているのは確かなので,このくらいのズレがあることを前提にして,DT4282の実測値です。

2.5015V -0.2mV -0.00799%
5.0031V -0.4mV -0.00799%
7.505V -0.4mV -0.00533%
10.006V -0.5mV -0.00500%

 34401Aに比べて,少しだけ低めに出ているのがわかりますが,どの値もさすがです。桁数が多いことが精度を高めるのにまさに貢献している感じです。しかし,そこは60000カウントの制限で,7.5Vでは桁数が少ないことが目立ってしまいます。

 基準器は狂っておらず,34401Aが狂ったものと考えて,基準器の出荷時の実測値と比べて見ましょう。

2.5015V 0.15mV 0.00600%
5.0031V 0.08mV 0.00160%
7.505V 0.5mV 0.00666%
10.006V 0.67mV 0.00670%

 うーん,この結果を見ると,34401Aの方が狂っていると言った方が良さそうな気がします。いずれにせよ,34401もDT4282も,うちではダントツの精度を持っていると言うことがわかりました。

 うちは,一応34401Aに合わせることにしています。34401Aが一番カウント数が多く,かつ精度も高いと思われるからなのですが,DT4282はわずかな差があるとは言え,ほんの僅かですので,この2つは同一の測定結果を出すものとして,扱う事にしましょう。

 ちなみに,なんやかんやで出番の多いFLUKEの101を測定し直してみました。そういえばこれ,自分で校正したんですよね。

2.500V -1.7mV -0.0680%
5.002V -1.5mV -0.0300%
7.49V -15.4mV -0.2052%
9.99V -16.5mV -0.1649%

 2018年11月に校正したときの数値と比較すると,実はそんなに変化していません。いやはや大したものです。ちょっと不安だったのですが,これで一安心ですね。

 これを見ていると,やっぱり6000カウントでは7.5Vの測定が厳しい事がわかります。

 そして,amazonで1700円で買った中国製の101っぽいテスター,ZT109です。これも自分で校正しました。

2.501V -0.7mV -0.0280%
5.002V -1.5mV -0.0280%
7.504V -1.4mV -0.0187%
10.00V -6.5mV -0.0650%

 おお,いいですね。101よりも好成績です。これも2019年の11月に校正した結果と比べて見ると,ほとんど変わっていません。

 このテスタが優れているのは,4桁ですが10000カウントなんです。だから7.5Vでもちゃんと小数点以下3桁が出ています。そしてその値は結構信用出来るんですね。すでにこの段階で101に勝っています。参ったかフルーク!


 ということで,実際に何度か使ってみましたが,実に快適です。大きすぎる,重すぎるということで使いにくいかと思いましたが,立てて使うと言うことを今回初めて試して見たところ思いのほか快適,適度な重さは安定感を生み,リードが引っ張られて動いたりすることもありませんし,ロータリースイッチを回すときに片手を本体に添える必要もなく,使い勝手は素晴らしいの一言です。

 液晶も見やすく,特にバックライト点灯時の文字のコントラストが高いので,明るいところでも常用したいくらいです。測定対象にリードを当ててから視線を動かしているうちに値が安定するレスポンスの良さ,値の更新周期が早いことで電圧が安定しているのかそうでないのかもわかる情報量の多さも助かります

 地味に使い心地を向上させているのが,テスタリードの使いやすさです。フルークはごっつくて取り回しが大変,サンワは華奢すぎて使いにくく,日置のものはケーブルのしなりもリードの長さもプローブの太さも,そしてグリップが手に馴染む感覚も,これまで使ったテスタリードで最高の使い心地です。

 私がこれまで標準的に使い続けていたKEYSIGHTのものよりもずっといいと思います。(ただKEYSIGHTのものは先端にクリップを取り付けられるオプションも付属している割には安いので,便利なんですよ)

 テスタはあくまで道具です。しかし,DT4282は使うことが目的になってしまうような快適なテスタでした。いいものを買ったと思います。

 私は割とテスタをコロコロ買い換えていますが,本来は長く使えるものですし,手に馴染む一台を持つことがベテランの証でもあります。とすれば,最初に良いものを奮発し,手足のように自然に使いこなすようになることが理想なのかも知れません。

 

レトロマシンのメンテ~その2

 実家から持ち帰ってきたものをチェックするシリーズ,今回はソードのM5jrです。

 このM5jr,大好きなマシンなのでもとより手放す気などないのですが,実は借り物ですので勝手に捨てる訳にもいきません。その割には粗末に扱っていたことがわかって,もっと大事にすべきだったと後悔しています。

 最初に残念なのは,改造されていることでした。それもくだらない改造です。もともとM5シリーズの映像出力はなんとRF出力のみという割り切った仕様になっていて,コンポジットビデオ出力さえもありません。

 20年前までなら,いかなるテレビでも接続可能だったM5ですが,今となっては接続可能なテレビが皆無です。一部で需要のあるRGB接続などとは違い,もうまったく需要のない接続方法ですので,お金を出せば解決するという甘いものでもありません。

 30年前,当時の私が考えたこともこれに近く,M5jrにコンポジットビデオ出力端子を増設したのでした。今見てみるとなかなか真面目に作ってあり,トランジスタ1つを使ってビデオアンプを用意してありました。

 ところがこれにも穴があり,音声をどうするかという問題が残ります。当時の私はオーディ出力端子を設けることをせず,PC-6001と同じく本体にスピーカーを搭載するという荒技に出ました。

 これが結構手抜きで,LM386のアンプをちゃっちゃと組み立てて内蔵し,カートリッジスロットの右側に6mm程の穴を9つ開けてスピーカーを裏側から貼り付けるという,まさに電子工作レベルの改造です。あげく,音量調整用のリュームは,トランジスタラジオによく見られたスイッチ付きのボリュームのジャンク品を流用,スイッチ部を壊して無効化し,筐体の手前に細い角穴を開けて,ここに瞬間接着剤で固定するというやっつけ仕事で逃げています。

 ボリュームは接着が外れてグラグラ,スピーカーの穴は右に左に曲がっているという体たらくで,これは見るのも辛いです,まずはこれから解決です。

 とはいうものの,開いた穴を塞ぐのは上手くいかないので,スピーカーについては45mmほどの大穴をあけ,表側からスピーカーを接着してしまいます。スピーカーには黒いネットを貼り付ければ,とりあえず素人臭さはなくなります。

 ボリュームは他にいい方法がなかったので接着方法を見直して再固定。これでなんとか形になりました。

 さて,次はソフトですね。手持ちのカートリッジはBASIC-Gのみしかありませんので出来る事は限られます。テープ版のソフトは5本ほどあるんですが・・・

 最初にBASIC-Gのマニュアルを見ようとしたのですが,どこにもありません。それもそのはず,実家で見た記憶もないのです。これはまさかの紛失です。

 すでにスキャンし廃棄している可能性も考えましたが,肝心のPDFが見当たりませんので,結局BASIC-Gのマニュアルを見つけることは出来ませんでした。トホホ・・・

 ここでもう心折れて片付けても良かったのですが,ふと思いついたのはBASIC-GのRAM不足の問題です。M5は本体にRAMをほとんど持たず,ユーザーエリアはカートリッジに持つ事になっています。BASIC-Gも他例に漏れず,わずか4kBのRAMがカートリッジに内蔵されています。

 いかに良く出来たBASIC,いかに整数型BASICとはいえ,4kBではあまりに少なく,80年代前半の低価格マシンがRAMを削ることで成り立っていたことをここでも痛感するわけですが,一応純正でRAMを32kBまで増設出来るので,改造によってメモリを不足すことは可能です。

 メモリマップを確認すると,さすがにシンプルで定評のあるM5で,RAMは8000HからFFFFHまでの32kBが割り当てられています。A15を反転するだけで256kBiteのSRAMのCSを作る事が出来そうです。

 カートリッジ内部を見てみると,16kbitのSRAMが2個入っています。ピン数が違うとは言え,このパターンを上手く活用すれば256kbitのSRAMに置き換えることが簡単にできそうです。

 そうなると今度はROMです。BASIC-Gは2764が2個搭載されていて,2000Hから3FFFHまでと,4000Hから5FFFHまでにそれぞれ割り当てられています。それぞれのCSは本体側のカスタムICが作っているのでカートリッジ側はただ繋がっているだけです。

 なら,このCSをORして27128や27256のCSに突っ込んでやればBASIC-Gを1つのEP-ROMに格納できそうですよね。しかも,空いたスペースにゲームなりBASIC-Iなりを詰め込んでおけば,便利カートリッジも実現しそうです。

 いやいや,BASIC-Fもこの際だから搭載しよう,M5が実数型BASICで動くなんて面白いじゃないかと欲張ってみたのですが,結論から言うと失敗しました。

 まず,BASIC-Fは20kBの容量があり,上記のROMエリアに続いて6000Hから6FFFHまでROMをマッピングしないといけないのです。このエリアのCSもカスタムICで作られていて,カートリッジスロットまでは来ているのですが,悪いことにカートリッジ基盤にはパターンがなく,信号を利用出来ません。

 ならば真面目のデコーダを組むかと考えてみたのですが,どうしても規模が大きくなりすぎ,これも面倒くさくなってやめました。だって,2000Hから6FFFHまでイメージなしのフルデコードですよ,面倒くさいですやん。

 そこでBASIC-Gをとりあえず1つのROMに格納する実験を繰り返したのですが,どうも配線ミスが解決しないみたいで,なかなかきちんと起動しません。実はROMをソケットにした時点でカートリッジのフタが閉まらなくなってしまうので,無理にこの改造を行うモチベーションもなくなってしまっていたのですが,このままでは基板も壊すかもと勇気ある撤退を決断,もとの2764を2つ,直にハンダ付けする元の状態に戻しました。

 ROMに手を入れる前にRAMを32kBに改造して動作確認まで終わっていたのですが,ROMの改造に手こずってしまったことで,RAMの動作も怪しくなってしまっては本末転倒です。とりあえず1つ戻って2764で動かして見ると問題ないので一安心です。

 これでフタがきちんと閉まる32kBのRAMを持つBASIC-Gになったのでこれでよしとしたのですが,ちょっとゲームで遊んで見たくなったので,SRAMの空きパターンにソケットをくっつけ,ここにもう1つ8kBのROMを搭載出来るようにしておきました。

 ゲームで遊ぶときにはいちいち殻割りし,ROMを焼いてここに差し込み,スイッチを切り替えて裸の基板で遊ぶことになりますが,ハンダ付けもいらないレベルですので,ここまでやっておけばいろいろ試せるでしょう。

 一応数本のゲームと,BASIC-Iまでは正常に起動し切り替える事がでできることを確認できて,ここでM5jrは終了です。

 今回いろいろ触って見て,M5っていいマシンだなあと思いました。シンプルで「あたりまえ」のハードウェア,モード2割り込みの実装とBASICからの利用で同時並行で処理を記述出来る利便性,整数型BASICによる軽快な動き,小さくかわいらしい筐体に意外に使いやすいキーボードと,復刻して欲しいくらいです。

 MSXがこのコンセプトでどこかのメーカーから作られていれば,それはそれでヒットしたんじゃないかと思うのですが,家電メーカーや重電メーカーのマシンはごっつく,力関係上それが販売の主流だった当時は,MSXに軽快さを求めるのは難しかったように思います。

 そういえば,カシオあたりがかわいらしいMSXを作っていましたが,やはり搭載RAMの小ささで躓いてしまいました。これはデザインや小ささで買ってもらえる製品を目指したというより,安いことを真っ先にした結果でしょう。

 さて,あとは出来上がったM5jrでカセット版のゲームを遊んでおしまいです。残念ながらマニュアルが見当たらないのでBASIC-Gを詳しく使ってみることはしません。


ユーティリティ

2026年04月

- - - 1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 - -

検索

エントリー検索フォーム
キーワード

ユーザー

新着画像

過去ログ

Feed