; Small C HuC6280 (v0.2, 08/Nov/97)
;
; Taken to HuC (22/Feb/00)
;
;
; This file generated by HuC (v3.21, 2005/04/09, Denki release)
; on Fri Sep 04 01:27:38 2020
;

HUC	= 1

	.include "startup.asm"
	.data
	.bank DATA_BANK

	.code

  .data
  .bank CONST_BANK
  .org $4400
 _sound_dat:
	dw	song_000_track_table	 ; 0
	dw	song_000_loop_table	 ; 1
	dw	softenve_table		 ; 2
	dw	softenve_lp_table	 ; 3
	dw	pitchenve_table		 ; 4
	dw	pitchenve_lp_table ; 5
	dw	lfo_data		       ; 6
	dw	song_000_bank_table ; 7
	dw	song_000_loop_bank  ; 8
	dw	arpeggio_table		 ; 9
	dw	arpeggio_lp_table	 ; 10
  dw	dutyenve_table		 ; 11
  dw	dutyenve_lp_table	 ; 12
  dw	multienv_table		 ; 13
  dw	multienv_lp_table  ; 14
  dw	song_addr_table  ; 15
_pcewav:
	dw	pce_data_table
_xpcmdata
	dw	xpcm_data
	.bank CONST_BANK
	.include "effect.h"
;------------------------------
; PCM timer routines
	.code
;	.bank DATA_BANK
	.bank START_BANK
; タイマー割り込みエントリーポイント
;  .proc _timer_pcm
_timer_pcm:
  sei
	pha
	phx
	phy
; タイマーリセット
  	sta   irq_status
; C言語用一時変数などの保存
	__ldw <__temp
	__stw <__tmr_temp
	__ldw <__ptr
	__stw <__tmr_ptr
	__ldw <_bx
	__stw <__tmr_bx
	tma	#page(_pcm_intr)
	pha
	map	_pcm_intr
	jsr	_pcm_intr
	pla
	tam	#page(_pcm_intr)
; 一時変数などの復元
	__ldw <__tmr_temp
	__stw <__temp
	__ldw <__tmr_ptr
	__stw <__ptr
	__ldw <__tmr_bx
	__stw <_bx
	ply
	plx
	pla
	cli
	rti
;  .endp
;  .proc _vsync_drv
; VSYNC割り込み
_vsync_drv:
	__ldw <__temp
	__stw <__vs_temp
	__ldw <__ptr
	__stw <__vs_ptr
	__ldw <_bx
	__stw <__vs_bx
	tma	#page(_drv_intr)
	pha
	map	_drv_intr
	jsr	_drv_intr
	pla
	tam	#page(_drv_intr)
	__ldw <__vs_temp
	__stw <__temp
	__ldw <__vs_ptr
	__stw <__ptr
	__ldw <__vs_bx
	__stw <_bx
	rts
;  .endp
           .zp
__tmr_temp   .ds 2
__tmr_ptr   .ds 2
__tmr_bx    .ds 2
__vs_temp   .ds 2
__vs_ptr   .ds 2
__vs_bx    .ds 2
	; restore segment and bank
	.code
	.bank DATA_BANK
;	.bank START_BANK
	.proc _pcm_play_data
	__pushw
	__addmi	-2,__stack
	__ldwi	LL2
	__pushw
	__ldw_s	10
	  jmp	___case
LL4:

	__stwi_s	1,0
	__lbra	LL3
LL5:

LL6:

	__stwi_s	0,0
	__lbra	LL3
	__lbra	LL3
LL2:

	.dw	4,LL4,5,LL5
	.dw	LL6,0
LL3:

	__ldw_s	0
	__aslw
	__addwi	_xpcm_addr
	__pushw
	__ldw_s	8
	__stwps
	__ldw_s	0
	__aslw
	__addwi	_xpcm_len
	__pushw
	__ldw_s	6
	__stwps
	__ldwi	_xpcm_bank
	__addw_s	0
	__pushw
	__ldb_s	4
	__stbps
	__ldwi	_xpcm_shift
	__addw_s	0
	__pushw
	__ldwi	0
	__stbps
	__ldwi	_xpcm_nextbuf
	__addw_s	0
	__pushw
	__ldwi	0
	__stbps
	__ldw_s	8
	  call	_pcm_on
LL1:

	__addmi	10,__stack
	  rts
	.endp

	.proc _pcm_on
	__pushw
	__ldb	_xpcm_play_flags
	__notw
	__tstw
	__lbeq	LL8
	  call	_ena_irq_tmr
LL8:

	__ldb_s	0
	__stw	<__temp
	__ldwi	5
	  jsr	eqzp
	__lbeq	LL9
	__ldb	_xpcm_play_flags
	__orwi	1
	  stx	_xpcm_play_flags
LL9:

	__ldb_s	0
	__stw	<__temp
	__ldwi	4
	  jsr	eqzp
	__lbeq	LL10
	__ldb	_xpcm_play_flags
	__orwi	2
	  stx	_xpcm_play_flags
LL10:

LL7:

	__addmi	2,__stack
	  rts
	.endp

	.proc _pcm_off
	__pushw
	__ldb_s	0
	__stw	<__temp
	__ldwi	5
	  jsr	eqzp
	__lbeq	LL12
	__ldb	_xpcm_play_flags
	__andwi	254
	  stx	_xpcm_play_flags
LL12:

	__ldb_s	0
	__stw	<__temp
	__ldwi	4
	  jsr	eqzp
	__lbeq	LL13
	__ldb	_xpcm_play_flags
	__andwi	253
	  stx	_xpcm_play_flags
LL13:

	__ldb	_xpcm_play_flags
	__notw
	__tstw
	__lbeq	LL14
	  call	_dis_irq_tmr
LL14:

LL11:

	__addmi	2,__stack
	  rts
	.endp

	.proc _pcm_stop
	__pushw
	__ldb_s	0
	  call	_pcm_off
LL15:

	__addmi	2,__stack
	  rts
	.endp

	.proc _pcm_check
	__pushw
	__ldb_s	0
	__stw	<__temp
	__ldwi	5
	  jsr	eqzp
	__lbeq	LL17
	__ldb	_xpcm_flags
	__andwi	1
	__lbra	LL16
LL17:

	__ldb_s	0
	__stw	<__temp
	__ldwi	4
	  jsr	eqzp
	__lbeq	LL18
	__ldb	_xpcm_flags
	__andwi	2
	__lbra	LL16
LL18:

	__ldwi	0
	__lbra	LL16
LL16:

	__addmi	2,__stack
	  rts
	.endp

	.proc _pcm_switch
	__pushw
	__ldb_s	0
	__tstw
	__lbeq	LL20
	__ldwi	2048
	__stw	_bx
	__ldb_s	2
	  call	_poke.2
	__ldwi	2052
	__stw	_bx
	__ldwi	223
	  call	_poke.2
	__ldwi	2048
	__stw	_bx
	__ldb	_reg_ch
	  call	_poke.2
	__ldb_s	2
	__stw	<__temp
	__ldwi	5
	  jsr	eqzp
	__lbeq	LL21
	__ldb	_xpcm_flags
	__orwi	1
	  stx	_xpcm_flags
LL21:

	__ldb_s	2
	__stw	<__temp
	__ldwi	4
	  jsr	eqzp
	__lbeq	LL22
	__ldb	_xpcm_flags
	__orwi	2
	  stx	_xpcm_flags
LL22:

	__lbra	LL23
LL20:

	__ldb	_reg_ch
	  call	_pcm_check
	__tstw
	__lbeq	LL24
	__ldb	_reg_ch
	  call	_pcm_off
LL24:

	__ldb_s	2
	__stw	<__temp
	__ldwi	5
	  jsr	eqzp
	__lbeq	LL25
	__ldb	_xpcm_flags
	__andwi	254
	  stx	_xpcm_flags
LL25:

	__ldb_s	2
	__stw	<__temp
	__ldwi	4
	  jsr	eqzp
	__lbeq	LL26
	__ldb	_xpcm_flags
	__andwi	253
	  stx	_xpcm_flags
LL26:

LL23:

