人気ブログランキング |

ブログトップ

電子工作やってみたよ

SMC777  フロッピーからデータの読み込みは、何とかできたけれど、データのセーブが出来ない。
3.5インチのドライブが悪いのか、ディスクが悪いのかはまだわかりません。
とりあえずは、なにかプログラムを組んでソフトは動くのか、他に問題はないのかを見てみます。


c0335218_19064423.jpg
 

ソニーBASICで「石取りゲーム」を作って見ました。
ちょうど モニター画面 1枚分におさまりました。
フロッピー以外の動作は正常でしたので、CPUやメモリーはOKということですね。
ウインドーズになれてしまうと、この時代の1行40文字、半角のみは猛烈に辛いですね。
それに MS-DOSの操作でさえ怪しいのに CPM80の操作なんて全く覚えていません。

c0335218_19065174.jpg


 モニター画面では見にくいので見やすくしてみました。

------------------------------
50 ISHIZAN=15
100 PRINT "イシノ ノコリ=" ; ISHIZANN
110 PRINT "アナタノ バンデス 1-3"
120 INPUT HITO
130 ISHIZANN = ISHIZAN - HITO
150 PRINT "イシノ ノコリ=" ; ISHIZAN
200 IF ISHIZAN < 2 THEN PRINT "アナタノ カチ" ; GOTO 500
260 PRINT ISHIZANN ; "コンピュータ ノバン"
300 AMARI = ISHIZAN - (4*INT(ISHIZAN/4))
310 PRINT "アマリ=" ; AMARI
320 IF AMARI=0 THEN HIKU=3:GOTO400
330 IF AMARI=1 THEN HIKU=1:GOTO400
340 IF AMARI=2 THEN HIKU=1:GOTO400
350 IF AMARI=3 THEN HIKU=2:GOTO400
380 PRINT"380 error ":STOP
390'
400 PRINT "コンピュータ ノ トッタイシ=";HIKU
410 ISHIZAN=ISHIZAN-HIKU
430 IF ISHIZAN < 2 THEN PRINT "コンピュータ ノ カチ":GOTO 500
450 GOTO 100
500 PRINT "ゲーム シュウリョウ シマシタ":STOP

これで終わりです。



以前に作った 石取りゲームの手順を考えたときのメモです。 
これが有ってよかったです。   
基本の計算手順は、現在の残数を4で割ったときの余りを出して、(0~3) その余りに対応する数値に変換します。
その変換したものを、現在の残数から引きます。
      (メモ1)
c0335218_19045062.jpg


手順 ( メモ2 )

c0335218_19044415.jpg

その後の福寿草です。
この日は寒かったせいか、花の数は増えたようですが小さくなったように感じますね。
もう 終わりに近づいているのでしょうか。

c0335218_19083152.jpg

とにかく フロッピーのドライブとディスクを直さないことには、この先遊びにくいですね。

by telmic-gunma | 2018-03-08 21:35 | 昔のパソコン H68TR GAME言語他 | Comments(0)

HP15C 石取りゲームの動作 やっと解りました。
延べ2週間 いろいろな手で考えました。
最初の表はやっと解ったことを、プログラムリストに細かく記入しました。
たぶんこのリスト数か月後にみたら私自身でも解らなくなるのじゃないかな。
ひとかたまりの動作をやる中で同じところを数値を変えながら何度も通過するのでステップ送りで見ながらやっても理解できなくなりました。
その次の表はステップ送りしながら、スタックおよびレジスタの数値を記入したものです。

HP15C石取りゲーム

