mirror of
https://github.com/PDP-10/its.git
synced 2026-01-17 16:53:23 +00:00
72 lines
1.3 KiB
Groff
Executable File
72 lines
1.3 KiB
Groff
Executable File
TITLE TCPSER
|
|
|
|
;;; This program is loaded by the system when a SYN is received for
|
|
;;; a legal service port (0-777) and there is no LISTEN for it.
|
|
|
|
A=1
|
|
B=2
|
|
C=3
|
|
D=4
|
|
E=5
|
|
|
|
DSKI==1 ; Channel for loading server.
|
|
|
|
DEBUG: 0 ; -1 => Debug mode.
|
|
REQ: 0 ; Holds request
|
|
|
|
GO: .CALL [ SETZ ; Get a pending RFC.
|
|
SIXBIT /NETRFC/
|
|
MOVE [SIXBIT /TCP/]
|
|
SETZM REQ]
|
|
JSR LOGOUT ; None or error.
|
|
HRRZ A,REQ ; Get RH = port #
|
|
CAILE A,777 ; Make sure it's okay
|
|
JRST REFUSE
|
|
REPEAT 3,[
|
|
LSHC A,-3
|
|
LSH B,-3
|
|
]
|
|
HLRZ D,B
|
|
ADD D,[SIXBIT /SYN000/]
|
|
|
|
ENDLUP: MOVE 0,D ; Contact name, sixbitified, is passed in AC0
|
|
.SUSET [.SSNAME,,D] ; Also pass it in the sname, for debugging
|
|
.CALL [ SETZ ; Open DEVICE;TCP SYNnnn
|
|
SIXBIT /OPEN/
|
|
[.UII,,DSKI]
|
|
[SIXBIT /DSK/]
|
|
[SIXBIT /TCP/]
|
|
D
|
|
SETZ [SIXBIT /DEVICE/]]
|
|
JRST REFUSE ; Lose, no such server.
|
|
MOVE 17,[ACBLK,,1] ; Load it in and start it.
|
|
BLT 17,ACBLKL
|
|
JRST 1
|
|
|
|
ACBLK: .CORE 0 ;1 - vital to clear core!!
|
|
.LOSE ;2
|
|
.CALL 10 ;3
|
|
.LOGOUT 1, ;4
|
|
.IOT DSKI,17 ;5
|
|
.CLOSE DSKI, ;6
|
|
JRST (17) ;7
|
|
SETZ ;10
|
|
SIXBIT /LOAD/ ;11
|
|
MOVEI %JSELF ;12
|
|
SETZI DSKI ;13
|
|
ACBLKL=.-ACBLK
|
|
|
|
IFNDEF %NQREF,%NQREF==1
|
|
REFUSE: .CALL [SETZ ? SIXBIT /NETRFC/ ? %CLBIT,,%NQREF
|
|
MOVE [SIXBIT /TCP/]
|
|
SETZ REQ]
|
|
JSR LOGOUT
|
|
JRST DONE
|
|
|
|
LOGOUT: 0
|
|
SKIPE DEBUG
|
|
.VALUE
|
|
DONE: .LOGOUT 1,
|
|
|
|
END GO
|