LL19:

	__addmi	4,__stack
	  rts
	.endp

	REG_SEL: .equ $0800
	REG_DAC: .equ $0806
	; _xpeeki_b <addr>
	;
	; in  : addr = address
	; out : reg.a
	.macro _xpeeki_b
		__ldwi	\1
		__stw	<__ptr
		lda		[__ptr]
	.endm
	; _xpeek_b <addr>
	;
	; in  : addr = address
	; out : reg.a
	.macro _xpeek_b
		__ldw	\1
		__stw	<__ptr
		lda		[__ptr]
	.endm
	; _xpokei_b <addr>
	;
	; in : addr = address
	;    : reg.a = value
	.macro _xpokei_b
		pha
		__ldwi	\1
		__stw	<__ptr
		pla
		sta		[__ptr]
	.endm
	; _xpoke_b <addr>
	;
	; in : addr = address
	;    : reg.a = value
	.macro _xpoke_b
		pha
		__ldw	\1
		__stw	<__ptr
		pla
		sta		[__ptr]
	.endm
	;_pcm_proc < ch , index >
	;
	; in : ch = 物理チャンネル
	;    : index = 変数の相対位置
	.macro _pcm_proc
		; チャンネル選択
		lda		#\1
		_xpokei_b REG_SEL
		; バンク切り替え
		tma		#3
		sta		_xpcm_bank_save
		lda		_xpcm_bank + \2
		tam		#3
		; 4bitシフト
		lda		_xpcm_shift + \2
		beq		.high_\2
	.low_\2:
		_xpeek_b _xpcm_addr + (\2 * 2)
		asl		A
		and		#$1e
		pha
		__ldw   _xpcm_addr + (\2 * 2)
		__addwi 1
		__stw	_xpcm_addr + (\2 * 2)
		__ldw   _xpcm_len + (\2 * 2)
		__subwi 1
		__stw	_xpcm_len + (\2 * 2)
		pla
		jmp		.store_\2
	.high_\2:
		_xpeek_b _xpcm_addr + (\2 * 2)
		lsr		A
		lsr		A
		lsr		A
		and		#$1e
	.store_\2:
		; DACへ出力
		_xpokei_b REG_DAC
		; バンク切り替えを戻す
		lda		_xpcm_bank_save
		tam		#3
		; シフトフラグを反転
		lda		_xpcm_shift + \2
		eor		#1
		sta		_xpcm_shift + \2
		__ldw   _xpcm_len + (\2 * 2)
		stx		<__temp
		ora		<__temp
		bne		.end_\2
		; PCMをオフにする
		__ldwi	\1
		call	_pcm_off
	.end_\2:
	.endm
	.if 0
	;_pcm_proc_5bit < ch , index >
	;
	; in : ch = 物理チャンネル
	;    : index = 変数の相対位置
	.macro _pcm_proc_5bit
		; チャンネル選択
		lda		#\1
		_xpokei_b REG_SEL
		; バンク切り替え
		tma		#3
		sta		_xpcm_bank_save
		lda		_xpcm_bank + \2
		tam		#3
		; バッファクリア
		lda   #0
		sta		_xpcm_buf + \2
		; シフト数を設定
		lda		#5
	; ループ
	.shift_lp_\2:
		pha
		; バッファのビット数を読みだし
		lda		_xpcm_shift + \2
		; 0なら読み出し
		bne		.shift_bit_\2
		; バッファに読み出し
		_xpeek_b _xpcm_addr + (\2 * 2)
		sta		_xpcm_nextbuf + \2
		; アドレスポインタ加算
		__ldw   _xpcm_addr + (\2 * 2)
		__addwi 1
		__stw	_xpcm_addr + (\2 * 2)
		; 残りサイズ減算
		__ldw   _xpcm_len + (\2 * 2)
		__subwi 1
		__stw	_xpcm_len + (\2 * 2)
		; ビット数を補充
		lda		#8
		sta		_xpcm_shift + \2
	; ビットシフトを行う
	.shift_bit_\2:
		asl		_xpcm_nextbuf + \2
		rol		_xpcm_buf + \2
		; バッファのビット数を減算
		dec		_xpcm_shift + \2
		; シフト数を減算
		pla
		dec		A
		bne		.shift_lp_\2
	; 出力
	.store_\2:
		; バッファ読み出し
		lda		_xpcm_buf + \2
		; DACへ出力
		_xpokei_b REG_DAC
		; バンク切り替えを戻す
		lda		_xpcm_bank_save
		tam		#3
		; 残りサイズの確認
		__ldw   _xpcm_len + (\2 * 2)
		stx		<__temp
		ora		<__temp
		; まだサイズがあるのでスキップする
		bne		.skip_pcmoff_\2
		; PCMをオフにする
		__ldwi	\1
		call	_pcm_off
	;　終了
	.skip_pcmoff_\2:
	.endm
	.endif
	.if (USE_5BITPCM)
	;_pcm_proc_8bit < ch , index >
	;
	; in : ch = 物理チャンネル
	;    : index = メモリ相対位置
	.macro _pcm_proc_8bit
		; チャンネル選択
		lda		#\1
		_xpokei_b REG_SEL
		; バンク切り替え
		tma		#3
		sta		_xpcm_bank_save
		lda		_xpcm_bank + \2
		tam		#3
		; バッファに読み出し
		_xpeek_b _xpcm_addr + (\2 * 2)
		sta		_xpcm_buf + \2
		; アドレスポインタ加算
		__ldw   _xpcm_addr + (\2 * 2)
		__addwi 1
		__stw	_xpcm_addr + (\2 * 2)
		; 残りサイズ減算
		__ldw   _xpcm_len + (\2 * 2)
		__subwi 1
		__stw	_xpcm_len + (\2 * 2)
	; 出力
	.store_\2:
		; バッファ読み出し
		lda		_xpcm_buf + \2
		; DACへ出力
		_xpokei_b REG_DAC
		; バンク切り替えを戻す
		lda		_xpcm_bank_save
		tam		#3
		; 残りサイズの確認
		__ldw   _xpcm_len + (\2 * 2)
		stx		<__temp
		ora		<__temp
		; まだサイズがあるのでスキップする
		bne		.skip_pcmoff_\2
		; PCMをオフにする
		__ldwi	\1
		call	_pcm_off
	;　終了
	.skip_pcmoff_\2:
	.endm
	.endif
	;
	; pcm_intr
	;
	.proc _pcm_intr
		; 再生フラグチェックで各PCM再生
		lda		_xpcm_play_flags
		and		#$01
		beq		.end_ch1
		jmp		.ch1_proc
	.end_ch1:
		lda		_xpcm_play_flags
		and		#$02
		beq		.end_ch2
		jmp		.ch2_proc
	.end_ch2:
		; チャンネルを戻して終了
		lda		_reg_ch
		_xpokei_b REG_SEL
		rts
	; PCM出力
	.if (USE_5BITPCM)
	; 5ビット
	.ch1_proc:
		_pcm_proc_8bit 5, 0
		jmp		.end_ch1
	.ch2_proc:
		_pcm_proc_8bit 4, 1
		jmp		.end_ch2
	.else
	; 4ビット
	.ch1_proc:
		_pcm_proc 5, 0
		jmp		.end_ch1
	.ch2_proc:
		_pcm_proc 4, 1
		jmp		.end_ch2
	.endif
	.endp
	; 割り込み有効
    .proc _ena_irq_tmr
	smb   #2,<irq_m
	rts
	.endp
	; 割り込み無効
    .proc _dis_irq_tmr
	rmb   #2,<irq_m
	rts
	.endp
	; 割り込みタイマー設定
	.proc _set_pcmintr
	; タイマー割り込みを禁止にする
	rmb   #2, <irq_m
	stz   irq_status
	stw   #_timer_pcm, timer_jmp
	; V = 1
	; (7.159090 / 1024) / V = 6991.29Hz
	lda   #0
	sta   timer_cnt
	lda   #$1
	sta   timer_ctrl
	cli
	rts
	.endp
	; PCMバンク
	.proc _chg_pcmbank
	txa
	tam #3
	rts
	.endp
	.proc _init_pcmdrv
	__addmi	-2,__stack
	__stwi_s	0,0
LL28:

	__ldw_s	0
	__stw	<__temp
	__ldwi	2
	  jsr	ltzp
	__lbne	LL30
	__lbra	LL31
LL29:

	__ldw_s	0
	__incw_s	0
	__lbra	LL28
LL30:

	__ldw_s	0
	__aslw
	__addwi	_xpcm_addr
	__pushw
	__ldw_s	2
	__aslw
	__addwi	_xpcm_len
	__pushw
	__ldwi	0
	__stwps
	__stwps
	__ldwi	_xpcm_shift
	__addw_s	0
	__pushw
	__ldwi	_xpcm_bank
	__addw_s	2
	__pushw
	__ldwi	0
	__stbps
	__stbps
	__lbra	LL29
LL31:

	__ldwi	0
	  stx	_xpcm_play_flags
	__ldwi	0
	  stx	_xpcm_flags
	  call	_set_pcmintr
LL27:

	__addmi	2,__stack
	  rts
	.endp

; CBANKを切り替え
	.proc _chg_cbank
	txa
	tam #2
	rts
	.endp
; 現在のCBANKを取得
	.proc _now_cbank
	tma #2
	tax
	cla
	rts
	.endp
; デフォルトCBANKの設定
	.proc _def_cbank
	lda #CONST_BANK+_bank_base
	tam #2
	rts
	.endp
; VSYNC割り込みフック設定
	.proc _drv_setintr
  sei
	stw   #_vsync_drv, vsync_hook
	smb   #4,<irq_m		; enable new code
	smb   #5,<irq_m		; disable system card code
	cli
	rts
	.endp
; 割り込み禁止
  .proc _disable_irq
	sei
	rts
	.endp
; 割り込み許可
	.proc _enable_irq
	cli
	rts
	.endp
; 曲数
	.proc _get_songmax
	lda #0
	ldx #TOTAL_SONGS
	rts
	.endp
	.proc _mixvol
	__pushw
	__ldb	_reg_ch
	  call	_pcm_check
	__tstw
	__lbeq	LL33
	__ldwi	2052
	__stw	_bx
	__ldwi	192
	__pushw
	__ldb_s	2
	__orws
	  call	_poke.2
	__lbra	LL32
LL33:

	__ldb_s	0
	__tstw
	__lbeq	LL34
	__ldb_s	0
	__orwi	128
	__stb_s	0
LL34:

	__ldwi	2052
	__stw	_bx
	__ldb_s	0
	  call	_poke.2
	__ldwi	_ch_lastvol
	__pushw
	__ldb	_reg_ch
	__addws
	__pushw
	__ldb_s	2
	__stbps
LL32:

	__addmi	2,__stack
	  rts
	.endp

	.proc _snd_saw
	__pushw
	__addmi	-1,__stack
	__ldwi	2052
	__stw	_bx
	__ldwi	0
	  call	_poke.2
	__stbi_s	0,0
LL36:

	__ldb_s	0
	__stw	<__temp
	__ldwi	32
	  jsr	ltzp
	__lbne	LL38
	__lbra	LL39
LL37:

	__ldb_s	0
	__addwi	1
	__stb_s	0
	__subwi	1
	__lbra	LL36
LL38:

	__ldwi	2054
	__stw	_bx
	__ldb_s	0
	  call	_poke.2
	__lbra	LL37
LL39:

	__ldwi	2053
	__stw	_bx
	__ldwi	_panpod
	__addw_s	1
	__ldb_p
	  call	_poke.2
	__ldwi	2052
	__stw	_bx
	__ldwi	128
	  call	_poke.2
LL35:

	__addmi	3,__stack
	  rts
	.endp

	.proc _snd_chg
	__pushw
	__addmi	-4,__stack
	__ldwi	_ch_lasttone
	__pushw
	__ldb	_reg_ch
	__addws
	__ldb_p
	__pushw
	__ldw_s	6
	  jsr	eq
	__lbeq	LL41
	__lbra	LL40
LL41:

	__ldwi	_ch_lasttone
	__pushw
	__ldb	_reg_ch
	__addws
	__pushw
	__ldw_s	6
	__stbps
	__ldwi	_pcewav
	__stw	__ptr
	__ldwp	__ptr
	__pushw
	__ldw_s	6
	__pushw
	__ldwi	1
	  jsr	asl
	__addws
	__stw	__ptr
	__ldwp	__ptr
	__stw_s	0
	__ldwi	2052
	__stw	_bx
	__ldwi	0
	  call	_poke.2
	__stwi_s	0,2
LL42:

	__ldw_s	2
	__stw	<__temp
	__ldwi	32
	  jsr	ltzp
	__lbne	LL44
	__lbra	LL45
LL43:

	__ldw_s	2
	__incw_s	2
	__lbra	LL42
LL44:

	__ldwi	2054
	__stw	_bx
	__ldw_s	0
	__ldb_p
	  call	_poke.2
	__ldw_s	0
	__incw_s	0
	__lbra	LL43
LL45:

	__ldwi	_ch_lastvol
	__pushw
	__ldb	_reg_ch
	__addws
	__ldb_p
	__stw_s	2
	__ldwi	2052
	__stw	_bx
	__ldw_s	2
	  call	_poke.2
LL40:

	__addmi	6,__stack
	  rts
	.endp

	.proc _drv_init_song
	__pushw
	__addmi	-6,__stack
	; drv_init_song()
	  call	_disable_irq
	__pea_s	6
	__ldb_s	8
	__pushw
	  call	_get_songmax
	  jsr	smod
	__stbps
	__ldwi	_sound_dat
	__addwi	30
	__stw	__ptr
	__ldwp	__ptr
	__stw	_song_addr_table
	__ldw	_song_addr_table
	__stw	__ptr
	__ldwp	__ptr
	__stw	_song_addr_base
	__ldw	_song_addr_table
	__pushw
	__ldb_s	8
	__pushw
	__ldwi	1
	  jsr	asl
	__addws
	__stw	__ptr
	__ldwp	__ptr
	__subw	_song_addr_base
	__stw_s	0
	__ldwi	_sound_dat
	__stw	__ptr
	__ldwp	__ptr
	__addw_s	0
	__stw	_song_track_table
	__ldwi	_sound_dat
	__addwi	14
	__stw	__ptr
	__ldwp	__ptr
	__addw_s	0
	__stw	_song_bank_table
	__ldwi	_sound_dat
	__addwi	2
	__stw	__ptr
	__ldwp	__ptr
	__addw_s	0
	__stw	_song_loop_table
	__ldwi	_sound_dat
	__addwi	16
	__stw	__ptr
	__ldwp	__ptr
	__addw_s	0
	__stw	_song_loop_bank
	  call	_now_cbank
	  stx	_ch_topbank
	__ldwi	4660
	__stw	_seq_ptr
	__stwi_s	0,4
LL47:

	__ldw_s	4
	__stw	<__temp
	__ldwi	6
	  jsr	ltzp
	__lbne	LL49
	__lbra	LL50
LL48:

	__ldw_s	4
	__incw_s	4
	__lbra	LL47
