2010.05.18-apple-ii-sid-player

UPDATE: Here is the link! Apple SID Monty MP3!

Code information

music: total size: 4447 bytes (115f bytes)

4000 : start
4010 : timerhi
4015 : timerlo

Play with 4011 (high) and 4016 (low) timer bytes to adjust tempo.

The source

#define SIDBASE     $C400
#define CIABASE     $C0C0

; zp0/1, zp2/3 must be consecutive

#define ZP0         $EB
#define ZP1         $EC
#define ZP2         $ED
#define ZP3         $EE

                .global start
                .global timerhi
                .global timerlo

                ;-----------------------------------------------------------------------------
                ;rob hubbard
                ;monty on the run music driver

                ;this player was used (with small mods)
                ;for his first approx 30 musix

                ;.org $8000
                ;.obj motr

                ;    loadirq  The music is supposed to run at 50Hz, or 50 times per second. Therefore
                ;    PAL users can run the music routine off the IRQ like this:

start:
                lda #$00       ; init music number 0 (redundant)
                jsr music+0    ; init the music

                sei             ; install the irq
                lda #<irq
                ldx #>irq
                sta $3fe
                stx $3ff
    timerhi:    lda #1          ; turn on CIA Timer A interrupt
                sta CIABASE+5   ; timer A high
    timerlo:    lda #$ff
                sta CIABASE+4   ; timer A low
                lda #1
                sta CIABASE+$e   ; control register A
                lda #$81
                sta CIABASE+$d   ; set MASK register of ICR
                cli
busyloop:
                jmp    busyloop     ; endless loop (music is now playing off interrupt :-)

irq:
                ; implied sei (interrupts disabled)
                stx irqxsav     ; save x & y (a2 irq code only saves/restores accum)
                sty irqysav

                                ;inc    $d020    ; play music, and show a raster for the time it takes
                lda CIABASE+$d   ; read DATA register of ICR (resets interrupt)
                jsr    music+3
                                ;dec    $d020

                ldx irqxsav
                ldy irqysav
                lda $45         ; restore accum
                rti

irqxsav:        .byte 0
irqysav:        .byte 0

                ; end of irq

                ; [][][][][][][][][][][][][][][][][][][][][][][][][][][][][]
                ; code from http://sid.kubarth.com/articles/rob_hubbards_music.txt
music:

                jmp initmusic
                jmp playmusic
                jmp musicoff


                ;====================================
                ;init music

initmusic:

                lda #$00         ;music num
                ldy #$00
                asl a
                sta tempstore
                asl a
                clc
                adc tempstore    ;now music num*6
                tax

        -       lda songs,x      ;copy ptrs to this
                sta currtrkhi,y  ;music's tracks to
                inx              ;current tracks
                iny
                cpy #$06
                bne -

                lda #$00         ;clear control regs
                sta SIDBASE+$4
                sta SIDBASE+$b
                sta SIDBASE+$12
                sta SIDBASE+$17

                lda #$0f         ;full volume
                sta SIDBASE+$18

                lda #$40         ;flag init music
                sta mstatus

                rts


                ;====================================
                ;music off

musicoff:

                lda #$c0         ;flag music off
                sta mstatus
                rts


                ;====================================
                ;play music

playmusic:

                inc counter

                bit mstatus      ;test music status
                bmi moff         ;$80 and $c0 is off
                bvc contplay     ;$40 init, else play


                ;==========
                ;init the song (mstatus $40)

                lda #$00         ;init counter
                sta counter

                ldx #3-1
        -       sta posoffset,x  ;init pos offsets
                sta patoffset,x  ;init pat offsets
                sta lengthleft,x ;get note right away
                sta notenum,x
                dex
                bpl -

                sta mstatus      ;signal music play
                jmp contplay


                ;==========
                ;music is off (mstatus $80 or $c0)

moff:

                bvc +            ;if mstatus $c0 then
                lda #$00
                sta SIDBASE+$4        ;kill voice 1,2,3
                sta SIDBASE+$b        ;control registers
                sta SIDBASE+$12

                lda #$0f         ;full volume still
                sta SIDBASE+$18

                lda #$80         ;flag no need to kill
                sta mstatus      ;sound next time

        +       jmp musicend     ;end


                ;==========
                ;music is playing (mstatus otherwise)

contplay:

                ldx #3-1         ;number of chanels

                dec speed        ;check the speed
                bpl mainloop

                lda resetspd     ;reset speed if needed
                sta speed


mainloop:

                lda regoffsets,x ;save offset to regs
                sta tmpregofst   ;for this channel
                tay


                ;check whether a new note is needed

                lda speed        ;if speed not reset
                cmp resetspd     ;then skip notework
                beq checknewnote
                jmp vibrato

checknewnote:

                lda currtrkhi,x  ;put base addr.w of
                sta ZP0          ;this track in $2
                lda currtrklo,x
                sta ZP1

                dec lengthleft,x ;check whether a new
                bmi getnewnote   ;note is needed

                jmp soundwork    ;no new note needed


                ;==========
                ;notework
                ;a new note is needed. get the pattern
                ;number/cc from this position

getnewnote:

                ldy posoffset,x  ;get the data from
                lda (ZP0),y      ;the current position

                cmp #$ff         ;pos $ff restarts
                beq restart

                cmp #$fe         ;pos $fe stops music
                bne getnotedata  ;on all channels
                jmp musicend

                ;cc of $ff restarts this track from the
                ;first position

restart:

                lda #$00         ;get note immediately
                sta lengthleft,x ;and reset pat,pos
                sta posoffset,x
                sta patoffset,x
                jmp getnewnote


                ;get the note data from this pattern

getnotedata:

                tay
                lda patptl,y     ;put base addr.w of
                sta ZP2          ;the pattern in $4
                lda patpth,y
                sta ZP3

                lda #$00         ;default no portamento
                sta portaval,x

                ldy patoffset,x  ;get offset into ptn

                lda #$ff         ;default no append
                sta appendfl

                ;1st bytee is the length of the note 0-31
                ;bit5 signals no release (see sndwork)
                ;bit6 signals appended note
                ;bit7 signals a new instrument
                ;     or portamento coming up

                lda (ZP2),y      ;get length of note
                sta savelnthcc,x
                sta templnthcc
                and #$1f
                sta lengthleft,x

                bit templnthcc   ;test for append
                bvs appendnote

                inc patoffset,x  ;pt to next data

                lda templnthcc   ;2nd bytee needed?
                bpl getpitch

                ;2nd bytee needed as 1st byte negative
                ;2nd bytee is the instrument number(+ve)
                ;or portamento speed(-ve)

                iny
                lda (ZP2),y      ;get instr/portamento
                bpl +

                sta portaval,x   ;save portamento val
                jmp ++

        +       sta instrnr,x    ;save instr nr

        +       inc patoffset,x

                ;3rd bytee is the pitch of the note
                ;get the 'base frequency' here

getpitch:

                iny
                lda (ZP2),y      ;get pitch of note
                sta notenum,x
                asl a              ;pitch*2
                tay
                lda frequenzlo,y ;save the appropriate
                sta tempfreq     ;base frequency
                lda frequenzhi,y
                ldy tmpregofst
                sta SIDBASE+$1,y
                sta savefreqhi,x
                lda tempfreq
                sta SIDBASE+$0,y
                sta savefreqlo,x
                jmp +

appendnote:

                dec appendfl     ;clever eh?


                ;fetch all the initial values from the
                ;instrument data structure

        +       ldy tmpregofst
                lda instrnr,x    ;instr num
                stx tempstore
                asl a              ;instr num*8
                asl a
                asl a
                tax

                lda instr+2,x    ;get control reg val
                sta tempctrl
                lda instr+2,x
                and appendfl     ;implement append
                sta SIDBASE+$4,y

                lda instr+0,x    ;get pulse width lo
                sta SIDBASE+$2,y

                lda instr+1,x    ;get pulse width hi
                sta SIDBASE+$3,y

                lda instr+3,x    ;get attack/decay
                sta SIDBASE+$5,y

                lda instr+4,x    ;get sustain/release
                sta SIDBASE+$6,y

                ldx tempstore    ;save control reg val
                lda tempctrl
                sta voicectrl,x


                ;4th bytee checks for the end of pattern
                ;if eop found, inc the position and
                ;reset patoffset for new pattern

                inc patoffset,x  ;preview 4th bytee
                ldy patoffset,x
                lda (ZP2),y

                cmp #$ff         ;check for eop
                bne +

                lda #$00         ;end of pat reached
                sta patoffset,x  ;inc position for
                inc posoffset,x  ;the next time

        +       jmp loopcont


                ;==========
                ;soundwork
                ;the instrument and effects processing
                ;routine when no new note was needed

soundwork:

                ;release routine
                ;set off a release when the length of
                ;the note is exceeded
                ;bit4 of the 1st note-bytee can specify
                ;for no release

                ldy tmpregofst

                lda savelnthcc,x ;check for no release
                and #$20         ;specified
                bne vibrato

                lda lengthleft,x ;check for length of
                bne vibrato      ;exceeded

                lda voicectrl,x  ;length exceeded so
                and #$fe         ;start the release
                sta SIDBASE+$4,y      ;and kill adsr
                lda #$00
                sta SIDBASE+$5,y
                sta SIDBASE+$6,y


                ;vibrato routine
                ;(does alot of work)

