;BEEP Ver4A [メロディー符用] NAO TECHUNOHUT	2001年11月
;簡易テスト用基板用にI/Oピン他調整		2007年11月03日(土)
;
;			    ┌─┰─┐
;	(3～5.5V)	VDD ┥      ┝ Vss	GND
;	選択		GP5 ┥12F   ┝ GP0	(18PIN用MCLR)
;	選択		GP4 ┥  629 ┝ GP1	スピーカー出力
;	リセット	MCLR┥	    ┝ GP2	選択
;			    └───┘
;
;-------PIC基本設定---------------------;
	include	'12f629.inc'

	fuses	_intrc_osc_noclkout	;オシレーター設定→内蔵､クロック出力無
	fuses	_wdt_off		;ウォッチドックタイマー→無効
	fuses	_pwrte_on		;電源投入72ms間リセット→有効
	fuses	_mclre_on		;MCLR端子(リセット)→設定する
	fuses	_boden_off		;低電圧リセット(約2V以下)→無し
	fuses	_cp_off			;コードプロテクト→無効
	fuses	_cpd_off		;eepromのコードプロテクト→無効

	id	'0629'			;

	org	512			;
;曲データー(合計221音符まで)
;=============================================================================;
;-------№1 音階DATA--------------------
rNo_1A	mov	mTEMPO,#130		;♪テンポ
	jmp	rNo_1X			;
wNo_1A	jmp	pc+w			;

;♪ マイムマイム/M(テンポ=130 音符数:104)
	retw	DO5,RE5,MIf5,RE5,DO5,REs5,FA5,SO5,FA5
	retw	MIf5,SO5,SIf5,RAf5,SIf5,SO5,FA5,SO5
	retw	DO5,RE5,MIf5,RE5,DO5,REs5,FA5,SO5,FA5
	retw	DO6,DO6,SIf5,SO5,SIf5,SO5,SO5,DO6
	retw	DO6,DO6,DO6,DO6,DO6,DO6,DO6,DO6
	retw	KYU,DO6,SIf5,SIf5,SO5,SIf5,DO6
	retw	DO6,DO6,DO6,DO6,DO6,DO6,DO6,DO6
	retw	KYU,DO6,SIf5,SIf5,SO5,FA5,SO5
	retw	SIf5,SIf5,SIf5,SIf5
	retw	SIf5,SIf5,RAf5,SO5,FA5,SIf5,SIf5,RAf5,SO5,FA5
	retw	MIf5,FA5,SO5,RAf5,SO5,FA5,MIf5,SIf5
	retw	SIf5,SIf5,RAf5,SO5,FA5,SIf5,SIf5,RAf5,SO5,FA5
	retw	SO5,SO5,MIf5,RE5,DO5,MIf5,RE5,DO5

	jmp	rSLEEP			;

;-------№2 音階DATA--------------------
rNo_2A	mov	mTEMPO,#150		;♪テンポ
	jmp	rNo_2X			;
wNo_2A	jmp	pc+w			;

;♪ 魔法使いサリー(S)/M(テンポ=120 音符数:14)
	retw	RA4,DO5
	retw	MI5,RE5,DO5,MI5,RE5,DO5
	retw	RE5,MI5,RE5,DO5,SI4,RA4

	jmp	rSLEEP			;

;-------№3 音階DATA--------------------
rNo_3A	mov	mTEMPO,#172		;♪テンポ
	jmp	rNo_3X			;
wNo_3A	jmp	pc+w			;

;♪ N64マリオタイトル/M(テンポ=172 音符数: 10)
	retw	MI5,MI5,KYU,MI5,KYU,DO5,MI5
	retw	SO5,KYU,SO4

	jmp	rSLEEP			;

;-------№4 音階DATA--------------------
rNo_4A	mov	mTEMPO,#144		;♪テンポ
	jmp	rNo_4X			;
wNo_4A	jmp	pc+w			;

;♪ N64レースファンファーレ/M(テンポ=144 音符数: 11)
	retw	SO5,SO5,SO5,SO5
	retw	SI5,SO5,SI5
	retw	RE6,KYU,RE5
	retw	SO5

	jmp	rSLEEP			;

;-------№5 音階DATA--------------------
rNo_5A	mov	mTEMPO,#135		;♪テンポ
	jmp	rNo_5X			;
wNo_5A	jmp	pc+w			;

