サンプルの充実化を・・・したいな。

ということで、
しばらくここでサンプル作成にいそしみます(汗)

・・・Ver.0.3 build 64までだと下記プログラムメニュー選択で暴走する。
原因究明済み。
対策build 65準備完了。
修正内容は・・・

・GOTO/GOSUBバグ修正
・FOR分のネスト情報をプログラム実行時初期化するように修正
・ダイレクト実行時の処理中男児メッセージにキャッシュ上の行番号が表示されてしまっていたバグを修正

いつものダウンロードブログ記事
UMIPI BASIC 野良アプリ版公開開始! - UMIPIと小さなガジェットたち。。。
で最新版ダウンロードできます。

UMIBASIC:MB#1

10 CLS:CLEAR "ALL"
20 WIDTH 40:PCGRESET:PCGSDGRESET
30 LOCATE 10,3:VPRINT "UMIPI SOFT PRESENTS"
40 GOSUB #2
100 A$[0]=" 2D MAP SCROLL SAMPLE"
110 A$[1]=" 2D SHOOTING GAME SAMPLE"
120 A$[2]=" END PROGRAM"
200 FOR I=0 TO 2
210 FOR J=0 TO LEN(A$[I])
220 LOCATE 0,I+2
230 PRINT MID$(A$[I],LEN(A$[I])-J,J+1)
240 NEXT:NEXT
250 A$="PLEASE HIT [A] BUTTON... "
260 LOCATE 5,0:VPRINT "UMIPI BASIC SAMPLE PROGRAMS";
300 A=0
310 A$=MID$(A$,1,LEN(A$)-1)+MID$(A$,0,1)
320 LOCATE 1,6:VPRINT MID$(A$,0,38);
330 L$=K$:K$=INKEY$
340 LOCATE 1,A+2:VPRINT " ";
350 IF K$<>L$ THEN A=A+(K$="" & A>0)-(K$="" & A<2)
360 LOCATE 1,A+2:VPRINT ">";
370 VDRAW
380 IF K$<>"" THEN GOTO 310
390 IF INKEY$<>"" THEN GOTO 390
400 IF A=2 THEN CLS:END
410 IF A=0 THEN GOTO #3
420 IF A=1 THEN GOTO #6
430 END



UMIBASIC:END

UMIBASIC:MB#2

10 FOR I=0 TO 7
20 S$[I]="":FOR J=0 TO 7
30 S$[I]=S$[I]+"0"+STR$(I)
40 NEXT:NEXT
50 FOR I=7 TO 0 STEP -1
60 FOR J=64 TO 122
70 PCGSDGSET J,S$[I]
80 NEXT:LOCATE 0,0:PRINT "";
90 NEXT
95 FOR I=0 TO 10000:NEXT
100 FOR I=0 TO 7
110 FOR J=64 TO 122
120 PCGSDGSET J,S$[I]
130 NEXT:LOCATE 0,0:PRINT "";
140 NEXT
150 CLS:PCGSDGRESET
160 RETURN

UMIBASIC:END

UMIBASIC:MB#3
10 CLEAR
20 WIDTH 20:CLS
25 LOCATE 15,0:PRINT "DEMO";
30 GOSUB #4
40 GOSUB #5
50 FOR Y=0 TO 4
60 FOR X=0 TO 14
70 LOCATE X,Y:PRINT "a";
80 NEXT:NEXT
82 U=ASC("c")
85 U$[0]=PCGGET$(U)
87 U$[1]=PCGSDGGET$(U)
90 X=0:Y=0:P=0
200 FOR I=0 TO 4
210 LOCATE 1,I:VPRINT MID$(L$@[Y+I],X,13);
220 NEXT
225 LOCATE 7,2:VPRINT CHR$(100+P);
230 LOCATE 15,1:VPRINT STR$(X)+" ";
240 LOCATE 15,2:VPRINT STR$(Y)+" ";
420 K$=INKEY$
430 V=X:X=X+(K$="" & X>0)-(K$="" & X<39)
440 W=Y:Y=Y+(K$="" & Y>0)-(K$="" & Y<15)
445 IF K$="" THEN CLS:GOTO #1
450 L$=MID$(L$@[Y+2],X+6,1)
460 LOCATE 15,3:VPRINT "<"+L$+">";
470 IF L$<>" " THEN X=V:Y=W
480 VDRAW
500 U$[0]=MID$(U$[0],2,14)+MID$(U$[0],0,2):PCGSET U,U$[0]
510 U$[1]=MID$(U$[1],14,2)+MID$(U$[1],0,14):PCGSDGSET U,U$[1]
530 P=-(P=0)
600 GOTO 200
UMIBASIC:END

