- Operator precedence order Unary operator> * /> + -> Comparison operator> and, or, xor
- Change the value when the comparison operator is established from 1 to -1 - Change prompt to OK - Fixed a bug that negative numbers were output as positive numbers by print / debug - Changed so that loop can escape in next even if for closing price does not match exactly Version 0.03 - from wonbe003.lzh
This commit is contained in:
parent
ee82c35364
commit
3a44094757
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
|
||||||
59
keywords.h
Normal file
59
keywords.h
Normal file
@ -0,0 +1,59 @@
|
|||||||
|
/* WONBE predefined keyword IDs */
|
||||||
|
/* First Created: Nov.3,2000 by Nashiko */
|
||||||
|
/* Copyright 2000 (c) by Pie Dey Co.,Ltd. */
|
||||||
|
|
||||||
|
#define KEYWORD_IF 0x80
|
||||||
|
#define KEYWORD_PRINT 0x81
|
||||||
|
#define KEYWORD_LOCATE 0x82
|
||||||
|
#define KEYWORD_CLS 0x83
|
||||||
|
#define KEYWORD_GOTO 0x84
|
||||||
|
#define KEYWORD_GOSUB 0x85
|
||||||
|
#define KEYWORD_RETURN 0x86
|
||||||
|
#define KEYWORD_FOR 0x87
|
||||||
|
#define KEYWORD_NEXT 0x88
|
||||||
|
#define KEYWORD_END 0x89
|
||||||
|
#define KEYWORD_BREAK 0x8a
|
||||||
|
#define KEYWORD_REM 0x8b
|
||||||
|
#define KEYWORD_NEW 0x8c
|
||||||
|
#define KEYWORD_LIST 0x8d
|
||||||
|
#define KEYWORD_RUN 0x8e
|
||||||
|
#define KEYWORD_CONT 0x8f
|
||||||
|
#define KEYWORD_SAVE 0x90
|
||||||
|
#define KEYWORD_LOAD 0x91
|
||||||
|
#define KEYWORD_MERGE 0x92
|
||||||
|
#define KEYWORD_RANDOMIZE 0x93
|
||||||
|
#define KEYWORD_EXIT 0x94
|
||||||
|
#define KEYWORD_DEBUG 0x95
|
||||||
|
#define KEYWORD_WAITVB 0x96
|
||||||
|
#define KEYWORD_FILES 0x97
|
||||||
|
#define KEYWORD_AND 0xa0
|
||||||
|
#define KEYWORD_OR 0xa1
|
||||||
|
#define KEYWORD_XOR 0xa2
|
||||||
|
#define KEYWORD_NOT 0xb0
|
||||||
|
#define KEYWORD_SCAN 0xc0
|
||||||
|
#define KEYWORD_WAIT 0xc1
|
||||||
|
#define KEYWORD_RND 0xc2
|
||||||
|
#define KEYWORD_ABS 0xc3
|
||||||
|
#define KEYWORD_TICK 0xc4
|
||||||
|
#define KEYWORD_SCAN_A 0xd0
|
||||||
|
#define KEYWORD_SCAN_B 0xd1
|
||||||
|
#define KEYWORD_SCAN_X1 0xd2
|
||||||
|
#define KEYWORD_SCAN_X2 0xd3
|
||||||
|
#define KEYWORD_SCAN_X3 0xd4
|
||||||
|
#define KEYWORD_SCAN_X4 0xd5
|
||||||
|
#define KEYWORD_SCAN_Y1 0xd6
|
||||||
|
#define KEYWORD_SCAN_Y2 0xd7
|
||||||
|
#define KEYWORD_SCAN_Y3 0xd8
|
||||||
|
#define KEYWORD_SCAN_Y4 0xd9
|
||||||
|
#define KEYWORD_THEN 0xf0
|
||||||
|
#define KEYWORD_CHR 0xf1
|
||||||
|
#define KEYWORD_TO 0xf2
|
||||||
|
#define KEYWORD_STEP 0xf3
|
||||||
|
|
||||||
|
#define KEYWORDS_STATEMENT_FROM 0x80
|
||||||
|
#define KEYWORDS_STATEMENT_TO 0x97
|
||||||
|
#define KEYWORDS_2OP_FROM 0xa0
|
||||||
|
#define KEYWORDS_2OP_TO 0xa2
|
||||||
|
|
||||||
|
|
||||||
|
/* end of keywords.h */
|
||||||
23
makefile
Normal file
23
makefile
Normal file
@ -0,0 +1,23 @@
|
|||||||
|
|
||||||
|
# start up routine
|
||||||
|
C0WW_JAPANESE2=..\common\c0wwjpn2.obj
|
||||||
|
|
||||||
|
C0WW=$(C0WW_JAPANESE2)
|
||||||
|
|
||||||
|
LIBWW=@..\common\libww.rsp
|
||||||
|
|
||||||
|
CFLAGS=-DWW -ms -zPCGROUP -zSDGROUP -zGDGROUP
|
||||||
|
|
||||||
|
all: wonbe.fx
|
||||||
|
|
||||||
|
wonbe.fx: wonbe.bin
|
||||||
|
mkfent wonbe.cf
|
||||||
|
|
||||||
|
wonbe.bin: wonbe.obj
|
||||||
|
tlink /m /c $(C0WW) wonbe, wonbe, wonbe, $(LIBWW)
|
||||||
|
exe2fbin wonbe.exe wonbe.bin
|
||||||
|
|
||||||
|
wonbe.obj: wonbe.c
|
||||||
|
tcc -c $(CFLAGS) $(DEFINES) -IC:\vshare\ww\dev\WWitch\include wonbe.c
|
||||||
|
|
||||||
|
|
||||||
169
wonbe.c
169
wonbe.c
@ -18,7 +18,7 @@
|
|||||||
#include "win32text.h"
|
#include "win32text.h"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
char myVersion[] = "0.02";
|
char myVersion[] = "0.03";
|
||||||
|
|
||||||
#ifdef WW
|
#ifdef WW
|
||||||
#define MEMMOVE mymemmove
|
#define MEMMOVE mymemmove
|
||||||
@ -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;
|
||||||
}
|
}
|
||||||
|
|||||||
17
wonbe.txt
17
wonbe.txt
@ -1,5 +1,5 @@
|
|||||||
ワンべぇ: WONBE, WonderWitch BASIC Environment
|
ワンべぇ: WONBE, WonderWitch BASIC Environment
|
||||||
暫定マニュアル Ver 0.02
|
暫定マニュアル Ver 0.03
|
||||||
2000年11月7日
|
2000年11月7日
|
||||||
株式会社ピーデー
|
株式会社ピーデー
|
||||||
川俣 晶
|
川俣 晶
|
||||||
@ -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
|
||||||
@ -220,6 +220,13 @@ 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月7日 Ver 0.02 scan_XXが機能しないバグを取った
|
||||||
2000年11月6日 Ver 0.01 最初のバージョン
|
2000年11月6日 Ver 0.01 最初のバージョン
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user