;♪いつも何度でも(S)/M(テンポ=135 音符数:29)
	retw	FA4,SO4
	retw	RA4,FA4,DO5,RA4,SO4,DO5,SO4
	retw	FA4,RE4,RA4,FA4,MI4,MI4
	retw	RE4,MI4,FA4,SO4,DO4,FA4,SO4,RA4
	retw	SIf4,SIf4,RA4,SO4,FA4,SO4

	jmp	rSLEEP			;

;-------№6 音階DATA--------------------
rNo_6A	mov	mTEMPO,#112		;♪テンポ
	jmp	rNo_6X			;
wNo_6A	jmp	pc+w			;

;♪ 森のクマさん前奏/M(テンポ=112 音符数:39 )
	retw	SO5,RA5,SI5
	retw	DO6,SO5,MI5,FA5,MI5,RE5,DO5,SI4,DO5
	retw	RA5,RA5,SI5,RA5
	retw	SO5,SO4,RA4,SO4,FA5,FA4,SO4,FA4,MI5,MI4,FA4,MI4,RE5,RE4,MI4
	retw	DO5,RE4,MI4,FA4,SO4,RA4,SI4,DO5

	jmp	rSLEEP			;

;-------№7 音階DATA--------------------
rNo_7A	mov	mTEMPO,#180		;♪テンポ
	jmp	rNo_7X			;
wNo_7A	jmp	pc+w			;

;♪ タクトスイッチ用クリック音/Mのみ(テンポ=180 音符数:  1)
	retw	DO7

	jmp	rSLEEP			;

;=============================================================================;

	org	768			;
;-------№1 音長DATA--------------------
wNo_1B	jmp	pc+w			;

;♪ マイムマイム/M
	retw	L050,L050,L025,L025,L050,L050,L050,L050,L050
	retw	L050,L050,L050,L025,L025,L050,L050,L100
	retw	L050,L050,L025,L025,L050,L050,L050,L050,L050
	retw	L050,L050,L050,L025,L025,L050,L050,L100
	retw	L050,L050,L050,L050,L050,L050,L050,L050
	retw	L050,L050,L050,L050,L050,L050,L100
	retw	L050,L050,L050,L050,L050,L050,L050,L050
	retw	L050,L050,L050,L050,L050,L050,L100
	retw	L100,L100,L100,L100
	retw	L050,L050,L025,L025,L050,L050,L050,L025,L025,L050
	retw	L050,L050,L050,L025,L025,L050,L050,L100
	retw	L050,L050,L025,L025,L050,L050,L050,L025,L025,L050
	retw	L050,L050,L025,L025,L050,L050,L050,L100

;-------№2 音長DATA--------------------
wNo_2B	jmp	pc+w			;

;♪ 魔法使いサリー/M
	retw	L050,L050
	retw	L100,L050,L050,L100,L050,L050
	retw	L050,L025,L025,L050,L050,L100

;-------№3 音長DATA--------------------
wNo_3B	jmp	pc+w			;

;♪ N64マリオタイトル/M
	retw	L050,L050,L050,L050,L050,L050,L100
	retw	L100,L100,L100

;-------№4 音長DATA--------------------
wNo_4B	jmp	pc+w			;

;♪ N64レースファンファーレ/M
	retw	L050,L025,L025,L050
	retw	L050,L050,L050
	retw	L050,L050,L050
	retw	L150

;-------№5 音長DATA--------------------
wNo_5B	jmp	pc+w			;

;♪いつも何度でも/M
	retw	L050,L050
	retw	L050,L050,L150,L050,L100,L100,L100
	retw	L050,L050,L150,L050,L200,L100
	retw	L100,L100,L050,L050,L100,L100,L050,L050
	retw	L100,L050,L050,L050,L050,L200

;-------№6 音長DATA--------------------
wNo_6B	jmp	pc+w			;

;♪ 森のクマさん前奏/M
	retw	L050,L050,L050
	retw	L100,L100,L050,L025,L025,L025,L025,L025,L025
	retw	L250,L050,L050,L050
	retw	L025,L025,L025,L025,L025,L025,L025,L025,L025,L025,L025,L025,L025,L025,L050
	retw	L050,L025,L025,L025,L025,L025,L025,L200

;-------№7 音長DATA--------------------
wNo_7B	jmp	pc+w			;

;♪ タクトスイッチ用クリック音/Mのみ
	retw	L025

