ASMB,R,L,C * NAME: DB#PC * SOURCE: 91740-18056 * RELOC: 91740-16056 * PGMR: MIKE SCHOENDORF * * *************************************************************** * * (C) COPYRIGHT HEWLETT-PACKARD COMPANY 1977. 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 DB#PC,8 91740-16056 REV 1740 770920 * * * ************************************************************* * * * * THIS ROUTINE DETERMINES THE BOUNDARIES OF MEMORY THAT IS * AVAILABLE FOR USE BY PROGRAMS FOR BUFFERS, TEMPORARY STORAGE * ETC. * * THE CALLING SEQUENCE IS: * * CALL DB#PC(LIST,FWAM,LWAM) * * WHERE: * * LIST = A COUNT OF NAMES OF SEGMENTS OR PROGRAMS * FOLLOWED BY THE NAMES IN ASCII WITH THREE * 16 BIT WORDS FOR EACH NAME. * * FWAM = THIS IS THE FIRST AVAILABLE WORD OF MEMORY * THAT MAY BE USED BY A PROGRAM. IF THE LIST * IS SEGMENT NAMES THEN IT IS FIRST AVAIL- * ABLE WORD PAST THE LONGEST SEGMENT. * * LWAM = THE LAST AVAILABLE WORD OF USER MEMORY. * * NOTE: IF ANY OF THE NAMES IN THE LIST ARE NOT FOUND * THIS ROUTINE WILL EXIT AND INDICATE AN ERROR BY SETTING * FWAM = 0. * * * EXAMPLE OF 'LIST' * * LIST DEC 3 * ASC 3,SEGM1 * ASC 3,SEGM2 * ASC 3,SEGM3 * * * ENT DB#PC * EXT .ENTR * * * LIST NOP FWAM NOP LWAM NOP * DB#PC NOP JSB .ENTR DEF LIST * * CLA INITIALIZE STA FWAM,I FWAM TO ZERO LDA LIST,I SET UP CMA,INA STA TEMP1 SEGMENT COUNTER LDA LIST SET UP INA ADDRESS STA SGTBA NAME ADDRESS NXTSG CLA INITIALIZE KEYWORD PNTR STA TEMP2 TO START OF KEYWORD TABLE CKSEG LDA TEMP1 GET SEGMENT COUNT ADA LIST,I FORM POINTER MPY .3 TO SEGMENT'S ASCII ADA SGTBA NAME AND SAVE IT STA TEMP3 LDB 1657B GET START OF KEYWORD TABLE ADB TEMP2 FORM PTR TO I.D. ENTRY LDB 1,I GET ADDRESS OF I.D. ENTRY SZB,RSS END OF TABLE? JMP ERROR YES - ERROR - EXIT ADB .12 FORM PNTR TO NAME(1) LDA 1,I GET NAME(1) CPA TEMP3,I SAME AS SEGMENT? INB,RSS YES, MOVE PNTR TO NAME(2) JMP NXTEN NO, INDEX TO NEXT ENTRY LDA 1,I GET NAME(2) ISZ TEMP3 MOVE NAME POINTER CPA TEMP3,I SAME AS SEGMENT? INB,RSS YES, MOVE PNTR TO NAME(3) JMP NXTEN NO, INDEX TO NEXT ENTRY LDA 1,I GET NAME(3) AND M256 ISOLATE UPPER CHAR IOR B40 MERGE IN ASCII BLANK ISZ TEMP3 MOVE NAME POINTER CPA TEMP3,I SAME AS SEGMENT? JMP *+3 YES, GO CHECK ADDRESSES NXTEN ISZ TEMP2 MOVE PNTR TO NEXT I.D. ENTRY JMP CKSEG -GO CHECK I.D. ENTRY * LDA 1,I TEST FOR SHORT ID SEGMENT STA TYPE AND B20 ADB .2 SZA,RSS SHORT ID SEGMENT? ADB .7 NO! LDA 1,I GET ADDRESS OF LAST WORD INA INCREMENT TO GET NEW FWAM LDB FWAM,I GET CURRENT FWAM CMB,INB ADB 0 IS IT GREATER THAN SSB,RSS NEW FWAM? STA FWAM,I ISZ TEMP1 INDEX SEGMENT CNTR, IS IT = 0? JMP NXTSG NO, LOCATE NEXT SEGMENT * EXIT LDA TYPE GET WHERE PROGRAM RESIDES AND B17 CPA .2 FOREGROUND? JMP FG YES LDA 1777B BACKGROUND (LWA MEMORY) JMP BLEN FG LDA 1751B LWA+1 MEMORY ADA N1 BLEN STA LWAM,I LAST AVAILABLE WORD JMP DB#PC,I RETURN * ERROR CLA SET FWAM = 0 STA FWAM,I FOR ERROR JMP EXIT * * N1 DEC -1 .2 DEC 2 .3 DEC 3 .7 DEC 7 .12 DEC 12 B17 OCT 17 B20 OCT 20 B40 OCT 40 M256 OCT 177400 TEMP1 BSS 1 TEMP2 BSS 1 TEMP3 BSS 1 TYPE NOP SGTBA BSS 1 * END