Updated FlagTest program.

Updated assembler to only uppercase op lines (exclude memory section)
This commit is contained in:
2017-12-23 17:38:56 +00:00
parent 1efb9d69b5
commit bd3a4d5491
2 changed files with 30 additions and 24 deletions

View File

@@ -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<string, ushort> markerRefs = new Dictionary<string, ushort>();
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)

View File

@@ -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"
0x100 "Enabled: "
0x110 "Available: "
0x120 "Read Block: "
0x130 "Read Available: "
0x141 "Yes"
0x150 "No"
0x160 "Flag CONSTS:"