# Fortran compiler and options

FC=ifx
FOPTS= -O -g -traceback

# C compiler and options
CC=gcc
COPTS=

all: v4

# Dependencies
MAC = clra ldph
M = $(MAC) ext00
# Mokotoff's macros used in phase-36
MM = fbceq mvdwn

PROG = phello.f

OBJ1 = phase-3.o  phase-4.o  phase-5.o  phase-6.o  phase-7.o  phase-8.o \
       phase-9.o  phase-10.o phase-11.o phase-12.o phase-13.o phase-14.o \
       phase-15.o phase-16.o phase-17.o phase-18.o phase-19.o phase-20.o \
       phase-21.o phase-22.o phase-23.o phase-24.o phase-25.o phase-26.o \
       phase-27.o phase-28.o phase-29.o phase-30.o phase-31.o phase-32.o \
       phase-33.o phase-34.o phase-36.o phase-37.o phase-38.o \
       phase-39.o phase-40.o phase-41.o phase-42.o phase-43.o phase-44.o \
       phase-45.o phase-46.o phase-47.o phase-48.o phase-49.o phase-50A.o \
       phase-50B.o phase-51.o phase-52A.o phase-52BC.o

OBJ2 = phase-53S.o phase-54A.o phase-54B.o phase-54CD.o phase-55.o \
       phase-56.o phase-57.o phase-58.o phase-59ABC.o phase-60.o phase-61.o \
       phase-61B.o phase-62.o phase-63.o
       

TAP1 = phase-0.tap  phase-1-2.tap phase-3.tap phase-4.tap  phase-5.tap \
       phase-6.tap  phase-7.tap  phase-8.tap  phase-9.tap  phase-10.tap \
       phase-11.tap phase-12.tap phase-13.tap phase-14.tap phase-15.tap \
       phase-16.tap phase-17.tap phase-18.tap phase-19.tap phase-20.tap \
       phase-21.tap phase-22.tap phase-23.tap phase-24.tap phase-25.tap \
       phase-26.tap phase-27.tap phase-28.tap phase-29.tap phase-30.tap \
       phase-31.tap phase-32.tap phase-33.tap phase-34.tap \
       phase-36.tap phase-37.tap phase-38.tap phase-39.tap phase-40.tap \
       phase-41.tap phase-42.tap phase-43.tap phase-44.tap phase-45.tap \
       phase-46.tap phase-47.tap phase-48.tap phase-49.tap phase-50A.tap \
       phase-50B.tap phase-51.tap phase-52A.tap phase-52BC.tap

# Phase 59 is card images, to punch the condensed deck.
TAP2 = phase-53S.tap phase-54A.tap phase-54B.tap phase-54CD.tap \
       phase-55.tap phase-56.tap phase-57.tap phase-58.tap phase-59ABC.o \
       phase-60.tap phase-61.tap phase-61B.tap phase-62.tap phase-63.tap 

# Do NOT use -bV for Van's favorite two-card loader because the compiler-gen4
# program skips the first three cards.
phase-0.o phase-0.tap phase-0.lst ext00: phase-0.s ext03 $(MAC)
	autocoder -bV -X9 -o phase-0.o -l phase-0.lst -t phase-0.tap phase-0.s
	./aulist phase-0
	./Extdef phase-0.lst ext00

phase-1-2.o phase-1-2.tap phase-1-2.lst ext01: phase-1-2.s Extdef $M
	autocoder -bNX -X9 -o phase-1-2.o -l phase-1-2.lst -t phase-1-2.tap phase-1-2.s
	./aulist phase-1-2
	./Extdef phase-1-2.lst ext01

phase-3.o phase-3.tap phase-3.lst ext03: phase-3.s Extdef $M
	autocoder -bNX -X9 -o phase-3.o -l phase-3.lst -t phase-3.tap phase-3.s
	./aulist phase-3
	./Extdef phase-3.lst ext03

phase-4.o phase-4.tap phase-4.lst ext04: phase-4.s ext03 $M
	autocoder -bNX -X9 -o phase-4.o -l phase-4.lst -t phase-4.tap phase-4.s
	./aulist phase-4
	./Extdef phase-4.lst ext04

phase-5.o phase-5.tap phase-5.lst ext05: phase-5.s ext04 ext13 $M
	autocoder -bNX -X9 -o phase-5.o -l phase-5.lst -t phase-5.tap phase-5.s
	./aulist phase-5
	./Extdef phase-5.lst ext05

