// ============================================
// output - Disassembled Source
// ============================================
// KickAssembler syntax
// Generated by Restore 64 v0.2.1 alpha build 298, 2026-04-11 21:35:53
// https://restore64.dev by datucker / Rabenauge
//
// Load address: $0800  End: $0fff  (2048 bytes)
// Crunched with Cruncher AB — depacked by emulation
// Packer entry: $080d (via BASIC SYS 2061)
// Entry point:  $0810 (2064)
// IRQ handler:  $0a20 (irq_0a20)
//
// Code: 546 bytes, Data: 1502 bytes
// Labels: 80, Subroutines: 8
//
// Cross-references: all OK
// ============================================


// --- Region $0810-$0898 ---
.pc = $0810 "main_0810"

main_0810:
        lda #$00
        sta $d020
        sta $d021
        lda #$0e
        sta $0286
        jsr $e544
        lda #$08
        jsr $ffd2
        ldx #$01
        ldy #$0e
        stx $d022
        sty $d023
        lda #$e1
        sta $0328
        ldx #$00

loc_0836:
        lda $0808,x
        sta chr_0800,x
        inx
        cpx #$08
        bne loc_0836
        ldx #$00

loc_0843:
        lda txt_0908,x
        sta $04c8,x
        inx
        cpx #$f0
        bne loc_0843
        ldx #$00

loc_0850:
        lda txt_0908,x
        sta $06f8,x
        lda $0930,x
        sta $06d0,x
        lda $0958,x
        sta $06a8,x
        lda $0980,x
        sta $0680,x
        lda $09a8,x
        sta $0658,x
        lda $09d0,x
        sta $0630,x
        inx
        cpx #$28
        bne loc_0850
        lda #$59
        sta $d012
        jsr sub_0ba3
        ldx #$00

loc_0883:
        lda #$00
        sta $d9e0,x
        lda #$a0
        sta $05e0,x
        inx
        cpx #$28
        bne loc_0883
        lda #$c7
        sta $02
        jmp loc_0a00

// --- Region $0a00-$0ace ---
.pc = $0a00 "loc_0a00"

loc_0a00:
        sei
        ldx #$20
        ldy #$0a
        stx $0314
        sty $0315
        ldx #$1b
        ldy #$81
        lda #$00
        stx $d011
        sty $d01a
        sta $dc0e
        cli

loc_0a1b:
        jmp loc_0a1b

chr_0a1e:
        // === Charset data (2 bytes, $0a1e-$0a1f) ===
        .byte $00,$00                               // char 0 (partial)

irq_0a20:
        dec $d019
        ldy #$0c

loc_0a25:
        dey
        bne loc_0a25
        lda #$12
        sta $d018
        lda #$18
        sta $d016
        ldx #$00

loc_0a34:
        lda $0b00,x
        sta $d023
        sta $d023
        ldy $0b31,x

loc_0a40:
        dey
        bne loc_0a40
        inx
        cpx #$31
        bne loc_0a34
        ldy #$53

loc_0a4a:
        dey
        bne loc_0a4a
        lda #$15
        sta $d018
        lda $02
        sta $d016
        ldx #$00

loc_0a59:
        lda $0bc0,x
        sta $d021
        sta $d021
        ldy $0bc8,x

loc_0a65:
        dey
        bne loc_0a65
        inx
        cpx #$08
        bne loc_0a59
        lda #$18
        sta $d016
        lda #$12
        sta $d018
        ldy #$4f

loc_0a79:
        dey
        bne loc_0a79
        lda #$06
        sta $d020
        sta $d021
        ldx #$31

loc_0a86:
        lda dat_0aff,x
        sta $d023
        lda $0c07,x
        sta $d016
        ldy $0bcf,x

loc_0a95:
        dey
        bne loc_0a95
        dex
        cpx #$00
        bne loc_0a86
        lda #$00
        sta $d020
        sta $d021
        lda #$15
        sta $d018
        lda #$18
        sta $d016
        jsr sub_0cf0
        jsr sub_0c40

