Anyone programming his TI calc in c here`s a fine input routine to enter numbers.Only problem is,that at the end, function atof will not convert the string properly when compiled with TIGCC IDE.
The reason is header #define MIN_AMS 100.
It works fine without it!
took me a week to figure that out!
Code:
#define USE_TI89 // Compile for TI-89
#define USE_TI92PLUS // Compile for TI-92 Plus
#define USE_V200 // Compile for V200
#define MIN_AMS 100 // Compile for AMS 1.00 or higher
#define SAVE_SCREEN // Save/Restore LCD Contents
#include <tigcclib.h> // Include All Header Files
/**************Glob_Var*************************/
float Input; // converted enters tring -any input
/ ****************SubRoutines***********************
*********/
void InputStr(char *buffer, unsigned short maxlen);
/ ****************VoidInputstring*******************
*********/
void InputStr(char *buffer, unsigned short maxlen)
{
SCR_STATE ss1;
signed short key;
unsigned short i = 0;
buffer[0] = 0;
SaveScrState (&ss1);
do{
MoveTo (ss1.CurX, ss1.CurY);
SaveScrState (&ss1);
if ( i==3 ) {printf ("%s ", buffer);}
else
printf ("%s_ ", buffer);
key = ngetchx ();
if (key >= '0' && key <= '9' && i < maxlen)
buffer[i++] = key;
else if (key == KEY_BACKSPACE ) i--;
else if (key==173 && i==0) buffer[i++] = key;//(-)
else if (key==46)buffer[i++] = key; //comma
buffer[i] = 0;
} while (key != KEY_ENTER);
Input = atof(buffer);
}
void _main(void)
{
int key;
char str[7];
do
{
clrscr ();
InputStr (str,7);
printf("\nconverted float=%3.3f",Input);
key=ngetchx();
}while (key!=KEY_ESC);
}
code tags added by Hammer