以前作った「パンチカードJam」のその後です。
有志の方にPCB(プリント基板)をデザインしていただいて、スイッチサイエンスPCBで発注。それを使ってコンパクトな一体型にしてみました。
プレイ動画はこちら。
全体をタッパーのふたにくっつけたので、タッパー本体をかぶせればそのまま持ち歩けます。
「やってみる」(RUN)カードで、プログラムを実行します。実行中の行を順番に表示します。
「みる」(LIST)カードで、プログラムリストを表示します。
「プログラムをぜんぶけす」(NEW)カードで、プログラムを消去します。
LISTやRUNをしても、何も起きなくなります。
命令表の改訂版。LISTとCLSコマンドを追加しました。
やっぱりLISTが表示されると、プログラミングしている気分になりますね(^_^)
システムプログラムはこちら。容量が増えたので2スロットに分けました。
●本体プログラム(スロット0)
1 CLS:?"***Punch Card Jam***" 2 CLV:FORP=1TO6:OUTP,-1:NEXT:BEEP 3 '@RESET 4 OUT0:Z=0:L=0 5 '@OK 6 ?CHR$(8);:?"OK":?CHR$(1); 7 IF!IN(11)CONT 8 '@ICARD 9 R=1:GSB41 10 IFC=0&&O=0GOTO8 11 ?CHR$(8);:IF!CGOTO23 12 IFTGSB21 ELSEGSB18 13 FORB=1TOZ:BEEP20,5:WAIT20:NEXT 14 GOTO34 15 '@ICARDEND 16 IF!IN(11)CONT 17 ?CHR$(1);:GOTO8 18 '@ICARDN 19 Z=Z+1:[Z]=C*16+O:IFC=8L=L+1:[80+L]=Z 20 ?"read> ";Z*10;" ";:RTN 21 '@ICARDT 22 [Z]=[Z]|((C*16+O)<<8):T=0:RTN 23 '@COM 24 BEEP30,30:IFO=1?"RUN":R=0:GOTO29 25 IFO=2?"LIST":R=2:GOTO29 26 IFO=3?"NEW":GOTO3 27 IFO=4CLS:GOTO5 28 GOTO8 29 '@GO 30 A=0 31 '@GLOOP 32 A=A+1:IFA>ZGOTO5 33 C=[A]&#F0/16:O=[A]&15:?CHR$(8);A*10;" "; 34 '@GDO 35 IFC=15&&O=15LRUN1,150 36 LRUN1,C*10 37 '@GLOOPEND 38 IFT&&(R!=1)C=([A]&#F000)>>12:O=([A]&#F00)>>8:T=0:GOTO34 39 GSB41:IFC=15&&O=15BEEP30,30:?"ESC":GOTO5 40 ?CHR$(1);:GOTO31 41 '@RCARD 42 C=0:O=0:IFIN(11)RTNELSECLT 43 '@RCARD1 44 IFIN(11)RTN 45 IFTICK()<120GOTO43 46 FORP=1TO4:C=C*2+IN(P):O=O*2+IN(P+4):NEXT:RTN
●コマンド解析ルーチン(スロット1)
1 '*Punch Card Jam(1) 10 @LED 11 ?"LED ";O:IFR=1LRUN0,15 12 IFR=2LRUN0,37 13 LEDO:LRUN0,37 20 @WAIT 21 ?"WAIT ";O*60:IFR=1LRUN0,15 22 IFR=2LRUN0,37 23 WAITO*60:LRUN0,37 30 @BEEP 31 ?"BEEP":IFR=1LRUN0,15 32 IFR=2LRUN0,37 33 BEEP:LRUN0,37 80 @LABEL 81 ?"@";O:IFR=1LRUN0,15 82 LRUN0,37 90 @GOTOL 91 ?"GOTO @";O:IFR=1LRUN0,15 92 IFR=2LRUN0,37 93 A=[80+O]-1:LRUN0,37 100 @IFBTN 101 ?"IF BTN()=";O;" THEN ";:T=1:IFR=1LRUN0,15 102 IFR=2LRUN0,37 103 T=(BTN()=O):IF!T? 104 LRUN0,37 120 @FOR 121 ?"FOR I=1 TO ";O:IFR=1LRUN0,15 122 IFR=2LRUN0,37 123 I=1:J=O:S=A:LRUN0,37 130 @NEXT 131 ?"NEXT":IFR=1LRUN0,15 132 IFR=2LRUN0,37 133 I=I+1:IFI<=JA=S 134 LRUN0,37 150 @END 151 ?"END":IFR=1LRUN0,15 152 IFR=2LRUN0,37 153 A=Z:LRUN0,37