;=============================================================================;

;-------PIC初期状態確認-----------------;(変更必要部抜粋)
;Bank 0
;	cmcon		-0-0 0000	;コンパレーター
;Bank 1
;	option_reg	1111 1111	;プリスケーラー他
;	wpu		--11 1111	;プルアップ
;	iocb		--00 0000	;入力信号変化割込

;-------プログラム開始(初期設定他)------;

	org	0			;

	clr	gpio			;GPIO出力すべてOFF(Lo)
	mov	cmcon,# 0 00111b	;コンパレーター入力はOFFにする

	setb	rp0			;ページ変更(Bank 1へ)
	mov	trisio,#  111101b	;GPIOピンは1を出力に設定

	mov	osccal,#10011100b	;★オシレーター微調整★

	mov	option,#10000111b	;タイマー0使用他
	mov	wpu,#  000000b		;プルアップ無し

	clrb	rp0			;ページ変更(Bank 0へ戻す)

	clr	tmr0			;タイマーカウンターリセット
	clr	mTMR_CZ			;山数初期値リセット
	clr	mT_256Z			;1/256山初期値リセット
	clr	mST_No			;選曲保持記憶用リセット
	clr	mPCW			;pc+wカウントリセット

;-------選曲判定記憶--------------------;

	csne	gpio,#  100001b		;GP5
	setb	mST_No.1		;
	csne	gpio,#  010001b		;GP4
	setb	mST_No.2		;
	csne	gpio,#  110001b		;GP4,GP5
	setb	mST_No.3		;
	csne	gpio,#  000101b		;GP2
	setb	mST_No.4		;
	csne	gpio,#  100101b		;GP2,GP5
	setb	mST_No.5		;
	csne	gpio,#  010101b		;GP2,GP4
	setb	mST_No.6		;
	csne	gpio,#  110101b		;GP2,GP4,GP5
	setb	mST_No.7		;
	cje	gpio,#  000001b,rSLEEP	;省電力待機モードへ

;-------選曲先ジャンプ------------------;

	jb	mST_No.1,rNo_1A		;
	jb	mST_No.2,rNo_2A		;
	jb	mST_No.3,rNo_3A		;
	jb	mST_No.4,rNo_4A		;
	jb	mST_No.5,rNo_5A		;
	jb	mST_No.6,rNo_6A		;
	jb	mST_No.7,rNo_7A		;

;-------曲データー読込プログラム--------;

rNo_1X	setb	pclath.1		;1xb
	mov	w,mPCW			;
	call	wNo_1A			;
	mov	mTONE,w			;音階

	setb	pclath.0		;x1b
	mov	w,mPCW			;
	call	wNo_1B			;
	mov	mLONG,w			;音長
	clr	pclath			;*
	jmp	rMAIN			;

rNo_2X	setb	pclath.1		;1xb
	mov	w,mPCW			;
	call	wNo_2A			;
	mov	mTONE,w			;音階

	setb	pclath.0		;x1b
	mov	w,mPCW			;
	call	wNo_2B			;
	mov	mLONG,w			;音長
	clr	pclath			;*
	jmp	rMAIN			;

rNo_3X	setb	pclath.1		;1xb
	mov	w,mPCW			;
	call	wNo_3A			;
	mov	mTONE,w			;音階

	setb	pclath.0		;x1b
	mov	w,mPCW			;
	call	wNo_3B			;
	mov	mLONG,w			;音長
	clr	pclath			;*
	jmp	rMAIN			;

rNo_4X	setb	pclath.1		;1xb
	mov	w,mPCW			;
	call	wNo_4A			;
	mov	mTONE,w			;音階

	setb	pclath.0		;x1b
	mov	w,mPCW			;
	call	wNo_4B			;
	mov	mLONG,w			;音長
	clr	pclath			;*
	jmp	rMAIN			;

rNo_5X	setb	pclath.1		;1xb
	mov	w,mPCW			;
	call	wNo_5A			;
	mov	mTONE,w			;音階

	setb	pclath.0		;x1b
	mov	w,mPCW			;
	call	wNo_5B			;
	mov	mLONG,w			;音長
	clr	pclath			;*
	jmp	rMAIN			;

