Exemple #1
0
        public void Call_TwoConditional_LabeledAddress()
        {
            var lineParser  = new Z80AssemblyParsing.Parsing.Z80LineParser();
            var z80Command1 = lineParser.ParseLine("    call nz,myRout");
            var z80Command2 = lineParser.ParseLine("    call c,yourRout");
            var translator  = new TMS9900Translator(
                new List <(Z80SourceRegister, WorkspaceRegister)>(),
                new List <MemoryMapElement>(),
                new LabelHighlighter()
                );
            var tmsCommand1 = translator.Translate(z80Command1).ToList();
            var tmsCommand2 = translator.Translate(z80Command2).ToList();

            var expected1 = new List <string>()
            {
                "       JEQ  JMP001",
                "       BL   @myRout",
                "JMP001",
            };
            var actual1 = tmsCommand1.Select(tc => tc.CommandText).ToList();

            CollectionAssert.AreEqual(expected1, actual1);
            var expected2 = new List <string>()
            {
                "       JNC  JMP002",
                "       BL   @yourRout",
                "JMP002",
            };
            var actual2 = tmsCommand2.Select(tc => tc.CommandText).ToList();

            CollectionAssert.AreEqual(expected2, actual2);
        }
        public void ArithmeticTranslation_Sub_Indirect()
        {
            var z80SourceCommand = "    sub  (hl)";
            var z80Command       = new Z80AssemblyParsing.Parsing.Z80LineParser().ParseLine(z80SourceCommand);
            var translator       = new TMS9900Translator(
                new List <(Z80SourceRegister, WorkspaceRegister)>()
            {
                (Z80SourceRegister.A, WorkspaceRegister.R1),
                (Z80SourceRegister.H, WorkspaceRegister.R2),
                (Z80SourceRegister.L, WorkspaceRegister.R3),
            },
                new List <MemoryMapElement>(),
                new LabelHighlighter()
                );
            var tmsCommand = translator.Translate(z80Command).ToList();

            var expected = new List <string>()
            {
                "       MOVB R3,*R15",
                "       SB   *R2,R1"
            };
            var actual = tmsCommand.Select(tc => tc.CommandText).ToList();

            CollectionAssert.AreEqual(expected, actual);
        }
Exemple #3
0
        public void Return_Conditional_TwoCommands()
        {
            var parser      = new Z80AssemblyParsing.Parsing.Z80LineParser();
            var z80Command1 = parser.ParseLine("    ret  z");
            var z80Command2 = parser.ParseLine("    ret  nc");
            var translator  = new TMS9900Translator(
                new List <(Z80SourceRegister, WorkspaceRegister)>()
            {
                (Z80SourceRegister.SP, WorkspaceRegister.R10)
            },
                new List <MemoryMapElement>(),
                new LabelHighlighter()
                );
            var tmsCommand1 = translator.Translate(z80Command1).ToList();
            var tmsCommand2 = translator.Translate(z80Command2).ToList();

            var expected = new List <string>()
            {
                "       JNE  RT0001",
                "       MOV  *R10+,R11",
                "       RT",
                "RT0001",
                "       JOC  RT0002",
                "       MOV  *R10+,R11",
                "       RT",
                "RT0002"
            };
            var actual = tmsCommand1.Union(tmsCommand2).Select(tc => tc.CommandText).ToList();

            CollectionAssert.AreEqual(expected, actual);
        }
Exemple #4
0
        public void JumpTests_Relative_Conditional_Carry_LabeledAddress()
        {
            var z80SourceCommand = "       jr   C,btnprs";
            var z80Command       = new Z80AssemblyParsing.Parsing.Z80LineParser().ParseLine(z80SourceCommand);
            var translator       = new TMS9900Translator(
                new List <(Z80SourceRegister, WorkspaceRegister)>(),
                new List <MemoryMapElement>(),
                new LabelHighlighter()
                );
            var tmsCommand = translator.Translate(z80Command).ToList();

            Assert.AreEqual(1, tmsCommand.Count);
            Assert.AreEqual("       JOC  btnprs", tmsCommand[0].CommandText);
        }
Exemple #5
0
        public void Call_LabeledAddress()
        {
            var z80SourceCommand = "    call otherRoutine";
            var z80Command       = new Z80AssemblyParsing.Parsing.Z80LineParser().ParseLine(z80SourceCommand);
            var translator       = new TMS9900Translator(
                new List <(Z80SourceRegister, WorkspaceRegister)>(),
                new List <MemoryMapElement>(),
                new LabelHighlighter()
                );
            var tmsCommand = translator.Translate(z80Command).ToList();

            Assert.AreEqual(1, tmsCommand.Count);
            Assert.AreEqual("       BL   @otherRoutine", tmsCommand[0].CommandText);
        }
        public void TranslationLabelTests_Call_LongLabel()
        {
            var z80SourceCommand = "lbl19098: call lbl109";
            var z80Command       = new Z80AssemblyParsing.Parsing.Z80LineParser().ParseLine(z80SourceCommand);
            var translator       = new TMS9900Translator(
                new List <(Z80SourceRegister, WorkspaceRegister)>(),
                new List <MemoryMapElement>(),
                new LabelHighlighter()
                );
            var tmsCommands = translator.Translate(z80Command).ToList();

            Assert.AreEqual(1, tmsCommands.Count);
            Assert.AreEqual("lbl19098" + Environment.NewLine + "       BL   @lbl109", tmsCommands[0].CommandText);
        }
Exemple #7
0
        public void JumpTests_Relative_Conditional_Equal_Address()
        {
            var z80SourceCommand = "       jr   Z,1234h";
            var z80Command       = new Z80AssemblyParsing.Parsing.Z80LineParser().ParseLine(z80SourceCommand);
            var translator       = new TMS9900Translator(
                new List <(Z80SourceRegister, WorkspaceRegister)>(),
                new List <MemoryMapElement>(),
                new LabelHighlighter()
                );
            var tmsCommand = translator.Translate(z80Command).ToList();

            Assert.AreEqual(2, tmsCommand.Count);
            Assert.AreEqual("!cannot translate a jump command if it is to a literal address", tmsCommand[0].CommandText);
            Assert.AreEqual("!       jr   Z,1234h", tmsCommand[1].CommandText);
        }
Exemple #8
0
        public void Call_MemoryAddress()
        {
            var z80SourceCommand = "    call 48A1h";
            var z80Command       = new Z80AssemblyParsing.Parsing.Z80LineParser().ParseLine(z80SourceCommand);
            var translator       = new TMS9900Translator(
                new List <(Z80SourceRegister, WorkspaceRegister)>(),
                new List <MemoryMapElement>(),
                new LabelHighlighter()
                );
            var tmsCommand = translator.Translate(z80Command).ToList();

            Assert.AreEqual(2, tmsCommand.Count);
            Assert.AreEqual("!can only translate a call command if it is to a labeled address", tmsCommand[0].CommandText);
            Assert.AreEqual("!    call 48A1h", tmsCommand[1].CommandText);
        }
Exemple #9
0
        public void Nop_Translation()
        {
            var z80SourceCommand = "    nop";
            var z80Command       = new Z80AssemblyParsing.Parsing.Z80LineParser().ParseLine(z80SourceCommand);
            var translator       = new TMS9900Translator(
                new List <(Z80SourceRegister, WorkspaceRegister)>()
            {
            },
                new List <MemoryMapElement>(),
                new LabelHighlighter()
                );
            var tmsCommand = translator.Translate(z80Command).ToList();

            Assert.AreEqual(1, tmsCommand.Count);
            Assert.AreEqual("       NOP", tmsCommand[0].CommandText);
        }
Exemple #10
0
        public void Call_Conditional_NotZero_LabeledAddress()
        {
            var z80SourceCommand = "    call nz,myRout";
            var z80Command       = new Z80AssemblyParsing.Parsing.Z80LineParser().ParseLine(z80SourceCommand);
            var translator       = new TMS9900Translator(
                new List <(Z80SourceRegister, WorkspaceRegister)>(),
                new List <MemoryMapElement>(),
                new LabelHighlighter()
                );
            var tmsCommand = translator.Translate(z80Command).ToList();

            Assert.AreEqual(3, tmsCommand.Count);
            Assert.AreEqual("       JEQ  JMP001", tmsCommand[0].CommandText);
            Assert.AreEqual("       BL   @myRout", tmsCommand[1].CommandText);
            Assert.AreEqual("JMP001", tmsCommand[2].CommandText);
        }
