;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;                                                                           ;
;                                   ECHO                                    ;
;                           Keyboard Echo Utility                           ;
;                                                                           ;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;Copyright (C) 1987 UltraSoft Corp.  All Rights Reserved.
;
;Written by: David Pallmann
;
;Edit History:
;1.0  06-Jun-87  created. /DFP

       VMAJOR=2
       VMINOR=0

       JCB=A4
       TCB=A5
       ROW=D4
       EXTCHR=D5

       SEARCH  SYS
       SEARCH  SYSSYM
       SEARCH  TRM
       SEARCH  TCRT

START:  PHDR    -1,,PH$REE!PH$REU

       CLS
       TYPECR  Echo keyboard characters and show equivalent values
       TYPECR  Copyright (C) 1987 UltraSoft Corporation.
       CRLF

SETUP:  MOV     JOBCUR,JCB
       PUSHW   JOBTYP(JCB)
       MOV     JOBTRM(JCB),A5
       ORW     #T$DAT!T$ECS,T.STS(TCB)

QUERY1: TYPESP  Translate function keys?
10$:    KBD
       UCS
       CMPB    D1,#'Y
       BEQ     20$
       CMPB    D1,#'N
       BEQ     30$
       TTYI
       BYTE    7,0
       EVEN
       BR      10$
20$:    TYPECR  Yes
       ORW     #T$XLT,T.STS(TCB)
       BR      40$
30$:    TYPECR  No
       ORW     #T$NFK,T.STS(TCB)
40$:

QUERY2: TYPESP  Exit character:
       KBD
       MOVB    D1,EXTCHR
       CALL    IMAGE
       CRLF

HEADER: CRLF
       TYPECR  <Char    Octal   Decimal Hex     Binary>
       CRLF
       MOV     #9.,ROW

LOOP:   KBD
       CMPB    D1,EXTCHR
       JEQ     EXIT

DUMP:   AND     #377,D1
       CALL    CHAR
       CALL    OCTAL
       CALL    DECIMAL
       CALL    HEX
       CALL    BINARY
       CRLF
       INCB    ROW
       CMPB    ROW,#23.
       BLOS    LOOP
       CURSOR  #9.,#1
       DELLIN
       CURSOR  #23.,#1
       BR      LOOP

EXIT:   CURSOR  #24.,#1
       POPW    JOBTYP(JCB)
       EXIT

CHAR:   CALL    IMAGE
       TYPE    <     >
       RTN

OCTAL:  ANDW    #^C<J.HEX>,JOBTYP(JCB)
       OCVT    3,OT$TRM
       TYPE    <     >
       RTN

DECIMAL:
       DCVT    3,OT$TRM!OT$ZER
       TYPE    <.    >
       RTN

HEX:    ORW     #J.HEX,JOBTYP(JCB)
       TYPE    $
       OCVT    2,OT$TRM
       TYPE    <     >
       RTN

BINARY: MOVB    D1,D0
       MOV     #8.,D2
10$:    ROLB    D0
       BCC     20$
       TYPE    1
       BR      30$
20$:    TYPE    0
30$:    SOB     D2,10$
       RTN

IMAGE:  SAVE    D1
       CMPB    D1,#40
       BLO     IM.CTL
       CMPB    D1,#177
       BEQ     IM.DEL
       BHI     IM.NUM
IM.CHR: TTY
       TYPE    <  >
       BR      IM.RTN
IM.DEL: TYPE    DEL
       BR      IM.RTN
IM.NUM: DCVT    3,OT$TRM
       BR      IM.RTN
IM.CTL: ADDB    #'@,D1
       TYPE    ^
       TTY
       TYPESP
IM.RTN: REST    D1
       RTN

       END