??? 11/17/06 05:26 Read: times |
#128146 - How to dump 6801 Responding to: ???'s previous message |
Dumping the 6801 is a bit tricky. following is the code I wrote to send out the serial port as a hex dump. The trick is you need external code in eprom, but it must not overlay the mask rom (0xe000-0xffff) - so how do you get it to execute the eprom code? I made a GAL to decode the addresses so that the eprom appears in the vector space (0xfff0..0xffff) and the code is at 0x6000. Downside is you loose the vector addresses of the code you want to dump - upside is that it is pretty obvious when you disassemble the code. Crystal frequency is 4.9152Mhz, baud rate is 9600. Press reset and the micro starts dumping its secrets!
This worked on the hitachi cpu of the kawasaki box and the mitsubishi box, but did not work for some mask motorola parts from a bosch box. A HC11 disassembler works for 6801, but the timers etc are different. Mon Oct 13 2003 22:09 Page 1 2500 A.D. 6800 Macro Assembler - Version 4.01a ------------------------------------------------ Input Filename : getrom.asm Output Filename : getrom.obj 1 ;------------------------------------------------------------------------- 2 ; 3 ; suck the code out of the 6801 mask rom device (we hope!) 4 ; 5 ; 6 ;------------------------------------------------------------------------- 7 6000 rombot equ 06000h ;start address of the rom 8 7FFF romtop equ 07fffh ;top of rom 9 ; 10 ; internal register equates 11 ; 12 0000 port1_ddr equ 0 13 0001 port2_ddr equ 1 14 0002 port1 equ 2 15 0003 port2 equ 3 16 0004 port3_ddr equ 4 17 0005 port4_ddr equ 5 18 0006 port3 equ 6 19 0007 port4 equ 7 20 0008 tcsr equ 8 21 0009 count_hi equ 9 22 000A count_lo equ 10 23 000B outcomp_hi equ 11 24 000C outcomp_lo equ 12 25 000D incap_hi equ 13 26 000E incap_lo equ 14 27 000F port3csr equ 15 28 0010 rmcr equ 16 29 0011 status equ 17 30 0012 rxbuff equ 18 31 0013 txbuff equ 19 32 0014 ram_ctrl equ 20 33 ; 34 ; 35 ; 36 pshx macro 37 fcb 3ch 38 endm 39 6000 org rombot 40 6000 86 09 start lda #09h ;4800 baud @2.4567mhz/9600 baud @ 4.1952 41 6002 97 10 sta rmcr 42 6004 86 02 lda #2 43 6006 97 11 sta status ;enable transmitter 44 6008 86 0D lda #0dh 45 600A 97 13 sta txbuff ;send carriage return 46 600C 8E 00 F0 lds #00f0h ;setup the stack 47 ; Mon Oct 13 2003 22:09 Page 2 48 ; test code... 49 ; 50 ;lp 51 ; ldaa status 52 ; anda #20h 53 ; beq lp 54 ; ldaa #'T' 55 ; staa txbuff 56 ; bra lp 57 ; 58 ; 59 ; 60 600F CE E0 00 dump ldx #$e000 ;->internal rom 61 6012 BD 60 63 dump1 jsr pcrlf 62 6015 86 4C ldaa #'L' 63 6017 BD 60 58 jsr pchar 64 601A BD 60 74 jsr paddr 65 601D BD 60 6E jsr pspace 66 6020 86 09 ldaa #$09 67 6022 BD 60 58 jsr pchar ;print tab 68 6025 86 66 ldaa #'f' 69 6027 BD 60 58 jsr pchar 70 602A 86 63 ldaa #'c' 71 602C BD 60 58 jsr pchar 72 602F 86 62 ldaa #'b' 73 6031 BD 60 58 jsr pchar 74 6034 86 09 ldaa #$09 75 6036 BD 60 58 jsr pchar 76 6039 C6 10 ldab #16 ;16 bytes /line 77 603B 86 24 dump2 ldaa #'$' 78 603D BD 60 58 jsr pchar 79 6040 A6 00 lda 0,x ;get byte 80 6042 BD 60 7F jsr phex 81 6045 86 2C ldaa #',' 82 6047 BD 60 58 jsr pchar 83 604A BD 60 6E jsr pspace 84 604D 08 inx ;next byte 85 604E 5A decb 86 604F 26 EA bne dump2 ;next byte/line 87 6051 8C 00 00 cpx #$0000 88 6054 26 BC bne dump1 89 6056 20 FE loop bra loop ;next line 90 91 ; 92 ; print a char out the serial port 93 ; 94 6058 36 pchar psha ;save A 95 6059 96 11 pchar1 lda status ;get comms status 96 605B 84 20 anda #20h ;mask for tdre bit 97 605D 27 FA beq pchar1 ;wait till empty 98 605F 32 pula ;restore A 99 6060 97 13 sta txbuff ;send it 100 6062 39 rts 101 6063 102 103 ; 104 ; print cr/lf Mon Oct 13 2003 22:09 Page 3 105 ; 106 6063 86 0D pcrlf lda #0dh 107 6065 BD 60 58 jsr pchar 108 6068 86 0A lda #0ah 109 606A BD 60 58 jsr pchar 110 606D 39 rts 111 ; 112 ; print a space 113 ; 114 606E 86 20 pspace lda #20h 115 6070 BD 60 58 jsr pchar 116 6073 39 rts 117 118 ; 119 ; print address in X 120 ; 121 6074 paddr pshx ;save X onto the stack 122 6074 3C fcb 3ch 123 6075 endm 124 6075 32 pula ;get high address 125 6076 33 pulb ;get low address 126 6077 BD 60 7F jsr phex 127 607A 17 tba ;get low address 128 607B BD 60 7F jsr phex 129 607E 39 rts 130 ; 131 ; convert byte in Acc to ascii hex and output 132 ; 133 607F 36 phex psha 134 6080 46 rora 135 6081 46 rora 136 6082 46 rora 137 6083 46 rora 138 6084 BD 60 88 jsr phex1 139 6087 32 pula 140 6088 84 0F phex1 anda #0fh 141 608A 81 09 cmpa #9 142 608C 2F 02 ble phex2 143 608E 8B 07 adda #7 ;add ascii offset for A-F 144 6090 8B 30 phex2 adda #30h ;add ascii offset for numbers 145 6092 BD 60 58 jsr pchar ;print it 146 6095 39 rts 147 148 149 150 151 ; 152 ; vectors-hardware maps us there 153 ; 154 FFF0 org 0fff0h 155 FFF0 FFFF sci_vec fdb 0ffffh 156 FFF2 FFFF tof_vec fdb 0ffffh 157 FFF4 FFFF ocf_vec fdb 0ffffh 158 FFF6 FFFF icf_vec fdb 0ffffh 159 FFF8 FFFF irq_vec fdb 0ffffh 160 FFFA FFFF swi_vec fdb 0ffffh 161 FFFC FFFF nmi_vec fdb 0ffffh Mon Oct 13 2003 22:09 Page 4 162 FFFE 6000 rst_vec fdb rombot 163 164 Lines Assembled : 164 Assembly Errors : 0 |
Topic | Author | Date |
Help in reverse-engineering an old 8051-based ECU? | 01/01/70 00:00 | |
Toyota boxes perhaps? | 01/01/70 00:00 | |
Not Toyotal, although that's already been "hacked" | 01/01/70 00:00 | |
Are the mazda & honda the same? | 01/01/70 00:00 | |
Getting there... | 01/01/70 00:00 | |
Two different beasts! | 01/01/70 00:00 | |
I could kick myself. | 01/01/70 00:00 | |
Mazda vs Kawasaki box | 01/01/70 00:00 | |
Yep, 680x chip. | 01/01/70 00:00 | |
How to dump 6801![]() | 01/01/70 00:00 | |
Have you verified the fixed connections? | 01/01/70 00:00 | |
Not yet... | 01/01/70 00:00 | |
ignore this double post, plz. | 01/01/70 00:00 | |
email address? | 01/01/70 00:00 | |
Ping me here... | 01/01/70 00:00 |