ASMB,R,L,C * NAME: LOAD1 * SOURCE: 92070-18109 * RELOC: 92070-16109 * PGMR: D.J.W., B.W. * * *************************************************************** * * (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. * * *************************************************************** * * NAM LOAD1,5,99 92070-1X109 REV.2026 800507 * * * THE FIRST SEGMENT HAS THREE MAIN FUNCTIONS: * * * PARSE THE RUN STRING PARAMETERS, * * * HANDLE THE COMMANDS WHICH MUST PRECEED RELOCATION, * * * DO CONFLICT CHECKING JUST PRIOR TO RELOCATION. * * * CHANGE 01/08/80 * CHANGED CNFLT SO AS TO DEAL WITH A LOCC INITIAL BUMP IN * TH2.L INSTEAD OF TH1.L AS BEFORE. THIS ALLOWED AN AUTO- * MATIC OUTPUT OF THE SET LOCC VALUE BEFORE RELOCATION HAS * BEGUN. * * CHANGED CNFLT SO AS TO UPDATE TH2.L AND CBP.L WITH PGFWA * AND BPFWA IF AN ILLEGAL BOUND IS FOUND. THE ERROR MESSAGE * IS PRINTED AT ILLOC AND ILBPL RESPETIVELY. JUST BEFORE * THE RETURN TO CALLER OF CNFLT TH2.L AND CBP.L AND UPDATED. * * CHANGE 2/22/80 * FIXED A BUG WITH THE BASE PAGE BUMP PROCESS. ONLY UPDATE * BPFWA WITH A BUMP VALUE FOR A REAL-TIME PROGRAM, NOT A * BACKGROUND PROGRAM. * * * CHANGE 3/8/80 * CHANGED CNFLT SO AS TO ALLOCATE THE EXACT AVAILABLE BASE * PAGE FOR THE DUMMY AREA. I WAS PREVIOUSLY ALLOCATING ONE * TOO MANY ( I NEVER COULD SUBTRACT VERY WELL ). * * CHANGE 5/7/80 BW * SET INL.L FLAG FOR 2026 LOADER LIBRARY CHANGE TO FORCE THE * USE OF AN INDIRECT LINK IF JSB TO EXT OCCURS. THIS ALLOWS * A PROGRAM TO START RELOCATION ON THE SAME PAGE AS THE MEMORY * RESIDENT PROGRAMS AND NOT CALL A SHARED ROUTINE WITHOUT HOLDING * OFF INTERRUPTS FOR ONE INSTRUCTION FETCH. * * HED LOADER INITIALIZATION SEGMENT ENT CNFLT,LOAD1,NEXTL,PARST,REMDR * EXT INL.L,RTFW EXT .MVW,.DFER, #LIBS,#SGMT,AB.RT,AFWA EXT ARECD, BCOM,BPFWA,BPLWA,C.LEN,CBP.L EXT CDCB, CFWA,CKBND,CNAMR,CNUMO,COMAD EXT COMLN,COMTP,CPL.L,CRECD,DRKEY,DSNAP EXT FMPER,FOPEN,FORCD,FWAVB,FWAFS,GETST EXT HEADR,ID.CB,IECHO,IFTTY,INAMR,IN.TR EXT IPBUF,ISTRC,L.BUF,L.CLS, LCOM,LDRER EXT LI.PR,LNAME,LOGDV,LOGLU,LSTDF,LWABP EXT NAMRR,NOCMD,NLWBP,NXTOP,ONAMR,OUTAB EXT OUTDF,P.ROR,PGFWA,PL.ST,PNAME,PRERR EXT PRMPT,PROGT,READF,RMPAR,SEG.L,SLONG EXT SNAMR,SNPDF,SYOUT, TEST,TH2.L * A EQU 0 B EQU 1 * DEST BSS 5 DUMMY EQU DEST * LOAD1 JSB RMPAR RETRIEVE PARAMETERS FROM THE MAIN DEF *+2 DEF DEST DESTINATION ADDRESS JMP DEST,I * NEXTL JMP NXTOP BEGIN NEXT LOAD HED PARSE THE RUN STRING * * * PARST PARSES THE LOADER RUN STRING. * * RU,LOADER,,,,,, * * N80 DEC -80 * PARST JSB GETST GET THE RUN STRING DEF *+4 DEF L.BUF+3 ADDRESS OF 40 WORD STRING BUFFER DEF N80 LENGTH OF STRING (NEG CHAR LENGTH) DEF SLONG * JSB LOGLU DEF *+2 DEF DUMMY STA LOGDV CLA,INA SET DEFAULT TO CURRENT PAGE LINKING STA CPL.L LOADER LIBRARY FLAG * * PARSE COMMAND FILE NAMR * JSB NAMRR NOW GET THE COMMAND FILE NAME LDB IPBUF+3 GET NAMR TYPE SZB HAVE WE GOT SOMETHING ? JMP GTCMD YES, GO PROCESS * CCA NULL OR END OF STRING STA CMDFL SET 'NO COMMAND FILE FOUND' FLAG LDA LOGDV YES, GET THE LOG DEVICE AS DEFAULT STA CNAMR PUT INTO PARSE BUFFER CLA,INA SET TYPE WORD TO LU (NOT A FILE) STA CNAMR+3 JMP INTR? * CMDFL BSS 1 COMMAND FILE FOUND FLAG * GTCMD LDA AIPBF GET THE NEG COUNT AGAIN LDB ACNAM JSB .MVW AND MOVE NAME TO COMMAND NAMR DEF P6 SOURCE OF MOVE NOP COMMAND FILE NAME ADDRESS * LDA CNAMR+3 GET THE PARSE TYPE WORD AND P3 KEEP ONLY THE LEAST TWO BITS STA CNAMR+3 * CPA P1 IS IT AN LU ? RSS YES JMP GTREL NO, SO GO GET THE REL FILE INTR? JSB IFTTY IS THE LU INTERACTIVE ? DEF *+2 DEF CNAMR CMA,SSA,INA,RSS STA IN.TR SET INTERACTIVE FLAG TO 1 * * PARSE THE RELOCATABLE INPUT FILE NAMR * GTREL JSB NAMRR NOW GET THE INPUT FILE NAME SSA END OF STRING ? JMP SEFIL YES LDA IPBUF+3 SZA,RSS JMP GTLST CCE ALS,ERA STA IPBUF+3 LDA AIPBF NEG COUNT TO A REG FOR MOVE WORDS LDB AINAM JSB .MVW DEF P6 NOP * * PARSE THE LIST FILE NAMR * GTLST JSB NAMRR NOW GO GET THE LIST DEVICE SSA JMP SEFIL NONE INPUT, GO GET DEFAULT JSB LSTDF GOT A LIST FILE, OPEN IT JMP GTOUT NO ERROR, GET OUTPUT DEVICE STA TEMP GOT AN ERROR, SAVE FOR LATER MESSAGE LDA AIPBF AND SAVE NAMR CONTENTS LDB ATMP1 IN A TEMPORARY BUFFER JSB .MVW DEF P4 NOP * SEFIL LDA IN.TR FIRST DEFAULT EQUALS THE COMMAND FILE SZA,RSS BUT ONLY IF INTERACTIVE JMP SEFI2 NO LDA ACNAM YES, LETS TRY IT LDB AIPBF JSB .MVW DEF P6 NOP JSB LSTDF OPEN THE FILE JMP GTOUT NO ERROR SEFI2 LDA LOGDV NEXT DEFAULT IS THE LOG LU STA IPBUF SET THE LU INTO PARSE BUFFER CLA,INA STA IPBUF+3 SET AS TYPE LU JSB LSTDF OPEN THE TYPE 0 FILE JMP GTOUT NO ERROR JMP AB.RT ERROR ON FINAL DEFAULT * * * PARSE THE OUTPUT FILE NAMR * GTOUT JSB NAMRR GET THE OUTPUT FILE NAME SSA ANYTHING ENTERED ? JMP SEMOR NO LDA AIPBF LDB AONAM JSB .MVW DEF P8 NOP * * PARSE THE OPTION PARAMETERS * GETOP JSB NAMRR NOW GO GET THE OPCODE PARMS SSA JMP SEMOR LDA IPBUF+3 CPA P1 JMP NSEGM NUMBER OF SEGMENTS IN LOAD LDB IPBUF GET THE 1ST OPCODE JSB TEST CHECK IT OUT RSS ERROR RETURNED JMP GETOP NOW THE NEXT ONE OPERR CCA STA ERFLG JMP SEMOR * NSEGM LDA IPBUF SAVE THE NUMBER SEGMENTS IN THE LDB A ADB N64 CHECK THAT NOT LONGER THAN 63 SSA,RSS SSB,RSS JMP OPERR OPTION ERROR, -VE NUMBER SEGMENTS STA #SGMT LOAD AND GET NEXT COMMAND JMP GETOP * AINAM DEF INAMR+0 AIPBF DEF IPBUF+0 ERFLG BSS 1 ERROR FLAG ON OPTION PROCESSING TEMP BSS 1 BSS 4 P1 DEC 1 P3 DEC 3 * SKP SEMOR JSB HEADR OUTPUT HEADER MESSAGE TO LIST DEVICE JMP AB.RT ERROR ON LIST FILE WRITE JSB PNAME GET PROGRAM NAME FOR SYOUT DEF *+2 DEF LNAME BUFFER IN SYOUT LDA LNAME+2 SET A COLON INTO SIXTH CHARACTER AND LCHAR IOR COLON STA LNAME+2 JSB .DFER MOVE NAME INTO PRMPT SUBROUTINE DEF PRMPT DEF LNAME LDA TEMP WAS THERE AN ERROR ON THE ORIGIONAL LIST ? SSA,RSS JMP NOERR NO ERROR JSB FMPER YES, ERROR, OUTPUT MESSAGE TO GOOD LIST ATMP1 DEF TEMP+1 NOERR ISZ CMDFL IS THERE A COMMAND FILE ? JMP COMND YES, OPEN IT LDA INAMR+3 NO, WAS AN INPUT FILE NAMED ? SZA,RSS JMP COMND GO OPEN IT CLA SET 'COMMAND NOT INTERACTIVE' FLAG STA IN.TR ISZ ERFLG ERROR ON RUN STRING OPTIONS ? JMP NOCMD NO, SO GO CHECK OUT THE INPUT STRING CLA DO ERROR THING JSB LDRER OUTPUT 'IL PRM' MESSAGE JMP AB.RT AND ABORT * COMND JSB FOPEN OPEN COMMAND DEVICE DEF *+5 DEF CNAMR DEF CDCB DEF IOPTN DEF P144 DCB LENGTH JMP AB.RT ERROR RETURN ISZ ERFLG ERROR ON OPTION PARAMETERS ? JMP NXTOP GET FIRST COMMAND JMP PRERR YES, DO ERROR THING * ACNAM DEF CNAMR+0 LCHAR OCT 77400 COLON OCT 72 P144 DEC 144 IOPTN OCT 1 HED COMMAND PROCESSOR * * * THIS IS THE FINAL SET OF COMMANDS. THESE COMMANDS * MUST BE ENTERED BEFORE RELOCATION BEGINS OR IN THE * 'LOD' PSUDO RECORD. * * CALLING SEQUENCE: JSB REMDR * * ON RETURN: P+1: NO MATCH * P+2: MATCH FOUND * REMDR NOP CPA SN SNAPSHOT COMMAND ? JMP SNAP CPA LL LIST COMMAND ? JMP LIST CPA OU OUTPUT COMMAND ? JMP OUTPT CPA SG SEGMENTS ? JMP SEGMT CPA PR PRIORITY COMMAND ? JMP PRIOR CPA OP OPTION ? LDA IPBUF LDB A JSB TEST LOOK FOR OPTION PARMS JMP PRER PARAMETER ERROR RETRN JMP REMDR,I FOUNE A MATCH PRER ISZ REMDR NO MATCH ERROR ISZ REMDR LOADER OR FMP ERROR JMP REMDR,I * * * LIST OF VALID COMMANDS * SN ASC 1,SN SNAPSHOT, LL ASC 1,LL LL, OU ASC 1,OU OUTPUT, OP ASC 1,OP OPTION,