recrea.11 4.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139
  1. <COND (<GASSIGNED? $TLOSE>
  2. <SETG PG <* 1024 <DIRMAP ,TVASS ,PEEK-PAGE>>>)
  3. (T
  4. <SETG HIPOFFSET 23>
  5. <SETG PEEK-START 7>
  6. <SETG BABBLE-START 679>
  7. <SETG ANEXT 1>
  8. <SETG SCORE 3>
  9. <SETG QNEXT 0>
  10. <SETG TELEC-START 343>
  11. <MANIFEST HIPOFFSET PEEK-START BABBLE-START ANEXT SCORE QNEXT
  12. TELEC-START>)>
  13. <DEFINE CONVERT-LOSS ("AUX" HIDX
  14. (NUTS
  15. <REVERSE
  16. <DATA-AREAD ,TVASS ,LUSERS <ARESET ,LOSSSPACE>>>))
  17. #DECL ((HIDX) FIX (NUTS) <LIST [REST FIX FIX STRING TIME]>)
  18. <DATA-PRINTW ,TVASS
  19. ,HIPOFFSET
  20. <SET HIDX </ <LENGTH .NUTS> 4>>>
  21. <REPEAT ((NNUTS .NUTS) (HIDX 0) PLAYER (TUV ,TUV)
  22. (LOC <+ ,PG ,PEEK-START>) (LOC1 <+ ,PG ,BABBLE-START>) LUBLK)
  23. #DECL ((NNUTS) <LIST [REST FIX FIX STRING TIME]>
  24. (HIDX LOC LOC1 LUBLK) FIX
  25. (TUV) <UVECTOR [REST <PRIMTYPE WORD>]> (PLAYER) TIME)
  26. <SET PLAYER <4 .NNUTS>>
  27. <SET LUBLK <2 .NNUTS>>
  28. <PUT .NNUTS 1 .HIDX>
  29. <GET-LOC .LOC .TUV>
  30. <PUT .TUV 2 <CHTYPE .PLAYER FIX>>
  31. <PUT .TUV 3 <CHTYPE <DATA-READW ,TVASS <+ .LUBLK ,LASTIN>> FIX>>
  32. <PUT-LOC .LOC .TUV>
  33. <GET-LOC .LOC1 .TUV>
  34. <PUT .TUV 2 <GETLASTQ .LUBLK>>
  35. <GET-TOTAL .LUBLK <REST .TUV 2>>
  36. <PUT-LOC .LOC1 .TUV>
  37. <COND (<EMPTY? <SET NNUTS <REST .NNUTS 4>>>
  38. <DATA-APRINT ,TVASS
  39. ,LUSERS
  40. ,LOSSSPACE
  41. <SETG LOSSTABLE <REVERSE .NUTS>>>
  42. <RETURN>)
  43. (T
  44. <SET LOC <+ .LOC 4>>
  45. <SET HIDX <+ .HIDX 1>>
  46. <SET LOC1 <+ .LOC1 4>>)>>
  47. <NEW-TODO>>
  48. <DEFINE GET-TOTAL (LUBLK UV
  49. "AUX" (SCORED
  50. <DATA-AREAD ,TVASS
  51. <+ .LUBLK ,SCORE>
  52. <ARESET ,ASPACE>>)
  53. (TOTAL 0.000)
  54. (POSS 0.000))
  55. #DECL ((LUBLK) FIX (UV) <UVECTOR [REST <PRIMTYPE WORD>]>
  56. (SCORED) <UVECTOR [REST <UVECTOR [2 FLOAT]>]>
  57. (TOTAL POSS) FLOAT)
  58. <MAPF <>
  59. <FUNCTION (X)
  60. <SET TOTAL <+ <1 .X> .TOTAL>>
  61. <SET POSS <+ <2 .X> .POSS>>>
  62. .SCORED>
  63. <PUT .UV 1 <CHTYPE .TOTAL FIX>>
  64. <PUT .UV 2 <CHTYPE .POSS FIX>>>
  65. <DEFINE FLUSH-PLAYER (PLAYER "AUX" (LOSSTABLE <DATA-AREAD ,TVASS 3 <ARESET ,QSPACE>>)
  66. (RPLAYER <CHTYPE <STRTOX .PLAYER> TIME>)
  67. (LUBLK <3 <MEMQ .RPLAYER .LOSSTABLE>>)
  68. (TINDEX <4 <MEMQ .RPLAYER .LOSSTABLE>>)
  69. (FOO <ALIST <ARESET ,ASPACE> 1>) (TVA ,TVASS) (ASP ,ASPACE))
  70. #DECL ((PLAYER) STRING (LOSSTABLE) LIST (LUBLK TINDEX) FIX (RPLAYER) TIME)
  71. <DATA-APRINT .TVA <+ .LUBLK ,QNEXT> .ASP .FOO>
  72. <DATA-DELETE .TVA <+ .LUBLK ,QNEXT>>
  73. <DATA-APRINT .TVA <+ .LUBLK ,ANEXT> .ASP .FOO>
  74. <DATA-DELETE .TVA <+ .LUBLK ,ANEXT>>
  75. <DATA-APRINT .TVA <+ .LUBLK ,ALAST> .ASP .FOO>
  76. <DATA-DELETE .TVA <+ .LUBLK ,ALAST>>
  77. <DATA-DELETE ,TVASS <+ .LUBLK ,SCORE>>
  78. <DATA-APRINT .TVA <+ .LUBLK ,LASTIN> .ASP .FOO>
  79. <DATA-DELETE .TVA <+ .LUBLK ,LASTIN>>
  80. <DATA-APRINT .TVA <+ .LUBLK ,LASTGRD> .ASP .FOO>
  81. <DATA-DELETE .TVA <+ .LUBLK ,LASTGRD>>
  82. <DATA-DELETE ,TVASS <+ .LUBLK ,QASKED>>
  83. <DATA-APRINT .TVA <+ .LUBLK ,MNEXT> .ASP .FOO>
  84. <DATA-DELETE .TVA <+ .LUBLK ,MNEXT>>
  85. <DATA-APRINT .TVA <+ .LUBLK ,MLAST> .ASP .FOO>
  86. <DATA-DELETE .TVA <+ .LUBLK ,MLAST>>
  87. <DATA-APRINT .TVA <+ .LUBLK ,ANNEXT> .ASP .FOO>
  88. <DATA-DELETE .TVA <+ .LUBLK ,ANNEXT>>
  89. <DATA-APRINT .TVA <+ .LUBLK ,TAILOR> .ASP .FOO>
  90. <DATA-DELETE .TVA <+ .LUBLK ,TAILOR>>
  91. <DATA-APRINT .TVA <+ .LUBLK 11> .ASP .FOO>
  92. <DATA-DELETE .TVA <+ .LUBLK 11>>
  93. <COND (<==? <1 .LOSSTABLE> .RPLAYER>
  94. <SET LOSSTABLE <REST .LOSSTABLE 4>>)
  95. (<REPEAT ((L .LOSSTABLE) (M <REST .L>))
  96. <COND (<==? <1 .M> .RPLAYER>
  97. <PUTREST .L <REST .M 4>>
  98. <RETURN>)>
  99. <SET L .M>
  100. <SET M <REST .M>>>)>
  101. <SET LOSSTABLE <ACOPY <ARESET ,LOSSSPACE> .LOSSTABLE>>
  102. <DATA-APRINT ,TVASS 3 ,LOSSSPACE .LOSSTABLE>
  103. <DATA-PRINTW ,TVASS ,HIPOFFSET <- <CHTYPE <DATA-READW ,TVASS ,HIPOFFSET> FIX> 1>>
  104. <GET-LOC <+ ,PG ,PEEK-START <* 4 .TINDEX>> ,TUV>
  105. <PUT ,TUV 2 0>
  106. <PUT ,TUV 3 0>
  107. <PUT ,TUV 4 0>
  108. <PUT-LOC <+ ,PG ,PEEK-START <* 4 .TINDEX>> ,TUV>
  109. <SETG LOSSTABLE <DATA-AREAD ,TVASS 3 <ARESET ,LOSSSPACE>>>>
  110. <DEFINE CHAIN-LENGTH (WD "AUX" (CNT 0))
  111. #DECL ((WD) <PRIMTYPE WORD> (CNT) FIX)
  112. <REPEAT ((WD <CHTYPE .WD FIX>))
  113. <COND (<0? <SET WD <CHTYPE <DATA-READW ,TVASS .WD> FIX>>>
  114. <RETURN .CNT>)
  115. (<SET CNT <+ .CNT 1>>)>>>
  116. <DEFINE NEW-TODO ("AUX" (LOSSTABLE ,LOSSTABLE))
  117. #DECL ((LOSSTABLE) <LIST [REST TIME STRING FIX FIX]>)
  118. <REPEAT ((UV <UVECTOR 0 0 0>) (CT 0) (BEG <+ ,PG ,TELEC-START 1>))
  119. #DECL ((UV) <UVECTOR <PRIMTYPE WORD>> (CT BEG) FIX)
  120. <PUT .UV 3 <CHAIN-LENGTH <+ <3 .LOSSTABLE> ,ANEXT>>>
  121. <PUT-LOC <+ .BEG <* 4 <4 .LOSSTABLE>>> .UV>
  122. <COND (<EMPTY? <SET LOSSTABLE <REST .LOSSTABLE 4>>>
  123. <RETURN>)>>>
  124. <DEFINE REVERSE (FOO "AUX" (TTE <REST .FOO>) (RETL ()))
  125. #DECL ((FOO TTE RETL VALUE) LIST)
  126. <COND (<EMPTY? .TTE> .FOO)
  127. (T
  128. <REPEAT ()
  129. <SET RETL <PUTREST .FOO .RETL>>
  130. <COND (<EMPTY? <SET TTE <REST <SET FOO .TTE>>>>
  131. <RETURN <PUTREST .FOO .RETL>>)>>)>>