;<135-TENEX>POSTLD.MAC;93 5-DEC-75 13:53:43 EDIT BY ROSENBERG ; REPLACE THE LIST OF MODULES (CONSIDERED FOR SYMBOL DELETION) ; WITH A CALL TO THE "%TENX%" MACRO DEFINED IN PROLOG ;<134-TENEX>POSTLD.MAC;92 5-AUG-75 11:40:33 EDIT BY CLEMENTS ; CHANGE "P2" TO "PATCH2", TO AVOID CONFLICT WITH NEW AC NAME ;<134-TENEX>POSTLD.MAC;91 8-APR-75 22:32:58 EDIT BY CLEMENTS ; SYMBOL DELETER KNOWS JSYS WAS SPLIT UP ;<134-TENEX>POSTLD.MAC;90 13-MAR-75 21:55:13 EDIT BY PLUMMER ; BADSPOT READER APPENDS TO DRMBBT AS ASSEMBLED AND IGNORES DUPLICATES ;<134-TENEX>POSTLD.MAC;89 12-MAR-75 22:40:30 EDIT BY PLUMMER ;<134-TENEX>POSTLD.MAC;88 12-MAR-75 22:17:14 EDIT BY PLUMMER ;<134-TENEX>POSTLD.MAC;87 12-MAR-75 22:07:51 EDIT BY PLUMMER ; ADDED DRUM BAD SPOTS FROM FILE FEATURE ;<133-TENEX>POSTLD.MAC;86 3-OCT-74 13:19:55 EDIT BY CLEMENTS ; MAKE SYMBOL CRUNCHER HALF-KILL LOCALS 0-777 AND ALL 20-777 . ;<133-TENEX>POSTLD.MAC;85 25-SEP-74 14:05:59 EDIT BY CLEMENTS ; REMOVED UPDATING VERSIO.MAC FROM POSTLOD. NOW DONE BY NEWVER.SAV. ; MUST BE DONE MANUALLY. THIS IS AN ADDED JOB FOR THE SYSTEM GURU, BUT ; IT SAVES VERSION NUMBERS FOR LOADS THAT YOU DECIDE TO SCRAP. ;POSTLD.MAC;83 9-MAY-74 19:35:47 EDIT BY CLEMENTS SEARCH PROLOG TITLE POSTLD BLOCK 40 ;LEAVE SOME SPACE AFTER LAST PROG RESEND: ;DEFINES END OF CODE, SYMTAB MOVED TO HERE SWAPCD SWPF: ; DEFINE SWAPPABLE PATCH SPACE DDT=DDTX ; DEFINE THIS HERE SO IT'S AVAILABLE LOC 4000 ;GET THIS CODE OUT OF THE WAY ;POST-LOADING ONE-SHOT INIT P=17 EXTERN .JBHRL,.JBREL,.JBSA,.JBFF,.JBSYM INTERN RESEND,DDT,SWPF EXTERN MONCOR,SYSGO1,WMST,SWPSTP,SWPCOR,DDTX,SWCEND,SVN,SVNUM EXTERN SMDSKA,PATCH2,DRMBBT,DRMBST SYSG0: MOVE P,[IOWD 40,PDL] MOVSI 1,100001 ; OLD FILE & STRING SHORT FORM HRROI 2,[ASCIZ /MAP.MAP/] GTJFN ; GET JFN FOR LOADER MAP JRST NOMAP ; NONE PUSH P,1 ; SAVE IT MOVE 1,SVNUM HRLI 1,400001 ; FOR OUTPUT & STRING SHORT FORM HRROI 2,[SYSNAM(,<\>)] GTJFN ; GET JFN FOR LOADER-MAP.SYSTEM JRST [ POP P,1 RLJFN JFCL JRST NOMAP] MOVE 2,1 POP P,1 RNAMF ; RENAME MAP JFCL MOVE 1,2 RLJFN NOMAP: JRST [ HRROI 1,[ASCIZ / LOADER MAP NOT RENAMED. /] PSOUT JRST .+1] PUSHJ P,SMDSKA ;SETUP DSK RELOAD ADDRESSES HLRZ 2,.JBHRL ADDI 2,SWPMA0 ;BASE OF SWP MON PLUS ITS SIZE SUBI 2,1 LSH 2,-^D9 MOVEM 2,SWCEND MOVEI 1,101 MOVEI 3,^D8 NOUT JFCL HRROI 1,[ASCIZ / IS LAST PAGE OF SWAPPABLE CODE. /] PSOUT ; PRINT SPACE REMAINING BETWEEN BOUNDARIES HRROI 1,[ASCIZ / SPACE REMAINING BETWEEN BOUNDARIES: RES VARS & ASSUMED END = /] PSOUT MOVEI 2,ERSLOC SUBI 2,RESVLC## CALL OCTOT HRROI 1,[ASCIZ / -- INCREASE RESLOC SIZE IN PARAMS./] SKIPGE 2 PSOUT HRROI 1,[ASCIZ / SWP VARS & SWP PAGE VARS = /] PSOUT MOVEI 2,NRPLBG SUBI 2,NRESLC## CALL OCTOT HRROI 1,[ASCIZ / -- REDUCE TABLE SIZES OR INCREASE NRPLBG/] SKIPGE 2 PSOUT HRROI 1,[ASCIZ / SWP VARS & SWPMON = /] PSOUT MOVEI 2,SWPMA0 SUBI 2,NRPLOC## CALL OCTOT HRROI 1,[ASCIZ / -- REDUCE SWP PAG VAR SIZES OR INCREASE SWPMP0/] SKIPGE 2 PSOUT HRROI 1,[ASCIZ / SWPMON & MDDT = /] PSOUT MOVEI 2,MDDT HLRZ 3,.JBHRL ADDI 3,SWPMA0 SUB 2,3 CALL OCTOT HRROI 1,[ASCIZ / -- REDUCE SWPMP0 OR INCREASE MDDT/] SKIPGE 2 PSOUT HRROI 1,[ASCIZ / JSB STRGE & JFN STRG = /] PSOUT MOVEI 2,JFNPC0 SUBI 2,JSBLOC## CALL OCTOT HRROI 1,[ASCIZ / -- INCREASE JFNPC0 BY MULTIPLE OF 20(8)/] SKIPGE 2 PSOUT HRROI 1,[ASCIZ / AC BLOCKS & PSB STRGE = /] PSOUT MOVEI 2,UACB SUBI 2,TSBLOC## CALL OCTOT HRROI 1,[ASCIZ / -- DELETE ONE AC BLOCK AND MOVE THEM UP/] SKIPGE 2 PSOUT HRROI 1,[ASCIZ / /] PSOUT JRST RDRMBS ;GO READ DRUM BAD SPOTS OCTOT: MOVEI 1,101 MOVEI 3,8 NOUT JFCL RET ;READ DRUM BAD SPOTS FROM TEXT FILE AND SET INTO DRMBBT RDRMBS: MOVSI 1,100001 HRROI 2,[SYSNAM(DRUM-BAD-SPOTS.>,<\>)] GTJFN JRST [ HRROI 1,[ASCIZ /NO DRUM-BAD-SPOTS FILE /] PSOUT JRST RDRMBX] PUSH P,1 MOVE 2,[7B5!1B19] OPENF JRST [ HRROI 1,[ASCIZ /CAN'T OPEN DRUM-BAD-SPOTS FILE /] PSOUT POP P,1 RLJFN JFCL JRST RDRMBX] RDRMB1: MOVEI 5,DRMBST ;NEXT WORD AFTER DRMBBT SUBI 5,DRMBBT ;GET LENGTH OF DRMBBT ASH 5,1 ;TWO BYTES PER WORD SUBI 5,1 ;ALLOW ONE BYTE FOR END MARK MOVE 6,[POINT 18,DRMBBT];INIT SCAN POINTER RDRMB0: MOVE 4,6 ;HERE IS WHERE TO STORE AFTER SEARCH ILDB 3,6 ;GET BYTE FROM TABLE AS ASSEMBLED TRNN 3,400000 ;IS IT THE END MARK? SOJG 5,RDRMB0 ;NO, KEEP LOOKING JUMPE 5,RDRMB6 ;TABLE ALREADY FULL, SAY SO. RDRMB2: HRRZ 1,0(P) ;GET FILE JFN MOVEI 3,8 ;SET INPUT RADIX NIN JRST RDRMB3 ;BAD NUMBER MEANS DONE MOVE 6,[POINT 18,DRMBBT];SET SCAN POINTER RDRMB8: CAMN 6,4 ;SEARCHED WITHOUT FINDING A DUPLICATE? JRST RDRMB9 ;YES, ADD NUMBER FROM FILE TO TABLE ILDB 3,6 ;NO, GET A BYTE FROM CURRENT TABLE CAME 3,2 ;SAME AS ONE FROM FILE? JRST RDRMB8 ;NO, SEARCH REST OF TABLE AOSA 5 ;NOT GOING TO ADD. DEFEAT SOJG BELOW RDRMB9: IDPB 2,4 ;ADD TO TABLE BKJFN ;SET TO GET TERMINATOR JFCL RDRMB4: BIN ;GET THE TERMINATOR(S) JUMPE 2,RDRMB3 ;NULL MEANS EOF CAIN 2,15 ;RETURN? JRST RDRMB4 ;YES, TRY FOR LINE FEED CAIE 2,12 ;ALLOW ANY MIXTURE OF BLANK LINES, CAIN 2," " ;SPACES JRST RDRMB4 CAIE 2," " ;TABS CAIN 2,"," ;AND COMMAS TO SEPARATE THE NUMBERS JRST RDRMB4 ;NB: NULL AT EOF CAUSES NEXT NIN TO FAIL BKJFN ;ANYTHING ELSE MUST BE 1ST CHR OF NUMBER JFCL SOJG 5,RDRMB2 ;COUNT DOWN SLOTS IN DRMBBT RDRMB6: HRROI 1,[ASCIZ /TOO MANY DRUM BADSPOTS -- INCREASE SIZE IN DRM /] PSOUT RDRMB3: SETO 2, IDPB 2,4 POP P,1 CLOSF JFCL RDRMBX: ;FALL INTO FIXSYM FIXSYM: HLRE 1,.JBUSY## ; GET LENGTH OF UNDEF SYM TAB MOVE 2,.JBSYM## ; USE LOCATION OF SYMBOL TAB SKIPE 1 ; IF NO UNDEF SYMTAB MOVE 2,.JBUSY ; ELSE USE UNDEF SYMTAB MOVEI 3,RESEND HRRM 3,.JBUSY ; NEW UNDEF SYMTAB SUB 3,1 ; ASSUMES UNDEF SYMTAB IMMEDIATELY BELOW HRRM 3,.JBSYM ; DEF SYMTAB, THIS YIELDS NEW DEF SYMTAB HLRE 1,.JBSYM ; LENGTH OF DEF SYMTAB SUB 3,1 ; NEW END OF WORLD HRLI 2,RESEND MOVSS 2 BLT 2,-1(3) ; MOVE SYMTABS HRRZM 3,.JBFF## HRLM 3,.JBSA## MOVE 1,.JBSYM MOVEM 1,36 MOVE 1,.JBUSY MOVEM 1,32 MOVEM 1,SAVE32## ; PUT IN SEMI-CONSTANT HLRZ 1,.JBHRL ; GET HIGH SEG BREAK ADDI 1,SWPMA0 ; BASE PLUS LENGTH IORI 1,1777 ; MOVE TO 1K BOUND MOVEM 1,.JBREL ; SET .JBREL SETZM .JBHRL MOVEI 2,DDTX ;START OF EDDT ADDI 2,777 LSH 2,-^D9 MOVEM 2,MONCOR ;END OF MONITOR CORE MOVE 2,[JRST DDTX] ;SETUP EDDT DISPATCH MOVEM 2,100 HRRM 2,.JBSA MOVEI 1,400000 SEVEC ;SORT THE BUG TABLE BY BUG ADDRESS MOVSI 7,-NBUGP BUGSR4: MOVSI 5,-NBUGP(7) ;SCAN FROM HERE TO END HRRI 5,0(7) MOVSI 3,1 ;INITIAL MIN BUGSR1: HLRZ 1,STRBGP(5) ;BUG ADDRESS JUMPE 1,BUGSR2 ;IGNORE ZEROS CAML 1,3 ;MIN SO FAR? JRST BUGSR2 ;NO MOVEI 3,0(1) ;YES, REMEMBER VALUE MOVEI 4,0(5) ;AND LOCATION BUGSR2: AOBJN 5,BUGSR1 TLNE 3,-1 ;FOUND A MIN? JRST BUGSR3 ;NO, NOTHING BUT ZEROS LEFT MOVE 1,STRBGP(4) ;INTERCHANGE MIN WITH TOP OF TABLE EXCH 1,STRBGP(7) MOVEM 1,STRBGP(4) AOBJN 7,BUGSR4 ;DUMP BUG TABLE AND STRINGS TO FILES BUGSR3: MOVEI 7,0(7) MOVNM 7,NBUGTP ;SAVE NEG OF NUMBER OF PTRS HRRZ 1,SVNUM ; USE SYSTEM VERSION NUMBER HRLI 1,(1B0+1B17) ; FOR OUTPUT AND STRING SHORT FORM HRROI 2,[SYSNAM(,<\>)] GTJFN 0 MOVE 2,[7B5+1B20] OPENF 0 SETZ 3, HRROI 2,SVN ;SYSTEM VERSION TEXT SOUT HRROI 2,[ASCIZ / BUGHLT, BUGCHK, AND BUGNTE LOCATIONS AND DESCRIPTIONS /] SOUT MOVEI 5,STRBGP ;MOVE AND COMPACT STRINGS TO SUB 5,NBUGTP ;AREA IMMEDIATELY AFTER POINTERS MOVEI 4,1(5) ;CLEAR THE AREA FIRST HRLI 4,0(5) SETZM 0(5) BLT 4,STRBGP+SBUGTF-1 HRLZ 7,NBUGTP BUGD1: MOVE 6,STRBGP(7) ;TABLE ENTRY? HLRZ 2,6 ;ADDRESS MOVE 3,[1B2+6B17+10B35] ;OCTAL PRINT, USE EXACTLY 6 COLUMNS NOUT 0 MOVEI 2," " BOUT HRROI 2,0(6) SETZ 3, SOUT ;PRINT THE STRING HRROI 2,[ASCIZ / /] SOUT HRRM 5,STRBGP(7) ;SET NEW ADDRESS OF STRING BUGD3: MOVE 2,0(6) ;MOVE STRING TO COMPACTING AREA MOVEM 2,0(5) ADDI 5,1 TRNE 2,177B34 ;UNTIL (LAST) CHAR OF 0 ENCOUNTERED AOJA 6,BUGD3 BUGD2: AOBJN 7,BUGD1 CLOSF 0 MOVE 1,SVNUM HRLI 1,(1B0+1B17) HRROI 2,[SYSNAM(,<\>)] GTJFN 0 MOVE 2,[44B5+1B20] OPENF 0 MOVE 2,NBUGTP ;COUNT GOES OUT FIRST BOUT HRLZ 7,NBUGTP MOVE 2,STRBGP(7) SUBI 2,STRBGP ;MAKE STRING POINTERS RELATIVE BOUT AOBJN 7,.-3 MOVM 7,NBUGTP HRLI 7,-SBUGTF(7) MOVE 2,STRBGP(7) BOUT ;OUTPUT STRINGS AOBJN 7,.-2 CLOSF 0 ;REMOVE REDUNDANT SYMBOLS FROM TABLE SKIPL 7,.JBSYM ; GET SYMTAB POINTER, SKIP THE AOBJP SS2: AOBJP 7,SS8 ; JUMP IF DONE MOVE 1,0(7) ;GET SYMBOL TLCE 1,14B23 ;PROGRAM NAME, OR TLCN 1,14B23 ;BLOCK NAME? AOBJN 7,SS2 ;YES, KEEP SYMBOL (ALWAYS JUMP) TLNE 1,20B23 ;DELETE NO-INPUT SYMBOLS JRST SS6 MOVE 2,1(7) ;GET VALUE CAIL 2,1000 ;VALUE 0-777? JRST SS23 ; NO MOVSI 3,40B23 ; YES. MAKE NO-OUTPUT IF EITHER TRNN 2,760 ; VALUE IS 20-777, OR TLNE 1,10B23 ; IT'S A LOCAL SYMBOL IORM 3,0(7) ; ONE OF THOSE. HALF-KILL THE SYM. SS23: MOVE 3,1 TLZ 1,14B23 ;FLUSH LOCAL-GLOBAL BITS MOVE 6,7 ; START INNER SCAN FROM HERE AOBJP 6,SS1 ; PLUS 1 SS1: AOBJP 6,SS61 ; GET NEXT, JUMP IF INNER LOOP DONE CAMN 2,1(6) ;VALUE THE SAME? SKIPN 4,0(6) ;SYMBOL NOT PREVIOUSLY DELETED? AOBJN 6,SS1 ;NO (ALWAYS JUMP) TLCE 4,14B23 ;PROGRAM NAME, OR TLCN 4,14B23 ;BLOCK NAME? AOBJN 6,SS1 ;YES (ALWAYS JUMP) XOR 4,3 TDNE 4,[XWD 037777,-1] ;SYMBOL EQUAL (EXCLUDING BITS)? AOBJN 6,SS1 ;NO (ALWAYS JUMP) SETZM 0(6) ;YES, DELETE SYMBOL TLON 1,04B23 ;AND MAKE ORIGINAL GLOBAL MOVEM 1,0(7) AOBJN 6,SS1 ; ALWAYS JUMP SS6: SETZM 0(7) ;DELETE NO-INPUT SYMBOL SS61: AOBJN 7,SS2 ; ALWAYS JUMP SS8: MOVE 7,.JBSYM ;SCAN TABLE AND COMPACT MOVEI 6,0(7) ;WILL BE NEW TABLE POINTER SS5: SKIPN 1,0(7) ;DELETED? JRST SS4 ;YES MOVEM 1,0(6) MOVE 1,1(7) MOVEM 1,1(6) ADD 6,[XWD -2,2] ;MOVE TO NEW POSITION SS4: AOBJN 7,.+1 AOBJN 7,SS5 HLLM 6,.JBSYM ;STORE NEW COUNT HRLM 6,.JBSA ;STORE NEW END HRRM 6,.JBFF MOVEI 2,0(6) ;PRINT NEW END HRROI 1,[ASCIZ /TOP OF SYM TAB IS /] PSOUT MOVEI 1,101 MOVEI 3,^D8 NOUT JFCL MOVE 1,.JBSYM MOVEM 1,SWPSTP ;PUT POINTER WHERE WMST WILL SEE IT JSP 4,WMST ;WRITE SYMBOL TABLE ONTO FILE SETZM SWPSTP HRROI 1,[ASCIZ / REMOVE SYMBOLS FOR: /] PSOUT MOVSI 16,-NPNMS ;NUMBER OF PRG NAMES TO SCAN CKS1: HRRZ 10,.JBSYM HLRE 11,.JBSYM SUB 10,11 ;CURRENT END OF TABLE SUBI 10,MAXSYM ;EXCESS WORDS OF TABLE MOVEI 1,0(16) ;TABLE INDEX CAIG 10,0 ;CRUNCH IF OVERLAP EXISTS, OR SKIPL PNAMES+1(16) ;IF ALL SYMBOLS BEING REMOVED JSP 17,CSS ;REMOVE LOCAL SYMBOLS IN THIS PRG AOBJN 16,.+1 ;2 WORDS PER ENTRY AOBJN 16,CKS1 ;CHECK NEXT PROGRAM JUMPLE 10,CSS7 ;QUIT IF NOW NO EXCESS HRROI 1,[ASCIZ / SYMBOL TABLE STILL OVERFLOWS. /] PSOUT CSS7: SYSG01: MOVE 3,.JBSYM ;MOVE POINTER TO EXEC DDT LOCATION MOVEM 3,36 MOVEM 3,SAVE36## ;PUT IN SEMI-CONSTANT HRRZ 3,.JBFF ;END OF SYMTAB ADDI 3,777 ;ADJUST TO NEXT PAGE BOUNDARY LSH 3,-^D9 ;NUMBER OF FIRST PAGE AFTER SYMTAB MOVEM 3,SWPCOR MOVEM 3,RCADDT## ;PUT IN SEMI-CONSTANT HRROI 1,[ASCIZ / SWPCOR= /] PSOUT MOVEI 1,101 MOVE 2,3 MOVEI 3,^D8 NOUT 0 MOVEI 1,37 PBOUT SETO 1, MOVE 4,SWPCOR SUBI 4,SWPMP0 HRLZS 4 HRR 4,SWPCOR MOVSI 2,400000 SETZ 3, HRR 2,4 PMAP AOBJN 4,.-2 MOVEI 4,PATCH2 LSH 4,-^D9 ;FIRST PAGE OF RES MON MOVNI 4,-2(4) HRLZS 4 HRRI 4,2 MOVE 16,[CLRPRG,,5] BLT 16,16 JRST 5 CLRPRG: PHASE 5 HRR 2,4 PMAP AOBJN 4,.-2 HALTF JRST .-1 DEPHASE ;PROGRAM AND BLOCK NAMES TO FLUSH LOCAL SYMS DEFINE PN (NAME,NSTRNG,WHEN<-1>),< IFLE WHEN,< RADIX50 0,NAME XWD WHEN,[ASCIZ /NAME/] >> ; THE MACRO "%TENX%" CONTAINS THE LIST OF TENEX MODULES IN THE ORDER ; IN WHICH THEIR SYMBOLS ARE TO BE DELETED TO REDUCE THE SIZE OF THE ; SYMBOL TABLE. EACH ENTRY HAS THREE ARGUMENTS, AS FOLLOWS: ; FIRST ARGUMENT: MODULE (OR BLOCK) NAME ; SECOND ARGUMENT: NOT USED HERE (USED TO DEFINE BUGSTRING SYMBOLS) ; THIRD ARGUMENT: +1 MEANS DON'T DELETE ANY SYMBOLS FROM THIS MODULE ; (OR BLOCK) ; 0 MEANS DELETE ALL SYMBOLS (BOTH LOCAL AND GLOBAL) ; FROM THIS MODULE, WHETHER OR NOT IT IS ; NECESSARY TO REDUCE THE SIZE OF THE SYMBOL ; TABLE ; -1 MEANS DELETE ONLY LOCAL SYMBOLS FROM THIS MODULE, ; AND ONLY DO IT IF IT IS NECESSARY TO REDUCE ; THE SIZE OF THE SYMBOL TABLE PNAMES: %TENX%(PN) NPNMS==.-PNAMES ;REMOVE LOCAL SYMBOLS FROM BLOCK OR PROGRAM ;INDEX TO PNAMES TABLE GIVEN IN 1 ;CALLED WITH JSP 17,CSS CSS: MOVEI 4,0(1) MOVE 5,PNAMES(1) ;GET RADIX50 OF NAME HRRO 1,PNAMES+1(1) ;GET ASCIZ OF NAME PSOUT ;SO WE KNOW WHAT WAS CRUNCHED SKIPL PNAMES+1(4) ;ALWAYS REMOVE? JRST CSSGO ;YES MOVEI 1,100 SIBE ;INPUT WAITING? JRST CSSGO ;YES, DON'T ASK, PRESUME YES CSSQ1: HRROI 1,[ASCIZ /? /] PSOUT PBIN CAIN 1,"Y" ;YES, REMOVE JRST CSSGO CAIN 1,"N" JRST CSSRET ;NO, DON'T REMOVE JRST CSSQ1 ;TRY AGAIN CSSGO: MOVE 7,.JBSYM ;SCAN WHOLE TABLE MOVE 6,7 ;REMEMBER START OF CURRENT PRG CSS1: MOVE 1,0(7) TLCE 1,(14B5) ;PRG OR TLCN 1,(14B5) ;BLOCK NAME? JRST CSS2 ;YES CSS3: AOBJN 7,.+1 AOBJN 7,CSS1 ;KEEP SCANNING TABLE HRROI 1,[ASCIZ / - NOT FOUND /] PSOUT JRST 0(17) CSS2: TLZ 1,(74B5) ;CLEAR TYPE BITS CAMN 1,5 ;DESIRED NAME? JRST CSS4 ;YES MOVE 6,7 ;NO, REMEMBER LOC OF END OF BLOCK ADD 6,[XWD 2,2] JRST CSS3 ;FOUND DESIRED BLOCK, NOW REMOVE LOCAL SYMBOLS CSS4: MOVE 5,6 CSS6: CAMN 5,7 ;SCANNED WHOLE BLOCK? JRST CSS8 ;YES MOVE 1,0(5) ;GET NEXT SYMBOL SKIPGE PNAMES+1(16) ;FLUSHING ALL SYMS THIS PGM, OR TLNE 1,(10B5) ;LOCAL? SOJA 10,[SOJG 10,CSS5 ;ELIMINATED EXCESS SYMBOLS YET? SKIPL PNAMES+1(16) ;YES, REMOVING ALL OF PGR BLOCK? JRST CSS5 ;YES, KEEP REMOVING ADD 5,[XWD 2,2] ;YES JRST CSS8] ;FINISH UP MOVEM 1,0(6) ;NOT LOCAL, MOVE IT MOVE 1,1(5) MOVEM 1,1(6) ;MOVE VALUE ADD 6,[XWD 2,2] ;UPDATE 'TO' POINTER CSS5: ADD 5,[XWD 2,2] ;UPDATE 'FROM' POINTER JRST CSS6 CSS8: MOVSI 1,0(5) ;MOVE REST OF TABLE WITH BLT HRRI 1,0(6) HLRE 2,5 ;COMPUTE NEW END OF TABLE MOVEI 3,0(6) ;AS AMOUNT LEFT TO MOVE PLUS SUB 3,2 ;CURRENT 'TO' LOCATION BLT 1,-1(3) ;MOVE REST OF TABLE MOVEM 3,.JBFF ;UPDATE LOWER CORE HRLM 3,.JBSA HRRZ 2,.JBSYM ;CALC NEW LENGTH AS SUB 2,3 ;BEG-END HRLM 2,.JBSYM CSSRET: MOVEI 1,37 PBOUT JRST 0(17) LIT NBUGTP: 0 ;NUMBER OF BUG TABLE POINTERS PDL: BLOCK 40 END SYSG0