National JR-800 ご紹介!

今回はJR-800のお話(^-^)

 

先日、某所でJR-800の写真を見て、ああ懐かしいなぁ…確か持っていたなぁ…と思い、頑張って発掘した。

なぜかマニュアルとプリンタはすぐに出るところにあった。なんでだw

 

JR-800本体

f:id:PocketGriffon:20210316125544j:plain

これがJR-800の本体。

ちゃんとケースに入れられて保管してあったので、とてもキレイな状態だ!

この本体の色味がとても気に入っている。青いキーボードもナイス。

なんでも良いけどSPACEとRETURNをものすごく打ち間違えるw

きっと多くのJR-800ユーザーが間違えると思う!(自信満々)

 

f:id:PocketGriffon:20210316130606j:plain

表示はこんな感じ。ぱっと見てドットが目立つ感じの液晶とフォントになっている。

横32文字、縦8文字。縦方向に8文字分あると編集する時にもだいーぶ楽ちんだ。

PC-8201、HC-40やHC-80とかと行数が一緒だね!

 

 グラフィックス的に見れば192x64ドットの画面構成。BASICのグラフィック命令はPSET、PRESET、LINEの3つしか存在しない。CIRCLEやPAINTは無いので複雑な絵を描こうとしたら頑張らねばならない。ユーザー定義文字(PCGみたいな機能)が32文字分使えるので、BASICで作るゲームなどのキャラクタ表示で使えそうだ。

 

f:id:PocketGriffon:20210316155556j:plain

裏面はこんな感じのシンプルイズベスト。

カタログスペックにあった増設メモリってどこにつくんだろ??

なんて思いつつ電池ボックスを開けてみた。

f:id:PocketGriffon:20210316155655j:plain

マンガンの単三電池4本で25〜70時間も動かせるらしい。という事はアルカリ電池だったら倍くらい動いちゃうのかしらん??これはすごい事!!

そして電池の左側にメモリ増設用の端子がついてた。

f:id:PocketGriffon:20210316160106j:plain

なるほどわかりやすい。もう今の時代じゃ増設メモリ手に入らないね(T-T)

空いてるところが見えてると「スロット埋めたくなる病」が発動するので、見えないくらいがちょうど良いw(自己抑制?なにそれ?)

ちなみに増設メモリは8KBのようだ。

 

プリンター JR-P20

f:id:PocketGriffon:20210316165902j:plain

JR−800本体を手に入れる際に一緒についてきたプリンター JR-P20。

今の時代ではかなりのレアアイテムなんだと思う。

 

大きさ的には横20cmくらいのサイズで、本体と並べるとこんな感じ。

f:id:PocketGriffon:20210316170336j:plain

存在感あるサイズだけど、この時代のプリンターとしては小さい??

重量はめちゃくちゃ軽いです。JR-800も乾電池入れた状態でもかなーり軽いんだけど、プリンターはそれよりももっともっと軽い。

f:id:PocketGriffon:20210316170937j:plain

そして裏面。安定のシンプルさw

このプリンターも単三電池4本で動かせる。ACアダプタも使えるけれども、アダプタの形状が本体とは違ってる。同じボルト数でセンターマイナスも同じなのに形状的に刺さらないってのは意図的なんだろうなぁ…多分。

f:id:PocketGriffon:20210316171153j:plain

よくよく見たら「GRAPHIC PRINTER」だった!グラフィックもプリントアウト出来るのか!BASICマニュアルみたら「HCOPY」なる命令があった。プログラムに埋め込むのもアリだけど、CTRL-2を押すといきなりプリントアウトも出来るらしい。すごい!!

 

試しに…とプリンターの電源を入れてみたけど無反応。電池でもACアダプタでもダメ。

軽く中身をみてみようと開けてみたのが下の写真。

f:id:PocketGriffon:20210316171539j:plain

基板自体はとってもキレイ!これでなんで電源入らないんだろ…。

やっぱコンデンサですか???

と思って図ってみたけど問題はなさそう!疑ってスマンかったw

f:id:PocketGriffon:20210316171700j:plain

時間を確保してじっくり見ていくしか無いかもね!

何よりも本体とつなげるケーブルがないので、気力も奮い立たない。仕方ない(T-T)

 

BASICマニュアル

手元に来た時からだいぶくたびれているBASICマニュアル。

f:id:PocketGriffon:20210316172112j:plain

中身を読む分にはなんの問題もない(^-^)
本来ならば取扱説明書もあったんだろうか…私の手元にはコレ1冊しか無い。
そして残念な事に、本全体が曲がってしまっている。

f:id:PocketGriffon:20210316172305j:plain

どうやったらこんな曲がり方になってしまうんだろう…(T-T) 私自身は本をとても大切にしたい人なので、出来たら直したい。

そう思って数ヶ月前に本を引っ張り出した時以降、重たい本の間に入れておいた。こうすると何ヶ月かすると元に戻ったりするのだ。本当はジップロックなどに入れてレンジでチンした後に重しを乗せれば、比較的簡単に元に戻るらしいのだが…。

f:id:PocketGriffon:20210316172510j:plain

↑今の状態がこんな感じ。写真を並べてみるとだいぶ良くなってきたのがわかる。あと1年くらい放置しておこう(^-^)

 