LL49:

	__ldw_s	4
	  stx	_reg_ch
	__ldwi	2048
	__stw	_bx
	__ldw_s	4
	  call	_poke.2
	__ldwi	_tone_sw
	__addw_s	4
	__pushw
	__ldwi	255
	__stbps
	__ldwi	_lfo_sw
	__addw_s	4
	__pushw
	__ldwi	255
	__stbps
	__ldwi	_note_sw
	__addw_s	4
	__pushw
	__ldwi	255
	__stbps
	__ldwi	_panpod
	__addw_s	4
	__pushw
	__ldwi	255
	__stbps
	__ldwi	_pitch_sw
	__addw_s	4
	__pushw
	__ldwi	255
	__stbps
	__ldwi	_multienv_sw
	__addw_s	4
	__pushw
	__ldwi	255
	__stbps
	__ldwi	_ch_lasttone
	__addw_s	4
	__pushw
	__ldwi	255
	__stbps
	__ldwi	_loop_cnt
	__addw_s	4
	__pushw
	__ldwi	0
	__stbps
	__ldwi	_detune
	__addw_s	4
	__pushw
	__ldwi	0
	__stbps
	__ldw_s	4
	__aslw
	__addwi	_tone_envadr
	__pushw
	__ldwi	0
	__stwps
	__ldw_s	4
	__aslw
	__addwi	_note_envadr
	__pushw
	__ldwi	0
	__stwps
	__ldw_s	4
	__aslw
	__addwi	_pitch_envadr
	__pushw
	__ldwi	0
	__stwps
	__ldw_s	4
	__aslw
	__addwi	_volume_envadr
	__pushw
	__ldwi	0
	__stwps
	__ldw_s	4
	__aslw
	__addwi	_multi_envadr
	__pushw
	__ldwi	0
	__stwps
	__ldw_s	4
	__aslw
	__addwi	_seq_pos
	__pushw
	__ldw	_song_track_table
	__pushw
	__ldw_s	8
	__pushw
	__ldwi	1
	  jsr	asl
	__addws
	__stw	__ptr
	__ldwp	__ptr
	__stwps
	__ldwi	_ch_bank
	__addw_s	4
	__pushw
	__ldw	_song_bank_table
	__addw_s	6
	__stw	__ptr
	__ldwp	__ptr
	__stbps
	__ldw_s	4
	  call	_snd_saw
	__ldwi	_ch_cnt
	__addw_s	4
	__pushw
	__ldwi	0
	__stbps
	__ldwi	_ch_efx
	__addw_s	4
	__pushw
	__ldwi	0
	__stbps
	__ldwi	_ch_rst
	__addw_s	4
	__pushw
	__ldwi	0
	__stbps
	__ldwi	_ch_lastvol
	__addw_s	4
	__pushw
	__ldwi	0
	__stbps
	__lbra	LL48
LL50:

	__stwi_s	0,4
LL51:

	__ldw_s	4
	__stw	<__temp
	__ldwi	2
	  jsr	ltzp
	__lbne	LL53
	__lbra	LL54
LL52:

	__ldw_s	4
	__incw_s	4
	__lbra	LL51
LL53:

	__ldwi	_noise_sw
	__addw_s	4
	__pushw
	__ldwi	0
	__stbps
	__ldwi	_noise_freq
	__addw_s	4
	__pushw
	__ldwi	0
	__stbps
	__lbra	LL52
LL54:

	__ldwi	2049
	__stw	_bx
	__ldwi	255
	  call	_poke.2
	  call	_enable_irq
LL46:

	__addmi	8,__stack
	  rts
	.endp

	.proc _drv_init
	__pushw
; drv_init()
	__ldb_s	0
	  call	_drv_init_song
	  call	_init_pcmdrv
	  call	_drv_setintr
LL55:

	__addmi	2,__stack
	  rts
	.endp

	.proc _set_vol
	__pushw
	__ldw_s	0
	__andwi	128
	__tstw
	__lbeq	LL57
	__ldw_s	2
	__aslw
	__addwi	_volume_envadr
	__pushw
	__ldwi	0
	__stwps
	__ldw_s	0
	__andwi	31
	  call	_mixvol
	__lbra	LL58
LL57:

	__ldw_s	0
	__andwi	127
	__stw_s	0
	__ldb	_ch_topbank
	  call	_chg_cbank
	__ldw_s	2
	__aslw
	__addwi	_volume_envadr
	__pushw
	__ldwi	_sound_dat
	__addwi	4
	__stw	__ptr
	__ldwp	__ptr
	__pushw
	__ldw_s	4
	__pushw
	__ldwi	1
	  jsr	asl
	__addws
	__stw	__ptr
	__ldwp	__ptr
	__stwps
	__ldb	_ch_nowbank
	  call	_chg_cbank
LL58:

LL56:

	__addmi	4,__stack
	  rts
	.endp

	.proc _set_note
	__pushw
	__addmi	-1,__stack
	__ldb_s	1
	__addwi	3
	__andwi	15
	__stb_s	0
	__ldwi	_seq_freq
	__pushw
	__ldb_s	5
	__aslw
	__addws
	__pushw
	__ldwi	_freq
	__pushw
	__ldb_s	4
	__andwi	15
	__aslw
	__addws
	__stw	__ptr
	__ldwp	__ptr
	__pushw
	__ldb_s	5
	__pushw
	__ldwi	4
	  jsr	asr
	  jsr	asr
	__stwps
LL59:

	__addmi	5,__stack
	  rts
	.endp

	.proc _do_seq
	__pushw
	__addmi	-10,__stack
; do_seq()
	__ldb	_ch_nowbank
	  call	_chg_cbank
LL61:

	__ldwi	1
	__tstw
	__lbeq	LL62
;
; start command loop (do_seq)
;
	__ldwi	_ch_cnt
	__addw_s	10
	__ldb_p
	__tstw
	__lbeq	LL63
	__lbra	LL60
LL63:

	__ldw	_seq_ptr
	__ldb_p
	__stw_s	8
	__ldwi	_ch_lastcmd
	__addw_s	10
	__pushw
	__ldw_s	10
	__stbps
;
; check key on
;
	__ldw_s	8
	__stw	<__temp
	__ldwi	144
	  jsr	ltzp
	__lbeq	LL64
	__lbra	LL62
LL64:

	__ldw_s	8
	__stw	<__temp
	__ldwi	230
	  jsr	gezp
	__lbeq	LL65
	__ldwi	_seqproc
	__pushw
	__ldw_s	10
	__subwi	230
	__aslw
	__addws
	__stw	__ptr
	__ldwp	__ptr
	__stw_s	0
;
; jump to command routine
; sax
  pha
  sax
  pha
  rts
; $FF : トラック終了(現在未使用)
SEQ_FF:
	__ldb	_ch_topbank
	  call	_chg_cbank
	__ldw	_song_loop_table
	__pushw
	__ldw_s	12
	__pushw
	__ldwi	1
	  jsr	asl
	__addws
	__stw	__ptr
	__ldwp	__ptr
	__stw	_seq_ptr
	__ldw	_song_loop_bank
	__addw_s	10
	__stw	__ptr
	__ldwp	__ptr
	  stx	_ch_nowbank
	__ldb	_ch_nowbank
	  call	_chg_cbank
		jmp endpoint
; $FE : 音色設定
SEQ_FE:
	incw	_seq_ptr
	__ldw	_seq_ptr
	__ldb_p
	__stw_s	4
	__ldw	_seq_ptr
	incw	_seq_ptr
	__ldw_s	4
	__stw	<__temp
	__ldwi	128
	  jsr	gezp
	__lbeq	LL66
	__stwi_s	255,4
LL66:

	__ldwi	_tone_sw
	__addw_s	10
	__pushw
	__ldw_s	6
	__stbps
	__ldw_s	10
	  call	_reset_te
	jmp endpoint
; $F9: ハードウェアスイープ(未使用)
SEQ_F9:
	__ldw	_seq_ptr
	__addwi	2
	__stw	_seq_ptr
	jmp endpoint
; $FD: 音量設定
SEQ_FD:
	incw	_seq_ptr
	__ldw	_seq_ptr
	__ldb_p
	__stw_s	4
	__ldw	_seq_ptr
	incw	_seq_ptr
	__ldwi	_ch_vol
	__addw_s	10
	__pushw
	__ldw_s	6
	__stbps
	__ldw_s	10
	__pushw
	__ldw_s	6
	  call	_set_vol
	jmp endpoint
; $FC: 休符(REST)
SEQ_FC:
	incw	_seq_ptr
	__ldw	_seq_ptr
	__ldb_p
	__stw_s	4
	__ldw	_seq_ptr
	incw	_seq_ptr
	__ldwi	0
	  call	_mixvol
	__ldb	_reg_ch
	  call	_pcm_check
	__tstw
	__lbeq	LL67
	__ldb	_reg_ch
	  call	_pcm_stop
LL67:

	__ldw_s	10
	__aslw
	__addwi	_volume_envadr
	__pushw
	__ldwi	0
	__stwps
	__ldwi	_ch_cnt
	__addw_s	10
	__pushw
	__ldw_s	6
	__stbps
	__lbra	LL60
	jmp endpoint
; $FB: LFOスイッチ　引数:1
SEQ_FB:
	incw	_seq_ptr
	__ldw	_seq_ptr
	__ldb_p
	__stw_s	4
	__ldw	_seq_ptr
	incw	_seq_ptr
	__ldwi	_lfo_sw
	__addw_s	10
	__pushw
	__ldw_s	6
	__stbps
	__ldw_s	10
	  call	_reset_lfo
	jmp endpoint
; $FA: デチューン設定 引数:1
SEQ_FA:
	incw	_seq_ptr
	__ldw	_seq_ptr
	__ldb_p
	__stw_s	4
	__ldw	_seq_ptr
	incw	_seq_ptr
	__ldw_s	4
	__stw	<__temp
	__ldwi	255
	  jsr	eqzp
	__lbeq	LL68
	__ldwi	_detune
	__addw_s	10
	__pushw
	__ldwi	0
	__stbps
	__lbra	LL69
LL68:

	__ldwi	_detune
	__addw_s	10
	__pushw
	__ldw_s	6
	__stbps
LL69:

	jmp endpoint
; $F8: ピッチエンベロープ
SEQ_F8:
	incw	_seq_ptr
	__ldw	_seq_ptr
	__ldb_p
	__stw_s	4
	__ldw	_seq_ptr
	incw	_seq_ptr
	__ldwi	_pitch_sw
	__addw_s	10
	__pushw
	__ldw_s	6
	__stbps
	__ldw_s	10
	  call	_reset_pe
	jmp endpoint
; $F7: ノートエンベロープ
SEQ_F7:
	incw	_seq_ptr
	__ldw	_seq_ptr
	__ldb_p
	__stw_s	4
	__ldw	_seq_ptr
	incw	_seq_ptr
	__ldwi	_note_sw
	__addw_s	10
	__pushw
	__ldw_s	6
	__stbps
	__ldw_s	10
	  call	_reset_ne
	jmp endpoint
; $F4: ウェイト 引数:カウント
SEQ_F4:
	incw	_seq_ptr
	__ldw	_seq_ptr
	__ldb_p
	__stw_s	4
	__ldw	_seq_ptr
	incw	_seq_ptr
	__ldwi	_ch_cnt
	__addw_s	10
	__pushw
	__ldw_s	6
	__stbps
	jmp endpoint
; $F2: ノイズコマンド
SEQ_F2:
	incw	_seq_ptr
	__ldw	_seq_ptr
	__ldb_p
	__stw_s	4
	__ldw	_seq_ptr
	incw	_seq_ptr
	__ldw_s	10
	__stw	<__temp
	__ldwi	3
	  jsr	gtzp
	__lbeq	LL70
	__ldw_s	4
	__tstw
	__lbeq	LL71
	__ldwi	_noise_sw
	__pushw
	__ldw_s	12
	__subwi	4
	__addws
	__pushw
	__ldwi	1
	__stbps
	__lbra	LL72
