ASMB,L,N,C *LOADR USE 'ASMB,R,N' (RTE-II) OR 'ASMB,R,Z' (RTE-III) * * *************************************************************** * * (C) COPYRIGHT HEWLETT-PACKARD COMPANY 1976. ALL RIGHTS * * * RESERVED. NO PART OF THIS PROGRAM MAY BE PHOTOCOPIED, * * * REPRODUCED OR TRANSLATED TO ANOTHER PROGRAM LANGUAGE WITHOUT* * * THE PRIOR WRITTEN CONSENT OF HEWLETT-PACKARD COMPANY. * * *************************************************************** * IFN ******* BEGIN NON-MEU CODE **** HED RELOCATING LOADR FOR RTE-II <1732> NAM LOADR,3,90 92001-16002 REV.1732 770811 ******* END NON-MEU CODE ****** XIF IFZ ******* BEGIN MEU CODE ******** HED RELOCATING LOADR FOR RTE-III <1640> NAM LOADR,3,90 92060-16004 REV.1732 770811 EXT $ENDS,$MATA ******* END MEU CODE ********** XIF * UNL IFN ******* BEGIN NON-MEU CODE **** LST * NAME: RTE LOADER * SOURCE: 92001-18002 * RELOC: 92001-16002 * PGMR: P. KAPOOR, E. WONG, G. ANZINGER * UNL ******* END NON-MEU CODE ****** XIF IFZ ******* BEGIN MEU CODE ******** LST * NAME: RTE LOADER * SOURCE: 92001-18002 * RELOC: 92060-16004 * PGMR: E. WONG * UNL ******* END MEU CODE ********** XIF LST SUP EXT EXEC,$LIBR,$LIBX,PRTN * SKP * LIST OF ERROR DIAGNOSTICS * * * = MODULE NAME PRINTED BEFORE DIAGNOSTIC * **= ENTRY POINT NAME PRINTED AFTER MODULE NAME * * 01 * - CHECKSUM ERROR * 02 * - ILLEGAL RECORD * 03 * - MEMORY OVERFLOW * 04 * - BP LINKAGE OVERFLOW * 05 * - SYMBOL TABLE OVERFLOW * 06 * - COMMON BLOCK ERROR * 07 * ** - DUPLICATE ENTRY POINTS * 08 - NO TRANSFER ADDR * 09 * - RECORD OUT OF SEQUENCE * 10 - ILLEGAL PARAMETER IN ON OR GO STATEMENT * 11 - ATTEMPT TO REPLACE A CORE RESIDENT PROG * 12 - LG AREA USED WITHOUT RESETTING (P1=2 IN 'GO') * P1 WAS NOT INPUT AS 99 PREVIOUSLY. * 13 - LG AREA HAS BEEN ILLEGALLY RESET - OVERWRITTEN. * PROGRAM ADDITION ON LG AREA NOT ALLOWED FOR MAIN SEG * LOAD IF THE LOADER HAS ALREADY LOADED THE LAST SEGMENT. * HAVING ONCE USED LG AREA FOR FORCE LOADING WITH P1=99, * LOADER CANNOT BE RESCHEDULED WITH P1=99 IN THE 'GO' REQUEST. * 14 * - ASMB PRODUCED ILLEGAL RELOCATABLE . A DBL REC * REFERS TO AN EXTERNAL WHICH HAS NOT BEEN DEFINED. * (THE ORDINAL CAN NOT BE FOUND IN THE SYMBOL TABLE). * 15 * ** - FORWARD REFERENCE TO A TYPE 3 OR TYPE 4 ENT OR TO * AN EXT WITH OFFSET WHICH HAS NOT YET BEEN DEFINED, * OR A FORWARD INDIRECT EXTERNAL REFERENCE. * 16 - ILLEGAL PARTITION NUMBER OR CORRUPT MAP TABLE. * 17 - NUMBER OF PAGES REQUIRED EXCEEDS AMOUNT IN PTTN. * 18 - TOTAL NUMBER OF PAGES REQUIRED EXCEEDS 32. * * * LIST OF WARNINGS (THE RELOCATION IS NOT ABORTED) * * 17 - NUMBER OF PAGES REQUIRED EXCEEDS AMOUNT IN PTTN. SKP * * VARIABLES AND CONSTANTS * PLIST NOP LIST/NO LIST FLAG = 0/1 CWABP NOP CURRENT BASE PAGE ADDR LST1 NOP LST WORD 1 ADDR LST2 NOP LST WORD 2 ADDR LST3 NOP LST WORD 3 ADDR LST4 NOP LST WORD 4 ADDR LST5 NOP LST WORD 5 ADDR PRIOR NOP ADDR OF PRIORITY IN ID SEG PRENT NOP ADDR OF PRIMARY ENTRY POINT NAM12 NOP ADDR OF NAME 1,2 NAM34 NOP ADDR OF NAME 3,4 NAM5 NOP ADDR OF NAME 5, TYPE RESL NOP ADDR OF 10'S MILLS. IN ID SEG TMDY1 NOP ADDR OF TIME OF DAY ,LS TMDY2 NOP ADDR OF TIME OF DAY , MS NUPLS NOP NO. UTILITY PROGS LOADED TPREL NOP CURRENT MAX PROG RELOC ADDR DBLAD NOP DATA BLOCK RELOCATION ADDR OPRND NOP ABSOLUTE MEMORY ADDR WDCNT NOP TEMPORARY COUNTER DSKUN NOP CURRENT DISK LOGICAL UNIT NO. DTRAK NOP CURRENT DBUF TRACK DSECT NOP CURRENT DBUF SECTOR DCNT NOP CURRENT DBUF COUNT CURAL NOP CURRENT LBUF ADDR CURAT NOP CURRENT TBUF ADDR TBUF BSS 5 TEMPORARY BUFFER MSEGF NOP MAIN/SEGMENT FINAL LOAD FLAG NPAR BSS 7 NAME REC PARAMETERS BKLWR NOP LAST WORD OF AVAILABLE MEM LWA NOP LOADING AREA, BPFWA NOP FWA OF ACTUAL BP LINK AREA FWABP NOP FWA AND LWA OF DUMMY LWABP NOP BASE PAGE AREA. SEGB NOP SEGMENT BASE PAGE LOWER BOUND DBFLG NOP NO DEBUG/DEBUG FLAG = 0/1 LGO NOP LOAD-AND-GO FLAG: 0=NO, >0=YES MSEG NOP MAIN/SEGMENT LOAD FLAG: 0=NO, >O=YES DBLFL NOP FIRST DBL REC: -1,YES; 0,NO. EDFLG NOP EDIT FLAG: 1=ADDITION, 2=REPLACEMENT PTYPE DEC 3 PROG TYPE PPRI NOP PROG PRIORITY OPCOD NOP COMTP NOP TYPE OF COMMOM MXCOM NOP MAXIMUM COMMON LENGTH PAM1 NOP PARM1 OF ON REQ PAM2 NOP BATCH NOP BATCH MODE FLAG: 0=NO, -1=YES INDLU NOP N1 DEC -1 N9 DEC -9 N64 DEC -64 N128 DEC -128 P2 DEC 2 P3 DEC 3 P4 DEC 4 P5 DEC 5 P6 DEC 6 P7 DEC 7 P8 DEC 8 P12 DEC 12 P16 DEC 16 P18 DEC 18 P20 DEC 20 P22 DEC 22 P23 DEC 23 P26 DEC 26 P42 DEC 42 P98 DEC 98 P99 DEC 99 P128 DEC 128 P9999 DEC 9999 M7 EQU P7 M17 OCT 17 M20 OCT 20 M60 OCT 60 M77 OCT 77 M177 OCT 177 M200 OCT 200 M300 OCT 300 M377 OCT 377 M400 OCT 400 M0760 OCT 76000 M7400 OCT 177400 NDAY OCT 177574,025000 ENTRL DEF *+3 RELOCATION BASE TABLE RBTAD DEF *+1 RELOCATION BASE TABLE NOP PPREL NOP CURRENT PROG BASE BPREL NOP BASE PAGE BASE COMAD NOP COMMON BASE NOP ABSOLUTE BASE BLOK# NOP BLANK OCT 40 UBLNK OCT 20000 UCHRG OCT 43400 MSIGN OCT 100000 CHRDE ASC 1,DE CHRBU ASC 1,BU MESS2 DEF MBUF AMEM3 DEF MBUF+3 AMEM6 DEF MBUF+6 MES10 DEF *+1 ASC 7,LOADR ABORTED PGMIN OCT 305 SEOT OCT 705 SET END OF TAPE CONWORD LISTU OCT 206 LIST OUTPUT UNIT NO. BLST NOP BEGINNING OF LOADER SYMBOL TABLE PLST NOP END OF LST TLST NOP CURRENT LST ADDR. SLST NOP INITIALIZE FOR SEGMENT AREA. FLST NOP FWA OF LST SET FOR USER'S PROG OEFL1 NOP ODD/EVEN SECTOR FLAG SEOFG NOP ODD/EVEN SEC FLAG FOR MAIN/SEG LBOEF NOP LIB ODD/EVEN SECOR FLAG LGTMP NOP PREVIOUS LG ODD/EVEN SEC FLAG LGOEF NOP CURRENT LG ODD/EVEN SECTOR FLAG LGOBF NOP LG ON GO REQ. FLAG #IDAD NOP ADDR OF LONG ID SEGMENT * SPC 1 IFN ******* BEGIN NON-MEU CODE **** N40 DEC -40 ******* END NON-MEU CODE ****** XIF SPC 1 SPC 1 IFZ ******* BEGIN MEU CODE ******** N140 DEC -140 N34 DEC -34 P1000 DEC 1000 P21 DEC 21 M40 OCT 40 MES11 DEF *+1 ASC 9,00 PAGES REQUIRED MS11# EQU MES11+1 #PGS NOP # PAGES NEEDED IN PTTN #PTTN NOP REQUESTED PTTN NUMBER #PGPT NOP # PAGES IN PTTN #MPFT NOP MEMORY PROTECT FENCE TABLE INDEX #MNPG NOP LOWEST PAGE NO. USED BY PROG #MXPG NOP HIGHEST PAGE NO. USED BY PROG #MXRT DEC -1 #PAGES IN LARGEST RT PTTN #MXBG DEC -1 #PAGES IN LARGEST BG PTTN ER.16 LDA ERR16 ILLEGAL PTTN # RSS ER.17 LDA ERR17 #PAGES REQ.>PTTN SIZE RSS ER.18 LDA ERR18 TOTAL PAGES > 32 JMP ABOR ERR16 ASC 1,16 ERR17 ASC 1,17 ERR18 ASC 1,18 ******* END MEU CODE ********** XIF SPC 1 SKP * BASE PAGE COMMUNICATION VALUES * A EQU 0 B EQU 1 * . EQU 1650B ESTABLISH ORIGIN OF AREA * INTLG EQU .+5 NUMBER OF INTERRUPT TBL ENTRIES TAT EQU .+6 FWA OF TRACK ASSIGNMENT TABLE KEYWD EQU .+7 FWA OF KEYWORD BLOCK XEQT EQU .+39 ID SEGMENT ADDR OF LOADR IDSDA EQU .+56 DISC ADDR. OF FIRST ID SEGMENT IDSDP EQU .+57 -POSITION WITHIN SECTOR BPA2 EQU .+59 LWA RT DISC RES. BP LINK AREA RTORG EQU .+62 FWA OF REAL-TIME AREA RTCOM EQU .+63 LENGTH OF REAL TIME COMMON AREA RTLWA EQU .+65 LWA OF RT DISC RESIDENT AREA BKORG EQU .+66 FWA OF BG AREA BKCOM EQU .+67 LENGTH OF BG COMMON AREA TATLG EQU .+69 LENGTH OF TRACK ASSIGNMENT TABLE TATSD EQU .+70 # OF TRACKS ON SYSTEM DISC SECT2 EQU .+71 # SECTORS/TRACK ON LU 2 (SYSTEM) SECT3 EQU .+72 # SECTORS/TRACK ON LU 3 (AUX.) DSCLB EQU .+73 DISC ADDR OF RES LIB ENTRY PTS DSCLN EQU .+74 # OF RES LIB ENTRY POINTS DSCUT EQU .+75 DISC ADDR OF RELOC UTILITY PROGS DSCUN EQU .+76 # OF RELOC UTILITY PROGS LGOTK EQU .+77 LOAD-N-GO: LU,STG TRACK,# OF TRKS LGOC EQU .+78 CURRENT LGO TRACK/SECTOR ADDR BKLWA EQU .+87 LWA OF MEMORY IN BG SPC 1 IFN ******* BEGIN NON-MEU CODE **** BPA1 EQU .+58 FWABP RT DISC RES BPA3 EQU .+60 FWABP BG DISC RES BKGBL OCT 1646 LWABP BG DISC RES URFWA EQU .+64 FWA OF USER RT DISC RES AREA URLWA NOP LWA OF USER RT DISC RES AREA UBFWA EQU .+68 FWA OF USER BG DISC RES AREA UBLWA EQU BKLWA LWA OF USER BG DISC RES AREA ******* END NON-MEU CODE ****** XIF SPC 1 SPC 1 IFZ ******* BEGIN MEU CODE ******** BPA1 EQU P2 FWABP USER RT DISC RES BPA3 EQU BPA1 FWABP USER BG DISC RES BKGBL EQU BPA2 LWABP USER BG DISC RES URFWA NOP FWA USE RT DISC RES AREA URLWA OCT 77777 LWA USER RT DISC RES AREA UBFWA EQU URFWA FWA USER BG DISC RES AREA UBLWA EQU URLWA LWA USER BG DISC RES AREA ******* END MEU CODE ********** XIF SPC 1 SKP * * LOADING OF PROGRAMS WITH THE RELOCATABLE LOADER CONSISTS OF * (1) LOADING PROGRAMS FROM THE INPUT UNIT * (2) LOADING PROGRAMS FROM THE PROG LIB * THE FIRST PROGRAM WITH A PRIMARY ENTRY POINT IS CONSIDERED * TO BE THE MAIN PROGRAM. AT LEAST ONE MAIN PROG MUST BE LOADED * BEFORE THE LIBRARY IS LOADED. LINKAGES FROM THE MAIN PROG * TO ALL USER AND LIB SUBROUTINES IS DETERMINED BY ENTRIES * IN THE LOADER SYMBOL TABLE (LST). * * EACH LST ENTRY CONSISTS OF 5 WORDS: * * ************************************************************* * * NAME - * NAME - * NAME - *ENT/EXT FLG* * * * CHARS 1,2 * CHARS 3,4 * CHAR 5/ * 'V' BIT * * * * * * ORDINAL * ENT TYPE * SYMB VALU * * ************************************************************* * * EACH WORD IN THE LST ENTRY CONSISTS OF THE FOLLOWING: * * WORD 1: SYMBOL NAME - ASCII CHARACTERS 1,2 * BIT 15 = 1 MEANS THE ENTRY HAS BEEN LISTED * BIT 15 = 0 MEANS THE ENTRY HAS NOT BEEN LISTED * WORD 2: SYMBOL NAME - ASCII CHARACTERS 3,4 * WORD 3: (8-15) SYMBOL NAME - ASCII CHARACTER 5 * (0-7) EXT ORDINAL * WORD 4: ORGANIZED INTO FOLLOWING THREE FIELDS - * STATUS FIELD (BITS 0 TO 6) - INDICATES STATUS * OF THE SYMBOL AS FOLLOWS: * 0 - ENT SYMBOL READ DURING LIB SCAN (COULD BE * FROM RES LIB, RELOC LIB ON DISC OR USER * GIVEN LIB). * 1 - ENT SYMBOL READ DURING FORCE LOADING OF USER * PROGRAM. * 2 - EXT ENTRY (UNDEFINED SYMBOL). * NOTE THAT STATUS OF A SYMBOL CHANGES FROM 2 TO * 0 OR 1 AS IT BECOMES DEFINED. * 'V' BIT (BIT 7) - WHEN SET THEN WORD 5 HAS THE * THE ADDRESS OF THE BASE PAGE LINK, ELSE WORD 5 * HAS SYMBOL VALUE (VALUE OF ENT AFTER RELOCATIONA). * ENT TYPE (BITS 8 TO 15) - IS 0 FOR EXT ENTRY AND * 0 TO 4 (RELOCATION INDICATOR) FOR ENT SYMBOL. * WORD 5: BASE PAGE LINKAGE ADDR IF 'V' BIT IS SET * ELSE SYMBOL VALUE . * * INITIALLY, THE LOADER SYMBOL TABLE CONSISTS OF THE ENTRY POINTS * FOR THE LIBRARY ROUTINES IN THE RESIDENT LIB AND THE * SYSTEM ENTRY POINTS (TYPE 1 ENT NOT PICKED UP). AS EACH * USER PROGRAM IS LOADED AND ENT/EXT RECS PROCESSED, SYMBOLS * ARE ADDED TO THE LIST. WHEN ALL USER PROGS HAVE * BEEN LOADED, AND LIB LOADING IS INITIATED, THE LOADER * SCANS LST FOR UNDEFINED SYMBOLS AND MATCHES THESE WITH THE * ENT SYMBOLS IN LIBRARY DIRECTORY. ON FINDING A MATCH, THE * LOADER LOADS THE CORRESPONDING LIB PROG AND ADDS ITS * ENT'S AND EXT'S TO THE LST. THIS PROCEDURE CONTINUES UNTIL ALL * UNDEFINED SYMBOLS HAVE BEEN DEFINED OR A COMPLETE PASS THROUGH * THE DIRECTORY FAILED TO RESOLVE ANY EXTERNAL . * FOR MAIN/SEGMENT LOAD, IF UNRESOLVED SYMBOLS STILL REMAIN * THEN THE ENTIRE LG AREA IS SCANNED FOLLOWING WHICH THE DISC * LIBRARY DIRECTORY IS AGAIN SCANNED - IF NEED BE. IF ANY * SYMBOL STILL REMAINS UNDEFINED AFTER THIS THEN IT LISTED * - EXCEPT FOR UNDEFINED SYMBOLS IN MAIN - AND THE LOADER * SUSPENDS. * IF THE LOADER IS OPERATING UNDER BATCH, ALL OUTPUT * THAT NORMALLY COMES ON THE SYSTEM CONSOLE GETS LISTED * ON LU 6. * * THE LST IS ORIGINED AT THE UPPER END OF THE LOADER AND EXTENDS * TOWARD HIGH CORE. AN IRRECOVERABLE ERROR IS DETECTED IF LST * EXTENDS PAST THE LAST WORD OF AVAILABLE MEMORY. * IN CASE OF ERROR THE LOADER PRINTS THE NAME OF THE MODULE * IN WHICH THE ERROR OCCURED, FOLLOWED BY THE ERROR CODE. * IN CASE OF ERRORS 7 & 15 , NAME OF THE ENTRY POINT CAUSING * THE VIOLATION IS ALSO PRINTED FOLLOWING THE MODULE NAME. * SKP * * LOADER INITIALIZATION SECTION * * LOADR IS SCHEDULED BY AN 'ON' STATEMENT HAVING * THE FOLLOWING FORMAT: * * 'ON,LOADR,P1,P2,P3,P4,P5' , WHERE: * * P1 = N, N IS THE LOGICAL UNIT NUMBER OF THE * BINARY INPUT DEVICE FOR LOADING * PROGRAMS. IF P1 = 0, UNIT #5 IS USED. * IF P1 = 99, LOAD FROM THE DISC * LOAD-AND-GO AREA. * * P2 = N, N IS THE LOGICAL UNIT NUMBER OF THE * LIST OUTPUT DEVICE FOR PRINTING * LOADING INFORMATION. IF P2 = 0, * UNIT #6 IS USED. * * P3 = N, N IS A CODE FOR THE TYPE OF OPERATION: UNL IFN LST * N IS A 2 DECIMAL DIGITS CODE (YZ) UNL XIF IFZ LST * N IS A 3 DECIMAL DIGITS CODE (XYZ) * 100'S DIGIT (X) - SUBSYSTEM GLOBAL AREA * --------------------------------------- * 0 - SSGA NOT USED (DEFAULT) * 1 - SSGA USED BY PROG (ONLY IN RTE-III) UNL XIF LST * * 10'S DIGIT (Y) - COMMON TYPE * ----------------------------- UNL IFN LST * 0 - DEFAULT RT COMMON FOR RT PROGS, * BG COMMON FOR BG PROGS * LOCAL COMMON FOR TEMPORARY LOADS UNL XIF LST UNL IFZ LST * 0 - DEFAULTS TO LOCAL COMMON !! (*** NOTE THIS ***) !! UNL XIF LST * 1 - SYSTEM COMMON * RT COMMON FOR RT PROGS, * BG COMMON FOR BG PROGS * 2 - LOCAL COMMON * 3 - REVERSE COMMON * RT COMMON FOR BG PROGS, * BG COMMON FOR RT PROGS * * DEFAULT * COMMON 1'S DIGIT (Z) - OPERATION CODE * ---------------------------------------- * 2 0 - BG TEMPORARY(DEFAULT) * 2 1 - BG TEMPORARY WITH DEBUG * 1 2 - ONLINE EDIT * - 3 - LIST PROGS * - 4 - PURGE PROG * 2 5 - REAL-TIME TEMPORARY * 1 6 - REAL-TIME REPLACE * 1 7 - REAL-TIME ADD NEW * 1 8 - BG REPLACE * 1 9 - BG ADD NEW * NOTE : VALUES N=13,14,23,24,33 AND 34 ARE INVALID. * * P4 = N, N IS THE STRUCTURE PARAMETER UNL IFZ LST * (5 DECIMAL DIGITS CODE XXYYZ) * XX - NUMBER OF PAGES REQUIRED * ----------------------------- * 00 - USE PROG SIZE (DEFAULT) * 01-32 - NUMBER OF PAGES * * YY - PTTN ASSIGNMENT * ------------------------- * 00 - NONE ASSIGNED (DEFAULT) * 01-64 - PTTN NUMBER * * Z - STRUCTURE * -------------- UNL XIF LST * 0 - MAIN PROG ONLY (DEFAULT) * 1 - BG MAIN+SEGMENT LOADING. * * P5 = 1, OMIT PROG NAME AND BOUNDS LIST * = 2, OMIT LIST OF ENTRY POINTS * = 3, OMIT BOTH * = 0, DO BOTH LISTINGS (DEFAULT) * PARAMETERS P3, P4 AND P5 DEFAULT TO ZERO IF OMITTED. * SKP * MESS7 DEF *+1 THIS MESS MUST PRECEDE MBUF ASC 11,DUPLICATE PROG NAME - MBUF BSS 66 NAM REC BUFFER MBUF1 EQU MBUF+1 SBUF BSS 128 DIRECTORY BLOCK BUFF XBUF BSS 128 DISC BUF FOR RELOCS DBUF BSS 128 DISC BUF FOR ABS LBUF BSS 128 RELOC IN, UREAD, COMP TRKS .BUF EQU * END OF BUFFERS IN OVERLAYED CODE * ORG MBUF PUT INIT CODE IN BUFFER LOADR LDA B,I SAVE STA PAM1 PARAMETER 1 INB LDA B,I CHECK PARAMETER STA PAM2 SAVE PARAMETER P2 SZA,RSS IF LIST DEVICE NOT GIVEN LDA P6 USE 6 IOR M200 ADD V BIT TO USE COLUMN ONE STA LISTU SET NEW LU. INB LDA B,I AND 3, STA OPCOD OPERATION CODE. INB LDA B,I AND 4, SPC 1 IFN * BEGIN NON-DMS CODE *************** AND P1 KEEP ONLY BIT 0 IF RTE-II *** END NON-DMS CODE *************** XIF SPC 1 STA MSEG (MAIN/SEGMENT FLAG) INB LDA B,I AND 5. STA PLIST (LIST/NO LIST) SPC 2 UNL * ******************DEBUGGING*********************** * EXT DBUG * AND P3 * CPA PLIST PARAM > 3 ? * JMP LOADP NO, NORMAL EXECUTION * STA PLIST YES, SET CORRECT PARAM * JSB DBUG WE WANT DDT ! * DEF *+1 LOADP EQU * * ******************DEBUGGING*********************** LST SPC 1 * JSB EXEC DEF *+3 INDICATE UNDECLARED CORE DEF P22 USAGE. DEF P3 JSB LGSET SET UP LG PARAMETERS LDA LGOC SET UP END OF LG AREA ADDR STA LGOCP FOR PROG INPUT STA LGOCL AND FOR LIB SCAN. CLB SET FLAG TO INDICATE SLA WHETHER LAST LGOC ENDED CCB ON ODD SEC BOUNDRY OR EVEN. STB LGOEF LDB XEQT (B)=ADDR OF LOADR'S ID SEG ADB P20 (B)=ID SEG'S WORD 21 ADDR LDA B,I GET WORD 21 TO CHECK BIT 15 LDB LISTU (B)=LIST LU CONTROL WORD SSA IF LOADR RUNNING UNDER BATCH STB LIST1 THEN SYSOUT DEVICE IS LIST LU. CLB SSA SET 'BATCH' FLAG TO NON-ZERO CCB IF RUNNING UNDER BATCH STB BATCH LDA PLIST CHECK PARAM 5 SSA IF NEGATIVE JMP LDI5 THEN INPUT ERROR ADA N4 SSA,RSS IF GREATER THAN 3 JMP LDI5 THEN INPUT ERROR. LDA PLIST ARS SET FLAG STA ENFLG FOR ENTRY POINT LISTING. LDA PAM1 CHECK PRAM 1. SZA,RSS IF ZERO, GO TO CHECK #2, JMP LDI2 LEAVE INPUT AS LU 5. CPA P1 IF INPUT IS SYS TTY, JSB CHKP1 TREAT AS ERROR UNLESS P3=3 OR 4. CPA P2 IS THIS TO THE DISK JMP LDI5 JUST WHO DO YOU THINK YOUR KIDDING?????? LDB P2 CPA P99 IF PARAM STA LGO WORD. CPA P99 IF LG TO BE USED STB LGOU SET 'LG IN USE' FLAG * LDI2 LDB XEQT (B)=ADDR OF LOADR'S ID SEG ADB P23 (B)=ADDR OF LOADR'S HIGH MAIN LDA B,I SET UP LOADR SYMBOL TABLE TO STA BLST START FROM LOADR'S HIGH STA PLST MAIN ADDR AND GROW UP STA TLST TOWARD HIGH CORE. STA SLST STA FLST ADB N9 (B)=ADDR OF LOADR ID'S WORD 15 LDA B,I GET LOADR'S PROG TYPE LDB RTLWA GET ADDR OF LOADR'S LAST WORD SPC 1 IFN ******* BEGIN NON-MEU CODE **** ADB N1 SUBTR 1 FOR RTE-II STB URLWA ******* END NON-MEU CODE ****** XIF SPC 1 SLA SKIP IF LOADR IS FG LDB BKLWA ELSE GET LWA OF BG. STB BKLWR SET AS LWA AVAILABLE TO LOADR LDA OPCOD GET P3 OF 'ON' REQUEST. SPC 1 IFN ******* BEGIN NON-MEU CODE **** ADA N40 ADD -40 TO CHECK RANGE ******* END NON-MEU CODE ****** XIF SPC 1 SPC 1 IFZ ******* BEGIN MEU CODE ******** ADA N140 ADD 140 (MAX WITH SSGA) ******* END MEU CODE ********** XIF SPC 1 SSA,RSS IF OPCODE > 39 JMP LDI5 THEN INPUT ERROR LDA OPCOD GET P3 AGAIN CLB .MBUF EQU *-MBUF OVERLAY PROBLEM? STB MBUF CLEAR "VALID MODULE NAME PRESENT" FLAG DIV P10 GET 'COMMON TYPE' (REG-A) AND STA COMTP SAVE IT. STB OPCOD 10-119 RANGE IN 'OPCOD' ADB OPTBL ADD TABLE BASE ADDR TO OPCODE LDB B,I RESOLVE INDIRECT JMP B,I GO TO PROPER PROCESSOR * OPTBL DEF *+1 DEF BGTMP 0=BG TEMPORARY DEF DBGF 1=BG TEMP WITH 'DEBUG' DEF LEDIT 2=EDIT WITH "GO" REQUEST DEF LLIST 3=LIST ID SEGMENTS DEF LDI3 4=PURGE PROG DEF FGTMP 5=FG TEMPORARY DEF FGRPL 6=FG REPLACE DEF FGNEW 7=FG ADD NEW DEF BGRPL 8=BG REPLACE DEF BGNEW 9=BG ADD NEW * DBGF ISZ DBFLG SET DEBUG FLAG BGTMP JMP LEDT3 TREAT AS BG TEMPORARY BGNEW CLB,INB,RSS EDIT FLAG = 1 FOR NEW BG BGRPL LDB P2 EDIT FLAG = 2 FOR REPLACE STB EDFLG SET PROPER EDIT FLAG JMP LEDT3 SET COMMON BOUNDS * FGNEW CLB,INB,RSS EDIT FLAG = 1 FOR ADD FGRPL LDB P2 EDIT FLAG = 2 FOR REPLACE STB EDFLG SET PROPER EDIT FLAG FGTMP LDB P2 STB PTYPE SET PROG TYPE = 2 JMP LEDT3 SET COMMON BOUNDS * * NORMAL ON-LINE LOADING OPERATION * LEDT3 EQU * SPC 1 IFZ ******* BEGIN MEU CODE ******** LDA MSEG GET PARAM P4 CLB DIV P1000 SAVE # PAGES REQ. STA #PGS 00XXX-32XXX LDA B CLB DIV P10 SAVE PTTN # REQ. STA #PTTN XX00X-XX64X STB MSEG SAVE XXXX0-XXXX1 * CCB GET ADDR MAP TABLE - 1 ADB $MATA WHERE # OF PART. IS KEPT SZA,RSS WAS PTTN# SPECIFIED? JMP NOPTN NO, DO SIZE CHECK LATER SPC 2 * PARTITION WAS SPECIFIED FOR THIS PROG * LDA B,I YES, DO SIZE CHECK NOW CMA ADA #PTTN SSA,RSS ERR16 IF PTTN# > #PTTNS JMP ER.16 *