UMIBASIC:MB#4
10 A$="abcdefg"
20 P$[0]="FF99A5DBA599FFFF":C$[0]="0022446666442277"
30 P$[1]="1028A6F5EEBC3810":C$[1]="0000000000000000"
40 P$[2]="BFFDDFF7FFFDBFEF":C$[2]="7766555566777766"
50 P$[3]="0798B95656BDC43C":C$[3]="0000000000000000"
60 P$[4]="000799F6D6FD5878":C$[4]="0000000000000000"
70 P$[5]="70F8FCFCFCE49870":C$[5]="7777442222447777"
80 P$[6]="007CFEFFF39E7C00":C$[6]="7744220000224477"
90 FOR I=0 TO LEN(A$)
100 B=ASC(MID$(A$,I,1))
110 PCGSET B,P$[I]
120 PCGSDGSET B,C$[I]
130 NEXT
150 RETURN
UMIBASIC:END

UMIBASIC:MB#5
10 L$@[ 0]="bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb"
11 L$@[ 1]="bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb"
12 L$@[ 2]="bbbbbb bb bbbbbb"
13 L$@[ 3]="bbbbbb bbbbbbbbbb bb bbbbbbbbbb bbbbbbbb"
14 L$@[ 4]="bbbbbb bb bbbbbb"
15 L$@[ 5]="bbbbbbbbbbbbb bbbbbbbbbbb bbbbbbbb bbbbbbbbbbbb"
16 L$@[ 6]="bbbbbb bbbbbb"
17 L$@[ 7]="bbbbbb b b bbbb ccc bbbbbb"
18 L$@[ 8]="bbbbbb b b b c c bbbbbbb bbbbbb"
19 L$@[ 9]="bbbbbb bbbbb bbbb c c bbbbbb"
20 L$@[10]="bbbbbb b b b ccc bbbb bbbbb bbbbbb"
21 L$@[11]="bbbbbb b b bbbb c bbbbbb"
22 L$@[12]="bbbbbb cccccccccccc"
23 L$@[13]="bbbbbb cccccc cccccccccccc"
24 L$@[14]="bbbbbb cccccccccccccccccccccccccccc"
25 L$@[15]="bbbbbbbbbbbbbbbbb cccccccccccc"
26 L$@[16]="bbbbbbbbbbbb cccccccccccccccccc"
27 L$@[17]="bbbbbbb cccccccccccccccccccccccc"
28 L$@[18]="cccccccccccccccccccccccccccccccccccccccccccccccccc"
29 L$@[19]="cccccccccccccccccccccccccccccccccccccccccccccccccc"
100 RETURN
UMIBASIC:END

UMIBASIC:MB#6
10 CLS:CLEAR
20 WIDTH 40
30 A$[0]="fgf fhf fgf fhf "
40 A$[1]="qrstuqrstuqrstuqrstuqrstuqrstuqrstuqrstuqrstuqrstuqr"
80 B$[0]="ba":B$[1]="ca"
90 C$[0]="d":C$[1]="e"

190 GOSUB #7
200 X=8:Y=2:E=1:F=20:L=2
300 B=-(B=0)
305 A$[0]=MID$(A$[0],1,18+F)+MID$(A$[0],0,1)
307 A$[1]=MID$(A$[1],2,17+F)+MID$(A$[1],0,2)
310 FOR I=0 TO 4
320 LOCATE 0,I+E:VPRINT A$[0];
330 NEXT
340 LOCATE 0,5+E:VPRINT A$[1];
400 FOR I=0 TO L
430 IF C[I]=0 THEN GOTO 495
440 X[I+1]=X[I+1]+2:IF X[I+1]>17+F THEN C[I]=0:X[I+1]=17+F
450 LOCATE X[I+1],Y[I+1]+E:VPRINT C$[B];

