ポタコン?! SHARP PC-1350

f:id:PocketGriffon:20201127013624j:plain

私が初めて手に入れたポケコンSHARPのPC-1350の思い出話をば(^^)

 

パソコンを触り始めた当時はヒトんちのPC-8001を中心に触っていて、他のマシンの事はほとんど知らない(というよりは知識と情報収集が追いつかない)状態だった。

そんな時、知り合いが突然(ホントに突然!多分、衝動買いw)、PC-2001という「手で持ち歩けるサイズ」のパソコンを手に入れてきた。

f:id:PocketGriffon:20201127015850j:plain

雑誌に広告が出て数日後に買ってきた気がするので、私もホンモノを見るのがそこで初めて!初めて見るモバイル系のマシンに大興奮!!

触らせてもらって、N-BASICととても良く似た文法を持つBASICに感動。こんな小さなマシンでも同じようなプログラムが動いちゃうんだ…と感心した覚えがある。

思えば私のモバイル人生はここから始まってる気がする。

 

その後、何年か後だが衝撃的にポケコンを手に入れる事になる。もうね…見た瞬間に惚れ込んでしまい、理屈とかどうでもいいからこのマシンが欲しい!と思ってしまった。

それがSHARPから発売されたばかりのPC-1350。

雑誌で写真を見た翌日にパソコンショップへ行った。当時は雑誌で掲載された頃には店頭に並んでいる事が普通の情報速度だったのだ。今は在庫が無いと言われたけど、この展示品でいいから売ってくれ!と詰め寄り、それを安めにゲットしたw

同時に増設メモリも欲しかったが、そこまでの予算がない。当面は増設なしで行くしかないか…と諦めた。

 

PC-1350とPC-2001のサイズ感はこんな感じ。

f:id:PocketGriffon:20201127021217j:plain

ふた回りくらい違うかも知れない。

重さの違いも相当なモノだ。

 

PC-1350の液晶の上には「PORTABLE COMPUTER PC-1350」と印刷されてる。ポケコンというよりはポタコンなのだ!

 

手に入れたPC-1350の使い方

PC-1350を手に入れてからというもの、生活の中心にPC-1350がある…と言っても過言では無いくらいの使い込み方をした。

標準メモリのPC-1350自体にはRAMディスクなどもなく、メモリ中に1つのプログラムしか覚えていられなかった。データレコーダーとカセットテープでピーガーやった覚えはあるが、それまで持ち歩いていた記憶が無いので、おそらく何か短いプログラムを入れてただけなんだと思う。

思いつくとプログラムを入れては実行させるという生活を長く続けたw

 

そんな生活をしているとPC-1350の電池がすぐに無くなってしまう。本体の駆動電池は、ボタン電池CR2032が2つの構成なのだが、当時は100円ショップなども無く、ボタン電池は基本高かった。何度か交換した後に「このままでは電池で破産する!」と気が付いたw

 

