ポケコンで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文をループしてしまってます。
画面がちかちかしたり、キーの取りこぼしがあったりするのは、どうにかしたいところではあります。