Archived
1
0

implement usage and shutdown

This commit is contained in:
Erick
2022-01-30 00:42:48 +01:00
parent 3c51bd9b66
commit 1a9662fdc3
3 changed files with 27 additions and 15 deletions
+1
View File
@@ -53,3 +53,4 @@ dkms.conf
#folders #folders
.git/ .git/
.vscode/
+1 -1
View File
@@ -1,6 +1,6 @@
MIT License MIT License
Copyright (c) 2022 Erick Copyright (c) 2022, Erick Ahmed
Permission is hereby granted, free of charge, to any person obtaining a copy Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal of this software and associated documentation files (the "Software"), to deal
+21 -10
View File
@@ -1,10 +1,10 @@
/* /*
TVM is a virtual machine for LC-3 based operating systems and it is used for educational purposes. TVM is a virtual machine for LC-3 based operating systems and it is used for educational purposes.
Open-source software under MIT License Copyright (c) under MIT license
Written by Erick Ahmed, 2022 Written by Erick Ahmed, 2022
*/ */
#define IS_UNIX #define __UNIX
/* universal libraries */ /* universal libraries */
#include <stdio.h> #include <stdio.h>
@@ -14,16 +14,16 @@
#include <signal.h> #include <signal.h>
/* unix only libraries */ /* unix only libraries */
#ifdef IS_UNIX #ifdef __UNIX
#include <unistd.h> #include <unistd.h>
#include <fcntl.h> #include <fcntl.h>
#endif
/* sys libraries */ /* sys libraries */
#include <sys/time.h> #include <sys/time.h>
#include <sys/types.h> #include <sys/types.h>
#include <sys/termios.h> #include <termios.h>
#include <sys/mman.h> #include <mman.h>
#endif
#define TRUE 1 #define TRUE 1
#define FALSE 0 #define FALSE 0
@@ -96,6 +96,19 @@ enum flags {
int main(int argc, const char* argv[]) { int main(int argc, const char* argv[]) {
if(argc < 2) {
printf("usage: [image-file1] ...\n");
exit(2);
}
for(int i = 1; i < argc; i++) {
printf("failed to load image: %s\n", argv[i]);
exit(1);
}
signal(SIGINT, handle_interrupt);
disable_input_buffering();
reg[RG_COND] = FL_ZRO; reg[RG_COND] = FL_ZRO;
reg[RG_PC] = 0x3000; //0x3000 is default load address reg[RG_PC] = 0x3000; //0x3000 is default load address
@@ -152,9 +165,7 @@ int main(int argc, const char* argv[]) {
default: default:
{BAD_OPCODE} {BAD_OPCODE}
break; break;
};
} }
} }
restore_input_buffering();
}