FX 02.45.0900
This commit is contained in:
parent
50ed837be3
commit
377fe0d5f8
|
@ -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"
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
[DLSimProject]
|
||||
Name=CBASIC
|
||||
Version=02.45.0600
|
||||
Version=02.45.0900
|
||||
Model=:fx-9860G.dlm
|
||||
SourcePath=.
|
||||
MemoryPath=INIT
|
||||
|
|
|
@ -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 -----
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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 ) ) {
|
||||
|
|
45
fx/CB_Str.c
45
fx/CB_Str.c
|
@ -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
|
||||
|
|
12
fx/CB_Str.h
12
fx/CB_Str.h
|
@ -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
|
||||
|
|
|
@ -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(
|
||||
|
|
Loading…
Reference in New Issue