vibrato:

                lda instrnr,x    ;instr num
                asl a
                asl a
                asl a              ;instr num*8
                tay
                sty instnumby8   ;save instr num*8

                lda instr+7,y    ;get instr fx bytee
                sta instrfx

                lda instr+6,y    ;get pulse speed
                sta pulsevalue

                lda instr+5,y    ;get vibrato depth
                sta vibrdepth
                beq pulsework    ;check for no vibrato

                lda counter      ;this is clever!!
                and #7           ;the counter's turned
                cmp #4           ;into an oscillating
                bcc +            ;value (01233210)
                eor #7
        +       sta oscilatval

                lda notenum,x    ;get base note
                asl a              ;note*2
                tay              ;get diff btw note
                sec              ;and note+1 frequency
                lda frequenzlo+2,y
                sbc frequenzlo,y
                sta tmpvdiflo
                lda frequenzhi+2,y
                sbc frequenzhi,y

        -       lsr a              ;divide difference by
                ror tmpvdiflo    ;2 for each vibrdepth
                dec vibrdepth
                bpl -
                sta tmpvdifhi

                lda frequenzlo,y ;save note frequency
                sta tmpvfrqlo
                lda frequenzhi,y
                sta tmpvfrqhi

                lda savelnthcc,x ;no vibrato if note
                and #$1f         ;length less than 8
                cmp #8
                bcc +

                ldy oscilatval

        -       dey              ;depending on the osc
                bmi +            ;value, add the vibr
                clc              ;freq that many times
                lda tmpvfrqlo    ;to the base freq
                adc tmpvdiflo
                sta tmpvfrqlo
                lda tmpvfrqhi
                adc tmpvdifhi
                sta tmpvfrqhi
                jmp -

        +       ldy tmpregofst   ;save the final
                lda tmpvfrqlo    ;frequencies
                sta SIDBASE+$0,y
                lda tmpvfrqhi
                sta SIDBASE+$1,y


                ;pulse-width timbre routine
                ;depending on the control/speed bytee in
                ;the instrument datastructure, the pulse
                ;width is of course inc/decremented to
                ;produce timbre

                ;strangely the delay value is also the
                ;size of the inc/decrements

pulsework:

                lda pulsevalue   ;check for pulsework
                beq portamento   ;needed this instr

                ldy instnumby8
                and #$1f
                dec pulsedelay,x ;pulsedelay-1
                bpl portamento

                sta pulsedelay,x ;reset pulsedelay

                lda pulsevalue   ;restrict pulse speed
                and #$e0         ;from $00-$1f
                sta pulsespeed

                lda pulsedir,x   ;pulsedir 0 is up and
                bne pulsedown    ;1 is down

                lda pulsespeed   ;pulse width up
                clc
                adc instr+0,y    ;add the pulsespeed
                pha              ;to the pulse width
                lda instr+1,y
                adc #$00
                and #$0f
                pha
                cmp #$0e         ;go pulsedown when
                bne dumpulse     ;the pulse value
                inc pulsedir,x   ;reaches max ($0exx)
                jmp dumpulse

pulsedown:

                sec              ;pulse width down
                lda instr+0,y
                sbc pulsespeed   ;sub the pulsespeed
                pha              ;from the pulse width
                lda instr+1,y
                sbc #$00
                and #$0f
                pha
                cmp #$08         ;go pulseup when
                bne dumpulse     ;the pulse value
                dec pulsedir,x   ;reaches min ($08xx)

dumpulse:

                stx tempstore    ;dump pulse width to
                ldx tmpregofst   ;chip and back into
                pla              ;the instr data str
                sta instr+1,y
                sta SIDBASE+$3,x
                pla
                sta instr+0,y
                sta SIDBASE+$2,x
                ldx tempstore


                ;portamento routine
                ;portamento comes from the second bytee
                ;if it's a negative value

portamento:

                ldy tmpregofst
                lda portaval,x   ;check for portamento
                beq drums        ;none

                and #$7e         ;toad unwanted bits
                sta tempstore

                lda portaval,x   ;bit0 signals up/down
                and #$01
                beq portup

                sec              ;portamento down
                lda savefreqlo,x ;sub portaval from
                sbc tempstore    ;current frequency
                sta savefreqlo,x
                sta SIDBASE+$0,y
                lda savefreqhi,x
                sbc #$00         ;(word arithmetic)
                sta savefreqhi,x
                sta SIDBASE+$1,y
                jmp drums

portup:

                clc              ;portamento up
                lda savefreqlo,x ;add portval to
                adc tempstore    ;current frequency
                sta savefreqlo,x
                sta SIDBASE+$0,y
                lda savefreqhi,x
                adc #$00
                sta savefreqhi,x
                sta SIDBASE+$1,y


                ;bit0 instrfx are the drum routines
                ;the actual drum timbre depends on the
                ;crtl register value for the instrument:
                ;ctrlreg 0 is always noise
                ;ctrlreg x is noise for 1st vbl and x
                ;from then on

                ;see that the drum is made by rapid hi
                ;to low frequency slide with fast attack
                ;and decay

drums:

                lda instrfx      ;check if drums
                and #$01         ;needed this instr
                beq skydive

                lda savefreqhi,x ;don't bother if freq
                beq skydive      ;can't go any lower

                lda lengthleft,x ;or if the note has
                beq skydive      ;finished

                lda savelnthcc,x ;check if this is the
                and #$1f         ;first vbl for this
                sec              ;instrument-note
                sbc #$01
                cmp lengthleft,x
                ldy tmpregofst
                bcc firstime

                lda savefreqhi,x ;not the first time
                dec savefreqhi,x ;so dec freqhi for
                sta SIDBASE+$1,y      ;drum sound

                lda voicectrl,x  ;if ctrlreg is 0 then
                and #$fe         ;noise is used always
                bne dumpctrl

firstime:

                lda savefreqhi,x ;noise is used for
                sta SIDBASE+$1,y      ;the first vbl also
                lda #$80         ;(set noise)

dumpctrl:

                sta SIDBASE+$4,y


                ;bit1 instrfx is the skydive
                ;a long portamento-down from the note
                ;to zerofreq

skydive:

                lda instrfx      ;check if skydive
                and #$02         ;needed this instr
                beq octarp

                lda counter      ;every 2nd vbl
                and #$01
                beq octarp

                lda savefreqhi,x ;check if skydive
                beq octarp        ;already complete

                dec savefreqhi,x ;decr and save the
                ldy tmpregofst   ;high bytee freq
                sta SIDBASE+$1,y


                ;bit2 instrfx is an octave arpeggio
                ;pretty tame huh?

octarp:

                lda instrfx      ;check if arpt needed
                and #$04
                beq loopcont

                lda counter      ;only 2 arpt values
                and #$01
                beq +

                lda notenum,x    ;odd, note+12
                clc
                adc #$0c
                jmp ++

        +       lda notenum,x    ;even, note

        +       asl a              ;dump the corresponding
                tay              ;frequencies
                lda frequenzlo,y
                sta tempfreq
                lda frequenzhi,y
                ldy tmpregofst
                sta SIDBASE+$1,y
                lda tempfreq
                sta SIDBASE+$0,y


                ;==========
                ;end of dbf loop

loopcont:

                dex              ;dbf mainloop
                bmi musicend
                jmp mainloop

musicend:

                rts


                ;====================================
                ;frequenz data
                ;====================================

frequenzlo:     .byte $16
frequenzhi:     .byte $01
                .byte $27,$01,$38,$01,$4b,$01
                .byte $5f,$01,$73,$01,$8a,$01,$a1,$01
                .byte $ba,$01,$d4,$01,$f0,$01,$0e,$02
                .byte $2d,$02,$4e,$02,$71,$02,$96,$02
                .byte $bd,$02,$e7,$02,$13,$03,$42,$03
                .byte $74,$03,$a9,$03,$e0,$03,$1b,$04
                .byte $5a,$04,$9b,$04,$e2,$04,$2c,$05
                .byte $7b,$05,$ce,$05,$27,$06,$85,$06
                .byte $e8,$06,$51,$07,$c1,$07,$37,$08
                .byte $b4,$08,$37,$09,$c4,$09,$57,$0a
                .byte $f5,$0a,$9c,$0b,$4e,$0c,$09,$0d
                .byte $d0,$0d,$a3,$0e,$82,$0f,$6e,$10
                .byte $68,$11,$6e,$12,$88,$13,$af,$14
                .byte $eb,$15,$39,$17,$9c,$18,$13,$1a
                .byte $a1,$1b,$46,$1d,$04,$1f,$dc,$20
                .byte $d0,$22,$dc,$24,$10,$27,$5e,$29
                .byte $d6,$2b,$72,$2e,$38,$31,$26,$34
                .byte $42,$37,$8c,$3a,$08,$3e,$b8,$41
                .byte $a0,$45,$b8,$49,$20,$4e,$bc,$52
                .byte $ac,$57,$e4,$5c,$70,$62,$4c,$68
                .byte $84,$6e,$18,$75,$10,$7c,$70,$83
                .byte $40,$8b,$70,$93,$40,$9c,$78,$a5
                .byte $58,$af,$c8,$b9,$e0,$c4,$98,$d0
                .byte $08,$dd,$30,$ea,$20,$f8,$2e,$fd


regoffsets:     .byte $00,$07,$0e
tmpregofst:     .byte $00
posoffset:      .byte $00,$00,$00
patoffset:      .byte $00,$00,$00
lengthleft:     .byte $00,$00,$00
savelnthcc:     .byte $00,$00,$00
voicectrl:      .byte $00,$00,$00
notenum:        .byte $00,$00,$00
instrnr:        .byte $00,$00,$00
appendfl:       .byte $00
templnthcc:     .byte $00
tempfreq:       .byte $00
tempstore:      .byte $00
tempctrl:       .byte $00
vibrdepth:      .byte $00
pulsevalue:     .byte $00
tmpvdiflo:      .byte $00
tmpvdifhi:      .byte $00
tmpvfrqlo:      .byte $00
tmpvfrqhi:      .byte $00
oscilatval:     .byte $00
pulsedelay:     .byte $00,$00,$00
pulsedir:       .byte $00,$00,$00
speed:          .byte $00
resetspd:       .byte $01
instnumby8:     .byte $00
mstatus:        .byte $c0
savefreqhi:     .byte $00,$00,$00
savefreqlo:     .byte $00,$00,$00
portaval:       .byte $00,$00,$00
instrfx:        .byte $00
pulsespeed:     .byte $00
counter:        .byte $00
currtrkhi:      .byte $00,$00,$00
currtrklo:      .byte $00,$00,$00


                ;====================================
                ;monty on the run main theme
                ;====================================

songs:
                .byte <montymaintr1
                .byte <montymaintr2
                .byte <montymaintr3
                .byte >montymaintr1
                .byte >montymaintr2
                .byte >montymaintr3


                ;====================================
                ;pointers to the patterns

                ;low pointers