rNo_6X	setb	pclath.1		;1xb
	mov	w,mPCW			;
	call	wNo_6A			;
	mov	mTONE,w			;音階

	setb	pclath.0		;x1b
	mov	w,mPCW			;
	call	wNo_6B			;
	mov	mLONG,w			;音長
	clr	pclath			;*
	jmp	rMAIN			;

rNo_7X	setb	pclath.1		;1xb
	mov	w,mPCW			;
	call	wNo_7A			;
	mov	mTONE,w			;音階

	setb	pclath.0		;x1b
	mov	w,mPCW			;
	call	wNo_7B			;
	mov	mLONG,w			;音長
	clr	pclath			;*
	jmp	rMAIN			;


;---------メインプログラム--------------;
rMAIN
	inc	mPCW			;+1

;---定数÷テンポ計算---
	call	sLONG			;音長定数判定代入
	mov	mJOSU08,mTEMPO		;
	call	sWARIZAN		;割り算(定数÷テンポ)
	call	s4O5I			;四捨五入

;---周波数繰り返し数計算---
	clr	mWARI32			;
	mov	mWARI24,mSHOW24		;÷テンポ計算結果入れ
	mov	mWARI16,mSHOW16		;
	mov	mWARI08,mSHOW08		;
	mov	mJOSU08,mTONE		;音周波数
	call	sWARIZAN		;割り算(テンポ後定数÷音周波数)

;切り上げ判定･加算
	jnb	mSHOW08.0,rKUP_1	;偶奇数判定
	add	mSHOW08,#1		;+1
	jmp	rKUP_2			;
rKUP_1	test	mWARIXX			;割り算の余りチェック
	jz	rKUP_E			;
	add	mSHOW08,#2		;+2
rKUP_2	snc				;オーバーフローチェック
	inc	mSHOW16			;+1
rKUP_E					;

;周波数繰り返し数決定
	mov	mCT16,mSHOW16		;
	mov	mCT08,mSHOW08		;

;---全音部で1/256山値計算---
	call	sLONG			;音長定数判定代入
	mov	mJOSU08,mTEMPO		;
	call	sWARIZAN		;割り算(定数÷テンポ)と四捨五入
	call	s4O5I			;四捨五入

	clr	mWARI32			;
	mov	mWARI24,mSHOW24		;
	mov	mWARI16,mSHOW16		;
	mov	mWARI08,mSHOW08		;
	mov	mJOSU08,#12		;
	call	sWARIZAN		;割り算(テンポ後定数÷12)と四捨五入
	call	s4O5I			;四捨五入

	mov	mT_256Y,mSHOW08		;1/256山値
	mov	mFREE_C,mSHOW08		;1/256山値

;---無音部0.0625秒山と1/256山値計算---
	rr	mSHOW24			;
	rr	mSHOW16			;
	rr	mSHOW08			;1/2
	rr	mSHOW24			;
	rr	mSHOW16			;
	rr	mSHOW08			;1/4

	mov	mTMR_CY,mSHOW16		;山回数(÷256)
	mov	mFREE_B,mSHOW08		;1/256山値

;---次回1/256山タイミング値計算---
	add	mT_256Y,mT_256Z		;現在値に加算

;---有音部終了点算出---
	sub	mFREE_C,mFREE_B		;全音部点-無音部点

	add	mFREE_C,mT_256Z		;
	mov	mYOUE_Y,mFREE_C		;

;---計算中のポイントパスチェック補正---
	mov	mFREE_C,tmr0		;現在のtmr0値保存
	inc	mFREE_C			;現在のtmr0値+1
	mov	mFREE_B,mFREE_C		;      〃

;パターン1?判定
	sub	mFREE_C,mYOUE_Z		;tmr0値-有音部終了点
	jnc	rPATN_2			;

	cja	mYOUE_Z,mT_256Z,rPATN_N	;
	cja	mT_256Z,mFREE_B,rPATN_N	;
	jmp	rPATN_D			;

;パターン2?判定
rPATN_2	cja	mYOUE_Z,mT_256Z,rPATN_3	;
	jmp	rPATN_D			;

;パターン3?判定
rPATN_3	cja	mT_256Z,mFREE_B,rPATN_N	;

;-1判定
rPATN_D	test	mTMR_CZ			;
	sz				;
	dec	mTMR_CZ			;-1
rPATN_N

rCBR750	cjne	mFREE_B,tmr0,rCBR750	;tmr0値+1まで待つ