Exemple #11
0
        public void JumpTests_Conditional_ParityOdd()
        {
            var z80SourceCommand = "       jp   PO,reset";
            var z80Command       = new Z80AssemblyParsing.Parsing.Z80LineParser().ParseLine(z80SourceCommand);
            var translator       = new TMS9900Translator(
                new List <(Z80SourceRegister, WorkspaceRegister)>(),
                new List <MemoryMapElement>(),
                new LabelHighlighter()
                );
            var tmsCommand = translator.Translate(z80Command).ToList();

            Assert.AreEqual(4, tmsCommand.Count);
            Assert.AreEqual("!jump translations on PO or PE condition are not automated.", tmsCommand[0].CommandText);
            Assert.AreEqual("!Z80 used a single flag for Parity and Overflow, TMS9900 used two flags.", tmsCommand[1].CommandText);
            Assert.AreEqual("!A human must decide whether to use JNO or JOP.", tmsCommand[2].CommandText);
            Assert.AreEqual("!       jp   PO,reset", tmsCommand[3].CommandText);
        }
Exemple #12
0
        public void JumpTests_Unconditional_Indirect()
        {
            var z80SourceCommand = "       jp   (IX)";
            var z80Command       = new Z80AssemblyParsing.Parsing.Z80LineParser().ParseLine(z80SourceCommand);
            var translator       = new TMS9900Translator(
                new List <(Z80SourceRegister, WorkspaceRegister)>()
            {
                (Z80SourceRegister.IX, WorkspaceRegister.R8)
            },
                new List <MemoryMapElement>(),
                new LabelHighlighter()
                );
            var tmsCommand = translator.Translate(z80Command).ToList();

            Assert.AreEqual(1, tmsCommand.Count);
            Assert.AreEqual("       B    *R8", tmsCommand[0].CommandText);
        }
Exemple #13
0
        public void Add8Bit_RegisterAndLabeledImmediate()
        {
            var z80SourceCommand = "    add  A,myNumber";
            var z80Command       = new Z80AssemblyParsing.Parsing.Z80LineParser().ParseLine(z80SourceCommand);
            var translator       = new TMS9900Translator(
                new List <(Z80SourceRegister, WorkspaceRegister)>()
            {
                (Z80SourceRegister.A, WorkspaceRegister.R1)
            },
                new List <MemoryMapElement>(),
                new LabelHighlighter()
                );
            var tmsCommand = translator.Translate(z80Command).ToList();

            Assert.AreEqual(1, tmsCommand.Count);
            Assert.AreEqual("       AI   R1,myNumber*>100", tmsCommand[0].CommandText);
        }
