Thursday, August 23, 2018

Simple music player for the VZ200 with an AY (General Instruments) sound chip

A simple music payer for the VZ200 (Z80) & AY sound chip. 
Uses the same data as the Oric and Apple II Mockigboard players I wrote.


;***********************************************************
;* FILE: Forest.z80
;***********************************************************
;* Description:
;*   Interrupt driven music player demo for the VZ AY sound board
;*   Based on a non-interrupt driven player & song for the Aquarius
;*   written by (?) emucompboy AKA James the Animal Tamer.  (Real name?)
;*   Modified for VZ sound board and interrupt by James Diffendaffer
;* Version history:
;*   V1.2  8/15/2009  Converted to fully interrupt driven player
;*   V1.1  8/14/2009  Replaced vertical blank test with interrupt for VBlank and a flag, added comments
;*   V1.0  8/12/2009  Initial VZ port using polling of vblank/retrace signal
;***********************************************************

; define standard assembler directives to work with TASM
#define org .org
#define end .end
#define byte .byte

; program specific defines
#define AYBASE  128  ; base address for the AY-3-8910 sound chip
#define INTHOOK  787DH  ; interrupt hook, interrupt calls $787D in RAM
#define JP_OPCD  0C3H  ; $C3 = opcode for JP
#define RET_OPCD 0C9H  ; $C9 = opcode for RET
#define VBSIG  6800H  ; address 6800h (26624) bit 7 goes low when video retrace starts
#define VB_BIT  7  ; bit signaling VBLANK, bit 7 goes low when video retrace starts
#define VZExit  1A19h  ; Address to jump to when exiting a snapshot file

;
 org $8000   ; start address for our code

MLSTART     ; MLSTART and MLEND will give us the start and end addresses


; entry point
playsong
 push hl   ; save registers we modify
 push bc
 push af


 call _InstallInt  ; install our interrupt handler

 ld hl,songstart  ; get the start of the song
 call _SetSong
 call _StartSong  ; set it for the player
 
; call _RemoveInt  ; Remove the interrupt handler

 pop af   ; restore the registers we saved
 pop bc
 pop hl

 jp VZExit   ; exit snapshot
 ;ret    ; normal exit for executable


 ; install our interrupt handler
_InstallInt:
 ld a,0
 ld (_Playing),a  ; make sure we are not playing a song
 
 ; install our interrupt handler
 ld hl,_IntHandler  ; point hl to our interrupt handler
 ld (INTHOOK+1),hl  ; put the address after the RET of the normal interrupt handler
 ld a,JP_OPCD
 ld (INTHOOK),a  ; change the RET to JP so it will now call our handler 
 ret

 ; remove our interrupt handler
_RemoveInt:
 ld a,RET_OPCD
 ld (INTHOOK),a  ; change the JP back to RET to remove our interrupt handler
 ret

; do the initial setup to play a song
; hl contains the song pointer on entry
_SetSong:
 ld a,(hl)   ; get wait
 ld (_VblCounter),a  ; hold wait in vertical blank counter
 inc hl   ; increment song pointer
 ld a,(hl)   ; get number of registers
 ld (_NumRegisters),a ; save number of registers
 inc hl   ; increment song pointer
 ld (_SongPTR),HL  ; set the song pointer to current song location
 ret

; start playing the song
_StartSong
 ld a,1
 ld (_Playing),a  ; tell interrupt we are now playing a song
 ret

; stop playing the song
; does not alter anything but the flag so playing can be resumed
_StopSong
 ld a,0
 ld (_Playing),a  ; tell interrupt we are now playing a song
 ret

; music player interrupt handler
_IntHandler:
 push af   ; save registers
 push bc
 push hl

 ; are we playing a song?
 ld a,(_Playing)  ; check flag to see if we are playing a song
 or a
 jp z,_exti   ; if not, branch to interrupt exit

 ; make sure it's the vblank interrupt so we don't mess up the timing
 ; if no other interrupts will be taking place, this can be commented out
 ld a,(VBSIG)  ; get hardware status
 bit VB_BIT,a  ; check for VBLANK (retrace)
 jp nz,_exti  ; if not, go to exit

 ; update the wait counter and see if we are done waiting
 ld a,(_VblCounter)  ; load the wait counter
 dec a   ; decrement the wait counter
 ld (_VblCounter),a  ; save the wait counter
 jr nz,_exti  ; wait for more interrupts if not zero

 ;setup registers to continue playing
 ld hl,(_SongPTR)  ; load the song pointer, hl points to register data
 ld c,a   ; put the wait counter in c
 ld a,(_NumRegisters) ; number of registers is in .b
 ld b,a

 ; update AY registers for this line
