// ============================================
// xray-04 - Disassembled Source
// ============================================
// KickAssembler syntax
// Generated by Restore 64 vdisasm-one 1.0 build 1, 2026-03-29 17:54:29
// https://restore64.dev by datucker / Rabenauge
//
// Load address: $0800  End: $ffff  (63488 bytes)
// Crunched with Exomizer v2/v3 (with relocation) — depacked by emulation
// Packer entry: $0810 (via BASIC SYS 2064)
// Entry point:  $0b40 (2880)
// IRQ handler:  $0c6b (irq_0c6b)
//
// Code: 834 bytes, Data: 62654 bytes
// Labels: 87, Subroutines: 8
//
// Cross-references: all OK
// ============================================


// --- Region $0b40-$0bf5 ---
.pc = $0b40 "main_0b40"

main_0b40:
        sei
        lda #$00
        sta $d020
        sta $d021
        lda #$01
        sta $0286
        jsr $e544
        lda #$e1
        sta $0328
        lda #$08
        jsr $ffd2
        lda #$1f
        sta $d015
        sta $d01c
        lda #$0b
        sta $d025
        lda #$0f
        sta $d026
        ldx #$04

loc_0b6f:
        lda #$0c
        sta $d027,x
        lda chr_0c0d,x
        sta $07f8,x
        dex
        bpl loc_0b6f
        lda #$85
        sta $03
        lda #$0d
        sta $04
        lda #$07
        sta $02
        lda #$12
        sta $d018                                   // screen=$0400, charset=$0800
        lda #$6b
        sta $0314                                   // set IRQ handler low byte
        lda #$0c
        sta $0315                                   // set IRQ handler high byte
        lda #$01
        sta $dc0d                                   // clear, timer A
        sta $d01a                                   // raster IRQ on
        lda #$1b
        sta $d011                                   // text mode, screen on, 25 rows, Y-scroll=3
        cli

loc_0ba6:
        lda #$41

loc_0ba8:
        cmp $d012
        bne loc_0ba8
        ldx #$00

loc_0baf:
        jsr sub_0c12
        inx
        cpx #$44
        bne loc_0baf
        lda #$1d
        sta $d011                                   // text mode, screen on, 25 rows, Y-scroll=5
        lda #$a9

loc_0bbe:
        cmp $d012
        bne loc_0bbe

loc_0bc3:
        jsr sub_0c12
        dex
        bpl loc_0bc3
        lda #$1b
        sta $d011                                   // text mode, screen on, 25 rows, Y-scroll=3
        lda #$ef
        cmp $dc01
        bne loc_0ba6
        sei
        lda #$c8
        sta $d016                                   // hires, 40 cols, X-scroll=0
        jsr $fd15
        jsr $fda3
        jsr $ff5b
        ldx #$19

loc_0be6:
        lda $0bf3,x
        sta $033b,x
        dex
        bne loc_0be6
        inc $01
        jmp loc_0fe0

chr_0bf4:
        // === Charset data (2 bytes, $0bf4-$0bf5) ===
        .byte $bd,$00                               // char 0 (partial)

// --- Region $0c05-$0c25 ---
.pc = $0c05 "Program $0c05"
        lda #$37
        sta $01
// Referenced by: jsr from $0e0b, $ff5e

sub_0c09:
        cli
        jmp loc_fce2

chr_0c0d:
        // === Charset data (5 bytes, $0c0d-$0c11) ===
        .byte $2c,$2b,$2a,$29,$28                   // char 0 (partial)
// Referenced by: jsr from $0baf, $0bc3, $fd0c, $fd20

sub_0c12:
        lda $d012
        ora #$18
        .byte $2b,$07                               // anc #$07 // ILLEGAL
        sta $d011
        lda chr_0c26,x
        sta $d020
        sta $d021
        rts

// --- Region $0c6b-$0d02 ---
.pc = $0c6b "irq_0c6b"

// ============================================
// IRQ handler
// ============================================

irq_0c6b:
        inc $d019                                   // acknowledge raster IRQ
        dec $02
        dec $02
        bpl loc_0c9e
        lda #$07
        sta $02
        ldx #$00

loc_0c7a:
        lda $05e1,x
        sta $05e0,x
        inx
        cpx #$27
        bne loc_0c7a
        ldy #$00

loc_0c87:
        lda ($03),y
        bne loc_0c95
        lda #$85
        sta $03
        lda #$0d
        sta $04
        bne loc_0c87

loc_0c95:
        sta $0607
        inc $03
        bne loc_0c9e

chr_0c9c:
        // === Charset data (2 bytes, $0c9c-$0c9d) ===
        .byte $e6,$04                               // char 0 (partial)

loc_0c9e:
        lda $02
        sta $d016
        inc $05
        lda #$00
        sta $0d83
        sta $0d84
        tay

loc_0cae:
        jsr sub_0ccf
        lda $0d84
        clc
        adc #$02
        sta $0d84
        tay
        lda $0d83
        adc #$10
        sta $0d83
        cmp #$60
        bne loc_0cae
        lda #$00
        sta $d012
        jmp loc_ea7e
// Referenced by: jsr from $0cae, $fe09

sub_0ccf:
        clc
        adc $05
        pha
        jsr sub_0cea
        clc
        adc #$8b
        sta $d001,y
        pla
        jsr sub_0ce7
        clc
        adc #$ad
        sta $d000,y
        rts
// Referenced by: jsr from $0cdd, $fe38

sub_0ce7:
        clc
        adc #$40
// Referenced by: jsr from $0cd3, $fe2e

sub_0cea:
        .byte $2b,$ff                               // anc #$ff // ILLEGAL
        tax
        bpl loc_0cf2
        lda #$ff
.label loc_0cf2 = * + 1
        bit.abs $00a9
        pha
        txa
        .byte $2b,$7f                               // anc #$7f // ILLEGAL
        tax
        pla
        eor chr_0d03,x
        ldx #$00
        stx $d010
        rts

