Raw File
gc.7

<USE-TOTAL "ASYLUM">

<USE "MADMAN" "STR">

<FLOAD "AR2:TAA;SSNAME NBIN">

<GDECL (QSPACE ASPACE SSPACE MOBYSPACE LOSSSPACE)
       SPACE
       (TVASS)
       ASYLUM>

<DEFINE MUNG ("OPTIONAL" (FN "MADMAN;TV NEW") (FLEN 300) "AUX" (D ,TVASS) N
		    (QSP ,QSPACE) (ASP ,ASPACE) (SSP ,SSPACE) (LSP ,LOSSSPACE)
		    (MOBYSPACE
		     <COND (<GASSIGNED? MOBYSPACE> ,MOBYSPACE)
			   (T <SETG MOBYSPACE <AFIND 4>>)>) DHIGH MARKV TPG)
	#DECL ((D N) ASYLUM (QSP ASP SSP LSP MOBYSPACE) SPACE (DHIGH) FIX
	       (MARKV) <UVECTOR [REST FIX]> (FN) STRING (FLEN TPG) FIX)
	<ALLOC-MAP .D>
	<CONS-IT .FN .FLEN>
	<SETG N <SET N <OPEN-DATA-FILE .FN <COND (<GASSIGNED? N> ,N)> 7 5>>>
	<SETG PEEK-PAGE </ <DATA-ALLOC .N <CHTYPE #WORD *410000000000* FIX>> 1024>>
	<AND <SET TPG <DIRMAP .N ,PEEK-PAGE>>
	     <DIR-INIT .TPG>
	     <PUT <MEMQ .TPG <5 .N>> 3 1>>
	<SET DHIGH
	     <CHTYPE <1 <GET-LOC <+ <* 1024 <ALLOCPAGE .D>> ,HIGHID> ![0!]>>
		     FIX>>
	<SET MARKV <AIUVECTOR .MOBYSPACE .DHIGH 0>>
	<DATA-RESERVE .N 27>
	<MAPR <>
	      <FUNCTION (X Y) <PUT .X 1 <1 .Y>>>
	      .MARKV
	      '![1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
		 25 26 27!]>
	<SSNAME <STRTOX "MUNGLO">>
	<SETG LOSSTABLE
	      <MUNG-LOSS .N
			 .D
			 <ARESET .LSP>
			 <ARESET .SSP>
			 <ARESET .QSP>
			 .MARKV>>
	<SSNAME <STRTOX "RESERV">>
	<DATA-PRINTW .N ,HIQNUM <DATA-READW .D ,HIQNUM>>
	<DATA-PRINTW .N ,TOTSCR <DATA-READW .D ,TOTSCR>>
	<REPEAT ((CT ,1STCAT))
		#DECL ((CT) FIX)
		<DATA-PRINTW .N .CT <DATA-READW .D .CT>>
		<COND (<G? <SET CT <+ .CT 1>> 22> <RETURN>)>>
	<DATA-PRINTW .N ,HIPOFFSET <DATA-READW .D ,HIPOFFSET>>
	<SSNAME <STRTOX "ANNOUN">>
	<MUNG-ANNOUNCE .N .D .SSP .ASP .MARKV>
	<SSNAME <STRTOX "MUNGQ">>
	<MUNG-Q .N .D .QSP .ASP .MARKV>
	<MUNG-LUSERS .N .D .ASP .SSP .MARKV>
	ZORK>

<DEFINE CONS-IT (FN FLEN "AUX" (CH <OPEN "PRINTB" .FN>) (FOO <IUVECTOR 1024>)
		 (FOO1 <IUVECTOR .FLEN '.FOO>))
  #DECL ((FN) STRING (CH) CHANNEL (FOO) <UVECTOR [REST <PRIMTYPE WORD>]>
	 (FOO1) <UVECTOR [REST UVECTOR]> (FLEN) FIX)
  <MAPF <>
    <FUNCTION (X) <PRINTB .X .CH>>
    .FOO1>
  <CLOSE .CH>>

"MOVE LUBLKS AND SCORES"

<DEFINE MUNG-LOSS (N D LSP SSP QSP MARKV "AUX" LOSSTABLE L1 L2 NEWID NEW) 
	#DECL ((N D) ASYLUM (LSP SSP QSP) SPACE (L1 L2 LOSSTABLE) LIST
	       (NEWID) FIX)
	<SET LOSSTABLE <SET L1 <REVERSE <DATA-AREAD .D 3 <ARESET .QSP>>>>>
	<REPEAT ()
		<SET NEW <- <SET NEWID <DATA-RESERVE .N 12>> 1>>
		<MAPR <>
		      <FUNCTION (X Y) 
			      #DECL ((X Y) <UVECTOR [REST FIX]>)
			      <PUT .X 1 <SET NEW <+ .NEW 1>>>>
		      <REST .MARKV <- <2 .L1> 1>>
		      '![0 0 0 0 0 0 0 0 0 0 0 0!]>
		<DATA-APRINT .N
			     <+ .NEWID ,SCORE>
			     .SSP
			     <DATA-AREAD .D <+ <2 .L1> ,SCORE> <ARESET .SSP>>>
		<PUT .L1 2 .NEWID>
		<COND (<EMPTY? <SET L2 <REST .L1 4>>>
		       <SET LOSSTABLE <AGC <ARESET .LSP> <REVERSE .LOSSTABLE>>>
		       <DATA-APRINT .N 3 .LSP .LOSSTABLE>
		       <RETURN .LOSSTABLE>)
		      (<SET L1 .L2>)>>>