patptl:
                .byte <ptn00
                .byte <ptn01
                .byte <ptn02
                .byte <ptn03
                .byte <ptn04
                .byte <ptn05
                .byte <ptn06
                .byte <ptn07
                .byte <ptn08
                .byte <ptn09
                .byte <ptn0a
                .byte <ptn0b
                .byte <ptn0c
                .byte <ptn0d
                .byte <ptn0e
                .byte <ptn0f
                .byte <ptn10
                .byte <ptn11
                .byte <ptn12
                .byte <ptn13
                .byte <ptn14
                .byte <ptn15
                .byte <ptn16
                .byte <ptn17
                .byte <ptn18
                .byte <ptn19
                .byte <ptn1a
                .byte <ptn1b
                .byte <ptn1c
                .byte <ptn1d
                .byte <ptn1e
                .byte <ptn1f
                .byte <ptn20
                .byte <ptn21
                .byte <ptn22
                .byte <ptn23
                .byte <ptn24
                .byte <ptn25
                .byte <ptn26
                .byte <ptn27
                .byte <ptn28
                .byte <ptn29
                .byte <ptn2a
                .byte <ptn2b
                .byte <ptn2c
                .byte <ptn2d
                .byte 0
                .byte <ptn2f
                .byte <ptn30
                .byte <ptn31
                .byte <ptn32
                .byte <ptn33
                .byte <ptn34
                .byte <ptn35
                .byte <ptn36
                .byte <ptn37
                .byte <ptn38
                .byte <ptn39
                .byte <ptn3a
                .byte <ptn3b

                ;high pointers
patpth:
                .byte >ptn00
                .byte >ptn01
                .byte >ptn02
                .byte >ptn03
                .byte >ptn04
                .byte >ptn05
                .byte >ptn06
                .byte >ptn07
                .byte >ptn08
                .byte >ptn09
                .byte >ptn0a
                .byte >ptn0b
                .byte >ptn0c
                .byte >ptn0d
                .byte >ptn0e
                .byte >ptn0f
                .byte >ptn10
                .byte >ptn11
                .byte >ptn12
                .byte >ptn13
                .byte >ptn14
                .byte >ptn15
                .byte >ptn16
                .byte >ptn17
                .byte >ptn18
                .byte >ptn19
                .byte >ptn1a
                .byte >ptn1b
                .byte >ptn1c
                .byte >ptn1d
                .byte >ptn1e
                .byte >ptn1f
                .byte >ptn20
                .byte >ptn21
                .byte >ptn22
                .byte >ptn23
                .byte >ptn24
                .byte >ptn25
                .byte >ptn26
                .byte >ptn27
                .byte >ptn28
                .byte >ptn29
                .byte >ptn2a
                .byte >ptn2b
                .byte >ptn2c
                .byte >ptn2d
                .byte 0
                .byte >ptn2f
                .byte >ptn30
                .byte >ptn31
                .byte >ptn32
                .byte >ptn33
                .byte >ptn34
                .byte >ptn35
                .byte >ptn36
                .byte >ptn37
                .byte >ptn38
                .byte >ptn39
                .byte >ptn3a
                .byte >ptn3b


                ;====================================
                ;tracks
                ;====================================

                ;track1
montymaintr1:
                .byte $11,$14,$17,$1a,$00,$27,$00,$28
                .byte $03,$05,$00,$27,$00,$28,$03,$05
                .byte $07,$3a,$14,$17,$00,$27,$00,$28
                .byte $2f,$30,$31,$31,$32,$33,$33,$34
                .byte $34,$34,$34,$34,$34,$34,$34,$35
                .byte $35,$35,$35,$35,$35,$36,$12,$37
                .byte $38,$09,$2a,$09,$2b,$09,$0a,$09
                .byte $2a,$09,$2b,$09,$0a,$0d,$0d,$0f
                .byte $ff

                ;track2
montymaintr2:
                .byte $12,$15,$18,$1b,$2d,$39,$39
                .byte $39,$39,$39,$39,$2c,$39,$39,$39
                .byte $39,$39,$39,$2c,$39,$39,$39,$01
                .byte $01,$29,$29,$2c,$15,$18,$39,$39
                .byte $39,$39,$39,$39,$39,$39,$39,$39
                .byte $39,$39,$39,$39,$39,$39,$39,$39
                .byte $39,$39,$39,$39,$39,$39,$39,$39
                .byte $39,$39,$39,$39,$39,$01,$01,$01
                .byte $29,$39,$39,$39,$01,$01,$01,$29
                .byte $39,$39,$39,$39,$ff

                ;track3
montymaintr3:
                .byte $13,$16,$19
                .byte $1c,$02,$02,$1d,$1e,$02,$02,$1d
                .byte $1f,$04,$04,$20,$20,$06,$02,$02
                .byte $1d,$1e,$02,$02,$1d,$1f,$04,$04
                .byte $20,$20,$06,$08,$08,$08,$08,$21
                .byte $21,$21,$21,$22,$22,$22,$23,$22
                .byte $24,$25,$3b,$26,$26,$26,$26,$26
                .byte $26,$26,$26,$26,$26,$26,$26,$26
                .byte $26,$26,$26,$02,$02,$1d,$1e,$02
                .byte $02,$1d,$1f,$2f,$2f,$2f,$2f,$2f
                .byte $2f,$2f,$2f,$2f,$2f,$2f,$2f,$2f
                .byte $0b,$0b,$1d,$1d,$0b,$0b,$1d,$0b
                .byte $0b,$0b,$0c,$0c,$1d,$1d,$1d,$10
                .byte $0b,$0b,$1d,$1d,$0b,$0b,$1d,$0b
                .byte $0b,$0b,$0c,$0c,$1d,$1d,$1d,$10
                .byte $0b,$1d,$0b,$1d,$0b,$1d,$0b,$1d
                .byte $0b,$0c,$1d,$0b,$0c,$23,$0b,$0b
                .byte $ff


                ;====================================
                ;patterns
                ;====================================

ptn00:
                .byte $83,$00,$37,$01,$3e,$01,$3e,$03
                .byte $3d,$03,$3e,$03,$43,$03,$3e,$03
                .byte $3d,$03,$3e,$03,$37,$01,$3e,$01
                .byte $3e,$03,$3d,$03,$3e,$03,$43,$03
                .byte $42,$03,$43,$03,$45,$03,$46,$01
                .byte $48,$01,$46,$03,$45,$03,$43,$03
                .byte $4b,$01,$4d,$01,$4b,$03,$4a,$03
                .byte $48,$ff

ptn27:
                .byte $1f,$4a,$ff

ptn28:
                .byte $03,$46,$01,$48,$01,$46,$03,$45
                .byte $03,$4a,$0f,$43,$ff

ptn03:
                .byte $bf,$06
                .byte $48,$07,$48,$01,$4b,$01,$4a,$01
                .byte $4b,$01,$4a,$03,$4b,$03,$4d,$03
                .byte $4b,$03,$4a,$3f,$48,$07,$48,$01
                .byte $4b,$01,$4a,$01,$4b,$01,$4a,$03
                .byte $4b,$03,$4d,$03,$4b,$03,$48,$3f
                .byte $4c,$07,$4c,$01,$4f,$01,$4e,$01
                .byte $4f,$01,$4e,$03,$4f,$03,$51,$03
                .byte $4f,$03,$4e,$3f,$4c,$07,$4c,$01
                .byte $4f,$01,$4e,$01,$4f,$01,$4e,$03
                .byte $4f,$03,$51,$03,$4f,$03,$4c,$ff

ptn05:
                .byte $83,$04,$26,$03,$29,$03,$28,$03
                .byte $29,$03,$26,$03,$35,$03,$34,$03
                .byte $32,$03,$2d,$03,$30,$03,$2f,$03
                .byte $30,$03,$2d,$03,$3c,$03,$3b,$03
                .byte $39,$03,$30,$03,$33,$03,$32,$03
                .byte $33,$03,$30,$03,$3f,$03,$3e,$03
                .byte $3c,$03,$46,$03,$45,$03,$43,$03
                .byte $3a,$03,$39,$03,$37,$03,$2e,$03
                .byte $2d,$03,$26,$03,$29,$03,$28,$03
                .byte $29,$03,$26,$03,$35,$03,$34,$03
                .byte $32,$03,$2d,$03,$30,$03,$2f,$03
                .byte $30,$03,$2d,$03,$3c,$03,$3b,$03
                .byte $39,$03,$30,$03,$33,$03,$32,$03
                .byte $33,$03,$30,$03,$3f,$03,$3e,$03
                .byte $3c,$03,$34,$03,$37,$03,$36,$03
                .byte $37,$03,$34,$03,$37,$03,$3a,$03
                .byte $3d

ptn3a:
                .byte $03,$3e,$07,$3e,$07,$3f,$07
                .byte $3e,$03,$3c,$07,$3e,$57,$ff

ptn07:
                .byte $8b
                .byte $00,$3a,$01,$3a,$01,$3c,$03,$3d
                .byte $03,$3f,$03,$3d,$03,$3c,$0b,$3a
                .byte $03,$39,$07,$3a,$81,$06,$4b,$01
                .byte $4d,$01,$4e,$01,$4d,$01,$4e,$01
                .byte $4d,$05,$4b,$81,$00,$3a,$01,$3c
                .byte $01,$3d,$03,$3f,$03,$3d,$03,$3c
                .byte $03,$3a,$03,$39,$1b,$3a,$0b,$3b
                .byte $01,$3b,$01,$3d,$03,$3e,$03,$40
                .byte $03,$3e,$03,$3d,$0b,$3b,$03,$3a
                .byte $07,$3b,$81,$06,$4c,$01,$4e,$01
                .byte $4f,$01,$4e,$01,$4f,$01,$4e,$05
                .byte $4c,$81,$00,$3b,$01,$3d,$01,$3e
                .byte $03,$40,$03,$3e,$03,$3d,$03,$3b
                .byte $03,$3a,$1b,$3b,$8b,$05,$35,$03
                .byte $33,$07,$32,$03,$30,$03,$2f,$0b
                .byte $30,$03,$32,$0f,$30,$0b,$35,$03
                .byte $33,$07,$32,$03,$30,$03,$2f,$1f
                .byte $30,$8b,$00,$3c,$01,$3c,$01,$3e
                .byte $03,$3f,$03,$41,$03,$3f,$03,$3e
                .byte $0b,$3d,$01,$3d,$01,$3f,$03,$40
                .byte $03,$42,$03,$40,$03,$3f,$03,$3e
                .byte $01,$3e,$01,$40,$03,$41,$03,$40
                .byte $03,$3e,$03,$3d,$03,$3e,$03,$3c
                .byte $03,$3a,$01,$3a,$01,$3c,$03,$3d
                .byte $03,$3c,$03,$3a,$03,$39,$03,$3a
                .byte $03,$3c,$ff

