; EEPROM.ASM  WRITE CHARACTERS TO EEPROM AND DISPLAY THEM AFTER POWER OFF

	ORG	8000H		;MUST ALWAYS BE ORG'ED AT 8000H FOR SBC-1

EEPROM:	CLR	C		;(C3 HEX) NEEDED FOR SBC-1 MACHINE CODE
REPEAT:	MOV	DPTR,#MSG	;POINT TO MESSAGE
	CALL	3FH		;SERIAL STRING OUT ROUTINE IN JUMP TABLE

	CALL	36H		;SERIAL IN WITH ECHO FUNCTION IN JUMP TABLE
	CJNE	A,#31H,M2	;CHECK FOR "1"
	CALL	WRITE		;WRITE EEPROM
	JMP	REPEAT
M2:	CJNE	A,#32H,M3	;CHECK FOR "2"
	CALL	READ		;READ EEPROM
	JMP	REPEAT
M3:	CJNE	A,#33H,M4	;CHECK FOR "3"
	JMP	0		;SBC-1 RESET
M4:	JMP	REPEAT		;DO AGAIN



WRITE:	MOV	DPTR,#WMSG	;POINT TO MESSAGE
	CALL	3FH		;SERIAL STRING OUT ROUTINE IN JUMP TABLE
	MOV	R2,#10		;WRITE 10 CHARACTERS
	MOV	DPTR,#9F00H	;POINT TO USER EEPROM AREA
WRLOOP:	CALL	36H		;SERIAL IN WITH ECHO FUNCTION IN JUMP TABLE
	CALL	5DH		;WRITE EEPROM ROUTINE IN JUMP TABLE
	INC	DPTR		;POINT TO NEXT EEPROM LOCATION
	DJNZ	R2,WRLOOP	;KEEP GOING UNTIL DONE
	INC	DPTR		;POINT TO NEXT EEPROM LOCATION
	MOV	A,#0		;TERMINATE STRING WITH ZERO
	CALL	5DH		;WRITE EEPROM ROUTINE IN JUMP TABLE
	RET

READ:	MOV	DPTR,#RMSG	;POINT TO MESSAGE
	CALL	3FH		;SERIAL STRING OUT ROUTINE IN JUMP TABLE
	MOV	DPTR,#9F00H	;POINT TO BUFFER
	CALL	3FH		;SERIAL STRING OUT ROUTINE IN JUMP TABLE
	RET

MSG:	DB	0DH,0AH,0DH,0AH,'EEPROM storage demo',0AH,0DH
	DB	'1=Write',0DH,0AH
	DB	'2=Read',0DH,0AH
	DB	'3=Exit',0DH,0AH
	DB	'Enter 1, 2, or 3:',0DH,0AH,0
WMSG:	DB	0DH,0AH,'Enter 10 characters to store:',0
RMSG:	DB	0DH,0AH,'Characters stored:',0


	END			;REQUIRED FOR MANY ASSEMBLERS