<DEFINE MUNG-ANNOUNCE (N D SSP ASP MARKV) 
	#DECL ((N D) ASYLUM (SSP ASP) SPACE (MARKV) <UVECTOR [REST FIX]>)
	<REPEAT ((NEW ,LOMAIL) (NSTART ,LOMAIL) OLD (START ,LOMAIL) CANN)
		#DECL ((NSTART OLD NEW START) FIX (CANN) <OR FALSE VECTOR>)
		<COND (<0? <SET OLD <CHTYPE <DATA-READW .D .START> FIX>>>
		       <DATA-PRINTW .N ,HIMAIL .NEW>
		       <RETURN>)
		      (<SET CANN <DATA-AREAD .D .OLD <ARESET .SSP>>>
		       <SET NEW <1 <DATA-APRINT .N -1 .SSP .CANN>>>
		       <PUT .MARKV .OLD .NEW>
		       <DATA-PRINTW .N .NSTART .NEW>
		       <SET NSTART .NEW>
		       <SET START .OLD>)
		      (T <PUT .MARKV .OLD ,LOMAIL> <SET START .OLD>)>>>

<DEFINE MUNG-Q (N D QSP ASP MARKV "AUX" SLIST) 
	#DECL ((N D) ASYLUM (QSP ASP) SPACE (MARKV) <UVECTOR [REST FIX]>
	       (SLIST) <LIST [REST <PRIMTYPE WORD>]>)
	<REPEAT ((NSTART ,LOWQUES) CQUES (START ,LOWQUES) NEW NEW-SCORE
		 OLD-SCORE)
		#DECL ((NSTART START NEW NEW-SCORE) FIX (CQUES) VECTOR)
		<COND (<0? <SET START <CHTYPE <DATA-READW .D .START> FIX>>>
		       <DATA-PRINTW .N ,HIQLOC .NEW>
		       <RETURN>)
		      (T
		       <SET CQUES <DATA-AREAD .D .START <ARESET .QSP>>>
		       <COND (<N==? <QTYPE .CQUES> ,$TSIMPLE>
			      <SET OLD-SCORE <QSCORE .CQUES>>
			      <DATA-PRINTW .N
					   <SET NEW-SCORE <DATA-RESERVE .N 1>>
					   <DATA-READW .D .OLD-SCORE>>
			      <PUT .MARKV .OLD-SCORE .NEW-SCORE>
			      <PUT .CQUES ,QSCORE .NEW-SCORE>)>
		       <SET NEW <1 <DATA-APRINT .N -1 .QSP .CQUES>>>
		       <PUT .MARKV .START .NEW>
		       <DATA-PRINTW .N .NSTART .NEW>
		       <SET NSTART .NEW>)>>
	<SETG SIMPLE-SPACE <AFIND 1>>
	<SET SLIST <DATA-AREAD .D ,SIMPLE-LIST ,SIMPLE-SPACE>>
	<MAPR <>
	  <FUNCTION (X)  #DECL ((X) <LIST [REST <OR TIME FIX>]>)
	    <COND (<TYPE? <1 .X> TIME>
		   <PUT .X 3 <NTH .MARKV <3 .X>>>)>>
	  .SLIST>
	<DATA-APRINT .N ,SIMPLE-LIST ,SIMPLE-SPACE .SLIST>>