;---シンクロWAIT(待ち)---
rWAIT_0	cje	tmr0,mT_256Z,rWAIT_0	;
rWAIT_1	cjne	tmr0,mT_256Z,rWAIT_1	;
	test	mTMR_CZ			;
	jz	rWAIT_E			;
	dec	mTMR_CZ			;-1
	jmp	rWAIT_0			;
rWAIT_E

;---スピーカー行きON･OFF(Hi･Lo)---
	dec	mTONE			;-1

sBEEP	cjne	mTONE,#199,rBEEP	;[4] (5)
	nop				;[1]
	jmp	rBEEN			;[2]

rBEEP	xor	gpio,#  000010b		;[2]★

rBEEN	mov	mLOOP,mTONE		;[2]

;周波数と回数処理ルーチン
rLOOP1	decsz	mLOOP			;[1] (2)
	jmp	rCT_A0			;[2]

	test	mCT08			;[1]
	jz	rCT_A1			;[2] (3)
	
	djnz	mCT08,rCT_A2		;[2] (3)
	test	mCT16			;[1]
	jz	rCTEND			;[2]	 <3>
	jmp	rCT_A4			;[2]

rCT_A1	dec	mCT08			;[1]
	dec	mCT16			;[1]
	jmp	rCT_A3			;[2]
rCT_A2	nop				;[1]
	nop				;[1]
rCT_A3	nop				;[1]
	nop				;[1]
rCT_A4	mov	mNOP,#2			;[2]
rCT_B4	djnz	mNOP,rCT_B4		;[5]
	nop				;[1]
	nop				;[1]
	jmp	sBEEP			;[2]
rCT_A0	mov	mNOP,#3			;[2]
rCT_B0	djnz	mNOP,rCT_B0		;[8]
	nop				;[1]
	jmp	rLOOP1			;[2]
rCTEND

;---無音部の山回数,1/256山値入れ---
	mov	mTMR_CZ,mTMR_CY		;山回数
	mov	mT_256Z,mT_256Y		;1/256山タイミング値

;---有音部の終了点計算値入れ---
	mov	mYOUE_Z,mYOUE_Y		;

;---次音符---
	jb	mST_No.1,rNo_1X		;
	jb	mST_No.2,rNo_2X		;
	jb	mST_No.3,rNo_3X		;
	jb	mST_No.4,rNo_4X		;
	jb	mST_No.5,rNo_5X		;
	jb	mST_No.6,rNo_6X		;
	jb	mST_No.7,rNo_7X		;


rSLEEP	sleep				;終了


;---------------------------------------;


;-----s 音長定数判定代入 s--------------;
sLONG
	clr	mWARI32			;

rLONG_0	cjne	mLONG,#1,rLONG_1	;16分音符(L025)
	mov	mWARI24,#00001011b	;
	mov	mWARI16,#01000000b	;
	mov	mWARI08,#00000000b	;(10進で   737,280)

rLONG_1	cjne	mLONG,#2,rLONG_2	;8分音符の3連符(L033)
	mov	mWARI24,#00001111b	;
	mov	mWARI16,#00000000b	;
	mov	mWARI08,#00000000b	;(10進で  983,040)

rLONG_2	cjne	mLONG,#3,rLONG_3	;8分音符(L050)
	mov	mWARI24,#00010110b	;
	mov	mWARI16,#10000000b	;
	mov	mWARI08,#00000000b	;(10進で 1,474,560)

rLONG_3	cjne	mLONG,#4,rLONG_4	;.8分音符(L075)
	mov	mWARI24,#00100001b	;
	mov	mWARI16,#11000000b	;
	mov	mWARI08,#00000000b	;(10進で 2,211,840)

rLONG_4	cjne	mLONG,#5,rLONG_5	;4分音符(L100)
	mov	mWARI24,#00101101b	;
	mov	mWARI16,#00000000b	;
	mov	mWARI08,#00000000b	;(10進で 2,949,120)

rLONG_5	cjne	mLONG,#6,rLONG_6	;.4分音符(L150)
	mov	mWARI24,#01000011b	;
	mov	mWARI16,#10000000b	;
	mov	mWARI08,#00000000b	;(10進で 4,423,680)

rLONG_6	cjne	mLONG,#7,rLONG_7	;2分音符(L200)
	mov	mWARI24,#01011010b	;
	mov	mWARI16,#00000000b	;
	mov	mWARI08,#00000000b	;(10進で 5,898,240)

