void showscreen(char *screen, int frame, int cx, int cy, int blink); void showdebug(); void showmemory(int memorypos); int getinst(char *str,int ip); void showinst(int memorypos,struct cpustruct cpu); extern int mempos; //--------------------------------------------------------------------------- //- Debugging datas --------------------------------------------------------- //--------------------------------------------------------------------------- static char opcodes[256][4]={ "brk\0","ora\0","nxt\0","ora\0","tsb\0","ora\0","asl\0","ora\0","php\0","ora\0","asl\0","rhi\0","tsb\0","ora\0","asl\0","mul\0", // 0x00 "bpl\0","ora\0","ora\0","ora\0","trb\0","ora\0","asl\0","ora\0","clc\0","ora\0","inc\0","rhx\0","trb\0","ora\0","asl\0","mul\0", // 0x10 "jsr\0","and\0","ent\0","and\0","bit\0","and\0","rol\0","and\0","plp\0","and\0","rol\0","rli\0","bit\0","and\0","rol\0","mul\0", // 0x20 "bmi\0","and\0","and\0","and\0","bit\0","and\0","rol\0","and\0","sec\0","and\0","dec\0","rlx\0","bit\0","and\0","rol\0","mul\0", // 0x30 "rti\0","eor\0","nxa\0","eor\0","rea\0","eor\0","lsr\0","eor\0","pha\0","eor\0","lsr\0","rha\0","jmp\0","eor\0","lsr\0","div\0", // 0x40 "bvc\0","eor\0","eor\0","eor\0","rei\0","eor\0","lsr\0","eor\0","cli\0","eor\0","phy\0","rhy\0","txi\0","eor\0","lsr\0","div\0", // 0x50 "rts\0","adc\0","per\0","adc\0","stz\0","adc\0","ror\0","adc\0","pla\0","adc\0","ror\0","rla\0","jmp\0","adc\0","ror\0","div\0", // 0x60 "bvs\0","adc\0","adc\0","adc\0","stz\0","adc\0","ror\0","adc\0","sei\0","adc\0","ply\0","rly\0","jmp\0","adc\0","ror\0","div\0", // 0x70 "bra\0","sta\0","rer\0","sta\0","sty\0","sta\0","stx\0","sta\0","dey\0","bit\0","txa\0","txr\0","sty\0","sta\0","stx\0","zea\0", // 0x80 "bcc\0","sta\0","sta\0","sta\0","sty\0","sta\0","stx\0","sta\0","tya\0","sta\0","txs\0","txy\0","stz\0","sta\0","stz\0","sea\0", // 0x90 "ldy\0","lda\0","ldx\0","lda\0","ldy\0","lda\0","ldx\0","lda\0","tay\0","lda\0","tax\0","trx\0","ldy\0","lda\0","ldx\0","tda\0", // 0xa0 "bcs\0","lda\0","lda\0","lda\0","ldy\0","lda\0","ldx\0","lda\0","clv\0","lda\0","tsx\0","tyx\0","ldy\0","lda\0","ldx\0","tad\0", // 0xb0 "cpy\0","cmp\0","rep\0","cmp\0","cpy\0","cmp\0","dec\0","cmp\0","iny\0","cmp\0","dex\0","wai\0","cpy\0","cmp\0","dec\0","pld\0", // 0xc0 "bne\0","cmp\0","cmp\0","cmp\0","pei\0","cmp\0","dec\0","cmp\0","cld\0","cmp\0","phx\0","stp\0","tix\0","cmp\0","dec\0","phd\0", // 0xd0 "cpx\0","sbc\0","sep\0","sbc\0","cpx\0","sbc\0","inc\0","sbc\0","inx\0","sbc\0","nop\0","xba\0","cpx\0","sbc\0","inc\0","mmu\0", // 0xe0 "beq\0","sbc\0","sbc\0","sbc\0","pea\0","sbc\0","inc\0","sbc\0","sed\0","sbc\0","plx\0","xce\0","jsr\0","sbc\0","inc\0","???\0"}; /* 0 - nothing 1 - ix ($xx,x) 2 - zp $xx 3 - abs $xxyy 4 - iy ($xx),y 5 - zpx $xx,x 6 - aby $xxyy,y 7 - abx $xxyy,x 8 - rel +-127 9 - ind ($xxyy) 10 - zpy $xx,y 11 - dir #$xx 12 - ajm $xxxx 13 - abs $xx,s 14 - isy ($xx,s),y 15 - zp ($xx) 16 - abs $xx,r 17 - isy ($xx,r),y 18 - dir #$xxyy */ static char codesizetable[]= {1,2,2,3,2,2,3,3,2,3,2,2,3,2,2,2,2,2,3}; static char addrmode[4][256]={ { 0,1, 0, 13, 2,2, 2,16,0,18,0,0, 3,3,3, 2, // 0x00 8,4,15, 14, 2,5, 5,17,0, 6,0,0, 3,7,7, 5, // 0x10 12,1, 0, 13, 2,2, 2,16,0,18,0,0, 3,3,3, 3, // 0x20 8,4,15, 14, 5,5, 5,17,0, 6,0,0, 3,7,7, 7, // 0x30 0,1, 0, 13, 3,2, 2,16,0,18,0,0,12,3,3, 2, // 0x40 8,4,15, 14,15,5, 5,17,0, 6,0,0, 0,7,7, 5, // 0x50 0,1, 8, 13, 2,2, 2,16,0,18,0,0, 9,3,3, 3, // 0x60 8,4,15, 14, 5,5, 5,17,0, 6,0,0, 3,7,7, 7, // 0x70 8,1, 8, 13, 2,2, 2,16,0,18,0,0, 3,3,3, 0, // 0x80 8,4,15, 14, 5,5,10,17,0, 6,0,0, 3,7,7, 0, // 0x90 18,1,18, 13, 2,2, 2,16,0,18,0,0, 3,3,3, 0, // 0xa0 8,4,15, 14, 5,5,10,17,0, 6,0,0, 7,7,6, 0, // 0xb0 18,1,11, 13, 2,2, 2,16,0,18,0,0, 3,3,3, 0, // 0xc0 8,4,15, 14,15,5, 5,17,0, 6,0,0, 0,7,7, 0, // 0xd0 18,1,11, 13, 2,2, 2,16,0,18,0,0, 3,3,3,11, // 0xe0 8,4,15, 14, 3,5, 5,17,0, 6,0,0, 3,7,7, 0}, // 0xf0 { 0,1, 0, 13, 2,2, 2,16,0,11,0,0, 3,3,3, 2, // 0x00 8,4,15, 14, 2,5, 5,17,0, 6,0,0, 3,7,7, 5, // 0x10 12,1, 0, 13, 2,2, 2,16,0,11,0,0, 3,3,3, 3, // 0x20 8,4,15, 14, 5,5, 5,17,0, 6,0,0, 3,7,7, 7, // 0x30 0,1, 0, 13, 3,2, 2,16,0,11,0,0,12,3,3, 2, // 0x40 8,4,15, 14,15,5, 5,17,0, 6,0,0, 0,7,7, 5, // 0x50 0,1, 8, 13, 2,2, 2,16,0,11,0,0, 9,3,3, 3, // 0x60 8,4,15, 14, 5,5, 5,17,0, 6,0,0, 3,7,7, 7, // 0x70 8,1, 8, 13, 2,2, 2,16,0,11,0,0, 3,3,3, 0, // 0x80 8,4,15, 14, 5,5,10,17,0, 6,0,0, 3,7,7, 0, // 0x90 11,1,11, 13, 2,2, 2,16,0,11,0,0, 3,3,3, 0, // 0xa0 8,4,15, 14, 5,5,10,17,0, 6,0,0, 7,7,6, 0, // 0xb0 11,1,11, 13, 2,2, 2,16,0,11,0,0, 3,3,3, 0, // 0xc0 8,4,15, 14,15,5, 5,17,0, 6,0,0, 0,7,7, 0, // 0xd0 11,1,11, 13, 2,2, 2,16,0,11,0,0, 3,3,3,11, // 0xe0 8,4,15, 14, 3,5, 5,17,0, 6,0,0, 3,7,7, 0}, // 0xf0 { 0,1, 0, 13, 2,2, 2,16,0,18,0,0, 3,3,3, 2, // 0x00 8,4,15, 14, 2,5, 5,17,0, 6,0,0, 3,7,7, 5, // 0x10 12,1, 0, 13, 2,2, 2,16,0,18,0,0, 3,3,3, 3, // 0x20 8,4,15, 14, 5,5, 5,17,0, 6,0,0, 3,7,7, 7, // 0x30 0,1, 0, 13, 3,2, 2,16,0,18,0,0,12,3,3, 2, // 0x40 8,4,15, 14,15,5, 5,17,0, 6,0,0, 0,7,7, 5, // 0x50 0,1, 8, 13, 2,2, 2,16,0,18,0,0, 9,3,3, 3, // 0x60 8,4,15, 14, 5,5, 5,17,0, 6,0,0, 3,7,7, 7, // 0x70 8,1, 8, 13, 2,2, 2,16,0,18,0,0, 3,3,3, 0, // 0x80 8,4,15, 14, 5,5,10,17,0, 6,0,0, 3,7,7, 0, // 0x90 18,1,18, 13, 2,2, 2,16,0,18,0,0, 3,3,3, 0, // 0xa0 8,4,15, 14, 5,5,10,17,0, 6,0,0, 7,7,6, 0, // 0xb0 18,1,11, 13, 2,2, 2,16,0,18,0,0, 3,3,3, 0, // 0xc0 8,4,15, 14,15,5, 5,17,0, 6,0,0, 0,7,7, 0, // 0xd0 18,1,11, 13, 2,2, 2,16,0,18,0,0, 3,3,3,11, // 0xe0 8,4,15, 14, 3,5, 5,17,0, 6,0,0, 3,7,7, 0}, // 0xf0 { 0,1, 0, 13, 2,2, 2,16,0,11,0,0, 3,3,3, 2, // 0x00 8,4,15, 14, 2,5, 5,17,0, 6,0,0, 3,7,7, 5, // 0x10 12,1, 0, 13, 2,2, 2,16,0,11,0,0, 3,3,3, 3, // 0x20 8,4,15, 14, 5,5, 5,17,0, 6,0,0, 3,7,7, 7, // 0x30 0,1, 0, 13, 3,2, 2,16,0,11,0,0,12,3,3, 2, // 0x40 8,4,15, 14,15,5, 5,17,0, 6,0,0, 0,7,7, 5, // 0x50 0,1, 8, 13, 2,2, 2,16,0,11,0,0, 9,3,3, 3, // 0x60 8,4,15, 14, 5,5, 5,17,0, 6,0,0, 3,7,7, 7, // 0x70 8,1, 8, 13, 2,2, 2,16,0,11,0,0, 3,3,3, 0, // 0x80 8,4,15, 14, 5,5,10,17,0, 6,0,0, 3,7,7, 0, // 0x90 11,1,11, 13, 2,2, 2,16,0,11,0,0, 3,3,3, 0, // 0xa0 8,4,15, 14, 5,5,10,17,0, 6,0,0, 7,7,6, 0, // 0xb0 11,1,11, 13, 2,2, 2,16,0,11,0,0, 3,3,3, 0, // 0xc0 8,4,15, 14,15,5, 5,17,0, 6,0,0, 0,7,7, 0, // 0xd0 11,1,11, 13, 2,2, 2,16,0,11,0,0, 3,3,3,11, // 0xe0 8,4,15, 14, 3,5, 5,17,0, 6,0,0, 3,7,7, 0}}; // 0xf0