ptn09:
                .byte $83,$00,$32,$01,$35,$01,$34,$03
                .byte $32,$03,$35,$03,$34,$03,$32,$03
                .byte $35,$01,$34,$01,$32,$03,$32,$03
                .byte $3a,$03,$39,$03,$3a,$03,$32,$03
                .byte $3a,$03,$39,$03,$3a,$ff

ptn2a:
                .byte $03,$34,$01,$37,$01,$35,$03,$34
                .byte $03,$37,$03,$35,$03,$34,$03,$37
                .byte $01,$35,$01,$34,$03,$34,$03,$3a
                .byte $03,$39,$03,$3a,$03,$34,$03,$3a
                .byte $03,$39,$03,$3a,$ff

ptn2b:
                .byte $03,$39,$03,$38,$03,$39,$03,$3a
                .byte $03,$39,$03,$37,$03,$35,$03,$34
                .byte $03,$35,$03,$34,$03,$35,$03,$37
                .byte $03,$35,$03,$34,$03,$32,$03,$31
                .byte $ff

ptn0a:
                .byte $03
                .byte $37,$01,$3a,$01,$39,$03,$37,$03
                .byte $3a,$03,$39,$03,$37,$03,$3a,$01
                .byte $39,$01,$37,$03,$37,$03,$3e,$03
                .byte $3d,$03,$3e,$03,$37,$03,$3e,$03
                .byte $3d,$03,$3e,$03,$3d,$01,$40,$01
                .byte $3e,$03,$3d,$03,$40,$01,$3e,$01
                .byte $3d,$03,$40,$03,$3e,$03,$40,$03
                .byte $40,$01,$43,$01,$41,$03,$40,$03
                .byte $43,$01,$41,$01,$40,$03,$43,$03
                .byte $41,$03,$43,$03,$43,$01,$46,$01
                .byte $45,$03,$43,$03,$46,$01,$45,$01
                .byte $43,$03,$46,$03,$45,$03,$43,$01
                .byte $48,$01,$49,$01,$48,$01,$46,$01
                .byte $45,$01,$46,$01,$45,$01,$43,$01
                .byte $41,$01,$43,$01,$41,$01,$40,$01
                .byte $3d,$01,$39,$01,$3b,$01,$3d,$ff

ptn0d:
                .byte $01,$3e,$01,$39,$01,$35,$01,$39
                .byte $01,$3e,$01,$39,$01,$35,$01,$39
                .byte $03,$3e,$01,$41,$01,$40,$03,$40
                .byte $01,$3d,$01,$3e,$01,$40,$01,$3d
                .byte $01,$39,$01,$3d,$01,$40,$01,$3d
                .byte $01,$39,$01,$3d,$03,$40,$01,$43
                .byte $01,$41,$03,$41,$01,$3e,$01,$40
                .byte $01,$41,$01,$3e,$01,$39,$01,$3e
                .byte $01,$41,$01,$3e,$01,$39,$01,$3e
                .byte $03,$41,$01,$45,$01,$43,$03,$43
                .byte $01,$40,$01,$41,$01,$43,$01,$40
                .byte $01,$3d,$01,$40,$01,$43,$01,$40
                .byte $01,$3d,$01,$40,$01,$46,$01,$43
                .byte $01,$45,$01,$46,$01,$44,$01,$43
                .byte $01,$40,$01,$3d,$ff

ptn0f:
                .byte $01,$3e,$01
                .byte $39,$01,$35,$01,$39,$01,$3e,$01
                .byte $39,$01,$35,$01,$39,$01,$3e,$01
                .byte $39,$01,$35,$01,$39,$01,$3e,$01
                .byte $39,$01,$35,$01,$39,$01,$3e,$01
                .byte $3a,$01,$37,$01,$3a,$01,$3e,$01
                .byte $3a,$01,$37,$01,$3a,$01,$3e,$01
                .byte $3a,$01,$37,$01,$3a,$01,$3e,$01
                .byte $3a,$01,$37,$01,$3a,$01,$40,$01
                .byte $3d,$01,$39,$01,$3d,$01,$40,$01
                .byte $3d,$01,$39,$01,$3d,$01,$40,$01
                .byte $3d,$01,$39,$01,$3d,$01,$40,$01
                .byte $3d,$01,$39,$01,$3d,$01,$41,$01
                .byte $3e,$01,$39,$01,$3e,$01,$41,$01
                .byte $3e,$01,$39,$01,$3e,$01,$41,$01
                .byte $3e,$01,$39,$01,$3e,$01,$41,$01
                .byte $3e,$01,$39,$01,$3e,$01,$43,$01
                .byte $3e,$01,$3a,$01,$3e,$01,$43,$01
                .byte $3e,$01,$3a,$01,$3e,$01,$43,$01
                .byte $3e,$01,$3a,$01,$3e,$01,$43,$01
                .byte $3e,$01,$3a,$01,$3e,$01,$43,$01
                .byte $3f,$01,$3c,$01,$3f,$01,$43,$01
                .byte $3f,$01,$3c,$01,$3f,$01,$43,$01
                .byte $3f,$01,$3c,$01,$3f,$01,$43,$01
                .byte $3f,$01,$3c,$01,$3f,$01,$45,$01
                .byte $42,$01,$3c,$01,$42,$01,$45,$01
                .byte $42,$01,$3c,$01,$42,$01,$48,$01
                .byte $45,$01,$42,$01,$45,$01,$4b,$01
                .byte $48,$01,$45,$01,$48,$01,$4b,$01
                .byte $4a,$01,$48,$01,$4a,$01,$4b,$01
                .byte $4a,$01,$48,$01,$4a,$01,$4b,$01
                .byte $4a,$01,$48,$01,$4a,$01,$4c,$01
                .byte $4e,$03,$4f,$ff

ptn11:
                .byte $bf,$06,$56,$1f,$57,$1f,$56,$1f
                .byte $5b,$1f,$56,$1f,$57,$1f,$56,$1f
                .byte $4f,$ff

ptn12:
                .byte $bf,$0c,$68,$7f,$7f,$7f,$7f,$7f
                .byte $7f,$7f,$ff

ptn13:
                .byte $bf,$08,$13,$3f,$13,$3f,$13,$3f
                .byte $13,$3f,$13,$3f,$13,$3f,$13,$1f
                .byte $13,$ff

ptn14:
                .byte $97,$09,$2e,$03,$2e,$1b,$32,$03
                .byte $32,$1b,$31,$03,$31,$1f,$34,$43
                .byte $17,$32,$03,$32,$1b,$35,$03,$35
                .byte $1b,$34,$03,$34,$0f,$37,$8f,$0a
                .byte $37,$43,$ff

ptn15:
                .byte $97,$09,$2b,$03,$2b,$1b,$2e,$03
                .byte $2e,$1b,$2d,$03,$2d,$1f,$30,$43
                .byte $17,$2e,$03,$2e,$1b,$32,$03,$32
                .byte $1b,$31,$03,$31,$0f,$34,$8f,$0a
                .byte $34,$43,$ff

ptn16:
                .byte $0f,$1f,$0f,$1f,$0f,$1f,$0f,$1f
                .byte $0f,$1f,$0f,$1f,$0f,$1f,$0f,$1f
                .byte $0f,$1f,$0f,$1f,$0f,$1f,$0f,$1f
                .byte $0f,$1f,$0f,$1f,$0f,$1f,$0f,$1f
                .byte $ff

ptn17:
                .byte $97,$09,$33,$03,$33,$1b,$37,$03
                .byte $37,$1b,$36,$03,$36,$1f,$39,$43
                .byte $17,$37,$03,$37,$1b,$3a,$03,$3a
                .byte $1b,$39,$03,$39,$2f,$3c,$21,$3c
                .byte $21,$3d,$21,$3e,$21,$3f,$21,$40
                .byte $21,$41,$21,$42,$21,$43,$21,$44
                .byte $01,$45,$ff

ptn18:
                .byte $97,$09,$30,$03,$30,$1b,$33,$03
                .byte $33,$1b,$32,$03,$32,$1f,$36,$43
                .byte $17,$33,$03,$33,$1b,$37,$03,$37
                .byte $1b,$36,$03,$36,$2f,$39,$21,$39
                .byte $21,$3a,$21,$3b,$21,$3c,$21,$3d
                .byte $21,$3e,$21,$3f,$21,$40,$21,$41
                .byte $01,$42,$ff

ptn19:
                .byte $0f,$1a,$0f,$1a,$0f,$1a,$0f,$1a
                .byte $0f,$1a,$0f,$1a,$0f,$1a,$0f,$1a
                .byte $0f,$1a,$0f,$1a,$0f,$1a,$0f,$1a
                .byte $0f,$1a,$0f,$1a,$0f,$1a,$0f,$1a
                .byte $ff

ptn1a:
                .byte $1f,$46,$bf,$0a,$46,$7f,$7f,$ff

ptn1b:
                .byte $1f,$43,$bf,$0a,$43,$7f,$ff

ptn1c:
                .byte $83,$02,$13,$03,$13,$03,$1e,$03
                .byte $1f,$03,$13,$03,$13,$03,$1e,$03
                .byte $1f,$03,$13,$03,$13,$03,$1e,$03
                .byte $1f,$03,$13,$03,$13,$03,$1e,$03
                .byte $1f,$03,$13,$03,$13,$03,$1e,$03
                .byte $1f,$03,$13,$03,$13,$03,$1e,$03
                .byte $1f,$03,$13,$03,$13,$03,$1e,$03
                .byte $1f,$03,$13,$03,$13,$03,$1e,$03
                .byte $1f,$ff

ptn29:
                .byte $8f,$0b,$38,$4f,$ff

ptn2c:
                .byte $83,$0e,$32,$07,$32,$07,$2f,$07
                .byte $2f,$03,$2b,$87,$0b,$46,$83,$0e
                .byte $2c,$03,$2c,$8f,$0b,$32,$ff

ptn2d:
                .byte $43,$83,$0e,$32,$03,$32,$03,$2f
                .byte $03,$2f,$03,$2c,$87,$0b,$38,$ff

