Mercurial > hg > Members > kono > nitros9-code
view scripts/bundi @ 2143:d73ef8872d87
Updated standard.bl for SuperBoard descs, added W8-W15
author | boisy |
---|---|
date | Mon, 18 Feb 2008 14:04:33 +0000 |
parents | 1e312b144f4d |
children |
line wrap: on
line source
#!/usr/bin/perl # # BUNDI - Build the Ultimate NitrOS-9 Disk Image # # This script builds the ULTIMATE NitrOS-9 disk image, # complete with HDB-DOS drives! # # The resulting image has a NitrOS-9 partition and an HDB-DOS partition. # The first drive of the HDB-DOS partition is the HDB-DOS distribution # diskette. The last drive is the NitrOS-9 boot disk. # # Size of image is 90,624 256-byte sectors, which fits in # $00B100 OS-9 Offset in HDB-DOS use IO::File; use POSIX qw(tmpnam); # # ATTENTION! Set the HDB-DOS offset in your HDB-DOS ROM here! (must be in decimal) $hdbdos_offset = 45312; # 0x00B100 # ATTENTION! Set the number of HDB-DOS virtual disks (must be in decimal) $num_hdbdos_disks = 128; $NITROS9DIR = $ENV{'NITROS9DIR'}; $CLOUD9DIR = $ENV{'CLOUD9DIR'}; $DISTRO = "6809l2"; # Check for proper number of arguments $numargs = $#ARGV + 1; if ($numargs != 4) { print "Usage: bundi <bootlist> <tracklist> <diskname> <distro>\n"; exit; } $bootlist = $ARGV[0]; $tracklist = $ARGV[1]; $diskname = $ARGV[2]; $DISTRO = $ARGV[3]; printf("Building '%s' distribution onto '%s'\n", $DISTRO, $diskname); $multiplier = 2; $os9_sectors = $hdbdos_offset * $multiplier; printf("Number of sectors: %d\n", $os9_sectors); $hdb_drives = $num_hdbdos_disks - 3; print "########## PART I ##########\n"; print "# #\n"; print "# Assemble EVERYTHING! #\n"; print "# #\n"; print "#############################\n\n"; print "Step 1 - Making the ENTIRE NitrOS-9 Project (could take a while)...\n"; #system("cd $NITROS9DIR; make dsk>&/dev/null"); print "Step 2 - Making the HDB-DOS Product...\n"; system("cd $CLOUD9DIR/Products/HDB-DOS/Software; make dsk>&/dev/null"); print "Step 3 - Making the Ved Product...\n"; system("cd $ENV{'CLOUD9DIR'}/Products/Ved/Software; make dsk>&/dev/null"); print "########## PART II ##########\n"; print "# #\n"; print "# Prepare the Disk Image #\n"; print "# #\n"; print "#############################\n\n"; print "Step 1 - Format the disk and make the boot disk\n"; system("os9 format -qe -l$os9_sectors tmp.dsk"); # Read bootlist file and expand any variables open(FILE, "$bootlist") or die ("Unable to open $bootlist"); @bootarray = <FILE>; close(FILE); foreach $element (@bootarray) { if (($element =~ /^#/) || ($element =~ /^\*/)) { $element = ""; } else { $element =~ s/\$(\w+)/${$1}/g; $element =~ s/\s+$//; } } $bls = "@bootarray"; system("cat $bls>bootfile"); # Read tracklist file and expand any variables open(FILE, "$tracklist") or die ("Unable to open $tracklist"); @trackarray = <FILE>; close(FILE); foreach $element (@trackarray) { if (($element =~ /^#/) || ($element =~ /^\*/)) { $element = ""; } else { $element =~ s/\$(\w+)/${$1}/g; $element =~ s/\s+$//; } } $tls = "@trackarray"; system("cat $tls>trackfile"); system("os9 padrom 4608 trackfile"); system("os9 gen -b=bootfile -t=trackfile tmp.dsk>&/dev/null"); system("os9 copy -o=0 $NITROS9DIR/$DISTRO/modules/sysgo_dd tmp.dsk,sysgo"); system("os9 attr tmp.dsk,sysgo -epepr"); system("os9 dsave -e $NITROS9DIR/$DISTRO/nos9"."$DISTRO"."_80d.dsk, tmp.dsk, >&/dev/null"); system("os9 dsave -e $NITROS9DIR/3rdparty/packages/uucpbb/uucpbb21_6309.dsk, tmp.dsk, >&/dev/null"); system("os9 dsave -e $NITROS9DIR/3rdparty/packages/cc/cc.dsk, tmp.dsk, >&/dev/null"); system("os9 dsave -e $NITROS9DIR/3rdparty/packages/basic09/basic09v010100.dsk, tmp.dsk, >&/dev/null"); system("os9 dsave -e $CLOUD9DIR/Products/Ved/Software/ved.dsk, tmp.dsk, >&/dev/null"); system("os9 format -qe -ss -dd boot.dsk"); system("os9 gen -b=bootfile -t=trackfile boot.dsk>&/dev/null"); print "Step 2 - Build the HDB-DOS drives\n"; system("rm hdbdrives.dsk"); system("decb dskini -h$hdb_drives hdbdrives.dsk"); system("rm hdbdrives2.dsk"); system("cat $CLOUD9DIR/Products/HDB-DOS/Software/hdbdos.dsk hdbdrives.dsk $CLOUD9DIR/Products/SuperIDE/Distributions/v1.0/superide.dsk boot.dsk>hdbdrives2.dsk"); system("rm hdbdrives.dsk boot.dsk"); system("decb hdbconv hdbdrives2.dsk hdbdrives.dsk"); system("rm hdbdrives2.dsk"); print "Step 3 - Put it all together\n"; system("rm $diskname"); system("cat tmp.dsk hdbdrives.dsk>$diskname"); system("rm tmp.dsk hdbdrives.dsk"); print "Ok, we're done! The file $diskname is now a fresh disk image.\n";