_reglop
 ld a,(hl)   ; get register #
 inc hl   ; increment song pointer
 out (AYBASE+1),a  ; register select
 ld a,(hl)   ; get sound data
 inc hl   ; increment song pointer
 out (AYBASE),a  ; output register data
 dec b   ; decrement # of registers to modify
 jr nz,_reglop  ; loop until no more registers to modify

;playline < preserved for comparison to original. 
;  code order has changed since we don't busy wait
;  the interrupt and _VblCounter replaced the wait loop
 ; setup variables for wait and next play
 ld a,(hl)   ; get wait
 ld (_VblCounter),a  ; update vertical blank counter
 ld c,a   ; copy wait to c
 inc hl   ; increment song pointer
 ld a,(hl)   ; get number of registers
 ld (_NumRegisters),a ; save number of registers
 inc hl   ; increment song pointer
 ld (_SongPTR),HL  ; update the song pointer
 or c   ; is wait zero?
 jr nz,_exti  ; if not, skip
 
 ; song has ended so no more playing
 ld a,0
 ld (_Playing),a  ; set flag to not playing

 call _RemoveInt  ; just for the demo, should be done by the main program

;--- exit point for interrupt handler
_exti pop hl   ; restore registers
 pop bc
 pop af
 ret

_VblCounter:
 byte 0
_NumRegisters
 byte 0
_Playing
 byte 0
