85DATA HOMEへ
MYCAR情報掲示板BLOGプロフィール

HOME → 懐かしのパソコンネタ

■ポケコン PC-G850(V) でBASIC 2013年12月22日
            
〜エミュレータの実行と縦計算プログラム〜

「ポケコンエミュレータG800を利用してBASICプログラミング」

ちょっと前にカシオのポケコンが調子が悪くなってしまい、(オールリセットしたら正常に動作した・・・もよう)シャープのポケコンPC-G850Vを購入しました。
詳細はこちらに私のポケコン歴も含め書いてあります。

バリバリとBASICだとか機械語でプログラミングをする訳ではありませんが、このPC-G850でも”電卓+α"として仕事で活用していきたいと思っています。
この”+α”の部分がBASICを利用した”ごく簡単なプログラム”なのです。

しかし、昔ならばともかく現代のPCに慣れきってしまった体に、あのポケコンの小さなキーボードと小さな画面でプログラミングするのは「非常に苦痛です」
(そんな、大きなモノを作る訳では無いのですが・・・・・一度、楽を覚えるとダメですね〜)

作ったモノを紙に書いて保存するのも面倒です。

やはり、パソコンとポケコン(PC-G850V)を接続して効率化してみたいと思いました。
作ったBASICソースをポケコンに転送したり、ポケコンからパソコンに転送する事が出来たら便利です。

パソコンとの接続ケーブルは高松製作所さんに発注しました。
転送に関しては、くりこうさんのホームページを参考にやってみたら、すんなりと出来ました。

これでBASICソースはパソコン(のメモ帳等)で作り、ポケコンに転送する事が出来ます。
逆も(ポケコン→パソコン)も、同様に可能ですが、ポケコン→パソコンの頻度は少ないと思います。
なぜならポケコン側ではプログラミングするつもりが無いからです。

さて、これだけでも便利なのですが、手順としてはチョット面倒です。(以下の手順)

@パソコンでプログラミング(メモ帳等でテキスト化)
Aポケコンへ転送
BポケコンでテキストをBASICへ変換
Cポケコンでの実行
Dバグがあれば@へ戻ってデバッグ

それぞれは大した手間ではありませんが、出来ればパソコンでプログラミングし、実行やデバッグをし終えてからポケコンに転送出来たら、もっと便利ですよね。

そんな訳で、ポケコン(PC-G850)のエミュレータを動かしてみたいと思います。
エミュレータは、まるひろさん製作のG800です。

まずは、ポケコンのROMの吸出しを行います。
※詳しくは「PC-G800のROMをエミュレータで使うためのツール [copyrom.zip]」のmanual.txtに書いてあります。(ここでは、詳細は書きません)

まずは、copyg850.hex(機械語プログラム)をポケコンに転送し(これもくりこうさんのホームページに書いてある事を参考にしました)、22回ROMを吸い出しました。(これは結構時間が掛かります)
パソコンへのROM転送は(Tera Termではやり方が分からず) PC-Gリンクを使いましたが問題ありませんでした。

※写真左側のものが高松製作所さんのケーブル

PC-Gリンクで、ポケコンから転送されたROMファイルの中身(一部)を確認してみました。
PC-Gリンクでは行番号が付番されてしまうので、ダメかと思いきや、保存したら行番号はありませんでした。これならば大丈夫。


22回、転送を繰り返し出来たファイルが上記です。(rom16.txtは不要っぽい)


無事に動作しました。

 


メモ帳を使用してBASICソースを入力後に、エミュレータ側に転送。
上述の「Aポケコンへ転送、BポケコンでテキストをBASICへ変換」はエミュレータ側でも同様に行う必要があります。

そして、実行!
残念ながら、ちょっとしたバグがあったので、これはエミュレータ側で直接、直しました。

今回は、バグが1箇所だけだったので大した手間ではありませんでしたが、パソコンのキーボードを使用したエミュレータG850への入力なのです。

やはり画面が小さいのとポケコンのキーボードをエミュレートしているので、すんなりと出てこない文字があったりして入力しづらい。

このエミュレータ内の”何か”をクリックすると(BASICだけでも)ソース編集としてメモ帳レベルのエディタが使えたら最高なんだけどな・・・・・

・・・とは言いながらも、ポケコンの小さなキーボードでポチポチと入力するよりは、遥かに開発効率は良くなりました。
(そんなに、大したモノは作りませんが・・・・)

今回、作成したのは、”縦計算プログラム”です。
(カシオVX4でも使用していましたが、PC-G850は6行も表示があるし、処理速度も速いので、スクロール対応をしたのです)

ホント、電卓+αでしょ?

使う人もいないとは思いますが、一応ソースを晒しておきます。

ダウンロード

