snake6502/src/cart.asm

57 lines
980 B
NASM

processor 6502
; SEGMENTS
SEG.U zeropageSegment
org $02
SEG loaderSegment
org $8000
; LOADER
SEG loaderSegment
cartridge SUBROUTINE
WORD .coldstart
WORD .warmstart
; CBM80 in PETSCII (cartridge signature for autostart)
BYTE #$c3,#$c2,#$cd,#$38,#$30
.coldstart:
sei
stx $d016
jsr $fda3
jsr $fd50
jsr $fd15
jsr $ff5b
cli
.warmstart:
; address of input compressed data
lda #<.lzpack
sta srcPointer
lda #>.lzpack
sta srcPointer + 1
; address of output decompressed data
lda #$00
sta dstPointer
lda #$10
sta dstPointer + 1
jsr inflate
; jump to program entry
jmp $2800
; compressed pack
.lzpack:
INCBIN "bin/snake.pack.lz"
; decompression util
INCLUDE "lzgmini.asm"
ECHO "8k CARTRIDGE SIZE:",(. - $8000),"=",[(. - $8000)d]
ECHO "SPACE LEFT:",($9fff - .),"=",[($9fff - .)d]
; force filler for the *PROM
. = $9fff
BYTE #$ff