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