phase-6.o phase-6.tap phase-6.lst: ext04 ext05 phase-6.s $M
	autocoder -bNX -X9 -o phase-6.o -l phase-6.lst -t phase-6.tap phase-6.s
	./aulist phase-6
	./Extdef phase-6.lst ext06

phase-7.o phase-7.tap phase-7.lst: phase-7.s ext03 $M
	autocoder -bNX -X9 -o phase-7.o -l phase-7.lst -t phase-7.tap phase-7.s
	./aulist phase-7
	./Extdef phase-7.lst ext07

phase-8.o phase-8.tap phase-8.lst: phase-8.s ext03 $M
	autocoder -bNX -X9 -o phase-8.o -l phase-8.lst -t phase-8.tap phase-8.s
	./aulist phase-8

phase-9.o phase-9.tap phase-9.lst ext09: phase-9.s ext03 Extdef $M
	autocoder -bNX -X9 -o phase-9.o -l phase-9.lst -t phase-9.tap phase-9.s
	./aulist phase-9
	./Extdef phase-9.lst ext09

phase-10.o phase-10.tap phase-10.lst ext10: phase-10.s ext09 ext11 Extdef $M
	autocoder -bNX -X9 -o phase-10.o -l phase-10.lst -t phase-10.tap phase-10.s
	./aulist phase-10
	./Extdef phase-10.lst ext10 ext10

phase-11.o phase-11.tap phase-11.lst ext11: phase-11.s ext03 ext10 Extdef $M
	autocoder -bNX -X9 -o phase-11.o -l phase-11.lst -t phase-11.tap phase-11.s
	./aulist phase-11
	./Extdef phase-11.lst ext11 ext11

phase-12.o phase-12.tap phase-12.lst: phase-12.s ext03 xt54b $M
	autocoder -bNX -X9 -o phase-12.o -l phase-12.lst -t phase-12.tap phase-12.s
	./aulist phase-12

phase-13.o phase-13.tap phase-13.lst ext13: phase-13.s ext03 Extdef $M
	autocoder -bNX -X9 -o phase-13.o -l phase-13.lst -t phase-13.tap phase-13.s
	./aulist phase-13
	./Extdef phase-13.lst ext13  ext13

phase-14.o phase-14.tap phase-14.lst ext14: phase-14.s ext03 ext18 Extdef $M
	autocoder -bNX -X9 -o phase-14.o -l phase-14.lst -t phase-14.tap phase-14.s
	./aulist phase-14
	./Extdef phase-14.lst ext14

phase-15.o phase-15.tap phase-15.lst ext15: phase-15.s ext14 ext18 Extdef $M
	autocoder -bNX -X9 -o phase-15.o -l phase-15.lst -t phase-15.tap phase-15.s
	./aulist phase-15
	./Extdef phase-15.lst ext15

phase-16.o phase-16.tap phase-16.lst: phase-16.s ext14 ext15 $M
	autocoder -bNX -X9 -o phase-16.o -l phase-16.lst -t phase-16.tap phase-16.s
	./aulist phase-16

phase-17.o phase-17.tap phase-17.lst: phase-17.s ext03 ext18 $M
	autocoder -bNX -X9 -o phase-17.o -l phase-17.lst -t phase-17.tap phase-17.s
	./aulist phase-17

phase-18.o phase-18.tap phase-18.lst ext18: phase-18.s ext03 $M
	autocoder -bNX -X9 -o phase-18.o -l phase-18.lst -t phase-18.tap phase-18.s
	./aulist phase-18
	./Extdef phase-18.lst ext18

phase-19.o phase-19.tap phase-19.lst ext19: phase-19.s ext03 Extdef $M
	autocoder -bNX -X9 -o phase-19.o -l phase-19.lst -t phase-19.tap phase-19.s
	./aulist phase-19
	./Extdef phase-19.lst ext19

phase-20.o phase-20.tap phase-20.lst: phase-20.s ext03 ext19 $M
	autocoder -bNX -X9 -o phase-20.o -l phase-20.lst -t phase-20.tap phase-20.s
	./aulist phase-20
	./Extdef phase-20.lst ext20

phase-21.o phase-21.tap phase-21.lst: phase-21.s ext03 $M
	autocoder -bNX -X9 -o phase-21.o -l phase-21.lst -t phase-21.tap phase-21.s
	./aulist phase-21

phase-22.o phase-22.tap phase-22.lst: phase-22.s ext03 $M
	autocoder -bNX -X9 -o phase-22.o -l phase-22.lst -t phase-22.tap phase-22.s
	./aulist phase-22

