Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- .bank 0
- .org $0500 ;;put code in ram
- WaitFlashReady:
- ; lda #$00
- ; sta $C000 ;;set bank to 0
- WaitFlashReadyLoop
- lda [destLo], y
- cmp [destLo], y
- bne WaitFlashReadyLoop ;;loop until value read is same twice in a row
- ; lda #$F0
- ; sta $8000 ;;send reset
- rts
- .ifdef GTROM
- SectorErase:
- ; 5555=AA
- lda #$AA
- sta $D555
- ; 2AAA=55
- lda #$55
- sta $AAAA
- ; 5555=80
- lda #$80
- sta $D555
- ; 5555=AA
- lda #$AA
- sta $D555
- ; 2AAA=55
- lda #$55
- sta $AAAA
- ; sector address=30
- lda destBank
- ora #%00110000
- sta $5000 ;;set bank address = sector / 4
- ldy #$00
- lda #$30
- sta [destLo], y ;;erase the sector
- jsr WaitFlashReady
- lda returnBank
- ora #%01110000
- sta $5000
- rts
- ByteProgram:
- pha
- ; 5555=AA
- lda #$AA
- sta $D555
- ; 2AAA=55
- lda #$55
- sta $AAAA
- ; 5555=A0
- lda #$A0
- sta $D555
- ; addr=data
- lda destBank
- ora #%00110000
- sta $5000
- pla
- sta [destLo], y
- jsr WaitFlashReady
- lda returnBank
- ora #%01110000
- sta $5000
- rts
- .else
- SectorErase:
- ; 5555=AA 0101 a15=0 a14=1 bank 1
- lda #$01
- sta $C000 ; set bank to 1 for correct A15-14
- lda #$AA
- sta $9555 ; 8000 + 1555, bank = 4000
- ; 2AAA=55 0010 a15=0 a14=0 bank 0
- lda #$00
- sta $C000
- lda #$55
- sta $AAAA ; 8000 + 2AAA, bank = 0000
- ; 5555=80
- lda #$01
- sta $C000 ; set bank to 1 for correct A15-14
- lda #$80
- sta $9555 ; 8000 + 1555, bank = 4000
- ; 5555=AA
- lda #$01
- sta $C000 ; set bank to 1 for correct A15-14
- lda #$AA
- sta $9555 ; 8000 + 1555, bank = 4000
- ; 2AAA=55
- lda #$00
- sta $C000
- lda #$55
- sta $AAAA ; 8000 + 2AAA, bank = 0000
- ; sector address=30
- lda destBank
- sta $C000 ;;set bank address = sector / 4
- ldy #$00
- lda #$30
- sta [destLo], y ;;erase the sector
- jsr WaitFlashReady
- lda returnBank
- sta $C000
- rts
- ByteProgram:
- pha
- ; 5555=AA 0101 a15=0 a14=1 bank 1
- lda #$01
- sta $C000 ; set bank to 1 for correct A15-14
- lda #$AA
- sta $9555 ; 8000 + 1555, bank = 4000
- ; 2AAA=55 0010 a15=0 a14=0 bank 0
- lda #$00
- sta $C000
- lda #$55
- sta $AAAA ; 8000 + 2AAA, bank = 0000
- ; 5555=A0
- lda #$01
- sta $C000 ; set bank to 1 for correct A15-14
- lda #$A0
- sta $9555 ; 8000 + 1555, bank = 4000
- ; addr=data
- lda destBank
- sta $C000
- pla
- sta [destLo], y
- jsr WaitFlashReady
- lda returnBank
- sta $C000
- rts
- .endif
- SectorProgram: ;;programs 256 bytes from RAM to flash
- ldy #$00
- SectorProgramLoop:
- lda [sourceLo], y
- jsr ByteProgram
- iny
- bne SectorProgramLoop
- rts
- .org $8600 ;;do not change location of copyramcode
- CopyRAMCode:
- ldy #$00
- CopyRAMCodeLoop:
- lda $8500, y ;;copy flashing code to ram
- sta $0500, y
- iny
- cpy #$E0 ;;90 actually used
- bne CopyRAMCodeLoop
- rts
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement