view scripts/bundi @ 3210:6353bb024571

Created makefile and defsfile for NoCan RAMMER module driver and descriptor Updated rammer.asm in the NoCan driver folder to build the NoCan version of the Driver Updated r0.asm file to create the 6MB version of the descriptor. The makefile creates a disk image with two sets of the required drivers for the 6309 and 6809's in their respective module folders. /NITROS9/6309_L2/MODULES/RBF for the 6309 files and /NITROS9/6809_L2/MODULES/RBF for the 6809 files. This will make it easier for doing a dsave from this disk image into a normal distro disk image so people have these drivers ready for when new memory upgrades allow compatible usage of the NoCan registers.
author David Ladd <drencor-xeen@users.sourceforge.net>
date Wed, 20 Dec 2017 15:15:49 -0600
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";