From 7760b6baac2061dd4806eccc9333b02f20feb65b Mon Sep 17 00:00:00 2001 From: Oliver Schmidt Date: Tue, 5 Feb 2013 21:07:54 +0100 Subject: [PATCH] Added Apple II 3.5" floppy image. --- .gitignore | 1 + tools/6502/Makefile | 45 ++++++++++++++++++++++++++++++++----- tools/apple2enh/prodos.2mg | Bin 0 -> 819200 bytes 3 files changed, 41 insertions(+), 5 deletions(-) create mode 100644 tools/apple2enh/prodos.2mg diff --git a/.gitignore b/.gitignore index 9fcd6dbf1..4f3539f0b 100644 --- a/.gitignore +++ b/.gitignore @@ -72,6 +72,7 @@ contiki-cc2530dk.lib *.S *.eth *.dsk +*.2mg *.atr *.d64 *.d71 diff --git a/tools/6502/Makefile b/tools/6502/Makefile index 9c1d9b750..faf1761ef 100644 --- a/tools/6502/Makefile +++ b/tools/6502/Makefile @@ -34,7 +34,7 @@ # ifndef CONTIKI - ${error CONTIKI not defined! You must specify where CONTIKI resides} + ${error CONTIKI not defined! You must specify where Contiki resides} endif ifndef CC65_HOME @@ -53,10 +53,7 @@ ifndef DIR2ATR ${error DIR2ATR not defined! You must specify where dir2atr resides} endif -disks: contiki-apple2-1.dsk contiki-apple2-2.dsk contiki-apple2-3.dsk contiki-apple2-4.dsk \ - contiki-atari-1.atr contiki-atari-2.atr contiki-atari-3.atr contiki-atari-4.atr \ - contiki-c64-1.d64 contiki-c64-2.d64 contiki-c64.d71 contiki-c64.d81 \ - contiki-c128-1.d64 contiki-c128-2.d64 contiki-c128.d71 contiki-c128.d81 +all: apple2 atari c64 c128 define makes $1-makes: @@ -73,6 +70,8 @@ endef $(eval $(call makes,apple2enh)) +apple2: contiki-apple2-1.dsk contiki-apple2-2.dsk contiki-apple2-3.dsk contiki-apple2-4.dsk contiki-apple2.2mg + contiki-apple2-1.dsk: apple2enh-makes cp ../apple2enh/prodos.dsk $@ java -jar $(AC) -p $@ contiki.cfg bin 0 < ../apple2enh/default.cfg @@ -133,8 +132,40 @@ contiki-apple2-4.dsk: apple2enh-makes java -jar $(AC) -p $@ contiki.gif bin 0 < ../../examples/webserver/httpd-cfs/contiki.gif java -jar $(AC) -p $@ notfound.htm bin 0 < ../../examples/webserver/httpd-cfs/notfound.htm +contiki-apple2.2mg: apple2enh-makes + cp ../apple2enh/prodos.2mg $@ + java -jar $(AC) -p $@ contiki.cfg bin 0 < ../apple2enh/default.cfg + java -jar $(AC) -p $@ menu.system sys 0 < ../apple2enh/menu.system + java -jar $(AC) -p $@ ipconfig.system sys 0 < ../apple2enh/loader.system + java -jar $(AC) -cc65 $@ ipconfig bin 0 < ../../cpu/6502/ipconfig/ipconfig.apple2enh + java -jar $(AC) -p $@ webbrows.system sys 0 < ../apple2enh/loader.system + java -jar $(AC) -cc65 $@ webbrows bin < ../../examples/webbrowser/webbrowser.apple2enh + java -jar $(AC) -p $@ wget.system sys 0 < ../apple2enh/loader.system + java -jar $(AC) -cc65 $@ wget bin < ../../examples/wget/wget.apple2enh + java -jar $(AC) -p $@ irc.system sys 0 < ../apple2enh/loader.system + java -jar $(AC) -cc65 $@ irc bin < ../../examples/irc/irc-client.apple2enh + java -jar $(AC) -p $@ breadbox.system sys 0 < ../apple2enh/loader.system + java -jar $(AC) -cc65 $@ breadbox bin < ../../../contikiprojects/vandenbrande.com/twitter/platform/apple2enh/breadbox64.apple2enh + java -jar $(AC) -p $@ email.system sys 0 < ../apple2enh/loader.system + java -jar $(AC) -cc65 $@ email bin < ../../examples/email/email-client.apple2enh + java -jar $(AC) -p $@ ftp.system sys 0 < ../apple2enh/loader.system + java -jar $(AC) -cc65 $@ ftp bin < ../../examples/ftp/ftp-client.apple2enh + java -jar $(AC) -p $@ webserv.system sys 0 < ../apple2enh/loader.system + java -jar $(AC) -cc65 $@ webserv bin < ../../examples/webserver/webserver-example.apple2enh + java -jar $(AC) -p $@ telnetd.system sys 0 < ../apple2enh/loader.system + java -jar $(AC) -cc65 $@ telnetd bin < ../../examples/telnet-server/telnet-server.apple2enh + java -jar $(AC) -p $@ cs8900a.eth rel 0 < ../../cpu/6502/ipconfig/cs8900a.eth + java -jar $(AC) -p $@ lan91c96.eth rel 0 < ../../cpu/6502/ipconfig/lan91c96.eth + java -jar $(AC) -p $@ a2e.stdmou.mou rel 0 < $(CC65_HOME)/mou/a2e.stdmou.mou + java -jar $(AC) -p $@ index.htm bin 0 < ../../examples/webserver/httpd-cfs/index.htm + java -jar $(AC) -p $@ backgrnd.gif bin 0 < ../../examples/webserver/httpd-cfs/backgrnd.gif + java -jar $(AC) -p $@ contiki.gif bin 0 < ../../examples/webserver/httpd-cfs/contiki.gif + java -jar $(AC) -p $@ notfound.htm bin 0 < ../../examples/webserver/httpd-cfs/notfound.htm + $(eval $(call makes,atari)) +atari: contiki-atari-1.atr contiki-atari-2.atr contiki-atari-3.atr contiki-atari-4.atr + contiki-atari-1.atr: atari-makes mkdir atr cp ../atari/dos.sys atr/dos.sys @@ -185,6 +216,8 @@ contiki-atari-4.atr: atari-makes $(eval $(call makes,c64)) +c64: contiki-c64-1.d64 contiki-c64-2.d64 contiki-c64.d71 contiki-c64.d81 + contiki-c64-1.d64: c64-makes $(C1541) -format contiki-1,00 d64 $@ $(C1541) -attach $@ -write ../c64/default.cfg contiki.cfg,u @@ -255,6 +288,8 @@ contiki-c64.d81: c64-makes $(eval $(call makes,c128)) +c128: contiki-c128-1.d64 contiki-c128-2.d64 contiki-c128.d71 contiki-c128.d81 + contiki-c128-1.d64: c128-makes $(C1541) -format contiki-1,00 d64 $@ $(C1541) -attach $@ -write ../c128/default.cfg contiki.cfg,u diff --git a/tools/apple2enh/prodos.2mg b/tools/apple2enh/prodos.2mg new file mode 100644 index 0000000000000000000000000000000000000000..ed32e7a381f05927a062794e1832e5b3cb58e267 GIT binary patch literal 819200 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