<DEFINE MUNG-LUSERS (N D ASP SSP MARKV "AUX" OLOSSTABLE) 
   #DECL ((N D) ASYLUM (ASP SSP) SPACE (MARKV) <UVECTOR [REST FIX]>
	  (LOSSTABLE) <LIST [REST TIME STRING FIX FIX]>)
   <SET LOSSTABLE <DATA-AREAD .D 3 <ARESET ,LOSSSPACE>>>
   <REPEAT (NINDEX CPLAYER CINDEX QASKED)
     #DECL ((CPLAYER) TIME (NINDEX CINDEX) FIX)
     <SET CPLAYER <1 .LOSSTABLE>>
     <SET CINDEX <3 .LOSSTABLE>>
     <SET NINDEX <NTH .MARKV .CINDEX>>
     <SSNAME .CPLAYER>
     <DATA-PRINTW .N
		  <+ .NINDEX ,LASTIN>
		  <DATA-READW .D <+ .CINDEX ,LASTIN>>>
     <DATA-PRINTW .N
		  <+ .NINDEX ,LASTGRD>
		  <DATA-READW .D <+ .CINDEX ,LASTGRD>>>
     <DATA-APRINT .N
		  <+ ,NINDEX ,TAILOR>
		  .SSP
		  <DATA-AREAD .D <+ .CINDEX ,TAILOR> <ARESET .SSP T>>>
     <DATA-PRINTW .N
		  <+ .NINDEX ,QNEXT>
		  <NTH .MARKV
		       <CHTYPE <DATA-READW .D <+ .CINDEX ,QNEXT>> FIX>>>
     <DATA-PRINTW .N
		  <+ .NINDEX ,ANNEXT>
		  <NTH .MARKV
		       <CHTYPE <DATA-READW .D <+ .CINDEX ,ANNEXT>> FIX>>>
     <MUNG-MAIL-CHAIN .N
		 .D
		 .ASP
		 .SSP
		 .CINDEX
		 .NINDEX
		 .MARKV>
     <MUNG-GRADE-CHAIN .N
		 .D
		 .ASP
		 .SSP
		 .CINDEX
		 .NINDEX
		 .MARKV>
     <SET QASKED
	  <DATA-AREAD .D <+ .CINDEX ,QASKED> <ARESET .SSP>>>
     <MAPF <>
	   <FUNCTION (X) 
		   #DECL ((X) <LIST [REST FIX]>)
		   <COND (<EMPTY? .X>)
			 (T
			  <REPEAT ()
				  <PUT .X 1 <NTH .MARKV <1 .X>>>
				  <COND (<EMPTY? <SET X <REST .X 2>>>
					 <RETURN>)>>)>>
	   .QASKED>
     <DATA-APRINT .N <+ .NINDEX ,QASKED> .SSP .QASKED>
     <COND (<EMPTY? <SET LOSSTABLE <REST .LOSSTABLE 4>>>
	    <RETURN>)>>>

<DEFINE MUNG-MAIL-CHAIN (N D ASP SSP CINDEX NINDEX  MARKV) 
	#DECL ((N D) ASYLUM (ASP SSP) SPACE (CINDEX NINDEX) FIX
	       (MARKV) <UVECTOR [REST FIX]>)
	<REPEAT ((OLD <+ .CINDEX ,MNEXT>) (NEW <+ .NINDEX ,MNEXT>)
		 (NSTART .NEW) CFROB)
		#DECL ((NSTART OLD NEW) FIX (CFROB) VECTOR)
		<COND (<0? <SET OLD <CHTYPE <DATA-READW .D .OLD> FIX>>>
		       <DATA-PRINTW .N .NEW 0>
		       <DATA-PRINTW .N <+ ,MLAST .NINDEX> .NEW>
		       <RETURN>)
		      (T
		       <SET CFROB <DATA-AREAD .D .OLD <ARESET .ASP>>>
		       <SET NEW <1 <DATA-APRINT .N -1 .ASP .CFROB>>>
		       <DATA-PRINTW .N .NSTART .NEW>
		       <SET NSTART .NEW>
		       <PUT .MARKV .OLD .NEW>)>>>

<DEFINE MUNG-GRADE-CHAIN (N D ASP SSP CINDEX NINDEX MARKV) 
	#DECL ((N D) ASYLUM (ASP SSP) SPACE (CINDEX NINDEX) FIX
	       (MARKV) <UVECTOR [REST FIX]>)
	<REPEAT ((OLD <+ .CINDEX ,ANEXT>) (NEW <+ .NINDEX ,ANEXT>)
		 (NSTART .NEW) CFROB)
		#DECL ((NSTART OLD NEW) FIX (CFROB) VECTOR)
		<COND (<0? <SET OLD <CHTYPE <DATA-READW .D .OLD> FIX>>>
		       <DATA-PRINTW .N .NEW 0>
		       <DATA-PRINTW .N <+ ,ALAST .NINDEX> .NEW>
		       <RETURN>)
		      (T
		       <SET CFROB <DATA-AREAD .D .OLD <ARESET .ASP>>>
		       <PUT .CFROB ,AQUES <NTH .MARKV <AQUES .CFROB>>>
		       <SET NEW <1 <DATA-APRINT .N -1 .ASP .CFROB>>>
		       <DATA-PRINTW .N .NSTART .NEW>
		       <SET NSTART .NEW>
		       <PUT .MARKV .OLD .NEW>)>>>

<DEFINE REVERSE (FOO "AUX" (TTE <REST .FOO>) (RETL ())) 
	#DECL ((FOO TTE RETL VALUE) LIST)
	<COND (<EMPTY? .TTE> .FOO)
	      (T
	       <REPEAT ()
		       <SET RETL <PUTREST .FOO .RETL>>
		       <COND (<EMPTY? <SET TTE <REST <SET FOO .TTE>>>>
			      <RETURN <PUTREST .FOO .RETL>>)>>)>>

back to top