Raw File
lister.13
<DEFINE SFIND (GZORK "OPTIONAL" (D ,TVASS)) #DECL ((GZORK) FIX (D) ASYLUM)
  <PRINC "
Id     Address	   Length    Data">
  <REPEAT ((CT 0)(UV1 ,DUV1)(FROB <+ <* <MFDPAGE ,TVASS> 1024> ,DIRPTRS>))
    #DECL ((CT FROB) FIX (UV1) <UVECTOR <PRIMTYPE WORD>>)
    <COND (<0? <CHTYPE <1 <GET-LOC .FROB .UV1>> FIX>>
	   <RETURN>)
	  (T
	   <FINDIT .CT .D .GZORK>
	   <SET CT <+ .CT 1>>
	   <SET FROB <+ .FROB 1>>)>>>

<DEFINE FINDIT (DIRNUM D "OPTIONAL" (TARGET 0)
	       "AUX" LOC HI (DUV ,DATUV) (UV1 ,DUV1) DPAGE TEMP)
   #DECL ((DIRNUM TARGET TEMP) FIX (D) ASYLUM (LOC HI) FIX (DPAGE) <OR FALSE FIX>
	  (UV1) <UVECTOR [1 WORD]> (DUV) <UVECTOR [4 WORD]>)
   <COND
    (<SET DPAGE <DIR-FIND .D <* .DIRNUM ,DIRSIZE>>>
     <SET HI <CHTYPE <1 <GET-LOC <+ ,HIGHID <* <MFDPAGE .D> 1024>> .UV1>> FIX>>
     <SET LOC <+ <* .DPAGE 1024> ,OBJSTART>>
     <REPEAT ((NAME <* .DIRNUM ,DIRSIZE>) (FOO ,DIRSIZE) BAR)
	     #DECL ((NAME FOO BAR) FIX)
	     <COND
	      (<OR <1? .FOO> <G? .NAME .HI>> <PRINC .DIRNUM> <RETURN>)
	      (T
	       <SET BAR <CHTYPE <NTH <GET-LOC .LOC ,NAMUV> <+ ,NAMDATA 1>> FIX>>
	       <COND (<==? .TARGET <CHTYPE <NTH ,NAMUV <+ ,NAMMISC 1>> FIX>>
		      <CRLF> 
		      <PRIN1 .NAME>
		      <INDENT-TO 7> 
		      <AND <==? <NTH ,NAMUV 1> #WORD *0*> <PRINC "*">>
		      <PRIN1 .BAR>
		      <INDENT-TO 19>
		      <PRIN1 <CHTYPE <NTH ,NAMUV <+ ,NAMCHNCDR 1>> FIX>>
		      <INDENT-TO 29>
		      <PRIN1 <COND (<OR <0? .TARGET>
					<N==?
					 <SET TEMP
					      <CHTYPE <NTH ,NAMUV <+ ,NAMMISC 1>> FIX>>
					 .TARGET>> .TEMP)
				   ("**WINNER**")>>)>
	       <SET NAME <+ .NAME 1>>
	       <SET FOO <- .FOO 1>>
	       <SET LOC <+ .LOC ,NAMBLKLEN>>)>>)>>