495 NEXT
500 FOR I=1 TO 3
510 IF E[I]=1 THEN GOSUB 550:GOTO 690
512 IF E[I]=2 THEN GOSUB 600:GOTO 690
514 IF E[I]=3 THEN GOSUB 650:GOTO 690
520 IF RND#(10) > 2 THEN GOTO 690
530 E[I]=RND#(2)+1
535 IF E[I]=1 THEN X[10+I]=17+F:Y[10+I]=RND#(5):Z[10+I]=RND#(1)+1
537 IF E[I]=1 THEN W[10+I]=1:E$[I*2]="i":E$[I*2+1]="j":GOTO 690
540 IF E[I]=2 THEN X[10+I]=0:Y[10+I]=RND#(5):Z[10+I]=RND#(1)+1
542 IF E[I]=2 THEN E$[I*2]="ck":E$[I*2+1]="bl":GOTO 690
545 GOTO 690

550 X[10+I]=X[10+I]-Z[10+I]:IF X[10+I]<0 THEN X[10+I]=0:E[I]=0:GOTO 595
560 Y[10+I]=Y[10+I]+W[10+I]
565 IF Y[10+I]<0 | Y[10+I]>4 THEN W[10+I]=-W[10+I]:Y[10+I]=Y[10+I]+W[10+I]
580 LOCATE X[10+I],Y[10+I]+E:VPRINT E$[I*2+B];
595 RETURN

600 X[10+I]=X[10+I]+Z[10+I]:IF X[10+I]>17+F THEN X[10+I]=18+F:E[I]=0:GOTO 645
605 LOCATE X[10+I],Y[10+I]+E:VPRINT E$[I*2+B];
645 RETURN

650 IF X[10+I]<0 THEN X[10+I]=0:E[I]=0:GOTO 685
655 G=G-1:IF G<0 THEN G=0:E[I]=0:GOTO 685
660 LOCATE X[10+I],Y[10+I]+E:VPRINT MID$("ponm",G,1);
685 RETURN

690 NEXT

700 FOR I=0 TO L
710 FOR J=1 TO 3
720 IF E[J]=0 | E[J]=3 THEN GOTO 760
730 IF Y[I+1]<>Y[10+J] THEN GOTO 760
740 IF X[I+1]<>X[10+J] THEN GOTO 760
750 E[J]=3:E$[J*2]="*":E$[J*2+1]="+":G=5:C[I]=0
755 S=S+J*10
760 NEXT
770 NEXT

800 IF B=0 & C[D]=0 THEN C[D]=1:X[D+1]=X+1:Y[D+1]=Y:D=-(D+1)*(D" & X>0 )-(K$="" & X<10)
920 Y=Y+(K$="" & Y>0 )-(K$="" & Y<4 )
1000 VDRAW
1010 IF K$<>"" THEN GOTO 300
1020 FOR I=0 TO 1:I=-(INKEY$=""):NEXT
1030 CLS:GOTO #1
UMIBASIC:END

UMIBASIC:MB#7
10 A$="abcdefghijklmnop"
20 P$[0]="495E3C3028183020":C$[0]="0000000000000000"
30 P$[1]="001818245A241800":C$[1]="2222222222222222"
40 P$[2]="08002400815A0018":C$[2]="5555555555555555"
50 P$[3]="1000100010001000":C$[3]="0000000000000000"
60 P$[4]="0010001000100010":C$[4]="0000000000000000"
70 P$[5]="0140000800100280":C$[5]="7777777777777777"
80 P$[6]="0140000800100280":C$[6]="4444444444444444"
90 P$[7]="0140000800100280":C$[7]="1111111111111111"
91 P$[8]="109C7E1E1E7E9C10":C$[8]="7744331111444477"
92 P$[9]="907C927E1E167C90":C$[9]="7744331111444477"
93 P$[10]="99C35A245A5A4242":C$[10]="1111111111111111"
94 P$[11]="3C243C2418181818":C$[11]="1111111111111111"
95 P$[12]="0042001818044000":C$[12]="0000000000000000"
96 P$[13]="0000180424180000":C$[13]="0000000000000000"
97 P$[14]="0018140642341800":C$[14]="0000000000000000"
98 P$[15]="1802000101C00218":C$[15]="0000000000000000"

100 FOR I=0 TO LEN(A$)
110 B=ASC(MID$(A$,I,1))
120 PCGSET B,P$[I]
130 PCGSDGSET B,C$[I]
140 NEXT
150 RETURN
UMIBASIC:END