loc_0ab5:
        jsr sub_0b70
        dec $0baf
        bne loc_0ab5
.label smc_0abe = * + 1
        lda #$02                                    // !SMC: modified by $0bb3
        sta $0baf
        lda $dc01
        cmp #$ef
        bne loc_0acc
        jmp loc_0d00

loc_0acc:
        jmp $ea31

// --- Region $0b70-$0bbc ---
.pc = $0b70 "sub_0b70"
// Referenced by: jsr from $0ab5

sub_0b70:
        ldx $02
        dex
        cpx #$bf
        beq loc_0b7a
        stx $02
        rts

loc_0b7a:
        lda #$c7
        sta $02
        ldy #$00

loc_0b80:
        lda $05e1,y
        sta $05e0,y
        iny
        cpy #$27
        bne loc_0b80

loc_0b8b:
.label smc_0b8c = * + 1
.label smc_0b8d = * + 2
        lda $0de0                                   // !SMC: modified by $0ba7, $0baa
        beq sub_0ba3
        cmp #$40
        bpl loc_0bb0
        clc
        adc #$80
        sta $0607

// Referenced by: jsr from $0bb6
sub_0b9a: {
        inc smc_0b8c
        bne done
        inc smc_0b8d
done:
        rts
}
// Referenced by: jsr from $087e; branch from $0b8e

sub_0ba3:
        ldx #$0d
        ldy #$70
        stx smc_0b8d                                // SMC: modifies $0b8d
        sty smc_0b8c                                // SMC: modifies $0b8c
        rts

chr_0bae:
        // === Charset data (2 bytes, $0bae-$0baf) ===
        .byte $00,$02                               // char 0 (partial)

loc_0bb0:
        sec
        sbc #$40
        sta smc_0abe                                // SMC: modifies $0abe
        jsr sub_0b9a
        jmp loc_0b8b

chr_0bbc:
        // === Charset data (1 bytes, $0bbc-$0bbc) ===
        .byte $00                                   // char 0 (partial)

// --- Region $0c40-$0c69 ---
.pc = $0c40 "sub_0c40"
// Referenced by: jsr from $0ab2

sub_0c40:
        dec $0c3f
        beq loc_0c46
        rts

loc_0c46:
        lda #$02
        sta $0c3f
        ldx $0a
        lda chr_0c6a,x
        sta $0c38
        inx
        cpx #$28
        bne loc_0c5a
        ldx #$00

loc_0c5a:
        stx $0a
        ldy #$00

loc_0c5e:
        lda $0c09,y
        sta $0c08,y
        iny
        cpy #$30
        bne loc_0c5e
        rts

// --- Region $0c98-$0cb6 ---
.pc = $0c98 "sub_0c98"
// Referenced by: jsr from $0cfb

sub_0c98:
        ldx $14
        lda $0cb8,x
        sta $0b2f
        inx
        cpx #$34
        bne loc_0ca7
        ldx #$00

loc_0ca7:
        stx $14
        ldy #$00

loc_0cab:
        lda $0b00,y
        sta dat_0aff,y
        iny
        cpy #$30
        bne loc_0cab
        rts

// --- Region $0cf0-$0d19 ---
.pc = $0cf0 "sub_0cf0"
// Referenced by: jsr from $0aaf

sub_0cf0:
        dec $0cef
        beq loc_0cf6
        rts

loc_0cf6:
        lda #$02
        sta $0cef
        jsr sub_0c98
        rts

chr_0cff:
        // === Charset data (1 bytes, $0cff-$0cff) ===
        .byte $00                                   // char 0 (partial)

loc_0d00:
        sei
        jsr $fda3
        jsr $fd15
        jsr sub_0d50
        cli
        ldx #$00

loc_0d0d:
        lda chr_0d19,x
        sta $0100,x
        inx
        bne loc_0d0d
        jmp $0100

chr_0d19:
        // === Charset data (1 bytes, $0d19-$0d19) ===
        .byte $78                                   // char 0 (partial)

