;*********************************************************
; NAMN		:	TECKENKOLL
; PROGRAMMERARE	:	L-O/IND
; DATUM		:	86-10-14
; MODIFIERAD	:	
;*********************************************************
;
; SYFTE		:	Tolka tecknen fr}n rx-buffert och
;			anropa aktuellt test
;
; ANROPAS FR]N	:	ipret
;
; SUBRUTINER
;    EXTERNA	:	RAMTST	Testar RAM
;			PRMTST	Testar PROM
;			INSIG	L{ser p} portarna
;			OUTSIG	Skriver p} portarna
;			WDGTST	Testar Watchdog
;			RSTTST	Testar Reset
;			SETNOV	Fyller NOVRAM
;			CHKNOV	Kollar NOVRAM
;			SIOTEST Testar SIOn
;			ENABLE	Enablar txirq
;
;*********************************************************
;
	FORMLN	42
	NAME	TKNKOLL

	INCLUDE	TMC.H
;
; VARIABLER:
;
	EXTERN	PARAM, PARAMP, STXFLG
;
; LABLAR:
;
	EXTERN	RAMTST, PRMTST, INSIG, OUTSIG
	EXTERN	WDGTST, RSTTST, SETNOV, CHKNOV, SIOTEST
;
	INTERN	CHRCHK, OTHRCH
;
;*********************************************************
;
	RSECT	PROM
;
TSTTAB:
	DEFW	RAMTST
	DEFW	PRMTST
	DEFW	INSIG
	DEFW	OUTSIG
	DEFW	WDGTST
	DEFW	RSTTST
	DEFW	SETNOV
	DEFW	CHKNOV
	DEFW	SIOTEST
TSTEND:
;
	PAGE
;*********************************************************
;
; Omvandla till stor bokstav WHEN liten bokstav
; CASE "Teckenkoll" 
;     WHEN ';' 
;         Parameterpekare |kas
;     WHEN '0' - 'F'
;         L{gg till i parametern
;     WHEN kommando
;         Parameterpekare = P(0)
;         Gosub "TEST"
;         STX-flagga = off
;     OTHERWISE
;         STX-flagga = off
; END "Teckenkoll"
;
;*********************************************************
;
CHRCHK:
	LD	A,'Z'		;
	SUB	D		; Liten bokstav?
	JP	NC,SEMICQ	; Nej
;
	LD	A,0DFH		; Ja
	AND	D		; G|r om till stor
	LD	D,A		;
SEMICQ:
	LD	A,D
	CP	';'
	JP	NZ,PARAMQ	; Nej
;
	LD	HL,(PARAMP)	; Ja
	INC	HL		;
	INC	HL		;
	LD	BC,PARAM+NPARAM	;
	LD	A,H		;
	CP	B		; Sista adr i parameterarean?
	JP	NZ,NXTPAR	;
	LD	A,L		;
	CP	C		;
	JP	NZ,NXTPAR	;
;
	RET			; Ja
NXTPAR:
	LD	(PARAMP),HL	; Nej, justera parameterpekare
	RET
PARAMQ:
	SUB	'0'		; >= '0'?  (ASCII till HEX)
	JP	C,OTHRCH	; Nej
	CP	10		; <= '9'?
	JP	C,PUTPAR	; Ja
;
	LD	A,D		; Nej
	SUB	'A'		; >= 'A'?
	JP	C,OTHRCH	; Nej
	CP	6		; <= 'F'?
	JP	NC,COMNDQ	; Nej
	ADD	A,0AH		; Till HEX
PUTPAR:
	LD	HL,(PARAMP)	;
	RLD			;
	INC	HL		;
	RLD			; L{gg tkn i parametern
	DEC	HL		;
	RET
COMNDQ:
	LD	A,D
	SUB	'G'		; >= 'G'?
	JP	C,OTHRCH	; Nej
;
	LD	A,TSTEND-TSTTAB	; Ja
	SRL	A		; Antal befintliga tester
	ADD	A,'F'
	SUB	D		; Finns testet?
	JP	C,OTHRCH	; Nej
;
	LD	HL,PARAM	; Ja
	LD	(PARAMP),HL	; 
	LD	HL,OTHRCH	;
	PUSH	HL		; ]terhoppsadress efter test
;
	LD	A,D		; 
	SUB	'G'		;
	SLA	A		;
	LD	HL,TSTTAB	; Indexering till test
	LD	C,A		;
	LD	B,0		;
	ADD	HL,BC		;
	LD	C,(HL)		;
	INC	HL		;
	LD	B,(HL)		;
	LD	H,B		;
	LD	L,C		;
;
	JP	(HL)		; Hopp till test
OTHRCH:
	LD	HL,STXFLG
	LD	(HL),FALSE
;
	RET
;
	END
