// ============================================
// output - Disassembled Source
// ============================================
// KickAssembler syntax
// Generated by Restore 64 v0.2.1 alpha build 298, 2026-04-11 21:35:11
// https://restore64.dev by datucker / Rabenauge
//
// Load address: $0801  End: $0cbf  (1215 bytes)
// Entry point:  $0900 (via BASIC SYS 2304)
//
// Code: 517 bytes, Data: 698 bytes
// Labels: 45, Subroutines: 1
//
// Cross-references: all OK
// ============================================


// --- Region $082b-$0869 ---
.pc = $082b "loc_082b"

loc_082b:
        lda #$07
        sta $d027
        lda #$02
        sta $d028
        lda #$06
        sta $d029
        lda #$08
        sta $d02a
        nop
        ldx #$0c
        ldy #$05
        clc
        jsr $fff0
        ldx #$00
        ldy #$00

loc_084c:
        lda $0870,y
        jsr $ffd2
        jsr sub_099f
        iny
        cpy #$90
        bne loc_084c

loc_085a:
        inc $d020
        jsr $ffe4
        beq loc_085a
        lda #$00
        sta $d015
        jmp loc_0a80

// --- Region $0900-$0aca ---
.pc = $0900 "main_0900"

main_0900:
        lda #$00
        sta $d020
        sta $d021
        lda #$93
        jsr $ffd2
        lda #$07
        sta $d027
        lda #$02
        sta $d028
        lda #$06
        sta $d029
        lda #$08
        sta $d02a
        lda #$00
        sta $05
        sta $03
        lda #$0f
        sta $d015

loc_092c:
        lda #$2c
        sta $07f8
        lda #$2d
        sta $07f9
        lda #$2e
        sta $07fa
        lda #$2f
        sta $07fb
        lda #$0f
        sta $d01d
        sta $d017

loc_0948:
        lda #$50
        sta $d000
        lda #$80
        sta $d002
        lda #$b0
        sta $d004
        lda #$e0
        sta $d006

loc_095c:
        inc $d000
        inc $d000
        inc $d000
        inc $d002
        dec $d006
        dec $d006
        dec $d006
        dec $d004
        jsr sub_099f
        lda $d000
        cmp #$e0
        bne loc_095c
        lda $07f8
        cmp #$2f
        bne loc_0988
        jmp loc_0a4f

loc_0988:
        lda #$2f
        sta $07f8
        lda #$32
        sta $07f9
        lda #$31
        sta $07fa
        lda #$30
        sta $07fb
        jmp loc_0a38
// Referenced by: jsr from $0852, $0974, $09e6, $09fc

sub_099f:
        ldx #$0b
        lda #$00
        sta $02

loc_09a5:
        inc $02
        lda $02
        cmp #$ff
        bne loc_09a5
        dex
        cpx #$00
        bne loc_09a5

smc_09b2:
        nop                                         // !SMC: modified by $09dd
        lda $d001
        cmp #$d0
        bne loc_09bd
        jmp loc_09ca

loc_09bd:
        inc $d001
        inc $d003
        inc $d005
        inc $d007
        rts

loc_09ca:
        lda $03
        cmp #$04
        beq loc_09db
        lda $d000
        cmp #$e0
        beq loc_09d8
        rts

loc_09d8:
        inc $03
        rts

loc_09db:
        lda #$60
        sta smc_09b2                                // SMC: modifies $09b2

loc_09e0:
        dec $d001
        dec $d005
        jsr sub_099f
        lda $d001
        cmp #$c0
        bne loc_09e0

loc_09f0:
        dec $d001
        dec $d003
        dec $d005
        dec $d007
        jsr sub_099f
        lda $d001
        cmp #$40
        bne loc_09f0
        ldy #$00
        ldx #$00

loc_0a0a:
        lda #$00
        sta $d027
        sta $d028
        sta $d029
        sta $d02a

loc_0a18:
        inc $d027
        inc $d028
        inc $d029
        inc $d02a
        inc $05
        lda $05
        cmp #$ff
        bne loc_0a18
        lda #$00
        sta $05
        inx
        cpx #$ff
        bne loc_0a0a
        jmp loc_082b

loc_0a38:
        lda #$08
        sta $d027
        lda #$06
        sta $d028
        lda #$02
        sta $d029
        lda #$07
        sta $d02a
        jmp loc_0948