LL71:

	__ldwi	_noise_sw
	__pushw
	__ldw_s	12
	__subwi	4
	__addws
	__pushw
	__ldwi	0
	__stbps
	__ldwi	2055
	__stw	_bx
	__ldwi	0
	  call	_poke.2
LL72:

LL70:

	jmp endpoint
; $F1: 波形変更コマンド
SEQ_F1:
	incw	_seq_ptr
	__ldw	_seq_ptr
	__ldb_p
	__stw_s	4
	__ldw	_seq_ptr
	incw	_seq_ptr
	__ldb	_ch_topbank
	  call	_chg_cbank
	__ldw_s	4
	  call	_snd_chg
	__ldb	_ch_nowbank
	  call	_chg_cbank
	__ldwi	_tone_sw
	__addw_s	10
	__pushw
	__ldwi	255
	__stbps
	jmp endpoint
; $F0: パンコマンド
SEQ_F0:
	incw	_seq_ptr
	__ldw	_seq_ptr
	__ldb_p
	__stw_s	4
	__ldw	_seq_ptr
	incw	_seq_ptr
	__ldwi	_panpod
	__addw_s	10
	__pushw
	__ldw_s	6
	__stbps
	__ldwi	2053
	__stw	_bx
	__ldw_s	4
	  call	_poke.2
	jmp endpoint
; $EF: XPCMスイッチ
SEQ_EF:
	incw	_seq_ptr
	__ldw	_seq_ptr
	__ldb_p
	__stw_s	4
	__ldw	_seq_ptr
	incw	_seq_ptr
	__ldw_s	10
	__pushw
	__ldw_s	6
	  call	_pcm_switch
	jmp endpoint
; $EE: バンク切り替え(ジャンプ) コマンド
SEQ_EE:
	incw	_seq_ptr
	__ldw	_seq_ptr
	__ldb_p
	__stw_s	4
	__ldw	_seq_ptr
	incw	_seq_ptr
	__ldw	_seq_ptr
	__ldb_p
	__pushw
	__ldw	_seq_ptr
	__addwi	1
	__ldb_p
	__pushw
	__ldwi	8
	  jsr	asl
	__orws
	__stw_s	2
	__stw	_seq_ptr
	__ldw_s	4
	  call	_chg_cbank
	__ldw_s	4
	  stx	_ch_nowbank
	jmp endpoint
; $ED: HWLFOモード(FMLFO)
SEQ_ED:
	incw	_seq_ptr
	__ldw	_seq_ptr
	__ldb_p
	__stw_s	4
	__ldw	_seq_ptr
	incw	_seq_ptr
	__ldwi	2057
	__stw	_bx
	__ldw_s	4
	  call	_poke.2
	jmp endpoint
; $EB: ポルタメント　引数:hi lo
SEQ_EB:
	incw	_seq_ptr
	__ldw	_seq_ptr
	__ldb_p
	__stw_s	4
	__ldwi	_ch_porthi
	__addw_s	10
	__pushw
	__ldw_s	6
	__stbps
	incw	_seq_ptr
	__ldw	_seq_ptr
	__ldb_p
	__stw_s	4
	__ldwi	_ch_portlo
	__addw_s	10
	__pushw
	__ldw_s	6
	__stbps
	__ldwi	_ch_portcnt
	__addw_s	10
	__pushw
	__ldwi	0
	__stbps
	__ldwi	_ch_efx
	__addw_s	10
	__pushw
	__ldb_p
	__orwi	4
	__stbps
	__ldw	_seq_ptr
	incw	_seq_ptr
	jmp endpoint
; $E9: スラー: 引数無し
SEQ_E9:
	__ldwi	_ch_efx
	__addw_s	10
	__pushw
	__ldb_p
	__orwi	1
	__stbps
	__ldw	_seq_ptr
	incw	_seq_ptr
	jmp endpoint
; $E8: マスターボリューム
SEQ_E8:
	incw	_seq_ptr
	__ldw	_seq_ptr
	__ldb_p
	__stw_s	4
	__ldwi	2049
	__stw	_bx
	__ldw_s	4
	  call	_poke.2
	__ldw	_seq_ptr
	incw	_seq_ptr
	jmp endpoint
; $E7: リセット無視 引数:フラグ
SEQ_E7:
	incw	_seq_ptr
	__ldw	_seq_ptr
	__ldb_p
	__stw_s	4
	__ldwi	_ch_rst
	__addw_s	10
	__pushw
	__ldw_s	6
	__stbps
	__ldw	_seq_ptr
	incw	_seq_ptr
	jmp endpoint
; $E6: パンエンベロープ 引数:フラグ
SEQ_E6:
	incw	_seq_ptr
	__ldw	_seq_ptr
	__ldb_p
	__stw_s	4
	__ldwi	_multienv_sw
	__addw_s	10
	__pushw
	__ldw_s	6
	__stbps
	__ldw_s	10
	  call	_reset_multienv
	__ldw	_seq_ptr
	incw	_seq_ptr
	jmp endpoint
; $EC: HW LFO周波数
SEQ_EC:
	incw	_seq_ptr
	__ldw	_seq_ptr
	__ldb_p
	__stw_s	4
	__ldw	_seq_ptr
	incw	_seq_ptr
	__ldwi	2056
	__stw	_bx
	__ldw_s	4
	  call	_poke.2
	jmp endpoint
; $EA: HW LFO モジュレータ周波数設定
SEQ_EA:
	incw	_seq_ptr
	__ldw	_seq_ptr
	__ldb_p
	__stw_s	4
	__ldw	_seq_ptr
	incw	_seq_ptr
	__stwi_s	1,0
	__ldw_s	0
	__pushw
	__ldw_s	6
	  call	_set_note
	__ldw_s	0
	  stx	_reg_ch
	__ldwi	2048
	__stw	_bx
	__ldw_s	0
	  call	_poke.2
	__ldwi	2051
	__stw	_bx
	__ldw_s	0
	__aslw
	__addwi	_seq_freq
	__stw	__ptr
	__ldwp	__ptr
	__pushw
	__ldwi	8
	  jsr	asr
	__andwi	15
	  call	_poke.2
	__ldwi	2050
	__stw	_bx
	__ldw_s	0
	__aslw
	__addwi	_seq_freq
	__stw	__ptr
	__ldwp	__ptr
	__andwi	255
	  call	_poke.2
	__ldwi	2052
	__stw	_bx
	__ldwi	128
	  call	_poke.2
	__ldw_s	10
	  stx	_reg_ch
	__ldwi	2048
	__stw	_bx
	__ldw_s	10
	  call	_poke.2
endpoint:
	__lbra	LL73
LL65:

	__ldw_s	8
	__stw	<__temp
	__ldwi	161
	  jsr	eqzp
	__lbeq	LL74
	__ldw	_seq_ptr
	incw	_seq_ptr
	__ldwi	_loop_cnt
	__addw_s	10
	__ldb_p
	__stw	<__temp
	__ldwi	1
	  jsr	eqzp
	__lbeq	LL75
	__ldwi	_loop_cnt
	__addw_s	10
	__pushw
	__ldwi	0
	__stbps
	__ldw	_seq_ptr
	__ldb_p
	__pushw
	__ldw	_seq_ptr
	__addwi	1
	__ldb_p
	__pushw
	__ldwi	8
	  jsr	asl
	__orws
	__stw_s	2
	__stw	_seq_ptr
	__lbra	LL76
LL75:

	__ldw	_seq_ptr
	__addwi	2
	__stw	_seq_ptr
LL76:

LL74:

	__ldw_s	8
	__stw	<__temp
	__ldwi	160
	  jsr	eqzp
	__lbeq	LL77
	incw	_seq_ptr
	__ldw	_seq_ptr
	__ldb_p
	__stw_s	4
	__ldw	_seq_ptr
	incw	_seq_ptr
	__ldw	_seq_ptr
	incw	_seq_ptr
	__ldb_p
	__stw_s	0
	__ldw	_seq_ptr
	__ldb_p
	__pushw
	__ldw	_seq_ptr
	__addwi	1
	__ldb_p
	__pushw
	__ldwi	8
	  jsr	asl
	__orws
	__stw_s	2
	__ldw	_seq_ptr
	__addwi	2
	__stw	_seq_ptr
	__ldwi	_loop_cnt
	__addw_s	10
	__ldb_p
	__stw	<__temp
	__ldwi	1
	  jsr	eqzp
	__lbeq	LL78
	__ldwi	_loop_cnt
	__addw_s	10
	__pushw
	__ldwi	0
	__stbps
	__lbra	LL79
LL78:

	__ldwi	_loop_cnt
	__addw_s	10
	__ldb_p
	__stw	<__temp
	__ldwi	1
	  jsr	gtzp
	__lbeq	LL80
	__ldwi	_loop_cnt
	__addw_s	10
	__pushw
	__ldb_p
	__subwi	1
	__stbps
	__addwi	1
	__lbra	LL81
LL80:

	__ldwi	_loop_cnt
	__addw_s	10
	__pushw
	__ldw_s	6
	__subwi	1
	__stbps
LL81:

	__ldw_s	2
	__stw	_seq_ptr
	__ldw_s	0
	  call	_chg_cbank
	__ldw_s	0
	  stx	_ch_nowbank
LL79:

LL77:

LL73:

	__lbra	LL61
LL62:

;
; start key-on process
;
	__ldwi	_note_data
	__addw_s	10
	__pushw
	__ldw_s	10
	__stbps
	incw	_seq_ptr
	__ldw	_seq_ptr
	__ldb_p
	__stw_s	4
	__ldw	_seq_ptr
	incw	_seq_ptr
	__ldwi	_ch_cnt
	__addw_s	10
	__pushw
	__ldw_s	6
	__stbps
	__ldw_s	10
	  call	_pcm_check
	__tstw
	__lbeq	LL82
	__ldb	_ch_topbank
	  call	_chg_cbank
	__ldw	_xpcmdata
	__pushw
	__ldw_s	10
	__pushw
	__ldwi	3
	  jsr	asl
	__addws
	__stw_s	0
	__ldw_s	10
	__pushw
	__ldw_s	2
	__stw	__ptr
	__ldwp	__ptr
	__pushw
	__ldw_s	4
	__addwi	2
	__stw	__ptr
	__ldwp	__ptr
	__pushw
	__ldw_s	6
	__addwi	4
	__stw	__ptr
	__ldwp	__ptr
	  call	_pcm_play_data
	__ldb	_ch_nowbank
	  call	_chg_cbank
	__ldw_s	10
	__pushw
	__ldwi	_ch_vol
	__addw_s	12
	__ldb_p
	  call	_set_vol
	__lbra	LL60
LL82:

	__ldwi	_ch_efx
	__addw_s	10
	__ldb_p
	__andwi	1
	__notw
	__tstw
	__lbeq	LL83
	__ldwi	_ch_rst
	__addw_s	10
	__ldb_p
	__andwi	1
	__notw
	__tstw
	__lbeq	LL84
	__ldw_s	10
	  call	_reset_te
LL84:

	__ldwi	_ch_rst
	__addw_s	10
	__ldb_p
	__andwi	2
	__notw
	__tstw
	__lbeq	LL85
	__ldw_s	10
	  call	_reset_ne
LL85:

	__ldwi	_ch_rst
	__addw_s	10
	__ldb_p
	__andwi	4
	__notw
	__tstw
	__lbeq	LL86
	__ldw_s	10
	  call	_reset_pe
