views:

137

answers:

1

I have the following asm code:

    org $1000             ;Table Origin is at $1000
fcb $02,$04,$06,$08   ; values of table from $1001 - $1004
fcb $0a,$0c,$0e,$10   ; values of table from $1005 - $1009


        org $400          ; Program Start
        lds #$4000        ; Set Stack Pointer at value (#) $4000
        ldy #$1000        ; Set Index Y at $1000
        ldaa #$04         ; Load Accumulator a with value $04
loop    staa $20,y        ; Store value of Accumulator a at y = $1000 {DOESNT WORK} 
        staa $21,y        ; Store value of Accumulator a at y = $1021 {DOESNT WORK}
        iny               ; increment y (at this point $1020 and $1021 are still ff)
        iny               ; increment y (at this point $1020 and $1021 are still ff)
        deca              ; decrement a
        bne loop          ; loop until a = 0
hold    bra hold          ; end of program
        end

The table is set properly but the staa writes nothing at 1020 on. Why?

+2  A: 

I believe there is ROM there

10.3 ROM Array

The ROM is made of a 28K byte array mapped from $1000 to $7FFF and of a 32 K byte array mapped from $8000 to $FFFF at reset. The MAPROM bit in the MISC register allows the swapping of the two arrays. ROMON28 and ROMON32 enable or disable the ROM module

From the M68HC12 datasheet

epatel
You are right!!! Except the ROM Area is from $1000-$2000. Thank you
kthakore