.SUFFIXES = AFLAGS = -o $@ PLVM = plvm PLVM01 = A1PLASMA\#060280 PLVM02 = PLASMA.SYSTEM\#FF2000 PLVM03 = SOS.INTERP\#050000 CMD = CMD\#FF2000 ED = ED\#FF2000 SB = SB\#FF2000 ROD = ROD\#FE1000 SIEVE = SIEVE\#FE1000 UTHERNET= UTHERNET\#FE1000 ETHERIP = ETHERIP\#FE1000 ROGUE = ROGUE\#FE1000 ROGUEIO = ROGUEIO\#FE1000 ROGUEMAP= ROGUEMAP\#FE1000 ROGUECOMBAT= ROGUECOMBAT\#FE1000 HELLO = HELLO\#FE1000 HGR1 = HGR1\#FE1000 HGR1TEST= HGR1TEST\#FE1000 TEST = TEST\#FE1000 TESTLIB = TESTLIB\#FE1000 PROFILE = PROFILE\#FE1000 MEMMGR = MEMMGR\#FE1000 PLASM = plasm INCS = toolsrc/tokens.h toolsrc/symbols.h toolsrc/lex.h toolsrc/parse.h toolsrc/codegen.h OBJS = toolsrc/plasm.c toolsrc/parse.o toolsrc/lex.o toolsrc/codegen.o # # Image filetypes for Virtual ][ # PLATYPE = .\$$ED BINTYPE = .BIN SYSTYPE = .SYS TXTTYPE = .TXT # # Image filetypes for CiderPress # #RELTYPE = \#FE1000 #INTERPTYPE = \#050000 #BINTYPE = \#060000 #SYSTYPE = \#FF2000 #TXTTYPE = \#040000 all: $(PLASM) $(PLVM) $(PLVM01) $(PLVM02) $(PLVM03) $(CMD) $(MEMMGR) $(SB) $(ROD) $(SIEVE) $(UTHERNET) $(ETHERIP) $(ROGUE) $(ROGUEMAP) $(ROGUECOMBAT) $(ROGUEIO) $(HGR1) clean: -rm *FE1000 *FF2000 $(PLASM) $(PLVM) $(PLVM01) $(PLVM02) $(PLVM03) -rm toolsrc/*.o toolsrc/*~ toolsrc/*.a -rm vmsrc/*.o vmsrc/*~ vmsrc/*.a vmsrc/*.sym -rm samplesrc/*.o samplesrc/*~ samplesrc/*.a # # PLASMA compiler: plasm # $(PLASM): $(OBJS) $(INCS) cc $(OBJS) -o $(PLASM) # # PLASMA VMs # $(PLVM): vmsrc/plvm.c cc vmsrc/plvm.c -o $(PLVM) vmsrc/a1cmd.a: vmsrc/a1cmd.pla $(PLASM) ./$(PLASM) -A < vmsrc/a1cmd.pla > vmsrc/a1cmd.a $(PLVM01): vmsrc/plvm01.s vmsrc/a1cmd.a acme -o $(PLVM01) -l vmsrc/plvm01.sym vmsrc/plvm01.s $(CMD): vmsrc/cmd.pla vmsrc/cmdstub.s $(PLVM02) $(PLASM) ./$(PLASM) -A < vmsrc/cmd.pla > vmsrc/cmd.a acme --setpc 8192 -o $(CMD) vmsrc/cmdstub.s $(PLVM02): vmsrc/plvm02.s acme -o $(PLVM02) -l vmsrc/plvm02.sym vmsrc/plvm02.s vmsrc/soscmd.a: vmsrc/soscmd.pla $(PLASM) ./$(PLASM) -A < vmsrc/soscmd.pla > vmsrc/soscmd.a $(PLVM03): vmsrc/plvm03.s vmsrc/soscmd.a acme -o $(PLVM03) -l vmsrc/plvm03.sym vmsrc/plvm03.s # # Sample code # test: samplesrc/test.pla samplesrc/testlib.pla $(PLVM) $(PLASM) m4 -I inc < samplesrc/test.pla | ./$(PLASM) -AM > samplesrc/test.a acme --setpc 4094 -o $(TEST) samplesrc/test.a m4 -I inc < samplesrc/testlib.pla | ./$(PLASM) -AM > samplesrc/testlib.a acme --setpc 4094 -o $(TESTLIB) samplesrc/testlib.a ./$(PLVM) TEST $(ED): toolsrc/ed.pla $(PLVM02) $(PLASM) toolsrc/ed.pla ./$(PLASM) -A < toolsrc/ed.pla > toolsrc/ed.a acme --setpc 8192 -o $(ED) toolsrc/ed.a $(SB): toolsrc/sb.pla $(PLVM02) $(PLASM) toolsrc/sb.pla ./$(PLASM) -A < toolsrc/sb.pla > toolsrc/sb.a acme --setpc 8192 -o $(SB) toolsrc/sb.a $(MEMMGR): libsrc/memmgr.pla $(PLVM02) $(PLASM) ./$(PLASM) -AM < libsrc/memmgr.pla > libsrc/memmgr.a acme --setpc 4094 -o $(MEMMGR) libsrc/memmgr.a $(ROD): samplesrc/rod.pla $(PLVM02) $(PLASM) ./$(PLASM) -AM < samplesrc/rod.pla > samplesrc/rod.a acme --setpc 4094 -o $(ROD) samplesrc/rod.a $(SIEVE): samplesrc/sieve.pla $(PLVM02) $(PLASM) ./$(PLASM) -AM < samplesrc/sieve.pla > samplesrc/sieve.a acme --setpc 4094 -o $(SIEVE) samplesrc/sieve.a $(UTHERNET): samplesrc/uthernet.pla $(PLVM02) $(PLASM) ./$(PLASM) -AM < samplesrc/uthernet.pla > samplesrc/uthernet.a acme --setpc 4094 -o $(UTHERNET) samplesrc/uthernet.a $(ETHERIP): samplesrc/etherip.pla $(PLVM02) $(PLASM) ./$(PLASM) -AM < samplesrc/etherip.pla > samplesrc/etherip.a acme --setpc 4094 -o $(ETHERIP) samplesrc/etherip.a $(ROGUE): samplesrc/rogue.pla $(PLVM02) $(PLASM) ./$(PLASM) -AM < samplesrc/rogue.pla > samplesrc/rogue.a acme --setpc 4094 -o $(ROGUE) samplesrc/rogue.a $(ROGUEIO): samplesrc/rogue.io.pla $(PLVM02) $(PLASM) ./$(PLASM) -AM < samplesrc/rogue.io.pla > samplesrc/rogue.io.a acme --setpc 4094 -o $(ROGUEIO) samplesrc/rogue.io.a $(ROGUECOMBAT): samplesrc/rogue.combat.pla $(PLVM02) $(PLASM) ./$(PLASM) -AM < samplesrc/rogue.combat.pla > samplesrc/rogue.combat.a acme --setpc 4094 -o $(ROGUECOMBAT) samplesrc/rogue.combat.a $(ROGUEMAP): samplesrc/rogue.map.pla $(PLVM02) $(PLASM) ./$(PLASM) -AM < samplesrc/rogue.map.pla > samplesrc/rogue.map.a acme --setpc 4094 -o $(ROGUEMAP) samplesrc/rogue.map.a $(PROFILE): samplesrc/profile.pla $(PLVM02) $(PLASM) m4 -I inc < samplesrc/profile.pla | ./$(PLASM) -AM > samplesrc/profile.a acme --setpc 4094 -o $(PROFILE) samplesrc/profile.a $(HGR1): samplesrc/hgr1.pla samplesrc/hgr1test.pla $(PLVM02) $(PLASM) ./$(PLASM) -AM < samplesrc/hgr1test.pla > samplesrc/hgr1test.a acme --setpc 4094 -o $(HGR1TEST) samplesrc/hgr1test.a ./$(PLASM) -AM < samplesrc/hgr1.pla > samplesrc/hgr1.a acme --setpc 4094 -o $(HGR1) samplesrc/hgr1.a hello: samplesrc/hello.pla $(PLVM) $(PLASM) m4 -I inc < samplesrc/hello.pla | ./$(PLASM) -AM > samplesrc/hello.a acme --setpc 4094 -o $(HELLO) samplesrc/hello.a ./$(PLVM) HELLO