2.11bsd rogue can't build

Glen Slick glen.slick at gmail.com
Thu Mar 5 17:33:50 CST 2020

> 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

# 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"

More information about the cctech mailing list