.RIGHT MARGIN 80.LEFT MARGIN 5 .FIRST TITLE .TITLE Sort-11 with RMS resident library .SUBTITLE B.#Z.#Lederman .PARAGRAPH To build V3.0 with the RMS supervisor mode library, create a new ODL file by editing the SRTUTL.ODL file. Locate the following lines: .BLANK.NO JUSTIFY.NO FILL ; overlay all links ; SRTOVR: .FCTR *(SLINK1,SLINK2,SLINK3,SLINK4,SLINK5) .BLANK.JUSTIFY.FILL Remove all of the RMS references which follow until you get to the .ROOT line. Then insert the following, and edit the .ROOT line, to look like this: .BLANK.NO JUSTIFY.NO FILL ; ; reference RMS ; RMSROT: .FCTR LB:[1,1]RMSLIB/LB:R0AUTS:R0EXSY:R0IMPA ; ; the final task ; .ROOT SRTROT-RMSROT-SRTOVR ; .END .BLANK.JUSTIFY.FILL Linking to resident libraries (since RMS V2.0) is usually much easier than using disk overlays. If you do not have supervisor mode, then R0AUTS is replaced with R0AUTL, but you will not obtain as much benefit as you will with the supervisor mode library (there might even be a loss of task image space, depending on the disk overlay structure used). Next, create a task build file like this (this example assumes the above ODL file was named SR4.ODL): .BLANK.NO JUSTIFY.NO FILL.TEST PAGE 17 ; ; This command file is used to task build the PDP-11 SORT Utility Program ; SR4, SR4 = SR4/MP ; TASK=...SR4 ASG=TI:1 UNITS=24 RESSUP=LB:[3,54]RMSRES/SV:0 ; ; The next line defines the size of the task by setting the size of the ; sort work PSECT ; EXTSCT=SORAAA:120000 ; // .BLANK.JUSTIFY.FILL I named the task SR4 during testing, but when normally installed the task name becomes the normal name of ...SRT. The EXTSCT should be set to the largest value which will not run the task up over 32Kwords (the task builder will give you a warning that the task has illegal addresses). If you do not have supervisor mode, you will have to reduce the value of the EXTSCT and replace the RESSUP option with LIBR=RMSRES:RO. I have tried Sort-11 with the non-supervisor mode library on a PRO-350, and it works. .PARAGRAPH In case anyone wants to experiment with the I-and-D space version, this is the task build command file I used: .BLANK.NO JUSTIFY.NO FILL SORTID/-FP/ID, SORTID/-SP = ; SRTLIB/LB:$ALLOC:$BILDR:$CDINP:$CLEMH:$CLSSF:$CMIO1:$CMIO2:$CMIO3 SRTLIB/LB:$CMPRS:$DCNSF:$ENDIO:$GETST:$GSAHN:$IMDAT:$INCMP:$MSGHN SRTLIB/LB:$NDBLD:$OPNIO:$OUTIO:$OUTSF:$PRSMS:$PRTAB:$PRTST:$RDINP SRTLIB/LB:$RFARD:$RSTSF:$SFINI:$SFINP:$SFOUT:$SFSWP:$SMEND:$SMGSA SRTLIB/LB:$SMINI:$SPCIN:$STMRG:$STRLS:$STRTN:$UTEXT:$VCCLB:$VCCMP SRTLIB/LB:$VCINI:$VCWRN:$WRNHN:$WTEXT:B16ABS:B16CH1:B16CH2:B16CH3 SRTLIB/LB:B16CH5:B16FTN:B16PG2:B16PG4:B16SAV:B16STP:CALLBK:CC$CON SRTLIB/LB:CINITL:CMPA:CMPB:CMPC:CMPD:CMPF:CMPI:CMPJ SRTLIB/LB:CMPK:CMPL:CMPP:CMPS:CMPU:CMPZ:COLL$U:FTREE SRTLIB/LB:GCMBLK:GETCM:GETCMD:GETMRG:GETREE:GFS$GE:ICT$IN:INMRG SRTLIB/LB:KEYCMP:MNCTG:P1$PAS:P2$PAS:P3$PAS:P4$PAS:P5$PAS:PC$PAR SRTLIB/LB:PI$PAR:PK$PAR:PM$PAR:PRSCOL:PT$PAR:SCOUT:SDECM$:SINITL SRTLIB/LB:SMMAIN:SOR$$C:SOR$CO:SRTSGE:SRTSPC:SRTWRN ; LB:[1,1]RMSLIB/LB:R0AUTS:R0EXSY:R0GCML:R0IMPA ; LB:[1,1]RMSLIB/LB / TASK=...SRT ASG=TI:1 UNITS=24 RESSUP=LB:[3,54]RMSRES/SV:0 ; ; The next line defines the size of the task by setting the size of the ; sort work PSECT ; EXTSCT=SORAAA:124500 ; SORT EXTENSION ; // .BLANK.JUSTIFY.FILL This can be built to the non-supervisor mode RMS library, or to no resident library, and will still have the same amount of task work space (the resident libraries take up Instruction space only). Using the resident libraries will reduce the size of the task image, however (this version uses up about 54Kwords of memory, and increasing the EXTSCT to 140000 uses up about 58Kwords). This version appears to perform all functions properly: increasing EXTSCT to 140000 results in a task which sorts, but will not write out internal statistics properly when the /SS switch is used (the numbers appear properly, but with no text labels). Increasing EXTSCT to 160000 yeilds a task which builds properly, but will not execute. .PARAGRAPH I have not saved my old V2.0 build files, but converting the distributed files to build with the RMS supervisor mode library follows the same procedure as for V3.0: remove all disk overlays which reference RMS, put in a new RMSROT as shown in the above ODL file (you may also have to include module RMSSYM: look in LB:[1,1]RMSRLX.ODL for an example), and use the RESSUP option in the build command file. In general, any task which uses RMS can be converted to use the supervisor mode resident library by following these steps, and I have even converted tasks which normally use FCS to use the RMS library in this manner. I do not recall any instances where the task failed to build and operate properly with the RMS supervisor mode library (if the task worked correctly to begin with, and no other changes were made, such as removing overlays). You will also have to adjust the EXTSCT command in the build file to expand the task image so it is just under 32Kwords, to obtain the maximum benefit.