// --- Region $0e01-$0e48 ---
.pc = $0e01 "Program $0e01"
        asl $01
        ora #$12
        .byte $0c,$09,$07                           // nop $0709 // ILLEGAL
        php
        .byte $14,$2c                               // nop $2c,x // ILLEGAL
        jsr sub_0c09
        .byte $0c,$15,$13                           // nop $1315 // ILLEGAL
        ora #$0f
        asl $202c
        .byte $13,$05                               // slo ($05),y // ILLEGAL
        asl $05,x
        asl $0520
        .byte $0c,$05,$16                           // nop $1605 // ILLEGAL
        ora $0e
        bit $0120
        .byte $03,$14                               // slo ($14,x) // ILLEGAL
.label sub_0e28 = * + 1
        ora #$0f
        asl $202c
        .byte $14,$03                               // nop $03,x // ILLEGAL
        .byte $0f,$0d,$2c                           // slo $2c0d // ILLEGAL
        jsr $010e
        .byte $14,$0f                               // nop $0f,x // ILLEGAL
        bit $1320
        ora $03,x
        .byte $03,$05                               // slo ($05,x) // ILLEGAL
        .byte $13,$13                               // slo ($13),y // ILLEGAL
        jsr sub_0e28
        .byte $0f,$14,$20                           // slo $2014 // ILLEGAL
        ora $0309
        .byte $12                                   // jam // ILLEGAL

// --- Region $0fe0-$0feb ---
.pc = $0fe0 "loc_0fe0"

loc_0fe0:
        lda #$ec
        sta $2d
        lda #$d1
        sta $2e
        jmp $033c

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

// --- Region $1401-$1401 ---
.pc = $1401 "Segment $1401"
        brk

// --- Region $1513-$1513 ---
.pc = $1513 "Segment $1513"
        brk

// --- Region $2881-$2881 ---
.pc = $2881 "sub_2881"
// Referenced by: jsr from $ffed

sub_2881:
        brk

// --- Region $8120-$8120 ---
.pc = $8120 "Segment $8120"
        brk

// --- Region $8dd0-$8dd0 ---
.pc = $8dd0 "sub_8dd0"
// Referenced by: jsr from $fd7d

sub_8dd0:
        brk

// --- Region $e544-$e544 ---
.pc = $e544 "Segment $e544"
        brk

// --- Region $ea7e-$ea7e ---
.pc = $ea7e "loc_ea7e"

loc_ea7e:
        brk

// --- Region $fcc3-$fd6b ---
.pc = $fcc3 "loc_fcc3"

loc_fcc3:
        and $d0
        lda #$0f
        sta $d026
        ldx #$04

loc_fccc:
        lda #$0c
        sta $d027,x
        lda chr_0c0d,x
        sta $07f8,x
        dex
        bpl loc_fccc
        lda #$85
        sta $03
        lda #$0d
        sta $04

loc_fce2:
        lda #$07
        sta $02
        lda #$12
        sta $d018                                   // screen=$0400, charset=$0800
        lda #$6b
        sta $0314                                   // set IRQ handler low byte
        lda #$0c
        sta $0315                                   // set IRQ handler high byte
        lda #$01
        sta $dc0d                                   // clear, timer A
        sta $d01a                                   // raster IRQ on
        lda #$1b
        sta $d011                                   // text mode, screen on, 25 rows, Y-scroll=3
        cli

loc_fd03:
        lda #$41

loc_fd05:
        cmp $d012
        bne loc_fd05
        ldx #$00

loc_fd0c:
        jsr sub_0c12
        inx
        cpx #$44
        bne loc_fd0c
        lda #$1d
        sta $d011                                   // text mode, screen on, 25 rows, Y-scroll=5
        lda #$a9

loc_fd1b:
        cmp $d012
        bne loc_fd1b

loc_fd20:
        jsr sub_0c12
        dex
        bpl loc_fd20
        lda #$1b
        sta $d011                                   // text mode, screen on, 25 rows, Y-scroll=3
        lda #$ef
        cmp $dc01
        bne loc_fd03
        sei
        lda #$c8
        sta $d016                                   // hires, 40 cols, X-scroll=0
        jsr $fd15
        jsr $fda3
        jsr $ff5b
        ldx #$19

loc_fd43:
        lda $0bf3,x
        sta $033b,x
        dex
        bne loc_fd43
        inc $01
        jmp loc_0fe0

loc_fd51:
        lda $1000,x
        sta $0801,x
        inx
        bne loc_fd51
        inc $0341
        inc $033e

loc_fd60:
        bne loc_fd51
        lda #$37
        sta $01
        cli
        jmp loc_fce2

txt_fd6a:
        .text ",+"

// --- Region $fd7d-$fd82 ---
.pc = $fd7d "loc_fd7d"

loc_fd7d:
        jsr sub_8dd0
        and ($d0,x)
        rts

// --- Region $fda3-$fdaa ---
.pc = $fda3 "Segment $fda3"
        ora ($01,x)
        ora $0e03
        .byte $04,$06                               // nop $06 // ILLEGAL
        brk

// --- Region $fdd5-$fe41 ---
.pc = $fdd5 "loc_fdd5"

loc_fdd5:
.label loc_fdd6 = * + 1
        lda $05e1,x
        sta $05e0,x
        inx
        cpx #$27
        bne loc_fdd5
        ldy #$00

loc_fde2:
        lda ($03),y
        bne loc_fdf0
        lda #$85
        sta $03
        lda #$0d
        sta $04
        bne loc_fde2

loc_fdf0:
        sta $0607
        inc $03
        bne loc_fdf9

loc_fdf7:
        inc $04

loc_fdf9:
        lda $02
        sta $d016
        inc $05
        lda #$00
        sta $0d83
        sta $0d84
        tay

