From bd3a4d5491e9c43f54308b46b58aabaa41996379 Mon Sep 17 00:00:00 2001 From: Sam Stevens Date: Sat, 23 Dec 2017 17:38:56 +0000 Subject: [PATCH] Updated FlagTest program. Updated assembler to only uppercase op lines (exclude memory section) --- SVM/Assembler.cs | 8 ++++---- SVM/PGM/FlagTest.txt | 46 +++++++++++++++++++++++++------------------- 2 files changed, 30 insertions(+), 24 deletions(-) diff --git a/SVM/Assembler.cs b/SVM/Assembler.cs index 9a5c9be..2e3755c 100644 --- a/SVM/Assembler.cs +++ b/SVM/Assembler.cs @@ -22,7 +22,7 @@ namespace SVM var lines = (from l in program.Replace("\t", " ").Split(Environment.NewLine) where !l.StartsWith('#') && !String.IsNullOrWhiteSpace(l) - select l.Split('#').First().Trim().ToUpper()).ToArray(); + select l.Split('#').First().Trim()).ToArray(); int i = 0; ushort mempos = 0; @@ -38,7 +38,7 @@ namespace SVM for (; i < lines.Length; i++) { line = lines[i]; - if (line == "MEMORY") + if (line.ToUpper() == "MEMORY") { i++; break; @@ -72,7 +72,7 @@ namespace SVM } parts = line.Split(" ", 2, StringSplitOptions.RemoveEmptyEntries); - var op = parts[0]; + var op = parts[0].ToUpper(); if (op == "ORIGIN") { Debug.Assert(parts.Length == 2); @@ -103,7 +103,7 @@ namespace SVM var instr = instructions.First(x => x.ASM == op); Dictionary markerRefs = new Dictionary(); - var bytecode = instr.Encode(parts.Length > 1 ? parts[1] : string.Empty, markerRefs); + var bytecode = instr.Encode(parts.Length > 1 ? parts[1].ToUpper() : string.Empty, markerRefs); if (markerRefs != null && markerRefs.Count > 0) { foreach (var mRef in markerRefs) diff --git a/SVM/PGM/FlagTest.txt b/SVM/PGM/FlagTest.txt index 5710c71..7bb7354 100644 --- a/SVM/PGM/FlagTest.txt +++ b/SVM/PGM/FlagTest.txt @@ -1,29 +1,34 @@ -ALIAS F_CONSTS 0xFF00 -ALIAS STR_ENABLED 0x100 -ALIAS STR_AVAILABLE 0x110 -ALIAS STR_READBLOCK 0x120 -ALIAS STR_READAVAILABLE 0x130 -ALIAS STR_YES 0x140 -ALIAS STR_NO 0x150 +ALIAS F_CONSTS M0xFF00 +ALIAS STR_ENABLED I0x100 +ALIAS STR_AVAILABLE I0x110 +ALIAS STR_READBLOCK I0x120 +ALIAS STR_READAVAILABLE I0x130 +ALIAS STR_YES I0x141 +ALIAS STR_NO I0x150 +ALIAS STR_TITLE I0x160 ORIGIN 0 - LOAD D M F_CONSTS # Read the flag into reg D + LOAD A STR_TITLE + CALL :WSTR + CALL :WNL - LOAD A I STR_ENABLED + LOAD D F_CONSTS # Read the flag into reg D + + LOAD A STR_ENABLED CALL :WSTR JBS D 2 :ENYES # Check for enabled - LOAD A I STR_NO # Set str to NO if enabled bit not set + LOAD A STR_NO # Set str to NO if enabled bit not set JMP :ENWR -:ENYES LOAD A I STR_YES +:ENYES LOAD A STR_YES :ENWR CALL :WSTR CALL :WNL - LOAD A I STR_READAVAILABLE + LOAD A STR_READAVAILABLE CALL :WSTR JBS D 4 :RAYES - LOAD A I STR_NO + LOAD A STR_NO JMP :RAWR -:RAYES LOAD A I STR_YES +:RAYES LOAD A STR_YES :RAWR CALL :WSTR CALL :WNL @@ -44,9 +49,10 @@ ORIGIN 0 RET MEMORY -0x100 "Enabled " -0x110 "Available " -0x120 "ReadBlock " -0x130 "ReadAvailable " -0x140 "Yes" -0x150 "No" \ No newline at end of file +0x100 "Enabled: " +0x110 "Available: " +0x120 "Read Block: " +0x130 "Read Available: " +0x141 "Yes" +0x150 "No" +0x160 "Flag CONSTS:" \ No newline at end of file