<DEFINE LISTF (DIRNUM D "AUX" LOC HI (DUV ,DATUV) (UV1 ,DUV1) DPAGE)
   #DECL ((DIRNUM) FIX (D) ASYLUM (LOC HI) FIX (DPAGE) <OR FALSE FIX>
	  (UV1) <UVECTOR [1 WORD]> (DUV) <UVECTOR [4 WORD]>)
   <COND
    (<SET DPAGE <DIR-FIND .D <* .DIRNUM ,DIRSIZE>>>
     <SET HI <CHTYPE <1 <GET-LOC <+ ,HIGHID <* <MFDPAGE .D> 1024>> .UV1>> FIX>>
     <SET LOC <+ <* .DPAGE 1024> ,OBJSTART>>
     <PRINC "
Id     Address     Length    Data">
     <REPEAT ((NAME <* .DIRNUM ,DIRSIZE>) (FOO ,DIRSIZE) BAR)
	     #DECL ((NAME FOO BAR) FIX)
	     <COND
	      (<OR <1? .FOO> <G? .NAME .HI>> <RETURN <CRLF>>)
	      (T
	       <COND (<AND <0? <SET BAR
			           <CHTYPE <NTH <GET-LOC .LOC ,NAMUV>
					        <+ ,NAMDATA 1>>
				           FIX>>>
			   <==? <NTH ,NAMUV <+ ,NAMMISC 1>> #WORD *0*>>
		      <COND (<0? <SET BAR 
				      <CHTYPE <NTH ,NAMUV <+ ,NAMCHNCDR 1>> FIX>>>)
			    (<CRLF>
			     <PRINC !"[>
			     <PRIN1 .NAME>
			     <PRINC !"]>)>)
		     (<CRLF> 
		      <PRIN1 .NAME>
		      <INDENT-TO 7> 
		      <AND <==? <NTH ,NAMUV 1> #WORD *0*> <PRINC "*">>
		      <PRIN1 .BAR>
		      <INDENT-TO 19>
		      <PRIN1 <CHTYPE <NTH ,NAMUV <+ ,NAMCHNCDR 1>> FIX>>
		      <INDENT-TO 29>
		      <PRIN1 <CHTYPE <NTH ,NAMUV <+ ,NAMMISC 1>> FIX>>)>
	       <SET NAME <+ .NAME 1>>
	       <SET FOO <- .FOO 1>>
	       <SET LOC <+ .LOC ,NAMBLKLEN>>)>>)>>

<DEFINE LISTA (D
	       "AUX" (MFD <* <MFDPAGE .D> 1024>) (ALLOC <* <ALLOCPAGE .D> 1024>)
		     HIGH LO CNT ALOC)
	#DECL ((D) ASYLUM (MFD ALLOC CNT ALOC) FIX)
	<ALLOC-MAP .D>
	<PRINC "
Database Allocator Statistics">
	<SET ALPTR <1 <GET-LOC .ALLOC ,DUV1>>>
	<SET CNT
	     <CHTYPE <ORB <GETBITS .ALPTR <BITS 18 18>> #WORD *777777000000*>
		     FIX>>
	<CRLF>
	<SET ALOC
	     <+ <CHTYPE <ANDB <GETBITS .ALPTR <BITS 18 0>> #WORD *000000001777*>
			FIX>
		.ALLOC>>
	<CRLF>
	<PRINC "From     To     Length">
	<REPEAT ((UV ,AUV2))
		<GET-LOC .ALOC .UV>
		<CRLF>
		<PRIN1 <SET LO <CHTYPE <2 .UV> FIX>>>
		<PRINC "	 ">
		<PRIN1 <SET HIGH <+ .LO <CHTYPE <1 .UV> FIX>>>>
		<PRINC "	">
		<PRIN1 <- .HIGH .LO>>
		<SET ALOC <+ .ALOC 2>>
		<SET CNT <+ .CNT 2>>
		<AND <0? .CNT> <RETURN <CRLF>>>>>

<DEFINE LISTM (D
	       "AUX" (MFD <* <MFDPAGE .D> 1024>) (ALLOC <* <ALLOCPAGE .D> 1024>)
		     HIGH LO CNT ALOC (DUV ,DUV1) A)
	#DECL ((D) ASYLUM (MFD ALLOC CNT ALOC) FIX (DUV) <UVECTOR [1 WORD]>
	       (A) <PRIMTYPE WORD>)
	<SET A <1 <GET-LOC <+ .MFD ,DPGLOCK> .DUV>>>
	<PRINC "
MFD Lock -- ">
	<COND (<==? .A #WORD *000000000000*> <PRINC "LOCKED">)
	      (<PRINC "UNLOCKED">)>
	<PRINC "
UP time -- ">
	<PDSKDATE <1 <GET-LOC <+ .MFD ,DINITRQ> .DUV>>>
	<PRINC "
ALTER time -- ">
	<PDSKDATE <1 <GET-LOC <+ .MFD ,DINITDN> .DUV>>>
	<SET CNT
	     <CHTYPE <ORB <GETBITS <1 <GET-LOC .ALLOC .DUV>>
				   <BITS 18 18>>
			  #WORD *777777000000*>
		     FIX>>
	<PRINC "
ALLOCATOR Use -- ">
	<PRIN1 <SET ALOC </ <- .CNT> 2>>>
	<PRINC " entries [">
	<PRIN1 </ <* .ALOC 100> 511>>
	<PRINC "%]">
	<PRINC "
ALLOCATOR Lock -- ">
	<COND (<==? <1 <GET-LOC <+ .MFD ,ALLOCLOCK> .DUV>>
		    #WORD *000000000000*>
	       <PRINC "LOCKED">)
	      (<PRINC "UNLOCKED">)>
	<PRINC "
High Address -- ">
	<PRIN1 <SET A <CHTYPE <1 <GET-LOC <+ .MFD ,HIGHADR> .DUV>> FIX>>>
	<PRINC " [Page ">
	<PRIN1 </ .A 1024>>
	<PRINC "]">
	<PRINC "
Maximum Address -- ">
	<PRIN1 <SET A <CHTYPE <1 <GET-LOC <+ .MFD ,MAXADR> .DUV>> FIX>>>
	<PRINC " [Page ">
	<PRIN1 </ .A 1024>>
	<PRINC "]">
	<PRINC "
High ID -- ">
	<PRIN1 <CHTYPE <1 <GET-LOC <+ .ALLOC ,HIGHID> .DUV>> FIX>>
	<REPEAT ((N ,DIRPTRS) (DIR 0))
		#DECL ((N DIR) FIX)
		<COND (<0? <SET A <CHTYPE <1 <GET-LOC <+ .MFD .N> .DUV>> FIX>>>
		       <RETURN>)
		      (<CRLF>
		       <PRINC "Directory ">
		       <PRIN1 .DIR>
		       <PRINC " at ">
		       <PRIN1 .A>
		       <PRINC " [Page ">
		       <PRIN1 </ .A 1024>>
		       <PRINC "]">
		       <SET N <+ .N 1>>
		       <SET DIR <+ .DIR 1>>)>>
	<REPEAT ((N ,PGLOCKS))
		<COND (<==? .N 1024> <RETURN>)
		      (T
		       <COND (<==? <1 <GET-LOC <+ .MFD .N> .DUV>>
				   #WORD *000000000000*>
			      <PRINC "
Pages Locked from ">
			      <PRIN1 <SET A </ <- .N ,PGLOCKS> .P/L>>>
			      <PRINC " to ">
			      <PRIN1 <+ .A ,P/L>>)>
		       <SET N <+ .N 1>>)>>
	,NULL>

<DEFINE LISTB (DC "OPTIONAL" (VERB <>) (SALV <>)
		   "AUX" (MFD <* <MFDPAGE .DC> 1024>) (UV1 ,DUV1) (DUV ,NAMUV)
			 (ALLOCK <+ .MFD ,ALLOCLOCK>) DF HI FROB (LOST 0) MOBY)
   #DECL ((DC) ASYLUM (MFD ALLOCK) FIX (UV1) <UVECTOR [1 WORD]> (HI) WORD
	  (LOST) FIX (DUV) <UVECTOR [4 WORD]> (DF) <OR FALSE FIX>
	  (MOBY) <UVECTOR [REST WORD]> (VERB SALV) <OR 'T FALSE>)
   <ALLOC-MAP .DC>
   <SET HI <1 <GET-LOC <+ ,HIGHID <* <ALLOCPAGE .DC> 1024>> .UV1>>>
   <SET ALPTR
	<+ <* 1024 <ALLOCPAGE .DC>>
	   <CHTYPE <ANDB <1 <GET-LOC <* <ALLOCPAGE .DC> 1024> .UV1>>
			 #WORD *000000001777*>
		   FIX>>>
   <SET MOBY
	<IUVECTOR <+ 4
		     <* <CHTYPE .HI FIX> 2>
		     <SET ALLEN <- <+ 1023 <* <ALLOCPAGE .DC> 1024>> .ALPTR>>>
		  #WORD *000000000000*>>
   <GET-LOC-X .ALPTR <REST .MOBY 2> .ALLEN>
   <PUT .MOBY 1 #WORD *777777003777*>
   <PUT .MOBY 2 #WORD *000000000001*>
   <SET MOBY <REST .MOBY <+ 2 .ALLEN>>>
   <REPEAT ((DIR <+ .MFD ,DIRPTRS>) (DIRNUM 0) (ID 0))
     #DECL ((DIR DIRNUM ID) FIX)
     <COND
      (<OR <0? <CHTYPE .DIR FIX>>
	   <NOT <SET DF <DIR-FIND .DC <* .DIRNUM ,DIRSIZE>>>>>
       <RETURN>)
      (<SET DPG <+ ,OBJSTART <* 1024 .DF>>>
       <REPEAT ((NUM ,DIRSIZE) (WHR 0) WD)
	       <COND (<OR <EMPTY? .MOBY> <0? .NUM>> <RETURN>)
		     (<GET-LOC .DPG .DUV>
		      <AND <==? <NTH .DUV <+ ,NAMDATA 1>> #WORD *000000000000*>
			   <SET DPG <+ .DPG ,NAMBLKLEN>>
			   <SET LOST <+ .LOST 2>>
			   <SET NUM <- .NUM 1>>
			   <SET WHR <+ .WHR 1>>
			   <AGAIN>>
		      <PUT .MOBY 2 <NTH .DUV <+ ,NAMDATA 1>>>
		      <SET WD <NTH .DUV <+ ,NAMCHNCDR 1>>>
		      <PUT .MOBY
			   1
			   <PUTBITS .WD
				    <BITS 18 18>
				    <CHTYPE <+ <* .DIRNUM ,DIRSIZE> .WHR>
					    WORD>>>
		      <SET MOBY <REST .MOBY 2>>
		      <SET DPG <+ .DPG ,NAMBLKLEN>>
		      <SET NUM <- .NUM 1>>
		      <SET WHR <+ .WHR 1>>)>>
       <SET DIRNUM <+ .DIRNUM 1>>)>>
   <SET MOBY <SORT <> <TOP .MOBY> 2 1>>
   <AND .VERB
        <PRINC "
From     To     Length    Use">>
   <REPEAT ((M .MOBY) LO HI (LSTLO -1) (LSTHI -1) (LSTM -1))
	   #DECL ((LO HI LSTLO LSTHI) FIX (M) UVECTOR)
	   <AND <EMPTY? .M> <RETURN>>
	   <AND <==? <1 .M> #WORD *000000000000*>
		<SET M <REST .M 2>>
		<AGAIN>>
	   <SET LO <CHTYPE <2 .M> FIX>>
	   <SET HI <+ <CHTYPE <2 .M> FIX>
		      <CHTYPE <GETBITS <1 .M> <BITS 18>> FIX>>>
	   <COND (<==? .LO .LSTLO>
		  <SALVERR "**SHARED BLOCK**" .LSTLO .LSTHI .LSTM .LO .HI <1 .M>>)
		 (<L? .LO .LSTHI>
		  <SALVERR "**BLOCKS OVERLAP**" .LSTLO .LSTHI .LSTM .LO .HI <1 .M>>)
		 (<AND .SALV
		       <G? .LO .LSTHI>
		       <0? <CHTYPE <GETBITS <1 .M> <BITS 18 18>> FIX>>
		       <0? <CHTYPE <GETBITS .LSTM <BITS 18 18>> FIX>>>
		  <CRLF>
		  <PRINC "DEALLOCATING BLOCK - Length = ">
		  <PRIN1 <- .LO .LSTHI>>
		  <PRINC "  Location = ">
		  <PRIN1 .LSTHI>  
		  <SALVDEALLOC .DC <- .LO .LSTHI> .LSTHI>)>
	   <AND .VERB
		<PBLOCK .LO .HI <1 .M>>>
	   <SET LSTLO .LO>
	   <SET LSTHI .HI>
	   <SET LSTM <1 .M>>
	   <SET M <REST .M 2>>>>

<DEFINE PRTYPE (WD "AUX" HOW)
    #DECL ((WD) WORD (HOW) FIX)
    <COND (<0? <SET HOW <CHTYPE <GETBITS .WD <BITS 18 18>> FIX>>>
 	   <PRINC "Unallocated">)
	  (<==? <CHTYPE .HOW WORD> #WORD *000000777777*>
	   <PRINC "Reserved">)
	  (<PRINC "Object #"> <PRIN1 .HOW>)>>

<DEFINE SALVERR (ERR LLO LHI LM LO HI M)
    #DECL ((ERR) STRING (LLO LHI LO HI) FIX (LM M) WORD)
    <PRINC "
ERROR -- ">
    <PRINC .ERR>
    <PBLOCK .LLO .LHI .LM>
    <PBLOCK .LO .HI .M>
    <CRLF>>

<DEFINE PBLOCK (LO HI M)
    #DECL ((LO HI) FIX (M) WORD)
    <CRLF>
    <PRIN1 .LO>
    <INDENT-TO 9>
    <PRIN1 .HI>
    <INDENT-TO 16>
    <PRIN1 <CHTYPE <GETBITS .M <BITS 18>> FIX>>
    <INDENT-TO 26>
    <PRTYPE .M>>
<DEFINE LISTU ("AUX" (ALL <* 1024 <ALLOCPAGE ,TVASS>>) HI V)
    #DECL ((ALL HI) FIX (V) UVECTOR)
    <SET HI <CHTYPE <1 <GET-LOC <+ .ALL ,HIGHID> ,DUV1>> FIX>>
    <SET V <AIUVECTOR ,MOBYSPACE <- .HI 1> 0>>
    <REPEAT ((VEC .V) (N 1) FX)
	#DECL ((VEC) UVECTOR (N FX) FIX)
	<AND <==? .N .HI> <RETURN>>
	<SET FX <CHTYPE <DATA-READW .N ,TVASS> FIX>>
	<COND (<AND <G? .FX 0> <L? .FX .HI>>
	       <PUT .VEC .FX 1>)>
	<SET N <+ .N 1>>>
    <MAPR <>
	<FUNCTION (X "AUX" FOO)
	    #DECL ((X) UVECTOR (FOO) FIX)
	    <COND (<1? <1 .X>>)
		  (<DATA-AREAD ,TVASS <SET FOO <- <LENGTH .V> <LENGTH .X> -1>>
			 <ARESET ,TVSPACE>>
		   <COND (<OR <MEMQ <- .FOO 3> ,LOSSTABLE>
			      <MEMQ <- .FOO 6> ,LOSSTABLE>>)
		         (<PRINC "
Non-referenced object #">
		 	  <PRIN1 .FOO>)>)>>
	.V>
    ,NULL>
	
	 

back to top