Quote Originally Posted by kur4o View Post
If there is no space just use what is possible, In the end it will be much easier to add different reading format on the app side than mod the pcm side to cover the existing one.
Done. Here is my proposed code. Execute and it sends 447 $80 byte messages with the reply $06 $55 and the last one is marked $06 $A0

Code:
D_SEND_ALDL    EQU    $0008            ; SEND ALDL MESSAGE
D_RESET_COP    EQU    $000B            ; RESET COP TIMERS
D_F_OE_ACTIVE    EQU    $000E            ; MAKE FLASH OE ACTIVE
D_F_OE_INACTIVE    EQU    $0011            ; MAKE FLASH OE INACTIVE
D_N_X_1MS_DELAY    EQU    $0014            ; DELAY: 1MS * ACCA
D_D10MS_DELAY    EQU    $0017            ; 10MS DELAY
D_CHK_CLR_OC1    EQU    $001A            ; CHECK AND CLEAR OC1
D_INIT_OC1_20MS    EQU    $001D            ; INITIALIZE OC1: 20MS
D_SUCCESS_MSG    EQU    $0020            ; SEND SUCCESS MESSAGE
D_SET_VPPH    EQU    $0023            ; SET VPP TO VPPH: 12V
D_SET_VPPL    EQU    $0026            ; SET VPP TO VPPL
D_FLASH_IDMC    EQU    $0029            ; READ FLASH ID, MANUFACTURE CODES


        ORG    $0000            ; SET ORIGIN

START        DB    $E4            ; TARGET DEVICE
        DB    $8A            ; LENGTH
        DB    $06            ; UPLOAD AND EXECUTE PROGRAM SEGMENT
        DB    $18            ; ADDRESS H
        DB    $10            ; ADDRESS L

        LDY    #$2000            ; INITIAL LOCATION LESS $80

NEXT_BLOCK    LDX    #$1F7E            ; BUFFER

        LDD    #$06AA            ; MODE:MESSAGE SUCCESS
        CPY    #$FF80            ; 
        BEQ    XFER_LAST        ; 

        LDD    #$0655            ; MODE:MESSAGE PENDING
XFER_LAST    STD    $00,X            ; SET MESSAGE CONTENT

        LDAB    #$80            ; SET THE BYTE COUNT

        CPY    #$0000            ; TEST FOR COMPLETE
        BEQ    COMPLETE        ;


XFER_LOOP    LDAA    $00,Y            ; READ FLASH
        STAA    $02,X            ; SAVE TO BUFFER

        INY                ; INCREMENT SOURCE
        INX                ; INCREMENT DESTINATION

        DECB                ; DECREMENT COUNT
        BNE    XFER_LOOP        ; LOOP TILL ZERO

        LDX    #$1F7E            ; BUFFER HEAD

        LDAB    #$82            ; MESSAGE CONTENT LENGTH
        JSR    $0008            ; D_SEND_ALDL

        BRA    NEXT_BLOCK        ; 

COMPLETE    RTS                ; 

        DB    $69            ; CHECKSUM

        END    START
-Tom