ptn39:
                .byte $83,$01
                .byte $43,$01,$4f,$01,$5b,$87,$03,$2f
                .byte $83,$01,$43,$01,$4f,$01,$5b,$87
                .byte $03,$2f,$83,$01,$43,$01,$4f,$01
                .byte $5b,$87,$03,$2f,$83,$01,$43,$01
                .byte $4f,$01,$5b,$87,$03,$2f,$83,$01
                .byte $43,$01,$4f,$01,$5b,$87,$03,$2f
                .byte $83,$01,$43,$01,$4f,$01,$5b,$87
                .byte $03,$2f

ptn01:
                .byte $83,$01,$43,$01,$4f,$01,$5b,$87
                .byte $03,$2f,$83,$01,$43,$01,$4f,$01
                .byte $5b,$87,$03,$2f,$ff

ptn02:
                .byte $83,$02,$13,$03,$13,$03,$1f,$03
                .byte $1f,$03,$13,$03,$13,$03,$1f,$03
                .byte $1f,$ff

ptn1d:
                .byte $03,$15,$03,$15,$03,$1f,$03,$21
                .byte $03,$15,$03,$15,$03,$1f,$03,$21
                .byte $ff

ptn1e:
                .byte $03,$1a,$03,$1a,$03,$1c,$03,$1c
                .byte $03,$1d,$03,$1d,$03,$1e,$03,$1e
                .byte $ff

ptn1f:
                .byte $03,$1a,$03,$1a,$03,$24,$03,$26
                .byte $03,$13,$03,$13,$07,$1f,$ff

ptn04:
                .byte $03,$18,$03,$18,$03,$24,$03,$24
                .byte $03,$18,$03,$18,$03,$24,$03,$24
                .byte $03,$20,$03,$20,$03,$2c,$03,$2c
                .byte $03,$20,$03,$20,$03,$2c,$03,$2c
                .byte $ff

ptn20:
                .byte $03,$19,$03,$19,$03
                .byte $25,$03,$25,$03,$19,$03,$19,$03
                .byte $25,$03,$25,$03,$21,$03,$21,$03
                .byte $2d,$03,$2d,$03,$21,$03,$21,$03
                .byte $2d,$03,$2d,$ff

ptn06:
                .byte $03,$1a,$03,$1a
                .byte $03,$26,$03,$26,$03,$1a,$03,$1a
                .byte $03,$26,$03,$26,$03,$15,$03,$15
                .byte $03,$21,$03,$21,$03,$15,$03,$15
                .byte $03,$21,$03,$21,$03,$18,$03,$18
                .byte $03,$24,$03,$24,$03,$18,$03,$18
                .byte $03,$24,$03,$24,$03,$1f,$03,$1f
                .byte $03,$2b,$03,$2b,$03,$1f,$03,$1f
                .byte $03,$2b,$03,$2b,$03,$1a,$03,$1a
                .byte $03,$26,$03,$26,$03,$1a,$03,$1a
                .byte $03,$26,$03,$26,$03,$15,$03,$15
                .byte $03,$21,$03,$21,$03,$15,$03,$15
                .byte $03,$21,$03,$21,$03,$18,$03,$18
                .byte $03,$24,$03,$24,$03,$18,$03,$18
                .byte $03,$24,$03,$24,$03,$1c,$03,$1c
                .byte $03,$28,$03,$28,$03,$1c,$03,$1c
                .byte $03,$28,$03,$28

ptn3b:
                .byte $83,$04,$36,$07
                .byte $36,$07,$37,$07,$36,$03,$33,$07
                .byte $32,$57,$ff

ptn08:
                .byte $83,$02,$1b,$03,$1b,$03,$27,$03
                .byte $27,$03,$1b,$03,$1b,$03,$27,$03
                .byte $27,$ff

ptn21:
                .byte $03,$1c,$03,$1c,$03,$28,$03,$28
                .byte $03,$1c,$03,$1c,$03,$28,$03,$28
                .byte $ff

ptn22:
                .byte $03,$1d,$03,$1d,$03,$29,$03,$29
                .byte $03,$1d,$03,$1d,$03,$29,$03,$29
                .byte $ff

ptn23:
                .byte $03,$18,$03,$18,$03,$24,$03,$24
                .byte $03,$18,$03,$18,$03,$24,$03,$24
                .byte $ff

ptn24:
                .byte $03,$1e,$03,$1e,$03,$2a,$03,$2a
                .byte $03,$1e,$03,$1e,$03,$2a,$03,$2a
                .byte $ff

ptn25:
                .byte $83,$05,$26,$01,$4a,$01,$34,$03
                .byte $29,$03,$4c,$03,$4a,$03,$31,$03
                .byte $4a,$03,$24,$03,$22,$01,$46,$01
                .byte $30,$03,$25,$03,$48,$03,$46,$03
                .byte $2d,$03,$46,$03,$24,$ff

ptn0b:
                .byte $83,$02,$1a,$03,$1a,$03,$26,$03
                .byte $26,$03,$1a,$03,$1a,$03,$26,$03
                .byte $26,$ff

ptn0c:
                .byte $03,$13,$03,$13,$03,$1d,$03,$1f
                .byte $03,$13,$03,$13,$03,$1d,$03,$1f
                .byte $ff

ptn26:
                .byte $87,$02,$1a,$87,$03,$2f,$83,$02
                .byte $26,$03,$26,$87,$03,$2f,$ff

ptn10:
                .byte $07,$1a,$4f,$47,$ff

ptn0e:
                .byte $03,$1f,$03,$1f,$03,$24,$03,$26
                .byte $07,$13,$47,$ff

ptn30:
                .byte $bf,$0f,$32,$0f,$32,$8f,$90,$30
                .byte $3f,$32,$13,$32,$03,$32,$03,$35
                .byte $03,$37,$3f,$37,$0f,$37,$8f,$90
                .byte $30,$3f,$32,$13,$32,$03,$2d,$03
                .byte $30,$03,$32,$ff

ptn31:
                .byte $0f,$32
                .byte $af,$90,$35,$0f,$37,$a7,$99,$37
                .byte $07,$35,$3f,$32,$13,$32,$03,$32
                .byte $a3,$e8,$35,$03,$37,$0f,$35,$af
                .byte $90,$37,$0f,$37,$a7,$99,$37,$07
                .byte $35,$3f,$32,$13,$32,$03,$2d,$a3
                .byte $e8,$30,$03,$32,$ff

ptn32:
                .byte $07,$32,$03
                .byte $39,$13,$3c,$a7,$9a,$37,$a7,$9b
                .byte $38,$07,$37,$03,$35,$03,$32,$03
                .byte $39,$1b,$3c,$a7,$9a,$37,$a7,$9b
                .byte $38,$07,$37,$03,$35,$03,$32,$03
                .byte $39,$03,$3c,$03,$3e,$03,$3c,$07
                .byte $3e,$03,$3c,$03,$39,$a7,$9a,$37
                .byte $a7,$9b,$38,$07,$37,$03,$35,$03
                .byte $32,$af,$90,$3c,$1f,$3e,$43,$03
                .byte $3e,$03,$3c,$03,$3e,$ff

ptn33:
                .byte $03,$3e
                .byte $03,$3e,$a3,$e8,$3c,$03,$3e,$03
                .byte $3e,$03,$3e,$a3,$e8,$3c,$03,$3e
                .byte $03,$3e,$03,$3e,$a3,$e8,$3c,$03
                .byte $3e,$03,$3e,$03,$3e,$a3,$e8,$3c
                .byte $03,$3e,$af,$91,$43,$1f,$41,$43
                .byte $03,$3e,$03,$41,$03,$43,$03,$43
                .byte $03,$43,$a3,$e8,$41,$03,$43,$03
                .byte $43,$03,$43,$a3,$e8,$41,$03,$43
                .byte $03,$45,$03,$48,$a3,$fd,$45,$03
                .byte $44,$01,$43,$01,$41,$03,$3e,$03
                .byte $3c,$03,$3e,$2f,$3e,$bf,$98,$3e
                .byte $43,$03,$3e,$03,$3c,$03,$3e,$ff

ptn34:
                .byte $03,$4a,$03,$4a,$a3,$f8,$48,$03
                .byte $4a,$03,$4a,$03,$4a,$a3,$f8,$48
                .byte $03,$4a,$ff

ptn35:
                .byte $01,$51,$01,$54,$01
                .byte $51,$01,$54,$01,$51,$01,$54,$01
                .byte $51,$01,$54,$01,$51,$01,$54,$01
                .byte $51,$01,$54,$01,$51,$01,$54,$01
                .byte $51,$01,$54,$ff

ptn36:
                .byte $01,$50,$01,$4f
                .byte $01,$4d,$01,$4a,$01,$4f,$01,$4d
                .byte $01,$4a,$01,$48,$01,$4a,$01,$48
                .byte $01,$45,$01,$43,$01,$44,$01,$43
                .byte $01,$41,$01,$3e,$01,$43,$01,$41
                .byte $01,$3e,$01,$3c,$01,$3e,$01,$3c
                .byte $01,$39,$01,$37,$01,$38,$01,$37
                .byte $01,$35,$01,$32,$01,$37,$01,$35
                .byte $01,$32,$01,$30,$ff

ptn37:
                .byte $5f,$5f,$5f
                .byte $47,$83,$0e,$32,$07,$32,$07,$2f
                .byte $03,$2f,$07,$2f,$97,$0b,$3a,$5f
                .byte $5f,$47,$8b,$0e,$32,$03,$32,$03
                .byte $2f,$03,$2f,$47,$97,$0b,$3a,$5f
                .byte $5f,$47,$83,$0e,$2f,$0b,$2f,$03
                .byte $2f,$03,$2f,$87,$0b,$30,$17,$3a
                .byte $5f,$8b,$0e,$32,$0b,$32,$0b,$2f
                .byte $0b,$2f,$07,$2c,$07,$2c,$ff

ptn38:
                .byte $87
                .byte $0b,$34,$17,$3a,$5f,$5f,$84,$0e
                .byte $32,$04,$32,$05,$32,$04,$2f,$04
                .byte $2f,$05,$2f,$47,$97,$0b,$3a,$5f
                .byte $5f,$84,$0e,$32,$04,$32,$05,$32
                .byte $04,$2f,$04,$2f,$05,$2f,$ff