Exemple #14
0
        public void Logical_And_ImmediateOperand()
        {
            var z80SourceCommand = "    And  99h";
            var z80Command       = new Z80AssemblyParsing.Parsing.Z80LineParser().ParseLine(z80SourceCommand);
            var translator       = new TMS9900Translator(
                new List <(Z80SourceRegister, WorkspaceRegister)>()
            {
                (Z80SourceRegister.A, WorkspaceRegister.R7)
            },
                new List <MemoryMapElement>(),
                new LabelHighlighter()
                );
            var tmsCommand = translator.Translate(z80Command).ToList();

            Assert.AreEqual(1, tmsCommand.Count);
            Assert.AreEqual("       ANDI R7,>9900", tmsCommand[0].CommandText);
        }
        public void Load8Bit_MoveByte_FromAccumulatorToLabeledMemoryAddress()
        {
            var z80SourceCommand = "    ld   (myAddress),A";
            var z80Command       = new Z80AssemblyParsing.Parsing.Z80LineParser().ParseLine(z80SourceCommand);
            var translator       = new TMS9900Translator(
                new List <(Z80SourceRegister, WorkspaceRegister)>()
            {
                (Z80SourceRegister.A, WorkspaceRegister.R1)
            },
                new List <MemoryMapElement>(),
                new LabelHighlighter()
                );
            var tmsCommand = translator.Translate(z80Command).ToList();

            Assert.AreEqual(1, tmsCommand.Count);
            Assert.AreEqual("       MOVB R1,@myAddress", tmsCommand[0].CommandText);
        }
        public void Load16Bit_Move_MemoryAddressDestination_UnifiedRegisterPair()
        {
            var z80SourceCommand = "    ld   (89ABh),HL";
            var z80Command       = new Z80AssemblyParsing.Parsing.Z80LineParser().ParseLine(z80SourceCommand);
            var translator       = new TMS9900Translator(
                new List <(Z80SourceRegister, WorkspaceRegister)>()
            {
                (Z80SourceRegister.H, WorkspaceRegister.R6),
                (Z80SourceRegister.L, WorkspaceRegister.R6)
            },
                new List <MemoryMapElement>(),
                new LabelHighlighter()
                );
            var tmsCommand = translator.Translate(z80Command).ToList();

            Assert.AreEqual(1, tmsCommand.Count);
            Assert.AreEqual("       MOV  R6,@>89AB", tmsCommand[0].CommandText);
        }
        public void Load8Bit_LoadImmediate__OneRegisterAndImmediate_NoLowBytes()
        {
            var z80SourceCommand = "    ld   B,4Dh";
            var z80Command       = new Z80AssemblyParsing.Parsing.Z80LineParser().ParseLine(z80SourceCommand);
            var translator       = new TMS9900Translator(
                new List <(Z80SourceRegister, WorkspaceRegister)>()
            {
                (Z80SourceRegister.B, WorkspaceRegister.R2),
                (Z80SourceRegister.C, WorkspaceRegister.R3)
            },
                new List <MemoryMapElement>(),
                new LabelHighlighter()
                );
            var tmsCommand = translator.Translate(z80Command).ToList();

            Assert.AreEqual(1, tmsCommand.Count);
            Assert.AreEqual("       LI   R2,>4D00", tmsCommand[0].CommandText);
        }
        public void Load8Bit_MoveByte_TwoRegisters_LowBytes()
        {
            var z80SourceCommand = "    ld   B,C";
            var z80Command       = new Z80AssemblyParsing.Parsing.Z80LineParser().ParseLine(z80SourceCommand);
            var translator       = new TMS9900Translator(
                new List <(Z80SourceRegister, WorkspaceRegister)>()
            {
                (Z80SourceRegister.B, WorkspaceRegister.R2),
                (Z80SourceRegister.C, WorkspaceRegister.R2)
            },
                new List <MemoryMapElement>(),
                new LabelHighlighter()
                );
            var tmsCommand = translator.Translate(z80Command).ToList();

            Assert.AreEqual(1, tmsCommand.Count);
            Assert.AreEqual("       MOVB *R13,R2", tmsCommand[0].CommandText, "C is mapped to the lower byte of R2. R13 contains the address of the lower byte of R2.");
        }
        public void Load8Bit_MoveByte_MemoryAddressDestination()
        {
            var z80SourceCommand = "    ld   (89ABh),E";
            var z80Command       = new Z80AssemblyParsing.Parsing.Z80LineParser().ParseLine(z80SourceCommand);
            var translator       = new TMS9900Translator(
                new List <(Z80SourceRegister, WorkspaceRegister)>()
            {
                (Z80SourceRegister.D, WorkspaceRegister.R4),
                (Z80SourceRegister.E, WorkspaceRegister.R4)
            },
                new List <MemoryMapElement>(),
                new LabelHighlighter()
                );
            var tmsCommand = translator.Translate(z80Command).ToList();

            Assert.AreEqual(1, tmsCommand.Count);
            Assert.AreEqual("       MOVB *R14,@>89AB", tmsCommand[0].CommandText, "E is mapped to the lower byte of R4. R14 contains the address of the lower byte of R4.");
        }
        public void Decrement_Register_UnifiedPair_LowByte()
        {
            var z80SourceCommand = "    DEC  C";
            var z80Command       = new Z80AssemblyParsing.Parsing.Z80LineParser().ParseLine(z80SourceCommand);
            var translator       = new TMS9900Translator(
                new List <(Z80SourceRegister, WorkspaceRegister)>()
            {
                (Z80SourceRegister.B, WorkspaceRegister.R4),
                (Z80SourceRegister.C, WorkspaceRegister.R4)
            },
                new List <MemoryMapElement>(),
                new LabelHighlighter()
                );
            var tmsCommand = translator.Translate(z80Command).ToList();

            Assert.AreEqual(1, tmsCommand.Count);
            Assert.AreEqual("       SB   @ONE,*R13", tmsCommand[0].CommandText);
        }
        public void Load8Bit_MoveByte_MemoryAddressSource()
        {
            var z80SourceCommand = "    ld   E,(89ABh)";
            var z80Command       = new Z80AssemblyParsing.Parsing.Z80LineParser().ParseLine(z80SourceCommand);
            var translator       = new TMS9900Translator(
                new List <(Z80SourceRegister, WorkspaceRegister)>()
            {
                (Z80SourceRegister.D, WorkspaceRegister.R4),
                (Z80SourceRegister.E, WorkspaceRegister.R5)
            },
                new List <MemoryMapElement>(),
                new LabelHighlighter()
                );
            var tmsCommand = translator.Translate(z80Command).ToList();

            Assert.AreEqual(1, tmsCommand.Count);
            Assert.AreEqual("       MOVB @>89AB,R5", tmsCommand[0].CommandText);
        }
        public void TranslationLabelTests_LoadCommandWithImmediate_LongLabel()
        {
            var z80SourceCommand = "label4872: ld   b,14h";
            var z80Command       = new Z80AssemblyParsing.Parsing.Z80LineParser().ParseLine(z80SourceCommand);
            var translator       = new TMS9900Translator(
                new List <(Z80SourceRegister, WorkspaceRegister)>()
            {
                (Z80SourceRegister.B, WorkspaceRegister.R6),
                (Z80SourceRegister.C, WorkspaceRegister.R7)
            },
                new List <MemoryMapElement>(),
                new LabelHighlighter()
                );
            var tmsCommand = translator.Translate(z80Command).ToList();

            Assert.AreEqual(1, tmsCommand.Count);
            Assert.AreEqual("label4872" + Environment.NewLine + "       LI   R6,>1400", tmsCommand[0].CommandText);
        }
        public void Increment_IndirectRegister_UnifiedPair()
        {
            var z80SourceCommand = "    INC  (HL)";
            var z80Command       = new Z80AssemblyParsing.Parsing.Z80LineParser().ParseLine(z80SourceCommand);
            var translator       = new TMS9900Translator(
                new List <(Z80SourceRegister, WorkspaceRegister)>()
            {
                (Z80SourceRegister.H, WorkspaceRegister.R6),
                (Z80SourceRegister.L, WorkspaceRegister.R6)
            },
                new List <MemoryMapElement>(),
                new LabelHighlighter()
                );
            var tmsCommand = translator.Translate(z80Command).ToList();

            Assert.AreEqual(1, tmsCommand.Count);
            Assert.AreEqual("       AB   @ONE,*R6", tmsCommand[0].CommandText);
        }
        public void TranslationLabelTests_LoadCommand_ShortLabel()
        {
            var z80SourceCommand = "lbl427: ld   b,c";
            var z80Command       = new Z80AssemblyParsing.Parsing.Z80LineParser().ParseLine(z80SourceCommand);
            var translator       = new TMS9900Translator(
                new List <(Z80SourceRegister, WorkspaceRegister)>()
            {
                (Z80SourceRegister.B, WorkspaceRegister.R6),
                (Z80SourceRegister.C, WorkspaceRegister.R7)
            },
                new List <MemoryMapElement>(),
                new LabelHighlighter()
                );
            var tmsCommands = translator.Translate(z80Command).ToList();

            Assert.AreEqual(1, tmsCommands.Count);
            Assert.AreEqual("lbl427 MOVB R7,R6", tmsCommands[0].CommandText);
        }
