Rewrite GetInt syscall

This commit is contained in:
Yorick Barbanneau 2021-10-15 13:46:19 +02:00
parent 5cccda4af3
commit 3609600063
4 changed files with 8 additions and 8 deletions

View file

@ -70,13 +70,11 @@ void ConsoleDriver::PutInt(int n)
delete [] buffer; delete [] buffer;
} }
int ConsoleDriver::GetInt() void ConsoleDriver::GetInt(int * n)
{ {
int n;
char *buffer = new char[MAX_STRING_SIZE]; char *buffer = new char[MAX_STRING_SIZE];
GetString(buffer,MAX_STRING_SIZE); GetString(buffer,MAX_STRING_SIZE);
sscanf(buffer, "%d", &n); sscanf(buffer, "%d", n);
delete [] buffer; delete [] buffer;
return n;
} }
#endif // CHANGED #endif // CHANGED

View file

@ -19,7 +19,7 @@ class ConsoleDriver:dontcopythis {
void PutString(const char *s); // Behaves like fputs(3S) void PutString(const char *s); // Behaves like fputs(3S)
void GetString(char *s, int n); // Behaves like fgets(3S) void GetString(char *s, int n); // Behaves like fgets(3S)
void PutInt(int n); void PutInt(int n);
int GetInt(); void GetInt(int * n);
private: private:
Console *console; Console *console;
}; };

View file

@ -190,9 +190,11 @@ ExceptionHandler (ExceptionType which)
case SC_GetInt: case SC_GetInt:
{ {
DEBUG('s', "GetInt\n"); DEBUG('s', "GetInt\n");
int n = consoledriver->GetInt(); int n;
int addr = machine->ReadRegister(4);
consoledriver->GetInt(&n);
DEBUG('s', "Number entered: %d\n", n); DEBUG('s', "Number entered: %d\n", n);
machine->WriteRegister(2,n); machine->WriteMem(addr,sizeof(n),n);
break; break;
} }
#endif #endif

View file

@ -143,7 +143,7 @@ void PutString (char *s);
char GetChar(); char GetChar();
void GetString(char *s, int n ); void GetString(char *s, int n );
void PutInt(int n); void PutInt(int n);
int GetInt(); void GetInt( int * n);
#endif // CHANGED #endif // CHANGED