ptn2f:
                .byte $03,$1a,$03,$1a,$03
                .byte $24,$03,$26,$03,$1a,$03,$1a,$03
                .byte $18,$03,$19,$03,$1a,$03,$1a,$03
                .byte $24,$03,$26,$03,$1a,$03,$1a,$03
                .byte $18,$03,$19,$03,$18,$03,$18,$03
                .byte $22,$03,$24,$03,$18,$03,$18,$03
                .byte $16,$03,$17,$03,$18,$03,$18,$03
                .byte $22,$03,$24,$03,$18,$03,$18,$03
                .byte $16,$03,$17,$03,$13,$03,$13,$03
                .byte $1d,$03,$1f,$03,$13,$03,$13,$03
                .byte $1d,$03,$1e,$03,$13,$03,$13,$03
                .byte $1d,$03,$1f,$03,$13,$03,$13,$03
                .byte $1d,$03,$1e,$03,$1a,$03,$1a,$03
                .byte $24,$03,$26,$03,$1a,$03,$1a,$03
                .byte $18,$03,$19,$03,$1a,$03,$1a,$03
                .byte $24,$03,$26,$03,$1a,$03,$1a,$03
                .byte $18,$03,$19,$ff


                ;====================================
                ;instruments
                ;====================================

instr:
                .byte $80,$09,$41,$48,$60,$03,$81,$00
                .byte $00,$08,$81,$02,$08,$00,$00,$01
                .byte $a0,$02,$41,$09,$80,$00,$00,$00
                .byte $00,$02,$81,$09,$09,$00,$00,$05
                .byte $00,$08,$41,$08,$50,$02,$00,$04
                .byte $00,$01,$41,$3f,$c0,$02,$00,$00
                .byte $00,$08,$41,$04,$40,$02,$00,$00
                .byte $00,$08,$41,$09,$00,$02,$00,$00
                .byte $00,$09,$41,$09,$70,$02,$5f,$04
                .byte $00,$09,$41,$4a,$69,$02,$81,$00
                .byte $00,$09,$41,$40,$6f,$00,$81,$02
                .byte $80,$07,$81,$0a,$0a,$00,$00,$01
                .byte $00,$09,$41,$3f,$ff,$01,$e7,$02
                .byte $00,$08,$41,$90,$f0,$01,$e8,$02
                .byte $00,$08,$41,$06,$0a,$00,$00,$01
                .byte $00,$09,$41,$19,$70,$02,$a8,$00
                .byte $00,$02,$41,$09,$90,$02,$00,$00
                .byte $00,$00,$11,$0a,$fa,$00,$00,$05
                .byte $00,$08,$41,$37,$40,$02,$00,$00
                .byte $00,$08,$11,$07,$70,$02,$00,$00

Extracted code

Dump directly into the monitor to use!

