ASMB,R,L,C HED APLDR 91705-16108 REV A * (C) HEWLETT-PACKARD CO. 1976 NAM APLDR,1,60 91705-16108 REV A 760224 SPC 1 ****************************************************************** * * (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. * ****************************************************************** SPC 2 * * APLDR * SOURCE: 91705-18108 REV.A * BINARY: 91705-16108 REV A * E. WONG, J. HARTSELL * JULY 30, 1974 * * MODIFIED BY: JEAN-PIERRE BAUDOUIN * DATE MODIFIED: DEC 1975 * * * RTE-C APLDR FOR SATELLITE OPERATION * ENT APLDR EXT EXEC,$LIBR,$LIBX,$PVCN EXT DEXEC,%LU,$XSIO,$LIST,$XEQ EXT %DNLD,%DLER,%PRMB SUP * A EQU 0 B EQU 1 KEYWD EQU 1657B BPA1 EQU 1742B BPA2 EQU 1743B RTORG EQU 1746B RTCOM EQU 1747B AVMEM EQU 1751B BKLWA EQU 1777B SUP * * THIS VERSION OF APLDR WILL DOWN-LINK LOAD A PROGRAM * FILE FROM CENTRAL IF THE LO COMMAND CONTAINS A FILE/PROG * NAME AND LU = 0. IF SCHEDULED FROM CENTRAL, THE SIGN * BIT OF PARAMETER 1 MUST BE SET. * * APLDR IS SCHEDULED BY THE SYSTEM WHEN OPERATOR INPUTS * ONE OF THE FOLLOWING: * PL,LU * LO,PNAME,LU,FL,KB * RP,PNAME,LU,FL,KB * * THE SCHEDULE CALL PASSES THE PARAMETERS IN THE FOLLOWING * ORDER: * P1 - KEYBOARD LU # / FUNCTION CODE * P2 - FILE NUMBER / INPUT-OUTPUT LU # * P3 - CHARACTER #1 / CHARACTER #2 * P4 - CHARACTER #3 / CHARACTER #4 * P5 - CHARACTER #5 / CHARACTER #6 * * WHERE FUNCTION CODE IS: * 0 - PROGRAM LIST * 1 - LOAD PROGRAM * 2 - REPLACE PROGRAM * * * * APLDR LDA DKBFN GET ADDR OF BUFFER STA TEMP1 SAVE TEMPORARILY LDA MD5 STA TEMP2 RMPLP LDA B,I GET PARAM FROM ID SEG STA TEMP1,I SAVE IN BUFFER INB ISZ TEMP1 ISZ TEMP2 JMP RMPLP * CLA LDB FILLU GET FILE NO.&I/O LU LSR 8 SAVE LEFT HALF STB FILE AS FILE NUMBER. * ALF,ALF SAVE RIGHT HALF STA LU AS I/0 LU. * CLA LDB KBFUN GET KYBD UNIT AND FUNC RRL 1 SIGN BIT SET IF SCHEDULED XOR B1 FROM CENTRAL. SET IDEST. STA IDEST CLE,ERB LSR 8 SAVE LEFT HALF SZB,RSS IF ZERO, LDB CONSL USE DEFAULT STB KYBDU AS KEYBOARD UNIT. * ALF,ALF GET FUNC FROM RIGHT HALF SZA,RSS IS IT LIST? 0 JMP LIST CPA B1 IS IT LOAD? 1 JMP LOAD CPA B2 IS IT REPLACE? 2 JMP REPL JMP ABORT NO, IT IS ERROR. * DKBFN DEF KBFUN MD5 DEC -5 * HED APLDR: LO PGM * (C) HEWLETT-PACKARD CO. 1976 LOAD CLA STA CBUSY LDB %DLER CLEAR ERROR NUMBER. JSB SYSET JSB RMCHK CHECK REMOTE/LOCAL LOAD. JMP LOAD1 LOCAL DEVICE. * LDA NAM12 CENTRAL FILE. STA FLNAM SAVE ALL 6 CHAR AS FILE NAME. LDA NAM34 STA FLNAM+1 LDA NAM50 STA FLNAM+2 * LDA MD5 BLANK TRAILING ASTERISKS IN STA TEMP1 PROGRAM NAME PORTION (FIRST LDA DFNAM 5 CHARACTERS). STA TEMP CCE * LOOP LDA TEMP,I PROGRAM NAME. SEZ ALF,ALF AND B377 CPA B52 CHECK NEXT CHAR FOR "*". RSS JMP BUMP * LDA D10 FOUND. CONVERT TO BLANK., SEZ ALF,ALF XOR TEMP,I STA TEMP,I * BUMP SEZ,RSS GO TO NEXT CHARACTER. ISZ TEMP CME ISZ TEMP1 JMP LOOP * LOAD1 LDA NAM12 IF NO NAME GIVEN SZA,RSS SKIP DUPLIC NAME JMP NODUP CHECKING JSB RMCHK SKIP CHECK UNTIL LATER JMP *+2 JMP NODUP IF REMOTE LOAD. JSB DUPID CHECK IF DUPLICATE DEF NAM12 ID NAME. * NODUP JSB STRID NOT DUPLI, FIND LOAD2 JSB SRCID A BLANK DFNUL DEF ZERO ID SEG. JMP LOADD NO BLANK ID SEG. JMP LOAD2 KEEP LOOKING. STA CURID GOT IT, SAVE ADDR. * LOAD3 JSB IHILO INIT HI,LO ADDRS LDA DWRD1 INIT SPEC REC STA WORD1 DUMMY ID ADDR. LDA DWRD2 STA WORD2 LDA RSS INITIALIZE SWITCH STA ABS12 FOR SPEC. REC. STA LDRCT INIT LEADER COUNT STA IDOFS INDICATE NO ABS YET. * JSB RMCHK LEAVE LU ALONE IF JMP *+2 DOWN-LINK LOAD. JMP ABS0 * LDA LU GET LU PARAM, SZA,RSS IF ZERO LDA DINPT USE DEFAULT IOR B2300 FOR THE ABS STA LU INPUT UNIT. * * * * READ ABSOLUTE RECORD * * ABS0 JSB RMCHK CHECK FOR REMOTE/LOCAL INPUT. JMP ABS03 LOCAL. * CLA SIGNAL NEW LOAD. STA TEMP LDA %LU LU OF CENTRAL. STA RMLU LDA XEQT,I ID SEG ADDR OF APLDR. STA IDSEG * ABS01 JSB %DNLD REQUEST CORE IMAGE RECORD. DEF *+5 DEF TEMP STATUS. DEF ABSAD ADDR OR ERROR CODE. DEF ABSSZ RETURNED SIZE. DEF FLNAM CENTRAL FILE NAME. * LDA ABSAD SET UP CORE ADDR FOR DATA READ. STA CADR LDA TEMP CHECK FOR ERRORS. SSA,RSS JMP ABS02 NONE. * CPA M2 JMP FMPER ERROR FROM CENTRAL FMP. CPA M3 JMP STNBY CENTRAL BUSY. JMP ABS02 * FMPER LDA ERR05 FMP ERROR. LDB ABSAD CPB M6 LDA ERR03 LDB DFILE JSB ERROR JMP ABORT * STNBY LDA CBUSY ALREADY DISPLAYED MESSAGE? SZA JMP ABS01 YES. LDA ERR06 NO. LDB DFILE JSB ERROR CLA,INA STA CBUSY JMP ABS01 GO TRY AGAIN. * ABS02 CPA B1 CORE IMAGE RECORD COMING? JMP ABS1 YES. CHECK BASE-PAGE/RT AREA BOUNDS. * LDB SBUF POINT TO SPECIAL RECORD AREA. STB CADR CPA B2 ID SEGMENT COMING? JMP ABS10 YES. WON'T COME BACK FOR MORE. * JMP IDERR DONE, BUT NO ID SEG RECEIVED. * ABS03 JSB DEXEC MAKE REQUEST DEF *+6 TO DEF IDEST DEF B1 READ DEF LU ABS RECORD DEF ABSBF INTO BUF DEF D64 OF MAX SIZE. * AND B240 CHECK FOR EOF/EOT SZA,RSS IS IT EOF? JMP ABS0A NO LDA LDRCT YES, IS IT SZA,RSS JUST LEADER? JMP LOAD5 IS EOF. JMP ABS0 IGNORE LEADER * ABS0A SZB,RSS ANYTHING TRANSMITTED? JMP ABS0 NO * STA LDRCT SET LDRCT FOR EOT LDB ABSCT GET WORD COUNT. BLF,BLF SHIFT TO LOW BITS STB ABSSZ SAVE REC SIZE CMB,INB STB TEMP1 SAVE NEG COUNT LDB ABSAD GET ADDR, START CKSM. LDA DABSD STA TEMP2 SET DATA ADDR. ABS0B LDA TEMP2,I GET A WORD ADB A ADD TO CKSM ISZ TEMP2 BUMP TO NEXT ISZ TEMP1 BUMP COUNT JMP ABS0B REPEAT TIL DONE. * LDA TEMP2,I CPA B COMPARE CKSMS JMP ABS1 MATCHES LDB ERR10 CHECKSUM ERROR- JMP ERPR4 ERR MSG THEN ABORT * * * * FIND WHERE ABSOLUTE RECORD FITS IN CORE * * ABS1 LDA ABSAD OK, SO FETCH ADDR CPA B2 IS IT SPECIAL RECORD? JMP ABS12 YES AND BPMSK IS IT BASE PAGE? CPA ABSAD JMP ABS2 YES, BASE PAGE. * LDA RTORG GET DEFAULT LOWEST ADDR STA TEMP LDA AVMEM GET DEFAULT HIGHEST ADDR STA TEMP1 LDA DMAIN GET PTRS TO MAIN HI/LO LDB D22 SET OFFSET FOR MAIN JMP ABS3 ADDRS IN ID SEG. * ABS2 LDA BPA1 GET DEFAULT LOWEST ADDR STA TEMP LDA BPA2 GET DEFAULT HIGHEST ADDR STA TEMP1 LDA DBASE GET PTRS TO BASE HI/LO LDB D24 SET OFFSET FOR BASE PAGE * * * * FIND THE HI AND LO MEMORY BOUNDS OF FREE CORE * * ABS3 STB IDOFS SAVE OFFSET TO GET ADDRS STA TEMP4 SAVE ADDR OF LFREE ADA B2 STA TEMP5 SAVE ADDR OF HFREE LDA TEMP CMA,INA CHECK IF ABS REC < FWABP USER LINKS ADA ABSAD SSA JMP ABS14 ABS < FWABP, ERROR LDA ABSAD ADA ABSSZ CMA,INA CHECK IF ABS REC > LWAM USER SPACE ADA TEMP1 SSA JMP ABS14 ABS > LWAM, ERROR LDA TEMP4,I CPA TEMP RSS ADDRS ALREADY SET? JMP ABS6 YES, SKIP SEARCH FOR HI/LO * JSB STRID INIT ID SEARCH. ABS4 JSB SRCID SEARCH EACH ID DEF ZERO EXCEPT BLANK ONES, JMP ABS6 FOR THE HI/LO RSS RSS ADDRS WHICH JMP ABS4 DEFINE FREE CORE. CPA CURID IS THIS ID FOR PRG? JMP ABS4 YES, IGNORE THIS ID BOUNDS ADA IDOFS STA TEMP SET ADDR OF ID ADDR. * CMA CHECK IF ID SEG > 22 WORDS ADA ADRID,I SSA JMP ABS4 NEG, IGNORE IF RTE ID SEG. CLA STA TEMP1 CLEAR OVERLAP FLAG * LDA TEMP,I GET ID LOW CMA,INA ADA ABSAD IS ID LOW > ABS REC? SSA JMP ABS4B LOW>ABS, CHECK MORE ISZ TEMP1 LOW<=ABS, CHECK IF OVERLAP JMP ABS5 BY CHECKING IF HI>=ABS * ABS4B LDA TEMP,I GET ID LOW AGAIN CMA SUBTRACT IT ADA TEMP5,I FROM LAST HFREE SSA AND JMP ABS5 IF IT IS LDA TEMP,I LOWER THEN KEEP IT DST TEMP5,I AS NEW HFREE * ABS5 ISZ TEMP LDA TEMP,I GET ID HIGH ADDR CMA,INA ADA ABSAD SSA,RSS ID HIGH < ADDR OF REC? JMP ABS5B HI<=ABS, CHECK MORE CLA,INA HI>ABS, MIGHT OVERLAP CPA TEMP1 DOES ABS OVERLAP? JMP ABS13 YES, GIVE OF ERR JMP ABS4 NO, IGNORE * ABS5B LDA TEMP,I GET ID HI CMA,INA SUBTRACT IT ADA TEMP4,I FROM LAST LFREE SSA,RSS AND IF IT IS JMP ABS4 LDA TEMP,I HIGHER, WE KEEP IT DST TEMP4,I AS NEW LFREE JMP ABS4 REPEAT FOR EACH ID * * * * ALREADY GOT MEMORY BOUNDS; SEE IF ABS CAN FIT * * ABS6 LDA ABSAD GET ADDR OF ABS REC LDB ABSSZ ADB A GET ADDR OF END OF ABS REC JSB CKBND CHECK BOUNDS WITH LFREE,HFREE JMP ABS13 ERROR. * * * * COPY ABS RECORD TO CORE IF WITHIN BOUNDS * * ABS10 JSB RMCHK CHECK FOR REMOTE/LOCAL INPUT. JMP AB10A LOCAL. * LDA %PRMB PARMB ADDRESS ADA D33 ADDR OF TIME-TAGS STA TAGAD PASS AS 2ND OPT. PARAM * JSB $LIBR SWITCH TO PRIVILEDGED MODE. NOP * LDA ABSSZ SET UP DATA LENGTH. STA ABLEN * CLA PRIVILEDGED MODE. STA $PVCN LDA DEFX SET UP SUSPENSION ADDR. STA XSUSP,I * JSB $XSIO READ CORE IMAGE RECORD. RMLU NOP LU OF CENTRAL. DEF COMPL NOP LIST POINTER. OCT 301 READ. CADR NOP "BUFFER" - BASE PG OR RT AREA. ABLEN NOP WORD LENGTH. RSS RETURN POINT TAGAD NOP 2ND OPT. PARAMETER= TAGS ADDRESS * LDA B102 SET UP FOR I/O SUSPEND. STA FCNCD XLIST JSB $LIST CALL LIST PROCESSOR. FCNCD OCT 0 FUNCTION CODE. IDSEG NOP ID SEG ADDR OF APLDR. * JMP $XEQ GIVE UP CPU. * COMPL LDA B101 SET UP FOR SCHEDULE LIST. STA FCNCD JMP XLIST * RETN CLA,INA SIGNAL CONTINUING LOAD. STA TEMP * LDA CADR IF THIS WAS DUMMY ID SEG, CPA SBUF JMP ABS12 CALL IT QUITS, ELSE JMP ABS01 GO GET MORE DATA. * AB10A LDA ABSSZ SET UP ABSSZ CMA,INA FOR TRANSFER STA TEMP OF RECORD. LDA DABSD SET UP BUFFER STA BADDR ADDR OF DATA WORDS. LDB ABSAD SET UP CORE ADDR. ABS11 LDA BADDR,I GET A DATA WORD. JSB SYSET PUT INTO CORE. INB ISZ BADDR ISZ TEMP JMP ABS11 REPEAT UNTIL DONE. JMP ABS0 GO GET ANOTHER RECORD * * * * PROCESS SPECIAL TRAILER RECORDS. * * ABS12 RSS NOP-ED AFTER 1ST ENTRY.! JMP AB12D SO ONLY DO THIS ONCE. LDA MD28 STA TEMP1 SET COUNTER LDB DDMID TO CLEAR OUT CLA AB12A STA B,I SPECIAL RECORDS INB ISZ TEMP1 JMP AB12A STA ABS12 NOP SWITCH * JSB RMCHK CHECK FOR REMOTE/LOCAL LOAD. JMP AB12D LOCAL. * LDA SBUF REMOTE: THE 18-WORD SPECIAL RECORD STA ABSD1 HAS BEEN READ. LDA M9 STA TEMP1 AB12B DLD ABSD1,I MOVE TO DUMMY ID SEG AREA. STA WORD1,I STB WORD2,I ISZ ABSD1 ISZ ABSD1 ISZ WORD1 ISZ WORD2 ISZ TEMP1 JMP AB12B JMP LOAD6 GO WIND IT UP. * AB12D DLD ABSD1 PICK UP 2 DATA WORDS STA WORD1,I PUT 1ST INTO DUMMY ID. STB WORD2,I PUT 2ND INTO DUMMY ID. ISZ WORD1 BUMP DUMMY ID ISZ WORD2 LOCATIONS. JMP ABS0 * * * * REACHED END-OF-FILE ON PROGRAM INPUT * * LOAD5 LDB IDOFS CHECK IF ANY ABS CPB RSS WAS READ YET. JMP IDERR ERROR IF NONE. LDA WORD1 SPEC REC MUST BE AT END CPA DWRD2 WAS IT THERE? JMP LOAD6 YES. IDERR LDA B5 NO. LDB ERR13 NO SPECIAL RECORDS, JMP ERPR4 PRINT ERR MSG/ABORT * LOAD6 DLD NAM12 NAME GIVEN IN COMMAND? SZA,RSS JMP LOAD7 NO, USE NAME FROM SPEC REC DST PNM12 YES, USE NAME FROM COMMAND LDA NAM50 GET 5TH CHAR STA PNM50 JSB RMCHK IF REMOTE LOAD, CHECK NAME NOW. JMP LOAD8 LOCAL. DID DUP CHECK ALREADY. JSB DUPID REMOTE. NAME GIVEN IN COMMAND. DEF NAM12 JMP LOAD8 LOAD7 JSB DUPID NAME GIVEN IN SPECIAL RECORD, DEF PNM12 CHECK FOR DUPLICATE. * LOAD8 LDB SZCOM GET SIZE OF COMMON SZB,RSS JMP LOD8A SKIP CHECK IF NO COMMON LDA FWAC GET FWA COMMON CMA SUBTR FROM ADA RTORG FWA REAL-TIME COMMON SSA,RSS FWACAVMEM? JMP LOADE YES, ERROR. * LOD8A LDA DMAIN GET FREE AREA POINTERS STA TEMP4 FOR THE MAIN AREA DLD PRGMN GET FINAL BOUNDS OF PROG JSB CKBND SEE IF FIT. (IN CASE BSS USED) JMP LOADC ERROR. * LDA DBASE GET FREE AREA POINTERS STA TEMP4 FOR THE BASE PAGE AREA DLD PRGBP GET FINAL BOUNDS OF PROG JSB CKBND SEE IF FIT. (IN CASE BSS USED) JMP LOADC ERROR. * * * * MOVE ID SEGMENT TO SYSTEM AREA * * LOD8B LDA PNM50 GET 5TH CHAR AND LHALF MASK OUT TYPE INA FORCE TO TYPE 1 STA PNM50 LDA MD28 DONE LOAD, COPY ID SEG. STA TEMP SET UP COUNT. LDA DDMID SET UP ADDR STA BADDR FOR DATA WORDS. LDB CURID SET ADDR FOR CORE LOC. JMP *+3 DON'T MOVE LINKAGE WORD * LOAD9 LDA BADDR,I JSB SYSET MOVE A WORD TO ID SEG INB ISZ BADDR ISZ TEMP JMP LOAD9 REPEAT TILL DONE. * LDA MSG1+1 SET UP DONE STA BUF MESSAGE WITH LDA MSG1+2 PROG NAME STA BUF+1 LDA DASH INSERT DASH. STA BUF+2 LDB DWRD1+1 GET ADDR OF PROG NAME LDA LINE2 GET ADDR IN MSG FOR NAME INA CLE JSB MVNAM MOVE NAME TO MSG LDA D10 STA TEMP3 JSB DSPLA DISPLAY MESSAGE JMP STOP END APLDR. * * * ERROR RETURNS FROM LOADING SECTION * ABS13 JSB REMER MEMORY ERROR JSB IHILO CLEAR HI,LO ADDR JSB RMCHK JMP ABS1 GO RE-ESTABLISH HI/LO. JMP ABS0 * ABS14 LDB ERR12 ABSLWAM JMP ERPR4 SO ABORT * LOADC LDA B,I GET NAM12 FROM ID SZA,RSS PROG REMOVED YET? JMP LOD8B YES. JSB REMER FINAL MEMORY ERROR JMP LOD8A CHECK AGAIN * LOADD LDA DBLNK NO BLANK STA MT.ID+1 ID SEG LDA A00 SET ZEROES IN MSG STA MT.ID+2 LDA D11 LDB MT.ID SET UP MESSAGE ERMPR JSB STUFP PRINT MESSAGE JMP ABORT THEN ABORT. * LOADE LDB ERR11 ABS USED TOO MUCH COMMON ERPR4 LDA B2 GET COUNT TO JMP ERMPR PRINT ERR MSG, ABORT SKP * **************************** * SUBROUTINES USED IN LOAD AND ABSOLUTE RECORD PROCESSORS * **************************** * * DUPID CHECKS FOR DUPLICATE PROGRAM NAME, ISSUES ERROR * MESSAGE AND ATTEMPTS TO CHANGE PROGRAM NAME. ABORTS IF * STILL NOT UNIQUE. * JSB DUPID * DEF PNAME * * DUPID NOP SEARCH FOR DUPLICATE LDA DUPID,I ID NAME. STA DUPNM SAVE ID NAME. ISZ DUPID DUP1 JSB STRID INIT ID SCANNER. DUP2 JSB SRCID FIND ID SEG DUPNM NOP WITH SAME NAME JMP DUPID,I NO DUPLICATE. JMP DUP2 REPEAT TIL DONE. LDA ERR02 DUPLIC. PROG ERR LDB DUPNM JSB ERROR * LDA C$$ CHANGE NAME ONLY ONCE CPA DUPNM,I IF NAME ALREADY CHANGED, JMP ABORT THEN ABORT, STA DUPNM,I ELSE SEARCH AGAIN. JMP DUP1 * * **************************** * * SYSET SETS A WORD INTO A CORE LOCATION. * LDA WORD * LDB ADDR * JSB SYSET * * SYSET NOP SYSTEM WORD SETTER. JSB $LIBR TURN OFF THE NOP INTER. SYS. STA B,I STORE WORD INTO SYS. JSB $LIBX RESTORE INTER SYS DEF SYSET AND RETURN. * * *********************************** * * IHILO INITIALIZES DEFAULT HIGH AND LOW BOUNDS * OF FREE MEMORY. * JSB IHILO * * IHILO NOP INITIALIZE HI/LO ADDRS LDA BKLWA TO FIND HIGHEST STA HMAIN AND LOWEST LDA B1647 STA HBASE ADDRS OF UNUSED LDA RTORG CORE WHICH MAY BE STA LMAIN USED FOR LOADING LDA BPA1 STA LBASE ABS PROGRAMS CLA STA LMID STA HMID STA LBID STA HBID JMP IHILO,I RETURN * * ******************************* * * CKBND CHECKS PROGRAM BOUNDS AGAINST THAT OF FREE * CORE (TEMP4 POINTS TO FREE CORE POINTERS). * LDA PRGLO LOW ADDR OF CORE USED * LDB PRGHI HI ADDR * JSB CKBND * * * CKBND NOP CHECK BOUNDS OF PROG DST TEMP AGAINST BOUNDS OF FREE CORE DLD TEMP4,I GET LFREE CMA,INA SUBTR FROM ADA TEMP LOW ADDR SSA ADDR>=LFREE? JMP CKBND,I NO, ERROR * LDA TEMP4 ADA B2 DLD A,I GET HFREE CMA SUBTR FROM ADA TEMP1 HI ADDR SSA ADDR<=HFREE? ISZ CKBND RETURN TO P+2 IF NO ERROR JMP CKBND,I RETURN TO P+1 IF ERROR * * ************************** * * REMER ISSUES "REM XXX" ERROR MESSAGE IF NEED TO REMOVE * A PROGRAM TO GET SPACE IN CORE, THEN SUSPENDS APLDR. * IF SPACE BELONGS TO THE SYSTEM, APLDR IS ABORTED. * LDB PNAME PROG WHICH MUST BE REMOVED * JSB REMER * * REMER NOP -REM XXXXX- ERROR SZB,RSS MEMORY ERROR. JMP ABS14 OUTSIDE AVAILABLE MEM LDA ERR01 GIVE -REM XXXXX- MESSAGE JSB ERROR * LDA IDEST ABORT IF SCHED BY CENTRAL. SZA,RSS JMP ABORT * JSB RMCHK IF DOWN-LOAD, SEND STOP. JMP SUSP LDA %LU GET LU AND B77 CLEAN FOR STOP STA CNWD JSB EXEC DEF *+3 DEF B3 DEF CNWD SEND STOP * SUSP JSB EXEC CALL EXEC DEF *+2 TO SUSPEND DEF B7 THE APLDR. JMP REMER,I RETURN * * ****************************** * * CHECK FOR DOWN-LINK LOAD FROM CENTRAL STATION DISC. * IF NAME GIVEN ON LO COMMAND, AND LU = 0, TAKE P+2 RETURN * (REMOTE FILE), ELSE P+1 RETURN (LOCAL DEVICE). * RMCHK NOP STA TEMP7 LDA KBFUN P+1 IF NOT LO COMMAND. AND B377 CPA B1 RSS JMP RMCK LDA NAM12 SZA,RSS JMP RMCK P+1 IF NO NAME. LDA LU SZA,RSS ISZ RMCHK P+2 IF LU = 0. RMCK LDA TEMP7 JMP RMCHK,I * * ****************************** * * MD28 DEC -28 * B52 OCT 52 ASTERISK. B101 OCT 101 B102 OCT 102 B377 OCT 377 B240 OCT 240 B1647 OCT 1647 B2300 OCT 2300 * * D24 DEC 24 D33 DEC 33 D64 DEC 64 * XEQT OCT 1717 ADDR OF ID SEGMENT ADDRESS. XSUSP OCT 101730 SUSPENSION ADDRESS. BPMSK OCT 1777 C$$ ASC 1,$$ NAME CHANGE CHAR. DASH ASC 1,- * ABSSZ NOP FILE NOP CURID NOP IDOFS NOP BADDR NOP LDRCT NOP WORD1 NOP WORD2 NOP DEFX DEF RETN POINT OF SUSPENSION FOR APLDR. DFILE DEF FLNAM FLNAM BSS 3 * * DO NOT CHANGE ORDER OF FOLLOWING * LMAIN NOP LMID NOP HMAIN NOP HMID NOP LBASE NOP LBID NOP HBASE NOP HBID NOP DMAIN DEF LMAIN ADDR OF HI/LO ADDR FOR MAIN DBASE DEF LBASE ADDR OF HI/LO ADDR FOR BASE PAGE * * DWRD2 DEF DWR2,I DWRD1 DEF *+1,I DUMMY ID ADDRESSES DEF PNM12 NAM12 DEF PNM50 NAM50/TYPE DEF RESML RESOL/MULT DEF HRS HR DEF SEC SEC DEF PRGMN LOW MAIN DEF PRGBP LOW BASE DEF FWAC FWA COMMON DDMYD DEF JMPXF JMP XFER * DWR2 DEF PNM34 NAM34 DEF PRIOR PR DEF SPAR1 SPARE WORD DEF MIN MIN DEF MSEC MSEC DEF PRGM2 HMAIN DEF PRGB2 HBASE DEF SZCOM SIZE COMMON DEF XFER XFER ADDR * HED APLDR: RP PGM * (C) HEWLETT-PACKARD CO. 1976 REPL LDA NAM12 IS IT A SZA,RSS BLANK NAME? JMP REPNO YES, ERROR * REP00 JSB STRID INIT ID SEARCH REP01 JSB SRCID TO FIND ID SEG DFNAM DEF NAM12 WITH SAME NAME JMP REPNO NO SUCH PROG JMP REP01 STA CURID GOT IT, SAVE ID ADDR STB TEMP SAVE ADDR OF ID NAME * JSB $LIBR TURN OFF INT. SYS. NOP ADA D8 LDA A,I POINT OF SUSPENSION SZA IS ZERO? JMP REP03 NO, SUSPEND APLDR ADB B3 LDA B,I SZA IS STATUS DORMANT? JMP REP03 NO, SUSPEND APLDR ADB B2 LDA B,I ALF,CLE,ERA SEZ IN TIME LIST? JMP REP03 YES, SUSPEND APLDR * DLD ZERO CLEAR OUT NAME DST NAM12 -IN CALL SO WE CAN STA NAM50 USE NAME FROM ABS PROG DST TEMP,I CLEAR ID SEGMENT LDB TEMP ADB B2 FOR REPLACEMENT STA B,I BY THE RP COMMAND JSB $LIBX RESTORE INT SYS DEF *+1 DEF *+1 * LDB B5 DEFAULT LU TO 5. LDA LU SZA,RSS STB LU JMP LOAD3 GO LOAD PROGRAM. * * ERROR RETURNS FROM REPLACE * REP03 JSB $LIBX RESTORE INT SYS DEF *+1 DEF *+1 LDA ERR04 PUT NAME INTO LDB DFNAM -OF XXXXX- BECAUSE JSB ERROR NON-ZERO SUSP OR T-LIST * LDA IDEST ABORT IF SCHED BY CENTRAL. SZA JMP ABORT * JSB EXEC SUSPEND APLDR DEF *+2 DEF B7 JMP REP00 TRY TO REPLACE AGAIN * REPNO LDA ERR03 NO SUCH PROG LDB DFNAM PUT NAME IN ERR MSG JSB ERROR PRINT ERR MSG JMP ABORT THEN ABORT