Browse Source

Allow setting of individual bytes of memory or stack for OCD levels of control

Jeremiah Orians 3 years ago
parent
commit
177915f3a3
2 changed files with 23 additions and 7 deletions
  1. 3 3
      makefile
  2. 20 4
      vm.c

+ 3 - 3
makefile

@@ -81,19 +81,19 @@ CAT: M0 stage1_assembler-2 vm High_level_prototypes/defs stage1/CAT.s | roms
 
 lisp: M0-compact stage1_assembler-2 vm High_level_prototypes/defs stage2/lisp.s | roms
 	cat High_level_prototypes/defs stage2/lisp.s > lisp_TEMP
-	./bin/vm --rom roms/M0-compact --tape_01 lisp_TEMP --tape_02 lisp_TEMP2 --memory 8K
+	./bin/vm --rom roms/M0-compact --tape_01 lisp_TEMP --tape_02 lisp_TEMP2 --memory 9K
 	./bin/vm --rom roms/stage1_assembler-2 --tape_01 lisp_TEMP2 --tape_02 roms/lisp --memory 48K
 	rm lisp_TEMP lisp_TEMP2
 
 cc_x86: M0-compact stage1_assembler-2 vm High_level_prototypes/defs stage2/cc_x86.s | roms
 	cat High_level_prototypes/defs stage2/cc_x86.s > cc_TEMP
-	./bin/vm --rom roms/M0-compact --tape_01 cc_TEMP --tape_02 cc_TEMP2 --memory 8K
+	./bin/vm --rom roms/M0-compact --tape_01 cc_TEMP --tape_02 cc_TEMP2 --memory 9K
 	./bin/vm --rom roms/stage1_assembler-2 --tape_01 cc_TEMP2 --tape_02 roms/cc_x86 --memory 32K
 	rm cc_TEMP cc_TEMP2
 
 forth: M0-compact stage1_assembler-2 vm High_level_prototypes/defs stage2/forth.s | roms
 	cat High_level_prototypes/defs stage2/forth.s > forth_TEMP
-	./bin/vm --rom roms/M0-compact --tape_01 forth_TEMP --tape_02 forth_TEMP2 --memory 8K
+	./bin/vm --rom roms/M0-compact --tape_01 forth_TEMP --tape_02 forth_TEMP2 --memory 9K
 	./bin/vm --rom roms/stage1_assembler-2 --tape_01 forth_TEMP2 --tape_02 roms/forth --memory 12K
 	rm forth_TEMP forth_TEMP2
 

+ 20 - 4
vm.c

@@ -124,20 +124,28 @@ int main(int argc, char **argv)
 			length = strlen(argv[i + 1]) - 1;
 			c = argv[i+1];
 			class = c[length];
-			c[length] = 0;
-			Memory_Size = atoi(c);
 			if('K' == class)
 			{
+				c[length] = 0;
+				Memory_Size = atoi(c);
 				Memory_Size = Memory_Size * 1024;
 			}
 			else if('M' == class)
 			{
+				c[length] = 0;
+				Memory_Size = atoi(c);
 				Memory_Size = Memory_Size * 1024 * 1024;
 			}
 			else if('G' == class)
 			{
+				c[length] = 0;
+				Memory_Size = atoi(c);
 				Memory_Size = Memory_Size * 1024 * 1024 * 1024;
 			}
+			else
+			{
+				Memory_Size = atoi(c);
+			}
 			i = i + 2;
 		}
 		else if(match(argv[i], "-s") || match(argv[i], "--stack"))
@@ -145,20 +153,28 @@ int main(int argc, char **argv)
 			length = strlen(argv[i + 1]) - 1;
 			c = argv[i+1];
 			class = c[length];
-			c[length] = 0;
-			Stack_Size = atoi(c);
 			if('K' == class)
 			{
+				c[length] = 0;
+				Stack_Size = atoi(c);
 				Stack_Size = Stack_Size * 1024;
 			}
 			else if('M' == class)
 			{
+				c[length] = 0;
+				Stack_Size = atoi(c);
 				Stack_Size = Stack_Size * 1024 * 1024;
 			}
 			else if('G' == class)
 			{
+				c[length] = 0;
+				Stack_Size = atoi(c);
 				Stack_Size = Stack_Size * 1024 * 1024 * 1024;
 			}
+			else
+			{
+				Stack_Size = atoi(c);
+			}
 			i = i + 2;
 		}
 		else if(match(argv[i], "-P") || match(argv[i], "--POSIX-MODE"))