.TITLE INFTER ; ;SECTION TO LIST ALL CHARACTERISTICS OF A TERMINAL ; .MCALL DIR$,QIOW$,GMCR$,ALUN$ .enable lc .MCALL TTSYM$ TTSYM$ ;MAKE SURE WE HAVE CURRENT VALUES ; ; F. BORGER ; DEPT OF MEDICAL PHYSICS ; MICHAEL REESE MEDICAL CENTER ; CHICAGO IL ; .PAGE .SBTTL MAIN CODE ; TER:: MOV #MCRBUF,R0 ;GET START OF COMMAND LINE MOV R0,R1 ;PUT IN R1 ADD MCRSIZ,R1 ;END OF LINE POINTER 1$: CMPB (R0)+,#40 ;A SPACE ? BEQ 2$ ;YES, LOOK FOR DEVICE NAME CMP R0,R1 ;AT TERMINATOR BLT 1$ JMP BADDEV ;SAY BAD DEVICE 2$: CMPB (R0)+,#40 ;A SPACE ? BEQ 3$ ;YES, HAVE DEVICE NAME CMP R0,R1 ;AT TERMINATOR BLT 2$ JMP BADDEV ;SAY BAD DEVICE 3$: MOVB (R0)+,ASSIGN+A.LUNA ;PUT NAME IN ASSIGN DPB MOVB (R0)+,ASSIGN+A.LUNA+1 MOVB (R0)+,DEVNUM ;SAVE ASCII DEV NUMBER MOVB (R0)+,DEVNUM+1 ;AS NN OR N: MOVB DEVNUM,R1 ;GET 1ST CHAR OF DEVNUMBER CMPB #72,R1 ;IS 1ST CHAR OF R1 A ':' ? BNE DEVNOZ ;NO NOT 0 DEVICE CLR DEVNUM ;SET DEVNUM TO 0 BR DVNMOK ;AND FORGET FURTHER DECODING DEVNOZ: MOV DEVNUM,R3 ;SET IN R3 FOR DIVIDE CLR R2 ;CLEAR UPPER REG DIV #256.,R2 ;DIV BY 256 1ST DIG IN R3 (REM) ;2ND DIGIT IN R2 CMP #72,R2 ;IS 2ND CHAR A ':' BNE NMGT10 ;NO, DEV# GT 10 MOV R3,DEVNUM ;SAVE ASCII DIGIT SUB #60,DEVNUM ;AND CONVERT TO AN OCTAL NUMBER BR DVNMOK ;DECODING DONE NMGT10: SUB #60,R3 ;CONVERT REGS TO A BIN NUM SUB #60,R2 ;DO SAME FOR R2 MUL #10,R3 ;MULTIPLY 1ST DIGIT BY 10 ADD R2,R3 ;R3 NOW =DEV# MOV R3,DEVNUM ;AND SAVE IT DVNMOK: MOV DEVNUM,ASSIGN+A.LUNU ;PUT OCTAL NUMBER IN ASSIGN DPB DIR$ #ASSIGN ;RE-ASSIGN THIS LUN TST @#0 ;CHECK DIR STATUS BMI BADDEV ;BAD DEVICE IF ASSIGN FAILS DIR$ #GETTYP ;GET THAT TERMINAL TYPE INFO MOV #TYP1,R0 ;R0 -> OUTPUT BUFFER MOVB BUFF+1,R1 ;GET TERMINAL TYPE NUMBER BEQ NODEV ;BR IF HARDWARE NOT THERE MUL #6,R1 ;MAKE IT 6 CHARACTER OFFSET ADD #TERTYP,R1 ;ADD IN BASE OF NAME BUFFER MOV #6,R3 ;LOOP COUNT 1$: MOVB (R1)+,(R0)+ SOB R3,1$ MOVB BUFF+3,R1 ;GET WIDTH BIC #177400,R1 DEC R1 ;ADJUST TO DEC MODULO MOV #TYP2,R0 ;POINT TO ASCII BUFFER CLR R2 ;CLEAR LEADING 0'S JSR PC,$CBDMG ;CONVERT WIDTH TO ASCII MOVB BUFF+5,R1 ;GET LENGTH BIC #177400,R1 MOV #TYP3,R0 CLR R2 JSR PC,$CBDMG ;CONVERT LINES/PAGE DIR$ #PRTTYP ;PRINT LINE MOV #SPD1,R0 ;POINT TO OUTPUT LINE MOVB BUFF+7,R1 ;GET REC SPEED MUL #4,R1 ;MAKE IT 4 CHAR OFFSET ADD #SPDTAB,R1 ;ADD BASE OF ASCII TABLE MOV #4,R3 2$: MOVB (R1)+,(R0)+ ;TRANSFER REC SPEED SOB R3,2$ INC R0 ;BUMP OVER "," MOVB BUFF+11,R1 ;GET XMIT SPEED MUL #4,R1 ADD #SPDTAB,R1 ;ADD BASE OF TABLE MOV #4,R3 3$: MOVB (R1)+,(R0)+ ;FILL IN XMIT SPEED SOB R3,3$ MOV #SPD3,R0 ;POINT TO ASCII BUFFER MOVB BUFF+13,R1 ;GET READ-AHEAD TYPE CLR R2 ;NO 0 FILL JSR PC,$CBOMG ;CONVERT READ-AHEAD TYPE DIR$ #PRTSPD ;PRINT SPEED MOV #LOGBUF+1,R0 ;POINT R0 TO START OF LOGICAL VARIABLES MOV #LOGNAM,R1 ;POINT R1 TO START OF LOGICAL NAMES MOV #LOGCNT,R3 ;NUMBER OF LOGICAL CHAR'S TO R3 LOOP: TSTB (R0) ;IS THIS CHARACTERISTIC ON ? BEQ NOPR ;IF NOT, DON'T PRINT IT MOV R1,PRTLOG+Q.IOPL ;UPDATE BUFFER POINTER IN QIO DPB DIR$ #PRTLOG ;PRINT LINE NOPR: ADD #2,R0 ;BUMP TO NEXT CHARACTERISTIC ADD #20.,R1 ;BUMP TO NEXT NAME IN NAME BUFFER SOB R3,LOOP ;DO FOR N CHARACTERISTICS RTS PC ; ; BADDEV: DIR$ #BADMSG ;DO BAD DEVICE MESSAGE RTS PC ; NODEV: DIR$ #DEVNOT ;DO NO HARDWARE MESSAGE RTS PC .PAGE .SBTTL BUFFER AND DIR AREAS ; ;REASSIGN LUN 4 DPB ; ASSIGN: ALUN$ 4,"TT,0 ; ; ;QIO FOR GET CHARACTERISTICS ; GETTYP: QIOW$ SF.GMC,4,1,,IOSB,, ; ; ;THE BUFFER FOR THE GET CHARACTERISTICS ; BUFF: ;FIRST THE VARIABLE TYPES WHERE WE MUST INTERPERT .BYTE TC.TTP,0 ;TERMINAL TYPE .BYTE TC.WID,0 ;WIDTH .BYTE TC.LPP,0 ;LENGTH OF PAGE .BYTE TC.RSP,0 ;RECEIVE SPEED .BYTE TC.XSP,0 ;TRANSMIT SPEED .BYTE TC.RAT,0 ;READ AHEAD TYPE ;THEN THE LOGICAL PARAMETERS LOGBUF: .BYTE TC.ACR,0 ;AUTO CARRIAGE RETURN .BYTE TC.BSP,0 ;BACKSPACE WORKS .BYTE TC.CCF,0 ;FLUSH READ-AHEAD ON ^-C .BYTE TC.DLU,0 ;DIALUP LINE .BYTE TC.PAR,0 ;PARITY .BYTE TC.EPA,0 ;EVEN PARITY .BYTE TC.ESQ,0 ;TERM REQUIRES ESC SEQ .BYTE TC.FDX,0 ;FULL DUPLEX .BYTE TC.HFF,0 ;HARD FORM FEED .BYTE TC.HFL,0 ;HORIZ FILL .BYTE TC.VFL,0 ;VERTICAL FILL .BYTE TC.LVF,0 ;LA36 VERT FILL .BYTE TC.HHT,0 ;HORIZ TAB HARDWARE .BYTE TC.SCP,0 ;SCOPE (FANCY RUBOUT) .BYTE TC.SFF,0 ;FULL SIMULATION OF FF & VT .BYTE TC.SMO,0 ;LOWER CASE OUTPUT .BYTE TC.SMR,0 ;LOWER CASE INPUT .BYTE TC.SMP,0 ;LOWER CASE INPUT ENABLED .BYTE TC.TAP,0 ;PAPER TAPE READER ATTACHED .BYTE TC.BIN,0 ;DEVICE IS BINARY .BYTE TC.P8B,0 ;PASS 8 BITS (NOT 7) .BYTE TC.UC0,0 .BYTE TC.UC1,0 .BYTE TC.UC2,0 .BYTE TC.UC3,0 .BYTE TC.UC4,0 ;009FB ADDED CHARACTERISTICS .BYTE TC.ANS,0 ;ANSI SEQUENCES .BYTE TC.CSQ,0 ;DO CTS/CTQ IMMEDIATELY .BYTE TC.ANI,0 ;ANSI TERMINAL .BYTE TC.AVO,0 ;ADVANCED VIDEO .BYTE TC.DEC,0 ;DEC CRT .BYTE TC.EDT,0 ;EDT .BYTE TC.RGS,0 ;REGIS TERMINAL .BYTE TC.ABD,0 ;AUTOBAUD BUFFL=.-BUFF ; ;QIO FOR PRINTING TERMINAL TYPE ; PRTTYP: QIOW$ IO.WVB,5,1,,IOSB,, ; ;THE MESSAGE ITSELF ; TYPMES: .ASCII /Terminal is a(n) / TYP1: .ASCII / , / TYP2: .ASCII / columns by / TYP3: .ASCII / lines per page/ TYPLEN=.-TYPMES .EVEN ; ;THE ASCII TERMINAL TYPE TAGS ; TERTYP: .ASCII /unknow/ ;UNKNOWN HAS TYPE 0 .ASCII /ASR33 / ;T.AS33=1 .ASCII /KSR33 / ;T.KS33=2 .ASCII /ASR35 / ;T.AS35=3. .ASCII /LA30S / ;T.L30S=4. .ASCII /LA30P / ;T.L30P=5. .ASCII /LA36 / ;T.LA36=6. .ASCII /VT05 / ;T.VT05=7. .ASCII /VT50 / ;T.VT50=8. .ASCII /VT52 / ;T.VT52=9. .ASCII /VT55 / ;T.VT55=10. .ASCII /VT61 / ;T.VT61=11. .ASCII /LA180 / ;T.L180=12. .ASCII /VT100 / ;T.V100=13. .ASCII /LS120 / ;T.L120=14. .ASCII /SCRIPT/ ;T.SCR0=15. .ASCII /LA12 / ;T.LA12 .ASCII /LA100 / ;T.L100 .ASCII /LA34 / ;T.LA34 .ASCII /LA38 / ;T.LA38 .ASCII /VT101 / ;T.V101 .ASCII /VT102 / ;T.V102 .ASCII /VT105 / ;T.V105 .ASCII /VT125 / ;T.V125 .ASCII /VT131 / ;T.V131 .ASCII /VT132 / ;T.V132 .ASCII /LA50 / ;T.LA50 .ASCII /LQP01 / ;T.LQP1 .ASCII /LQP02 / ;T.LQP2 .ASCII /BMP1 / ;T.BMP1 .ASCII /V2XX / ;T.V2XX .ASCII /SOROC / ;T.SORO=16. (NEW TTY HANDLER ONLY) .ASCII /BEEHIV/ ;T.BEEH=17. (NEW TTY HANDLER ONLY) .ASCII /USR0 / ;T.USR0=18. IN OLD CONFIG .ASCII /USR1 / .ASCII /USR2 / .ASCII /USR3 / .ASCII /USR4 / ; ; ;QIO FOR PRINTING TERMINAL SPEED AND READ-AHEAD ; PRTSPD: QIOW$ IO.WVB,5,1,,IOSB,, ; ;THE MESSAGE ITSELF ; SPDMES: .ASCII /running at / SPD1: .ASCII / ,/ SPD2: .ASCII / baud with type / SPD3: .ASCII / read-ahead/ SPDLEN=.-SPDMES .EVEN ; ;TABLE OF SPEEDS IN ASCII ; SPDTAB: .ASCII / / ;NON CHANGEABLE .ASCII / 0/ ;0 (LINE DISABLED) .ASCII / 50/ .ASCII / 75/ .ASCII / 100/ .ASCII / 110/ .ASCII / 134/ .ASCII / 150/ .ASCII / 200/ .ASCII / 300/ .ASCII / 600/ .ASCII /1200/ .ASCII /1800/ .ASCII /2000/ .ASCII /2400/ .ASCII /3600/ .ASCII /4800/ .ASCII /7200/ .ASCII /9600/ .ASCII /EXTA/ .ASCII /EXTB/ ; ; ;QIO FOR PRINTING LOGICAL PARAMETERS ; PRTLOG: QIOW$ IO.WVB,5,1,,IOSB,, ; ; ;TAGS FOR LOGICAL PARAMETERS ; ; LOGNAM: .ASCII /automatic carret / .ASCII /backspace works / .ASCII /^c flushes readahead/ .ASCII /dialup line / .ASCII /parity enabled / .ASCII /even parity enabled / .ASCII /escape sequence term/ .ASCII /full duplex terminal/ .ASCII /hardware form feed / .ASCII /horizontal fill / .ASCII /vertical fill / .ASCII /LA36 vertical fill / .ASCII /hardware horiz. tab / .ASCII /scope rubout works / .ASCII /simulate ff and vt / .ASCII /lower case printer / .ASCII /lower case keyboard / .ASCII /lower case input on / .ASCII /paper tape reader / .ASCII /binary device / .ASCII /pass-8 bits device / .ASCII /user characteris'c 0/ .ASCII /user characteris'c 1/ .ASCII /user characteris'c 2/ .ASCII /user characteris'c 3/ .ASCII /user characteris'c 4/ ;009FB ADDED CHARACTERISTICS .ASCII /ansisequence / .ASCII /controls / .ASCII /ansicrt / .ASCII /advancedvideo / .ASCII /deccrt / .ASCII /edit / .ASCII /regis / .ASCII /autobaud / LOGCNT=<.-LOGNAM>/20. BADMSG: QIOW$ IO.WVB,5,1,,IOSB,, ; ;THE MESSAGE ; BAD: .ASCII /Bad device name/ BADL=.-BAD .EVEN ; ; QIO FOR SAYING DEVICE NO PRESENT ; DEVNOT: QIOW$ IO.WVB,5,1,,IOSB,, ; NOTHER: .ASCII /*** Interface not present on this system ***/ NOTLEN=.-NOTHER .EVEN ; ; IOSB: .WORD 0,0 DEVNUM: .WORD 0 ;TEMP STORAGE FOR NUMBER ; .END