loc_fe09:
        jsr sub_0ccf
        lda $0d84
        clc
        adc #$02
        sta $0d84
        tay
        lda $0d83
        adc #$10
        sta $0d83
        cmp #$60
        bne loc_fe09
        lda #$00
        sta $d012
        jmp loc_ea7e

loc_fe2a:
        clc
        adc $05
        pha
        jsr sub_0cea
        clc
        adc #$8b
        sta $d001,y
        pla
        jsr sub_0ce7
        clc
        adc #$ad
        sta $d000,y
        rts

// --- Region $ff5b-$ff9b ---
.pc = $ff5b "Segment $ff5b"
        php
        .byte $14,$2c                               // nop $2c,x // ILLEGAL
        jsr sub_0c09
        .byte $0c,$15,$13                           // nop $1315 // ILLEGAL
        ora #$0f
        asl $202c
        .byte $13,$05                               // slo ($05),y // ILLEGAL
        asl $05,x
        asl $0520
        .byte $0c,$05,$16                           // nop $1605 // ILLEGAL
        ora $0e
        bit $0120
        .byte $03,$14                               // slo ($14,x) // ILLEGAL
        ora #$0f
        asl $202c
        .byte $14,$03                               // nop $03,x // ILLEGAL
        .byte $0f,$0d,$2c                           // slo $2c0d // ILLEGAL
        jsr $010e
        .byte $14,$0f                               // nop $0f,x // ILLEGAL
        bit $1320
        ora $03,x
        .byte $03,$05                               // slo ($05,x) // ILLEGAL
        .byte $13,$13                               // slo ($13),y // ILLEGAL
        jsr sub_0e28
        .byte $0f,$14,$20                           // slo $2014 // ILLEGAL
        ora $0309
        .byte $12                                   // jam // ILLEGAL

// --- Region $ffd2-$fff0 ---
.pc = $ffd2 "Segment $ffd2"
        ora $202c
        asl $0305
        bit $0920
        asl $2c03
        jsr $0418
        .byte $13,$20                               // slo ($20),y // ILLEGAL
        ora ($0e,x)
        .byte $04,$20                               // nop $20 // ILLEGAL
        ora ($14,x)
        .byte $03,$2e                               // slo ($2e,x) // ILLEGAL
        .byte $80,$20                               // nop #$20 // ILLEGAL
        jsr sub_2881
        brk

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

// --- Region $0800-$0a3e ---
.pc = $0800 "chr_0800"