増設メモリを付けていなかったので、裏ぶたを外して電池の端子にセロテープか何かで線を取り付け、確か単1電池か単2電池のボックスを繋げるようにした!めっちゃ持ち運びしづらくなってしまったが、電池は死ぬほどもつようになった(^^;; このおかげで持ち運び期間が終了したw

 

せっかく新しいコンピュータを手に入れたのだから、マシン語を覚えたい!

そう思って、参考になりそうな本を買ってきた。

f:id:PocketGriffon:20201127022903j:plain

ウチにある当時買った本なのだが、今の時代に帯付きは非常に珍しいと思う。

なぜこんな綺麗に残ってるのかと言えば、当時の私はマシン語が全く理解出来ず、読む機会が本当に少なかったのだw

レジスタがメモリにある…みたいな構造の意味が分からず、早々に1度目の挫折をした!

 

その後、何度無くチャレンジしているのだが、今の今まで大きめなプログラムを作ったことが無い。せっかくなので挑戦してみたいと思ってる!

 

最近になって増設メモリを手に入れた。

f:id:PocketGriffon:20201127023901j:plain

増設してから気が付いたのだが、PC-1350は16KBまでしかメモリ増設が出来なかったらしい。MEMしても32KB増えている感じはしない(T-T)

f:id:PocketGriffon:20201127024043j:plain

しまったー…とは思ったが、後の祭り。このまま使い続けます(^^;

 

ポケコン道!

その後、PC-1246S→PC-E200→PC-E500→PB-1000などポケコンを渡り歩いたが、デザイン的に一番好きなのはPC-1350系!なんとなく色合いが好きというか。SHARPの銀色ポケコンに洗脳されたひとりなので、やっぱりこの雰囲気が好きw

f:id:PocketGriffon:20201127025010j:plain

せっかく今の時代に動くマシンを所有しているので、何か作ってみたい(^^)

段階的に作っていきましょうかね!

作ると言っても環境作って実機で動かして満足しちゃうのかも知れませんがw

 

今回はオチもなにもなく終了!

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

EPSON HC-45(PX-4+) メンテナンス

f:id:PocketGriffon:20201122121552j:plain

先日のブログで紹介したEPSON HC-45。

拡張無しで128KBのRAMドライブが使えるなど、意外に使える予感がしている。

せっかくなのでHC-45を整備して、HC-40以上に使えるモノにしたい!

まずは不安のある電源周りを整備してみる事にした。

 

HC-45の状態は、先日までのテストで以下の事が分かっている。

ACアダプタでの駆動は出来ない

乾電池を入れて電源が入る事は確認出来た

ニッカドバッテリーパックでの動作はまだテストしていない

内蔵の128KB RAMドライブを有効に活用するためにも、ニッカドバッテリーでの使用はぜひ出来るようにしたい。そうしないと電池交換をするたびにデータが消えちゃうからだ(T-T)

 

バッテリーの交換検討

まず、うちのHC-45には元からバッテリーが入っていなかった。ただ、HC-40に入っていたバッテリーがあるので、おそらく同じモノだろうと仮定。

f:id:PocketGriffon:20201122124832j:plain

左の黄色いのがHC-40に入っていたバッテリーで4.8V 700mAh。

今回使うのは右側の青いバッテリーで4.8V 1400mAh。

同じサイズで容量が2倍ってのがいいね!(^-^)

ちなみに容量の大きいものを使いたいと思って↓こちらのバッテリーも手に入れていた。

f:id:PocketGriffon:20201122125331j:plain

ニッカドバッテリーだと思い込んでいたんだけど、よくよくみるとNI-MHって書いてある…。これはニッケル水素電池…orz 代わりに使う事は出来ても、おそらくHC-45本体に備わっている充電回路がダメな気がする。せっかく手に入れたけど使えない(T-T) 残念だ!

…というか、レトロ使ってる限り、このバッテリー使えなく無いか?(T^T)

 

HC-45のバッテリー端子は4本の電極が付いているタイプ。

f:id:PocketGriffon:20201122125714j:plainf:id:PocketGriffon:20201122125744j:plain

そして元のバッテリーのコネクタは端子が緑色になってしまっていて、そのまま使うにはちょっと忍びない。テスターでチェックしてみたところ、ちゃんと電気は通るみたいだけど、このまま使い続けるのはなぁ…。

この際なので新品のコネクタを使ってみたい。

そんなワケで、別途手に入れていた4芯コネクタを使う事にした。

f:id:PocketGriffon:20201122130038j:plain

…微妙に形が違う(^^;;;

でっぱりを削ってしまえば使えるかな…きっと。

 

端子の加工

元の端子、ちょっとカタチ?が変わっている。

f:id:PocketGriffon:20201122130944j:plain

上が元のバッテリーについてた端子。下が今回用意した端子。

まず赤と黒の線が繋がってる場所が違う。そのまま黄色と青を使うものありだけど、私はぜーったいに間違うミスする破壊する(TOT) これはちゃんと黒と赤に差し替えよう。

それと…中2本の端子が、白の線で繋がってる。これは???

端子を取り外すのに簡単なように線が繋がってるとか?(^^;;;

いやきっと何か意味があるはずだよね…。

これも似せて作る必要がありそう。

 

というわけで作ってみたのがこれ↓。

f:id:PocketGriffon:20201122131350j:plain

赤と黒の線を入れ替えて、引っこ抜いた黄色と青の線を利用してループ?を作ってみた。
色とか見栄えとか見栄えとか見栄えとか置いといて、機能としては正しいはずだ!

見た感じなんて気にしちゃダメだ!!(TOT)←相当気にしてる

 

f:id:PocketGriffon:20201122131931j:plain

よし、バッテリー出来上がった。まぁこんなもんでしょ(^-^)

f:id:PocketGriffon:20201122132006j:plain

電圧もちゃんと出てる(^-^)/

これで問題なく使えるはずだ!

 

本体に装着!

準備したバッテリーを本体に取り付ける前に、本体の様子をもう一度見ておこう。

気になってるのは、本体がACアダプタで動作しないので、おそらくバッテリーの充電回路も動かないんじゃないのかな? そしたら本体に装着したバッテリーの電圧が下がるたびに取り出して充電するの??

それは…めっちゃ面倒だなぁ…(TT)

ACアダプタを使えるようにするには、おそらく本体電源周りのコンデンサを交換しないいけないのかも。もうこれは順番にやっていくしか無い。

そんな気持ちでACアダプタを繋げてすいっちおーん!

f:id:PocketGriffon:20201122132503j:plain

あ…あれ???電源入ったよ??電池入れたまま?いや抜いてる。

あれれれれ?なぜか起動するようになった!

え??なんで???

 

なんかEPSON HCシリーズでは、こういう事が多い気がする(^^;;

最初は調子悪かったのに、使い始めると段々と調子良くなってくるパターン。

でも動いたからとりあえずいいか!(^-^;

これで充電回路も使えるカモ!?

さっそくバッテリーを納めてみよう。

f:id:PocketGriffon:20201122133447j:plain

はいったー!サイズ的にもばっちり(^-^)

削ったコネクタもちゃんと入りました。フィット感が凄い!

そしてドキドキのでんげんおーん!

f:id:PocketGriffon:20201122133718j:plain

バッチリ!!

ACアダプタなしでもちゃーんと起動したよ!

 

最強のHC-45にするために!

ウチにあるHCシリーズ最強マシンを作るために、HC-40からRAMドライブを移植する!

とは言っても、カートリッジを移し替えるだけの話だ(^^)

 

f:id:PocketGriffon:20201122134802j:plain

右上のカートリッジに注目!

おおおお!これぞ最強のHC-45!!

これでAドライブが内蔵RAMの128KB、Iドライブがカートリッジの64KB、そしてメインメモリが64KB。合計で256KBの容量だ!この当時のマシンとしては相当デカいよね!

 

これだけ大きいとCP/M側のツールも充実出来そうな気がする。

DDTとかM80とかBDS Cとか!開発ツールも充実しちゃうかもなぁ(^-^)

でも本体で編集しない気もするしw

自己満足の状態だけど、やっぱりマシンが充実するのは嬉しい!

よーし、またHC-40シリーズで何か作りたくなっちゃうね(^^)

あと本体がちょっと汚いのが気になるので、これもちょこちょこ直していきたい。

 

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

TI-84 Plus CEでプログラミング!

f:id:PocketGriffon:20201120182718j:plain

Twitterに動画を投稿したが、某ゲームの背景を表示させてみた!

 

きっと見た人の90%は、あの音楽を口ずさんだのではないだろーかw

 

今回のこのプログラムは、TI-84 Plus CE(以降84PCE)でコードを書いてみたかったのと、eZ80である程度まとまったプログラミングをしてみたかっただけだ。

 …というわけで、これからゲームとして膨らませていく感じではない(^^;

期待させてごめんね!!

 

せっかくプログラミングしてみたので、84PCEでのプログラミングの注意点とか、eZ80での注意点などなどをご紹介してみたい。

 

TI-84 Plus CEで実行させるために

実行させるための方法は前回のブログに書いておいたけれども、制限がいくつかあった。

まず84PCEへ送り込めるファイルサイズは、どうやら64KBが最大のようだ。

つまり64KBの中に全てのデータとプログラムその他を詰め込まないといけない。別のマシンのように2段階ロードが出来るかどうかも分からない。同時にあれこれするのは大変なので、今回は64KBに納める方向で頑張ってみることにした。

 

今回表示させようとしている絵は、たぶんみなさんご存じだと思う。

元のゲームは1983年に稼働したゲームだ。当時のROMサイズを考えたら相当小さいデータとして格納されていたんだと思うけれども…今も同じデータフォーマットで持つわけにもいかない。なにせ84PCE…というかeZ80がどのくらいのパワーがあるのか未知数でしかないので、出来るだけVRAMの構造とデータを合わせておきたい。

 

84PCE自体、普段は16bpp表示となっている。このサイズで65536色も出たら表現力としては十分だ!画面サイズが320x240ドットとなっているのでVRAMのサイズは320x240x2で150KB!ひえぇ…(@_@; 

 え?!一度にロード出来るサイズは64KBなのに、VRAMが150KBあるのか…うむむ…なるほどいろいろと納得したw

 

その後、いろいろと調べてみたところ、どうやらVRAMのサイズが半分になるカラーインデックスモードが存在するらしい。これは…いきなりユーザープログラムで使って良いのかな…操作も含めて実験が必要だ。

f:id:PocketGriffon:20201120185248j:plain

ちなみに上記のBLUE、REDの位置が逆になっていた。どうやらこの2つを入れ替えるビットが存在していて、それが立っているらしい。アタマの中で勝手に「RGB」と思い込んでコンバータその他を書いてしまった後だったので、もうこれはそのまま行く事にしたw

 

ところで、84PCEは最大で48MHz動作が出来るらしい…普段は電池を持たせるためにそこまでの速度はださないんだろうけれども…でも任意で48MHzに出来るのかしら…。

Boot Callに_boot_Set48MHzModeなんてのがあるのだけれども、呼び出し方も関数の意味も分からず。これは今回は試すチャンスなさそうだなー(T-T)

 

マップデータの格納方法は…

これはもう今回の趣旨と外れてしまうため、詳しくは説明しない。

さらっと言うのであれば、マップ全体を8x8ドットで分割し、同じキャラクタは1つにまとめる等して容量を減らす方向で頑張っている。最終的にはキャラクタ、スクリーン、パレットの3つデータを保持した。

それでもマップ全体をメモリにいれる事は出来ず、実は見えているマップ以外のキャラクタやスクリーンはメモリに入っていない。別にナスカの地上絵を見せたくてココを表示させているわけではなく、メモリの都合上ココしか表示出来なかっただけだw

 

eZ80有象無象

私的な今回の目的は、やはりeZ80でプログラムをしてみたい!に尽きる。

作り始める前は「Z80の上位互換な感じでしょ?R800みたいな?」という感覚でしか無かったのだが、作っていくとその考えは大きく間違っていたと気が付く事に…(^^;;

 

レジスタペアのコピー

気が付いてからも何度も間違えてしまう代表格がコレ。

例えばHLレジスタをDEレジスターにコピー(交換じゃない)したい時、

    LD D,H

    LD E,L

って普通に書きますよね。Z80ではメモリ的にも速度的にも良いはず。

だけどコレ、eZ80ではうまくいかない。

レジスタペアが24bitに拡張されているのが主な理由なのだが、Hレジスタ、Lレジスタに加えて、さらに上位ビットのHLUレジスタというのが存在するらしい。「らしい」と付くのは、実際にそのレジスタへ直接アクセスする命令は存在しないので、呼び方も含めて良く分からないのだ。

仕方ないのでレジスタのコピーはPUSH/POPを使う事にした。

    PUSH HL

    POP DE

ちなみにeZ80のPUSH/POPは(ADLモード=1の時は)3バイトとなる。先ほどのHLUレジスタも含めて更新されるので安心だ。

 

同じような理由で、レジスタペアを確実に0に初期化するために、0でのロードが増えるのも仕方が無い。

    LD HL,0 ← HLUも含めて0クリアしたい

 

デバッガもない状態なのでバグが出たらコードを想像で追っていくしか無いが、記憶の片隅にもないレジスタの事でバグが出ると、ホントに手に負えない(^^;;

 

*インデックスレジスタが意外に便利

IX、IYレジスタ、なぜかZ80ユーザーからも敬遠されがちな気がする。私はワリと好きで積極的とは言わないけれども便利に使いたい人。

良く雑誌で見かけたのが「インデックスレジスタは遅くなるので使いませんでした」って記述。いつも「ええ?!そうなの?」と思ってました。だって使いどころをきちんとすれば、速度に勝るものがあるよ??

 

eZ80ではインデックスレジスタ周りの命令もいくつか新設されていて、とりわけ便利だなーて思ったのがコレ。実行速度はなんと驚きの6サイクル。

    LD HL,(IX+0)

Z80でも2命令で同じことが出来る。でも実行サイクルは38。

    LD L,(IX+0)

    LD H,(IX+1)

 

そして次がコレ。

    LEA IX,IX+n

Z80では見慣れない命令のLEA。でも他のCPUではワリと見覚えのある命令。

これがeZ80ならば使う事が出来る!

同じことは別のレジスタペアを用いれば実現は出来る。

    LD BC,nnnn

    ADD IX,BC

でもインデックスレジスタを使う時は、たいてい他のレジスタペアは埋まってる事が多いので、こういった単体のレジスタで加算が出来るのは本当に助かる(^^)

 

*でもインデックスレジスタは注意が必要…らしい?

インデックスレジスタを使っていて、プログラムの動作がとても不安定になる事が多々あった。プログラムの間違いが見つからず、もしや…と思ってIX,IYをPUSHして保護したらバグがピタっとおさまった。どうやらユーザープログラムでは壊してはいけなかったようだ。

特にIYレジスタについては取り扱い注意のようだ。

どこかのドキュメントに注意事項が書かれているのかも知れないけど、残念ながらそこまで探しきれてない(T-T)

 

*LDIRが速い?!

LDIRがふつーに速い気がする。回数が分かっているのならばLDIを並べるのが高速…がZ80では定石としてあったけれども、eZ80ではLDIRを積極的に利用するのが良い気がする。

実際、画面のスクロールはLDIRを繰り返し行っているが、見ての通りの速度が出てる。

 

*乗算命令は便利だけど…

eZ80に備わっている乗算命令。今回はキャラクタのアドレスを求める際に利用してる。

ただ…ちょっと面倒だったのは、8bit * 8bitの乗算だったら簡単なのだけれども、今回はキャラクタ数が256を超えていたため、16bit * 8bitが必要だった。

Boot Callに_Mult16By8というエントリがあったのだが、TI-84 Plusの時からあるエントリなので、もしかしたら乗算命令使ってないのかも??と思ってしまったので自前で書いたw

f:id:PocketGriffon:20201120212439j:plain

乗算自体は(A*H<<8)+(A*L)のありふれたアルゴリズムだけれども、ここでもHLU(16bit以降)に値を追いやる方法が分からないw 仕方ないのでADD HL,HLを大量に入れてみたが、後で思えばメモリを介した方がエレガントかも知れない。

こういう「存在するけどアクセスが自由に出来ない」レジスタはどうすればいいんだ…きっとeZ80に慣れた人ならではの定石があるんだろうなぁ…。

 

今回のプログラム

今回のプログラムというかパッケージは以下な感じになった。

・キャラクタデータ 44928バイト

・マップデータ 14848バイト

・カラーデータ 66バイト

・プログラムその他 502バイト

合計で60344バイトの8xpファイルが出来上がった。

このサイズのファイルを84PCEに転送するのはわずか数秒だ。

RS-232Cでちまちま転送していたのを普通にしている私に取ってみれば一瞬の出来事w

とても開発効率が良いと思った。

 

今回はハングアップするたびに84PCE裏面のリセットボタンを押すハメになった。途中、何度も押しすぎて「壊れないかな?」と心配になるほどにw

 

スクロール速度は、アーケード版に比べたら2〜3倍速いかもしれない。これはウェイトなしの速度となっている。この先、例えば自機を表示したりでっかいボスキャラを表示するには少し心許ない。

カラーインデックスモードを用いる事で、VRAMの半分が空いている。ここに圧縮されたデータを展開しておけば、もう少しあれこれ入るかも知れない。いやそれだったら2画面切り替えでちらつきをなくすか…。などなど、夢が広がってしまうハードなのは分かった(^^;;

 

eZ80は想像していた通りに速く、でも48MHzかと聞かれれば「多分違う」と思う。

私としては全体の速度を楽しむよりは、eZ80でのプログラミングとちまちました速度が楽しめれば十分だ!(^^)

それも今回のプログラミングで、一応は出来たかな…と思う。

 

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

TI-84 Plus CE

どちらかと言えば、せっかくやってみたので備忘録を残そうかなーって意味合いで記録(^^)

f:id:PocketGriffon:20201114221804j:plainf:id:PocketGriffon:20201114221822j:plain

Texas Instrumentsのグラフ関数電卓

TIの関数電卓の存在は若い頃から知ってはいたものの、接点…というか手に入れたいという動機が無かったので、特に意識したことは無かった。

それが…10数年前、仕事でロサンゼルスへ行った際、ホテルの近くにあった大型マーケットで、新品のTI-84 PlusとTI-89 Titaniumを見かけた。「あれ?すごく安く感じるけど…」と思ったが、その日は気にしつつもホテルへ戻った。

ホテルに戻りつつ、見た型番の詳細を調べる。するとなんか楽しそうなCPU積んでる!(Z80、68000)これは手に入れておいても良いかも知れない!

翌日、気になって仕事にならないので早々にキリつけて、昨日のマーケットへ。

そこで手に入れたTI-84 Plus、TI-89 Titanium。両方で$100しなかったと思う。もちろん両方とも新品だ!

f:id:PocketGriffon:20201114225816j:plain

↑その時に入手した2台。もちろん今でも稼働品だ!

 

それ以降、TIのグラフ関数電卓を見るたびに「いつかプログラムしたいから」という大義名分に基づいて手に入れるようにしていたおかげで、この10数年で18台にもなっていた。

いつかお披露目したいと思ってるのでチャンスがあれば(^-^)

 

TI-84 Plus CEで自前プログラムを実行する方法

せっかくなのでグラフ関数電卓でプログラムを動かしてみたい!

まずはTI-84 Plus CE(以下84PCE)でプログラムを実行出来る環境を整えてみよう。

 

TI-84 Plus CEのOSバージョンについて 

 全く知らなかったんだけど、OSバージョンが最新(かその近く)だと、アセンブラまたはC言語で書いたプログラム(要はマシン語のプログラム?)は動かないらしい。

一旦は最新OS(6.5.0)にしたが、そんな事情があったので6.3.0に戻した。

ただ、メーカー側が閉じた機能でもあるので、ここで詳細は書かずにおく。

どうしてもやってみたいという方は、あくまでも自己責任で探してみて欲しい。

 

どうやってホストマシンと繋げるの?

恥ずかしながら、この10数年の間にプログラムを実行したのは数回しかないw TI-BASICという内蔵のBASICプログラムをちょろっと動かした程度だ。しかも何かを参照しながらやっているので暗記もしてない!!

まずはホストマシン(Mac)と84PCEを繋げないとどうにもならない。これも一度も試すどころか調べた事すらなかったw

どうやら「TI-CONNECT CE」というアプリで通信が出来るようになるらしい。

f:id:PocketGriffon:20201114231839p:plain

USBを繋げたらあっさりと認識した。この安定性は嬉しい(^-^)

普段、レトロやってると最初はうまく行かないのが当然に思っちゃってるので、こうも普通に繋がると、安心するというよりは「え?ホントに?マジで?」とか思うw

f:id:PocketGriffon:20201114232153p:plain

↑USBに繋げると84PCEの画面にこれが出る。カッコ良いのでついつい2を押して次も見られるようにしちゃう(^^)

 

何のファイルを送り込めばいいの?

とても気になっていたのだが……OSのバージョンアップをする際に指定したファイルの拡張子が「8eu」だった。そういうもんか…と深く気にせずいたのだけれども…他のファイルをみたら「8xp」だったり「8xg」だったり…。これは…拡張子になにかある!

でも逆に言えば「8xx」の拡張子を持つファイルを送り込めばきっと大丈夫なんだろうw

先頭の写真にあった某ゲームは「8xg」の拡張子だった。

その後、調べてみるとやはり拡張子に意味があるようだ。

詳しくはこちら↓を参照。

Compatibility with Graphing Calculators

自分でプログラムを作った場合には「8xp」にすれば良いんだろう。

ファイルの送り込み方は、単純に「TI-CONNECT CE」へファイルをドラッグ&ドロップすれば良い。単純明快だ(^^)

 

実行方法は?

さて…送り込んだプログラムはどうやって実行するんだろう?(^^;;

もーね、このマシンの基本的な使い方が理解出来てないので、何をするにも試行錯誤がすごいw

いろいろと試してみたけれど、どうやら「prgm」ボタンを押すと見えるっぽい。

f:id:PocketGriffon:20201114234120j:plain

実行したいファイルにカーソルを合わせた状態で「enter」すれば実行出来る。

 

アセンブラを調達!

今回、とにかくやってみたいと思っているのは、eZ80のプログラミングを体験してみたいのだ!そのために最短距離を突っ走ってみたい!eZ80のバイナリコードにも興味は尽きないが、とにかく今は動かす事最優先w そうしないと横道にそれる!(^^;;

 

アセンブラは「spasmが使えそう」とTwitterで教えてもらっていた。真っ直ぐそのツールを探してみる!名前さえ分かっていればすぐに見つける事が出来た。

Releases · alberthdev/spasm-ng · GitHub

そしたら……最新版が使えない。

しかし1つ前のバージョンだったら使えるようだ。

Release SPASM-ng v0.5-beta.2 - Beta Release · alberthdev/spasm-ng · GitHub

最新版と何が違うのか分からないが、とにかくbeta.2で問題ない(謎の自信)。

 

展開してみたところ、こんなファイルが出てきた。

f:id:PocketGriffon:20201114235803j:plain

実はここでだいぶハマってしまった。

spasmを利用してアセンブルしようとすると「Reason: image not found」と怒られてしまうのだ。なんだろう…きっとこの手のマシンは画面に表示されるアイコン情報とかが欲しいんだろうか?どうやって指定するのかが分からない。helpも出ないしさっぱり分からん…。

 

…と思っていたのだけれども、どうやらspasm_noappsignを実行するのが良かったらしい。

これに気が付くまで数十分掛かってしまったw こういう、おそらくこの機種を使う時の常識?とかが分からずにハマる事の多い事(T-T)

もう少し本体に慣れる必要が…ホントはあるんだろうw

 

Hello Worldを作ってみる!

さっそく作ってみたいところだけど……先ほどのspasmのフォルダの中にincというフォルダがあった。その中身は↓こうなってたんだけど…

f:id:PocketGriffon:20201115000631j:plain

…↑ ti83plus.incはあった。……ti84用は??(T-T)

このヘッダファイルは独自で作るわけにはいかない。なぜならばハードに直結したファイルであり、これを書くためには膨大な調査が必要になるからだ(ToT)

安直に探してみるしかないな…と思い、それっぽいファイルを探す事に。

そしたらすぐに見つかった↓

84PCE:OS:Include File - WikiTI

おそらく、「ti84pce.inc」というファイル名で保存しておけば良いのだろう。

 

適当なHello World的なプログラムをネットで探し、それを自分の環境に合わせてみる。

ネットで探してきたのをほぼそのまま使っているので、リストを出すのは避けたいw

以下↓のコマンドでアセンブル

./spasm_noappsign -E sample.asm sample.8xp

 

TI-84 Plus CEは、eZ80のADL(Address Data Long)モードという、eZ80本来のパワーが出せるモードで動いてるらしい。アドレス指定が16bitではなく24bitになるらしい。どんなバイナリが出るのか興味津々だけど、今は細かい事を考えずに前に進めたい(^^;;

このADLモードに切り替えるのが、-Eオプションらしい。

f:id:PocketGriffon:20201115002054j:plain

よし、アセンブル出来た!

 

実行してみる!

今までの集大成だ!

まずはTI-CONNECT CEでファイルを転送する。

f:id:PocketGriffon:20201115002443j:plain

ファイルをTI CONNECT CEに放り込むと、こんなメニューが出てくるので、そのまま「SEND」すればファイルがコピーされる。

 

そして「prgm」ボタンを押すと、送り込んだファイルが見える。

f:id:PocketGriffon:20201115002718j:plainf:id:PocketGriffon:20201115002756j:plain

カーソルを実行したいファイルに合わせて「enter」、これで実行だ!

 

準備は整ったけれども…

とりあえず、上記の準備をしたことで、アセンブラでプログラムが組めるようになった。

なったけれども…何かを理解した状態ではないww

この先、eZ80の特徴を活かした何かを作ってみたいけれども…私はゲーム的な発想があまり無い人なので、画面にちょろっと表示させて終わってしまうのかな…(不明)

まぁ何かやってみたいとは思ってる(^-^)

 

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

HC-88でプログラミング! その14(完結)

f:id:PocketGriffon:20201114101055j:plain

HC-88でプログラミング、ついに完結!!

 

まずはTwitterに投稿した動画をご覧あれ!

 

HC-88らしからぬでっかい絵を表示しています。全体像が見られないので上にスクロールさせながら見せてる感じです。

なんか…たったそれだけなのに、すごーく苦労したww

せっかくなので苦労した部分をクローズアップしつつ、HC-88でご紹介出来てなかった部分を説明出来たら…と思う。

 

メモリが足りない!!

絵のデータは、せっかくなので画面全体にどどーんと表示させてみたい!

…となるとサイズは横480ドット、縦はメモリの許す限りって事にしてみよう。モノクロだしめちゃくちゃデッカい絵が入っちゃうかも?!

まずはメモリマップをちゃんと確認しておこう。

f:id:PocketGriffon:20201114004238j:plain

64KBのうち、0000h〜7D00h(31.25KB)の範囲は使用されていて使えない。

そして画像にあるyyyyHのアドレスを調べてみると、これはC006hと出た。計算が面倒なのでC000hとしよう。7D00h〜C000hまでがフリーエリアとなると4300h(16.75KB)がフリーエリア。

ん?だいぶフリーエリア狭くない??この範囲にメインプログラム、グラフィックデータ、そして通信プログラムが入る。

引き算していこう。まず通信プログラムは、プログラム本体+通信バッファ+スタック領域で約1KBが必要。BC00hから配置する事にして7D00h〜BC00hがフリーエリアで15.75KB。

そして通信プログラムはBASICで読み込ませるので、BASIC領域も必要。CLEAR文でギリギリのメモリサイズを探っていく。そうしたら&H9700ではダメ、&H9800ならばOKと出た。

9800h〜BC00hがフリーエリアで……9KB?え??

 

横480ドットだとすると60バイト、そうすると9KBで縦153ドットしかメモリに置けない…。

えーなんか想像よりもかなーり小さい絵になってしまいそう…。

ここに来てメインメモリに全てのグラフィックデータを置いておくのは諦めた。

だがしかし!HC-88には128KBの超巨大RAMドライブがあるじゃないか!!しかも読み込みも超高速!

絵のデータはRAMドライブへ入れておき、ロードしながら表示してやればいいのかな…。

ファイルへのアクセスは、ベースOSにCP/Mを採用しているHC-88ではとても簡単な話だ。OSの載っていないマシンでディスクをアクセスしようとしたら結構大変なのだ!

 

試しにコードを書いてみたところ…ディスクからの読み込みが…遅い(^^;; これじゃあZ80→6301のデータ通信よりも、RAMドライブ→Z80への転送の方がボトルネックになってしまい、意図した感じの動作にならない(^^; というわけでディスクから読みながら表示する案はボツ!

 

じゃあデータを圧縮してみたらどうだろうか?ランレングスかハフマンで小さくなるかなぁ…ハフマンは展開も時間掛かるから…などと考えつつデータを圧縮するテストをしてみたが…大して圧縮されない(^^;; これはもう選んだ絵が緻密すぎるのもカモ!

f:id:PocketGriffon:20201114095241j:plainf:id:PocketGriffon:20201114102642j:plain

結局、圧縮も思うように小さくならない事が分かり、いろいろと方向転換が必要に(T-T)

最終的に、絵のデータは256x256ドット、8KBに納めることにした。

 

プログラムも2段階ロード(データ→プログラム)をする事でもう少しメモリを絞り出してみたい。

1段階めでロードプログラムの配置、データのダウンロード、

2段階めで初期化プログラムのロード、プログラムのロード。

プログラムを試すたびにこの行程をするのは面倒だけど仕方ない。

最終的なメモリマップはこうしてみた。

 

9000h〜9BFFh 絵を表示するプログラム

9C00h〜BBFFh 絵のデータ(8KB)

BC00h〜BFFFh RS-232Cからのロードプログラム

 

ちなみにBASICを起動せずにCP/Mから実行する方法もあったが、スクリーンを初期化する方法が分からず……ああああああ!!!ここまで書いて気が付いた!エスケープシーケンスでモードセットすればいいんじゃないかと(T-T) しまった先に気づいていれば…orz

 

CP/Mからコマンドを起動する方法をとれば、もっと大きな絵を表示する事が出来そう。うーん…気づいてしまったらやりたくなるが…一旦キリにしたいw

ゲーム作ったりする時はCP/Mからのコマンド起動の方がメモリたくさん使えて良いかもね。

 

6301側のプログラム

この絵は、データはZ80側に置いてあり、スクロールする都度Z80→6301へ転送しながら表示させている。一度表示したデータは加工する事なく、スクロールと共に消えていく。

 

6301側のプログラムは、先日のサブシステム実験の時とほとんど変わらない。そもそも6301側に全てのデータを置けない時点で、プログラム以外は置かれない。

 

あらたに追加したプログラムは、上スクロールをする部分だけだ。汎用のメモリコピーではなく、1ドット上にスクロールするプログラムに特化した。少し面白いプログラムになったので見て欲しい。

f:id:PocketGriffon:20201114110334j:plain

これは「とある1ライン」を「1つ上のライン」にコピーするプログラムだ。

特徴はXレジスタ1本でメモリコピーをしているところだ。スクロールという処理の都合上、転送元と転送先の距離(アドレスの差)は分かっている。それを利用してXレジスタを足したり引いたり(マイナス値を加算)している。PUSH/POPするよりもこちらの方が高速だ。

6301のプログラミングをしていると、レジスタが少ない&アドレッシングが多い分、工夫のしがいがある。長いプログラムを組むのは大変だが、短めのプログラムだったら存分に楽しめる。

 

気になるのは…スクロール処理がそれなりに重いため、メインCPUからの割り込みを拾いきれるか…ここは心配しかないので、通信バッファを大きめ(64バイト)とした。

 

構想段階では拡大縮小とかラスタスクロールとかしてみようかなーとか思っていたが、途中でひどいバグに悩まされて気力が萎えたw 絵がスクロールしかないのはそのためだw

 

6301側にデータを格納し、小さなコマンドで実行をさせるタイプのモノ(ゲームなど)は6301の速度の実感する事が出来るだろう。思ったよりも速いよ!

ラリーXみたいなゲームだったら存分に発揮出来るかなぁ…。横スクロールするようなシューティングゲームは得意では無い…というか横8ドット単位のスクロールなら出来そうだけど…汗

 

一応の完結!

これにてHC-88でのプログラミングは一旦終了にしようと思う。

本体のメンテナンスから始まり、プログラム環境の構築、アセンブラの作成、最後のプログラミングと…結構遊んだ気がするw そしてHC-80/88の知識もだいーぶ増えた。

あとは…CP/Mからあれこれやってみたい気持ちが残ってしまったが、やり始めるとまた数週間没頭してしまいそうなので、今はやめておこうと思うw

 

さあ次は何で遊ぼうかな!

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

EPSON HC-45 (PX-4+)

このブログでは初お披露目となる、EPSONのHC-45。

f:id:PocketGriffon:20201110134215j:plain

しばらく前から手元にあったのだけれども、ACアダプタ繋げて電源入れても無反応だったため「とりあえず後回し!」と思ってそのまま放置していたw

HC-88の事も少し落ち着いてきたので、詳しく見てみようかな…と。

 

HC-45……特に「どうしてもHC-45が欲しい!!」と思って手に入れたわけではない。なんとなく流れていくのを見ていて「え?HC?HC-45?45って何?」くらいの感覚で手をだしてしまった。おかげで前知識がゼロの状態からのスタート。そもそもHC-40とHC-45、何が違うのかすら理解してないw

 

まずとっても気になる液晶の見た目。

f:id:PocketGriffon:20201110134715j:plainf:id:PocketGriffon:20201110134745j:plain

もうね、ビネガーシンドロームを修理して偏光板を取り替えた液晶にそっくり!

これがノーマルですって言われても騙されないよオジサンは!!

でもネットで「EPSON HC-45」で検索してみると、やっぱり同じ色してる。

へー、こんな色の液晶を使う事もあるのね…。

 

HC-45自体、昔のOh!HCなどを見ても型番として出て来ない。HC-40/41となっていて、45は存在すら明かされていないのだ。一体、どこで使われていたのかな…。

ちなみにエプソンの消耗品販売のページではHC-45の型番を見る事が出来る。いまだにプリンターのインクリボンを扱っているらしい。なるほど…。

 

 

で、見た目はそっくりなんだけど、ちょこちょこ違いがあるなぁ…って感じていた。

まず裏面のROMを装着する窓から見えるROMソケット。

これの数が違う。

f:id:PocketGriffon:20201110135954j:plain

↑これはHC-40のソケット。ROMが三つ見えているけれども、いわゆるROMカプセルのソケットは左側の2つ。今はAREA V2.0(何モノ?)とBASICとが刺さっている。

 

f:id:PocketGriffon:20201110140157j:plain

↑そしてこちらがHC-45のソケット。ROMカプセルが3つある。一番右側にある「PBAK1」と書かれたROMにBASICが入っている。

もっと気になるのが、ディップスイッチの位置とかサブCPUのリセットスイッチ(赤いヤツ)の位置が全く違う。ということは、HC-40とHC-45では基板構成がだいーぶ違うって事?そんな面倒な事してまで作られたHC-45って…ナニモノ?!

 

メンテナンスしようかな…と思い、分解してみたら「見たことあるのに見たこと無い感」がすごいして、思わずHC-40と比べてみてしまった。

f:id:PocketGriffon:20201110141052j:plain

↑こちらがHC-40を分解した時の写真。そうそう、こんな感じの基板だった!

 

f:id:PocketGriffon:20201110141149j:plain

↑こちらが今回の主役、HC-45の基板。ほら!なんとなく似てるけど別物感あるでしょ!

こりゃ違和感感じるはずだ。

そして真っ先に目がいったのはこちら。

f:id:PocketGriffon:20201110141349j:plain

ボードに印刷された「PINE II」のマーク!

海外のドキュメントを読みまく行っていた時、たまに「PINE II」って言葉が出てきていて、なんだこりゃー別機種があるのかなーなんて思っていた!なるほど、HC-45の事だったのか!

そしてもうひとつ気が付いた事、HC-40は海外だと「PX-4」という名前なんだけど、HC-45は「PX-4+」と呼ばれているらしい。なるほど、この型番も見覚えがある!

アタマの中でいろんなモノが繋がったw

 

さて…メンテナンスしようとマジマジと基板を見てみたけれども…コンデンサもとても綺麗な状態だし、バッテリーの液漏れも見られない。

何で電源入らないんだろ、これ…。

…そう思い、何気に乾電池を入れてスイッチおーん。

f:id:PocketGriffon:20201110142649j:plain

…何事もなかったのごとく起動www

え?もしかしてACアダプタでの起動だけがダメって感じ??

じゃあバッテリー取り付けてあげたら動くのかしらん…。

うーん…とりあえず起動しない問題はヨシとしちゃおう(^^;;

 

無事に起動してしまったHC-45、そもそもHC-40との違いを感じる事は少ないだろうと思いつつも触ってみる。

まずは起動メニュー。

f:id:PocketGriffon:20201110142935j:plain

何かのROMが挿さっていたので、それのプログラムがCドライブのファイルとして見えてるみたい。BASICも起動出来るから、独自でROM作って入れてみたいなぁ…。

特にHC-40と変わりは無く。

次にBASIC。

f:id:PocketGriffon:20201110143152j:plain

f:id:PocketGriffon:20201110143208j:plain

うん、特にHC-40と変わらん。一瞬、フリーメモリのサイズが違うかも?って思ったけれども、これもHC-40と全く同じバイト数だった。

ということは…HC-45 = HC-40??

ROMソケットが1つ追加された構成って事かも??

 

そういえばこの液晶、表示がパキっとして見やすくていいね!しばらくHC-88を触っていたせいか、フォントの大きさも相まってとても見やすい。

 

あ、そういやSYSTEMメニューも見ておこうかな。

f:id:PocketGriffon:20201110143422j:plain

これを見て初めてギョッとなる。RAM DISKのサイズ…128KBってなってる!

実は初期起動した時にRAM DISKのサイズを聞かれないのは変だなーって思っていたのだけれども、なぜかすでにあるって事?? いやいや、外部ハード付いてないよ?

半信半疑でBASICへ行き、適当なプログラムを作って「SAVE "TEST.BAS"」をしてみる。ちゃんとセーブされた…FILESしてもファイルがあるって言ってる…。

 

もう1回分解した時の写真を見てみる。

メインメモリは64KB載っているはずだ。それに加えて128KBものRAMが載ってるということは、それなりのチップ数なんじゃないかと思う。見たら分かるはずだ!

f:id:PocketGriffon:20201110141149j:plain

……うーんと???

ははぁ…もしかしてこういうことか??

 

f:id:PocketGriffon:20201110144136j:plain

この右側にある2つのチップ、これが1つ32KBで合計64KB。

 

f:id:PocketGriffon:20201110144221j:plain

そしてこっちにある左側の2つと、真ん中よりも少し上にある2つの合計4つで128KB。

…って事??

チップの数すくなっ!この前、HC-88の拡張RAMユニットのメモリは、チップを8つ増設して64KBだったのに、こちらは2つで64KB。半導体の進化を垣間見た気がするw

 

そういえば海外の資料に「PX-4+はメモリが多く積まれてる」って書いてあった。メモリはメモリでもRAM DISKの事だったのかも!

 

え!ということは、うちにあるHC-40(RAMドライブ64KB)よりも、ノーマルHC-45の方がRAM DISKがたくさん使えるって事じゃんw それってすごいことカモ知れないw

f:id:PocketGriffon:20201110144754j:plain

※↑RAMドライブとはこの拡張ユニットの事

 

気になるのは、HC-40の拡張RAMユニットには、ドライブそのものにバッテリーが入っているので、本体の電源が切れても内容は保持されるけれども、HC-45の方はRAM DISKの寿命がメインバッテリーに直結されてる。電池切れ=ファイルの消失って事だ。

 

…HC-45にRAMドライブ載せたら最強なんじゃね??

さらにROMカプセルに独自のプログラム載せて開発環境整えたら、さらに面白い事が出来そう。やば!楽しそうな事が頭に広がってきたw

 

おっさんの妄想が広がったところでHC-45のお話は終了w

HC-40共々、またどこかで使えたらいいなーとは思ってます!

 

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

HC-88でプログラミング! その13

f:id:PocketGriffon:20201109180730j:plain

先日のブログに引き続き、サブシステム乗っ取り計画!

サブシステムを乗っ取った後の事をあれこれ構想はしたけれども、

作ったモノは超シンプルなモノとなりました。

Z80(メイン)と高速にやりとりが出来る通信システム

・受信データのバッファリング

・プリミティブなコマンドのみ用意

 

高速な通信システム

これは主に6301側のプログラムの話。ものすごく割り切った作りにした。

なんと…受け取ったデータは全て有効なモノとし、エラーチェックや整合性チェックは行わない事にした!こんなの商用プログラムでやったらユーザーからカミナリが落ちるレベルだと思う!でも趣味だし自分しか使わないしいいじゃーんって事で手抜きしたw

 

実際にデータを受け取れなくなる可能性がある(後で説明するバッファオーバーとか)けれども、そこは「Z80側が上手に管理する」という事で回避する仕組みにした。おかげで6301側は超シンプル。シンプルでかつ速度も速い…はずw

 

実際のデータ受信はIRQ割り込みで行う。

 IRQの割り込みベクタ($FFF8,9)はRAMのアドレスを指しており、そこのRAM(Hook)を書き替えることで独自の割り込み処理を書くことが出来る。

以下、IRQのプログラム。

f:id:PocketGriffon:20201109181832j:plain

受け取ったデータをメモリに保存して終了だw

これ以上シンプルに出来るかな…出来るのかな??

そもそも6301は、割り込みが掛かるとレジスタの退避はCPUが勝手に行ってくれる。便利は便利なのだが割り込みそのものが重くなってしまう。6809などはそうならないようにFIRQという高速割り込みが用意されているのだが、残念ながら6301には無いようだ。

今このテキストを書きながら思ったけど、最後のcliは必要ないかも。rtiでレジスタが復帰するのでIフラグも戻る気がする…。

 

本来のIRQ処理は、割り込み処理の内部でブレイクやストップといったSLAVEコマンドの処理を行っていて、シーケンスの制御も入り複雑な構造をしている。

 

受信データのバッファリング

受信バッファの必要性というのは通信やってると当たり前だと思うんだけど、なぜか本来のHC-88にはバッファというものが存在しない。正確にはIRQで受け取ったデータを保存しておく1バイトの保管場所(バッファ?)があるのだが、それでおしまい。

受信したデータを処理する前に次のデータが送られてきてしまった時には「Communication Error(受信状態でない時にコマンドを受け取った)」になってしまい、再送しなければならない。

通常の使い方をしている限りは十分な時間待ち(処理が終わるまで次の事をしない等)をしているため、コマンドが不正に送られてしまうことはない。そしてZ80側は、律儀に6301側がちゃんと処理したのかの結果を待つ。これがZ80←→6301通信の遅い原因のひとつだ。

要はちゃんと並列に動いてないのだ。

 

今回のシステムでは、ちゃんと受信バッファを設けた。バッファサイズは16バイトと雀の涙ほどしかないか、それでもちゃんと機能してる(^^;

6301側のプログラムは、1バイトのデータが必要になった時にバッファにあればバッファから、無ければZ80側からの通信を待つ。

バッファのサイズを増やす事は可能だけど、タダでさえ少ない6301側のメモリだから、あんまり無駄に大きくしたくない。

この辺りは作るモノによってサイズを変化させたらいいか…と思い、突き詰めていない。

 

プリミティブなコマンドのみ用意

当初、ゲームでもツールでもアレでもコレでも使えるようにゴテゴテと機能を付けたそうと思っていたが、6301側の遅さやメモリの少なさを考慮していった結果、まるでミニマリストのような考え方で少なくなっていった。

結果的に残ったのは2つのみ。

・メモリ転送

・プログラム実行

足りないプログラムについては、後から追加していけばいいや的な発想。

例えば…ゲームのタイトル画面を表示するためだけのプログラムを6301側へ常駐させるワケにはいかないので、必要な時だけ送り込むとか(作るとは言ってないですよ)、圧縮したランレングスデータの展開ルーチンを、必要な時だけ送り込むとか(作らないってば)。

 

性能比較

ではノーマルシステムとの速度比較をやってみようと思う。

…と思ったんだけど、なぜかノーマルシステム版をツイートしようとしても「ツイートの送信に失敗しました」となってしまう…。後ほど、うまくアップ出来たら更新しようと思う。

 

やっている事は、VRAMのテキストエリアに80x8=640バイトのデータを、Z80→6301へ転送しているだけだ。

 

ノーマルシステムではデータ書き込みコマンド(CMD=$01)で送り込んでいるが、コマンドの仕様上、1バイトずつの転送となってしまっている。このコマンドでは、コマンド番号(1バイト)アドレス(2バイト)、データ(1バイト)、書き込むデータのオペレーション(ANDとかORとか。1バイト)の合計5バイト送る必要があり、かつ6301からの返事を待つ。おかげで640バイトを転送しようとすると5倍の3200バイトの転送が発生する。

 

本システムではコマンドの仕様で一度に256バイトまでしか送り込めない。そのため、256+256+128バイトとして3回コマンドを発行している。ヘッダ4バイト(コマンド番号、アドレス、データ数)とデータを送っているので、652バイトの転送量だ。

 

このように転送するサイズが約5倍違うので、そこは差し引いて見てもらうのが良いが、実際には5倍以上の速度差がある。これは通信手順が簡略化されたのと、バッファリングの効果が大きいんだと思われる。

 

 

※あとでここに、投稿出来たであろうノーマル版のツイートを貼り付けておきます。

 

開発をしてみて…

Z80と6301(6800)を同時に使う事は、意外にも混乱を招きそうで平気そうで…それでいて気がつくと「あ…」って事は何度もあったw

まずニーモニックが混ざるw

RET(Z80) / RTS(6301)とか、JR NZ,(Z80) / BNE(6301)とかw イミディエイトの#も迷ってみたり、16進数の$だったり。でも不思議とコードを書いてる最中には集中しているせいか、間違えないもんだなぁ…と思った。レジスタの使い方とか考えながらコーディングしてたらそりゃそうか(^^;;

 

そうだ、アセンブラにひとつ便利機能を追加してみたんだった。

f:id:PocketGriffon:20201109202239j:plain

アセンブルした時のシンボル情報を、逆アセンブラで食わせられるようにしたのだ。おかげで逆アセンブルした時にラベル情報が見られるようになり、どのアドレスから関数が始まっているのかが一目瞭然となった。特にテーブルジャンプなどの(逆アセンブラ単体での)解析が難しいモノには効果絶大で、見づらい逆アセンブルリストが一気に改善された。

これは自分の中ではかなりのヒット!(^^)

 

このあとは……

さて、HC-80/88でやろうと思っていた事は、これで一通り終わった!

作ったシステムでゲームの1本でも作ってみたいとは思うモノの、残念ながら私はドット絵が描ける人ではなく、どうあっても綺麗なゲームは作れないw 誰か描いてくれる人&ゲームデザインを考えてくれる人がいたら頑張りたいとは思うけれども……(誰か求む)。

せっかくだから世界でHC-80/PX-8を使ってる人たちが驚くような、何かを作ってみたいものだ(遠い目

 

 

この先は…何をやろうかな!V20に戻るも由、もう少し寄り道をしてみるも由。

気の向くままあれこれ試してみたいってのがホンネ!

もしかしたらHC-80/88でもうちょっとだけ何か作るかも??

 

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