4000:A9 00 20 3F 40 78 A9 28 A2 40 8D FE 03 8E FF 03 
4010:A9 01 8D C5 C0 A9 FF 8D C4 C0 A9 01 8D CE C0 A9 
4020:81 8D CD C0 58 4C 25 40 8E 3D 40 8C 3E 40 AD CD 
4030:C0 20 42 40 AE 3D 40 AC 3E 40 A5 45 40 00 00 4C 
4040:48 40 4C 81 40 4C 7B 40 A9 00 A0 00 0A 8D 96 44 
4050:0A 18 6D 96 44 AA BD BB 44 99 B5 44 E8 C8 C0 06 
4060:D0 F4 A9 00 8D 04 C4 8D 0B C4 8D 12 C4 8D 17 C4 
4070:A9 0F 8D 18 C4 A9 40 8D A8 44 60 A9 C0 8D A8 44 
4080:60 EE B4 44 2C A8 44 30 1E 50 36 A9 00 8D B4 44 
4090:A2 02 9D 7E 44 9D 81 44 9D 84 44 9D 8D 44 CA 10 
40A0:F1 8D A8 44 4C C1 40 50 15 A9 00 8D 04 C4 8D 0B 
40B0:C4 8D 12 C4 A9 0F 8D 18 C4 A9 80 8D A8 44 4C B9 
40C0:43 A2 02 CE A5 44 10 06 AD A6 44 8D A5 44 BD 7A 
40D0:44 8D 7D 44 A8 AD A5 44 CD A6 44 F0 03 4C EF 41 
40E0:BD B5 44 85 EB BD B8 44 85 EC DE 84 44 30 03 4C 
40F0:D0 41 BC 7E 44 B1 EB C9 FF F0 07 C9 FE D0 11 4C 
4100:B9 43 A9 00 9D 84 44 9D 7E 44 9D 81 44 4C F2 40 
4110:A8 B9 C1 44 85 ED B9 FD 44 85 EE A9 00 9D AF 44 
4120:BC 81 44 A9 FF 8D 93 44 B1 ED 9D 87 44 8D 94 44 
4130:29 1F 9D 84 44 2C 94 44 70 3F FE 81 44 AD 94 44 
4140:10 11 C8 B1 ED 10 06 9D AF 44 4C 50 41 9D 90 44 
4150:FE 81 44 C8 B1 ED 9D 8D 44 0A A8 B9 BA 43 8D 95 
4160:44 B9 BB 43 AC 7D 44 99 01 C4 9D A9 44 AD 95 44 
4170:99 00 C4 9D AC 44 4C 7C 41 CE 93 44 AC 7D 44 BD 
4180:90 44 8E 96 44 0A 0A 0A AA BD C0 50 8D 97 44 BD 
4190:C0 50 2D 93 44 99 04 C4 BD BE 50 99 02 C4 BD BF 
41A0:50 99 03 C4 BD C1 50 99 05 C4 BD C2 50 99 06 C4 
41B0:AE 96 44 AD 97 44 9D 8A 44 FE 81 44 BC 81 44 B1 
41C0:ED C9 FF D0 08 A9 00 9D 81 44 FE 7E 44 4C B3 43 
41D0:AC 7D 44 BD 87 44 29 20 D0 15 BD 84 44 D0 10 BD 
41E0:8A 44 29 FE 99 04 C4 A9 00 99 05 C4 99 06 C4 BD 
41F0:90 44 0A 0A 0A A8 8C A7 44 B9 C5 50 8D B2 44 B9 
4200:C4 50 8D 99 44 B9 C3 50 8D 98 44 F0 6F AD B4 44 
4210:29 07 C9 04 90 02 49 07 8D 9E 44 BD 8D 44 0A A8 
4220:38 B9 BC 43 F9 BA 43 8D 9A 44 B9 BD 43 F9 BB 43 
4230:4A 6E 9A 44 CE 98 44 10 F7 8D 9B 44 B9 BA 43 8D 
4240:9C 44 B9 BB 43 8D 9D 44 BD 87 44 29 1F C9 08 90 
4250:1C AC 9E 44 88 30 16 18 AD 9C 44 6D 9A 44 8D 9C 
4260:44 AD 9D 44 6D 9B 44 8D 9D 44 4C 54 42 AC 7D 44 
4270:AD 9C 44 99 00 C4 AD 9D 44 99 01 C4 AD 99 44 F0 
4280:62 AC A7 44 29 1F DE 9F 44 10 58 9D 9F 44 AD 99 
4290:44 29 E0 8D B3 44 BD A2 44 D0 1A AD B3 44 18 79 
42A0:BE 50 48 B9 BF 50 69 00 29 0F 48 C9 0E D0 1D FE 
42B0:A2 44 4C CC 42 38 B9 BE 50 ED B3 44 48 B9 BF 50 
42C0:E9 00 29 0F 48 C9 08 D0 03 DE A2 44 8E 96 44 AE 
42D0:7D 44 68 99 BF 50 9D 03 C4 68 99 BE 50 9D 02 C4 
42E0:AE 96 44 AC 7D 44 BD AF 44 F0 3F 29 7E 8D 96 44 
42F0:BD AF 44 29 01 F0 1B 38 BD AC 44 ED 96 44 9D AC 
4300:44 99 00 C4 BD A9 44 E9 00 9D A9 44 99 01 C4 4C 
4310:2A 43 18 BD AC 44 6D 96 44 9D AC 44 99 00 C4 BD 
4320:A9 44 69 00 9D A9 44 99 01 C4 AD B2 44 29 01 F0 
4330:35 BD A9 44 F0 30 BD 84 44 F0 2B BD 87 44 29 1F 
4340:38 E9 01 DD 84 44 AC 7D 44 90 10 BD A9 44 DE A9 
4350:44 99 01 C4 BD 8A 44 29 FE D0 08 BD A9 44 99 01 
4360:C4 A9 80 99 04 C4 AD B2 44 29 02 F0 15 AD B4 44 
4370:29 01 F0 0E BD A9 44 F0 09 DE A9 44 AC 7D 44 99 
4380:01 C4 AD B2 44 29 04 F0 2A AD B4 44 29 01 F0 09 
4390:BD 8D 44 18 69 0C 4C 9C 43 BD 8D 44 0A A8 B9 BA 
43A0:43 8D 95 44 B9 BB 43 AC 7D 44 99 01 C4 AD 95 44 
43B0:99 00 C4 CA 30 03 4C CE 40 60 16 01 27 01 38 01 
43C0:4B 01 5F 01 73 01 8A 01 A1 01 BA 01 D4 01 F0 01 
43D0:0E 02 2D 02 4E 02 71 02 96 02 BD 02 E7 02 13 03 
43E0:42 03 74 03 A9 03 E0 03 1B 04 5A 04 9B 04 E2 04 
43F0:2C 05 7B 05 CE 05 27 06 85 06 E8 06 51 07 C1 07 
4400:37 08 B4 08 37 09 C4 09 57 0A F5 0A 9C 0B 4E 0C 
4410:09 0D D0 0D A3 0E 82 0F 6E 10 68 11 6E 12 88 13 
4420:AF 14 EB 15 39 17 9C 18 13 1A A1 1B 46 1D 04 1F 
4430:DC 20 D0 22 DC 24 10 27 5E 29 D6 2B 72 2E 38 31 
4440:26 34 42 37 8C 3A 08 3E B8 41 A0 45 B8 49 20 4E 
4450:BC 52 AC 57 E4 5C 70 62 4C 68 84 6E 18 75 10 7C 
4460:70 83 40 8B 70 93 40 9C 78 A5 58 AF C8 B9 E0 C4 
4470:98 D0 08 DD 30 EA 20 F8 2E FD 00 07 0E 00 00 00 
4480:00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
4490:00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
44A0:00 00 00 00 00 00 01 00 C0 00 00 00 00 00 00 00 
44B0:00 00 00 00 00 00 00 00 00 00 00 39 7A C6 45 45 
44C0:45 4A 78 8D 94 D0 E6 12 75 A1 41 AD 1D 2F 2E 54 
44D0:A3 4F A2 B4 BF D1 F4 17 38 6B 9E BF C7 CE 9F B0 
44E0:C1 F1 B3 C4 D5 E6 F7 40 84 87 10 67 8C 15 2C 00 
44F0:3D 60 84 B3 FC 5E 71 92 D3 15 3C 67 92 46 4C 4C 
4500:46 4C 46 4D 47 4D 48 48 4E 4E 49 4E 49 4E 4A 4A 
4510:4A 4A 4A 4B 4B 4B 4B 4B 4B 4B 4C 4C 4C 4C 4D 4D 
4520:4D 4D 4D 4E 46 46 4C 48 48 4C 4C 00 50 4E 4E 4E 
4530:4E 4F 4F 4F 4F 50 4C 47 4D 11 14 17 1A 00 27 00 
4540:28 03 05 00 27 00 28 03 05 07 3A 14 17 00 27 00 
4550:28 2F 30 31 31 32 33 33 34 34 34 34 34 34 34 34 
4560:35 35 35 35 35 35 36 12 37 38 09 2A 09 2B 09 0A 
4570:09 2A 09 2B 09 0A 0D 0D 0F FF 12 15 18 1B 2D 39 
4580:39 39 39 39 39 2C 39 39 39 39 39 39 2C 39 39 39 
4590:01 01 29 29 2C 15 18 39 39 39 39 39 39 39 39 39 
45A0:39 39 39 39 39 39 39 39 39 39 39 39 39 39 39 39 
45B0:39 39 39 39 39 39 01 01 01 29 39 39 39 01 01 01 
45C0:29 39 39 39 39 FF 13 16 19 1C 02 02 1D 1E 02 02 
45D0:1D 1F 04 04 20 20 06 02 02 1D 1E 02 02 1D 1F 04 
45E0:04 20 20 06 08 08 08 08 21 21 21 21 22 22 22 23 
45F0:22 24 25 3B 26 26 26 26 26 26 26 26 26 26 26 26 
4600:26 26 26 26 02 02 1D 1E 02 02 1D 1F 2F 2F 2F 2F 
4610:2F 2F 2F 2F 2F 2F 2F 2F 2F 0B 0B 1D 1D 0B 0B 1D 
4620:0B 0B 0B 0C 0C 1D 1D 1D 10 0B 0B 1D 1D 0B 0B 1D 
4630:0B 0B 0B 0C 0C 1D 1D 1D 10 0B 1D 0B 1D 0B 1D 0B 
4640:1D 0B 0C 1D 0B 0C 23 0B 0B FF 83 00 37 01 3E 01 
4650:3E 03 3D 03 3E 03 43 03 3E 03 3D 03 3E 03 37 01 
4660:3E 01 3E 03 3D 03 3E 03 43 03 42 03 43 03 45 03 
4670:46 01 48 01 46 03 45 03 43 03 4B 01 4D 01 4B 03 
4680:4A 03 48 FF 1F 4A FF 03 46 01 48 01 46 03 45 03 
4690:4A 0F 43 FF BF 06 48 07 48 01 4B 01 4A 01 4B 01 
46A0:4A 03 4B 03 4D 03 4B 03 4A 3F 48 07 48 01 4B 01 
46B0:4A 01 4B 01 4A 03 4B 03 4D 03 4B 03 48 3F 4C 07 
46C0:4C 01 4F 01 4E 01 4F 01 4E 03 4F 03 51 03 4F 03 
46D0:4E 3F 4C 07 4C 01 4F 01 4E 01 4F 01 4E 03 4F 03 
46E0:51 03 4F 03 4C FF 83 04 26 03 29 03 28 03 29 03 
46F0:26 03 35 03 34 03 32 03 2D 03 30 03 2F 03 30 03 
4700:2D 03 3C 03 3B 03 39 03 30 03 33 03 32 03 33 03 
4710:30 03 3F 03 3E 03 3C 03 46 03 45 03 43 03 3A 03 
4720:39 03 37 03 2E 03 2D 03 26 03 29 03 28 03 29 03 
4730:26 03 35 03 34 03 32 03 2D 03 30 03 2F 03 30 03 
4740:2D 03 3C 03 3B 03 39 03 30 03 33 03 32 03 33 03 
4750:30 03 3F 03 3E 03 3C 03 34 03 37 03 36 03 37 03 
4760:34 03 37 03 3A 03 3D 03 3E 07 3E 07 3F 07 3E 03 
4770:3C 07 3E 57 FF 8B 00 3A 01 3A 01 3C 03 3D 03 3F 
4780:03 3D 03 3C 0B 3A 03 39 07 3A 81 06 4B 01 4D 01 
4790:4E 01 4D 01 4E 01 4D 05 4B 81 00 3A 01 3C 01 3D 
47A0:03 3F 03 3D 03 3C 03 3A 03 39 1B 3A 0B 3B 01 3B 
47B0:01 3D 03 3E 03 40 03 3E 03 3D 0B 3B 03 3A 07 3B 
47C0:81 06 4C 01 4E 01 4F 01 4E 01 4F 01 4E 05 4C 81 
47D0:00 3B 01 3D 01 3E 03 40 03 3E 03 3D 03 3B 03 3A 
47E0:1B 3B 8B 05 35 03 33 07 32 03 30 03 2F 0B 30 03 
47F0:32 0F 30 0B 35 03 33 07 32 03 30 03 2F 1F 30 8B 
4800:00 3C 01 3C 01 3E 03 3F 03 41 03 3F 03 3E 0B 3D 
4810:01 3D 01 3F 03 40 03 42 03 40 03 3F 03 3E 01 3E 
4820:01 40 03 41 03 40 03 3E 03 3D 03 3E 03 3C 03 3A 
4830:01 3A 01 3C 03 3D 03 3C 03 3A 03 39 03 3A 03 3C 
4840:FF 83 00 32 01 35 01 34 03 32 03 35 03 34 03 32 
4850:03 35 01 34 01 32 03 32 03 3A 03 39 03 3A 03 32 
4860:03 3A 03 39 03 3A FF 03 34 01 37 01 35 03 34 03 
4870:37 03 35 03 34 03 37 01 35 01 34 03 34 03 3A 03 
4880:39 03 3A 03 34 03 3A 03 39 03 3A FF 03 39 03 38 
4890:03 39 03 3A 03 39 03 37 03 35 03 34 03 35 03 34 
48A0:03 35 03 37 03 35 03 34 03 32 03 31 FF 03 37 01 
48B0:3A 01 39 03 37 03 3A 03 39 03 37 03 3A 01 39 01 
48C0:37 03 37 03 3E 03 3D 03 3E 03 37 03 3E 03 3D 03 
48D0:3E 03 3D 01 40 01 3E 03 3D 03 40 01 3E 01 3D 03 
48E0:40 03 3E 03 40 03 40 01 43 01 41 03 40 03 43 01 
48F0:41 01 40 03 43 03 41 03 43 03 43 01 46 01 45 03 
4900:43 03 46 01 45 01 43 03 46 03 45 03 43 01 48 01 
4910:49 01 48 01 46 01 45 01 46 01 45 01 43 01 41 01 
4920:43 01 41 01 40 01 3D 01 39 01 3B 01 3D FF 01 3E 
4930:01 39 01 35 01 39 01 3E 01 39 01 35 01 39 03 3E 
4940:01 41 01 40 03 40 01 3D 01 3E 01 40 01 3D 01 39 
4950:01 3D 01 40 01 3D 01 39 01 3D 03 40 01 43 01 41 
4960:03 41 01 3E 01 40 01 41 01 3E 01 39 01 3E 01 41 
4970:01 3E 01 39 01 3E 03 41 01 45 01 43 03 43 01 40 
4980:01 41 01 43 01 40 01 3D 01 40 01 43 01 40 01 3D 
4990:01 40 01 46 01 43 01 45 01 46 01 44 01 43 01 40 
49A0:01 3D FF 01 3E 01 39 01 35 01 39 01 3E 01 39 01 
49B0:35 01 39 01 3E 01 39 01 35 01 39 01 3E 01 39 01 
49C0:35 01 39 01 3E 01 3A 01 37 01 3A 01 3E 01 3A 01 
49D0:37 01 3A 01 3E 01 3A 01 37 01 3A 01 3E 01 3A 01 
49E0:37 01 3A 01 40 01 3D 01 39 01 3D 01 40 01 3D 01 
49F0:39 01 3D 01 40 01 3D 01 39 01 3D 01 40 01 3D 01 
4A00:39 01 3D 01 41 01 3E 01 39 01 3E 01 41 01 3E 01 
4A10:39 01 3E 01 41 01 3E 01 39 01 3E 01 41 01 3E 01 
4A20:39 01 3E 01 43 01 3E 01 3A 01 3E 01 43 01 3E 01 
4A30:3A 01 3E 01 43 01 3E 01 3A 01 3E 01 43 01 3E 01 
4A40:3A 01 3E 01 43 01 3F 01 3C 01 3F 01 43 01 3F 01 
4A50:3C 01 3F 01 43 01 3F 01 3C 01 3F 01 43 01 3F 01 
4A60:3C 01 3F 01 45 01 42 01 3C 01 42 01 45 01 42 01 
4A70:3C 01 42 01 48 01 45 01 42 01 45 01 4B 01 48 01 
4A80:45 01 48 01 4B 01 4A 01 48 01 4A 01 4B 01 4A 01 
4A90:48 01 4A 01 4B 01 4A 01 48 01 4A 01 4C 01 4E 03 
4AA0:4F FF BF 06 56 1F 57 1F 56 1F 5B 1F 56 1F 57 1F 
4AB0:56 1F 4F FF BF 0C 68 7F 7F 7F 7F 7F 7F 7F FF BF 
4AC0:08 13 3F 13 3F 13 3F 13 3F 13 3F 13 3F 13 1F 13 
4AD0:FF 97 09 2E 03 2E 1B 32 03 32 1B 31 03 31 1F 34 
4AE0:43 17 32 03 32 1B 35 03 35 1B 34 03 34 0F 37 8F 
4AF0:0A 37 43 FF 97 09 2B 03 2B 1B 2E 03 2E 1B 2D 03 
4B00:2D 1F 30 43 17 2E 03 2E 1B 32 03 32 1B 31 03 31 
4B10:0F 34 8F 0A 34 43 FF 0F 1F 0F 1F 0F 1F 0F 1F 0F 
4B20:1F 0F 1F 0F 1F 0F 1F 0F 1F 0F 1F 0F 1F 0F 1F 0F 
4B30:1F 0F 1F 0F 1F 0F 1F FF 97 09 33 03 33 1B 37 03 
4B40:37 1B 36 03 36 1F 39 43 17 37 03 37 1B 3A 03 3A 
4B50:1B 39 03 39 2F 3C 21 3C 21 3D 21 3E 21 3F 21 40 
4B60:21 41 21 42 21 43 21 44 01 45 FF 97 09 30 03 30 
4B70:1B 33 03 33 1B 32 03 32 1F 36 43 17 33 03 33 1B 
4B80:37 03 37 1B 36 03 36 2F 39 21 39 21 3A 21 3B 21 
4B90:3C 21 3D 21 3E 21 3F 21 40 21 41 01 42 FF 0F 1A 
4BA0:0F 1A 0F 1A 0F 1A 0F 1A 0F 1A 0F 1A 0F 1A 0F 1A 
4BB0:0F 1A 0F 1A 0F 1A 0F 1A 0F 1A 0F 1A 0F 1A FF 1F 
4BC0:46 BF 0A 46 7F 7F FF 1F 43 BF 0A 43 7F FF 83 02 
4BD0:13 03 13 03 1E 03 1F 03 13 03 13 03 1E 03 1F 03 
4BE0:13 03 13 03 1E 03 1F 03 13 03 13 03 1E 03 1F 03 
4BF0:13 03 13 03 1E 03 1F 03 13 03 13 03 1E 03 1F 03 
4C00:13 03 13 03 1E 03 1F 03 13 03 13 03 1E 03 1F FF 
4C10:8F 0B 38 4F FF 83 0E 32 07 32 07 2F 07 2F 03 2B 
4C20:87 0B 46 83 0E 2C 03 2C 8F 0B 32 FF 43 83 0E 32 
4C30:03 32 03 2F 03 2F 03 2C 87 0B 38 FF 83 01 43 01 
4C40:4F 01 5B 87 03 2F 83 01 43 01 4F 01 5B 87 03 2F 
4C50:83 01 43 01 4F 01 5B 87 03 2F 83 01 43 01 4F 01 
4C60:5B 87 03 2F 83 01 43 01 4F 01 5B 87 03 2F 83 01 
4C70:43 01 4F 01 5B 87 03 2F 83 01 43 01 4F 01 5B 87 
4C80:03 2F 83 01 43 01 4F 01 5B 87 03 2F FF 83 02 13 
4C90:03 13 03 1F 03 1F 03 13 03 13 03 1F 03 1F FF 03 
4CA0:15 03 15 03 1F 03 21 03 15 03 15 03 1F 03 21 FF 
4CB0:03 1A 03 1A 03 1C 03 1C 03 1D 03 1D 03 1E 03 1E 
4CC0:FF 03 1A 03 1A 03 24 03 26 03 13 03 13 07 1F FF 
4CD0:03 18 03 18 03 24 03 24 03 18 03 18 03 24 03 24 
4CE0:03 20 03 20 03 2C 03 2C 03 20 03 20 03 2C 03 2C 
4CF0:FF 03 19 03 19 03 25 03 25 03 19 03 19 03 25 03 
4D00:25 03 21 03 21 03 2D 03 2D 03 21 03 21 03 2D 03 
4D10:2D FF 03 1A 03 1A 03 26 03 26 03 1A 03 1A 03 26 
4D20:03 26 03 15 03 15 03 21 03 21 03 15 03 15 03 21 
4D30:03 21 03 18 03 18 03 24 03 24 03 18 03 18 03 24 
4D40:03 24 03 1F 03 1F 03 2B 03 2B 03 1F 03 1F 03 2B 
4D50:03 2B 03 1A 03 1A 03 26 03 26 03 1A 03 1A 03 26 
4D60:03 26 03 15 03 15 03 21 03 21 03 15 03 15 03 21 
4D70:03 21 03 18 03 18 03 24 03 24 03 18 03 18 03 24 
4D80:03 24 03 1C 03 1C 03 28 03 28 03 1C 03 1C 03 28 
4D90:03 28 83 04 36 07 36 07 37 07 36 03 33 07 32 57 
4DA0:FF 83 02 1B 03 1B 03 27 03 27 03 1B 03 1B 03 27 
4DB0:03 27 FF 03 1C 03 1C 03 28 03 28 03 1C 03 1C 03 
4DC0:28 03 28 FF 03 1D 03 1D 03 29 03 29 03 1D 03 1D 
4DD0:03 29 03 29 FF 03 18 03 18 03 24 03 24 03 18 03 
4DE0:18 03 24 03 24 FF 03 1E 03 1E 03 2A 03 2A 03 1E 
4DF0:03 1E 03 2A 03 2A FF 83 05 26 01 4A 01 34 03 29 
4E00:03 4C 03 4A 03 31 03 4A 03 24 03 22 01 46 01 30 
4E10:03 25 03 48 03 46 03 2D 03 46 03 24 FF 83 02 1A 
4E20:03 1A 03 26 03 26 03 1A 03 1A 03 26 03 26 FF 03 
4E30:13 03 13 03 1D 03 1F 03 13 03 13 03 1D 03 1F FF 
4E40:87 02 1A 87 03 2F 83 02 26 03 26 87 03 2F FF 07 
4E50:1A 4F 47 FF 03 1F 03 1F 03 24 03 26 07 13 47 FF 
4E60:BF 0F 32 0F 32 8F 90 30 3F 32 13 32 03 32 03 35 
4E70:03 37 3F 37 0F 37 8F 90 30 3F 32 13 32 03 2D 03 
4E80:30 03 32 FF 0F 32 AF 90 35 0F 37 A7 99 37 07 35 
4E90:3F 32 13 32 03 32 A3 E8 35 03 37 0F 35 AF 90 37 
4EA0:0F 37 A7 99 37 07 35 3F 32 13 32 03 2D A3 E8 30 
4EB0:03 32 FF 07 32 03 39 13 3C A7 9A 37 A7 9B 38 07 
4EC0:37 03 35 03 32 03 39 1B 3C A7 9A 37 A7 9B 38 07 
4ED0:37 03 35 03 32 03 39 03 3C 03 3E 03 3C 07 3E 03 
4EE0:3C 03 39 A7 9A 37 A7 9B 38 07 37 03 35 03 32 AF 
4EF0:90 3C 1F 3E 43 03 3E 03 3C 03 3E FF 03 3E 03 3E 
4F00:A3 E8 3C 03 3E 03 3E 03 3E A3 E8 3C 03 3E 03 3E 
4F10:03 3E A3 E8 3C 03 3E 03 3E 03 3E A3 E8 3C 03 3E 
4F20:AF 91 43 1F 41 43 03 3E 03 41 03 43 03 43 03 43 
4F30:A3 E8 41 03 43 03 43 03 43 A3 E8 41 03 43 03 45 
4F40:03 48 A3 FD 45 03 44 01 43 01 41 03 3E 03 3C 03 
4F50:3E 2F 3E BF 98 3E 43 03 3E 03 3C 03 3E FF 03 4A 
4F60:03 4A A3 F8 48 03 4A 03 4A 03 4A A3 F8 48 03 4A 
4F70:FF 01 51 01 54 01 51 01 54 01 51 01 54 01 51 01 
4F80:54 01 51 01 54 01 51 01 54 01 51 01 54 01 51 01 
4F90:54 FF 01 50 01 4F 01 4D 01 4A 01 4F 01 4D 01 4A 
4FA0:01 48 01 4A 01 48 01 45 01 43 01 44 01 43 01 41 
4FB0:01 3E 01 43 01 41 01 3E 01 3C 01 3E 01 3C 01 39 
4FC0:01 37 01 38 01 37 01 35 01 32 01 37 01 35 01 32 
4FD0:01 30 FF 5F 5F 5F 47 83 0E 32 07 32 07 2F 03 2F 
4FE0:07 2F 97 0B 3A 5F 5F 47 8B 0E 32 03 32 03 2F 03 
4FF0:2F 47 97 0B 3A 5F 5F 47 83 0E 2F 0B 2F 03 2F 03 
5000:2F 87 0B 30 17 3A 5F 8B 0E 32 0B 32 0B 2F 0B 2F 
5010:07 2C 07 2C FF 87 0B 34 17 3A 5F 5F 84 0E 32 04 
5020:32 05 32 04 2F 04 2F 05 2F 47 97 0B 3A 5F 5F 84 
5030:0E 32 04 32 05 32 04 2F 04 2F 05 2F FF 03 1A 03 
5040:1A 03 24 03 26 03 1A 03 1A 03 18 03 19 03 1A 03 
5050:1A 03 24 03 26 03 1A 03 1A 03 18 03 19 03 18 03 
5060:18 03 22 03 24 03 18 03 18 03 16 03 17 03 18 03 
5070:18 03 22 03 24 03 18 03 18 03 16 03 17 03 13 03 
5080:13 03 1D 03 1F 03 13 03 13 03 1D 03 1E 03 13 03 
5090:13 03 1D 03 1F 03 13 03 13 03 1D 03 1E 03 1A 03 
50A0:1A 03 24 03 26 03 1A 03 1A 03 18 03 19 03 1A 03 
50B0:1A 03 24 03 26 03 1A 03 1A 03 18 03 19 FF 80 09 
50C0:41 48 60 03 81 00 00 08 81 02 08 00 00 01 A0 02 
50D0:41 09 80 00 00 00 00 02 81 09 09 00 00 05 00 08 
50E0:41 08 50 02 00 04 00 01 41 3F C0 02 00 00 00 08 
50F0:41 04 40 02 00 00 00 08 41 09 00 02 00 00 00 09 
5100:41 09 70 02 5F 04 00 09 41 4A 69 02 81 00 00 09 
5110:41 40 6F 00 81 02 80 07 81 0A 0A 00 00 01 00 09 
5120:41 3F FF 01 E7 02 00 08 41 90 F0 01 E8 02 00 08 
5130:41 06 0A 00 00 01 00 09 41 19 70 02 A8 00 00 02 
5140:41 09 90 02 00 00 00 00 11 0A FA 00 00 05 00 08 
5150:41 37 40 02 00 00 00 08 11 07 70 02 00 00 00