chr_0800:
        // === Charset data (575 bytes, $0800-$0a3e) ===
        .byte $63,$63,$3e,$00,$00,$00,$00,$00       // char 0 @+0
        .byte $00,$00,$3d,$67,$63,$67,$3b,$00       // char 1 @+1
        .byte $60,$60,$6e,$73,$63,$73,$6e,$00       // char 2 @+2
        .byte $00,$00,$3e,$63,$60,$63,$3e,$00       // char 3 @+3
        .byte $38,$0c,$3e,$67,$63,$63,$3e,$00       // char 4 @+4
        .byte $00,$00,$3e,$63,$7f,$60,$3f,$00       // char 5 @+5
        .byte $36,$3b,$30,$30,$7c,$30,$30,$60       // char 6 @+6
        .byte $00,$00,$3e,$61,$60,$67,$3e,$06       // char 7 @+7
        .byte $60,$60,$6e,$73,$63,$66,$6f,$00       // char 8 @+8
        .byte $06,$00,$1c,$0c,$0c,$0c,$1c,$00       // char 9 @+9
        .byte $06,$00,$1c,$0c,$0c,$0c,$4c,$38       // char 10 @+10
        .byte $60,$60,$66,$6c,$70,$6c,$66,$00       // char 11 @+11
        .byte $18,$18,$18,$18,$18,$1a,$1e,$00       // char 12 @+12
        .byte $00,$00,$56,$7f,$6b,$63,$66,$00       // char 13 @+13
        .byte $00,$00,$6e,$73,$63,$66,$6f,$00       // char 14 @+14
        .byte $00,$00,$3e,$63,$63,$63,$3e,$00       // char 15 @+15
        .byte $00,$00,$6e,$73,$63,$73,$6e,$60       // char 16 @+16
        .byte $00,$00,$3b,$67,$63,$67,$3b,$03       // char 17 @+17
        .byte $00,$00,$6e,$73,$63,$7e,$63,$00       // char 18 @+18
        .byte $00,$00,$1e,$30,$1e,$47,$3e,$00       // char 19 @+19
        .byte $0c,$18,$7e,$30,$30,$32,$1c,$00       // char 20 @+20
        .byte $00,$00,$7b,$33,$63,$67,$3b,$00       // char 21 @+21
        .byte $00,$00,$76,$33,$63,$66,$3c,$00       // char 22 @+22
        .byte $00,$00,$76,$63,$6b,$3e,$14,$00       // char 23 @+23
        .byte $00,$00,$77,$36,$1c,$36,$77,$00       // char 24 @+24
        .byte $00,$00,$76,$33,$1b,$0e,$4c,$38       // char 25 @+25
        .byte $00,$00,$7f,$46,$0c,$39,$7f,$00       // char 26 @+26
        .byte $00,$0e,$08,$30,$08,$08,$0e,$00       // char 27 @+27
        .byte $36,$00,$1c,$0c,$0c,$0c,$1c,$00       // char 28 @+28
        .byte $00,$70,$10,$18,$10,$10,$70,$00       // char 29 @+29
        .byte $00,$18,$3c,$7e,$18,$18,$18,$00       // char 30 @+30
        .byte $c0,$a0,$60,$10,$08,$04,$02,$01       // char 31 @+31
        .byte $00,$00,$00,$00,$00,$00,$00,$00       // char 32 ' '
        .byte $0c,$0c,$0c,$0c,$0c,$00,$0c,$00       // char 33 '!'
        .byte $0c,$18,$18,$00,$00,$00,$00,$00       // char 34 '"'
        .byte $6c,$6c,$fe,$7c,$fe,$6c,$6c,$00       // char 35 '#'
        .byte $00,$08,$3e,$28,$3e,$0a,$3e,$08       // char 36 '$'
        .byte $00,$c6,$cc,$18,$30,$66,$c6,$00       // char 37 '%'
        .byte $38,$6c,$38,$76,$dc,$cc,$76,$00       // char 38 '&'
        .byte $18,$18,$30,$00,$00,$00,$00,$00       // char 39 '''
        .byte $0c,$18,$18,$18,$18,$18,$0c,$00       // char 40 '('
        .byte $18,$0c,$0c,$0c,$0c,$0c,$18,$00       // char 41 ')'
        .byte $00,$00,$14,$08,$3e,$08,$14,$00       // char 42 '*'
        .byte $00,$00,$08,$08,$3e,$08,$08,$00       // char 43 '+'
        .byte $00,$00,$00,$00,$00,$0c,$0c,$18       // char 44 ','
        .byte $00,$00,$00,$00,$3e,$00,$00,$00       // char 45 '-'
        .byte $00,$00,$00,$00,$00,$18,$18,$00       // char 46 '.'
        .byte $00,$00,$02,$04,$08,$10,$20,$00       // char 47 '/'
        .byte $1c,$36,$63,$63,$63,$36,$1c,$00       // char 48 '0'
        .byte $0c,$1c,$3c,$0c,$0c,$0c,$3f,$00       // char 49 '1'
        .byte $3e,$63,$73,$06,$0c,$31,$7f,$00       // char 50 '2'
        .byte $7f,$46,$0c,$1e,$03,$43,$7e,$00       // char 51 '3'
        .byte $06,$0e,$1e,$36,$7f,$06,$0f,$00       // char 52 '4'
        .byte $7f,$60,$7e,$63,$03,$63,$3e,$00       // char 53 '5'
        .byte $0e,$18,$30,$7e,$43,$43,$3e,$00       // char 54 '6'
        .byte $7f,$46,$0c,$18,$18,$18,$18,$00       // char 55 '7'
        .byte $3e,$63,$63,$3e,$63,$63,$3e,$00       // char 56 '8'
        .byte $3e,$63,$63,$3f,$06,$0c,$38,$00       // char 57 '9'
        .byte $00,$00,$0c,$0c,$00,$0c,$0c,$00       // char 58 ':'
        .byte $00,$00,$0c,$0c,$00,$0c,$0c,$18       // char 59 ';'
        .byte $00,$00,$04,$08,$10,$08,$04,$00       // char 60 '<'
        .byte $00,$00,$00,$3e,$00,$3e,$00,$00       // char 61 '='
        .byte $24,$4a,$42,$42,$7e,$3c,$18,$3c       // char 62 '>'
        .byte $3e,$63,$73,$06,$0c,$00,$0c,$00       // char 63 '?'
        .byte $55,$00,$55,$7d,$00,$69,$79,$00       // char 64 '@'
        .byte $79,$79,$00,$79,$69,$00,$79,$5a       // char 65 'A'
        .byte $41,$79,$1a,$55,$a4,$16,$95,$54       // char 66 'B'
        .byte $15,$a6,$54,$05,$55,$50,$01,$55       // char 67 'C'
        .byte $40,$05,$55,$50,$16,$55,$54,$19       // char 68 'D'
        .byte $55,$94,$19,$41,$54,$65,$00,$65       // char 69 'E'
        .byte $75,$00,$69,$65,$00,$79,$55,$00       // char 70 'F'
        .byte $79,$65,$00,$69,$55,$00,$55           // char 71 (partial)

// --- Region $0a58-$0a66 ---
.pc = $0a58 "dat_0a58"

dat_0a58:
        .byte $15,$55,$54,$1f,$fe,$e4,$1e,$aa       // char 75 'K'
        .byte $a4,$1a,$aa,$a4,$15,$55,$54           // char 76 (partial)

// --- Region $0a80-$0b3f ---
.pc = $0a80 "dat_0a80"

dat_0a80:
        .byte $01,$55,$40,$05,$6a,$50,$16,$fe       // char 80 'P'
        .byte $94,$1b,$ea,$a4,$1f,$95,$64,$6e       // char 81 'Q'
        .byte $55,$55,$7d,$41,$55,$79,$00,$55       // char 82 'R'
        .byte $79,$00,$65,$75,$01,$a5,$75,$16       // char 83 'S'
        .byte $94,$75,$1f,$94,$65,$1a,$50,$55       // char 84 'T'
        .byte $15,$54,$65,$01,$54,$65,$00,$65       // char 85 'U'
        .byte $55,$00,$75,$65,$00,$75,$55,$00       // char 86 'V'
        .byte $65,$55,$00,$55,$55,$00,$55,$00       // char 87 'W'
        .byte $00,$00,$00,$00,$00,$00,$01,$55       // char 88 'X'
        .byte $40,$05,$6a,$50,$16,$fe,$94,$1b       // char 89 'Y'
        .byte $ea,$a4,$1f,$95,$64,$6e,$55,$55       // char 90 'Z'
        .byte $7d,$41,$55,$79,$00,$55,$79,$00       // char 91 '['
        .byte $65,$75,$00,$55,$75,$00,$65,$75       // char 92 '\'
        .byte $00,$75,$65,$00,$75,$55,$44,$75       // char 93 ']'
        .byte $16,$54,$65,$15,$a4,$55,$15,$54       // char 94 '^'
        .byte $65,$05,$54,$55,$01,$54,$55,$00       // char 95 '_'
        .byte $55,$00,$55,$69,$00,$69,$7d,$00       // char 96 '`'
        .byte $65,$79,$00,$65,$79,$00,$65,$79       // char 97 'a'
        .byte $00,$65,$79,$00,$65,$79,$00,$65       // char 98 'b'
        .byte $6d,$00,$65,$6d,$41,$65,$5b,$55       // char 99 'c'
        .byte $95,$1a,$ea,$95,$16,$aa,$55,$05       // char 100 'd'
        .byte $55,$55,$01,$55,$55,$00,$00,$55       // char 101 'e'
        .byte $05,$55,$64,$07,$fb,$94,$06,$a9       // char 102 'f'
        .byte $54,$06,$95,$50,$05,$55,$40,$00       // char 103 'g'