// --- Region $0d50-$0d60 ---
.pc = $0d50 "sub_0d50"
// Referenced by: jsr from $0d07

sub_0d50:
        jsr $ff5b
        ldx #$00

loc_0d55:
        lda $0d63,x
        sta $0400,x
        inx
        cpx #$0a
        bne loc_0d55
        rts

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

// --- Region $0800-$080f ---
.pc = $0800 "chr_0800"

chr_0800:
        // === Charset data (16 bytes, $0800-$080f) ===
        .byte $00,$00,$00,$6b,$6b,$6b,$6b,$7f       // char 0 @+0
        .byte $55,$6b,$6b,$6b,$6b,$6b,$6b,$7f       // char 1 @+1

// --- Region $0899-$0899 ---
.pc = $0899 "dat_0899"

dat_0899:
        // === Fill data (1 bytes, $0899-$0899) ===
        .byte $00                                   // .

// --- Region $0908-$09d3 ---
.pc = $0908 "txt_0908"

txt_0908:
        .byte $20                                   // char 13 (partial)
        .byte $20,$20,$20,$00,$00                   // char 14 (partial)

txt_090e:
        .byte $20,$20,$20                           // char 14 (partial)
        .byte $20,$20,$00                           // char 15 (partial)

txt_0914:
        .byte $20,$20,$20,$20,$20                   // char 15 (partial)
        .byte $00,$00,$00,$00,$00,$20,$20,$00       // char 16 @+16
        .byte $00,$00,$00,$00,$20,$20,$00,$00       // char 17 @+17
        .byte $00,$00,$00                           // char 18 (partial)

txt_092c:
        .byte $20,$20,$20,$20,$20                   // char 18 (partial)
        .byte $20,$20,$20,$00,$00                   // char 19 (partial)

txt_0936:
        .byte $20,$20,$20                           // char 19 (partial)
        .byte $20,$00,$00,$00                       // char 20 (partial)

txt_093d:
        .byte $20,$20,$20,$20                       // char 20 (partial)
        .byte $20,$20,$00,$00,$20,$20,$20,$00       // char 21 @+21
        .byte $00,$00                               // char 22 (partial)

txt_094b:
        .byte $20,$20,$20,$20,$00,$00               // char 22 (partial)
        .byte $20,$00,$00                           // char 23 (partial)

txt_0954:
        .byte $20,$20,$20,$20,$20                   // char 23 (partial)
        .byte $20,$20,$20,$00,$00,$20,$20,$20       // char 24 @+24
        .byte $00,$00,$20,$00,$00                   // char 25 (partial)

txt_0966:
        .byte $20,$20,$20                           // char 25 (partial)
        .byte $20,$00,$00                           // char 26 (partial)

txt_096c:
        .byte $20,$20,$20,$20,$00                   // char 26 (partial)
        .byte $00                                   // char 27 (partial)

txt_0972:
        .byte $20,$20,$20,$20,$20,$00,$00           // char 27 (partial)
        .byte $00,$00,$00                           // char 28 (partial)

txt_097c:
        .byte $20,$20,$20,$20,$20                   // char 28 (partial)
        .byte $20,$20,$20,$00,$00,$20,$20,$00       // char 29 @+29
        .byte $00,$00,$00,$00,$00,$00,$20,$20       // char 30 @+30
        .byte $00,$00,$00,$00,$00,$20,$20,$00       // char 31 @+31
        .byte $00,$00,$00,$00,$20,$20,$00,$00       // char 32 ' '
        .byte $00,$00                               // char 33 (partial)

txt_09a3:
        .byte $20,$20,$20,$20,$20,$20               // char 33 (partial)
        .byte $20,$20,$20,$00,$00                   // char 34 (partial)

