;*********************************************************
; NAMN		:	PUTCHAR					
; PROGRAMMERARE	:	L-O/IND					
; DATUM		:	86-10-14
; MODIFIERAD	:
;*********************************************************
;
; SYFTE		:	L{gger tecken i tx-buffert
;
; ANROPAS FR]N	:	Test-modulerna och putnum
;
; SUBRUTINER
;    EXTERNA	:	ENABLE	Enablar txirq
;
;*********************************************************
;
	FORMLN	42
	NAME	PUTCHAR

	INCLUDE TMC.H
;
; VARIABLER:
;
	EXTERN	TXBUFF, TXHEDP, NCHRTX, TXSTAT
;
; LABLAR:
;
	EXTERN	ENABLE
;
	INTERN	PUTCHR
;
	PAGE
;*********************************************************
;
; V{nta tills plats finns i tx-buffert WHEN full
; Disable interrupt
; Stoppa tecken i tx-buffert
; R{kna upp teckenr{knaren
; "ENABLE TXIRQ" WHEN txstat = xon
; Enable interrupt
;
;*********************************************************
;
	RSECT	PROM
;
PUTCHR:
	PUSH	BC
	PUSH	DE
	PUSH	HL
	LD	D,A		; Spara tecknet
FULLQ:
	LD	A,(NCHRTX)	;
	CP	BUFSIZ-1	; V{nta tills plats finns
	JP	Z,FULLQ		;
	DI
;
	LD	HL,(TXHEDP)	; L{gg tecknet i
	LD	(HL),D		; ringbuffert
;
	INC	HL		;
	LD	BC,TXBUFF+BUFSIZ; Huvud = sista adress
	SCF			; i ringbuffert?
	CCF			;
	SBC	HL,BC		;
	JP	NZ,NXTADR	; Nej
FSTADR:
	LD	HL,TXBUFF	; Ja, huvud = f|rsta adr
	LD	(TXHEDP),HL	;
	JP	CHRCNT
NXTADR:
	LD	HL,(TXHEDP)	; huvud = n{sta adr
	INC	HL		;
	LD	(TXHEDP),HL	;
CHRCNT:
	LD	HL,NCHRTX	; \ka teckenr{knare
	INC	(HL)		;
;
	LD	A,(TXSTAT)	;
	CP	XON		; Tx-status = XON?
	JP	NZ,RETURN	; Nej
;
	CALL	ENABLE		; Enable txirq
RETURN:
	EI
	POP	HL
	POP	DE
	POP	BC
	RET
;
	END
