; Doug's Programming Language  -- DPL, Version 2.22
; Copyright (c) 1988 Douglas S. Cody, All rights reserved.
;--------------------------------
; UPRCS  --  Convert all ASCIIZ string characters to uppercase
;
; Entry Conditions:
;	AX holds the string offset
; Exit conditions:
;	Assume all working registers modified
;
; Calling Example:
;
;	DEFINE	M00,'this is a test...'
;	;
;	CALL	UPRCS M00
;
; Calling results:
;
;	M00 = 'THIS IS A TEST...'
;	
SUBPGM	UPRCS
BEGIN	UPRCS
	PUSH	ES
	PUSH	DS
	POP	ES
	PUSH	SI
	PUSH	DI
	MOV	SI,AX		; SI WILL LEAD 
	MOV	DI,AX		; DI WILL FOLLOW UP
	MOV	BX,07A61H	; BH='z', BL='a'
;
U05:
	LODSB			; FETCH THE BYTE
	OR	AL,AL		; EOL?
	JZ	U15		; YES, EXIT NOW...
	CMP	AL,BL		; IS IT LESS THAN 'a'?
	JB	U10		; YES, SKIP CONVERSION
	CMP	AL,BH		; GREATER THAN 'z'?
	JA	U10		; YES, SKIP CONVERSION
	AND	AL,5FH		; CLEAR THE LOWERCASE BIT
;
U10:
	STOSB			; SAVE THE CHARACTER
	JMP	SHORT U05	; CONTINUE TILL DONE...
;
U15:
	POP	DI
	POP	SI
	POP	ES
	RET
;
ENDPGM	UPRCS
;
