mirror of
https://github.com/PDP-10/its.git
synced 2026-01-22 02:26:05 +00:00
438 lines
7.2 KiB
Plaintext
Executable File
438 lines
7.2 KiB
Plaintext
Executable File
TITLE LSPEED - SET LINE PARAMETERS
|
||
|
||
A=1
|
||
B=2
|
||
C=3
|
||
D=4
|
||
E=5
|
||
T=6
|
||
TT=7
|
||
I=10
|
||
P=17
|
||
|
||
TYIC=14
|
||
TYOC=15
|
||
DKIC=16
|
||
TMNCH=13
|
||
|
||
LPDL==40
|
||
PDL: -LPDL,,.
|
||
BLOCK LPDL
|
||
|
||
;SYMBOLS TO BE .EVAL'ED
|
||
|
||
SYMTAB::
|
||
IRPS SYM,,[NFDLTY:NDLTYS:DL10PL:DL10PR:DL10PS:
|
||
NFETY:NETYS:DTELSP:DTELPR:]
|
||
SYM!: 0 ? SQUOZE 0,SYM
|
||
TERMIN
|
||
|
||
LSYMTB==.-SYMTAB
|
||
|
||
;DH-11 LINE PARAMETER REGISTER
|
||
|
||
%DHCLN==3 ;1.1-1.2 CHAR LENGTH 0=5 1=6 2=7 3=8
|
||
%DHXSB==4 ;1.3 1 => EXTRA STOP BIT
|
||
%DHPAR==20 ;1.5 1 => EXTRA PARITY BIT
|
||
%DHEVN==40 ;1.6 0 => ODD PARITY, 1 => EVEN
|
||
%DHRCV==1700 ;1.7-2.1 RECEIVE SPEED
|
||
%DHXMT==36000 ;2.2-2.5 TRANSMIT SPEED
|
||
%DHHDX==40000 ;2.6 HALF DUPLEX
|
||
%DHECO==100000 ;2.7 ECHOPLEX
|
||
|
||
;SPEED TABLE. DECIMAL BAUDS INDEXED BY HARDWARE CODE USED BY THE DH-11.
|
||
|
||
SPDTAB: 0 ? 50. ? 75. ? 110. ? 133. ? 150. ? 200.
|
||
300. ? 600. ? 1200. ? 1800. ? 2400.
|
||
4800. ? 9600. ? 1 ? 2 ;EXT A ; EXT B
|
||
LSPDTB==.-SPDTAB
|
||
|
||
;BUT MINIMUM OF 10. AND MAXIMUM OF 260. INDEXED BY HARDWARE CODE.
|
||
|
||
BSZTAB: 10. ? 10. ? 10. ? 10. ? 10. ? 10. ? 10.
|
||
15. ? 30. ? 60. ? 90. ? 120.
|
||
240. ? 260. ? 260. ? 260.
|
||
|
||
; CHARACTER LENGTH TABLE. INDEXED BY DH-11'S CHARACTER LENGTH CODE.
|
||
|
||
CLNTAB: 5 ? 6 ? 7 ? 8
|
||
LCLNTB==.-CLNTAB
|
||
|
||
TTYTIP: SETZ
|
||
SIXBIT/OPEN/
|
||
[.UAI,,DKIC]
|
||
[SIXBIT/DSK/]
|
||
[SIXBIT/TTYTYP/]
|
||
[SIXBIT/>/]
|
||
SETZ [SIXBIT/SYSENG/]
|
||
|
||
MNAME: 0 ;2-LETTER MACHINE NAME
|
||
GMNAME: SETZ
|
||
'SSTATU
|
||
REPEAT 5,MOVEM NOWHER'
|
||
SETZM MNAME
|
||
|
||
JCLF: 0 ;-1 JCL MODE ;+1 END OF JCL
|
||
JCLF2: 0 ;-1 IF NO TYPEIN/TYPEOUT
|
||
FJ: 5,,JCLBUF
|
||
JCLP: 440700,,JCLBUF
|
||
JCLBUF: BLOCK 20
|
||
|
||
;TYPEIN INTO C
|
||
|
||
CTYI: SKIPE JCLF
|
||
JRST CTYI1
|
||
.IOT TYIC,C
|
||
POPJ P,
|
||
|
||
CTYI1: SKIPL JCLF
|
||
JRST CTYI3
|
||
ILDB C,JCLP
|
||
JUMPE C,CTYI2
|
||
CAIE C,^C
|
||
CAIN C,^M
|
||
JRST CTYI2
|
||
POPJ P,
|
||
|
||
CTYI2: MOVNS JCLF
|
||
CTYI3: MOVEI C,40 ;AT END OF JCL, INFINITE SPACES
|
||
POPJ P,
|
||
|
||
;DECIMAL PRINT
|
||
;ARGUMENT IN A. CLOBBERS T,TT.
|
||
|
||
DPT: MOVE T,A
|
||
DPT0: IDIV T,RDX
|
||
HRLM TT,(P)
|
||
SKIPE T
|
||
PUSHJ P,DPT0
|
||
HLRZ TT,(P)
|
||
ADDI TT,"0
|
||
.IOT TYOC,TT
|
||
POPJ P,
|
||
|
||
;READ NUMBER. CALL WITH ASCIZ PROMPT IN C,
|
||
;DEFAULT IN A. RADIX IN RDX.
|
||
;RETURNS NUMBER IN A
|
||
|
||
RNUM: PUSH P,C
|
||
PUSH P,A
|
||
RNUM0: PUSHJ P,CRLF
|
||
MOVE C,-1(P)
|
||
SKIPN JCLF
|
||
PUSHJ P,7TYPE
|
||
MOVE A,(P)
|
||
SKIPE JCLF
|
||
JRST RNUM2B
|
||
JUMPL A,RNUM2A ;- NO DEFAULT
|
||
.IOT TYOC,[40]
|
||
.IOT TYOC,["(]
|
||
PUSHJ P,DPT
|
||
.IOT TYOC,[")]
|
||
RNUM2A: .IOT TYOC,[40]
|
||
RNUM2B: SETZB A,B
|
||
RNUM3: PUSHJ P,CTYI
|
||
CAIN C,"- ;ALLOW NEGATIVE NUMBER FOR LINE #
|
||
SOJA A,RNUM5 ;-LINE # MEANS LINE LOGGED IN ON
|
||
CAIG C,40
|
||
JRST RNUM4
|
||
CAIL C,"0
|
||
CAILE C,"9
|
||
JRST RNUM0
|
||
IMUL A,RDX
|
||
ADDI A,-"0(C)
|
||
AOJA B,RNUM3
|
||
|
||
RNUM4: SKIPN B
|
||
MOVE A,(P) ;NOTHING TYPED TAKE DEFAULT
|
||
RNUM5: SUB P,[2,,2]
|
||
CRLF: SKIPN JCLF
|
||
.IOT TYOC,[15]
|
||
POPJ P,
|
||
|
||
; TYPE ASCIZ STRING IN C
|
||
|
||
7TYPE: HRLI C,440700
|
||
7TYPE1: ILDB T,C
|
||
JUMPE T,7TYPE2
|
||
.IOT TYOC,T
|
||
JRST 7TYPE1
|
||
|
||
7TYPE2: POPJ P,
|
||
|
||
LSPEED: MOVE P,PDL
|
||
SETZM JCLF
|
||
SETZM JCLF2
|
||
.BREAK 12,FJ
|
||
SKIPE JCLBUF
|
||
JRST [ SETOM JCLF
|
||
LDB A,[350700,,JCLBUF] ; GET FIRST CHAR OF JCL
|
||
CAIE A,33 ; ESC?
|
||
JRST .+1
|
||
SETOM JCLF2 ; FIRST CHAR IS ESC, SET JCLF2
|
||
IBP JCLP ; SKIP ESC CHAR
|
||
JRST LS1 ; AND DON'T OPEN TTY
|
||
]
|
||
.OPEN TYIC,[.UAI,,'TTY]
|
||
.VALUE
|
||
.OPEN TYOC,[.UAO,,'TTY]
|
||
.VALUE
|
||
LS1: .CALL GMNAME
|
||
.VALUE
|
||
MOVSI I,-LSYMTB
|
||
EVALUP: MOVE A,SYMTAB+1(I)
|
||
.EVAL A,
|
||
.VALUE [ASCIZ /:DL10 OR DTE20 TTY NOT FOUND.
|
||
:KILLî/]
|
||
MOVEM A,SYMTAB(I)
|
||
AOBJN I,.+1
|
||
AOBJN I,EVALUP
|
||
|
||
MOVEI A,8
|
||
MOVEM A,RDX'
|
||
MOVNI A,1
|
||
MOVEI C,[ASCIZ "Set speed of line #"]
|
||
PUSHJ P,RNUM
|
||
JUMPGE A,HAVTTY ;HAVE A TTY IF NON-NEGATIVE
|
||
.SUSET [.RCNSL,,A] ;GET LINE JOB IS ON
|
||
HRRZS A ;SELECT TTY NO.--BETTER BE ON A TTY
|
||
HAVTTY: MOVEM A,TTYNUM'
|
||
SETOM DL10P'
|
||
SUB A,NFDLTY
|
||
JUMPL A,NOTDL
|
||
CAMGE A,NDLTYS
|
||
JRST LOOK0
|
||
NOTDL: SETZM DL10P
|
||
SETOM DTE20P'
|
||
ADD A,NFDLTY
|
||
SUB A,NFETY
|
||
JUMPL A,NOTDTE
|
||
CAMGE A,NETYS
|
||
JRST LOOK0
|
||
NOTDTE: MOVEI C,[ASCIZ "TTY does not have settable speed"]
|
||
ERR: PUSHJ P,7TYPE
|
||
.BREAK 16,040000
|
||
|
||
;LOOK THIS LINE UP IN TTYTYP FILE
|
||
|
||
LOOK0: SKIPE JCLF2 ;NO TYPEOUT?
|
||
JRST RPAR1 ;SKIP CHECK
|
||
.CALL TTYTIP
|
||
.VALUE
|
||
LOOK1: .IOT DKIC,A
|
||
JUMPL A,NOTFND ;EOF
|
||
REPEAT 3,[ ;FIND 3 SEMICOLONS
|
||
CAIE A,";
|
||
JRST LOOK1
|
||
.IOT DKIC,A
|
||
JUMPL A,NOTFND
|
||
]
|
||
CAIE A,40 ;A SPACE
|
||
JRST LOOK1
|
||
.IOT DKIC,A
|
||
.IOT DKIC,B ;AND A MACHINE NAME (2 LETTERS)
|
||
SUBI A,40
|
||
SUBI B,40
|
||
LDB C,[360600,,MNAME]
|
||
CAME A,C
|
||
JRST LOOK1
|
||
LDB C,[300600,,MNAME]
|
||
CAME B,C
|
||
JRST LOOK1
|
||
|
||
;FOUND THIS MACHINE'S STUFF; SEARCH FOR ;TNM
|
||
|
||
LOOK2: .IOT DKIC,A
|
||
JUMPL A,NOTFND
|
||
CAIE A,";
|
||
JRST LOOK2
|
||
.IOT DKIC,A
|
||
JUMPL A,NOTFND
|
||
CAIE A,"T
|
||
JRST LOOK2
|
||
.IOT DKIC,A
|
||
.IOT DKIC,B
|
||
LDB C,[030300,,TTYNUM]
|
||
ADDI C,"0
|
||
CAME A,C
|
||
JRST LOOK2
|
||
LDB C,[000300,,TTYNUM]
|
||
ADDI C,"0
|
||
CAME B,C
|
||
JRST LOOK2
|
||
|
||
; FOUND IT
|
||
|
||
.IOT TYOC,["T]
|
||
.IOT TYOC,A
|
||
.IOT TYOC,B
|
||
LOOK3: .IOT DKIC,A
|
||
JUMPL A,LOOK4
|
||
CAIN A,15
|
||
JRST LOOK4
|
||
.IOT TYOC,A
|
||
JRST LOOK3
|
||
|
||
LOOK4: MOVEI C,[ASCIZ " - OK?"]
|
||
PUSHJ P,7TYPE
|
||
.IOT TYIC,A
|
||
CAIE A,"Y ;UC
|
||
CAIN A,"y ;LC
|
||
JRST RPARAM
|
||
.BREAK 16,160000 ;don't take error return, since user said specifically to flush
|
||
|
||
NOTFND: MOVEI C,[ASCIZ "Line not found in TTYTYP file"]
|
||
PUSHJ P,7TYPE
|
||
JRST LOOK4
|
||
|
||
;HAVE GOT THE LINE, READ PARAMETERS
|
||
|
||
RPARAM: .IOT TYOC,[15]
|
||
RPAR1: MOVEI A,10.
|
||
MOVEM A,RDX
|
||
MOVEI E,0 ;BUILD UP DH11 LINE PARAMETER WORD IN E
|
||
|
||
MOVNI A,1
|
||
MOVEI C,[ASCIZ "Receive speed"]
|
||
PUSHJ P,RNUM
|
||
MOVSI I,-LSPDTB ;GET SPEED CODES
|
||
GETRCV: CAMN A,SPDTAB(I)
|
||
JRST GOTRCV
|
||
AOBJN I,GETRCV
|
||
MOVEI C,[ASCIZ "Receive speed impossible"]
|
||
JRST ERR
|
||
|
||
GOTRCV: DPB I,[.BP %DHRCV,E]
|
||
HRRZM I,RCVCOD'
|
||
MOVEM A,RCVSPD'
|
||
|
||
MOVEI C,[ASCIZ "Transmit speed"]
|
||
PUSHJ P,RNUM
|
||
MOVSI I,-LSPDTB
|
||
GETXMT: CAMN A,SPDTAB(I)
|
||
JRST GOTXMT
|
||
AOBJN I,GETXMT
|
||
MOVEI C,[ASCIZ "Transmit speed impossible"]
|
||
JRST ERR
|
||
|
||
GOTXMT: DPB I,[.BP %DHXMT,E]
|
||
HRRZM I,XMTCOD'
|
||
|
||
MOVEM A,XMTSPD'
|
||
CAIE A,110.
|
||
TDZA A,A
|
||
MOVEI A,1
|
||
MOVEI C,[ASCIZ "Extra stop-bit"]
|
||
PUSHJ P,RNUM
|
||
DPB A,[.BP %DHXSB,E]
|
||
|
||
MOVEI A,0
|
||
MOVEI C,[ASCIZ "Parity"]
|
||
PUSHJ P,RNUM
|
||
DPB A,[.BP %DHPAR,E]
|
||
JUMPE A,NOPAR
|
||
|
||
MOVEI A,0
|
||
MOVEI C,[ASCIZ "Even parity"]
|
||
PUSHJ P,RNUM
|
||
DPB A,[.BP %DHEVN,E]
|
||
|
||
NOPAR: MOVEI A,0
|
||
MOVEI C,[ASCIZ "Half duplex"]
|
||
PUSHJ P,RNUM
|
||
DPB A,[.BP %DHHDX,E]
|
||
|
||
MOVEI A,0
|
||
MOVEI C,[ASCIZ "Hardware echo"]
|
||
PUSHJ P,RNUM
|
||
DPB A,[.BP %DHECO,E]
|
||
|
||
MOVEI A,8
|
||
TRNE E,%DHPAR
|
||
MOVEI A,7
|
||
MOVEI C,[ASCIZ "Character length not including start, stop, and parity bits"]
|
||
PUSHJ P,RNUM
|
||
MOVSI I,-LCLNTB
|
||
GETCLN: CAMN A,CLNTAB(I)
|
||
JRST GOTCLN
|
||
AOBJN I,GETCLN
|
||
MOVEI C,[ASCIZ "Impossible character length"]
|
||
JRST ERR
|
||
|
||
GOTCLN: DPB I,[.BP %DHCLN,E]
|
||
|
||
MOVE A,XMTCOD ;GET BUFFER SIZE
|
||
MOVE A,BSZTAB(A)
|
||
MOVEI C,[ASCIZ "Buffer size"]
|
||
PUSHJ P,RNUM
|
||
CAILE A,260.
|
||
MOVEI A,260.
|
||
CAIGE A,1
|
||
MOVEI A,1
|
||
MOVE D,A
|
||
|
||
; DO IT
|
||
|
||
SETLOC: SKIPN DL10P
|
||
JRST SETLC2
|
||
MOVSI A,E
|
||
HRR A,DL10PR
|
||
.SETLOC A,
|
||
MOVSI A,D
|
||
HRR A,DL10PS
|
||
.SETLOC A,
|
||
MOVSI A,TTYNUM
|
||
HRR A,DL10PL
|
||
.SETLOC A,
|
||
WAIT: MOVS A,DL10PL ;WAIT UNTIL 11 ZEROS IT
|
||
HRRI A,A
|
||
.GETLOC A,
|
||
JUMPE A,DONE
|
||
MOVEI A,2
|
||
.SLEEP A,
|
||
JRST WAIT
|
||
|
||
SETLC2: SKIPN DTE20P
|
||
.VALUE
|
||
HRL D,E ;LINE PARAMETER REG,,BUFFER SIZE
|
||
MOVSI A,D
|
||
HRR A,DTELPR
|
||
.SETLOC A,
|
||
MOVSI A,TTYNUM
|
||
HRR A,DTELSP
|
||
.SETLOC A,
|
||
WAIT2: MOVS A,DTELSP ;WAIT UNTIL 11 SETOMS IT
|
||
HRRI A,A
|
||
.GETLOC A,
|
||
JUMPL A,DONE
|
||
MOVEI A,2
|
||
.SLEEP A,
|
||
JRST WAIT2
|
||
|
||
DONE: MOVE A,TTYNUM
|
||
IDIVI A,8
|
||
LSH A,6
|
||
ADD A,B
|
||
IORI A,'T00
|
||
.OPEN TMNCH,A
|
||
.LOSE %LSFIL
|
||
.CALL [ SETZ ;NOW SET THE SPEED'S IN THE SYSTEM
|
||
'TTYVAR
|
||
MOVEI TMNCH
|
||
['ISPEED]
|
||
SETZ RCVSPD ]
|
||
.LOSE %LSSYS
|
||
.CALL [ SETZ
|
||
'TTYVAR
|
||
MOVEI TMNCH
|
||
['OSPEED]
|
||
SETZ XMTSPD ]
|
||
.LOSE %LSSYS
|
||
|
||
SKIPE JCLF
|
||
.BREAK 16,160000
|
||
MOVEI C,[ASCIZ "OK"]
|
||
JRST ERR
|
||
|
||
END LSPEED
|