LL86:

	__ldwi	_ch_rst
	__addw_s	10
	__ldb_p
	__andwi	8
	__notw
	__tstw
	__lbeq	LL87
	__ldw_s	10
	  call	_reset_lfo
LL87:

	__ldwi	_ch_rst
	__addw_s	10
	__ldb_p
	__andwi	16
	__notw
	__tstw
	__lbeq	LL88
	__ldw_s	10
	  call	_reset_multienv
LL88:

LL83:

	__ldb	_ch_topbank
	  call	_chg_cbank
	__ldw_s	10
	__stw	<__temp
	__ldwi	3
	  jsr	gtzp
	__lbeq	LL90
	__ldwi	_noise_sw
	__pushw
	__ldw_s	12
	__subwi	4
	__addws
	__ldb_p
LL90:

	__boolw
	__tstw
	__lbeq	LL89
	__ldwi	_noise_freq
	__pushw
	__ldw_s	12
	__subwi	4
	__addws
	__pushw
	__ldw_s	10
	__andwi	31
	__stbps
	__ldwi	2055
	__stw	_bx
	__ldwi	128
	__pushw
	__ldw_s	10
	__andwi	31
	__orws
	  call	_poke.2
	__ldw_s	10
	__pushw
	__ldwi	_ch_vol
	__addw_s	12
	__ldb_p
	  call	_set_vol
	__ldb	_ch_nowbank
	  call	_chg_cbank
	__lbra	LL60
LL89:

	__ldw_s	10
	__pushw
	__ldw_s	10
	  call	_set_note
	__ldwi	_detune
	__addw_s	10
	__ldb_p
	__tstw
	__lbeq	LL91
	__ldwi	_detune
	__addw_s	10
	__ldb_p
	__andwi	128
	__tstw
	__lbeq	LL92
	__ldw_s	10
	__aslw
	__addwi	_seq_freq
	__pushw
	__stw	__ptr
	__ldwp	__ptr
	__pushw
	__ldwi	_detune
	__addw_s	14
	__ldb_p
	__andwi	127
	__subws
	__stwps
	__lbra	LL93
LL92:

	__ldw_s	10
	__aslw
	__addwi	_seq_freq
	__pushw
	__stw	__ptr
	__ldwp	__ptr
	__pushw
	__ldwi	_detune
	__addw_s	14
	__ldb_p
	__andwi	127
	__addws
	__stwps
LL93:

LL91:

	__ldwi	2051
	__stw	_bx
	__ldw_s	10
	__aslw
	__addwi	_seq_freq
	__stw	__ptr
	__ldwp	__ptr
	__pushw
	__ldwi	8
	  jsr	asr
	__andwi	15
	  call	_poke.2
	__ldwi	2050
	__stw	_bx
	__ldw_s	10
	__aslw
	__addwi	_seq_freq
	__stw	__ptr
	__ldwp	__ptr
	__andwi	255
	  call	_poke.2
	__ldwi	_ch_efx
	__addw_s	10
	__ldb_p
	__andwi	1
	__notw
	__tstw
	__lbeq	LL94
	__ldw_s	10
	__pushw
	__ldwi	_ch_vol
	__addw_s	12
	__ldb_p
	  call	_set_vol
LL94:

	__ldwi	_ch_efx
	__addw_s	10
	__ldb_p
	__andwi	4
	__tstw
	__lbeq	LL95
	__ldwi	_ch_efx
	__addw_s	10
	__pushw
	__ldwi	_ch_efx
	__addw_s	12
	__ldb_p
	__pushw
	__ldwi	4
	__comw
	__andws
	__orwi	2
	__stbps
	__lbra	LL96
LL95:

	__ldwi	_ch_efx
	__addw_s	10
	__pushw
	__ldb_p
	__pushw
	__ldwi	6
	__comw
	__andws
	__stbps
LL96:

	__ldwi	_ch_efx
	__addw_s	10
	__pushw
	__ldb_p
	__pushw
	__ldwi	1
	__comw
	__andws
	__stbps
	__ldb	_ch_nowbank
	  call	_chg_cbank
LL60:

	__addmi	12,__stack
	  rts
	.endp

	.proc _seqproc
; RTSを利用したジャンプ。RTSはアドレス+1から実行される。
_seqproc:
	dw   SEQ_E6 - 1
	dw   SEQ_E7 - 1
	dw   SEQ_E8 - 1
	dw   SEQ_E9 - 1
	dw   SEQ_EA - 1
	dw	 SEQ_EB - 1
	dw   SEQ_EC - 1
	dw   SEQ_ED - 1
	dw   SEQ_EE - 1
	dw   SEQ_EF - 1
	dw   SEQ_F0 - 1
	dw   SEQ_F1 - 1
	dw   SEQ_F2 - 1
	dw   endpoint - 1 ; f3
	dw   SEQ_F4 - 1
	dw   endpoint - 1 ; f5
	dw   endpoint - 1 ; f6
	dw   SEQ_F7 - 1   ; f7
	dw   SEQ_F8 - 1
	dw   SEQ_F9 - 1
	dw   SEQ_FA - 1
	dw   SEQ_FB - 1
	dw   SEQ_FC - 1
	dw   SEQ_FD - 1
	dw   SEQ_FE - 1
	dw   SEQ_FF - 1
	.endp
	.proc _reset_te
	__pushw
	__ldwi	_tone_sw
	__addw_s	0
	__ldb_p
	__stw	<__temp
	__ldwi	255
	  jsr	eqzp
	__lbeq	LL98
	__ldw_s	0
	__aslw
	__addwi	_tone_envadr
	__pushw
	__ldwi	0
	__stwps
	__lbra	LL99
LL98:

	__ldb	_ch_topbank
	  call	_chg_cbank
	__ldw_s	0
	__aslw
	__addwi	_tone_envadr
	__pushw
	__ldwi	_sound_dat
	__addwi	22
	__stw	__ptr
	__ldwp	__ptr
	__pushw
	__ldwi	_tone_sw
	__addw_s	4
	__ldb_p
	__pushw
	__ldwi	1
	  jsr	asl
	__addws
	__stw	__ptr
	__ldwp	__ptr
	__stwps
	__ldb	_ch_nowbank
	  call	_chg_cbank
LL99:

LL97:

	__addmi	2,__stack
	  rts
	.endp

	.proc _reset_multienv
	__pushw
	__addmi	-2,__stack
	__ldwi	_multienv_sw
	__addw_s	2
	__ldb_p
	__stw	<__temp
	__ldwi	255
	  jsr	eqzp
	__lbeq	LL101
	__ldw_s	2
	__aslw
	__addwi	_multi_envadr
	__pushw
	__ldwi	0
	__stwps
	__lbra	LL102
LL101:

	__ldb	_ch_topbank
	  call	_chg_cbank
	__ldwi	_sound_dat
	__addwi	26
	__stw	__ptr
	__ldwp	__ptr
	__pushw
	__ldwi	_multienv_sw
	__addw_s	4
	__ldb_p
	__pushw
	__ldwi	1
	  jsr	asl
	__addws
	__stw	__ptr
	__ldwp	__ptr
	__stw_s	0
	__ldw_s	2
	__aslw
	__addwi	_multi_envcnt
	__pushw
	__ldw_s	2
	__stw	__ptr
	__ldwp	__ptr
	__stwps
	__ldw_s	2
	__aslw
	__addwi	_multi_envadr
	__pushw
	__ldw_s	2
	__addwi	4
	__stwps
	__ldb	_ch_nowbank
	  call	_chg_cbank
LL102:

LL100:

	__addmi	4,__stack
	  rts
	.endp

	.proc _reset_ne
	__pushw
	__ldwi	_note_sw
	__addw_s	0
	__ldb_p
	__stw	<__temp
	__ldwi	255
	  jsr	eqzp
	__lbeq	LL104
	__ldw_s	0
	__aslw
	__addwi	_note_envadr
	__pushw
	__ldwi	0
	__stwps
	__lbra	LL105
LL104:

	__ldb	_ch_topbank
	  call	_chg_cbank
	__ldw_s	0
	__aslw
	__addwi	_note_envadr
	__pushw
	__ldwi	_sound_dat
	__addwi	18
	__stw	__ptr
	__ldwp	__ptr
	__pushw
	__ldwi	_note_sw
	__addw_s	4
	__ldb_p
	__pushw
	__ldwi	1
	  jsr	asl
	__addws
	__stw	__ptr
	__ldwp	__ptr
	__stwps
	__ldb	_ch_nowbank
	  call	_chg_cbank
LL105:

LL103:

	__addmi	2,__stack
	  rts
	.endp

	.proc _reset_pe
	__pushw
	__ldwi	_pitch_sw
	__addw_s	0
	__ldb_p
	__stw	<__temp
	__ldwi	255
	  jsr	eqzp
	__lbeq	LL107
	__ldw_s	0
	__aslw
	__addwi	_pitch_envadr
	__pushw
	__ldwi	0
	__stwps
	__lbra	LL108
LL107:

	__ldb	_ch_topbank
	  call	_chg_cbank
	__ldw_s	0
	__aslw
	__addwi	_pitch_envadr
	__pushw
	__ldwi	_sound_dat
	__addwi	8
	__stw	__ptr
	__ldwp	__ptr
	__pushw
	__ldwi	_pitch_sw
	__addw_s	4
	__ldb_p
	__pushw
	__ldwi	1
	  jsr	asl
	__addws
	__stw	__ptr
	__ldwp	__ptr
	__stwps
	__ldb	_ch_nowbank
	  call	_chg_cbank
LL108:

LL106:

	__addmi	2,__stack
	  rts
	.endp

	.proc _reset_lfo
	__pushw
	__ldwi	_lfo_sw
	__addw_s	0
	__ldb_p
	__stw	<__temp
	__ldwi	255
	  jsr	eqzp
	__lbeq	LL110
	__ldwi	_lfo_cnt
	__addw_s	0
	__pushw
	__ldwi	0
	__stbps
	__lbra	LL111
LL110:

	__ldb	_ch_topbank
	  call	_chg_cbank
	__ldwi	_lfo_step
	__addw_s	0
	__pushw
	__ldwi	0
	__stbps
	__ldwi	_lfo_cnt
	__addw_s	0
	__pushw
	__ldwi	_sound_dat
	__addwi	12
	__stw	__ptr
	__ldwp	__ptr
	__pushw
	__ldwi	_lfo_sw
	__addw_s	4
	__ldb_p
	__pushw
	__ldwi	2
	  jsr	asl
	__addws
	__stw	__ptr
	__ldwp	__ptr
	__stbps
	__ldb	_ch_nowbank
	  call	_chg_cbank
LL111:

LL109:

	__addmi	2,__stack
	  rts
	.endp

	.proc _divxt
	__pushw
	__addmi	-4,__stack
	__stwi_s	0,0
	__stwi_s	0,2
LL113:

	__ldw_s	0
	__pushw
	__ldb_s	8
	  jsr	lt
	__lbne	LL115
	__lbra	LL116
LL114:

	__ldw_s	2
	__incw_s	2
	__lbra	LL113
LL115:

	__ldw_s	0
	__pushw
	__ldb_s	6
	__addws
	__stw_s	0
	__lbra	LL114
LL116:

	__ldw_s	2
	__lbra	LL112
