Browse Source

Allow setting of TTY input and output files

Jeremiah Orians 3 years ago
parent
commit
086c5f0ed2
4 changed files with 22 additions and 3 deletions
  1. 14 0
      vm.c
  2. 2 0
      vm.h
  3. 3 0
      vm_globals.c
  4. 3 3
      vm_instructions.c

+ 14 - 0
vm.c

@@ -74,6 +74,8 @@ int main(int argc, char **argv)
 
 	tape_01_name = "tape_01";
 	tape_02_name = "tape_02";
+	TTY_out = stdout;
+	TTY_in = stdin;
 	char* rom_name = NULL;
 	char class;
 
@@ -104,6 +106,18 @@ int main(int argc, char **argv)
 			tape_02_name = argv[i + 1];
 			i = i + 2;
 		}
+		else if(match(argv[i], "--tty-in"))
+		{
+			TTY_in = fopen(argv[i+1], "r");
+			require(NULL != TTY_in, "unable to open file for --tty-in\n");
+			i = i + 2;
+		}
+		else if(match(argv[i], "--tty-out"))
+		{
+			TTY_out = fopen(argv[i+1], "w");
+			require(NULL != TTY_out, "unable to open file for --tty-out\n");
+			i = i + 2;
+		}
 		else if(match(argv[i], "-m") || match(argv[i], "--memory"))
 		{
 			length = strlen(argv[i + 1]) - 1;

+ 2 - 0
vm.h

@@ -245,6 +245,8 @@ extern void outside_of_world(struct lilith* vm, unsigned_vm_register place, char
 /* Allow tape names to be effectively changed */
 extern char* tape_01_name;
 extern char* tape_02_name;
+extern FILE* TTY_out;
+extern FILE* TTY_in;
 
 /* Enable POSIX Mode */
 extern bool POSIX_MODE;

+ 3 - 0
vm_globals.c

@@ -16,12 +16,15 @@
  */
 
 #include "vm_types.h"
+#include <stdio.h>
 /* Prototypes for functions in vm_decode.c*/
 struct lilith* create_vm(size_t size);
 
 /* Allow tape names to be effectively changed */
 char* tape_01_name;
 char* tape_02_name;
+FILE* TTY_out;
+FILE* TTY_in;
 
 /* Enable POSIX Mode */
 bool POSIX_MODE;

+ 3 - 3
vm_instructions.c

@@ -369,7 +369,7 @@ void vm_FGETC(struct lilith* vm)
 			byte = tty_getchar();
 			#endif
 			#ifndef tty_lib
-			byte = fgetc(stdin);
+			byte = fgetc(TTY_in);
 			#endif
 		}
 
@@ -401,9 +401,9 @@ void vm_FPUTC(struct lilith* vm)
 	{
 		if (0x00000000 == vm->reg[1])
 		{
-			fputc(byte, stdout);
+			fputc(byte, TTY_out);
 			#ifdef tty_lib
-			fflush(stdout);
+			fflush(TTY_out);
 			#endif
 		}