From 3122c71eb25b6804025f48848a3ed5f3ab6f6492 Mon Sep 17 00:00:00 2001 From: Adam Sampson Date: Wed, 25 Apr 2018 19:41:02 +0100 Subject: [PATCH] Fix high core purification. The PURIMP routine splits the page map into three parts: writable data at the bottom, a large gap in the middle (which the GC will manage later), and read-only code/data at the top. There's one CORBLK call for each of these. The final call, which gave pages BOT/2000 to 400 as the range, failed with %EROPG when it hit the first unmapped page after the end of the pure data. Experimentation shows that, at least with current ITS, this is how CORBLK normally behaves. Fix by calculating the final page from RHITOP rather than assuming 400. --- src/mudsys/initm.374 | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/src/mudsys/initm.374 b/src/mudsys/initm.374 index 6e501009..6eb9c86b 100644 --- a/src/mudsys/initm.374 +++ b/src/mudsys/initm.374 @@ -462,10 +462,16 @@ PURIMP: MOVE A,FRETOP HRL B,A DOTCAL CORBLK,[[1000,,0],[1000,,-1],B] FATAL INITM -- CAN'T FLUSH MIDDLE CORE -;Disabled because this fails with ITS 1648. -; MOVE A,[-<400-PHIBOT>,,PHIBOT] -; DOTCAL CORBLK,[[1000,,210000],[1000,,-1],A] -; FATAL INITM -- CAN'T PURIFY HIGH CORE + MOVE B,RHITOP + SUBI B,1 + ASH B,-10. + MOVEI A,PHIBOT + SUB A,B + SUBI A,1 + HRLS A + HRRI A,PHIBOT + DOTCAL CORBLK,[[1000,,210000],[1000,,-1],A] + FATAL INITM -- CAN'T PURIFY HIGH CORE ] IFE ITS,[