; DISPVAL.ASM  DISPLAY VALUES FROM A REGISTER ON THE LED-8 DISPLAY
; (BYTE VALUES FROM REAL TIME CLOCK ARE 2 BINARY CODED DECIMAL NIBBLES)

DISPBUF EQU	0C000H		;START OF USER RAM

	ORG	8000H		;MUST ALWAYS BE ORG'ED AT 8000H FOR SBC-1

DISPVAL:CLR	C		;(C3 HEX) NEEDED FOR SBC-1 MACHINE CODE
REPEAT:

	MOV	DPTR,#DISPBUF	;POINT TO DISPLAY BUFFER
	MOV	A,#'S'		;PLACE SOME CHARACTERS IN THE DISPLAY BUFFER
	MOVX	@DPTR,A		;STORE CHARACTER INTO DISPLAY BUFFER
	INC	DPTR		;POINT TO NEXT CHARACTER IN DISPLAY BUFFER
	MOV	A,#'E'		;PLACE SOME CHARACTERS IN THE DISPLAY BUFFER
	MOVX	@DPTR,A		;STORE CHARACTER INTO DISPLAY BUFFER
	INC	DPTR		;POINT TO NEXT CHARACTER IN DISPLAY BUFFER
	MOV	A,#'C'		;PLACE SOME CHARACTERS IN THE DISPLAY BUFFER
	MOVX	@DPTR,A		;STORE CHARACTER INTO DISPLAY BUFFER
	INC	DPTR		;POINT TO NEXT CHARACTER IN DISPLAY BUFFER
	MOV	A,#'S'		;PLACE SOME CHARACTERS IN THE DISPLAY BUFFER
	MOVX	@DPTR,A		;STORE CHARACTER INTO DISPLAY BUFFER
	INC	DPTR		;POINT TO NEXT CHARACTER IN DISPLAY BUFFER
	MOV	A,#'='		;PLACE SOME CHARACTERS IN THE DISPLAY BUFFER
	MOVX	@DPTR,A		;STORE CHARACTER INTO DISPLAY BUFFER
	INC	DPTR		;POINT TO NEXT CHARACTER IN DISPLAY BUFFER

	CALL	66H		;READ REAL TIME CLOCK ROUTINE IN JUMP TABLE
	MOV	DPTR,#0DFE7H	;POINT TO SECONDS IN RAM
	MOVX	A,@DPTR		;GET THE SECONDS FROM THE CLOCK
	PUSH	ACC		;SAVE THE LOW NIBBLE IN ACC
	SWAP	A		;SWAP THE HIGH NIBBLE INTO THE LOW NIBBLE
	ANL	A,#0FH		;LOOK ONLY AT LOWER NIBBLE
	ADD	A,#30H		;ADD AN OFFSET TO MAKE IT AN ASCII CHARACTER
	MOV	DPTR,#DISPBUF+5	;POINT TO DISPLAY BUFFER
	MOVX	@DPTR,A		;STORE CHARACTER INTO DISPLAY BUFFER
	POP	ACC		;RESTORE LOW NIBBLE OF CLOCK INTO THE ACC
	ANL	A,#0FH		;LOOK ONLY AT LOWER NIBBLE
	ADD	A,#30H		;ADD AN OFFSET TO MAKE IT AN ASCII CHARACTER
	MOV	DPTR,#DISPBUF+6	;POINT TO DISPLAY BUFFER
	MOVX	@DPTR,A		;STORE CHARACTER INTO DISPLAY BUFFER

	MOV	A,#0		;CHARACTER STRING MUST END WITH A ZER0
	MOV	DPTR,#DISPBUF+7	;POINT TO DISPLAY BUFFER
	MOVX	@DPTR,A		;STORE CHARACTER INTO DISPLAY BUFFER

	MOV	DPTR,#DISPBUF	;POINT TO THIS DISPLAY BUFFER
	CALL	60H		;WRITE EXTERNAL LED DISPLAY ROUTINE IN JUMP TABLE

	MOV	A,#1		;NUMBER OF SECONDS GOES IN ACCUMULATOR
	CALL	48H		;DELAY IN SECONDS ROUTINE IN JUMP TABLE
	JMP	REPEAT		;DO AGAIN

	END			;REQUIRED FOR MANY ASSEMBLERS
