.TITLE INPAST .IDENT /V01/ ; D. BARSKY 11/03/82 DP1:[100,2]INPASTB.MAC ; THIS IS AN UNSOLICITED INPUT AST ROUTINE ENTERED WHENEVER ; A CHARACTER IS INPUT ON THE VT100 KEYBOARD. ; #1: INVALID CHAR #6: NA #11: CURSOR UP #16: PF2 ; #2: VALID CHAR #7: NA #12: CURSOR DOWN #17: PF3 ; #3: NEXT FIELD #8: BACKSPACE #13: CURSOR RIGHT #18: PF4 ; #4: LAST FIELD #9: ENTER REC #14: CURSOR LEFT ; #5: DELETE #10: NA #15: PF1 .PSECT INFO,D,GBL,OVR CHARAC: .BLKB 1 FLAG: .BLKB 1 .PSECT $CODE1 .MCALL ASTX$S .MCALL DIR$ .MCALL DSAR$S .MCALL SETF$ INPAST::MOV R1,SAVE MOVB (SP)+,R1 ; ASCII CODE FOR CHARACTER TYPED CMPB R1,#033 ; CHECK FOR 1ST CHARACTER OF BNE CK2 ; ESCAPE SEQUENCE (ESC). MOVB #101.,FLAG ; #101. INDICATES 1ST CHAR NOW READ IN. MOV SAVE,R1 ASTX$S CK2: CMPB FLAG,#101. ; CHECK FOR 2ND ESCAPE SEQUENCE CHAR BNE CK3 ; (DETECTED BY FLAG #101.). MOVB #102.,FLAG ; #102. INDICATES 2ND CHAR NOW READ IN. MOV SAVE,R1 ASTX$S CK3: CMPB FLAG,#102. ; CHECK FOR 3RD ESCAPE SEQUENCE CHAR BNE NOTESC ; (DETECTED BY FLAG #102.). IF NOT, BRANCH. MOVB ARRAY(R1),FLAG ; ESCAPE SEQUENCE - SET FLAG FOR ESCAPE MOV SAVE,R1 ; SEQUENCE PROCESSING. DIR$ #EF DSAR$S ASTX$S NOTESC: MOVB ARRAY(R1),FLAG ; INDIVIDUAL CHARACTER - SET FLAG MOVB R1,CHARAC ; AND STORE THE CHARACTER. CMPB FLAG,#10. ; IF AN ESCAPE SEQUENCE FLAG# (>10) BLT CHAR ; THEN RESET FLAG TO #2. MOVB #2.,FLAG CHAR: MOV SAVE,R1 DIR$ #EF DSAR$S ASTX$S ARRAY: .BYTE 2,1,1,1,1,1,1,1,10,3,1,1,1,11,1,1 .BYTE 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 .BYTE 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2 .BYTE 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2 .BYTE 2,11.,12.,13.,14.,2,2,2,2,2,2,2,2,23.,2,2 .BYTE 15.,16.,17.,18.,2,2,2,2,2,2,2,2,2,2,2,2 .BYTE 2,2,2,2,2,2,2,2,2,2,2,2,30.,34.,22.,2 .BYTE 21.,24.,25.,26.,27.,28.,29.,31.,32.,33.,2,2,2,2,2,5 SAVE: .BLKW EF: SETF$ 1 .END