FX 02.46.0100

This commit is contained in:
CalcLoverHK 2024-01-25 03:17:24 +08:00
parent f331c81716
commit 3e0b083353
33 changed files with 510 additions and 277 deletions

View File

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

View File

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

View File

@ -898,6 +898,11 @@ complex Cplx_Evalsub1(char *SRC) { // 1st Priority
return Int2Cplx( 3 );
case 0x21: // Det
return Cplx_CB_MatDet(SRC);
case 0x55 : // Ref Mat A
return Cplx_CB_MatRefRref( SRC, 0 );
case 0x56 : // Rref Mat A
return Cplx_CB_MatRefRref( SRC, 1 );
case 0x46 : // Dim
result.real = CB_Dim( SRC );

View File

@ -2,10 +2,11 @@
//-----------------------------------------------------------------------------
//-----------------------------------------------------------------------------
void Cplx_WriteListAns2( complex x, complex y ) {
int base=MatBase;
dspflag=4; // List ans
NewMatListAns( 2, 1, 1, 128 ); // List Ans[2]
Cplx_WriteMatrix( CB_MatListAnsreg, 1,1, x ) ; //
Cplx_WriteMatrix( CB_MatListAnsreg, 2,1, y ) ; //
NewMatListAns( 2, 1, base, 128 ); // List Ans[2]
Cplx_WriteMatrix( CB_MatListAnsreg, base, base, x ) ; //
Cplx_WriteMatrix( CB_MatListAnsreg, base+1, base, y ) ; //
}
//-----------------------------------------------------------------------------
//-----------------------------------------------------------------------------
@ -361,6 +362,11 @@ complex Cplx_ListEvalsub1(char *SRC) { // 1st Priority
case 0x21: // Det
return Cplx_CB_MatDet(SRC);
case 0x55 : // Ref Mat A
return Cplx_CB_MatRefRref( SRC, 0 );
case 0x56 : // Rref Mat A
return Cplx_CB_MatRefRref( SRC, 1 );
case 0x46 : // Dim
result.real = CB_Dim( SRC );
result.imag = 0;
@ -534,10 +540,7 @@ complex Cplx_ListEvalsub1(char *SRC) { // 1st Priority
ExecPtr++;
tmp2=Cplx_NoListEvalsubTop( SRC );
if ( SRC[ExecPtr] == ')' ) ExecPtr++;
dspflag=4; // List ans
NewMatListAns( 2, 1, 1, 128 ); // List Ans[2]
Cplx_WriteMatrix( CB_MatListAnsreg, 1,1, Cplx_fpolr(tmp,tmp2) ) ; // r
Cplx_WriteMatrix( CB_MatListAnsreg, 2,1, Cplx_fpolt(tmp,tmp2) ) ; // Theta
Cplx_WriteListAns2( Cplx_fpolr(tmp,tmp2) , Cplx_fpolt(tmp,tmp2) ) ;
return Int2Cplx( 0 );
case 0xFFFFFFA0 : // Rec( r, Theta ) -> X,Y
tmp=Cplx_NoListEvalsubTop( SRC );
@ -545,10 +548,7 @@ complex Cplx_ListEvalsub1(char *SRC) { // 1st Priority
ExecPtr++;
tmp2=Cplx_NoListEvalsubTop( SRC );
if ( SRC[ExecPtr] == ')' ) ExecPtr++;
dspflag=4; // List ans
NewMatListAns( 2, 1, 1, 128 ); // List Ans[2]
Cplx_WriteMatrix( CB_MatListAnsreg, 1,1, Cplx_frecx(tmp,tmp2) ) ; // x
Cplx_WriteMatrix( CB_MatListAnsreg, 2,1, Cplx_frecy(tmp,tmp2) ) ; // y
Cplx_WriteListAns2( Cplx_frecx(tmp,tmp2) , Cplx_frecy(tmp,tmp2) ) ;
return Int2Cplx( 0 );
case 0xFFFFFFF9: // F9..

View File

@ -737,7 +737,12 @@ int EvalIntsub1(char *SRC) { // 1st Priority
return 3;
case 0x21: // Det
return Cplx_CB_MatDet(SRC).real;
case 0x55 : // Ref Mat A
return Cplx_CB_MatRefRref( SRC, 0 ).real;
case 0x56 : // Rref Mat A
return Cplx_CB_MatRefRref( SRC, 1 ).real;
case 0x46 : // Dim
result=CB_Dim( SRC );
if ( result >= 0 ) return result;

View File

@ -333,6 +333,11 @@ int ListEvalIntsub1(char *SRC) { // 1st Priority
case 0x21: // Det
return Cplx_CB_MatDet(SRC).real;
case 0x55 : // Ref Mat A
return Cplx_CB_MatRefRref( SRC, 0 ).real;
case 0x56 : // Rref Mat A
return Cplx_CB_MatRefRref( SRC, 1 ).real;
case 0x46 : // Dim
result=CB_Dim( SRC );
if ( result >= 0 ) return result;

View File

@ -334,41 +334,6 @@ void CB_Except( char*SRC ) {
//----------------------------------------------------------------------------------------------
//----------------------------------------------------------------------------------------------
int CB_GetRGB( char *SRC, int mode ){ // GetRGB/HSV/HSL() -> ListAns
int c,d,r,g,b,m;
int h,s,v;
int base=MatBase;
int errorCheck=1;
int pipe=mode & 0xF0;
mode &= 0x0F;
d = CB_EvalInt( SRC );
if ( SRC[ExecPtr] == ',' ) {
c=SRC[++ExecPtr];
if ( ( c == 'N' ) || ( c == 'N' ) ) { ExecPtr++; errorCheck=0; }
}
if ( SRC[ExecPtr] == ')' ) ExecPtr++;
b = ((d&0x001F) << 3);
g = ((d&0x07E0) >> 3);
r = ((d&0xF800) >> 8);
h=r; s=g; v=b;
// if ( mode ) {
// if ( ( errorCheck ) && ( pipe==0 ) ) {
// if ( (d==0x003F) || (d==0x041F) || (d==0xF820) || (d==0xFC00) ) { if ( CannotSupportERROR( d ) ) return 0; } // Can not support error
// }
// if ( mode==1 ) rgb2hsv(r,g,b,&h,&s,&v); // rgb->HSV
// if ( mode==2 ) rgb2hsl(r,g,b,&h,&s,&v); // rgb->HSL
// }
dspflag=4; // List ans
NewMatListAns( 3, 1, base, 32 ); // List Ans[3]
m=base;
WriteMatrix( CB_MatListAnsreg, m++, base, h ) ; //
WriteMatrix( CB_MatListAnsreg, m++, base, s ) ; //
WriteMatrix( CB_MatListAnsreg, m , base, v ) ; //
return d;
}
int CB_RGBlistsub( char *SRC, int*r, int*g, int*b ){
int reg;
int m,n;

View File

@ -1050,6 +1050,8 @@ unsigned int EditRun(int run){ // run:1 exec run:2 edit
PrevLinePhyN( ymax, SrcBase, &offset, &offset_y ); // csrY adjust
UpdateLineNum=1;
if ( run == 1 ) { key=KEY_CTRL_F6; goto directrun; } // direct run
if ( DebugMode ) DebugMenuSw=1;
PutKey( KEY_CTRL_SHIFT, 1 ); GetKey(&key);
PutKey( KEY_CTRL_SHIFT, 1 ); GetKey(&key);
@ -1059,8 +1061,6 @@ unsigned int EditRun(int run){ // run:1 exec run:2 edit
else Cursor_SetFlashOn(0x6); // overwrite mode cursor
KeyRecover();
if ( run == 1 ) { key=KEY_CTRL_F6; goto directrun; } // direct run
while ( cont ) {
if ( DebugMode==0 ) DebugMenuSw=0;
mini=(EditFontSize & 0x0F);
@ -1624,7 +1624,6 @@ unsigned int EditRun(int run){ // run:1 exec run:2 edit
ClipStartPtr = -1 ; // ClipMode cancel
break;
case KEY_CTRL_F6:
directrun:
execptr=csrPtr;
if ( SearchMode ) goto searchStart; // Retry search
if ( ClipStartPtr >= 0 ) { // Clip -> del '
@ -1658,6 +1657,7 @@ unsigned int EditRun(int run){ // run:1 exec run:2 edit
csrPtr=OpcodeLinePtr( offset_y, SrcBase, offset);
if ( SrcBase[offset] == 0 ) PrevLinePhyN( ymax, SrcBase, &offset, &offset_y );
} else {
directrun:
if ( ( 1 <= DebugMode ) && ( DebugMode <=3 ) ) { // ====== Debug Mode ======
if ( DebugScreen == 1 ) { DebugMenuSw = 1; DebugScreen = 2; }
else
@ -2311,7 +2311,7 @@ int CB_BreakStop() {
if ( BreakPtr == -7 ) return BreakPtr; // return to main program
if ( ErrorNo == StackERR ) { BreakPtr=-999; TryFlag=0; return BreakPtr; } // stack error
if ( ( BreakPtr == 0 ) && ( TryFlag ) ) return 0;
if ( TryFlag ) return 0;
HiddenRAM_MatAryStore(); // MatAry ptr -> HiddenRAM
Bdisp_PutDisp_DD();

View File

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

View File

@ -3057,9 +3057,17 @@ void LoadConfig1(){
double *bufdbl;
int size,i;
int handle,state;
char folder[32]="CBasic"; // default C.Basic working folder
if ( LoadConfigReadFile( buffer, fname, ConfigMAX ) < 0 ) return;
if ( LoadConfigReadFile( buffer, fname, ConfigMAX ) < 0 ) {
if ( Is35E2 ) {
CreateDirectorySub( folder, 1 ); // creat default C.Basic folder for III model
root2[0]='\\';
strcpy( root2+1, folder ); // current folder
}
return;
}
bufshort=(short*)buffer;
bufint=(int*)buffer;
bufdbl=(double*)buffer;

View File

@ -240,32 +240,33 @@ void sprintGRSiE( char* buffer, double num, int width, int align_mode, int round
if ( ENG==1 ) { // ENG mode
fabsnum=fabs(num);
num = Round( num, round_mode, round_digit );
if ( ( num != 0 ) && ( 1e-15 <= fabsnum ) && ( fabsnum < 1e21 ) ) {
if ( fabsnum >= 1e18 ) { num/=1e18; c=0x0B; } // Exa
if ( ( 0== fabsnum ) || ( ( 1e-15 <= fabsnum ) && ( fabsnum < 1e21 ) ) ) {
if ( fabsnum >= 1e18 ) { num/=1e18; c=0x1B; } // Exa
else if ( fabsnum >= 1e15 ) { num/=1e15; c=0x0A; } // Peta
else if ( fabsnum >= 1e12 ) { num/=1e12; c=0x09; } // Tera
else if ( fabsnum >= 1e09 ) { num/=1e09; c=0x08; } // Giga
else if ( fabsnum >= 1e06 ) { num/=1e06; c=0x07; } // Mega
else if ( fabsnum >= 1e03 ) { num/=1e03; c=0x6B; } // Kiro
else if ( fabsnum >= 1e03 ) { num/=1e03; c=0x06; } // Kiro
else if ( fabsnum >= 1 ) { if ( cplx==0 ) c=' '; }
else if ( fabsnum >= 1e-3 ) { num/=1e-3; c=0x6d; } // milli
else if ( fabsnum >= 1e-6 ) { num/=1e-6; c=0xE6; d=0x4B; } // micro
else if ( fabsnum == 0 ) { c=' '; } // 0
else if ( fabsnum >= 1e-3 ) { num/=1e-3; c=0x05; } // milli
else if ( fabsnum >= 1e-6 ) { num/=1e-6; c=0x04; } // micro
else if ( fabsnum >= 1e-9 ) { num/=1e-9; c=0x03; } // nano
else if ( fabsnum >= 1e-12) { num/=1e-12; c=0x70; } // pico
else if ( fabsnum >= 1e-15) { num/=1e-15; c=0x66; } // femto
else if ( fabsnum >= 1e-12) { num/=1e-12; c=0x02; } // pico
else if ( fabsnum >= 1e-15) { num/=1e-15; c=0x01; } // femto
width-- ;
round_mode=Norm; round_digit=0;
round_mode=Norm; //round_digit=0;
sprintGRSi( buffer, num, width, align_mode, round_mode, round_digit, cplx );
width=strlen((char*)buffer);
if ( ( cplx ) && ( buffer[width-1] == 0x50 ) && c ) {
width-=2;
buffer[width++]=c;
if ( d ) buffer[width++]=d;
// if ( d ) buffer[width++]=d;
buffer[width++]=0x7f; // (i)
buffer[width++]=0x50; // (i)
} else {
buffer[width++]=c;
buffer[width++]=d;
// buffer[width++]=d;
}
buffer[width]='\0';
return ;
@ -1127,6 +1128,7 @@ const short oplistOPTN[]={
0x7F3C, // GCD(
0x7F3D, // LCM(
0x7F85, // logab(
0x7F29, // Sigma(
0xFFFF, // -
0x7FB0, // And
@ -1161,33 +1163,45 @@ const short oplistOPTN[]={
0xFFFF, // -
0x7F46, // Dim
0x7F41, // Trn
0x7F47, // Fill(
0x7F45, // Swap
0x7F42, // *Row
0x7F43, // *Row+
0x7F44, // Row+
0x7F48, // Identity
0x7F58, // ElemSize(
0x7F59, // RowSize(
0x7F5A, // ColSize(
0x7F5B, // MatBase(
0x7FE9, // CellSum(
0xFFFF, // -
0x7F2C, // Seq(
0x7F49, // Augment(
0x7F4A, // List->Mat(
0x7F4B, // Mat->List(
0x7F20, // Max(
0x7F47, // Fill(
0x7F2C, // Seq(
0x7F2D, // Min(
0x7F20, // Max(
0x7F2E, // Mean(
0x7F49, // Augment(
0x7F4C, // Sum
0x7F4D, // Prod
0xF7B0, // SortA(
0xF7B1, // SortB(
0x7F5C, // ListCmp(
0x7F29, // Sigma(
0xFFFF, // -
0x7F46, // Dim
0x7F4B, // Mat->List(
0x7F21, // Det
0x7F41, // Trn
0x7F49, // Augment(
0x7F48, // Identity
0x7F47, // Fill(
0x7F55, // Ref
0x7F56, // Rref
0xF94A, // CrossP( ver.2.04~
0xF94B, // DotP("
0xF96D, // Angle( ver.2.04~
0xF95E, // UnitV( ver.2.04~
0xF95B, // Norm(" ver.2.04~
0xFFFF, // -
0x7F45, // Swap
0x7F42, // *Row
0x7F43, // *Row+
0x7F44, // Row+
0x7F5B, // MatBase(
0x7F58, // ElemSize(
0x7F59, // RowSize(
0x7F5A, // ColSize(
0x7FE9, // CellSum(
0xFFFF, // -
0xA1, // sinh
@ -1202,9 +1216,9 @@ const short oplistOPTN[]={
0x7F23, // Conjg
0x7F24, // ReP
0x7F25, // ImP
0x7F54, // Angle
// 0x7F55, // Ref
// 0x7F56, // Rref
// 0x7F54, // Angle
0xF906, // >a+bi
0xF907, // >re^Theta
// 0x7F57, // Conv
0xFFFF, // -
@ -1237,10 +1251,11 @@ const short oplistOPTN[]={
0xF942, // TIME
0x7F5F, // Ticks
0xF94F, // Wait
0xF7DE, // BatteryStatus
0xF7DD, // Beep
0x7FDF, // Version
0x7FCF, // System(
0xF95F, // IsError(
// 0xF95F, // IsError(
0xFFFF, // -
0x23, // #
@ -1308,12 +1323,16 @@ const short oplistPRGM[]={
0xF7F1, // Local
0xFA, // Gosub
0xF717, // ACBreak
0xF737, // Try
0xF738, // Except
0xF739, // TryEnd
0xFFFF, // -
0xF718, // ClrText
0xF719, // ClrGraph
0xF71A, // ClrList
0xF91E, // ClrMat
0xF93E, // ClrVct
0xF710, // Locate
0x7F8F, // Getkey
0xF7E4, // Disp
@ -1576,7 +1595,8 @@ const short oplistCMD[]={ // 5800P like
0xF719, // ClrGraph
0xF91E, // ClrMat
0xF71A, // ClrList
0x23, // #
0xF93E, // ClrVct
// 0x23, // #
0x25, // %
// 3
@ -1610,33 +1630,63 @@ const short oplistCMD[]={ // 5800P like
// 5
0x7F46, // Dim
0x7F49, // Augment(
0x7F4B, // Mat->List(
0x7F4A, // List->Mat(
0x7F41, // Trn
0x7F47, // Fill(
0x7F45, // Swap
0x7F42, // *Row
0x7F43, // *Row+
0x7F44, // Row+
0x7F48, // Identity
0x25, // %
// 6
0x7F49, // Augment(
0x7F2C, // Seq(
0x7F20, // Max(
0x7F2D, // Min(
0x7F20, // Max(
0x7F2E, // Mean(
0x7F88, // RanList#(
0xF7B0, // SortA(
0xF7B1, // SortB(
0x7F49, // Augment(
0x7F4C, // Sum
0x7F4D, // Prod
0x7F5C, // ListCmp(
0x25, // %
// 6
0x7F46, // Dim
0x7F4B, // Mat->List(
0x7F21, // Det
0x7F41, // Trn
0x7F48, // Identity
0x7F47, // Fill(
0xFFFF,
0x7F49, // Augment(
0x7F55, // Ref
0x7F56, // Rref
// 0x5C, //
// 0x24, // $
0x23, // #
0x25, // %
// 7
0x7F84, // Vct
0xF94A, // CrossP( ver.2.04~
0xF94B, // DotP("
0xF96D, // Angle( ver.2.04~
0xF95E, // UnitV( ver.2.04~
0xF95B, // Norm(" ver.2.04~
0xF7B0, // SortA(
0xF7B1, // SortB(
0x7F45, // Swap
0x7F42, // *Row
0x7F43, // *Row+
0x7F44, // Row+
// 8
0x7F5B, // MatBase(
0x7F58, // ElemSize(
0x7F59, // RowSize(
0x7F5A, // ColSize(
0x7FE9, // CellSum(
0xFFFF,
0xFFFF,
0xFFFF,
0x5C, //
0x24, // $
0x23, // #
0x25, // %
// 9
0xF711, // Send(
0xF712, // Receive(
0xF713, // OpenComport38k
@ -1645,12 +1695,12 @@ const short oplistCMD[]={ // 5800P like
0xF716, // Receive38k
0xF7DD, // Beep
0xFFFF,
0xFFFF,
0xFFFF,
0x5C, //
0x24, // $
0x23, // #
0x25, // %
// 8 GR
// 10 GR
0xD1, // Cls
0xF719, // ClrGraph
0xEB, // ViewWindow
@ -1663,7 +1713,7 @@ const short oplistCMD[]={ // 5800P like
0xF7A7, // F-Line
0xF7A3, // Vertical
0xF7A4, // Horizontal
// 9
// 11
0xF7AB, // PxlOn
0xF7AC, // PxlOff
0xF7AD, // PxlChg
@ -1679,7 +1729,7 @@ const short oplistCMD[]={ // 5800P like
// 0x23, // #
// 0x25, // %
// 10
// 12
0xF5, // Graph(X,Y)=(
0xF723, // DrawStat
0xF7CC, // DrawOn
@ -1693,7 +1743,7 @@ const short oplistCMD[]={ // 5800P like
0xF750, // Scatter
0xF751, // xyLine
// 11
// 13
0xF78C, // SketchNormal
0xF78D, // SketchThick
0xF78E, // SketchBroken
@ -1707,7 +1757,7 @@ const short oplistCMD[]={ // 5800P like
0xF793, // StoPict
0xF794, // RclPict
// 12
// 14
0xF770, // G-Connect
0xF771, // G-Plot
0xF7C3, // CoordOn
@ -1721,7 +1771,7 @@ const short oplistCMD[]={ // 5800P like
0xF797, // StoV-Win
0xF798, // RclV-Win
// 13
// 15
0x7F00, // Xmin
0x7F04, // Ymin
0x7F01, // Xmax
@ -1735,7 +1785,7 @@ const short oplistCMD[]={ // 5800P like
0x7F09, // TThetamax
0x7F0A, // TThetaptch
// 14 FN
// 16 FN
0x97, // Abs
0xA6, // Int
0xB6, // frac
@ -1749,7 +1799,7 @@ const short oplistCMD[]={ // 5800P like
0x7F3C, // GCD(
0x7F3D, // LCM(
// 15
// 17
0xA1, // sinh
0xA2, // cosh
0xA3, // tanh
@ -1763,7 +1813,7 @@ const short oplistCMD[]={ // 5800P like
0x26, // &
0x7C, // |
// 16
// 18
0xC1, // Ran#
0x7F87, // RanInt#(
0x7F8A, // RanNorm#(
@ -1779,13 +1829,13 @@ const short oplistCMD[]={ // 5800P like
// 0x23, // #
// 0x25, // %
// 17
// 19
0x9C, // deg
0xAC, // rad
0xBC, // grad
0xF91B, // fn
0xF905, // >DMS
0x8C, // dms
0xF91B, // fn
0xDA, // Deg
0xDB, // Rad
0xDC, // Grad
@ -1793,7 +1843,7 @@ const short oplistCMD[]={ // 5800P like
0x80, // Pol(
0xA0, // Rec(
// 18
// 20
0x01, // femto
0x02, // pico
0x03, // nano
@ -1807,25 +1857,25 @@ const short oplistCMD[]={ // 5800P like
0x0B, // Exa
0x25, // %
// 19
// 21
0x7F22, // Arg
0x7F23, // Conjg
0x7F24, // ReP
0x7F25, // ImP
// 0x7F54, // Angle
// 0x7F55, // Ref
// 0x7F56, // Rref
// 0x7F57, // Conv
0xFFFF, //
0xFFFF, //
0xFFFF, //
0xFFFF, //
0xFFFF, //
0xFFFF, //
0x23, // #
0x25, // %
0xF906, // >a+bi
0xF907, // >re^Theta
0xD9, // Norm
0xE3, // Fix
0xE4, // Sci
0xDD, // Eng
0xF90B, // EngOn
0xF90C, // EngOff
// 0x23, // #
// 0x25, // %
// 20 STR
// 22 STR
0xF93F, // Str
0xF930, // StrJoin(
0xF931, // StrLen
@ -1839,7 +1889,7 @@ const short oplistCMD[]={ // 5800P like
0x23, // #
0x25, // %
// 21
// 23
0xF937, // Exp>Str(
0xF938, // Exp(
0xF939, // StrUpr(
@ -1853,7 +1903,7 @@ const short oplistCMD[]={ // 5800P like
0x23, // #
0x25, // %
// 22
// 24
0xF940, // Str(
0xF943, // Sprintf(
0xF946, // Hex(
@ -1867,7 +1917,7 @@ const short oplistCMD[]={ // 5800P like
0x23, // #
0x25, // %
// 23 EX
// 25 EX
0xF90F, // Alias
0x7F5F, // Ticks
0xF941, // DATE
@ -1963,13 +2013,13 @@ const short oplistCMD[]={ // 5800P like
0xF961, // GetFontMini(
0xF962, // SetFont
0xF963, // SetFOntMini
0xF737, // Try
0xF738, // Except
0xF739, // TryEnd
0xFFFF, //
0xF7DE, // BatteryStatus
0xF7DD, // Beep
0x7FDF, // Version
0x7FCF, // System(
0x5C, //
0x24, // $
0x23, // #
0x25, // %
@ -1979,10 +2029,10 @@ const short oplistCMD[]={ // 5800P like
0};
#define CMD_STD 0
#define CMD_GR 8
#define CMD_FN 14
#define CMD_STR 20
#define CMD_EX 23
#define CMD_GR 10
#define CMD_FN 16
#define CMD_STR 22
#define CMD_EX 25
int SelectOpcode5800P( int flag ) {
short *select=&selectCMD;
@ -2390,6 +2440,8 @@ const topcodes OpCodeStrList[] = {
{ 0x7F3A, "MOD(" }, // SDK emu not support
{ 0x7F3C, "GCD(" }, // SDK emu not support
{ 0x7F3D, "LCM(" }, // SDK emu not support
{ 0x7F55, "Ref " }, // SDK emu not support
{ 0x7F56, "Rref " }, // SDK emu not support
{ 0x7F87, "RanInt#(" }, // SDK emu not support
{ 0x7F88, "RanList#(" }, // SDK emu not support
{ 0x7F89, "RanBin#(" }, // SDK emu not support

View File

@ -347,8 +347,8 @@ void DispGenuineCmdMenu(){
Fkey_Icon( FKeyNo1, 205 ); // Fkey_dspRB( FKeyNo1, "Iden");
Fkey_Icon( FKeyNo2, 164 ); // Fkey_dspRB( FKeyNo2, "Dim ");
Fkey_Icon( FKeyNo3, 206 ); // Fkey_dspRB( FKeyNo3, "Fill");
FkeyClear( FKeyNo4 );
Fkey_Icon( FKeyNo5, 790 ); // Fkey_dispR( FKeyNo5, "SIZE");
Fkey_Icon( FKeyNo4,1042 ); // Fkey_dspRB( FKeyNo4, "Ref ");
Fkey_Icon( FKeyNo5,1043 ); // Fkey_dspRB( FKeyNo4, "Rref");
Fkey_Icon(FKeyNo6, 6 ); //Fkey_DISPN( FKeyNo6," \xE6\x9E ");
break;
case 2:
@ -364,7 +364,7 @@ void DispGenuineCmdMenu(){
FkeyClear( FKeyNo2 );
FkeyClear( FKeyNo3 );
FkeyClear( FKeyNo4 );
FkeyClear( FKeyNo5 );
Fkey_Icon( FKeyNo5, 790 ); // Fkey_dispR( FKeyNo5, "SIZE");
Fkey_Icon(FKeyNo6, 6 ); //Fkey_DISPN( FKeyNo6," \xE6\x9E ");
break;
}

View File

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

View File

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

View File

@ -74,6 +74,7 @@ void GetGenuineCmdF4( unsigned int *code ){
case CMD_OPTN_MAT:
switch ( CommandPage ) {
case 0: (*code)=0x7F41;return; // Trn
case 1: (*code)=0x7F55;return; // ref
case 2: (*code)=0xF96D;return; // Angle(
} break;
case CMD_OPTN_MAT_SIZE:

View File

@ -68,8 +68,9 @@ void GetGenuineCmdF5( unsigned int *code ){
case CMD_OPTN_MAT:
switch ( CommandPage ) {
case 0: (*code)=0x7F49;return; // Augment(
case 1: CommandType=CMD_OPTN_MAT_SIZE; CommandPage=0;break;
case 1: (*code)=0x7F56;return; // Rref
case 2: (*code)=0xF95E;return; // UnitV(
case 3: CommandType=CMD_OPTN_MAT_SIZE; CommandPage=0;break;
} break;
case CMD_OPTN_CALC:
break;

View File

@ -29,8 +29,8 @@ int selectMatrix=0;
int StackPtr;
const char VerMSG[]="C.Basic v2.45\xE6\x41";
#define VERSION 245
const char VerMSG[]="C.Basic v2.46\xE6\x41";
#define VERSION 246
//---------------------------------------------------------------------------------------------
void GetMemFreeStr10( char *buffer );
@ -50,9 +50,9 @@ void VerDispSub( int flag ) {
// locate( 3, 3 ); Print( (unsigned char*)"(Casio Basic" );
// locate( 3, 4 ); Print( (unsigned char*)" compatible+)" );
locate( 3, 5 ); Print( (unsigned char*)" by sentaro21" );
locate( 3, 6 ); Print( (unsigned char*)" (c)2020" );
locate( 3, 6 ); Print( (unsigned char*)" (c)2023" );
PrintMini(13*6+2, 2*8+1, (unsigned char*)"build 20", MINI_OVER );
PrintMini(13*6+2, 2*8+1, (unsigned char*)"build 01 ", MINI_OVER );
PrintMini( 2*6+2, 3*8+1, (unsigned char*)"(Casio Basic compatible+)", MINI_OVER );
// if ( ( UseHiddenRAM ) && ( IsHiddenRAM ) ) {

View File

@ -1422,6 +1422,11 @@ double Evalsub1(char *SRC) { // 1st Priority
return 3;
case 0x21: // Det
return Cplx_CB_MatDet(SRC).real;
case 0x55 : // Ref Mat A
return Cplx_CB_MatRefRref( SRC, 0 ).real;
case 0x56 : // Rref Mat A
return Cplx_CB_MatRefRref( SRC, 1 ).real;
case 0x46 : // Dim
result=CB_Dim( SRC );

View File

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

View File

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

View File

@ -76,10 +76,11 @@ int CheckAnsMatList( int reg ) { // ListAns <-> List 1
}
void WriteListAns2( double x, double y ) {
int base=MatBase;
dspflag=4; // List ans
NewMatListAns( 2, 1, 1, 64 ); // List Ans[2]
WriteMatrix( CB_MatListAnsreg, 1,1, x ) ; //
WriteMatrix( CB_MatListAnsreg, 2,1, y ) ; //
NewMatListAns( 2, 1, base, 64 ); // List Ans[2]
WriteMatrix( CB_MatListAnsreg, base, base, x ) ; //
WriteMatrix( CB_MatListAnsreg, base+1, base, y ) ; //
}
//-----------------------------------------------------------------------------
//-----------------------------------------------------------------------------
@ -424,6 +425,11 @@ double ListEvalsub1(char *SRC) { // 1st Priority
case 0x21: // Det
return Cplx_CB_MatDet(SRC).real;
case 0x55 : // Ref Mat A
return Cplx_CB_MatRefRref( SRC, 0 ).real;
case 0x56 : // Rref Mat A
return Cplx_CB_MatRefRref( SRC, 1 ).real;
case 0x46 : // Dim
result=CB_Dim( SRC );
if ( result >= 0 ) return result;
@ -595,10 +601,7 @@ double ListEvalsub1(char *SRC) { // 1st Priority
ExecPtr++;
tmp2=NoListEvalsubTop( SRC );
if ( SRC[ExecPtr] == ')' ) ExecPtr++;
dspflag=4; // List ans
NewMatListAns( 2, 1, 1, 64 ); // List Ans[2]
WriteMatrix( CB_MatListAnsreg, 1,1, fpolr(tmp,tmp2) ) ; // r
WriteMatrix( CB_MatListAnsreg, 2,1, fpolt(tmp,tmp2) ) ; // Theta
WriteListAns2( fpolr(tmp,tmp2) , fpolt(tmp,tmp2) ) ;
return 0;
case 0xFFFFFFA0 : // Rec( r, Theta ) -> X,Y
tmp=NoListEvalsubTop( SRC );
@ -606,10 +609,7 @@ double ListEvalsub1(char *SRC) { // 1st Priority
ExecPtr++;
tmp2=NoListEvalsubTop( SRC );
if ( SRC[ExecPtr] == ')' ) ExecPtr++;
dspflag=4; // List ans
NewMatListAns( 2, 1, 1, 64 ); // List Ans[2]
WriteMatrix( CB_MatListAnsreg, 1,1, frecx(tmp,tmp2) ) ; // x
WriteMatrix( CB_MatListAnsreg, 2,1, frecy(tmp,tmp2) ) ; // y
WriteListAns2( frecx(tmp,tmp2) , frecy(tmp,tmp2) ) ;
return 0;
case 0xFFFFFFF9: // F9..

View File

@ -2113,7 +2113,7 @@ int MatGetOpcode(char *SRC, char *buffer, int Maxlen ) {
buffer[ptr++] = SRC[ExecPtr++]&0xFF ;
} else buffer[ptr++] = c & 0xFF;
if ( ptr >= Maxlen-1 ) { CB_Error(StringTooLongERR); break; } // String too Long error
if ( ptr > Maxlen-2 ) { CB_Error(StringTooLongERR); break; } // String too Long error
}
buffer[ptr]='\0' ;
return ptr;
@ -2587,6 +2587,7 @@ void CB_MatSwap( char *SRC ) { // Swap Mat A,2,3
if ( a == b ) return;
switch ( ElementSize ) {
case 128:
case 64:
for ( n=base; n<dimB; n++ ) {
dtmp = Cplx_ReadMatrix( reg, a, n );
@ -4341,6 +4342,183 @@ void Cplx_CB_MatInv( char *SRC ) { // Inverse Mat A
}
*/
//-----------------------------------------------------------------------------
//-----------------------------------------------------------------------------
void Mat_Sort_leading_entry( int reg ) {
complex p,d,tmp1,tmp2;
int i,j,k,m,x,y,N,M;
int sizeA,sizeB;
int ElementSize;
int base,b;
short w[1000];
sizeA = MatAry[reg ].SizeA;
sizeB = MatAry[reg ].SizeB;
base = MatAry[reg ].Base;
ElementSize = MatAry[reg ].ElementSize;
N = sizeA +base ;
M = sizeB +base ;
if ( ( sizeA < 2 ) || ( sizeB < 2 ) ) return;
for ( m = base; m < M; m++) {
for( i = base; i < N; i++) {
p = Cplx_ReadMatrix( reg, i,m );
if ( ( p.real == 0 ) && ( p.imag == 0 ) ) {
for( k = i+1; k < N; k++){
d = Cplx_ReadMatrix( reg, k,m );
if ( ( d.real != 0 ) || ( d.imag != 0 ) ) {
for ( x=base; x<M; x++) { // swap
tmp1 = Cplx_ReadMatrix( reg, i,x);
tmp2 = Cplx_ReadMatrix( reg, k,x);
Cplx_WriteMatrix( reg, k,x, tmp1);
Cplx_WriteMatrix( reg, i,x, tmp2);
}
break;
}
}
}
}
}
}
void Mat_Refto1( int reg ) { //
complex p,d;
int i,j,k,m,x,y,N,M;
int sizeA,sizeB;
int ElementSize;
int base;
sizeA = MatAry[reg ].SizeA;
sizeB = MatAry[reg ].SizeB;
base = MatAry[reg ].Base;
ElementSize = MatAry[reg ].ElementSize;
N = sizeA +base ;
M = sizeB +base ;
for( i = base; i < N; i++) {
for(j = base; j < M; j++){
p = Cplx_ReadMatrix( reg,i,j);
if ( ( ( p.real != 0 ) || ( p.imag != 0 ) ) ) {
for(x = j; x < M; x++){
Cplx_WriteMatrix( reg,i,x, Cplx_fDIV( Cplx_ReadMatrix( reg,i,x) , p) );
}
break;
}
}
}
}
void Mat_Ref( int reg ) { // Ref Mat A Row echelon form
complex p,d;
int i,j,k,m,n,x,y,N,M;
int sizeA,sizeB;
int ElementSize;
int base;
sizeA = MatAry[reg ].SizeA;
sizeB = MatAry[reg ].SizeB;
base = MatAry[reg ].Base;
ElementSize = MatAry[reg ].ElementSize;
N = sizeA +base ;
M = sizeB +base ;
n=base;
for( n = base; n < N-1; n++){
Mat_Refto1( reg );
for( i = n+1; i < N; i++) {
p = Cplx_ReadMatrix( reg,i,n);
if ( ( p.real != 0 ) || ( p.imag != 0 ) ) {
for(x = n; x < M; x++){
Cplx_WriteMatrix( reg,i,x, Cplx_fSUB( Cplx_ReadMatrix( reg,i,x) , Cplx_ReadMatrix( reg,n,x) ) );
}
}
}
Mat_Sort_leading_entry( reg );
}
Mat_Refto1( reg );
}
void Mat_Rref( int reg ) { // Ref Mat A Reduced row echelon form (Gauss-Jordan elimination)
complex p,d;
int i,j,k,m,x,y,N,M;
int sizeA,sizeB;
int ElementSize;
int base;
sizeA = MatAry[reg ].SizeA;
sizeB = MatAry[reg ].SizeB;
base = MatAry[reg ].Base;
ElementSize = MatAry[reg ].ElementSize;
N = sizeA +base ;
M = sizeB +base ;
for( i = base; i < N; i++) {
p = Cplx_ReadMatrix( reg,i,i);
if ( ( p.real != 0 ) || ( p.imag != 0 ) ){
for(j = base; j < M; j++){
Cplx_WriteMatrix( reg,i,j, Cplx_fDIV( Cplx_ReadMatrix( reg,i,j) , p) );
}
for(j = base; j < N; j++) {
if (i != j) {
d = Cplx_ReadMatrix( reg,j,i);
if ( ( d.real != 0 ) || ( d.imag != 0 ) ) {
for (k = i; k < M; k++) Cplx_WriteMatrix( reg,j,k, Cplx_fSUB( Cplx_ReadMatrix( reg,j,k) , Cplx_fMUL( d , Cplx_ReadMatrix( reg,i,k) ) ) );
}
}
}
}
}
}
complex Cplx_CB_MatRefRref( char *SRC, int select ) { // Rref Mat A
int reg,reg2;
int sizeA,sizeB;
int ElementSize;
int base;
int dspflagtmp=dspflag;
complex result={0,0};
// { CB_Error(NotSupportERR); return ; } // Not support error
Cplx_ListEvalsub1(SRC);
if ( dspflag != 3 ) { CB_Error(ArgumentERR); return Int2Cplx(0); } // Argument error
reg = CB_MatListAnsreg;
Mat_Sort_leading_entry( reg );
switch( select ) {
case 0: // Ref
Mat_Ref( reg );
break;
case 1: // Pref
Mat_Ref( reg );
Mat_Rref( reg );
break;
}
return result;
}
//-----------------------------------------------------------------------------
// Vector
//-----------------------------------------------------------------------------

View File

@ -156,3 +156,4 @@ void Cplx_CB_MatInv( char *SRC ) ; // Inverse Mat A
void CB_ListNo2Ptr( int n );
void CB_ListFile( char *SRC );
complex Cplx_CB_MatRefRref( char *SRC, int select ); // Ref/Rref Mat A

View File

@ -524,7 +524,7 @@ int CB_GetQuotOpcode(char *SRC, char *buffer, int Maxlen) {
break;
}
next:
if ( ptr >= Maxlen ) { CB_Error(StringTooLongERR); break; } // String too Long error
if ( ptr > Maxlen ) { CB_Error(StringTooLongERR); break; } // String too Long error
}
return ptr;
}

View File

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

View File

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

View File

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

View File

@ -1829,10 +1829,10 @@ void CB_Next( char *SRC ,CurrentStk *CurrentStruct ){
iptr=CurrentStruct->Var[CurrentStruct->ForPtr];
(*iptr) += stepint;
if ( stepint > 0 ) { // step +
if ( *iptr > CurrentStruct->IntEnd[CurrentStruct->ForPtr] ) { (*iptr) -= step; goto exit;} // exit
if ( (*iptr) > CurrentStruct->IntEnd[CurrentStruct->ForPtr] ) { (*iptr) -= stepint; goto exit;} // exit
}
else { // step -
if ( *iptr < CurrentStruct->IntEnd[CurrentStruct->ForPtr] ) { (*iptr) -= step; goto exit;} // exit
if ( (*iptr) < CurrentStruct->IntEnd[CurrentStruct->ForPtr] ) { (*iptr) -= stepint; goto exit;} // exit
}
} else { // ------------ Double mode
step = CurrentStruct->Step[CurrentStruct->ForPtr];

View File

@ -378,7 +378,6 @@ void CB_BackColor( char *SRC );
void CB_TransparentColor( char *SRC );
int CB_GetColor( char *SRC );
unsigned short CB_RGB( char *SRC, int mode ) ; // n or (r,g,b) return : color code // mode 0:RGB 1:HSV 2:HSL
int CB_GetRGB( char *SRC, int mode ); // GetRGB/HSV/HsL() -> ListAns
void CB_GraphFunc( char *SRC, int c ) ;

View File

@ -392,32 +392,26 @@ void CB_GetOperandNDbl( char *SRC, int n, double*ary ){
}
}
int ToUpperC( int c ){
if ( ( 'a' <= c ) && ( c <= 'z' ) ) c +=('A'-'a');
return c;
}
void CB_Screen( char *SRC ){ // Screen.G Screen.T Screen.R Screen # Screen % Screen.VG Screen.VT
void CB_Screen( char *SRC ){ // Screen.G Screen.T
double ScrOp[4];
double x,y;
int px,py;
int c;
dspflag=0; //
c=SRC[ExecPtr++];
if ( c == '.' ) { c=SRC[ExecPtr++]; c=ToUpperC(c);
if ( ( c=='G' ) ) goto scrG; // Select Graphic Screen
if ( ( c=='T' ) ) goto scrT; // Select Text Screen
if ( ( c=='R' ) ) goto scrR; // ScreenR to reverse screen
if ( ( c=='V' ) ) goto scrV; // Screen.V to change current Vram
if ( c == '.' ) { c=SRC[ExecPtr++];
if ( ( c=='G' ) || ( c=='g' ) ) goto scrG; // Select Graphic Screen
if ( ( c=='T' ) || ( c=='t' ) ) goto scrT; // Select Text Screen
if ( ( c=='R' ) || ( c=='r' ) ) goto scrR; // ScreenR to reverse screen
if ( c == '#' ) goto scrCod;
if ( c == '%' ) goto scrCod2;
{ ExecPtr--; CB_Error(SyntaxERR); return; } // Syntax error
} else
if ( ( c=='G' ) ) goto scrG; // Select Graphic Screen
if ( ( c=='G' ) || ( c=='g' ) ) goto scrG; // Select Graphic Screen
else
if ( ( c=='T' ) ) goto scrT; // Select Text Screen
if ( ( c=='T' ) || ( c=='t' ) ) goto scrT; // Select Text Screen
else
if ( ( c=='R' ) ) { // ScreenR to reverse screen
if ( ( c=='R' ) || ( c=='r' ) ) { // ScreenR to reverse screen
scrR:
// Bdisp_AreaReverseVRAM(0,0,127,63);
ML_rectangle( 0, 0, 127, 63, 0, 0, 2);
@ -465,14 +459,6 @@ void CB_Screen( char *SRC ){ // Screen.G Screen.T Screen.R Screen # Scre
else goto scrT; // Select Text Screen
} else { ExecPtr--;
switch ( CB_EvalInt( SRC ) ) {
case -1:
scrV:
c=SRC[ExecPtr++]; c=ToUpperC(c);
if ( c=='T' ) { ExecPtr++; PictAry[0]=(unsigned char*)TVRAM; } // Screen.VT to override screen & recover Text Vram
else
if ( c=='G' ) { ExecPtr++; PictAry[0]=(unsigned char*)GVRAM; } // Screen.VG to GraphicsText Vram
else PictAry[0]=(unsigned char*)GetVRAMAddress();
break;
case 0:
scrT:
CB_SelectTextVRAM(); // Select Text Screen
@ -1161,7 +1147,7 @@ void CB_ReadGraph( char *SRC ){ // ReadGraph(px1,py1, px2,py2)->Mat C
DISPBOX box;
// if ( RangeErrorCK( SRC ) ) return;
// CB_ChangeGraphicMode( SRC ); // Select Graphic Mode
CB_ChangeGraphicMode( SRC ); // Select Graphic Mode
CB_DotOprand( SRC, &px1, &py1);
if ( SRC[ExecPtr] != ',' ) { CB_Error(SyntaxERR); return; } // Syntax error
ExecPtr++;
@ -1190,7 +1176,7 @@ void CB_ReadGraph( char *SRC ){ // ReadGraph(px1,py1, px2,py2)->Mat C
Bdisp_ReadArea_VRAM( &box, ptr);
}
} else { CB_Error(SyntaxERR); return; } // Syntax error
// if ( scrmode==0 ) CB_SelectTextVRAM(); // Select Text Screen
if ( scrmode==0 ) CB_SelectTextVRAM(); // Select Text Screen
}
void CB_WriteGraph( char *SRC ){ // WriteGraph x,y,wx,wy,Mat A ([2,2]),modify,kind
@ -1209,7 +1195,7 @@ void CB_WriteGraph( char *SRC ){ // WriteGraph x,y,wx,wy,Mat A ([2,2]),modify,ki
int ElementSize;
// if ( RangeErrorCK( SRC ) ) return;
// CB_ChangeGraphicMode( SRC ); // Select Graphic Mode
CB_ChangeGraphicMode( SRC ); // Select Graphic Mode
CB_DotOprand( SRC, &px, &py);
if ( SRC[ExecPtr] != ',' ) { CB_Error(SyntaxERR); return; } // Syntax error
ExecPtr++;
@ -1267,7 +1253,7 @@ void CB_DotGet( char *SRC ){ // DotGet(px1,py1, px2,py2)->Mat B [x,y]
int ElementSize=1;
int scrmode=ScreenMode;
// if ( CB_RangeErrorCK_ChangeGraphicMode( SRC ) ) return; // Select Graphic Mode
if ( CB_RangeErrorCK_ChangeGraphicMode( SRC ) ) return; // Select Graphic Mode
CB_DotOprand( SRC, &px1, &py1);
if ( SRC[ExecPtr] != ',' ) { CB_Error(SyntaxERR); return; } // Syntax error
ExecPtr++;
@ -1299,7 +1285,7 @@ void CB_DotGet( char *SRC ){ // DotGet(px1,py1, px2,py2)->Mat B [x,y]
y++;
}
} else { CB_Error(SyntaxERR); return; } // Syntax error
// if ( scrmode==0 ) CB_SelectTextVRAM(); // Select Text Screen
if ( scrmode==0 ) CB_SelectTextVRAM(); // Select Text Screen
}
void CB_DotPut( char *SRC ){ // DotPut(Mat B[x,y], px1,py1, px2,py2) [-> Mat C]
@ -1376,7 +1362,7 @@ void CB_DotPut( char *SRC ){ // DotPut(Mat B[x,y], px1,py1, px2,py2) [-> Mat C]
// dspflag=0;
UseGraphic=0;
} else { // -> VRAM
// CB_ChangeGraphicMode( SRC ); // Select Graphic Mode
CB_ChangeGraphicMode( SRC ); // Select Graphic Mode
mode=CB_SetPointMode( SRC );
i=x;
for ( py=py1; py<=py2 ; py++) {
@ -1450,7 +1436,7 @@ void CB_DotTrim( char *SRC ){ // DotTrim(Mat A,x1,y1,x2,y2)->Mat B =>[X,Y]
}
} else {
// if ( CB_RangeErrorCK_ChangeGraphicMode( SRC ) ) return; // Select Graphic Mode
if ( CB_RangeErrorCK_ChangeGraphicMode( SRC ) ) return; // Select Graphic Mode
CB_DotOprand( SRC, &px1, &py1);
if ( SRC[ExecPtr] != ',' ) { CB_Error(SyntaxERR); return; } // Syntax error
ExecPtr++;
@ -2506,6 +2492,77 @@ void CB_RclVWin( char *SRC ) {
CB_ChangeViewWindow() ;
}
//----------------------------------------------------------------------------------------------
//----------------------------------------------------------------------------------------------
void CB_GraphFunc( char *SRC, int c ) {
int n,d;
char *buffer;
if ( ( 0x63<=c ) && ( c<=0x6F) ) {
switch ( c ) {
case 0x63: d= 0; break; // Y=Type
case 0x64: d= 1; break; // r=Type
case 0x65: d= 2; break; // ParamType
// case 0x66: //
case 0x67: d= 3; break; // X=Type
case 0x68: d= 8; break; // X>Type
case 0x69: d= 9; break; // X<Type
case 0x6A: d= 4; break; // Y>Type
case 0x6B: d= 5; break; // Y<Type
case 0x6C: d= 6; break; // Y>=Type
case 0x6D: d= 7; break; // Y<=Type
case 0x6E: d=10; break; // X>=Type
case 0x6F: d=11; break; // X<=Type
}
FuncType = d;
return;
}
if ( c == 0xFFFFFF98 ) { // SetG-Color
c = CB_GetColor( SRC );
if ( SRC[ExecPtr]!=',' ) { CB_Error(SyntaxERR); goto exit; } // Syntax error
ExecPtr++;
buffer = GetStrYFnPtr( SRC, defaultGraphAry, defaultGraphAryN, defaultGraphArySize ) ;
if ( buffer[7-1] ) {
buffer[5-1] = c/256;
buffer[6-1] = c%256;
}
goto exit;
}
buffer = GetStrYFnPtr( SRC, defaultGraphAry, defaultGraphAryN, defaultGraphArySize ) ;
if ( buffer[7-1] == 0 ) goto exit;
switch ( c ) {
case 0x2B: // NormalG
buffer[4-1] = 0x02;
break;
case 0x2C: // ThickG
buffer[4-1] = 0x03;
break;
case 0x2D: // BrokenThickG
buffer[4-1] = 0x05;
break;
case 0x3F: // DotG
buffer[4-1] = 0x08;
break;
case 0xFFFFFFF5: // ThinG
buffer[4-1] = 0x12;
break;
case 0xFFFFFFC8: // G SelOn
buffer[3-1] |= 0x80;
break;
case 0xFFFFFFC9: // T SelOn
buffer[3-1] |= 0x20;
break;
case 0xFFFFFFD8: // G SelOff
buffer[3-1] &= 0x7F;
break;
case 0xFFFFFFD9: // T SelOff
buffer[3-1] &= 0xDF;
break;
}
exit:
dspflag=0;
}
//----------------------------------------------------------------------------------------------
int GObjectAlign4d( unsigned int n ){ return n; } // align +4byte
int GObjectAlign4e( unsigned int n ){ return n; } // align +4byte
@ -2519,24 +2576,17 @@ int GObjectAlign4l( unsigned int n ){ return n; } // align +4byte
int GObjectAlign4m( unsigned int n ){ return n; } // align +4byte
int GObjectAlign4n( unsigned int n ){ return n; } // align +4byte
int GObjectAlign4o( unsigned int n ){ return n; } // align +4byte
int GObjectAlign4p( unsigned int n ){ return n; } // align +4byte
int GObjectAlign4q( unsigned int n ){ return n; } // align +4byte
int GObjectAlign4r( unsigned int n ){ return n; } // align +4byte
int GObjectAlign4s( unsigned int n ){ return n; } // align +4byte
int GObjectAlign4t( unsigned int n ){ return n; } // align +4byte
int GObjectAlign4u( unsigned int n ){ return n; } // align +4byte
int GObjectAlign4v( unsigned int n ){ return n; } // align +4byte
int GObjectAlign4w( unsigned int n ){ return n; } // align +4byte
int GObjectAlign4x( unsigned int n ){ return n; } // align +4byte
int GObjectAlign4y( unsigned int n ){ return n; } // align +4byte
int GObjectAlign4z( unsigned int n ){ return n; } // align +4byte
int GObjectAlign4A( unsigned int n ){ return n; } // align +4byte
int GObjectAlign4B( unsigned int n ){ return n; } // align +4byte
int GObjectAlign4C( unsigned int n ){ return n; } // align +4byte
int GObjectAlign4D( unsigned int n ){ return n; } // align +4byte
//int GObjectAlign4E( unsigned int n ){ return n; } // align +4byte
//int GObjectAlign4F( unsigned int n ){ return n; } // align +4byte
//int GObjectAlign4G( unsigned int n ){ return n; } // align +4byte
//int GObjectAlign4H( unsigned int n ){ return n; } // align +4byte
//int GObjectAlign4I( unsigned int n ){ return n; } // align +4byte
//int GObjectAlign4p( unsigned int n ){ return n; } // align +4byte
//int GObjectAlign4q( unsigned int n ){ return n; } // align +4byte
//int GObjectAlign4r( unsigned int n ){ return n; } // align +4byte
//int GObjectAlign4s( unsigned int n ){ return n; } // align +4byte
//int GObjectAlign4t( unsigned int n ){ return n; } // align +4byte
//int GObjectAlign4u( unsigned int n ){ return n; } // align +4byte
//int GObjectAlign4v( unsigned int n ){ return n; } // align +4byte
//int GObjectAlign4w( unsigned int n ){ return n; } // align +4byte
//int GObjectAlign4x( unsigned int n ){ return n; } // align +4byte
//int GObjectAlign4y( unsigned int n ){ return n; } // align +4byte
//int GObjectAlign4z( unsigned int n ){ return n; } // align +4byte
//int GObjectAlign4A( unsigned int n ){ return n; } // align +4byte
//int GObjectAlign4B( unsigned int n ){ return n; } // align +4byte
//----------------------------------------------------------------------------------------------

View File

@ -157,16 +157,6 @@ void HiddenRAM_MatAryStore(){ // MatAry ptr -> HiddenRAM
iptr2[0]=(int)HiddenRAM_MatTopPtr;
}
}
void HiddenRAM_MatAryClear(){ // MatAry ptr clear
int *iptr1=(int*)(HIDDENRAM_Top+12);
int *iptr2=(int*)(HiddenRAM_End+12);
if ( IsHiddenRAM ) {
memset( (char *)HIDDENRAM_Top, 0, sizeof(MatAryCheckStr) );
memset( HiddenRAM_End, 0, sizeof(MatAryCheckStr) );
}
FileListUpdate= 1;
HiddenRAM_MatAryInit();
}
int HiddenRAM_MatAryRestore(){ // HiddenRAM -> MatAry ptr
char buffer[10];
int *iptr1=(int*)(HIDDENRAM_Top+12);
@ -494,14 +484,14 @@ void ProgressBar(int current, int max) {
//----------------------------------------------------------------------------------------------
//----------------------------------------------------------------------------------------------
int IObjectAlign4a( unsigned int n ){ return n; } // align +4byte
int IObjectAlign4b( unsigned int n ){ return n; } // align +4byte
int IObjectAlign4c( unsigned int n ){ return n; } // align +4byte
int IObjectAlign4d( unsigned int n ){ return n; } // align +4byte
int IObjectAlign4e( unsigned int n ){ return n; } // align +4byte
int IObjectAlign4f( unsigned int n ){ return n; } // align +4byte
int IObjectAlign4g( unsigned int n ){ return n; } // align +4byte
int IObjectAlign4h( unsigned int n ){ return n; } // align +4byte
int IObjectAlign4i( unsigned int n ){ return n; } // align +4byte
//int IObjectAlign4a( unsigned int n ){ return n; } // align +4byte
//int IObjectAlign4b( unsigned int n ){ return n; } // align +4byte
//int IObjectAlign4c( unsigned int n ){ return n; } // align +4byte
//int IObjectAlign4d( unsigned int n ){ return n; } // align +4byte
//int IObjectAlign4e( unsigned int n ){ return n; } // align +4byte
//int IObjectAlign4f( unsigned int n ){ return n; } // align +4byte
//int IObjectAlign4g( unsigned int n ){ return n; } // align +4byte
//int IObjectAlign4h( unsigned int n ){ return n; } // align +4byte
//int IObjectAlign4i( unsigned int n ){ return n; } // align +4byte
//----------------------------------------------------------------------------------------------

View File

@ -42,7 +42,6 @@ void HiddenRAM_freeProg( void *ptr );
void HiddenRAM_freeMat( int reg );
void HiddenRAM_MatAryInit(); // HiddenRAM Initialize
void HiddenRAM_MatAryStore(); // MatAry ptr -> HiddenRAM
void HiddenRAM_MatAryClear(); // MatAry ptr clear
int HiddenRAM_MatAryRestore(); // HiddenRAM -> MatAry ptr 1:ok
void HiddenRAM_ExtFontAryInit() ;

View File

@ -23,6 +23,10 @@ const unsigned char FKEYICON_0669[]={0xFF,0xFF,0xE0, 0x9F,0xFB,0xE0, 0xA9,0x7A,0
const unsigned char FKEYICON_0574[]={0xFF,0xFF,0xE0, 0xDF,0x37,0x60, 0xDE,0xD2,0x60, 0xDE,0xF5,0x60, 0xDE,0xF7,0x60, 0xDE,0xF7,0x60, 0xC3,0x37,0x60, 0xFF,0xFF,0xE0}; // LCM
const unsigned char FKEYICON_0883[]={0xFF,0xFF,0xE0, 0xE3,0x31,0xE0, 0xDE,0xD6,0xE0, 0xDE,0xF6,0xE0, 0xD2,0xF6,0xE0, 0xDA,0xD6,0xE0, 0xE3,0x31,0xE0, 0xFF,0xFF,0xE0}; // GCD
const unsigned char FKEYICON_0884[]={0xFF,0xFF,0xE0, 0xDD,0x98,0xE0, 0xC9,0x6B,0x60, 0xD5,0x6B,0x60, 0xD5,0x6B,0x60, 0xDD,0x6B,0x60, 0xDD,0x98,0xE0, 0xFF,0xFF,0xE0}; // MOD
const unsigned char FKEYICON_1042[]={0xFF,0xFF,0xE0, 0xC3,0xFE,0x60, 0xDD,0x9D,0xE0, 0xDD,0x68,0x60, 0xC3,0x0D,0xE0, 0xDB,0x7D,0xE0, 0xDD,0x9D,0xE0, 0xFF,0xFF,0xE0}; // Ref
const unsigned char FKEYICON_1043[]={0xFF,0xFF,0xE0, 0x8F,0xFF,0xA0, 0xB5,0x67,0x60, 0xB4,0xDA,0x20, 0x8D,0xC3,0x60, 0xAD,0xDF,0x60, 0xB5,0xE7,0x60, 0xFF,0xFF,0xE0}; // Rref
const unsigned char FKEYICON_1088[]={0xFF,0xFF,0xE0, 0x80,0x00,0x00, 0x84,0xC4,0x00, 0x8A,0xAA,0x00, 0x8E,0xC8,0x00, 0x8A,0xAA,0x00, 0x8A,0xC4,0x00, 0x80,0x00,0x00}; // ABC
const unsigned char FKEYICON_1107[]={0xFF,0xFF,0xE0, 0xB7,0xF6,0xA0, 0xB5,0x62,0xA0, 0xB4,0xB6,0xA0, 0xB5,0xB6,0xA0, 0xB5,0xB6,0xA0, 0xCD,0xBB,0x60, 0xFF,0xFF,0xE0}; // UntV
@ -57,6 +61,8 @@ void Fkey_Icon(int n, int IconNo){
case 669: pBitmap=FKEYICON_0669;break; // Rmdr
case 883: pBitmap=FKEYICON_0883;break; // GCD
case 884: pBitmap=FKEYICON_0884;break; // MOD
case 1042: pBitmap=FKEYICON_1042;break; // Ref
case 1043: pBitmap=FKEYICON_1043;break; // Pref
case 1088: pBitmap=FKEYICON_1088;break; // ABC
case 1107: pBitmap=FKEYICON_1107;break; // UntV
case 1108: pBitmap=FKEYICON_1108;break; // Norm