_SongPTR
 byte 0

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.
 byte 1,4,8,0,9,0,10,0,7,56
 ;-- snip
 byte 1,3,0,221,1,1,8,15
 byte 14,1,8,0
 byte 1,3,0,250,1,1,8,15
 byte 14,1,8,0
 byte 1,6,0,112,1,4,8,15,2,56,3,2,9,15
 byte 14,1,9,0
 byte 1,3,2,125,3,2,9,15
 byte  14,1,9,0
 byte 1,7,8,0,0,246,1,2,8,15,2,56,3,2,9,15
 byte 14,1,9,0
 byte 1,3,2,250,3,1,9,15
 byte 14,1,9,0
 byte 1,7,8,0,0,151,1,5,8,15,2,221,3,1,9,15
 byte 29,2,8,0,9,0
 byte 1,6,0,251,1,4,8,15,2,221,3,1,9,15
 byte 14,1,9,0
 byte 1,3,2,250,3,1,9,15
 byte 14,2,8,0,9,0
 byte 1,6,0,112,1,4,8,15,2,56,3,2,9,15
 byte 14,1,9,0
 byte 1,3,2,125,3,2,9,15
 byte 14,1,9,0
 byte 1,7,8,0,0,246,1,2,8,15,2,56,3,2,9,15
 byte 14,1,9,0
 byte 1,3,2,250,3,1,9,15
 byte 14,1,9,0
 byte 1,7,8,0,0,151,1,5,8,15,2,221,3,1,9,15
 byte 29,2,8,0,9,0
 byte 1,6,0,251,1,4,8,15,2,221,3,1,9,15
 byte 14,1,9,0
 byte 1,3,2,250,3,1,9,15
 byte 14,2,8,0,9,0
 byte 1,6,0,112,1,4,8,15,2,56,3,2,9,15
 byte 14,1,9,0
 byte 1,3,2,125,3,2,9,15
 byte 14,1,9,0
 byte 1,7,8,0,0,246,1,2,8,15,2,56,3,2,9,15
 byte 14,1,9,0
 byte 1,3,2,250,3,1,9,15
 byte 14,1,9,0
 byte 1,7,8,0,0,151,1,5,8,15,2,221,3,1,9,15
 byte 14,1,9,0
 byte 1,3,2,250,3,1,9,15
 byte 14,1,8,0
 byte 1,7,0,56,1,2,8,15,9,0,2,236,3,5,9,15
 byte 14,1,8,0
 byte 1,3,0,89,1,2,8,15
 byte 13,2,8,0,9,0
 byte 1,6,0,112,1,4,8,15,2,56,3,2,9,15
 byte 29,2,8,0,9,0
 byte 1,3,0,246,1,2,8,15
 byte 29,1,8,0
 byte 1,3,0,236,1,5,8,15
 byte 29,1,8,0
 byte 1,3,0,221,1,1,8,15
 byte 14,1,8,0
 byte 1,3,0,250,1,1,8,15
 byte 14,1,8,0
 byte 1,6,0,112,1,4,8,15,2,56,3,2,9,15
 byte 13,1,9,0
 byte 1,3,2,125,3,2,9,15
 byte 13,2,8,0,9,0
 byte 1,6,0,246,1,2,8,15,2,56,3,2,9,15
 byte 13,1,9,0
 byte 1,3,2,250,3,1,9,15
 byte 13,2,8,0,9,0
 byte 1,6,0,151,1,5,8,15,2,221,3,1,9,15
 byte 13,1,9,0
 byte 1,3,2,169,3,1,9,15
 byte 14,2,8,0,9,0
 byte 1,6,0,203,1,2,8,15,2,123,3,1,9,15
 byte 13,1,9,0
 byte 1,3,2,101,3,1,9,15
 byte 14,1,9,0
 byte 1,7,8,0,0,251,1,4,8,15,2,62,3,1,9,15
 byte 13,1,9,0
 byte 1,3,2,101,3,1,9,15
 byte 14,1,9,0
 byte 1,7,8,0,0,83,1,3,8,15,2,123,3,1,9,15
 byte 13,1,9,0
 byte 1,3,2,169,3,1,9,15
 byte 14,1,9,0
 byte 1,7,8,0,0,187,1,3,8,15,2,221,3,1,9,15
 byte 29,2,8,0,9,0
 byte 1,6,0,244,1,3,8,15,2,221,3,1,9,15
 byte 14,1,9,0
 byte 1,3,2,250,3,1,9,15
 byte 14,1,8,0
 byte 1,7,0,56,1,2,8,15,9,0,2,112,3,4,9,15
 byte 14,1,8,0
 byte 1,3,0,125,1,2,8,15
 byte 14,1,8,0
 byte 1,7,0,56,1,2,8,15,9,0,2,246,3,2,9,15
 byte 14,1,8,0
 byte 1,3,0,250,1,1,8,15
 byte 14,1,8,0
 byte 1,7,0,221,1,1,8,15,9,0,2,151,3,5,9,15
 byte 14,1,8,0
 byte 1,3,0,169,1,1,8,15
 byte 14,2,8,0,9,0
 byte 1,6,0,203,1,2,8,15,2,123,3,1,9,15
 byte 14,1,9,0
 byte 1,3,2,101,3,1,9,15
 byte 14,1,9,0
 byte 1,7,8,0,0,251,1,4,8,15,2,62,3,1,9,15
 byte 14,1,9,0
 byte 1,3,2,101,3,1,9,15
 byte 14,1,9,0
 byte 1,7,8,0,0,83,1,3,8,15,2,123,3,1,9,15
 byte 14,1,9,0
 byte 1,3,2,169,3,1,9,15
 byte 14,2,8,0,9,0
 byte 1,6,0,187,1,3,8,15,2,123,3,1,9,15
 byte 29,1,8,0
 byte 1,7,0,221,1,1,8,15,9,0,2,244,3,3,9,15
 byte 14,1,8,0
 byte 1,3,0,250,1,1,8,15
 byte 14,1,9,0
 byte 1,7,8,0,0,112,1,4,8,15,2,56,3,2,9,15
 byte 14,1,9,0
 byte 1,3,2,125,3,2,9,15
 byte 14,1,9,0
 byte 1,7,8,0,0,246,1,2,8,15,2,56,3,2,9,15
 byte 14,1,9,0
 byte 1,3,2,250,3,1,9,15
 byte 14,1,9,0
 byte 1,7,8,0,0,151,1,5,8,15,2,221,3,1,9,15
 byte 14,1,9,0
 byte 1,3,2,169,3,1,9,15
 byte 14,2,8,0,9,0
 byte 1,6,0,203,1,2,8,15,2,123,3,1,9,15
 byte 14,1,9,0
 byte 1,3,2,101,3,1,9,15
 byte 14,1,9,0
 byte 1,7,8,0,0,251,1,4,8,15,2,62,3,1,9,15
 byte 14,1,9,0
 byte 1,3,2,101,3,1,9,15
 byte 14,1,9,0
 byte 1,7,8,0,0,83,1,3,8,15,2,123,3,1,9,15
 byte 14,1,9,0
 byte 1,3,2,169,3,1,9,15
 byte 14,1,9,0
 byte 1,7,8,0,0,187,1,3,8,15,2,221,3,1,9,15
 byte 29,2,8,0,9,0
 byte 1,6,0,244,1,3,8,15,2,221,3,1,9,15
 byte 14,1,9,0
 byte 1,3,2,250,3,1,9,15
 byte 14,1,8,0
 byte 1,7,0,56,1,2,8,15,9,0,2,112,3,4,9,15
 byte 14,1,8,0
 byte 1,3,0,125,1,2,8,15
 byte 14,1,8,0
 byte 1,7,0,56,1,2,8,15,9,0,2,246,3,2,9,15
 byte 14,1,8,0
 byte 1,3,0,125,1,2,8,15
 byte 14,1,8,0
 byte 1,7,0,89,1,2,8,15,9,0,2,236,3,5,9,15
 byte 14,1,8,0
 byte 1,3,0,250,1,1,8,15
 byte 14,2,8,0,9,0
 byte 1,6,0,246,1,2,8,15,2,123,3,1,9,15
 byte 14,1,9,0
 byte 1,3,2,169,3,1,9,15
 byte 14,1,9,0
 byte 1,7,8,0,0,151,1,5,8,15,2,221,3,1,9,15
 byte 14,1,9,0
 byte 1,3,2,250,3,1,9,15
 byte 14,1,8,0
 byte 1,7,0,56,1,2,8,15,9,0,2,236,3,5,9,15
 byte 14,1,8,0
 byte 1,3,0,125,1,2,8,15
 byte 13,2,8,0,9,0
 byte 1,6,0,112,1,4,8,15,2,56,3,2,9,15
 byte 29,2,8,0,9,0
 byte 1,3,0,221,1,1,8,15
 byte 14,1,8,0
 byte 1,3,0,250,1,1,8,15
 byte 14,1,8,0
 byte 1,6,0,112,1,4,8,15,2,56,3,2,9,15
 byte 14,1,9,0
 byte 1,3,2,125,3,2,9,15
 byte 13,2,8,0,9,0
 byte 1,6,0,246,1,2,8,15,2,56,3,2,9,15
 byte 14,1,9,0
 byte 1,3,2,250,3,1,9,15
 byte 13,2,8,0,9,0
 byte 1,6,0,151,1,5,8,15,2,221,3,1,9,15
 byte 14,1,9,0
 byte 1,3,2,169,3,1,9,15
 byte 14,2,8,0,9,0
 byte 1,6,0,203,1,2,8,15,2,123,3,1,9,15
 byte 14,1,9,0
 byte 1,3,2,101,3,1,9,15
 byte 13,2,8,0,9,0
 byte 1,6,0,251,1,4,8,15,2,62,3,1,9,15
 byte 14,1,9,0
 byte 1,3,2,101,3,1,9,15
 byte 13,2,8,0,9,0
 byte 1,6,0,83,1,3,8,15,2,123,3,1,9,15
 byte 14,1,9,0
 byte 1,3,2,169,3,1,9,15
 byte 13,2,8,0,9,0
 byte 1,6,0,187,1,3,8,15,2,221,3,1,9,15
 byte 28,2,8,0,9,0
 byte 1,6,0,244,1,3,8,15,2,221,3,1,9,15
 byte 13,1,9,0
 byte 1,3,2,250,3,1,9,15
 byte 13,2,8,0,9,0
 byte 1,6,0,112,1,4,8,15,2,56,3,2,9,15
 byte 13,1,9,0
 byte 1,3,2,125,3,2,9,15
 byte 13,2,8,0,9,0
 byte 1,6,0,246,1,2,8,15,2,56,3,2,9,15
 byte 14,1,9,0
 byte 1,3,2,250,3,1,9,15
 byte 13,2,8,0,9,0
 byte 1,6,0,151,1,5,8,15,2,221,3,1,9,15
 byte 13,1,9,0
 byte 1,3,2,169,3,1,9,15
 byte 14,2,8,0,9,0
 byte 1,6,0,203,1,2,8,15,2,123,3,1,9,15
 byte 13,1,9,0
 byte 1,3,2,101,3,1,9,15
 byte 13,2,8,0,9,0
 byte 1,6,0,251,1,4,8,15,2,62,3,1,9,15
 byte 13,1,9,0
 byte 1,3,2,101,3,1,9,15
 byte 13,2,8,0,9,0
 byte 1,6,0,83,1,3,8,15,2,123,3,1,9,15
 byte 14,1,9,0
 byte 1,3,2,169,3,1,9,15
 byte 14,2,8,0,9,0
 byte 1,6,0,187,1,3,8,15,2,123,3,1,9,15
 byte 28,2,8,0,9,0
 byte 1,6,0,244,1,3,8,15,2,221,3,1,9,15
 byte 13,1,9,0
 byte 1,3,2,250,3,1,9,15
 byte 13,2,8,0,9,0
 byte 1,6,0,112,1,4,8,15,2,56,3,2,9,15
 byte 14,1,9,0
 byte 1,3,2,125,3,2,9,15
 byte 13,2,8,0,9,0
 byte 1,6,0,246,1,2,8,15,2,56,3,2,9,15
 byte 14,1,9,0
 byte 1,3,2,250,3,1,9,15
 byte 13,2,8,0,9,0
 byte 1,6,0,151,1,5,8,15,2,221,3,1,9,15
 byte 14,1,9,0
 byte 1,3,2,169,3,1,9,15
 byte 13,2,8,0,9,0
 byte 1,6,0,203,1,2,8,15,2,123,3,1,9,15
 byte 14,1,9,0
 byte 1,3,2,101,3,1,9,15
 byte 14,1,9,0
 byte 1,7,8,0,0,251,1,4,8,15,2,62,3,1,9,15
 byte 14,1,9,0
 byte 1,3,2,101,3,1,9,15
 byte 14,1,9,0
 byte 1,7,8,0,0,83,1,3,8,15,2,123,3,1,9,15
 byte 14,1,9,0
 byte 1,3,2,169,3,1,9,15
 byte 14,1,9,0
 byte 1,7,8,0,0,187,1,3,8,15,2,221,3,1,9,15
 byte 29,2,8,0,9,0
 byte 1,6,0,244,1,3,8,15,2,221,3,1,9,15
 byte 14,1,9,0
 byte 1,3,2,250,3,1,9,15
 byte 14,2,8,0,9,0
 byte 1,6,0,112,1,4,8,15,2,56,3,2,9,15
 byte 14,1,9,0
 byte 1,3,2,125,3,2,9,15
 byte 14,1,9,0
 byte 1,7,8,0,0,246,1,2,8,15,2,56,3,2,9,15
 byte 14,1,9,0
 byte 1,3,2,125,3,2,9,15
 byte 14,1,9,0
 byte 1,7,8,0,0,236,1,5,8,15,2,89,3,2,9,15
 byte 14,1,9,0
 byte 1,3,2,250,3,1,9,15
 byte 14,2,8,0,9,0
 byte 1,6,0,246,1,2,8,15,2,123,3,1,9,15
 byte 14,1,9,0
 byte 1,3,2,169,3,1,9,15
 byte 14,1,9,0
 byte 1,7,8,0,0,151,1,5,8,15,2,221,3,1,9,15
 byte 14,1,9,0
 byte 1,3,2,250,3,1,9,15
 byte 14,1,8,0
 byte 1,7,0,56,1,2,8,15,9,0,2,236,3,5,9,15
 byte 14,1,8,0
 byte 1,3,0,125,1,2,8,15
 byte 14,1,8,0
 byte 1,7,0,56,1,2,8,15,9,0,2,112,3,4,9,15
 byte 29,2,8,0,9,0
 byte 30,6,0,83,1,3,8,15,2,101,3,1,9,15
 byte 14,1,9,0
 byte 1,3,2,123,3,1,9,15
 byte 14,2,8,0,9,0
 byte 1,6,0,56,1,2,8,15,2,169,3,1,9,15
 byte 14,1,8,0
 byte 1,4,9,0,2,125,3,2,9,15
 byte 15,6,0,251,1,4,8,15,4,62,5,1,10,15
 byte 14,1,10,0
 byte 1,4,9,0,2,101,3,1,9,15
 byte 14,1,9,0
 byte 1,7,8,0,0,244,1,3,8,15,2,123,3,1,9,15
 byte 14,1,9,0
 byte 1,3,2,169,3,1,9,15
 byte 14,1,8,0
 byte 1,7,0,123,1,1,8,15,9,0,2,187,3,3,9,15
 byte 14,1,8,0
 byte 1,3,0,169,1,1,8,15
 byte 13,2,8,0,9,0
 byte 1,6,0,246,1,2,8,15,2,221,3,1,9,15
 byte 14,1,9,0
 byte 1,3,2,250,3,1,9,15
 byte 13,2,8,0,9,0
 byte 1,6,0,187,1,3,8,15,2,221,3,1,9,15
 byte 14,1,9,0
 byte 1,3,2,169,3,1,9,15
 byte 14,2,8,0,9,0
 byte 1,6,0,246,1,2,8,15,2,123,3,1,9,15
 byte 14,1,9,0
 byte 1,3,2,62,3,1,9,15
 byte 13,2,8,0,9,0
 byte 1,6,0,83,1,3,8,15,2,101,3,1,9,15
 byte 14,1,9,0
 byte 1,3,2,123,3,1,9,15
 byte 14,2,8,0,9,0
 byte 1,6,0,56,1,2,8,15,2,169,3,1,9,15
 byte 14,1,8,0
 byte 1,3,0,125,1,2,8,15
 byte 14,1,9,0
 byte 1,6,2,236,3,5,9,15,4,123,5,1,10,15
 byte 14,2,8,0,10,0
 byte 1,3,0,169,1,1,8,15
 byte 13,2,8,0,9,0
 byte 1,9,0,179,1,4,8,15,2,246,3,2,9,15,4,221,5,1
 byte 10,15
 byte 13,1,10,0
 byte 1,3,4,250,5,1,10,15
 byte 13,3,8,0,9,0,10,0
 byte 1,6,0,112,1,4,8,15,2,221,3,1,9,15
 byte 13,1,9,0
 byte 1,3,2,250,3,1,9,15
 byte 13,2,8,0,9,0
 byte 1,6,0,56,1,2,8,15,2,246,3,2,9,15
 byte 13,1,8,0
 byte 1,3,0,125,1,2,8,15
 byte 13,2,8,0,9,0
 byte 1,6,0,112,1,4,8,15,2,56,3,2,9,15
 byte 28,2,8,0,9,0
 byte 1,3,0,123,1,1,8,15
 byte 13,1,8,0
 byte 1,3,0,62,1,1,8,15
 byte 13,1,8,0
 byte 1,6,0,83,1,3,8,15,2,101,3,1,9,15
 byte 13,1,9,0
 byte 1,3,2,123,3,1,9,15
 byte 14,2,8,0,9,0
 byte 1,6,0,56,1,2,8,15,2,169,3,1,9,15
 byte 13,1,8,0
 byte 1,4,9,0,2,125,3,2,9,15
 byte 14,6,0,251,1,4,8,15,4,62,5,1,10,15
 byte 13,2,9,0,10,0
 byte 1,3,2,101,3,1,9,15
 byte 13,2,8,0,9,0
 byte 1,6,0,244,1,3,8,15,2,123,3,1,9,15
 byte 13,1,9,0
 byte 1,3,2,169,3,1,9,15
 byte 13,2,8,0,9,0
 byte 1,6,0,187,1,3,8,15,2,123,3,1,9,15
 byte 14,1,9,0
 byte 1,3,2,169,3,1,9,15
 byte 13,2,8,0,9,0
 byte 1,6,0,244,1,3,8,15,2,123,3,1,9,15
 byte 14,1,9,0
 byte 1,3,2,169,3,1,9,15
 byte 13,2,8,0,9,0
 byte 1,6,0,112,1,4,8,15,2,221,3,1,9,15
 byte 14,1,9,0
 byte 1,3,2,123,3,1,9,15
 byte 13,2,8,0,9,0
 byte 1,6,0,246,1,2,8,15,2,169,3,1,9,15
 byte 14,1,9,0
 byte 1,3,2,221,3,1,9,15
 byte 14,2,8,0,9,0
 byte 1,6,0,151,1,5,8,15,2,123,3,1,9,15
 byte 14,1,9,0
 byte 1,3,2,169,3,1,9,15
 byte 14,1,9,0
 byte 1,7,8,0,0,203,1,2,8,15,2,221,3,1,9,15
 byte 14,1,9,0
 byte 1,3,2,250,3,1,9,15
 byte 14,1,9,0
 byte 1,7,8,0,0,236,1,5,8,15,2,221,3,1,9,15
 byte 14,1,9,0
 byte 1,3,2,250,3,1,9,15
 byte 14,2,8,0,9,0
 byte 1,6,0,246,1,2,8,15,2,56,3,2,9,15
 byte 14,1,9,0
 byte 1,3,2,89,3,2,9,15
 byte 14,1,9,0
 byte 1,7,8,0,0,112,1,4,8,15,2,56,3,2,9,15
 byte 30,2,8,0,9,0
 byte 32,6,0,83,1,3,8,15,2,101,3,1,9,15
 byte 14,1,9,0
 byte 1,3,2,123,3,1,9,15
 byte 14,2,8,0,9,0
 byte 1,6,0,56,1,2,8,15,2,169,3,1,9,15
 byte 14,1,8,0
 byte 1,4,9,0,2,125,3,2,9,15
 byte 15,6,0,251,1,4,8,15,4,62,5,1,10,15
 byte 14,1,10,0
 byte 1,4,9,0,2,101,3,1,9,15
 byte 14,1,9,0
 byte 1,7,8,0,0,244,1,3,8,15,2,123,3,1,9,15
 byte 14,1,9,0
 byte 1,3,2,169,3,1,9,15
 byte 14,1,8,0
 byte 1,7,0,123,1,1,8,15,9,0,2,187,3,3,9,15
 byte 14,1,8,0
 byte 1,3,0,169,1,1,8,15
 byte 13,2,8,0,9,0
 byte 1,6,0,246,1,2,8,15,2,221,3,1,9,15
 byte 14,1,9,0
 byte 1,3,2,250,3,1,9,15
 byte 13,2,8,0,9,0
 byte 1,6,0,187,1,3,8,15,2,221,3,1,9,15
 byte 14,1,9,0
 byte 1,3,2,169,3,1,9,15
 byte 14,2,8,0,9,0
 byte 1,6,0,246,1,2,8,15,2,123,3,1,9,15
 byte 14,1,9,0
 byte 1,3,2,62,3,1,9,15
 byte 13,2,8,0,9,0
 byte 1,6,0,83,1,3,8,15,2,101,3,1,9,15
 byte 14,1,9,0
 byte 1,3,2,123,3,1,9,15
 byte 14,2,8,0,9,0
 byte 1,6,0,56,1,2,8,15,2,169,3,1,9,15
 byte 14,1,8,0
 byte 1,3,0,125,1,2,8,15
 byte 14,1,9,0
 byte 1,6,2,236,3,5,9,15,4,123,5,1,10,15
 byte 14,2,8,0,10,0
 byte 1,3,0,169,1,1,8,15
 byte 13,2,8,0,9,0
 byte 1,9,0,179,1,4,8,15,2,246,3,2,9,15,4,221,5,1
 byte 10,15
 byte 13,1,10,0
 byte 1,3,4,250,5,1,10,15
 byte 13,3,8,0,9,0,10,0
 byte 1,6,0,112,1,4,8,15,2,221,3,1,9,15
 byte 13,1,9,0
 byte 1,3,2,250,3,1,9,15
 byte 13,2,8,0,9,0
 byte 1,6,0,56,1,2,8,15,2,246,3,2,9,15
 byte 13,1,8,0
 byte 1,3,0,125,1,2,8,15
 byte 13,2,8,0,9,0
 byte 1,6,0,112,1,4,8,15,2,56,3,2,9,15
 byte 29,2,8,0,9,0
 byte 1,3,0,123,1,1,8,15
 byte 13,1,8,0
 byte 1,3,0,62,1,1,8,15
 byte 13,1,8,0
 byte 1,6,0,83,1,3,8,15,2,101,3,1,9,15
 byte 13,1,9,0
 byte 1,3,2,123,3,1,9,15
 byte 14,2,8,0,9,0
 byte 1,6,0,56,1,2,8,15,2,169,3,1,9,15
 byte 14,1,8,0
 byte 1,3,0,125,1,2,8,15
 byte 14,1,9,0
 byte 1,6,2,251,3,4,9,15,4,62,5,1,10,15
 byte 13,2,8,0,10,0
 byte 1,3,0,101,1,1,8,15
 byte 13,2,8,0,9,0
 byte 1,6,0,244,1,3,8,15,2,123,3,1,9,15
 byte 14,1,9,0
 byte 1,3,2,169,3,1,9,15
 byte 13,2,8,0,9,0
 byte 1,6,0,187,1,3,8,15,2,123,3,1,9,15
 byte 13,1,9,0
 byte 1,3,2,169,3,1,9,15
 byte 13,2,8,0,9,0
 byte 1,6,0,244,1,3,8,15,2,123,3,1,9,15
 byte 13,1,9,0
 byte 1,3,2,169,3,1,9,15
 byte 13,2,8,0,9,0
 byte 1,6,0,112,1,4,8,15,2,221,3,1,9,15
 byte 14,1,9,0
 byte 1,3,2,123,3,1,9,15
 byte 13,2,8,0,9,0
 byte 1,6,0,246,1,2,8,15,2,169,3,1,9,15
 byte 14,1,9,0
 byte 1,3,2,221,3,1,9,15
 byte 13,2,8,0,9,0
 byte 1,6,0,151,1,5,8,15,2,123,3,1,9,15
 byte 14,1,9,0
 byte 1,3,2,169,3,1,9,15
 byte 13,2,8,0,9,0
 byte 1,6,0,203,1,2,8,15,2,221,3,1,9,15
 byte 14,1,9,0
 byte 1,3,2,250,3,1,9,15
 byte 13,2,8,0,9,0
 byte 1,6,0,236,1,5,8,15,2,221,3,1,9,15
 byte 14,1,9,0
 byte 1,3,2,250,3,1,9,15
 byte 14,2,8,0,9,0
 byte 1,6,0,246,1,2,8,15,2,56,3,2,9,15
 byte 14,1,9,0
 byte 1,3,2,89,3,2,9,15
 byte 14,1,9,0
 byte 1,7,8,0,0,112,1,4,8,15,2,56,3,2,9,15
 byte 30,2,8,0,9,0
 byte 32,3,0,221,1,1,8,15
 byte 14,1,8,0
 byte 1,3,0,250,1,1,8,15
 byte 14,1,8,0
 byte 1,6,0,112,1,4,8,15,2,56,3,2,9,15
 byte 14,1,9,0
 byte 1,3,2,125,3,2,9,15
 byte 14,1,9,0
 byte 1,7,8,0,0,246,1,2,8,15,2,56,3,2,9,15
 byte 14,1,9,0
 byte 1,3,2,250,3,1,9,15
 byte 14,1,9,0
 byte 1,7,8,0,0,151,1,5,8,15,2,221,3,1,9,15
 byte 14,1,9,0
 byte 1,3,2,169,3,1,9,15
 byte 14,2,8,0,9,0
 byte 1,6,0,203,1,2,8,15,2,123,3,1,9,15
 byte 14,1,9,0
 byte 1,3,2,101,3,1,9,15
 byte 14,1,9,0
 byte 1,7,8,0,0,251,1,4,8,15,2,62,3,1,9,15
 byte 14,1,9,0
 byte 1,3,2,101,3,1,9,15
 byte 14,1,9,0
 byte 1,7,8,0,0,83,1,3,8,15,2,123,3,1,9,15
 byte 14,1,9,0
 byte 1,3,2,169,3,1,9,15
 byte 14,1,9,0
 byte 1,7,8,0,0,187,1,3,8,15,2,221,3,1,9,15
 byte 28,2,8,0,9,0
 byte 1,6,0,244,1,3,8,15,2,221,3,1,9,15
 byte 14,1,9,0
 byte 1,3,2,250,3,1,9,15
 byte 14,1,8,0
 byte 1,7,0,56,1,2,8,15,9,0,2,112,3,4,9,15
 byte 14,1,8,0
 byte 1,3,0,125,1,2,8,15
 byte 13,2,8,0,9,0
 byte 1,6,0,246,1,2,8,15,2,56,3,2,9,15
 byte 14,1,9,0
 byte 1,3,2,250,3,1,9,15
 byte 13,2,8,0,9,0
 byte 1,6,0,151,1,5,8,15,2,221,3,1,9,15
 byte 14,1,9,0
 byte 1,3,2,169,3,1,9,15
 byte 14,2,8,0,9,0
 byte 1,6,0,203,1,2,8,15,2,123,3,1,9,15
 byte 14,1,9,0
 byte 1,3,2,101,3,1,9,15
 byte 13,2,8,0,9,0
 byte 1,6,0,251,1,4,8,15,2,62,3,1,9,15
 byte 14,1,9,0
 byte 1,3,2,101,3,1,9,15
 byte 13,2,8,0,9,0
 byte 1,6,0,83,1,3,8,15,2,123,3,1,9,15
 byte 14,1,9,0
 byte 1,3,2,169,3,1,9,15
 byte 14,2,8,0,9,0
 byte 1,6,0,187,1,3,8,15,2,123,3,1,9,15
 byte 28,2,8,0,9,0
 byte 1,6,0,244,1,3,8,15,2,221,3,1,9,15
 byte 13,1,9,0
 byte 1,3,2,250,3,1,9,15
 byte 13,2,8,0,9,0
 byte 1,6,0,112,1,4,8,15,2,56,3,2,9,15
 byte 13,1,9,0
 byte 1,3,2,125,3,2,9,15
 byte 13,2,8,0,9,0
 byte 1,6,0,246,1,2,8,15,2,56,3,2,9,15
 byte 14,1,9,0
 byte 1,3,2,250,3,1,9,15
 byte 13,2,8,0,9,0
 byte 1,6,0,151,1,5,8,15,2,221,3,1,9,15
 byte 13,1,9,0
 byte 1,3,2,169,3,1,9,15
 byte 14,2,8,0,9,0
 byte 1,6,0,203,1,2,8,15,2,123,3,1,9,15
 byte 13,1,9,0
 byte 1,3,2,101,3,1,9,15
 byte 13,2,8,0,9,0
 byte 1,6,0,251,1,4,8,15,2,62,3,1,9,15
 byte 13,1,9,0
 byte 1,3,2,101,3,1,9,15
 byte 13,2,8,0,9,0
 byte 1,6,0,83,1,3,8,15,2,123,3,1,9,15
 byte 14,1,9,0
 byte 1,3,2,169,3,1,9,15
 byte 13,2,8,0,9,0
 byte 1,6,0,187,1,3,8,15,2,221,3,1,9,15
 byte 28,2,8,0,9,0
 byte 1,6,0,244,1,3,8,15,2,221,3,1,9,15
 byte 13,1,9,0
 byte 1,3,2,250,3,1,9,15
 byte 13,2,8,0,9,0
 byte 1,6,0,112,1,4,8,15,2,56,3,2,9,15
 byte 13,1,9,0
 byte 1,3,2,125,3,2,9,15
 byte 13,2,8,0,9,0
 byte 1,6,0,246,1,2,8,15,2,56,3,2,9,15
 byte 14,1,9,0
 byte 1,3,2,125,3,2,9,15
 byte 13,2,8,0,9,0
 byte 1,6,0,236,1,5,8,15,2,89,3,2,9,15
 byte 14,1,9,0
 byte 1,3,2,250,3,1,9,15
 byte 13,2,8,0,9,0
 byte 1,6,0,246,1,2,8,15,2,123,3,1,9,15
 byte 14,1,9,0
 byte 1,3,2,169,3,1,9,15
 byte 13,2,8,0,9,0
 byte 1,6,0,151,1,5,8,15,2,221,3,1,9,15
 byte 14,1,9,0
 byte 1,3,2,250,3,1,9,15
 byte 14,1,8,0
 byte 1,7,0,56,1,2,8,15,9,0,2,236,3,5,9,15
 byte 14,1,8,0
 byte 1,3,0,125,1,2,8,15
 byte 14,1,8,0
 byte 1,7,0,56,1,2,8,15,9,0,2,112,3,4,9,15
 byte 30,2,8,0,9,0
 ;-- unsnip
 byte 1,3,8,0,9,0,10,0
 byte 0,0
;=== end of song

MLEND

 end

No comments:

Post a Comment