Thursday, August 23, 2018

Oric (6502) music player

Oric music player

;*************************************************************
;* FILE: Forest2.s
;*************************************************************
;* Description:
;*  Simple music player for the ORIC 1 & Oric Atmos.
;*  Based on a Z80 program I found with the Virtual Aquarius emulator (I think)
;*  Uses VIA timer to trigger the interrupt,
;*  other machines may use the vertical blank interrupt.
;*  Designed for the General Instruments AY sound chip but will work
;*  with any sound chip with an internal address register and a data register.
;*  This software is in the public domain.
;*
;* Song Data Format:
;* ;wait, number of registers to change,
;* ; register number, new value
;* ; register number, new value
;* ; etc.
;* ; ends when number of registers to change is 0.
;*
;* Author: James Diffendaffer
;* Date: May 29, 2009
;* Version:
;************************************************************* 

; set build conditions here
;#define USE_C02 1 ; define to use 65C02 instructions
#define USENTSC  1 ; define to use NTSC VIA Timer settings
#define ORICAY  1 ; Use Oric VIA mapped AY chip, otherwise memory mapped AY
;#define USE_CMD 1 ; Use additional commands

;*
#ifndef ORICAY
#define AYBase $0000  ; Put base address of memory mapped AY Chip here
#endif

#ifndef USENTSC
#define VBLVIA $4E00  ; VIA Timer Latch, settings matching PAL 50Hz
#else
#define VBLVIA $4100  ; VIA Timer Latch, settings matching NTSC 60Hz
#endif

#define IRQloc $024A  ; IRQ handler address

; VIA register definitions
#define VIA_T1C $0304  ; Read/Write Counter Low-High T1
#define VIA_T1L $0306  ; Read/Write Latch Low-High T1
#define VIA_PCR $030C  ; Peripheral Control Register
#define VIAIORA $030F  ; Printer/Sound/Joystick (No Handshake)


 .zero     ; page zero variables
 *= $007C    ; start at $7C, right after OSDK reserved space
song .dsb 2,$00  ; page zero song pointer
Playing .dsb 1,$00  ; flag to indicate whether the player is active or not
#ifdef USE_CMD
cmds .dsb 2,$00  ; page zero command table pointer
#endif
temp .dsb 1,$00  ; temporary storage (for the Y register)

 .text     ; start of code segment
 *= $0600    ; start address of code

START      ; just so we have the start address in the list file

_main

;**************************************************************
;* playsong
;**************************************************************
;* play a song located at songstart
;* based on Z80 Aquarius version by James the Animal Tamer
;* ORIC 6502 XA source port by James Diffendaffer
;* NOTE- uses timer interrupt rather than TOF interrupt despite code comments
;**************************************************************
playsong
 ; save registers
 pha
#ifdef USE_C02
 phx   ;65c02
 phy   ;65c02
#else
 txa
 pha
 tya
 pha
#endif 

 ; set the start address of the song
 lda #<songstart
 sta song
 lda #>songstart
 sta song+1

#ifdef USE_CMD
 ; set the start address of the commandtable
 lda #<commandtable
 sta cmds
 lda #>commandtable
 sta cmds+1
#endif

 ; set up a VIA timer for our interrupt
 sei      ; disable interrupts

 ; get contents of VIA_T1 and save for exit
 lda VIA_T1L
 sta VIASAVE
 lda VIA_T1L+1
 sta VIASAVE+1

 ; Set our own VIA_T1 value for 50Hz or 60Hz
 lda #<VBLVIA
 sta VIA_T1L
 lda #>VBLVIA
 sta VIA_T1L+1

 ;add our interrupt handler in place of rti on 6502 mem page 2
 lda #$4C    ; JMP instruction
 sta IRQloc
 lda #<_VBLIrq   ; address of our interrupt handler
 sta IRQloc+1
 lda #>_VBLIrq
 sta IRQloc+2
 cli      ; enable interrupts

 
;**************************************************************
;**************************************************************
;**************************************************************
playsongend
 ;stop sound?
 sei      ; disable interrupts

 ;restore previous VIA timer
 lda VIASAVE
 sta VIA_T1L
 lda VIASAVE+1
 sta VIA_T1L+1

 ; remove our interrupt handler
 lda #$40    ; RTI instruction
 sta IRQloc
 cli      ; enable interrupts

 ; restore registers we saved
#ifdef USE_C02
 ply      ; 65c02
 plx      ; 65c02
#else
 pla
 tay
 pla
 tax
#endif
 pla

 rts      ; return 


;**************************************************************
;**************************************************************
 ;start of player
;**************************************************************
playline
 ldy #1     ; offset from song pointer, Y must be used for this addressing mode
 lda (song),y   ; get number of registers to modify


#ifdef USE_C02
 lda (song)    ; get wait in A (65c02)
#else
 dey
 lda (song),y   ; get wait in A
 iny
#endif
 tax      ; move the counter to X
 jsr waittof    ; wait top of frame, A times

 lda (song),y   ; get number of registers to modify in A
 tax      ; put it in X
 iny      ; next byte in song



;**************************************************************
;* _VBLIrq
;**************************************************************
;* Vertical Blank or Timer interrupt handler
;* Contains the code that actually plays the song
;**************************************************************
_VBLIrq
 ; save registers
 pha
  
 bit Playing    ; exit quick if we aren't playing
 bne exit_int
 
 ; wait for interrupt, _WaitCount times
 lda _WaitCount
 dec      ; decrement the counter
 sta _WaitCount
 bne exit_int   ; exit if not done waiting

 ; time to set some AY registers
