CASIO AI-1000を使ってみる!その4

f:id:PocketGriffon:20210723153310j:plain

苦労してる!

とーっても苦労してる!!!

新規に取り組むマシンで、これほどまで苦労するのは珍しいかも!

しかし今はこの苦労が楽しくて仕方ない(^-^;;

自分が全く知らなかったことを覚えていける喜びは格別!(^-^)

誤解や勘違いも多いけれども、それでもブログやTwitterで発信していくので、暖かく見守ってもらいたいw

 

昨年末に挑戦したPC-1350(SC61860)の時も結構苦労していた。

でも逆アセンブラはすぐに作る事ができたし、エミュレータも3日間くらいで(かろうじて)動くところまでは持っていけた。手元に資料やサンプルとなるものが山のようにあったため、そこまで大変ではなかった。

SC61860が簡単難しいは別問題としてあったとしてもw

 

今回のAI-1000は圧倒的な資料の無さに苦労してる。

実はPB-1000の方がまだ参考になるものが多かったように思うので、そっちをチャレンジする方が良かったのかも知れない。でもチャレンジするからにはAI-1000がいい!!という気持ちが強かった(^-^) AI-1000を使いこなすなんてカッコいいやーん!(^O^)ノ

…まぁ、本来の使い方なのかどうかは横に置いておくとして…汗

 

ROM引っこ抜き再チャレンジ!

さて、前回メモリの内容を抜き出せたと思っていたが、どうやらROMではなくRAMだった事が判明。

f:id:PocketGriffon:20210722223821j:plain

BASICのPEEK文ではバンク1側が見えちゃうんだね…。

 

どうにかしてPEEKで読み込めるバンクを0に切り替えが出来ないかと思ったが、そんなフラグっぽいものは見つからず…。試しにmonでバンク切り替えしてからPEEKしたらどうなるんだろう…と思ったが、やはりバンク情報はmonの中だけで完結した指定のようだった(T-T)

 

仕方ないのでメモリをアクセスする部分だけマシン語で書くことにした!

PB-1000のアセンブラ機能を使えばいいか…と思ったが、モノは試し…とばかりにハンドアセンブルしてみることにした!多分短いプログラムだし平気でしょ!とw

f:id:PocketGriffon:20210723160423j:plain

マシン語ルーチンに値を渡す方法が分からなかったので、&H1002,3にアドレスを入れて&H1000をコール、&H1020にデータが入ってる…という方法をとった。

 

当初、バンクを切り替えてアクセスをした後、そのままBASICへ戻ろうとRTNだけ入れていたら、ハングアップしまくった(T-T) どうやらバンクを切り替えた後にBASICへ戻さないといけないらしい。これはプログラム中でバンクを切り替えたからなのか、それともどんなマシン語プログラムでもそうなのかは不明。この先の実験で明らかになってくるかなー。

 

たったこれだけのプログラムなのに、5〜6回のハングアップを経験。そのたびにAI-1000をFA-7から取り外し、RESETとNEW ALLを押すハメになった(T-T) あまりの面倒くささに、AI-1000のカバーを取り外して運用する事にした。

ALT+CTRL+DELみたいなリセット方法はないんだろうか……

 

そう!もうひとつ!

BASICからマシン語をコールする方法については、ポケコンジャーナル紙を参考にした。

「SYSTEM CALL アドレス」とすれば良かったらしい。

f:id:PocketGriffon:20210723164751j:plain

 

こんな感じで他の書籍等を参照し始めてしまっているので、すでに「自力で頑張る」が崩れてしまっているとは思うけれども…そこはごめんなさい(^^;;;

CPUの未定義命令や内蔵ROMの情報などは、良い感じに参照しつつやっていけたら…と思う。

 

さぁ、ROM情報が取れたら逆アセンブラ作るぞー!

まだまだ先は長い(^-^)

 

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