コールドスタート(R+S+T+ONボタン)した画面がこちら↓

f:id:PocketGriffon:20210316172905j:plain

なんとなく起動画面を見てて思うのは……そう、マイクロソフト系のBASICではないのだ。

通常のシーケンスを記述するコマンドで違和感を感じる事はないんだけど、特殊なコマンドで「あれ?」と思う事がいくつも出てくる。

例えば……いくつか例を上げてみるけど、

 

マシン語領域の確保は、マイクロソフト系のBASICならばCLEAR文のオプション指定で行うが、JR-800だとNEWON命令で行う(NEWON &H2800とか)。

 

FLDという命令は文字を表示する時にXORする値を定義するコマンド。アンダーラインを引きたい時には「FLD &H80」とする。消し線をつけたように見せたい時「FLD &H08」、文字を反転した時は「FLD &HFF」といった具合だ。

 

CALCはとても面白い命令。文字列を評価して答えを返してくれる。

例えばこんな感じだ。

 10 A$="1+1"

 20 B=CALC(A$)

 30 PRINT B

これでBに2が入ってくる。プログラムで文字列(としてのプログラム)を作成し、それを実行することが出来るという事は、いろんな事に応用ができそうだ。

命令1つ1つを取ってみても興味がそそられるBASIC!

 

せっかくなので何か作ってみたいが…

さて…せっかく発掘したJR-800なので、何か作ってみたいよなぁ…って気になる。

CPUは6301らしいので、先日まで取り組んでいたHC-88のスレーブCPUと同じだ。

ということはアセンブラ環境はHC-88で準備したモノを使えば良いのだ。

 

f:id:PocketGriffon:20210316174918j:plain

本体の背中側を見てみると、シリアル端子が出ている。マニュアルを見ると、どうやらJR-800本体同士を繋げてプログラムの転送などで用いるようだ。形状がCASIO系のポケコンについてるシリアル端子と似ていたので、モノは試しと繋げてみた。

f:id:PocketGriffon:20210316175113j:plain

