; Doug's Programming Language  -- DPL, Version 2.22
; Copyright (c) 1988 Douglas S. Cody, All rights reserved.
;----------------------------------------
; TRIM  --  THIS PROGRAM TRIMS TRAILING BLANKS FROM AN ASCIIZ STRING
;
; Entry Conditions:
;	AX holds the string address
; Exit conditions:
;	Assume all working registers modified
;
; Calling Example:
;
;	DEFINE	M00'THIS STRING IS PADDED                '
;	;
;	CALL	TRIM M00
;
; Calling results:
;
;	M00 = 'THIS STRING IS PADDED'
;
SUBPGM	TRIM
BEGIN	TRIM
	EXTRN	_STREND:NEAR
	PUSH	ES
	PUSH	SI
;
	PUSH	DS
	POP	ES
;
	MOV	SI,AX			; SETUP THE STRING PTR
	CALL	_STREND			; GET THE LENGTH
	JCXZ	TRM10			; EXIT IF NULL
	STD				; MOVE BACKWARD
	XCHG	DI,SI			; DI POINTS TO THE END OF LINE
	MOV	AL,20H
	DEC	DI			; POINT TO THE 1ST CHARACTER
;
TRM05:
	REPE	SCASB			; SCAN ALL BLANKS
	INC	DI			; MOVE BACK TO THE NON-MATCH
	JCXZ	TRM07			; IF ALL BLANK KILL THE WHOLE STRING
	INC	DI
;
TRM07:
	MOV	BYTE PTR [DI],0		; CUT IT OFF
	CLD				; FORWARD DIRECTION
;
TRM10:
	XCHG	DI,SI
	POP	SI
	POP	ES
	RET
;
ENDPGM	TRIM
;