Exemple #25
0
        public void Return()
        {
            var z80SourceCommand = "    ret";
            var z80Command       = new Z80AssemblyParsing.Parsing.Z80LineParser().ParseLine(z80SourceCommand);
            var translator       = new TMS9900Translator(
                new List <(Z80SourceRegister, WorkspaceRegister)>()
            {
                (Z80SourceRegister.SP, WorkspaceRegister.R10)
            },
                new List <MemoryMapElement>(),
                new LabelHighlighter()
                );
            var tmsCommand = translator.Translate(z80Command).ToList();

            Assert.AreEqual(2, tmsCommand.Count);
            Assert.AreEqual("       MOV  *R10+,R11", tmsCommand[0].CommandText, "pull the return address from the stack.");
            Assert.AreEqual("       RT", tmsCommand[1].CommandText);
        }
        public void Load16Bit_LoadImmediate_OneRegisterAndCalculatedImmediate_UnifiedRegisterPair()
        {
            var z80SourceCommand = "    ld   BC,score*14h+128";
            var z80Command       = new Z80AssemblyParsing.Parsing.Z80LineParser().ParseLine(z80SourceCommand);
            var translator       = new TMS9900Translator(
                new List <(Z80SourceRegister, WorkspaceRegister)>()
            {
                (Z80SourceRegister.B, WorkspaceRegister.R3),
                (Z80SourceRegister.C, WorkspaceRegister.R3),
            },
                new List <MemoryMapElement>(),
                new LabelHighlighter()
                );
            var tmsCommand = translator.Translate(z80Command).ToList();

            Assert.AreEqual(1, tmsCommand.Count);
            Assert.AreEqual("       LI   R3,score*>0014+>0080", tmsCommand[0].CommandText);
        }
        public void Load16Bit_LoadImmediate_OneRegisterAndImmediate_UnifiedRegisterPair()
        {
            var z80SourceCommand = "    ld   DE,4DF1h";
            var z80Command       = new Z80AssemblyParsing.Parsing.Z80LineParser().ParseLine(z80SourceCommand);
            var translator       = new TMS9900Translator(
                new List <(Z80SourceRegister, WorkspaceRegister)>()
            {
                (Z80SourceRegister.D, WorkspaceRegister.R4),
                (Z80SourceRegister.E, WorkspaceRegister.R4),
            },
                new List <MemoryMapElement>(),
                new LabelHighlighter()
                );
            var tmsCommand = translator.Translate(z80Command).ToList();

            Assert.AreEqual(1, tmsCommand.Count);
            Assert.AreEqual("       LI   R4,>4DF1", tmsCommand[0].CommandText);
        }
        public void Load16Bit_Move_LabeledMemoryAddressSource_UnifiedRegisterPair()
        {
            var z80SourceCommand = "    ld   BC,(wordLabel)";
            var z80Command       = new Z80AssemblyParsing.Parsing.Z80LineParser().ParseLine(z80SourceCommand);
            var translator       = new TMS9900Translator(
                new List <(Z80SourceRegister, WorkspaceRegister)>()
            {
                (Z80SourceRegister.B, WorkspaceRegister.R2),
                (Z80SourceRegister.C, WorkspaceRegister.R2)
            },
                new List <MemoryMapElement>(),
                new LabelHighlighter()
                );
            var tmsCommand = translator.Translate(z80Command).ToList();

            Assert.AreEqual(1, tmsCommand.Count);
            Assert.AreEqual("       MOV  @wordLabel,R2", tmsCommand[0].CommandText);
        }
        public void Increment_Register_SeparatedPair()
        {
            var z80SourceCommand = "    INC  B";
            var z80Command       = new Z80AssemblyParsing.Parsing.Z80LineParser().ParseLine(z80SourceCommand);
            var translator       = new TMS9900Translator(
                new List <(Z80SourceRegister, WorkspaceRegister)>()
            {
                (Z80SourceRegister.B, WorkspaceRegister.R4),
                (Z80SourceRegister.C, WorkspaceRegister.R5)
            },
                new List <MemoryMapElement>(),
                new LabelHighlighter()
                );
            var tmsCommand = translator.Translate(z80Command).ToList();

            Assert.AreEqual(1, tmsCommand.Count);
            Assert.AreEqual("       AB   @ONE,R4", tmsCommand[0].CommandText);
        }
Exemple #30
0
        public void JumpTests_Conditional_LessThan_LabeledAddress()
        {
            var z80SourceCommand = "       jp   M,btnprs";
            var z80Command       = new Z80AssemblyParsing.Parsing.Z80LineParser().ParseLine(z80SourceCommand);
            var translator       = new TMS9900Translator(
                new List <(Z80SourceRegister, WorkspaceRegister)>(),
                new List <MemoryMapElement>(),
                new LabelHighlighter()
                );
            var tmsCommand = translator.Translate(z80Command).ToList();

            Assert.AreEqual(5, tmsCommand.Count);
            Assert.AreEqual("       JLT  JMP001", tmsCommand[0].CommandText);
            Assert.AreEqual("       JMP  JMP002", tmsCommand[1].CommandText);
            Assert.AreEqual("JMP001", tmsCommand[2].CommandText);
            Assert.AreEqual("       B    @btnprs", tmsCommand[3].CommandText);
            Assert.AreEqual("JMP002", tmsCommand[4].CommandText);
        }