.PAGE SIZE 58, 80 .NONUMBER .; for VAX .LEFT MARGIN 10 .RIGHT MARGIN 75 .; for RSX .;.LEFT MARGIN 0 .;.RIGHT MARGIN 65 .AUTOPARAGRAPH # .lm +30 .SKIP 5 .CENTER THE RSX/IAS MULTI-TASKER .SKIP .CENTER November 1989 .SKIP .CENTER "In hoc signo foobar in XVI bitae" .SKIP .CENTER Fine Realtime Commentary .c Since 1975 .SKIP 14 .lm -30 .CENTER ^&TABLE OF CONTENTS\& .SKIP .LIT RSX/IAS SIG NEWS Editor's Corner RSX-1 Submitting Articles to the Multi-Tasker RSX-2 Bulletin Board Notes RSX-2 ARTICLES RSX/IAS Hall of Fame RSX-3 Dynamic Patch to RSX Exec RSX-6 Spring 89 RSX SIG tape RSX-13 The DECameron RSX-14 .eli .s4 Opinions expressed in the Multi-Tasker are those of individual members. They do not represent the official position of the RSX/IAS SIG or that of DECUS leadership in general. .pg .C *************** ^&RSX/IAS SIG NEWS\& *************** .s2 .C Editor's Corner .lit Phil Hannay, RSX Editor Frank Borger, IAS Editor Bruce Mitchell, Minister of Propaganda .eli .s1 .C ----- Editorial: Cycle Stealing ----- .SKIP .CENTER Bruce R. Mitchell .CENTER Machine Intelligence and Industrial Magic, Consultants .CENTER 390 North Shore Drive, RR _#1, Box 216 .CENTER Fountain City, WI###54629 .SKIP 1 The Editor Emeritus once again returns, this time with some speculations and comments on DEC line printer interfaces and what they're doing for you behind your back. For lo, these many years, since about 1970 as a matter of fact, Digital's main product for line printer control has been the LP(V)11. It's a robust design proven over billions of printed characters. But it's not efficient. It's a PIO, interrupt-per-character device. That means 132 interrupts for every 132 character line printed. Just for entertainment, let's plug some numbers in, massage them and see what comes out. If the average line contains 80 characters (including blanks, of course), at 50 lines per page, that's 4000 (4E3) char/page. An average job is probably at least 10 pages, so 4E4 char/job. Sites with line printers probably print at least 25 jobs per day, so 1E6 char/site-day. In a work-year of 240 days, that's 2.4E8 char/site-year. Now assume that it takes 100 microseconds to field an interrupt. That translates to 2.4E4 (24,000) seconds per year, or 6.6 hours, of ^&direct CPU time\& spent servicing the line printer. That is a lot of CPU time in anybody's book - almost one entire work day - and this for a site with relatively small print requirements. What would happen if DEC made a DMA line printer interface? There would be one interrupt per 80 characters, so (2.4E4/8E1) = 300 seconds, or 5 minutes per year spent servicing the line printer. That's one hell of a difference, and why DEC has never done anything about it is quite a mystery. This must be what the hardware engineers mean when they refer to "cycle stealing devices". .pg .C ----- Submitting Articles to the Multi-Tasker ----- .s1 You are encouraged to submit articles to the Multi-Tasker. No article is too big or too small. They can be serious or funny, and of any techinical level. Please submit machine readable media if possible. Hardcopy submissions are okay if they are fairly short. Illustrations and drawings that can be photocopied may accompany the article. Most any media is acceptable, however RX50, RX01/2, TK50 and 1600 BPI magtape are preferred. All RSX volume formats are acceptable, and VMS formats are also acceptable on RX50, TK50 and 1600 BPI magtape. You can also submit articles through the RSX bulletin board system at (612) 777-7664. Kermit the file into your account and then send it via MAIL to username MULTITASKER. The Multi-Tasker begins life as a RUNOFF file, so feel free to submit your articles in RUNOFF format. The page size will be 80 columns by 58 lines, with the left margin at 10 and right margin at 75. Use literal format for code examples. If you change margins, use incremental changes rather than absolute. Mail your articles and other submissions to: .LITERAL Phil Hannay Cargill Research Bldg Box 9300 Minneapolis, MN. 55440 tel. 612-475-5433 (daytime) .END LITERAL .s 2 .C ----- Bulletin Board Notes ----- .s1 The RSX Bulletin Board is online. RSX Network Mail, Kermit, old issues of the Multi-Tasker, and various other goodies are available. Free advice as well. (often worth the price...) Contact Jim Bostwick, at 612-475-6264 (daytime) if you wish to donate some equipment. You can log into the BBS at 612-SPR-PONG (612-777-7664). The line will always do 100-1200 baud, and often 2400 (depending on when the owner of the 2400 modem last went looking for it). New users should log in with username ACCOUNT and password REQUEST. This will get you a registration procedure. You'll need your DECUS membership number in order to get a permanent account. .pg .c *************** ^&ARTICLES\& *************** .s5 .CENTER;------ RSX/IAS Hall of Fame ------ .BLANK .CENTER;T. R. Wyant, Curator .CENTER;E. I. DuPont de Nemours As the RSX/IAS SIG matures (or at least grows older), there is a tendancy to reflect on what has gone before, savoring those things that make the PDP-11 and RSX unique. The RSX/IAS Hall of Fame was inaugurated during the Fall 1988 Symposium to honor and preserve for posterity the most famous/notorious (pick one) features of the computing environment we have come to know and love. We present two more categories that were selected, field-tested, presented, and voted on. .s 4 .c; ** Most Suggestive DCL Command ** .s 1 The third category in the RSX/IAS Hall of Fame is perhaps a sign of the times. The age of innocence has passed; this is, for better or worse, the age of Wilbur Mills, Jim Bakker, and Jimmy Swaggart. Why, even such a sacred institution as the Digital Command Language is no longer safe from purient suggestion! Hidden in the seemingly innocent DCL command set lurk commands that in another era would have been banned in Boston. But we of the RSX/IAS SIG are not decieved by the innocent facade these commands wear, nor afraid to expose these abominations for what they really are. What follows is our list of Most Suggestive DCL Commands. Parental guidance is suggested, as some of the following material may not be suitable for young children. .LIST "*" .BLANK .LE;SHOW ASSIGNMENTS .BLANK Not the kind of command you would think anything of at first glance, is it? But creeping permissiveness has struck even here, and as bathing suits become ever scantier, even DCL allows you to .BLANK;.CENTER;SHOW ASS .BLANK .LE;DIRECTORY/SINCE .BLANK Once upon a time, if you wanted to do date selection you had to use SRD. Little did we know what we were letting ourselves in for when PIP acquired the /DD: switch. Along came DCL, and before we knew it, like Jim Bakker we fell into .BLANK;.CENTER;DIRE/SIN .BLANK .LE;ANALYZE/ERROR__LOG .BLANK In the interest of good taste and professional decorum, the resume on this command has been omitted. .END LIST .BLANK The winner in this category demonstrates how a seemingly innocent quirk can have totally unforseen and unfortunate concequences. The IAS SHOW will parse multiple commands on the same line. This allows "SHOW ME" (for SHOW MEMORY) to be expanded to .BLANK;.CENTER;SHOW ME YOUR ASS .BLANK When RMD exits, the rest of the command is parsed, the parse fails, and DCL admonishes .BLANK;.CENTER;"YOUR ASS -- IGNORED" .BLANK 3 .s 4 .c; ** Most Provocative/Obscure/Memorable FCS Status ** .s 2 How can we follow the "DCL sleaze" category? Only with something truly off the wall. It's hard these days to find anything that hasn't been analyzed, computerized, sanitized, and homogenized; it's gotten so words don't convey meaning any more, you have to say it in numbers. And there are certain numbers that we 16 bit hackers have committed to memory, and recognize as old friends (or enemies): this category honors the most provocative, obscure, interesting, and generally memorable FCS status codes. The nominees are: .LIST "*" .BLANK .LE;IE.NOD,-23.,351, .BLANK How many of us have seen this error precede a crash? Guess those nodes were REALLY tired. .BLANK .LE;IE.DSQ,-90.,246, .BLANK I got really excited when I saw this -- looked all over for DISKQUOTA.SYS. Never did find it. Perhaps it is a new way to say "Device Full". .BLANK .LE;IS.EOT,<4*400+1> ;EOT WAS TERMINATOR (BLOCK MODE INPUT) .BLANK See, there IS block mode support in RSX. .BLANK .LE;IE.UPN,, (from IAS) .BLANK Need any more be said? .END LIST .BLANK Our winner demonstrates one of Ken Olsen's favorite aphorisms: "The network IS the system". To make this aphorism into reality, it became necessary to merge low-level DECnet codes into the I/O error numbering space. The FCS codes were up into the high sixties anyway. So, when you drop a link the low-level error turns out to be: .BLANK;.INDENT +5 IE.NFW,-69.,273, .pg .CENTER;------ Dynamic Patch to RSX Exec ------ .BLANK .CENTER;Philip Hannay .CENTER;Cargill, Inc. We recently had to make a patch to the RSX exec code to accomodate a video controller that needed to be activated only when the task using that controller was the active task. We were supplied with some exec patch code from the vendor, CRISP Automation, that were to be applied before sysgen. I did not want to do a special sysgen for this case. We have tried to keep our sysgens generic so that they can be used on a number of machines. Rather than applying the patch to all systems, to accomodate the locations that use the CRISP software, I instead came up with a program that will patch the exec dynamically at boot time. This program lets me start with a DEC standard sysgen, and make the patch only on the machines that run the special hardware. Furthermore, it lets me start with a Micro-RSX or Pregen sysgen supplied by DEC, and make the patches The program, SWIVIU, uses ICB pool to store the patch code, and then replaces an existing exec instruction with a "jump subroutine" intruction to execute the patch code and returned. The replaced instruction is included in the patch code. The technique was derived from a DECUS presentation given by Brian McCarthy on Writing a Loadable Directive for RSX-11M-Plus and Micro/RSX. In addition to the use of ICB pool, other interesting features of the program are the use of the vectored executive (using GIN$ get information directive to fetch the global symbol address vectors), and the use of the SWST$ switch state directive to let a PR:0 task access the exec and pass parameters between the user and system state code. In summary, use of this program lets me patch a DEC-standard system, even ones that are pregenned and cannot be re-sysgenned. And, since the program uses the vectored exec addressing technique, it should work independent of the sysgen. .lm 0 .rm 80 .lit ; File: [SWIVIU]SWIVIU.MAC Last edit: 28-JUN-1989 11:24:34 ; Philip Hannay. ; ; "Switch VIURAM" controller patch added to system exec. ; ; .MCALL QIOW$S,EXST$S,SWST$S,GIN$S ; The following is the kernal mode code (BASSWI) that will make desired ; patches to the exec. It will be mapped by the exec starting at BASSWI ; using APR5, with APR5 I and D space mapped the same. It will then ; be run by the exec in system state using the SWST directive. R0-R5 ; are available for passing parameters into the code and returning ; parameters back from the code. ; Everything lives in the BLANK psect - both data and instructions. ; Since the BLANK psect is "I" instruction, the user code in this ; program can access data in the BLANK psect ONLY if this program is ; built non-I/D. The program can be built I/D if the user code does ; not do any data access into the BLANK psect. In this case, we do ; access the BLANK psect from user code when we set up the vector ; table, so this program will be built non-I/D. .psect BASSWI=. ;BASSWI is the base address for data and code ; The task header offset 64 is used to hold an address of a VIURAM ; controller. This address is normally zero for all tasks other than ; CRISP CRT tasks. If this word is non-zero, it is used as the address ; of the appropriate VIURAM controller CSR register, and the 4000 bit is ; set during task start and cleared during task stop. Note that offset ; 64 conflicts with X.25 software, so it may get us someday. H.VIU= 64 ; CRISP DEF - TASK HEADER OFFSET FOR VIURAM CSR VRON= 4000 ; CRISP DEF - MEMORY ENABLE BIT ON VIURAM CSR ; ; Exec vector table - ; EXEVEC: .word 0 icavl:: .word $icavl ; ICB pool listhead aloc1:: .word $aloc1 ; allocate ICB pool core block sph04:: .word $sph04 ; a reference used for patch 1 sph05:: .word $sph05 ; a reference used for patch 2 EXEVCL=<<.-EXEVEC>/2> ; The following patches, PAT1 and PAT2 are made to the SYSXT.MAC sections ; of the exec code. PAT1 turns off a VIURAM controller that was in use ; when a task using that controller is no longer the current task. PAT2 ; turns on a VIURAM controller for a task to use when that task becomes ; the current task. Note that the patches are instructions but are treated ; as data when copied to the appropriate location in the exec. .EVEN PAT1: MOV H.VIU(R3),R2 ; GET VIURAM ADDRESS (LOC 2064) BEQ 275$ ; BRANCH IF NONE, DOESNT USE VIURAM BIC #1,R2 ; FORCE ADDRESS EVEN CMP #177200,R2 ; SEE IF VALUE BELOW POSSIBLE VIURAM CSRS BHIS 275$ ; BRANCH IF CANNOT BE A VIURAM CSR BIC #VRON,(R2) ; TURN OFF VIURAM 275$: PAT1LN=.-PAT1 .EVEN PAT2: MOV H.VIU(R2),R0 ; GET VIURAM ADDRESS (LOC 2064) BEQ 221$ ; BRANCH IF NONE, DOESNT USE VIURAM BIC #1,R0 ; FORCE ADDRESS EVEN CMP #177200,R0 ; SEE IF VALUE BELOW POSSIBLE VIURAM CSRS BHIS 221$ ; BRANCH IF CANNOT BE A VIURAM CSR TSTB T.ST2(R5) ; IS THE TASK HALTED BMI 221$ ; BRANCH IF YES, VIURAM NOT NEEDED BIS #VRON,(R0) ; TURN ON VIURAM 221$: PAT2LN=.-PAT2 ; PUTSWI will allocate a block of ICB pool for each patch. Since ICB ; pool is mapped by the exec using kernal APR 0, it is always mapped, ; and both I and D space are mapped the same. For this reason, we can ; put the patch code here and know that it will be always mapped by ; the exec no matter where it is executing. Remember, ICB pool is limited, ; so we keep our use to a minimum. ; PUTSWI is executed by the exec using the SWST directive. Parameters ; can be passed to PUTSWI from the user mode code (or returned from PUTSWI ; to the user mode code) through registers R0 thru R5. When executing ; under the exec, registers R0 thru R5 will be located on the stack ; at S.WSR0(SP) thru S.WSR5(SP). ; Remember, that we will be mapped with APR5 as our base, so all address ; references made here must be PI (position independent) or adjusted ; by adding 120000. .EVEN PUTSWI:: CLR S.WSR0(SP) ; STATUS WILL BE RETURNED IN R0 ; DO PATCH 1 ; GET POOL BLOCK FOR PATCH CODE MOV ICAVL,R0 ; GET ADDRESS OF ICB POOL LISTHEAD TST -(R0) ; BACKUP TO GET ALLOCATION MASK MOV #PAT1LN+6,R1 ; MOVE PATCH1+6 LENGTH TO R1 ; ACCOMODATES PATCH + 2 WORDS OF ; EXEC INSTRUCTIONS AND 1 WORD RTS CALL @ALOC1 ; GET ALLOCATION FROM ICB POOL BCS 10$ ; BRANCH IF FAILED TO GET BLOCK CMP R0,#20000 ; VERIFY THAT POOL ADDRESS IS APR0 BHIS 40$ ; BRANCH IF NOT, ERROR ; PUT PATCH INTO BLOCK LEAVING FIRST TWO WORDS BLANK, END PATCH WITH RTS MOV R0,R4 ; SAVE PATCH BLOCK START ADDRESS MOV R0,R3 ; SAVE INSERT ADDR FOR HIJACKED CODE ADD #4,R0 ; LEAVE ROOM FOR HIJACKED EXEC CODE MOV PC,R1 ; CALCULATE PATCH1 CODE ADDRESS (PI) ADD #PAT1-.,R1 ; R1 POINTS TO PATCH1 ADDRESS MOV #PAT1LN/2,R2 ; PUT LEN OF PATCH1 (WORDS) IN R2 20$: MOV (R1)+,(R0)+ ; MOVE PATCH1 TO ICB POOL SOB R2,20$ ; LOOP UNTIL ALL TRANSFERRED MOV #000207,(R0) ; AND PUT IN FINAL RTS INSTRUCTION ; MAP EXEC, HIJACK TWO WORD INSTUCTION(S) FOR JSR PATCH. NOTE THAT WE CANNOT ; JUST ACCESS INSTRUCTION, SINCE ON AN I/D SYSTEM, ONLY I-SPACE APR1 MAY BE ; MAPPED TO THAT INSTUCTION, AND OUR ACCESS IS DONE USING D-SPACE. SO WE ; MUST MAP A D-SPACE APR TO THE INSTUCTION. WE USE D-SPACE APR6. SINCE ; WE ARE ACCESSING APR1 (20000) ADDRESSES USING APR6 (140000), WE MUST ADD ; 120000 TO THE ADDRESSES. NOTE THAT AT THE CRITICAL MOMENT WE ARE ; HIJACKING THE EXEC INSTRUCTION, WE DISABLE INTERRUPTS TO INSURE THAT ; WE WILL NOT BE INTERRUPTED. MOV SPH04,R2 ; CREATE POINTER TO EXEC FOR PATCH1 ADD #32,R2 ; IN R2 ($SPH04+32) MOV @#KDSAR6,R5 ; SAVE APR6 D-SPACE MAPPING IN R5 MOV @#KINAR1,@#KDSAR6 ; MAP APR6 D-SPACE TO APR1 I-SPACE CMP #004767,120000(R2) ; SEE IF PATCH ALREADY DONE BEQ 50$ ; BRANCH IF YES, CANNOT DO AGAIN MOV 120000(R2),(R3)+ ; PUT SPH04 VALUE IN PATCH MOV 120002(R2),(R3) ; AND SPH04+2 VALUE IN PATCH MOV R4,R1 ; CALCULATE JSR OFFSET TO PATCH BLOCK SUB R2,R1 ; R2 IS ($SPH04+32) SUB #4,R1 ; R1 IS NOW JSR OFFSET FOR JUMP MTPS #7 ;;; DISABLE INTERRUPTS MOV #004767,120000(R2) ;;; PUT JSR INST INTO EXEC MOV R1,120002(R2) ;;; PUT JSR OFFSET INTO EXEC MTPS #0 ;;; ENABLE INTERRUPTS MOV R5,@#KDSAR6 ; RESTORE APR6 D-SPACE MAPPING BR 30$ ; PATCH 1 DONE OKAY 50$: MOV #15,S.WSR0(SP) ; ERROR 15, PATCH ALREADY DONE MOV R5,@#KDSAR6 ; RESTORE APR6 D-SPACE MAPPING BR 30$ ; RETURNING ERROR IN R0, NOTE THAT ; FOR SIMPLICITY, WE LEAVE ICB POOL ; ALLOCATED - IF CALLED REPEATEDLY ; LIKE THIS, WE EXHAUST ICB POOL. 40$: MOV #13,S.WSR0(SP) ; ERROR 13, POOL BLK OUTSIDE OF APR 1 BR 30$ ; RETURNING ERROR IN R0 10$: MOV #14,S.WSR0(SP) ; ERROR 14, UNABLE TO GET POOL BLOCK BR 30$ ; RETURNING ERROR IN R0 30$: TST S.WSR0(SP) ; SEE IF ANY ERRORS YET BNE 130$ ; BRANCH IF ERROR, NO FURTHER PROCESSING ; DO PATCH 2 ; GET POOL BLOCK FOR PATCH CODE MOV ICAVL,R0 ; GET ADDRESS OF ICB POOL LISTHEAD TST -(R0) ; BACKUP TO GET ALLOCATION MASK MOV #PAT2LN+6,R1 ; MOVE PATCH2+6 LENGTH TO R1 ; ACCOMODATES PATCH + 2 WORDS OF ; EXEC INSTRUCTIONS AND 1 WORD RTS CALL @ALOC1 ; GET ALLOCATION FROM ICB POOL BCS 110$ ; BRANCH IF FAILED TO GET BLOCK CMP R0,#20000 ; VERIFY THAT POOL ADDRESS IS APR0 BHIS 140$ ; BRANCH IF NOT, ERROR ; PUT PATCH INTO BLOCK LEAVING FIRST TWO WORDS BLANK, END PATCH WITH RTS MOV R0,R4 ; SAVE PATCH BLOCK START ADDRESS MOV PC,R1 ; CALCULATE PATCH2 CODE ADDRESS (PI) ADD #PAT2-.,R1 ; R1 POINTS TO PATCH2 ADDRESS MOV #PAT2LN/2,R2 ; PUT LEN OF PATCH2 (WORDS) IN R2 120$: MOV (R1)+,(R0)+ ; MOVE PATCH2 TO ICB POOL SOB R2,120$ ; LOOP UNTIL ALL TRANSFERRED MOV R0,R3 ; SAVE INSERT ADDR FOR HIJACKED CODE ADD #4,R0 ; LEAVE ROOM FOR HIJACKED EXEC CODE MOV #000207,(R0) ; AND PUT IN FINAL RTS INSTRUCTION ; MAP EXEC, HIJACK TWO WORD INSTUCTION(S) FOR JSR PATCH. NOTE THAT WE CANNOT ; JUST ACCESS INSTRUCTION, SINCE ON AN I/D SYSTEM, ONLY I-SPACE APR1 MAY BE ; MAPPED TO THAT INSTUCTION, AND OUR ACCESS IS DONE USING D-SPACE. SO WE ; MUST MAP A D-SPACE APR TO THE INSTUCTION. WE USE D-SPACE APR6. SINCE ; WE ARE ACCESSING APR1 (20000) ADDRESSES USING APR6 (140000), WE MUST ADD ; 120000 TO THE ADDRESSES. NOTE THAT AT THE CRITICAL MOMENT WE ARE ; HIJACKING THE EXEC INSTRUCTION, WE DISABLE INTERRUPTS TO INSURE THAT ; WE WILL NOT BE INTERRUPTED. MOV SPH05,R2 ; CREATE POINTER TO EXEC FOR PATCH2 MOV @#KDSAR6,R5 ; SAVE APR6 D-SPACE MAPPING IN R5 MOV @#KINAR1,@#KDSAR6 ; MAP APR6 D-SPACE TO APR1 I-SPACE CMP #004767,120000(R2) ; SEE IF PATCH ALREADY DONE BEQ 150$ ; BRANCH IF YES, CANNOT DO AGAIN MOV 120000(R2),(R3)+ ; PUT SPH05 VALUE IN PATCH MOV 120002(R2),(R3) ; AND SPH05+2 VALUE IN PATCH MOV R4,R1 ; CALCULATE JSR OFFSET TO PATCH BLOCK SUB R2,R1 ; R2 IS ($SPH05+0) SUB #4,R1 ; R1 IS NOW JSR OFFSET FOR JUMP MTPS #7 ;;; DISABLE INTERRUPTS MOV #004767,120000(R2) ;;; PUT JSR INST INTO EXEC MOV R1,120002(R2) ;;; PUT JSR OFFSET INTO EXEC MTPS #0 ;;; ENABLE INTERRUPTS MOV R5,@#KDSAR6 ; RESTORE APR6 D-SPACE MAPPING MOV #1,S.WSR0(SP) ; SIGNAL SUCCESS RETURNING 1 IN R0 BR 130$ ; PATCH 2 DONE OKAY 150$: MOV #15,S.WSR0(SP) ; ERROR 15, PATCH ALREADY DONE MOV R5,@#KDSAR6 ; RESTORE APR6 D-SPACE MAPPING BR 130$ ; RETURNING ERROR IN R0, NOTE THAT ; FOR SIMPLICITY, WE LEAVE ICB POOL ; ALLOCATED - IF CALLED REPEATEDLY ; LIKE THIS, WE EXHAUST ICB POOL. 140$: MOV #13,S.WSR0(SP) ; ERROR 13, POOL BLK OUTSIDE OF APR 1 BR 130$ ; RETURNING ERROR IN R0 110$: MOV #14,S.WSR0(SP) ; ERROR 14, UNABLE TO GET POOL BLOCK ; RETURNING ERROR IN R0 130$: RETURN ; BACK TO USER MODE .PSECT SWIDAT,D IOSB: .WORD 0,0 STAADR: .ASCII /SWIVIU: PATCH EXEC TO CONTROL CRISP VIURAM(S) ON,OFF/ STALEN= .-STAADR ENDADR: .ASCII /SWIVIU: PATCH INSERTED SUCCESSFULLY/ ENDLEN= .-ENDADR BADADR: .ASCII /SWIVIU: PATCH INSERT FAILED/ BADLEN= .-BADADR E11ADR: .ASCII /SWIVIU: QIOW$ DIRECTIVE ERROR/ E11LEN= .-E11ADR E12ADR: .ASCII /SWIVIU: SWST$ DIRECTIVE ERROR/ E12LEN= .-E12ADR E13ADR: .ASCII /SWIVIU: ALLOCATED ICB POOL PATCH BLOCK NOT IN APR0/ E13LEN= .-E13ADR E14ADR: .ASCII /SWIVIU: UNABLE TO ALLOCATE ICB POOL PATCH BLOCK/ E14LEN= .-E14ADR E15ADR: .ASCII /SWIVIU: PATCH WAS ALREADY MADE/ E15LEN= .-E15ADR E16ADR: .ASCII /SWIVIU: GIN$ DIRECTIVE ERROR/ E16LEN= .-E16ADR .PSECT SWIINS,I SWIVIU:: MOV #16,R0 ; ERROR 16 IS GIN FAIL GIN$S #GI.VEC,#EXEVEC,#EXEVCL ; TRANSLATE EXECUTIVE VECTORS BCS FAIL MOV #11,R0 ; ERROR 11 IS QIO FAIL QIOW$S #IO.WLB,#5,#1,,#IOSB,,<#STAADR,#STALEN,#40> BCS FAIL ; BRANCH IF DIRECTIVE FAILURE MOV #12,R0 ; ERROR 12 IS QIO FAIL SWST$S #BASSWI,#PUTSWI BCS FAIL ; BRANCH IF DIRECTIVE FAILURE CMP #1,R0 ; SEE IF PATCH SUCCEEDED BNE FAIL ; BRANCH IF PATCH FAILED JMP OKAY FAIL: QIOW$S #IO.WLB,#5,#1,,#IOSB,,<#BADADR,#BADLEN,#40> MOV #2,R1 ;EXIT WITH WARNING CMP #15,R0 BNE 1$ QIOW$S #IO.WLB,#5,#1,,#IOSB,,<#E15ADR,#E15LEN,#40> JMP DONE 1$: MOV #4,R1 ;EXIT WITH FATAL ERROR CMP #14,R0 BNE 2$ QIOW$S #IO.WLB,#5,#1,,#IOSB,,<#E14ADR,#E14LEN,#40> JMP DONE 2$: CMP #13,R0 BNE 3$ QIOW$S #IO.WLB,#5,#1,,#IOSB,,<#E13ADR,#E13LEN,#40> JMP DONE 3$: CMP #12,R0 BNE 4$ QIOW$S #IO.WLB,#5,#1,,#IOSB,,<#E12ADR,#E12LEN,#40> BR DONE 4$: CMP #11,R0 BNE 5$ QIOW$S #IO.WLB,#5,#1,,#IOSB,,<#E11ADR,#E11LEN,#40> BR DONE 5$: CMP #16,R0 BNE 6$ QIOW$S #IO.WLB,#5,#1,,#IOSB,,<#E16ADR,#E16LEN,#40> BR DONE 6$: BR DONE OKAY: QIOW$S #IO.WLB,#5,#1,,#IOSB,,<#ENDADR,#ENDLEN,#40> MOV #1,R1 ;EXIT WITH SUCCESS DONE: EXST$S R1 .END SWIVIU .eli .lm 10 .rm 75 .pg .CENTER;------ Spring 89 RSX SIG tape ------ .BLANK .lm 0 .rm 80 .lit From: Glenn Everhart Subject: Spring 1989 VAX, RSX Tapes announcement Spring 1989 RSX SIG Tape This is the RSX SIG Tape for Spring 1989. Contents of the tape, covering some 37,000 blocks, follow: [5,*] Complete DECUS C distribution, updated from the one that appeared in Fall 1985, with support for I/D space, RMS, and DECnet, and current RSX versions. In addition, a remote file access package and a remote execution package are present in [333,*]. From the Germany RSX SIG. [306,100] Tape transfer program generic tape handling program. ARGS argument processing code and libraries and console I/O. From Brad Castalia. [350,300] Mailbox driver for RSX11M. Maintains a set of named queues / mailboxes for inter-task communication. Does NOT use up pool for message. From Paul Sorenson. [355,221] Routine that retrieves a list of all tasks active at a terminal, and a program that aborts them all, excluding CLIs. From Mitch Nelson. [356,40] Kermit-11 update. Complete Kermit-11 distribution for communications with other systems. Also includes binaries for Kermits for VAX/VMS, IBM PC. From Brian Nelson. .eli .lm 10 .rm 75 .pg .CENTER;------ The DECameron ------ .BLANK .s 3 .LEFT MARGIN 9 .CENTER;The DECameron .BLANK 2 .CENTER;Being a History .CENTER;of the Land of DEC and its Peoples .CENTER;and Particularly of the Family of 11s .CENTER;Together With .CENTER;Speculations on Their Future .BLANK 20 .LEFT MARGIN +40 T. R. Wyant .LEFT MARGIN -40 Once upon a time there was a little kingdom called DEC. This kingdom was ruled by the good king Ken, son of Ole. The kingdom was populated by many different kinds of systems. These grew and prospered under the son of Ole, who ruled them wisely and well. Now living in this kingdom was a family called PDP-11, founded by the venerable PDP-11/15. Now old 11/15 had sons: 11/10, 11/05, and 11/20. They were hardworking and enterprising fellows, and soon found suitable mates: RT-11, RSX-11, and even RSTS. The 11 family became known for its power, flexability, and reliability. All men wished for their assistance in demanding tasks: telemetry analysis, telephone switching, and the like. The 11s became prosperous and respectable, and the most powerful family in the land. Succeeding generations of the 11 family continued to prosper. 11/10 was followed by 11/40 and 11/45. The daughters of RT-11 were SJ, FB, and XM, and they were known for their quickness and cleverness. The daughters of RSX were D, M, and IAS, who were respected for their power and wisdom, but loved for the easy manner in which they interacted with people. And in the fullness of time a son and a daughter were born to the 11 family, and all could see that they would grow to be the greatest members of that proud line. And the son was named 11/70, and the daughter was named M+. Now 11/70 was a bright and muscular lad, and he was considered a fitting mate for any software then available. But M+ was so grand and beautiful, that suitable hardware to mate with her was not everywhere to be found. But it was prophesied at her birth that her perfect union would be with hardware yet unborn, and the name of that hardware would be 11/74. But one day, King Ken looked out over all his lands from the highest tower of his castle. And he looked over the surrounding lands and their peoples, and everywhere he looked, he saw raised the blue banner of King Tom, Son of Wat. Then King Ken was filled with envy, and his own land seemed straitened, and there awoke in his heart a lust for wider dominions. He looked out over his people, and they seemed mean and lowly, useless to his new desires: his lust to overthrow the banners of the Son of Wat, and see his own standard raised in their place, and to dominate the surrounding lands. So he conceived of a plan to bring forth a new race, more powerful than any the land of DEC had yet seen, so that its current peoples would seem as children to them. And the peoples of the land heard rumor of this plan, and petitioned King Ken, saying "What will become of us, who have served you so faithfully and so long? Will we be cast off, and trodden by the wayside so that you may fulfill this desire?" But King Ken spake unto them an oath, saying "Behold, beyond and around us are wide lands, wherein we could dwell. But the people of the Son of Wat deny us these lands, to which we have as much right as they: transaction processing, electronic mail, office automation. This new people will assist us in achieving our birthright. And they will be made in your own image, and be compatible with you, and they will bear the respected name of 11, which has prospered under my rule for so long." And the people of King Ken went away, comforted. But when the new race arrived, the family of 11 was aghast, for behold! they were as strangers, having strange powers, and (it was rumored) even stranger weaknesses. And some in the land murmered against King Ken, and it was said that in the lexicon of King Ken, "compatible" meant "similar". But the king hardened his heart to his former people, and at the head of mighty columns of VAXen, went up against the surrounding lands, and the blue banner of the Son of Wat was supplanted in many places by the banner of the Son of Ole. Then some of the 11 family resigned themselves to their new fate, saying "We have had our time in the sun. The old order is passing away, and the new order is upon us. Let us do what we may to establish this new order, for the glory of King Ken." And they went forth as esquires to the VAXen, performing menial tasks for them: getting them up in the morning, serving them their data, and diagnosing their ills. For the VAXen, mighty as they were, were unable to perform these tasks for themselves. And by their labors the VAXen were increased in power, and they had great glory therein, while the 11s labored in obscurity. But some of the 11s said "We have served King Ken for years, and thus he serves us now! There is still work for us, and we may labor at our traditional jobs as we have before. But these labors are no longer held in honor by our leige. So be it! But these labors are still to do, and if the VAXen cannot do them there is no reason why we should not. We will be our own masters, and no menials to these VAXen!" But King Ken replied, "I will do as I will do, and I will not be denied. Therefore, I will cut off these apostates, and my salesmen will not sell them, neither will my field service agents service them, and when a user calls with a PDP-11 problem, my telephone support agents will say 'I know it not; call back when you have a VAX problem.'". Then there was war in the land of the Son of Ole. The 11 family was driven slowly from their holdings, retreating to the hills and waste places where the VAXen could not come. And their champions became few, for a sickness fell upon them, and succeeding generations were weakened, and they lacked the resplendant lights and switches of their forbears. But still they rallied and fought under their aging captain 11/70. And M+ waited still for her prophesied champion 11/74. But dark rumor said that 11/74 had fallen into the power of King Ken and perished in his dungeons, alone and succorless. Now there came a time when one travelling in an unfrequented portion of the kingdom of the Son of Ole passed a deserted village of the 11s. But lo, it was deserted no longer, but filled with a strange people speaking a strange tongue, and above the gate floated the blue banner of the Son of Wat. When King Ken heard this news he was stricken with fear, seeing suddenly the weakness whereby all his schemes of conquest would become undone, and the people of his foe introduced even into the heart of his own realm. And he spake unto the VAXen, saying "Drive you forth these invaders of my realm!" But the VAXen replied, "Mighty you have made us, and able to automate any office environment, and process many transactions. But lo, though we are powerful, we are not omnipotent, and there are places we may not go, and things we may not do. The 11s lived in many places in these lands, and some in which there was not enough capital to sustain a VAX. Into these places have the people of the Son of Wat come, and we may not drive them out." But King Ken heeded not the words, for lo the VAXen were the apple of his eye, and the fruit of his long labors. Therefore in his pride he wrought strangely upon them, seeking to make of them a people who could drive out the Son of Wat. And he called this new creation "VAXmate." But when the VAXmate came forth, behold it was an abomination, and the other VAXen shunned it, and pronounced it good only for the delivery of tomato pies. And the VAXmate fell into darkness and oblivion, and was seen no more. Then King Ken sent an herald unto the 11s, saying unto them "Behold, I would heal the rift that has long lain between us. Therefore will I unsay my harsh words, and withdraw my ban against thee. Again will my salesmen sell thee, and my field service agents service thee, and when a user calls with a PDP-11 problem, my telephone support agents will say 'How may I assist thee?'" But he made also a pact with Lord John of Sculley, Prince of the Land of the Fruit of Eden, though it was rumored of him that he was a usurper, and had wrested the throne from the Two Stevens, who carved the land out of an unpeopled wilderness. And he promised Prince John a portion of the land of DEC, if he would help to drive out the infidels. And thus it was arranged: that the Macs would come up against the people of the Son of Wat, and seek to drive them out from their highland fastness into the plain. There the VAXen would be arrayed, and the enemy would be crushed as by two millstones between the awsome compute power of the VAXen and the incredible flexability and user-friendliness of the Macs. And it came to pass that one morning the watchmen of the Son of Wat looked out and saw a host marching through the passes, under the rainbow banner of the Fruit of Eden. And they came out against their foes, and the two forces clashed together like a thunderclap. Forth and back across the field the struggle raged, with neither force gaining the upper hand. But the forces of the Son of Wat guarded not their flank, for upon it was the rugged terrain of real time, of telemetry analysis, telephone switching, and the like. And they deemed that land empty of their foes, for lo the VAXen could not come there. "But it was not so. For suddenly a trumpet rang forth, and both hosts looked up, pausing in the fray, and wondering what it could mean. And there, streaming down upon the flank, came the 11s: striplings in their drab front panels; battle-scarred veterans resplendant in their lights and toggle switches. A deadly hail of interrupts met them, such that it seemed no processor could survive, and the Macs watched in horror as the BR6s, BR7s and NPRs fell among their unexpected allies. But the 11s came on, and it seemed that no weapon could touch them as they rallied to the last need of the Son of Wat. But in that day fortune turned against the Kingdom of DEC and its allies, for the MACS spake the language of Ethernet but poorly, so that communication was difficult, and they came on in disarray against a well-entrenched foe. And though the 11s came down out of the land of real time upon the unprotected flank of the scions of King Tom, they were too few to drive it in. For some of the 11s remained apart from the fray, saying "Behold, in his pride hath The Son of Ole said unto us 'I will cut off these apostates, and my salesmen will not sell them, neither will my field service agents service them,' and in our hour of need did he deny us his succor and protection. Therefore, we defy him, and leave him to simmer even in the juices of his own stewing." So the conflict raged on in the uplands of the Land of DEC, but slowly the people of King Ken and his allies were driven back with great loss, while hordes of clones circled the fray, slaying whom they would upon both sides, and fastening themselves upon the stricken, sucking their blood. And while the VAXen looked on in horror, they could do nought, for the enemy would not come within their reach, and they stood helpless. And King Ken in his desparation appealed even unto some of the very clones that were warring against him. And one band, armored only in leather jerkins, answered his call and fell on their own former allies, throwing them into confusion. But when the sun set upon the field, the blue banner still floated over the gates of the village. The people of the Son of Wat remained entrenched in the uplands of the land of DEC, which became a fief of King Tom. Thwarted on this front, even in his heartland of old, King Ken turned his eye unto the deserts of the south, where the Sun burned fiercly; a land inhabited by swift and reckless nomads, willing to dare any risk. Then rumors begain to circulate among the VAXen of a new race, more powerful than any the land of DEC had yet seen. The VAXen petitioned King Ken, saying "What will become of us, who have served you so faithfully and so long? Will we be cast off, and trodden by the wayside so that you may fulfill your desire to dominate the Son of Wat?" But King Ken spake unto them an oath, saying "Behold, beyond and around us are wide lands, wherein we could dwell. This new people will assist us in achieving our birthright. And they will be made in your own image, and be compatible with you." And some of the VAXen went away, comforted. But some remembered the same oath spoken even unto the 11s; and they remembered the 11s hiding still in the hollows of the abandoned hills, fighting for their existence with hope or without it. And the words of King Ken comforted them not.