ポケコン時代

久しぶりにポケコンを触った。シャープのPC-E650。
高機能電卓としてたまに使っていたのだが、最近はその頻度も減っていた。
今回は、ちょっとプログラムをロードして走らせてみた。

マスターマインドや1手読み三目並べに、時間がかかる。これは遅い!
遅さ以外に衝撃を受けたのが、当時の自分のコード。木っぽいものを表示する。

10 CLS :CLEAR :DIM X(1024),Y(1024),Z(102
   4):C=1:X(2)=120:Y(2)=40:Z(2)=270:D=14
   :E=1:G=2:R=23:DEGREE
20 D=D*0.85:F=E+1:E=E*2:FOR I=F TO E:FOR
    J=-R TO R STEP 2*R:G=G+1:X(G)=X(I)+D
   *COS (Z(I)+J):Y(G)=Y(I)+D*SIN (Z(I)+J
   ):Z(G)=Z(I)+J:LINE (X(I),Y(I))-(X(G),
   Y(G)):NEXT :NEXT :GOTO 20

上のコードのシミュレーション→エダワカレ
実際には色分けされてないし、一度に4行しか表示できない。読みにくいよ。
10年以上前に書いたもので、技術的には今よりも更に未熟だったろうに、
よくもまあこんなのが書けたものだ。
最近は可読性やメンテナンス性ばかり気にして、こういう荒々しいコーディング、
本来持っていたプログラミングのイメージを、忘れていたような気がする。
別に今可読性を軽視してもいいことないのはわかってるけどさ。何かショックだった。

2行しかないのは、バイト数を節約するため(メモリ+ラムディスクで64KBしかない)と、
実行速度を少しでも上げるため。
これは自分のポケコンライフの中でも後の方に書いたものなので、可読性も重視している。
定数23をRに入れているが、本当はハードコーディングして、FOR文も展開するべきだ。
まあここでは、三角関数が酷いボトルネックなので、高速化の意味が薄い。

X:枝の分岐のx座標
Y:枝の分岐のy座標
Z:枝の角度
C:未使用、本来の用途は忘れた
D:枝の長さ
E:現在の深さの最後の分岐の番号
F:現在の深さの最初の分岐の番号
G:枝の先の分岐の番号
I:枝の元の分岐の番号
J:枝がその分岐で曲がる角度
R:枝が分岐で曲がる角度