#ifdef USE_C02
 phx      ;65c02
 phy      ;65c02
#else
 txa
 pha
 tya
 pha
#endif 

 ldy #1     ; offset from song pointer, Y must be used for this addressing mode
 lda (song),y   ; get number of registers to modify

#ifdef USE_CMD
 bmi docomnd    ; negative numbers are commands
#endif
 beq playsongend   ; check for end of song

 tax      ; put AY regiser count in X
 iny      ; next byte in song

_reglop
 lda (song),y   ; get the register number to modify
 ;6502 ORIC AY Control using the VIA 6522 makes this slower than memory mapped AY chip
#ifdef ORICAY
 sta VIAIORA    ; set the AY data register number
 lda #$FF    ; $FF = VIAIORA holds a register number
 sta VIA_PCR    ; Set the VIA 6522 control line Register(PCR)
 lda #$DD    ; $DD = VIAIORA is inactive 
 sta VIA_PCR    ; Set the VIA 6522 control line Register(PCR)
#else
 sta AYBase+1   ; set the AY data register number
#endif

 iny      ; point to next byte in song
 lda (song),y   ; get the Value for the AY register
#ifdef ORICAY
 sta VIAIORA    ; load the data register value
 lda #$FD    ; $FD = VIAIORA holds data for a preset register 
 sta VIA_PCR    ; Set the VIA 6522 control line Register(PCR)
 lda #$DD    ; $DD = VIAIORA is inactive
 sta VIA_PCR    ; Set the VIA 6522 control line Register(PCR)
#else
 sta AYBase    ; load the data register value
#endif

 iny      ; point to next byte in song
 dex      ; decrement the register count
 bne _reglop    ; keep looping if not done setting registers

; iny      ; point to next byte in song
 lda (song),y   ; get the new wait counter
 sta _WaitCount   ; save it

 ; update the pointer (16 bit song pointer + 8 bit index)
 ; (songLSB + y, songMSB + carry)
; clc      ; clear the carry for out 16 bit addition
 tya      ; put pointer offset in A
 adc song    ; add low byte (LSB)
 sta song    ; update low byte
 lda #0     ; clear A
 adc song+1    ; add carry to high byte (MSB)
 sta song+1    ; update the song pointer


 ; restore registers we saved
#ifdef USE_C02
 ply      ; 65c02
 plx      ; 65c02
#else
 pla
 tay
 pla
 tax
#endif
exit_int
 pla
 bit VIA_T1C    ; reset the interrupt
 rti

playsongend
 clr Playing
 bra exit_int

#ifdef USE_CMD
;**************************************************************
;* docomnd
;**************************************************************
;* do command
;* code to handle optional commands within the song data
;**************************************************************
docomnd
 sty temp    ; save Y

 ; self modifying code
 ; register A contains the command number + 128
 ; adjust the command pointer to get command table offset
; and #%01111111   ; mask off top bit.  Not required due to ROL
 clc      ; CLC for the ROL
       ; ROL moves top bit to carry and previous carry goes to bottom bit
 rol      ; bit shift = multiply by 2 (addresses are 2 bytes in size)

 ; get command address from command pointer table (self modifying code)
 tay      ; move the command table offset to Y
 lda (cmds),y   ; load the 1st byte of the command pointer into A
 sta ijmp+1    ; modify the 1st byte of the address in the jmp
 iny      ; adjust offset for next byte
 lda (cmds),y   ; load the 2nd byte of the command pointer into A
 sta ijmp+2    ; modify the 2nd byte of the address in the jmp
 
 ldy temp    ; restore Y
ijmp
 jmp playsongend   ; playsong end replaced with current command address

;=============================== 
commandtable
 .word playsongend  ; 0 end of song
 .word playsongend  ; just in case

#endif

 
 


codeend
 
; .bss     ; start of the bss data segment
;==================
; variables we change
;_VblCounter .byt 0  ; TOF flag variable
VIASAVE .byt 00,00
; .data     ; start of data segment


