From 318f7678a3293a3684157cacb170a4cb06e263fd Mon Sep 17 00:00:00 2001 From: David Banks Date: Tue, 7 Jul 2015 16:20:32 +0100 Subject: [PATCH] Further optimization of static data in disassemlers, data memory usage < 1K, version now 0.61 Change-Id: Ibcb5fd3e9141022cb940ebc70ca5369bdeb738c4 --- AtomCpuMon.bit | Bin 169328 -> 169328 bytes MC6809CpuMon.bit | Bin 169331 -> 169331 bytes Z80CpuMon.bit | Bin 169327 -> 169327 bytes firmware/AtomBusMon.c | 2 +- firmware/dis6809.c | 16 +-- firmware/disz80.c | 275 ++++++++++++++++++++++++++++++++++++++---- 6 files changed, 263 insertions(+), 30 deletions(-) diff --git a/AtomCpuMon.bit b/AtomCpuMon.bit index ac44b21f18cc0581b3cb18fa05a59cccdd7de78c..60fd78ad5cd878271953372294dd7659186123d1 100644 GIT binary patch delta 83 zcmV-Z0IdJ;stWL`3V^f$OwI)&LqLo!w^7ak9sw09L}mcRLLdMD5^Z~Mfq(!IcvBD} pw}j6D6#)=1004%C`8!7+* delta 83 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�Up1x4o*59w7ODT*(*s4$e>4V^tkKB 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 M%Btjr{58CP0P;Q~iU0rr delta 20481 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 delta 20601 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 4; diff --git a/firmware/disz80.c b/firmware/disz80.c index 49480db..e5ee672 100644 --- a/firmware/disz80.c +++ b/firmware/disz80.c @@ -76,24 +76,254 @@ enum { N, NN, XNN, XN, DIS, CB, ED, XH, XL, YH, YL, XIX, XIY }; - -char* word[] = - { "", "NOP", "LD", "INC", "DEC", "RLCA", "EX", "ADD", - "RRCA", "DJNZ", "RLA", "JR", "RRA", "DAA", "CPL", "HALT", - "SCF", "CCF", "RLC", "RRC", "RL", "RR", "SLA", "SRA", - "SLL", "SRL", "IN", "OUT", "SBC", "NEG", "RETN", "IM", - "ADC", "RETI", "RRD", "RLD", "SUB", "AND", "XOR", - "OR", "CP", "BIT", "RES", "SET", "LDI", "CPI", "INI", - "OUTI", "LDD", "CPD", "IND", "OUTD", "LDIR", "CPIR", "INIR", - "OTIR", "LDDR", "CPDR", "INDR", "OTDR", "RET", "POP", "JP", - "CALL", "PUSH", "RST", "PREFIX", "EXX", "DI", "EI", - "BC", "DE", "HL", "IX", "IY", "SP", "AF", "AF'", - "B", "C", "D", "E", "H", "L", "(HL)", "A", - "(BC)", "(DE)", "R", "I", "(C)", "(SP)", "PC", "F", - "0", "1", "2", "3", "4", "5", "6", "7", - "Z", "NZ", "NC", "PO", "PE", "M", "P", - "N", "NN", "XNN", "XN", "DIS", "CB", "ED", - "XH", "XL", "YH", "YL", "DIS(IX)","DIS(IY)" + +static const char word_NIX[] PROGMEM = ""; +static const char word_NOP[] PROGMEM = "NOP"; +static const char word_LD[] PROGMEM = "LD"; +static const char word_INC[] PROGMEM = "INC"; +static const char word_DEC[] PROGMEM = "DEC"; +static const char word_RLCA[] PROGMEM = "RLCA"; +static const char word_EX[] PROGMEM = "EX"; +static const char word_ADD[] PROGMEM = "ADD"; +static const char word_RRCA[] PROGMEM = "RRCA"; +static const char word_DJNZ[] PROGMEM = "DJNZ"; +static const char word_RLA[] PROGMEM = "RLA"; +static const char word_JR[] PROGMEM = "JR"; +static const char word_RRA[] PROGMEM = "RRA"; +static const char word_DAA[] PROGMEM = "DAA"; +static const char word_CPL[] PROGMEM = "CPL"; +static const char word_HALT[] PROGMEM = "HALT"; +static const char word_SCF[] PROGMEM = "SCF"; +static const char word_CCF[] PROGMEM = "CCF"; +static const char word_RLC[] PROGMEM = "RLC"; +static const char word_RRC[] PROGMEM = "RRC"; +static const char word_RL[] PROGMEM = "RL"; +static const char word_RR[] PROGMEM = "RR"; +static const char word_SLA[] PROGMEM = "SLA"; +static const char word_SRA[] PROGMEM = "SRA"; +static const char word_SLL[] PROGMEM = "SLL"; +static const char word_SRL[] PROGMEM = "SRL"; +static const char word_IN[] PROGMEM = "IN"; +static const char word_OUT[] PROGMEM = "OUT"; +static const char word_SBC[] PROGMEM = "SBC"; +static const char word_NEG[] PROGMEM = "NEG"; +static const char word_RETN[] PROGMEM = "RETN"; +static const char word_IM[] PROGMEM = "IM"; +static const char word_ADC[] PROGMEM = "ADC"; +static const char word_RETI[] PROGMEM = "RETI"; +static const char word_RRD[] PROGMEM = "RRD"; +static const char word_RLD[] PROGMEM = "RLD"; +static const char word_SUB[] PROGMEM = "SUB"; +static const char word_AND[] PROGMEM = "AND"; +static const char word_XOR[] PROGMEM = "XOR"; +static const char word_OR[] PROGMEM = "OR"; +static const char word_CP[] PROGMEM = "CP"; +static const char word_BIT[] PROGMEM = "BIT"; +static const char word_RES[] PROGMEM = "RES"; +static const char word_SET[] PROGMEM = "SET"; +static const char word_LDI[] PROGMEM = "LDI"; +static const char word_CPI[] PROGMEM = "CPI"; +static const char word_INI[] PROGMEM = "INI"; +static const char word_OUTI[] PROGMEM = "OUTI"; +static const char word_LDD[] PROGMEM = "LDD"; +static const char word_CPD[] PROGMEM = "CPD"; +static const char word_IND[] PROGMEM = "IND"; +static const char word_OUTD[] PROGMEM = "OUTD"; +static const char word_LDIR[] PROGMEM = "LDIR"; +static const char word_CPIR[] PROGMEM = "CPIR"; +static const char word_INIR[] PROGMEM = "INIR"; +static const char word_OTIR[] PROGMEM = "OTIR"; +static const char word_LDDR[] PROGMEM = "LDDR"; +static const char word_CPDR[] PROGMEM = "CPDR"; +static const char word_INDR[] PROGMEM = "INDR"; +static const char word_OTDR[] PROGMEM = "OTDR"; +static const char word_RET[] PROGMEM = "RET"; +static const char word_POP[] PROGMEM = "POP"; +static const char word_JP[] PROGMEM = "JP"; +static const char word_CALL[] PROGMEM = "CALL"; +static const char word_PUSH[] PROGMEM = "PUSH"; +static const char word_RST[] PROGMEM = "RST"; +static const char word_PFX[] PROGMEM = "PREFIX"; +static const char word_EXX[] PROGMEM = "EXX"; +static const char word_DI[] PROGMEM = "DI"; +static const char word_EI[] PROGMEM = "EI"; +static const char word_BC[] PROGMEM = "BC"; +static const char word_DE[] PROGMEM = "DE"; +static const char word_HL[] PROGMEM = "HL"; +static const char word_IX[] PROGMEM = "IX"; +static const char word_IY[] PROGMEM = "IY"; +static const char word_SP[] PROGMEM = "SP"; +static const char word_AF[] PROGMEM = "AF"; +static const char word_AF2[] PROGMEM = "AF'"; +static const char word_B[] PROGMEM = "B"; +static const char word_C[] PROGMEM = "C"; +static const char word_D[] PROGMEM = "D"; +static const char word_E[] PROGMEM = "E"; +static const char word_H[] PROGMEM = "H"; +static const char word_L[] PROGMEM = "L"; +static const char word_XHL[] PROGMEM = "(HL)"; +static const char word_A[] PROGMEM = "A"; +static const char word_XBC[] PROGMEM = "(BC)"; +static const char word_XDE[] PROGMEM = "(DE)"; +static const char word_R[] PROGMEM = "R"; +static const char word_I[] PROGMEM = "I"; +static const char word_XC[] PROGMEM = "(C)"; +static const char word_XSP[] PROGMEM = "(SP)"; +static const char word_PC[] PROGMEM = "PC"; +static const char word_F[] PROGMEM = "F"; +static const char word_N0[] PROGMEM = "0"; +static const char word_N1[] PROGMEM = "1"; +static const char word_N2[] PROGMEM = "2"; +static const char word_N3[] PROGMEM = "3"; +static const char word_N4[] PROGMEM = "4"; +static const char word_N5[] PROGMEM = "5"; +static const char word_N6[] PROGMEM = "6"; +static const char word_N7[] PROGMEM = "7"; +static const char word_Z[] PROGMEM = "Z"; +static const char word_NZ[] PROGMEM = "NZ"; +static const char word_NC[] PROGMEM = "NC"; +static const char word_PO[] PROGMEM = "PO"; +static const char word_PE[] PROGMEM = "PE"; +static const char word_M[] PROGMEM = "M"; +static const char word_P[] PROGMEM = "P"; +static const char word_N[] PROGMEM = "N"; +static const char word_NN[] PROGMEM = "NN"; +static const char word_XNN[] PROGMEM = "XNN"; +static const char word_XN[] PROGMEM = "XN"; +static const char word_DIS[] PROGMEM = "DIS"; +static const char word_CB[] PROGMEM = "CB"; +static const char word_ED[] PROGMEM = "ED"; +static const char word_XH[] PROGMEM = "XH"; +static const char word_XL[] PROGMEM = "XL"; +static const char word_YH[] PROGMEM = "YH"; +static const char word_YL[] PROGMEM = "YL"; +static const char word_XIX[] PROGMEM = "DIS(IX)"; +static const char word_XIY[] PROGMEM = "DIS(IY)"; + +static const char * const word[] PROGMEM = + { + word_NIX, + word_NOP, + word_LD, + word_INC, + word_DEC, + word_RLCA, + word_EX, + word_ADD, + word_RRCA, + word_DJNZ, + word_RLA, + word_JR, + word_RRA, + word_DAA, + word_CPL, + word_HALT, + word_SCF, + word_CCF, + word_RLC, + word_RRC, + word_RL, + word_RR, + word_SLA, + word_SRA, + word_SLL, + word_SRL, + word_IN, + word_OUT, + word_SBC, + word_NEG, + word_RETN, + word_IM, + word_ADC, + word_RETI, + word_RRD, + word_RLD, + word_SUB, + word_AND, + word_XOR, + word_OR, + word_CP, + word_BIT, + word_RES, + word_SET, + word_LDI, + word_CPI, + word_INI, + word_OUTI, + word_LDD, + word_CPD, + word_IND, + word_OUTD, + word_LDIR, + word_CPIR, + word_INIR, + word_OTIR, + word_LDDR, + word_CPDR, + word_INDR, + word_OTDR, + word_RET, + word_POP, + word_JP, + word_CALL, + word_PUSH, + word_RST, + word_PFX, + word_EXX, + word_DI, + word_EI, + word_BC, + word_DE, + word_HL, + word_IX, + word_IY, + word_SP, + word_AF, + word_AF2, + word_B, + word_C, + word_D, + word_E, + word_H, + word_L, + word_XHL, + word_A, + word_XBC, + word_XDE, + word_R, + word_I, + word_XC, + word_XSP, + word_PC, + word_F, + word_N0, + word_N1, + word_N2, + word_N3, + word_N4, + word_N5, + word_N6, + word_N7, + word_Z, + word_NZ, + word_NC, + word_PO, + word_PE, + word_M, + word_P, + word_N, + word_NN, + word_XNN, + word_XN, + word_DIS, + word_CB, + word_ED, + word_XH, + word_XL, + word_YH, + word_YL, + word_XIX, + word_XIY }; static const unsigned char cmd_00[192] PROGMEM = @@ -311,6 +541,8 @@ unsigned char c_blk[] = { LDI,CPI,INI,OUTI,0,0,0,0,LDD,CPD,IND,OUTD,0,0,0,0, unsigned char c_sh[] = { RLC,RRC,RL,RR,SLA,SRA,SLL,SRL }; +char buffer[10]; + // ============================================================================================ @@ -528,7 +760,6 @@ int OpcodeLength (unsigned char op1, unsigned char op2) { // =================================================================================== - void xword (unsigned char n, unsigned int *ip) { unsigned int nn; @@ -573,7 +804,8 @@ void xword (unsigned char n, unsigned int *ip) { } break; default: - log0("%s", word[n]); + strcpy_P(buffer, (PGM_P)pgm_read_word(&(word[n]))); + log0("%s", buffer); break; } } @@ -581,7 +813,8 @@ void xword (unsigned char n, unsigned int *ip) { // ---- expand 3-char descriptor m[3] to mnemonic with arguments via pc void disass (const unsigned char *m, unsigned int *ip) { - log0("%-5s", word[*m++]); + strcpy_P(buffer, (PGM_P)pgm_read_word(&(word[*m++]))); + log0("%-5s", buffer); if (*m) { xword(*m++,ip); }