Compare commits
2 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
3a44094757 | ||
|
|
ee82c35364 |
95
janken.wb
Normal file
95
janken.wb
Normal file
@@ -0,0 +1,95 @@
|
|||||||
|
100 rem じゃんけんゲーム for ワンべぇ
|
||||||
|
110 rem Nov.6,2000 by autumn
|
||||||
|
200 T=40 'waitvbする長さ
|
||||||
|
900 randomize tick
|
||||||
|
1000 cls
|
||||||
|
1010 print " ■ ■ ■"
|
||||||
|
1020 print " ■ ■ ■ ■"
|
||||||
|
1030 print " ■ ■ ■"
|
||||||
|
1040 print " ■ ■■ ■ ■■ ■"
|
||||||
|
1050 print " ■ ■ ■ ■"
|
||||||
|
1060 print " ■ ■ ■■■ ■"
|
||||||
|
1070 print " ■ ■■ ■ ■ ■ ■"
|
||||||
|
1080 print " ■ ■■ ■ ■■■ ■"
|
||||||
|
1090 print " ■ ■■ ■ ■ ■ ■"
|
||||||
|
1100 print " ■ ■ ■ ■■ ■ ■ ■"
|
||||||
|
1110 print " ■ ■ ■■■ ■ ■ ■■"
|
||||||
|
1120 print " ■ ■■ ■ ■ ■ ■"
|
||||||
|
1130 print " ■■■■■ ■ ■ ■■■"
|
||||||
|
1140 print " ■■ ■ ■"
|
||||||
|
1200 waitvb T
|
||||||
|
2000 cls
|
||||||
|
2010 print " ■ ■"
|
||||||
|
2020 print " ■ ■ ■"
|
||||||
|
2030 print " ■ ■ ■"
|
||||||
|
2040 print " ■■ ■ ■"
|
||||||
|
2050 print " ■ ■■■■■■■ ■"
|
||||||
|
2060 print " ■ ■■■■ ■"
|
||||||
|
2070 print " ■ ■ ■■■ ■"
|
||||||
|
2080 print " ■ ■ ■■■■ ■"
|
||||||
|
2090 print " ■ ■ ■ ■ ■"
|
||||||
|
2100 print " ■ ■ ■ ■■ ■"
|
||||||
|
2110 print " ■ ■ ■ ■ ■"
|
||||||
|
2120 print " ■ ■ ■ ■ ■■"
|
||||||
|
2130 print " ■ ■■ ■ ■■■"
|
||||||
|
2140 print " ■ ■"
|
||||||
|
2200 waitvb T
|
||||||
|
3000 a=rnd(3)
|
||||||
|
3010 goto 4000+(a*1000)
|
||||||
|
4000 cls
|
||||||
|
4010 print " ■"
|
||||||
|
4020 print " ■ ■ ■■■■■■"
|
||||||
|
4030 print " ■■ ■ ■■■■"
|
||||||
|
4040 print " ■■ ■ ■"
|
||||||
|
4050 print " ■■ ■"
|
||||||
|
4060 print " ■ ■ ■■■■■"
|
||||||
|
4070 print " ■ ■■■■■■■"
|
||||||
|
4080 print " ■■ ■ ■■"
|
||||||
|
4090 print " ■■ ■■"
|
||||||
|
4100 print " ■■ ■■"
|
||||||
|
4110 print " ■■ ■■"
|
||||||
|
4120 print " ■ ■"
|
||||||
|
4130 print " ■■ ■■"
|
||||||
|
4140 print " ■■ ■■■"
|
||||||
|
4150 print " ■■ ■■■"
|
||||||
|
4160 print " ■"
|
||||||
|
4200 goto 7000
|
||||||
|
5000 cls
|
||||||
|
5010 print " ■"
|
||||||
|
5020 print " ■ ■"
|
||||||
|
5030 print " ■ ■ ■"
|
||||||
|
5040 print " ■ ■■ ■■■■■■"
|
||||||
|
5050 print "■■■■■ ■ ■■ ■"
|
||||||
|
5060 print " ■ ■ ■ ■■"
|
||||||
|
5070 print " ■ ■ ■■■■■■"
|
||||||
|
5080 print " ■ ■■■ ■■ ■"
|
||||||
|
5090 print " ■■■■■ ■ ■"
|
||||||
|
5100 print " ■■ ■ ■ ■■■■■"
|
||||||
|
5110 print "■■ ■ ■ ■■ ■"
|
||||||
|
5120 print "■ ■ ■■■■ ■"
|
||||||
|
5130 print " ■ ■ ■■■ ■"
|
||||||
|
5140 print " ■■■ ■ ■ ■ ■■"
|
||||||
|
5150 print " ■■■ ■■ ■■■■"
|
||||||
|
5160 print " ■■■"
|
||||||
|
5200 goto 7000
|
||||||
|
6000 cls
|
||||||
|
6010 print " ■■■ ■"
|
||||||
|
6020 print " ■ ■■■ ■ ■"
|
||||||
|
6030 print " ■ ■ ■ ■ ■"
|
||||||
|
6040 print " ■ ■ ■ ■■■■■■■"
|
||||||
|
6050 print " ■ ■■■■■■■ ■■■ ■"
|
||||||
|
6060 print " ■■ ■■■■■ ■ ■"
|
||||||
|
6070 print " ■ ■ ■■■■■"
|
||||||
|
6080 print " ■ ■ ■■■■■■"
|
||||||
|
6090 print " ■ ■ ■■ ■ ■"
|
||||||
|
6100 print " ■ ■ ■■ ■ ■ ■"
|
||||||
|
6110 print " ■ ■■■■ ■ ■■ ■"
|
||||||
|
6120 print " ■ ■■ ■■ ■ ■■ ■"
|
||||||
|
6130 print " ■ ■ ■■■ ■ ■ ■"
|
||||||
|
6140 print " ■■ ■■■ ■ ■ ■■■ ■■"
|
||||||
|
6150 print " ■■ ■■ ■■■"
|
||||||
|
6160 print " ■"
|
||||||
|
7000 locate 0,16:print " **PUSH START TO EXIT**";
|
||||||
|
7010 locate 0,17:print "**ANOTHER BUTTON TO AGAIN**";
|
||||||
|
7100 d=wait
|
||||||
|
7200 goto 1000
|
||||||
78
shoot.wb
Normal file
78
shoot.wb
Normal file
@@ -0,0 +1,78 @@
|
|||||||
|
1000 rem シューティング by ワンべぇ
|
||||||
|
1005 rem Nov.7,2000 by autumn
|
||||||
|
1010 rem a,b 自機座標
|
||||||
|
1020 rem c,d 自ミサイル座標
|
||||||
|
1030 rem e,f 敵座標
|
||||||
|
1040 rem @(n*2*0),@(n*2+1) 敵ミサイル座標(nは0~7)
|
||||||
|
1050 rem g ミサイル生成カウンタ
|
||||||
|
1060 rem h ミサイル生成タイミングカウンタ
|
||||||
|
2000 rem 座標の初期化
|
||||||
|
2010 a=14:b=16
|
||||||
|
2020 c=-1:d=-1
|
||||||
|
2030 e=15:f=2
|
||||||
|
2040 for i=0 to 7:@(i*2)=-1:@(i*2+1)=-1:next
|
||||||
|
2050 g=0:h=0
|
||||||
|
3000 rem 開始を待つ
|
||||||
|
3010 cls
|
||||||
|
3020 locate 3,6:print "PUSH BUTTON TO START"
|
||||||
|
3030 locate 3,10:print " (NOT START BUTTON)"
|
||||||
|
3040 z=wait
|
||||||
|
3050 cls:locate 10,8:print "GO!";
|
||||||
|
3060 waitvb 30
|
||||||
|
4000 rem 表示を更新
|
||||||
|
4010 cls
|
||||||
|
4020 locate a,b:print "▲";
|
||||||
|
4030 locate e,f:print "▼";
|
||||||
|
4040 if c>=0 then locate c,d:print "|";
|
||||||
|
4050 for i=0 to 7
|
||||||
|
4060 if @(i*2)>=0 then locate @(i*2),@(i*2+1):print "*"
|
||||||
|
4070 next
|
||||||
|
5000 rem 当たり判定
|
||||||
|
5010 if (c=e)and(d=f) then goto 8000 '自ミサイルが命中・勝利
|
||||||
|
5020 for i=0 to 7
|
||||||
|
5030 if (a=@(i*2))and(b=@(i*2+1)) then goto 9000 '敵ミサイルが命中・敗北
|
||||||
|
5040 next
|
||||||
|
6000 rem 敵移動処理
|
||||||
|
6010 r=rnd(2)
|
||||||
|
6020 if (r=0)and(e<26) then e=e+1
|
||||||
|
6030 if (r<>0)and(e>0) then e=e-1
|
||||||
|
6100 rem 敵ミサイル移動処理
|
||||||
|
6110 for i=0 to 7
|
||||||
|
6120 @(i*2+1)=@(i*2+1)+1
|
||||||
|
6130 if @(i*2+1)>16 then @(i*2)=-1:@(i*2+1)=-1
|
||||||
|
6140 next
|
||||||
|
6200 rem 敵ミサイル生成処理
|
||||||
|
6210 h=h+1
|
||||||
|
6220 if h>3 then h=0
|
||||||
|
6230 if h<>0 then goto 6300
|
||||||
|
6240 @(g*2)=e:@(g*2+1)=f+1 '新しいミサイル
|
||||||
|
6250 g=g+1:if g>7 then g=0
|
||||||
|
6300 rem 自機移動処理
|
||||||
|
6310 s=scan
|
||||||
|
6320 if s and scan_x2 then if a<26 then a=a+1
|
||||||
|
6330 if s and scan_x4 then if a>0 then a=a-1
|
||||||
|
6400 rem 自ミサイル移動処理
|
||||||
|
6410 if c>=0 then d=d-1:if d<0 then c=-1:d=-1
|
||||||
|
6500 rem 自ミサイル発射処理
|
||||||
|
6510 if s and scan_a then if c<0 then c=a:d=b-1
|
||||||
|
6800 waitvb 3
|
||||||
|
6900 goto 4000
|
||||||
|
8000 rem 勝利
|
||||||
|
8010 X=e:Y=f:gosub 10000
|
||||||
|
8020 locate 10,10:print "YOU WIN!"
|
||||||
|
8030 goto 9500
|
||||||
|
9000 rem 敗北
|
||||||
|
9010 X=a:Y=b:gosub 10000
|
||||||
|
9020 locate 10,10:print "YOU LOSE..."
|
||||||
|
9500 locate 0,12:print "PUSH START BUTTON TO EXIT"
|
||||||
|
9510 locate 0,13:print " ANOTHER IS AGAIN"
|
||||||
|
9520 z=wait
|
||||||
|
9900 goto 2000
|
||||||
|
10000 rem 爆発表現
|
||||||
|
10010 for i=0 to 9
|
||||||
|
10020 locate X,Y:print "+";
|
||||||
|
10030 waitvb 10
|
||||||
|
10040 locate X,Y:print "×";
|
||||||
|
10050 waitvb 10
|
||||||
|
10060 next
|
||||||
|
10090 return
|
||||||
165
wonbe.c
165
wonbe.c
@@ -18,7 +18,7 @@
|
|||||||
#include "win32text.h"
|
#include "win32text.h"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
char myVersion[] = "0.01";
|
char myVersion[] = "0.03";
|
||||||
|
|
||||||
#ifdef WW
|
#ifdef WW
|
||||||
#define MEMMOVE mymemmove
|
#define MEMMOVE mymemmove
|
||||||
@@ -163,7 +163,6 @@ KEYWORDITEM keywords[] = {
|
|||||||
{ KEYWORD_OR,"or" },
|
{ KEYWORD_OR,"or" },
|
||||||
{ KEYWORD_XOR,"xor" },
|
{ KEYWORD_XOR,"xor" },
|
||||||
{ KEYWORD_NOT,"not" },
|
{ KEYWORD_NOT,"not" },
|
||||||
{ KEYWORD_SCAN,"scan" },
|
|
||||||
{ KEYWORD_WAIT,"wait" },
|
{ KEYWORD_WAIT,"wait" },
|
||||||
{ KEYWORD_RND,"rnd" },
|
{ KEYWORD_RND,"rnd" },
|
||||||
{ KEYWORD_ABS,"abs" },
|
{ KEYWORD_ABS,"abs" },
|
||||||
@@ -178,6 +177,7 @@ KEYWORDITEM keywords[] = {
|
|||||||
{ KEYWORD_SCAN_Y2,"scan_y2" },
|
{ KEYWORD_SCAN_Y2,"scan_y2" },
|
||||||
{ KEYWORD_SCAN_Y3,"scan_y3" },
|
{ KEYWORD_SCAN_Y3,"scan_y3" },
|
||||||
{ KEYWORD_SCAN_Y4,"scan_y4" },
|
{ KEYWORD_SCAN_Y4,"scan_y4" },
|
||||||
|
{ KEYWORD_SCAN,"scan" }, /* scanはscna_Xより後になければならない */
|
||||||
{ KEYWORD_THEN,"then" },
|
{ KEYWORD_THEN,"then" },
|
||||||
{ KEYWORD_CHR,"chr" },
|
{ KEYWORD_CHR,"chr" },
|
||||||
{ KEYWORD_TO,"to" },
|
{ KEYWORD_TO,"to" },
|
||||||
@@ -795,7 +795,7 @@ SHORT calcValue()
|
|||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
SHORT expr()
|
SHORT expr4th()
|
||||||
{
|
{
|
||||||
SHORT acc;
|
SHORT acc;
|
||||||
acc = calcValue();
|
acc = calcValue();
|
||||||
@@ -808,12 +808,6 @@ SHORT expr()
|
|||||||
if( ch != ' ' && ch != '\t' ) break;
|
if( ch != ' ' && ch != '\t' ) break;
|
||||||
}
|
}
|
||||||
switch( ch ) {
|
switch( ch ) {
|
||||||
case '+':
|
|
||||||
acc = acc + calcValue();
|
|
||||||
break;
|
|
||||||
case '-':
|
|
||||||
acc = acc - calcValue();
|
|
||||||
break;
|
|
||||||
case '*':
|
case '*':
|
||||||
acc = acc * calcValue();
|
acc = acc * calcValue();
|
||||||
break;
|
break;
|
||||||
@@ -828,15 +822,54 @@ SHORT expr()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case KEYWORD_AND:
|
default:
|
||||||
acc = acc & calcValue();
|
executionPointer--; /* unget it */
|
||||||
|
return acc;
|
||||||
|
}
|
||||||
|
if( bForceToReturnSuper ) return -1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
SHORT expr3nd()
|
||||||
|
{
|
||||||
|
SHORT acc;
|
||||||
|
acc = expr4th();
|
||||||
|
if( bForceToReturnSuper ) return -1;
|
||||||
|
|
||||||
|
while( TRUE ) {
|
||||||
|
BYTE ch;
|
||||||
|
while( TRUE ) {
|
||||||
|
ch = *executionPointer++;
|
||||||
|
if( ch != ' ' && ch != '\t' ) break;
|
||||||
|
}
|
||||||
|
switch( ch ) {
|
||||||
|
case '+':
|
||||||
|
acc = acc + expr4th();
|
||||||
break;
|
break;
|
||||||
case KEYWORD_OR:
|
case '-':
|
||||||
acc = acc | calcValue();
|
acc = acc - expr4th();
|
||||||
break;
|
|
||||||
case KEYWORD_XOR:
|
|
||||||
acc = acc ^ calcValue();
|
|
||||||
break;
|
break;
|
||||||
|
default:
|
||||||
|
executionPointer--; /* unget it */
|
||||||
|
return acc;
|
||||||
|
}
|
||||||
|
if( bForceToReturnSuper ) return -1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
SHORT expr2nd()
|
||||||
|
{
|
||||||
|
SHORT acc;
|
||||||
|
acc = expr3nd();
|
||||||
|
if( bForceToReturnSuper ) return -1;
|
||||||
|
|
||||||
|
while( TRUE ) {
|
||||||
|
BYTE ch;
|
||||||
|
while( TRUE ) {
|
||||||
|
ch = *executionPointer++;
|
||||||
|
if( ch != ' ' && ch != '\t' ) break;
|
||||||
|
}
|
||||||
|
switch( ch ) {
|
||||||
case '>':
|
case '>':
|
||||||
{
|
{
|
||||||
BYTE ch2;
|
BYTE ch2;
|
||||||
@@ -845,10 +878,12 @@ SHORT expr()
|
|||||||
if( ch2 != ' ' && ch2 != '\t' ) break;
|
if( ch2 != ' ' && ch2 != '\t' ) break;
|
||||||
}
|
}
|
||||||
if( ch2 == '=' ) {
|
if( ch2 == '=' ) {
|
||||||
acc = (acc >= calcValue());
|
acc = (acc >= expr3nd());
|
||||||
|
if( acc != 0 ) acc = -1;
|
||||||
} else {
|
} else {
|
||||||
executionPointer--;
|
executionPointer--;
|
||||||
acc = (acc > calcValue());
|
acc = (acc > expr3nd());
|
||||||
|
if( acc != 0 ) acc = -1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
@@ -860,17 +895,51 @@ SHORT expr()
|
|||||||
if( ch2 != ' ' && ch2 != '\t' ) break;
|
if( ch2 != ' ' && ch2 != '\t' ) break;
|
||||||
}
|
}
|
||||||
if( ch2 == '=' ) {
|
if( ch2 == '=' ) {
|
||||||
acc = (acc <= calcValue());
|
acc = (acc <= expr3nd());
|
||||||
|
if( acc != 0 ) acc = -1;
|
||||||
} else if( ch2 == '>' ) {
|
} else if( ch2 == '>' ) {
|
||||||
acc = (acc != calcValue());
|
acc = (acc != expr3nd());
|
||||||
|
if( acc != 0 ) acc = -1;
|
||||||
} else {
|
} else {
|
||||||
executionPointer--;
|
executionPointer--;
|
||||||
acc = (acc < calcValue());
|
acc = (acc < expr3nd());
|
||||||
|
if( acc != 0 ) acc = -1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case '=':
|
case '=':
|
||||||
acc = (acc == calcValue());
|
acc = (acc == expr3nd());
|
||||||
|
if( acc != 0 ) acc = -1;
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
executionPointer--; /* unget it */
|
||||||
|
return acc;
|
||||||
|
}
|
||||||
|
if( bForceToReturnSuper ) return -1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
SHORT expr()
|
||||||
|
{
|
||||||
|
SHORT acc;
|
||||||
|
acc = expr2nd();
|
||||||
|
if( bForceToReturnSuper ) return -1;
|
||||||
|
|
||||||
|
while( TRUE ) {
|
||||||
|
BYTE ch;
|
||||||
|
while( TRUE ) {
|
||||||
|
ch = *executionPointer++;
|
||||||
|
if( ch != ' ' && ch != '\t' ) break;
|
||||||
|
}
|
||||||
|
switch( ch ) {
|
||||||
|
case KEYWORD_AND:
|
||||||
|
acc = acc & expr2nd();
|
||||||
|
break;
|
||||||
|
case KEYWORD_OR:
|
||||||
|
acc = acc | expr2nd();
|
||||||
|
break;
|
||||||
|
case KEYWORD_XOR:
|
||||||
|
acc = acc ^ expr2nd();
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
executionPointer--; /* unget it */
|
executionPointer--; /* unget it */
|
||||||
@@ -982,7 +1051,7 @@ void printOrDebug( BOOL bPrint )
|
|||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
{
|
{
|
||||||
WORD val;
|
SHORT val;
|
||||||
#ifdef WW
|
#ifdef WW
|
||||||
static
|
static
|
||||||
#endif
|
#endif
|
||||||
@@ -1183,6 +1252,20 @@ void st_next()
|
|||||||
}
|
}
|
||||||
/* count step and loop again */
|
/* count step and loop again */
|
||||||
*(stacks[stackPointer-1].pvar) += stacks[stackPointer-1].step;
|
*(stacks[stackPointer-1].pvar) += stacks[stackPointer-1].step;
|
||||||
|
/* counter overflow? */
|
||||||
|
if( stacks[stackPointer-1].step > 0 ) {
|
||||||
|
if( stacks[stackPointer-1].limit < *(stacks[stackPointer-1].pvar) ) {
|
||||||
|
/* loop done */
|
||||||
|
stackPointer--;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
if( stacks[stackPointer-1].limit > *(stacks[stackPointer-1].pvar) ) {
|
||||||
|
/* loop done */
|
||||||
|
stackPointer--;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
executionPointer = stacks[stackPointer-1].returnPointer;
|
executionPointer = stacks[stackPointer-1].returnPointer;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1456,7 +1539,7 @@ void editLine()
|
|||||||
delta = from-target;
|
delta = from-target;
|
||||||
MEMMOVE( target, from, (WORD)(dataTop-(from-wa)) );
|
MEMMOVE( target, from, (WORD)(dataTop-(from-wa)) );
|
||||||
dataTop -= delta;
|
dataTop -= delta;
|
||||||
clearRuntimeInfo();
|
/*clearRuntimeInfo();*/
|
||||||
} else {
|
} else {
|
||||||
WORD len;
|
WORD len;
|
||||||
len = skipToEOL(waCoockedLine+2)-waCoockedLine+1;
|
len = skipToEOL(waCoockedLine+2)-waCoockedLine+1;
|
||||||
@@ -1472,7 +1555,7 @@ void editLine()
|
|||||||
MEMMOVE( target+len, target, (WORD)(dataTop-(target-wa)) );
|
MEMMOVE( target+len, target, (WORD)(dataTop-(target-wa)) );
|
||||||
MEMMOVE( target, waCoockedLine, len );
|
MEMMOVE( target, waCoockedLine, len );
|
||||||
dataTop += len;
|
dataTop += len;
|
||||||
clearRuntimeInfo();
|
/*clearRuntimeInfo();*/
|
||||||
} else {
|
} else {
|
||||||
/* replace line */
|
/* replace line */
|
||||||
WORD lost;
|
WORD lost;
|
||||||
@@ -1488,7 +1571,7 @@ void editLine()
|
|||||||
MEMMOVE( nextline+delta, nextline, (WORD)(dataTop-(nextline-wa)) );
|
MEMMOVE( nextline+delta, nextline, (WORD)(dataTop-(nextline-wa)) );
|
||||||
MEMMOVE( target, waCoockedLine, len );
|
MEMMOVE( target, waCoockedLine, len );
|
||||||
dataTop += delta;
|
dataTop += delta;
|
||||||
clearRuntimeInfo();
|
/*clearRuntimeInfo();*/
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1540,14 +1623,36 @@ BOOL convertInternalCode( BYTE * waCoockedLine, const BYTE * waRawLine )
|
|||||||
acc *= 10;
|
acc *= 10;
|
||||||
acc += *src - '0';
|
acc += *src - '0';
|
||||||
src++;
|
src++;
|
||||||
}
|
|
||||||
if( acc < 0 ) { /* overflow case */
|
if( acc < 0 ) { /* overflow case */
|
||||||
syntaxError();
|
syntaxError();
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
*((SHORT*)dst) = acc;
|
*((SHORT*)dst) = acc;
|
||||||
dst += 2;
|
dst += 2;
|
||||||
}
|
}
|
||||||
|
#if 0
|
||||||
|
/* 以下のコードは、2項演算子の-を負数と解釈することがあるので使えない */
|
||||||
|
} else if( *src == '-' && (*(src+1) >= '0' && *(src+1) <= '9' ) ) {
|
||||||
|
WORD acc;
|
||||||
|
/* 負数の10進のとき */
|
||||||
|
*dst++ = 0x01;
|
||||||
|
src++;
|
||||||
|
acc = *src-'0';
|
||||||
|
src++;
|
||||||
|
while( TRUE ) {
|
||||||
|
if( *src < '0' || *src > '9' ) break;
|
||||||
|
acc *= 10;
|
||||||
|
acc += *src - '0';
|
||||||
|
src++;
|
||||||
|
if( acc > 32768 ) { /* overflow case */
|
||||||
|
syntaxError();
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
*((SHORT*)dst) = -((SHORT)acc);
|
||||||
|
dst += 2;
|
||||||
|
#endif
|
||||||
} else if( (*src >= 'a' && *src <= 'z') || (*src >= 'A' && *src <= 'Z') ) {
|
} else if( (*src >= 'a' && *src <= 'z') || (*src >= 'A' && *src <= 'Z') ) {
|
||||||
BYTE next = *(src+1);
|
BYTE next = *(src+1);
|
||||||
if( (next >= 'a' && next <= 'z') || (next >= 'A' && next <= 'Z') ) {
|
if( (next >= 'a' && next <= 'z') || (next >= 'A' && next <= 'Z') ) {
|
||||||
@@ -1701,7 +1806,7 @@ void interpreterMain()
|
|||||||
void interactiveMain( FILE FAR * fp )
|
void interactiveMain( FILE FAR * fp )
|
||||||
{
|
{
|
||||||
if( fp == NULL ) {
|
if( fp == NULL ) {
|
||||||
commonPrint(NULL,"*Ready\n");
|
commonPrint(NULL,"OK\n");
|
||||||
}
|
}
|
||||||
while( TRUE ) {
|
while( TRUE ) {
|
||||||
BOOL b;
|
BOOL b;
|
||||||
@@ -1737,6 +1842,9 @@ void interactiveMain( FILE FAR * fp )
|
|||||||
if( waCoockedLine[0] == 0x01 ) {
|
if( waCoockedLine[0] == 0x01 ) {
|
||||||
/* 行エディタを呼び出す */
|
/* 行エディタを呼び出す */
|
||||||
editLine();
|
editLine();
|
||||||
|
if( fp == NULL ) {
|
||||||
|
clearRuntimeInfo();
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
/* その行を実行する */
|
/* その行を実行する */
|
||||||
executionPointer = waCoockedLine;
|
executionPointer = waCoockedLine;
|
||||||
@@ -1785,6 +1893,7 @@ BOOL do_merge( const BYTE * filename )
|
|||||||
}
|
}
|
||||||
interactiveMain( fp );
|
interactiveMain( fp );
|
||||||
fclose( fp );
|
fclose( fp );
|
||||||
|
clearRuntimeInfo();
|
||||||
if( bForceToReturnSuper ) return FALSE;
|
if( bForceToReturnSuper ) return FALSE;
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|||||||
23
wonbe.txt
23
wonbe.txt
@@ -1,6 +1,6 @@
|
|||||||
ワンべぇ: WONBE, WonderWitch BASIC Environment
|
ワンべぇ: WONBE, WonderWitch BASIC Environment
|
||||||
暫定マニュアル Ver 0.01
|
暫定マニュアル Ver 0.03
|
||||||
2000年11月6日
|
2000年11月7日
|
||||||
株式会社ピーデー
|
株式会社ピーデー
|
||||||
川俣 晶
|
川俣 晶
|
||||||
Copyright 2000 (c) by Pie Dey Co.Ltd.
|
Copyright 2000 (c) by Pie Dey Co.Ltd.
|
||||||
@@ -44,12 +44,12 @@
|
|||||||
ごく軽いBASIC言語です。
|
ごく軽いBASIC言語です。
|
||||||
昔あったTiny BASICに近い構文を持っています。
|
昔あったTiny BASICに近い構文を持っています。
|
||||||
データ型は、符号付き16bit整数だけです。
|
データ型は、符号付き16bit整数だけです。
|
||||||
定数は、-32768~32767の10進数か、0x0000~0xffffの16進数で記述できます。
|
定数は、-32767~32767の10進数か、0x0000~0xffffの16進数で記述できます。-32768は変数には記憶できますが、ソースには書けません。(-32767-1のように書いてください)
|
||||||
変数は、グローバル変数として、A~Zのアルファベット大文字1文字のものが26個あります。
|
変数は、グローバル変数として、A~Zのアルファベット大文字1文字のものが26個あります。
|
||||||
ローカル変数として、a~zのアルファベット子文字1文字のものが26個あります。ローカル変数はgosubステートメントを実行したときに新しい領域が割り当てられ、returnステートメントを実行したときにgosubする前の領域が戻ってきます。
|
ローカル変数として、a~zのアルファベット子文字1文字のものが26個あります。ローカル変数はgosubステートメントを実行したときに新しい領域が割り当てられ、returnステートメントを実行したときにgosubする前の領域が戻ってきます。
|
||||||
配列変数は@(インデックス)という形式の1次元配列だけが使用できます。使用可能なサイズは、プログラム記憶領域(48Kバイト)の残りサイズに等しくなります。インデックスは0から始まります。(例: for i=0 to 9:print @(i):next)
|
配列変数は@(インデックス)という形式の1次元配列だけが使用できます。使用可能なサイズは、プログラム記憶領域(48Kバイト)の残りサイズに等しくなります。インデックスは0から始まります。(例: for i=0 to 9:print @(i):next)
|
||||||
演算子の優先順位はありません。(1+2*3は9になります)
|
演算子の優先順位は「単項演算子 > */ > +- > 比較演算子 > and,or,xor」となります。(比較演算子は、<と>と=で記述する演算子すべて)
|
||||||
計算順序は、括弧()を使って明示的にコントロールしてください。
|
計算順序は、括弧()を使って明示的に変更できます。
|
||||||
オーバーフロー、アンダーフローのチェックはありません。溢れは無視されます。ただしゼロ除算はエラーになります。
|
オーバーフロー、アンダーフローのチェックはありません。溢れは無視されます。ただしゼロ除算はエラーになります。
|
||||||
ステートメントなどのキーワードはすべてアルファベット小文字で入力します。大文字を使っても小文字になります。
|
ステートメントなどのキーワードはすべてアルファベット小文字で入力します。大文字を使っても小文字になります。
|
||||||
|
|
||||||
@@ -96,7 +96,7 @@ return
|
|||||||
for 変数=式 to 式
|
for 変数=式 to 式
|
||||||
for 変数=式 to 式 step 式
|
for 変数=式 to 式 step 式
|
||||||
変数の値を変化させながらnextまで繰り返します。
|
変数の値を変化させながらnextまで繰り返します。
|
||||||
終了値は厳密であることに注意が必要です。for i=1 to 2 step 2:nextは、無限ループになります。なぜなら変数iは永遠に2にならないからです。このような仕様にしておかないと、終了値を超えたら終わるという判定だと、ループの終値が32767のときに機能しないためです。
|
最後の変数の値が終値に一致せず、終値+ステップ値がオーバーフローする場合は無限ループする可能性があります。そのような値は指定しないように注意してください。
|
||||||
例: for i=0 to 10 step 2
|
例: for i=0 to 10 step 2
|
||||||
|
|
||||||
next
|
next
|
||||||
@@ -219,6 +219,17 @@ tick
|
|||||||
・自作ソフトの実行手段としてのワンべぇの添付
|
・自作ソフトの実行手段としてのワンべぇの添付
|
||||||
自作ソフトを配布するためにwonbe.fxを一緒に渡すことを許可します。アーカイブへの同梱、CD-Rメディアなどへの焼き込み、通信ケーブルによる転送、どれも可です。ただし、ワンべぇの動作に関しては何も保証はできませんので、リスクは自分で負ってください。利用にあたっては、ロイヤリティなどはありませんので、報告も送金も必要ありません。
|
自作ソフトを配布するためにwonbe.fxを一緒に渡すことを許可します。アーカイブへの同梱、CD-Rメディアなどへの焼き込み、通信ケーブルによる転送、どれも可です。ただし、ワンべぇの動作に関しては何も保証はできませんので、リスクは自分で負ってください。利用にあたっては、ロイヤリティなどはありませんので、報告も送金も必要ありません。
|
||||||
|
|
||||||
|
● 変更履歴
|
||||||
|
|
||||||
|
2000年11月7日 Ver 0.03
|
||||||
|
・演算子の優先順位 単項演算子 > */ > +- > 比較演算子 > and,or,xor
|
||||||
|
・比較演算子成立時の値を1から-1に変更
|
||||||
|
・プロンプトをOKに変更
|
||||||
|
・print/debugで負数が正数として出力されていたバグを解消
|
||||||
|
・forの終値がピッタリ一致しなくてもnextでループ脱出するように変更
|
||||||
|
2000年11月7日 Ver 0.02 scan_XXが機能しないバグを取った
|
||||||
|
2000年11月6日 Ver 0.01 最初のバージョン
|
||||||
|
|
||||||
● 問い合わせ先
|
● 問い合わせ先
|
||||||
株式会社ピーデー http://www.piedey.co.jp/
|
株式会社ピーデー http://www.piedey.co.jp/
|
||||||
川俣 晶 autumn@piedey.co.jp
|
川俣 晶 autumn@piedey.co.jp
|
||||||
|
|||||||
Reference in New Issue
Block a user