rLONG_7	cjne	mLONG,#8,rLONG_8	;2分音符+8分音符(L250)
	mov	mWARI24,#01110000b	;
	mov	mWARI16,#10000000b	;
	mov	mWARI08,#00000000b	;(10進で 7,372,800)

rLONG_8	cjne	mLONG,#9,rLONG_9	;.2分音符(L300)
	mov	mWARI24,#10000111b	;
	mov	mWARI16,#00000000b	;
	mov	mWARI08,#00000000b	;(10進で 8,847,360)

rLONG_9	cjne	mLONG,#10,rLONG10	;.2分音符+8分音符(L350)
	mov	mWARI24,#10011101b	;
	mov	mWARI16,#10000000b	;
	mov	mWARI08,#00000000b	;(10進で10,321,920)

rLONG10	cjne	mLONG,#11,rLONG11	;全音符(L400)
	mov	mWARI24,#10110100b	;
	mov	mWARI16,#00000000b	;
	mov	mWARI08,#00000000b	;(10進で11,796,480)

rLONG11	cjne	mLONG,#12,rLONG12	;全音符+8分音符(L450)
	mov	mWARI24,#11001010b	;
	mov	mWARI16,#10000000b	;
	mov	mWARI08,#00000000b	;(10進で13,271,040)

rLONG12	cjne	mLONG,#13,rLONG13	;全音符+4分音符(L500)
	mov	mWARI24,#11100001b	;
	mov	mWARI16,#00000000b	;
	mov	mWARI08,#00000000b	;(10進で14,745,600)

rLONG13	cjne	mLONG,#14,rLONG14	;全音符x2(L800)
;	mov	mWARI32,#00000001b	;
	setb	mWARI32.0		;
	mov	mWARI24,#01101000b	;
	mov	mWARI16,#00000000b	;
	mov	mWARI08,#00000000b	;(10進で23,592,960)

rLONG14	cjne	mLONG,#15,rLONG_E	;全音符x4(L1600)
;	mov	mWARI32,#00000010b	;
	setb	mWARI32.1		;
	mov	mWARI24,#11010000b	;
	mov	mWARI16,#00000000b	;
	mov	mWARI08,#00000000b	;(10進で47,185,920)

rLONG_E
	ret				;

;-------s-------s-------s-------s-------;


;--------s 割り算(32bit/8bit) s---------;
sWARIZAN
;---桁移動比較---
	mov	mWARI_C,#32		;ループ数設定
	clr	mWARIXX			;

rWARI_0	rl	mWARI08			;
	rl	mWARI16			;
	rl	mWARI24			;
	rl	mWARI32			;
	rl	mWARIXX			;

	jc	rWARI_2			;比較8ビット超判定
	cjae	mWARIXX,mJOSU08,rWARI_1	;勝ち負け判定
	clrb	c			;キャリー0
	jmp	rWARI_4			;

rWARI_1	sub	mWARIXX,mJOSU08		;引き算(余りはここに残る)
	jmp	rWARI_3			;

rWARI_2	clr	mFREE_A			;0にする
	sub	mFREE_A,mJOSU08		;
	add	mWARIXX,mFREE_A		;
rWARI_3	setb	c			;キャリー1

;---計算結果入れ---
rWARI_4	rl	mSHOW08			;計算結果を入れる
	rl	mSHOW16			;　　　〃
	rl	mSHOW24			;　　　〃
	djnz	mWARI_C,rWARI_0		;ループ継続判定

	ret				;

;-------s-------s-------s-------s-------;


	org	3E8h			;

;--------s 四捨五入 s-------------------;
s4O5I	rl	mWARIXX			;
	jc	r4O5I_1			;
	cjb	mWARIXX,mJOSU08,r4O5I_E	;
r4O5I_1	add	mSHOW08,#1		;+1
	jnc	r4O5I_E			;
	add	mSHOW16,#1		;+1
	jnc	r4O5I_E			;
	add	mSHOW24,#1		;+1
r4O5I_E
	ret				;

;-------s-------s-------s-------s-------;


;-------代入数設定----------------------;
;---音階---
KYU		=	200		;休符
RES		=	200		;休符