やっぱり…というか全く通信出来なかった(^^; そもそも端子の電気信号が同じかどうかも分からないので繋がるわけがない(TT)

f:id:PocketGriffon:20210316175304j:plain

あとはカセットインターフェース端子がついている。でも私はデータレコーダを持ち合わせていない。テープで開発するのは避けたいなぁ…と思い、テープ運用の環境はもっていないのだ。…と言いつつ、そういえばボイスレコーダーを持っている事を思い出した。

 

テープへSAVEした音声データをMacへ持っていき、wavへ変換後解析ツールを作ろうとしてみたが、今のところ良い結果は出ていない(T-T) これが正常にバイナリ化→wav化出来たら、一気にJR-800でのプログラミングは現実化するだろう。

ボイスレコーダーの精度の問題のあるんだろうけれど、うまく行ったらいいなぁ。

 

というわけで今回は単純なJR-800のご紹介でした!

ではまた次回!(^-^)ノ

 

 

文豪ミニ5でプログラミング! その3

何もプログラミングしてないけどこのタイトルでいいんだろうか…汗

f:id:PocketGriffon:20210313145012j:plain

現状のご報告的な感じで書いていってみようと思う。

 

 

基本、目的を達成したいためだけに調べているので、詳しい事は解析していない(^^;

だってこんな巨大なROMを持つマシンを全解析なんて絶対に無理(^^;;;

 

独自プログラムからMS-DOSフォーマットのフロッピーディスクをアクセスする方法が分かったので、それを利用してROMのデータを解析してる(この1行を実現するためにどのくらい苦労してるのかを理解してもらえれば…w)

 

とりあえずは初期化部分を調べていけば必要なポートとかわかるかも…と思いつつ、ブート部分から見ていってる。

アセンブラは8086に対応したものを作成してあったが、V33特有の命令(というか80186で追加された命令)も出てきているので、随時追加対応していってる。

 

その結果、バンク切り替えで表に出る大量のメモリ(主にROM)が見つかった。

HDDを積んでいるマシンなので、てっきりROMサイズは小さいかと思っていたが巨大だった。おそらくフォントなどの動作速度に直結するデータはROMに入ってるんだろう…。展開するRAM積むよりもROMの方が安いって事情もあるのかも?

 

f:id:PocketGriffon:20210313151036j:plain

そういえばアウトラインフォントのROMカードも持っているので、こちらもどっかのタイミングで中を見てみたい。データだけ見てもイマイチかも知んないけどw

ROMの中には「……デバッガーが埋まってる?」と思うような文字列が入ってたりするので、解析楽しそう(^-^) 少なくともメモリマップや逆アセンブラの機能は含まれていそうと分かった。BIOSのラベルまで入ってるのはどーなのかとw

 

ブート周りを解析してみて分かったのは、CP/Mが起動するプログラムが本当に無いって事。実は隠しコマンドとかで入ってるのかなーと思ったけれども、コードそのものが無かったw

CP/M自体はROMに積まれてるっぽいので、起動する仕組みを作ってみたいね!

 

f:id:PocketGriffon:20210313172552j:plain

「点」を打つ機能が見つかったので、なんとなく遊んでみたw

LSI C-86(試食版)でも浮動小数点の計算は出来る!それなりに速いかなぁ…と思ったけれども、「点」を打つファンクションが激重で、描いてる点が見える(^^;;

 

なんて感じで脱線もしつつ解析は進めてるよ!

うーん、文豪エミュレータ作った方が解析早いかなぁ(良からぬことを…

 

ではまた次回!(^-^)ノ

文豪ミニ5でプログラミング! その2

文豪で…というよりはV33で…というか8086でというか(^^;;

なんとなく高速化ネタを思いついてしまったので、私にしては珍しく初期段階での高速化プログラミング。まぁ趣味の世界だからいーのよw

 

f:id:PocketGriffon:20210311104518j:plain

文豪はテキストVRAMを持たない表示構成なので、文字フォントを表示させようと思ったらドット単位(実際には8ドット単位)で点を打っていく必要がある。まだフォント周りの解析なども一切進んでいない。表示されているこのフォントは、プログラムファイルにデータとして含んでいる。

 

画面構成は640x400ドットとなっていて、色を出すためには3つのプレーンに同じデータを書き込む必要がある。この辺りはPC-8801PC-9801を想像してもらえれば良いだろう。3プレーン同時書き込みとかALUのデータコピーなどの機能は無い(と思う)ので、地道にバンク切り替えて書き込むというオーソドックスなパターン。

 

開発&解析の初期段階なので、極力プログラムに労力は掛けず、全てC言語で記述することで開発効率を上げる方向に振っていた。スタックポインタの初期化などどうしても避けられないところはインラインアセンブラで記述していたが、アセンブラの使用はその程度だ。

 

先日までの作業で、ようやくメモリダンプが動くようになり、8086で使用できる1MBのメモリ内容が見られるようになった。そこでやっと「自分自身がロードされているアドレス」を知ることが出来たw それまで手探り状態だったのでちょっとスッキリ!何をするにも仮説を立て「多分こうだろう」と想定してプログラミングしていた事が、実際に実証されていく過程がとても楽しい!(^^)

 

ダンプ表示はカーソルキーでアドレスとセグメントを変化させていく事が出来るようにしてあるけど、キーリピートの速度に表示が追いつかなくて、少しもたもたした表示になってた。出来る限りC言語で高速に描画出来るようにプログラム書いてたけど、いくらV33 16MHzとしても限界かなー。

 

ふと…「そうか、1文字のフォントデータは8バイト(一番下は空白なので7バイト)しか無いから、先にデータを全部レジスタに読んでおいたら各バンクへ書き込みだけで済むなぁ」なんて思った。思ってしまったらアセンブラで書きたくなって仕方がないw

 

具体的な方法

ここに8086(V33)のプログラムを掲載するのもアレなので、日本語で書いてみる。

考え方としては、レジスタマシンである8086でメモリをアクセスするのは時間が掛かるので、必要なフォントデータ(同じデータを最大3回書く)をあらかじめレジスタにロードしておいて、メモリをアクセスする回数を減らしてみよう、という作戦だ。

同時にセグメントレジスタの管理も簡単になるため、全体的に高速化されるハズだ。

 

幸い8086にはレジスタが豊富にあるため、レジスタの使い回しに困る事はなかった。DI、SI、ES、DL(合計7バイト)をデータ保持用レジスタとしてプログラムを組んでみた。VRAMのアクセスをする際にはDSを固定する事ができ、ループ展開で一気にVRAMへ書き込んでやる。これをバンク切り替えしながら3プレーンに書き込めば良いのだ。

 

この作業と同時に、書き換えるべきデータが前回と同じだった場合には描画をパスするようにした。PC-8801などで良く使うテクニックだw

これらの作業をしたおかげで、ストレスなくメモリダンプが行えるようになった!無駄にスクロールさせちゃうよw

 

高速化された事に気を良くして、リアルタイムにダンプ表示を行えるようにもしてみた。こうする事のメリットは、割り込みなどで書き換えられるワークエリアを簡単に探し出す事が出来る事だ。キー入力があった時にどこのメモリのどのビットが1になる…なんてのもすぐに探し出せる。高速表示が可能だからこそ出来る技だ(^-^)

 

ところで……LSI C-86(試食版)でアセンブラを使うプログラムを初めて書いたかもしれない。書き方がMASMなどと違っていて最初は面食らったけど、そこはコンパイラが出力するアセンブラリストが参考になるので特に困らなかった。

 

V33はシフト回数が指定できるので、なんとなく8086では出来ない「SHL BX,3」(BXの値を8倍にする)などと書いてみたが、これがうまくアセンブル出来てしまう。あれ?このアセンブラは80186の命令も解釈してくれるんだ…と思っていたが、実際に出力されたコードを見てみると「SHL BX,1」が3つ出てたw

 

今回のプログラムはループの外にあるコードだったのでこのままにしたが、どうしても気になるならばDB列でマシン語コードを書いてやれば良いかなーと思った。

f:id:PocketGriffon:20210311130534j:plain

 

何をするにも1行書いては試してみる…という様子を見ながら書いていく状態が過ぎ、ようやくまとまったプログラムを書いても大丈夫になってきた。ここまで来るのが本当に大変w

慌てず騒がず落ち着いて取り組んでいくよ!(でもやりたくて仕方ないw)

 

ではまた次回!(^-^)ノ

文豪ミニ5でプログラミング!

Twitter上で「謎マシン」と呼びつつ解析をしていたモノを公開してみたい!

あんまり詳しくは書けない(よからぬ事をしていると思う)ので、なんとなくイメージが掴める程度の内容になってしまうのはご理解くださいませ。

f:id:PocketGriffon:20210310192105j:plain

謎マシンの正体は!?

いや、そんなタイトルつけるほどの事じゃないw(しかもブログの写真でバレるw)

f:id:PocketGriffon:20210310120141j:plain

NECの「文豪ミニ5ZC」でした!

「え?文豪ってワープロだよね?」と思ったアナタは正しい(^^)

そう、文豪は専用ワープロだ。

でもその文豪でCP/Mが動いたりMS-DOSが移植されたりしていたのは有名な話。

しかしそんな遊びが出来たのは比較的古い文豪であり、この時代の文豪では封印されている。

残念ながらCP/Mが起動するコマンドなど存在しないのだ。

そんな不自由になってしまった文豪を、自由自在に扱ってみたい…と思うのは、プログラマとしては致し方ない事だろう!(自己肯定)

 

文豪ミニ5ZC仕様

ZCのCPUにはNEC製のV33が積まれ16MHzで動作する。パソコンに例えるとPC98DO+くらいの速度で動く。意外にパワフルな事に驚くだろう。ZCよりも前の文豪では、プリントアウト時に使うアウトラインフォントを展開するのにV60という32bitのCPUを別途積んでいた。おそらくコストダウンという意味合いも込めて、1つのCPUで賄う構想が出たのだろう。パワー的にはV33の16MHzくらいあれば大丈夫…という判断があった、と勝手に解釈してる。

V33は8086互換だけど、速度的には80286と同等くらいで動く。実際に触ってみても(他の文豪と比べて)キビキビとしている。

 

メインメモリは512KB積まれている。こんな情報はカタログのどこにも載っていない。CP/Mが動くと騒がれたミニ5Gの時代が96KBだった事を考えれば、ものすごく巨大になった!これはワープロとしてやれる事が増えたおかげだ。文章メモリは爆発的に増えたりしていないが、画像を扱ったりアウトラインフォントを使えるようになった分、バッファサイズが大きくなったのだろう。

 

記録媒体としては内蔵フロッピーディスクが1台、2HD/2DDアクセスが出来る。なんとなく2DDとしてしか使ってなかったけど、書きながら2HDが使える事を思い出したw ドライブ自体は3モード対応となっている。

あと文豪は専用ワープロだけど、中にHDDが積まれている。容量はおそらく40MBだと思うが確信がない。普通のIDEで接続されていたがWindowsからは中身が見えなかった。

 

画面にはカラー液晶が積まれている。STN液晶で今見ると残像がすごい!(^^; 解像度は640x400ドットで色はどうやら8色みたいだが、まだ解析が進んでいない。VRAMは32KBが3バンクの構成。ヘルプメニューなどのためにもう1セットVRAMが用意されているのが過去機種であったので、もしかしたらもう1セット(96KB)あるかもしれない。

 

文豪でプログラムの実行

この時代の文豪で外部プログラムを実行するのは、実に簡単だったりする。

「お好み設定」→「オプション」と選ぶと、フロッピーディスクに書き込まれた「とあるファイル」をメモリへ読み込み実行する。実行されるプログラムはV33のマシン語で書いておけば良い。これだけだ(^^)

 

問題があるとすれば、実行されるプログラムバイナリが文豪用に書かれている必要がある事かもしれない。誰も文豪の中身なんて知らないw メモリ構成やシステムコールの呼び出し、割り込みやVRAMアドレスなどは解析していくしか無い。これが非常に時間が掛かる。

 

開発環境はLSI C-86 試食版を使用している。文豪でMS-DOSが動いているわけではないので、MS-DOSに依存したライブラリは一切使えない。逆に言えばそれ以外はすべて使えるのだ。OSに依存しない開発なんてポケコンで慣れっこなのでなんの抵抗もない(^^;;

Macで編集、DOSBoxでコンパイル、出来上がったCOMファイルをフロッピーにコピーして文豪で起動…という手順だ。

 

で、文豪でなにがしたいの?

一生懸命に解析したりしているが、結局のところ何がしたいのか…だけど、実はやりたい事が2つある。1つは「とあるプログラム」を動かしたい事、もうひとつはMS-DOSを移植したいのだ。1つめを明かさない理由はブログに書いて驚かせたい…というよりも、実現出来ない可能性が見えてきてしまったからだ。

 

まだ調べ始めたところだけど、おそらく文豪ZCには以下の機能がなさそう。

・反転型VRAMを通常に戻す方法が欲しい

・パレット切り替え機能

・縦200ドット表示

 

上の2つがないとPC-9800シリーズのソフト移植はかなり難しい、下の1つがないとPC-8800シリーズからの移植が難しい。これからまだまだ解析を続けるので発見される可能性もゼロではないが、なんとなくワープロに必要ない機能は削られている気がする。

 

文豪へMS-DOSを移植するのは、私の若い頃からの夢かもしれないw まだ10代だった頃、文豪ミニ5HGに移植を試みた事があるのだが、出来上がったMS-DOSはひどく中途半端で、ハングアップも頻繁にあった。実用レベルとは到底言えなかったのだ。

その時の悔しさがあるので、ぜひとも実現したいと思いつつ、だいーぶ月日が経ってしまった。まだプログラムが組めるうちにチャレンジしたい!

 

V20-MBCの時にもMS-DOSを移植したいと言っていたが、実は最終的には文豪でチャレンジしたかった…というのがあったのだ(^-^;

 

文豪の解析はライフワーク的にやっていこうと思うので、ちょっとずつ進めていこうと思う。このブログに出てきた時には、文豪カテゴリーで検索してもらえると良いかも(^^)

 

ではまた次回!(^-^)ノ

TOSHIBA T1200 メンテナンスその1

f:id:PocketGriffon:20210308213904j:plain

冒頭から話は逸れるが…1990年にEPSON PC-386LSを手に入れた。

PC-9801互換のラップトップパソコンで、重さ8kgを超える重量級だ。当時、手持ちのクルマを売却したことで少しばかりの現金が手元にあった。PC-9801シリーズの何かを購入しようと検討した結果、PC-386LSを選んだ。前の年から欲しかったのだが、びっくりするくらい高くて(定価で50万オーバー!)躊躇しまくっていたのだ。

 

この時代はコンピュータの性能向上が著しく、せっかく買ったパソコンが半年後には型遅れ…なんて事がしょっちゅうだった。だから手に入れるのならば最新型にしておいて、少なくとも数年は後悔なんてしない覚悟が必要だった。

 

その日は秋葉原中を探しまくり一番安い店を見つけた。そこで購入、そのままハンドキャリーで自宅へ持って帰った。当時の自宅は国立だったので、秋葉原→国立まで電車で移動、そのあとは駅から自宅まで運んだのだが、とにかく重い!!!マシン本体だけで8kg超えるのだ。当時は分厚いマニュアルも入っていたし、重さ相応の厳重な箱、おそらく総重量で13kgくらいあったんじゃないかと思うが、これをえっちらおっちら運んだ。

当時はまだ体力に自信があったのだが、両手が抜けるかと思うほど重かった(^^;

 

このPC-386LSで本当にいろんな事を実験した。安くなった頃合いを見計らって40MBのHDDを取り付け開発環境を構築、DOS上で動くuucpを開発してUNIXマシンと接続してみたり、COMMAND.COMに変わるSHELLの開発、DJGPPを使って大きなメモリを扱うプログラムなどなど。多分、手持ちのマシンで一番酷使したと思う。

そんなPC-386LSは、今も箱に入って部屋の奥に保管してある。1年ほど前に箱から出して起動してみたが、問題なくHDDから立ち上がった。

 

で、話が脱線しまくっているが、このPC-386LSとTOSHIBA T1200の容姿が似てるのだ(^^;

蓋を閉じて置いておくと本当に良く似てる!キーボード裏に取っ手があり持ち上げる事ができるなど、T1200は「小型PC-386LS」と言っても過言ではない!(^^)

 

そしてなんとなくだがT1200を見てるとほっこりするのだ(^^; 良い思い出しか残っていないPC-386LS…ぜひそれと似てるT1200も復活させてみたい(^-^)

PC-386LSとT1200を並べた写真を撮りたかったのだが、PC-386LSが部屋の一番奥にあり発掘することが出来ない(^^; いつか出てきた時には必ず写真を撮ってお見せしたい(^o^)

 

コンデンサ届く!

先日発注したコンデンサが無事に届いた。

f:id:PocketGriffon:20210308211313j:plain

35V 150μFという容量は在庫として残しておく事も必要ないか…と、少量のみ入手した。

そういえば直径も高さも気にせず注文してしまったが、運良くちょうど良いサイズが送られてきた(^^; 変な大きさだったら取り付けられないところだった(T-T)

f:id:PocketGriffon:20210308211730j:plain

うん、ばっちりキレイに取り付けられた!

これで電源ユニットのコンデンサは全交換が出来た。これだけで起動すると良いのだけど…。

 

起動テストしてみる!

本当だったら電源ユニットだけでテストしてみるのが良いんだろうけれども、そんな知識も技術も持ってない(T-T)ので、いったん全部組み立てて動作テストを行う。

毎度緊張するこの瞬間…

電源おーん!!!

f:id:PocketGriffon:20210308212455j:plain

お……おおおお!!電源ONを示すLEDが点灯した!!!!

手に入れたときは全くの無反応に加えて、とんでも臭だったのに!

今は匂いも全くしない。これは……起動する予感!!

f:id:PocketGriffon:20210308212704j:plain

…しーん(T-T)

あれ…なんとなく手応えあったのに(^^;

あとから気がついたが、電源ONでもOFFでもLEDが点灯しちゃってる。

うーん…先は長そうだ(さっきまでの手応えはどこにw)。

 

まず液晶よりも何よりも、本体のLEDが無反応。

f:id:PocketGriffon:20210308213119j:plain

ということは、メイン基板側の問題だろうか…。まだメイン基板のコンデンサは取り替えてないんだけど、見た感じ問題なさそうだったので、そのままにしておこうかと考えていた。

やっぱり交換しなきゃダメなのかも(T-T)

 

あと液晶ユニットはバックライトがあるらしいのでインバータ基板が入ってる…気がする。そこにもコンデンサがありそうな予感。過去にインバータのコンデンサを交換したら火を噴いた経験があるので怖いな…汗

 

作業はここまで。

またコンデンサが揃ったら交換作業していこうと思う。

T1200は気長にメンテナンスする事にした。修理出来たとしても、起動させるためのシステムディスクがない事に気がついたものあるけれどもww

 

ではまた次回!(^-^)ノ

TOSHIBA T1200を手に入れた!

f:id:PocketGriffon:20210307110237j:plain

TOSHIBA T1200を手に入れた!

1987年に海外で発売されていたマシンなので、日本ではあんまり見ない機種だと思う。

 

PC DOSを動かすマシンであり、Windowsなどはインストールできない(できる?)

由緒正しいDOSマシンであり、謎パーでもなんでもないんだけど、コンピュータの歴史をたどると良く名前が出てくるので、一度は触ってみたいと思っていたのだ!

 

たまーにDMなどで「いろんなパソコンはどこで手に入れてるの?」と質問される事がある。素直に答えられる範囲(そうでない範囲もあるw)であればヤフオクとかメルカリとかeBayなどのサイトだったり、ハードオフとか秋葉原の電気街にあるお店だったり。

いっぱしのオタクらしく、短いながらもアンテナは張り巡らせているつもりだ。

 

さらに私がこういうブログを書いている事を知っている知人からも「こんなマシンあるんだけどいる?」みたいな話が来る時がある。周りに広報しておけば自然とマシンが集まる良い傾向だ(^^)

むしろ置き場所に困るので、最近は遠慮がちになってるのは否めない(ホント?)

 

ちなみにこのマシンは秋葉原にある「神田装備」で入手した。動作未確認3000円だ(^^)

 

電源を入れてみる!

手に入れたレトロパソコン、いきなり電源を入れてみることに賛否両論あるのだろう。場合によっては火を吹くかもしれないし。用心にこしたことはない。

でも私はいきなり電源入れてみちゃう人(^^;;

電子部品を見ても様子なんてわからない事が多いし、一瞬だけでも電源入れようとしてみたら、何かしらの変化に気づけるかもしれない。まずは様子見と称して電源オンが基本の人だ。

 

T1200はバッテリー駆動ができるマシンだ。しかも取り外しができるタイプ。この当時としては珍しいのかも?

f:id:PocketGriffon:20210307111834j:plain

取り外してみると、そこには電池の液漏れ跡が…。

f:id:PocketGriffon:20210307111916j:plain

うーむ…もしもこれがPC-9801ノートだったら手を出さないと思う。こうなってると内部の基板にまで影響が出てる可能性が高いのだ。でもこれは神聖なるT1200、救済を試みないわけにはいかないだろう(自己基準

f:id:PocketGriffon:20210307112044j:plain

バッテリーパックはこんな感じ。このサイズで容量は2200mAh。中身は単一電池でも入ってるんじゃないかと思うくらいでっかい。

ところで…「ー」端子の下にスイッチが存在している。

f:id:PocketGriffon:20210307112543j:plain

動かしてみたら意味ありげに赤が出てきた。

説明に書いてあるのかと思い読んでみたら「火に入れるな、端子を短絡させるな、分解するな」と普通のことが書いてあるだけでスイッチについては触れられていなかった。

なんだろね?充電するしないのスイッチとか??

 

なんにせよバッテリーからの起動は望み薄だし、なによりもバッテリーは空だ。

素直にACアダプタからの起動を試みる事にする。

f:id:PocketGriffon:20210307113429j:plain

今回は本体のみを入手したのであり、ACアダプタはない。コネクタを見てみると、ありがちなサイズとはちょーっと違うっぽい。HC-40やPC-8201と接続しているコネクタとは違う。

でもユニバーサル電源を使ってる限りはコネクタを自由に付け替えられる!

これは本当に便利だ!

f:id:PocketGriffon:20210307113950j:plain

いつも使ってる組み合わせはこんな感じ。電圧はHC-40なら6V、PC-8201なら9Vと切り替えている。青いコネクタは極性を入れ替える役割も持っている。これ1つあれば多くのレトロマシンの電源は困らない!

しかし今回はコネクタの形状が違う上に、この時代としては珍しいセンタープラスだった!

そのため青いコネクタは使わずに、こんな感じとなった。

f:id:PocketGriffon:20210307114147j:plain

 

さあ、電源を入れてみよう!

祈るような気持ちで電源スイッチをON側にする…。

残念ながらLEDもつかなければ液晶も無反応。その代わりと言ってはなんだけど、3秒もしないうちに猛烈な生くささが立ち込める!!これは…コンデンサがダメな時にする匂いだ!!(TOT)

すぐに電源をOFFにしたが、部屋中がものすごく臭い(T-T) コンデンサ1つや2つが放つ匂いでは無いと直感した。本体を傾けつつクンクンしてみたが、どうやら本体後方のACアダプタを繋げた辺りから匂いが出てる。フロッピーディスク側や液晶ユニットからは匂いがしていないので、おそらく電源ユニット付近の液漏れなんだろう。

 

分解してコンデンサ交換!

なんとなくだけど、本体のダメージが大きそうな気がする。おそらくコンデンサを交換しても動かないんじゃないかなーと直感したが、それでも努力するのがオトコノコだよ!

分解してコンデンサを確認してみることに。

f:id:PocketGriffon:20210307115140j:plain

…もうね、ひと目見て酷さがわかる(T-T) 基板全体が水っぽい感じになってるし、いろんな部品が黒く染まってる。液漏れが激しく起きてる状態だ!

 

まずはコンデンサの電圧と容量を調べてみて、手持ちでまかなえるか調べる。そしたら…2つ以外は在庫がある事が判明。これは…ある分だけでも交換してみる事にした!

f:id:PocketGriffon:20210307115403j:plainf:id:PocketGriffon:20210307115422j:plain

…これは写真にモザイク掛けた方がいいの?(^^;;

もんのすごいモレモレだった!先にこれを知ってたら電源入れなかったけど、入れちゃったもんは仕方ない!(ひらきなおり

エタノールなどでキレイにして行こうと思ったが、これはもう洗った方がいいや!

あろうことか水道水でジャバジャバ洗った!食器洗い洗剤をつけつつ、歯ブラシでごしごし!電気屋さんが見たら悲鳴を上げる光景(電気的拷問)が繰り広げられた!(^^;;

そして洗った後がこちら↓

f:id:PocketGriffon:20210307115757j:plainf:id:PocketGriffon:20210307115817j:plain

あくまでも自己責任って事で(^^;

洗った後は大雑把に拭き取り→エアーダスターで大きな水分の吹き飛ばし→浴室乾燥機に放り込んでしばらく放置の三連コンボ。これでほぼ完璧に乾燥できる(^-^) 急速に乾燥させるからサビも出にくいよ!浴室乾燥機があるご家庭ではオススメかも。いやオススメはしないけど!

 

ところで…今回は35V 150μFのコンデンサが足りなかった。コンデンサって容量を合成できるんだろうか??そんな事を思って、↓こんな事をしてみた。

f:id:PocketGriffon:20210307120201j:plain

これは35V 47μFのコンデンサを3つ繋げたものだ。これでいいかな…と思い、容量を測ってみたところ、全然141μFにならないことが判明!え?どーして??

てっきり容量は合計されるものだと思っていたが、どうやら違うらしい…。ネットで調べてみると直列と並列がうんぬん…と書いてあったが、どうやら直列で繋げてもダメっぽい。うーん、そうなのかぁ…。

 

やっぱり危険な事はやめようと思い、素直に35V 150μFのコンデンサを入手する事にした(^^;

危険な真似はやめようね!!←お前が言うな

 

とりあえず今回はここまで!

次回、T1200は復活するのだろーか??

乞うご期待!(^-^)

 

ではまた次回!(^-^)ノ

PC-1600KでBad Apple!! 高速化編

先日、SHARP PC-1600KでBad Apple!!を表示させる実験をした。

主な目的は、搭載されているメモリを使い切る「何か」をしてみたかったのであり、それ以上の目的も目標もないままだった。

 

Twitterおよびこのブログに投稿後、改めてYoutubeなどにあるBad Apple!!の動画を見てみたが、音楽と映像がマッチしていてとても軽快に見られる!うーん、これは…サウンドはどうあれ動画速度はもう少し速めないと制作者に失礼だなぁ…と思った。

 

というわけで!今回は高速化がメインのお話(^-^)

 

速度計測をしてみる!

さっそく高速化を始めてみたい……が、その前に速度を正確に計測する仕組みが必要だ。

その仕組みが無いと、実際に入れたコードで速度が速くなったのか、逆に遅くなってしまったのかを知る方法が無い。人間の感覚ほどアテにならないモノはないw

 

どこかのI/OポートにTick値が出てないかな…。タイマー割り込みでも良いのだが…。

エミュレータがあれば楽に速度計測が出来けど、そのためだけに作るのは忍びない(否定はしないw)。

 

そしたら「PC-1600K データブック」に情報が載っていた。

f:id:PocketGriffon:20210226132629j:plain

こういう情報が掲載されている書籍があるのは、本当に助かる!

 

だがしかし……なんと1/64秒の割り込みしか用意されていなかった!処理速度を測るための数値としては、だいーぶ大雑把な数字だ。うーん…これで測るしかないかなぁ…。

サンプリング数を多くして、大きな値で見ていくしか無いな。

 

現状、64KBの拡張メモリ(CE-1600M * 2)に1086枚の画像が入っている。これを全て表示させた後に掛かった数字(時間)を目安にする。

初期の状態では「10784」という数字が出た!

この数字を64で割ると、表示に掛かる秒数が出てくる(168.5秒)。1086枚の画像を168.5秒で表示しているので、秒間6.445枚の絵が表示出来ている。これが現状だ。

最初が秒間1枚くらいの速度だったので、まぁ速くなってはいるんだけど(^^;

オリジナルが秒間30枚らしいので、それから比べたらだいーぶ遅い。

 

高速化開始!

さて、正確な(でも大雑把な)速度が測れるようになったので、これから楽しい高速化作業といきますか!

 

まずは「何を高速化するのか」を検討してみる。

処理の流れは、ものすごく乱暴に書いて以下の通り。

1、画像を展開するバッファをクリア

2、圧縮されたデータをバッファへ展開

3、展開されたデータをVRAMへ転送

この3つだ。

1のバッファクリアは、点を打つ/消す、のどちらかの処理を端折るために入れている。先にクリアされている事が保証されれば「点を消す」処理はいらなくなる。黒い部分が多い画像では逆に不利となるが、多くの場合は有利に働くため入れている。

 

2は多分、イチバン重たい処理。データによって縦方向と横方向があり、2つの展開ルーチンが存在する。縦方向に圧縮されたデータが多いため、縦方向のルーチンを最適化したい。

 

3はIOCSの処理をそのまま利用している。問題は横方向の156ドット全てを転送するサービスしか提供されてなく、なんとなく無駄が多そう…という事だ。

 

それぞれの速度を測ってみたが、1はほとんど負荷がなく誤差の範囲程度、3は全体の25%くらい掛かっている事が分かった。残りが2の時間だ。

 

実際の描画処理は、最終的にはアセンブラ化すればいいか…と思っているが、でもC言語で究極まで高速化してから、そのアルゴリズムアセンブラ化するのが良いかなと思ってる。LSIC-80が出力するアセンブラコードを参照しながらコードに手を加えていくが、むしろ「アセンブラコードでこう吐かせたいから、C言語でこう書く」という感じ(^^;;

 

久しぶりにLSIC-80でガリガリ組んでみたが、register宣言でコードをコントロール出来たり、auto変数よりもグローバル変数の方が良いコード吐いたりなど、自前コントロールがとてもし易いコンパイラだと思い出した。

 

その結果、「これをアセンブラ化してもたいして速くならん」というところまで攻め込む事が出来たので、これはもうコレで(^^;; C言語状態で満足いくモノが出来てしまったw

まぁデータの持ち方などアルゴリズムを変更したら良かったな…と思うところがいくつか出てきたが、今回はこれ以上はやらないという事にした(^-^; キリ無いからね!

 

LCDCを直接アクセスしたい!

3の「展開されたデータをVRAMへ転送」を高速化してみる事にした。

 

実はIOCS経由でしかLCDにアクセス出来ない事が気になってた!(^-^;; 「出来ない」というと言い方がアレだけど、「やり方を知らない」と言った方が良いかも。

 

「PC-1600K データブック」にもLCDへの直接アクセスは詳しく書かれて無いのだ!

f:id:PocketGriffon:20210226153853j:plain

↑この図しか書かれてなかったんだけど…見る人が見たら理解できるんだろーか?

なんとなく分かるのは、左64ドットと次の64ドットではコントローラが違うらしい事、右の28ドットも特別扱いっぽくなってるらしい…。

ここから理解できるのは、表示しようとするモノが「真ん中の64ドット境界」をまたぐと処理が面倒になりそう…って事だ。

 

詳しいI/Oポート情報が欲しい!

仕方ないので…ROMを解析する事にした!

最低限ではあるけれども分かった事を書いておく。

I/Oポート58h〜5Ahをアクセスすると左64ドット、右28ドットがアクセス出来る。

58hがLCDの座標設定、59hのMSBにBusy信号、5Ahにデータを出力する…らしい。これが左64ドットをアクセスする時。右28ドットにアクセスする際にはY座標の指定を+4する。今回は使わないけど!

そして中央の64ドットにアクセスするには54h〜56hポートをアクセスをするようだ。

なるほど…そういう感じなのか。

これらを組み立てる事で、IOCSの156ドット全てではなく、必要最小限のドット数のみ更新する事が出来そうな雰囲気。

 

どうやらPC-1600Kにはハードウェアスクロールっぽい仕組みがあるようで、オフセット座標を加算しないといけない事に気が付かずに一晩ハマった。その後、なんとか問題を解決してLCDCへの直接アクセスが可能となった!

 

その影響として、画面中央に表示していた画像が、左から64ドットに変更となった。でもそのおかげで効率の良い表示が出来るようになった。

 

LCDCの速度はPC-G850シリーズのそれとは違い、CPUの速度に追いついてこない。Z80のOTIRで一気に転送ってのはLCDCの速度的に無理で、1バイト送信するたびに40クロック以上待つか、律儀にBusy信号を監視する必要がある(今回はちゃんとBusy信号を監視した)。

※PC-G850Sで実験した際には、OTIRどころかOUTIを144個並べても問題なかった

 

以上の工夫をする事によって、初期状態で10784(168.5秒)掛かっていた処理が、6378(99.65秒)まで縮める事が出来た!

f:id:PocketGriffon:20210226155730j:plain

この先、圧縮データの展開処理をアセンブラ化としたとしても、6000を切る事は難しいかも知れない。とりあえずこの辺りでキリを付けるのが良いかな…と考えた。

 

動いたばかりの時は秒間1コマしか動かなくて、こりゃどうしたらいいんだろう…と思ったが、なんとかアニメーションっぽく見えるようになったのは嬉しい(^-^)

データ量もどどーんとでっかいし、とりあえず満足かな!

 

最初に公開した状態↓に比べても速くなってるのが分かると思う(^^)

 

これをやってる最中に気が付いてしまったんだけど……ウチのFX-890Pだったらメインメモリが256KBあるなぁ…とか、PC-E500に取り付けてある増設メモリも256KBだったなぁ…なんて思ってしまった。やらないよ!やらないんだからね!(TOT)

 

ではまた次回!(^-^)ノ