FX 02.45.1306

This commit is contained in:
CalcLoverHK 2024-01-25 03:07:21 +08:00
parent 583dd5b44d
commit 6f3113751b
31 changed files with 1241 additions and 496 deletions

View File

@ -5,7 +5,7 @@
[BINDATA] : "FXADDINror.bin"
[DISPNAME] : "CBASIC"
[APPNAME] : "@CBASIC"
[VERSION] : "02.45.1101"
[VERSION] : "02.45.1306"
[APL_ICON] : "MainIcon.bmp"
[MODULE_NUM] : 0
[MOD1_TITLE] : "CBASIC"

View File

@ -1,6 +1,6 @@
[DLSimProject]
Name=CBASIC
Version=02.45.1101
Version=02.45.1306
Model=:fx-9860G.dlm
SourcePath=.
MemoryPath=INIT

View File

@ -927,6 +927,13 @@ complex Cplx_Evalsub1(char *SRC) { // 1st Priority
return Int2Cplx( CB_System( SRC ) );
case 0xFFFFFFDF : // Version
return Int2Cplx( CB_Version() ); //
// case 0xFFFFFF90 : // F Result
case 0xFFFFFF91 : // F Start
case 0xFFFFFF92 : // F End
case 0xFFFFFF93 : // F pitch
return Dbl2Cplx( REGf[c-0xFFFFFF90] );
default:
ExecPtr--; // error
break;

View File

@ -389,6 +389,13 @@ complex Cplx_ListEvalsub1(char *SRC) { // 1st Priority
return Int2Cplx( CB_System( SRC ) );
case 0xFFFFFFDF : // Version
return Int2Cplx( CB_Version() ); //
// case 0xFFFFFF90 : // F Result
case 0xFFFFFF91 : // F Start
case 0xFFFFFF92 : // F End
case 0xFFFFFF93 : // F pitch
return Dbl2Cplx( REGf[c-0xFFFFFF90] );
default:
ExecPtr--; // error
break;

View File

@ -749,6 +749,13 @@ int EvalIntsub1(char *SRC) { // 1st Priority
return CB_System( SRC );
case 0xFFFFFFDF : // Version
return CB_Version(); //
// case 0xFFFFFF90 : // F Result
case 0xFFFFFF91 : // F Start
case 0xFFFFFF92 : // F End
case 0xFFFFFF93 : // F pitch
return REGf[c-0xFFFFFF90];
default:
ExecPtr--; // error
break;

View File

@ -344,6 +344,13 @@ int ListEvalIntsub1(char *SRC) { // 1st Priority
return CB_System( SRC );
case 0xFFFFFFDF : // Version
return CB_Version(); //
// case 0xFFFFFF90 : // F Result
case 0xFFFFFF91 : // F Start
case 0xFFFFFF92 : // F End
case 0xFFFFFF93 : // F pitch
return REGf[c-0xFFFFFF90];
default:
ExecPtr--; // error
break;

View File

@ -131,6 +131,9 @@ void CBint_Store( char *SRC ){ // ->
} else if ( c == 0x5F ) { // Ticks
ExecPtr+=2;
goto StoreTicks;
} else if ( ( 0xFFFFFF91 <= c ) && ( c <= 0xFFFFFF93 ) ) { // F Start~F pitch
ExecPtr+=2;
REGf[c-0xFFFFFF90] = CBint_CurrentValue ; ;
} else if ( c == 0x00 ) { // Xmin
Xmin = CBint_CurrentValue ;
SetXdotYdot();

View File

@ -479,24 +479,24 @@ int CB_GetColor( char *SRC ){
return -1;
}
//void CB_PlotLineColor( char *SRC ){
// CB_GetColor( SRC );
//}
//void CB_BackColor( char *SRC ){
// int c=SRC[ExecPtr];
// if ( c=='@' ) {
// ExecPtr++;
// CB_GetColor( SRC );
// } else {
// CB_GetColor( SRC );
// }
//}
//void CB_TransparentColor( char *SRC ){
// int color;
// int c=SRC[ExecPtr];
// if ( ( c==':' ) || ( c==0x0D ) || ( c==0x0C ) || ( c==0 ) ) {
// } else {
// CB_GetColor( SRC );
// }
//}
void CB_PlotLineColor( char *SRC ){
CB_GetColor( SRC );
}
void CB_BackColor( char *SRC ){
int c=SRC[ExecPtr];
if ( c=='@' ) {
ExecPtr++;
CB_GetColor( SRC );
} else {
CB_GetColor( SRC );
}
}
void CB_TransparentColor( char *SRC ){
int color;
int c=SRC[ExecPtr];
if ( ( c==':' ) || ( c==0x0D ) || ( c==0x0C ) || ( c==0 ) ) {
} else {
CB_GetColor( SRC );
}
}

View File

@ -2153,16 +2153,21 @@ unsigned int EditRun(int run){ // run:1 exec run:2 edit
}
if ( key == 0x1F91B ) { // Graph Y Store
i=CommandType;
CB_StoreString( 1, ClipBuffer );
CommandType=i;
key=0;
}
if ( key == 0x2F91B ) { // Graph Y Recall
i=CommandType;
string = CB_RecallString( 1 );
goto pastestring;
}
if ( key == 0x4F91B ) { // Graph Y See
i=CommandType;
string = CB_SeeString( 1, &selectStr, ClipBuffer );
pastestring:
CommandType=i;
if ( string != NULL ) {
EditPaste( filebase, string, &csrPtr, &Undo );
UpdateLineNum=1;
@ -2243,7 +2248,7 @@ unsigned int EditRun(int run){ // run:1 exec run:2 edit
ClipStartPtr = -1 ; // ClipMode cancel
} else {
// if ( key == KEY_CHAR_POW ) key='^';
if ( key == KEY_CTRL_XTT ) key='X'; //
if ( key == KEY_CTRL_XTT ) key=XTTKey( key ); // 'X' or <r> or <Theta> or T
help_code=key;
do {

View File

@ -3017,9 +3017,36 @@ void ChangeFavorites( int oldStorageMode, int newStorageMode ){ // old <> new fa
void ChangeStorageMode( int newMode ) {
ChangeFavorites( StorageMode, newMode ); // old -> new favorites
StorageMode = newMode;
FileListUpdate = 1;
}
//------------------------------------------------------------------------ load from main memory
void LoadConfig1data( int n ) { // config data ->List Ans
unsigned char fname[8] ="CBasic1";
unsigned char buffer[ConfigMAX];
int fsize;
switch ( n ) {
case 1:
fsize=ConfigMAX;
break;
case 2:
fsize=ConfigMAX2;
fname[6]='2';
break;
case 3:
fsize=ConfigMAX3;
fname[6]='3';
break;
default:
return ;
}
if ( LoadConfigReadFile( buffer, fname, fsize ) < 0 ) { CB_Error(CantFindFileERR); return ; }
NewMatListAns( fsize, 1, 0, 8 ); // List Ans
if ( ErrorNo ) return ;
memcpy( MatAry[CB_MatListAnsreg].Adrs, buffer , fsize );
dspflag=4; // List Ans;
}
void LoadConfig1(){
const unsigned char fname[]="CBasic1";

View File

@ -3128,15 +3128,24 @@ int InputStrSubC(int x, int y, int width, int ptrX, char* buffer, int MaxStrlen,
}
if ( key == 0x1F91B ) { // Graph Y Store
CB_StoreString( 1, ClipBuffer );
i=CommandType;
CB_StoreString( 1, buffer );
CommandType=i;
SaveDisp(SAVEDISP_PAGE1);
key=0;
}
if ( key == 0x2F91B ) { // Graph Y Recall
i=CommandType;
string = CB_RecallString( 1 );
CommandType=i;
SaveDisp(SAVEDISP_PAGE1);
goto pastestring;
}
if ( key == 0x4F91B ) { // Graph Y See
string = CB_SeeString( 1, &selectStr, ClipBuffer );
i=CommandType;
string = CB_SeeString( 1, &selectStr, buffer );
CommandType=i;
SaveDisp(SAVEDISP_PAGE1);
pastestring:
if ( string != NULL ) {
EditPaste1( buffer, string, &ptrX, MaxStrlen );
@ -3228,7 +3237,7 @@ int InputStrSubC(int x, int y, int width, int ptrX, char* buffer, int MaxStrlen,
if ( hex_mode && ( KEY_CHAR_TAN == key ) ) key=KEY_CHAR_F;
if ( hex_mode && ( lowercase && ( 'A' <= key ) && ( key <= 'Z' ) ) ) key+=('a'-'A');
// if ( float_mode && ( key == KEY_CHAR_POW ) ) key='^';
if ( ( key == KEY_CTRL_XTT ) ) key='X'; // ^
if ( ( key == KEY_CTRL_XTT ) ) key=XTTKey( key ); // 'X' or <r> or <Theta> or T
codeok:
if (ClipStartPtr>=0) {
ClipStartPtr = -1 ; // ClipMode cancel
@ -3399,6 +3408,300 @@ complex InputNumC_CB2(int x, int y, int width, int MaxStrlen, char* SPC, int REV
else Cplx_sprintGR1s(ExpBuffer, defaultNum, MaxStrlen, LEFT_ALIGN, CB_Round.MODE, CB_Round.DIGIT ,0 );
return InputNumC_CB_sub( x, y, width, MaxStrlen, strlenOp((char*)ExpBuffer), SPC, REV, defaultNum);
}
//----------------------------------------------------------------------------------------------
//----------------------------------------------------------------------------------------------
void CB_Input( char *SRC ){
unsigned int key;
int c;
complex DefaultValue={0,0};
int flag=0,flagint=0;
int reg,bptr,mptr;
int dimA,dimB,base;
char buffer[256];
char* MatAryC;
short* MatAryW;
int* MatAryI;
int width=255,length=ExpMax-1,option=0,rev=REV_OFF;
char spcchr[]={0x20,0,0};
char buffer2[64];
int aryN,aryS;
char *StrFnPtr;
KeyRecover();
HiddenRAM_MatAryStore(); // MatAry ptr -> HiddenRAM
CB_ChangeTextMode( SRC ) ;
// CB_SelectTextDD(); // Select Text Screen
if ( CursorX==22 ) CursorX=1;
if ( CursorX==23 ) Scrl_Y();
c=SRC[ExecPtr];
if ( c=='(' ) { // ?option([csrX][,csrY][,width][,spcchr][,length][,R])
c=SRC[++ExecPtr];
if ( ( c==')' ) || ( c==0x0E ) ) goto optionexit;
if ( c!=',' ) {
CursorX=CB_EvalInt( SRC ); if ( ( CursorX<1 ) || ( 21<CursorX ) ) { CB_Error(ArgumentERR); return ; } // Argument error
c=SRC[ExecPtr];
if ( c!=',' ) goto optionexit;
}
c=SRC[++ExecPtr];
if ( c!=',' ) {
CursorY=CB_EvalInt( SRC ); if ( ( CursorY<1 ) || ( 8<CursorY ) ) { CB_Error(ArgumentERR); return ; } // Argument error
c=SRC[ExecPtr];
if ( c!=',' ) goto optionexit;
}
c=SRC[++ExecPtr];
if ( c!=',' ) {
width=CB_EvalInt( SRC ); if ( ( width<1 ) || ( 21<width ) ) { CB_Error(ArgumentERR); return ; } // Argument error
c=SRC[ExecPtr];
if ( c!=',' ) goto optionexit;
}
c=SRC[++ExecPtr];
if ( c!=',' ) {
c=CB_IsStr( SRC, ExecPtr );
if ( c ) { // string
CB_GetLocateStr( SRC, buffer, 256-1 ); // String -> buffer return
} else { CB_Error(ArgumentERR); return ; } // Argument error
spcchr[0]=buffer[0];
spcchr[1]=buffer[1];
spcchr[2]=buffer[2];
c=SRC[ExecPtr];
if ( c!=',' ) goto optionexit;
}
c=SRC[++ExecPtr];
if ( c!=',' ) {
length=CB_EvalInt( SRC ); if ( ( length<1 ) || ( ExpMax-1<length ) ) { CB_Error(ArgumentERR); return ; } // Argument error
c=SRC[ExecPtr];
if ( c!=',' ) goto optionexit;
}
c=SRC[++ExecPtr];
if ( c!=')' ) {
if ( ( c=='R' ) || ( c=='r' ) ) { // reverse
ExecPtr++;
rev=REV_ON;
}
}
optionexit:
option=1;
if ( SRC[ExecPtr]==')' ) ExecPtr++;
} else {
locate( CursorX, CursorY); Print((unsigned char*)"?");
Scrl_Y();
}
c=SRC[ExecPtr];
bptr=ExecPtr;
reg=RegVar(c);
if ( c==0x0E ) { // ->
flag=0;
if ( CB_IsStr( SRC, ExecPtr+1 ) ) flag=2;
} else
if ( reg>=0 ) {
regj:
flag=1;
c=SRC[ExecPtr+1];
if (CB_INT==1) {
if ( c=='#' ) {
DefaultValue = LocalDbl[reg][0] ;
} else { flagint=1;
if ( c=='[' ) {
ExecPtr+=2;
MatOprandInt2( SRC, reg, &dimA, &dimB );
goto Matrix;
} else
if ( ( '0'<=c )&&( c<='9' ) ) {
ExecPtr++;
dimA=c-'0';
MatOprand1num( SRC, reg, &dimA, &dimB );
goto Matrix;
} else DefaultValue = Int2Cplx( LocalInt[reg][0] );
}
} else {
if ( c=='%' ) { flagint=1;
DefaultValue = Int2Cplx( LocalInt[reg][0] );
} else {
if ( c=='[' ) {
ExecPtr+=2;
MatOprand2( SRC, reg, &dimA, &dimB );
goto Matrix;
} else
if ( ( '0'<=c )&&( c<='9' ) ) {
ExecPtr++;
dimA=c-'0';
MatOprand1num( SRC, reg, &dimA, &dimB );
goto Matrix;
} else DefaultValue = LocalDbl[reg][0] ;
}
}
} else
if ( c==0x7F ) {
c = SRC[ExecPtr+1] ;
if ( ( c == 0x40 ) || ( c == 0xFFFFFF84 ) || ( ( c == 0x51 ) || ( (0x6A<=c)&&(c<=0x6F) ) ) ) { // Mat A[a,b] or Vct A[a] or List 1[a]
MatrixOprand( SRC, &reg, &dimA, &dimB );
Matrix:
if ( ErrorNo ) { // error
if ( MatAry[reg].SizeA == 0 ) ErrorNo=NoMatrixArrayERR; // No Matrix Array error
return ;
}
DefaultValue = Cplx_ReadMatrix( reg, dimA, dimB);
ExecPtr=bptr;
} else if ( ( 0xFFFFFF91 <= c ) && ( c <= 0xFFFFFF93 ) ) { // F Start~F pitch
ExecPtr+=2;
DefaultValue.real = REGf[c-0xFFFFFF90] ;
} else if ( c == 0x00 ) { // Xmin
DefaultValue.real = Xmin ;
} else if ( c == 0x01 ) { // Xmax
DefaultValue.real = Xmax ;
} else if ( c == 0x02 ) { // Xscl
DefaultValue.real = Xscl ;
} else if ( c == 0x04 ) { // Ymin
DefaultValue.real = Ymin ;
} else if ( c == 0x05 ) { // Ymax
DefaultValue.real = Ymax ;
} else if ( c == 0x06) { // Yscl
DefaultValue.real = Yscl ;
} else if ( c == 0x08) { // Thetamin
DefaultValue.real = TThetamin ;
} else if ( c == 0x09) { // Thetamax
DefaultValue.real = TThetamax ;
} else if ( c == 0x0A) { // Thetaptch
DefaultValue.real = TThetaptch ;
} else if ( c == 0x0B ) { // Xfct
DefaultValue.real = Xfct ;
} else if ( c == 0x0C ) { // Yfct
DefaultValue.real = Yfct ;
} else if ( c == 0xFFFFFFF0 ) { // GraphY
reg =defaultGraphAry;
aryN=defaultGraphAryN;
aryS=defaultGraphArySize;
c=6; // +offset
goto strj;
} else {
goto exitj;
}
flag=1;
} else
if ( c==0xFFFFFFF9 ) {
c = SRC[ExecPtr+1] ;
if ( c == 0x3F ) { // Str 1-20
reg =defaultStrAry;
aryN=defaultStrAryN;
aryS=defaultStrArySize;
strj0:
c=0;
strj:
ExecPtr+=2;
StrFnPtr = GetStrYFnPtr( SRC, reg, aryN+1-MatBase, aryS ) +c;
if ( ErrorNo ) return ; // error
flag=3;
ExecPtr=bptr;
} else
if ( c == 0x1B ) { // fn
reg=defaultFnAry;
aryN=defaultFnAryN;
aryS=defaultFnArySize;
goto strj0;
} else
if ( c == 0x41 ) { // DATE
ExecPtr+=2;
flag=4;
ExecPtr=bptr;
} else
if ( c == 0x42 ) { // TIME
ExecPtr+=2;
flag=5;
ExecPtr=bptr;
} else
if ( c == 0x21 ) { // Xdot
DefaultValue.real = Xdot ;
flag=1;
} else goto exitj;
} else
if ( c=='$' ) {
ExecPtr++;
MatrixOprand( SRC, &reg, &dimA, &dimB );
if ( ErrorNo ) return ; // error
if ( MatAry[reg].SizeA == 0 ) { CB_Error(NoMatrixArrayERR); return; } // No Matrix Array error
if ( MatAry[reg].ElementSize != 8 ) { CB_Error(ArgumentERR); return; } // element size error
flag=3;
ExecPtr=bptr;
} else {
exitj:
reg=RegVarAliasEx( SRC ); if ( reg>=0 ) goto regj; // variable alias
CB_Error(SyntaxERR); return; } // Syntax error
switch ( flag ) {
case 0: // ? -> A value
if ( option ) {
CB_CurrentValue = InputNumC_CB2( CursorX, CursorY, width, length, spcchr, rev, Int2Cplx(0), 0 ); // zero not disp
} else {
CB_CurrentValue = InputNumC_CB( CursorX, CursorY, width, length, spcchr, rev, Int2Cplx(0) );
}
ExecPtr++;
if ( CB_INT==1 ) flagint=1;
vinp:
ErrorNo=0; // error cancel
if ( BreakPtr > 0 ) { ExecPtr=BreakPtr; return ; }
CBint_CurrentValue = CB_CurrentValue.real ;
if ( flagint ) {
CBint_Store( SRC );
break;
}
CB_Store( SRC );
break;
case 1: // ?A value
if ( option ) {
CB_CurrentValue = InputNumC_CB2( CursorX, CursorY, width, length, spcchr, rev, DefaultValue, 1 ); // zero disp
} else {
buffer2[0]='\0';
Cplx_sprintGR2( buffer, buffer2, DefaultValue, 22-CursorX, RIGHT_ALIGN, CB_Round.MODE, CB_Round.DIGIT );
locate( CursorX, CursorY); Print((unsigned char*)buffer);
if ( buffer2[0] != '\0' ){
Scrl_Y();
locate( CursorX, CursorY); Print((unsigned char*)buffer2);
}
Scrl_Y();
CB_CurrentValue = InputNumC_CB1( CursorX, CursorY, width, length, spcchr, rev, DefaultValue );
}
goto vinp;
break;
case 2: // ? -> str
CB_CurrentStr=buffer;
CB_CurrentStr[0]='\0';
Inpj1: if ( option == 0 ) CursorX=1;
key=InputStr( CursorX, CursorY, width, CB_CurrentStr, length, spcchr, rev);
ErrorNo=0; // error cancel
if ( key==KEY_CTRL_AC ) { BreakPtr=ExecPtr; return ; }
if ( SRC[ExecPtr]==0x0E ) ExecPtr++; // -> skip
CB_StorStr( SRC );
break;
case 3: // ?$Mat ?Str1-20
CB_CurrentStr=buffer;
// OpcodeStringToAsciiString(buffer, StrFnPtr, 255);
strncpy( buffer, StrFnPtr, 255);
if ( width > MatAry[reg].SizeB-1 ) width=MatAry[reg].SizeB-1;
key=InputStr( CursorX, CursorY, width, CB_CurrentStr, length, spcchr, rev);
ErrorNo=0; // error cancel
if ( key==KEY_CTRL_AC ) { BreakPtr=ExecPtr; return ; }
CB_StorStr( SRC );
break;
case 4: // ?DATE
CB_DateToStr();
CB_CurrentStr[10]='\0'; // week cancel
Inpj2:
// CB_Print(CursorX, CursorY, (unsigned char*)CB_CurrentStr);
// Scrl_Y();
goto Inpj1;
break;
case 5: // ?TIME
CB_TimeToStr();
goto Inpj2;
break;
}
if ( option == 0 ) Scrl_Y();
Bdisp_PutDisp_DD_DrawBusy();
return ;
}
//---------------------------------------------------------------------------------------------- align dummy
int InpObjectAlign4g( unsigned int n ){ return n; } // align +4byte
int InpObjectAlign4h( unsigned int n ){ return n; } // align +4byte

View File

@ -246,7 +246,7 @@ void DispGenuineCmdMenu(){
Fkey_dspRB( FKeyNo1, "Split");
Fkey_dspRB( FKeyNo2, "Asc(");
// FkeyClear( FKeyNo2 );
FkeyClear( FKeyNo3 );
Fkey_dspRB( FKeyNo3, "Repl");
FkeyClear( FKeyNo4 );
FkeyClear( FKeyNo5 );
Fkey_Icon(FKeyNo6, 6 ); //Fkey_DISPN( FKeyNo6," \xE6\x9E ");
@ -610,8 +610,9 @@ void DispGenuineCmdMenu(){
Fkey_Icon( FKeyNo6, 6 ); // Fkey_DISPN( FKeyNo6," \xE6\x9E ");
break;
case 1:
Fkey_Icon( FKeyNo1, 403 ); // Fkey_DISPR( FKeyNo5, " # ");
Fkey_Icon( FKeyNo2, 176 ); // Fkey_DISPR( FKeyNo6, " % ");
Fkey_Icon( FKeyNo1, 416 ); // Fkey_dispR( FKeyNo1, "TABLE");
Fkey_Icon( FKeyNo2, 403 ); // Fkey_DISPR( FKeyNo5, " # ");
// Fkey_Icon( FKeyNo2, 176 ); // Fkey_DISPR( FKeyNo6, " % ");
Fkey_Icon( FKeyNo3, 400 ); // Fkey_DISPR( FKeyNo2, " ~ ");
Fkey_Icon( FKeyNo4, 952 ); // Fkey_DISPR( FKeyNo4, " $ ");
Fkey_Icon( FKeyNo5, 268 ); // Fkey_dspRB( FKeyNo5, "Str ");
@ -691,6 +692,19 @@ void DispGenuineCmdMenu(){
break;
}
break;
case CMD_VARS_TABL:
switch ( CommandPage ) {
case 0:
Fkey_Icon( FKeyNo1, 627 ); // Fkey_dspRB( FKeyNo1, "Start");
Fkey_Icon( FKeyNo2, 628 ); // Fkey_dspRB( FKeyNo2, "End");
Fkey_Icon( FKeyNo3, 629 ); // Fkey_dspRB( FKeyNo3, "Pitch");
// Fkey_Icon( FKeyNo4, 630 ); // Fkey_dspRB( FKeyNo3, "Result");
FkeyClear( FKeyNo4 );
FkeyClear( FKeyNo5 );
FkeyClear( FKeyNo6 );
break;
}
break;
case CMD_VARS_EXT:
switch ( CommandPage ) {
case 0:
@ -942,9 +956,19 @@ void DispGenuineCmdMenu(){
Fkey_Icon( FKeyNo1, 181 ); // Fkey_dispR( FKeyNo1, "STAT");
Fkey_Icon( FKeyNo2, 179 ); // Fkey_dispR( FKeyNo2, "MAT ");
Fkey_Icon( FKeyNo3, 178 ); // Fkey_dispR( FKeyNo3, "LIST");
Fkey_dispN( FKeyNo4, "extc");
Fkey_Icon( FKeyNo5, 403 ); // Fkey_DISPN( FKeyNo6, " # ");
Fkey_Icon( FKeyNo6, 176 ); // Fkey_DISPN( FKeyNo5, " % ");
Fkey_Icon( FKeyNo4, 1 ); // Fkey_dispR( FKeyNo4, "GRAPH");
// Fkey_Icon( FKeyNo5, 415 ); // Fkey_dispR( FKeyNo4, "DYNA");
Fkey_dispN( FKeyNo5, "extc");
Fkey_Icon(FKeyNo6, 6 ); //Fkey_DISPN( FKeyNo6," \xE6\x9E ");
break;
case 1:
Fkey_Icon( FKeyNo1, 416 ); // Fkey_dispR( FKeyNo1, "TABLE");
FkeyClear( FKeyNo2 );
FkeyClear( FKeyNo3 );
// Fkey_Icon( FKeyNo2, 417 ); // Fkey_dispR( FKeyNo2, "RECURSION");
Fkey_Icon( FKeyNo4, 403 ); // Fkey_DISPN( FKeyNo6, " # ");
Fkey_Icon( FKeyNo5, 176 ); // Fkey_DISPN( FKeyNo5, " % ");
Fkey_Icon(FKeyNo6, 6 ); //Fkey_DISPN( FKeyNo6," \xE6\x9E ");
break;
}
break;
@ -1020,6 +1044,90 @@ void DispGenuineCmdMenu(){
break;
}
break;
case CMD_MENU_GRPH:
switch ( CommandPage ) {
case 0:
Fkey_Icon( FKeyNo1, 15 ); // Fkey_dispR( FKeyNo1, "SELECT");
FkeyClear( FKeyNo2 );
Fkey_Icon( FKeyNo3, 57 ); // Fkey_dispR( FKeyNo3, "TYPE");
Fkey_Icon( FKeyNo4, 305 ); // Fkey_dispR( FKeyNo4, "STYLE");
FkeyClear( FKeyNo5 );
FkeyClear( FKeyNo6 );
break;
}
break;
case CMD_MENU_GRPH_SEL:
switch ( CommandPage ) {
case 0:
Fkey_Icon( FKeyNo1, 480 ); // Fkey_dspRB( FKeyNo1, "On ");
Fkey_Icon( FKeyNo2, 422 ); // Fkey_dspRB( FKeyNo2, "Off");
FkeyClear( FKeyNo3 );
FkeyClear( FKeyNo4 );
FkeyClear( FKeyNo5 );
FkeyClear( FKeyNo6 );
break;
}
break;
case CMD_MENU_GRPH_TYPE:
switch ( CommandPage ) {
case 0:
Fkey_Icon( FKeyNo1, 472 ); // Fkey_dspRB( FKeyNo1, "Y=");
Fkey_Icon( FKeyNo2, 473 ); // Fkey_dspRB( FKeyNo2, "r=");
Fkey_Icon( FKeyNo3, 474 ); // Fkey_dspRB( FKeyNo3, "Param");
Fkey_Icon( FKeyNo4, 468 ); // Fkey_dspRB( FKeyNo4, "X=");
FkeyClear( FKeyNo5 );
Fkey_Icon(FKeyNo6, 6 ); //Fkey_DISPN( FKeyNo6," \xE6\x9E ");
break;
case 1:
Fkey_Icon( FKeyNo1, 476 ); // Fkey_dspRB( FKeyNo1, "Y>");
Fkey_Icon( FKeyNo2, 477 ); // Fkey_dspRB( FKeyNo2, "Y<");
Fkey_Icon( FKeyNo3, 478 ); // Fkey_dspRB( FKeyNo3, "Y>=");
Fkey_Icon( FKeyNo4, 479 ); // Fkey_dspRB( FKeyNo4, "Y<=");
FkeyClear( FKeyNo5 );
Fkey_Icon(FKeyNo6, 6 ); //Fkey_DISPN( FKeyNo6," \xE6\x9E ");
break;
case 2:
Fkey_Icon( FKeyNo1, 469 ); // Fkey_dspRB( FKeyNo1, "X>");
Fkey_Icon( FKeyNo2, 470 ); // Fkey_dspRB( FKeyNo2, "X<");
Fkey_Icon( FKeyNo3, 481 ); // Fkey_dspRB( FKeyNo3, "X>=");
Fkey_Icon( FKeyNo4, 482 ); // Fkey_dspRB( FKeyNo4, "X<=");
FkeyClear( FKeyNo5 );
Fkey_Icon(FKeyNo6, 6 ); //Fkey_DISPN( FKeyNo6," \xE6\x9E ");
break;
}
break;
case CMD_MENU_TABL:
switch ( CommandPage ) {
case 0:
Fkey_Icon( FKeyNo1, 480 ); // Fkey_dspRB( FKeyNo1, "On ");
Fkey_Icon( FKeyNo2, 422 ); // Fkey_dspRB( FKeyNo2, "Off");
Fkey_Icon( FKeyNo3, 57 ); // Fkey_dispR( FKeyNo3, "TYPE");
Fkey_Icon( FKeyNo4, 305 ); // Fkey_dispR( FKeyNo4, "STYLE");
FkeyClear( FKeyNo5 );
FkeyClear( FKeyNo6 );
break;
}
break;
case CMD_MENU_TABL_TYPE:
switch ( CommandPage ) {
case 0:
Fkey_Icon( FKeyNo1, 472 ); // Fkey_dspRB( FKeyNo1, "Y=");
Fkey_Icon( FKeyNo2, 473 ); // Fkey_dspRB( FKeyNo2, "r=");
Fkey_Icon( FKeyNo3, 474 ); // Fkey_dspRB( FKeyNo3, "Param");
FkeyClear( FKeyNo4 );
FkeyClear( FKeyNo5 );
FkeyClear( FKeyNo6 );
break;
}
break;
case CMD_MENU_GRPH_STYL:
case CMD_MENU_TABL_STYL:
switch ( CommandPage ) {
case 0:
FkeyS_L_();
break;
}
break;
case CMD_MENU_EXT:
switch ( CommandPage ) {
case 0:

View File

@ -146,7 +146,8 @@ void GetGenuineCmdF1( unsigned int *code ){
case CMD_VARS: // ------------------------------------------------------------VARS_F1
switch ( CommandPage ) {
case 0: CommandType=CMD_VARS_VWIN;CommandPage=0;break;
case 1: (*code)='#';return; // '#'
case 1: CommandType=CMD_VARS_TABL;CommandPage=0;break;
// case 1: (*code)='#';return; // '#'
} break;
case CMD_VARS_VWIN:
switch ( CommandPage ) {
@ -172,6 +173,10 @@ void GetGenuineCmdF1( unsigned int *code ){
switch ( CommandPage ) {
case 0: (*code)=0x7FF0;return; // GRAPHY
} break;
case CMD_VARS_TABL:
switch ( CommandPage ) {
case 0: (*code)=0x7F91;return; // F Start
} break;
case CMD_VARS_EXT:
switch ( CommandPage ) {
case 0: (*code)=0x7F5F;return; // Ticks
@ -236,6 +241,7 @@ void GetGenuineCmdF1( unsigned int *code ){
case CMD_MENU: // ------------------------------------------------------------MENU_F1
switch ( CommandPage ) {
case 0: CommandType=CMD_MENU_STAT;CommandPage=0;break;
case 1: CommandType=CMD_MENU_TABL;CommandPage=0;break;
} break;
case CMD_MENU_STAT:
switch ( CommandPage ) {
@ -261,6 +267,33 @@ void GetGenuineCmdF1( unsigned int *code ){
switch ( CommandPage ) {
case 0: (*code)=0xF7B0;return; // SortA(
} break;
case CMD_MENU_GRPH:
switch ( CommandPage ) {
case 0: CommandType=CMD_MENU_GRPH_SEL;CommandPage=0;break;
} break;
case CMD_MENU_GRPH_SEL:
switch ( CommandPage ) {
case 0: (*code)=0xF7C8;return; // G SleOn
} break;
case CMD_MENU_GRPH_TYPE:
switch ( CommandPage ) {
case 0: (*code)=0xF763;return; // Y=Type
case 1: (*code)=0xF76A;return; // Y>Type
case 2: (*code)=0xF768;return; // X>Type
} break;
case CMD_MENU_GRPH_STYL:
case CMD_MENU_TABL_STYL:
switch ( CommandPage ) {
case 0: (*code)=0xF72B;return; // NormalG
} break;
case CMD_MENU_TABL:
switch ( CommandPage ) {
case 0: (*code)=0xF7C9;return; // T SleOn
} break;
case CMD_MENU_TABL_TYPE:
switch ( CommandPage ) {
case 0: (*code)=0xF763;return; // Y=Type
} break;
case CMD_MENU_EXT:
switch ( CommandPage ) {
case 0: (*code)='?';return; // ?

View File

@ -147,7 +147,7 @@ void GetGenuineCmdF2( unsigned int *code ){
case CMD_VARS: // ------------------------------------------------------------VARS_F2
switch ( CommandPage ) {
case 0: CommandType=CMD_VARS_FACT;CommandPage=0;break;
case 1: (*code)='%';return; // '%'
case 1: (*code)='#';return; // '#'
} break;
case CMD_VARS_VWIN:
switch ( CommandPage ) {
@ -173,6 +173,10 @@ void GetGenuineCmdF2( unsigned int *code ){
switch ( CommandPage ) {
case 0: (*code)=0x7FF1;return; // GRAPHr
} break;
case CMD_VARS_TABL:
switch ( CommandPage ) {
case 0: (*code)=0x7F92;return; // F End
} break;
case CMD_VARS_EXT:
switch ( CommandPage ) {
case 0: (*code)=0xF94F;return; // Wait
@ -262,6 +266,29 @@ void GetGenuineCmdF2( unsigned int *code ){
switch ( CommandPage ) {
case 0: (*code)=0xF7B1;return; // SortB(
} break;
case CMD_MENU_GRPH_SEL:
switch ( CommandPage ) {
case 0: (*code)=0xF7D8;return; // G SleOff
} break;
case CMD_MENU_GRPH_TYPE:
switch ( CommandPage ) {
case 0: (*code)=0xF764;return; // r=Type
case 1: (*code)=0xF76B;return; // Y<Type
case 2: (*code)=0xF769;return; // X<Type
} break;
case CMD_MENU_GRPH_STYL:
case CMD_MENU_TABL_STYL:
switch ( CommandPage ) {
case 0: (*code)=0xF72C;return; // ThickG
} break;
case CMD_MENU_TABL:
switch ( CommandPage ) {
case 0: (*code)=0xF7D9;return; // T SleOff
} break;
case CMD_MENU_TABL_TYPE:
switch ( CommandPage ) {
case 0: (*code)=0xF764;return; // r=Type
} break;
case CMD_MENU_EXT:
switch ( CommandPage ) {
case 0: (*code)=0x000C;return; // disps

View File

@ -50,6 +50,7 @@ void GetGenuineCmdF3( unsigned int *code ){
switch ( CommandPage ) {
case 0: (*code)=0xF943;return; // Sprintf(
case 1: (*code)=0xF948;return; // StrBase(
case 2: (*code)=0xF949;return; // StrRepl(
} break;
case CMD_PRGM_EXEC:
switch ( CommandPage ) {
@ -154,6 +155,10 @@ void GetGenuineCmdF3( unsigned int *code ){
switch ( CommandPage ) {
case 0: (*code)=0x7FF2;return; // GRAPHXt
} break;
case CMD_VARS_TABL:
switch ( CommandPage ) {
case 0: (*code)=0x7F93;return; // F pitch
} break;
case CMD_VARS_EXT:
switch ( CommandPage ) {
case 0: (*code)=0xF941;return; // DATE
@ -231,6 +236,29 @@ void GetGenuineCmdF3( unsigned int *code ){
switch ( CommandPage ) {
case 0: (*code)=0x7F43;return; // *Row+
} break;
case CMD_MENU_GRPH:
switch ( CommandPage ) {
case 0: CommandType=CMD_MENU_GRPH_TYPE;CommandPage=0;break;
} break;
case CMD_MENU_GRPH_TYPE:
switch ( CommandPage ) {
case 0: (*code)=0xF765;return; // ParamType
case 1: (*code)=0xF76C;return; // Y>=Type
case 2: (*code)=0xF76E;return; // X>=Type
} break;
case CMD_MENU_GRPH_STYL:
case CMD_MENU_TABL_STYL:
switch ( CommandPage ) {
case 0: (*code)=0xF72D;return; // BrokenThickG
} break;
case CMD_MENU_TABL:
switch ( CommandPage ) {
case 0: CommandType=CMD_MENU_TABL_TYPE;CommandPage=0;break;
} break;
case CMD_MENU_TABL_TYPE:
switch ( CommandPage ) {
case 0: (*code)=0xF765;return; // ParamType
} break;
case CMD_MENU_EXT:
switch ( CommandPage ) {
case 0: (*code)=':';return; // :

View File

@ -138,6 +138,10 @@ void GetGenuineCmdF4( unsigned int *code ){
switch ( CommandPage ) {
case 0: (*code)=0x7FF3;return; // GRAPHYt
} break;
case CMD_VARS_TABL:
switch ( CommandPage ) {
case 0: (*code)=0x7F90;return; // F Result
} break;
case CMD_VARS_EXT:
switch ( CommandPage ) {
case 0: (*code)=0xF942;return; // TIME
@ -189,7 +193,7 @@ void GetGenuineCmdF4( unsigned int *code ){
case CMD_MENU: // ------------------------------------------------------------MENU_F4
switch ( CommandPage ) {
case 0: CommandType=CMD_MENU_EXT; CommandPage=0;break;
case 0: CommandType=CMD_MENU_GRPH; CommandPage=0;break;
} break;
case CMD_MENU_STAT:
switch ( CommandPage ) {
@ -205,6 +209,25 @@ void GetGenuineCmdF4( unsigned int *code ){
switch ( CommandPage ) {
case 0: (*code)=0x7F44;return; // Row+
} break;
case CMD_MENU_GRPH:
switch ( CommandPage ) {
case 0: CommandType=CMD_MENU_GRPH_STYL;CommandPage=0;break;
} break;
case CMD_MENU_GRPH_TYPE:
switch ( CommandPage ) {
case 0: (*code)=0xF767;return; // X=Type
case 1: (*code)=0xF76D;return; // Y<=Type
case 2: (*code)=0xF76F;return; // X<=Type
} break;
case CMD_MENU_GRPH_STYL:
case CMD_MENU_TABL_STYL:
switch ( CommandPage ) {
case 0: (*code)=0xF73F;return; // DotG
} break;
case CMD_MENU_TABL:
switch ( CommandPage ) {
case 0: CommandType=CMD_MENU_TABL_STYL;CommandPage=0;break;
} break;
case CMD_MENU_EXT:
switch ( CommandPage ) {
case 0: (*code)=0x0013;return; // =>

View File

@ -155,7 +155,7 @@ void GetGenuineCmdF5( unsigned int *code ){
case CMD_MENU: // ------------------------------------------------------------MENU_F5
switch ( CommandPage ) {
case 0: (*code)='#';return; // #
case 0: CommandType=CMD_MENU_EXT; CommandPage=0;break;
} break;
case CMD_MENU_STAT_GRPH:
switch ( CommandPage ) {

View File

@ -164,7 +164,14 @@ void GetGenuineCmdF6( unsigned int *code ){
case CMD_MENU: // ------------------------------------------------------------MENU_F6
switch ( CommandPage ) {
case 0: (*code)='%';return; // %
case 0: CommandPage=1;break;
case 1: CommandPage=0;break;
} break;
case CMD_MENU_GRPH_TYPE:
switch ( CommandPage ) {
case 0: CommandPage=1;break;
case 1: CommandPage=2;break;
case 2: CommandPage=0;break;
} break;
case CMD_MENU_EXT:
switch ( CommandPage ) {

View File

@ -52,7 +52,7 @@ void VerDispSub( int flag ) {
locate( 3, 5 ); Print( (unsigned char*)" by sentaro21" );
locate( 3, 6 ); Print( (unsigned char*)" (c)2020" );
PrintMini(13*6+2, 2*8+1, (unsigned char*)"build 11.", MINI_OVER );
PrintMini(13*6+2, 2*8+1, (unsigned char*)"build 13 ", MINI_OVER );
PrintMini( 2*6+2, 3*8+1, (unsigned char*)"(Casio Basic compatible+)", MINI_OVER );
// if ( ( UseHiddenRAM ) && ( IsHiddenRAM ) ) {
@ -81,10 +81,9 @@ int GetMemFree() ;
int CB_Version() { // Version
return VERSION;
}
int CB_System( char *SRC ) { // System( n )
int r;
int c = SRC[ExecPtr];
switch ( CB_EvalInt( SRC ) ) {
int System( int n ) {
int r=0;
switch ( n ) {
case -9:
r=TryFlag; if ( r>1 ) r--;
break;
@ -156,6 +155,22 @@ int CB_System( char *SRC ) { // System( n )
default:
r = 0;
}
return r;
}
int CB_System( char *SRC ) { // System( n )
int r;
int c = SRC[ExecPtr];
int n = CB_EvalInt( SRC );
if ( n==10000 ) { // load config data to ListAns Ststem(10000,1) Ststem(10000,2) Ststem(10000,3)
if ( SRC[ExecPtr] != ',' ) CB_Error(SyntaxERR) ; // Syntax error
ExecPtr++;
c = CB_EvalInt( SRC );
LoadConfig1data( c );
goto exit;
}
r = System( n );
exit:
if ( SRC[ExecPtr] == ')' ) ExecPtr++;
return r;
}
@ -251,6 +266,27 @@ void SetVeiwWindowSTD(){ // STD Initialize
}
unsigned int XTTKey( unsigned int key) {
switch ( FuncType ) {
case 1:
key=0xCE; // Theta
break;
case 2:
key='T';
break;
case 3:
case 8:
case 9:
case 10:
case 11:
key='Y';
break;
default:
key='X';
}
return key;
}
unsigned int MathKey( unsigned int key) {
switch ( key ) {
case KEY_CHAR_IMGNRY:
@ -298,7 +334,7 @@ unsigned int MathKey( unsigned int key) {
case KEY_CHAR_RBRACE: //
case KEY_CHAR_RECIP: //
case KEY_CHAR_DQUATE: //
if ( key == KEY_CTRL_XTT ) key='X';
if ( key == KEY_CTRL_XTT ) key=XTTKey( key ); // 'X' or <r> or <Theta> or T
// if ( key == KEY_CHAR_PLUS ) key='+';
// if ( key == KEY_CHAR_MINUS ) key='-';
// if ( key == KEY_CHAR_PMINUS ) key=0x87; // (-)
@ -1193,52 +1229,53 @@ int SelectNum4( int n ) { //
#define SETUP_Angle 0
#define SETUP_ComplexMode 1
#define SETUP_DrawType 2
#define SETUP_Coord 3
#define SETUP_Grid 4
#define SETUP_Axes 5
#define SETUP_Label 6
#define SETUP_Derivative 7
#define SETUP_Background 8
#define SETUP_Sketch 9
#define SETUP_Display 10
#define SETUP_Help 11
#define SETUP_RecoverSetup 12
#define SETUP_CMDINPUT 13
#define SETUP_MaxMemMode 14
#define SETUP_EnableExtFONT 15
#define SETUP_EditExtFont 16
#define SETUP_EditFontSize 17
#define SETUP_EditTopLine 18
#define SETUP_EditIndent 19
#define SETUP_EditLineNum 20
#define SETUP_EditListChar 21
#define SETUP_UseHidnRam 22
#define SETUP_HidnRamInit 23
#define SETUP_ExtendPict 24
#define SETUP_ExtendList 25
#define SETUP_DisableDebugMode 26
#define SETUP_ExitDebugModeCheck 27
#define SETUP_BreakStop 28
#define SETUP_ExecTimeDsp 29
#define SETUP_IfEndCheck 30
#define SETUP_ACBreak 31
#define SETUP_ForceReturnMode 32
#define SETUP_Key1sttime 33
#define SETUP_KeyReptime 34
#define SETUP_SkipUpDown 35
#define SETUP_MatDspmode 36
#define SETUP_Matrixbase 37
#define SETUP_DATE 38
#define SETUP_TIME 39
#define SETUP_RootFolder 40
#define SETUP_AutoSaveMode 41
#define SETUP_Forceg1msave 42
#define SETUP_Pictmode 43
#define SETUP_Storagemode 44
#define SETUP_RefrshCtlDD 45
#define SETUP_DefaultWaitcount 46
#define SETUP_Executemode 47
#define SETUP_FuncType 2
#define SETUP_DrawType 3
#define SETUP_Coord 4
#define SETUP_Grid 5
#define SETUP_Axes 6
#define SETUP_Label 7
#define SETUP_Derivative 8
#define SETUP_Background 9
#define SETUP_Sketch 10
#define SETUP_Display 11
#define SETUP_Help 12
#define SETUP_RecoverSetup 13
#define SETUP_CMDINPUT 14
#define SETUP_MaxMemMode 15
#define SETUP_EnableExtFONT 16
#define SETUP_EditExtFont 17
#define SETUP_EditFontSize 18
#define SETUP_EditTopLine 19
#define SETUP_EditIndent 20
#define SETUP_EditLineNum 21
#define SETUP_EditListChar 22
#define SETUP_UseHidnRam 23
#define SETUP_HidnRamInit 24
#define SETUP_ExtendPict 25
#define SETUP_ExtendList 26
#define SETUP_DisableDebugMode 27
#define SETUP_ExitDebugModeCheck 28
#define SETUP_BreakStop 29
#define SETUP_ExecTimeDsp 30
#define SETUP_IfEndCheck 31
#define SETUP_ACBreak 32
#define SETUP_ForceReturnMode 33
#define SETUP_Key1sttime 34
#define SETUP_KeyReptime 35
#define SETUP_SkipUpDown 36
#define SETUP_MatDspmode 37
#define SETUP_Matrixbase 38
#define SETUP_DATE 39
#define SETUP_TIME 40
#define SETUP_RootFolder 41
#define SETUP_AutoSaveMode 42
#define SETUP_Forceg1msave 43
#define SETUP_Pictmode 44
#define SETUP_Storagemode 45
#define SETUP_RefrshCtlDD 46
#define SETUP_DefaultWaitcount 47
#define SETUP_Executemode 48
const char *CBmode[] ={"DBL#","INT%","CPLX"};
@ -1262,6 +1299,7 @@ int SetupG(int select, int limit){ // ----------- Setup
const char *Returnmode[] ={"None","F1","EXE","F1&EXE"};
const char *ExecTimemode[]={"off","on","off%","on reset"," %","on%"," % reset","on%reset"};
const char *EditIndent[] ={"off","1","2","3","4","5","6","7","off sav-","1 save-","2 save-","3 save-","4 save-","D","E","F"};
const char *FuncTypeStr[] ={"Y=","r=","Param","X=","Y>","Y<","Y\x12","Y\x10","X>","X<","X\x12","X\x10"};
char buffer[22];
char folderbuf[16];
unsigned int key;
@ -1272,6 +1310,7 @@ int SetupG(int select, int limit){ // ----------- Setup
char TimeStr[16];
int year,month,day,hour,min,sec;
int listmax=SETUP_Executemode;
int subselect=0;
strcpy( folderbuf, folder ); // current folder
@ -1302,41 +1341,45 @@ int SetupG(int select, int limit){ // ----------- Setup
locate(14, cnt-scrl); Print((unsigned char*)cplxmode[ComplexMode]);
} cnt++;
if ( scrl <=(cnt-1) ) {
locate( 1, cnt-scrl); Print((unsigned char*)"Draw Type :"); // 2
locate( 1, cnt-scrl); Print((unsigned char*)"Func Type :"); // 2
locate(14, cnt-scrl); Print((unsigned char*)FuncTypeStr[(int)FuncType]);
} cnt++;
if ( scrl <=(cnt-1) ) {
locate( 1, cnt-scrl); Print((unsigned char*)"Draw Type :"); // 3
locate(14, cnt-scrl); Print((unsigned char*)draw[(int)DrawType]);
} cnt++;
if ( scrl <=(cnt-1) ) {
locate( 1, cnt-scrl); Print((unsigned char*)"Coord :"); // 3
locate( 1, cnt-scrl); Print((unsigned char*)"Coord :"); // 4
locate(14, cnt-scrl); Print((unsigned char*)onoff[Coord]);
} cnt++;
if ( scrl <=(cnt-1) ) {
locate( 1, cnt-scrl); Print((unsigned char*)"Grid :"); // 4
locate( 1, cnt-scrl); Print((unsigned char*)"Grid :"); // 5
locate(14, cnt-scrl); Print((unsigned char*)onoff[Grid]);
} cnt++;
if ( scrl <=(cnt-1) ) {
locate( 1, cnt-scrl); Print((unsigned char*)"Axes :"); // 5
locate( 1, cnt-scrl); Print((unsigned char*)"Axes :"); // 6
locate(14, cnt-scrl); Print((unsigned char*)onoff[Axes]);
} cnt++;
if ( scrl <=(cnt-1) ) {
locate( 1, cnt-scrl); Print((unsigned char*)"Label :"); // 6
if ( (0<(cnt-scrl))&&((cnt-scrl)<=7) ){
locate( 1, cnt-scrl); Print((unsigned char*)"Label :"); // 7
locate(14, cnt-scrl); Print((unsigned char*)onoff[Label]);
} cnt++;
if ( (0<(cnt-scrl))&&((cnt-scrl)<=7) ){
locate( 1, cnt-scrl); Print((unsigned char*)"Derivative :"); // 7
locate( 1, cnt-scrl); Print((unsigned char*)"Derivative :"); // 8
locate(14, cnt-scrl); Print((unsigned char*)onoff[Derivative]);
} cnt++;
if ( (0<(cnt-scrl))&&((cnt-scrl)<=7) ){
locate( 1, cnt-scrl); Print((unsigned char*)"Background :"); // 8
locate( 1, cnt-scrl); Print((unsigned char*)"Background :"); // 9
if ( BG_Pict_No == 0 ) sprintf((char*)buffer,"None");
else sprintf((char*)buffer,"Pict%d",BG_Pict_No);
locate(14,cnt-scrl); Print((unsigned char*)buffer);
} cnt++;
if ( (0<(cnt-scrl))&&((cnt-scrl)<=7) ){
locate( 1, cnt-scrl); Print((unsigned char*)"Sketch Line :"); // 9
locate( 1, cnt-scrl); Print((unsigned char*)"Sketch Line :"); // 10
locate(14, cnt-scrl); Print((unsigned char*)style[S_L_Style]);
} cnt++;
if ( (0<(cnt-scrl))&&((cnt-scrl)<=7) ){
locate( 1, cnt-scrl); Print((unsigned char*)"Display :"); // 10
locate( 1, cnt-scrl); Print((unsigned char*)"Display :"); // 11
locate(14, cnt-scrl); Print((unsigned char*)display[CB_Round.MODE]);
buffer[0]='\0';
sprintf((char*)buffer,"%d",CB_Round.DIGIT);
@ -1345,130 +1388,130 @@ int SetupG(int select, int limit){ // ----------- Setup
Print((unsigned char*)ENGmode[ENG]);
} cnt++;
if ( (0<(cnt-scrl))&&((cnt-scrl)<=7) ){
locate( 1,cnt-scrl); Print((unsigned char*)"Syntax Help :"); // 11
locate( 1,cnt-scrl); Print((unsigned char*)"Syntax Help :"); // 12
locate(14,cnt-scrl); Print((unsigned char*)onoff[CB_HelpOn]);
} cnt++;
if ( (0<(cnt-scrl))&&((cnt-scrl)<=7) ){
locate( 1, cnt-scrl); Print((unsigned char*)"SetupRecover:"); // 12
locate( 1, cnt-scrl); Print((unsigned char*)"SetupRecover:"); // 13
locate(14, cnt-scrl); Print((unsigned char*)onoff[CB_RecoverSetup]);
} cnt++;
if ( (0<(cnt-scrl))&&((cnt-scrl)<=7) ){
locate( 1, cnt-scrl); Print((unsigned char*)"Command Inpt:"); // 13
locate( 1, cnt-scrl); Print((unsigned char*)"Command Inpt:"); // 14
locate(14, cnt-scrl); Print((unsigned char*)CMDinput[CommandInputMethod + 2*CB_fx5800P]);
} cnt++;
if ( (0<(cnt-scrl))&&((cnt-scrl)<=7) ){
locate( 1,cnt-scrl); Print((unsigned char*)"Max Mem Mode:"); // 14
locate( 1,cnt-scrl); Print((unsigned char*)"Max Mem Mode:"); // 15
locate(14,cnt-scrl); Print((unsigned char*)onoff[MaxMemMode]);
} cnt++;
if ( (0<(cnt-scrl))&&((cnt-scrl)<=7) ){
locate( 1, cnt-scrl); Print((unsigned char*)"EnableExFont:"); // 15
locate( 1, cnt-scrl); Print((unsigned char*)"EnableExFont:"); // 16
locate(14, cnt-scrl); Print((unsigned char*)onoff[EnableExtFont]);
} cnt++;
if ( (0<(cnt-scrl))&&((cnt-scrl)<=7) ){
CB_Print_ext( 1,cnt-scrl,(unsigned char*)"Edit ExtFont:", EditExtFont ); // 16
CB_Print_ext( 1,cnt-scrl,(unsigned char*)"Edit ExtFont:", EditExtFont ); // 17
CB_Print_ext(14,cnt-scrl,(unsigned char*)onoff[EditExtFont], EditExtFont );
} cnt++;
if ( (0<(cnt-scrl))&&((cnt-scrl)<=7) ){
locate( 1, cnt-scrl); Print((unsigned char*)"EditFontSize:"); // 17
locate( 1, cnt-scrl); Print((unsigned char*)"EditFontSize:"); // 18
locate(14, cnt-scrl); Print((unsigned char*)CharSize[EditFontSize & 0x0F ]);
} cnt++;
if ( (0<(cnt-scrl))&&((cnt-scrl)<=7) ){
locate( 1, cnt-scrl); Print((unsigned char*)"Hide StatBar:"); // 18
locate( 1, cnt-scrl); Print((unsigned char*)"Hide StatBar:"); // 19
locate(14, cnt-scrl); Print((unsigned char*)onoff[EditTopLine]);
} cnt++;
if ( (0<(cnt-scrl))&&((cnt-scrl)<=7) ){
locate( 1, cnt-scrl); Print((unsigned char*)"Edit +Indent:"); // 19
locate( 1, cnt-scrl); Print((unsigned char*)"Edit +Indent:"); // 20
locate(14, cnt-scrl); Print((unsigned char*)EditIndent[CB_EditIndent]);
} cnt++;
if ( (0<(cnt-scrl))&&((cnt-scrl)<=7) ){
locate( 1, cnt-scrl); Print((unsigned char*)"Edit LineNum:"); // 20
locate( 1, cnt-scrl); Print((unsigned char*)"Edit LineNum:"); // 21
locate(14, cnt-scrl); Print((unsigned char*)onoff[(EditFontSize & 0xF0)>>4 ]);
} cnt++;
if ( (0<(cnt-scrl))&&((cnt-scrl)<=7) ){
locate( 1, cnt-scrl); Print((unsigned char*)"EditListChar:"); // 21
locate( 1, cnt-scrl); Print((unsigned char*)"EditListChar:"); // 22
CB_Print(14, cnt-scrl, (unsigned char*)ListChar[EditListChar]);
} cnt++;
if ( (0<(cnt-scrl))&&((cnt-scrl)<=7) ){
locate( 1,cnt-scrl); Print((unsigned char*)"Use Hidn RAM:"); // 22
locate( 1,cnt-scrl); Print((unsigned char*)"Use Hidn RAM:"); // 23
locate(14,cnt-scrl); Print((unsigned char*)onoff[UseHiddenRAM&0x0F]);
} cnt++;
if ( (0<(cnt-scrl))&&((cnt-scrl)<=7) ){
locate( 1,cnt-scrl); Print((unsigned char*)"HidnRAM Init:"); // 23
locate( 1,cnt-scrl); Print((unsigned char*)"HidnRAM Init:"); // 24
locate(14,cnt-scrl);
if ( UseHiddenRAM&0x0F ) Print((unsigned char*)onoff[!(UseHiddenRAM&0xF0)]);
else Print((unsigned char*)"---");
} cnt++;
if ( (0<(cnt-scrl))&&((cnt-scrl)<=7) ){
locate( 1, cnt-scrl); Print((unsigned char*)"Max Pict No:"); // 24
locate( 1, cnt-scrl); Print((unsigned char*)"Max Pict No:"); // 25
sprintf((char*)buffer,"%d",20+ExtendPict);
locate(14, cnt-scrl); Print((unsigned char*)buffer);
} cnt++;
if ( (0<(cnt-scrl))&&((cnt-scrl)<=7) ){
locate( 1, cnt-scrl); Print((unsigned char*)"Max List 52\xA9:"); // 25
locate( 1, cnt-scrl); Print((unsigned char*)"Max List 52\xA9:"); // 26
sprintf((char*)buffer,"%d (%d)", ExtendList+1, 52+ExtendList*52);
locate(14, cnt-scrl); Print((unsigned char*)buffer);
} cnt++;
if ( (0<(cnt-scrl))&&((cnt-scrl)<=7) ){
locate( 1,cnt-scrl); Print((unsigned char*)"AT DebugMode:"); // 26
locate( 1,cnt-scrl); Print((unsigned char*)"AT DebugMode:"); // 27
locate(14,cnt-scrl); Print((unsigned char*)onoff[!DisableDebugMode]);
} cnt++;
if ( (0<(cnt-scrl))&&((cnt-scrl)<=7) ){
locate( 1,cnt-scrl); Print((unsigned char*)"ExitDM PopUp:"); // 27
locate( 1,cnt-scrl); Print((unsigned char*)"ExitDM PopUp:"); // 28
locate(14,cnt-scrl); Print((unsigned char*)onoff[ExitDebugModeCheck&1]);
} cnt++;
if ( (0<(cnt-scrl))&&((cnt-scrl)<=7) ){
locate( 1,cnt-scrl); Print((unsigned char*)"Break Stop :"); // 28
locate( 1,cnt-scrl); Print((unsigned char*)"Break Stop :"); // 29
locate(14,cnt-scrl); Print((unsigned char*)onoff[BreakCheckDefault]);
} cnt++;
if ( (0<(cnt-scrl))&&((cnt-scrl)<=7) ){
locate( 1,cnt-scrl); Print((unsigned char*)"Exec TimeDsp:"); // 29
locate( 1,cnt-scrl); Print((unsigned char*)"Exec TimeDsp:"); // 30
locate(14,cnt-scrl); Print((unsigned char*)ExecTimemode[TimeDsp]);
} cnt++;
if ( (0<(cnt-scrl))&&((cnt-scrl)<=7) ){
locate( 1,cnt-scrl); Print((unsigned char*)"IfEnd Check :"); // 30
locate( 1,cnt-scrl); Print((unsigned char*)"IfEnd Check :"); // 31
locate(14,cnt-scrl); Print((unsigned char*)onoff[CheckIfEnd]);
} cnt++;
if ( (0<(cnt-scrl))&&((cnt-scrl)<=7) ){
locate( 1,cnt-scrl); Print((unsigned char*)"ACBreak :"); // 31
locate( 1,cnt-scrl); Print((unsigned char*)"ACBreak :"); // 32
locate(14,cnt-scrl); Print((unsigned char*)onoff[ACBreak]);
} cnt++;
if ( (0<(cnt-scrl))&&((cnt-scrl)<=7) ){
locate( 1,cnt-scrl); Print((unsigned char*)"Force Return:"); // 32
locate( 1,cnt-scrl); Print((unsigned char*)"Force Return:"); // 33
locate(14,cnt-scrl); Print((unsigned char*)Returnmode[ForceReturnMode]);
} cnt++;
if ( (0<(cnt-scrl))&&((cnt-scrl)<=7) ){
locate( 1,cnt-scrl); Print((unsigned char*)"Key 1st time:"); // 33
locate( 1,cnt-scrl); Print((unsigned char*)"Key 1st time:"); // 34
sprintf((char*)buffer,"%dms",KeyRepeatFirstCount*25);
locate(14,cnt-scrl); Print((unsigned char*)buffer);
} cnt++;
if ( (0<(cnt-scrl))&&((cnt-scrl)<=7) ){
locate( 1,cnt-scrl); Print((unsigned char*)"Key Rep time:"); // 34
locate( 1,cnt-scrl); Print((unsigned char*)"Key Rep time:"); // 35
sprintf((char*)buffer,"%dms",KeyRepeatNextCount*25);
locate(14,cnt-scrl); Print((unsigned char*)buffer);
} cnt++;
if ( (0<(cnt-scrl))&&((cnt-scrl)<=7) ){
locate( 1,cnt-scrl); Print((unsigned char*)"SkipUp/Down :"); // 35
locate( 1,cnt-scrl); Print((unsigned char*)"SkipUp/Down :"); // 36
sprintf((char*)buffer,"%d",PageUpDownNum);
locate(14,cnt-scrl); Print((unsigned char*)buffer);
} cnt++;
if ( (0<(cnt-scrl))&&((cnt-scrl)<=7) ){
locate( 1,cnt-scrl); Print((unsigned char*)"Mat Dsp mode:"); // 36
locate( 1,cnt-scrl); Print((unsigned char*)"Mat Dsp mode:"); // 37
locate(14,cnt-scrl); Print((unsigned char*)Matmode[MatXYmode]);
} cnt++;
if ( (0<(cnt-scrl))&&((cnt-scrl)<=7) ){
locate( 1,cnt-scrl); Print((unsigned char*)"Matrix base :"); // 37
locate( 1,cnt-scrl); Print((unsigned char*)"Matrix base :"); // 38
locate(14,cnt-scrl); Print((unsigned char*)Matbase[MatBaseDefault]);
} cnt++;
if ( (0<(cnt-scrl))&&((cnt-scrl)<=7) ){ // DATE // 38
if ( (0<(cnt-scrl))&&((cnt-scrl)<=7) ){ // DATE // 39
DateCursorY = cnt-scrl+0x900;
DateTimePrintSub();
} cnt++;
if ( (0<(cnt-scrl))&&((cnt-scrl)<=7) ){ // TIME // 39
if ( (0<(cnt-scrl))&&((cnt-scrl)<=7) ){ // TIME // 40
TimeCursorY = cnt-scrl+0x900;
DateTimePrintSub();
} cnt++;
if ( (0<(cnt-scrl))&&((cnt-scrl)<=7) ){
locate( 1,cnt-scrl); Print((unsigned char*)"Root Folder:"); // 40
locate( 1,cnt-scrl); Print((unsigned char*)"Root Folder:"); // 41
locate(13,cnt-scrl);
if ( root2[0] == '\0' ) {
Print((unsigned char*)"/");
@ -1477,36 +1520,36 @@ int SetupG(int select, int limit){ // ----------- Setup
}
} cnt++;
if ( (0<(cnt-scrl))&&((cnt-scrl)<=7) ){
locate( 1,cnt-scrl); Print((unsigned char*)"Auto file save:"); // 41
locate( 1,cnt-scrl); Print((unsigned char*)"Auto file save:"); // 42
locate(16,cnt-scrl); Print((unsigned char*)onoff[AutoSaveMode]);
} cnt++;
if ( (0<(cnt-scrl))&&((cnt-scrl)<=7) ){
locate( 1,cnt-scrl); Print((unsigned char*)"Force g1m save:"); // 42
locate( 1,cnt-scrl); Print((unsigned char*)"Force g1m save:"); // 43
locate(16,cnt-scrl); Print((unsigned char*)onoff[ForceG1Msave]);
} cnt++;
if ( (0<(cnt-scrl))&&((cnt-scrl)<=7) ){
locate( 1,cnt-scrl); Print((unsigned char*)"Pict mode :"); // 43
locate( 1,cnt-scrl); Print((unsigned char*)"Pict mode :"); // 44
locate(14,cnt-scrl); if ( StorageMode & 1 ) Print((unsigned char*)PictmodeSD[PictMode]); else Print((unsigned char*)Pictmode[PictMode]);
} cnt++;
if ( (0<(cnt-scrl))&&((cnt-scrl)<=7) ){
locate( 1,cnt-scrl); Print((unsigned char*)"Storage mode:"); // 44
locate( 1,cnt-scrl); Print((unsigned char*)"Storage mode:"); // 45
locate(14,cnt-scrl); Print((unsigned char*)Storagemode[StorageMode]);
} cnt++;
if ( (0<(cnt-scrl))&&((cnt-scrl)<=7) ){
locate( 1,cnt-scrl); Print((unsigned char*)"RefrshCtl DD:"); // 45
locate( 1,cnt-scrl); Print((unsigned char*)"RefrshCtl DD:"); // 46
locate(14,cnt-scrl); Print((unsigned char*)DDmode[RefreshCtrl]);
buffer[0]='\0';
sprintf((char*)buffer,"%2d/128",Refreshtime+1);
if ( RefreshCtrl ) PrintMini(17*6+2,(cnt-scrl)*8-6,(unsigned char*)buffer,MINI_OVER);
} cnt++;
if ( (0<(cnt-scrl))&&((cnt-scrl)<=7) ){
locate( 1,cnt-scrl); Print((unsigned char*)"Wait count :"); // 46
locate( 1,cnt-scrl); Print((unsigned char*)"Wait count :"); // 47
if ( DefaultWaitcount == 0 ) sprintf((char*)buffer,"No Wait");
else sprintf((char*)buffer,"%d",DefaultWaitcount);
locate(14,cnt-scrl); Print((unsigned char*)buffer);
} cnt++;
if ( (0<(cnt-scrl))&&((cnt-scrl)<=7) ){
locate( 1,cnt-scrl); Print((unsigned char*)"Execute mode:"); // 47
locate( 1,cnt-scrl); Print((unsigned char*)"Execute mode:"); // 48
locate(14,cnt-scrl); Print((unsigned char*)CBmode[CB_INTDefault]);
}
y = select-scrl;
@ -1662,6 +1705,34 @@ int SetupG(int select, int limit){ // ----------- Setup
Fkey_dispN( FKeyNo4, " 4");
Fkey_dispN( FKeyNo5, "sv-");
break;
case SETUP_FuncType: //
switch ( subselect ) {
case 0:
Fkey_Icon( FKeyNo1, 61 ); // Fkey_dispN( FKeyNo1, "Y=");
Fkey_Icon( FKeyNo2, 62 ); // Fkey_dispN( FKeyNo2, "r=");
Fkey_Icon( FKeyNo3, 63 ); // Fkey_dispN( FKeyNo3, "Param");
Fkey_Icon( FKeyNo4, 723 ); // Fkey_dispN( FKeyNo4, "X=");
FkeyClear( FKeyNo5 );
Fkey_Icon(FKeyNo6, 6 ); //Fkey_DISPN( FKeyNo6," \xE6\x9E ");
break;
case 1:
Fkey_Icon( FKeyNo1, 65 ); // Fkey_dispN( FKeyNo1, "Y>");
Fkey_Icon( FKeyNo2, 66 ); // Fkey_dispN( FKeyNo2, "Y<");
Fkey_Icon( FKeyNo3, 67 ); // Fkey_dispN( FKeyNo3, "Y>=");
Fkey_Icon( FKeyNo4, 68 ); // Fkey_dispN( FKeyNo4, "Y<=");
FkeyClear( FKeyNo5 );
Fkey_Icon(FKeyNo6, 6 ); //Fkey_DISPN( FKeyNo6," \xE6\x9E ");
break;
case 2:
Fkey_Icon( FKeyNo1, 724 ); // Fkey_dispN( FKeyNo1, "X>");
Fkey_Icon( FKeyNo2, 725 ); // Fkey_dispN( FKeyNo2, "X<");
Fkey_Icon( FKeyNo3, 726 ); // Fkey_dispN( FKeyNo3, "X>=");
Fkey_Icon( FKeyNo4, 727 ); // Fkey_dispN( FKeyNo4, "X<=");
FkeyClear( FKeyNo5 );
Fkey_Icon(FKeyNo6, 6 ); //Fkey_DISPN( FKeyNo6," \xE6\x9E ");
break;
}
break;
default:
break;
}
@ -1731,6 +1802,19 @@ int SetupG(int select, int limit){ // ----------- Setup
case SETUP_ComplexMode: // complex mode
ComplexMode = 0; // Real
break;
case SETUP_FuncType: // function Type
switch ( subselect ) {
case 0:
FuncType = 0;
break;
case 1:
FuncType = 4;
break;
case 2:
FuncType = 8;
break;
}
break;
case SETUP_DrawType: // Draw Type connect
DrawType = 0 ;
break;
@ -1925,6 +2009,19 @@ int SetupG(int select, int limit){ // ----------- Setup
case SETUP_ComplexMode: // complex mode
ComplexMode = 1; // a+bi
break;
case SETUP_FuncType: // function Type
switch ( subselect ) {
case 0:
FuncType = 1;
break;
case 1:
FuncType = 5;
break;
case 2:
FuncType = 9;
break;
}
break;
case SETUP_DrawType: // Draw Type Plot
DrawType = 1 ;
break;
@ -2117,6 +2214,19 @@ int SetupG(int select, int limit){ // ----------- Setup
case KEY_CTRL_F3:
// Bdisp_AreaReverseVRAM(0, y*8, 127, y*8+7); // reverse select line
switch (select) {
case SETUP_FuncType: // function Type
switch ( subselect ) {
case 0:
FuncType = 2;
break;
case 1:
FuncType = 6;
break;
case 2:
FuncType =10;
break;
}
break;
case SETUP_Angle: // Angle
Angle = 2 ; // Grad
break;
@ -2192,6 +2302,19 @@ int SetupG(int select, int limit){ // ----------- Setup
case KEY_CTRL_F4:
// Bdisp_AreaReverseVRAM(0, y*8, 127, y*8+7); // reverse select line
switch (select) {
case SETUP_FuncType: // function Type
switch ( subselect ) {
case 0:
FuncType = 3;
break;
case 1:
FuncType = 7;
break;
case 2:
FuncType =11;
break;
}
break;
case SETUP_Sketch: // Sketch Line Dot
S_L_Style = 3 ;
break;
@ -2272,7 +2395,24 @@ int SetupG(int select, int limit){ // ----------- Setup
}
break;
case KEY_CTRL_F6:
VerDisp( limit );
switch (select) {
case SETUP_FuncType: // function Type
switch ( subselect ) {
case 0:
subselect = 1;
break;
case 1:
subselect = 2;
break;
case 2:
subselect = 0;
break;
}
break;
default:
VerDisp( limit );
break;
}
break;
default:
break;

View File

@ -1446,6 +1446,13 @@ double Evalsub1(char *SRC) { // 1st Priority
return CB_System( SRC );
case 0xFFFFFFDF : // Version
return CB_Version(); //
// case 0xFFFFFF90 : // F Result
case 0xFFFFFF91 : // F Start
case 0xFFFFFF92 : // F End
case 0xFFFFFF93 : // F pitch
return REGf[c-0xFFFFFF90];
default:
ExecPtr--; // error
break;

View File

@ -447,6 +447,13 @@ double ListEvalsub1(char *SRC) { // 1st Priority
return CB_System( SRC );
case 0xFFFFFFDF : // Version
return CB_Version(); //
// case 0xFFFFFF90 : // F Result
case 0xFFFFFF91 : // F Start
case 0xFFFFFF92 : // F End
case 0xFFFFFF93 : // F pitch
return REGf[c-0xFFFFFF90];
default:
ExecPtr--; // error
break;

View File

@ -1024,6 +1024,8 @@ void EditMatrix(int reg, int ans ){ // ----------- Edit Matrix
int strdisp=0;
int dotedit=0;
int list=0;
int toolflag=0;
if ( reg >= 0x1000 ) {
if ( reg >=0x2000 ) {
list=2;
@ -1537,6 +1539,9 @@ void EditMatrix(int reg, int ans ){ // ----------- Edit Matrix
goto ToDotEdit;
case KEY_CTRL_F3: // str edit
goto ToStrDisp;
case KEY_CTRL_F4: // tool
toolflag=1;
break;
case KEY_CTRL_F5: // bin
goto ToBin;
case KEY_CTRL_F6: // hex

View File

@ -13,12 +13,12 @@ short defaultStrAryN=127;
int defaultStrArySize=255+1; // =CB_StrBufferMax
char defaultFnAry=57; // z
char defaultFnAryN=127;
short defaultFnArySize=255+1;
short defaultFnAryN=127;
int defaultFnArySize=255+1;
char defaultGraphAry=27; // Theta
char defaultGraphAryN=127;
short defaultGraphArySize=255+1;
short defaultGraphAryN=127;
int defaultGraphArySize=255+1;
//char dummychar1;
//char dummychar2;
@ -559,10 +559,21 @@ char* NewStrBuffer(){
}
void GetNewAry8( int reg, int aryN, int aryMax ) {
char *buffer;
int size;
if ( MatAry[reg].SizeA == 0 ) {
DimMatrixSub( reg, 8, aryN, aryMax, 1 ); // byte matrix base:1
} else {
if ( MatAry[reg].SizeA < aryN ) MatElementPlus( reg, aryN, aryMax ); // matrix +
if ( MatAry[reg].SizeA < aryN ) {
if ( (int)MatAry[reg].Adrs > (int)CB_CurrentStr ) {
buffer=NewStrBuffer();
if ( buffer!=NULL ) {
size =MatAry[reg].SizeB; if ( size>CB_StrBufferMax ) size = CB_StrBufferMax;
memcpy( buffer, CB_CurrentStr, size );
CB_CurrentStr = buffer;
}
}
MatElementPlus( reg, aryN, aryMax ); // matrix +
}
}
}
char* GetStrYFnPtrSub( int reg, int dimA, int dimB ) {
@ -646,6 +657,37 @@ int IsStrList( char *SRC, int flag ) { // List n[0]?
return reg+1;
}
int CB_IsStr_noYFn( char *SRC, int execptr ) {
int c=SRC[execptr],extmp,f;
if ( c == 0x22 ) { // String
return 1;
} else
if ( c=='$' ) { // Mat String
return 2;
} else
if ( c == 0xFFFFFFF9 ) { // Str
c=SRC[execptr+1];
if ( c == 0x30 ) return c; // StrJoin(
else
if ( ( c == 0x38 ) || ( c == 0x3E ) ) return 0; // Exp( or ClrVct
else
if ( ( 0x34 <= c ) && ( c <= 0x49 ) ) return c;
else
if ( c == 0x4D ) return c; // StrSplit
} else
if ( c == 0x7F ) {
c=SRC[execptr+1];
if ( ( c == 0x51 ) || ( (0x6A<=c)&&(c<=0x6F) ) ) { // List [0]?
extmp = ExecPtr;
ExecPtr+=2;
f = IsStrList( SRC, 0 );
ExecPtr = extmp;
if ( f>0 ) return 0x7F51;
}
}
return 0;
}
int CB_IsStr( char *SRC, int execptr ) {
int c=SRC[execptr],extmp,f;
if ( c == 0x22 ) { // String
@ -664,18 +706,11 @@ int CB_IsStr( char *SRC, int execptr ) {
else
if ( c == 0x4D ) return c; // StrSplit
else
if ( c == 0x1B ) {
fnjmp:
extmp=ExecPtr;
ExecPtr=execptr+2;
f=CB_CheckYfn( SRC );
ExecPtr=extmp;
if ( f ) return c; // fn
}
if ( c == 0x1B ) return c; // fn
} else
if ( c == 0x7F ) {
c=SRC[execptr+1];
if ( c == 0xFFFFFFF0 ) goto fnjmp; // GraphY
if ( c == 0xFFFFFFF0 ) return c; // GraphY
else
if ( ( c == 0x51 ) || ( (0x6A<=c)&&(c<=0x6F) ) ) { // List [0]?
extmp = ExecPtr;
@ -688,22 +723,15 @@ int CB_IsStr( char *SRC, int execptr ) {
return 0;
}
int CB_CheckYfn( char *SRC ) { // 1:string 0:function
int extmp=ExecPtr,r;
EvalIntsub1( SRC );
r= ( SRC[ExecPtr] != '(' );
ExecPtr=extmp;
return r;
}
char* CB_GetOpStr1( char *SRC ,int *maxlen ) { // String -> buffer return
int c,d,n;
char* CB_GetOpStrSub( char *SRC ,int *maxlen, int c ) { // String -> buffer return
int d,n;
int execptr,len,i=0;
int reg,dimA,dimB;
int aryN,aryMax;
char *buffer;
switch ( CB_IsStr( SRC, ExecPtr ) ) {
switch ( c ) {
case 1: // """"
ExecPtr++;
buffer=NewStrBuffer(); if ( buffer==NULL ) return 0;
@ -732,7 +760,7 @@ char* CB_GetOpStr1( char *SRC ,int *maxlen ) { // String -> buffer return
case 0xFFFFFFF0: // GraphY
reg=defaultGraphAry;
ExecPtr+=2;
buffer = GetStrYFnPtr( SRC, reg, defaultGraphAryN, defaultGraphArySize );
buffer = GetStrYFnPtr( SRC, reg, defaultGraphAryN, defaultGraphArySize ) +6;
(*maxlen)=MatAry[reg].SizeB;
break;
case 0x30: // StrJoin(
@ -836,12 +864,14 @@ char* CB_GetOpStr1( char *SRC ,int *maxlen ) { // String -> buffer return
return buffer;
}
char* CB_GetOpStr( char *SRC, int *maxoplen ) { // Get opcode String
char* CB_GetOpStrSub1( char *SRC, int *maxoplen, int YFn ) { // Get opcode String
int c;
char *buffer;
char *CB_StrAddBuffer;
CB_CurrentStr=CB_GetOpStr1( SRC, &(*maxoplen) ) ; // String -> CB_CurrentStr
if ( YFn ) c=CB_IsStr( SRC, ExecPtr );
else c=CB_IsStr_noYFn( SRC, ExecPtr );
CB_CurrentStr=CB_GetOpStrSub( SRC, &(*maxoplen), c ); // String -> CB_CurrentStr
if ( ErrorNo ) return 0; // error
c=SRC[ExecPtr];
if ( c != 0xFFFFFF89 ) { // non +
@ -852,7 +882,7 @@ char* CB_GetOpStr( char *SRC, int *maxoplen ) { // Get opcode String
OpcodeCopy( CB_StrAddBuffer, CB_CurrentStr, CB_StrBufferMax-1 ); //
while (1) {
ExecPtr++;
CB_CurrentStr=CB_GetOpStr1( SRC, &(*maxoplen) ) ; // String -> CB_CurrentStr
CB_CurrentStr=CB_GetOpStrSub( SRC, &(*maxoplen), CB_IsStr( SRC, ExecPtr ) ); // String -> CB_CurrentStr
if ( ErrorNo ) return 0; // error
StrJoin( CB_StrAddBuffer, CB_CurrentStr, CB_StrBufferMax-1 ) ;
@ -862,7 +892,12 @@ char* CB_GetOpStr( char *SRC, int *maxoplen ) { // Get opcode String
// if ( c == ')' ) ExecPtr++;
return CB_StrAddBuffer;
}
char* CB_GetOpStr( char *SRC, int *maxoplen ) { // Get opcode String
return CB_GetOpStrSub1( SRC, &(*maxoplen), 1 );
}
char* CB_GetOpStr_noYFn( char *SRC, int *maxoplen ) { // Get opcode String
return CB_GetOpStrSub1( SRC, &(*maxoplen), 0 );
}
//----------------------------------------------------------------------------------------------
void StorStrMat( char *SRC ) { // "String" -> $Mat A
int reg,dimA,dimB;
@ -888,7 +923,7 @@ void StorStrGraphY( char *SRC ) { // "String" -> GraphY 1-5
int reg,dimA,dimB;
char *MatAryC;
reg=defaultGraphAry;
MatAryC = GetStrYFnPtr( SRC, reg, defaultGraphAryN, defaultGraphArySize );
MatAryC = GetStrYFnPtr( SRC, reg, defaultGraphAryN, defaultGraphArySize ) +6;
if ( ErrorNo ) return ; // error
OpcodeCopy( MatAryC, CB_CurrentStr, MatAry[reg].SizeB-1 );
}
@ -963,9 +998,36 @@ void StorTIME( char *buffer ) { // "23:59:59" -> TIME
CB_TicksStart=RTC_GetTicks(); // init
}
void CB_StorStr( char *SRC ) {
int c;
c=CB_IsStr( SRC, ExecPtr );
int CB_IsStrStor( char *SRC, int execptr ) {
int c=SRC[execptr],extmp,f;
if ( c=='$' ) { // Mat String
return 2;
} else
if ( c == 0xFFFFFFF9 ) {
c=SRC[execptr+1];
if ( c == 0x3F ) return c; // Str
else
if ( c == 0x41 ) return c; // DATE
else
if ( c == 0x42 ) return c; // TIME
else
if ( c == 0x1B ) return c; // fn
} else
if ( c == 0x7F ) {
c=SRC[execptr+1];
if ( c == 0xFFFFFFF0 ) return c; // GraphY
else
if ( ( c == 0x51 ) || ( (0x6A<=c)&&(c<=0x6F) ) ) { // List [0]?
extmp = ExecPtr;
ExecPtr+=2;
f = IsStrList( SRC, 0 );
ExecPtr = extmp;
if ( f>0 ) return 0x7F51;
}
}
return 0;
}
void CB_StorStrSub( char *SRC, int c ) {
switch ( c ) {
case 2: // $Mat
ExecPtr++;
@ -1002,6 +1064,32 @@ void CB_StorStr( char *SRC ) {
CB_Error(SyntaxERR); // Syntax error
}
}
void CB_StorStr( char *SRC ) {
CB_StorStrSub( SRC, CB_IsStrStor( SRC, ExecPtr ) );
}
//----------------------------------------------------------------------------------------------
int CB_CheckYfn( char *SRC ) { // Fn1->Str 1 ?
int extmp=ExecPtr;
int c=SRC[ExecPtr-1];
int maxlen;
char *buffer;
EvalIntsub1( SRC );
if ( SRC[ExecPtr] == 0x0E ) { // ->
ExecPtr=extmp;
ExecPtr-=2;
CB_CurrentStr = CB_GetOpStrSub( SRC, &(maxlen), CB_IsStrStor( SRC, ExecPtr ) );
ExecPtr++;
c = CB_IsStrStor( SRC, ExecPtr );
if ( c ) {
CB_StorStrSub( SRC, c );
dspflag=0;
return 1; // string
}
}
ExecPtr=extmp;
return 0; // expression
}
//----------------------------------------------------------------------------------------------
void ClrLine5800P( int CsrX ){
@ -1307,7 +1395,7 @@ char* CB_GraphYStrSub( char *SRC, int reg ) { // defaultGraphAry or defaultFnA
int base=MatAry[reg].Base;
dimA=EvalIntsub1( SRC );
if ( ( dimA < base ) || ( dimA > MatAry[reg].SizeA-1+base ) ) { CB_Error(MemoryERR); } // Memory error
return MatrixPtr( reg, dimA, base );
return MatrixPtr( reg, dimA, base )+ ( reg==defaultGraphAry )*6;
}
void GraphFnEQ( char *SRC ){
int c=SRC[ExecPtr];

View File

@ -13,12 +13,12 @@ extern short defaultStrAryN;
extern int defaultStrArySize; // =CB_StrBufferMax
extern char defaultFnAry;
extern char defaultFnAryN;
extern short defaultFnArySize;
extern short defaultFnAryN;
extern int defaultFnArySize;
extern char defaultGraphAry;
extern char defaultGraphAryN;
extern short defaultGraphArySize;
extern short defaultGraphAryN;
extern int defaultGraphArySize;
//-----------------------------------------------------------------------------
int StrSrc( char *SrcBase, char *searchstr, int *csrptr, int size);
@ -49,8 +49,9 @@ int CB_GetQuotOpcode(char *SRC, char *buffer, int Maxlen) ;
char* GetStrYFnPtr( char *SRC, int reg, int aryN, int aryMax ) ;
char* GetStrYFnPtrSub( int reg, int dimA, int dimB ) ;
int CB_IsStr( char *SRC, int execptr ) ;
char* CB_GetOpStr1( char *SRC ,int *maxlen ) ; // String -> buffer return
int CB_IsStr_noYFn( char *SRC, int execptr ) ;
char* CB_GetOpStr( char *SRC, int *maxoplen ) ; // Get opcode String
char* CB_GetOpStr_noYFn( char *SRC, int *maxoplen ) ; // Get opcode String
double CB_EvalStrDBL( char *buffer, int calcflag ); //
double CB_EvalStr( char *SRC, int calcflag) ; // Eval str -> complex
complex CB_Cplx_EvalStrDBL( char *buffer, int calcflag ); //

View File

@ -2,10 +2,14 @@
const char TypeTitle[][10]={"Strings ","Function ","Graphics "};
const char TypeStr[][2]={"S","f","Y"};
int SelectMemoryNum( int type, int max, int store, unsigned int *key ) { //
char buffer[32];
int n=0,n0=1;
char *scrbuf[896];
memcpy( scrbuf, PictAry[0], 896); // store VRAM
PopUpWin(4);
FkeyClearAll();
locate( 3,2); if ( store ) Print((unsigned char *)"Store In"); else Print((unsigned char *)"Recall From");
@ -19,6 +23,7 @@ int SelectMemoryNum( int type, int max, int store, unsigned int *key ) { //
if ( (1<=n)&&(n<=max) ) break;
n=n0;
}
memcpy( PictAry[0], scrbuf, 896); // restore VRAM
return n ; // ok
}
@ -38,6 +43,29 @@ void LoadStringType( int type, int *reg, int *opNum ){
break;
}
}
char* GetStringPtr(int type, int n ){ // ----------- Store String type: 0:string 1:fn 2:GraphY
unsigned int key;
int reg,dimA,dimB;
int opNum;
char *str;
LoadStringType( type, &reg, &opNum );
if ( n>opNum ) return NULL;
ErrorNo=0;
switch ( type ) {
case 0: // string
str = GetStrYFnPtrSub( reg, n, defaultStrArySize );
break;
case 1: // fn
str = GetStrYFnPtrSub( reg, n, defaultFnArySize );
break;
case 2: // GraphY
str = GetStrYFnPtrSub( reg, n, defaultGraphArySize );
break;
}
if ( ErrorNo ) return NULL; // error
return str;
}
char* CB_RecallString(int type ){ // ----------- Recall String type: 0:string 1:fn 2:GraphY
unsigned int key;
@ -53,39 +81,39 @@ char* CB_RecallString(int type ){ // ----------- Recall String type: 0:string
if ( key == KEY_CTRL_EXIT ) return 0;
if ( dimA >= n ) {
string = MatrixPtr(reg, n, 1);
}
} else string = NULL;
}
return string;
}
int CB_StoreStringSub(int type, int n, char *clipbuffer ){ // ----------- Store String type: 0:string 1:fn 2:GraphY
int reg,dimA,dimB;
int opNum;
char *str;
if ( clipbuffer == NULL ) return 0;
ErrorNo=0;
LoadStringType( type, &reg, &opNum );
str = GetStringPtr( type, n );
if ( ErrorNo ) return 0; // error
OpcodeCopy( str, clipbuffer , MatAry[reg].SizeB-1 );
return 0;
}
int CB_StoreString(int type, char *clipbuffer ){ // ----------- Store String type: 0:string 1:fn 2:GraphY
unsigned int key;
int reg,dimA,dimB;
int opNum,n;
char *str;
if ( clipbuffer == NULL ) return 0;
LoadStringType( type, &reg, &opNum );
n = SelectMemoryNum( type, opNum, 1, &key );
if ( key == KEY_CTRL_EXIT ) return 0;
ErrorNo=0;
switch ( type ) {
case 0: // string
str = GetStrYFnPtrSub( reg, n, defaultStrArySize );
break;
case 1: // fn
str = GetStrYFnPtrSub( reg, n, defaultFnArySize );
break;
case 2: // GraphY
str = GetStrYFnPtrSub( reg, n, defaultGraphArySize );
break;
}
if ( ErrorNo ) return -1; // error
OpcodeCopy( str, clipbuffer , MatAry[reg].SizeB-1 );
return 0;
return CB_StoreStringSub( type, n, clipbuffer ) ;
}
char* CB_SeeString(int type, int *select, char *clipbuffer ){ // ----------- See String type: 0:string 1:fn 2:GraphY
char buffer[64];
unsigned int key;
@ -97,6 +125,9 @@ char* CB_SeeString(int type, int *select, char *clipbuffer ){ // ----------- See
int base;
char *string=0,*str=0;
char *scrbuf[896];
memcpy( scrbuf, PictAry[0], 896); // store VRAM
Cursor_SetFlashMode(0); // cursor flashing off
if ( (*select)<1 ) (*select)=1;
@ -117,9 +148,15 @@ char* CB_SeeString(int type, int *select, char *clipbuffer ){ // ----------- See
for ( i=0; i<6; i++ ) {
k=seltop+i;
locate( 1, 2+i); Print((unsigned char*)TypeStr[type]);
sprintf( buffer,"%d:", k );
locate( 2, 2+i); Print((unsigned char*)buffer);
j=2; if ( k>=10 ) j=1;
locate( j, 2+i); Print((unsigned char*)TypeStr[type]);
sprintf( buffer,"%d", k );
if ( k<100 ) {
locate( j+1, 2+i); Print((unsigned char*)buffer);
} else {
PrintMini( 6+1, (1+i)*8+2,(unsigned char*)buffer,MINI_OVER);
}
locate( 4, 2+i); Print((unsigned char*)":");
locate( 5, 2+i);
dimA = MatAry[reg].SizeA ;
if ( dimA == 0 ) {
@ -145,7 +182,7 @@ char* CB_SeeString(int type, int *select, char *clipbuffer ){ // ----------- See
k=(*select);
ElementSize=MatAry[reg].ElementSize;
// ElementSize=MatAry[reg].ElementSize;
GetKey( &key );
if ( KEY_CTRL_XTT == key ) (*select)=23; // X
@ -185,8 +222,8 @@ char* CB_SeeString(int type, int *select, char *clipbuffer ){ // ----------- See
break;
case KEY_CTRL_F1: // store
cont=0;
return NULL;
CB_StoreStringSub( type, (*select), clipbuffer );
break;
case KEY_CTRL_F2: // recall
str = MatrixPtr( reg, (*select), 1 ) ;
cont=0;
@ -203,6 +240,7 @@ char* CB_SeeString(int type, int *select, char *clipbuffer ){ // ----------- See
break;
}
}
memcpy( PictAry[0], scrbuf, 896); // restore VRAM
return str;
}

View File

@ -115,7 +115,7 @@ char * CB_SaveLoadOprand( char *SRC , int *reg, int *matsize ) ;
void CB_SaveSub( char *sname, char* FilePtr, int size, int check, char* extname ) ;
char * CB_LoadSub( char *sname, int ptr, int *size, char* extname ) ;
void CB_Save( char *SRC ) ; // Save "TEST",Mat A[1,3]
void CB_Load( char *SRC ) ; // Load ("TEST" [, Ptr])->Mat A[1,3]
void CB_Load( char *SRC ) ; // Load ("TEST" [, Ptr])->Mat A[1,3]
void CB_Delete( char *SRC ) ; // Delete "ABC.bin"[,Q]
void Setfoldername16( char *folder16, char *sname ) ;
@ -143,12 +143,13 @@ void G1M_Basic_header( char *filebase ) ;
int CB_PreProcessIndent( char *filebase, int progno ) ; //
void CB_PostProcessIndentRemove( char *filebase ) ; //
void LoadConfig1data( int n ) ; // config data ->List Ans
//-----------------------------------------------------------------------------
int DecodeBmp2Vram( char *filebase, int px, int py ); // bmp -> vram
char * LoadBmp( char *filebase );
int SaveBmp( char *filebase, char *sname, int width, int height );
void CB_BmpSave( char *SRC ) ; // BmpSave "TEST"[,x][,y][,x2][,y2][,Q]
void CB_BmpLoad( char *SRC ) ; // BmpLoad("TEST" [, Ptr])->Mat A[1,3]
void CB_BmpLoad( char *SRC ) ; // BmpLoad("TEST" [, Ptr])->Mat A[1,3]
//------------------------------------------------------------------------- MCS
int MCS_ReadFileList() ; // MSC file list -> files

View File

@ -58,10 +58,10 @@
#define CMD_MENU_GRPH_GMEM 0x10303
#define CMD_MENU_DYNA 0x104
#define CMD_MENU_DYNA_TYPE 0x10400
#define CMD_MENU_TABL 0x110
#define CMD_MENU_TABL 0x105
#define CMD_MENU_TABL_TYPE 0x10500
#define CMD_MENU_TABL_STYL 0x10501
#define CMD_MENU_RECR 0x111
#define CMD_MENU_RECR 0x106
#define CMD_MENU_RECR_SELS 0x10600
#define CMD_MENU_RECR_TYPE 0x10601
#define CMD_MENU_RECR_RANG 0x10602

View File

@ -15,6 +15,7 @@
//-----------------------------------------------------------------------------
char CB_INTDefault=0; // default mode 0:normal 1: integer mode
char FuncType = 0;
char DrawType = 0; // 0:connect 1:Plot
char Coord = 1; // 0:off 1:on
char Grid = 0; // 0:off 1:on
@ -126,6 +127,7 @@ CchIf CacheRem;
void ClrCahche();
double REGf[4]; // F_Start F_End F_pitch
double VWIN[6][11]; //
char VWinflag[6]; // VWin flag
@ -483,6 +485,30 @@ int CB_interpreter_sub( char *SRC ) {
case 0x39: // TryEnd
CB_TryEnd();
break;
case 0x2B: // NormalG
case 0x2C: // ThickG
case 0x2D: // BrokenThickG
case 0x3F: // DotG
case 0xFFFFFFC8: // G SelOn
case 0xFFFFFFC9: // T SelOn
case 0xFFFFFFD8: // G SelOff
case 0xFFFFFFD9: // T SelOff
case 0x63: // Y=Type
case 0x64: // r=Type
case 0x65: // ParamType
// case 0x66: //
case 0x67: // X=Type
case 0x68: // X>Type
case 0x69: // X<Type
case 0x6A: // Y>Type
case 0x6B: // Y<Type
case 0x6C: // Y>=Type
case 0x6D: // Y<=Type
case 0x6E: // X>=Type
case 0x6F: // X<=Type
CB_GraphFunc(SRC,c);
break;
case 0x17: // ACBreak
if ( ( SRC[ExecPtr]==0xFFFFFFF7 ) && ( SRC[ExecPtr+1]==0x0E ) ) { // ACBreak Stop;
@ -544,6 +570,15 @@ int CB_interpreter_sub( char *SRC ) {
case 0x35 : // Blue
case 0x36 : // Green
break;
case 0x5E : // RGB(
CB_RGB( SRC, 0 );
break;
case 0x71 : // HSV(
CB_RGB( SRC, 1 );
break;
case 0x73 : // HSL(
CB_RGB( SRC, 2 );
break;
default:
goto Evalexit2;
}
@ -560,6 +595,7 @@ int CB_interpreter_sub( char *SRC ) {
case 0x1B: // fn
fnjmp:
if ( CB_CheckYfn( SRC ) == 0 ) goto Evalexit2;
break;
case 0x30: // StrJoin(
// case 0x34: // StrLeft(
// case 0x35: // StrRight(
@ -584,6 +620,26 @@ int CB_interpreter_sub( char *SRC ) {
// dspflag=0;
break;
case 0xFFFFFF9B : // Black
case 0xFFFFFF9C : // White
case 0xFFFFFF9D : // Magenta
case 0xFFFFFF9E : // Cyan
case 0xFFFFFF9F : // Yellow
case 0xFFFFFF9A: // AxesScale
case 0x7D : // ColorClr
case 0xFFFFFFF4: // S-L-Thin
case 0xFFFFFFF3: // SketchThin
break;
case 0xFFFFFF99 : // Plot/Line-Color
CB_PlotLineColor( SRC );
break;
case 0xFFFFFFBE : // Back-Color
CB_BackColor( SRC );
break;
case 0xFFFFFFBF : // Transp-Color
CB_TransparentColor( SRC );
break;
case 0x08: // Real
ComplexMode = 0;
dspflag=0;
@ -639,6 +695,10 @@ int CB_interpreter_sub( char *SRC ) {
dspflag=0;
UseGraphic=9;
break;
case 0xFFFFFF98: // SetG-Color
case 0xFFFFFFF5: // ThinG
CB_GraphFunc(SRC,c);
break;
default:
Evalexit2:
ExecPtr-=2;
@ -2382,6 +2442,9 @@ void CB_Store( char *SRC ){ // ->
} else if ( c == 0x5F ) { // Ticks
ExecPtr+=2;
goto StoreTicks;
} else if ( ( 0xFFFFFF91 <= c ) && ( c <= 0xFFFFFF93 ) ) { // F Start~F pitch
ExecPtr+=2;
REGf[c-0xFFFFFF90] = CB_CurrentValue.real ;
} else if ( c == 0x00 ) { // Xmin
Xmin = CB_CurrentValue.real ;
SetXdotYdot();
@ -2818,6 +2881,7 @@ int CB_interpreter( char *SRC ) {
char bk_RoundMODE = CB_Round.MODE;
char bk_RoundDIGIT = CB_Round.DIGIT;
char bk_ENG = ENG; // ENG flag
char bk_FuncType = FuncType;
char bk_DrawType = DrawType; // 0:connect 1:Plot
char bk_Coord = Coord; // 0:off 1:on
char bk_Grid = Grid; // 0:off 1:on
@ -2884,6 +2948,7 @@ int CB_interpreter( char *SRC ) {
CB_Round.MODE =bk_RoundMODE;
CB_Round.DIGIT=bk_RoundDIGIT;
ENG = bk_ENG; // ENG flag
FuncType = bk_FuncType;
DrawType = bk_DrawType; // 0:connect 1:Plot
Coord = bk_Coord; // 0:off 1:on
Grid = bk_Grid; // 0:off 1:on
@ -2899,292 +2964,6 @@ int CB_interpreter( char *SRC ) {
return stat;
}
//----------------------------------------------------------------------------------------------
//----------------------------------------------------------------------------------------------
void CB_Input( char *SRC ){
unsigned int key;
int c;
complex DefaultValue={0,0};
int flag=0,flagint=0;
int reg,bptr,mptr;
int dimA,dimB,base;
char buffer[256];
char* MatAryC;
short* MatAryW;
int* MatAryI;
int width=255,length=ExpMax-1,option=0,rev=REV_OFF;
char spcchr[]={0x20,0,0};
char buffer2[64];
int aryN,aryS;
char *StrFnPtr;
KeyRecover();
HiddenRAM_MatAryStore(); // MatAry ptr -> HiddenRAM
CB_ChangeTextMode( SRC ) ;
// CB_SelectTextDD(); // Select Text Screen
if ( CursorX==22 ) CursorX=1;
if ( CursorX==23 ) Scrl_Y();
c=SRC[ExecPtr];
if ( c=='(' ) { // ?option([csrX][,csrY][,width][,spcchr][,length][,R])
c=SRC[++ExecPtr];
if ( ( c==')' ) || ( c==0x0E ) ) goto optionexit;
if ( c!=',' ) {
CursorX=CB_EvalInt( SRC ); if ( ( CursorX<1 ) || ( 21<CursorX ) ) { CB_Error(ArgumentERR); return ; } // Argument error
c=SRC[ExecPtr];
if ( c!=',' ) goto optionexit;
}
c=SRC[++ExecPtr];
if ( c!=',' ) {
CursorY=CB_EvalInt( SRC ); if ( ( CursorY<1 ) || ( 8<CursorY ) ) { CB_Error(ArgumentERR); return ; } // Argument error
c=SRC[ExecPtr];
if ( c!=',' ) goto optionexit;
}
c=SRC[++ExecPtr];
if ( c!=',' ) {
width=CB_EvalInt( SRC ); if ( ( width<1 ) || ( 21<width ) ) { CB_Error(ArgumentERR); return ; } // Argument error
c=SRC[ExecPtr];
if ( c!=',' ) goto optionexit;
}
c=SRC[++ExecPtr];
if ( c!=',' ) {
c=CB_IsStr( SRC, ExecPtr );
if ( c ) { // string
CB_GetLocateStr( SRC, buffer, 256-1 ); // String -> buffer return
} else { CB_Error(ArgumentERR); return ; } // Argument error
spcchr[0]=buffer[0];
spcchr[1]=buffer[1];
spcchr[2]=buffer[2];
c=SRC[ExecPtr];
if ( c!=',' ) goto optionexit;
}
c=SRC[++ExecPtr];
if ( c!=',' ) {
length=CB_EvalInt( SRC ); if ( ( length<1 ) || ( ExpMax-1<length ) ) { CB_Error(ArgumentERR); return ; } // Argument error
c=SRC[ExecPtr];
if ( c!=',' ) goto optionexit;
}
c=SRC[++ExecPtr];
if ( c!=')' ) {
if ( ( c=='R' ) || ( c=='r' ) ) { // reverse
ExecPtr++;
rev=REV_ON;
}
}
optionexit:
option=1;
if ( SRC[ExecPtr]==')' ) ExecPtr++;
} else {
locate( CursorX, CursorY); Print((unsigned char*)"?");
Scrl_Y();
}
c=SRC[ExecPtr];
bptr=ExecPtr;
reg=RegVar(c);
if ( c==0x0E ) { // ->
flag=0;
if ( CB_IsStr( SRC, ExecPtr+1 ) ) flag=2;
} else
if ( reg>=0 ) {
regj:
flag=1;
c=SRC[ExecPtr+1];
if (CB_INT==1) {
if ( c=='#' ) {
DefaultValue = LocalDbl[reg][0] ;
} else { flagint=1;
if ( c=='[' ) {
ExecPtr+=2;
MatOprandInt2( SRC, reg, &dimA, &dimB );
goto Matrix;
} else
if ( ( '0'<=c )&&( c<='9' ) ) {
ExecPtr++;
dimA=c-'0';
MatOprand1num( SRC, reg, &dimA, &dimB );
goto Matrix;
} else DefaultValue = Int2Cplx( LocalInt[reg][0] );
}
} else {
if ( c=='%' ) { flagint=1;
DefaultValue = Int2Cplx( LocalInt[reg][0] );
} else {
if ( c=='[' ) {
ExecPtr+=2;
MatOprand2( SRC, reg, &dimA, &dimB );
goto Matrix;
} else
if ( ( '0'<=c )&&( c<='9' ) ) {
ExecPtr++;
dimA=c-'0';
MatOprand1num( SRC, reg, &dimA, &dimB );
goto Matrix;
} else DefaultValue = LocalDbl[reg][0] ;
}
}
} else
if ( c==0x7F ) {
c = SRC[ExecPtr+1] ;
if ( ( c == 0x40 ) || ( c == 0xFFFFFF84 ) || ( ( c == 0x51 ) || ( (0x6A<=c)&&(c<=0x6F) ) ) ) { // Mat A[a,b] or Vct A[a] or List 1[a]
MatrixOprand( SRC, &reg, &dimA, &dimB );
Matrix:
if ( ErrorNo ) { // error
if ( MatAry[reg].SizeA == 0 ) ErrorNo=NoMatrixArrayERR; // No Matrix Array error
return ;
}
DefaultValue = Cplx_ReadMatrix( reg, dimA, dimB);
ExecPtr=bptr;
} else if ( c == 0x00 ) { // Xmin
DefaultValue.real = Xmin ;
} else if ( c == 0x01 ) { // Xmax
DefaultValue.real = Xmax ;
} else if ( c == 0x02 ) { // Xscl
DefaultValue.real = Xscl ;
} else if ( c == 0x04 ) { // Ymin
DefaultValue.real = Ymin ;
} else if ( c == 0x05 ) { // Ymax
DefaultValue.real = Ymax ;
} else if ( c == 0x06) { // Yscl
DefaultValue.real = Yscl ;
} else if ( c == 0x08) { // Thetamin
DefaultValue.real = TThetamin ;
} else if ( c == 0x09) { // Thetamax
DefaultValue.real = TThetamax ;
} else if ( c == 0x0A) { // Thetaptch
DefaultValue.real = TThetaptch ;
} else if ( c == 0x0B ) { // Xfct
DefaultValue.real = Xfct ;
} else if ( c == 0x0C ) { // Yfct
DefaultValue.real = Yfct ;
} else if ( c == 0xFFFFFFF0 ) { // GraphY
reg =defaultGraphAry;
aryN=defaultGraphAryN;
aryS=defaultGraphArySize;
goto strj;
} else {
goto exitj;
}
flag=1;
} else
if ( c==0xFFFFFFF9 ) {
c = SRC[ExecPtr+1] ;
if ( c == 0x3F ) { // Str 1-20
reg =defaultStrAry;
aryN=defaultStrAryN;
aryS=defaultStrArySize;
strj:
ExecPtr+=2;
StrFnPtr = GetStrYFnPtr( SRC, reg, aryN+1-MatBase, aryS );
if ( ErrorNo ) return ; // error
flag=3;
ExecPtr=bptr;
} else
if ( c == 0x1B ) { // fn
reg=defaultFnAry;
aryN=defaultFnAryN;
aryS=defaultFnArySize;
goto strj;
} else
if ( c == 0x41 ) { // DATE
ExecPtr+=2;
flag=4;
ExecPtr=bptr;
} else
if ( c == 0x42 ) { // TIME
ExecPtr+=2;
flag=5;
ExecPtr=bptr;
} else
if ( c == 0x21 ) { // Xdot
DefaultValue.real = Xdot ;
flag=1;
} else goto exitj;
} else
if ( c=='$' ) {
ExecPtr++;
MatrixOprand( SRC, &reg, &dimA, &dimB );
if ( ErrorNo ) return ; // error
if ( MatAry[reg].SizeA == 0 ) { CB_Error(NoMatrixArrayERR); return; } // No Matrix Array error
if ( MatAry[reg].ElementSize != 8 ) { CB_Error(ArgumentERR); return; } // element size error
flag=3;
ExecPtr=bptr;
} else {
exitj:
reg=RegVarAliasEx( SRC ); if ( reg>=0 ) goto regj; // variable alias
CB_Error(SyntaxERR); return; } // Syntax error
switch ( flag ) {
case 0: // ? -> A value
if ( option ) {
CB_CurrentValue = InputNumC_CB2( CursorX, CursorY, width, length, spcchr, rev, Int2Cplx(0), 0 ); // zero not disp
} else {
CB_CurrentValue = InputNumC_CB( CursorX, CursorY, width, length, spcchr, rev, Int2Cplx(0) );
}
ExecPtr++;
if ( CB_INT==1 ) flagint=1;
vinp:
ErrorNo=0; // error cancel
if ( BreakPtr > 0 ) { ExecPtr=BreakPtr; return ; }
CBint_CurrentValue = CB_CurrentValue.real ;
if ( flagint ) {
CBint_Store( SRC );
break;
}
CB_Store( SRC );
break;
case 1: // ?A value
if ( option ) {
CB_CurrentValue = InputNumC_CB2( CursorX, CursorY, width, length, spcchr, rev, DefaultValue, 1 ); // zero disp
} else {
buffer2[0]='\0';
Cplx_sprintGR2( buffer, buffer2, DefaultValue, 22-CursorX, RIGHT_ALIGN, CB_Round.MODE, CB_Round.DIGIT );
locate( CursorX, CursorY); Print((unsigned char*)buffer);
if ( buffer2[0] != '\0' ){
Scrl_Y();
locate( CursorX, CursorY); Print((unsigned char*)buffer2);
}
Scrl_Y();
CB_CurrentValue = InputNumC_CB1( CursorX, CursorY, width, length, spcchr, rev, DefaultValue );
}
goto vinp;
break;
case 2: // ? -> str
CB_CurrentStr=buffer;
CB_CurrentStr[0]='\0';
Inpj1: if ( option == 0 ) CursorX=1;
key=InputStr( CursorX, CursorY, width, CB_CurrentStr, length, spcchr, rev);
ErrorNo=0; // error cancel
if ( key==KEY_CTRL_AC ) { BreakPtr=ExecPtr; return ; }
if ( SRC[ExecPtr]==0x0E ) ExecPtr++; // -> skip
CB_StorStr( SRC );
break;
case 3: // ?$Mat ?Str1-20
CB_CurrentStr=buffer;
OpcodeStringToAsciiString(buffer, StrFnPtr, 255);
if ( width > MatAry[reg].SizeB-1 ) width=MatAry[reg].SizeB-1;
key=InputStr( CursorX, CursorY, width, CB_CurrentStr, length, spcchr, rev);
ErrorNo=0; // error cancel
if ( key==KEY_CTRL_AC ) { BreakPtr=ExecPtr; return ; }
CB_StorStr( SRC );
break;
case 4: // ?DATE
CB_DateToStr();
CB_CurrentStr[10]='\0'; // week cancel
Inpj2:
// CB_Print(CursorX, CursorY, (unsigned char*)CB_CurrentStr);
// Scrl_Y();
goto Inpj1;
break;
case 5: // ?TIME
CB_TimeToStr();
goto Inpj2;
break;
}
if ( option == 0 ) Scrl_Y();
Bdisp_PutDisp_DD_DrawBusy();
return ;
}
//----------------------------------------------------------------------------------------------
int iObjectAlign4a( unsigned int n ){ return n; } // align +4byte
int iObjectAlign4b( unsigned int n ){ return n; } // align +4byte

View File

@ -11,6 +11,7 @@ extern char Grid ; // 0:off 1:on
extern char Axes ; // 0:off 1:on
extern char Label ; // 0:off 1:on
extern char Derivative ; // 0:off 1:on
extern char FuncType;
#define S_L_Normal 0
#define S_L_Thick 1
@ -52,6 +53,7 @@ extern char CommandInputMethod; // 0:C.Basic 1:Genuine
extern complex REG[VARMAXSIZE];
extern double REGv[11];
extern double VWIN[6][11];
extern double REGf[4]; // F_Start F_End F_pitch
extern char VWinflag[6]; // VWin flag
#define regA REG[ 0]
@ -101,6 +103,11 @@ extern char VWinflag[6]; // VWin flag
#define Xdot REGv[ 9]
#define Ydot REGv[10]
#define F_Result REGf[ 0]
#define F_Start REGf[ 1]
#define F_End REGf[ 2]
#define F_pitch REGf[ 3]
extern double Xfct;
extern double Yfct;
@ -366,6 +373,14 @@ int CB_PopUpWin( char *SRC ); //
void CB_Menu( char *SRC, int *StackGotoAdrs, CurrentStk *CurrentStruct) ; // Menu "title name","Branch name1",1,"Branch name2",2,"Branch name3",3,...
void CB_Wait( char *SRC ) ;
void CB_PlotLineColor( char *SRC );
void CB_BackColor( char *SRC );
void CB_TransparentColor( char *SRC );
int CB_GetColor( char *SRC );
unsigned short CB_RGB( char *SRC, int mode ) ; // n or (r,g,b) return : color code // mode 0:RGB 1:HSV 2:HSL
void CB_GraphFunc( char *SRC, int c ) ;
//-----------------------------------------------------------------------------
#define MAXNAMELEN 8

View File

@ -303,7 +303,7 @@ void CB_Locate( char *SRC ){
if ( c != ',' ) { CB_Error(SyntaxERR); return; } // Syntax error
ExecPtr++;
c=CB_IsStr( SRC, ExecPtr );
c=CB_IsStr_noYFn( SRC, ExecPtr );
if ( c ) { // string
CB_GetLocateStr( SRC, buffer, 256-1 ); // String -> buffer return
} else { // expression
@ -499,7 +499,7 @@ void CB_Text( char *SRC ) { // Text
c=SRC[ExecPtr];
if ( c != ',' ) { CB_Error(SyntaxERR); return; } // Syntax error
c=SRC[++ExecPtr];
c=CB_IsStr( SRC, ExecPtr );
c=CB_IsStr_noYFn( SRC, ExecPtr );
if ( c ) { // string
CB_GetLocateStr( SRC, buffer, 256-1 ); // String -> buffer return
} else { // expression
@ -542,7 +542,7 @@ void CB_LocateYX( char *SRC ){
c=SRC[ExecPtr];
if ( c != ',' ) { CB_Error(SyntaxERR); return; } // Syntax error
ExecPtr++;
c=CB_IsStr( SRC, ExecPtr );
c=CB_IsStr_noYFn( SRC, ExecPtr );
if ( c ) { // string
CB_GetLocateStr( SRC, buffer, 256-1 ); // String -> buffer return
} else { // expression
@ -1755,7 +1755,7 @@ int CB_Disp( char *SRC ){ // Disp "A=",A
if ( CursorX >1 ) Scrl_Y();
CB_StrBufferCNT=0; // String buffer clear
c=CB_IsStr( SRC, ExecPtr );
c=CB_IsStr_noYFn( SRC, ExecPtr );
if ( c ) { // string
CB_GetLocateStr( SRC, buffer, 128-1 ); // String -> buffer return
} else { // expression
@ -1952,7 +1952,7 @@ void CB_FkeyMenu( char *SRC) { // FkeyMenu(6,"ABC",R)
if ( c != ',' ) { CB_Error(SyntaxERR); return; } // Syntax error
ExecPtr++;
c=CB_IsStr( SRC, ExecPtr );
c=CB_IsStr_noYFn( SRC, ExecPtr );
if ( c ) { // string
CB_GetLocateStr( SRC, buffer, 64-1 ); // String -> buffer return
} else { // expression
@ -2492,6 +2492,77 @@ void CB_RclVWin( char *SRC ) {
CB_ChangeViewWindow() ;
}
//----------------------------------------------------------------------------------------------
//----------------------------------------------------------------------------------------------
void CB_GraphFunc( char *SRC, int c ) {
int n,d;
char *buffer;
if ( ( 0x63<=c ) && ( c<=0x6F) ) {
switch ( c ) {
case 0x63: d= 0; break; // Y=Type
case 0x64: d= 1; break; // r=Type
case 0x65: d= 2; break; // ParamType
// case 0x66: //
case 0x67: d= 3; break; // X=Type
case 0x68: d= 8; break; // X>Type
case 0x69: d= 9; break; // X<Type
case 0x6A: d= 4; break; // Y>Type
case 0x6B: d= 5; break; // Y<Type
case 0x6C: d= 6; break; // Y>=Type
case 0x6D: d= 7; break; // Y<=Type
case 0x6E: d=10; break; // X>=Type
case 0x6F: d=11; break; // X<=Type
}
FuncType = d;
return;
}
if ( c == 0xFFFFFF98 ) { // SetG-Color
c = CB_GetColor( SRC );
if ( SRC[ExecPtr]!=',' ) { CB_Error(SyntaxERR); goto exit; } // Syntax error
ExecPtr++;
buffer = GetStrYFnPtr( SRC, defaultGraphAry, defaultGraphAryN, defaultGraphArySize ) ;
if ( buffer[7-1] ) {
buffer[5-1] = c/256;
buffer[6-1] = c%256;
}
goto exit;
}
buffer = GetStrYFnPtr( SRC, defaultGraphAry, defaultGraphAryN, defaultGraphArySize ) ;
if ( buffer[7-1] == 0 ) goto exit;
switch ( c ) {
case 0x2B: // NormalG
buffer[4-1] = 0x02;
break;
case 0x2C: // ThickG
buffer[4-1] = 0x03;
break;
case 0x2D: // BrokenThickG
buffer[4-1] = 0x05;
break;
case 0x3F: // DotG
buffer[4-1] = 0x08;
break;
case 0xFFFFFFF5: // ThinG
buffer[4-1] = 0x12;
break;
case 0xFFFFFFC8: // G SelOn
buffer[3-1] |= 0x80;
break;
case 0xFFFFFFC9: // T SelOn
buffer[3-1] |= 0x20;
break;
case 0xFFFFFFD8: // G SelOff
buffer[3-1] &= 0x7F;
break;
case 0xFFFFFFD9: // T SelOff
buffer[3-1] &= 0xDF;
break;
}
exit:
dspflag=0;
}
//----------------------------------------------------------------------------------------------
int GObjectAlign4d( unsigned int n ){ return n; } // align +4byte
int GObjectAlign4e( unsigned int n ){ return n; } // align +4byte

View File

@ -35,6 +35,7 @@ extern int StackPtr;
//------------------------------------------------------------------------------
void VerDispSub( int flag ) ;
void VerDisp( int flag ) ;
unsigned int XTTKey( unsigned int key) ;
unsigned int MathKey( unsigned int key) ;
int CB_Version() ; // Version