// --- Region $0bf6-$0c04 ---
.pc = $0bf6 "Program $0bf6"
        .byte $10,$9d,$01,$08,$e8,$d0               // char 0 (partial)
        .byte $f7,$ee,$41,$03,$ee,$3e,$03,$d0       // char 1 @+1
        .byte $ef                                   // char 2 (partial)

// --- Region $0c26-$0c6a ---
.pc = $0c26 "chr_0c26"

chr_0c26:
        // === Charset data (69 bytes, $0c26-$0c6a) ===
        .byte $00,$09,$00,$09,$02,$00,$09,$02       // char 0 @+0
        .byte $08,$00,$09,$02,$08,$0a,$00,$09       // char 1 @+1
        .byte $02,$08,$0a,$07,$00,$09,$02,$08       // char 2 @+2
        .byte $0a,$07,$01,$00,$09,$02,$08,$0a       // char 3 @+3
        .byte $07,$01,$01,$0d,$03,$0e,$04,$06       // char 4 @+4
        .byte $00,$01,$0d,$03,$0e,$04,$06,$00       // char 5 @+5
        .byte $0d,$03,$0e,$04,$06,$00,$03,$0e       // char 6 @+6
        .byte $04,$06,$00,$0e,$04,$06,$00,$04       // char 7 @+7
        .byte $06,$00,$06,$00,$00                   // char 8 (partial)

// --- Region $0d03-$0e00 ---
.pc = $0d03 "chr_0d03"

chr_0d03:
        // === Charset data (254 bytes, $0d03-$0e00) ===
        .byte $00,$02,$04,$06,$08,$0a,$0c,$0e       // char 0 @+0
        .byte $10,$12,$14,$16,$17,$19,$1b,$1d       // char 1 @+1
        .byte $1f                                   // char 2 (partial)

txt_0d14:
        .byte $21,$22,$24,$26,$28,$29,$2b           // char 2 (partial)
        .byte $2d,$2e,$30,$32,$33,$35,$36,$38       // char 3 @+3
        .byte $39,$3a,$3c,$3d,$3e,$3f,$41,$42       // char 4 @+4
        .byte $43,$44,$45,$46,$47,$48,$49,$49       // char 5 @+5
        .byte $4a,$4b,$4c,$4c,$4d,$4d,$4e,$4e       // char 6 @+6
        .byte $4f,$4f,$4f,$50,$50,$50,$50,$50       // char 7 @+7
        .byte $50,$50,$50,$50,$50,$4f,$4f,$4f       // char 8 @+8
        .byte $4e,$4e,$4d,$4d,$4c,$4c,$4b,$4a       // char 9 @+9
        .byte $49,$49,$48,$47,$46,$45,$44,$43       // char 10 @+10
        .byte $42,$41,$3f,$3e,$3d,$3c,$3a,$39       // char 11 @+11
        .byte $38,$36,$35,$33,$32,$30,$2e,$2d       // char 12 @+12
        .byte $2b,$29,$28,$26,$24,$22,$21,$1f       // char 13 @+13
        .byte $1d,$1b,$19,$17,$16,$14,$12,$10       // char 14 @+14
        .byte $0e,$0c,$0a,$08,$06,$04,$02,$00       // char 15 @+15
        .byte $60,$0c,$02,$15,$13,$08,$09,$04       // char 16 @+16
        .byte $0f,$20,$17,$01,$13,$20,$03,$12       // char 17 @+17
        .byte $01,$03,$0b,$05,$04,$20,$01,$0e       // char 18 @+18
        .byte $04,$20,$14,$12,$01,$09,$0e,$05       // char 19 @+19
        .byte $04,$20,$02,$19,$20,$14,$08,$05       // char 20 @+20
        .byte $20,$06,$0c,$05,$05,$14,$20,$0f       // char 21 @+21
        .byte $06,$20,$18,$2d,$12,$01,$19,$2e       // char 22 @+22
        .byte $20,$0f,$0e,$0c,$19,$20,$13,$01       // char 23 @+23
        .byte $16,$05,$20,$19,$0f,$15,$12,$20       // char 24 @+24
        .byte $07,$01,$0d,$05,$20,$0f,$0e,$20       // char 25 @+25
        .byte $01,$20,$02,$0c,$01,$0e,$0b,$20       // char 26 @+26
        .byte $04,$09,$13,$0b,$2e,$20,$07,$12       // char 27 @+27
        .byte $05,$05,$14,$09,$0e,$07,$13,$20       // char 28 @+28
        .byte $07,$0f,$20,$14,$0f,$20,$3a,$20       // char 29 @+29
        .byte $14,$01,$0c,$05,$0e,$14,$2f,$09       // char 30 @+30
        .byte $0b,$01,$12,$09,$2c,$20               // char 31 (partial)

// --- Region $0e49-$0eb8 ---
.pc = $0e49 "chr_0e49"

chr_0e49:
        // === Charset data (112 bytes, $0e49-$0eb8) ===
        .byte $0f,$0e,$09,$18                       // char 0 (partial)

