TITLE NETRFC BOOTSTRAPPER .MLLIT==1 A=1 B=2 Q=16 DEFINE SETF TEXT,FLG IFDEF FLG,.STOP .TAG FOOBAR PRINTC "TEXT FLG=" .TTYMAC FLAG IFSE FLAG,YES,FLG==1 IFSE FLAG,NO,FLG==0 IFSE FLAG,Y,FLG==1 IFSE FLAG,N,FLG==0 IFNDEF FLG,FLG==FLAG TERMIN IFNDEF FLG,.GO FOOBAR TERMIN IF1 SETF Use Dynamod Daemons? ,DEMONP BEG: MOVE A,[SQUOZE 0,IMPBPQ] .EVAL A, JRST ENDQ IFE DEMONP, .SUSET [.SSNAME,,['DEVICE]] ;SYS ON DM, DEVICE ON ML/AI MOVE Q,A NEXTQ: MOVSS Q HRRI Q,Q .GETLOC Q, JUMPL Q,ENDQ ;-1 IS END OF LIST MOVSI A,1(Q) HRRI A,A .GETLOC A, ;GET SLOT 1, LCL SOCK CAIL A,1000 ;SKIP IF SHOULD SIGNAL JRST NEXTQ ;JUMP TO TRY ANOTHER ONE DPB A,[000300,,LOGNAM] ;STASH IN 'RFC000 LSH A,-3 DPB A,[060300,,LOGNAM] LSH A,-3 DPB A,[140300,,LOGNAM] IFN DEMONP,{ .CALL [SETZ ? 'DEMSIG ? LOGNAM ? SETZ [0]] ;start server as daemon JRST NORFC ;FAIL-LEAVE TRAIL JRST ENDQ ;NEVER KNOW - MIGHT BE MORE } IFE DEMONP,{ .OPEN 1, FILE ;SEE IF SERVER EXISTS JRST NEXTQ ;NO, COMPLETELY IGNORE MOVSI 17, BOOT ;YES LOAD IT OVER OURSELVES BLT 17, 17 .SUSET [.SSNAME,,LOGNAM];SET SNAME FOR PEEK SETZM 20 ;PREPARE TO CLEAR CORE JRST 0 BOOT: OFFSET -. .CORE 1 ;FLUSH ALL BUT FIRST PAGE .VALUE BLT BLP,1777 ;CLEAR FIRST PAGE .CALL LOAD ;LOAD THE SERVER .VALUE ;WELL IT WAS THERE BEFORE! ;.VALUE SINCE NETRFC WILL KEEP SEEING IT .IOT 1,0 ;GET START ADDRESS .CLOSE 1, ;CLOSE LOAD CHANNEL STRT:: JRST @0 ;START UP BLP:: 20,,21 ;CORE-CLEARING BLT POINTER LOAD:: SETZ SIXBIT/LOAD/ MOVEI -1 SETZI 1 IFG .-20, .ERR BOOT SEQUENCE TOO BIG OFFSET 0 } IFN DEMONP,{ ;ON DM HANDLE RANDOM ONES NORFC: MOVSI A,3(Q) ;SLOT 3, HOST CALLING HRRI A,A .GETLOC A, LSH A,-8 ;GET HOST # DPB A,[000300,,TRMNAM] LSH A,-3 DPB A,[060300,,TRMNAM] LSH A,-3 DPB A,[140300,,TRMNAM] .CALL [SETZ ? 'LOGIN_6 ? LOGNAM ? SETZ TRMNAM] JFCL ;DONT SVEAT IT } ENDQ: .LOGOUT .VALUE FILE: .UII,,'DSK 'LBSIGN LOGNAM: 'RFC000 TRMNAM: 'HST000 END BEG