	.ORIG   x3000
	ADD	R0,R0,#0        ;; Test for negative
	BRn	Ret3

	LD	R1,M127		;; Test with 127
	ADD	R1,R0,R1
	BRz	Ret2
	BRp	Ret3

	LD	R1,M32		;; Test if control character
	ADD	R1,R0,R1
	BRn	Ret2

	LD	R1,M64		;; Test if in letter range
	ADD	R1,R0,R1
	BRzp	LetRan

	LD	R1,MAsc0	;; Test if < '0'
	ADD	R1,R0,R1
	BRn	Ret1

	LD	R1,MAsc9	;; Test if > '0'
	ADD	R1,R0,R1
	BRp	Ret1
	
	BR	Ret0		;; Seems to be a digit

LetRan	LD	R1,AscMsk	;; Upcase R0
	AND	R0,R0,R1

	LD	R1,MAscA	;; Test if < 'A'
	ADD	R1,R0,R1
	BRn	Ret1

	LD	R1,MAscZ	;; Test if > 'Z'
	ADD	R1,R0,R1
	BRp	Ret1

				;; Seems to be a letter

Ret0	AND	R0,R0,#0
	RET
Ret1	AND	R0,R0,#0
	ADD	R0,R0,#1
	RET
Ret2	AND	R0,R0,#0
	ADD	R0,R0,#2
	RET
Ret3	AND	R0,R0,#0
	ADD	R0,R0,#3
	RET

M32     .FILL   #-32
M64	.FILL	#-64
M127	.FILL	#-127
MAsc0	.FILL	#-48
MAsc9	.FILL	#-57
MAscA	.FILL	#-65
MAscZ	.FILL	#-90
AscMsk	.FILL	xFFDF
	.END
