From 6d05a74caa01a7b4d52812984ba51b61aace66b2 Mon Sep 17 00:00:00 2001 From: CalcLoverHK <0v0katai@gmail.com> Date: Thu, 25 Jan 2024 03:09:54 +0800 Subject: [PATCH] FX 02.45.1502 --- fx/AddinInfo.txt | 2 +- fx/CBASIC.g1w | 3 +- fx/CBC_Eval.c | 70 +------- fx/CBC_ListEval.c | 70 +------- fx/CBI_Eval.c | 64 ++----- fx/CBI_ListEval.c | 61 +------ fx/CBZ_error.c | 3 + fx/CBZ_file.c | 4 +- fx/CBZ_inpcmd.c | 21 ++- fx/CBZ_inpcmdF1.c | 4 + fx/CBZ_inpcmdF2.c | 4 + fx/CBZ_inpcmdF4.c | 4 + fx/CBZ_inpcmdF5.c | 1 + fx/CBZ_setup.c | 223 +++++++++++++----------- fx/CB_Eval.c | 68 ++------ fx/CB_Eval.h | 9 + fx/CB_Eval_ext.c | 1 + fx/CB_GraphFunc.c | 368 ++++++++++++++++++++++++++++++++++++++++ fx/CB_ListEval.c | 65 +------ fx/CB_Matrix.c | 26 +-- fx/CB_Str.c | 241 +++++++++++++------------- fx/CB_Str.h | 16 ++ fx/CB_StrExt.c | 8 +- fx/CB_inp.h | 2 +- fx/CB_interpreter.c | 12 ++ fx/CB_interpreterVRAM.c | 71 -------- 26 files changed, 760 insertions(+), 661 deletions(-) create mode 100644 fx/CB_GraphFunc.c diff --git a/fx/AddinInfo.txt b/fx/AddinInfo.txt index 197618f..2d5b553 100644 --- a/fx/AddinInfo.txt +++ b/fx/AddinInfo.txt @@ -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" diff --git a/fx/CBASIC.g1w b/fx/CBASIC.g1w index b81d143..a920f03 100644 --- a/fx/CBASIC.g1w +++ b/fx/CBASIC.g1w @@ -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 diff --git a/fx/CBC_Eval.c b/fx/CBC_Eval.c index 9d7c966..5d8db98 100644 --- a/fx/CBC_Eval.c +++ b/fx/CBC_Eval.c @@ -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 ) { diff --git a/fx/CBC_ListEval.c b/fx/CBC_ListEval.c index bff3062..fc58cea 100644 --- a/fx/CBC_ListEval.c +++ b/fx/CBC_ListEval.c @@ -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 ) { diff --git a/fx/CBI_Eval.c b/fx/CBI_Eval.c index 4765e10..eed8dc2 100644 --- a/fx/CBI_Eval.c +++ b/fx/CBI_Eval.c @@ -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 ) { diff --git a/fx/CBI_ListEval.c b/fx/CBI_ListEval.c index 5ffb74a..bda429b 100644 --- a/fx/CBI_ListEval.c +++ b/fx/CBI_ListEval.c @@ -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 ) { diff --git a/fx/CBZ_error.c b/fx/CBZ_error.c index f3b1de9..fd560b2 100644 --- a/fx/CBZ_error.c +++ b/fx/CBZ_error.c @@ -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"); diff --git a/fx/CBZ_file.c b/fx/CBZ_file.c index 48d09fb..c03668c 100644 --- a/fx/CBZ_file.c +++ b/fx/CBZ_file.c @@ -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; diff --git a/fx/CBZ_inpcmd.c b/fx/CBZ_inpcmd.c index 76a26d9..4cffc4c 100644 --- a/fx/CBZ_inpcmd.c +++ b/fx/CBZ_inpcmd.c @@ -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; diff --git a/fx/CBZ_inpcmdF1.c b/fx/CBZ_inpcmdF1.c index d54cba7..837dd34 100644 --- a/fx/CBZ_inpcmdF1.c +++ b/fx/CBZ_inpcmdF1.c @@ -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; diff --git a/fx/CBZ_inpcmdF2.c b/fx/CBZ_inpcmdF2.c index 033a03c..70ff706 100644 --- a/fx/CBZ_inpcmdF2.c +++ b/fx/CBZ_inpcmdF2.c @@ -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; diff --git a/fx/CBZ_inpcmdF4.c b/fx/CBZ_inpcmdF4.c index 015feb5..5bfdbc5 100644 --- a/fx/CBZ_inpcmdF4.c +++ b/fx/CBZ_inpcmdF4.c @@ -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; // < diff --git a/fx/CBZ_inpcmdF5.c b/fx/CBZ_inpcmdF5.c index 0f80636..6c7b210 100644 --- a/fx/CBZ_inpcmdF5.c +++ b/fx/CBZ_inpcmdF5.c @@ -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; diff --git a/fx/CBZ_setup.c b/fx/CBZ_setup.c index d7fb817..ecd2fad 100644 --- a/fx/CBZ_setup.c +++ b/fx/CBZ_setup.c @@ -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: diff --git a/fx/CB_Eval.c b/fx/CB_Eval.c index 45e3497..0acbe9c 100644 --- a/fx/CB_Eval.c +++ b/fx/CB_Eval.c @@ -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 ) { diff --git a/fx/CB_Eval.h b/fx/CB_Eval.h index b886f0a..df51cd0 100644 --- a/fx/CB_Eval.h +++ b/fx/CB_Eval.h @@ -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 ) ; diff --git a/fx/CB_Eval_ext.c b/fx/CB_Eval_ext.c index 4c581d0..0c885d5 100644 --- a/fx/CB_Eval_ext.c +++ b/fx/CB_Eval_ext.c @@ -196,3 +196,4 @@ double CB_Differ( char *SRC ){ // Differ( FX, tol ) return 0; } + diff --git a/fx/CB_GraphFunc.c b/fx/CB_GraphFunc.c new file mode 100644 index 0000000..da8f85e --- /dev/null +++ b/fx/CB_GraphFunc.c @@ -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; iType + case 0x69: d= 9; break; // XType + case 0x6B: d= 5; 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 { + } + +} diff --git a/fx/CB_ListEval.c b/fx/CB_ListEval.c index 204407b..bd26007 100644 --- a/fx/CB_ListEval.c +++ b/fx/CB_ListEval.c @@ -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 ) { diff --git a/fx/CB_Matrix.c b/fx/CB_Matrix.c index 5f4dcf5..9679bb0 100644 --- a/fx/CB_Matrix.c +++ b/fx/CB_Matrix.c @@ -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; diff --git a/fx/CB_Str.c b/fx/CB_Str.c index 972ff13..32552f2 100644 --- a/fx/CB_Str.c +++ b/fx/CB_Str.c @@ -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 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; } diff --git a/fx/CB_Str.h b/fx/CB_Str.h index ef1f92e..19e9e67 100644 --- a/fx/CB_Str.h +++ b/fx/CB_Str.h @@ -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 ); + diff --git a/fx/CB_StrExt.c b/fx/CB_StrExt.c index 2c25f26..6d3cd69 100644 --- a/fx/CB_StrExt.c +++ b/fx/CB_StrExt.c @@ -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 ) { diff --git a/fx/CB_inp.h b/fx/CB_inp.h index 55c7e50..bdf8995 100644 --- a/fx/CB_inp.h +++ b/fx/CB_inp.h @@ -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 diff --git a/fx/CB_interpreter.c b/fx/CB_interpreter.c index 821ca6e..33a8c66 100644 --- a/fx/CB_interpreter.c +++ b/fx/CB_interpreter.c @@ -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; diff --git a/fx/CB_interpreterVRAM.c b/fx/CB_interpreterVRAM.c index bf21cb7..1cde2d9 100644 --- a/fx/CB_interpreterVRAM.c +++ b/fx/CB_interpreterVRAM.c @@ -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; // XType - case 0x6B: d= 5; 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