home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Frozen Fish 1: Amiga
/
FrozenFish-Apr94.iso
/
bbs
/
alib
/
d1xx
/
d130
/
hp.lha
/
Hp
/
hp_modes.include
< prev
next >
Wrap
Text File
|
1988-03-13
|
5KB
|
178 lines
/*-------------------------------------------*/
/* */
/* Filename: hp_modes.include */
/* */
/* Contains C source code for routines */
/* CheckModes, SetAngleMode, SetBase */
/* and SetValidKeys, which are used by */
/* the routine hp.c */
/* */
/*-------------------------------------------*/
CheckModes()
{
mode_changed = FALSE;
if ( (inkey >= 19) && (inkey <= 24) ) {
if ( inkey == 19 ) SetBase( BINARY );
if ( inkey == 20 ) SetBase( OCTAL );
if ( inkey == 21 ) SetBase( DECIMAL );
if ( inkey == 22 ) SetBase( HEX );
if ( inkey == 23 ) SetBase( FLOAT );
if ( inkey == 24 ) SetBase( COMPLEX );
SetValidKeys(); }
if ( (inkey >= 25) && (inkey <= 27) ) {
if ( inkey == 25 ) SetAngleMode( DEGREES );
if ( inkey == 26 ) SetAngleMode( RADIANS );
if ( inkey == 27 ) SetAngleMode( GRADIANS );
mode_changed = TRUE; }
}
/*--------------------------------------------------------*/
SetAngleMode( a )
int a;
{ int k1color, k2color, k3color;
angmode = a;
k1color = 2;
k2color = 2;
k3color = 2;
if ( a == DEGREES ) { k1color = 3;
angfac = PI / 180.0; }
if ( a == RADIANS ) { k2color = 3;
angfac = 1.0; }
if ( a == GRADIANS ) { k3color = 3;
angfac = PI / 200.0; }
ymin = 107;
xmin = 46;
SetAPen( rp, k1color );
DrawKey();
xmin = 102;
SetAPen( rp, k2color );
DrawKey();
xmin = 158;
SetAPen( rp, k3color );
DrawKey();
SetDrMd( rp, JAM1 );
Move( rp, STARTX, 114 );
SetAPen( rp, TAN );
Text( rp, "deg rad grd", 17 );
Move( rp, STARTX, 114 );
SetAPen( rp, BLACK );
if ( a == DEGREES ) Text( rp, "deg ", 17);
if ( a == RADIANS ) Text( rp, " rad ", 17);
if ( a == GRADIANS ) Text( rp, " grd", 17);
SetDrMd( rp, JAM2 );
}
/*-------------------------------------------------------------------*/
SetBase( b )
int b;
{ int oldbase;
if ( b == base ) return(0);
mode_changed = TRUE;
ymin = 90;
xmin = x_field[ base ] - 6;
SetAPen( rp, BLACK );
DrawKey();
Move( rp, x_field[ base ], 97 );
SetDrMd( rp, JAM1 );
SetAPen( rp, TAN );
Text( rp, x_text[ base ], 3 );
/* If we've switched to or from integer mode, clear both stacks */
if ( ((base-2)*(b-2)) < 0 ) {
entry_in_progress = FALSE;
x = 0.0;
y = 0.0;
z = 0.0;
t = 0.0;
ix = 0;
iy = 0;
iz = 0;
it = 0; }
oldbase = base;
base = b;
xmin = x_field[ base ] - 6;
SetAPen( rp, YELLOW );
DrawKey();
Move( rp, x_field[ base ], 97 );
SetAPen( rp, BLACK );
Text( rp, x_text[ base ], 3 );
SetDrMd( rp, JAM2 );
/* Between float and complex, no need to redraw the display */
if ( (oldbase < 2) && (base < 2) ) return(0);
/* Erases display */
DrawDisplay();
base = oldbase;
if ( (base > 1) && (b > 1) ) {
if ( entry_in_progress ) {
entry_in_progress = FALSE;
PushX(); } }
base = b;
if ( base < BINARY )
DisplayFloatXY();
else
DisplayIntXY();
}
/*--------------------------------------------------------*/
SetValidKeys()
{ int i;
for( i = 1; i <= 12; i++ ) key_valid[i] = TRUE;
for( i = 13; i <= 18; i++ ) key_valid[i] = FALSE;
for( i = 28; i <= 45; i++ ) key_valid[i] = TRUE;
key_valid[50] = TRUE;
key_valid[54] = TRUE;
if ( base < 2 ) return(0);
for( i = 13; i <= 18; i++ ) key_valid[i] = TRUE;
key_valid[28] = FALSE;
key_valid[29] = FALSE;
key_valid[30] = FALSE;
key_valid[33] = FALSE;
key_valid[34] = FALSE;
key_valid[35] = FALSE;
key_valid[36] = FALSE;
key_valid[43] = FALSE;
key_valid[44] = FALSE;
key_valid[45] = FALSE;
key_valid[50] = FALSE;
key_valid[54] = FALSE;
if ( base < 16 ) {
for( i = 13; i <= 18; i++) key_valid[i] = FALSE; }
if ( base < 10 ) {
key_valid[2] = FALSE;
key_valid[3] = FALSE; }
if (base < 8 ) {
key_valid[ 1] = FALSE;
key_valid[ 5] = FALSE;
key_valid[ 6] = FALSE;
key_valid[ 7] = FALSE;
key_valid[10] = FALSE;
key_valid[11] = FALSE; }
}
/*--------------------------------------------------------*/