phase-23.o phase-23.tap phase-23.lst ext23: phase-23.s ext03 Extdef $M
	autocoder -bNX -X9 -o phase-23.o -l phase-23.lst -t phase-23.tap phase-23.s
	./aulist phase-23
	./Extdef phase-23.lst ext23

phase-24.o phase-24.tap phase-24.lst: phase-24.s ext03 ext23 $M
	autocoder -bNX -X9 -o phase-24.o -l phase-24.lst -t phase-24.tap phase-24.s
	./aulist phase-24

phase-25.o phase-25.tap phase-25.lst ext25: phase-25.s ext03 Extdef $M
	autocoder -bNX -X9 -o phase-25.o -l phase-25.lst -t phase-25.tap phase-25.s
	./aulist phase-25
	./Extdef phase-25.lst ext25

phase-26.o phase-26.tap phase-26.lst: phase-26.s ext25 $M
	autocoder -bNX -X9 -o phase-26.o -l phase-26.lst -t phase-26.tap phase-26.s
	./aulist phase-26

phase-27.o phase-27.tap phase-27.lst: phase-27.s ext03 ext25 $M
	autocoder -bNX -X9 -o phase-27.o -l phase-27.lst -t phase-27.tap phase-27.s
	./aulist phase-27

phase-28.o phase-28.tap phase-28.lst ext28: phase-28.s ext03 ext36 Extdef $M
	autocoder -bNX -X9 -o phase-28.o -l phase-28.lst -t phase-28.tap phase-28.s
	./aulist phase-28
	./Extdef phase-28.lst ext28

phase-29.o phase-29.tap phase-29.lst ext29: phase-29.s ext28 ext36 Extdef $M
	autocoder -bNX -X9 -o phase-29.o -l phase-29.lst -t phase-29.tap phase-29.s
	./aulist phase-29
	./Extdef phase-29.lst ext29

phase-30.o phase-30.tap phase-30.lst: phase-30.s ext03 ext28 ext29 $M
	autocoder -bNX -X9 -o phase-30.o -l phase-30.lst -t phase-30.tap phase-30.s
	./aulist phase-30

phase-31.o phase-31.tap phase-31.lst: phase-31.s ext03 $M
	autocoder -bNX -X9 -o phase-31.o -l phase-31.lst -t phase-31.tap phase-31.s
	./aulist phase-31

phase-32.o phase-32.tap phase-32.lst: phase-32.s ext03 $M
	autocoder -bNX -X9 -o phase-32.o -l phase-32.lst -t phase-32.tap phase-32.s
	./aulist phase-32

phase-33.o phase-33.tap phase-33.lst: phase-33.s ext03 $M
	autocoder -bNX -X9 -o phase-33.o -l phase-33.lst -t phase-33.tap phase-33.s
	./aulist phase-33

phase-34.o phase-34.tap phase-34.lst: phase-34.s ext03 $M
	autocoder -bNX -o phase-34.o -l phase-34.lst -t phase-34.tap phase-34.s
	./aulist phase-34

# Phase 35 doesn't do anything

phase-35.o phase-35.tap phase-35.lst: phase-35.s ext03 $M
	autocoder -bNX -o phase-35.o -l phase-35.lst -t phase-35.tap phase-35.s
	./aulist phase-35

phase-36.o phase-36.tap phase-36.lst ext36: phase-36.s ext03 Extdef $M $(MM)
	autocoder -bNX -o phase-36.o -l phase-36.lst -t phase-36.tap phase-36.s
	./aulist phase-36
	./Extdef phase-36.lst ext36

phase-37.o phase-37.tap phase-37.lst: phase-37.s ext03 $M
	autocoder -bNX -o phase-37.o -l phase-37.lst -t phase-37.tap phase-37.s
	./aulist phase-37

phase-38.o phase-38.tap phase-38.lst: phase-38.s ext03 $M
	autocoder -bNX -o phase-38.o -l phase-38.lst -t phase-38.tap phase-38.s
	./aulist phase-38

phase-39.o phase-39.tap phase-39.lst: phase-39.s ext03 $M
	autocoder -bNX -o phase-39.o -l phase-39.lst -t phase-39.tap phase-39.s
	./aulist phase-39

phase-40.o phase-40.tap phase-40.lst: phase-40.s ext03 $M
	autocoder -bNX -o phase-40.o -l phase-40.lst -t phase-40.tap phase-40.s
	./aulist phase-40

phase-41.o phase-41.tap phase-41.lst: phase-41.s ext03 $M
	autocoder -bNX -o phase-41.o -l phase-41.lst -t phase-41.tap phase-41.s
	./aulist phase-41

