diff --git a/rom4x/B1_E400_new_bootfail.s b/rom4x/B1_E400_new_bootfail.s index 34e6316..ca5dc5d 100644 --- a/rom4x/B1_E400_new_bootfail.s +++ b/rom4x/B1_E400_new_bootfail.s @@ -4,7 +4,7 @@ ldx #msglen lp1: lda bootmsg,x ora #$80 - sta $7d0+19-msglen/2,x + sta $7d0+19-( [:clean, :assemble, :build_rom] do sh "ls -l #{dest_rom}" end -desc "Clean object files" +task :zip => [:clean, :assemble, :build_zip] do + sh "ls -l #{dest_rom}" +end + +desc 'Clean object files' task :clean do sh "rm -f #{dest_rom}" sh "rm -f sf512_#{dest_rom}" sh "rm -f *.o" sh "rm -f *.lst" sh "rm -f *.b" + sh "rm -f rom.sha256" + sh "rm -f make_rom.sh" + sh "rm -f #{distzip}" +end + +desc 'Obtain ROM' +rule source_rom do + require 'open-uri' + + puts "Downloading ROM..." + + File.open(source_rom, "wb") do |romfile| + open(rom_url) do |wwwfile| + romfile.write(wwwfile.read) + end + end +end + +desc "Verify ROM Checksum" +task :checksum_rom => source_rom do + require 'digest' + + sha256 = Digest::SHA256.file source_rom + fail "ROM checksum failed" unless sha256.hexdigest == source_rom_sha256 + puts "Source ROM appears correct!" end desc "Assemble all source files" @@ -30,7 +62,7 @@ rule ".b" => ".o" do |t| end desc "Build ROM" -task :build_rom => [:assemble] do +task :build_rom => [:assemble, :checksum_rom] do puts "Building ROM image..." obj_files = Rake::FileList.new('*.b') rom = File.read(source_rom) @@ -62,3 +94,60 @@ task :sf512 => [:build_rom] do sh "cat #{dest_rom} #{dest_rom} > sf512_#{dest_rom}" end +desc "Build disributable ZIP" +task :build_zip => [:build_rom] do + require 'digest' + require 'date' + + sha256 = Digest::SHA256.file dest_rom + shafile = < #{source_rom} +elif [ -e `which wget` ]; then + wget -O #{source_rom} "${ROM_URL}" +else + echo "Can't download source ROM image!" +fi +cp #{source_rom} #{dest_rom} +#{dd_cmds.join("\n")} +if [ -e `which shasum` ]; then + shasum -a 256 -c rom.sha256 +elif [ -e "sha256sum" ]; then + sha256sum -c rom.sha256 +else + echo "Please check the .bin files against rom.sha256" +fi +echo "#{dest_rom} created!" +EOF + + File.write('rom.sha256', shafile) + File.write('make_rom.sh', script) + + sh "zip #{distzip} rom.sha256 make_rom.sh" +end diff --git a/rom5x/Rakefile b/rom5x/Rakefile index a8877e7..1aef4de 100644 --- a/rom5x/Rakefile +++ b/rom5x/Rakefile @@ -1,5 +1,8 @@ -source_rom = "iic+_rom5.bin" -dest_rom = "iic+_rom5x.bin" +rom_url = 'https://mirrors.apple2.org.za/Apple%20II%20Documentation%20Project/Computers/Apple%20II/Apple%20IIc%20plus/ROM%20Images/Apple%20IIc%20plus%20ROM%2005%20-%20342-0625-A%20-%201988.bin' +source_rom = 'iic+_rom5.bin' +source_rom_sha256 = '5a62070f6a0b07784681d4df4bf2ce88b2809bec0cbaa65fcb963e804ed60374' +dest_rom = 'iic+_rom5x.bin' +distzip = 'iic+_rom5x.zip' rom_base = 0xc000 source_files = Rake::FileList.new('*.s') @@ -9,6 +12,10 @@ task :default => [:clean, :assemble, :build_rom] do sh "ls -l #{dest_rom}" end +task :zip => [:clean, :assemble, :build_zip] do + sh "ls -l #{dest_rom}" +end + desc "Clean object files" task :clean do sh "rm -f #{dest_rom}" @@ -18,6 +25,31 @@ task :clean do sh "rm -f *.b" sh "rm -f accel5x" sh "rm -f POOF1 *.po" + sh "rm -f rom.sha256" + sh "rm -f make_rom.sh" + sh "rm -f #{distzip}" +end + +desc 'Obtain ROM' +rule source_rom do + require 'open-uri' + + puts "Downloading ROM..." + + File.open(source_rom, "wb") do |romfile| + open(rom_url) do |wwwfile| + romfile.write(wwwfile.read) + end + end +end + +desc "Verify ROM Checksum" +task :checksum_rom => source_rom do + require 'digest' + + sha256 = Digest::SHA256.file source_rom + fail "ROM checksum failed" unless sha256.hexdigest == source_rom_sha256 + puts "Source ROM appears correct!" end desc "Assemble all source files" @@ -32,7 +64,7 @@ rule ".b" => ".o" do |t| end desc "Build ROM" -task :build_rom => [:assemble] do +task :build_rom => [:assemble, :checksum_rom] do puts "Building ROM image..." obj_files = Rake::FileList.new('*.b') rom = File.read(source_rom) @@ -76,3 +108,61 @@ task :"accel5x.po" => [:accel5x] do sh "mv -f POOF1 accel5x.po" end +desc "Build disributable ZIP" +task :build_zip => [:build_rom] do + require 'digest' + require 'date' + + sha256 = Digest::SHA256.file dest_rom + shafile = < #{source_rom} +elif [ -e `which wget` ]; then + wget -O #{source_rom} "${ROM_URL}" +else + echo "Can't download source ROM image!" +fi +cp #{source_rom} #{dest_rom} +#{dd_cmds.join("\n")} +if [ -e `which shasum` ]; then + shasum -a 256 -c rom.sha256 +elif [ -e "sha256sum" ]; then + sha256sum -c rom.sha256 +else + echo "Please check the .bin files against rom.sha256" +fi +echo "#{dest_rom} created!" +EOF + + File.write('rom.sha256', shafile) + File.write('make_rom.sh', script) + + sh "zip #{distzip} rom.sha256 make_rom.sh" +end +