Compucolor.org – Virtual Media

Listing of file='CHRPRO.MAC;02' on disk='vmedia/asm_utility_4-sideA-sector.ccvf'

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;
;	UTILITY ROUTINES FOR PROCESSING CHARACTERS
;
;	NOTE: IN ALL CASES, THE FOLLOWING APPLY:
;
;	VALUES ON ENTRY:
;	   HL => CHARACTER (IN INPUT BUFFER)
;
;	RETURNS:
;	   A  = PROCESSED CHARACTER
;	  <C> = TEST TRUE (I.E. <NC> = FALSE)
;
;	DESTROYS:
;	   A  REG. ONLY
;
;
;
;	CHECK FOR A LETTER
;
	ENTRY	LETTER

LETTER:	MOV	A,M	;GET CHR
	CPI	'Z'+1	;IS IT A LETTER?
	RNC		;NO
	CPI	'A'	;CHECK OTHER END
	CMC		;SET <C> IF LETTER
	RET

;
;	CHECK FOR A LETTER OR A DIGIT
;
	ENTRY	LETDIG

LETDIG:	CALL	LETTER	;IS IT A LETTER?
	RC		;YES

;
;	CHECK FOR A DIGIT
;
	ENTRY	DIGIT

DIGIT:	MOV	A,M	;GET CHR
	CPI	'9'+1	;IS IT A DIGIT?
	RNC		;NO
	SUI	'0'	;ATTEMPT TO CONVERT TO DIGIT
	CMC		;SET <C> IF DIGIT
	RET

;
;	CONVERT TO UPPER CASE
;
	ENTRY	UPPER

UPPER:	MOV	A,M	;GET CHR
	CALL	LETTER	;ALREADY UPPER CASE?
	RC		;YES
	CPI	'z'+1	;SEE IF LOWER CASE
	RNC		;NOT LC, BUT RETURN IT ANYWAY
	CPI	'a'
	JC	UPP10	;NOT LC, RETURN IT
	SUI	'a'-'A'	;CONVERT IT
	STC		;SET <C> FOR VALID LETTER
	RET
UPP10:	CMC		;<NC> = INVALID
	RET

;
;	TEST FOR WHITE SPACE (SPACE OR TAB)
;

EQU	TAB	9
EQU	SPACE	32

	ENTRY	WHTSPC

WHTSPC:	MOV	A,M	;GET CHR
	CPI	TAB	;TEST IT
	JZ	WHT10
	CPI	SPACE
	JZ	WHT10
	ORA	A	;RETURN WITH <NC>
	RET
WHT10:	STC		;SET <C> IF FOUND
	RET

	END