txt_09ae:
        .byte $20,$20,$20                           // char 34 (partial)
        .byte $20,$20,$20,$20,$20,$20,$20,$20       // char 35 '#'
        .byte $20,$20,$20,$20,$20,$20,$20,$20       // char 36 '$'
        .byte $20,$20,$20,$20,$20,$20,$00,$00       // char 37 '%'
        .byte $20,$00,$00                           // char 38 (partial)

txt_09cc:
        .byte $20,$20,$20,$20,$20                   // char 38 (partial)
        .byte $20,$20,$20                           // char 39 (partial)

// --- Region $09f1-$09ff ---
.pc = $09f1 "dat_09f1"

dat_09f1:
        .byte $20,$00,$00                           // char 43 (partial)

txt_09f4:
        .byte $20,$20,$20,$20,$20                   // char 43 (partial)
        .byte $00,$00,$00,$00,$00,$00,$00           // char 44 (partial)

// --- Region $0acf-$0acf ---
.pc = $0acf "dat_0acf"

dat_0acf:
        // === Fill data (1 bytes, $0acf-$0acf) ===
        .byte $00                                   // .

// --- Region $0aff-$0b6f ---
.pc = $0aff "dat_0aff"

dat_0aff:
        .byte $08,$09,$00,$0f,$0a,$08,$09,$00       // char 6 @+6
        .byte $0a,$08,$09,$00,$08,$09,$00,$09       // char 7 @+7
        .byte $00,$06,$00,$06,$04,$00,$06,$04       // char 8 @+8
        .byte $0e,$00,$06,$04,$0e,$0f,$00,$06       // char 9 @+9
        .byte $04,$0e,$0f,$0d,$00,$06,$04,$0e       // char 10 @+10
        .byte $0f,$0d,$01,$07,$0f,$0a,$08,$09       // char 11 @+11
        .byte $09,$00,$01,$08,$08,$08,$08,$08       // char 12 @+12
        .byte $08,$08,$01,$08,$08,$08,$08,$08       // char 13 @+13
        .byte $08,$08,$01,$08,$08,$08,$08,$08       // char 14 @+14
        .byte $08,$08,$01,$08,$08,$08,$08,$08       // char 15 @+15
        .byte $08,$08,$01,$08,$08,$08,$08,$08       // char 16 @+16
        .byte $08,$08,$01,$08,$08,$08,$08,$08       // char 17 @+17
        .byte $08,$08,$01,$00,$00,$00,$00,$00       // char 18 @+18
        .byte $00,$00,$00,$00,$00,$00,$00,$00       // char 19 @+19
        .byte $00                                   // char 20 (partial)

// --- Region $0bbd-$0c3f ---
.pc = $0bbd "Program $0bbd"
        .byte $00,$00,$00,$01,$00,$0d,$0f           // char 0 (partial)
        .byte $0e,$04,$06,$00,$01,$08,$08,$08       // char 1 @+1
        .byte $08,$08,$08,$08,$01,$07,$07,$07       // char 2 @+2
        .byte $07,$07,$07,$07,$01,$08,$08,$07       // char 3 @+3
        .byte $07,$07,$07,$07,$01,$07,$07,$07       // char 4 @+4
        .byte $07,$07,$07,$07,$01,$08,$07,$07       // char 5 @+5
        .byte $07,$07,$07,$07,$01,$07,$07,$07       // char 6 @+6
        .byte $07,$07,$07,$07,$01,$07,$07,$07       // char 7 @+7
        .byte $07,$07,$07,$07,$01,$00,$00,$00       // char 8 @+8
        .byte $00,$00,$00,$00,$11,$11,$11,$10       // char 9 @+9
        .byte $10,$10,$10,$10,$10,$11,$11,$11       // char 10 @+10
        .byte $12,$12,$13,$13,$14,$14,$15,$15       // char 11 @+11
        .byte $16,$16,$16,$17,$17,$17,$17,$17       // char 12 @+12
        .byte $17,$16,$16,$16,$15,$15,$14,$14       // char 13 @+13
        .byte $13,$13,$12,$12,$11,$11,$11,$10       // char 14 @+14
        .byte $10,$10,$10,$10,$10,$00,$00,$00       // char 15 @+15
        .byte $00,$00,$00,$02                       // char 16 (partial)

