forked from MattisLind/papertapetext
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathMakefile.pdp11
107 lines (70 loc) · 2.9 KB
/
Makefile.pdp11
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
CC=pdp11-aout-gcc
AS=pdp11-aout-as
%.o:%.c
$(CC) -c -Os -m10 -msoft-float -nostartfiles -nodefaultlibs -nostdlib -o $@ $^
%.o:%.s
$(AS) -o $@ $^
.PHONY: clean
clean:
@rm -f $(OBJS)
@rm -f papertape
@rm -f leader space punchedpapertape
@rm -f papertape-pdp11.abs
@rm -f papertape-pdp11.bin
@rm -f papertape-pdp11.textabs papertape-pdp11.dataabs
@rm -f papertape-pdp11.text papertape-pdp11.data
@rm -f papertape-pdp11.o
@rm -f spaceinv-leader
@rm -f spaceinvaders.abs
@rm -f spaceinvaders.data
@rm -f spaceinvaders.dataabs
@rm -f spaceinvaders.out
@rm -f spaceinvaders.pt
@rm -f spaceinvaders.text
@rm -f spaceinvaders.textabs
papertape-pdp11.abs: papertape-pdp11.textabs papertape-pdp11.dataabs
@cat $^ > $@
papertape-pdp11.textabs: papertape-pdp11.text
@CODE=`pdp11-aout-objdump -t papertape-pdp11.o | cut -d ' ' -f 1,13 | grep code | cut -d ' ' -f 1`; \
bin2abs $^ 0x$$CODE 0 > $@
papertape-pdp11.dataabs: papertape-pdp11.data
@DATA=`pdp11-aout-objdump -t papertape-pdp11.o | cut -d ' ' -f 1,13 | grep data | cut -d ' ' -f 1`; \
bin2abs $^ 0x$$DATA 1 > $@
papertape-pdp11.text: papertape-pdp11.o
@pdp11-aout-objcopy -j .text -O binary $^ $@
papertape-pdp11.data: papertape-pdp11.o
pdp11-aout-objcopy -j .data -O binary $^ $@
# to get the rigt order in the binary crt0.s has to be the first file
papertape-pdp11.o: crt0.o papertape.o pdp11-main.o
@pdp11-aout-ld -T linker-script -nostartfiles -nodefaultlibs -nostdlib $^ -o $@
spaceinvaders.abs: spaceinvaders.textabs spaceinvaders.dataabs
@cat $^ > $@
spaceinvaders.textabs: spaceinvaders.text spaceinvaders.out
@CODE=`pdp11-aout-objdump -t spaceinvaders.out | cut -d ' ' -f 1,13 | grep code | cut -d ' ' -f 1`; \
bin2abs $< 0x$$CODE 0 > $@
spaceinvaders.dataabs: spaceinvaders.data spaceinvaders.out
@DATA=`pdp11-aout-objdump -t spaceinvaders.out | cut -d ' ' -f 1,13 | grep data | cut -d ' ' -f 1`; \
bin2abs $< 0x$$DATA 1 > $@
spaceinvaders.text: spaceinvaders.out
@pdp11-aout-objcopy -j .text -O binary $^ $@
spaceinvaders.data: spaceinvaders.out
pdp11-aout-objcopy -j .data -O binary $^ $@
# to get the rigt order in the binary crt0.s has to be the first file
spaceinvaders.out: crt0.o spaceinvaders.o linker-script
@pdp11-aout-ld -T linker-script -nostartfiles -nodefaultlibs -nostdlib $(filter-out linker-script, $^) -o $@
install:
@cp papertape /usr/local/bin
space:
@dd if=/dev/zero of=$@ bs=1 count=20
leader:
@echo "WWW.DATORMUSEUM.SE PAPER TAPE PRINTER" > tmp
@papertape < tmp > $@
@rm -f tmp
spaceinv-leader:
@echo "WWW.DATORMUSEUM.SE SPACE INVADER DANCE" > tmp
@papertape < tmp > $@
@rm -f tmp
punchedpapertape: space leader DEC-11-L2PC-PO.ptap papertape-pdp11.abs
@cat $(foreach file,$(filter-out space, $^),$< $(file)) $< > $@
spaceinvaders.pt: space spaceinv-leader DEC-11-L2PC-PO.ptap spaceinvaders.abs
@cat $(foreach file,$(filter-out space, $^),$< $(file)) $< > $@