;***************************************************************************; ; ; ; GET ; ; Subroutine to wait for a single character ; ; ; ;***************************************************************************; ;Copyright (C) 1986 by UltraSoft. All Rights Reserved. ; ;Written by: David Pallmann ; ;Usage: XCALL GET, {string_variable} ; ;Notes: this routine waits for a character to be input ; ;Assembly instructions: .M68 GET << creates GET.SBR ; ;Edit History: ;1.0 01-Jan-86 created. /DFP ;1.1 03-Jun-86 add error checking just for Brad. /DFP VMAJOR=1 VMINOR=1 OBJNAM .SBR SEARCH SYS SEARCH SYSSYM SEARCH TRM ;AlphaBASIC sets up XCALL argument list this way, indexed by A3: .OFINI .OFDEF XC.ARG,2 ; number of arguments in XCALL .OFDEF XC.TY1,2 ; argument #1 - type code .OFDEF XC.AD1,4 ; argument #1 - address .OFDEF XC.SZ1,4 ; argument #1 - size .OFSIZ XC.SIZ XC$STR=2 ; type code for string arguments GET: PHDR -1,PV$RSM!PV$WSM,PH$REE!PH$REU ; program header CMMW XC.ARG(A3),#1 ; one argument specified in XCALL? BNE ARGERR ; nope CMMW XC.TY1(A3),#XC$STR ; is argument a string? BNE TYPERR ; uh-uh JOBIDX A5 ; index JCB with A5 MOV JOBTRM(A5),A4 ; index TCB with A4 ORW #T$IMI!T$ECS,T.STS(A4) ; set image mode, no-echo KBD ; get a char into D1 MOV XC.AD1(A3),A0 ; index string var MOVB D1,@A0 ; return char ANDW #^C<T$IMI!T$ECS>,T.STS(A4) ; set line mode w/echo RTN ; return ARGERR: TYPESP ?Argument count BR ERROR TYPERR: TYPESP ?Argument type ERROR: TYPECR error in GET.SBR EXIT ; exit on error END