diff --git a/MC6809/MC6809.UnitTest/SchwotzerCompareLoadTests.cs b/MC6809/MC6809.UnitTest/SchwotzerCompareLoadTests.cs index ccabe07..0895f3b 100644 --- a/MC6809/MC6809.UnitTest/SchwotzerCompareLoadTests.cs +++ b/MC6809/MC6809.UnitTest/SchwotzerCompareLoadTests.cs @@ -196,10 +196,10 @@ namespace MC6809.UnitTest [DataTestMethod] [DataRow(0x0000, 0x04)] [DataRow(0x0001, 0x00)] + [DataRow(0xFFFF, 0x00)] [DataRow(0x7FFF, 0x00)] [DataRow(0x8000, 0x00)] - [DataRow(0xFFFF, 0x00)] - [DataRow(0x0100, 0x00)] + [DataRow(0x8001, 0x00)] public void TestLEAY(int yValue, int flags) { this.board.Poke(0, 0x31); @@ -213,64 +213,75 @@ namespace MC6809.UnitTest // DAA ($19): decimal adjust A after BCD addition; checks NZC ($0D) // initialCC encodes H (bit5) and C (bit0) before the instruction - // 64 rows: all combinations of initialCC in {0x00,0x01,0x20,0x21} × A in {0x00..0x0F, plus selected values} - // Data from Schwotzer TBDAA table, hardware-verified on EF6809P + // 64 rows: exact Schwotzer TBDAA table, hardware-verified on EF6809P [DataTestMethod] - // initialCC=0x00 (H=0, C=0) + // H=0, C=0 (initialCC=0x00) [DataRow(0x00, 0x00, 0x00, 0x04)] + [DataRow(0x00, 0x01, 0x01, 0x00)] [DataRow(0x00, 0x09, 0x09, 0x00)] [DataRow(0x00, 0x0A, 0x10, 0x00)] [DataRow(0x00, 0x0F, 0x15, 0x00)] [DataRow(0x00, 0x10, 0x10, 0x00)] - [DataRow(0x00, 0x19, 0x19, 0x00)] - [DataRow(0x00, 0x1A, 0x20, 0x00)] - [DataRow(0x00, 0x90, 0x90, 0x08)] + [DataRow(0x00, 0x4A, 0x50, 0x00)] + [DataRow(0x00, 0x79, 0x79, 0x00)] + [DataRow(0x00, 0x7A, 0x80, 0x08)] + [DataRow(0x00, 0x7F, 0x85, 0x08)] + [DataRow(0x00, 0x81, 0x81, 0x08)] [DataRow(0x00, 0x99, 0x99, 0x08)] - [DataRow(0x00, 0x9A, 0x00, 0x05)] [DataRow(0x00, 0xA0, 0x00, 0x05)] - [DataRow(0x00, 0xF9, 0x59, 0x01)] + [DataRow(0x00, 0xBF, 0x25, 0x01)] + [DataRow(0x00, 0xF0, 0x50, 0x01)] [DataRow(0x00, 0xFF, 0x65, 0x01)] - // initialCC=0x01 (H=0, C=1) + // H=0, C=1 (initialCC=0x01) [DataRow(0x01, 0x00, 0x60, 0x01)] + [DataRow(0x01, 0x01, 0x61, 0x01)] [DataRow(0x01, 0x09, 0x69, 0x01)] [DataRow(0x01, 0x0A, 0x70, 0x01)] [DataRow(0x01, 0x0F, 0x75, 0x01)] [DataRow(0x01, 0x10, 0x70, 0x01)] - [DataRow(0x01, 0x19, 0x79, 0x01)] - [DataRow(0x01, 0x1A, 0x80, 0x09)] - [DataRow(0x01, 0x90, 0xF0, 0x09)] + [DataRow(0x01, 0x4A, 0xB0, 0x09)] + [DataRow(0x01, 0x79, 0xD9, 0x09)] + [DataRow(0x01, 0x7A, 0xE0, 0x09)] + [DataRow(0x01, 0x7F, 0xE5, 0x09)] + [DataRow(0x01, 0x81, 0xE1, 0x09)] [DataRow(0x01, 0x99, 0xF9, 0x09)] - [DataRow(0x01, 0x9A, 0x00, 0x05)] [DataRow(0x01, 0xA0, 0x00, 0x05)] - [DataRow(0x01, 0xF9, 0x59, 0x01)] + [DataRow(0x01, 0xBF, 0x25, 0x01)] + [DataRow(0x01, 0xF0, 0x50, 0x01)] [DataRow(0x01, 0xFF, 0x65, 0x01)] - // initialCC=0x20 (H=1, C=0) + // H=1, C=0 (initialCC=0x20) [DataRow(0x20, 0x00, 0x06, 0x00)] + [DataRow(0x20, 0x01, 0x07, 0x00)] [DataRow(0x20, 0x09, 0x0F, 0x00)] [DataRow(0x20, 0x0A, 0x10, 0x00)] [DataRow(0x20, 0x0F, 0x15, 0x00)] [DataRow(0x20, 0x10, 0x16, 0x00)] - [DataRow(0x20, 0x19, 0x1F, 0x00)] - [DataRow(0x20, 0x1A, 0x20, 0x00)] - [DataRow(0x20, 0x90, 0x96, 0x08)] + [DataRow(0x20, 0x4A, 0x50, 0x00)] + [DataRow(0x20, 0x79, 0x7F, 0x00)] + [DataRow(0x20, 0x7A, 0x80, 0x08)] + [DataRow(0x20, 0x7F, 0x85, 0x08)] + [DataRow(0x20, 0x81, 0x87, 0x08)] [DataRow(0x20, 0x99, 0x9F, 0x08)] - [DataRow(0x20, 0x9A, 0x00, 0x05)] [DataRow(0x20, 0xA0, 0x06, 0x01)] - [DataRow(0x20, 0xF9, 0x5F, 0x01)] + [DataRow(0x20, 0xBF, 0x25, 0x01)] + [DataRow(0x20, 0xF0, 0x56, 0x01)] [DataRow(0x20, 0xFF, 0x65, 0x01)] - // initialCC=0x21 (H=1, C=1) + // H=1, C=1 (initialCC=0x21) [DataRow(0x21, 0x00, 0x66, 0x01)] + [DataRow(0x21, 0x01, 0x67, 0x01)] [DataRow(0x21, 0x09, 0x6F, 0x01)] [DataRow(0x21, 0x0A, 0x70, 0x01)] [DataRow(0x21, 0x0F, 0x75, 0x01)] [DataRow(0x21, 0x10, 0x76, 0x01)] - [DataRow(0x21, 0x19, 0x7F, 0x01)] - [DataRow(0x21, 0x1A, 0x80, 0x09)] - [DataRow(0x21, 0x90, 0xF6, 0x09)] + [DataRow(0x21, 0x4A, 0xB0, 0x09)] + [DataRow(0x21, 0x79, 0xDF, 0x09)] + [DataRow(0x21, 0x7A, 0xE0, 0x09)] + [DataRow(0x21, 0x7F, 0xE5, 0x09)] + [DataRow(0x21, 0x81, 0xE7, 0x09)] [DataRow(0x21, 0x99, 0xFF, 0x09)] - [DataRow(0x21, 0x9A, 0x00, 0x05)] [DataRow(0x21, 0xA0, 0x06, 0x01)] - [DataRow(0x21, 0xF9, 0x5F, 0x01)] + [DataRow(0x21, 0xBF, 0x25, 0x01)] + [DataRow(0x21, 0xF0, 0x56, 0x01)] [DataRow(0x21, 0xFF, 0x65, 0x01)] public void TestDAA(int initialCC, int input, int expected, int flags) {