mirror of
https://github.com/PDP-10/its.git
synced 2026-01-29 21:30:57 +00:00
committed by
Lars Brinkhoff
parent
c658ec7862
commit
4937eeff98
436
src/syseng/lspeed.19
Executable file
436
src/syseng/lspeed.19
Executable file
@@ -0,0 +1,436 @@
|
||||
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
|
||||
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
|
||||
Reference in New Issue
Block a user