FX 02.45.1502

This commit is contained in:
CalcLoverHK 2024-01-25 03:09:54 +08:00
parent a8a167613e
commit 6d05a74caa
26 changed files with 760 additions and 661 deletions

View File

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

View File

@ -1,6 +1,6 @@
[DLSimProject]
Name=CBASIC
Version=02.45.1401
Version=02.45.1502
Model=:fx-9860G.dlm
SourcePath=.
MemoryPath=INIT
@ -32,6 +32,7 @@ SourceFile=:KeyScan.c
SourceFile=:fx_syscall.src
SourceFile=:CB_glib2.c
SourceFile=:CB_Eval_ext.c
SourceFile=:CB_GraphFunc.c
SourceFile=:CBZ_Time.c
SourceFile=:CBZ_inp.c
SourceFile=:CBZ_edit.c

View File

@ -823,6 +823,10 @@ complex Cplx_Evalsub1(char *SRC) { // 1st Priority
return Cplx_Round( tmp, i, tmp2.real);
case 0xFFFFFFF0 : // GraphY str
case 0xFFFFFFF1: // Graphr
case 0xFFFFFFF2: // GraphXt
case 0xFFFFFFF3: // GraphYt
case 0xFFFFFFF4: // GraphX
return CB_Cplx_GraphYStr( SRC, 0 );
case 0xFFFFFFF5 : // IsExist(
@ -928,7 +932,8 @@ complex Cplx_Evalsub1(char *SRC) { // 1st Priority
case 0xFFFFFFDF : // Version
return Int2Cplx( CB_Version() ); //
// case 0xFFFFFF90 : // F Result
case 0xFFFFFF90 : // F Result
dspflag=4; // 2:value 3:Mat 4:List
case 0xFFFFFF91 : // F Start
case 0xFFFFFF92 : // F End
case 0xFFFFFF93 : // F pitch
@ -1282,66 +1287,9 @@ complex Cplx_Evalsub5(char *SRC) { // 5th Priority abbreviated multiplication
( c == 0xFFFFFF8D )) { // integral
result = Cplx_fMUL( result, Cplx_Evalsub4( SRC ) );
} else if ( c == 0x7F ) { // 7F..
c = SRC[ExecPtr+1];
switch ( c ) {
case 0x40: // Mat A[a,b]
case 0xFFFFFF84 : // Vct A[a,b]
case 0x50: // i
case 0x51: // List 1[a]
case 0x3A: // MOD(a,b)
case 0x3C: // GCD(a,b)
case 0x3D: // LCM(a,b)
case 0xFFFFFF8F: // Getkey
case 0xFFFFFF85: // logab(a,b)
case 0xFFFFFF86: // RndFix(n,digit)
case 0xFFFFFF87: // RanInt#(st,en)
case 0xFFFFFF88 : // RanList#(n) ->ListAns
case 0xFFFFFF89 : // RanBin#(n,p[,m]) ->ListAns
case 0xFFFFFF8A : // RanNorm#(sd,mean[,n]) ->ListAns
case 0xFFFFFFB3 : // Not
case 0xFFFFFFF0: // GraphY
case 0x00: // Xmin
case 0x01: // Xmax
case 0x02: // Xscl
case 0x04: // Ymin
case 0x05: // Ymax
case 0x06: // Yscl
case 0x08: // Thetamin
case 0x09: // Thetamax
case 0x0A: // Thetaptch
case 0x0B: // Xfct
case 0x0C: // Yfct
case 0x20 : // Max( List 1 ) Max( { 1,2,3,4,5 } )
case 0x21 : // Det Mat A
case 0x29 : // Sigma( X, X, 1, 1000)
case 0x2D : // Min( List 1 ) Min( { 1,2,3,4,5 } )
case 0x2E : // Mean( List 1 ) Mean( { 1,2,3,4,5 } )
case 0x47 : // Fill(
case 0x4A : // List>Mat( List 1, List 2,..) -> List 5
case 0x4B : // Mat>List( Mat A, m) -> List n
case 0x4C : // Sum List 1
case 0x4D : // Prod List 1
case 0x58 : // ElemSize( Mat A )
case 0x59 : // RowSize( Mat A )
case 0x5A : // ColSize( Mat A )
case 0x5B : // MatBase( Mat A )
case 0x22 : // Arg
case 0x23 : // Conjg
case 0x24 : // ReP
case 0x25 : // ImP
case 0x6A : // List1
case 0x6B : // List2
case 0x6C : // List3
case 0x6D : // List4
case 0x6E : // List5
case 0x6F : // List6
case 0x26 : // dx/dy
result = Cplx_fMUL( result, Cplx_Evalsub4( SRC ) );
break;
default:
goto exitj;
break;
}
c = SRC[ExecPtr+1];
if ( ( 0xFFFFFFB0 <= c ) && ( c <= 0xFFFFFFBD ) ) goto exitj; // And Or Not xor
result = Cplx_fMUL( result, Cplx_Evalsub4( SRC ) );
} else if ( c == 0xFFFFFFF7 ) { // F7..
c = SRC[ExecPtr+1];
switch ( c ) {

View File

@ -114,7 +114,7 @@ complex Cplx_ListEvalsub1(char *SRC) { // 1st Priority
int resultreg;
int resultflag;
dspflag=2; // 2:value 3:list 4:mat
dspflag=2; // 2:value 3:Mat 4:List
c = SRC[ExecPtr++];
topj:
@ -285,6 +285,10 @@ complex Cplx_ListEvalsub1(char *SRC) { // 1st Priority
return result ;
case 0xFFFFFFF0 : // GraphY str
case 0xFFFFFFF1: // Graphr
case 0xFFFFFFF2: // GraphXt
case 0xFFFFFFF3: // GraphYt
case 0xFFFFFFF4: // GraphX
return CB_Cplx_GraphYStr( SRC, 1 );
case 0xFFFFFFF5 : // IsExist(
@ -390,7 +394,8 @@ complex Cplx_ListEvalsub1(char *SRC) { // 1st Priority
case 0xFFFFFFDF : // Version
return Int2Cplx( CB_Version() ); //
// case 0xFFFFFF90 : // F Result
case 0xFFFFFF90 : // F Result
CB_F_Result( SRC );
case 0xFFFFFF91 : // F Start
case 0xFFFFFF92 : // F End
case 0xFFFFFF93 : // F pitch
@ -779,66 +784,9 @@ complex Cplx_ListEvalsub5(char *SRC) { // 5th Priority abbreviated multiplicati
( c == 0xFFFFFF8D )) { // integral
result = Cplx_EvalFxDbl2( &Cplx_fMUL, &resultflag, &resultreg, result, Cplx_ListEvalsub4( SRC ) ) ;
} else if ( c == 0x7F ) { // 7F..
c = SRC[ExecPtr+1];
switch ( c ) {
case 0x40: // Mat A[a,b]
case 0xFFFFFF84 : // Vct A[a,b]
case 0x50: // i
case 0x51: // List 1[a]
case 0x3A: // MOD(a,b)
case 0x3C: // GCD(a,b)
case 0x3D: // LCM(a,b)
case 0xFFFFFF8F: // Getkey
case 0xFFFFFF85: // logab(a,b)
case 0xFFFFFF86: // RndFix(n,digit)
case 0xFFFFFF87: // RanInt#(st,en)
case 0xFFFFFF88 : // RanList#(n) ->ListAns
case 0xFFFFFF89 : // RanBin#(n,p[,m]) ->ListAns
case 0xFFFFFF8A : // RanNorm#(sd,mean[,n]) ->ListAns
case 0xFFFFFFB3 : // Not
case 0xFFFFFFF0: // GraphY
case 0x00: // Xmin
case 0x01: // Xmax
case 0x02: // Xscl
case 0x04: // Ymin
case 0x05: // Ymax
case 0x06: // Yscl
case 0x08: // Thetamin
case 0x09: // Thetamax
case 0x0A: // Thetaptch
case 0x0B: // Xfct
case 0x0C: // Yfct
case 0x20 : // Max( List 1 ) Max( { 1,2,3,4,5 } )
case 0x21 : // Det Mat A
case 0x29 : // Sigma( X, X, 1, 1000)
case 0x2D : // Min( List 1 ) Min( { 1,2,3,4,5 } )
case 0x2E : // Mean( List 1 ) Mean( { 1,2,3,4,5 } )
case 0x47 : // Fill(
case 0x4A : // List>Mat( List 1, List 2,..) -> List 5
case 0x4B : // Mat>List( Mat A, m) -> List n
case 0x4C : // Sum List 1
case 0x4D : // Prod List 1
case 0x58 : // ElemSize( Mat A )
case 0x59 : // RowSize( Mat A )
case 0x5A : // ColSize( Mat A )
case 0x5B : // MatBase( Mat A )
case 0x22 : // Arg
case 0x23 : // Conjg
case 0x24 : // ReP
case 0x25 : // ImP
case 0x6A : // List1
case 0x6B : // List2
case 0x6C : // List3
case 0x6D : // List4
case 0x6E : // List5
case 0x6F : // List6
case 0x26 : // dx/dy
c = SRC[ExecPtr+1];
if ( ( 0xFFFFFFB0 <= c ) && ( c <= 0xFFFFFFBD ) ) goto exitj; // And Or Not xor
result = Cplx_EvalFxDbl2( &Cplx_fMUL, &resultflag, &resultreg, result, Cplx_ListEvalsub4( SRC ) ) ;
break;
default:
goto exitj;
break;
}
} else if ( c == 0xFFFFFFF7 ) { // F7..
c = SRC[ExecPtr+1];
switch ( c ) {

View File

@ -179,7 +179,7 @@ void MatOprandInt1( char *SRC, int reg, int *dimA, int *dimB ){ // base:0 0-
int base;
MatOprandInt1sub( SRC, reg, &(*dimA) );
if ( MatAry[reg].SizeA == 0 ) {
DimMatrixSub( reg, DefaultElemetSize(), (*dimA)-1+MatBase, 1, MatBase ); // new matrix
DimMatrixSub( reg, DefaultElemetSize(), (*dimA)+1-MatBase, 1, MatBase ); // new matrix
if ( ErrorNo ) return ; // error
}
base=MatAry[reg].Base;
@ -658,6 +658,10 @@ int EvalIntsub1(char *SRC) { // 1st Priority
return CB_Ticks( SRC ); //
case 0xFFFFFFF0 : // GraphY str
case 0xFFFFFFF1: // Graphr
case 0xFFFFFFF2: // GraphXt
case 0xFFFFFFF3: // GraphYt
case 0xFFFFFFF4: // GraphX
return CBint_GraphYStr( SRC, 0 );
case 0xFFFFFFF5 : // IsExist(
@ -750,7 +754,9 @@ int EvalIntsub1(char *SRC) { // 1st Priority
case 0xFFFFFFDF : // Version
return CB_Version(); //
// case 0xFFFFFF90 : // F Result
case 0xFFFFFF90 : // F Result
dspflag=4; // 2:value 3:Mat 4:List
return 0;
case 0xFFFFFF91 : // F Start
case 0xFFFFFF92 : // F End
case 0xFFFFFF93 : // F pitch
@ -984,57 +990,9 @@ int EvalIntsub5(char *SRC) { // 5th Priority abbreviated multiplication
( c == 0xFFFFFFC1 )) { // Ran#
result *= EvalIntsub4( SRC ) ;
} else if ( c == 0x7F ) { // 7F..
c = SRC[ExecPtr+1];
switch ( c ) {
case 0x40: // Mat A[a,b]
case 0xFFFFFF84 : // Vct A[a,b]
case 0x51: // List 1[a]
case 0x3A: // MOD(a,b)
case 0x3C: // GCD(a,b)
case 0x3D: // LCM(a,b)
case 0xFFFFFF8F: // Getkey
case 0xFFFFFF85: // logab(a,b)
case 0xFFFFFF86: // RndFix(n,digit)
case 0xFFFFFF87: // RanInt#(st,en)
case 0xFFFFFFB3 : // Not
case 0xFFFFFFF0: // GraphY
case 0x00: // Xmin
case 0x01: // Xmax
case 0x02: // Xscl
case 0x04: // Ymin
case 0x05: // Ymax
case 0x06: // Yscl
case 0x08: // Thetamin
case 0x09: // Thetamax
case 0x0A: // Thetaptch
case 0x0B: // Xfct
case 0x0C: // Yfct
case 0x20 : // Max( List 1 ) Max( { 1,2,3,4,5 } )
case 0x21 : // Det Mat A
case 0x29 : // Sigma( X, X, 1, 1000)
case 0x2D : // Min( List 1 ) Min( { 1,2,3,4,5 } )
case 0x2E : // Mean( List 1 ) Mean( { 1,2,3,4,5 } )
case 0x47 : // Fill(
case 0x4A : // List>Mat( List 1, List 2,..) -> List 5
case 0x4B : // Mat>List( Mat A, m) -> List n
case 0x4C : // Sum List 1
case 0x4D : // Prod List 1
case 0x58 : // ElemSize( Mat A )
case 0x59 : // RowSize( Mat A )
case 0x5A : // ColSize( Mat A )
case 0x5B : // MatBase( Mat A )
case 0x6A : // List1
case 0x6B : // List2
case 0x6C : // List3
case 0x6D : // List4
case 0x6E : // List5
case 0x6F : // List6
result *= EvalIntsub4( SRC ) ;
break;
default:
goto exitj;
break;
}
c = SRC[ExecPtr+1];
if ( ( 0xFFFFFFB0 <= c ) && ( c <= 0xFFFFFFBD ) ) goto exitj; // And Or Not xor
result *= EvalIntsub4( SRC ) ;
} else if ( c == 0xFFFFFFF7 ) { // F7..
c = SRC[ExecPtr+1];
switch ( c ) {

View File

@ -106,7 +106,7 @@ int ListEvalIntsub1(char *SRC) { // 1st Priority
int resultreg;
int resultflag;
dspflag=2; // 2:value 3:list 4:mat
dspflag=2; // 2:value 3:Mat 4:List
c = SRC[ExecPtr++];
topj:
@ -253,6 +253,10 @@ int ListEvalIntsub1(char *SRC) { // 1st Priority
return CB_Ticks( SRC ); //
case 0xFFFFFFF0 : // GraphY str
case 0xFFFFFFF1: // Graphr
case 0xFFFFFFF2: // GraphXt
case 0xFFFFFFF3: // GraphYt
case 0xFFFFFFF4: // GraphX
return CBint_GraphYStr( SRC, 1 );
case 0xFFFFFFF5 : // IsExist(
@ -345,7 +349,8 @@ int ListEvalIntsub1(char *SRC) { // 1st Priority
case 0xFFFFFFDF : // Version
return CB_Version(); //
// case 0xFFFFFF90 : // F Result
case 0xFFFFFF90 : // F Result
CB_F_Result( SRC );
case 0xFFFFFF91 : // F Start
case 0xFFFFFF92 : // F End
case 0xFFFFFF93 : // F pitch
@ -610,57 +615,9 @@ int ListEvalIntsub5(char *SRC) { // 5th Priority abbreviated multiplication
( c == 0xFFFFFFC1 )) { // Ran#
result = EvalFxInt2( &fMULint, &resultflag, &resultreg, result, ListEvalIntsub4( SRC ) ) ;
} else if ( c == 0x7F ) { // 7F..
c = SRC[ExecPtr+1];
switch ( c ) {
case 0x40: // Mat A[a,b]
case 0xFFFFFF84 : // Vct A[a,b]
case 0x51: // List 1[a]
case 0x3A: // MOD(a,b)
case 0x3C: // GCD(a,b)
case 0x3D: // LCM(a,b)
case 0xFFFFFF8F: // Getkey
case 0xFFFFFF85: // logab(a,b)
case 0xFFFFFF86: // RndFix(n,digit)
case 0xFFFFFF87: // RanInt#(st,en)
case 0xFFFFFFB3 : // Not
case 0xFFFFFFF0: // GraphY
case 0x00: // Xmin
case 0x01: // Xmax
case 0x02: // Xscl
case 0x04: // Ymin
case 0x05: // Ymax
case 0x06: // Yscl
case 0x08: // Thetamin
case 0x09: // Thetamax
case 0x0A: // Thetaptch
case 0x0B: // Xfct
case 0x0C: // Yfct
case 0x20 : // Max( List 1 ) Max( { 1,2,3,4,5 } )
case 0x21 : // Det Mat A
case 0x29 : // Sigma( X, X, 1, 1000)
case 0x2D : // Min( List 1 ) Min( { 1,2,3,4,5 } )
case 0x2E : // Mean( List 1 ) Mean( { 1,2,3,4,5 } )
case 0x47 : // Fill(
case 0x4A : // List>Mat( List 1, List 2,..) -> List 5
case 0x4B : // Mat>List( Mat A, m) -> List n
case 0x4C : // Sum List 1
case 0x4D : // Prod List 1
case 0x58 : // ElemSize( Mat A )
case 0x59 : // RowSize( Mat A )
case 0x5A : // ColSize( Mat A )
case 0x5B : // MatBase( Mat A )
case 0x6A : // List1
case 0x6B : // List2
case 0x6C : // List3
case 0x6D : // List4
case 0x6E : // List5
case 0x6F : // List6
c = SRC[ExecPtr+1];
if ( ( 0xFFFFFFB0 <= c ) && ( c <= 0xFFFFFFBD ) ) goto exitj; // And Or Not xor
result = EvalFxInt2( &fMULint, &resultflag, &resultreg, result, ListEvalIntsub4( SRC ) ) ;
break;
default:
goto exitj;
break;
}
} else if ( c == 0xFFFFFFF7 ) { // F7..
c = SRC[ExecPtr+1];
switch ( c ) {

View File

@ -88,6 +88,9 @@ void CB_ErrMsg(int ErrNo) {
case ReceiveERR:
ERROR(" Receive ERROR");
break;
case InvalidType:
ERROR(" Invalid Type");
break;
case NextWithoutForERR:
ERROR("Next without For");

View File

@ -953,7 +953,7 @@ unsigned int Explorer( int size, char *folder )
}
break;
case KEY_CTRL_F4: // Copy file
if ( strlen(search) ) {
if ( searchmode ) {
lowercase=1-lowercase;
if ( alphalock == 0 ) PutAlphamode1(CursorStyle);
key = 0;
@ -982,7 +982,7 @@ unsigned int Explorer( int size, char *folder )
key=SelectChar( &ContinuousSelect);
if ( alphalock == 0 ) PutAlphamode1(CursorStyle);
break;
}
}
switch ( filemode ) {
case 0:
if ( nofile ) break;

View File

@ -154,7 +154,7 @@ void DispGenuineCmdMenu(){
Fkey_Icon( FKeyNo1, 540 ); // Fkey_dspRB( FKeyNo1, "Stat"); // DrawStat
Fkey_Icon( FKeyNo2, 541 ); // Fkey_dspRB( FKeyNo2, "Grph"); // DrawGraph
FkeyClear( FKeyNo3 );
FkeyClear( FKeyNo4 );
Fkey_Icon( FKeyNo4, 545 ); // Fkey_dspRB( FKeyNo4, "Table"); // DispF-Tbl
FkeyClear( FKeyNo5 );
Fkey_dspRB( FKeyNo6, "Disp"); // Disp
break;
@ -547,7 +547,8 @@ void DispGenuineCmdMenu(){
Fkey_Icon( FKeyNo1, 69 ); // Fkey_dspRB( FKeyNo1, "STORE");
Fkey_Icon( FKeyNo2, 70 ); // Fkey_dspRB( FKeyNo2, "RECALL");
Fkey_Icon( FKeyNo3, 240 ); // Fkey_dspRB( FKeyNo3, " fn ");
Fkey_Icon( FKeyNo4, 241 ); // Fkey_dispN( FKeyNo4, " SEE");
// Fkey_Icon( FKeyNo4, 241 ); // Fkey_dispN( FKeyNo4, " SEE");
Fkey_Icon( FKeyNo4, 389 ); // Fkey_dispR( FKeyNo4,"EDIT");
FkeyClear( FKeyNo5 );
FkeyClear( FKeyNo6 );
break;
@ -698,7 +699,7 @@ void DispGenuineCmdMenu(){
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");
Fkey_Icon( FKeyNo4, 630 ); // Fkey_dspRB( FKeyNo3, "Result");
FkeyClear( FKeyNo4 );
FkeyClear( FKeyNo5 );
FkeyClear( FKeyNo6 );
@ -1159,7 +1160,7 @@ void DispGenuineCmdMenu(){
Fkey_Icon( FKeyNo2, 180 ); // Fkey_dispR( FKeyNo2, "CPLX");
Fkey_Icon( FKeyNo3, 762 ); // Fkey_dispR( FKeyNo3, "SWin");
Fkey_Icon( FKeyNo4, 178 ); // Fkey_dispR( FKeyNo3, "LIST");
FkeyClear( FKeyNo5 );
Fkey_Icon( FKeyNo5, 764 ); // Fkey_dispR( FKeyNo5, "TBL-VAR");
Fkey_Icon(FKeyNo6, 6 ); //Fkey_DISPN( FKeyNo6," \xE6\x9E ");
break;
case 3:
@ -1300,6 +1301,18 @@ void DispGenuineCmdMenu(){
break;
}
break;
case CMD_SETUP_TVAR:
switch ( CommandPage ) {
case 0:
Fkey_Icon( FKeyNo1, 500 ); // Fkey_dspRB( FKeyNo1, "Range");
Fkey_Icon( FKeyNo2, 162 ); // Fkey_dspRB( FKeyNo2, "List");
FkeyClear( FKeyNo3 );
FkeyClear( FKeyNo4 );
FkeyClear( FKeyNo5 );
FkeyClear( FKeyNo6 );
break;
}
break;
default:
break;

View File

@ -367,6 +367,10 @@ void GetGenuineCmdF1( unsigned int *code ){
switch ( CommandPage ) {
case 0: (*code)=0xF91C;return; // File
} break;
case CMD_SETUP_TVAR:
switch ( CommandPage ) {
case 0: (*code)=0xF788;return; // VarRange
} break;
default:
break;

View File

@ -357,6 +357,10 @@ void GetGenuineCmdF2( unsigned int *code ){
switch ( CommandPage ) {
case 0: (*code)=0xF909;return; // a+bi
} break;
case CMD_SETUP_TVAR:
switch ( CommandPage ) {
case 0: (*code)=0xF91D;return; // VarList
} break;
default:
break;

View File

@ -29,6 +29,10 @@ void GetGenuineCmdF4( unsigned int *code ){
switch ( CommandPage ) {
case 0: (*code)=0xF91E;return; // ClrMat
} break;
case CMD_PRGM_DISP:
switch ( CommandPage ) {
case 0: (*code)=0xF72E;return; // DispF-Tbl
} break;
case CMD_PRGM_REL:
switch ( CommandPage ) {
case 0: (*code)=0x3C;return; // <

View File

@ -170,6 +170,7 @@ void GetGenuineCmdF5( unsigned int *code ){
switch ( CommandPage ) {
case 0: CommandType=CMD_SETUP_LABL;CommandPage=0;break;
case 1: CommandType=CMD_SETUP_BACK;CommandPage=0;break;
case 2: CommandType=CMD_SETUP_TVAR;CommandPage=0;break;
case 3: (*code)=0xF94F;return; // Wait
case 4: (*code)=0x7FDF;return; // Version
} break;

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 14.", MINI_OVER );
PrintMini(13*6+2, 2*8+1, (unsigned char*)"build 15.", MINI_OVER );
PrintMini( 2*6+2, 3*8+1, (unsigned char*)"(Casio Basic compatible+)", MINI_OVER );
// if ( ( UseHiddenRAM ) && ( IsHiddenRAM ) ) {
@ -1174,12 +1174,12 @@ void TimePrintSetMode(int set){ // 1:on 0:off
}
//--------------------------------------------------------------
int SelectNum1( char*msg, int n ,int min, int max, unsigned int *key ) { //
int SelectNum1sub( char *msg0, char*msg, int n ,int min, int max, unsigned int *key ) { //
char buffer[32];
int n0=n;
PopUpWin(3);
FkeyClearAll();
locate( 3,3); Print((unsigned char *)"Select Number");
locate( 3,3); Print((unsigned char *)msg0);
locate( 3,5); sprintf(buffer,"%s[%d~%d]:",msg,min,max); Print((unsigned char *)buffer);
while (1) {
n=InputNumD(3+strlen(buffer), 5, log10(max)+1, n, " ", REV_OFF, FLOAT_OFF, EXP_OFF, &(*key)); // 0123456789
@ -1189,6 +1189,9 @@ int SelectNum1( char*msg, int n ,int min, int max, unsigned int *key ) { //
}
return n ; // ok
}
int SelectNum1( char*msg, int n ,int min, int max, unsigned int *key ) { //
return SelectNum1sub( "Select Number", msg, n ,min, max, &(*key) );
}
int SelectNum2( char*msg, int n ,int min, int max ) { //
unsigned int key;
return SelectNum1( msg, n ,min, max, &key );
@ -1229,53 +1232,54 @@ int SelectNum4( int n ) { //
#define SETUP_Angle 0
#define SETUP_ComplexMode 1
#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
#define SETUP_Variable 2
#define SETUP_FuncType 3
#define SETUP_DrawType 4
#define SETUP_Coord 5
#define SETUP_Grid 6
#define SETUP_Axes 7
#define SETUP_Label 8
#define SETUP_Derivative 9
#define SETUP_Background 10
#define SETUP_Sketch 11
#define SETUP_Display 12
#define SETUP_Help 13
#define SETUP_RecoverSetup 14
#define SETUP_CMDINPUT 15
#define SETUP_MaxMemMode 16
#define SETUP_EnableExtFONT 17
#define SETUP_EditExtFont 18
#define SETUP_EditFontSize 19
#define SETUP_EditTopLine 20
#define SETUP_EditIndent 21
#define SETUP_EditLineNum 22
#define SETUP_EditListChar 23
#define SETUP_UseHidnRam 24
#define SETUP_HidnRamInit 25
#define SETUP_ExtendPict 26
#define SETUP_ExtendList 27
#define SETUP_DisableDebugMode 28
#define SETUP_ExitDebugModeCheck 29
#define SETUP_BreakStop 30
#define SETUP_ExecTimeDsp 31
#define SETUP_IfEndCheck 32
#define SETUP_ACBreak 33
#define SETUP_ForceReturnMode 34
#define SETUP_Key1sttime 35
#define SETUP_KeyReptime 36
#define SETUP_SkipUpDown 37
#define SETUP_MatDspmode 38
#define SETUP_Matrixbase 39
#define SETUP_DATE 40
#define SETUP_TIME 41
#define SETUP_RootFolder 42
#define SETUP_AutoSaveMode 43
#define SETUP_Forceg1msave 44
#define SETUP_Pictmode 45
#define SETUP_Storagemode 46
#define SETUP_RefrshCtlDD 47
#define SETUP_DefaultWaitcount 48
#define SETUP_Executemode 49
const char *CBmode[] ={"DBL#","INT%","CPLX"};
@ -1341,45 +1345,55 @@ 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*)"Func Type :"); // 2
locate( 1, cnt-scrl); Print((unsigned char*)"Variable :"); // 2
locate(14, cnt-scrl);
if ( VarListRange==0 ) {
Print((unsigned char*)"Range");
} else {
sprintf((char*)buffer,"List%d", VarListRange);
Print((unsigned char*)buffer);
}
} cnt++;
if ( scrl <=(cnt-1) ) {
locate( 1, cnt-scrl); Print((unsigned char*)"Func Type :"); // 3
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( 1, cnt-scrl); Print((unsigned char*)"Draw Type :"); // 4
locate(14, cnt-scrl); Print((unsigned char*)draw[(int)DrawType]);
} cnt++;
if ( scrl <=(cnt-1) ) {
locate( 1, cnt-scrl); Print((unsigned char*)"Coord :"); // 4
locate( 1, cnt-scrl); Print((unsigned char*)"Coord :"); // 5
locate(14, cnt-scrl); Print((unsigned char*)onoff[Coord]);
} cnt++;
if ( scrl <=(cnt-1) ) {
locate( 1, cnt-scrl); Print((unsigned char*)"Grid :"); // 5
locate( 1, cnt-scrl); Print((unsigned char*)"Grid :"); // 6
locate(14, cnt-scrl); Print((unsigned char*)onoff[Grid]);
} cnt++;
if ( scrl <=(cnt-1) ) {
locate( 1, cnt-scrl); Print((unsigned char*)"Axes :"); // 6
if ( (0<(cnt-scrl))&&((cnt-scrl)<=7) ){
locate( 1, cnt-scrl); Print((unsigned char*)"Axes :"); // 7
locate(14, cnt-scrl); Print((unsigned char*)onoff[Axes]);
} cnt++;
if ( (0<(cnt-scrl))&&((cnt-scrl)<=7) ){
locate( 1, cnt-scrl); Print((unsigned char*)"Label :"); // 7
locate( 1, cnt-scrl); Print((unsigned char*)"Label :"); // 8
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 :"); // 8
locate( 1, cnt-scrl); Print((unsigned char*)"Derivative :"); // 9
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 :"); // 9
locate( 1, cnt-scrl); Print((unsigned char*)"Background :"); // 10
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 :"); // 10
locate( 1, cnt-scrl); Print((unsigned char*)"Sketch Line :"); // 11
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 :"); // 11
locate( 1, cnt-scrl); Print((unsigned char*)"Display :"); // 12
locate(14, cnt-scrl); Print((unsigned char*)display[CB_Round.MODE]);
buffer[0]='\0';
sprintf((char*)buffer,"%d",CB_Round.DIGIT);
@ -1388,130 +1402,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 :"); // 12
locate( 1,cnt-scrl); Print((unsigned char*)"Syntax Help :"); // 13
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:"); // 13
locate( 1, cnt-scrl); Print((unsigned char*)"SetupRecover:"); // 14
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:"); // 14
locate( 1, cnt-scrl); Print((unsigned char*)"Command Inpt:"); // 15
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:"); // 15
locate( 1,cnt-scrl); Print((unsigned char*)"Max Mem Mode:"); // 16
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:"); // 16
locate( 1, cnt-scrl); Print((unsigned char*)"EnableExFont:"); // 17
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 ); // 17
CB_Print_ext( 1,cnt-scrl,(unsigned char*)"Edit ExtFont:", EditExtFont ); // 18
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:"); // 18
locate( 1, cnt-scrl); Print((unsigned char*)"EditFontSize:"); // 19
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:"); // 19
locate( 1, cnt-scrl); Print((unsigned char*)"Hide StatBar:"); // 20
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:"); // 20
locate( 1, cnt-scrl); Print((unsigned char*)"Edit +Indent:"); // 21
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:"); // 21
locate( 1, cnt-scrl); Print((unsigned char*)"Edit LineNum:"); // 22
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:"); // 22
locate( 1, cnt-scrl); Print((unsigned char*)"EditListChar:"); // 23
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:"); // 23
locate( 1,cnt-scrl); Print((unsigned char*)"Use Hidn RAM:"); // 24
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:"); // 24
locate( 1,cnt-scrl); Print((unsigned char*)"HidnRAM Init:"); // 25
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:"); // 25
locate( 1, cnt-scrl); Print((unsigned char*)"Max Pict No:"); // 26
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:"); // 26
locate( 1, cnt-scrl); Print((unsigned char*)"Max List 52\xA9:"); // 27
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:"); // 27
locate( 1,cnt-scrl); Print((unsigned char*)"AT DebugMode:"); // 28
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:"); // 28
locate( 1,cnt-scrl); Print((unsigned char*)"ExitDM PopUp:"); // 29
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 :"); // 29
locate( 1,cnt-scrl); Print((unsigned char*)"Break Stop :"); // 30
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:"); // 30
locate( 1,cnt-scrl); Print((unsigned char*)"Exec TimeDsp:"); // 31
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 :"); // 31
locate( 1,cnt-scrl); Print((unsigned char*)"IfEnd Check :"); // 32
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 :"); // 32
locate( 1,cnt-scrl); Print((unsigned char*)"ACBreak :"); // 33
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:"); // 33
locate( 1,cnt-scrl); Print((unsigned char*)"Force Return:"); // 34
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:"); // 34
locate( 1,cnt-scrl); Print((unsigned char*)"Key 1st time:"); // 35
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:"); // 35
locate( 1,cnt-scrl); Print((unsigned char*)"Key Rep time:"); // 36
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 :"); // 36
locate( 1,cnt-scrl); Print((unsigned char*)"SkipUp/Down :"); // 37
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:"); // 37
locate( 1,cnt-scrl); Print((unsigned char*)"Mat Dsp mode:"); // 38
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 :"); // 38
locate( 1,cnt-scrl); Print((unsigned char*)"Matrix base :"); // 39
locate(14,cnt-scrl); Print((unsigned char*)Matbase[MatBaseDefault]);
} cnt++;
if ( (0<(cnt-scrl))&&((cnt-scrl)<=7) ){ // DATE // 39
if ( (0<(cnt-scrl))&&((cnt-scrl)<=7) ){ // DATE // 40
DateCursorY = cnt-scrl+0x900;
DateTimePrintSub();
} cnt++;
if ( (0<(cnt-scrl))&&((cnt-scrl)<=7) ){ // TIME // 40
if ( (0<(cnt-scrl))&&((cnt-scrl)<=7) ){ // TIME // 41
TimeCursorY = cnt-scrl+0x900;
DateTimePrintSub();
} cnt++;
if ( (0<(cnt-scrl))&&((cnt-scrl)<=7) ){
locate( 1,cnt-scrl); Print((unsigned char*)"Root Folder:"); // 41
locate( 1,cnt-scrl); Print((unsigned char*)"Root Folder:"); // 42
locate(13,cnt-scrl);
if ( root2[0] == '\0' ) {
Print((unsigned char*)"/");
@ -1520,42 +1534,46 @@ 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:"); // 42
locate( 1,cnt-scrl); Print((unsigned char*)"Auto file save:"); // 43
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:"); // 43
locate( 1,cnt-scrl); Print((unsigned char*)"Force g1m save:"); // 44
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 :"); // 44
locate( 1,cnt-scrl); Print((unsigned char*)"Pict mode :"); // 45
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:"); // 45
locate( 1,cnt-scrl); Print((unsigned char*)"Storage mode:"); // 46
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:"); // 46
locate( 1,cnt-scrl); Print((unsigned char*)"RefrshCtl DD:"); // 47
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 :"); // 47
locate( 1,cnt-scrl); Print((unsigned char*)"Wait count :"); // 48
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:"); // 48
locate( 1,cnt-scrl); Print((unsigned char*)"Execute mode:"); // 49
locate(14,cnt-scrl); Print((unsigned char*)CBmode[CB_INTDefault]);
}
y = select-scrl;
Bdisp_AreaReverseVRAM(0, y*8, 127, y*8+7); // reverse select line
// VBattDispSub( 14*6+2, 7*8+2 );
switch (select) {
case SETUP_Variable:
Fkey_Icon( FKeyNo1, 376 ); // Fkey_dispN( FKeyNo1, "Range");
Fkey_Icon( FKeyNo2, 178 ); // Fkey_dispR( FKeyNo2, "LIST");
break;
case SETUP_DrawType: // Draw Type
Fkey_Icon( FKeyNo1, 357 ); // Fkey_dispN( FKeyNo1, "Con");
Fkey_Icon( FKeyNo2, 358 ); // Fkey_dispN( FKeyNo2, "Plot");
@ -1802,6 +1820,9 @@ int SetupG(int select, int limit){ // ----------- Setup
case SETUP_ComplexMode: // complex mode
ComplexMode = 0; // Real
break;
case SETUP_Variable:
VarListRange=0;
break;
case SETUP_FuncType: // function Type
switch ( subselect ) {
case 0:
@ -2009,6 +2030,12 @@ int SetupG(int select, int limit){ // ----------- Setup
case SETUP_ComplexMode: // complex mode
ComplexMode = 1; // a+bi
break;
case SETUP_Variable:
i = VarListRange; if ( i==0 ) i=1;
i = SelectNum1sub("Select List No.","List",i,0,ExtListMax,&key);
if ( key==KEY_CTRL_EXIT ) break;
VarListRange = i;
break;
case SETUP_FuncType: // function Type
switch ( subselect ) {
case 0:

View File

@ -523,7 +523,7 @@ void MatOprand1( char *SRC, int reg, int *dimA, int *dimB ){ // base:0 0- ba
int base;
MatOprand1sub( SRC, reg, &(*dimA) );
if ( MatAry[reg].SizeA == 0 ) {
DimMatrixSub( reg, DefaultElemetSize(), (*dimA)-1+MatBase, 1, MatBase ); // new matrix
DimMatrixSub( reg, DefaultElemetSize(), (*dimA)+1-MatBase, 1, MatBase ); // new matrix
if ( ErrorNo ) return ; // error
}
base=MatAry[reg].Base;
@ -1352,6 +1352,10 @@ double Evalsub1(char *SRC) { // 1st Priority
return result ;
case 0xFFFFFFF0 : // GraphY str
case 0xFFFFFFF1: // Graphr
case 0xFFFFFFF2: // GraphXt
case 0xFFFFFFF3: // GraphYt
case 0xFFFFFFF4: // GraphX
return CB_GraphYStr( SRC, 0 );
case 0xFFFFFFF5 : // IsExist(
@ -1447,7 +1451,9 @@ double Evalsub1(char *SRC) { // 1st Priority
case 0xFFFFFFDF : // Version
return CB_Version(); //
// case 0xFFFFFF90 : // F Result
case 0xFFFFFF90 : // F Result
dspflag=4; // 2:value 3:Mat 4:List
return 0;
case 0xFFFFFF91 : // F Start
case 0xFFFFFF92 : // F End
case 0xFFFFFF93 : // F pitch
@ -1836,61 +1842,9 @@ double Evalsub5(char *SRC) { // 5th Priority abbreviated multiplication
( c == 0xFFFFFF8D )) { // integral
result *= Evalsub4( SRC ) ;
} else if ( c == 0x7F ) { // 7F..
c = SRC[ExecPtr+1];
switch ( c ) {
case 0x40: // Mat A[a,b]
case 0xFFFFFF84 : // Vct A[a,b]
case 0x51: // List 1[a]
case 0x3A: // MOD(a,b)
case 0x3C: // GCD(a,b)
case 0x3D: // LCM(a,b)
case 0xFFFFFF8F: // Getkey
case 0xFFFFFF85: // logab(a,b)
case 0xFFFFFF86: // RndFix(n,digit)
case 0xFFFFFF87: // RanInt#(st,en)
case 0xFFFFFF88 : // RanList#(n) ->ListAns
case 0xFFFFFF89 : // RanBin#(n,p[,m]) ->ListAns
case 0xFFFFFF8A : // RanNorm#(sd,mean[,n]) ->ListAns
case 0xFFFFFFB3 : // Not
case 0xFFFFFFF0: // GraphY
case 0x00: // Xmin
case 0x01: // Xmax
case 0x02: // Xscl
case 0x04: // Ymin
case 0x05: // Ymax
case 0x06: // Yscl
case 0x08: // Thetamin
case 0x09: // Thetamax
case 0x0A: // Thetaptch
case 0x0B: // Xfct
case 0x0C: // Yfct
case 0x20 : // Max( List 1 ) Max( { 1,2,3,4,5 } )
case 0x21 : // Det Mat A
case 0x29 : // Sigma( X, X, 1, 1000)
case 0x2D : // Min( List 1 ) Min( { 1,2,3,4,5 } )
case 0x2E : // Mean( List 1 ) Mean( { 1,2,3,4,5 } )
case 0x47 : // Fill(
case 0x4A : // List>Mat( List 1, List 2,..) -> List 5
case 0x4B : // Mat>List( Mat A, m) -> List n
case 0x4C : // Sum List 1
case 0x4D : // Prod List 1
case 0x58 : // ElemSize( Mat A )
case 0x59 : // RowSize( Mat A )
case 0x5A : // ColSize( Mat A )
case 0x5B : // MatBase( Mat A )
case 0x6A : // List1
case 0x6B : // List2
case 0x6C : // List3
case 0x6D : // List4
case 0x6E : // List5
case 0x6F : // List6
case 0x26 : // dx/dy
result *= Evalsub4( SRC ) ;
break;
default:
goto exitj;
break;
}
c = SRC[ExecPtr+1];
if ( ( 0xFFFFFFB0 <= c ) && ( c <= 0xFFFFFFBD ) ) goto exitj; // And Or Not xor
result *= Evalsub4( SRC ) ;
} else if ( c == 0xFFFFFFF7 ) { // F7..
c = SRC[ExecPtr+1];
switch ( c ) {

View File

@ -169,3 +169,12 @@ int CB_SigmaInt( char *SRC ) ; // Sigma(X^2,X,1.10)
double CB_Integral( char *SRC ); // Integral( FX, start, end, sci )
double CB_Differ( char *SRC ); // Differ( FX, start, end, sci )
//-----------------------------------------------------------------------------
//-----------------------------------------------------------------------------
extern short VarListRange;
void CB_VarList( char *SRC ) ;
void CB_VarRange( char *SRC ) ;
void CB_F_Result( char *SRC ) ;
void CB_DispF_Tbl( char *SRC ) ;

View File

@ -196,3 +196,4 @@ double CB_Differ( char *SRC ){ // Differ( FX, tol )
return 0;
}

368
fx/CB_GraphFunc.c Normal file
View File

@ -0,0 +1,368 @@
#include "CB.h"
//-----------------------------------------------------------------------------
// Graph Function ( originaled by Colon )
//-----------------------------------------------------------------------------
// Strings -> Graph function memory
//-----------------------------------------------------------------------------
void StoreGraphSub( char *MatAryC, int FuncNo ){
MatAryC[4-1] = 0x02;
switch ( FuncNo % 5 ) {
case 1:
MatAryC[5-1] = 0x00;
MatAryC[6-1] = 0x1F;
break;
case 2:
MatAryC[5-1] = 0xF8;
MatAryC[6-1] = 0x00;
break;
case 3:
MatAryC[5-1] = 0x07;
MatAryC[6-1] = 0xE0;
break;
case 4:
MatAryC[5-1] = 0xF8;
MatAryC[6-1] = 0x1F;
break;
case 5:
MatAryC[5-1] = 0x00;
MatAryC[6-1] = 0x00;
break;
}
}
//-----------------------------------------------------------------------------
void StoreGraphY( char *fstring, int FuncNo ){
int i,j,k;
int reg=defaultGraphAry;
int Counter;
int oplen;
char *MatAryC ;
MatAryC = GetStrYFnPtrSub( reg, FuncNo, defaultGraphArySize ) ;
if ( StrLen( fstring, &oplen ) == 0 ) {
for ( Counter=1-1; Counter<=7-1; Counter++ ) MatAryC[Counter] = 0;
} else {
MatAryC[1-1] = 0x01;
switch ( FuncType ) {
case 4:
MatAryC[2-1] = 0x98; break;
case 5:
MatAryC[2-1] = 0x88; break;
case 6:
MatAryC[2-1] = 0xB8; break;
case 7:
MatAryC[2-1] = 0xA8; break;
default:
MatAryC[2-1] = 0x08; break;
}
MatAryC[3-1] = 0xBC;
if ( ( StrLen( MatAryC+6, &oplen ) == 0 ) ) StoreGraphSub( MatAryC, FuncNo );
OpcodeCopy( MatAryC+6, fstring, MatAry[reg].SizeB-1-6 );
}
}
void StoreGraphr( char *fstring, int FuncNo ){
int i,j,k;
int reg=defaultGraphAry;
int Counter;
int oplen;
char *MatAryC ;
MatAryC = GetStrYFnPtrSub( reg, FuncNo, defaultGraphArySize ) ;
if ( StrLen( fstring, &oplen ) == 0 ) {
for ( Counter=1-1; Counter<=7-1; Counter++ ) MatAryC[Counter] = 0;
} else {
MatAryC[1-1] = 0x04;
MatAryC[2-1] = 0x0A;
MatAryC[3-1] = 0xBC;
if ( ( StrLen( MatAryC+6, &oplen ) == 0 ) ) StoreGraphSub( MatAryC, FuncNo );
OpcodeCopy( MatAryC+6, fstring, MatAry[reg].SizeB-1-6 );
}
}
void StoreGraphXt( char *fstring, int FuncNo ){
int i,j,k;
int reg=defaultGraphAry;
int Counter;
int oplen;
char *MatAryC ;
char separator[]="\xF6\x00";
char *StrXt,*StrYt;
char buffer[256];
MatAryC = GetStrYFnPtrSub( reg, FuncNo, defaultGraphArySize ) ;
StrSplit( MatAryC+6, separator, 1, 256-1 );
StrXt = MatrixPtr( CB_MatListAnsreg, 1, 1 );
if ( MatAry[CB_MatListAnsreg].SizeA == 1 ) MatElementPlus( CB_MatListAnsreg, 2, MatAry[CB_MatListAnsreg].SizeB ); // matrix +
StrYt = MatrixPtr( CB_MatListAnsreg, 2, 1 );
if ( StrLen( fstring, &oplen ) == 0 ) {
if ( ( ( ReadMatrixInt( reg, FuncNo, 1)*256 + ReadMatrixInt( reg, FuncNo, 2) ) == 0x0409 ) && StrYt[0] ) {
goto opcpy;
} else {
for ( Counter=1-1; Counter<=7-1; Counter++ ) MatAryC[Counter] = 0;
}
} else {
MatAryC[1-1] = 0x04 ;
MatAryC[2-1] = 0x09 ;
MatAryC[3-1] = 0xBC ;
if ( ( StrLen( MatAryC+6, &oplen ) == 0 ) ) StoreGraphSub( MatAryC, FuncNo );
opcpy:
buffer[0]='\0';
StrJoin( buffer, fstring, 256-1 );
StrJoin( buffer, separator, 256-1 );
StrJoin( buffer, StrYt, 256-1 );
OpcodeCopy( MatAryC+6, buffer, 256-1 );
}
}
void StoreGraphYt( char *fstring, int FuncNo ){
int i,j,k;
int reg=defaultGraphAry;
int Counter;
int oplen;
char *MatAryC ;
char separator[]="\xF6\x00";
char *StrXt,*StrYt;
char buffer[256];
MatAryC = GetStrYFnPtrSub( reg, FuncNo, defaultGraphArySize ) ;
StrSplit( MatAryC+6, separator, 1, 256-1 );
StrXt = MatrixPtr( CB_MatListAnsreg, 1, 1 );
if ( MatAry[CB_MatListAnsreg].SizeA == 1 ) MatElementPlus( CB_MatListAnsreg, 2, MatAry[CB_MatListAnsreg].SizeB ); // matrix +
StrYt = MatrixPtr( CB_MatListAnsreg, 2, 1 );
if ( StrLen( fstring, &oplen ) == 0 ) {
if ( ( ( ReadMatrixInt( reg, FuncNo, 1)*256 + ReadMatrixInt( reg, FuncNo, 2) ) == 0x0409 ) && StrXt[0] ) {
goto opcpy;
} else {
for ( Counter=1-1; Counter<=7-1; Counter++ ) MatAryC[Counter] = 0;
}
} else {
MatAryC[1-1] = 0x04 ;
MatAryC[2-1] = 0x09 ;
MatAryC[3-1] = 0xBC ;
if ( ( StrLen( MatAryC+6, &oplen ) == 0 ) ) StoreGraphSub( MatAryC, FuncNo );
if ( StrYt[0]==0 ) StrXt[0]=0;
opcpy:
buffer[0]='\0';
StrJoin( buffer, StrXt, 256-1 );
StrJoin( buffer, separator, 256-1 );
StrJoin( buffer, fstring, 256-1 );
OpcodeCopy( MatAryC+6, buffer, 256-1 );
}
}
void StoreGraphX( char *fstring, int FuncNo ){
int i,j,k;
int reg=defaultGraphAry;
int Counter;
int oplen;
char *MatAryC ;
MatAryC = GetStrYFnPtrSub( reg, FuncNo, defaultGraphArySize ) ;
if ( StrLen( fstring, &oplen ) == 0 ) {
for ( Counter=1-1; Counter<=7-1; Counter++ ) MatAryC[Counter] = 0;
} else {
MatAryC[1-1] = 0x02;
switch ( FuncType ) {
case 8:
MatAryC[2-1] = 0x98; break;
case 9:
MatAryC[2-1] = 0x88; break;
case 10:
MatAryC[2-1] = 0xB8; break;
case 11:
MatAryC[2-1] = 0xA8; break;
default:
MatAryC[2-1] = 0x08; break;
}
MatAryC[3-1] = 0xBC;
if ( ( StrLen( MatAryC+6, &oplen ) == 0 ) ) StoreGraphSub( MatAryC, FuncNo );
OpcodeCopy( MatAryC+6, fstring, MatAry[reg].SizeB-1-6 );
}
}
//-----------------------------------------------------------------------------
// Graph function memory -> Strings
//-----------------------------------------------------------------------------
char* ReadGraphY( int FuncNo ) {
int reg=defaultGraphAry;
char *MatAryC ;
MatAryC = MatrixPtr( reg, FuncNo, 1 );
if ( MatAryC[1-1]!=0x01 ) return NULL;
return MatAryC +6;
}
char* ReadGraphX( int FuncNo ) {
int reg=defaultGraphAry;
char *MatAryC ;
MatAryC = MatrixPtr( reg, FuncNo, 1 );
if ( MatAryC[1-1]!=0x02 ) return NULL;
return MatAryC +6;
}
char* ReadGraphr( int FuncNo ) {
int reg=defaultGraphAry;
char *MatAryC ;
MatAryC = MatrixPtr( reg, FuncNo, 1 );
if ( ( MatAryC[1-1]!=0x04 ) || ( MatAryC[2-1]!=0x09 ) ) return NULL;
return MatAryC +6;
}
char* ReadGraphXt( int FuncNo ) {
int reg=defaultGraphAry;
char *MatAryC ;
char separator[]="\xF6\x00";
char *StrXt,*StrYt;
int maxsize=MatAry[reg].SizeB-1-6;
char *buffer;
MatAryC = MatrixPtr( reg, FuncNo, 1 );
if ( ( MatAryC[1-1]!=0x04 ) || ( MatAryC[2-1]!=0x09 ) ) return NULL;
return MatAryC +=6;
}
char * StrSearch_0xF6( char *str, int maxlen ) { // search 0xF6 -> return ptr
int i;
for (i=0; i<maxlen; i++) {
if ( str[i] == 0xFFFFFFF6 ) return str+i;
}
return str;
}
char* ReadGraphYt( int FuncNo ) {
int reg=defaultGraphAry;
char *MatAryC ;
char separator[]="\xF6\x00";
char *StrXt,*StrYt;
int maxsize=MatAry[reg].SizeB-1-6;
MatAryC = MatrixPtr( reg, FuncNo, 1 );
if ( ( MatAryC[1-1]!=0x04 ) || ( MatAryC[2-1]!=0x09 ) ) return NULL;
MatAryC +=6;
if ( MatAryC[0] == 0x00 ) return NULL;
return StrSearch_0xF6( MatAryC, maxsize )+1;
}
//----------------------------------------------------------------------------------------------
//----------------------------------------------------------------------------------------------
void CB_GraphFunc( char *SRC, int c ) {
int n,d;
int reg=defaultGraphAry;
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, reg, defaultGraphAryN, defaultGraphArySize ) ;
if ( buffer[7-1] ) {
buffer[5-1] = c/256;
buffer[6-1] = c%256;
}
goto exit;
}
d=SRC[ExecPtr];
if ( ( d==':' ) || ( d==0x0D ) || ( d==0x0C ) || ( d==0x00 ) ) {
n = MatAry[reg].SizeA;
if ( n ) {
while ( n ) {
buffer = MatrixPtr( reg, n, 1 ) ;
switch ( c ) {
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;
}
n--;
}
}
} else {
buffer = GetStrYFnPtr( SRC, reg, 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;
}
//-----------------------------------------------------------------------------
//-----------------------------------------------------------------------------
short VarListRange=0;
void CB_VarList( char *SRC ) {
VarListRange = CB_EvalInt( SRC );
}
void CB_VarRange( char *SRC ) {
VarListRange=0;
}
void CB_F_Result( char *SRC ) {
dspflag=4; // 2:value 3:mat 4:list
}
void CB_DispF_Tbl( char *SRC ) {
if ( VarListRange ) {
} else {
}
}

View File

@ -188,7 +188,7 @@ double ListEvalsub1(char *SRC) { // 1st Priority
int resultreg;
int resultflag;
dspflag=2; // 2:value 3:list 4:mat
dspflag=2; // 2:value 3:Mat 4:List
c = SRC[ExecPtr++];
topj:
@ -353,6 +353,10 @@ double ListEvalsub1(char *SRC) { // 1st Priority
return result ;
case 0xFFFFFFF0 : // GraphY str
case 0xFFFFFFF1: // Graphr
case 0xFFFFFFF2: // GraphXt
case 0xFFFFFFF3: // GraphYt
case 0xFFFFFFF4: // GraphX
return CB_GraphYStr( SRC, 1 );
case 0xFFFFFFF5 : // IsExist(
@ -448,7 +452,8 @@ double ListEvalsub1(char *SRC) { // 1st Priority
case 0xFFFFFFDF : // Version
return CB_Version(); //
// case 0xFFFFFF90 : // F Result
case 0xFFFFFF90 : // F Result
CB_F_Result( SRC );
case 0xFFFFFF91 : // F Start
case 0xFFFFFF92 : // F End
case 0xFFFFFF93 : // F pitch
@ -837,61 +842,9 @@ double ListEvalsub5(char *SRC) { // 5th Priority abbreviated multiplication
( c == 0xFFFFFF8D )) { // integral
result = EvalFxDbl2( &fMUL, &resultflag, &resultreg, result, ListEvalsub4( SRC ) ) ;
} else if ( c == 0x7F ) { // 7F..
c = SRC[ExecPtr+1];
switch ( c ) {
case 0x40: // Mat A[a,b]
case 0xFFFFFF84 : // Vct A[a,b]
case 0x51: // List 1[a]
case 0x3A: // MOD(a,b)
case 0x3C: // GCD(a,b)
case 0x3D: // LCM(a,b)
case 0xFFFFFF8F: // Getkey
case 0xFFFFFF85: // logab(a,b)
case 0xFFFFFF86: // RndFix(n,digit)
case 0xFFFFFF87: // RanInt#(st,en)
case 0xFFFFFF88 : // RanList#(n) ->ListAns
case 0xFFFFFF89 : // RanBin#(n,p[,m]) ->ListAns
case 0xFFFFFF8A : // RanNorm#(sd,mean[,n]) ->ListAns
case 0xFFFFFFB3 : // Not
case 0xFFFFFFF0: // GraphY
case 0x00: // Xmin
case 0x01: // Xmax
case 0x02: // Xscl
case 0x04: // Ymin
case 0x05: // Ymax
case 0x06: // Yscl
case 0x08: // Thetamin
case 0x09: // Thetamax
case 0x0A: // Thetaptch
case 0x0B: // Xfct
case 0x0C: // Yfct
case 0x20 : // Max( List 1 ) Max( { 1,2,3,4,5 } )
case 0x21 : // Det Mat A
case 0x29 : // Sigma( X, X, 1, 1000)
case 0x2D : // Min( List 1 ) Min( { 1,2,3,4,5 } )
case 0x2E : // Mean( List 1 ) Mean( { 1,2,3,4,5 } )
case 0x47 : // Fill(
case 0x4A : // List>Mat( List 1, List 2,..) -> List 5
case 0x4B : // Mat>List( Mat A, m) -> List n
case 0x4C : // Sum List 1
case 0x4D : // Prod List 1
case 0x58 : // ElemSize( Mat A )
case 0x59 : // RowSize( Mat A )
case 0x5A : // ColSize( Mat A )
case 0x5B : // MatBase( Mat A )
case 0x6A : // List1
case 0x6B : // List2
case 0x6C : // List3
case 0x6D : // List4
case 0x6E : // List5
case 0x6F : // List6
case 0x26 : // dx/dy
c = SRC[ExecPtr+1];
if ( ( 0xFFFFFFB0 <= c ) && ( c <= 0xFFFFFFBD ) ) goto exitj; // And Or Not xor
result = EvalFxDbl2( &fMUL, &resultflag, &resultreg, result, ListEvalsub4( SRC ) ) ;
break;
default:
goto exitj;
break;
}
} else if ( c == 0xFFFFFFF7 ) { // F7..
c = SRC[ExecPtr+1];
switch ( c ) {

View File

@ -2862,18 +2862,18 @@ void CB_List( char *SRC ) { // {1.2,3,4,5,6} -> List Ans
int base=MatBase;
int ElementSize;
exptr=ExecPtr;
c=SkipSpcCR(SRC);
n=1;
while ( 0 ) {
data=CB_Cplx_EvalDbl( SRC );
c=SkipSpc(SRC);
if ( c != ',' ) break;
ExecPtr++;
SkipSpcCR(SRC);
n++;
}
ExecPtr=exptr;
// exptr=ExecPtr;
// c=SkipSpcCR(SRC);
// n=1;
// while ( 0 ) {
// data=CB_Cplx_EvalDbl( SRC );
// c=SkipSpc(SRC);
// if ( c != ',' ) break;
// ExecPtr++;
// SkipSpcCR(SRC);
// n++;
// }
// ExecPtr=exptr;
dimA=64;
@ -2895,7 +2895,7 @@ void CB_List( char *SRC ) { // {1.2,3,4,5,6} -> List Ans
ExecPtr++; // "," skip
SkipSpcCR(SRC);
m++;
if ( m >= dimA ) MatElementPlus( reg, m, 1 ); // List element +
if ( m > dimA ) MatElementPlus( reg, m+1-base, 1 ); // List element +
}
if ( c == '}' ) ExecPtr++;
MatAry[reg].SizeA = m+1-base;

View File

@ -584,11 +584,16 @@ char* GetStrYFnPtrSub( int reg, int dimA, int dimB ) {
buffer=MatrixPtr( reg, dimA, dimB );
return buffer;
}
int GetStrYFnNo( char *SRC, int reg, int aryN, int aryMax ) { // -> StringNo
int dimA,dimB;
if (CB_INT==1) dimA = EvalIntsub1( SRC ); else if (CB_INT==0) dimA = Evalsub1( SRC ); else dimA = Cplx_Evalsub1( SRC ).real; // str no : Mat s[n,len]
if ( ( dimA<1 ) || ( aryN<dimA ) ) { CB_Error(ArgumentERR); return 0; } // Argument error
return dimA;
}
char* GetStrYFnPtr( char *SRC, int reg, int aryN, int aryMax ) {
int dimA,dimB;
char *buffer;
if (CB_INT==1) dimA = EvalIntsub1( SRC ); else if (CB_INT==0) dimA = Evalsub1( SRC ); else dimA = Cplx_Evalsub1( SRC ).real; // str no : Mat s[n,len]
if ( ( dimA<1 ) || ( aryN<dimA ) ) { CB_Error(ArgumentERR); return 0; } // Argument error
dimA = GetStrYFnNo( SRC, reg, aryN, aryMax );
return GetStrYFnPtrSub( reg, dimA, aryMax );
}
@ -730,7 +735,6 @@ char* CB_GetOpStrSub( char *SRC ,int *maxlen, int c ) { // String -> buffer ret
int reg,dimA,dimB;
int aryN,aryMax;
char *buffer;
int type;
switch ( c ) {
case 1: // """"
@ -765,22 +769,23 @@ char* CB_GetOpStrSub( char *SRC ,int *maxlen, int c ) { // String -> buffer ret
case 0xFFFFFFF4: // GraphX
reg=defaultGraphAry;
ExecPtr+=2;
buffer = GetStrYFnPtr( SRC, reg, defaultGraphAryN, defaultGraphArySize ) +6;
type = ( buffer[0]<<8 ) + ( buffer[1] );
dimA = GetStrYFnNo( SRC, reg, defaultGraphAryN, defaultGraphArySize );
switch ( c ) {
case 0xFFFFFFF0: // GraphY
c=0x0108; break;
buffer = ReadGraphY( dimA ); break;
case 0xFFFFFFF1: // Graphr
c=0x040A; break;
buffer = ReadGraphr( dimA ); break;
case 0xFFFFFFF2: // GraphXt
c=0x0409; break;
buffer = ReadGraphXt( dimA ); break;
case 0xFFFFFFF3: // GraphYt
buffer = strstr(buffer,"\xF6\x00");
c=0x0409; break;
buffer = ReadGraphYt( dimA ); break;
case 0xFFFFFFF4: // GraphX
c=0x0208; break;
buffer = ReadGraphX( dimA ); break;
default:
buffer = MatrixPtr( reg, dimA, 7 );
}
(*maxlen)=MatAry[reg].SizeB;
if ( buffer == NULL ) CB_Error(InvalidType);
(*maxlen)=MatAry[reg].SizeB-6;
break;
case 0x30: // StrJoin(
ExecPtr+=2;
@ -917,6 +922,7 @@ char* CB_GetOpStr( char *SRC, int *maxoplen ) { // Get opcode String
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;
@ -938,26 +944,6 @@ void StorStrStr( char *SRC ) { // "String" -> Sto 1-20
OpcodeCopy( MatAryC, CB_CurrentStr, MatAry[reg].SizeB-1 );
}
void StorStrGraphY( char *SRC ) { // "String" -> GraphY 1-5
int reg,dimA,dimB;
char *MatAryC,*ptr;
int size;
int c = SRC[ExecPtr-1];
reg=defaultGraphAry;
MatAryC = GetStrYFnPtr( SRC, reg, defaultGraphAryN, defaultGraphArySize ) +6;
if ( ErrorNo ) return ; // error
size = MatAry[reg].SizeB-1-6;
if ( ( c==0xFFFFFFF2 ) ) { // Yt
ptr=strstr(MatAryC, "\xF6\x00");
if ( ptr == NULL ) {
MatAryC[0]='\0';
} else {
}
}
OpcodeCopy( MatAryC, CB_CurrentStr, MatAry[reg].SizeB-1-6 );
}
void StorStrFn( char *SRC ) { // "String" -> fn 1-9
int reg,dimA,dimB;
char *MatAryC;
@ -967,6 +953,30 @@ void StorStrFn( char *SRC ) { // "String" -> fn 1-9
OpcodeCopy( MatAryC, CB_CurrentStr, MatAry[reg].SizeB-1 );
}
void StorStrGraphY( char *SRC ) { // "String" -> GraphY 1-5
int reg,dimA,dimB;
char *MatAryC,*ptr;
int size;
int c = SRC[ExecPtr-1];
reg=defaultGraphAry;
dimA = GetStrYFnNo( SRC, reg, defaultGraphAryN, defaultGraphArySize );
// MatAryC = GetStrYFnPtrSub( reg, dimA, defaultGraphArySize ) +6;
if ( ErrorNo ) return ; // error
switch ( c ) {
case 0xFFFFFFF0: // GraphY
StoreGraphY( CB_CurrentStr, dimA ); break;
case 0xFFFFFFF1: // Graphr
StoreGraphr( CB_CurrentStr, dimA ); break;
case 0xFFFFFFF2: // GraphXt
StoreGraphXt( CB_CurrentStr, dimA ); break;
case 0xFFFFFFF3: // GraphYt
StoreGraphYt( CB_CurrentStr, dimA ); break;
case 0xFFFFFFF4: // GraphX
StoreGraphX( CB_CurrentStr, dimA ); break;
break;
}
}
void StorStrList0( char *SRC ) { // "String" -> List n[0] ->List "ABS" ->List Str1
int reg,reg2=0;
int exbuf;
@ -1045,7 +1055,7 @@ int CB_IsStrStor( char *SRC, int execptr ) {
} else
if ( c == 0x7F ) {
c=SRC[execptr+1];
if ( c == 0xFFFFFFF0 ) return c; // GraphY
if ( ( 0xFFFFFFF0 <= c ) && ( c <= 0xFFFFFFF4 ) ) return c; // GraphY
else
if ( ( c == 0x51 ) || ( (0x6A<=c)&&(c<=0x6F) ) ) { // List [0]?
extmp = ExecPtr;
@ -1274,26 +1284,6 @@ double CB_EvalStrDBL( char *buffer, int calcflag ) { // Eval str -> double
double result;
int execptr=ExecPtr;
ExecPtr = 0;
if ( calcflag == 0 ) {
if (CB_INT==1) result = EvalIntsub14( buffer );
else
if (CB_INT==0) result = Evalsub14( buffer );
else result = Cplx_Evalsub14( buffer ).real;
}
else {
if (CB_INT==1) result = ListEvalIntsubTop( buffer ); // List calc
else
if (CB_INT==0) result = ListEvalsubTop( buffer ); // List calc
else result = Cplx_ListEvalsubTop( buffer ).real; // List calc
}
ExecPtr=execptr;
if ( ErrorNo ) { ErrorPtr=ExecPtr; return 0; }
return result;
}
double CB_EvalStrDBL2( char *buffer, int calcflag ) { // Eval str -> double
double result;
int execptr=ExecPtr;
ExecPtr = 0;
if ( calcflag == 0 ) {
if (CB_INT==1) result = EvalIntsubTop( buffer );
else
@ -1315,26 +1305,6 @@ complex CB_Cplx_EvalStrDBL( char *buffer, int calcflag ) { // Eval str -> doubl
complex result;
int execptr=ExecPtr;
ExecPtr = 0;
if ( calcflag == 0 ) {
if (CB_INT==1) result = Int2Cplx( EvalIntsub14( buffer ) );
else
if (CB_INT==0) result = Dbl2Cplx( Evalsub14( buffer ) );
else result = Cplx_Evalsub14( buffer );
}
else {
if (CB_INT==1) result = Int2Cplx( ListEvalIntsubTop( buffer ) ); // List calc
else
if (CB_INT==0) result = Dbl2Cplx( ListEvalsubTop( buffer ) ); // List calc
else result = Cplx_ListEvalsubTop( buffer ); // List calc
}
ExecPtr=execptr;
if ( ErrorNo ) { ErrorPtr=ExecPtr; return Int2Cplx(0); }
return result;
}
complex CB_Cplx_EvalStrDBL2( char *buffer, int calcflag ) { // Eval str -> double
complex result;
int execptr=ExecPtr;
ExecPtr = 0;
if ( calcflag == 0 ) {
if (CB_INT==1) result = Int2Cplx( EvalIntsubTop( buffer ) );
else
@ -1356,20 +1326,6 @@ int CB_EvalStrInt( char *buffer, int calcflag ) { // Eval str -> Int
int result;
int execptr=ExecPtr;
ExecPtr = 0;
if ( calcflag == 0 ) {
result = EvalIntsub14( buffer );
}
else {
result = ListEvalIntsubTop( buffer ); // List calc
}
ExecPtr=execptr;
if ( ErrorNo ) { ErrorPtr=ExecPtr; return 0; }
return result;
}
int CB_EvalStrInt2( char *buffer, int calcflag ) { // Eval str -> Int
int result;
int execptr=ExecPtr;
ExecPtr = 0;
if ( calcflag == 0 ) {
result = EvalIntsubTop( buffer );
}
@ -1424,23 +1380,57 @@ int CBint_EvalStr( char *SRC, int calcflag ) { // Exp( Eval str -> int
return result;
}
char* CB_GraphYStrSub( char *SRC, int reg ) { // defaultGraphAry or defaultFnAry
int CB_GraphFnStrNo( char *SRC, int reg ) { // defaultGraphAry or defaultFnAry
int dimA,dimB;
int base=MatAry[reg].Base;
dimA=EvalIntsub1( SRC );
if (CB_INT==1) dimA = EvalIntsub1( SRC ); else if (CB_INT==0) dimA = Evalsub1( SRC ); else dimA = Cplx_Evalsub1( SRC ).real;
if ( ( dimA < base ) || ( dimA > MatAry[reg].SizeA-1+base ) ) { CB_Error(MemoryERR); } // Memory error
return dimA;
}
char* CB_FnStrSub( char *SRC ) { // efaultFnAry
int dimA,dimB;
int reg=defaultFnAry;
int base=MatAry[reg].Base;
dimA = CB_GraphFnStrNo( SRC, reg );
if ( ErrorNo ) return 0;
return MatrixPtr( reg, dimA, base )+ ( reg==defaultGraphAry )*6;
}
char* CB_GraphStrSub( char *SRC ) { // defaultGraphAry
int dimA,dimB;
int reg=defaultGraphAry;
int base=MatAry[reg].Base;
int c = SRC[ExecPtr-1];
char *ptr;
dimA = CB_GraphFnStrNo( SRC, reg );
if ( ErrorNo ) return 0;
switch ( c ) {
case 0xFFFFFFF0: // GraphY
ptr = ReadGraphY( dimA ); break;
case 0xFFFFFFF1: // Graphr
ptr = ReadGraphr( dimA ); break;
case 0xFFFFFFF2: // GraphXt
ptr = ReadGraphXt( dimA ); break;
case 0xFFFFFFF3: // GraphYt
ptr = ReadGraphYt( dimA ); break;
case 0xFFFFFFF4: // GraphX
ptr = ReadGraphX( dimA ); break;
default:
ptr = MatrixPtr( defaultGraphAry, dimA, 7 );
}
if ( ptr == NULL ) CB_Error(InvalidType);
return ptr;
}
void GraphFnEQ( char *SRC ){
int c=SRC[ExecPtr];
if ( ( ( 'A'<=c )&&( c<='Z' ) ) || ( ( 'a'<=c )&&( c<='z' ) ) ) {
if ( SRC[ExecPtr+1] == '=' ) ExecPtr+=2;
}
}
double CB_GraphYStr( char *SRC, int calcflag ) { // defaultGraphAry
double result;
double tmpX = regX.real;
char *ptr = CB_GraphYStrSub( SRC, defaultGraphAry ) ;
char *ptr = CB_GraphStrSub( SRC ) ;
if ( ErrorNo ) return 0;
if ( SRC[ExecPtr] == '(' ) {
ExecPtr++;
@ -1452,26 +1442,10 @@ double CB_GraphYStr( char *SRC, int calcflag ) { // defaultGraphAry
regX.real = tmpX;
return result;
}
double CB_FnStr( char *SRC, int calcflag ) { // defaultFnAry
double result;
double tmpX = regX.real;
char *ptr = CB_GraphYStrSub( SRC, defaultFnAry ) ;
if ( ErrorNo ) return 0;
if ( SRC[ExecPtr] == '(' ) {
ExecPtr++;
GraphFnEQ( SRC );
regX.real = CB_EvalDbl(SRC);
if ( SRC[ExecPtr] == ')' ) ExecPtr++;
}
result = CB_EvalStrDBL2( ptr, calcflag );
regX.real = tmpX;
return result;
}
complex CB_Cplx_GraphYStr( char *SRC, int calcflag ) { // defaultGraphAry
complex result;
complex tmpX = regX;
char *ptr = CB_GraphYStrSub( SRC, defaultGraphAry ) ;
char *ptr = CB_GraphStrSub( SRC ) ;
if ( ErrorNo ) return Int2Cplx(0);
if ( SRC[ExecPtr] == '(' ) {
ExecPtr++;
@ -1483,26 +1457,10 @@ complex CB_Cplx_GraphYStr( char *SRC, int calcflag ) { // defaultGraphAry
regX = tmpX;
return result;
}
complex CB_Cplx_FnStr( char *SRC, int calcflag ) { // defaultFnAry
complex result;
complex tmpX = regX;
char *ptr = CB_GraphYStrSub( SRC, defaultFnAry ) ;
if ( ErrorNo ) return Int2Cplx(0);
if ( SRC[ExecPtr] == '(' ) {
ExecPtr++;
GraphFnEQ( SRC );
regX = CB_Cplx_EvalDbl(SRC);
if ( SRC[ExecPtr] == ')' ) ExecPtr++;
}
result = CB_Cplx_EvalStrDBL2( ptr, calcflag );
regX = tmpX;
return result;
}
int CBint_GraphYStr( char *SRC, int calcflag ) { // defaultGraphAry
int result;
int tmpintX = regintX;
char *ptr = CB_GraphYStrSub( SRC, defaultGraphAry ) ;
char *ptr = CB_GraphStrSub( SRC ) ;
if ( ErrorNo ) return 0;
if ( SRC[ExecPtr] == '(' ) {
ExecPtr++;
@ -1514,10 +1472,41 @@ int CBint_GraphYStr( char *SRC, int calcflag ) { // defaultGraphAry
regintX = tmpintX;
return result;
}
double CB_FnStr( char *SRC, int calcflag ) { // defaultFnAry
double result;
double tmpX = regX.real;
char *ptr = CB_FnStrSub( SRC ) ;
if ( ErrorNo ) return 0;
if ( SRC[ExecPtr] == '(' ) {
ExecPtr++;
GraphFnEQ( SRC );
regX.real = CB_EvalDbl(SRC);
if ( SRC[ExecPtr] == ')' ) ExecPtr++;
}
result = CB_EvalStrDBL( ptr, calcflag );
regX.real = tmpX;
return result;
}
complex CB_Cplx_FnStr( char *SRC, int calcflag ) { // defaultFnAry
complex result;
complex tmpX = regX;
char *ptr = CB_FnStrSub( SRC ) ;
if ( ErrorNo ) return Int2Cplx(0);
if ( SRC[ExecPtr] == '(' ) {
ExecPtr++;
GraphFnEQ( SRC );
regX = CB_Cplx_EvalDbl(SRC);
if ( SRC[ExecPtr] == ')' ) ExecPtr++;
}
result = CB_Cplx_EvalStrDBL( ptr, calcflag );
regX = tmpX;
return result;
}
int CBint_FnStr( char *SRC, int calcflag ) { // defaultFnAry
int result;
int tmpintX = regintX;
char *ptr = CB_GraphYStrSub( SRC, defaultFnAry ) ;
char *ptr = CB_FnStrSub( SRC ) ;
if ( ErrorNo ) return 0;
if ( calcflag == 0 ) return 0;
if ( SRC[ExecPtr] == '(' ) {
@ -1526,7 +1515,7 @@ int CBint_FnStr( char *SRC, int calcflag ) { // defaultFnAry
regintX = CB_EvalInt(SRC);
if ( SRC[ExecPtr] == ')' ) ExecPtr++;
}
result = CB_EvalStrInt2( ptr, calcflag );
result = CB_EvalStrInt( ptr, calcflag );
regintX = tmpintX;
return result;
}

View File

@ -46,6 +46,7 @@ void GetNewAry8( int reg, int aryN, int aryMax ) ;
int CheckQuotCR( char *SRC, int ptr ) ;
int CB_GetQuotOpcode(char *SRC, char *buffer, int Maxlen) ;
int GetStrYFnNo( char *SRC, int reg, int aryN, int aryMax ) ; // -> StringNo
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 ) ;
@ -106,9 +107,24 @@ int CB_Bin( char *SRC ); // Bin(
int CB_StrBase( char *SRC ); // StrBase( Str1,base1,base2 )->str2
int CB_StrRepl( char *SRC ); // StrRepl( Str1,Str2,Str3,n )->str4
int StrSplit( char *buffer, char *srcstr, int ptr, int maxlen ); // ptr:1- ->MatAns
int CB_StrSplit( char *SRC ) ; // StrStip( "123,4567,89","[n,]) -> MatAns[["1232]["4567"]["89"]]
char* CB_RecallString(int type ); // ----------- Recall String type: 0:string 1:fn 2:GraphY
int CB_StoreString(int type, char *clipbuffer ); // ----------- Store String type: 0:string 1:fn 2:GraphY
char* CB_SeeString(int type, int *select, char *clipbuffer ); // ----------- See String type: 0:string 1:fn 2:GraphY
//-----------------------------------------------------------------------------
void StoreGraphY( char *fstring, int FuncNo );
void StoreGraphr( char *fstring, int FuncNo );
void StoreGraphXt( char *fstring, int FuncNo );
void StoreGraphYt( char *fstring, int FuncNo );
void StoreGraphX( char *fstring, int FuncNo );
char* ReadGraphY( int FuncNo );
char* ReadGraphr( int FuncNo );
char* ReadGraphXt( int FuncNo );
char* ReadGraphYt( int FuncNo );
char* ReadGraphX( int FuncNo );

View File

@ -188,9 +188,9 @@ char* CB_SeeString(int type, int *select, char *clipbuffer ){ // ----------- See
Fkey_Icon( FKeyNo1, 69 ); // Fkey_dispR( FKeyNo1, "STORE");
Fkey_Icon( FKeyNo2, 70 ); // Fkey_dispR( FKeyNo2, "RECALL");
if ( type==1 ) Fkey_Icon( FKeyNo3, 240 ); // Fkey_dispR( FKeyNo3, " fn ");
Fkey_Icon( FKeyNo4, 241 ); // Fkey_dispN( FKeyNo4, " SEE");
if ( ReEnterSEE == 0 ) Fkey_Icon( FKeyNo5, 389 ); // Fkey_dispR( FKeyNo5,"EDIT");
// if ( ReEnterSEE == 0 ) Fkey_Icon( FKeyNo5, 42 ); // Fkey_dispN( FKeyNo5, "Edit");
// Fkey_Icon( FKeyNo4, 241 ); // Fkey_dispN( FKeyNo4, " SEE");
// if ( ReEnterSEE == 0 ) Fkey_Icon( FKeyNo5, 389 ); // Fkey_dispR( FKeyNo5,"EDIT");
if ( ReEnterSEE == 0 ) Fkey_Icon( FKeyNo4, 42 ); // Fkey_dispN( FKeyNo4, "Edit");
// Bdisp_PutDisp_DD();
@ -238,7 +238,7 @@ char* CB_SeeString(int type, int *select, char *clipbuffer ){ // ----------- See
cont=0;
break;
case KEY_CTRL_F5:
case KEY_CTRL_F4:
case KEY_CTRL_LEFT:
case KEY_CTRL_RIGHT:
if ( ReEnterSEE == 0 ) {

View File

@ -134,7 +134,7 @@
#define CMD_SETUP_SWIN 0x522
#define CMD_SETUP_LIST 0x523
#define CMD_SETUP_LOCS 0x524
#define CMD_SETUP_TVAR 0x530
#define CMD_SETUP_TVAR 0x524 // <- 0x530
#define CMD_SETUP_SDSP 0x531
#define CMD_SETUP_RESID 0x532
#define CMD_SETUP_CPLX 0x521 // <- 0x533

View File

@ -486,6 +486,13 @@ int CB_interpreter_sub( char *SRC ) {
CB_TryEnd();
break;
case 0x2E: // DispF-Tbl
CB_DispF_Tbl( SRC );
break;
case 0xFFFFFF88: // VarRange
CB_VarRange( SRC );
break;
case 0x2B: // NormalG
case 0x2C: // ThickG
case 0x2D: // BrokenThickG
@ -699,6 +706,11 @@ int CB_interpreter_sub( char *SRC ) {
case 0xFFFFFFF5: // ThinG
CB_GraphFunc(SRC,c);
break;
case 0x10: // VarList
CB_VarList( SRC );
break;
default:
Evalexit2:
ExecPtr-=2;

View File

@ -2492,77 +2492,6 @@ 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