;*********************************************************
; NAMN		:	CHECK NOVRAM
; PROGRAMMERARE	:	L-O/IND
; DATUM		:	86-10-14
; MODIFIERAD	:	
;*********************************************************
;
; SYFTE		:	Kontrollera att det som skrevs i
;			NOVRAM i modul setnov {r of|r{ndrat
;
; ANROPAS FR]N	:	tknkoll
;
; SUBRUTINER
;    EXTERNA	:	PUTNUM	Konverterar testresultatet
;				till HEX-tecken och
;				anropar PUTCHR
;			PUTCHR	L{gger tkn i tx-buffert
;
;*********************************************************
;
	FORMLN	42
	NAME	CHKNOV

	INCLUDE	TMC.H
;
COMND	EQU	'N'		; Kommando = N
;
; LABLAR:
;
	EXTERN	PUTNUM, PUTCHR
;
	INTERN	CHKNOV
;
	PAGE
;*********************************************************
;
;	Adress = f|rsta i NOVRAM -1
;	R{knare = 0
;	REPEAT "Kontrollera"
;	    \ka adress
;	    CASE "R{knare"
;	        WHEN r{knare < 15
;	            \ka r{knare
;	        OTHERWISE
;	            R{knare = 1
;	    END "R{knare"
;	    J{mf|r LSD i adress mot r{knare
;	    CASE "Error"
;	        WHEN olika
;	            Markera fel
;	            EXIT "Kontrollera"
;	    END "Error"
;	END "Kontrollera" WHEN adress = sista i NOVRAM
;	"PUTCHAR" 'STX'
;	"PUTNUM" testresultat
;	"PUTCHAR" kommando
;
;*********************************************************
;
	RSECT	PROM
;
CHKNOV:
	PUSH	AF
	PUSH	BC
	PUSH	DE
	PUSH	HL
;
	LD	A,01H		; 
	OUT	(NOVOUT),A	; Kopiera till RAM-delen
;
	EX	AF,AF'		;
	SUB	A		; Nollst{ll felmarkeringsreg
	EX	AF,AF'		;
;
	LD	HL,NOVSTA	; F|rsta adr i NOVRAM
	DEC	HL
	LD	DE,NOVEND	; Sista adr i NOVRAM
	LD	A,0F0H		; MS nibble alltid F
LOOP:
	INC	HL		; N{sta adress
	CP	0FFH		; R{knare < 15?
	JP	NC,SETCNT	; Nej
;
	INC	A		; Ja, |ka r{knare
	JP	COMPAR
SETCNT:
	LD	A,0F1H		; R{knare = 1
COMPAR:
	CP	(HL)		; Cellinneh}ll = r{knare?
	JP	Z,READYQ	; Ja
ERROR:
	EX	AF,AF'		; Nej
	LD	A,0FFH		; Markera felet
	EX	AF,AF'
	JP	SNDSTX		; EXIT Loop
READYQ:
	PUSH	HL
	SCF
	CCF
	SBC	HL,DE		; Sista adr i NOVRAM?
	POP	HL
	JP	NZ,LOOP		; Nej
SNDSTX:
	LD	A,STX		; Ja
	CALL	PUTCHR		; Skicka STX
;
	EX	AF,AF'
	CALL	PUTNUM		; Skicka testresultat
;
	LD	A,COMND		;
	CALL	PUTCHR		; Skicka kommandot
;
	POP	HL
	POP	DE
	POP	BC
	POP	AF
;
	RET
;
	END