loc_0a4f:
        lda #$07
        sta $d027
        lda #$02
        sta $d028
        lda #$06
        sta $d029
        lda #$08
        sta $d02a
        jmp loc_092c

dat_0a66:
        .byte $00                                   // .

loc_0a67:
        lda #$07
        sta $d027
        lda #$02
        sta $d028
        lda #$06
        sta $d029
        lda #$08
        sta $d02a
        jmp loc_092c

dat_0a7e:
        .byte $00,$00                               // ..

loc_0a80:
        nop
        nop
        nop
        nop
        ldx #$41
        ldy #$00
        lda #$bf
        sta $02
        lda #$4c
        sta $03
        lda #$ff
        sta $04
        lda #$bf
        sta $05

loc_0a98:
        lda ($02),y
        sta ($04),y
        cmp #$ff
        dey
        bne loc_0a98
        dec $03
        dec $05
        dex
        cpx #$00
        bne loc_0a98
        lda $150d
        adc #$fd
        sta $0af0
        lda $150e
        adc #$7a
        sta $0af1
        lda #$36
        sta $01
        lda #$00
        sta $d017
        sta $d01d
        jmp $fce2

dat_0ac9:
        .byte $d0,$f7                               // ..

// ============================================
// Data blocks
// ============================================

// --- Region $0801-$080a ---
.pc = $0801 "dat_0801"

dat_0801:
        // === BASIC loader stub ===
        .byte $0b,$08                               // next line pointer ($080b)
        .byte $00,$00                               // line number 0
        .byte $9e                                   // SYS token
        .text "2304"                                // SYS 2304 → main_0900
        .byte $00                                   // end of line

// --- Region $086a-$08ff ---
.pc = $086a "dat_086a"

dat_086a:
        .text "DEEL"
        .byte $f5,$00,$9e

txt_0871:
        .text "*** BERT PROUDLY PRESENTS ***"
        .byte $8d,$8d,$8d                           // ...

txt_0891:
        .text "          "
        .byte $1c                                   // .

txt_089c:
        .text "***DIAMOND MINE!***"
        .byte $8d,$8d,$8d,$20,$20,$9e               // ...  .

txt_08b5:
        .text "*** PRESS ANY KEY TO CONTINIUE! ***"
        .byte $8d,$8d,$8d,$20,$20,$20,$1c           // ...   .

txt_08df:
        .text "*** GREETINGS TO ALL PIRATE'S ***"

// --- Region $0acb-$0cbf ---
.pc = $0acb "Program $0acb"
        .byte $e6,$03,$e6,$05,$ca,$e0,$00,$d0,$ee,$6c,$02,$80,$01,$00,$00,$00 // .........l......
        .fill 11, $00
        .byte $02,$a9,$03,$8d,$89,$02,$60           // ......`

txt_0aed:
        .text "KANGA1"
        .byte $8e,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 // .............

spr_0b00:
        // === Sprite data (64 bytes, $0b00-$0b3f) ===
        .byte $0f,$ff,$c0                           // ....##############......
        .byte $1f,$ff,$e0                           // ...################.....
        .byte $39,$c0,$70                           // ..###..###.......###....
        .byte $31,$80,$30                           // ..##...##.........##....
        .byte $31,$80,$30                           // ..##...##.........##....
        .byte $39,$80,$30                           // ..###..##.........##....
        .byte $1d,$80,$30                           // ...###.##.........##....
        .byte $01,$c0,$70                           // .......###.......###....
        .byte $01,$ff,$e0                           // .......############.....
        .byte $01,$ff,$e0                           // .......############.....
        .byte $01,$f0,$70                           // .......#####.....###....
        .byte $01,$e0,$38                           // .......####.......###...
        .byte $01,$c0,$18                           // .......###.........##...
        .byte $01,$c0,$18                           // .......###.........##...
        .byte $1d,$c0,$18                           // ...###.###.........##...
        .byte $39,$c0,$18                           // ..###..###.........##...
        .byte $31,$c0,$18                           // ..##...###.........##...
        .byte $31,$e0,$38                           // ..##...####.......###...
        .byte $39,$f0,$70                           // ..###..#####.....###....
        .byte $1f,$ff,$e0                           // ...################.....
        .byte $0f,$ff,$c0                           // ....##############......
        .byte $3f                                   // sprite 0 padding

