;MACRO LIBRARY FILE

;19/07/2009

.MACRO	LDIDE	;value to load
		LDI		D,high(@0)
		LDI		E,low(@0)
.ENDM

.MACRO	LDIHL	;value to load
		LDI		H,high(@0)
		LDI		L,low(@0)
.ENDM

.MACRO	LDIX	;value to load
		LDI		XH,high(@0)
		LDI		XL,low(@0)
.ENDM

.MACRO	LDIY	;value to load
		LDI		YH,high(@0)
		LDI		YL,low(@0)
.ENDM

.MACRO	LDIZ	;value to load
		LDI		ZH,high(@0)
		LDI		ZL,low(@0)
.ENDM

.MACRO	DJNZ	;Z80 decrement and jump not zero
		DEC		B
		BRNE	@0
.ENDM

;Display a character at a specified position on the LCD
.MACRO	DISP@	;Position,Char
		LDI	A,@0
		RCALL	lcd_cmd
		LDI	A,@1
		RCALL	lcd_data
.ENDM

;clear screen and display msg
.MACRO	DISPLAY
		LDI		ZH,high(2*@0)
		LDI		ZL,low(2*@0)
		RCALL	lcd_msg
.ENDM

;display message without clear
.MACRO	DISPX
		LDI		ZH,high(2*@0)
		LDI		ZL,low(2*@0)
		RCALL	nxch3
.ENDM

;set csr position
.MACRO	SETCSR
		LDI		A,@0
		RCALL	lcd_cmd
.ENDM

.MACRO	WRNUM24		;position,predp,postdp. 16 bit variable in HL
	RCALL	CNV7B	;convert to BCD
	LDI		A,@0	;position
;	LDI		B,@1
;	LDI		C,@2
	RCALL	wrnumb	;display it
.ENDM

.MACRO	WRNUM16		;position,predp,postdp. 16 bit variable in HL
	RCALL	CNV5B	;convert to BCD
	LDI		A,@0	;position
	LDI		B,@1
	LDI		C,@2
	RCALL	wrnumb	;display it
.ENDM

.MACRO	WRNUM8		;position.  8 bit data in L
	LDIX	nbuf
	CLR		H
	RCALL	CNV3D
	LDI		A,@0
	LDI		B,3	
	CLR		C
	RCALL	wrnumb
.ENDM

;Stop counting
.MACRO	STOP_COUNT
		CLR		A
		OUT		TCCR0B,A
.ENDM

;Start counting - T1 can't count until T0 starts!
.MACRO	START_COUNT
		LDI		A,1			;enable T0, prescale=1
		OUT		TCCR0B,A	
.ENDM

;Clear count fo T0/T1 including OC0b
.MACRO	CLR_COUNT
		CLR		A
		OUT		TCNT0,A		;clear T0

		LDI		A,0x40
		SBIC	PIND,PD5
		OUT		TCCR0B,A	;Clear toggle bit if needed
		SER		A
		OUT		OCR0B,A		;set o/p compare register

		CLR		A
		OUT		TCNT1H,A
		OUT		TCNT1L,A	;clear T1
.ENDM

;Get a record from table @0, using @1 record length. Record# in A
.MACRO	GET_RECORD
		LDIZ	2*@0	;point to table
		LDI		B,@1	;No of bytes/record		
		RCALL	gtrcd	;get data into HL
.ENDM
