Charles.Forsyth20060303644188019 years agoHistory
93 lines · 1.8 KB · Brainfuck
RawDownload
implement Init;## init program for native inferno, generic pc version#include "sys.m";sys: Sys;FD, Connection, sprint, Dir: import sys;print, fprint, open, bind, mount, dial, sleep, read, chdir: import sys; include "draw.m";draw: Draw;Context: import draw; include "keyring.m";kr: Keyring; Init: module{	init:	fn();}; Shell: module{	init:	fn(ctxt: ref Context, argv: list of string);}; init(){ 	sys = load Sys Sys->PATH;	stdin := sys->fildes(0);	kr = load Keyring Keyring->PATH; 	sys->print("**\n** Inferno\n** Vita Nuova\n**\n"); 	sys->print("Setup boot net services ...\n"); 	#	# Setup what we need to call a server and	# Authenticate	#	sys->print("Bind console ...\n");	bind("#c", "/dev", sys->MAFTER); 	setsysname();	print("Standalone mode\n");	#	# default namespace	#	sys->unmount(nil, "/dev");	bind("#p", "/prog", sys->MREPL);		# prog device	sys->bind("#d", "/fd", Sys->MREPL);	bind("#c", "/dev", sys->MBEFORE);		# console	bind("#m", "/dev", sys->MAFTER);		# mouse setup device	bind("#t", "/dev", sys->MAFTER);		# serial device 	mouse := load Shell "/dis/mouse.dis";	if (mouse != nil) {		print("Setting up mouse\n");		mouse->init(nil, "/dis/mouse.dis" :: nil);		mouse = nil;	} 	# create fake nameserver db that can be written to later	ramfile := load Shell "/dis/ramfile.dis";	if (ramfile != nil) {		ramfile->init(nil, "/dis/ramfile.dis" :: "/services/dns/db" :: "" :: nil);		ramfile = nil;	} 	print("Console...\n");	shell := load Shell "/dis/sh.dis";	if(shell == nil) {		print("init: load /dis/sh.dis: %r\n");		exit;	}	print("starting shell\n");	shell->init(nil, "/dis/sh.dis" :: nil);	print("shell exited, bye bye\n");}  ## Set system name from nvram#setsysname(){	fds := open("/dev/sysname", sys->OWRITE);	if(fds == nil)		return;	buf := array of byte "genericpc";	sys->write(fds, buf, len buf);}