phase-42.o phase-42.tap phase-42.lst: phase-42.s ext03 $M
	autocoder -bNX -o phase-42.o -l phase-42.lst -t phase-42.tap phase-42.s
	./aulist phase-42

phase-43.o phase-43.tap phase-43.lst: phase-43.s ext03 $M
	autocoder -bNX -o phase-43.o -l phase-43.lst -t phase-43.tap phase-43.s
	./aulist phase-43

phase-44.o phase-44.tap phase-44.lst: phase-44.s ext03 $M
	autocoder -bNX -o phase-44.o -l phase-44.lst -t phase-44.tap phase-44.s
	./aulist phase-44

phase-45.o phase-45.tap phase-45.lst: phase-45.s ext03 $M
	autocoder -bNX -o phase-45.o -l phase-45.lst -t phase-45.tap phase-45.s
	./aulist phase-45

phase-46.o phase-46.tap phase-46.lst: phase-46.s ext03 $M
	autocoder -bNX -o phase-46.o -l phase-46.lst -t phase-46.tap phase-46.s
	./aulist phase-46

phase-47.o phase-47.tap phase-47.lst ext47: phase-47.s ext03 ext49 Extdef $M
	autocoder -bNX -o phase-47.o -l phase-47.lst -t phase-47.tap phase-47.s
	./aulist phase-47
	./Extdef phase-50A.lst ext47

phase-48.o phase-48.tap phase-48.lst: phase-48.s ext03 ext47 ext49 $M
	autocoder -bNX -o phase-48.o -l phase-48.lst -t phase-48.tap phase-48.s
	./aulist phase-48

phase-49.o phase-49.tap phase-49.lst ext49: phase-49.s ext47 $M
	autocoder -bNX -o phase-49.o -l phase-49.lst -t phase-49.tap phase-49.s
	./aulist phase-49
	./Extdef phase-50A.lst ext49

phase-50A.o phase-50A.tap phase-50A.lst xt50a: phase-50A.s ext47 $M
	autocoder -bNX -o phase-50A.o -l phase-50A.lst -t phase-50A.tap phase-50A.s
	./aulist phase-50A
	./Extdef phase-50A.lst xt50a

phase-50B.o phase-50B.tap phase-50B.lst xt50b: phase-50B.s ext03 ext47 $M
	autocoder -bNX -o phase-50B.o -l phase-50B.lst -t phase-50B.tap phase-50B.s
	./aulist phase-50B
	./Extdef phase-50B.lst xt50b

phase-51.o phase-51.tap phase-51.lst: phase-51.s ext03 $M
	autocoder -bNX -o phase-51.o -l phase-51.lst -t phase-51.tap phase-51.s
	./aulist phase-51

phase-52A.o phase-52A.tap phase-52A.lst xt52a: phase-52A.s ext03 $M
	autocoder -bNX -o phase-52A.o -l phase-52A.lst -t phase-52A.tap phase-52A.s
	./aulist phase-52A
	./Extdef phase-52A.lst xt52a

phase-52BC.o phase-52BC.tap phase-52BC.lst xt52b: phase-52BC.s ext03 xt52a $M
	autocoder -bNX -o phase-52BC.o -l phase-52BC.lst -t phase-52BC.tap phase-52BC.s
	./aulist phase-52BC
	./Extdef phase-52BC.lst xt52b

phase-53.o phase-53.lst ext53: phase-53.s
	autocoder -bNX -o phase-53.o -l phase-53.lst -t phase-53.tap phase-53.s
	./aulist phase-53
	./Extdef phase-52BC.lst ext53

# The original Phase 53R is no longer needed.

phase-53S.o phase-53S.tap phase-53S.lst xt53s: phase-53S.s ext03 xt52b $M
	autocoder -bNX -o phase-53S.o -l phase-53S.lst -t phase-53S.tap phase-53S.s
	./aulist phase-53S
	./Extdef phase-53S.lst xt53s

phase-54A.o phase-54A.tap phase-54A.lst xt54a: phase-54A.s xt52a xt54b xt54c $M
	autocoder -bNX -o phase-54A.o -l phase-54A.lst -t phase-54A.tap phase-54A.s
	./aulist phase-54A
	./Extdef phase-54A.lst xt54a

phase-54B.o phase-54B.tap phase-54B.lst xt54b: phase-54B.s xt52a xt54a $M
	autocoder -bNX -o phase-54B.o -l phase-54B.lst -t phase-54B.tap phase-54B.s
	./aulist phase-54B
	./Extdef phase-54B.lst xt54b