// --- Region $0c6a-$0c97 ---
.pc = $0c6a "chr_0c6a"

chr_0c6a:
        // === Charset data (46 bytes, $0c6a-$0c97) ===
        .byte $17,$17,$17,$17,$16,$16,$16,$15       // char 0 @+0
        .byte $15,$14,$14,$13,$13,$12,$12,$11       // char 1 @+1
        .byte $11,$11,$10,$10,$10,$10,$10,$10       // char 2 @+2
        .byte $11,$11,$11,$12,$12,$13,$13,$14       // char 3 @+3
        .byte $14,$15,$15,$16,$16,$16,$17,$17       // char 4 @+4
        .byte $00,$00,$00,$00,$00,$00               // char 5 (partial)

// --- Region $0cb7-$0cef ---
.pc = $0cb7 "chr_0cb7"

chr_0cb7:
        // === Charset data (57 bytes, $0cb7-$0cef) ===
        .byte $00,$06,$00,$06,$04,$00,$06,$04       // char 0 @+0
        .byte $0e,$00,$06,$04,$0e,$0f,$00,$06       // char 1 @+1
        .byte $04,$0e,$0f,$0d,$00,$06,$04,$0e       // char 2 @+2
        .byte $0f,$0d,$01,$07,$0f,$0a,$08,$09       // char 3 @+3
        .byte $00,$07,$0f,$0a,$08,$09,$00,$0f       // char 4 @+4
        .byte $0a,$08,$09,$00,$0a,$08,$09,$00       // char 5 @+5
        .byte $08,$09,$00,$09,$00,$00,$00,$00       // char 6 @+6
        .byte $02                                   // char 7 (partial)

// --- Region $0d1a-$0d4f ---
.pc = $0d1a "Program $0d1a"
        .byte $a9,$34,$85,$01,$a9,$10,$a0           // char 0 (partial)
        .byte $00,$84,$fb,$85,$fc,$a9,$08,$a0       // char 1 @+1
        .byte $01,$84,$fd,$85,$fe,$a2,$f0,$b1       // char 2 @+2
        .byte $fb,$91,$fd,$c8,$d0,$f9,$e6,$fc       // char 3 @+3
        .byte $e6,$fe,$ca,$d0,$f2,$a9,$37,$85       // char 4 @+4
        .byte $01,$58,$4c,$e2,$fc,$00,$00,$00       // char 5 @+5
        .byte $00,$00,$00,$00,$00,$00,$00           // char 6 (partial)

// --- Region $0d61-$0ffe ---
.pc = $0d61 "chr_0d61"

chr_0d61:
        // === Charset data (670 bytes, $0d61-$0ffe) ===
        .byte $00,$00,$a0,$ad,$8c,$81,$9a,$85       // char 0 @+0
        .byte $92,$ad,$a0,$20,$00,$00,$00,$42       // char 1 @+1
        .byte $20,$01,$0e,$04,$20,$09,$14,$13       // char 2 @+2
        .byte $20,$01,$07,$01,$09,$0e,$20,$0c       // char 3 @+3
        .byte $01,$1a,$05,$12,$20,$01,$15,$13       // char 4 @+4
        .byte $14,$12,$09,$01,$20,$17,$08,$0f       // char 5 @+5
        .byte $20,$0b,$09,$03,$0b,$13,$20,$19       // char 6 @+6
        .byte $0f,$15,$12,$20,$01,$13,$13,$2e       // char 7 @+7
        .byte $06,$2e,$17,$2e,$04,$09,$1a,$1a       // char 8 @+8
        .byte $19,$20,$17,$01,$13,$20,$03,$12       // char 9 @+9
        .byte $01,$03,$0b,$05,$04,$20,$0f,$0e       // char 10 @+10