DO7		=	 16		;
SI6		=	 17		;
SIf6		=	 18		;
RAs6		=	 18		;
RA6		=	 19		;
RAf6		=	 20		;
SOs6		=	 20		;
SO6		=	 21		;
SOf6		=	 22		;
FAs6		=	 22		;
FA6		=	 23		;
MI6		=	 25		;
MIf6		=	 26		;
REs6		=	 26		;
RE6		=	 28		;
REf6		=	 30		;
DOs6		=	 30		;
DO6		=	 31		;
SI5		=	 33		;
SIf5		=	 35		;
RAs5		=	 35		;
RA5		=	 37		;
RAf5		=	 39		;
SOs5		=	 39		;
SO5		=	 42		;
SOf5		=	 44		;
FAs5		=	 44		;
FA5		=	 47		;
MI5		=	 50		;
MIf5		=	 53		;
REs5		=	 53		;
RE5		=	 56		;
REf5		=	 59		;
DOs5		=	 59		;
DO5		=	 63		;
SI4		=	 66		;
SIf4		=	 70		;
RAs4		=	 70		;
RA4		=	 74		;
RAf4		=	 79		;
SOs4		=	 79		;
SO4		=	 84		;
SOf4		=	 89		;
FAs4		=	 89		;
FA4		=	 94		;
MI4		=	 99		;
MIf4		=	105		;
REs4		=	105		;
RE4		=	112		;
REf4		=	118		;
DOs4		=	118		;
DO4		=	125		;
SI3		=	133		;シ
SIf3		=	141		;■半音低
RAs3		=	141		;■半音高
RA3		=	149		;ラ
RAf3		=	158		;■半音低
SOs3		=	158		;■半音高
SO3		=	167		;ソ
SOf3		=	177		;■半音低
FAs3		=	177		;■半音高
FA3		=	188		;ファ
MI3		=	199		;ミ
MIf3		=	211		;■半音低
REs3		=	211		;■半音高
RE3		=	223		;レ
REf3		=	236		;■半音低
DOs3		=	236		;■半音高
DO3		=	251		;ド

;---音長---
L025		=	1		;16分音符
L033		=	2		; 8分音符の3連符
L050		=	3		; 8分音符
L075		=	4		;.8分音符
L100		=	5		; 4分音符
L150		=	6		;.4分音符
L200		=	7		; 2分音符
L250		=	8		; 2分音符+8分音符
L300		=	9		;.2分音符
L350		=	10		;.2分音符+8分音符
L400		=	11		;  全音符
L450		=	12		;  全音符+8分音符
L500		=	13		;  全音符+4分音符
L800		=	14		;  全音符x2
L1600		=	15		;  全音符x4

;-------データーメモリー予約割当--------;

mTEMPO	=	20h			;テンポ用
mTONE	=	21h			;周波数音階設定用
mLONG	=	22h			;曲データー音長用
mPCW	=	23h			;pc+wカウント用
mST_No	=	24h			;
mLOOP	=	25h			;周波数ループ数カウント用
mCT16	=	26h			;音長実行用(9～16ビット)
mCT08	=	27h			;音長実行用(1～ 8ビット)

mWARIXX	=	28h			;割り算被除数桁移動比較用
mWARI32	=	29h			;割り算被除数用(25～32ビット)
mWARI24	=	2Ah			;割り算被除数用(17～24ビット)
mWARI16	=	2Bh			;割り算被除数用( 9～16ビット)
mWARI08	=	2Ch			;割り算被除数用( 1～ 8ビット)
mJOSU08	=	2Dh			;割り算除数用
mWARI_C	=	2Eh			;割り算ループ数カウント用
mSHOW24	=	2Fh			;割り算商用(17～24ビット)
mSHOW16	=	30h			;割り算商用( 9～16ビット)
mSHOW08	=	31h			;割り算商用( 1～ 8ビット)
mFREE_A	=	32h			;割り算比較値8ビット超時の計算用

mTMR_CY	=	33h			;0.0625秒山回数(計算値)
mTMR_CZ	=	34h			;0.0625秒山回数(実行値)
mT_256Y	=	35h			;1/256山(計算値)
mT_256Z	=	36h			;1/256山(実行値)

mFREE_B	=	37h			;有音部終了点算出用
mFREE_C	=	38h			;有音部終了点算出用
mYOUE_Y	=	39h			;有音部終了点(計算値)
mYOUE_Z	=	3Ah			;有音部終了点(実行値)

mNOP	=	3Bh			;nopのwords節約用


;	(メモリー28個使用)
