Updated FlagTest program.
Updated assembler to only uppercase op lines (exclude memory section)
This commit is contained in:
@@ -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)
|
||||
|
||||
@@ -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"
|
||||
0x100 "Enabled: "
|
||||
0x110 "Available: "
|
||||
0x120 "Read Block: "
|
||||
0x130 "Read Available: "
|
||||
0x141 "Yes"
|
||||
0x150 "No"
|
||||
0x160 "Flag CONSTS:"
|
||||
Reference in New Issue
Block a user