txt_0e4d:
        .byte $21,$21,$29,$2c                       // char 0 (partial)
        .byte $20,$04,$0f,$0d,$09,$0e,$01,$14       // char 1 @+1
        .byte $0f,$12,$13,$2c,$20,$08,$0f,$14       // char 2 @+2
        .byte $0c,$09,$0e,$05,$20,$01,$0e,$04       // char 3 @+3
        .byte $20,$12,$14,$09,$2e,$20,$0f,$16       // char 4 @+4
        .byte $05,$12,$13,$05,$01,$13,$20,$14       // char 5 @+5
        .byte $0f,$20,$3a,$20,$14,$13,$0d,$2c       // char 6 @+6
        .byte $20,$0e,$05,$03,$2c,$20,$09,$0e       // char 7 @+7
        .byte $03,$2c,$20,$18,$04,$13,$20,$01       // char 8 @+8
        .byte $0e,$04,$20,$01,$14,$03               // char 9 (partial)

txt_0e97:
        .byte $2e                                   // char 9 (partial)

dat_0e98:
        // === Fill data (32 bytes, $0e98-$0eb7) ===
        .fill 32, $20

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

// --- Region $1402-$1402 ---
.pc = $1402 "dat_1402"

dat_1402:
        // === Fill data (1 bytes, $1402-$1402) ===
        .byte $00                                   // .

// --- Region $1514-$1514 ---
.pc = $1514 "dat_1514"

dat_1514:
        // === Fill data (1 bytes, $1514-$1514) ===
        .byte $00                                   // .

// --- Region $1800-$1800 ---
.pc = $1800 "chr_1800"

chr_1800:
        .byte $00                                   // .

// --- Region $2000-$2000 ---
.pc = $2000 "scr_2000"

scr_2000:
        .byte $00                                   // .

// --- Region $2882-$2882 ---
.pc = $2882 "dat_2882"

dat_2882:
        // === Fill data (1 bytes, $2882-$2882) ===
        .byte $00                                   // .

// --- Region $3000-$3000 ---
.pc = $3000 "chr_3000"

chr_3000:
        .byte $00                                   // .

// --- Region $8121-$8121 ---
.pc = $8121 "dat_8121"

dat_8121:
        // === Fill data (1 bytes, $8121-$8121) ===
        .byte $00                                   // .

// --- Region $8dd1-$8dd1 ---
.pc = $8dd1 "dat_8dd1"

dat_8dd1:
        // === Fill data (1 bytes, $8dd1-$8dd1) ===
        .byte $00                                   // .

// --- Region $e545-$e545 ---
.pc = $e545 "dat_e545"

dat_e545:
        // === Fill data (1 bytes, $e545-$e545) ===
        .byte $00                                   // .

// --- Region $ea7f-$ea7f ---
.pc = $ea7f "dat_ea7f"

dat_ea7f:
        // === Fill data (1 bytes, $ea7f-$ea7f) ===
        .byte $00                                   // .

// --- Region $f900-$fcc2 ---
.pc = $f900 "dat_f900"

dat_f900:
        .byte $01,$91,$2d,$e6,$2d,$d0,$02,$e6,$2e,$ca,$d0,$f5,$f0,$c5,$a9,$00 // ..-.-...........
        .byte $f0,$ef,$a9,$ff,$d0,$eb,$b1,$2f,$91,$2d,$e6,$2f,$d0,$02,$e6,$30 // ......./.-./...0
        .byte $e6,$2d,$d0,$02,$e6,$2e,$ca,$d0,$ed,$f0,$a8,$20,$71,$01,$b1,$2f // .-......... q../
        .byte $20,$22,$01,$91,$2d,$e6,$2d,$d0,$02,$e6,$2e,$ca,$d0,$f5,$c6,$39 //  "..-.-........9
        .byte $10,$f1,$30,$8f,$86,$39,$b1,$2f,$aa,$4c,$22,$01,$20,$71,$01,$b1 // ..0..9./.L". q..
        .byte $2f,$91,$2d,$e6,$2f,$d0,$02,$e6,$30,$e6,$2d,$d0,$02,$e6,$2e,$ca // /.-./...0.-.....
        .byte $d0,$ed,$c6,$39,$10,$e9,$4c,$00,$01,$2c,$da,$01,$a9,$37,$85,$01 // ...9..L..,...7..
        .byte $58,$20,$40,$0b,$4c,$ae,$a7,$e0,$00,$f0,$ee,$a9,$04,$2c,$a9,$08 // X @.L........,..
        .byte $85,$ff,$b1,$2f,$91,$2d,$c8,$c4,$ff,$d0,$f7,$18,$a5,$2d,$65,$ff // .../.-.......-e.
        .byte $85,$2d,$a5,$2e,$69,$00,$85,$2e,$a0,$00,$ca,$d0,$e5,$18,$a5,$2f // .-..i........../
        .byte $65,$ff,$85,$2f,$a5,$30,$69,$00,$85,$30,$4c,$00,$01,$b9,$00,$ef // e../.0i..0L.....
        .byte $99,$00,$ff,$c8,$d0,$f7,$ce,$dc,$01,$ce,$df,$01,$ad,$df,$01,$c9 // ................
        .byte $df,$d0,$ea,$60,$23,$63,$63,$3e,$a7,$2d,$3d,$67,$63,$67,$3b,$00 // ...`#cc>.-=gcg;.
        .byte $60,$60,$6e,$73,$63,$73,$6e,$a3,$2d,$3e,$63,$60,$63,$3e,$00,$38 // ``nscsn.->c`c>.8
        .byte $0c,$3e,$67,$63,$63,$3e,$a3,$2e,$3e,$63,$7f,$60,$3f,$00,$36,$3b // .>gcc>..>c.`?.6;
        .byte $30,$30,$7c,$30,$30,$60,$a2,$31,$3e,$61,$60,$67,$3e,$06,$60,$60 // 00|00`.1>a`g>.``
        .byte $6e,$73,$63,$66,$6f,$00,$06,$00,$1c,$e3,$0c,$25,$1c,$00,$06,$00 // nscfo......%....
        .byte $1c,$e3,$0c,$2a,$4c,$38,$60,$60,$66,$6c,$70,$6c,$66,$00,$e5,$18 // ...*L8``flplf...
        .byte $22,$1a,$1e,$a3,$25,$56,$7f,$6b,$63,$66,$a3,$25,$6e,$73,$63,$66 // "...%V.kcf.%nscf
        .byte $6f,$a3,$21,$3e,$e3,$63               // o.!>.c

