ミューゼオに登録してみた!

f:id:PocketGriffon:20210103141935j:plain

一体、どのくらいコンピュータ持ってるんですか?

それは知り合いからの何気ない一言から始まった。

さぁ?…としか答えられなかったが、ざっくりとした数すら言えない自分がいた。

だって…どれだけ持ってるかなんて即答出来ます??(-_-;

ずぼらな私には無理だなぁ…。

 

そんなことを思いつつも、気が付けば同じ機種同じ書籍が並んでしまうのも事実。

さすがに同じ趣味を40年以上も続けていたらそういう事もあるだろう…。

どこかにデータベース作れたらいいのになぁ…。

できたら並べて閲覧出来たら嬉しいし、それを他の人にも見せられたら説明しなくて済むから楽ちんだな…そんな便利なもの作れたらいいなー…

なんて考えてました。

 

そしたら…やっぱりあるんですね、そういうサイトがw

こういうものは別に自作したい気持ちは無いので、あるんだったら利用したい!

というわけで、ミューゼオに登録してみた!!

 

 

何を登録する?

今回の場合は、人に見せびらかしたいというよりは、自分の管理用に近い。

そういう意味では持っているモノを全て登録したいところだが…まぁそれは不可能。

実は…今居る場所だけではなく、他にも2カ所にわけていろんなものが置かれている。

特に書籍などはココにあるのはホンの一部で、別の場所に1000冊以上ある…。

 

となると、もはや全登録は諦め、主要なものだけを登録する事になるのは仕方ない!

回りにあるパソコン類、周辺機器類を登録しよう。

デスクトップは写真撮るのが大変なので、今回は登録しない!

あと書籍はモノによってはコレクションというよりは資料として手元にあるものもあるので、それはマニアな皆さんが喜びそうなものだけ登録していく事にした。

 

寝ても覚めても登録作業が続く…

そして実際の登録作業を始めてみた。

写真を撮り、スペックを調べ、テキストは後回しで良いから登録だけをちまちまと進める。

ようやく今現在で登録アイテム数が140を超えたところだ。

周辺機器などを探し始めると大事になってしまうので、出てきた時点で追加対応。

書籍はまだこれから…。

 

うん、これはいつになったら終わるのか(T-T)

 

とりあえず現時点で公開してみます!

間違い等あったら教えてもらえると助かります!

あとレア度は超適当に入れてますので、主観と違っても放置お願いしますw

テキストはこれから時間を掛けてじっくり書いていきます!

 

さあ、これ書き終わったら書籍の準備始めるよ!

ではまたあとで!(^-^)ノ

 

2020年を振り返って

f:id:PocketGriffon:20201231150613j:plain

年末にアレやろうコレやろうと思っていた事が、熱出して全滅(T-T)

持病のせいで、ちょっと無理するとすぐに40度近い熱を出してしまう。前回はそれで4週間近く入院するハメになったけど、今回は絶対に入院なんてしないぞ…的な根性でやり過ごした!

どうせ入院したって「何もするな絶対動くな」と言われてなーんにも出来ないんだから(T-T)

おかげさまでだいぶ熱は下がってきました!

 

というわけで、2020年の総括をしてみたいと思う。

これまでは何かレトロ系をやったとしても発表の場がなかったし、自慢すら出来なかった。それがTwitter、ブログというものをやり始めたおかげで「ネタが欲しい」と思うようになり、積極的にいろんな事にチャレンジ出来るようになったと思う。

 

特にソフトウェアに関しては、守秘義務の非常に強い仕事を生業にしてきた事もあり、一部ではあってもソースを見せる事は言語道断だと思っていた。ソース自体は仕事で作ったワケではないけれども、書き方とかコメントとか…そういう部分で素性がバレる事が凄く怖いw

というわけで、ソースを出すのはこれからも躊躇するw 

 

あれこれやりました!

Twitterとここのブログを見て、この1年でやってきた事を振り返ってみたい。

 

■修理関連
PC-8801MCのCD-ROM修理、ギアの交換
PCエンジンGT修理
PC-1600KのフロッピードライブCE-1600Fの修理
CE-1600Pのバッテリー作る
PC-G850Sの液晶ライン抜け修理
PC-E500 電源入らなかったのを修理
TI-92 電源が入らなかったのを修理
PC-2001電源が入らなかったのを修理
S1にRS-232C端子を増設
HC-40修理、コンデンサ交換、液晶コンデンサ交換
PC-9801USバッテリー交換
HC-40通信アダプタ作成、バッテリー作成
PC-8201 起動しないマシンを修理、ROM焼き
GATEWAY2000 HANKBOOK

 

■液晶関連
ゲームボーイの偏光板交換
ワンダースワン偏光板交換
ゲームボーイアドバンス液晶をIPSに交換
PC-1211液晶交換
PC-1251液晶交換
PC-E500偏光板交換
FX-890P偏光板交換
PC-1255液晶交換
PS-1000偏光板交換
謎パー Mini Note ME-386偏光板交換

 

■プログラ無関連
PC-1600Kプログラミング
PC-8201プログラミング
PD-7000解析、プログラミング
HP Omnibook425 修理、活用
V20ボード
HC-88メンテ、プログラミング
TI-84 Plus CE
PC-1350プログラミング

 

■その他
国会図書館でいくつの書籍を複写
PC-3000入手
PC-E550ホワイトニング
PC-E550、S1ホワイトニング
はてなブログを始める

 

……うん、無節操!(^^;;

何かポリシーがあって…とか何かを大切にしたいから…みたいな感じがしないのは何故だろう(T_T) 目移りが激しいなー。

 

この中で心に残っているモノをいくつかピックアップして書いてみたい。

 

謎の謎パーPD-7000

自分の中でイチバン楽しくあれこれ出来たのはPD-7000かも知れない!情報も何もまーったく無い状態からの手探り解析。最初は起動するだけで何も出来なかったけれども、最後にはMS-DOSコマンドプロンプトに降りて、独自のプログラムを作るなど、謎パーの極みだと思う!

 

この機種の前後で偏光板の交換をやりまくっていて、PD-7000の頃には慣れた頃だった。でも初めて触るマシンをバラしてあれこれするのは怖いね(T-T)

 

そして協力者がいたのにも助かりました。特にソフト面では助けて頂いたので感謝しか無いです!そうでなかったらPD-7000にプログラム送り込むなんて絶対に出来なかったと思う。

 

実はこのPD-7000、また別のネタがあるのですよ…これは来年以降に取り組んでみます!

 

MBC-V20ボード

すんごい中途半端に取り組んでしまって、またいつか復活しようと思ってるモノ。MS-DOSの移植をするぜぃと意気込んだのは良いけれども、どーしてもV20エミュレータのバグが取り切れず、そのまま私自身が入院→別のマシンに…と流れてしまった。やる気を無くしたワケでもなんでもないので、この先もやると思う(^^)

 

これほどまで素の状態でV20CPUが触れるマシン構成は他に見ない。実はこのV20ボードでMS-DOSを…の先に見据えた、別の企画があるのだ。だからどうしてもV20でMS-DOSを動かしたいって気持ちが強い。2021年中にチャレンジ出来たらいいなー!

 

SHARP PC-1350

つい先日まで取り組んでいたけれども、自分の中では挫折感がすごいw SC61860を克服した感が全くなくて、これもまたいつかチャレンジしてみたいな…と思う。今回は出来る限りマクロなどを使わずに素の状態で書くことにこだわったけれども、次にチャレンジする時には書きやすさを重視して何か作りたいかな…。アセンブラの拡張なのかコンパイラなのか。

 

マシン語コードの中で「自動的にインクリメントしちゃう」などの動作が意外に曲者。暗記出来ていれば良いんだけど、ふとした事で忘れてしまい余計なコードを入れちゃう。こういう状況でマクロ化などはバグの温床になる可能性があるため踏み切れなかった。

次回はそうも言ってられないかも…

 

各種アセンブラエミュレータ

今までも仕事に趣味に作る事が多かった分野だけれども、これほどまで楽しく作ったことは無かったかも。ブログの更新日時を見ても、SC61860のエミュレータは約2日で開発してるからね…。ブログにも書いたけど「プログラマは楽するために苦労する」というのが素で感じられる案件かもw

 

「既存のものを使えばいーじゃん」というご意見も多々あるかと思うけど、そこも含めて自分で楽しみたいのが私のレトロ感だ(^^) 苦労して動かした時の感動は格別なモノよ(^^)ノ

この先もこの手のツールは開発していくだろうなーと思う。

 

2021年は…

来年以降、あんまりやらないかも…と思っているのが修理関連。

私は生粋のソフト屋さんであり、ハードの知識は全くない。何かの理論に基づいて修理メンテナンスしているわけではなくて、見よう見まねで修理の真似事をやってるに過ぎない。それでもやはりプロが修理したモノにかなうわけがないので、この先は自分で修理しなくても良いものを見つけて触って行けたらな…と思う(^^)

 

とは言うモノの、すでに修理前提で手元にあるマシンも複数あるので(X68000、PC88VA、MSX TurboR、PC-1600K…その他たくさん!)、これらは自分の力の範囲内でなんとかしていきたい(^^;

 

仕事柄、しばらーくプログラムから離れた業務をしていたけれども、やっぱりプログラミングは楽しい!それに気づかせてくれたこの1年はとても貴重だったと思う。

来年も趣味のプログラミングは続けていきたいと思う!またTwitterにブログに書いていこうと思うので、何かあったらご意見ご感想いただけると嬉しいです。

 

ではまた来年!(^-^)ノ

SHARP PC-1600K

f:id:PocketGriffon:20201227230511j:plain

年末年始なので、自分のイチバンお気に入りマシンを使おうかな…って事で、今回はSHARPのポケットコンピュータPC-1600Kのご紹介!

 

まだこのブログを始める前、2020年1月頃にTwitter上でPC-1600Kの開発をあれこれ書いていた。一通りの開発環境を整えて遊んだつもりなので、今から何かを開発するかどうかは分からないが…何か作りたいものあるかな(^^;;

今回はどちらかと言えば、お気に入りのPC-1600K環境をご披露って感じのブログだ!

おっさんの自慢ブログだと思ってくれて構わないw

 

PC-1600K 本体

CPUにZ80を積んだポケコンというかパソコンというか、本格的なマシン。

PC-1350よろしく、PORTABLE COMPUTER、略してポタコンだ!

f:id:PocketGriffon:20201227231720j:plain

本体はこんな感じのボディだ。

画面は156x32ドットとなっていて、ANK、漢字、グラフィックスが表示可能。

f:id:PocketGriffon:20201227232405j:plain

漢字を表示させると縦が2行モードになる。

ウリの漢字機能だけど、実は私はあんまり使ったことが無い(^^;;

 

大きさについて、この前まで使っていたPC-1350と比べてみた。

f:id:PocketGriffon:20201227232618j:plain

一回り違うって感じ。ちなみに厚みも一回り違う。

重さはPC-1350が273gなのに対して、PC-1600Kは428gだった(ウチの構成では)。

まぁこれはボタン電池で動くPC-1350と、単3電池4本入るPC-1600Kと比較しては酷かも知れない。しかしその分のCPUパワーはある。

 

f:id:PocketGriffon:20201227233349j:plain

本体裏にはオプションのメモリモジュールが2つ付けられるようになっている。良く見かけるのは1つが増設メモリ、もう1つが文節変換辞書ROMという構成だろう。

私も最初のうちはそうしていたが、プログラム開発に漢字変換は必要ない…という事に気づき、途中から増設メモリ(CE-1600M)を2つ付ける構成に変えた。

CE-1600Mにはバックアップ電池が入っていて、本体から取り外しても内容を覚えていられる。それを利用して、あっちのPC-1600Kで作ったデータを、こっちのPC-1600Kに持ってくる…などという芸当が出来る…らしい。やったことないけど(^^;;

f:id:PocketGriffon:20201227234545j:plain

この構成でMEM(フリーメモリ表示)をすると、ポケコンらしからぬ数字が返ってきて驚く。

CPUがZ80なのに64KB以上を返してくるのがロマンだなーw

 

f:id:PocketGriffon:20201227233724j:plain

ちなみに文節変換辞書ROMはこんな形をしている。

ROMということでバックアップ電池は入っていない。

 

周辺機器など

お気に入りのマシン…という事で、周辺機器もある程度は持っている。

f:id:PocketGriffon:20201227235939j:plain

CE-1600P(プリンタ)とCE-1600F(フロッピーディスクドライブ)の構成。

この構成は良く見ると思う。

手に入れた時、CE-1600Fはモータは回るけどアクセスは出来なかった(T-T) 分解して注油しつつベルトを交換したところ、無事にアクセスするようになった。

アクセスする前に「ごろっごろっ」って感じの音がするのが特徴だ。ウチだけ??

f:id:PocketGriffon:20201228001121j:plain

ただ、メディアが簡単には手に入らない。もう売られてないんじゃないかな…。

2.5インチ、容量は64KBだった気がする。

頑張ってディスクを直してみたけれども、その後はあんまり使わなかった。

f:id:PocketGriffon:20201228001647j:plain

昔からの流れで(PC-E500シリーズのCE-140Fと共通の)メディアはいっぱい持ってるんだけど、完全に宝のもちぐされ状態。もったいない(T-T)

 

それもこれも、こっち↓の方が使いやすく感じちゃってるから。

f:id:PocketGriffon:20201228001851j:plain

そう、お得意のRS-232Cケーブル。

これでホストマシンにデータを残す方が便利に感じちゃってるw

速度は多少遅いけれども、利便性にかなうモノは無いって感じ。

私はレトロを愛するけれども、現代の機器で便利に使いたい派なのだ(^^)

 

書籍関連

私ですから、やっぱりレトロを使う目的はプログラミング。

PC-1600Kでもプログラミングしてましたよ(^^)

CPUはZ80なので、アセンブラもCコンパイラも使い放題!開発環境としてはHC-40並みに使いやすかった!

でも資料の無さがネック。これは他のレトロにも言えるんだけど、マイナーダイスキーな私には試練というかご褒美というか汗 いやご褒美も度が過ぎると大変なのですが(T-T)

 

f:id:PocketGriffon:20201228002744j:plain

まずは付属のマニュアル。箱にはこの2冊しか入ってなかったと思うけど、もしかしたら別にもある? BASICのリファレンスって無いとどうにもならない場合が多々あるので、やっぱりこれらは手元に必要ですね(HC-40や80では苦労しまくり)。

 

f:id:PocketGriffon:20201228003501j:plainf:id:PocketGriffon:20201228003537j:plain

この2冊はBASICのサンプルを見る時にたまーに使っている。あんまり深い情報が載っているものではないので、あくまでも参考程度に手元においてある。徹底活用法の方はRS-232Cでの通信などが詳しく書いてあったので助かった(^^)

 

f:id:PocketGriffon:20201228003742j:plain

そしてこの本。内容的には内部解析書だ。

これを読みたいがために、国会図書館まで複写サービスを受けに行った。

 

アセンブラで何か作ろうとしたら、どうしても必要って事がたくさん書かれている。IOCSとかI/Oとかメモリマップとかバンク切り替えとか。

今オークションに出たら、おそらく本体以上の価格になるのではないかと思う書籍だ(^^;;

 

前回、PC-1600Kでプログラミングをした時には、この書籍は手元になく、複写サービスの断片的な情報を頼りにプログラムをしてた。この先、これを見ながらもう少し深いプログラムを楽しめるかなぁ…なんて思っている。

 

おまけ

ただでさえ収集癖の強い私なので、長い年月の間にため込んだものがたくさんある。

本体など片手では足りないほどあるし、CE-1600PやCE-1600Fは何台あるのか数えた事もないw 基本はメンテナンスをして予備機として残しておくつもりだ(一部は手放すかも…)。

f:id:PocketGriffon:20201228004752j:plainf:id:PocketGriffon:20201228004816j:plainf:id:PocketGriffon:20201228004839j:plain

 

さて、何か作ってみようかな…何作ろうかな。

久しぶりのZ80にちょっとドキドキしてる(^^)

…あ、でもHC-88もHC-40もZ80だ…しまったw

 

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

SHARP PC-1350でプログラミング その9

f:id:PocketGriffon:20201226195105j:plain

SHARP PC-1350でプログラミング 完結編!

今回のが最後…の予定です!

 

あの後、何かまとまったモノを作ってみたいと思い、それっぽいゲームを作り始めたのだが…画面が出たところで猛烈に飽きてしまったw

過去に(趣味で)作ったことがあるゲームという事もあり、特に目新しい技術があるわけでもなかったので、先が見えてしまった事が大きいのかも知れない。

 

ちなみに画面はこんな感じ。

f:id:PocketGriffon:20201226195812p:plain

ゲーム画面が横になっていて見づらいけれども、テト○スっぽいゲームだ。

これは「PB-1000 Software Library」というページにあった「BLOCKS」を参考にさせて頂いた。実はこの作者とは30年くらい前からの知り合いだったりする(^-^)

PB-1000 Software Library

 

6x4ドットのフォントを表示しているけれども、VRAMが縦8ドット構成になっているため、縦方向に4ドットのフォントを表示するのはちょっとだけ頑張らねばならない。デバッガの画面でこれだけ読みづらいという事は、実機では読めないかもしれない…と今思ったw

 

SC61860の感想

「PC-1350を使ってみるぜ」ってところから始まった一連のプログラム作業。アセンブラ、逆アセンブラエミュレータ、デバッガとフルコースで作ってしまった。今の時代でいえば、世界でイチバン開発環境が整っているかも知れない!?

 

一度もプログラムした事がなかったSC61860だったが、この約1ヶ月間のトライによって習得が出来たか…と言われれば「微妙」と言わざるを得ない。

今でも何か作る際にはニーモニック表が無いと1行も書けない。機能は理解できていても、それが命令として覚えられないのだ(^^;

 

コードが冗長になってしまう点も厳しかった。Xレジスタに代入するだけなのに何行も書かねばならないなど、目的に到達するまでの距離が短く出来るイメージが沸かない。アセンブラにマクロ機能を入れようと思ったが、結局コードサイズは変わらないのか…と思い、辞めてしまった。

 

メモリアクセスについても、やりたいことは明確なのに、どの命令を組み合わせれば実現出来るのか…というパズルが常につきまとい、どうにもやりたい事がぱっと書けない。

レジスタが豊富にあるのに使い切れないというか、結局は内部RAMなのでそっちをアクセスする事になる。内部RAMはPレジスタで無ければアドレッシング出来ないため、頻繁にPレジスタを変更するコードが入る…など、ストレスが溜まりまくった。

 

やはり若い頃から思っていた「このCPUは大変だぞ」の感覚はその通りだった(T-T)

このままPC-E500系で使われているSC62015へステップアップしていこうと考えていたが、現状では「ちょっと待った」という気持ちが強い。

そのくらいダメージがでかいのだ(^^;

少し落ち着いて別のマシンを楽しみ、ある程度経ったらまたSC62015へのチャレンジはしてみたい。

 

とりあえずSC61860へのチャレンジはここでキリにする!

また次の機会(PC-1360Kで挑戦とか)があれば頑張ってみたい(^^)

その時には今回作ったアセンブラエミュレータが役に立つはずだ。

 

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

SHARP PC-1350でプログラミング その8

f:id:PocketGriffon:20201225003610j:plain

今回は、グラフィックス文字を使ってHello Worldを表示させてみた!

割と丁寧にプログラミングしてみたので、成果をご披露してみたい。

いつまでHello Worldネタで引っ張るんだw

 

グラフィックスを表示させてみたい!

PC-1350で画面にグラフィックス…というか自由な位置にドットを打つ方法は比較的簡単だ。メモリにVRAMが出ているので、そこのアドレスにデータを書き込んでやれば良い。

面倒なのは、そのアドレスが連続していないって事だ(^-^;;

 

VRAMが連続していないマシンは、このブログにもいくつか出てきている。

代表的なのはPC-8201だろう。あのマシンはVRAMが外に出ていない上にアクセスが複雑だ。

PC-1350は連続していないけれどもアクセスは比較的簡単な方だ。

 

こういうパターンの場合は、通常のプログラミングがし易いようにアドレスが連続になっている仮想的なVRAMを用意する。主プログラムはそこに書き込むようにして作り込み、VRAMへ転送する時に専用ルーチンが頑張れば良い。

 

問題はメモリをコピーする速度だなぁ…と思い、いくつかのテストをしてみた。

そしたら意外な結果が……。

仮想VRAM→VRAMへAレジスタを介して直接コピー(ixl,iys)するよりも、一旦内部RAMへコピーした後、VRAMへコピーする方(mvwd,exwd)が高速だという事が分かった。これはブロック転送が使える使えないの違いが大きい。速度を測ったところ、約2倍高速だった。

これもデバッガで処理速度を計測するコマンドを追加したおかげで、即座に調べる事が出来るようになった。デバッガさまさまだ(^^)

 

組み上げてみて…

結局、作ったファンクションと言えば…

・仮想VRAMクリア

・仮想VRAM→VRAM転送

・仮想VRAMへ1文字表示

・文字列表示

この4つだった。

行数にして約100行のこじんまりとした関数群だけで動かす事が出来た。

f:id:PocketGriffon:20201225010544j:plain

f:id:PocketGriffon:20201225010723p:plain

ちなみに…このフォントは、若い頃にPC-E200用に作っていたゲームで使われたモノだ。
「はるみのゲームライブラリ」という書籍を見て、フォントに凝ってみるのは大事かも…と思い、方眼用紙に絵を描いてちまちまとデータ化した。

幸い、PC-E200とPC-1350はビットデータの持ち方が同じだったため、テキストファイルをコンバートするだけで持ってくる事が出来た。

 

このPC-E200で作っていたゲームは、ポケコンジャーナルという雑誌に投稿するつもりで作っていた。キャラクタが4ドット単位で動くものだったが、ゲーム本体が出来たところで飽きてしまいお蔵入りとなったw 私はこういうのがとても多い性格だ(T-T)

 

さてさて…

 100行程度とは言え、何も知らない状態からPC-1350でプログラムする事が出来た。うっすらとだがSC61860でのプログラミングも見えてきた気がする。

やはり1から環境を作り上げられたのは、気持ち的に大きかった。環境に不満があれば自分で直す事が出来るというのは果てしなく大きい。途中、何度となくPC-1350を拡張したくなったが(乗算命令が欲しいなぁ…とかw)、そういうのは無しで最後まで行けたw

もう少し大きなプログラムを作ってみたい気持ちもあるが、絵が描けないという大問題がどうしても立ちはだかる…。

小さくても良いからゲーム作ってみたいなぁ…。

 

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

SHARP PC-1350でプログラミング その7

f:id:PocketGriffon:20201222143636j:plain

アセンブラやデバッガの動作確認も含めて、どんどんプログラム作っていこう!

前回とは違うやり方でHello Worldを表示してみた。

 

前回は「テキストバッファに文字列をコピーして一気に表示」の方法だった。

今回は1文字ずつ表示をさせる方法で試してみた。

懸念点がいくつもあったので、それらを1つずつデバッガで確認しながら進める事となった。

 

まずは出来上がったプログラムを載せちゃう。

前回も書いたが、あくまでもSC61860の素人が書いてるので、慣れている方には気になるところが莫大にあるだろう(^^;;

f:id:PocketGriffon:20201222144304j:plain

前回よりも長くなる事に驚いた!

1文字表示をループ回数分だけ呼び出すだけなら簡単じゃ無い?という予想を見事に裏切られた感じだ。

 

前準備

ただのHello Worldでこれだけ解説が付くブログも珍しいだろうw

言いたいことも含めて書いているのでどうしても長くなる!(^^;

 

まず最初のおまじない的なコード。

実はこのコードは最後の最後に入れたんだけど、$788Fのbit0を1にしてやらないと画面に何を表示させようとしても、豆腐(■)になってしまう。何のスイッチなのかさっぱり分かっていないが、SHARPの「機械語マニュアル」に1を入れろと書いてあったので入れたら表示された。うーん、解説なしはちょっと厳しいなぁ…。

 

「Hello World2」の表示座標について、これはメモリ(プログラムではDPX,DPYで定義)にあらかじめ座標を入れてやらないといけない。設定しなければ、そのままシステムが表示していた続きの位置に表示されるだけだ。

 

そして肝心の文字列データへのポインタはXレジスタが押さえる事となる。この…内部メモリにあるレジスタへのロードは、もっと簡単に書けないんだろうか…。XYレジスタを使うコードが多いと思うんだけど、レジスタにロードするだけでこんなに書くのではたまったものではない…。きっと何か定石があるんだろうな…と思いつつ、今は冗長なコードを書く自分(T-T)

 

文字表示処理

今回の主役、1文字表示ルーチンが、外部ROMにある$E983(PUTC)だ。ここにはとっても疑問が生じていた。果たして…これを呼び出した後、どのレジスタが壊れていてどれが壊れていないのかが分からないのだ。保護すべきレジスタが分からない限り、続きを書いていくのはちょっとキケンだ。

 

しかしこういう時こそ環境を作ったパワーが発揮される。PUTCを呼び出すコードを書いて、デバッガ上でステップ実行してやれば一発で分かる。レジスタの値を見ておいて、ステップした瞬間にどれが壊れるのかを見れば良いだけだ。

 

そしたら…困った事にXレジスタが壊されていた…。えーこれはどうしたらいいの?(T-T)

幸い、内部ROMにXレジスタをPUSH/POPする関数があったので、今回はこれを利用する事にした。スタックが極端に少ないアーキテクチャである事は理解してるんだけど、常時使うものがポンポン破壊されたのではメモリも食うしパフォーマンスも上がらない。

うーん、これって……普通なの?(T-T)

 

そしてもうひとつ困った事が。

驚いた事が…1文字表示ルーチンを呼び出しても、カーソル座標が更新されない!自前で更新してやらないといけないらしい。うーん…これもはっきり言って相当面倒。きっとカーソルを更新する1文字表示ルーチンのエントリがどっかにあると思うんだけどな。

 

そして動いたHello World2!

f:id:PocketGriffon:20201222150723p:plain

動くには動いたものの、Hello World1に比べてもサイズが大きくなってしまった。

前回のプログラムが44バイトだったのに対し、今回は64バイト!

慣れていない分、どうしてもコードが冗長になってしまう(T-T)

これはいつかパパッと組めるようになるモノなのかなぁ…。

 

次はグラフィクスでHello Worldを…と思っているが、気持ちが折れそうwww

いやもう少し頑張る(自分を追い込むパターンw)

 

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

SHARP PC-1350でプログラミング その6

f:id:PocketGriffon:20201222022252j:plain

PC-1350のバッテリー寿命が短すぎる!

コレが今イチバン気になっている点かも知れない。

とにかくPC-1350のボタン電池がすぐに切れてしまうのだ!

何も使わずに1週間くらい放置するとバッテリー切れ状態になる(T-T)

もしかしたら拡張メモリ側の電池が切れてるんだろうか…とかいろいろと調べてみたけれども、思い当たるところが無い。

しかし、いくらなんでも燃費が悪すぎる…。他のPC-1350やPC-1360ではそんなことないため、この筐体特有の問題らしい。これは何が原因なんだろう??

どなたかご存じの方いません?(T-T)

 

PC-1350で初めてのプログラミング♪

さあ、ようやくPC-1350でプログラミングしてみるよ!

まごう事なき、初のSC61860でのプログラミング。

Hello Worldに挑戦だ!

 

まず…作業を始めようとして何に困ったかと言えば、レジスタの使い方、いわゆる定石が全くわからない点だ。

これまでにエミュレータアセンブラ、逆アセンブラを作ってきたおかげで、それぞれ個々の命令がどんな動きをするのかは理解できた。…が、それらの命令をどうやって組み立てたら良いのかが分からないのである(^^;;

エミュレータ作ってて分かったのは、Pレジスタは内部RAM用、DPレジスタは外部メモリ用…って事くらい。あとはXYレジスタがそれぞれ外部メモリからの読み込み、書き込みに使えるらしい…くらいの感覚。

 

とりあえず…分かる範囲の命令で組み立ててみようw

というわけで作ってみたHello Worldはこんな感じ。

f:id:PocketGriffon:20201222015155j:plain

…おそらく、SC61860に慣れた方から見たら「なんじゃこりゃ」なプログラムなんだろうなー。まぁ覚えたての素人が作ったコードだと思ってカンベンして!

やっている事は…

Xレジスタに転送元(MessageData)アドレス

Yレジスタに転送先(テキストVRAMバッファ)のアドレスを入れて

文字列をコピーし

最後にテキストVRAMの内容を実際のVRAMへ反映(TRANSVRAM)

しているだけだ。

これも「コレが最適!」と思ってやってるわけではなく、たまたま見つけたVRAM転送サブルーチンがあったので、利用してみようと思っただけの話だw

 

ソースを見て分かるが、このアセンブラにはEQU疑似命令が存在しない。

この辺りはcppを利用しているので、それで代用出来るものは全て使っちゃえ!ということで、躊躇なく割愛している!割り切りは大事だ(^^)

 

動かしてみようとするのだが…

だいたい、この手のモノを動かしてみようと思うと、最初の1回目はとても苦労するw

まずは自作アセンブラがちゃんとコードを出しているのか疑って掛かる。

そしたら…案の定、ニーモニックのエラーチェックが抜けていたw ちゃんとしたコードが出ないばかりか、それっぽいコードを出力してしまっていた。これはひどい(TOT)

 

そして出来上がったバイナリをデバッガに読む仕組みを作る。

マシン語データの場合は、PC-1350のメモリにダイレクトに読み込ませてしまえば良い。バイナリデータの先頭にHC-40よろしく同じようなヘッダを付ける事で、特にアドレス指定等はなくても読み込めるようにした。あとは実機と同じ形式の「CALL アドレス」で実行する。

 

デバッガも、軽く実装はしてあったのだが、実際に使おうとするとバグがあったり使い勝手が悪かったり、もう散々だった(^^; やっぱり使ってみなくちゃ分からない!

理想のデバッガが欲しいわけじゃない、使いやすいデバッガが欲しいのだ!

そう割り切れば機能なんて最低限でかまわん(^^)

 

そしてようやく……

f:id:PocketGriffon:20201222020518p:plain

デバッガ上で「Hello PC-1350 World!」が表示された!(^-^)/

これは嬉しい!!

 

せっかくなので簡単に説明をしてみたい。

まず、青で囲まれた部分がコンソールとなっている。ここでコマンドを入力する。

Hello Worldのプログラムは$6200から格納されている。

#そういえばPC-1350には、マシン語の領域宣言(CLEAR命令?)はあるんだろうか…汗

 

起動した直後に「d6d00」で、ダンプウィンドウ(右中央)のダンプ表示を6D00に変更。このアドレスはテキストバッファを指している。この領域に表示させたい文字列をコピーして、システムコールを呼び出せば、画面に文字が出る…というワケだ。

 

次に「b6200」でブレークポイントを設定。$6200番地を実行しようとした瞬間に実行が止まってコンソールに戻ってくる。

 

「"CALL &6200」で、PC-1350上でCALL命令を実行する。こうする事で、実機で動かした時と同じ環境で実行が出来るはずだ。そして先ほどのブレークポイントに設定した$6200を実行する直前に停止してコマンド入力モードに戻ってくる。

 

「u」は逆アセンブラ表示だ。なんとなくSYMDEB(DEBUG)とあわせてみた。逆アセンブラを表示させようとすると、指が勝手に"u"と打ってしまうので、自然に任せる流れでそのままコマンドにしちゃった感じだw

 

「t」はトレース、1命令実行。

 

「g,620f」で、今のアドレスから$620Fまで実行させる。

 

最後の「s」はステップ実行で、サブルーチンの中までは追っていかず、サブルーチンから抜けたところで実行が止まる。CAL $1DDFはテキストVRAMの内容を画面に反映させるルーチンだ。ここの中身はデバッグする必要が無いのでステップ実行…というわけだ。

このタイミングで画面に「Hello PC-1350 World!」が表示された。

 

とりあえず動いたプログラム

自前で作ったアセンブラエミュレータ、デバッガでプログラムを動かす事が出来た!

途中、開発が全く進まなかった時期もあったが、約20日掛かってる。どう考えても素直に実機で「Hello World」を作った方が早いw

でも全部自分で作った環境で動くのって、とても楽しいよ!(^-^)

 

デバッガはまだまだ出来損ないにもホドがある状態だけど、これを利用してせっかくだから少しだけ規模の大きなものを作ってみたいな!

最終的にはちゃんと実機に持って行ける環境まで含めて作り上げないと!

よーし、もうちょっと頑張るよ(^^)

 

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