01 LBL A ----------- スタート
02 5 ---------------- 逆表示 BLISSをR3にセット
03 5
04 1
05 7
06 8
07 STO 3
08 3 ---------------- 逆表示 1.LOSE をR4にセット
09 5
10 0
11 7
12 .
13 1
14 STO 4
15 1 ------------------- 残数の初期値 15を R0にセット
16 5
17 STO 0
18 FIX 0 -------------- 少数以下の表示を無くす
19 CHS --------------- マイナス表示にして人間の手番を教える
20 R/S ---------------- 最初の人間側の手入力待ち  (1 ~ 3)
21 ENTER
22 LBL B
23 1 ------------------ 人間側処理フラグ  1⇒R2
24 STO 2
25 R↓
26 LBL C
27 STO -0 ----------- 残数から人間あるいはHPの手番を引く
28 RCL 0
29 X=0 --------------- 残数R0がゼロならば終了
30 GTO 2
31 STO *2 ------------ 残数に極性R2(1又は-1)を掛けてR2にしまう
32 RCL 2 ------------- (HPと人間は共用)
33 R/S ---------------- 人間側 1~3の数値を入力 HP側では入力せず(R/S)を押す
34 X<>Y
35 TEST 3 ( X>=0 )
36 GTO D -------------- HP側の処理では LBLD へ行く
37 X<>Y
38 GTO B -------------- 人間側の処理では LBLB へ行く
39 LBL D
40 1 -------------------- 以後HP側の処理をするので -1 ⇒ R2 へ入れる
41 CHS
42 STO 2
43 0------------------ HP側処理カウンターをゼロとしここから 必勝ポイントを探す 
44 STO 1 ------------ カウンタが-1,-2,-3にて残数が4の倍数(4n-1)になるかチェック
45 LBL E
46 RCL 1 -------------HP側処理カウンターが3であれば-1,-2,-3の3回のチェックで
47 3 ------------------ 必勝ポイントがなかったので LBL1 へ行く
48 TEST 5 ( X=Y )
49 GTO 1
50 1 ----------------- HP側処理カウンターを プラス1する
51 STO +1
52 CHS -------------- 現在の表示残数から1を引く (-1を加算する)
53 RCL 0
54 +
55 RCL 1 ----------- (表示残数-1)からHP側処理カウンターの値を引く
56 -
57 4 ----------------- 上記値が4の倍数でなければ LBLE へ戻り
58 / ------------------ 再度HP側処理カウンターを変えた数で4の倍数かをチェックする
59 FRAC
60 TEST 0 ( X<>0 )
61 GOTO E
62 RCL 1 ----------- 4の倍数であれば、その時のHP側処理カウンターの値が
63 GTO C ----------- HPの引く手(1~3)となる, その値を持って LBLC へ戻る
64 LBL 1
65 1 ----------------- HP側処理カウンターを-1,-2,-3に変えても4の倍数(4n-1)が見つからなかったので
66 GTO C ----------- 1をHPの引手として LBLC へ戻る
67 LBL 2
68 RCL 2 ------------- 勝負がついたらここにくる
69 TEST 2 ( X<0 ) --- R2の値をみてHPの勝ちか人間の勝ちかを判断する。
70 GTO 3
71 RCL 3 --------------BLISSを表示
72 GTO 5
73 LBL 3
74 RCL 4 -------------- I.LOSSを表示
75 FIX 1
76 LBL 5
77 R/S

一つの手の処理に数値を変えて同一場所を何度も通過するので、追いかけるのが難しい

使用レジスタ
R 0 現在の残数
R 1 HP側のカウンターの数( 1, 2, 3 この中で4の倍数にあたるとこれがHP側の手となる)
R 2 HP側(+1)あるいは人間側(-1)

R 3 55178
R 4 3507.1



初期値や引く数などを変えてその時のスタックやレジスタの変化を細かく書いていき、どのような動作をするのか、調べていきました。

c0335218_19351617.jpg










この逆ポーランド法のソフトはCPUのアッセンブラ言語と言った感じでしょうか。
人間コンパイラが数式からソフトを作るのはそれほどの苦労もなくできると思いますが、
プログラムから元の式を復元するのは、なんの情報も無くては、かなり厳しいですね。
この次は、同じ動作をするプログラムをステップの制約をなくして、
いかにわかりやすく出来るか挑戦してみようかな。
でもこういうのって作り直すと余計に解りにくくなることが多いんですよ。
これ私だけですか。
ネットで見ると、C言語で10行足らずで出来ていますね。
この電卓やアーキテクチャできたのは、40年くらい昔でC言語は未だ出来ずBASICもやっとできたくらいでしょうか。
いまさらこんな事やって何になるの、なんて言わないでください。
私にとっては十分 ボケ防止のやくにたっているのですから。



追記 
ネットに上げると写真のリストは見にくい感じですね。
スキャナーでやり直してみましょうか。
結局 テキスト入力でプログラムとコメント入力しました。また調査します。


by telmic-gunma | 2016-08-11 20:35 | HP電卓 | Comments(2)