txt_fa36:
        .text "!>"
        .byte $a3                                   // '#' | $80 (end-of-string marker)
        .byte $26,$6e,$73,$63,$73,$6e,$60,$a2,$26,$3b,$67,$63,$67,$3b,$03,$a2 // &nscsn`.&;gcg;..
        .byte $25,$6e,$73,$63,$7e,$63,$a3,$2d,$1e,$30,$1e,$47,$3e,$00,$0c,$18 // %nsc~c.-.0.G>...
        .byte $7e,$30,$30,$32,$1c,$a3,$25,$7b,$33,$63,$67,$3b,$a3,$25,$76,$33 // ~002..%{3cg;.%v3
        .byte $63,$66,$3c,$a3,$25,$76,$63,$6b,$3e,$14,$a3,$25,$77,$36,$1c,$36 // cf<.%vck>..%w6.6
        .byte $77,$a3,$26,$76,$33,$1b,$0e           // w.&v3..

txt_fa80:
        .text "L8"
        .byte $a2                                   // '"' | $80 (end-of-string marker)
        .byte $25,$7f,$46,$0c,$39,$7f,$a2,$2a,$0e,$08,$30,$08,$08,$0e,$00,$36 // %.F.9..*..0....6
        .byte $00,$1c,$e3,$0c,$21,$1c,$a2,$26,$70,$10,$18,$10,$10,$70,$a2,$23 // ....!..&p....p.#
        .byte $18,$3c,$7e,$e3,$18,$29,$00,$c0,$a0,$60,$10,$08,$04,$02,$01,$a8 // .<~..)...`......
        .byte $e5,$0c,$26,$00,$0c,$00,$0c,$18,$18,$a5,$27,$6c,$6c,$fe,$7c,$fe // ..&.......'ll.|.
        .byte $6c,$6c,$a2,$3a,$08,$3e,$28,$3e,$0a,$3e,$08,$00,$c6,$cc,$18,$30 // ll.:.>(>.>.....0
        .byte $66,$c6,$00,$38,$6c,$38,$76,$dc,$cc,$76,$00,$18,$18,$30,$a5,$21 // f..8l8v..v...0.!
        .byte $0c,$e5,$18,$23,$0c,$00,$18,$e5,$0c,$21,$18,$a3,$25,$14,$08,$3e // ...#.....!..%..>
        .byte $08,$14,$a3,$25,$08,$08,$3e,$08,$08,$a6,$23,$0c,$0c,$18,$a4 // ...%..>...#....

txt_fb02:
        .text "!>"
        .byte $a8                                   // '(' | $80 (end-of-string marker)
        .byte $22,$18,$18,$a3,$28,$02,$04,$08,$10,$20,$00,$1c,$36,$e3,$63,$26 // "...(.... ..6.c&
        .byte $36,$1c,$00,$0c,$1c,$3c,$e3,$0c,$60,$2d,$3f,$00,$3e,$63,$73,$06 // 6....<..`-?.>cs.
        .byte $0c,$31,$7f,$00,$7f,$46,$0c,$1e,$03,$43,$7e,$00,$06,$0e,$1e,$36 // .1...F...C~....6
        .byte $7f,$06,$0f,$00,$7f,$60,$7e,$63,$03,$63,$3e,$00,$0e,$18,$30,$7e // .....`~c.c>...0~
        .byte $43,$43,$3e,$00,$7f,$46,$0c,$e4,$18,$30,$00,$3e,$63,$63,$3e,$63 // CC>..F...0.>cc>c
        .byte $63,$3e,$00,$3e,$63,$63,$3f,$06,$0c,$38,$a3,$25,$0c,$0c,$00,$0c // c>.>cc?..8.%....
        .byte $0c,$a3,$26,$0c,$0c,$00,$0c,$0c,$18,$a2,$25,$04,$08,$10,$08,$04 // ..&.......%.....
        .byte $a4
        .byte $23,$3e,$00
        .byte $3e,$a2,$60
        .text "O$JBB"
        .byte $7e
        .byte $3c,$18
        .byte $3c
        .byte $3e,$63,$73,$06,$0c,$00,$0c,$00,$55,$00,$55,$7d,$00,$69,$79,$00 // >cs.....U.U}.iy.
        .byte $79,$79,$00,$79,$69,$00,$79,$5a,$41,$79,$1a,$55,$a4,$16,$95,$54 // yy.yi.yZAy.U...T
        .byte $15,$a6,$54,$05,$55,$50,$01,$55,$40,$05,$55,$50,$16,$55,$54,$19 // ..T.UP.U@.UP.UT.
        .byte $55,$94,$19,$41,$54,$65,$00,$65,$75,$00,$69,$65,$00,$79,$55,$00 // U..ATe.eu.ie.yU.
        .byte $79,$65,$00,$69,$55,$00,$55,$b9,$2f,$15,$55,$54,$1f,$fe,$e4,$1e // ye.iU.U./.UT....
        .byte $aa,$a4,$1a,$aa,$a4,$15               // ......

