;               FSTFLD.SBR - Clean Fast Field Sub-Routine
;
; Original Version : INKEY.M68 Written by Richard Kipp
;                                         Constant Care Medical Center
;
; Published in AMUS - 10/83
;
; Modified by INKEY.M68 Jim Barouski, NPI 4/1/87
;
; This subroutine can easily replace ACCEPT.SBR. In fact, it has many more
; benefits that ACCEPT.SBR does not provide. For instance :
;
;       1. NOECHO.SBR is not required
;       2. ECHO.SBR is not required either.
;       3. Provides Fast Field with "Invisible Character Entry"
;               (Similar to Password entry upon account logging)
;       4. On some Terminal Drivers, ^Z will clear a Screen,
;          This subroutine will not. (At least not on FLPCOL.TDV)
;       5. Does not make the terminal go bozo when ^Q or ^S (XON,XOFF) is hit.
;       6. Will not "DING" the keyboard if ^G is hit.
;       7. Returns Character and not Character ASCII Value although ASCII
;               value can be obtained from BASIC
;
;       XCALL FSTFLD,char               ! Get 1 Character
;       AV=ASC(char)                    ! Set ASCII value of variable char
;                                       ! into field AV
;
       SEARCH  SYS
       SEARCH  SYSSYM

       VMAJOR=1
       VMINOR=0
       VSUB=1
       VEDIT=100

       OBJNAM  .SBR

       PHDR    -1,PV$RPD!PV$WPD,PH$REU ; Reusable / Read & write to disk

BEGIN:
       CTRLC   REXIT           ; on ^C return to BASIC
       JOBIDX  A0              ; Move address of Job Control to A0
       MOV     JOBTRM(A0),A2   ; Move address of terminal status to A2
       ORW     #3,@A2          ; Set image mode & noecho flags
GETCHR:
       TIN                     ; GET CHaRacter from terminal
MOVCHR:
       INC     A3              ; add 4 to Register A3 so that it now
       INC     A3              ; points to the absolute address of
       INC     A3              ; the variable listed as the first
       INC     A3              ; XCALL argument

       MOV     @A3,A4          ; move second word of argument list to
                               ; A4 (move address of variable to A4).
       MOVB    D1,@A4          ; MOVe input CHR to BASIC variable
REXIT:
       RTN

       EVEN
       END