;==================
songstart
 ; rem  song
 ; rem wait, number of registers to change,
 ; register number, new value
 ; register number, new value
 ; etc.
 ; ends when number of registers to change is 0.
 .byt 1,4,8,0,9,0,10,0,7,56
 ;-- snip
 .byt 1,3,0,221,1,1,8,15
 .byt 14,1,8,0
 .byt 1,3,0,250,1,1,8,15
 .byt 14,1,8,0
 .byt 1,6,0,112,1,4,8,15,2,56,3,2,9,15
 .byt 14,1,9,0
 .byt 1,3,2,125,3,2,9,15
 .byt  14,1,9,0
 .byt 1,7,8,0,0,246,1,2,8,15,2,56,3,2,9,15
 .byt 14,1,9,0
 .byt 1,3,2,250,3,1,9,15
 .byt 14,1,9,0
 .byt 1,7,8,0,0,151,1,5,8,15,2,221,3,1,9,15
 .byt 29,2,8,0,9,0
 .byt 1,6,0,251,1,4,8,15,2,221,3,1,9,15
 .byt 14,1,9,0
 .byt 1,3,2,250,3,1,9,15
 .byt 14,2,8,0,9,0
 .byt 1,6,0,112,1,4,8,15,2,56,3,2,9,15
 .byt 14,1,9,0
 .byt 1,3,2,125,3,2,9,15
 .byt 14,1,9,0
 .byt 1,7,8,0,0,246,1,2,8,15,2,56,3,2,9,15
 .byt 14,1,9,0
 .byt 1,3,2,250,3,1,9,15
 .byt 14,1,9,0
 .byt 1,7,8,0,0,151,1,5,8,15,2,221,3,1,9,15
 .byt 29,2,8,0,9,0
 .byt 1,6,0,251,1,4,8,15,2,221,3,1,9,15
 .byt 14,1,9,0
 .byt 1,3,2,250,3,1,9,15
 .byt 14,2,8,0,9,0
 .byt 1,6,0,112,1,4,8,15,2,56,3,2,9,15
 .byt 14,1,9,0
 .byt 1,3,2,125,3,2,9,15
 .byt 14,1,9,0
 .byt 1,7,8,0,0,246,1,2,8,15,2,56,3,2,9,15
 .byt 14,1,9,0
 .byt 1,3,2,250,3,1,9,15
 .byt 14,1,9,0
 .byt 1,7,8,0,0,151,1,5,8,15,2,221,3,1,9,15
 .byt 14,1,9,0
 .byt 1,3,2,250,3,1,9,15
 .byt 14,1,8,0
 .byt 1,7,0,56,1,2,8,15,9,0,2,236,3,5,9,15
 .byt 14,1,8,0
 .byt 1,3,0,89,1,2,8,15
 .byt 13,2,8,0,9,0
 .byt 1,6,0,112,1,4,8,15,2,56,3,2,9,15
 .byt 29,2,8,0,9,0
 .byt 1,3,0,246,1,2,8,15
 .byt 29,1,8,0
 .byt 1,3,0,236,1,5,8,15
 .byt 29,1,8,0
 .byt 1,3,0,221,1,1,8,15
 .byt 14,1,8,0
 .byt 1,3,0,250,1,1,8,15
 .byt 14,1,8,0
 .byt 1,6,0,112,1,4,8,15,2,56,3,2,9,15
 .byt 13,1,9,0
 .byt 1,3,2,125,3,2,9,15
 .byt 13,2,8,0,9,0
 .byt 1,6,0,246,1,2,8,15,2,56,3,2,9,15
 .byt 13,1,9,0
 .byt 1,3,2,250,3,1,9,15
 .byt 13,2,8,0,9,0
 .byt 1,6,0,151,1,5,8,15,2,221,3,1,9,15
 .byt 13,1,9,0
 .byt 1,3,2,169,3,1,9,15
 .byt 14,2,8,0,9,0
 .byt 1,6,0,203,1,2,8,15,2,123,3,1,9,15
 .byt 13,1,9,0
 .byt 1,3,2,101,3,1,9,15
 .byt 14,1,9,0
 .byt 1,7,8,0,0,251,1,4,8,15,2,62,3,1,9,15
 .byt 13,1,9,0
 .byt 1,3,2,101,3,1,9,15
 .byt 14,1,9,0
 .byt 1,7,8,0,0,83,1,3,8,15,2,123,3,1,9,15
 .byt 13,1,9,0
 .byt 1,3,2,169,3,1,9,15
 .byt 14,1,9,0
 .byt 1,7,8,0,0,187,1,3,8,15,2,221,3,1,9,15
 .byt 29,2,8,0,9,0
 .byt 1,6,0,244,1,3,8,15,2,221,3,1,9,15
 .byt 14,1,9,0
 .byt 1,3,2,250,3,1,9,15
 .byt 14,1,8,0
 .byt 1,7,0,56,1,2,8,15,9,0,2,112,3,4,9,15
 .byt 14,1,8,0
 .byt 1,3,0,125,1,2,8,15
 .byt 14,1,8,0
 .byt 1,7,0,56,1,2,8,15,9,0,2,246,3,2,9,15
 .byt 14,1,8,0
 .byt 1,3,0,250,1,1,8,15
 .byt 14,1,8,0
 .byt 1,7,0,221,1,1,8,15,9,0,2,151,3,5,9,15
 .byt 14,1,8,0
 .byt 1,3,0,169,1,1,8,15
 .byt 14,2,8,0,9,0
 .byt 1,6,0,203,1,2,8,15,2,123,3,1,9,15
 .byt 14,1,9,0
 .byt 1,3,2,101,3,1,9,15
 .byt 14,1,9,0
 .byt 1,7,8,0,0,251,1,4,8,15,2,62,3,1,9,15
 .byt 14,1,9,0
 .byt 1,3,2,101,3,1,9,15
 .byt 14,1,9,0
 .byt 1,7,8,0,0,83,1,3,8,15,2,123,3,1,9,15
 .byt 14,1,9,0
 .byt 1,3,2,169,3,1,9,15
 .byt 14,2,8,0,9,0
 .byt 1,6,0,187,1,3,8,15,2,123,3,1,9,15
 .byt 29,1,8,0
 .byt 1,7,0,221,1,1,8,15,9,0,2,244,3,3,9,15
 .byt 14,1,8,0
 .byt 1,3,0,250,1,1,8,15
 .byt 14,1,9,0
 .byt 1,7,8,0,0,112,1,4,8,15,2,56,3,2,9,15
 .byt 14,1,9,0
 .byt 1,3,2,125,3,2,9,15
 .byt 14,1,9,0
 .byt 1,7,8,0,0,246,1,2,8,15,2,56,3,2,9,15
 .byt 14,1,9,0
 .byt 1,3,2,250,3,1,9,15
 .byt 14,1,9,0
 .byt 1,7,8,0,0,151,1,5,8,15,2,221,3,1,9,15
 .byt 14,1,9,0
 .byt 1,3,2,169,3,1,9,15
 .byt 14,2,8,0,9,0
 .byt 1,6,0,203,1,2,8,15,2,123,3,1,9,15
 .byt 14,1,9,0
 .byt 1,3,2,101,3,1,9,15
 .byt 14,1,9,0
 .byt 1,7,8,0,0,251,1,4,8,15,2,62,3,1,9,15
 .byt 14,1,9,0
 .byt 1,3,2,101,3,1,9,15
 .byt 14,1,9,0
 .byt 1,7,8,0,0,83,1,3,8,15,2,123,3,1,9,15
 .byt 14,1,9,0
 .byt 1,3,2,169,3,1,9,15
 .byt 14,1,9,0
 .byt 1,7,8,0,0,187,1,3,8,15,2,221,3,1,9,15
 .byt 29,2,8,0,9,0
 .byt 1,6,0,244,1,3,8,15,2,221,3,1,9,15
 .byt 14,1,9,0
 .byt 1,3,2,250,3,1,9,15
 .byt 14,1,8,0
 .byt 1,7,0,56,1,2,8,15,9,0,2,112,3,4,9,15
 .byt 14,1,8,0
 .byt 1,3,0,125,1,2,8,15
 .byt 14,1,8,0
 .byt 1,7,0,56,1,2,8,15,9,0,2,246,3,2,9,15
 .byt 14,1,8,0
 .byt 1,3,0,125,1,2,8,15
 .byt 14,1,8,0
 .byt 1,7,0,89,1,2,8,15,9,0,2,236,3,5,9,15
 .byt 14,1,8,0
 .byt 1,3,0,250,1,1,8,15
 .byt 14,2,8,0,9,0
 .byt 1,6,0,246,1,2,8,15,2,123,3,1,9,15
 .byt 14,1,9,0
 .byt 1,3,2,169,3,1,9,15
 .byt 14,1,9,0
 .byt 1,7,8,0,0,151,1,5,8,15,2,221,3,1,9,15
 .byt 14,1,9,0
 .byt 1,3,2,250,3,1,9,15
 .byt 14,1,8,0
 .byt 1,7,0,56,1,2,8,15,9,0,2,236,3,5,9,15
 .byt 14,1,8,0
 .byt 1,3,0,125,1,2,8,15
 .byt 13,2,8,0,9,0
 .byt 1,6,0,112,1,4,8,15,2,56,3,2,9,15
 .byt 29,2,8,0,9,0
 .byt 1,3,0,221,1,1,8,15
 .byt 14,1,8,0
 .byt 1,3,0,250,1,1,8,15
 .byt 14,1,8,0
 .byt 1,6,0,112,1,4,8,15,2,56,3,2,9,15
 .byt 14,1,9,0
 .byt 1,3,2,125,3,2,9,15
 .byt 13,2,8,0,9,0
 .byt 1,6,0,246,1,2,8,15,2,56,3,2,9,15
 .byt 14,1,9,0
 .byt 1,3,2,250,3,1,9,15
 .byt 13,2,8,0,9,0
 .byt 1,6,0,151,1,5,8,15,2,221,3,1,9,15
 .byt 14,1,9,0
 .byt 1,3,2,169,3,1,9,15
 .byt 14,2,8,0,9,0
 .byt 1,6,0,203,1,2,8,15,2,123,3,1,9,15
 .byt 14,1,9,0
 .byt 1,3,2,101,3,1,9,15
 .byt 13,2,8,0,9,0
 .byt 1,6,0,251,1,4,8,15,2,62,3,1,9,15
 .byt 14,1,9,0
 .byt 1,3,2,101,3,1,9,15
 .byt 13,2,8,0,9,0
 .byt 1,6,0,83,1,3,8,15,2,123,3,1,9,15
 .byt 14,1,9,0
 .byt 1,3,2,169,3,1,9,15
 .byt 13,2,8,0,9,0
 .byt 1,6,0,187,1,3,8,15,2,221,3,1,9,15
 .byt 28,2,8,0,9,0
 .byt 1,6,0,244,1,3,8,15,2,221,3,1,9,15
 .byt 13,1,9,0
 .byt 1,3,2,250,3,1,9,15
 .byt 13,2,8,0,9,0
 .byt 1,6,0,112,1,4,8,15,2,56,3,2,9,15
 .byt 13,1,9,0
 .byt 1,3,2,125,3,2,9,15
 .byt 13,2,8,0,9,0
 .byt 1,6,0,246,1,2,8,15,2,56,3,2,9,15
 .byt 14,1,9,0
 .byt 1,3,2,250,3,1,9,15
 .byt 13,2,8,0,9,0
 .byt 1,6,0,151,1,5,8,15,2,221,3,1,9,15
 .byt 13,1,9,0
 .byt 1,3,2,169,3,1,9,15
 .byt 14,2,8,0,9,0
 .byt 1,6,0,203,1,2,8,15,2,123,3,1,9,15
 .byt 13,1,9,0
 .byt 1,3,2,101,3,1,9,15
 .byt 13,2,8,0,9,0
 .byt 1,6,0,251,1,4,8,15,2,62,3,1,9,15
 .byt 13,1,9,0
 .byt 1,3,2,101,3,1,9,15
 .byt 13,2,8,0,9,0
 .byt 1,6,0,83,1,3,8,15,2,123,3,1,9,15
 .byt 14,1,9,0
 .byt 1,3,2,169,3,1,9,15
 .byt 14,2,8,0,9,0
 .byt 1,6,0,187,1,3,8,15,2,123,3,1,9,15
 .byt 28,2,8,0,9,0
 .byt 1,6,0,244,1,3,8,15,2,221,3,1,9,15
 .byt 13,1,9,0
 .byt 1,3,2,250,3,1,9,15
 .byt 13,2,8,0,9,0
 .byt 1,6,0,112,1,4,8,15,2,56,3,2,9,15
 .byt 14,1,9,0
 .byt 1,3,2,125,3,2,9,15
 .byt 13,2,8,0,9,0
 .byt 1,6,0,246,1,2,8,15,2,56,3,2,9,15
 .byt 14,1,9,0
 .byt 1,3,2,250,3,1,9,15
 .byt 13,2,8,0,9,0
 .byt 1,6,0,151,1,5,8,15,2,221,3,1,9,15
 .byt 14,1,9,0
 .byt 1,3,2,169,3,1,9,15
 .byt 13,2,8,0,9,0
 .byt 1,6,0,203,1,2,8,15,2,123,3,1,9,15
 .byt 14,1,9,0
 .byt 1,3,2,101,3,1,9,15
 .byt 14,1,9,0
 .byt 1,7,8,0,0,251,1,4,8,15,2,62,3,1,9,15
 .byt 14,1,9,0
 .byt 1,3,2,101,3,1,9,15
 .byt 14,1,9,0
 .byt 1,7,8,0,0,83,1,3,8,15,2,123,3,1,9,15
 .byt 14,1,9,0
 .byt 1,3,2,169,3,1,9,15
 .byt 14,1,9,0
 .byt 1,7,8,0,0,187,1,3,8,15,2,221,3,1,9,15
 .byt 29,2,8,0,9,0
 .byt 1,6,0,244,1,3,8,15,2,221,3,1,9,15
 .byt 14,1,9,0
 .byt 1,3,2,250,3,1,9,15
 .byt 14,2,8,0,9,0
 .byt 1,6,0,112,1,4,8,15,2,56,3,2,9,15
 .byt 14,1,9,0
 .byt 1,3,2,125,3,2,9,15
 .byt 14,1,9,0
 .byt 1,7,8,0,0,246,1,2,8,15,2,56,3,2,9,15
 .byt 14,1,9,0
 .byt 1,3,2,125,3,2,9,15
 .byt 14,1,9,0
 .byt 1,7,8,0,0,236,1,5,8,15,2,89,3,2,9,15
 .byt 14,1,9,0
 .byt 1,3,2,250,3,1,9,15
 .byt 14,2,8,0,9,0
 .byt 1,6,0,246,1,2,8,15,2,123,3,1,9,15
 .byt 14,1,9,0
 .byt 1,3,2,169,3,1,9,15
 .byt 14,1,9,0
 .byt 1,7,8,0,0,151,1,5,8,15,2,221,3,1,9,15
 .byt 14,1,9,0
 .byt 1,3,2,250,3,1,9,15
 .byt 14,1,8,0
 .byt 1,7,0,56,1,2,8,15,9,0,2,236,3,5,9,15
 .byt 14,1,8,0
 .byt 1,3,0,125,1,2,8,15
 .byt 14,1,8,0
 .byt 1,7,0,56,1,2,8,15,9,0,2,112,3,4,9,15
 .byt 29,2,8,0,9,0
 .byt 30,6,0,83,1,3,8,15,2,101,3,1,9,15
 .byt 14,1,9,0
 .byt 1,3,2,123,3,1,9,15
 .byt 14,2,8,0,9,0
 .byt 1,6,0,56,1,2,8,15,2,169,3,1,9,15
 .byt 14,1,8,0
 .byt 1,4,9,0,2,125,3,2,9,15
 .byt 15,6,0,251,1,4,8,15,4,62,5,1,10,15
 .byt 14,1,10,0
 .byt 1,4,9,0,2,101,3,1,9,15
 .byt 14,1,9,0
 .byt 1,7,8,0,0,244,1,3,8,15,2,123,3,1,9,15
 .byt 14,1,9,0
 .byt 1,3,2,169,3,1,9,15
 .byt 14,1,8,0
 .byt 1,7,0,123,1,1,8,15,9,0,2,187,3,3,9,15
 .byt 14,1,8,0
 .byt 1,3,0,169,1,1,8,15
 .byt 13,2,8,0,9,0
 .byt 1,6,0,246,1,2,8,15,2,221,3,1,9,15
 .byt 14,1,9,0
 .byt 1,3,2,250,3,1,9,15
 .byt 13,2,8,0,9,0
 .byt 1,6,0,187,1,3,8,15,2,221,3,1,9,15
 .byt 14,1,9,0
 .byt 1,3,2,169,3,1,9,15
 .byt 14,2,8,0,9,0
 .byt 1,6,0,246,1,2,8,15,2,123,3,1,9,15
 .byt 14,1,9,0
 .byt 1,3,2,62,3,1,9,15
 .byt 13,2,8,0,9,0
 .byt 1,6,0,83,1,3,8,15,2,101,3,1,9,15
 .byt 14,1,9,0
 .byt 1,3,2,123,3,1,9,15
 .byt 14,2,8,0,9,0
 .byt 1,6,0,56,1,2,8,15,2,169,3,1,9,15
 .byt 14,1,8,0
 .byt 1,3,0,125,1,2,8,15
 .byt 14,1,9,0
 .byt 1,6,2,236,3,5,9,15,4,123,5,1,10,15
 .byt 14,2,8,0,10,0
 .byt 1,3,0,169,1,1,8,15
 .byt 13,2,8,0,9,0
 .byt 1,9,0,179,1,4,8,15,2,246,3,2,9,15,4,221,5,1
 .byt 10,15
 .byt 13,1,10,0
 .byt 1,3,4,250,5,1,10,15
 .byt 13,3,8,0,9,0,10,0
 .byt 1,6,0,112,1,4,8,15,2,221,3,1,9,15
 .byt 13,1,9,0
 .byt 1,3,2,250,3,1,9,15
 .byt 13,2,8,0,9,0
 .byt 1,6,0,56,1,2,8,15,2,246,3,2,9,15
 .byt 13,1,8,0
 .byt 1,3,0,125,1,2,8,15
 .byt 13,2,8,0,9,0
 .byt 1,6,0,112,1,4,8,15,2,56,3,2,9,15
 .byt 28,2,8,0,9,0
 .byt 1,3,0,123,1,1,8,15
 .byt 13,1,8,0
 .byt 1,3,0,62,1,1,8,15
 .byt 13,1,8,0
 .byt 1,6,0,83,1,3,8,15,2,101,3,1,9,15
 .byt 13,1,9,0
 .byt 1,3,2,123,3,1,9,15
 .byt 14,2,8,0,9,0
 .byt 1,6,0,56,1,2,8,15,2,169,3,1,9,15
 .byt 13,1,8,0
 .byt 1,4,9,0,2,125,3,2,9,15
 .byt 14,6,0,251,1,4,8,15,4,62,5,1,10,15
 .byt 13,2,9,0,10,0
 .byt 1,3,2,101,3,1,9,15
 .byt 13,2,8,0,9,0
 .byt 1,6,0,244,1,3,8,15,2,123,3,1,9,15
 .byt 13,1,9,0
 .byt 1,3,2,169,3,1,9,15
 .byt 13,2,8,0,9,0
 .byt 1,6,0,187,1,3,8,15,2,123,3,1,9,15
 .byt 14,1,9,0
 .byt 1,3,2,169,3,1,9,15
 .byt 13,2,8,0,9,0
 .byt 1,6,0,244,1,3,8,15,2,123,3,1,9,15
 .byt 14,1,9,0
 .byt 1,3,2,169,3,1,9,15
 .byt 13,2,8,0,9,0
 .byt 1,6,0,112,1,4,8,15,2,221,3,1,9,15
 .byt 14,1,9,0
 .byt 1,3,2,123,3,1,9,15
 .byt 13,2,8,0,9,0
 .byt 1,6,0,246,1,2,8,15,2,169,3,1,9,15
 .byt 14,1,9,0
 .byt 1,3,2,221,3,1,9,15
 .byt 14,2,8,0,9,0
 .byt 1,6,0,151,1,5,8,15,2,123,3,1,9,15
 .byt 14,1,9,0
 .byt 1,3,2,169,3,1,9,15
 .byt 14,1,9,0
 .byt 1,7,8,0,0,203,1,2,8,15,2,221,3,1,9,15
 .byt 14,1,9,0
 .byt 1,3,2,250,3,1,9,15
 .byt 14,1,9,0
 .byt 1,7,8,0,0,236,1,5,8,15,2,221,3,1,9,15
 .byt 14,1,9,0
 .byt 1,3,2,250,3,1,9,15
 .byt 14,2,8,0,9,0
 .byt 1,6,0,246,1,2,8,15,2,56,3,2,9,15
 .byt 14,1,9,0
 .byt 1,3,2,89,3,2,9,15
 .byt 14,1,9,0
 .byt 1,7,8,0,0,112,1,4,8,15,2,56,3,2,9,15
 .byt 30,2,8,0,9,0
 .byt 32,6,0,83,1,3,8,15,2,101,3,1,9,15
 .byt 14,1,9,0
 .byt 1,3,2,123,3,1,9,15
 .byt 14,2,8,0,9,0
 .byt 1,6,0,56,1,2,8,15,2,169,3,1,9,15
 .byt 14,1,8,0
 .byt 1,4,9,0,2,125,3,2,9,15
 .byt 15,6,0,251,1,4,8,15,4,62,5,1,10,15
 .byt 14,1,10,0
 .byt 1,4,9,0,2,101,3,1,9,15
 .byt 14,1,9,0
 .byt 1,7,8,0,0,244,1,3,8,15,2,123,3,1,9,15
 .byt 14,1,9,0
 .byt 1,3,2,169,3,1,9,15
 .byt 14,1,8,0
 .byt 1,7,0,123,1,1,8,15,9,0,2,187,3,3,9,15
 .byt 14,1,8,0
 .byt 1,3,0,169,1,1,8,15
 .byt 13,2,8,0,9,0
 .byt 1,6,0,246,1,2,8,15,2,221,3,1,9,15
 .byt 14,1,9,0
 .byt 1,3,2,250,3,1,9,15
 .byt 13,2,8,0,9,0
 .byt 1,6,0,187,1,3,8,15,2,221,3,1,9,15
 .byt 14,1,9,0
 .byt 1,3,2,169,3,1,9,15
 .byt 14,2,8,0,9,0
 .byt 1,6,0,246,1,2,8,15,2,123,3,1,9,15
 .byt 14,1,9,0
 .byt 1,3,2,62,3,1,9,15
 .byt 13,2,8,0,9,0
 .byt 1,6,0,83,1,3,8,15,2,101,3,1,9,15
 .byt 14,1,9,0
 .byt 1,3,2,123,3,1,9,15
 .byt 14,2,8,0,9,0
 .byt 1,6,0,56,1,2,8,15,2,169,3,1,9,15
 .byt 14,1,8,0
 .byt 1,3,0,125,1,2,8,15
 .byt 14,1,9,0
 .byt 1,6,2,236,3,5,9,15,4,123,5,1,10,15
 .byt 14,2,8,0,10,0
 .byt 1,3,0,169,1,1,8,15
 .byt 13,2,8,0,9,0
 .byt 1,9,0,179,1,4,8,15,2,246,3,2,9,15,4,221,5,1
 .byt 10,15
 .byt 13,1,10,0
 .byt 1,3,4,250,5,1,10,15
 .byt 13,3,8,0,9,0,10,0
 .byt 1,6,0,112,1,4,8,15,2,221,3,1,9,15
 .byt 13,1,9,0
 .byt 1,3,2,250,3,1,9,15
 .byt 13,2,8,0,9,0
 .byt 1,6,0,56,1,2,8,15,2,246,3,2,9,15
 .byt 13,1,8,0
 .byt 1,3,0,125,1,2,8,15
 .byt 13,2,8,0,9,0
 .byt 1,6,0,112,1,4,8,15,2,56,3,2,9,15
 .byt 29,2,8,0,9,0
 .byt 1,3,0,123,1,1,8,15
 .byt 13,1,8,0
 .byt 1,3,0,62,1,1,8,15
 .byt 13,1,8,0
 .byt 1,6,0,83,1,3,8,15,2,101,3,1,9,15
 .byt 13,1,9,0
 .byt 1,3,2,123,3,1,9,15
 .byt 14,2,8,0,9,0
 .byt 1,6,0,56,1,2,8,15,2,169,3,1,9,15
 .byt 14,1,8,0
 .byt 1,3,0,125,1,2,8,15
 .byt 14,1,9,0
 .byt 1,6,2,251,3,4,9,15,4,62,5,1,10,15
 .byt 13,2,8,0,10,0
 .byt 1,3,0,101,1,1,8,15
 .byt 13,2,8,0,9,0
 .byt 1,6,0,244,1,3,8,15,2,123,3,1,9,15
 .byt 14,1,9,0
 .byt 1,3,2,169,3,1,9,15
 .byt 13,2,8,0,9,0
 .byt 1,6,0,187,1,3,8,15,2,123,3,1,9,15
 .byt 13,1,9,0
 .byt 1,3,2,169,3,1,9,15
 .byt 13,2,8,0,9,0
 .byt 1,6,0,244,1,3,8,15,2,123,3,1,9,15
 .byt 13,1,9,0
 .byt 1,3,2,169,3,1,9,15
 .byt 13,2,8,0,9,0
 .byt 1,6,0,112,1,4,8,15,2,221,3,1,9,15
 .byt 14,1,9,0
 .byt 1,3,2,123,3,1,9,15
 .byt 13,2,8,0,9,0
 .byt 1,6,0,246,1,2,8,15,2,169,3,1,9,15
 .byt 14,1,9,0
 .byt 1,3,2,221,3,1,9,15
 .byt 13,2,8,0,9,0
 .byt 1,6,0,151,1,5,8,15,2,123,3,1,9,15
 .byt 14,1,9,0
 .byt 1,3,2,169,3,1,9,15
 .byt 13,2,8,0,9,0
 .byt 1,6,0,203,1,2,8,15,2,221,3,1,9,15
 .byt 14,1,9,0
 .byt 1,3,2,250,3,1,9,15
 .byt 13,2,8,0,9,0
 .byt 1,6,0,236,1,5,8,15,2,221,3,1,9,15
 .byt 14,1,9,0
 .byt 1,3,2,250,3,1,9,15
 .byt 14,2,8,0,9,0
 .byt 1,6,0,246,1,2,8,15,2,56,3,2,9,15
 .byt 14,1,9,0
 .byt 1,3,2,89,3,2,9,15
 .byt 14,1,9,0
 .byt 1,7,8,0,0,112,1,4,8,15,2,56,3,2,9,15
 .byt 30,2,8,0,9,0
 .byt 32,3,0,221,1,1,8,15
 .byt 14,1,8,0
 .byt 1,3,0,250,1,1,8,15
 .byt 14,1,8,0
 .byt 1,6,0,112,1,4,8,15,2,56,3,2,9,15
 .byt 14,1,9,0
 .byt 1,3,2,125,3,2,9,15
 .byt 14,1,9,0
 .byt 1,7,8,0,0,246,1,2,8,15,2,56,3,2,9,15
 .byt 14,1,9,0
 .byt 1,3,2,250,3,1,9,15
 .byt 14,1,9,0
 .byt 1,7,8,0,0,151,1,5,8,15,2,221,3,1,9,15
 .byt 14,1,9,0
 .byt 1,3,2,169,3,1,9,15
 .byt 14,2,8,0,9,0
 .byt 1,6,0,203,1,2,8,15,2,123,3,1,9,15
 .byt 14,1,9,0
 .byt 1,3,2,101,3,1,9,15
 .byt 14,1,9,0
 .byt 1,7,8,0,0,251,1,4,8,15,2,62,3,1,9,15
 .byt 14,1,9,0
 .byt 1,3,2,101,3,1,9,15
 .byt 14,1,9,0
 .byt 1,7,8,0,0,83,1,3,8,15,2,123,3,1,9,15
 .byt 14,1,9,0
 .byt 1,3,2,169,3,1,9,15
 .byt 14,1,9,0
 .byt 1,7,8,0,0,187,1,3,8,15,2,221,3,1,9,15
 .byt 28,2,8,0,9,0
 .byt 1,6,0,244,1,3,8,15,2,221,3,1,9,15
 .byt 14,1,9,0
 .byt 1,3,2,250,3,1,9,15
 .byt 14,1,8,0
 .byt 1,7,0,56,1,2,8,15,9,0,2,112,3,4,9,15
 .byt 14,1,8,0
 .byt 1,3,0,125,1,2,8,15
 .byt 13,2,8,0,9,0
 .byt 1,6,0,246,1,2,8,15,2,56,3,2,9,15
 .byt 14,1,9,0
 .byt 1,3,2,250,3,1,9,15
 .byt 13,2,8,0,9,0
 .byt 1,6,0,151,1,5,8,15,2,221,3,1,9,15
 .byt 14,1,9,0
 .byt 1,3,2,169,3,1,9,15
 .byt 14,2,8,0,9,0
 .byt 1,6,0,203,1,2,8,15,2,123,3,1,9,15
 .byt 14,1,9,0
 .byt 1,3,2,101,3,1,9,15
 .byt 13,2,8,0,9,0
 .byt 1,6,0,251,1,4,8,15,2,62,3,1,9,15
 .byt 14,1,9,0
 .byt 1,3,2,101,3,1,9,15
 .byt 13,2,8,0,9,0
 .byt 1,6,0,83,1,3,8,15,2,123,3,1,9,15
 .byt 14,1,9,0
 .byt 1,3,2,169,3,1,9,15
 .byt 14,2,8,0,9,0
 .byt 1,6,0,187,1,3,8,15,2,123,3,1,9,15
 .byt 28,2,8,0,9,0
 .byt 1,6,0,244,1,3,8,15,2,221,3,1,9,15
 .byt 13,1,9,0
 .byt 1,3,2,250,3,1,9,15
 .byt 13,2,8,0,9,0
 .byt 1,6,0,112,1,4,8,15,2,56,3,2,9,15
 .byt 13,1,9,0
 .byt 1,3,2,125,3,2,9,15
 .byt 13,2,8,0,9,0
 .byt 1,6,0,246,1,2,8,15,2,56,3,2,9,15
 .byt 14,1,9,0
 .byt 1,3,2,250,3,1,9,15
 .byt 13,2,8,0,9,0
 .byt 1,6,0,151,1,5,8,15,2,221,3,1,9,15
 .byt 13,1,9,0
 .byt 1,3,2,169,3,1,9,15
 .byt 14,2,8,0,9,0
 .byt 1,6,0,203,1,2,8,15,2,123,3,1,9,15
 .byt 13,1,9,0
 .byt 1,3,2,101,3,1,9,15
 .byt 13,2,8,0,9,0
 .byt 1,6,0,251,1,4,8,15,2,62,3,1,9,15
 .byt 13,1,9,0
 .byt 1,3,2,101,3,1,9,15
 .byt 13,2,8,0,9,0
 .byt 1,6,0,83,1,3,8,15,2,123,3,1,9,15
 .byt 14,1,9,0
 .byt 1,3,2,169,3,1,9,15
 .byt 13,2,8,0,9,0
 .byt 1,6,0,187,1,3,8,15,2,221,3,1,9,15
 .byt 28,2,8,0,9,0
 .byt 1,6,0,244,1,3,8,15,2,221,3,1,9,15
 .byt 13,1,9,0
 .byt 1,3,2,250,3,1,9,15
 .byt 13,2,8,0,9,0
 .byt 1,6,0,112,1,4,8,15,2,56,3,2,9,15
 .byt 13,1,9,0
 .byt 1,3,2,125,3,2,9,15
 .byt 13,2,8,0,9,0
 .byt 1,6,0,246,1,2,8,15,2,56,3,2,9,15
 .byt 14,1,9,0
 .byt 1,3,2,125,3,2,9,15
 .byt 13,2,8,0,9,0
 .byt 1,6,0,236,1,5,8,15,2,89,3,2,9,15
 .byt 14,1,9,0
 .byt 1,3,2,250,3,1,9,15
 .byt 13,2,8,0,9,0
 .byt 1,6,0,246,1,2,8,15,2,123,3,1,9,15
 .byt 14,1,9,0
 .byt 1,3,2,169,3,1,9,15
 .byt 13,2,8,0,9,0
 .byt 1,6,0,151,1,5,8,15,2,221,3,1,9,15
 .byt 14,1,9,0
 .byt 1,3,2,250,3,1,9,15
 .byt 14,1,8,0
 .byt 1,7,0,56,1,2,8,15,9,0,2,236,3,5,9,15
 .byt 14,1,8,0
 .byt 1,3,0,125,1,2,8,15
 .byt 14,1,8,0
 .byt 1,7,0,56,1,2,8,15,9,0,2,112,3,4,9,15
 .byt 30,2,8,0,9,0
 ;-- unsnip
 .byt 1,3,8,0,9,0,10,0
; .byt 0,0
 .byt 128,128
;=== end of song

dataend    ; so we have the end of the data in the list file
 
 ;.end

No comments:

Post a Comment