	.PREL
	.IDENT	MUSIC
	.INSERT	HVG.LIB
	.INSERT	MACRO.LIB
	.INSERT	MUSIC.LIB
	.INSERT	BBEQU.ASM
	.RELOC
; DEVICE VARIABLE TO PLAY NOTE WITHOUT PRINTING
PUTMU::	TSTC    '=',LQWHAT
	RSTEXP
	MOV	A,L
	CALL	PNOTE#
	RSTFIN
LQWHAT:	JMP	QWHAT#
; SUBROUTINE TO PLAY A NOTE
PNOTLA::
	PUSH	H
	PUSH	D
	PUSH	PSW
	MOV	H,A
; WAIT FOR PREVIOUS PARAMETERS TO BE EATEN
PRWAIT:	LDA	NEWTMR#
	ANA	A
	JRNZ	PRWAIT	; LOOP
	MOV	A,H
	CPI	63H	; DIVIDE?
	JRZ	PNOTDV
	CPI	62H	; MULTIPLY?
	JRZ	PNOTML
	CPI	'+'
	JRZ	PNOTPL
	CPI	'-'
	JRZ	PNOTMN
	CPI	'0'
	JRZ	PNOTZ
	LXI	H,NOTES-CR
HOOKIN:	INDEXB
	INR	A	; CLICK?
	JRZ	PNOTCL
	INR	A	; AINSWORTH NUMBA?
	JRZ	PNOTNO
	DCR	A
	DCR	A
	STA	MUZTON#
	LDA	DEVTEM#
	STA	NEWTMR#
PNOTCL:	XRA	A
PSHARP:	STA	SHARPF#
PNOTC1:	POP	PSW
	POP	D
	POP	H
	RET
PNOTDV:	MVI	A,OA1
PNOTD1:	STA	MUZMO#
	JMPR	PNOTC1
PNOTML:	MVI	A,OA3
	JMPR	PNOTD1
PNOTPL:	MVI	A,1
	.BYTE	11H	; OPCODE TO MUNCH NEXT TWO BYTES INTO DE
PNOTMN:	MVI	A,2
	JMPR	PSHARP
PNOTZ:	LXI	H,MUZTMR#
	LDA	DEVTEM#
	DI
	ADD	M
	MOV	M,A
	EI
	JMPR	PNOTC1
; PLAY AINSWORTH NOTE
PNOTNO:	LDA	SHARPF#	; RESTORE CHARACTER
	INDEXW	1
	.WORD	DICKY
	XCHG	
	POP	PSW
	PUSH	PSW
	SUI	'1'
	JMPR	HOOKIN
; MUSIC TABLES
DICKY:	.WORD	MUZNOR
	.WORD	MUZMAX
	.WORD	MUZMIN
MUZMIN:	
	.BYTE	B1
	.BYTE	CS2
	.BYTE	DS2
	.BYTE	E2
	.BYTE	FS2
	.BYTE	GS2
	.BYTE	AS2
MUZNOR:	
	.BYTE	C2
	.BYTE	D2
	.BYTE	E2
	.BYTE	F2
	.BYTE	G2
	.BYTE	A2
	.BYTE	B2
; TONE GENERATION TABLE - ORDERED BY ASCII CHARACTER
CLICK	==	0FFH
NUMBA	==	0FEH
NOTES::	.BYTE	CLICK	; CR
; IRRELEVANT STUFF TO EAT TABLE SPACE
	.WORD	0,0,0,0,0
MUZMAX:	
	.BYTE	CS2
	.BYTE	DS2
	.BYTE	F2
	.BYTE	FS2
	.BYTE	GS2
	.BYTE	AS2
	.BYTE	C3
; AND THE TABLE CONTINUES
	.BYTE	CLICK
	.BYTE	0
	.BYTE	A0
	.BYTE	AS0
	.BYTE	B0
	.BYTE	C1
	.BYTE	CS1
	.BYTE	D1
	.BYTE	DS1
	.BYTE	E1
	.BYTE	F1
	.BYTE	FS1
	.BYTE	CLICK
	.BYTE	GS1
	.BYTE	CLICK
	.BYTE	AS1
	.BYTE	B1
	.BYTE	CLICK
	.BYTE	NUMBA
	.BYTE	NUMBA
	.BYTE	NUMBA
	.BYTE	NUMBA
	.BYTE	NUMBA
	.BYTE	NUMBA
	.BYTE	NUMBA
	.BYTE	C3
	.BYTE	CS3
	.BYTE	D3
	.BYTE	DS3
	.BYTE	E3
	.BYTE	F3
	.BYTE	FS3
	.BYTE	G3
	.BYTE	GS3
	.BYTE	A3
	.BYTE	AS3
	.BYTE	B3
	.BYTE	C4
	.BYTE	CS4
	.BYTE	D4
	.BYTE	DS4
	.BYTE	E4
	.BYTE	F4
	.BYTE	FS4
	.BYTE	G4
	.BYTE	GS4
	.BYTE	A4
	.BYTE	C5
	.BYTE	CS5
	.BYTE	DS5
	.BYTE	F5
	.BYTE	G5
	.BYTE	A5
	.BYTE	C6
	.BYTE	DS6
	.BYTE	G6
	.BYTE	C7
	.BYTE	G7
	.BYTE	B1
	.BYTE	C2
	.BYTE	CS2
	.BYTE	D2
	.BYTE	DS2
	.BYTE	E2
	.BYTE	F2
	.BYTE	FS2
	.BYTE	G2
	.BYTE	CLICK
	.BYTE	CLICK
	.END
                                                                                                                        