I'm pretty sure I built this successfully in the past. I'll have to
try it again later with the generic installation before any patches
are applied, in case that makes a difference for some reason.
I took another look to refresh my memory. I assume now that I never
successfully built rogue on 2.11BSD in the past, and what I actually
did was just run the already built hack binary.
If you look at the hack binary it is built with 5 text overlays in
addition to the base text:
# pwd
/usr/games
# ls -l hack
-rws--x--x 1 daemon 195175 Nov 26 1999 hack
# size hack
text data bss dec hex
37952 32424 12450 82826 1438a total text: 148608
overlays: 24512,24192,22528,18688,20736
If you look at the Makefile for hack it defines the BASE object files
and the OV1 - OV5 overlay objects files, then uses the ld -Z switch to
link the executable with the BASE object files plus the 5 overlay
object files OV1 - OV5.
If the total text size for rogue is slightly beyond 64KB after pulling
in object files from the libraries then the Makefile for rogue needs
to be modified to move some of the object files into overlays somewhat
similar to the way it is done for hack, for example.
# Hack overlay structure (PDP-11/{44,45,70})
#
# The BASE (should) occupy 5 segments, but extreme care has to be taken when
# any code is changed as those five segments have been filled to within bytes
# of that limit. Each of the overlays occupies 3 segments with similar
# restrictions on changing code (most have been filled to within a few hundred
# bytes). The wise and cautious programmer would be well advised to use
# size(1) heavily ...
#
BASE = strings.o hack.monst.o hack.Decl.o\
hack.invent.o hack.dog.o hack.mon.o\
hack.engrave.o rnd.o hack.track.o
OV1 = hack.shk.o hack.topl.o hack.o hack.end.o hack.trap.o
OV2 = hack.do_wear.o hack.main.o hack.eat.o hack.timeout.o hack.vault.o\
hack.wizard.o hack.topl.o hack.tty.o\
hack.do.o hack.search.o alloc.o\
hack.cmd.o hack.termcap.o hack.unix.o hack.ioctl.o
OV3 = hack.do_name.o hack.fight.o hack.mkobj.o hack.o_init.o hack.mhitu.o\
hack.makemon.o hack.worn.o hack.rumors.o hack.objnam.o hack.pri.o
OV4 = hack.zap.o hack.read.o hack.apply.o hack.potion.o\
hack.options.o hack.pager.o hack.wield.o
OV5 = hack.save.o hack.lev.o hack.mklev.o hack.mkshop.o hack.mkmaze.o\
hack.shknam.o hack.u_init.o\
hack.rip.o hack.bones.o hack.worm.o hack.steal.o hack.version.o
# Crypt *MUST be listed BEFORE $(HOBJ)
$(GAME): crypt $(HOBJ)
@echo "Loading ..."
@ld -i -X -x -o $(GAME) /lib/crt0.o $(BASE)\
-Z $(OV1) -Z $(OV2) -Z $(OV3) -Z $(OV4) -Z $(OV5) -Y\
$(TERMLIB) -lc
@echo "Load complete"