xref: /plan9-contrib/rc/bin/pc/bootwin9x (revision 223a736ebd2849388a6a0145cd1e22a96bd28460)
1*223a736eSDavid du Colombier#!/bin/rc
2*223a736eSDavid du Colombier
3*223a736eSDavid du Colombierdosdisk=`{ls /dev/sd??/dos >[2]/dev/null | sed 1q | sed 's!.*/(.*)/dos!\1!'}
4*223a736eSDavid du Colombierif(~ $#dosdisk 0 || ! c: || ! test -f /n/c:/autoexec.bat || ! test -f /n/c:/config.sys) {
5*223a736eSDavid du Colombier	echo 'Could not find autoexec.bat or config.sys on the first FAT disk.' >[1=2]
6*223a736eSDavid du Colombier	exit
7*223a736eSDavid du Colombier}
8*223a736eSDavid du Colombier
9*223a736eSDavid du Colombierfor (i in autoexec config msdos)
10*223a736eSDavid du Colombier	if(test -f /n/c:/$i.p9) {
11*223a736eSDavid du Colombier		echo 'A Plan 9 backup already exists; will not edit system files again.' >[1=2]
12*223a736eSDavid du Colombier		exit
13*223a736eSDavid du Colombier	}
14*223a736eSDavid du Colombier
15*223a736eSDavid du Colombierfor (i in autoexec.bat config.sys msdos.sys)
16*223a736eSDavid du Colombier	if(! cp /n/c:/$i /n/c:/^`{echo $i | sed 's/\.(bat|sys)$/.p9/'}) {
17*223a736eSDavid du Colombier		echo 'Could not back up '^$i^'; will not continue.' >[1=2]
18*223a736eSDavid du Colombier		exit
19*223a736eSDavid du Colombier	}
20*223a736eSDavid du Colombier
21*223a736eSDavid du Colombierif(! test -d /n/c:/plan9 && ! mkdir /n/c:/plan9) {
22*223a736eSDavid du Colombier	echo 'Could not create directory /n/c:/plan9.' >[1=2]
23*223a736eSDavid du Colombier	exit
24*223a736eSDavid du Colombier}
25*223a736eSDavid du Colombier
26*223a736eSDavid du Colombierif(! cp /386/^(9load ld.com) /386/9pcdisk /n/c:/plan9) {
27*223a736eSDavid du Colombier	echo 'Could not copy Plan 9 boot files into /n/c:/plan9.' >[1=2]
28*223a736eSDavid du Colombier	exit
29*223a736eSDavid du Colombier}
30*223a736eSDavid du Colombier
31*223a736eSDavid du Colombierchmod +w /n/c:/autoexec.bat /n/c:/config.sys /n/c:/msdos.sys
32*223a736eSDavid du Colombier
33*223a736eSDavid du Colombierif(grep -si 'Plan ?9' /n/c:/config.sys || grep -si 'Plan ?9' /n/c:/autoexec.bat) {
34*223a736eSDavid du Colombier	echo 'Plan 9 entries already in config.sys or autoexec.bat.' >[1=2]
35*223a736eSDavid du Colombier	echo 'Not changing them; refer to Plan 9 install documentation' >[1=2]
36*223a736eSDavid du Colombier	echo 'to configure manually.' >[1=2]
37*223a736eSDavid du Colombier	exit
38*223a736eSDavid du Colombier}
39*223a736eSDavid du Colombier
40*223a736eSDavid du Colombierif(! grep -si '\[menu\]' /n/c:/config.sys) {
41*223a736eSDavid du Colombier	{
42*223a736eSDavid du Colombier		echo 1
43*223a736eSDavid du Colombier		echo i
44*223a736eSDavid du Colombier		echo '[menu]
45*223a736eSDavid du Colombier'
46*223a736eSDavid du Colombier		echo 'menuitem=windows, Windows
47*223a736eSDavid du Colombier'
48*223a736eSDavid du Colombier		echo 'menudefault=windows
49*223a736eSDavid du Colombier'
50*223a736eSDavid du Colombier		echo '
51*223a736eSDavid du Colombier'
52*223a736eSDavid du Colombier		echo '[common]
53*223a736eSDavid du Colombier'
54*223a736eSDavid du Colombier		echo '
55*223a736eSDavid du Colombier'
56*223a736eSDavid du Colombier		echo '[windows]
57*223a736eSDavid du Colombier'
58*223a736eSDavid du Colombier		echo .
59*223a736eSDavid du Colombier		echo w
60*223a736eSDavid du Colombier		echo q
61*223a736eSDavid du Colombier	} | ed /n/c:/config.sys >/dev/null >[2]/dev/null
62*223a736eSDavid du Colombier}
63*223a736eSDavid du Colombier
64*223a736eSDavid du Colombier{
65*223a736eSDavid du Colombier	echo 1
66*223a736eSDavid du Colombier	echo '/\[[Mm][Ee][Nn][Uu]\]'
67*223a736eSDavid du Colombier	echo '?^[Mm][Ee][Nn][Uu][Ii][Tt][Ee][Mm]='
68*223a736eSDavid du Colombier	echo a
69*223a736eSDavid du Colombier	echo 'menuitem=plan9, Plan 9 from Bell Labs
70*223a736eSDavid du Colombier'
71*223a736eSDavid du Colombier	echo .
72*223a736eSDavid du Colombier	echo '$'
73*223a736eSDavid du Colombier	echo a
74*223a736eSDavid du Colombier	echo '
75*223a736eSDavid du Colombier'
76*223a736eSDavid du Colombier	echo '[plan9]
77*223a736eSDavid du Colombier'
78*223a736eSDavid du Colombier	echo '
79*223a736eSDavid du Colombier'
80*223a736eSDavid du Colombier	echo .
81*223a736eSDavid du Colombier	echo w
82*223a736eSDavid du Colombier	echo q
83*223a736eSDavid du Colombier} | ed /n/c:/config.sys >/dev/null >[2]/dev/null
84*223a736eSDavid du Colombier
85*223a736eSDavid du Colombier{
86*223a736eSDavid du Colombier	echo 1
87*223a736eSDavid du Colombier	echo i
88*223a736eSDavid du Colombier	echo '@echo off
89*223a736eSDavid du Colombier'
90*223a736eSDavid du Colombier	echo 'if %config%==plan9 goto plan9
91*223a736eSDavid du Colombier'
92*223a736eSDavid du Colombier	echo 'goto notplan9
93*223a736eSDavid du Colombier'
94*223a736eSDavid du Colombier	echo ':plan9
95*223a736eSDavid du Colombier'
96*223a736eSDavid du Colombier	echo 'plan9\ld '^$dosdisk^'!dos!plan9/9load
97*223a736eSDavid du Colombier'
98*223a736eSDavid du Colombier	echo ':notplan9
99*223a736eSDavid du Colombier'
100*223a736eSDavid du Colombier	echo .
101*223a736eSDavid du Colombier	echo w
102*223a736eSDavid du Colombier	echo q
103*223a736eSDavid du Colombier} | ed /n/c:/autoexec.bat >/dev/null >[2]/dev/null
104*223a736eSDavid du Colombier
105*223a736eSDavid du Colombierfn zeroopt {
106*223a736eSDavid du Colombier	if(grep -s '^'^$1^'=1' /n/c:/msdos.sys) {
107*223a736eSDavid du Colombier		{
108*223a736eSDavid du Colombier			echo '/^'^$1^'=1/s/=1/=0/'
109*223a736eSDavid du Colombier			echo w
110*223a736eSDavid du Colombier			echo q
111*223a736eSDavid du Colombier		} | ed /n/c:/msdos.sys >/dev/null >[2]/dev/null
112*223a736eSDavid du Colombier	}
113*223a736eSDavid du Colombier	if not if (grep -s '^'^$1^'=0' /n/c:/msdos.sys)
114*223a736eSDavid du Colombier		;
115*223a736eSDavid du Colombier	if not {
116		{
117			echo 1
118			echo i
119			echo '[Options]
120'
121			echo 'Logo=0
122'
123			echo .
124			echo w
125			echo q
126		} | ed /n/c:/msdos.sys >/dev/null >[2]/dev/null
127	}
128}
129
130if(grep -si '^\[paths\]' /n/c:/msdos.sys){	# Windows 9x rather than DOS
131	zeroopt Logo
132}
133
134exit
135