.TITLE INFTER ; ;SECTION TO LIST ALL CHARACTERISTICS OF A TERMINAL ; .MCALL DIR$,QIOW$,GMCR$,ALUN$ ; ; 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 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 .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 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 /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/ LOGCNT=<.-LOGNAM>/20. BADMSG: QIOW$ IO.WVB,5,1,,IOSB,, ; ;THE MESSAGE ; BAD: .ASCII /BAD DEVICE NAME/ BADL=.-BAD .EVEN ; ; IOSB: .WORD 0,0 DEVNUM: .WORD 0 ;TEMP STORAGE FOR NUMBER ; .END