;***************************************************************************; ; ; ; Dump another job's memory partition ; ; By David F. Pallmann ; ; ; ;***************************************************************************; OBJNAM MEMDMP.LIT MAYCREF SEARCH SYS SEARCH SYSSYM SEARCH TRM SEARCH CRT CREF VMAJOR=0 VEDIT=100. ;24-Apr-83 DFP creation PHDR -1,0,PH$REE!PH$REU ;equates IMP=A5 ;impure area index ;memory management definitions MM$SIZ=0 ;memory module size word MM$FLG=4 ;memory module flags MM$NAM=6 ;memory module filename MM.HDR=14 ;module header size ;macros DEFINE BITW SRC,DST MOVW SRC,D7 ANDW DST,D7 ENDM ;impure area .OFINI .OFDEF JNAME,4 ;job name to dump .OFDEF MCOUNT,4 ;module dump count .OFDEF BUFFER,12. ;RAD50 unpacking buffer .OFDEF MEMFRE,4 ;free memory count .OFSIZ IMPSIZ ;initialization INITIA: GETIMP IMPSIZ,IMP,EXIT MOV IMP,A0 MOVW #[IMP],-(A0) MOVW #[DMP],-(A0) MOVW #[MEM],-(A0) CLR MCOUNT(IMP) ;scan cmd line for job name SCNLIN: BYP LIN BEQ 100$ FILNAM JNAME(IMP),XXX MOV JOBTBL,A0 BR 110$ 100$: MOV JOBCUR,A1 BR SCNJOB 110$: MOV (A0)+,D0 BEQ 110$ BMI BADJOB MOV D0,A1 CMM JOBNAM(A1),JNAME(IMP) BNE 110$ ;scan job's partition SCNJOB: MOV JOBBAS(A1),A0 MOV JOBSIZ(A1),MEMFRE(IMP) BR MODULE ;user entered non-existant job name BADJOB: TYPESP ?no such job JMP EXIT ;list module or quit MODULE: CTRLC EXIT TST MM$SIZ(A0) ;end of partition? JEQ DONE ; yes MDLNAM: LEA A1,MM$NAM(A0) ;set up for RAD50 unpacking LEA A2,BUFFER(IMP) UNPACK ;unpack filename UNPACK MOVB #40,(A2)+ ;embed space in text UNPACK ;unpack extension MOVB #40,(A2)+ ;embed space in text CLRB @A2 BITW #FIL,MM$FLG(A0) ;FGD bit set? BEQ 100$ HIGH BR 110$ 100$: LOW 110$: TTYL BUFFER(IMP) MDLSIZ: MOV MM$SIZ(A0),D1 ;output module size SUB #MM.HDR,D1 ;correct size DCVT 7,OT$TRM!OT$ZER!OT$TSP MDLBAS: MOV A0,D1 ;output module base ADD #MM.HDR,D1 OCVT 10,OT$TRM!OT$TSP BITW #FIL,MM$FLG(A0) ;FIL bit set? BEQ 100$ ; no TYPESP FIL ; yes 100$: BITW #FGD,MM$FLG(A0) ;FGD bit set? BEQ 110$ ; no TYPESP FGD ; yes 110$: BITW #LOK,MM$FLG(A0) ;LOK bit set? BEQ 120$ ; no TYPESP LOK ; yes 120$: CMPW MM$NAM+4(A0),#[LIT] ;.LIT file? BNE 160$ ; no MOVW MM.HDR+10(A0),D0 ; yes - load program attributes word BITW #PH$REE,D0 ;reentrant? BEQ 130$ ; no TYPESP REE ; yes 130$: BITW #PH$REU,D0 ;reusable? BEQ 140$ ; no TYPESP REU ; yes 140$: BITW #PH$L12,D0 ;requires [1,2] log? BEQ 150$ ; no TYPESP L12 ; yes 150$: BITW #PH$OPR,D0 ;requires OPR: log? BEQ 160$ ; no TYPESP OPR ; yes 160$: CRLF MOV MM$SIZ(A0),D0 SUB D0,MEMFRE(IMP) INC MCOUNT(IMP) ;update module count ADD MM$SIZ(A0),A0 ;advance to next module JMP MODULE DONE: HIGH TYPE MOV MEMFRE(IMP),D1 SUB #2,D1 DCVT 7,OT$TRM!OT$ZER!OT$TSP MOV A0,D1 ADD #2,D1 OCVT 10,OT$TRM CRLF EXIT: HIGH CRLF EXIT END .