• Jump To … +
    00-opening.c.md 01-makefile.mk.md 02-records.c.md 03-game.c.md 04-world.c.md 05-turn.c.md 06-battle.c.md 07-save.c.md
  • §

    1. Building the executable

    Microsoft MAKE 4.07 builds the project with Microsoft C 5.1, MASM 5.10 and LINK 5.01.

    Lines 1–16.

    #############################################################
    #
    #	Civilization (1991) reconstruction: description file for
    #	Microsoft Program Maintenance Utility 4.07 (MSC 5.1).
    #
    #	Usage, with C:\BIN (MSC 5.1, MASM 5.10, LINK 5.01) on PATH
    #	and INCLUDE=C:\INCLUDE:
    #
    #		make MAKEFILE
    #
    #	Each object rule keeps its own optimizer and /NT segment
    #	options. The response file fixes the object and library
    #	order used by LINK.
    #
    #############################################################
  • §

    Compilation rules

    CFLAGS supplies options shared by the C compilation commands. Each rule then adds its own memory-model, optimisation and code-segment options. In the GAME.C command, /AM selects the medium memory model and /NTF01A8 names the code segment.

    The dependency lists show how widely a module uses declarations from other files. The commands are similar, but they are not interchangeable. CORE.C, for example, uses /Os where GAME.C uses /Oas. These choices form part of the build that reproduces the executable.

    Lines 17–71.

    CFLAGS=/Zl /c /W3 /Fc
    LIBS=C:\LIB\MLIBCR.LIB+C:\LIB\LIBH.LIB
    
    GLOBALS.OBJ: GLOBALS.C CIV.H GLOBALS.H
    	cl /AM /Gs /Oas $(CFLAGS) GLOBALS.C >>MSC.LOG
    
    GAME.OBJ: GAME.C AUDIENCE.H DIALOG.H F0DATA.H GLOBALS.H RESIDENT.H CORE.H FAME.H FILEIO.H \
    	GAME.H INTRO.H MESSAGE.H NEWGAME.H SAVE.H SETUP.H TURN.H WORLDGEN.H GRAPHICS.H
    	cl /AM /Gs /Oas $(CFLAGS) /NTF01A8 GAME.C >>MSC.LOG
    
    TURN.OBJ: TURN.C CORE.H GAME.H GLOBALS.H RESIDENT.H SPACESHP.H UNITS.H CAPTURE.H CITY.H \
    	CONTROL.H DIALOG.H DIPLOMAC.H DRAW.H ECONOMY.H FAME.H FILEIO.H INTRO.H MAP.H MESSAGE.H NEWS.H \
    	PALACE.H PEDIA.H QUIZ.H REPLAY.H REPORTS.H SAVE.H TURN.H UNITAI.H WORLDGEN.H GRAPHICS.H
    	cl /AM /Gs /Oas $(CFLAGS) /NTF0238 TURN.C >>MSC.LOG
    
    BATTLE.OBJ: BATTLE.C CIV.H GAME.H GLOBALS.H MAP.H RESIDENT.H UNITS.H BATTLE.H CITYMGT.H \
    	DIPLOMAC.H DIPLOMAT.H MESSAGE.H UNITAI.H CAPTURE.H TURN.H GRAPHICS.H
    	cl /AM /Gs /Oas $(CFLAGS) /NTF19F3 BATTLE.C >>MSC.LOG
    
    UNITAI.OBJ: UNITAI.C CIV.H DIPLOMAT.H GAME.H GLOBALS.H NEWGAME.H RESIDENT.H UNITAI.H CAPTURE.H \
    	CITYMGT.H CONTROL.H CORE.H DIPLOMAC.H ECONOMY.H MAP.H PATH.H TURN.H UNITS.H GRAPHICS.H
    	cl /AM /Gs /Oas $(CFLAGS) /NTF15FB UNITAI.C >>MSC.LOG
    
    MAP.OBJ: MAP.C CIV.H GAME.H GLOBALS.H RESIDENT.H MAP.H TURN.H BATTLE.H CAPTURE.H CORE.H \
    	DIALOG.H DRAW.H ECONOMY.H MESSAGE.H UNITS.H GRAPHICS.H
    	cl /AM /Gs /Oas $(CFLAGS) /NTF1AEA MAP.C >>MSC.LOG
    
    MENUS.OBJ: MENUS.C CONTROL.H CORE.H DIALOG.H ECONOMY.H GLOBALS.H MAP.H RESIDENT.H SPACESHP.H \
    	ADVISORS.H FAME.H GAME.H MENUS.H PEDIA.H REPLAY.H REPORTS.H TURN.H UNITS.H GRAPHICS.H
    	cl /AM /Gs /Oas $(CFLAGS) /NTF1C84 MENUS.C >>MSC.LOG
    
    CORE.OBJ: CORE.C GLOBALS.H RESIDENT.H GAME.H CORE.H DRAW.H TURN.H GRAPHICS.H
    	cl /AM /Gs /Os $(CFLAGS) /NTF1DC4 CORE.C >>MSC.LOG
    
    DIALOG.OBJ: DIALOG.C AUDIENCE.H GAME.H GLOBALS.H RESIDENT.H CONTROL.H CORE.H DIALOG.H DRAW.H \
    	GRAPHICS.H
    	cl /AM /Gs /Oas $(CFLAGS) /NTF1D05 DIALOG.C >>MSC.LOG
    
    DIPLOMAC.OBJ: DIPLOMAC.C AUDIENCE.H GAME.H GLOBALS.H RESIDENT.H UNITS.H CITYMGT.H DIPLOMAC.H \
    	ECONOMY.H MESSAGE.H NEWGAME.H TURN.H CORE.H GRAPHICS.H
    	cl /AM /Gs /Oas $(CFLAGS) /NTF1517 DIPLOMAC.C >>MSC.LOG
    
    CAPTURE.OBJ: CAPTURE.C AUDIENCE.H CITYVIEW.H CIVWAR.H CONTROL.H CORE.H ECONOMY.H GAME.H \
    	GLOBALS.H MAP.H NEWGAME.H NEWS.H RESIDENT.H SPACESHP.H TURN.H UNITAI.H UNITS.H CAPTURE.H \
    	GRAPHICS.H
    	cl /AM /Gs /Oas $(CFLAGS) /NTF1459 CAPTURE.C >>MSC.LOG
    
    DRAW.OBJ: DRAW.C GLOBALS.H RESIDENT.H DRAW.H GRAPHICS.H
    	cl /AM /Gs /Oas $(CFLAGS) /NTF0182 DRAW.C >>MSC.LOG
    
    ECONOMY.OBJ: ECONOMY.C CIV.H ADVISORS.H AUDIENCE.H CITYMGT.H DIALOG.H GAME.H GLOBALS.H MAP.H \
    	MESSAGE.H PEDIA.H RESIDENT.H SPACESHP.H UNITAI.H UNITS.H CAPTURE.H CORE.H ECONOMY.H FILEIO.H \
    	NEWGAME.H NEWS.H NOTES.H TURN.H GRAPHICS.H
    	cl /AM /Gs /Oas $(CFLAGS) /NTF0ADE ECONOMY.C >>MSC.LOG
  • §

    Compiler memory conditions

    The compiler rules for CONTROL.C and CITYMGT.C use loadfix -192 to limit available memory. Microsoft C 5.1 emits different code for these large modules when memory is scarce. This build condition reproduces the executable; the original machine configuration is unknown.

    The following rules also distinguish C modules from assembly modules. MASM assembles the resident routines and graphics code. Later C commands use segment names beginning with O for the overlays. An overlay occupies a shared loading area when needed, allowing code that is not needed together to use the same memory.

    Lines 72–211.

    #	Reconstructed low-memory MSC condition for CONTROL and CITYMGT;
    #	ai_turn emits original C4063 code.
    
    CONTROL.OBJ: CONTROL.C CIV.H RESIDENT.H GAME.H ADVISORS.H BATTLE.H CAPTURE.H CITY.H CITYMGT.H \
    	CONTROL.H CORE.H DIALOG.H DIPLOMAC.H DIPLOMAT.H ECONOMY.H FAME.H FILEIO.H MAP.H MAPVIEW.H \
    	MENUS.H MESSAGE.H NAMES.H NEWGAME.H NEWS.H NOTES.H PEDIA.H REPLAY.H REPORTS.H SAVE.H STATUS.H \
    	TURN.H UNITAI.H UNITS.H DRAW.H PATH.H GLOBALS.H GRAPHICS.H
    	loadfix -192 cl /AM /Gs /Oas $(CFLAGS) /NTF0403 CONTROL.C >>MSC.LOG
    
    CITYMGT.OBJ: CITYMGT.C CIV.H RESIDENT.H GAME.H BATTLE.H CAPTURE.H CITYMGT.H CITYVIEW.H \
    	CONTROL.H CORE.H DIALOG.H DIPLOMAT.H DRAW.H ECONOMY.H MAP.H NAMES.H NEWGAME.H NEWS.H NOTES.H \
    	SPACESHP.H TURN.H UNITS.H DIPLOMAC.H MESSAGE.H UNITAI.H GRAPHICS.H
    	loadfix -192 cl /AM /Gs /Oas $(CFLAGS) /NTF0D12 CITYMGT.C >>MSC.LOG
    
    RESIDENT.OBJ: RESIDENT.ASM TIMER.INC PALETTE.INC FADE.INC FCHECK.INC  F0STATE.INC DRIVER.INC \
    	LOADER.INC
    	masm /ML /T RESIDENT.ASM,RESIDENT.OBJ; >>MASM.LOG
    
    STRBIOS.OBJ: STRBIOS.ASM
    	masm /ML /T STRBIOS.ASM,STRBIOS.OBJ; >>MASM.LOG
    
    UNITS.OBJ: UNITS.C CIV.H AUDIENCE.H DIALOG.H DIPLOMAC.H DRIVER.H GAME.H GLOBALS.H RESIDENT.H \
    	UNITAI.H CITY.H CONTROL.H CORE.H ECONOMY.H MAP.H MESSAGE.H NOTES.H UNITS.H CAPTURE.H DRAW.H \
    	TURN.H GRAPHICS.H
    	cl /AM /Gs /Oas $(CFLAGS) /NTF0866 UNITS.C >>MSC.LOG
    
    GRAPHICS.OBJ: GRAPHICS.ASM F0STATE.INC LOADTAIL.INC RASTER.INC PICTURE.INC  MOUSE.INC
    	masm /ML /T GRAPHICS.ASM,GRAPHICS.OBJ; >>MASM.LOG
    
    PATH.OBJ: PATH.C CIV.H GAME.H GLOBALS.H RESIDENT.H MAP.H PATH.H CORE.H UNITS.H GRAPHICS.H
    	cl /AM /Gs /Oas $(CFLAGS) /NTF1E31 PATH.C >>MSC.LOG
    
    MESSAGE.OBJ: MESSAGE.C GLOBALS.H RESIDENT.H DRAW.H MESSAGE.H GRAPHICS.H
    	cl /AM /Gs /Oas $(CFLAGS) /NTF1F4D MESSAGE.C >>MSC.LOG
    
    FILEIO.OBJ: FILEIO.C DRIVER.H F0DATA.H GLOBALS.H PICTURE.H RESIDENT.H FILEIO.H GRAPHICS.H
    	cl /AM /Gs /Oal $(CFLAGS) /NTF1FA1 FILEIO.C >>MSC.LOG
    
    IMAGE.OBJ: IMAGE.C GLOBALS.H RESIDENT.H GRAPHICS.H
    	cl /AM /Gs /Oal $(CFLAGS) /NTF202A IMAGE.C >>MSC.LOG
    
    SETUP.OBJ: SETUP.C GAME.H GLOBALS.H RESIDENT.H SETUP.H GRAPHICS.H
    	cl /AM /Gs /Oas $(CFLAGS) /NTO01_TEXT SETUP.C >>MSC.LOG
    
    INTRO.OBJ: INTRO.C CIV.H CAPTURE.H CONTROL.H CORE.H DIALOG.H DRAW.H DRIVER.H ECONOMY.H FADE.H \
    	FCHECK.H FILEIO.H GAME.H GLOBALS.H LOADER.H LOADTAIL.H MAP.H MESSAGE.H PALACE.H PALETTE.H \
    	RESIDENT.H SETUP.H STRBIOS.H TIMER.H TURN.H INTRO.H GRAPHICS.H
    	cl /AM /Gs /Oas $(CFLAGS) /NTO02_TEXT INTRO.C >>MSC.LOG
    
    FAME.OBJ: FAME.C CIV.H CORE.H GAME.H GLOBALS.H INTRO.H RESIDENT.H CAPTURE.H CITYMGT.H DRAW.H \
    	FAME.H UNITS.H DIALOG.H GRAPHICS.H
    	cl /AM /Gs /Oas $(CFLAGS) /NTO03_TEXT FAME.C >>MSC.LOG
    
    NOTES.OBJ: NOTES.C CIV.H CAPTURE.H CONTROL.H CORE.H DIALOG.H DRAW.H GAME.H GLOBALS.H MESSAGE.H \
    	RESIDENT.H UNITS.H NOTES.H GRAPHICS.H
    	cl /AM /Gs /Oas $(CFLAGS) /NTO04_TEXT NOTES.C >>MSC.LOG
    
    NEWGAME.OBJ: NEWGAME.C CIV.H CAPTURE.H CORE.H DIALOG.H DRAW.H DRIVER.H ECONOMY.H FILEIO.H \
    	GAME.H GLOBALS.H MAP.H NAMES.H NEWS.H RESIDENT.H TURN.H UNITAI.H UNITS.H MESSAGE.H NEWGAME.H \
    	GRAPHICS.H
    	cl /AM /Gs /Oas $(CFLAGS) /NTO05_TEXT NEWGAME.C >>MSC.LOG
    
    AUDIENCE.OBJ: AUDIENCE.C CIV.H CAPTURE.H CORE.H DIPLOMAC.H ECONOMY.H GAME.H GLOBALS.H INTRO.H \
    	MESSAGE.H PEDIA.H RESIDENT.H ADVISORS.H AUDIENCE.H CITYMGT.H FILEIO.H NOTES.H TURN.H UNITS.H \
    	DIALOG.H DRAW.H GRAPHICS.H
    	cl /AM /Gs /Oas $(CFLAGS) /NTO06_TEXT AUDIENCE.C >>MSC.LOG
    
    WORLDGEN.OBJ: WORLDGEN.C CITYMGT.H CORE.H DRAW.H DRIVER.H FADE.H FILEIO.H GAME.H GLOBALS.H \
    	MAP.H NEWS.H PALETTE.H PATH.H RASTER.H RESIDENT.H UNITS.H WORLDGEN.H DIALOG.H GRAPHICS.H
    	cl /AM /Gs /Oas $(CFLAGS) /NTO07_TEXT WORLDGEN.C >>MSC.LOG
    
    PEDIA.OBJ: PEDIA.C CIV.H AUDIENCE.H CAPTURE.H CITYMGT.H CONTROL.H CORE.H DIALOG.H DRAW.H \
    	DRIVER.H FILEIO.H GAME.H GLOBALS.H RESIDENT.H TURN.H UNITS.H MESSAGE.H PEDIA.H GRAPHICS.H
    	cl /AM /Gs /Oas $(CFLAGS) /NTO08_TEXT PEDIA.C >>MSC.LOG
    
    REPLAY.OBJ: REPLAY.C CIV.H AUDIENCE.H CAPTURE.H CONTROL.H CORE.H DRAW.H DRIVER.H FADE.H \
    	FILEIO.H GAME.H GLOBALS.H MAP.H RESIDENT.H TURN.H UNITS.H REPLAY.H MESSAGE.H GRAPHICS.H
    	cl /AM /Gs /Oas $(CFLAGS) /NTO09_TEXT REPLAY.C >>MSC.LOG
    
    MAPVIEW.OBJ: MAPVIEW.C CIV.H GAME.H GLOBALS.H RESIDENT.H MAPVIEW.H UNITS.H CAPTURE.H DRAW.H \
    	MAP.H TURN.H GRAPHICS.H
    	cl /AM /Gs /Oas $(CFLAGS) /NTO10_TEXT MAPVIEW.C >>MSC.LOG
    
    SAVE.OBJ: SAVE.C CIV.H CORE.H DIALOG.H FAME.H FILEIO.H GAME.H GLOBALS.H INTRO.H RESIDENT.H \
    	SPACESHP.H TURN.H UNITS.H WORLDGEN.H MESSAGE.H SAVE.H GRAPHICS.H
    	cl /AM /Gs /Oas $(CFLAGS) /NTO11_TEXT SAVE.C >>MSC.LOG
    
    REPORTS.OBJ: REPORTS.C CIV.H GAME.H GLOBALS.H RESIDENT.H CAPTURE.H CITYMGT.H CONTROL.H CORE.H \
    	DRAW.H REPLAY.H REPORTS.H TURN.H UNITS.H DIALOG.H ECONOMY.H MAP.H MESSAGE.H GRAPHICS.H
    	cl /AM /Gs /Oas $(CFLAGS) /NTO12_TEXT REPORTS.C >>MSC.LOG
    
    STATUS.OBJ: STATUS.C GAME.H GLOBALS.H RESIDENT.H CAPTURE.H CORE.H DIALOG.H DRAW.H STATUS.H \
    	UNITS.H ECONOMY.H GRAPHICS.H
    	cl /AM /Gs /Oas $(CFLAGS) /NTO13_TEXT STATUS.C >>MSC.LOG
    
    ADVISORS.OBJ: ADVISORS.C CIV.H CONTROL.H DIALOG.H GAME.H GLOBALS.H RESIDENT.H TURN.H ADVISORS.H \
    	CAPTURE.H CITYMGT.H CORE.H DRAW.H UNITS.H ECONOMY.H MESSAGE.H GRAPHICS.H
    	cl /AM /Gs /Oas $(CFLAGS) /NTO14_TEXT ADVISORS.C >>MSC.LOG
    
    CIVWAR.OBJ: CIVWAR.C CIV.H GAME.H GLOBALS.H RESIDENT.H CIVWAR.H MAP.H MESSAGE.H NEWGAME.H \
    	UNITS.H CORE.H TURN.H GRAPHICS.H
    	cl /AM /Gs /Oas $(CFLAGS) /NTO15_TEXT CIVWAR.C >>MSC.LOG
    
    QUIZ.OBJ: QUIZ.C CIV.H GLOBALS.H RESIDENT.H SPACESHP.H UNITS.H CAPTURE.H CORE.H DIALOG.H DRAW.H \
    	FILEIO.H GAME.H MESSAGE.H PEDIA.H QUIZ.H TURN.H GRAPHICS.H
    	cl /AM /Gs /Oas $(CFLAGS) /NTO16_TEXT QUIZ.C >>MSC.LOG
    
    PALACE.OBJ: PALACE.C CIV.H CAPTURE.H CONTROL.H CORE.H DIALOG.H DRAW.H DRIVER.H FADE.H FILEIO.H \
    	GAME.H GLOBALS.H RESIDENT.H TURN.H MESSAGE.H PALACE.H GRAPHICS.H
    	cl /AM /Gs /Oas $(CFLAGS) /NTO17_TEXT PALACE.C >>MSC.LOG
    
    SPACESHP.OBJ: SPACESHP.C CIV.H CAPTURE.H CONTROL.H CORE.H DIALOG.H DRAW.H DRIVER.H ECONOMY.H \
    	FILEIO.H GAME.H GLOBALS.H PALETTE.H RESIDENT.H TURN.H SPACESHP.H GRAPHICS.H
    	cl /AM /Gs /Oas $(CFLAGS) /NTO18_TEXT SPACESHP.C >>MSC.LOG
    
    CITYVIEW.OBJ: CITYVIEW.C CIV.H CAPTURE.H CITYMGT.H CONTROL.H CORE.H DRAW.H DRIVER.H ECONOMY.H \
    	FADE.H FILEIO.H GAME.H GLOBALS.H PALETTE.H RESIDENT.H TURN.H CITYVIEW.H DIALOG.H GRAPHICS.H
    	cl /AM /Gs /Oas $(CFLAGS) /NTO19_TEXT CITYVIEW.C >>MSC.LOG
    
    CITY.OBJ: CITY.C CIV.H ADVISORS.H CAPTURE.H CITYMGT.H CONTROL.H CORE.H DIALOG.H DIPLOMAT.H \
    	DRAW.H ECONOMY.H GAME.H GLOBALS.H MAP.H RESIDENT.H SPACESHP.H TURN.H UNITAI.H UNITS.H CITY.H \
    	MESSAGE.H NAMES.H NOTES.H GRAPHICS.H
    	cl /AM /Gs /Oas $(CFLAGS) /NTO20_TEXT CITY.C >>MSC.LOG
    
    NEWS.OBJ: NEWS.C CIV.H GLOBALS.H RESIDENT.H GAME.H DIALOG.H DRAW.H MESSAGE.H NEWS.H TURN.H \
    	CAPTURE.H GRAPHICS.H
    	cl /AM /Gs /Oas $(CFLAGS) /NTO21_TEXT NEWS.C >>MSC.LOG
    
    DIPLOMAT.OBJ: DIPLOMAT.C CIV.H ADVISORS.H AUDIENCE.H BATTLE.H CAPTURE.H CITYMGT.H CITYVIEW.H \
    	CONTROL.H CORE.H DIPLOMAC.H DRAW.H DRIVER.H ECONOMY.H FADE.H FILEIO.H GAME.H GLOBALS.H \
    	RESIDENT.H TURN.H UNITS.H DIPLOMAT.H MAP.H GRAPHICS.H
    	cl /AM /Gs /Oas $(CFLAGS) /NTO22_TEXT DIPLOMAT.C >>MSC.LOG
    
    NAMES.OBJ: NAMES.C CAPTURE.H CONTROL.H CORE.H DRAW.H DRIVER.H GAME.H GLOBALS.H RESIDENT.H \
    	UNITS.H NAMES.H DIALOG.H GRAPHICS.H
    	cl /AM /Gs /Oas $(CFLAGS) /NTO23_TEXT NAMES.C >>MSC.LOG
    
    F0DATA.OBJ: F0DATA.ASM
    	masm /ML /T F0DATA.ASM,F0DATA.OBJ; >>MASM.LOG
  • §

    Linking and the startup correction

    The game link depends on the object files and LINK.RSP. LINK reads that response file and writes CIV.EXE.

    CRTEDIT.EXE changes the four destination bytes of one startup call, redirecting runtime environment initialization to an empty game function. It checks the input and result. The original executable makes this same call, but how its developers arranged it is unknown.

    Lines 212–238.

    #	The game. LINK names its output CIV.EXE; the unmodified
    #	linker output is retained as CIVRAW.EXE.
    
    CIVRAW.EXE: RESIDENT.OBJ GLOBALS.OBJ STRBIOS.OBJ DRAW.OBJ GAME.OBJ TURN.OBJ CONTROL.OBJ \
    	UNITS.OBJ ECONOMY.OBJ CITYMGT.OBJ GRAPHICS.OBJ CAPTURE.OBJ \
    	DIPLOMAC.OBJ UNITAI.OBJ BATTLE.OBJ MAP.OBJ MENUS.OBJ DIALOG.OBJ CORE.OBJ \
    	PATH.OBJ MESSAGE.OBJ FILEIO.OBJ IMAGE.OBJ SETUP.OBJ INTRO.OBJ FAME.OBJ \
    	NOTES.OBJ NEWGAME.OBJ AUDIENCE.OBJ WORLDGEN.OBJ PEDIA.OBJ REPLAY.OBJ \
    	MAPVIEW.OBJ SAVE.OBJ REPORTS.OBJ STATUS.OBJ ADVISORS.OBJ CIVWAR.OBJ \
    	QUIZ.OBJ PALACE.OBJ SPACESHP.OBJ CITYVIEW.OBJ CITY.OBJ NEWS.OBJ \
    	DIPLOMAT.OBJ NAMES.OBJ F0DATA.OBJ LINK.RSP
    	if exist CIVRAW.EXE del CIVRAW.EXE
    	link /MAP /INF /EXEPACK @LINK.RSP >LINK.LOG
    	ren CIV.EXE CIVRAW.EXE
    
    #	User-approved, pinned four-byte startup exception;
    #	no object or library edits.
    
    CRTEDIT.OBJ: CRTEDIT.C
    	cl /AM /Gs /O /Zl /c /W3 CRTEDIT.C >>MSC.LOG
    
    CRTEDIT.EXE: CRTEDIT.OBJ
    	link CRTEDIT.OBJ,CRTEDIT.EXE,NUL,$(LIBS); >CRTEDIT.LOG
    
    CIV.EXE: CIVRAW.EXE CRTEDIT.EXE
    	CRTEDIT >EDIT.LOG
  • §

    Programs loaded separately

    The final rules build the graphics driver, sound driver and MISC.EXE as separate programs. These objects do not join the game link above. Each has its own LINK command, and the driver commands do not supply C runtime libraries.

    The file therefore describes more than one executable. It also records the boundary between the game and programs it loads at run time. That boundary remains visible when we reach GAME.C.

    Lines 239–258.

    #	Drivers CIV loads at run time (separate programs, built the
    #	same way the originals were: MASM, then LINK with no libraries).
    
    MGRAPHIC.OBJ: MGRAPHIC.ASM
    	masm /ML /T MGRAPHIC.ASM,MGRAPHIC.OBJ; >>MASM.LOG
    
    MGRAPHIC.EXE: MGRAPHIC.OBJ
    	link MGRAPHIC.OBJ,MGRAPHIC.EXE,NUL; >>LINK.LOG
    
    ASOUND.OBJ: ASOUND.ASM
    	masm /ML /T ASOUND.ASM,ASOUND.OBJ; >>MASM.LOG
    
    ASOUND.CVL: ASOUND.OBJ
    	link ASOUND.OBJ,ASOUND.CVL,NUL; >>LINK.LOG
    
    MISC.OBJ: MISC.ASM
    	masm /ML /T MISC.ASM,MISC.OBJ; >>MASM.LOG
    
    MISC.EXE: MISC.OBJ
    	link /CPARMAXALLOC:2 MISC.OBJ,MISC.EXE,NUL; >>LINK.LOG
  • §

    ← Previous · Contents · Next →