ASMB,Q,R,C HED RT4G6 - PARTITION DEFINITION SEGMENT. NAM RT4G6,5,90 92067-16321 REV.2001 790821 * ****************************************************************** * * (C) COPYRIGHT HEWLETT-PACKARD COMPANY 1979. 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 3 ****************************************************************** * * NAME RT4G6 * SOURCE PART # 92067-18321 * REL PART # 92067-16321 * WRITTEN BY: JJC,KFH,RB * ****************************************************************** * * * ENTRY POINT NAMES: * ENT \PDEF * * EXTERNAL REFERENCE NAMES: * EXT \LST1,\LST2,\LST3,\LST4,\LST5,\LSTX,\LSTS,\ILST EXT \ID1,\ID2,\ID3,\ID5,\ID6,\ID8 EXT \TIDN,\INID,\IDX,\IDXS EXT \TBUF,\LBUF EXT \ADSK,\DSKO,\DSKA EXT \CURL,\RNAM,\RBIN EXT \SCTK * EXT \SRET,\INER,\GETC EXT \MESS,\GNER,\GETN,\GET#,\GINT EXT \READ,\SPAC,\ABDO,\PTYP EXT \CONV,\OCTN EXT \SYS,\USRS,\ABCO,\MXAB EXT \MRT2,\TERM,\YENO EXT \NUMP EXT \ABOR * A EQU 0 B EQU 1 SUP ************************************************************************ * SKP *************************************************************************** * * 780112 * * THE FOLLOWING BLOCK OF STORAGE FOR VARIABLES PRECEEDS, * AND IS REFERENCED BY, EACH SEGMENT. IT IS NOT OVERLAID * AS EACH NEW SEGMENT IS LOADED INTO MEMORY. * * THE LOCATION OF EACH VARIABLE MUST BE THE SAME IN ALL * SEGMENTS. IF A CHANGE IS MADE, MAKE THE SAME CHANGES * IN THE REST OF THE SEGMENTS. * *************************************************************************** * * TB30 BSS 160 TRACK MAP TABLE/HEADER RECORD BUFFER * ILIST BSS 64 USER SYSTEM PROG IDENT ADDR LIST CURIL BSS 1 CURRENT ILIST ADDRESS * SYSCH BSS 1 SUBCHANNEL OF SYSTEM UNIT. DCHNL BSS 1 CHANNEL OF SYSTEM DISK UNIT AUXCH BSS 1 SUBCHANNEL OF AUX UNIT. DSIZE BSS 1 DISK SIZE -NO. OF TRACKS. #SUBC BSS 1 # DISC SUBCHANNELS DEF'D (7905/7920) DAUXN BSS 1 AUXILIARY DISK SIZE. ADS# BSS 1 AUX DISC SECTORS/TRACK. * * RELOCATION BASE TABLE. RBTA BSS 1 ABSOLUTE PROGRAM BASE. TPREL BSS 1 CURRENT PROGRAM BASE ADDRESS. TPBRE BSS 1 BASE PAGE RELOCATION ADDRESS. COMAD BSS 1 CURRENT COMMON RELOCATION BASE. BSS 1 ABS PROGRAM BASE FOR MR CODE. * WDCNT BSS 1 TEMPORARY WORD COUNTER. DSKSY BSS 1 INITIAL ID SEGMENT DISK ADDRESS IDSP BSS 1 POSITION OF 1ST ID SEG. IN SECT TTYCH BSS 1 SYSTEM TTY CHANNEL NO. * PLFLG BSS 1 PROGRAM LOAD. FLAG = -1/0 = L/NL DSCNT BSS 1 DISK SEGMENT SECTOR COUNT * NXFLG BSS 1 ENT/EXT FLAG = -1/0 EXCNT BSS 1 SYMBOL COUNTER * LCNT BSS 1 CURRENT \LBUF COUNT DCNT BSS 1 CURRENT DBUF COUNT CURAI BSS 1 CURRENT IBUF COUNT * CPLS BSS 1 ADDRESS OF TOP OF FIXED CP LINK IMAGE CPL1 BSS 1 ADDRESS OF LOW CURRENT PAGE LINK SPECS. CPL1H BSS 1 NUMBER OF CURRENT PAGE LINKS ASSIGNED CPL2H BSS 1 IN LOW AND HIGH AREA RESPECTIVELY URBP1 BSS 1 LWA R/T DISC RES BP LINK AREA CURAK BSS 1 CURRENT KBUF ADDRESS * CURAT BSS 1 CURRENT \TBUF ADDRESS TCNT BSS 1 CURRENT \TBUF COUNT * CURAP BSS 1 CURRENT PLIST ADDRESS * AMAD BSS 1 CURRENT MLIST ADDRESS * IXCNT BSS 1 ID EXTENSION COUNT IDEXC BSS 1 CURRENT ID EXT'S USED IDEX BSS 1 ADDRESS OF ID EXTENSION TABLE * LICNT BSS 1 LONG ID SEGMENT COUNT SSCNT BSS 1 SHORT ID SEG COUNT - FOR SEGMENTED PROGS * DSKID BSS 1 DISK ID SEGMENT ADDRESS KEYCN BSS 1 TOTAL KEYWORD COUNT KEYCT BSS 1 CURRENT KEYWORD COUNT * MLIST BSS 11 MEMORY MAP BUFFER * TEMP1 BSS 1 TEMP2 BSS 1 LWH1 BSS 1 LWH2 BSS 1 LWH3 BSS 1 LWH4 BSS 1 L01 BSS 1 * FSYBP BSS 1 FIRST WORD SYS BP LINKAGE SYSAD BSS 1 CURRENT ID SEGMENT ADDRESS * TBREL BSS 1 CURRENT BP RELOC ADDR PBREL BSS 1 INITIAL BP RELOC ADDR * RELAD BSS 1 CURRENT CORE RELOCATION ADDRESS * BSBAD BSS 1 BG SEGMENT BP RELOC ADDR BSPAD BSS 1 BG SEGMENT PROG RELOC ADDR * LFLAG BSS 1 PROGRAMS-LOADED FLAG IMAIN BSS 1 CURRENT MAIN IDENT INDEX. HDFLG BSS 1 HEADING FORMAT FLAG CIDNT BSS 1 CURRENT MAIN IDENT INDEX. * AEQT BSS 1 ADDRESS OF EQUIPMENT TABLE CEQT BSS 1 NO. ENTRIES IN EQUIPMENT TABLE SPLCO BSS 1 SPOOL EQT COUNT DVMAP BSS 1 ADDRESS OF DRIVER MAP TABLE * DPFLG BSS 1 DP RELOCATION FLAG, 0=YES, -1=NO DPLN BSS 1 PAGE LENGTH OF DRIVER PARTITION DPADD BSS 1 START ADDR OF DRIVER PARTITION DSKDP BSS 1 DISK ADDRESS OF DP #2 PAGE# BSS 1 NEXT PHYSICAL PAGE TO ALLOCATE DPNUM BSS 1 CURRENT DP# -1, OR TOT DP PAGES SDID BSS 1 IDENT IDEX OF SYS DISK DRIVER LWDP1 BSS 1 LAST WORD OF DP, +1 FWSDA BSS 1 FIRST WORD OF SDA * ASQT BSS 1 ADDR OF DEVICE REFERENCE TABLE CSQT BSS 1 NO. ENTRIES IN DEV. REF. TABLE * AINT BSS 1 ADDRESS OF INTERRUPT TABLE * DSKIN BSS 1 DISK ADDR OF INT CODE RECORD INTCN BSS 1 RECORD COUNT OF INT CODE * IDSAV BSS 1 INDEX OF CURRENT IDENT. DSKMN BSS 1 INITIAL MAIN DISK ADDRESS BSSDP BSS 1 INITIAL DISK RES MAIN BSS DISP PRENT BSS 1 PRIMARY ENTRY POINT DBLAD BSS 1 CURRENT DBL ADDRESS REKEY BSS 1 INSTRUCTION TYPE BYTE INSCN BSS 1 INSTRUCTION TYPE COUNTER INSTR BSS 1 CURRENT INSTRUCTION PAGNO BSS 1 CURRENT PAGE NO. OPRND BSS 1 CURRENT OPERAND PLGTH BSS 1 PROGRAM LENGTH * DRT2 BSS 1 DISK DRT ENTRY ( SYSTEM) DRT3 BSS 1 AUX DISK DRT ENTRY * LIBFG BSS 1 LDTYP BSS 1 * SCH1 BSS 1 INDEX OF IDENT OF PGM TO BE SCHEDULED SCH3 BSS 1 ADDRESS OF CURRENT ID SEGMENT SCH4 BSS 1 ADDRESS OF THE SCHEDULED PGM ID SEG FGBGC BSS 1 BACKGROUND USING FG COMMON FLAG $LIBR BSS 1 INDEX OF $LIBR ENT $LIBX BSS 1 INDEX OF $LIBX ENT CUPRI BSS 1 * BLLO BSS 1 -(LOWER BUFFER LIMIT) BLHI BSS 1 -(UPPER BUFFER LIMIT) * MEM6 BSS 1 MEM12 BSS 1 * COMRT BSS 1 MAXIMUM RT COM LENGTH COMBG BSS 1 MAXIMUM BG COM LENGTH COMSZ BSS 1 #WORDS COMMON DECLARED IN CURRENT MAIN RTCAD BSS 1 RT COMMON ADDRESS BGCAD BSS 1 BG COMMON ADDRESS FPCOM BSS 1 FIRST PAGE OCCUPIED BY COMMON LPCOM BSS 1 LAST PAGE CONTAINING ANY COMMON * FPSAM BSS 1 1ST PAGE CONTAINING S.A.M. FWSAM BSS 1 1ST WORD CONTAINING S.A.M. SYMAD BSS 1 VALUE FOR AVMEM IN SCOM SAM#1 BSS 1 SIZE OF FIRST CHUNK OF SAM SAM#2 BSS 1 SIZE OF SECOND CHUNK OF SAM SAM2P BSS 1 START PAGE OF SAM #2 LWTAI BSS 1 FIRST WORD OF TABLE AREA I FOR SAM#0 FWPRV BSS 1 FIRST WORD FOR PRIVILEGED PROGRAMS * FWSYS BSS 1 FIRST WORD OF SYSTEM CODE LPSYS BSS 1 LAST PAGE CONTAINING SYS LWSYS BSS 1 LAST WORD OF SYSTEM LPSLB BSS 1 LAST PAGE OF SLOW BOOT LWSLB BSS 1 LAST WORD OF SLOW BOOT MTYPE BSS 1 MAIN PROGRAMS'S TYPE * HIBP BSS 1 BP LINK MODE FOR FIXUP ENTRIES LOLNK BSS 1 LOW LINK FOR SSGA,LIB, OR SYS HILNK BSS 1 HI LINK USED BY MEM RES PRG BPINC BSS 1 BP LINK ALLOCATION MODE, -1=DOWN,1=UP BPLMT BSS 1 LAST AVAIL BP LINK IN CURRENT MODE, +1 * TPMAX BSS 1 HWM FOR RELOCATION OF BG MAINS & SEGS MAXPT BSS 1 NUM PARTS. ALLOWED MAT. BSS 1 ADDRESS OF MEMORY ALLOCATION TABLE * SSGA. BSS 1 FWA SSGA MAP. BSS 1 PTR TO MEU RES MAP MPFT. BSS 1 PTR TO MPFT * EMLNK BSS 1 EMA SYMBOL'S LINK EMLST BSS 1 LST INDEX OF EMA SYMBOL EMDSK BSS 1 DISK ADDR OF EMA PROGRAM * * MEMORY RESIDENT AREA POINTERS * MRACM BSS 1 MR ACCESS COMMON FLAG (>0 IF YES) LBCAD BSS 1 FIRST WORD OF MEMORY RES LIBRARY LEND BSS 1 LAST WORD OF MEMORY RES LIBRARY FWMRP BSS 1 FIRST WORD OF MEMORY RES PROGRAM AREA EMRP BSS 1 LAST WORD OF MEMORY RES PROGRAM AREA FPMRP BSS 1 FIRST PAGE OF MEMORY RES PROGRAM AREA FPMBP BSS 1 PAGE # FOR MEMORY RES BASE PAGE MRP# BSS 1 # PAGES OCCUPIED BY MRL & MRP'S DSKMB BSS 1 DISK ADDRESS OF MEMORY RES BASE PAGE DSKMR BSS 1 DISK ADDRESS OF MEMORY RESIDENT LIB/PROG AREA DSKBP BSS 1 SYSTEM DISK ADDRESS * DSKAV BSS 1 NEXT AVAILABLE DISK ADDRESS DSKLC BSS 1 DISK ADDRESS OF LIBRARY CODE DSKLB BSS 1 DISK ADDR OF LIBRARY ENTRY PTS DSKUT BSS 1 UTILITY PROG DISK ADDRESS DSKBS BSS 1 DISK ADDR OF MAIN BG DISK RES BP DSKBR BSS 1 CURRENT MAIN BG DISK RES DISK AD ADICT BSS 1 ADDR OF DISK DICTIONARY LBCNT BSS 1 RESIDENT LIBR ENTRY PT COUNT SYCNT BSS 1 SYSTEM ENTRY POINT COUNT KEYAD BSS 1 CURRENT KEYWORD ADDRESS * SYBAD BSS 1 ADDR OF FIRST BP LINK FOR BG IDSAD BSS 1 ADDR OF FIRST ID SEGMENT ABSID BSS 1 IDENT ADDR FOR NEXT BG SEG SCAN IDMBS BSS 1 BG MAIN ADDRESS FOR BS REF * SYTRK BSS 1 DISC ADDR WHERE SYSTEM BEGINS - TRACK SYSEC BSS 1 DISC ADDR WHERE SYSTEM BEGINS - SECTOR * SSGAF BSS 1 SSGA ACCESS FLAG SPAR2 BSS 1 SPARE VARIABLE SPAR3 BSS 1 SPARE VARIABLE SPAR4 BSS 1 SPARE VARIABLE SPAR5 BSS 1 SPARE VARIABLE * * ********************************************************* * * * END OF COMMON STORAGE BLOCK FOR ALL SEGMENTS. * * * ********************************************************* * SKP BLNKS ASC 1, BLANK OCT 40 M1777 OCT 1777 M7400 OCT 177400 M7700 OCT 177700 N1 DEC -1 N2 DEC -2 N3 DEC -3 N32 DEC -32 N4 DEC -4 N5 DEC -5 P7 DEC 7 P10 DEC 10 P14 DEC 14 P18 DEC 18 P2 DEC 2 P20 DEC 20 P21 DEC 21 P22 DEC 22 P24 DEC 24 P26 DEC 26 P28 DEC 28 P30 DEC 30 P3 DEC 3 P31 DEC 31 P4 DEC 4 P32 DEC 32 P33 DEC 33 P52 DEC 52 P5 DEC 5 P6 DEC 6 M37 EQU P31 M7 EQU P7 TEMP3 NOP TEMP4 NOP * MES22 DEF *+1 ASC 3,(NONE) SKP * * NOTE THE FOLLOWING RESOLVES DEF'S TO EXTERNALS * PART LDA N GET LOOP COUNTER STA TEMP1 SAVE IN TEMP LOCATION LDB LSTAA GET ADDRESS OF WHERE LIST ROUTINE LOCATED LOOP LDA B HERE WE CHASE DOWN OUR OWN LDA A,I INDRECTS RSS LDA A,I RAL,CLE,SLA,ERA JMP *-2 STA B,I AND SAVE IT AGAIN INB ISZ TEMP1 DONE? JMP LOOP NO JMP \SRET RETURN TO MAIN. * * N DEC -2 LSTAA DEF *+1 ATBUF DEF \TBUF+0 ALBUF DEF \LBUF+0 SKP * * * LIST PARTITION REQUIREMENTS FOR RT AND * BG (INCLUDING PR) DISC RESIDENTS * \PDEF NOP LDA P2 SET IDSCN TYPE TO STA \PTYP REAL TIME DISC RESIDENTS LDA "RT" STUFF 'RT' IN STA MSQ1 MESSAGE. * PQLP1 JSB \SPAC LDB MSQ1. SENT EITHER RT OR BG LDA P20 PARTITION REQMT JSB \MESS MESSAGE. * CLA SET FLAG FOR NO PROGRAMS STA PQFLG OF TYPE FOUND. PQLP0 LDA P10 REINIT IDENT PTRS STA \TIDN FOR SCAN PQLP2 JSB \IDX FIND PROG MATCHING \PTYP JMP PQDON (NO MORE) LDA \ID6,I GET THE TYPE ELA,RAR SAVE EMA BIT AND M7 ISOLATE IT CPA \PTYP WHAT WE WANTED? RSS YES! JMP PQLP2 NO TRY ANOTHER ISZ PQFLG INCR FLAG - AT LEAST ONE PROG SEZ IF ITS AN EMA PROGRAM JMP DEMA THEN GO DETERMINE ITS PG REQMTS * LDA \ID8,I PICK UP PAGE REQMT RRR 8 AND ISOLATE AND M37 IT. PQLP3 CMA GET -(PAGES +1) LDB MSQ2X AND STUFF JSB \CONV DECIMAL EQUIV IN MSG * LDA BLNKS PUT BLANKS STA MSQ2 LDA \ID1,I THEN PROGRAM NAME STA MSQ2+1 LDA \ID2,I IN MESSAGE... STA MSQ2+2 LDA \ID3,I AND M7400 IOR P32 STA MSQ2+3 * * SET OPTIONAL EMA OR LARGE BG INDICATORS * LDA BLNKS GET BLANKS IN CASE NEITHER OPTION LDB \ID6,I EMA BIT SET? SSB ADA "E" MERGE IN AN E LDB \PTYP PRIVILEGED PROGRAM? CPB P4 ADA AST MERGE IN A * STA MSQ2+9 STORE WORD IN MESSAGE * LDA P20 LDB MSQ2. JSB \MESS SEND THE MESSAGE JMP PQLP2 THEN LOOK FOR MORE PROGS * DEMA JSB PAGES GET THE PAGE REQMTS OF AN JMP PQLP3 EMA PROGRAM * PQDON LDA P3 GET THE PRIVILEGED TYPE LDB \PTYP AND THE CURRENT TYPE CPB P4 IF BG'S WERE JUST DISPLAYED JMP PQEND THEN EXIT FROM LOOP CPB A IF PR'S WERE JUST DONE LDA P4 THEN SET TO DO BG'S STA \PTYP SET TYPE TO SCAN CPB P3 RT -> PR JMP PQLP0 NO, PR -> BG * LDA "BG" STUFF 'BG' INTO STA MSQ1 INTO THE HEADER JSB NONE SEE IF AN RT'S DISPLAYED JMP PQLP1 SEND THE NEW HEADING * * * PRINT 'NONE' IF NO PROGRAMS OF THE CURRENT PARTITION * TYPE WERE DISPLAYED * NONE NOP LDA PQFLG ANY PROGRAMS FOUND? SZA IF AT LEAST ONE JMP NONE,I LDA P6 ELSE PRINT LDB MES22 "(NONE)". JSB \MESS JMP NONE,I SKP * PQFLG BSS 1 * MSQ1. DEF *+1 MSQ1 ASC 10,XX PARTITION REQMTS: * MSQ2. DEF *+1 MSQ2 ASC 10, NNNNN XX PAGES MSQ2X DEF MSQ2+2 * MSQ3. DEF *+1 ASC 11,MAXIMUM PROGRAM SIZE:  * MSQ4. DEF *+1 MSQ4 ASC 4,W/ COM * "O" ASC 1,O AST OCT 05000 "E" OCT 45 PR. DEF *+1 ASC 4,W/ TA2 "?" ASC 1,? * MS62A DEF *+1 MES62 ASC 4, CHANGE SKP * * PQADD PRINTS THE MAXIMUM PROGRAM ADDRESS SPACE FOR PROGRAMS * WITH AND WITHOUT COMMON, AND FOR PRIVILEGED PROGRAMS. * * ON ENTRY: A-REG = PAGE # PRECEDING THE PROGRAM AREA * B-REG = ASCII WORD TO STUFF INTO MESSAGE (EG, "O") * PQADD NOP *PRINT LARGEST PART MESSAGE* STB MSQ4+1 MAKE MESSAGE W/COM OR LDB MSQ2X W/O COM, THEN PUT SIZE ADA N32 JSB \CONV IN MESSAGE LDA MSQ4. LDB MSQ2. STUFF IN MSG MVW P4 HEAD,OVERLAYING HIGH-ORDER LDB MSQ2. ZEROS OF PAGE SIZE LDA P18 JSB \MESS PRINT MESSAGE JMP PQADD,I SPC 3 * * CONVERT THE ADDRESS IN THE A-REG TO A LOGICAL PAGE NUMBER * CPAG# NOP ALF,RAL ROTATE THE PAGE BITS RAL TO THE LOW BYTE AND M37 AND GET MASK THEM JMP CPAG#,I SPC 3 * * PRINT THE CURRENT SIZE OF SAM, GIVEN IN THE A-REG. * SAMSZ NOP LDB LWTAI GET LAST WORD ADDRESS OF TABLE AREA I INB AND SET STARTING ADDRESS OF SAM#0 CMB,INB DETERMINE SIZE BY SUBTRACTING ADB DPADD FROM START OF DRIVER PARTITION ADA B GET TOTAL SAM SIZE CMA,INA LDB MXSM PASS BUFFER ADDRESS JSB \CONV AND GET DECIMAL ASCII WORDS JSB \SPAC * LDB MSSM. PRINT THE MESSAGE LDA P24 JSB \MESS JMP SAMSZ,I * MSSM. DEF *+1 ASC 12,SYS AV MEM: XXXXX WORDS MXSM DEF MSSM.+7 HYADD DEF *+1 ASC 1,- SKP * * * LIST MAXIMUM PROGRAM SIZES * PQEND JSB NONE SEE IF ANY BG REQ'S WERE DISPLAYED JSB \SPAC LDA P22 LDB MSQ3. PRINT HEADER JSB \MESS LDB "O" PASS AN O (FOR W/O) CCA ADA FPCOM AND FIRST COMMON PAGE JSB PQADD AND PRINT MSG (MAX W/O COM) LDA FWSDA AND GET LAST COMMON PAGE JSB CPAG# ADA N1 LDB BLNKS PASS BLANKS IN B. JSB PQADD AND PRINT (MAX W/ COM) * LDB PR. TRICK PQADD TO STORE STB MSQ4. 'W/ TA2' IN MESSAGE CCA ADA FWPRV CALCULATE LAST PAGE JSB CPAG# CONTAINING TABLE AREA II JSB PQADD AND PRINT MAX PRIV PROG SPACE JSB \SPAC * * * COMPUTE SIZE OF SAM #1 * LDA LWSYS SET THE FIRST PAGE INA JSB CPAG# OCCUPIED BY SAM#1 STA FPSAM LDB LWSYS DETERMINE THE SIZE OF CMB,INB THE FIRST CHUNK OF SAM LDA LWSLB GET LAST WORD & ROUND IOR M1777 TO A PAGE BOUNDARY ADB A STB SAM#1 AND SAVE * LDA LPSLB COMPUTE THE MAXIMUM LOGICAL CMA,INA PAGE SIZE ALLOWABLE FOR ADA P31 SAM #2 SZA JMP SET2 GO SET THE UPPER LIMIT ADB N2 NO SAM #2: MUST DECREMENT SIZE OF STB SAM#1 SAM #1 SO LAST WORD IS 77776 * SET2 ADA PAGE# ADD TO NEXT PHYSICAL STA SAM2P PAGE AVAILABLE, AND SET AS UPPER LIMIT * LDB \NUMP IF MORE LOGICAL PAGES AVAILABLE CMA,INA THAN PHYSICAL PAGE STILL AVAILABLE ADA B THEN SET SAM #2 LIMIT TO LAST SSA STB SAM2P PHYSICAL PAGE * LDA SAM#1 DISPLAY THE SIZE OF THE JSB SAMSZ FIRST CHUNK * LDA PAGE# CMA,INA CONVERT & STUFF LOWER DEFAULT VALUE LDB MS65A FOR FIRST JSB \CONV PARTITION PAGE IN THE MESSAGE. LDA SAM2P CONVERT & STUFF UPPER LIMIT VALUE CMA,INA FOR FIRST PARTITION PAGE LDB MS65B IN THE MESSAGE. JSB \CONV JSB \SPAC * * REQUEST THE SIZE OF SAM #2 * GETPP LDB MES65 NOW PRINT : LDA P52 "ENTER 1ST PARTITION PAGE: JSB \READ XXXXX(DEFAULT) TO XXXXX:" * LDA N5 GET THE DECIMAL RESPONSE JSB \GET# JMP SER44 INVALID RESPONSE, REPEAT * LDA \OCTN GET PAGE # SZA,RSS CHANGE? JMP NOSM2 NO, CLEAR SAM #2 SPECS LDB PAGE# COMPARE AGAINST CURRENT CMB,INB FIRST PAGE ADB A (MUST BE >= TO IT) SSB JMP SER44 TOO SMALL * LDB SAM2P GET PRESENT UPPER LIMIT CMB,INB ADB A CMB,SSB,INB,SZB LESS THAN OR EQUAL TO IT? JMP SER44 NO, MUST TRY AGAIN * LDB PAGE# GET NEXT AVAILABLE PHYSICAL PAGE STB SAM2P AND SET AS FIRST PAGE OF SAM #2 STA PAGE# AND RESET THE FIRST PART PAGE * CMB,INB DETERMINE THE PAGE SIZE OF ADA B SAM #2 NOSM2 STA PQFLG SAVE *TEMP* ALF,RAL AND CONVERT TO THE ALF,RAL #WORDS STA SAM#2 SZA,RSS ANYTHING ALLOCATED? JMP DISPS NO * LDA LPSLB IF SAM #2 ENDS ON THE 32K ADA PQFLG BOUNDARY (77777) CPA P31 (IE, THE NEXT LOGICAL PAGE AFTER RSS IT IS 32), THEN JMP DISPS LDB N2 MUST DECREMENT THE # OF WORDS ADB SAM#2 SO LAST WORD OF SAM #2 STB SAM#2 WILL BE 77776 * * DISPLAY TOTAL SAM SIZE * DISPS LDA SAM#1 ADA SAM#2 COMBINE THE TWO CHUNKS JSB SAMSZ FOR DISPLAY * LDA FPCOM SET THE MAXIMUM ADDRESSABLE CMA,INA (LOGICALLY) PAGE SIZE FOR A ADA P32 PARTITION STA MAXPG JMP DPINT CONTINUE * MAXPG NOP * SER44 LDA ERR44 SEND ERROR DIAGNOSTIC JSB \GNER FOR INVALID SAM #2 REPLY JMP GETPP TRY AGAIN SKP * * DEFINE DISK RESIDENT PROGRAM PARTITIONS * * CLEAR M.A.T. FIRST. SET LINK WORDS TO -1 TO * SHOW PARTITIONS UNDEFINED. * DPINT JSB \SYS MAP SYSTEM AREA ON DISK LDA MAXPT SET LOOP COUNTER TO CMA -(NO. OF PARTS +1) STA DPTMP AND SAVE * CLA CLEAR THE MAXIMUM PARTITION SIZES STA $MCHN+1 FOR MOTHER STA $MBGP+1 FOR BG STA $MRTP+1 AND FOR RT STA NEXTP SET THE CURRENT PART #, -1 STA DPMOM CLEAR FLAG BIT STA SUBMD * LDB MAT. GET ADDRESS OF FIRST MAT ENTRY STB MATA AND SAVE JMP DPCN2 ENTER LOOP AT BOTTOM SINCE * MAXPT MAY BE XERO * DPLP3 CCA SET LINK TO JSB \ABDO MINUS 1 DPLP4 CLA THEN SET NEXT JSB \ABDO 6 WORDS TO ZERO ISZ DPTM2 JMP DPLP4 DPCN2 LDA N6 REPEAT THE ABOVE STA DPTM2 TILL MAT IS ISZ DPTMP EXHAUSTED JMP DPLP3 * * * TELL USER HOW MANY PAGES LEFT * LDA PAGE# COMPUTE # OF CMA,INA REMAINING ADA \NUMP PAGES. STA DPARE SAVE SIZE OF PARTITION AREA STA PLEFT ALSO # OF PAGES LEFT. CMA,INA \CONV NEEDS NEG PARM LDB MXM1 POINT TO SPOT IN MSG JSB \CONV STUFF DECIMAL INTO MSG JSB \SPAC LDB MSM1. LDA P22 JSB \MESS SEND SIZE LEFT * LDA MAXPT SZA,RSS JMP DPTHD IF NO PARTS ALLOWED...DON'T ASK JSB \SPAC LDB MSM2. LDA P18 JSB \MESS PRINT "DEFINE PARTITIONS:"