# Sample sys161.conf file
#
# This file tells System/161 what devices to use.
#
# There are 32 LAMEbus slots on the System/161 motherboard. There may
# be only one bus controller card, and it must go in slot 31. Other
# than that, you can put in whatever devices you want.
#
# The syntax is simple: one slot per line; the slot number goes first,
# then the expansion card name, then any arguments. Some of the devices
# have required arguments.
#
# The devices are:
#
#   mainboard The multiprocessor LAMEbus controller card. Must go in
#             slot 31, and only in slot 31. Required argument
#             "ramsize=NUMBER" specifies the amount of physical RAM in
#             the system. This amount must be a multiple of the
#             hardware page size (which is probably 4096 or 8192.) The
#             maximum amount of RAM allowed is 16M; this restriction
#             is meant as a sanity check and can be altered by
#             recompiling System/161. The argument "cpus=NUMBER"
#             selects the number of CPUs; the default is 1 and the
#             maximum 32.
#
#   oldmainboard  The uniprocessor LAMEbus controller card, fully
#             backwards compatible with OS/161 1.x. In general,
#             uniprocessor kernels should nonetheless work on the
#             multiprocessor mainboard; therefore this device will
#             probably be removed in the future. Configuration is the
#             same as the multiprocessor mainboard, except that the
#             "cpus" argument is not accepted. The OS/161 1.x name
#             "busctl" is an alias for "oldmainboard".
#
#   trace     The System/161 trace controller device. This can be used
#             by software for various debugging purposes. You can have
#             more than one trace card, but they all manipulate the 
#             same internal state. No arguments.
#
#   timer     Countdown timer. The timer card also contains a real-time 
#             clock and a small speaker for beeping. Most configurations
#             will include at least one timer. No arguments. 
#
#   serial    Serial port. This is connected to the standard input and
#             standard output of the System/161 process, and serves as
#             the system console. Most configurations need this. There
#             is no support at present for more than one serial port.
#             No arguments.
#
#   screen    Full-screen memory-mapped text video card. This is 
#             connected to the standard input and standard output of
#             the System/161 process, and serves as the system console.
#             There is no support at present for more than one screen.
#             Likewise, at present you may not use "screen" and "serial"
#             together. No arguments. NOTE: not presently implemented.
#
#   random    (Pseudo-)random number generator. This accesses the 
#             randomizer state within System/161; thus, while you can
#             add multiple random cards, they all return values from the
#             same pseudorandom sequence. The random seed is set by 
#             using either the "seed=NUMBER" argument, which sets the
#             random seed to a specified value, or the "autoseed" 
#             argument, which sets the random seed based on the host
#             system clock. If neither argument is given or no random
#             device is used, the seed is set to 0. Note that the seed
#             affects various randomized behavior of the system as well
#             as the values provided by the random device.
#
#   disk      Fixed disk. The options are as follows:
#                 rpm=NUMBER         Set spin rate of disk.
#                 sectors=NUMBER     Set disk size. Each sector is 512 bytes.
#                 file=PATH          Specify file to use as storage for disk.
#                 paranoid           Set paranoid mode.
#
#             The "file=PATH" argument must be supplied. The size must be
#             at least 128 sectors (64k), and the RPM setting must be a
#             multiple of 60.
#
#             The "paranoid" argument, if given, causes fsync() to be 
#             called on every disk write to make sure the data written
#             reaches actual stable storage. This will make things very 
#             slow.
#
#             You can have as many disks as you want (until you run out
#             of slots) but each should have a distinct file to use for
#             storage. Most common setups will use two separate disks,
#             one for filesystem storage and one for swapping.
#
#   nic       Network card. This allows communication among multiple
#             simultaneously-running copies of System/161. The arguments
#             are:
#                 hub=PATH           Give the path to the hub socket.
#                 hwaddr=NUMBER      Specify the hardware-level card address.
#
#             The hub socket path should be the argument supplied to the
#             hub161 program. The default is ".sockets/hub".
#
#             The hardware address should be unique among the systems 
#             connected to the same hub. It should be an integer between 
#             1 and 65534. Values 0 and 65535 are reserved for special
#             purposes. This argument is required.
#
#             NOTE: disable (comment out) nic devices if you aren't 
#             actively using them, to avoid unnecessary overhead.
#
#   emufs     Emulator filesystem. This provides access *within* 
#             System/161 to the filesystem that System/161 is running
#             in. There is one optional argument, "dir=PATH". The path
#             specified is used as the root of the filesystem provided
#             by emufs. (Note that it is possible to access the real 
#             parent of this root and thus any other directory; this
#             argument does not restrict access.) The default path is
#             ".", meaning System/161's own current directory.
#

#
# Here is a suggested default configuration at UNSW: 16M RAM,  no disks.
#

0	serial
#0	screen

1	emufs

#2	disk	rpm=7200	sectors=10240	file=DISK1.img
#3	disk	rpm=7200	sectors=10240	file=DISK2.img

#27	nic hwaddr=1

28	random seed=1
#28	random autoseed
29	timer
30	trace
31	mainboard  ramsize=16777216  cpus=1