txt_fbdb:
        .text "UT"
        .byte $b9                                   // '9' | $80 (end-of-string marker)
        .byte $60,$3f,$01,$55,$40,$05,$6a,$50,$16,$fe,$94,$1b,$ea,$a4,$1f,$95 // `?.U@.jP........
        .byte $64,$6e,$55,$55,$7d,$41,$55,$79,$00,$55,$79,$00,$65,$75,$01,$a5 // dnUU}AUy.Uy.eu..
        .byte $75,$16,$94,$75,$1f,$94,$65,$1a,$50,$55,$15,$54,$65,$01,$54,$65 // u..u..e.PU.Te.Te
        .byte $00,$65,$55,$00,$75,$65,$00,$75,$55,$00,$65,$55,$00,$55,$55,$00 // .eU.ue.uU.eU.UU.
        .byte $55,$a7,$60,$67,$01,$55,$40,$05,$6a,$50,$16,$fe,$94,$1b,$ea,$a4 // U.`g.U@.jP......
        .byte $1f,$95,$64,$6e,$55,$55,$7d,$41,$55,$79,$00,$55,$79,$00,$65,$75 // ..dnUU}AUy.Uy.eu
        .byte $00,$55,$75,$00,$65,$75,$00,$75,$65,$00,$75,$55,$44,$75,$16,$54 // .Uu.eu.ue.uUDu.T
        .byte $65,$15,$a4,$55,$15,$54,$65,$05,$54,$55,$01,$54,$55,$00,$55,$00 // e..U.Te.TU.TU.U.
        .byte $55,$69,$00,$69,$7d,$00,$65,$79,$00,$65,$79,$00,$65,$79,$00,$65 // Ui.i}.ey.ey.ey.e
        .byte $79,$00,$65,$79,$00,$65,$6d,$00,$65,$6d,$41,$65,$5b,$55,$95,$1a // y.ey.em.emAe[U..
        .byte $ea,$95,$16,$aa,$55,$05,$55,$55,$01   // ....U.UU.

txt_fc87:
        .text "UU"
        .byte $a2                                   // '"' | $80 (end-of-string marker)
        .byte $60,$fc,$55,$05,$55,$64,$07,$fb,$94,$06,$a9,$54,$06,$95,$50,$05 // `.U.Ud.....T..P.
        .byte $55,$40,$00,$78,$a9,$00,$8d,$20,$d0,$8d,$21,$d0,$a9,$01,$8d,$86 // U@.x... ..!.....
        .byte $02,$20,$44,$e5,$a9,$e1,$8d,$28,$03,$a9,$08,$20,$d2,$ff,$a9,$1f // . D....(... ....
        .byte $8d,$15,$d0,$8d,$1c,$d0,$a9,$0b,$8d   // .........

// --- Region $fd6c-$fd7c ---
.pc = $fd6c "Segment $fd6c"
        .byte $2a,$29,$28,$ad,$12,$d0,$09,$18,$2b,$07,$8d,$11,$d0,$bd,$26,$0c // *)(.....+.....&.
        .byte $8d                                   // .

// --- Region $fd83-$fda2 ---
.pc = $fd83 "dat_fd83"

dat_fd83:
        .byte $00,$09,$00,$09,$02,$02,$00,$09,$02,$08,$60,$2a,$0a,$00,$09,$02 // ..........`*....
        .byte $08,$0a,$07,$00,$09,$02,$08,$0a,$07,$01,$00,$09,$02,$08,$0a,$07 // ................

// --- Region $fdab-$fdd4 ---
.pc = $fdab "dat_fdab"

dat_fdab:
        .byte $01,$0d,$03,$0e,$04,$06,$00,$0d,$03,$0e,$04,$06,$00,$03,$02,$0e // ................
        .byte $04,$06,$00,$24,$04,$06,$00,$06,$a2,$60,$d0,$ee,$19,$d0,$c6,$02 // ...$.....`......
        .byte $c6,$02,$10,$2a,$a9,$07,$85,$02,$a2,$00 // ...*......

// --- Region $fe42-$ff5a ---
.pc = $fe42 "dat_fe42"

dat_fe42:
        .byte $18,$69,$40,$2b,$ff,$aa,$10,$03,$a9,$ff,$2c,$a9,$00,$48,$8a,$2b // .i@+......,..H.+
        .byte $7f,$aa,$68,$5d,$03,$0d,$a2,$00,$8e,$10,$d0,$60,$00,$02,$04,$06 // ..h].......`....
        .byte $08,$0a,$0c,$0e,$10,$12,$14,$16,$17,$19,$1b,$1d,$1f // .............

txt_fe6f:
        .text "!"
        .byte $22                                   // double quote character
        .text "$&()+-.0235689:<=>?ABCDEFGHIIJKLLMMNN"
        .byte $e3,$4f,$ea,$50,$e3,$4f,$61           // .O.P.Oa

txt_fe9d:
        .text "MNNMMLLKJIIHGFEDCBA?>=<:9865320.-+)(&$"
        .byte $22                                   // double quote character
        .text "!"
        .byte $1f,$1d,$1b,$19,$17,$16,$14,$12,$10,$0e,$0c,$0a,$08,$06,$04,$02 // ................
        .byte $00,$60                               // .`

txt_fed7:
        .encoding "screencode_mixed"
        .text "lbushido was cracked and trained by the fleet of x-ray. only save your game on a blank disk. greetings go to : talent/ikari, fairlig"
        .encoding "petscii_upper"

// --- Region $ff9c-$ffd1 ---
.pc = $ff9c "dat_ff9c"

dat_ff9c:
        .byte $0f,$0e,$09,$18                       // ....

txt_ffa0:
        .text "!!), "

txt_ffa5:
        .encoding "screencode_mixed"
        .text "dominators, hotline and rti. overseas to : ts"
        .encoding "petscii_upper"

// --- Region $fff1-$fffd ---
.pc = $fff1 "dat_fff1"

dat_fff1:
        .byte $2b,$a9,$ec,$85,$2d,$a9,$d1,$85,$2e,$4c,$3c,$03,$b5 // +...-....L<..
