#!/bin/rc

loader=/386/9load
pbs=/386/pbslba
mbr=/386/mbr
kernel=/amd64/9cpu

fn fail{
	if(! ~ $#* 0)
		echo mkcpuboot: $*
	exit fail
}

flagfmt='l loader,p pbs,m mbr,k kernel'
args='drive'
if(! ifs=() eval `{aux/getflags $*} || ! ~ $#* 1){
	aux/usage
	exit usage
}
if(! test -d $1 || ! test -f $1/data){
	fail disk $1 not found
}

if(! ~ $#flagl 0)
	loader=$flagl
if(! ~ $#flagp 0)
	pbs=$flagp
if(! ~ $#flagm 0)
	mbr=$flagm
if(! ~ $#flagk 0)
	kernel=$flagk
d=$1

disk/mbr -m $mbr $d/data || fail
disk/fdisk -abw $d/data || fail
{
	echo a 9fat 0 0x5000
	echo a nvram 0x5000 0x5001
	# echo a fsconfig 0x5040 0x5060
	test -x extraparts && extraparts
	echo w
	echo q
} | disk/prep -b $d/plan9 || fail

bl=`{basename $loader}
bk=`{basename $kernel}

test -d 9fat || fatal no 9fat directory in cwd
extra=`{ls -p 9fat/* | grep -v '^(' ^ $bl ^ '|plan9.ini|' ^ $bk ^ ')'}
if(! test -f 9fat/$bl)
	cp $loader 9fat/ || fail
if(! test -f 9fat/$bk)
	cp $kernel 9fat/ || fail
if(! test -f 9fat/plan9.ini)
	fail missing required 9fat files
disk/format -b $pbs -d -r 2 $d/9fat \
	9fat/^($bl plan9.ini $bk $extra) || fail
nvram=$d/nvram auth/wrkey
