	.title  GETCHAR -- returns a single character to caller
;                          noecho, and upper-case only.
;
;	Pascal calling sequence -
;
;       	Function Getchar : char; extern;
;
;	Author:	Mark Resmer
;		Vassar College
;		Poughkeepsie
;		NY 12601
;
.PSECT   GETCHAR$DATA, RD, WRT, NOEXE
;
;
ttname:	.ascid	/SYS$INPUT:/		; 
ttchan:	.blkw	1			; for SYS$INPUT channel
ttiosb:	.blkq	1			; define I/O status buffer
retbuf:	.blkl	1			; character buffer
;
;
;
.PSECT	GETCHAR$CODE,  RD, WRT, EXE
;
;
	.ENTRY GETCHAR,0
10$:	$assign_s -
		devnam=ttname, -
		chan=ttchan		; get a channel
	bsbw	error			; check for errors
;
	$qiow_s	func=#io$_readvblk!io$m_cvtlow!io$m_nofiltr!io$m_noecho -
		chan=ttchan, -
		iosb=ttiosb, -
		P1=retbuf, -
		P2=#1			; qiow system service to get char
	bsbw	error			; check for errors
;
	$dassgn_s -
		chan=ttchan		; give back our channel
	bsbw	error			; error check
	movl	retbuf,r0		; set function result
	ret				; and return
;
error:					; error check subroutine
	blbs	r0,10$			; check for an error
	$exit_s	r0			; die ungracefully if system 
					; services dont work...
10$:	rsb				; else return to GETCHAR
;
	.end