LL112:

	__addmi	8,__stack
	  rts
	.endp

	.proc _drv_noteenv
	__pushw
	__addmi	-5,__stack
	__ldw_s	5
	__aslw
	__addwi	_note_envadr
	__stw	__ptr
	__ldwp	__ptr
	__stw	__ptr
	__ldwp	__ptr
	__stb_s	2
	__ldw_s	5
	__aslw
	__addwi	_note_envadr
	__pushw
	__stw	__ptr
	__ldwp	__ptr
	__addwi	1
	__stwps
	__subwi	1
	__ldb_s	2
	__stw	<__temp
	__ldwi	255
	  jsr	eqzp
	__lbeq	LL118
	__ldw_s	5
	__aslw
	__addwi	_note_envadr
	__pushw
	__ldwi	_sound_dat
	__addwi	20
	__stw	__ptr
	__ldwp	__ptr
	__pushw
	__ldwi	_note_sw
	__addw_s	9
	__ldb_p
	__pushw
	__ldwi	1
	  jsr	asl
	__addws
	__stw	__ptr
	__ldwp	__ptr
	__stwps
	__ldw_s	5
	__aslw
	__addwi	_note_envadr
	__stw	__ptr
	__ldwp	__ptr
	__stw	__ptr
	__ldwp	__ptr
	__stb_s	2
	__ldw_s	5
	__aslw
	__addwi	_note_envadr
	__pushw
	__stw	__ptr
	__ldwp	__ptr
	__addwi	1
	__stwps
	__subwi	1
LL118:

	__ldwi	_note_data
	__addw_s	5
	__ldb_p
	__stb_s	1
	__ldb_s	2
	__andwi	127
	__stb_s	0
	__pushw
	__ldwi	12
	  jsr	sdiv
	__pushw
	__ldwi	4
	  jsr	asl
	__stw_s	3
	__ldb_s	2
	__andwi	128
	__tstw
	__lbeq	LL119
	__ldb_s	1
	__pushw
	__ldw_s	5
	__subws
	__stb_s	1
	__ldb_s	0
	__pushw
	__ldwi	12
	  jsr	smod
	__stw_s	3
	__ldb_s	1
	__andwi	15
	__pushw
	__ldw_s	5
	  jsr	ge
	__lbeq	LL120
	__ldb_s	1
	__pushw
	__ldw_s	5
	__subws
	__stb_s	1
	__lbra	LL121
LL120:

	__ldb_s	1
	__subwi	4
	__stb_s	1
	__pushw
	__ldw_s	5
	__subws
	__stb_s	1
LL121:

	__lbra	LL122
LL119:

	__ldb_s	1
	__addw_s	3
	__stb_s	1
	__ldb_s	0
	__pushw
	__ldwi	12
	  jsr	smod
	__stw_s	3
	__ldb_s	1
	__addw_s	3
	__stb_s	1
	__andwi	15
	__stw	<__temp
	__ldwi	12
	  jsr	gezp
	__lbeq	LL123
	__ldb_s	1
	__addwi	4
	__stb_s	1
LL123:

LL122:

	__ldwi	_note_data
	__addw_s	5
	__pushw
	__ldb_s	3
	__stbps
	__ldw_s	5
	__pushw
	__ldb_s	3
	  call	_set_note
LL117:

	__addmi	7,__stack
	  rts
	.endp

	.proc _drv_toneenv
	__pushw
	__addmi	-3,__stack
	__ldw_s	3
	__aslw
	__addwi	_tone_envadr
	__stw	__ptr
	__ldwp	__ptr
	__stw	__ptr
	__ldwp	__ptr
	__stb_s	0
	__ldw_s	3
	__aslw
	__addwi	_tone_envadr
	__pushw
	__stw	__ptr
	__ldwp	__ptr
	__addwi	1
	__stwps
	__subwi	1
	__ldb_s	0
	__stw	<__temp
	__ldwi	255
	  jsr	eqzp
	__lbeq	LL125
	__ldw_s	3
	__aslw
	__addwi	_tone_envadr
	__pushw
	__ldwi	_sound_dat
	__addwi	24
	__stw	__ptr
	__ldwp	__ptr
	__pushw
	__ldwi	_tone_sw
	__addw_s	7
	__ldb_p
	__pushw
	__ldwi	1
	  jsr	asl
	__addws
	__stw	__ptr
	__ldwp	__ptr
	__stwps
	__ldw_s	3
	__aslw
	__addwi	_tone_envadr
	__stw	__ptr
	__ldwp	__ptr
	__stw	__ptr
	__ldwp	__ptr
	__stb_s	0
	__ldw_s	3
	__aslw
	__addwi	_tone_envadr
	__pushw
	__stw	__ptr
	__ldwp	__ptr
	__addwi	1
	__stwps
	__subwi	1
LL125:

	__ldb_s	0
	  call	_snd_chg
LL124:

	__addmi	5,__stack
	  rts
	.endp

	.proc _drv_panenv
	__pushw
	__addmi	-3,__stack
	__ldw_s	3
	__aslw
	__addwi	_multi_envcnt
	__stw	__ptr
	__ldwp	__ptr
	__notw
	__tstw
	__lbeq	LL127
	__ldwi	_sound_dat
	__addwi	26
	__stw	__ptr
	__ldwp	__ptr
	__pushw
	__ldwi	_multienv_sw
	__addw_s	5
	__ldb_p
	__pushw
	__ldwi	1
	  jsr	asl
	__addws
	__stw	__ptr
	__ldwp	__ptr
	__stw_s	1
	__ldw_s	3
	__aslw
	__addwi	_multi_envcnt
	__pushw
	__ldw_s	3
	__addwi	2
	__stw	__ptr
	__ldwp	__ptr
	__stwps
	__ldw_s	3
	__aslw
	__addwi	_multi_envadr
	__pushw
	__ldwi	_sound_dat
	__addwi	28
	__stw	__ptr
	__ldwp	__ptr
	__pushw
	__ldwi	_multienv_sw
	__addw_s	7
	__ldb_p
	__pushw
	__ldwi	1
	  jsr	asl
	__addws
	__stw	__ptr
	__ldwp	__ptr
	__stwps
LL127:

	__ldw_s	3
	__aslw
	__addwi	_multi_envcnt
	__stw	__ptr
	__ldwp	__ptr
	__tstw
	__lbeq	LL128
	__ldw_s	3
	__aslw
	__addwi	_multi_envadr
	__pushw
	__stw	__ptr
	__ldwp	__ptr
	__addwi	1
	__stwps
	__subwi	1
	__stw	__ptr
	__ldwp	__ptr
	__stb_s	0
	__ldw_s	3
	__aslw
	__addwi	_multi_envcnt
	__pushw
	__stw	__ptr
	__ldwp	__ptr
	__subwi	1
	__stwps
	__addwi	1
	__ldwi	_panpod
	__addw_s	3
	__pushw
	__ldb_s	2
	__stbps
	__ldwi	2053
	__stw	_bx
	__ldb_s	0
	  call	_poke.2
LL128:

LL126:

	__addmi	5,__stack
	  rts
	.endp

	.proc _drv_pitchenv
	__pushw
	__addmi	-1,__stack
	__ldw_s	1
	__aslw
	__addwi	_pitch_envadr
	__stw	__ptr
	__ldwp	__ptr
	__stw	__ptr
	__ldwp	__ptr
	__stb_s	0
	__ldw_s	1
	__aslw
	__addwi	_pitch_envadr
	__pushw
	__stw	__ptr
	__ldwp	__ptr
	__addwi	1
	__stwps
	__subwi	1
	__ldb_s	0
	__stw	<__temp
	__ldwi	255
	  jsr	eqzp
	__lbeq	LL130
	__ldw_s	1
	__aslw
	__addwi	_pitch_envadr
	__pushw
	__ldwi	_sound_dat
	__addwi	10
	__stw	__ptr
	__ldwp	__ptr
	__pushw
	__ldwi	_pitch_sw
	__addw_s	5
	__ldb_p
	__pushw
	__ldwi	1
	  jsr	asl
	__addws
	__stw	__ptr
	__ldwp	__ptr
	__stwps
	__ldw_s	1
	__aslw
	__addwi	_pitch_envadr
	__stw	__ptr
	__ldwp	__ptr
	__stw	__ptr
	__ldwp	__ptr
	__stb_s	0
	__ldw_s	1
	__aslw
	__addwi	_pitch_envadr
	__pushw
	__stw	__ptr
	__ldwp	__ptr
	__addwi	1
	__stwps
	__subwi	1
LL130:

	__ldw_s	1
	__stw	<__temp
	__ldwi	3
	  jsr	gtzp
	__lbeq	LL132
	__ldwi	_noise_sw
	__pushw
	__ldw_s	3
	__subwi	4
	__addws
	__ldb_p
LL132:

	__boolw
	__tstw
	__lbeq	LL131
	__ldb_s	0
	__andwi	128
	__tstw
	__lbeq	LL133
	__ldwi	_noise_freq
	__pushw
	__ldw_s	3
	__subwi	4
	__addws
	__pushw
	__ldb_p
	__pushw
	__ldb_s	4
	__andwi	127
	__subws
	__stbps
	__lbra	LL134
LL133:

	__ldwi	_noise_freq
	__pushw
	__ldw_s	3
	__subwi	4
	__addws
	__pushw
	__ldb_p
	__pushw
	__ldb_s	4
	__addws
	__stbps
LL134:

	__ldwi	2055
	__stw	_bx
	__ldwi	128
	__pushw
	__ldwi	_noise_freq
	__pushw
	__ldw_s	5
	__subwi	4
	__addws
	__ldb_p
	__andwi	31
	__orws
	  call	_poke.2
LL131:

	__ldb_s	0
	__andwi	128
	__tstw
	__lbeq	LL135
	__ldw_s	1
	__aslw
	__addwi	_seq_freq
	__pushw
	__stw	__ptr
	__ldwp	__ptr
	__pushw
	__ldb_s	4
	__andwi	127
	__subws
	__stwps
	__lbra	LL136
LL135:

	__ldw_s	1
	__aslw
	__addwi	_seq_freq
	__pushw
	__stw	__ptr
	__ldwp	__ptr
	__pushw
	__ldb_s	4
	__addws
	__stwps
LL136:

LL129:

	__addmi	3,__stack
	  rts
	.endp

	.proc _drv_lfoseq
	__pushw
	__addmi	-2,__stack
	__ldwi	_sound_dat
	__addwi	12
	__stw	__ptr
	__ldwp	__ptr
	__pushw
	__ldwi	_lfo_sw
	__addw_s	4
	__ldb_p
	__pushw
	__ldwi	2
	  jsr	asl
	__addws
	__stw_s	0
	__ldwi	LL138
	__pushw
	__ldwi	_lfo_step
	__addw_s	4
	__ldb_p
	  jmp	___case
LL140:

	__ldwi	_lfo_cnt
	__addw_s	2
	__ldb_p
	__tstw
	__lbeq	LL141
	__ldwi	_lfo_cnt
	__addw_s	2
	__pushw
	__ldb_p
	__subwi	1
	__stbps
	__addwi	1
	__lbra	LL142
LL141:

	__ldwi	_lfo_step
	__addw_s	2
	__pushw
	__ldwi	1
	__stbps
	__ldwi	_lfo_cnt
	__addw_s	2
	__pushw
	__ldw_s	2
	__addwi	1
	__stw	__ptr
	__ldwp	__ptr
	__stbps
	__ldwi	_lfo_ct2
	__addw_s	2
	__pushw
	__ldw_s	2
	__addwi	1
	__stw	__ptr
	__ldwp	__ptr
	__pushw
	__ldw_s	4
	__addwi	2
	__stw	__ptr
	__ldwp	__ptr
	  call	_divxt
	__stbps
	__ldwi	_lfo_stp
	__addw_s	2
	__pushw
	__ldwi	_lfo_ct2
	__addw_s	4
	__ldb_p
	__stbps
	__ldwi	_lfo_lev
	__addw_s	2
	__pushw
	__ldw_s	2
	__addwi	2
	__stw	__ptr
	__ldwp	__ptr
	__pushw
	__ldw_s	4
	__addwi	1
	__stw	__ptr
	__ldwp	__ptr
	  call	_divxt
	__stbps
	__ldwi	_lfo_lev
	__addw_s	2
	__ldb_p
	__notw
	__tstw
	__lbeq	LL143
	__ldwi	_lfo_lev
	__addw_s	2
	__pushw
	__ldwi	1
	__stbps