10 DIM D(100):SM=0
20 Y=0:LY=0:LB=0:SY=0:A1=0:KB=0
24 CLS:LOCATE 0,5:PRINT USING "###,###,###,###";SM
30 LOCATE 15,5:PRINT "(SUM)"
35 GOSUB 200
40 I$= INKEY$ :IF I$="" THEN A1=0:KB=0:GOTO 40
45 A= ASC (I$):IF A=A1 THEN KB=KB+1:IF KB<50 THEN 40
50 IF A=4 THEN LY=LY-1:IF LY<0 THEN LY=0:SY=SY-1:IF SY<0  THEN SY=0
60 IF A=5 OR A=13 THEN LY=LY+1:IF LY>3 THEN LY=3:SY=SY+1:IF SY>97 THEN SY=97
65 IF A=10 THEN LY=0:SY=0 'TAB
66 IF A=2 THEN GOSUB 500:IF I$="Y" OR I$="y" THEN SM=0:FOR J=0 TO 100:D(J)=0:NEXT:GOTO 20 'CLS
70 Y=SY+LY
80 IF A>=48 AND A<=57 THEN GOSUB 300:GOTO 60
90 IF A= 45 THEN LOCATE 14,0:PRINT "-":GOSUB 300:GOTO 60
180 IF Y<>Y1 THEN GOSUB 200
190 Y1=Y:A1=A:LB=LY:GOTO 40
200 '
210 LOCATE 0,1:PRINT D(SY)
220 LOCATE 0,2:PRINT D(SY+1)
230 LOCATE 0,3:PRINT D(SY+2)
240 LOCATE 0,4:PRINT D(SY+3)
250 LOCATE 0,5:PRINT SM
255 LOCATE 14,LB+1:PRINT " "
260 LOCATE 14,LY+1:PRINT CHR$(135)
270 LOCATE 15,1:PRINT ":"; STR$ (Y);" "
280 RETURN
300 'INPUT
305 D=D(Y)
310 IN$=I$:A1=A:GOTO 360
320 I$= INKEY$ :IF I$="" THEN A1=0:GOTO 320
330 A= ASC (I$):IF A=A1 THEN 320
335 A1=A
336 IF A=13 THEN 380
337 IF A=23 THEN IF LEN (IN$)>0 THEN IN$= LEFT$ (IN$, LEN (IN$)-1):GOTO 360
340 IF A<48 AND A<=57 THEN 320
350 IF LEN (IN$)<10 THEN IN$=IN$+I$:IF IN$="00" THEN IN$="0"
360 LOCATE 0,0:PRINT VAL (IN$)
370 GOTO 320
380 LOCATE 0,0:PRINT "               "
390 D(Y)= VAL (IN$):SM=SM-D+D(Y)
400 GOSUB 200
410 RETURN
500 '
505 IF INKEY$<>"" THEN 505
510 LOCATE 0,0:PRINT "DATA CLEAR OK ?(Y)"
520 I$=INKEY$:IF I$="" THEN 520
530 LOCATE 0,0:PRINT "                  "
550 RETURN

こんなに短いプログラムですが、ポケコンで作るのは見づらく作りづらいんですよね。
  (当時は、全然苦では無かったのにね・・・・)
特に大きなモノを作ろうとすると、このエミュレータの恩恵は絶大だと思います。

さて、上記のプログラムについて、ちょっとだけ触れておきます。
これは、101個まで数値の合算をする”だけ”・・のプログラムです。
Excel等の表計算の縦計だけ(しかも1列だけ)・・と云った方がイメージし易いでしょうか。

電卓で沢山の数値を合計した後に検算しますよね?
これは検算時の見直しに便利だったりするのです。(もちろん、誤りがあれば後から修正できます)
・・・・でも、「たったのそれだけ」です。

使用キーは0〜9の数字キーと「-」キーで、数値入力
↑↓キーで、カーソル移動
BSキーで数値入力時に1文字消去
TABキーでカーソルが先頭へ移動
CLSキーでデータ消去

(使えば分かります)

このプログラムを実機のポケコンPC-G850に転送すれば、OKです。


その他の(カシオVX4で使用していた)プログラムもポケコンに転送すれば、今までのポケコン(カシオVX-4)と同様に仕事で使えそうです。
(機種の違いによるBASICの僅かな方言は修正しましたが、ほとんど手を加える事も無く動きました)


この環境があるならば「昔を思い出してゲームプログラムも作ってみようか」・・・とも思ってしまいましたよ。

【追記】
※以下はエミュレータの不満ではありません。機種によるものです。

残念なのは、シャープPC-G850は実行(RUN)すると、変数の値がクリアされてしまう事です。(シャープ全般かな?)

カシオは変数の値は消えずに実行が可能です。よって、再度プログラムを実行しても以前の変数の値によって動作します。
変数値をクリアせずに実行するのであれば、PC-G850では”RUN”では無く、(実行モードで)”GOTO 行番号”とすれば大丈夫です。
 (上記プログラムの例だと”GOTO 20”)
・・・・ですが、やはり面倒ですね。(他にも手法はあるはずですが、いずれにせよメンドクサイ)

カシオは、SHIFT + 0〜9のキーで簡単にプログラムが実行(RUN)できますし、お手軽なポケコンとしての魅力があり、私の好みです。
処理速度はシャープのポケコンの方が(全般的に)速いので、使途によって好みは別れそうですね。

【追記 その2 】 2013年12月23日

とりあえず、スペシャルツール(?)を作り、もっと便利になりました。続きはこちら