mirror of
https://github.com/PDP-10/its.git
synced 2026-01-27 12:42:10 +00:00
MINI36 - mini Chaosnet file server (36-bit).
This commit is contained in:
123
src/kshack/mini36.2
Executable file
123
src/kshack/mini36.2
Executable file
@@ -0,0 +1,123 @@
|
||||
TITLE MINI36 Server
|
||||
|
||||
A=1
|
||||
B=2
|
||||
C=3
|
||||
D=4
|
||||
E=5
|
||||
T=6
|
||||
TT=7
|
||||
P=17
|
||||
|
||||
NETI=10
|
||||
NETO=11
|
||||
FILE=12
|
||||
ERRCH=13
|
||||
|
||||
DEBUG: 0
|
||||
|
||||
LOC 42
|
||||
JSR TSINT
|
||||
LOC DEBUG+1
|
||||
|
||||
PDL: -60,,.
|
||||
BLOCK 62
|
||||
|
||||
DEV: 0
|
||||
SNM: 0
|
||||
FN1: 0
|
||||
FN2: 0
|
||||
|
||||
NETWRK"$$SERVE==1
|
||||
NETWRK"$$CHAOS==1
|
||||
|
||||
.INSRT SYSTEM;CHSDEF
|
||||
.INSRT SYSENG;NETWRK
|
||||
|
||||
PKT: BLOCK %CPMXW
|
||||
|
||||
BUFL==<%CPMXC/6>
|
||||
BUF: BLOCK BUFL
|
||||
|
||||
|
||||
MINI36: .CLOSE 1,
|
||||
MOVE P,PDL
|
||||
.SUSET [.SMASK,,[%PIIOC]]
|
||||
MOVEI A,NETI
|
||||
MOVEI C,[ASCIZ/MINI36/]
|
||||
MOVEI D,1
|
||||
PUSHJ P,NETWRK"CHASRV
|
||||
JSR DIE
|
||||
LUP: .CALL [ SETZ ? 'PKTIOT ? MOVEI NETI ? SETZI PKT ]
|
||||
JSR DIE
|
||||
LDB T,[$CPKOP PKT]
|
||||
CAIE T,%CODWD
|
||||
JSR DIE
|
||||
LDB T,[$CPKNB PKT]
|
||||
CAIE T,24.
|
||||
JSR DIE ;WTF?
|
||||
MOVE A,[441400,,DEV]
|
||||
MOVE B,[442000,,PKT+%CPKDT]
|
||||
MOVEI C,12.
|
||||
FNR1: ILDB T,B
|
||||
IDPB T,A
|
||||
SOJG C,FNR1
|
||||
.CALL [ SETZ ? SIXBIT/OPEN/ ? [.BII,,FILE]
|
||||
DEV ? FN1 ? FN2 ? SETZ SNM ]
|
||||
JRST OPNLUZ
|
||||
RDLUP: MOVE E,[-BUFL,,BUF]
|
||||
.IOT FILE,E
|
||||
HRRZ C,E
|
||||
SUBI C,BUF ;Number of 36-bit words to send
|
||||
MOVE A,[441400,,BUF]
|
||||
MOVE B,[442000,,PKT+%CPKDT]
|
||||
IMULI C,3
|
||||
PUSH P,C
|
||||
CPLUP: ILDB T,A
|
||||
IDPB T,B
|
||||
SOJG C,CPLUP
|
||||
REPEAT 4,SETZM PKT+.RPCNT
|
||||
MOVEI T,%CODWD
|
||||
DPB T,[$CPKOP PKT]
|
||||
POP P,T
|
||||
ASH T,1
|
||||
DPB T,[$CPKNB PKT]
|
||||
.CALL [ SETZ ? 'PKTIOT ? MOVEI NETO ? SETZI PKT ]
|
||||
JSR DIE
|
||||
JUMPGE E,RDLUP
|
||||
SETZM PKT
|
||||
MOVEI T,%COEOF
|
||||
DPB T,[$CPKOP PKT]
|
||||
.CALL [ SETZ ? 'PKTIOT ? MOVEI NETO ? SETZI PKT ]
|
||||
JSR DIE
|
||||
.CLOSE FILE,
|
||||
JRST LUP
|
||||
|
||||
OPNLUZ: .OPEN ERRCH,[.UAI,,'ERR ? 1 ? 0]
|
||||
JSR DIE
|
||||
REPEAT 4,SETZM PKT+.RPCNT
|
||||
MOVE B,[440800,,PKT+%CPKDT]
|
||||
MOVSI C,-%CPMXC
|
||||
OPNLZ1: .IOT ERRCH,T
|
||||
CAIGE T,40
|
||||
JRST OPNLZ2
|
||||
IDPB T,B
|
||||
AOBJN C,OPNLZ1
|
||||
OPNLZ2: DPB C,[$CPKNB PKT]
|
||||
MOVEI T,%COCLS
|
||||
DPB T,[$CPKOP PKT]
|
||||
.CALL [ SETZ ? 'PKTIOT ? MOVEI NETO ? SETZI PKT ]
|
||||
JSR DIE
|
||||
JSR DIE
|
||||
|
||||
TSINT: 0 ? 0
|
||||
SKIPE DEBUG
|
||||
.VALUE
|
||||
.LOGOUT 1,
|
||||
|
||||
DIE: 0
|
||||
SKIPE DEBUG
|
||||
.VALUE
|
||||
.LOGOUT 1,
|
||||
|
||||
END MINI36
|
||||
Reference in New Issue
Block a user