LL143:

LL142:

	__lbra	LL139
LL144:

	__ldwi	_lfo_cnt
	__addw_s	2
	__ldb_p
	__tstw
	__lbeq	LL145
	__ldwi	_lfo_cnt
	__addw_s	2
	__pushw
	__ldb_p
	__subwi	1
	__stbps
	__addwi	1
LL145:

	__ldwi	_lfo_ct2
	__addw_s	2
	__ldb_p
	__tstw
	__lbeq	LL146
	__ldwi	_lfo_ct2
	__addw_s	2
	__pushw
	__ldb_p
	__subwi	1
	__stbps
	__addwi	1
	__lbra	LL147
LL146:

	__ldw_s	2
	__aslw
	__addwi	_seq_freq
	__pushw
	__stw	__ptr
	__ldwp	__ptr
	__pushw
	__ldwi	_lfo_lev
	__addw_s	6
	__ldb_p
	__subws
	__stwps
	__ldwi	_lfo_ct2
	__addw_s	2
	__pushw
	__ldwi	_lfo_stp
	__addw_s	4
	__ldb_p
	__stbps
	__ldwi	_lfo_cnt
	__addw_s	2
	__ldb_p
	__notw
	__tstw
	__lbeq	LL148
	__ldwi	_lfo_cnt
	__addw_s	2
	__pushw
	__ldw_s	2
	__addwi	1
	__stw	__ptr
	__ldwp	__ptr
	__stbps
	__ldwi	_lfo_step
	__addw_s	2
	__pushw
	__ldwi	2
	__stbps
LL148:

LL147:

	__lbra	LL139
LL149:

	__ldwi	_lfo_cnt
	__addw_s	2
	__ldb_p
	__tstw
	__lbeq	LL150
	__ldwi	_lfo_cnt
	__addw_s	2
	__pushw
	__ldb_p
	__subwi	1
	__stbps
	__addwi	1
LL150:

	__ldwi	_lfo_ct2
	__addw_s	2
	__ldb_p
	__tstw
	__lbeq	LL151
	__ldwi	_lfo_ct2
	__addw_s	2
	__pushw
	__ldb_p
	__subwi	1
	__stbps
	__addwi	1
	__lbra	LL152
LL151:

	__ldw_s	2
	__aslw
	__addwi	_seq_freq
	__pushw
	__stw	__ptr
	__ldwp	__ptr
	__pushw
	__ldwi	_lfo_lev
	__addw_s	6
	__ldb_p
	__addws
	__stwps
	__ldwi	_lfo_ct2
	__addw_s	2
	__pushw
	__ldwi	_lfo_stp
	__addw_s	4
	__ldb_p
	__stbps
	__ldwi	_lfo_cnt
	__addw_s	2
	__ldb_p
	__notw
	__tstw
	__lbeq	LL153
	__ldwi	_lfo_cnt
	__addw_s	2
	__pushw
	__ldw_s	2
	__addwi	1
	__stw	__ptr
	__ldwp	__ptr
	__stbps
	__ldwi	_lfo_step
	__addw_s	2
	__pushw
	__ldwi	3
	__stbps
LL153:

LL152:

	__lbra	LL139
LL154:

	__ldwi	_lfo_cnt
	__addw_s	2
	__ldb_p
	__tstw
	__lbeq	LL155
	__ldwi	_lfo_cnt
	__addw_s	2
	__pushw
	__ldb_p
	__subwi	1
	__stbps
	__addwi	1
LL155:

	__ldwi	_lfo_ct2
	__addw_s	2
	__ldb_p
	__tstw
	__lbeq	LL156
	__ldwi	_lfo_ct2
	__addw_s	2
	__pushw
	__ldb_p
	__subwi	1
	__stbps
	__addwi	1
	__lbra	LL157
LL156:

	__ldw_s	2
	__aslw
	__addwi	_seq_freq
	__pushw
	__stw	__ptr
	__ldwp	__ptr
	__pushw
	__ldwi	_lfo_lev
	__addw_s	6
	__ldb_p
	__addws
	__stwps
	__ldwi	_lfo_ct2
	__addw_s	2
	__pushw
	__ldwi	_lfo_stp
	__addw_s	4
	__ldb_p
	__stbps
	__ldwi	_lfo_cnt
	__addw_s	2
	__ldb_p
	__notw
	__tstw
	__lbeq	LL158
	__ldwi	_lfo_cnt
	__addw_s	2
	__pushw
	__ldw_s	2
	__addwi	1
	__stw	__ptr
	__ldwp	__ptr
	__stbps
	__ldwi	_lfo_step
	__addw_s	2
	__pushw
	__ldwi	4
	__stbps
LL158:

LL157:

	__lbra	LL139
LL159:

	__ldwi	_lfo_cnt
	__addw_s	2
	__ldb_p
	__tstw
	__lbeq	LL160
	__ldwi	_lfo_cnt
	__addw_s	2
	__pushw
	__ldb_p
	__subwi	1
	__stbps
	__addwi	1
LL160:

	__ldwi	_lfo_ct2
	__addw_s	2
	__ldb_p
	__tstw
	__lbeq	LL161
	__ldwi	_lfo_ct2
	__addw_s	2
	__pushw
	__ldb_p
	__subwi	1
	__stbps
	__addwi	1
	__lbra	LL162
LL161:

	__ldw_s	2
	__aslw
	__addwi	_seq_freq
	__pushw
	__stw	__ptr
	__ldwp	__ptr
	__pushw
	__ldwi	_lfo_lev
	__addw_s	6
	__ldb_p
	__subws
	__stwps
	__ldwi	_lfo_ct2
	__addw_s	2
	__pushw
	__ldwi	_lfo_stp
	__addw_s	4
	__ldb_p
	__stbps
	__ldwi	_lfo_cnt
	__addw_s	2
	__ldb_p
	__notw
	__tstw
	__lbeq	LL163
	__ldwi	_lfo_cnt
	__addw_s	2
	__pushw
	__ldw_s	2
	__addwi	1
	__stw	__ptr
	__ldwp	__ptr
	__stbps
	__ldwi	_lfo_step
	__addw_s	2
	__pushw
	__ldwi	1
	__stbps
LL163:

LL162:

	__lbra	LL139
	__lbra	LL139
LL138:

	.dw	0,LL140,1,LL144,2,LL149,3,LL154
	.dw	4,LL159
	.dw	LL139,0
LL139:

LL137:

	__addmi	4,__stack
	  rts
	.endp

	.proc _drv_intr
	__addmi	-6,__stack
	__ldwi	65534
	__stw	_seq_ptr
	__stwi_s	0,4
LL165:

	__ldw_s	4
	__stw	<__temp
	__ldwi	6
	  jsr	ltzp
	__lbne	LL167
	__lbra	LL168
LL166:

	__ldw_s	4
	__incw_s	4
	__lbra	LL165
LL167:

;
; TODO: check this
;
	__ldw_s	4
	  stx	_reg_ch
	__ldwi	2048
	__stw	_bx
	__ldw_s	4
	  call	_poke.2
	__ldwi	_ch_cnt
	__addw_s	4
	__ldb_p
	__stw	<__temp
	__ldwi	0
	  jsr	eqzp
	__lbeq	LL169
	__ldw_s	4
	__aslw
	__addwi	_seq_pos
	__stw	__ptr
	__ldwp	__ptr
	__stw	_seq_ptr
	__ldwi	_ch_bank
	__addw_s	4
	__ldb_p
	  stx	_ch_nowbank
	__ldw_s	4
	  call	_do_seq
	__ldw_s	4
	__aslw
	__addwi	_seq_pos
	__pushw
	__ldw	_seq_ptr
	__stwps
	__ldwi	_ch_bank
	__addw_s	4
	__pushw
	__ldb	_ch_nowbank
	__stbps
	__ldb	_ch_topbank
	  call	_chg_cbank
LL169:

	__ldwi	_ch_cnt
	__addw_s	4
	__pushw
	__ldb_p
	__subwi	1
	__stbps
	__addwi	1
	__ldw_s	4
	__aslw
	__addwi	_volume_envadr
	__stw	__ptr
	__ldwp	__ptr
	__tstw
	__lbeq	LL170
	__ldw_s	4
	__aslw
	__addwi	_volume_envadr
	__stw	__ptr
	__ldwp	__ptr
	__stw	__ptr
	__ldwp	__ptr
	__stb_s	3
	__ldw_s	4
	__aslw
	__addwi	_volume_envadr
	__pushw
	__stw	__ptr
	__ldwp	__ptr
	__addwi	1
	__stwps
	__subwi	1
	__ldb_s	3
	__stw	<__temp
	__ldwi	255
	  jsr	eqzp
	__lbeq	LL171
	__ldwi	_ch_vol
	__addw_s	4
	__ldb_p
	__andwi	127
	__stb_s	3
	__ldw_s	4
	__aslw
	__addwi	_volume_envadr
	__pushw
	__ldwi	_sound_dat
	__addwi	6
	__stw	__ptr
	__ldwp	__ptr
	__pushw
	__ldb_s	7
	__pushw
	__ldwi	1
	  jsr	asl
	__addws
	__stw	__ptr
	__ldwp	__ptr
	__stwps
	__ldw_s	4
	__aslw
	__addwi	_volume_envadr
	__stw	__ptr
	__ldwp	__ptr
	__stw	__ptr
	__ldwp	__ptr
	__stb_s	3
	__ldw_s	4
	__aslw
	__addwi	_volume_envadr
	__pushw
	__stw	__ptr
	__ldwp	__ptr
	__addwi	1
	__stwps
	__subwi	1
LL171:

	__ldb_s	3
	__andwi	31
	  call	_mixvol
LL170:

	__stbi_s	0,2
	__ldw_s	4
	__aslw
	__addwi	_note_envadr
	__stw	__ptr
	__ldwp	__ptr
	__tstw
	__lbeq	LL172
	__stbi_s	1,2
	__ldw_s	4
	  call	_drv_noteenv
LL172:

	__ldw_s	4
	__aslw
	__addwi	_tone_envadr
	__stw	__ptr
	__ldwp	__ptr
	__tstw
	__lbeq	LL173
	__stbi_s	1,2
	__ldw_s	4
	  call	_drv_toneenv
LL173:

	__ldw_s	4
	__aslw
	__addwi	_pitch_envadr
	__stw	__ptr
	__ldwp	__ptr
	__tstw
	__lbeq	LL174
	__stbi_s	1,2
	__ldw_s	4
	  call	_drv_pitchenv
LL174:

	__ldw_s	4
	__aslw
	__addwi	_multi_envadr
	__stw	__ptr
	__ldwp	__ptr
	__tstw
	__lbeq	LL175
	__ldw_s	4
	  call	_drv_panenv
LL175:

	__ldwi	_lfo_sw
	__addw_s	4
	__ldb_p
	__stw	<__temp
	__ldwi	255
	  jsr	nezp
	__lbeq	LL176
	__stbi_s	1,2
	__ldw_s	4
	  call	_drv_lfoseq
LL176:

	__ldwi	_ch_efx
	__addw_s	4
	__ldb_p
	__andwi	2
	__tstw
	__lbeq	LL177
	__stbi_s	1,2
	__ldwi	_ch_porthi
	__addw_s	4
	__ldb_p
	__andwi	128
	__tstw
	__lbeq	LL178
	__ldwi	65280
	__pushw
	__ldwi	_ch_porthi
	__addw_s	6
	__ldb_p
	__orws
	__stw_s	0
	__lbra	LL179
