ポケコンでRPN電卓

とりあえず版を作ってみました。

10:WAIT 2:Y=0:Z=0:T=0:K$="":GOSUB 500:GOTO 100

20:IF E=1 GOSUB 500
30:IF R=1 LET T=Z:Z=Y:Y=X:GOSUB 500
40:IF P=0 LET X=X*10+V:GOTO 100
50:X=X+V*0.1^P:P=P+1

100:PRINT X
110:K$=INKEY$
120:IF K$="" GOTO 100
130:V=VAL(K$)
140:IF V>0 OR K$="0" GOTO 20

200:IF K$="=" LET E=1:T=Z:Z=Y:Y=X:GOTO 100
300:IF K$="+" LET R=1:X=Y+X:Y=Z:Z=T:GOTO 100
310:IF K$="-" LET R=1:X=Y-X:Y=Z:Z=T:GOTO 100
320:IF K$="*" LET R=1:X=Y*X:Y=Z:Z=T:GOTO 100
330:IF K$="/" LET R=1:X=Y/X:Y=Z:Z=T:GOTO 100
340:IF K$="." AND P=0 LET P=1:GOTO 100
350:IF K$="C" GOSUB 500:GOTO 100

400:GOTO 100

500:P=0:E=0:R=0:X=0:RETURN

990:END

あれ?

コードが簡単すぎる。
去年作ったcalcrのコード見直そうかなぁ。

細かい話

シャープのポケコンのうち、PC-12XX〜PC-14XXでは、単純にPRINT表示するとそこでプログラムがストップします
(ENTERキーを押すと次に行く)。
PC-126Xなんかは消えなくなったようでいいなぁ。
事前にWAIT文を入れておけばPRINT文でストップせず、WAITで指定した時間(WAIT 1でたしか1/64秒だったかな)表示して次の行に実行が移ります。
しかしながら、PRINT実行中のみ表示され、他の計算中は画面が消えてしまします。
シャープポケコンBASICでゲームが作りにくいのはこういうところにありました。
カシオベーシックのようなCSR文もなく、表示用文字列変数にLEFT$+MID$+RIGHT$を利用して任意の位置に文字を表示させるなど、苦労があったものです。

ただご存じのようにシャープポケコンはPC-1246系を除き裏技的にマシン語が利用でき、VRAMにどっとマトリクスを直接書き込めたので、ゲームは表示部分にほとんどマシン語で作られていましたねぇ。
なつかしー。

で、PC-1245ではVRAMのアドレスやら、計算中に画面表示が消えないようにする技についていろいろ情報があったりしますが、
PC-1445では情報がないですー。
しょうがないので、今回はPRINT文をループしてしまってます。
画面がちかちかしたり、キーの取りこぼしがあったりするのは、どうにかしたいところではあります。