spr_0b40:
        // === Sprite data (64 bytes, $0b40-$0b7f) ===
        .byte $0f,$ff,$c0                           // ....##############......
        .byte $1f,$ff,$e0                           // ...################.....
        .byte $1e,$00,$70                           // ...####..........###....
        .byte $1c,$00,$30                           // ...###............##....
        .byte $1c,$00,$60                           // ...###...........##.....
        .byte $1c,$00,$00                           // ...###..................
        .byte $1c,$00,$00                           // ...###..................
        .byte $1e,$00,$00                           // ...####.................
        .byte $0f,$fc,$00                           // ....##########..........
        .byte $0f,$fc,$00                           // ....##########..........
        .byte $1e,$00,$00                           // ...####.................
        .byte $1c,$00,$00                           // ...###..................
        .byte $1c,$00,$00                           // ...###..................
        .byte $1c,$00,$00                           // ...###..................
        .byte $1c,$00,$00                           // ...###..................
        .byte $1c,$00,$00                           // ...###..................
        .byte $1c,$00,$60                           // ...###...........##.....
        .byte $1e,$00,$30                           // ...####...........##....
        .byte $1f,$ff,$f0                           // ...#################....
        .byte $1f,$ff,$e0                           // ...################.....
        .byte $0f,$ff,$c0                           // ....##############......
        .byte $07                                   // sprite 0 padding

spr_0b80:
        // === Sprite data (64 bytes, $0b80-$0bbf) ===
        .byte $1f,$ff,$80                           // ...##############.......
        .byte $3f,$ff,$c0                           // ..################......
        .byte $73,$80,$e0                           // .###..###.......###.....
        .byte $63,$00,$60                           // .##...##.........##.....
        .byte $63,$00,$60                           // .##...##.........##.....
        .byte $73,$00,$60                           // .###..##.........##.....
        .byte $3b,$00,$60                           // ..###.##.........##.....
        .byte $03,$80,$e0                           // ......###.......###.....
        .byte $03,$ff,$c0                           // ......############......
        .byte $03,$ff,$80                           // ......###########.......
        .byte $03,$83,$80                           // ......###.....###.......
        .byte $03,$01,$80                           // ......##.......##.......
        .byte $03,$00,$c0                           // ......##........##......
        .byte $03,$00,$60                           // ......##.........##.....
        .byte $3b,$00,$60                           // ..###.##.........##.....
        .byte $73,$00,$60                           // .###..##.........##.....
        .byte $63,$00,$60                           // .##...##.........##.....
        .byte $63,$00,$60                           // .##...##.........##.....
        .byte $73,$00,$6c                           // .###..##.........##.##..
        .byte $3f,$00,$7c                           // ..######.........#####..
        .byte $1f,$00,$78                           // ...#####.........####...
        .byte $3f                                   // sprite 0 padding

spr_0bc0:
        // === Sprite data (64 bytes, $0bc0-$0bff) ===
        .byte $1f,$ff,$f8                           // ...##################...
        .byte $3f,$ff,$fc                           // ..####################..
        .byte $30,$7e,$0c                           // ..##.....######.....##..
        .byte $30,$3c,$0c                           // ..##......####......##..
        .byte $18,$18,$18                           // ...##......##......##...
        .byte $00,$18,$00                           // ...........##...........
        .byte $00,$18,$00                           // ...........##...........
        .byte $00,$18,$00                           // ...........##...........
        .byte $00,$18,$00                           // ...........##...........
        .byte $00,$18,$00                           // ...........##...........
        .byte $00,$18,$00                           // ...........##...........
        .byte $00,$18,$00                           // ...........##...........
        .byte $00,$18,$00                           // ...........##...........
        .byte $00,$18,$00                           // ...........##...........
        .byte $00,$18,$00                           // ...........##...........
        .byte $00,$18,$00                           // ...........##...........
        .byte $00,$18,$00                           // ...........##...........
        .byte $00,$18,$00                           // ...........##...........
        .byte $00,$18,$00                           // ...........##...........
        .byte $00,$18,$00                           // ...........##...........
        .byte $00,$18,$00                           // ...........##...........
        .byte $00                                   // sprite 0 padding

