TRIM:		PUSH AX
		PUSH CX
		PUSH DX
		PUSH BX
		PUSH SI
		PUSH DI
		CLD
		LODSB
		XOR AH, AH
		MOV CX, AX
		ADD CX, SI
		XOR AL, AL
		MOV BX, DI
		STOSW
		MOV DX, DI
TRIML:		LODSB
		MOV AH, AL
		OR AL, AL
		JZ TRIM0
		CMP AL, 0DH
		JZ TRIM0
		CMP AL, 21H
		JC TSKIP
		CMP AL, 22H
		JZ TQUO
		CMP AL, 27H
		JZ TQUO
		CMP AL, 2CH
		JZ TSKIP
		CMP AL, 2EH
		JZ TLTR
		CMP AL, 2FH
		JNA TSYM
		CMP AL, 39H
		JNA TLTR
		CMP AL, 3BH
		JZ TRIM0
		CMP AL, 3FH
		JNA TSYM
		CMP AL, 40H
		JZ TLTR
		CMP AL, 5AH
		JNA TLTRU
		CMP AL, 5FH
		JZ TLTR
		CMP AL, 60H
		JNA TSYM
		CMP AL, 7AH
		JNA TLTR
		CMP AL, 7FH
		JNA TSYM
TSKIP:		CMP DI, DX
		JA TNEW
		CMP SI, CX
		JC TRIML
		JMP SHORT TNEW
TRIM0:		MOV SI, CX
		JMP SHORT TNEW
TLTRU:		OR AL, 20H
TLTR:		STOSB
		CMP SI, CX
		JC TRIML
		JMP SHORT TNEW
TSYM:		CMP DI, DX
		JA TNKP
		STOSB
		JMP SHORT TNEW
TQUO:		CMP DI, DX
		JNA TQUOL
TNKP:		DEC SI
		JMP SHORT TNEW
TQUOL:		STOSB
		LODSB
		OR AL, AL
		JZ TRIM0
		CMP AL, 0DH
		JZ TRIM0
		CMP AL, AH
		JZ TQUOW
		CMP SI, CX
		JC TQUOL
TQUOW:		STOSB
TNEW:		MOV AX, DI
		SUB AX, DX
		JNA TNEW0
		PUSH DI
		MOV DI, DX
		DEC DI
		STOSB
		POP DI
		INC DI
		MOV DX, DI
		INC BYTE PTR [BX]
TNEW0:		CMP SI, CX
		JNC TRIMX
		JMP TRIML
TRIMX:		DEC DI
		XOR AL, AL
		STOSB
		POP DI
		POP SI
		POP BX
		POP DX
		POP CX
		POP AX
		RET
