From 2ffe67348b553a7bba97d4a29b3dff7e20fe1db3 Mon Sep 17 00:00:00 2001 From: Lars Brinkhoff Date: Fri, 1 Feb 2019 03:34:02 +0100 Subject: [PATCH] MINI36 - mini Chaosnet file server (36-bit). --- build/misc.tcl | 5 ++ doc/programs.md | 1 + src/kshack/mini36.2 | 123 ++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 129 insertions(+) create mode 100755 src/kshack/mini36.2 diff --git a/build/misc.tcl b/build/misc.tcl index 438fa7f4..69a763f2 100644 --- a/build/misc.tcl +++ b/build/misc.tcl @@ -119,6 +119,11 @@ respond "*" ":midas sysbin; mini_lmio; minisr 24\r" expect ":KILL" respond "*" ":link device; chaos mini, sysbin; mini bin\r" +# Mini Chaosnet file server. This is the 36-bit version. +respond "*" ":midas kshack;_mini36\r" +expect ":KILL" +respond "*" ":link device; chaos mini36, kshack; mini36 bin\r" + respond "*" ":midas sysbin;_sysnet;echo\r" expect ":KILL" respond "*" ":link device; chaos echo, sysbin; echo bin\r" diff --git a/doc/programs.md b/doc/programs.md index 0ed3130b..4f7e9a6d 100644 --- a/doc/programs.md +++ b/doc/programs.md @@ -191,6 +191,7 @@ - METER, displays system metering information. - MICRO, microcode assembler. - MINI, mini Chaosnet file server (new). +- MINI36, mini Chaosnet file server (36-bit). - MINITS, mini-ITS network utility. - MINIC, mini Chaosnet file server (old). - MLDEV/MLSLV, allows access to remote systems as devices (e.g. DB:). diff --git a/src/kshack/mini36.2 b/src/kshack/mini36.2 new file mode 100755 index 00000000..5049c42d --- /dev/null +++ b/src/kshack/mini36.2 @@ -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