spr_0c00:
        // === Sprite data (64 bytes, $0c00-$0c3f) ===
        .byte $03,$ff,$f0                           // ......##############....
        .byte $07,$ff,$f8                           // .....################...
        .byte $0e,$03,$9c                           // ....###.......###..###..
        .byte $0c,$01,$8c                           // ....##.........##...##..
        .byte $0c,$01,$8c                           // ....##.........##...##..
        .byte $0c,$01,$9c                           // ....##.........##..###..
        .byte $0c,$01,$b8                           // ....##.........##.###...
        .byte $0e,$03,$80                           // ....###.......###.......
        .byte $07,$ff,$80                           // .....############.......
        .byte $07,$ff,$80                           // .....############.......
        .byte $0e,$0f,$80                           // ....###.....#####.......
        .byte $1c,$07,$80                           // ...###.......####.......
        .byte $18,$03,$80                           // ...##.........###.......
        .byte $18,$03,$80                           // ...##.........###.......
        .byte $18,$03,$b8                           // ...##.........###.###...
        .byte $18,$03,$9c                           // ...##.........###..###..
        .byte $18,$03,$8c                           // ...##.........###...##..
        .byte $1c,$07,$8c                           // ...###.......####...##..
        .byte $0e,$0f,$9c                           // ....###.....#####..###..
        .byte $07,$ff,$f8                           // .....################...
        .byte $03,$ff,$f0                           // ......##############....
        .byte $3f                                   // sprite 0 padding

spr_0c40:
        // === Sprite data (64 bytes, $0c40-$0c7f) ===
        .byte $03,$ff,$f0                           // ......##############....
        .byte $07,$ff,$f8                           // .....################...
        .byte $0e,$00,$78                           // ....###..........####...
        .byte $0c,$00,$38                           // ....##............###...
        .byte $06,$00,$38                           // .....##...........###...
        .byte $00,$00,$38                           // ..................###...
        .byte $00,$00,$38                           // ..................###...
        .byte $00,$00,$78                           // .................####...
        .byte $00,$3f,$f0                           // ..........##########....
        .byte $00,$3f,$f0                           // ..........##########....
        .byte $00,$00,$78                           // .................####...
        .byte $00,$00,$38                           // ..................###...
        .byte $00,$00,$38                           // ..................###...
        .byte $00,$00,$38                           // ..................###...
        .byte $00,$00,$38                           // ..................###...
        .byte $00,$00,$38                           // ..................###...
        .byte $06,$00,$38                           // .....##...........###...
        .byte $0c,$00,$78                           // ....##...........####...
        .byte $0f,$ff,$f8                           // ....#################...
        .byte $07,$ff,$f8                           // .....################...
        .byte $03,$ff,$f0                           // ......##############....
        .byte $07                                   // sprite 0 padding

spr_0c80:
        // === Sprite data (64 bytes, $0c80-$0cbf) ===
        .byte $01,$ff,$f8                           // .......##############...
        .byte $03,$ff,$fc                           // ......################..
        .byte $07,$01,$ce                           // .....###.......###..###.
        .byte $06,$00,$c6                           // .....##.........##...##.
        .byte $06,$00,$c6                           // .....##.........##...##.
        .byte $06,$00,$ce                           // .....##.........##..###.
        .byte $06,$00,$dc                           // .....##.........##.###..
        .byte $07,$01,$c0                           // .....###.......###......
        .byte $03,$ff,$c0                           // ......############......
        .byte $01,$ff,$c0                           // .......###########......
        .byte $01,$c1,$c0                           // .......###.....###......
        .byte $01,$80,$c0                           // .......##.......##......
        .byte $03,$00,$c0                           // ......##........##......
        .byte $06,$00,$c0                           // .....##.........##......
        .byte $06,$00,$dc                           // .....##.........##.###..
        .byte $06,$00,$ce                           // .....##.........##..###.
        .byte $06,$00,$c6                           // .....##.........##...##.
        .byte $06,$00,$c6                           // .....##.........##...##.
        .byte $36,$00,$ce                           // ..##.##.........##..###.
        .byte $3e,$00,$fc                           // ..#####.........######..
        .byte $1e,$00,$f8                           // ...####.........#####...
        .byte $3f                                   // sprite 0 padding
