FX 02.45.0900

This commit is contained in:
CalcLoverHK 2024-01-25 03:04:22 +08:00
parent 50ed837be3
commit 377fe0d5f8
8 changed files with 97 additions and 33 deletions

View File

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

View File

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

View File

@ -2213,7 +2213,7 @@ unsigned int EditRun(int run){ // run:1 exec run:2 edit
ptr++;
indent++;
}
indent += CheckIndentCommand( SrcBase, ptr );
if ( csrPtr != ptr ) indent += CheckIndentCommand( SrcBase, ptr );
}
}
if ( ( 0x00 < key ) && ( key < 0xFF ) || ( key == KEY_CTRL_XTT ) ) { // ----- 1 byte code -----

View File

@ -597,6 +597,7 @@ unsigned int Explorer( int size, char *folder )
char buffer3[32];
char fname[64];
char ext[5];
char search[9]="";
long FirstCount; // pointer to repeat time of first repeat
long NextCount; // pointer to repeat time of second repeat
@ -686,12 +687,16 @@ unsigned int Explorer( int size, char *folder )
// locate(1, 1);Print((unsigned char*)"File List [ ]");
// locate(13,1);Print( strlen(folder) ? (unsigned char*)folder : (unsigned char*)"/"); // root
locate(1, 1);Print((unsigned char*)"[ ]");
if ( StorageMode & 2 ) {
locate(2,1);Print((unsigned char*)"Main Mem");
if ( strlen(search) ) {
locate(2,1);Print( (unsigned char*)search ); // search string
} else {
if ( root2[0] ) PrintMini(13, 1, (unsigned char*)(root2+1), MINI_OVER);
sprintf( buffer, "%-8s", folder );
locate(2,1);Print( strlen(folder) ? (unsigned char*)buffer : (unsigned char*)"/"); // root
if ( StorageMode & 2 ) {
locate(2,1);Print((unsigned char*)"Main Mem");
} else {
if ( root2[0] ) PrintMini(13, 1, (unsigned char*)(root2+1), MINI_OVER);
sprintf( buffer, "%-8s", folder );
locate(2,1);Print( strlen(folder) ? (unsigned char*)buffer : (unsigned char*)"/"); // root
}
}
PrintMini(10*6+1, 1, (unsigned char*)buffer2, MINI_OVER); // free area
sprintf(buffer, "(%d)", size-FavoritesMAX-1); PrintMini(18*6 , 1, (unsigned char*)buffer , MINI_OVER); // number of file
@ -769,7 +774,25 @@ unsigned int Explorer( int size, char *folder )
Isfolder= ( files[index].filesize == FOLDER_FLAG ) ;
i = strlen(search);
if ( i ) {
locate(2+i,1);
Cursor_SetFlashMode(1); // cursor flashing on
}
GetKey(&key);
Cursor_SetFlashMode(0); // cursor flashing off
if ( KEY_CTRL_DEL == key ) {
i=strlen(search);
if ( i ) {
i--;
search[i--]='\0';
if ( i>=0 ) {
key=search[i];
search[i]='\0';
}
}
}
if ( ( 'a' <= key ) && ( key <= 'z' ) ) key -= 'a'-'A';
if ( KEY_CTRL_XTT == key ) key='A';
if ( KEY_CHAR_LOG == key ) key='B';
if ( KEY_CHAR_LN == key ) key='C';
@ -811,16 +834,29 @@ unsigned int Explorer( int size, char *folder )
} else
if ( ( ( 'A' <= key ) && ( key <= 'Z' ) ) || ( key == '~' ) ) {
j=strlen(search);
if ( j<8 ) {
search[j++]=key;
search[j]='\0';
}
i=FavoritesMAX;
while ( i<size ) {
if ( files[i].filesize == FOLDER_FLAG ) i++;
else if ( files[i].filename[0]==key ) {
else {
k=0;
while ( k<=j ) {
if ( files[i].filename[k] != search[k] ) { k=(k>=j); break; }
k++;
}
if ( k>0 ) {
index = i;
top = index;
break;
} else i++; // folder skip
} else i++; // folder skip
}
}
}
} else search[0]='\0';
switch ( key ) {
case KEY_CTRL_UP:
if ( nofile ) break;
@ -961,6 +997,10 @@ unsigned int Explorer( int size, char *folder )
if ( filemode >2 ) filemode=0;
break;
case KEY_CTRL_AC:
search[0]='\0';
break;
case KEY_CTRL_EXIT:
if ( ( nofile ) || ( index == StartLine ) ) key=KEY_CTRL_QUIT;
// index = size;
@ -3726,8 +3766,8 @@ int fileObjectAlign4U( unsigned int n ){ return n; } // align +4byte
int fileObjectAlign4V( unsigned int n ){ return n; } // align +4byte
int fileObjectAlign4W( unsigned int n ){ return n; } // align +4byte
int fileObjectAlign4X( unsigned int n ){ return n; } // align +4byte
int fileObjectAlign4Y( unsigned int n ){ return n; } // align +4byte
int fileObjectAlign4Z( unsigned int n ){ return n; } // align +4byte
//int fileObjectAlign4Y( unsigned int n ){ return n; } // align +4byte
//int fileObjectAlign4Z( unsigned int n ){ return n; } // align +4byte
//int fileObjectAlign4AA( unsigned int n ){ return n; } // align +4byte
//int fileObjectAlign4BB( unsigned int n ){ return n; } // align +4byte
//int fileObjectAlign4CC( unsigned int n ){ return n; } // align +4byte

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 06", MINI_OVER );
PrintMini(13*6+2, 2*8+1, (unsigned char*)" build 09", MINI_OVER );
PrintMini( 2*6+2, 3*8+1, (unsigned char*)"(Casio Basic compatible+)", MINI_OVER );
// if ( ( UseHiddenRAM ) && ( IsHiddenRAM ) ) {

View File

@ -565,18 +565,21 @@ void GetNewAry8( int reg, int aryN, int aryMax ) {
if ( MatAry[reg].SizeA < aryN ) MatElementPlus( reg, aryN, aryMax ); // matrix +
}
}
char* GetStrYFnPtr( char *SRC, int reg, int aryN, int aryMax ) {
int dimA,dimB;
char* GetStrYFnPtrSub( int reg, int dimA, int 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
dimB = aryMax;
GetNewAry8( reg, dimA, dimB );
if ( ErrorNo ) return 0; // error
dimB = 1;
buffer=MatrixPtr( reg, dimA, dimB );
return buffer;
}
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
return GetStrYFnPtrSub( reg, dimA, aryMax );
}
int SearchListnameSub( char *name ) {
int reg,j,len;
@ -661,11 +664,18 @@ int CB_IsStr( char *SRC, int execptr ) {
else
if ( c == 0x4D ) return c; // StrSplit
else
if ( c == 0x1B ) return c; // fn
if ( c == 0x1B ) {
fnjmp:
extmp=ExecPtr;
ExecPtr=execptr+2;
f=CB_CheckYfn( SRC );
ExecPtr=extmp;
if ( f ) return c; // fn
}
} else
if ( c == 0x7F ) {
c=SRC[execptr+1];
if ( c == 0xFFFFFFF0 ) return c; // GraphY
if ( c == 0xFFFFFFF0 ) goto fnjmp; // GraphY
else
if ( ( c == 0x51 ) || ( (0x6A<=c)&&(c<=0x6F) ) ) { // List [0]?
extmp = ExecPtr;
@ -678,6 +688,13 @@ int CB_IsStr( char *SRC, int execptr ) {
return 0;
}
int CB_CheckYfn( char *SRC ) { // 1:string 0:function
int extmp=ExecPtr,r;
EvalIntsub1( SRC );
r= ( SRC[ExecPtr] != '(' );
ExecPtr=extmp;
return r;
}
char* CB_GetOpStr1( char *SRC ,int *maxlen ) { // String -> buffer return
int c,d,n;
@ -1017,10 +1034,10 @@ void CB_StrPrint( char *SRC , int csrX ) {
if ( ( c==0x0C ) || ( c==0x0D ) ) { ClrLine5800P( CursorX ); Scrl_Y(); px=0; }
if ( (c==0x7F)||(c==0xFFFFFFF7)||(c==0xFFFFFFF9)||(c==0xFFFFFFE5)||(c==0xFFFFFFE6)||(c==0xFFFFFFE7)||(c==0xFFFFFFFF) ) i++;
i++;
Bdisp_PutDisp_DD_DrawBusy_skip_through_text(SRC);
// Bdisp_PutDisp_DD_DrawBusy_skip_through_text(SRC);
}
if ( ( buffer[0]==0 ) || ( px ) ) ClrLine5800P( CursorX );
Bdisp_PutDisp_DD_DrawBusy_skip_through_text(SRC);
// Bdisp_PutDisp_DD_DrawBusy_skip_through_text(SRC);
if ( CursorX == 22 ) {
if ( CursorY < 7 ) {
Scrl_Y();
@ -1288,7 +1305,7 @@ int CBint_EvalStr( char *SRC, int calcflag ) { // Exp( Eval str -> int
char* CB_GraphYStrSub( char *SRC, int reg ) { // defaultGraphAry or defaultFnAry
int dimA,dimB;
int base=MatAry[reg].Base;
dimA=Eval_atoi( SRC, SRC[ExecPtr] );
dimA=EvalIntsub1( SRC );
if ( ( dimA < base ) || ( dimA > MatAry[reg].SizeA-1+base ) ) { CB_Error(MemoryERR); } // Memory error
return MatrixPtr( reg, dimA, base );
}
@ -2069,10 +2086,10 @@ int CB_TimeToStr() { // "23:59:59"
//----------------------------------------------------------------------------------------------
//int StrObjectAlign4a( unsigned int n ){ return n; } // align +4byte
//int StrObjectAlign4b( unsigned int n ){ return n; } // align +4byte
//int StrObjectAlign4c( unsigned int n ){ return n; } // align +4byte
//int StrObjectAlign4d( unsigned int n ){ return n; } // align +4byte
int StrObjectAlign4a( unsigned int n ){ return n; } // align +4byte
int StrObjectAlign4b( unsigned int n ){ return n; } // align +4byte
int StrObjectAlign4c( unsigned int n ){ return n; } // align +4byte
int StrObjectAlign4d( unsigned int n ){ return n; } // align +4byte
//int StrObjectAlign4e( unsigned int n ){ return n; } // align +4byte
//int StrObjectAlign4f( unsigned int n ){ return n; } // align +4byte
//int StrObjectAlign4g( unsigned int n ){ return n; } // align +4byte

View File

@ -35,7 +35,7 @@ int StrUpr( char *str1, char *str2 ) ; // Upr$(str2, n) -> str1
int OpcodeCopy(char *buffer, char *SRC, int Maxlen) ;
void OpcodeStringToAsciiString(char *buffer, char *SRC, int Maxlen ) ; // Opcode String -> Ascii String
void StrDMSsub( char *buffer, double a ) ; //
void StrDMSsub( char *buffer, double a ) ; //
//-----------------------------------------------------------------------------
// Casio Basic
//-----------------------------------------------------------------------------
@ -49,7 +49,7 @@ int CB_GetQuotOpcode(char *SRC, char *buffer, int Maxlen) ;
char* GetStrYFnPtr( char *SRC, int reg, int aryN, int aryMax ) ;
int CB_IsStr( char *SRC, int execptr ) ;
char* CB_GetOpStr1( char *SRC ,int *maxlen ) ; // String -> buffer return
char* CB_GetOpStr( char *SRC, int *maxoplen ) ; // Get opcode String
char* CB_GetOpStr( char *SRC, int *maxoplen ) ; // Get opcode String
double CB_EvalStrDBL( char *buffer, int calcflag ); //
double CB_EvalStr( char *SRC, int calcflag) ; // Eval str -> complex
complex CB_Cplx_EvalStrDBL( char *buffer, int calcflag ); //
@ -57,10 +57,12 @@ complex CB_Cplx_EvalStr( char *SRC, int calcflag) ; // Eval str -> complex
int CBint_EvalStr( char *SRC, int calcflag) ; // Eval str -> int
void CB_GetLocateStr(char *SRC, char *buffer, int Maxlen ) ;
int CB_CheckYfn(char *SRC ) ; // 0:string 1:function
char* GetStrYFnPtrSub( int reg, int dimA, int dimB ) ;
double CB_GraphYStr( char *SRC, int calcflag ) ; //
int CBint_GraphYStr( char *SRC, int calcflag ) ; //
int CBint_GraphYStr( char *SRC, int calcflag ) ; //
double CB_FnStr( char *SRC, int calcflag ) ; //
int CBint_FnStr( char *SRC, int calcflag ) ; //
int CBint_FnStr( char *SRC, int calcflag ) ; //
complex CB_Cplx_GraphYStr( char *SRC, int calcflag ) ; //
complex CB_Cplx_FnStr( char *SRC, int calcflag ) ; //
@ -96,7 +98,7 @@ int CB_TimeToStr() ; // -> "23:59:59"
int CB_StrChar( char *SRC ) ; // StrChar("*"[,n])
int CB_StrCenter( char *SRC ); // StrCenter( Str1,max[,"SpaceChar"])
int CB_EvalToStr( char *SRC ); // Str( n
int CB_EvalToStr( char *SRC ); // Str( n
int CB_Hex( char *SRC ); // Hex(
int CB_Bin( char *SRC ); // Bin(
int CB_StrBase( char *SRC ); // StrBase( Str1,base1,base2 )->str2

View File

@ -516,6 +516,8 @@ int CB_interpreter_sub( char *SRC ) {
dspflagtmp=CB_MatCalc(SRC,c);
if ( dspflagtmp ) goto Evalexit2;
break;
case 0xFFFFFFF0: // GraphY
goto fnjmp;
case 0x51: // List
case 0x6A: // List1
case 0x6B: // List2
@ -556,6 +558,9 @@ int CB_interpreter_sub( char *SRC ) {
else
if ( ( 0xFFFFFF98 <= c ) && ( c <= 0xFFFFFF9F ) ) break; // color command Black/(White)/Magenta/Cyan/Yellow
switch ( c ) {
case 0x1B: // fn
fnjmp:
if ( CB_CheckYfn( SRC ) == 0 ) goto Evalexit2;
case 0x30: // StrJoin(
// case 0x34: // StrLeft(
// case 0x35: // StrRight(