LL178:

	__ldwi	_ch_porthi
	__addw_s	4
	__ldb_p
	__stw_s	0
LL179:

	__ldwi	_ch_portcnt
	__addw_s	4
	__pushw
	__ldb_p
	__pushw
	__ldwi	_ch_portlo
	__addw_s	8
	__ldb_p
	__andwi	127
	__addws
	__stbps
	__ldwi	_ch_portcnt
	__addw_s	4
	__ldb_p
	__andwi	128
	__tstw
	__lbeq	LL180
	__ldwi	_ch_portlo
	__addw_s	4
	__ldb_p
	__andwi	128
	__tstw
	__lbeq	LL181
	__ldw_s	0
	__subwi	1
	__stw_s	0
	__addwi	1
	__lbra	LL182
LL181:

	__ldw_s	0
	__incw_s	0
LL182:

	__ldwi	_ch_portcnt
	__addw_s	4
	__pushw
	__ldb_p
	__andwi	127
	__stbps
LL180:

	__ldw_s	4
	__aslw
	__addwi	_seq_freq
	__pushw
	__stw	__ptr
	__ldwp	__ptr
	__addw_s	2
	__stwps
LL177:

	__ldb_s	2
	__tstw
	__lbeq	LL183
	__ldwi	2051
	__stw	_bx
	__ldw_s	4
	__aslw
	__addwi	_seq_freq
	__stw	__ptr
	__ldwp	__ptr
	__pushw
	__ldwi	8
	  jsr	asr
	__andwi	15
	  call	_poke.2
	__ldwi	2050
	__stw	_bx
	__ldw_s	4
	__aslw
	__addwi	_seq_freq
	__stw	__ptr
	__ldwp	__ptr
	__andwi	255
	  call	_poke.2
LL183:

	__lbra	LL166
LL168:

LL164:

	__addmi	6,__stack
	  rts
	.endp

	.proc _display_title
	  call	_cls
	__ldwi	LL0+0
	__phw	3,3
	__ldwi	5
	__phb	1
	__ldwi	2
	  call	_put_string.3
LL184:

	  rts
	.endp

	.proc _select_song
	__addmi	-2,__stack
	__stbi_s	0,1
	__pea_s	0
	  call	_get_songmax
	__stbps
	  call	_display_title
	__ldwi	LL0+13
	__phw	3,3
	__ldwi	5
	__phb	1
	__ldwi	3
	  call	_put_string.3
LL186:

	__ldwi	1
	__tstw
	__lbeq	LL187
	  ldy	#0
	  call	_vsync
	__ldb_s	1
	__phw	4,4
	__ldwi	2
	__phb	2
	__ldwi	5
	__phb	1
	__ldwi	4
	  call	_put_hex.4
	__ldwi	0
	  call	_joytrg
	__andwi	32
	__tstw
	__lbeq	LL188
	__ldb_s	1
	__addwi	1
	__stb_s	1
	__subwi	1
	__ldb_s	1
	__pushw
	__ldb_s	2
	  jsr	smod
	__stb_s	1
LL188:

	__ldwi	0
	  call	_joytrg
	__andwi	128
	__tstw
	__lbeq	LL189
	__ldb_s	1
	__subwi	1
	__stb_s	1
	__addwi	1
	__ldb_s	1
	__pushw
	__ldb_s	2
	  jsr	smod
	__stb_s	1
LL189:

	__ldwi	0
	  call	_joytrg
	__andwi	8
	__tstw
	__lbeq	LL190
	__lbra	LL187
LL190:

	__lbra	LL186
LL187:

	__ldb_s	1
	__lbra	LL185
LL185:

	__addmi	2,__stack
	  rts
	.endp

	.proc _main
	__addmi	-9,__stack
	__stbi_s	1,0
	__stwi_s	0,5
	  call	_disp_off
	  call	_cls
	__ldwi	1
	__stw	_color_reg
	__ldwi	7
	  stx	_al
	__ldwi	7
	  stx	_ah
	__ldwi	7
	  call	_set_color_rgb.4
	__ldwi	1
	  stx	_al
	__ldwi	0
	  call	_set_font_color.2
	__ldwi	0
	  call	_set_font_pal
	  call	_load_default_font
	  call	_disp_on
	__pea_s	0
	  call	_select_song
	__stbps
	  call	_display_title
	__ldb_s	0
	  call	_drv_init
LL192:

	__ldwi	1
	__tstw
	__lbeq	LL193
	  ldy	#0
	  call	_vsync
	__ldw	_seq_ptr
	__phw	4,4
	__ldwi	4
	__phb	2
	__ldwi	13
	__phb	1
	__ldwi	3
	  call	_put_hex.4
	__ldb	_ch_topbank
	__phw	4,4
	__ldwi	2
	__phb	2
	__ldwi	20
	__phb	1
	__ldwi	3
	  call	_put_hex.4
	__ldb	_ch_nowbank
	__phw	4,4
	__ldwi	2
	__phb	2
	__ldwi	23
	__phb	1
	__ldwi	3
	  call	_put_hex.4
	__stwi_s	0,7
LL194:

	__ldw_s	7
	__stw	<__temp
	__ldwi	6
	  jsr	ltzp
	__lbne	LL196
	__lbra	LL197
LL195:

	__ldw_s	7
	__incw_s	7
	__lbra	LL194
LL196:

	__stwi_s	2,3
	__ldw_s	7
	__phw	4,4
	__ldwi	2
	__phb	2
	__ldw_s	3
	__phb	1
	__ldwi	5
	__addw_s	7
	  call	_put_hex.4
	__ldw_s	3
	__addwi	3
	__stw_s	3
	__ldwi	_ch_lastcmd
	__addw_s	7
	__ldb_p
	__phw	4,4
	__ldwi	2
	__phb	2
	__ldw_s	3
	__phb	1
	__ldwi	5
	__addw_s	7
	  call	_put_hex.4
	__ldw_s	3
	__addwi	3
	__stw_s	3
	__ldwi	_ch_cnt
	__addw_s	7
	__ldb_p
	__phw	4,4
	__ldwi	2
	__phb	2
	__ldw_s	3
	__phb	1
	__ldwi	5
	__addw_s	7
	  call	_put_hex.4
	__ldw_s	3
	__addwi	3
	__stw_s	3
	__ldwi	_note_data
	__addw_s	7
	__ldb_p
	__phw	4,4
	__ldwi	2
	__phb	2
	__ldw_s	3
	__phb	1
	__ldwi	5
	__addw_s	7
	  call	_put_hex.4
	__ldw_s	3
	__addwi	3
	__stw_s	3
	__ldwi	_ch_bank
	__addw_s	7
	__ldb_p
	__phw	4,4
	__ldwi	2
	__phb	2
	__ldw_s	3
	__phb	1
	__ldwi	5
	__addw_s	7
	  call	_put_hex.4
	__ldw_s	3
	__addwi	3
	__stw_s	3
	__ldw_s	7
	__aslw
	__addwi	_seq_pos
	__stw	__ptr
	__ldwp	__ptr
	__phw	4,4
	__ldwi	4
	__phb	2
	__ldw_s	3
	__phb	1
	__ldwi	5
	__addw_s	7
	  call	_put_hex.4
	__ldw_s	3
	__addwi	5
	__stw_s	3
	__ldw_s	7
	__aslw
	__addwi	_seq_freq
	__stw	__ptr
	__ldwp	__ptr
	__phw	4,4
	__ldwi	4
	__phb	2
	__ldw_s	3
	__phb	1
	__ldwi	5
	__addw_s	7
	  call	_put_hex.4
	__ldw_s	3
	__addwi	5
	__stw_s	3
	__lbra	LL195
LL197:

	__stwi_s	0,7
LL198:

	__ldw_s	7
	__stw	<__temp
	__ldwi	2
	  jsr	ltzp
	__lbne	LL200
	__lbra	LL201
LL199:

	__ldw_s	7
	__incw_s	7
	__lbra	LL198
LL200:

	__stwi_s	1,3
	__ldw_s	7
	__aslw
	__addwi	_xpcm_addr
	__stw	__ptr
	__ldwp	__ptr
	__phw	4,4
	__ldwi	4
	__phb	2
	__ldw_s	3
	__phb	1
	__ldwi	14
	__addw_s	7
	  call	_put_hex.4
	__ldw_s	3
	__addwi	5
	__stw_s	3
	__ldw_s	7
	__aslw
	__addwi	_xpcm_len
	__stw	__ptr
	__ldwp	__ptr
	__phw	4,4
	__ldwi	4
	__phb	2
	__ldw_s	3
	__phb	1
	__ldwi	14
	__addw_s	7
	  call	_put_hex.4
	__lbra	LL199
LL201:

	__lbra	LL192
LL193:

LL191:

	__addmi	9,__stack
	  rts
	.endp

	.data
	.bank CONST_BANK
	.org $4000
LL0:
	.db	72,117,83,73,67,32,50,48
	.db	48,57,48,52,0,83,69,76
	.db	69,67,84,32,83,79,78,71
	.db	0
_freq:
	.dw	4068
	.dw	3839
	.dw	3624
	.dw	3420
	.dw	3228
	.dw	3047
	.dw	2876
	.dw	2715
	.dw	2562
	.dw	2419
	.dw	2283
	.dw	2155
	.dw	2034
	.dw	1920
	.dw	1812
	.dw	1710

	.bss
_reg_ch:		.ds	1
_ch_nowbank:		.ds	1
_ch_topbank:		.ds	1
_seq_ptr:		.ds	2
_ch_lastcmd:		.ds	6
_ch_cnt:		.ds	6
_ch_vol:		.ds	6
_ch_bank:		.ds	6
_ch_lastvol:		.ds	6
_ch_lasttone:		.ds	6
_ch_efx:		.ds	6
_ch_rst:		.ds	6
_ch_porthi:		.ds	6
_ch_portlo:		.ds	6
_ch_portcnt:		.ds	6
_note_data:		.ds	6
_multienv_sw:		.ds	6
_tone_sw:		.ds	6
_pitch_sw:		.ds	6
_note_sw:		.ds	6
_detune:		.ds	6
_panpod:		.ds	6
_loop_cnt:		.ds	6
_seq_pos:		.ds	12
_seq_freq:		.ds	12
_tone_envadr:		.ds	12
_pitch_envadr:		.ds	12
_volume_envadr:		.ds	12
_note_envadr:		.ds	12
_multi_envadr:		.ds	12
_multi_envcnt:		.ds	12
_lfo_sw:		.ds	6
_lfo_cnt:		.ds	6
_lfo_ct2:		.ds	6
_lfo_stp:		.ds	6
_lfo_lev:		.ds	6
_lfo_step:		.ds	6
_noise_freq:		.ds	2
_noise_sw:		.ds	2
_song_track_table:		.ds	2
_song_bank_table:		.ds	2
_song_loop_table:		.ds	2
_song_loop_bank:		.ds	2
_xpcm_addr:		.ds	4
_xpcm_len:		.ds	4
_xpcm_shift:		.ds	2
_xpcm_bank:		.ds	2
_xpcm_buf:		.ds	2
_xpcm_nextbuf:		.ds	2
_xpcm_bank_save:		.ds	1
_xpcm_flags:		.ds	1
_xpcm_play_flags:		.ds	1
_song_addr_base:		.ds	2
_song_addr_table:		.ds	2
__arg:

;0 error(s) in compilation
;	literal pool:25
;	constant pool:32
;	global pool:3680
;	Macro pool:1432
