Re: 6809 disassembly help wanted

Sean Conner via Coco <coco-uNHYcr1XS/wmlAP/[email protected]>
Newsgroups gmane.comp.hardware.tandy.coco
Message-ID <[email protected]>
It was thus said that the Great Allen Huffman via Coco once stated:
> I am looking for help in disassembling this code. Jerry “Super Basic”
> Stratton helped get me started with a perl script he wrote the decodes
> 6809 op codes.  He also suggested I could POKE them into memory and use a
> CoCo disassembler. I don’t have one, but I figured out how to use EDTASM’s
> Z-BUG so sorta do it, and updated the code Mr. Stratton provided until I
> got something that would compile into the same byte code.

  The array mb_sec34_1 is fine; Jerry's disassembly is wrong.  I ran the
array through a disassembler I wrote [1] and got a cleaner result which
translates to (and using documented Radio Shack values) [2]:

address equ     $D1
sector  equ     $D3

        org     $2600
        fdb     'OS'
        lda     #13
        sta     sector
        ldd     #$3800  ; load address
loop    std     address
        inc     sector
        ldx     #DCOPC
        ldd     #$0200  ; read drive 0
        std     DCOPC,x
        lda     #33     ; track 33
        ldb     sector
        std     DCTRK,x
        ldd     address
        std     DCBPT,x
        jsr     [DSKCON] ; disk I/O
        tst     DCSTA,x ; error?
        bne     error   ; handle via DECB
        inca            ; point to next page
        cmpa    #$3D    ; stop address = $3D00
        blo     loop
        jmp     $3900   ; jump to loaded code
error   jmp     $D709   ; return IO error to BASIC

  It looks like the code assumes that [DSKCON] will return an updated
address in D to save a few instructions.  Other than that, this is straight
forward.  I haven't disassembled the other array yet.

  -spc

[1]	Using code from <https://github.com/spc476/mc6809>, which is an
	MC6809 emulator as a library.

[2]	Here's the raw disassembly:

2600 4F          - CLRA                     ; -0100 
2601 53          - COMB                     ; -aa01 
2602 86   0D     - LDA   #0D                ; -aa0- 
2604 97   D3     - STA   D3                 ; -aa0- 
2606 CC   3800   - LDD   #3800              ; -aa0- 
2609 DD   D1     - STD   D1                 ; -aa0- 
260B 0C   D3     - INC   D3                 ; -aaa- 
260D 8E   00EA   - LDX   #00EA              ; -aa0- 
2610 CC   0200   - LDD   #0200              ; -aa0- 
2613 ED   84     - STD   ,X                 ; -aa0- 
2615 86   21     - LDA   #21                ; -aa0- 
2617 D6   D3     - LDB   D3                 ; -aa0- 
2619 ED   02     - STD   2,X                ; -aa0- 
261B DC   D1     - LDD   D1                 ; -aa0- 
261D ED   04     - STD   4,X                ; -aa0- 
261F AD   9FC004 - JSR   [C004]             ; ----- 
2623 6D   06     - TST   6,X                ; -aa0- 
2625 26   08     - BNE   262F               ; ----- forwards 
2627 4C          - INCA                     ; -aaa- 
2628 81   3D     - CMPA  #3D                ; uaaaa 
262A 25   DD     - BLO   2609               ; ----- backwards unsigned
262C 7E   3900   - JMP   3900               ; ----- 
262F 7E   D709   - JMP   D709               ; ----- 

-- 
Coco mailing list
[email protected]
https://pairlist5.pair.net/mailman/listinfo/coco
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.