build system can create different ROMs per platforn

This commit is contained in:
FeralChild64 committed 2019-07-18 21:16:37 +02:00
1 parent 212724d8f5
commit 4c60ad1653
10 files changed
+166 -183

No files matched your search

+3 -18
View File
@@ -1,27 +1,12 @@
# Intermediate compilation files
# Compilation related files
c64/basic/combined.s
c64/kernal/combined.s
padding
temp.s
temp.map
packed_messages.s
src/collect_data
src/compress_text
src/pngprepare
src/preprocess
ophis.bin
c64/basic/OUT.BIN
c64/kernal/OUT.BIN
# Compilation output
chargen
newbasic
newkern
newc65
newrom
build/*
# Various IDE project files, temporary files, etc.
+143 -39
View File
@@ -1,61 +1,165 @@
all: Ophis src/collect_data src/preprocess
# Source files
SRC_COMMON = $(wildcard c64/aliases/*.s)
SRC_BASIC_COMMON = $(SRC_COMMON) $(wildcard c64/basic/*.s)
SRC_KERNAL_COMMON = $(SRC_COMMON) $(wildcard c64/kernal/*.s)
SRC_BASIC_GENERIC = $(SRC_BASIC_COMMON) $(wildcard c64/basic/,platform_generic/*.s)
SRC_BASIC_MEGA65 = $(SRC_BASIC_COMMON) $(wildcard c64/basic/,platform_mega65/*.s)
SRC_BASIC_ULTIMATE64 = $(SRC_BASIC_COMMON) $(wildcard c64/basic/,platform_ultimate64/*.s)
SRC_KERNAL_GENERIC = $(SRC_KERNAL_COMMON) $(wildcard c64/kernal/,platform_generic/*.s)
SRC_KERNAL_MEGA65 = $(SRC_KERNAL_COMMON) $(wildcard c64/kernal/,platform_mega65/*.s)
SRC_KERNAL_ULTIMATE64 = $(SRC_KERNAL_COMMON) $(wildcard c64/kernal/,platform_ultimate64/*.s)
# Rules - maintainance
all: build/chargen build/newkern_generic build/newbasic_generic build/newkern_mega65 build/newbasic_mega65 build/newkern_ultimate64 build/newbasic_ultimate64
clean:
@rm -rf build
@rm -f temp.s
@rm -f temp.map
@rm -f c64/basic/packed_messages.s
.PHONY: prep
prep: Ophis build/collect_data build/compress_text build/preprocess build/similarity
Ophis:
git submodule init
git submodule update
src/pngprepare: src/pngprepare.c Makefile
$(CC) $(COPT) -I/usr/local/include -L/usr/local/lib -o src/pngprepare src/pngprepare.c -lpng
# Rules - tools
chargen: src/pngprepare assets/8x8font.png
src/pngprepare charrom assets/8x8font.png chargen
build/pngprepare: src/pngprepare.c Makefile
@mkdir -p build
$(CC) $(COPT) -I/usr/local/include -L/usr/local/lib -o build/pngprepare src/pngprepare.c -lpng
src/collect_data: src/collect_data.c Makefile
gcc -Wall -o src/collect_data src/collect_data.c
build/collect_data: src/collect_data.c Makefile
@mkdir -p build
gcc -Wall -o build/collect_data src/collect_data.c
src/preprocess: src/preprocess.c Makefile
gcc -g -Wall -o src/preprocess src/preprocess.c
build/preprocess: src/preprocess.c Makefile
@mkdir -p build
gcc -g -Wall -o build/preprocess src/preprocess.c
src/similarity: src/similarity.c Makefile
gcc -g -Wall -o src/similarity src/similarity.c
build/similarity: src/similarity.c Makefile
@mkdir -p build
gcc -g -Wall -o build/similarity src/similarity.c
src/compress_text: src/compress_text.c Makefile
gcc -g -Wall -o src/compress_text src/compress_text.c -lm
build/compress_text: src/compress_text.c Makefile
@mkdir -p build
gcc -g -Wall -o build/compress_text src/compress_text.c -lm
newrom: c64/kernal/OUT.BIN c64/basic/OUT.BIN
cat c64/basic/OUT.BIN c64/kernal/OUT.BIN >newrom
# Rules - chargen
newkern: newrom Makefile
dd if=newrom bs=8192 count=1 skip=2 of=newkern
build/chargen: build/pngprepare assets/8x8font.png
build/pngprepare charrom assets/8x8font.png build/chargen
newbasic: newrom Makefile
dd if=newrom bs=8192 count=1 skip=0 of=newbasic
# Rules - platform 'generic'
newc65: newkern newbasic chargen Makefile
dd if=/dev/zero bs=4096 count=10 of=newc65
cat newbasic chargen chargen newkern >>newc65
dd if=/dev/zero bs=65536 count=1 of=padding
cat padding >>newc65
build/basic_generic/OUT.BIN: build/preprocess $(SRC_BASIC_GENERIC) c64/basic/packed_messages.s
@mkdir -p build/basic_generic
@rm -f build/basic_generic/*
@for SRC in $(SRC_BASIC_GENERIC); do \
ln -s ../../$$SRC build/basic_generic/$$(basename $$SRC); \
done
build/preprocess -d build/basic_generic -l a000 -h e4d2
build/kernal_generic/OUT.BIN: build/preprocess $(SRC_KERNAL_GENERIC)
@mkdir -p build/kernal_generic
@rm -f build/kernal_generic/*
@for SRC in $(SRC_KERNAL_GENERIC); do \
ln -s ../../$$SRC build/kernal_generic/$$(basename $$SRC); \
done
build/preprocess -d build/kernal_generic -l e4d3 -h ffff
c64/basic/packed_messages.s: Makefile src/compress_text
src/compress_text > c64/basic/packed_messages.s
build/newrom_generic: build/basic_generic/OUT.BIN build/kernal_generic/OUT.BIN
cat build/basic_generic/OUT.BIN build/kernal_generic/OUT.BIN > build/newrom_generic
c64/kernal/OUT.BIN: src/preprocess c64/kernal/*.s
src/preprocess -d c64/kernal -l e4d3 -h ffff
build/newkern_generic: build/newrom_generic Makefile
dd if=build/newrom_generic bs=8192 count=1 skip=2 of=build/newkern_generic
c64/basic/OUT.BIN: src/preprocess c64/basic/*.s c64/basic/packed_messages.s
src/preprocess -d c64/basic -l a000 -h e4d2
build/newbasic_generic: build/newrom_generic Makefile
dd if=build/newrom_generic bs=8192 count=1 skip=0 of=build/newbasic_generic
testremote: newkern newbasic
x64 -kernal newkern -basic newbasic -remotemonitor
# Rules - platform 'Mega 65'
test: newkern newbasic
x64 -kernal newkern -basic newbasic -8 empty.d64
build/basic_mega65/OUT.BIN: build/preprocess $(SRC_BASIC_MEGA65) c64/basic/packed_messages.s
@mkdir -p build/basic_mega65
@rm -f build/basic_mega65/*
@for SRC in $(SRC_BASIC_MEGA65); do \
ln -s ../../$$SRC build/basic_mega65/$$(basename $$SRC); \
done
build/preprocess -d build/basic_mega65 -l a000 -h e4d2
testm65: newc65
m65 -b ../mega65-core/bin/mega65r1.bit -k ../mega65-core/bin/KICKUP.M65 -R newc65 -4
build/kernal_mega65/OUT.BIN: build/preprocess $(SRC_KERNAL_MEGA65)
@mkdir -p build/kernal_mega65
@rm -f build/kernal_mega65/*
@for SRC in $(SRC_KERNAL_MEGA65); do \
ln -s ../../$$SRC build/kernal_mega65/$$(basename $$SRC); \
done
build/preprocess -d build/kernal_mega65 -l e4d3 -h ffff
testsimilarity: newkern newbasic src/similarity
src/similarity kernal newrom
src/similarity basic newrom
build/newrom_mega65: build/basic_mega65/OUT.BIN build/kernal_mega65/OUT.BIN
cat build/basic_mega65/OUT.BIN build/kernal_mega65/OUT.BIN > build/newrom_mega65
build/newkern_mega65: build/newrom_mega65 Makefile
dd if=build/newrom_mega65 bs=8192 count=1 skip=2 of=build/newkern_mega65
build/newbasic_mega65: build/newrom_mega65 Makefile
dd if=build/newrom_mega65 bs=8192 count=1 skip=0 of=build/newbasic_mega65
build/newc65: build/newkern_mega65 build/newbasic_mega65 build/chargen Makefile
dd if=/dev/zero bs=4096 count=10 of=build/newc65
cat build/newbasic_mega65 build/chargen build/chargen build/newkern_mega65 >>build/newc65
dd if=/dev/zero bs=65536 count=1 of=build/padding
cat build/padding >>build/newc65
# Rules - platform 'Ultimate 64'
build/basic_ultimate64/OUT.BIN: build/preprocess $(SRC_BASIC_ULTIMATE64) c64/basic/packed_messages.s
@mkdir -p build/basic_ultimate64
@rm -f build/basic_ultimate64/*
@for SRC in $(SRC_BASIC_ULTIMATE64); do \
ln -s ../../$$SRC build/basic_ultimate64/$$(basename $$SRC); \
done
build/preprocess -d build/basic_ultimate64 -l a000 -h e4d2
build/kernal_ultimate64/OUT.BIN: build/preprocess $(SRC_KERNAL_ULTIMATE64)
@mkdir -p build/kernal_ultimate64
@rm -f build/kernal_ultimate64/*
@for SRC in $(SRC_KERNAL_ULTIMATE64); do \
ln -s ../../$$SRC build/kernal_ultimate64/$$(basename $$SRC); \
done
build/preprocess -d build/kernal_ultimate64 -l e4d3 -h ffff
build/newrom_ultimate64: build/basic_ultimate64/OUT.BIN build/kernal_ultimate64/OUT.BIN
cat build/basic_ultimate64/OUT.BIN build/kernal_ultimate64/OUT.BIN > build/newrom_ultimate64
build/newkern_ultimate64: build/newrom_ultimate64 Makefile
dd if=build/newrom_ultimate64 bs=8192 count=1 skip=2 of=build/newkern_ultimate64
build/newbasic_ultimate64: build/newrom_ultimate64 Makefile
dd if=build/newrom_ultimate64 bs=8192 count=1 skip=0 of=build/newbasic_ultimate64
# Rules - misc
c64/basic/packed_messages.s: Makefile build/compress_text
build/compress_text > c64/basic/packed_messages.s
# Rules - tests
testremote: build/newkern_generic build/newbasic_generic
x64 -kernal build/newkern-generic -basic build/newbasic-generic -remotemonitor
test: build/newkern_generic build/newbasic_generic
x64 -kernal build/newkern_generic -basic build/newbasic_generic -8 empty.d64
testm65: build/newc65
m65 -b ../mega65-core/bin/mega65r1.bit -k ../mega65-core/bin/KICKUP.M65 -R build/newc65 -4
testsimilarity: build/newrom_generic src/similarity
build/similarity kernal build/newrom_generic
build/similarity basic build/newrom_generic
View File
Whitespace-only changes.
View File
Whitespace-only changes.
View File
Whitespace-only changes.
@@ -0,0 +1,10 @@
;; Registers according to Ultimate 64 Command Interface ddescription,
;; https://1541u-documentation.readthedocs.io/en/latest/command%20interface.html
.alias U64_CONTROL $DF1C ; write
.alias U64_STATUS $DF1C ; read
.alias U64_COMMAND_DATA $DF1D ; write
.alias U64_IDENTIFICATION $DF1D ; read
.alias U64_RESPONSE_DATA $DF1E ; read only
.alias U64_STATUS_DATA $DF1F ; read only
-126
View File
@@ -1,126 +0,0 @@
packed_message_chars:
.byte $45 ; 'E' = $1 (nybl)
.byte $54 ; 'T' = $2 (nybl)
.byte $4F ; 'O' = $3 (nybl)
.byte $4E ; 'N' = $4 (nybl)
.byte $49 ; 'I' = $5 (nybl)
.byte $52 ; 'R' = $6 (nybl)
.byte $41 ; 'A' = $7 (nybl)
.byte $4C ; 'L' = $8 (nybl)
.byte $53 ; 'S' = $9 (nybl)
.byte $44 ; 'D' = $a (nybl)
.byte $46 ; 'F' = $b (nybl)
.byte $55 ; 'U' = $c (nybl)
.byte $50 ; 'P' = $d (nybl)
.byte $4D ; 'M' = $e (nybl)
.byte $43 ; 'C' = $F1 / $xF $43
.byte $47 ; 'G' = $F2 / $xF $47
.byte $59 ; 'Y' = $F3 / $xF $59
.byte $56 ; 'V' = $F4 / $xF $56
.byte $42 ; 'B' = $F5 / $xF $42
.byte $48 ; 'H' = $F6 / $xF $48
.byte $58 ; 'X' = $F7 / $xF $58
.byte $57 ; 'W' = $F8 / $xF $57
.byte $24 ; '$' = $F9 / $xF $24
.byte $27 ; ''' = $Fa / $xF $27
.byte $0D ; '␍' = $Fb / $xF $0D
.byte $51 ; 'Q' = $Fc / $xF $51
.byte $2E ; '.' = $Fd / $xF $2E
.byte $23 ; '#' = $FE/F + $23
.byte $4B ; 'K' = $FE/F + $4B
.byte $28 ; '(' = $FE/F + $28
.byte $5A ; 'Z' = $FE/F + $5A
.byte $2B ; '+' = $FE/F + $2B
.byte $2D ; '-' = $FE/F + $2D
.byte $2A ; '*' = $FE/F + $2A
.byte $2F ; '/' = $FE/F + $2F
.byte $5E ; '^' = $FE/F + $5E
.byte $3E ; '>' = $FE/F + $3E
.byte $3D ; '=' = $FE/F + $3D
.byte $3C ; '<' = $FE/F + $3C
packed_message_tokens:
.byte $00,$01,$02,$ff,$03,$04,$ff,$03
.byte $05,$04,$ff,$03,$05,$06,$ff,$07
.byte $05,$08,$ff,$05,$09,$03,$ff,$05
.byte $0a,$03,$ff,$0b,$0c,$ff,$0d,$07
.byte $0e,$ff,$0f,$10,$11,$ff,$12,$ff
.byte $13,$10,$14,$ff,$15,$16,$17,$ff
.byte $0d,$18,$ff,$19,$ff,$15,$16,$1a
.byte $ff,$1b,$1c,$ff,$1d,$1e,$ff,$1f
.byte $20,$ff,$21,$22,$23,$ff,$0d,$24
.byte $ff,$25,$26,$ff,$27,$00,$28,$ff
.byte $03,$17,$ff,$29,$00,$2a,$ff,$2b
.byte $2c,$ff,$1b,$2d,$ff,$2e,$ff,$2f
.byte $ff,$30,$ff,$31,$ff,$32,$ff,$33
.byte $ff,$34,$ff,$35,$36,$ff,$1a,$37
.byte $ff
.byte $05
.byte $38
.byte $ff
packed_message_words:
.byte $23,$30,$e7,$4f,$59,$00,$b5,$81
.byte $90,$b5,$81,$00,$3d,$14,$00,$43
.byte $20,$b3,$c4,$a0,$a1,$f4,$5f,$43
.byte $10,$d6,$19,$14,$20,$54,$dc,$20
.byte $3c,$2d,$c2,$00,$e5,$99,$54,$f2
.byte $00,$b5,$81,$47,$e1,$00,$58,$81
.byte $f2,$78,$00,$4c,$ef,$42,$16,$00
.byte $41,$f7,$20,$f8,$52,$f6,$3c,$20
.byte $b3,$60,$9f,$59,$42,$7f,$58,$00
.byte $61,$2c,$64,$00,$f2,$39,$cf,$42
.byte $00,$3c,$20,$3b,$00,$a7,$27,$00
.byte $fc,$c7,$42,$52,$f3,$00,$3f,$56
.byte $16,$b8,$3f,$57,$00,$e1,$e3,$6f
.byte $59,$00,$c4,$a1,$bf,$27,$a0,$92
.byte $72,$1e,$14,$20,$f5,$7a,$00,$9c
.byte $f5,$9f,$43,$65,$d2,$00,$61,$a5
.byte $ef,$27,$a0,$76,$67,$f3,$00,$a5
.byte $f4,$59,$53,$40,$f5,$f3,$00,$ff
.byte $5a,$16,$30,$a5,$61,$f1,$20,$2f
.byte $59,$d1,$00,$e5,$9e,$72,$f1,$f6
.byte $00,$92,$65,$4f,$47,$00,$83,$4f
.byte $47,$00,$b3,$6e,$c8,$70,$f1,$3e
.byte $d8,$1f,$58,$00,$f1,$74,$fa,$20
.byte $f1,$34,$25,$4c,$10,$bc,$4f,$43
.byte $25,$34,$00,$f4,$16,$5b,$f3,$00
.byte $83,$7a,$00,$61,$7a,$f3,$fd,$fb
.byte $00,$83,$7a,$54,$f2,$00,$f4,$16
.byte $5b,$f3,$54,$f2,$00,$97,$f4,$54
.byte $f2,$00,$16,$63,$60,$f5,$f3,$21
.byte $90,$b6,$11,$fd,$fb,$fb,$00,$f1
.byte $36,$6c,$d2,$00,$5e,$d8,$1e,$14
.byte $21
.byte $a0
packed_keywords:
.byte $14,$a0,$b3,$60,$41,$f7,$20,$a7
.byte $27,$00,$54,$dc,$2f,$23,$00,$54
.byte $dc,$20,$a5,$e0,$61,$7a,$00,$81
.byte $20,$f2,$32,$30,$6c,$40,$5b,$00
.byte $61,$92,$36,$10,$f2,$39,$cf,$42
.byte $00,$61,$2c,$64,$00,$61,$e0,$92
.byte $3d,$00,$34,$00,$f8,$75,$20,$83
.byte $7a,$00,$97,$f4,$10,$f4,$16,$5b
.byte $f3,$00,$a1,$b0,$d3,$ff,$4b,$10
.byte $d6,$54,$2f,$23,$00,$d6,$54,$20
.byte $f1,$34,$20,$85,$92,$00,$f1,$86
.byte $00,$f1,$ea,$00,$9f,$59,$90,$3d
.byte $14,$00,$f1,$83,$91,$00,$f2,$12
.byte $00,$41,$f8,$00,$27,$f5,$fe,$28
.byte $23,$00,$b4,$00,$9d,$f1,$fe,$28
.byte $2f,$48,$14,$00,$43,$20,$92,$1d
.byte $00,$fe,$2b,$fe,$2d,$fe,$2a,$fe
.byte $2f,$fe,$5e,$74,$a0,$36,$00,$fe
.byte $3e,$fe,$3d,$fe,$3c,$9f,$47,$40
.byte $54,$20,$7f,$42,$90,$c9,$60,$b6
.byte $10,$d3,$90,$9f,$51,$60,$64,$a0
.byte $83,$f2,$00,$1f,$58,$d0,$f1,$39
.byte $00,$95,$40,$27,$40,$72,$40,$d1
.byte $1f,$4b,$00,$81,$40,$92,$6f,$24
.byte $00,$f4,$78,$00,$79,$f1,$00,$f1
.byte $f6,$6f,$24,$00,$81,$b2,$f9,$00
.byte $65,$f2,$f6,$2f,$24,$00,$e5,$af
.byte $24
.byte $00
.byte $f2
.byte $30
.alias packed_keyword_table_len $DC
View File
Whitespace-only changes.
View File
Whitespace-only changes.
@@ -0,0 +1,10 @@
;; Registers according to Ultimate 64 Command Interface ddescription,
;; https://1541u-documentation.readthedocs.io/en/latest/command%20interface.html
.alias U64_CONTROL $DF1C ; write
.alias U64_STATUS $DF1C ; read
.alias U64_COMMAND_DATA $DF1D ; write
.alias U64_IDENTIFICATION $DF1D ; read
.alias U64_RESPONSE_DATA $DF1E ; read only
.alias U64_STATUS_DATA $DF1F ; read only