ASMB,R,Q,C,Z IFN HED RTE IV-A CONFIGURATOR EXTENSION 92067-16006 XIF IFZ HED RTE IV-B CONFIGURATOR EXTENSION 92067-16516 XIF * NAME: $CNFX * SOURCE: 92067-18006 * RELOC: 92067-16006 RTE IVA CONFIGURATOR EXTENSION * RELOC: 92067-16516 RTE IVB CONFIGURATOR EXTENSION * PGMR: S. KAPOOR,D.VENHAUS * * *************************************************************** * * (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. * * *************************************************************** * IFN NAM $CNFX,3 92067-16006 REV.1940 790906 XIF IFZ NAM $CNFX,3 92067-16516 REV.2001 791029 XIF EXT $PCHN,$EXIT,$WRRD,$USRS,$ABDP,$TRTB,$TREN,$NPGQ EXT $GDPG,$SAVE,$SMTB EXT $PARS,$CVT3,$MATA,$MNP,$MCHN,$MBGP,$MRTP EXT $CFR,$BGFR,$RTFR,$IDEX,$SDA,$PLP,$CMST,$SBTB EXT $MPS2,$ENDS * SUP * A EQU 0 B EQU 1 KEYWD EQU 1657B HED CONSTANTS AND MESSAGES .1 DEC 1 .2 DEC 2 .3 DEC 3 .4 DEC 4 .5 DEC 5 .6 DEC 6 .7 DEC 7 .9 DEC 9 .11 DEC 11 .12 DEC 12 .14 DEC 14 .15 DEC 15 .16 DEC 16 .18 DEC 18 .19 DEC 19 .28 DEC 28 .32 DEC 32 .33 DEC 33 * B77 OCT 77 B37 OCT 37 B140K OCT 140000 * .10 DEC 10 * YE ASC 1,YE NO ASC 1,NO E ASC 1, E R ASC 1,R S ASC 1,S RT ASC 1,RT BG ASC 1,BG PARTN ASC 15,PART'N XX, XXXX,(XXXX) PAGES? APRTN DEF PARTN+8 PAGES ASC 4, PAGES? APGS DEF PAGES SPGS ASC 7,,(XXXX) PAGES? ASPGS DEF SPGS SPACE ASC 1, MSG23 ASC 10,CURRENT SIZE OF SAM: MSG24 ASC 10,DEFAULT: WORDS MSG25 ASC 10,EXTENSION: PAGES * MSG29 ASC 14,CURRENT PART'N DEFINITIONS: MSG31 ASC 11,CURRENT PART'N REQMTS: MSG32 ASC 4,REALTIME MSG33 ASC 5,BACKGROUND MSG35 ASC 9,MAX PROGRAM SIZE: MSG36 ASC 11,W/OUT COMMON: PAGES MSG37 ASC 11,W/ COMMON: PAGES MSG38 ASC 11,W/ TABLE II: PAGES MSG39 ASC 10,MAX # OF PART'NS: MSG40 ASC 11,PAGES REMAINING: * A$SMT DEF $SMTB+0 E$SMT DEF $SMTB+9 USRST NOP ABDPG NOP SUBPR NOP PGSRM NOP MEMSZ NOP LSTLU NOP ECHO NOP SAVE BSS 4 TEMP NOP TEMP1 NOP TEMP2 NOP TEMP3 NOP TEMP4 NOP TEMP5 NOP STSME NOP SMEXS NOP ENDSM NOP * HED PRINT INFORMATION ON MEMORY ORGANIZATION * $CNFX XLA $PCHN GET MEMORY SIZE STA MEMSZ SAVE IT XLA $WRRD GET LIST DEVICE LU# STA LSTLU XLA $TRTB GET ECHO FLAG STA ECHO LDB .10 JSB WRLST DEF MSG23 CURRENT SIZE OF SAM: XLB $SAVE+2 GET # OF WORDS IN SAM DEFAULT XLA $SAVE+13 HAVE TWO PIECES ADA B ADD THE TWO PIECES CCE CONVERT TO DECIMAL ASCII JSB $CVT3 INA POINT TO LAST FOUR DIGITS DLD A,I SET UP MESSAGE DST MSG24+5 DEFAULT: XXXX WORDS LDB .10 JSB WRLST PRINT IT DEF MSG24 LDA $MPS2 # OF PAGES IN SAM EXT ALF,RAL RAL # OF PAGES IN LOW 6 BITS AND B77 A REG HAS # OF PAGES IN SAM EXT STA SMEXS SAVE SIZE OF SAM EXT CCE CONVERT TO ASCII DECIMAL JSB $CVT3 ADA .2 POINT TO LOW 2 DIGITS LDA A,I GET ASCII VALUE STA MSG25+6 SET UP MESSAGE LDB .10 JSB WRLST PRINT DEF MSG25 EXTENSION: XX PAGES LDA $SBTB+1 # OF PAGES IN DRIVER PARTITIONS ADA $SBTB+3 # OF PAGES IN MEM RES BASE PAGE ADA $SBTB+5 # OF PAGES IN MEM RES PARTN ADA $ENDS # OF PAGES UPTO SAM DEFAULT STA STSME PHSICAL START PAGE OF SAM EXT IOR BIT15 SJS $GDPG FIND THE FIRST GOOD PAGE FOR SAM EXT JMP SMER1 ERROR NO MORE PAGES LEFT STA STSME START PAGE OF SAM EXT STRPG CCE CONVERT TO ASCII DECIMAL JSB $CVT3 INA DLD A,I ASCII VALUE DST MSG26+19 SET UP MESSAGE LDB .21 JSB WRLST PRINT MESSAGE DEF MSG26 PHSICAL START PAGE OF SAM EXT XX LDA $ENDS FIND # OF PAGES AVAIL FOR SAM EXT CMA,INA ADA .32 # OF PAGES BET END OF LOG MEM AND SAM DEFAULT STA TEMP SAVE IT LDB STSME PHSICAL START PAGE OF SAM EXT CMB,INB ADB MEMSZ (MEMSZ-START OF SAM EXT) CMA,INA - ADA B (32-$ENDS) SSA,RSS WHICH IS GREATER? LDB TEMP THE SMALLER QUANTITY IS MAX SIZE OF SAME EXT STB MXSME MAX. PAGES AVAIL FOR SAM EXT LDA B CCE JSB $CVT3 CONVERT IT TO ASCII DECIMAL ADA .2 LDA A,I GET ASCII VALUE STA MSG27+18 SET UP MESSAGE LDB .19 JSB WRLST DEF MSG27 MAX PAGES AVAIL FOR SAM EXT: XX * HED RECONFIGURE SAM EXTENSION CLA CLEAR $SMTB LDB A$SMT CL$SM XSA B,I CPB E$SMT END OF $SMTB? JMP SMEXQ YES INB NO JMP CL$SM SMEXQ LDB .18 JSB QUERY DEF MSG28 CHANGE SAM EXTENSION?(#PAGES/" "CR) LDA PRSBF SZA,RSS NULL? JMP NOCHG YES, NO CHANGE IN SAM EXT CLA LOWER LIMIT LDB APRSB POINTER TO PARSE BUFFER JSB TST# TEST VALIDITY OF RESPONSE MXSME NOP MAX AVAIL MEM FOR SAM EXT JMP SMERR ERROR RSS NOCHG LDA SMEXS SAM EXT SIZE GENERATED STA SMEXS * * CHANGE SYSTEM MAP FOR NEW SAM EXT CMA,INA,SZA,RSS SAM EXT SIZE IS 0? JMP NOSME YES STA TEMP1 -VE OF SAM EXT SIZE CLA,INA CAX LDA $ENDS LOGICAL START PAGE OF SAM EXT STA TEMP5 LDA A$SMT START OF $SMTB STA TEMP2 SAVE IT FOR POINTER VALUE LDA STSME PHYSICAL START PAGE XSA TEMP2,I SET INITIAL START PAGE FOR SAM EXT STA TEMP3 ISZ TEMP2 POINT TO # OF PAGES IN CHUNK ENTRY SMELP IOR BIT15 SJS $GDPG FIND NEXT GOOD PAGE JMP SMER1 ERROR CPA TEMP3 BAD PAGE ENCOUNTERED? JMP INCR NO LDB TEMP2 CPB E$SMT END OF $SMTB REACHED? JMP SMER2 YES, ERROR ISZ TEMP2 NO, POINT TO NEXT ENTRY XSA TEMP2,I START PHYSICAL PG FOR NEXT CHUNK OF SAM EXT ISZ TEMP2 INCR XLB TEMP2,I INCREMENT #PGS IN THIS CHUNK OF SAM EXT INB XSB TEMP2,I STA B ADB B40K WRITE PROTECT SAM EXTENSION LDA TEMP5 XMS STORE PAGE # IN DMS REG BLS,RBR CLEAR BIT 14 ISZ TEMP1 INCREMENT COUNTER RSS NOT DONE YET JMP SMELC DONE ISZ TEMP5 INCREMENT LOGICAL PAGE # ISX LDA B STA TEMP3 JMP SMELP STORE NEXT PAGE * SMERR LDA A10 ERROR JSB ERROR JMP SMEXQ SMER2 LDA A22 TOO MANY BAD PAGES IN SAM EXT JSB ERROR JMP SMEXQ * A10 ASC 1,10 A22 ASC 1,22 A12 ASC 1,12 B40K OCT 40000 .22 DEC 22 N2 DEC -2 MSG26 ASC 21,SAM EXTENSION STARTS AT PHYSICAL PAGE MSG27 ASC 19,MAX PAGES AVAIL FOR SAM EXTENSION: MSG28 ASC 18,CHANGE SAM EXTENSION?(#PAGES/" "CR) * SMER1 LDA A12 JSB ERROR JMP SMEXQ * NOSME LDA $ENDS NO CHANGE IN SAM EXT STA ENDSM END OF SYSTEM LDA STSME START OF USER PARTN AREA XSA $USRS CLA STA $MPS2 XSA $SAVE+4 JMP RWPRO READ-WRITE PROTECT REST OF THE REG * * SMELC STA ENDSM A REG HAS END OF LOG SYS PAGE XSB $USRS START PAGE OF USER PARTITIONS LDB SMEXS # OF PAGE IN SAM EXT BLF,BLF # OF WORDS IN SAM EXT RBL,RBL CPA .32 DID SAM EXT END AT LOG PAGE 31? RSS THEN LAST ADDRESS MUST BE 77775B CLA,RSS LDA N2 ADB A XSB $SAVE+4 # OF WORDS IN SAM EXT LDA SMEXS SAM EXT SIZE ALF,ALF RAL,RAL MOVE IT TO BITS 10-25 ADA STSME START PAGE SAM EXT STA $MPS2 * RWPRO CLA,INA READ WRITE PROTECT REST OF CAX THE REGISTERS IN THE SYSTEM MAP LDA ENDSM LOGICAL PAGE SAM EXT ENDS RWPRL CPA .32 LOGICAL REG # IS 32? JMP PRTDF YES DONE LDB B140K READ WRITE PROTECT NEXT REG XMS ISX JMP RWPRL * HED PARTITION DEFINITIONS * PRTDF LDB .14 JSB WRLST DEF MSG29 CURRENT PART'N DEFINITIONS: JSB PRNPR PRINT LIST OF PARTITION DEFINITIONS LDB .11 PRINT LIST OF JSB WRLST DEF MSG31 CURRENT PART'N REQMTS: LDB .4 JSB WRLST REALTIME DEF MSG32 CLB INDICATE TO ROUTINE TO PRINT STB TYPE PART'N REQMTS FOR REAL TIME PROGS JSB PGREQ LDB .5 JSB WRLST BACKGROUND DEF MSG33 ISZ TYPE JSB PGREQ PART'N REQMTS FOR BG PROGS LDB .9 JSB WRLST DEF MSG35 MAX PROGRAM SIZE LDA $CMST START OF COMMON AREA CMA,INA CCE,INA ADA .32 32-$CMST+1 STA MXWOC JSB $CVT3 CONVERT TO ASCII DECIMAL ADA .2 LDA A,I SET UP MESSAGE STA MSG36+7 W/OUT COMMON : XX PAGES LDB .11 JSB WRLST DEF MSG36 LDA $SDA START OF SYSTEM DRIVER AREA CMA,INA INA ADA .32 32-$SDA+1 CCE CONVERT MAX ADDRESS SPACE WITH COMMON JSB $CVT3 TO ASCII DECIMAL ADA .2 LDA A,I STA MSG37+7 W/ COMMON : XX PAGES LDB .11 JSB WRLST DEF MSG37 LDA $PLP LOAD POINT FOR PRIV PROGS ALF RAL,RAL GET PAGE # IN LOW BITS AND B37 MASK PAGE# CMA,INA INA ADA .32 32-#PAGES UPTO TABLE AREA II+1 CCE CONVERT # OF PAGES IN MAX ADDR SPACE FOR JSB $CVT3 A PRIVILEGED PROGRAM TO ASCII DECIMAL ADA .2 LDA A,I STA MSG38+7 LDB .11 JSB WRLST W/ TABLE II: DEF MSG38 LDA $MNP MAX # OF PARTITIONS CCE JSB $CVT3 ADA .2 LDA A,I GET ASCII VALUE STA MSG39+9 SET UP MESSAGE LDB .10 JSB WRLST PRINT IT DEF MSG39 MAX # OF PART'NS : XX XLA $USRS START PAGE OF USER PARTITION AREA CMA,INA ADA MEMSZ MEMSZ-$USRS STA PGSRM PAGES REMAINING FOR USER PARTITION CCE DEFINITIONS JSB $CVT3 CONVERT IT TO ASCII DECIMAL INA DLD A,I SET UP THE MESSAGE DST MSG40+9 PAGES REMAINING: XX LDB .11 JSB WRLST DEF MSG40 * * DEFINE USER PARTITIONS * DFNPR LDB $MATA SET ALL WORDS IN MAT TO 0 STB MATAD START ADDRESS OF MAT LDA $MNP # OF WORDS TO BE CLEARED SZA,RSS MAX # OF PARTITIONS IS 0? JMP QPERM YES,SKIP REST OF MEMORY RE-CONFIGURATION MPY .7 EACH ENTRY HAS 7 WORDS STA B CLA VALUE FOR REGISTERS JSB SETM SET MEMORY MATAD NOP START OF MAT LDA $MNP CMA,INA -VE OF # OF PART'NS ALLOWED STA TEMP COUNTER TO SET LINK WORDS OF ALL MAT LDA $MATA ENTRIES TO -1 CCB INITL STB A,I STORE VALUE IN ENTRY ADA .7 POINT TO NEXT ENTRY ISZ TEMP JMP INITL NOT DONE YET * XLA $USRS SAVE START OF USER PARTITIONS STA USRST XLA $ABDP SAVE CURRENT BAD PAGE POINTER STA ABDPG * STDFN CLA START OF PARTITION DEFINITION STA SUBPR CLEAR FLAG FOR SUBPART'N DEF'N STA PRTN# LDA $MATA START OF MAT STA PRPNT SET UP POINTER TO MAT ENTRIES * STCHN CCA SJS $PCHN START OF PART'N DEF'N SZA,RSS FOR THIS CHUNK OF MEMORY JMP THRLS 0,DONE WITH PART'N DEF'N FOR ALL OF MEM CLB INITIALIZE FLAG FOR END OF SUBPARTITION STB ERFLG * XLB $USRS NEW START OF USER AREA STB SAVE SAVE IT STA #PGS # OF PAGES IN BLOCK FROM MEM STA SAVE+1 SAVE IT LDB PRPNT POINTER IN MAT STB SAVE+2 SAVE IT LDB PRTN# PARTITIONS DEFINED SO FAR STB SAVE+3 SAVE IT * CCE CONVERT # OF PAGES IN CHUNK JSB $CVT3 TO ASCII DECIMAL INA POINT TO LAST 4 ASCII DIGITS DLD A,I DST MSG50+9 AND SET UP MESSAGE LDB .15 JSB WRTTY DEFINE PART'NS FOR PPPP PAGES: DEF MSG50 * IFN LDB .9 XIF * IFZ LDB .12 XIF * JSB WRTTY DEF MSG41 #PAGES,RT(M)/BG(M)/S(,R) PRTNQ LDA PRTN# CONVERT PARTITIONS DEFINED SO FAR CCE,INA + 1 INTO ASCII DECIMAL JSB $CVT3 ADA .2 POINT TO LAST 2 ASCII DIGITS LDA A,I STA PARTN+4 LDA #PGS #PAGES REMAINING TO BE DEFINED IN THIS BLOCK CCE CONVERT TO ASCII DECIMAL JSB $CVT3 INA POINT TO LAST 4 DIGITS LDB SUBPR DEFINING SUBPARTITIONS? SSB JMP SETSB YES, SETUP MESSAGE FOR SUBPARTITIONS * DLD A,I GET THE ASCII # OF PAGES DST PARTN+6 SET # OF PAGES REMANINING IN MESSAGE LDA APGS MOVE " PAGES?" IN MESSAGE LDB APRTN MVW .4 LDB .12 LENGTH OF PARTITION DEFINITION MESSAGE JMP QPRTN * SETSB DLD A,I GET # OF PAGES LEFT IN MOTHER PART'N DST SPGS+1 LDA ASPGS MOVE ",(XXXX) PAGES?" INTO MESSAGE LDB APRTN MVW .7 LDA SV#PG # OF PAGES LEFT IN MAIN MEM CCE CONVERT TO DECIMAL ASCII JSB $CVT3 INA DLD A,I GET LEAST 4 DIGITS DST PARTN+6 SET # PAGES LEFT IN MESSAGE LDB .15 LENGTH OF MESSAGE QPRTN JSB QUERY PARTITION DEFINITION PROMPT DEF PARTN PART'N XX? LDA PRSBF CPA .2 ASCII RESPONSE? RSS YES JMP TSTTY NO, TEST TYPE OF PART'N JSB END? /E ENTERED? RSS YES JMP CHK/R NO, THEN CHECK FOR /R LDA ERFLG ONLY /E OR /R PERMITTED AS A RESPONSE? SSA JMP STCHN YES, THEN /E VALID LDA SUBPR DEFINING SUBPARTITIONS? SSA,RSS JMP #PGSE NO, THEN ERROR JSB RSTSB YES, THEN END SUBPART'N DEFINITION JMP ENPR2 * CHK/R LDA PRSBF+1 CPA /R RESTART ? RSS JMP TSTTY NO LDA PRSBF+2 CPA SPACE JMP RSTOR RESTART PARTITION DEFINITIONS * TSTTY LDA ERFLG END OF SUBPARTITION FLAG SET? SSA JMP #PGSE YES,ONLY /E OR /R ALLOWED FOR A RESPONSE LDA PRSBF+6 TEST FOR VALID PART'N TYPE CPA SPACE RSS * IFZ CPA M BGM OR RTM? XIF * RSS YES, THEN OK JMP TYPER NOT A SPACE THEN ERROR LDB PRSBF+5 TEST FOR VALID PART'N TYPE CLA 0 IF BACKGROUND CPB BG BACKGROUND? JMP SETYP YES INA CPB RT REALTIME? JMP SETYP YES CPB S SUBPARTITION? CCA,RSS -1 IF SUBPARTITION JMP TYPER INVALID TYPE ERROR SETYP STA TYTMP SAVE TYPE OF PART'N LDB SUBPR DEFINING SUBPARTITIONS? SSB,RSS JMP NOSUB NO SSA,RSS PART'N TYPE IS S? JSB RSTSB NO, THEN END SUBPARTITION DEFINITION JMP TESTR TEST FOR RESERVE PARAMETER NOSUB SSA PARTITION TYPE IS S? JMP TYPER YES, THEN ERROR * TESTR LDB PRSBF+8 TEST FOR R PARAMETER SZB,RSS NULL? JMP SETR YES LDB PRSBF+9 CPB R R? RSS YES JMP RSRVE NO, THEN ERROR LDA PRSBF+10 GET NEXT CHAR CPA SPACE BLANK? CLB,INB,RSS YES, THEN OK JMP RSRVE NO, ERROR SETR STB RTMP RTMP IS 1 IF RESERVED PART'N * LDA .2 GET # OF PAGES REMAINING LDB APRSB IN THIS CHUNK JSB TST# TEST IF # PAGES DEFINED IS #PGS NOP GREATER THAN REMAINING # PAGES IN CHUNK JMP #PGSE ERROR * STA PGTMP GET PAGES FOR THIS PART'N CMA,INA # OF PAGES REMAINING ADA #PGS IN BLOCK OF MEM CPA .1 1 PAGE LEFT IN CHUNK? RSS YES JMP SET#P NO ISZ PGTMP INCREMENT # OF PAGES IN PRV PART'N CLA CLEAR # OF PAGES REMAINING IN CHUNK SET#P STA #PGS NEW # PAGES LEFT IN CHUNK LDA PRPNT POINTER TO CURRENT MAT ENTRY CLB STB A,I CLEAR LINK WORD ADA .3 POINT TO WORD 3 OF MAT ENTRY XLB $USRS START PAGE FOR THIS PART'N STB A,I SET UP MAT WORD INA LDB RTMP PARTITION RESERVE PARAMETER RBR BIT 15 IS SET IF R PARM ADB PGTMP WAS SPECIFIED - # PAGES IN LOW BITS ADB N1 -1 TO EXCLUDE BASE PAGE STB A,I SET UP WORD 4 OF MAT ENTRY INA LDB TYTMP REAL TIME OR BACKGROUND PART'N SSB 'S' ENTERED? LDB SVTYP YES, THEN USE TYPE OF MOTHER PART'N RBR BIT 15 SET IF REALTIME PART'N STB A,I SET UP WORD 5 OF MAT LDB SUBPR DEFINING SUBPARTITIONS? SSB JMP SBPRT YES * IFZ LDA PRSBF+6 BGM OR RTM? CPA M JMP DEFSB YES, THEN PROMPT FOR SUBPARTITIONS XIF * LDA .2 LDB APRSB ADDRESS OF PARSE BUFFER JSB TST# # OF PAGES FOR PART'N LESS THAN MXWOC NOP MAX ADDRESSABLE SPACE W/OUT COMMON? JMP MPART YES, DEFINE MOTHER PART'N * ENPRT XLA $USRS START OF USER PART'N PAGE ADA PGTMP ADD # PAGES DEFINED FOR PART'N XSA $USRS TO GET NEW START USER PAGE ENPR1 LDA PRPNT POINT TO NEXT MAT ENTRY ADA .7 STA PRPNT ISZ PRTN# INCREMENT PART'NS DEFINED SO FAR LDA PRTN# # OF PARTITIONS DEFINED SO FAR CPA $MNP IS EQUAL TO MAX # PART'NS? JMP MX#PR YES, THEN DONE ENPR2 LDA #PGS # PAGES LEFT IN CHUNK SZA 0? JMP PRTNQ NO JMP STCHN YES, THEN DEFINE MORE PART'NS * MX#PR LDB SUBPR DEFINING SUBPARTITIONS? SSB JSB RSTSB YES, END SUBPARTITION DEFINITION LDA #PGS # OF PAGES LEFT IN THIS CHUNK SZA 0? JMP RDFNQ NO, THEN REDEFINE PART'NS? CCA SJS $PCHN ANY MORE PAGES LEFT IN MEM? SZA,RSS JMP THRLS NO, THEN THREAD LISTS * RDFNQ LDA A20 MAX # PART'NS DEFINED AND JSB ERROR PAGES LEFT UNDEFINED IN MEM RSTOR LDA USRST RESTORE START OF USER PART'NS XSA $USRS LDA ABDPG RESTORE POINTER TO BAD PAGE LIST XSA $ABDP JMP DFNPR REDEFINE PARTITIONS * M ASC 1,M A20 ASC 1,20 MSG50 ASC 15,DEFINE PART'NS FOR PAGES: * IFN MSG41 ASC 9,#PAGES,RT/BG/S(,R) XIF * IFZ MSG41 ASC 12,#PAGES,RT(M)/BG(M)/S(,R) XIF * * DEFINE MOTHER PARTITIONS * MPART LDB .11 JSB QUERY SUBPARTITIONS?(YES/NO) DEF MSG43 LDA PRSBF+1 CPA NO JMP ENPRT NO, THEN CONTINUE NORMALLY CPA YE RSS YES JMP MPART ILLEGAL RESPONSE DEFSB CCA,CCE SET E REG FOR FUTURE USE STA SUBPR SET FLAG TO INDICATE DEFINING SUBPARTITIONS LDA TYTMP SAVE PART'N TYPE OF THIS MOTHER PART'N STA SVTYP LDA #PGS STA SV#PG SAVE # OF PAGES LEFT IN CHUNK LDA PGTMP STA #PGS # OF PAGES IN MOTHER PART'N XLA $USRS ADA PGTMP ADD # OF PAGES DEFINED FOR MOTHER PART'N STA SVUSR SAVE START PAGE FOR NEXT PART'N LDA PRPNT SET M BIT IN MAT ENTRY ADA .3 FOR THE MOTHER PART'N LDB A,I RBL,ERB E REG SET PREVIOUSLY STB A,I ADA .3 POINT TO SUBPART'N LINK WORD LDB PRPNT STB A,I POINT SLW OF MOTHER PART'N TO ITSELF STA PRVSL SAVE TO USE FOR NEXT SLW JMP ENPR1 * SBPRT LDB PRVSL,I YES,POINT PREV. SLW TO THIS SUBPART'N ENTRY LDA PRPNT STA PRVSL,I ADA .6 SET UP THIS PARTN'S SLW STA PRVSL STB A,I LDA #PGS SZA END SUBPART DEF'N IF # PAGES LEFT IS 0 JMP ENPRT JSB RSTSB END SUBPARTITION DEFINITION JMP ENPR1 * RSTSB NOP ROUTINE TO END SUBPARTITION DEF'N LDA SVUSR RESTORE START USER PART'N PAGE # XSA $USRS FOR NEXT PART'N TO BE DEFINED LDA SV#PG STA #PGS RESTORE # PAGES LEFT IN CHUNK CLA STA SUBPR CLEAR SUBPART'N DEFINITION FLAG JMP RSTSB,I RETURN * #PGSE LDA A13 INVALID PARTITION SIZE JSB ERROR LDA #PGS # OF PAGES LEFT IN CHUNK IS 0? SZA JMP PRTNQ NO, PROMPT FOR LAST PART'N DEF'N CCA YES, THEN SET FLAG TO INDICATE STA ERFLG ONLY /E OR /R WILL BE ALLOWED FOR A RESPONSE JMP PRTNQ PROMPT FOR PART'N DEF'N * TYPER LDA A14 INVALID PARTITION TYPE RSS * RSRVE LDA A15 INVALID PARTITION RESERVATION PARAMETER JSB ERROR DISPLAY ERROR JMP PRTNQ QUERY PARTN# AGAIN * A13 ASC 1,13 A14 ASC 1,14 A15 ASC 1,15 ERFLG NOP SV#PG NOP SVUSR NOP PRVSL NOP TYTMP NOP SVTYP NOP PGTMP NOP RTMP NOP MSG43 ASC 11,SUBPARTITIONS?(YES/NO) PRSBF BSS 33 PRPNT NOP PNTBG NOP PNTRT NOP PNTCH NOP ADTBL DEF *+1 ABGFR DEF $BGFR ARTFR DEF $RTFR ACFR DEF $CFR AMBGP DEF $MBGP AMRTP DEF $MRTP AMCHN DEF $MCHN AMPS2 DEF $MPS2 LSHDR NOP MXPRT NOP PRTSZ NOP PRVPN NOP CURPN NOP CURKY NOP PRTMP NOP RDBUF BSS 80 BIT15 OCT 100000 .N7 DEC -7 HED THREAD PARTITION LISTS * * THREAD PARTITIONS JUST DEFINED INTO BG,RT AND CHAIN FREE LISTS * FREE LISTS IN AN INCREASING ORDER ACCORDING TO THEIR SIZE * THRLS CLA CLEAR LIST HEADERS STA $BGFR STA $RTFR STA $CFR STA $MCHN STA $MBGP STA $MRTP LDA .N7 COUNTER RMOVI LDB ADTBL,I REMOVE INDIRECTS FROM ENT POINT ADDRESSES RSS LDB B,I RBL,CLE,SLB,ERB JMP *-2 STB ADTBL,I ISZ ADTBL INA,SZA JMP RMOVI LDA $MATA SET POINTER AT THE BEGINING OF MAT STA PRPNT LDA ABGFR ADDRESS OF LIST HEADER FOR BG STA PNTBG POINTER FOR THE BG LIST LDA ARTFR ADDRESS OF LIST HEADER FOR RT STA PNTRT POINTER FOR THE RT LIST LDA ACFR ADDRESS OF LIST HEADER FOR CHAIN LIST STA PNTCH POINTER FOR THE CHAIN LIST LDA $MNP MAX # OF PARTITIONS ALLOWED CMA,INA USE AS COUNTER STA PRTMP * * THRDL LDA PRPNT GET POINTER TO MAT LDB A,I IS THE LINK WORD -1? SSB JMP THRDN YES, THEN DONE THREADING LISTS ADA .3 POINT TO WORD 4 OF MAT ENTRY LDB A,I SSB,RSS IS THE M BIT SET? CLB,RSS NO, THEN NOT A MOTHER PARTN LDB ACFR YES, SET LST HEADER FOR CHAIN LIST STB LSHDR CURRENT POINTER LDB AMCHN ADDR OF MAX SIZE CHAINED PART'N ENT PNT STB MXPRT INA POINT TO WORD 5 OF MAT ENTRY LDB A,I RBL,CLE,ERB GET BIT 15 IN E REG AND CLEAR IT STB PRTSZ SIZE OF PARTITION TO COMPARE INA NO LDB LSHDR SZB LIST HEADER ALREADY SET? JMP STPRT YES, SET MAX PART'N SIZE LDA A,I NO SSA,RSS RT BIT SET? JMP BGPRT NO, THEN BACKGROUND PART'N LDB ARTFR YES, RT PARTN, POINTER FOR RT LIST LDA AMRTP MAX RT PART'N SIZE ENTRY POINT JMP STPNT BGPRT LDA AMBGP MAX BG PART'N SIZE ENTRY POINT LDB ABGFR BG PART'N SIZE ENTRY POINT STPNT STA MXPRT POINTER TO MAX PART'N SIZE STB LSHDR HEADER FOR CURRENT LIST STPRT LDA PRTSZ GET PART'N SIZE CMA,SEZ,INA RESERVE PARTITION? JMP STCRP YES, SET CURRENT POINTER ADA MXPRT,I SIZE OF CURRENT PART'N SSA,RSS IS GREATER THAN PREVIOUS ONE? JMP STCRP NO LDA PRTSZ YES STA MXPRT,I NEW MAX PART'N SIZE FOR GIVEN LIST STCRP LDB B,I GET VALUE STB CURPN CURRENT POINTER CLA CLEAR STA PRVPN PREVIOUS POINTER TLOOP LDB CURPN GET CURRENT POINTER SZB,RSS 0? JMP TPLEX YES, THEN DONE WALKING THRU LIST ADB .4 NO, GET PART'N SIZE LDA B,I PART'N SIZE OF CURRENT PART'N ELA,CLE,ERA CLEAR R BIT IF SET CMA,INA IN LIST < PART'N SIZE OF NEW PART'N ADA PRTSZ TO INSERTED IN THE LIST?T SSA JMP TPLEX YES,THEN FOUND PLACE TO INSERT NEW PART'N LDB CURPN NO, THEN CURRENT POINTER BECOMES STB PRVPN PREVIOUS POINTER LDA B,I CONTENTS OF LINK WORD OF STA CURPN CURRENT PART'N BECOMES THE CURRENT POINTER JMP TLOOP CHECK NEXT PARTITION IN LIST * TPLEX LDA PRPNT POINTER TO NEW PART'N TO BE INSERTED LDB PRVPN GET PREVIOUS POINTER SZB IS THE CURRENT POINTER TO LIST HEADER? JMP PRINS NO, THEN INSERT PART'N STA LSHDR,I YES POINT LIST HEADER TO PART'N JMP FORWD ADJUST FORWARD POINTER IN MAT * PRINS STA PRVPN,I PREV PART'N POINTS TO NEW PART'N FORWD LDA CURPN NEW PART'N POINTS TO CURRENT PART'N STA PRPNT,I * PARTITION HAS BEEN INSERTED * INSERT NEXT PART'N IN MAT IN PROPER LIST ENTHR LDA PRPNT ADA .7 POINT TO NEXT ENTRY STA PRPNT POINTER FOR NEW PART'N ISZ PRTMP MAX # OF PART'NS ALLOWED INSERTED? JMP THRDL NO, REPEAT PROCESS FOR ALL PART'NS * * ALL PARTITIONS ARE THREADED IN FREE LISTS * * THRDN DLD NEW SET UP MESSAGE FOR DST MSG29+2 NEW PART'N DEFINITIONS: LDB .12 JSB WRLST PRINT MESSAGE ON LIST DEVICE DEF MSG29+2 NEW PART'N DEFINITIONS: CCE E REG SET TO INDICATE CALLING FROM USER MAP JSB PRNPR PRINT LIST OF NEW PART'N DEFINITIONS * HED UNASSIGN PROGRAMS * UNASSIGN PROGRAMS IF THEY DO NOT FIT IN * THE PARTITIONS THEY WERE ORIGINALLY ASSIGNED TO * LDB .10 JSB WRLST CALLING PRINT ROUTINE FROM USER MAP DEF MSG44 UNASSIGNED PROGS: XLA KEYWD START OF KEYWORD TABLE STA CURKY CURRENT POSITION IN KEY WORD TABLE IDLP LDA CURKY,I GET NEXT ID SEG ADDRESS SZA,RSS 0? JMP IDONE YES, THEN DONE UNASSIGNING ADA .14 NO, POINT TO WORD 15 LDB A,I GET VALUE TO CHECK IF A LSR 4 SHORT ID SEGMENT SLB SS BIT SET? JMP ENLP YES, THEN LOOK AT NEXT ID SEGMENT LDB CURKY,I ADB .21 NO, A LONG ID SEG LDA B,I GET CONTENTS OF WORD 21 SSA,RSS RP BIT SET? JMP ENLP NO, PROG NOT ASSIGNED TO A PART'N AND B77 YES, GET PART'N # LDB CURKY,I ADDRESS OF ID SEGMENT JSB FIT PROG STILL FITS IN PART'N? RSS NO JMP ENLP YES * UNASN LDA SPACE NO, THEN UNASSIGN PROG LDB SPACE DST RDBUF CLEAR 3 WORDS IN BUFFER STA RDBUF+1 THEY WILL HOLD PROG NAME LDB CURKY,I ADDRESS OF ID SEG ADB .21 GET WORD 21 OF ID SEG LDA B,I AND B777C 77700B - CLEAR BIT 15 AND BITS 0-5 STA B,I STORE IT BACK * LDA CURKY,I REPORT NAME OF PROGRAM ADA .12 LDB A,I GET FIRST 2 CHARS OF PROG NAME STB RDBUF INA LDB A,I CHARS 3 & 4 OF PROG NAME STB RDBUF+1 INA LDA A,I MASK 5TH CHAR AND B1774 CLEAR LOW BYTE IOR B40 INSERT SPACE IN LOW BYTE STA RDBUF+2 LDB .3 JSB WRLST DEF RDBUF PRINT NAME OF PROG * ENLP ISZ CURKY POINT TO NEXT ENTRY IN KEY WORD TABLE JMP IDLP EXAMINE NEXT ID SEGMENT * HED MODIFY PROGRAM PAGE REQUIREMENTS IDONE LDA CURKY GET THE LAST+1 ADDR IN KEYWORD LIST ADA N1 POINT TO LAST ENTRY IN KEYWORD LIST LDA A,I GET CONTENTS STA CURKY SAVE ADDRESS OF LAST ID SEGMENT LDB .18 JSB WRTTY MODIFY PROG PAGE REQMTS?(/E TO END) DEF MSG45 LDB .6 JSB WRTTY PNAME,#PAGES DEF MSG46 MDPRM CLB,INB JSB QUERY HYPHEN PROMPT DEF HYPHN JSB END? /E ENTERED? JMP ASNPR YES,DONE WITH PROG SIZE MODFICATION * NXTPR LDB APRSB NO INB POINT TO PROGRAM NAME IN PARSE BUFFER JSB TNAME GET ID SEG ADDRESS OF PROGRAM SEZ FOUND IT? JMP MDPRE NO SUCH PROG OR SHORT ID SEG STB IDSGA FOUND PROGRAM'S ID SEG ADDRESS * * MODIFY PROGRAM SIZE * ADB .14 POINT TO TYPE WORD LDA B,I AND B17 GET PROGRAM TYPE CPA .2 REAL TIME DISC RES PROG? RSS YES CPA .3 BACKGROUND DISC RES PROG? RSS YES CPA .4 LARGE BACKGROUND DISC RES PROG? RSS YES JMP MDPRE NO, THEN WRONG PROGRAM TYPE ADB .8 LOW MAIN ADDRESS LDA B,I CLB LSL 6 LOW MAIN PAGE# IN B REG CMB,INB ADB .33 MAX # OF PAGES ALLOWED FOR PROG STB UPRLM LDA IDSGA GET ID SEGMENT ADDRESS OF PROG ADA .28 WORD 29 OF ID SEGMENT LDB A,I GET CONTENTS SZB EMA PROGRAM? JMP EMAE YES, THEN ERROR INA POINT TO WORD 29 OF ID SEGMENT LDB A,I HIGH ADDR + 1 OF LARGEST SEGMENT ADA N6 POINT TO WORD 24 OF ID SEG SZB,RSS SEGMENTED PROGRAM? LDB A,I NO, THEN HIGH ADDRESS+1 OF MAIN LDA IDSGA ID SEGMENT ADDRESS ADA .22 LDA A,I CMA -(LOW MAIN+1) ADA B HIGH ADDR + 1 - (LOW MAIN + 1) CLB LSL 6 ADB .2 #PAGES USED TO RELOCATE PROG + BASE PAGE STB A USE AS LOW LIMIT FOR MODIFYING PROG SIZE LDB APRSB ADDRESS OF PARSE BUFFER ADB .4 CONTAINING # OF PAGES JSB TST# TEST THE # OF PAGES FOR VALIDITY UPRLM NOP JMP PGSE INVALID # OF PAGES ADA N1 SUBTRACT 1 TO EXCLUDE BASE PAGE ALF,ALF # OF PAGES IN BITS 10-14 RAL,RAL STA TEMP SAVE #PAGES FOR NOW LDB IDSGA ID SEGMENT ADDR OF PROG ADB .21 POINT TO WORD 21 LDA B,I GET CONTENTS AND B1017 101777B - CLEAR # PAGES FROM WORD 21 ADA TEMP ADD THE NEW VALUE STA B,I RESTORE WORD BACK IN ID SEG JMP MDPRM PROMPT FOR NEXT ENTRY * MDPRE LDA A16 NO SUCH PROG OR SHORT ID SEG JMP *+2 EMAE LDA A21 PAGE REQMTS OF AN EMA PROG CANNOT BE MODIFIED JSB ERROR JMP MDPRM * PGSE LDA A19 PROGRAM SIZE INCORRECT JMP EMAE+1 * B17 OCT 17 N6 DEC -6 .8 DEC 8 B1017 OCT 101777 A21 ASC 1,21 A19 ASC 1,19 NEW ASC 2,NEW MSG44 ASC 10,UNASSIGNED PROGRAMS: MSG45 ASC 18,MODIFY PROG PAGE REQMTS?(/E TO END) MSG46 ASC 6,PNAME,#PAGES MSG47 ASC 16,ASSIGN PROG PART'NS?(/E TO END) MSG48 ASC 7,PNAME,PART'N# HYPHN ASC 1,- IDSGA NOP * HED ASSIGN PROGRAMS TO PARTITIONS ASNPR LDB .16 JSB WRTTY ASSIGN PROG PART'NS?(/E TO END) DEF MSG47 LDB .7 JSB WRTTY PNAME,PART'N# DEF MSG48 ASGNQ CLB,INB JSB QUERY HYPHEN PROMPT DEF HYPHN JSB END? JMP QPERM YES, DONE WITH PROG ASSIGNMENT LDB APRSB INB JSB TNAME FIND ID SEG ADDRESS FOR PROG SEZ FOUND IT? JMP ASPRE NO, NO SUCH PROG OR SHORT ID SEG STB TEMP YES, SAVE THE ID SEG ADDRESS ADB .14 POINT TO WORD 15 OF ID SEG LDA B,I AND B17 GET TYPE CPA .2 RSS CPA .3 RSS CPA .4 RSS JMP ASPRE NEITHER TYPE 2,3, OR 4 LDB APRSB ADB .4 POINT TO PART'N# VALUE IN PARSE BUF CLA LOW LIMIT JSB TST# TEST VALIDITY OF PART'N # PRTN# NOP # OF PARTITIONS DEFINED JMP PARTE ERROR IN PART'N# SZA,RSS IF PART NO. ZERO, THEN UNASSIGN JMP ASGNU ADA N1 SUBTRACT 1 TO HAVE PART'N # START FROM 0 STA TEMP1 SAVE PART'N # LDB TEMP ID SEG ADDRESS JSB FIT DOES THE PROG FIT IN PART'N? JMP NOFIT NO, ERROR * LDB TEMP YES, CHANGE ID SEG WORD 21 ADB .21 LDA B,I AND B777C MASK OUT RP BIT & PART'N# ADA TEMP1 NEW PART'N # ADA BIT15 RP BIT SET STA B,I RESTORE VALUE BACK JMP ASGNQ PROMPT AGAIN FOR NEXT ENTRY * ASGNU LDB TEMP ID SEG ADDRESS ADB .21 CHANGE WORD 21 LDA B,I AND B777C MASK OUT RP BIT AND STA B,I PUT BACK JMP ASGNQ GO GET SOMEMORE COMMANDS * ASPRE LDA A16 NO SUCH PROG OR SHORT ID SEG OR NOT TYPE 2,3,4 ASGN1 JSB ERROR JMP ASGNQ * PARTE LDA A17 JMP ASGN1 * NOFIT LDA A18 JMP ASGN1 * A16 ASC 1,16 A17 ASC 1,17 A18 ASC 1,18 .21 DEC 21 B777C OCT 77700 N1 DEC -1 MSG49 ASC 21,NEW MEM CONFIGURATION PERMANENT?(YES/NO) /R ASC 1,/R * HED MAKE MEMORY RECONFIGURATION PERMANENT * QPERM LDB .21 JSB QUERY NEW MEM CONFIGURATION PAERMANENT?(YES/NO) DEF MSG49 LDA PRSBF+1 CPA /R RESTART MEMORY RE-CONFIGURATION? JMP RSTRT YES CPA YE JMP MEMPR YES CPA NO RSS JMP QPERM ERRORNEOUS RESPONSE, ASK AGAIN SJP $EXIT EXIT THRU $CNFG RSTRT SJP $NPGQ RESTART MEMORY RE-CONFIGURATION * * MAKE MEM CONFIGURATION PERMANENT * COPY MAT ON DISC MEMPR XLA $SMTB+2 SZA 0? JMP PR$SM NO XSA $SMTB XSA $SMTB+1 PR$SM LDA A$SMT LDB .10 LENGTH OF TABLE ADB BIT15 SJS $TRTB * LDA $MNP MAX ALLOWABLE PART'NS MPY .7 EACH MAT ENTRY IS 7 WORDS LONG STA B LENGTH OF MAT ADB BIT15 LDA $MATA START ADDRESS OF MAT SJS $TRTB WRITE IT ON DISC * * COPY ALL ID SEGMENTS TO DISC XLA KEYWD ADDRESS OF FIRST ID SEG LDA A,I CAX SAVE THIS VALUE ADA .14 POINT TO WORD 14 OF ID SEGMENT LDA A,I GET CONTENTS LSR 4 CXB FIRST ID SEGMENT ADDRESS SLA IS IT A SHORT ID SEGMENT? ADB .11 YES, THEN ADJUST START ADDRESS CBX SAVE THIS VALUE LDA CURKY GET ID SEGMENT ADDRESS OF LAST ID SEGMENT ADA .14 LDA A,I LSR 4 LDB CURKY SLA,RSS SHORT ID SEGMENT? ADB .13 NO ADB .19 ADJUST LAST WORD ADDRESS OF ID SEGMENT LIST CXA ADDRESS OF FIRST ID SEGMENT CMA ADB A LAST ADDR -START ADDR + 1 ADB BIT15 # OF WORDS IN ID SEGMENTS CXA START ADDRESS OF ID SEGMENTS SJS $TRTB TRANSFER ID SEGMENTS TO DISC * LDA AMPS2 MAKE $MPS2 PERMANENT CCB SJS $TREN * * CHANGE VALUES OF $MCHN,$MBGP,$MRTP,$BGFR,$RTFR * AND $CFR ENTRY POINTS ON DISC * LDA AMCHN ADDRESS OF $MCHN ENTRY POINT CCB SJS $TREN TRANSFER ENTRY POINT TO CORRESP LOC ON DISC LDA AMBGP CCB SJS $TREN LDA AMRTP CCB SJS $TREN LDA ACFR CCB SJS $TREN LDA ABGFR CCB SJS $TREN LDA ARTFR CCB SJS $TREN CCA XSA $GDPG INDICATE SYSTEM MAP IS CHANGED FOR SAM EXT SJP $EXIT DONE * .13 DEC 13 HED SUBROUTINES TO READ, WRITE AND PRINT INFO ON SYSTEM CONSOLE * * * * END? - ROUTINE TO DETERMINE IF /E WAS ENTERED AS * A RESPONSE * CALLING SEQUENCE: JSB END? * RETURNS: LOC P IF /E WAS ENTERED * P+1 OTHERWISE * * END? NOP LDA PRSBF+1 GET FIRST WORD OF RESPONSE CPA /E IS IT /E? RSS YES JMP NOTEN LDA PRSBF+2 GET SECOND WORD OF RESPONSE CPA SPACE 2 SPACES? JMP END?,I YES, THEN RESPONSE IS /E NOTEN ISZ END? JMP END?,I RESPONSE NOT /E * /E ASC 1,/E * * QUERY - ROUTINE * CALLING SEQUENCE: B REG = # OF WORDS IN BUFFER TO DISPLAY * QUERY NOP CCA SET FLAG TO INDICATE ENTRY THRU QUERY JMP CONTQ WRTTY NOP SECOND ENTRY FOR ROUTINE TO WRITE TO TTY LDA WRTTY STA QUERY SET UP RETURN ADDRESS CLA CLEAR FLAG TO INDICATE ENTRY THRU WRTTY CONTQ STA WFLAG LDA QUERY,I STA QBUFR CLA,INA CAY LU# IN Y REG INA REQ CODE IS 2 FOR WROTE ADB BIT15 SET BIT 15 IN B REG TO INDICATE CALLING SJS $WRRD FROM USER MAP QBUFR NOP ISZ WFLAG JMP RQUER RETURN * READ RESPONSE CLA,INA LU # CAY IN Y REG LDA B401 REQUEST CODE LDB .80 80 WORDS TO READ ADB BIT15 INDICATE CALLING FROM USER MAP SJS $WRRD ARDBF DEF RDBUF BLS CONVERT TO # OF CHARS READ LDA ARDBF JSB $PARS CALL PARSE BUFFER APRSB DEF PRSBF RQUER ISZ QUERY JMP QUERY,I RETURN * .80 DEC 80 B401 OCT 401 WFLAG NOP B1777 OCT 1777 * * * WRLST - ROUTINE TO WRITE BUFER ON LIST DEVICE AND THE * SYSTEM CONSOLE IF ECHO IS REQUESTED * CALLING SEQUENCE: B REG = BUFFER LENGTH * JSB WRLST * DEF BUFR BUFFER ADDRESS * * WRLST NOP STB TEMP4 SAVE LENGTH OF BUFFER LDA WRLST,I GET BUFFER ADDRESS STA CNBF STA LSBF LDA ECHO ECHO REQUIRED? SZA JMP NECHO NO JSB WRTTY YES, SEND BUFFER OUT TO CONSOLE CNBF NOP * NECHO LDA LSTLU SEND BUFFER OUT TO LIST DEVICE CAY LDA B202 LDB TEMP4 ADB BIT15 SJS $WRRD LSBF NOP ISZ WRLST JMP WRLST,I RETURN * B202 OCT 202 * * * TST# - ROUTINE TO TEST VALIDITY OF A GIVEN # * CALLING SEQUENCE: A REG = LOWER LIMIT OF RANGE FOR # * B REG = POINTER TO 4 SET OF WORDS * FOR $# IN PARSE BUFFER * RETURN: LOC P IF ERROR RETURN * LOC P+1 IF NORMAL RETURN * NUMBER IS IN THE A REG * * TST# NOP CBX SAVE CONTENTS OF B REG LDB B,I TYPE OF VALUE CPB .1 NUMERIC? RSS YES JMP TSTE NO, THEN ERROR RETURN CXB RETRIEVE VALUE OF B REG INB LDB B,I GET VALUE CMA,INA -VE OF LOWER LIMIT ADA B VALUE-LOWER LIMIT SSA VALUE > UPPER LIMIT? JMP TSTE YES, THEN ERROR LDA B CMA,INA ADA TST#,I UPPER LIMIT-VALUE SSA VALUE>UPPER LIMIT? JMP TSTE YES, ERROR LDA B ISZ TST# NORMAL RETURN TSTE ISZ TST# JMP TST#,I RETURN * * * ERROR - ROUTINE PRINTS ERROR MESSAGE * CALLING SEQUENCE: A REG = ERROR# IN ASCII * JSB ERROR * ERROR NOP STA ERR00+6 LDB .7 LENGTH OF BUFFER JSB WRTTY DISPLAY ON CONSOLE DEF ERR00 JMP ERROR,I RETURN * ERR00 ASC 7,CONFIG ERR * * * PRNPR - ROUTINE TO PRINT A LIST OF PARTITION DEFINITIONS * CALLING SEQUENCE: JSB PRNPR * * PRNPR NOP LDA $MNP MAX # OF PARTITIONS CMA,INA STA TEMP USE AS COUNTER CLA,INA STA TEMP3 USE TEMP3 FOR PART'N # COUNTER LDA $MATA START OF MATA ENTRIES STA TEMP1 PARTL LDA TEMP1,I CONTENTS OF 1ST WORD OF MAT ENTRY CPA N1 -1? JMP PRNPR,I YES,RETURN - END OF MAT ENTRIES LDA TEMP3 GET PART'N # CCE CONVERT IT TO ASCII DECIMAL JSB $CVT3 ADA .2 LDA A,I GET PART'N # IN ASCII STA MSG30+4 SET UP MESSAGE LDA TEMP1 NO ADA .3 POINT TO WORD 4 STA TEMP1 LDA A,I GET CONTENTS STA TEMP2 SAVE IT ISZ TEMP1 5TH WORD OF MAT ENTRY LDA TEMP1,I LDB SPACE SSA R BIT SET? LDB COMAR YES STB MSG30+13 INCLUDE R IN THE MESSAGE * NPGS AND B1777 # OF PAGES IN PART'N INA ADD BASE PAGE CCE CONVERT TO ASCII DECIMAL JSB $CVT3 INA DLD A,I LAST 4 DIGITS DST MSG30+6 # OF PAGES IN PARTITION ISZ TEMP1 POINT TO WORD 6 LDA TEMP1,I LDB BG SSA BG PART'N? LDB RT NO, REAL TIME ISZ TEMP1 7TH WORD LDA TEMP1,I GET CONTENTS SZA,RSS SLW ZERO? JMP RTBGS YES, THEN NOT A SUBPART LDA TEMP2 GET CONTENTS OF WORD 4 SSA,RSS M BIT SET? LDB S NO, THEN SUBPARTITION * RTBGS STB MSG30+12 LDB .14 BUFFER LENGTH JSB WRLST PRINT IT DEF MSG30 PART'N XX = XX PAGES,[(RT,BG OR S) [,R] ISZ TEMP1 POINT TO NEXT MAT ENTRY ISZ TEMP3 INCREMENT PART'N # ISZ TEMP INCREMENT -VE COUNTER JMP PARTL NEXT PARTITION DATA JMP PRNPR,I RETURN ALL PART'NS DONE * COMAR ASC 1,,R MSG30 ASC 14,PART'N = PAGES, * * * PGREQ - ROTUINE TO PRINT REAL TIME AND BACKGROUND * PROGRMAS' PAGE REQIUREMENTS * * CALLING SEQEUNCE : TYPE = 0 FOR REALTIME PROGRAMS * = 1 FOR BACKGROUND PROGRAMS * PGREQ NOP XLA KEYWD START OF KEYWORD LIST STA TEMP KEYLP LDA TEMP,I GET ADDRESS OF AN ID SEGMENT SZA,RSS 0? JMP PGREQ,I YES, THEN DONE ADA .14 POINT TO WORD 15 OF ID SEG LDA A,I KEYWORDS ARE ADJUSTED TO POINT TO WORD 15 AND B27 OF LONG SHORT ID SEGMENTS LDB TYPE SZB LOOKING FOR REALTIME PROGS? JMP BKG NO, BACKGROUND CPA .2 IS THE TYPE 2 FOR REALTIME? JMP PRNPG YES, THEN PRINT PG REQMTS KEYEN ISZ TEMP NO, THEN LOOK AT NEXT ID SEG JMP KEYLP * BKG CPA .3 TYPE 3 FOR BG DISC RES PROG? JMP PRNPG YES, PRINT CPA .4 BG DISC RESIDENT WITHOUT TABLE AREA II? RSS YES JMP KEYEN NO, LOOK AT NEXT ID SEG LDB ASTER * FOR PROG WITHOUT TABLE AREA II RSS PRNPG LDB SPACE NOT A PRIV PROG STB MSG34+8 LDA TEMP,I GET ID SEG ADDRESS ADA .12 POINT TO WORD 13 CAX SAVE ADDRESS DLD A,I GET FIRST 4 CHARS OF NAME OF PROG DST MSG34 SET UP MESSAGE CXA ADA .2 POINT TO WORD 15 LDA A,I GET CONTENTS AND B1774 MASK UPPER BYTE IOR B40 INSERT BLANK IN LOW BYTE STA MSG34+2 LDA TEMP,I ID SEG ADDRESS ADA .28 LDA A,I GET CONTENTS OF WORD 29 LDB SPACE SZA EMA PROG? LDB E YES, THE INSERT E IN MESSAGE STB MSG34+9 LDA TEMP,I JSB PRGSZ DETERMINE # PAGES REQD BY PROG INA INCREMENT TO INCLUDE BASE PAGE CCE JSB $CVT3 INA POINT TO ASCII VALUE DLD A,I DST MSG34+3 LDA TEMP,I GET ID SEG ADDR OF PROG ADA .21 POINTO TO WORD 22 OF ID SEG LDA A,I GET CONTENTS OF WORD 22 OF ID SEG SSA,RSS RP BIT SET? JMP WRPGR NO AND B77 PROG IS ASSIGNED TO A PART'N INA PART'N # STARTING FROM 1 CCE CONVERT TO ASCII DEC JSB $CVT3 ADA .2 LDA A,I STA MSG34+14 LDB .15 LENGTH OF BUFFER RSS WRPGR LDB .10 WITHOUT PART'N # JSB WRLST DEF MSG34 PNAME XXXX PAGES [*] [E] [PART'N XX] JMP KEYEN LOOK FOR NEXT PROGRAM * ASTER ASC 1, * B1774 OCT 177400 B27 OCT 27 B40 OCT 40 TYPE NOP MSG34 ASC 15,PNAME PAGES PART'N * * * TNAME - SEARCH KEYWORD LIST FOR PROGRAM NAME * CALLING SEQUENCE: B REG = ADDRESS OF ASCII PROGRAM NAME * JSB TNAME * RETURNS: A REG = 0 IF PROGRAM NOT FOUND (E=1) * B REG = ID SEGMENT ADDRESS OF REQUESTED PROGRAM * E REG = 0 IF STANDARD ID SEGMENT * E REG = 1 IF SHORT ID SEGMENT OR NOT FOUND * * TNAME NOP STB TEMP3 ADDRESS OF NAME 1 AND 2 INB INCREMENT TO CHAR 3 AND 4 ADDR STB TEMP4 SAVE IT INB INCR TO CHAR 5 ADDR LDA B,I ASCII NAME CHAR 5 AND X AND B1774 MASK OFF X STA TEMP5 SZA IF NULL CHAR. FORCE ERROR RETURN XLA KEYWD STA TEMP TN005 LDA TEMP,I CHECK IF AT END OF LIST CCE,SZA,RSS JMP TNAME,I END OF LIST RETURN ADA .12 LDB A,I ID SEG ASCII NAME CHARS 1 AND 2 CPB TEMP3,I COMPARE WITH REQUESTED CHAR 1,2 INA,RSS COMPARES JMP TN030 DOES NOT COMPARE-GO TO NEXT PROG LDB A,I ID SEG ASCII NAME CHARS 5,X CPB TEMP4,I COMPARE WITH REQUESTED CHARS 3,4 INA,RSS COMPARES JMP TN030 DOES NOT COMPARE-GO TO NEXT PROG LDA A,I ID SEG ASCII NAME CHARS 5,X STA B SAVE FOR SHORT ID TEST AND B1774 MASK OFF X CPA TEMP5 COMPARE CHAR 5 JMP TN040 COMPARES-SO PROGRAM FOUND * TN030 ISZ TEMP INCREMENT KEYWORD ADDRESS JMP TN005 GO TO COMPARE CHARS TN040 LSR 4 MOVE SHORT ID BIT TO LEAST B ERB SET E FOR RETURN LDB TEMP,I LOAD B WITH ID SEG ADDRESS JMP TNAME,I EXIT * * * SETM - ROUTINE TO SET MEMORY TO A GIVEN VALUE * CALLING SEQUENCE: A REG = VALUE * B REG = # OF LOCATIONS TO CHANGE * JSB SETM * DEF LOC STARTING LOCATION * * SETM NOP CAX SAVE VALUE OF A REG IN X LDA SETM,I STARTING LOC STA TEMP ADDRESS OF LOC ISZ SETM CMB,INB -VE COUNT CXA VALUE IN A SETLP STA TEMP,I STORE VALUE INB,SZB,RSS INCREMENT COUNTER JMP SETM,I RETURN ISZ TEMP POINT TO NEXT MEM LOC JMP SETLP * * * FIT - ROUTINE TO TEST IF GIVEN PROGRAM CAN * FIT INTO THE PARTITION # PASSED AS PARAMETER * CALLING SEQUENCE: A REG = PART'N # STARTING AT 0 * B REG = ID SEG ADDRESS * JSB FIT * RETURNS: LOC P IF PROGRAM DOES NOT FIT IN PART'N * LOC P+1 IF THE PROGRAM DOES FIT * FIT NOP STB TEMP4 SAVE ID SEGMENT ADDRESS MPY .7 GET ADDRESS OF PART'N ENTRY IN MAT ADA $MATA ADDRESS OF MAT LDB A,I SSB IS PART'N DEFINED? JMP FIT,I NO, THEN ERROR RETURN ADA .4 WORD 5 OF MAT ENTRY LDB A,I ELB,CLE,ERB CLEAR R BIT IF SET STB TEMP5 SAVE # OF PAGES IN PART'N LDA TEMP4 GET ID SEG ADDRESS OF PROG JSB PRGSZ FIND # PAGES REQD BY THIS PROG CMA,INA ADA TEMP5 # PAGES IN PART'N - # PAGES REQD BY PROG SSA PROGRAM FITS? JMP FIT,I NO, THEN ERROR RETURN ISZ FIT YES JMP FIT,I RETURN TO LOC P+1 * * * PRGSZ - ROUTINE TO DETERMINE # PAGES REQD BY * A PROGRAM NOT INCLUDING BASE PAGE * CALLING SEQUENCE: A REG = ID SEGMENT ADDRESS * JSB PRGSZ * RETURNS: A REG = # OF PAGES REQD. BY PROG * B REG = 0 IF NON-EMA PROGRAM * = -1 IF EMA PROGRAM * * PRGSZ NOP STA TEMP3 SAVE ID SEG ADDRESS FOR LATER USE ADA .21 LDA A,I GET WORD 21 OF ID SEG ALF # OF PAGES IN LOW BITS RAL,RAL AND B37 # OF PAGES REQUIRED BY PROG CAX SAVE VALUE LDA TEMP3 GET ID SEG ADDRESS ADA .28 EMA PROG? LDB A,I SZB,RSS JMP NOEMA NO CLA YES, EMA PROG RRL 6 GET ID SEG EXT # STB TEMP3 SAVE EMA SIZE VALUE LEFT IN B REG ADA $IDEX ID SEG EXT ADDRESS LDA A,I ADDRESS OF FIRST WORD OF ID SEG EXT LDA A,I CONTENTS OF FIRST WORD OF ID SEG EXT AND B37 GET BITS 0-4 - MSEG SIZE CMA,INA LDB TEMP3 ROTATE VALUE SAVED IN TEMP BLF,BLF RBL,RBL TO GET EMA SIZE ADA B - MSEG SIZE CXB ADA B + # PAGES IN PROGRAM CCB SET B TO INDICATE EMA PROG JMP PRGSZ,I RETURN NOEMA CXA # PAGES REQUIRED BY PROGRAM CLB B = 0 TO INDICATE NON-EMA PROG JMP PRGSZ,I RETURN * END $CNFX