txt_0db9:
        .byte $20,$32,$36,$2f,$30,$33,$2f,$39       // char 11 @+11
        .byte $30,$20,$02,$19,$20,$14,$08,$05       // char 12 @+12
        .byte $20,$05,$04,$07,$05                   // char 13 (partial)

txt_0dce:
        .byte $2e,$2e,$2e                           // char 13 (partial)
        .byte $2e,$2e,$20,$20,$20,$0c,$0f,$0f       // char 14 @+14
        .byte $0b,$20,$0f,$15,$14,$20,$06,$12       // char 15 @+15
        .byte $0f,$0d,$20,$04,$09,$13,$20,$17       // char 16 @+16
        .byte $05,$05,$0b,$20,$0c,$09,$0b,$05       // char 17 @+17
        .byte $3a,$20,$20,$13,$03,$12,$01,$0d       // char 18 @+18
        .byte $02,$0c,$05,$20,$13,$10,$09,$12       // char 19 @+19
        .byte $09,$14,$13,$2b,$32,$2b,$08,$09       // char 20 @+20
        .byte $2c,$20,$19,$05,$14,$09,$2b,$36       // char 21 @+21
        .byte $2b,$08,$09,$2c,$20,$10,$13,$19       // char 22 @+22
        .byte $03,$08,$0f,$20,$08,$0f,$10,$10       // char 23 @+23
        .byte $05,$12,$2b,$33,$20,$01,$0e,$04       // char 24 @+24
        .byte $20,$03,$08,$05,$13,$13,$0d,$01       // char 25 @+25
        .byte $13,$14,$05,$12                       // char 26 (partial)

txt_0e35:
        .byte $20,$32,$31,$30                       // char 26 (partial)
        .byte $30,$21,$20,$0f,$0b,$2c,$20,$13       // char 27 @+27
        .byte $0f,$0d,$05,$20,$07,$12,$05,$05       // char 28 @+28
        .byte $14,$1a,$20,$14,$0f,$20,$0c,$05       // char 29 @+29
        .byte $07,$05,$0e,$04,$2c,$09,$0c,$13       // char 30 @+30
        .byte $2c,$03,$05,$0e,$13,$0f,$12,$2c       // char 31 @+31
        .byte $03,$0f,$0e,$14,$05,$18,$2c,$04       // char 32 ' '
        .byte $03,$13,$2c,$13,$03,$13,$2b,$18       // char 33 '!'
        .byte $2d,$12,$01,$19,$2c,$02,$12,$0f       // char 34 '"'
        .byte $17,$02,$05,$01,$14,$2c,$10,$01       // char 35 '#'
        .byte $12,$01,$0d,$0f,$15,$0e,$14,$2c       // char 36 '$'
        .byte $0c,$09,$07,$08,$14,$2c,$01,$02       // char 37 '%'
        .byte $01,$12,$19,$2c,$03,$0f,$13,$0d       // char 38 '&'
        .byte $0f,$13,$2c,$07,$05,$0e,$05,$13       // char 39 '''
        .byte $09,$13,$2c,$06,$34,$03,$07,$2c       // char 40 '('
        .byte $14,$12,$01,$0e,$13,$03,$0f,$0d       // char 41 ')'
        .byte $2c,$0d,$01,$0e,$0f,$17,$01,$12       // char 42 '*'
        .byte $2c,$03,$12,$05,$13,$14,$2c,$01       // char 43 '+'
        .byte $06,$0c,$2c,$04,$0f,$0d,$20,$01       // char 44 ','
        .byte $0e,$04,$20,$14,$08,$05,$20,$12       // char 45 '-'
        .byte $05,$13,$14                           // char 46 (partial)

txt_0ed4:
        .byte $2e,$2e,$2e,$2e,$20                   // char 46 (partial)
        .byte $03,$15,$20,$0c,$01,$1a,$05,$12       // char 47 '/'

txt_0ee1:
        .byte $43,$20,$44,$20,$45                   // char 48 (partial)

dat_0ee6:
        // === Fill data (281 bytes, $0ee6-$0ffe) ===
        .fill 281, $20