phase-54CD.o phase-54CD.tap phase-54CD.lst xt54c: phase-54CD.s ext00 xt52a xt54a ext63 $M
	autocoder -bNX -o phase-54CD.o -l phase-54CD.lst -t phase-54CD.tap phase-54CD.s
	./aulist phase-54CD
	./Extdef phase-54CD.lst xt54c

phase-55.o phase-55.tap phase-55.lst: phase-55.s ext03 xt52a xt54a xt54b ext63 $M
	autocoder -bNX -o phase-55.o -l phase-55.lst -t phase-55.tap phase-55.s
	./aulist phase-55

phase-56.o phase-56.tap phase-56.lst: phase-56.s ext03 $M
	autocoder -bNX -o phase-56.o -l phase-56.lst -t phase-56.tap phase-56.s
	./aulist phase-56

phase-57.o phase-57.tap phase-57.lst ext57: phase-57.s ext03 $M
	autocoder -bNX -o phase-57.o -l phase-57.lst -t phase-57.tap phase-57.s
	./aulist phase-57
	./Extdef phase-57.lst ext57

phase-58.o phase-58.tap phase-58.lst ext58: phase-58.s ext03 ext57 ext59 $M
	autocoder -bNX -o phase-58.o -l phase-58.lst -t phase-58.tap phase-58.s
	./aulist phase-58
	./Extdef phase-58.lst ext58

phase-59.o phase-59.lst ext59: phase-59.s xnmbr $M
	autocoder -bNX -o phase-59.o -l phase-59.lst phase-59.s
	./aulist phase-59
	./Extdef phase-59.lst ext59

phase-60.o phase-60.tap phase-60.lst: phase-60.s ext03 xt54b xt54c ext58 $M
	autocoder -bNX -o phase-60.o -l phase-60.lst -t phase-60.tap phase-60.s
	./aulist phase-60

phase-61.o phase-61.tap phase-61.lst: phase-61.s ext03 $M
	autocoder -bNX -o phase-61.o -l phase-61.lst -t phase-61.tap phase-61.s
	./aulist phase-61
	./Extdef phase-61.lst ext61

phase-61B.o phase-61B.tap phase-61B.lst: phase-61B.s ext03 ext61 $M
	autocoder -bNX -o phase-61B.o -l phase-61B.lst -t phase-61B.tap phase-61B.s
	./aulist phase-61B
	./Extdef phase-61B.lst ext61B

phase-62.o phase-62.tap phase-62.lst: phase-62.s ext03 ext61 ext63 $M
	autocoder -bNX -o phase-62.o -l phase-62.lst -t phase-62.tap phase-62.s
	./aulist phase-62
	./Extdef phase-62.lst ext62

phase-63.o phase-63.tap phase-63.lst ext63: phase-63.s $M
	autocoder -bNX -o phase-63.o -l phase-63.lst -t phase-63.tap phase-63.s
	./aulist phase-63
	./Extdef phase-63.lst ext63

compiler-gen4.o compiler-gen4.pdf: compiler-gen4.s
	autocoder -bV -o compiler-gen4.o -l compiler-gen4.lst compiler-gen4.s
	./aulist compiler-gen4

Extdef: Extdef.f90
	$(FC) $(FOPTS) -o Extdef Extdef.f90

split59: split59.f90
	$(FC) $(FOPTS) -o split59 split59.f90

to_simh: to_simh.c
	$(CC) $(COPTS) -o to_simh to_simh.c

Make_Deck: Make_Deck.f90
	$(FC) $(FOPTS) -o Make_Deck Make_Deck.f90

phase-59ABC.o phase-59D.o: phase-59.o split59
	./split59 phase-59.o phase-59ABC.o phase-59D.o

v4: phase-0.o phase-1-2.o $(PROG) $(OBJ1) phase-53R.cd $(OBJ2) \
          $(TAP1) $(TAP2) Make_Deck do-mt1 compiler-gen4.o to_simh
	./Make_Deck phase-0.o phase-1-2.o $(PROG) > v4.cd
	cat $(OBJ1) phase-53R.cd $(OBJ2) >> v4.cd
	cat $(TAP1) phase-53R.cd $(TAP2) > v4.tap
	./to_simh v4.tap v4.simh.tap
	i1401 < do-mt1

clean:
	rm -f *.o

tar:
	tar czfh v4.tgz --exclude v4.tgz --exclude v4.zip *

zip:
	zip -9 v4.zip * --exclude v4.tgz --exclude v4.zip
