 |
PENIX man pages
ForwardThe following words are not mine - they were written by Nikolai Kingsley and belong to him and him alone. Unfortunately, the pages that were hosting the PENIX man pages vanished from the interwebs some time ago, and it was only by chance that I managed to find a backup copy of them. I feel obliged to reproduce them here as they really are brilliant :-)
Contents
OverviewWhat is Penix?
Penix is that way-cool multitasking Operating System that's a bit
like that other one you might have heard of.. you know, the one
that has the Interthingy running on it. Needlessly complex and
given to falling over at the drop of a hat.
Commands:
cfts completely fuck the system
rcatpar randomly change all the passwords at random
wi whatyouseeisprettypathetic interactiveEditor
edmond page-oriented editor. a step down from a
line-editor, this one treats text as page-sized
chunks.
rofl roll on floor laughing. not so much a system
functions as what the support staff do when you
ask them if they still have last week's backups
on tape somewhere.
ispi shows some of the processes running, some of the
users on the other lines, and sometimes even
gives statistics on CPU usage. it's very
context-sensitive.
sssl suddenly exchange serial lines with another user
pong let the other machines on the net know that
you're there
exorcise terminate a daemon process completely and
utterly. kill it off, every last trace. we're
not kidding here. finito.
Common Penix terms:
walnut the heart of the Penix OS. at compilation, it is
approximately 71 megabytes in size (depending on
whether you have the development system or not),
but this figure regularly oscillates between 67
meg and 8 gig, as the system `breathes'.
It was written in interpreted BASIC, for ease of
modification.
daemon a process that detaches itself from your console
session. unless you redirect the output from
this daemon into a specified file, any output
produced will appear out of various serIOus
lines on the system at the daemon's discretion.
you can terminate a daemon with the exorcise -X
function.
aengel like a daemon, except a bit more polite. an
aengel process will ask before it directs output
to your serIOus line. it will generally do it
anyway, but at least it asks first.
nyemph a daemon process that can migrate from one file
system to another, and will do so if its output
has filled the filesystem that it started on.
slippery little buggers.
maenad like a nyemph task, but a little bit more
attractive.
sprite a very simple background task that does menial
things like flash the cursor colours, play the
sampled `beep' sound when you press control-g on
the keyboard, and make that annoying click on
the floppy drive as the OS checks to see if you
have put in a disk yet.
goelem a very powerful background task. also very
stupid. they are usually started by the system
itself, when the need arises to do something
labour-intensive and boring - so boring, in
fact, than none of the usual background tasks
will touch it. you occasionally find goelem
tasks wandering around after they have finished
their task, too stupid to realise that they HAVE
finished; pretty much all you can do about it is
allocate them a very low time-slice (see the
`motu' command) and hope that they don't get
into any trouble.
caenobites this is something we aren't particularly proud
of here at Sunburne, but we think that you
should know about, in the interests of safety.
we will admit that the circumstances that led us
to developing Penix are slightly unusual, and
that there is quite a bit about this system that
was, er, inherited. We're not saying that we
stole it. but there are large areas of this
system that we know nothing about, but which,
when we remove them, the system stop altogether.
we don't know exactly what caenobite tasks do,
but we have found that you can't kill them; you
can't stop them; you can't even slow them down.
whenever we use the motu command to alter their
timeslice, they completely ignore it (this may
be due to the fact that we think motu's orders
are passed to the rest of the system by the
caenobite tasks). a caenobite task can be
incited to remove other tasks by passing it a
BOX_OPEN message packet, but they are best left
alone. thank god there are usually only about
four of them.
networks the Penix network philosphy is based on a
`Master/Slave' relationship. Systems can be
linked into networks that include hundred of
machines, but generally, inter-machine
communication is dominant/submissive. One
machine makes a begging, whimpering request for
a file from its `Dom', which must then establish
which of its `Subs' has the file. It then issues
a spank_IO order for the file; if the data
packet isn't sent within the system default
timeout period, the Dom issues a whip_IO. If
THAT doesn't work, the Dom grabs the nearest (by
address) Sub by its bus, shakes it silly, and
applies the logical equivalent of nipple-clips.
serviette a server with less than 300 meg of hard disk
space.
drooler printing is controlled by the drooler daemon,
who dribbles text out of the assigned printer
ports when it feels like it. if the drooling
process is going too slow for your liking, it
can be prompted by invoking any of the currently
running caenobytes.
Booting one does not re-BOOT a Penix system; it is
`re-shoed'. If you boot a Penix system, it will
fall apart. Reshoe-ing involves locating the
sock partition, socking it, then looking about
for something that resembles a shoe-block (a
disk-block with startup information on it). once
located, the shoe-block is overlaid onto the
sock partition and is `laced'. At the request of
our user, we have incorporated dual shoe
partitions, to enable disk mirroring. the System
must always be re-shoed from the same partition;
if you get the left-shoe and the right-shoe
partition mixed up, then after re-shoeing, the
system will take a few tottering steps and will
then fall over.
scanning the sock partition for a shoe block can be a time-consuming
process; if the entire hard disk had to be examined, it could take
days. an algorithm has been implemented that scans disk blocks at
random, on the assumption that there will be more than one shoe
block on the disk (this is a standard security feature - in fact,
more than half of the disk's b locks are usually allocated as
shoe-blocks, to save time when looking for one to shoe from).
example of console messages on booting
Penix v37.019a ROMrev 76:e_beta (development)
shoe in progress
locating sock partition
scanning SCSI bus *******
scanning st506 devices **
getting desperate
scanning floppy drives **
getting really desperate
scanning tape drive *
sock located on tape drive
scanning SCSI bus again ******
loading SCSI device driver
scanning for shoe block at RANDOM
....................................
....................................
....................................
.................... bingo
left shoe located at cyl:00.head:15.sec:16
loading shoe block
processing ......................................
............. ignoring checksum errror
overlaying sock partition
lacing **** shoe partition LACED, Booting
walnut located, processing ..... done
do you want to inhibit DAEMON processes at this time (default=n)? n
do you want to inhibit AENGEL processes at this time (default=n)? n
do you want to inhibit NYEMPH processes at this time (default=n)? n
do you want to inhibit MAENAD processes at this time (default=n)? n
do you want to inhibit SPRITE processes at this time (default=n)? n
do you want to inhibit CAENOBITE processes at this time (default=y)? y
too bad. you can't.
do you want to inhibit GOELEM processes at this time (default=n)? n
starting Daemons: spon spoo furph wrack wruin hobble
castrate whats_all_this_then drooler
starting Aengels: moroni goliad mikayel cefiar lucifer
starting Nyemphs: dom_net_prep dom_net_enquire TOPY_server
EN_server spk_server clock_DVA_server sK_pup_server
starting Maenads: *** Maenad table is empty
starting Sprites: cursor_flash keyboard_click
annoying_floppy_drive_noise
starting Goelems: lif_dat_wait tote_dat_bail
starting Caenobytes:
*** Caenobyte table is empty
this is a DOM net_device: initialising SpankIO WhipIO
initialising serIOus lines 000 001 002 003...
... and so on.
directories/filesystems
/uselss/little_black_book
network list of all machines in the Clique
/closet
list of filesystem devices, in format:
address device type
00000000 RAM
00000001 RAM
00000010 RAM
00000011 RAM
00000100 RAM
00000101 DEVICE: FLOPPY CONTROLLER...
/passwords
system password file. It has passwords in it.
/now_hear_this_you_scum
system login message.
/spew_bucket
Sysadmin's mail file
/lib
library files here
/libs
other library files here. if a process needs
a library file from here, you can guarrantee
that it's over in /uselss/lib instead.
/der
text files/notices here
/der/zorcho
insult packets
/der/ttbowl/
waste goes in here
/der/greeting_card
`oops' packets
/comp
executeables live here
/whoops_a_daisy
unallocated blocks here
/ho_hum
logfiles here
/trash
schedule tables for backgrounders
/ephemeral
temporary files
/ephemeral/what_the_hell_happened
System command log.
/help_files
the man entries would be here, but our user
thinks that `man' is sexist, so we called it
help_files.
/important/really_important
DO NOT REMOVE OR ALTER THIS FILE!
/mungle
not sure what this directory is for, but the
system won't run without it.
/thingies
utility programs and other stuff we haven't
documented yet.
/typical/who's_where
system task table
/who's_who
a duplicate of the system task table; used by
some programs but not all of them. when in
doubt refer to both task-tables and then
guess.
/keymaps/keymaps/keymaps/keymaps/spo0
Default keymap for wi.
/WinGE/danglements
default files for WinGE graphic images
/.snivel
default WinGE startup-script file
cftsCFTS(1) USER COMMANDS CFTS(1)
PENIX OPERATING SYSTEM DOCUMENTATION PENIX
NAME
cfts - emergency stop all processes
SYNOPSIS
cfts [ - ] cklnsvy [ dummy ] [ secs ] [ reason ]
DESCRIPTION
cfts brings the system to a complete halt within four seconds
of the command being issued at the rooted(c) console, or by any
serial terminal logged in under the `games' account. Any
background tasks, daemons, aengels, spraites, nyemphs and
maenads are terminated brutally and with no regard to whether
they were just about to close the file that they had been
writing to. Any accounts logged in when this command is issued
will be in a dubious state when the system is reshoed, and
unless the rooted(c) filesystem has either an even number of
bytes free or a number that is divisible by the sum of the
digits in the date and time when the command is issued, the
filesystem will be completely munged and the drive controllers
will be issued with a command that invariably drives the heads
into the platters with a sound like Freddy Krueger scratching a
blackboard. This command requires rooted(c) access, or the
knowledge that you can break out of the `games' account's menu
by typing control-p three times rapidly. The command can then
be issued from the `games' account's YEAH_SO_WHAT_NOW_SMARTARSE
prompt.
FUNCTION LETTERS
s The argument after the next argument specifies the number
of seconds until the event is to take place. This allows
the support staff to get clear of the system, bolt the
door and take the phone off the hook. The argument
directly after this is a dummy argument, usually `-1'; if
it is greater than 3, a message will be sent to all users,
either wishing them a happy birthday or asking them if
they have any albums by Gary Clail, depending on whether
the argument is odd or even. Any responses to the latter
will be appended to the file Gary_Clail_Responses in
uselss/der/ttbowl.
k klunk option. This crashes the session and does not
actually issue the cfts system call, so that you can
impress the girls with your bravery by daring to issue
this command safely with no more damage than locking up
the system console, requiring a system reshoe.
c This prevents the appearance of the `Are you really sure
that you want to do this? prompt.
y This prevents the appearance of the `Are you really,
really sure that you want to do this? prompt.
l This prevents the appearance of the `Look, I'm not
convinced that you should be playing with this command,
you know.' prompt.
n Notify. This requires the inclusion of a 63-character
alphanumeric string which will be displayed on every
serial terminal with a currently active session and will
be printed continuously on all system printers until the
filesystem dies (usually about thirty seconds after the
command is issued, depending on processor speed). It must
be used in conjunction with the s option, and therefore
must be preceeded by the `seconds' and `dummy' arguments,
otherwise we'd have to modify the code to check how many
arguments you issued with the command, and whenever we
tried to incorporate that feature in the code, it wouldn't
compile properly.
v Verbose mode. If this option is absent, you will see no
response to the command after the rooted(c) `%-) ' command
line prompt returns, until the command actually takes
effect. If present, you will see a whole stream of clever
messages on the rooted(c) console to the effect of `Ooh
Aah, you've done it now' and `Guess who's going to be
looking for a job next Monday, eh? :->'. Hoever,
inclusion of this option does ensure that the command log
file kept in ho_hum/what_the_hell_happened is trashed
before anything else, ensuring that no-one will ever know
that it was you who did it, unless you are silly enough to
get drunk at an office party and brag about it.
EXAMPLES
to Completely F**k The System:
%-) cfts vns 4 5 that's what you get for not giving me~
that payrise!
this will activate the verbose option, will notify the
users that the system will be unavailable in five
seconds (with the indicated message), and will ask
them if they have any Gary Clail albums.
FILES
/uselss/der/ttbowl/GaryClailResponses Usually empty, as not many
people can think that fast.
/ephemeral/what_the_hell_happened System command log. Contains
every single embarrassing
thing you ever typed on the
system console, from your
stupid attempts to break out
of the `Cosmic Ballcrushers'
game you inadvertently
started, to the archives you
made of those stories from
alt.sex.bestiality that you
got when the manager wasn't
looking.
/important/really_important this file doesn't have any
function, but no other penix
command mentions it, and as
it takes up almost four
megabytes, we thought that
we should mention it at
least once.
SEE ALSO
crp(1), bollx(1), stuffio(2), banan(5), drump(8), clrump(8),
flrump(3), doobrie(9), ftang(65534), pong(2), brap(12),
what_the_hell_was_that(0)
BUGS
Sometimes, the klunk option doesn't work.
If the command is issued on a Tuesday or a Thursday, there is a
twenty-one percent probability that the verbose option's
trashing of the /ho_hum/what_the_hell_happened system log will
be incomplete, leaving the last three lines intact.
The n option can be slow.
There is no way selectively to follow symbolic links. Then
again, there never is, really, so I don't know why we bother
mentioning it.
If you enter more than sixty-three characters for the notify
message, your console screen will explode and pepper your face
with nasty little glass splinters.
-----
Sunburne Computer, Inc. 9 October 1991
exorciseEXORCISE(1) USER COMMANDS EXORCISE(1)
PENIX OPERATING SYSTEM DOCUMENTATION PENIX
NAME
exorcise - remove unwanted background tasks
SYNOPSIS
exorcise [ - ] acdegilmnorsmCMRZ
DESCRIPTION
Exorcise is a more thorough and powerful version of kill; it
will automatically generate a list of all processes running and
terminate them. It also closes their files, disconnects any
network links they may have open and, if the process is
connected to a terminal, it will display a friendly message to
say that the process is about to be terminated. This process is
a Caenobite; once finished, it removes itself (sometimes) and
thus is the only example of a Caenobite task being capable of
being removed from the system.
FUNCTIONS
a All. Remove ALL processes, whether they be daemons,
goelems, maenads, dummies, ydyots, bananas, vegetables, or
even caenobites. This option will terminate the process
which is calling it, and even the process doing the
termination, so use it cautiously.
c Caenobites. Will attempt to distract any currently-running
caenobite processes by creating a BOX process and sending
it a BOX_OPEN packet. This will cause the BOX to open a
temporary file in /usr/leviathan/labyrinth, attracting the
attention of any caenobite processes on the system. Since
there isn't any actual way of terminating a caenobite
process, keeping them busy is the best we can do.
d Terminate daemons only.
e Enema option. Once the killed process has been deleted,
the disk-space allocated to its process control block is
flushed, filled with hexadecimal FFs and then emptied down
/dev/ttybowl.
g Terminate goelem processes only.
i Insipid option. This is a kind of filter that will only
terminate weak processes, the ones that don't really
deserve to survive or won't affect the system's performance
significantly. Very Darwinian, really. Handy for
terminating finished Goelems and lost sprites.
l Lost processes. This checks the addresses of each task
against their Loc_IDs in their Process Control Blocks. If
they differ significantly, the process is considered to be
lost and is terminated, excepting, of course, Caenobite
tasks, which generally do what they like.
m Terminate maenad processes only.
n Notify. Sends a `oops' packet to the task before killing
it.
o Terminate Ogre processes only.
r Rooted exclusion option. This will terminate any processes
not associated with the rooted(c) console.
s Terminate sprite processes only.
v Verbose option. Will send regular messages to the console,
reporting progress in removing tasks, up to the point that
the task removes itself.
C Clever option. Attempts to find illegaly-hidden processes
by going through the entire system disk, looking for
anything that might be a hidden process control block but
isn't in the task-table. The exorcise caenobite then
cleverly replaces the PCB with a replica, the only
difference being that the task_timeout field is set to 1
second, thus terminating the task almost immediately; if a
SerIOus line is attached to the task, a message is sent
down it, saying `Think you're pretty smart, don't you?
nyah!'
M Microcephalic option. Will remove any tasks whose process
control block is less than 2K in length.
N Terminate Nyemph processes only.
R Really Smart option. Will attempt to terminate specified
tasks by creating 1024 localised LNC (Logical Nipple Clip)
worm-processes. These mini-processes, ordinarily used for
kick-starting lost Spank_IO blocks between network
machines, will run through all available filesystems and
all active, allocated and unallocated memory, searching for
ANYTHING that even looks like it might even want to pretend
to be executeable code. The LNC reports the address of the
code to the Pinhead Caenobite process, who then proceeds to
write Zeroes over the specified address, within a range of
64K on either side of it, just to be sure. This is
generally regarded as a kind of Mutually-Assured-
Destruction sort of option, not to be used while showing
off to your girl- or boy-friend.
Z Zorch option. This doesn't actually terminate the
specified process, but instead insults it by passing it
message packets of a dubious nature.
EXAMPLES
to exorcise background processes:
exorcise -degnC
This will terminate any existing daemons, goelems and nyemphs,
flushing their PCBs down the ttybowl and will then conduct a
`Clever' search for illegal PCBs.
FILES
/uselss/der/zorcho Contains insult packets for use in
the Zorch option.
/uselss/der/greeting_card Contains a selection of `oops'
packets which can be sent to dying
processes as a form of consolation.
/typical/who's_where Table which relates active processes
to serIOus lines. referred to when
trying to identify legal processes.
/usr/leviathan/labyrinth This is where the caenobite processes
hang out, and is considered off-
limits to everyone, sysadmins
included. Any process who wanders
into here will be very sorry indeed.
SEE ALSO
bollx(1), crp(2), flrump(3), argle_bargle(3), ni(1), woof(5),
bwip_init(2), kill(3), mangle(2), assassinate(6), garrote(2),
castrate(2), kick_them_in_the_balls(1), tickle(4), knacker(1)
BUGS
Exorcise cannot touch LNC worms, as these tasks are actually
managed by the co-processors that operate the SerIOus lines and
have very little to do with the CPUs that run the rest of the
system.
The BOX process created with the c option is, in fact, a
caenobite process, which has the undesirable effect of
increasing the number of caenobite tasks by two, when the
general idea is to reduce them.
The n option can be slower than a wet week of sundays, and
generally is.
If the e (enema) and C (clever) options are specified together,
the result is invariably similar to that of formatting the
system disk. We've never been game enough to specify e, C and R
all at the same time. If anyone out there has tried it, we'd be
grateful if you could send us mail to tell us what happened.
There is still no way to follow symbolic links. Selectively,
that is. We are working on it, though.
Really. You do believe us, don't you?
-----
Sunburne Computer, Inc. 25 March 1992
filesystemThe Penix Filesystems
or:
Everything You'd Always Suspected About The Development
Team Was True
or:
Device Drivers? We doan need no steenkin' device drivers!
`I really have a secret satisfaction in being considered
rather mad.'
- William Heath Robinson
look, it's NOT THAT COMPLICATED, okay? it might seem that
way at first, but that's just a natural result of having
to cater for dozens of different hardware platforms and
hundreds of different devices. we've had enquiries from
people asking `how can i connect this Seagate Shoebox
10-meg hard drive to my machine with a Kellogs MFM
controller and get it working under Penix?' or `how can i
connect my cat to my SparcStation using BIG RED STRAPS?'
or `i've got my finger stuck in the floppy drive and is
there a Penix command to release it?'
honestly, some of you people mustn't have both oars in
the water.
Penix is very smart when it comes to alien hardware. it
simply formats itself over the top of whatever was there
and installs itself. we use the way-cool, cutting edge
procedure of evolutionary software to do this. it works
thusly:
i) you whack the hardware in the machine and make
sure the power cables are all connected;
ii) you turn the machine on, making sure you stand
well back from it in case it explodes in your
face;
iii) assuming that Penix boots without mishap, run
/thingies/voyeur.
this program (which was developed using exciting
fractal/cellular automata procedures rather than that
boring old `sitting down, drawing flow-charts, coding,
compiling and debugging' method) can sense what's inside
your machine simply by examining every address and
interrupt available to it, every peripheral and hook into
the memory-space. it knows from experience that RAM
reacts differently to W OM (write-only memory, and yes,
there is such a thing. the C-64 used to have it in its
custom sound chips, so there) and to ROM and actual
walking, talking, farting devices. once `voyeur' has
identified a potential device, it checks against
/useless/closet
to see if it has any record of it (the format of this
file is quite simple; each line stands for an address and
has the words `RAM', `WOM', `ROM', `FOM' or `DEVICE'
after the binary representation of the address it's at.
this might sound inefficient as far as disk space goes.
yes). having located a new device, `voyeur' then
proceeds to throw random strings of characters into it
while monitoring the surrounding 64 kilobytes around it,
in the hope that one of these addresses will be returning
some kind of status or error message, or even if we're
really lucky, data.
this all sounds terribly hit-and-miss, but believe us, it
works. eventually. having a really fast machine helps.
as soon as `voyeur' has established the command set for
this new device, whether it be SCSI tape drive, joystick,
mutant bastard sound-card, VR suit or
digitally-controlled Schmeisser sub-machine-gun, it
passes this data onto a goelem task called
WHELAN_THE_WRECKER, which then formats the device and
installs the standard territorial byte-markers which
identify the device as being part of the Penix filesystem
-hexadecimal 50, 45, 4E, 49, and 58, repeated four
kilobytes apart (the OS usually writes around these
markers). the device is then used for storage space,
added seamlessly and invisibly-to-the-user to the space
currently available. you might be surprised, but we've
had reports of people sucessfully storing all kinds of
data on all kinds of devices under Penix; one corporation
had all of its financial records for 1995 stored in the
S-registers of an internal modem although we would like
to make it clear that the Penix Development team does NOT
condone, under any circumstances, the concept of
connecting native wildlife to IDE adaptor cards in the
hope that they can be used to store data.
partyPARTY(1) USER COMMANDS PARTY(1)
PENIX OPERATING SYSTEM DOCUMENTATION PENIX
NAME
party - set OS responses mode
SYNOPSIS
party ON|OFF|WHEREIS [ - ] dnv
DESCRIPTION
Operating systems being what they are, the admin people can
easily grow tired of command responses that resemble dyslexic
eugene-speak filtered through Kernighan and Ritchie's
collective back-brains. To alleviate this, we have included a
slightly more `casual' mode, in which the responses to all
commands are first filtered through a customising routine
(DUDE), which makes them sound a little more friendly while
retaining their full information content (usually). The
rooted(c) system prompt is changed to `What now, dude?' and
output from each command is terminated by `No problem, dude.'
OPTIONS
v Verbose mode (ALL Penix commands have a `verbose'
mode). When this option is present, all filtered
responses are preceeded by a message: `This response
has been parsed by the DUDE filter and is not intended
to be some sort of sleazy come-on.'
d Don't restart all processes after recompiling the
/uselss/libs/eugene file (see below). This alows any
important tasks to complete beforehand.
n Notify all users that they are about to be force-
logged out and force-logged in again.
ON Activates the DUDE filter.
OFF De-activates the DUDE filter.
WHEREIS Doesn't do anything, but we couldn't resist it.
EXAMPLES
%-) party on
What now, dude?
To compare the differing responses, here is output provided by the
ispi -s command, with party OFF and party ON:
party OFF
line who why how long killable
==================================================================
000 rooted that's you, dweeb! epoch no
------------------------------------------------------------------
00F wp she's supposed to be 0:44:12 eminently
typing up the end of
financial year report,
but she's been doing her
resume when she thinks
no-one's watching.
------------------------------------------------------------------
014 maint playing games, as usual 0:51:16 only just
party ON
Well, let's see who's on, eh? There's you, of course, on line 000
(Imagine that! Hahaha!) Oh look, on serIOus line 00F, it's that
cute little secretary - looks like she's lost her keyboard template
again, she's been hitting the escape key for the past five minutes!
AND OF COURSE, the guys down in maintenance are playing `cosmic
ballcrushers'. As usual. Well, who else, um, no-one really
interesting like, ya know, oh hang on, DTR is toggling on serIOus
line 03D.. oh, no problem, it's that stuffed modem again. You want
maybe I should send some AMail to maintenance and get 'em to look
at it? No problem, dude.
What now, dude?
FILES
/uselss/libs/bill&ted/DUDE This is the pipe process, usually
started at system shoe, which lies
idle until party ON is issued.
/uselss/libs/eugene Contains all of the ordinary, ho-hum
confusing computer - jargonese
responses which commands ordinarily
issue. Text file.
/uselss/libs/eugene.spoo compiled version of the eugene file.
/uselss/libs/bill&ted/lexicon Like the eugene file, this is a text
file containing all responses from
ordinary commands. It replaces the
eugene file when `party ON' is
issued, and causes an OI_MOOSH
message to be issued to the
WHATS_ALL_THIS_THEN daemon, which
then freezes all currently active
tasks, recompiles the eugene file
and restarts all serIOus processes
with output directed through the
DUDE filter.
/ephemeral/eugene.chex Checksum for the compiled eugene
file.
SEE ALSO
crp(1), stuffio(2), doobrie(9), gouge (3), ftang(65534),
wi(-1), edmond(29), jumpstart(2), vo_mit(992)
BUGS
The n option can be slow.
If the n option is issued, some users in a wi editing session
may not receive the `warning, restart imminent' message until
after the restart.
There is no way selectively to follow symbolic links.
If you alter the /uselss/libs/bill&ted/lexicon file and
manually compile it with the vo_mit recursed text compiler,
the checksum which is ordinarily output to /uselss/der/ttbowl
should be retrieved and appended to /ho_hum/eugene.chex. This
does not happen automatically, and is expected to be fixed at
the next revision of the operating system (snicker).
-----
Sunburne Computer, Inc. 9 October 1991
PongPONG(1) MISCELLANEOUS NETWORK SUPPORT COMMANDS PONG(1)
PENIX OPERATING SYSTEM DOCUMENTATION PENIX
NAME
pong - net-broadcast restart message
SYNOPSIS
pong [ - ] adnpv [ count ] [ delay ] [ path ]
DESCRIPTION
Pong broadcasts a general `Hey, I'm here!' message to any
other machines on the network. The exact contents of the
message packet depend on whether the machine in question is a
Dom_Master or a Sub_Server. Pong waits for acknowledgement
from, by default, one machine; it can be specified to wait for
responses from up to 255 machines before resuming. Which is a
pretty pointless feature when you think about it, but it was
piss-easy to implement, so we did.
FUNCTION LETTERS
a acknowledge-count. If not specified, this defaults to one.
It can be set to zero, in case the machine is not on a
network... but if the machine isn't on a network, then
there really isn't any point in PONGing in the first place,
is there? The upper limit is 255, which is also the limit
of Dom/Sub relationships allowed for any single Net_Clique
of machines.
d Delay. If specified, the machine will wait for this number
of ticks before returning a -1 errorcode and exiting. If
not specified, the machine will wait until it receives a
response from another machine, unto eternity (or the next
reset).
n Notify. This notifies the users that a Pong has just been
issued. If any of them are logged in as the rooted(c)
user, they may receive responses from other machines, such
as `Phwooaaaaar!', `Who did THAT?', `Jesus, that STINKS!'
and (most frequently) `Ahhhh, SHADDUP!'
p Specify alternate packet. Generally, the packet sent by
pong is determined by the machine's Net-status (either Dom
or Sub); mild variations are available, but on no account
should a Sub_Server attempt to issue a Dom_Master packet,
because it makes the actual Dom feel inadequate. This
option requires the specification of a file which contains
the alternate packet to use.
v Verbose mode. If this option is absent, you will see no
response to the command after execution. Otherwise, the
machine will echo its pong-text on the console and any
responses to it from other machines, along with their
net-addresses.
EXAMPLES
To send an alternate packet structure, display responses and
resume after four responses have been detected:
pong apv 4 /uselss/all_kindsa_stuff/pongpacket2
PONGing net:
[ sub:harry_as_a_boy>>Galoot_Cologne 03F21AC4E2D1 ]
[ ]
[ hi there, this is sub:harry_as_a_boy>>Galoot_Cologne,]
[ i was down for an hour there because my operators ]
[ wanted to try out the cfts command, but i'm back ]
[ up now! did anyone miss me? :-> ]
[ ]
waiting for reponses:
*** from sub:kanttner>>jefferson:
[ go away harry you smelly little nonentity ]
*** from dom:slick>>jefferson:
[ piss off. ]
*** from sub:Mammy_Nun>>galoot_cologne:
[ we heard you de FIRSE time, okay? ]
*** from dom:rhonda>>galoot_cologne:
[ HARRYYYY, you are nothing but a WORRRRRRRRRRRRM! ]
FILES
/uselss/all_kindsa_stuff Repository for alternate message
packets. The default is called
`default'.
/uselss/little_black_book Current LBB network list, containing
binary addresses of the other members
of the Clique. Note: this file can
only be updated by the Clique's Dom.
This also contains the addresses of
any other Cliques on the network.
SEE ALSO
bollx(1), stuffio(2), doobrie(9), brap(12), yoohoo(2),
LBB_lookup(1), cftn(2) LBB_init(3), LBB_re_init(1), LBB_kick(1)
BUGS
If there are no entries in /uselss/little_black_book, or if the
machine is not part of a Dom/Sub network (i.e. stand-alone), the
command will enter a tight recursive loop, gradually consuming
more and more CPU time until the system either stops completely
or until one of the caenobite processes gets annoyed and
terminates it. This can be dangerous, as the caenobite
processes are none too discriminating and may take out one or
two other processes along the way. They seem to have a fondness
for anything running on the system console, like the rooted(c)
session.
The n option can be slow.
If there are Dom-ID packets in the /uselss/all_kindsa_stuff
directory of a Sub machine, there are no mechanisms in place to
ensure that the operator does not PONG the net with a Dom
packet. This will upset the carefully-orchestrated hierarchy of
the net, causing the Subs to have to choose between two Doms.
As soon as the Subs see a Dom-ID packet from a machine, they
assume that it IS a Dom, and a moebius-hoffstaedter loop arising
from a Sub trying to satisfy conflicting requests from two Doms
becomes a possibility. This can bring down the entire net, and
thus should be avoided, unless the net needs to be brought down
quickly, in which case refer to cftn(2).
There is still no way selectively to follow symbolic links.
And to be brutally honest, we don't think there will be in the
immediate future.
-----
Sunburne Computer, Inc. 9 October 1991
rcatparRCATPAR(1) USER COMMANDS RCATPAR(1)
PENIX OPERATING SYSTEM DOCUMENTATION PENIX
NAME
rcatpar - randomly change all the passwords at random
SYNOPSIS
rcatpar [ - ] bsv [ bitmask] [ seed ]
DESCRIPTION
rcatpar starts a high-priority task which makes a temporary
work-copy of /uselss/passwords and then proceeds to generate new
passwords for every account except rooted(c), which (as everyone
knows) doesn't have a password. When this process has been
completed successfully, a second task erases the original
/uselss/passwords and replaces it with the work-copy, thus
ensuring that the passwords hacked by those rabid net-heads last
week are no longer of any use. rooted(c) access is required for
this function; if it is issued from any other account, a
questionnaire will be generated to establish if the account is
allowed to use this function.
FUNCTIONS
v Verbose mode. If this function is included, messages are
sent to every account that is currently logged in, stating
that their password has just been changed, and could they
please amail the rooted(c) operator to find out what it is?
AMail is sent to the accounts that are not logged in, and a
large banner page (outlined in percent signs) is tacked
onto the end of /uselss/now_hear_this_you_scum (the login
message), stating:
PASSWORDS HAVE ALL BEEN ALTERED
CHECK WITH YOUR SYSTEM ADMINISTRATOR
UNLESS YOU ARE A HACKER, IN WHICH CASE
PLEASE REFER TO /USELSS/PASSWORDS
This is actually a clever ruse; the next two processes that
access /uselss/passwords have their locations recorded in
/uselss/potential_hackers and have their serIOus lines
altered to the next higher baud rate (unless they are
running at 1200 baud, the highest speed at which serIOus
lines operate, in which case the line will be reset to 55
baud). This means that to avoid confusion, do not use
rcatpar more than once in any five-minute period, otherwise
the process that does the recording will spot the second
invocation of rcatpar, see it as a hacker, and when it goes
to alter the baud rate of a daemon process, will hang the
system.
s seed [argument]. This is the seed for the randomising
process. The exact algorithm is to take the seed number,
multiply it by the mumber of live serIOus sessions, divide
it by the number of caenobite tasks currently running,
multiply it by the system clock's current tick counter,
take the integer square root and then add the the birthday
of the second name in the /uselss/passwords file. If this
number is greater than 255, the system will hang unless the
bitmask option is used.
b bitmask [argument]. Will perform a logical OR with the
result of the seed-generation process, to ensure the seed
result is not greater than 255. The bitmask should be FF;
if you specify a number greater than that, you run the risk
of having a seed result larger than 255.
EXAMPLES
to Randomly Change All The Passwords At Random:
%-) rcatpar vs 23
FILES
/uselss/passwords system password file. It has
passwords in it.
/ephemeral/fred temporary working copy of the
above.
/ephemeral/da-da-da-dom error codes returned by the first
process (the one that makes the
copy)
/ephemeral/dom-da-dom-dom error codes returned by the second
process (the one that generates the
new passwords)
/ephemeral/da_doo_ron_ron error codes returned by the process
which monitors the password file
for hacker activity after the
change
/ephemeral/rcatpar_flags a flag-file created by the first
process and deleted by the second,
as a test to ensure that the
process was completed successfully.
/uselss/now_hear_this_you_scum system login message. this is shown
on every serIOus line at login, and
appended to every print job (just
in case they missed it the first
time).
SEE ALSO
crp(1), bollx(1), , rofl(2), swop(2), stuffio(2), flrump(3),
doobrie(9), brap(12), Init_the_serIOus_lines_again(1)
BUGS
There is no way selectively to follow symbolic links.
On Saturdays that coincide with the rising of the full moon, the
seed argument should NEVER be a prime number, or strange things
happen to the system printer. If your system doesn't have a
system printer, garbage files will accumulate in /drooler/system
until the filesystem is full.
the n option, if we had included it, would be slow; but as this
function has been subsumed into the v option, we can safely
ignore it.
the v option can be slow.
-----
Sunburne Computer, Inc. 19 October 1991
ssslSSSL(1) USER COMMANDS SSSL(1)
PENIX OPERATING SYSTEM DOCUMENTATION PENIX
NAME
sssl - suddenly swap serial lines
SYNOPSIS
sssl [ - ] jnNprvV [address] [ secs ] [ reason ]
DESCRIPTION
sssl starts a MAENAD process which reads /typical/who's_where
to locate the GOELEM process that controls your line; if the
`V' option is set, it also looks up the address specified as an
argument, and locates the GOELEM process associated with that
line; both processes are identified in the /typical/who's_who
task list, and their process control blocks are exchanged,
resulting in you suddenly getting the other user's serial line,
and them receiving yours. This is useful if you are logged in
as the rooted user and you have just done something very
stupid, as it lets you continue using the system even if your
line is about to be terminated or locked up. It's also a neat
way of passing obscene messages; this can be done by creating
and executing the following batch file:
sssl -pV 00A 20
output from /uselss/rooted/private/rudetext.s
doabsolutelynothingfor secs 20
killsession -i
FUNCTION LETTERS
j Justify. This allows you to send a personalised message
to the owner of the line you are about to steal. It can
be something along the lines of "excuse me, i've just
annoyed a caenobite process and it's going to kill my
line, so i need to borrow yours, thanks", but is more
often than not something like "ha ha you luckless dud, i'm
going to grab your line, change your password and then
send everyone obscene AMail using your id". The reason
specified should be enclosed in double-quotes; if you need
to put a double-quote in the text, please call Sunburne
System Development and enquire about the minimal costs of
having your system Walnut re-written.
n Notify. If this option is present, a message will be sent
to the eventual victim (or person whose line you will
steal),informing them that their terminal is about to have
its line sssl-ed. Rather than going to all the trouble of
writing more string-parsing code into this function, we
took the easy way out; the message is taken from
/uselss/der/sssl-message.
N NoKillTempFile. This option tells the MAENAD process not
to delete the /ephemeral/temp_list file which contains the
names and addresses of potential victims which is put
together for use by the r option. If ispi isn't working
that day, you can use sssl to compose a list of who is on
the system at the time by sssl-ing your line with your own
line, specifying the NoKillTempFile option and then
examining the /ephemeral/temp_list file.
p Pause. Will wait the specified number of seconds before
performing the swap.
r Random. When this option is present, the MAENAD process
composes a list of possible victims, selects one at
random and swaps your line with that one.
v Verbose mode. This option informs the MAENAD process
that it should pipe all diagnostic information concerning
the swap to your screen, including the rather lengthy seed
generation output associated with generating a random
number if the r option is specified. When present, this
gives you approximately five milliseconds to see the
address of the line you are about to receive in exchange
for yours (which isn't really necessary, as once you have
the new line you can use ispi -s to establish where your
process is).
V Vindictive mode. This requires the nomination of a
particular serIOus address, and will exchange your line
with this one.
EXAMPLES
to Suddenly Swap Serial Lines:
sssl -jnvV 00F "Why? Why you ask? Because i'm bored."
this will notify the user of the swap, will also send them
your justification for doing it, and will then swap your line
with serIOus line 00F.
FILES
/typical/who's_where table which relates active processes
to serIOus lines
/typical/who's_who table which relates active processes
to the GOELEM process which handles
all the low-level I/O processing.
/uselss/der/sssl-message default `politeness' message which
is sent to the victim.
/ephemeral/temp_list temporary file consisting of names
and serIOus addresses of potential
victims.
SEE ALSO
aark(2), bollx(1), stuffio(2), crp(2), flrump(3), doobrie(9),
brap(12), argle_bargle(3), ni(1), bwip_init(2), LBB_kick(1)
BUGS
sssl will only take a line if it already has an active user
connected to it and that user is not logged in as rooted (the
exception being your own line; it is perfectly valid to sssl
with your own line). If everyone on the system is logged in as
rooted (or if there is only one user logged in), the MAENAD
process will loop, looking for a non-rooted process to steal a
line from; it will remain in this loopy state until someone
other than rooted logs in.
The n option can be slow. Slower than usual, in fact.
Instead of issuing any warnings, pausing and then effecting the
exchange, the Pause option waits the number of specified
seconds, THEN issues any warning messages and instantaneously
swaps the lines. This may confuse users who do not pay close
attention to what is happening on their screens at all times.
If you sssl with another user who was in a wi editing session,
you may see a few `noise' characters on your screen before the
`wi_not' MAENAD associated with the other user's wi session
dies (when we say `a few', we mean no more than about fifty
kilobytes or so).
There is still no selective way to symbolic-link follow.
-----
Sunburne Computer, Inc. 6 November 1991
victimiseVICTIMISE(1) USER COMMANDS VICTIMISE(1)
PENIX OPERATING SYSTEM DOCUMENTATION PENIX
NAME
victimise - optimise system performance
SYNOPSIS
victimse [ - ] adejrstyDS [percentage] [time] [count]
[processid]
DESCRIPTION
victimise is a last-ditch performance optimiser; if there is a
task that requires priority performance, this command can be
used to temporarily increase cpu usage and speed of disk
access, by degrading the performance of an other user, or of
all other users. It can also be used for purposes of revenge,
or as a joke, or to mess with the minds of the users (`wierd,
the system was running great a few minutes ago...' `well, it's
okay over here...' `hang on, it's running again...'). As this
is a potentially powerful command, its use is restricted to the
rooted(c) user and the `games' account. The options can be
grouped into two sorts: those that act on a single other user,
and those that act on a number of other users, in an attempt to
spread the load.
FUNCTIONS
a anyone. This option will select one other currently-
running process and degrade its performance, to the degree
specified in the [percentage] argument. The process is
selected completely at random, and may include the account
that is issuing the command.
d darwinian (single-process mode). This option selects the
one other task on the system that is least likely to be
affected by a serious performance decrease, and does so.
By an algorithm far too arcane to go into in the context
of a simple MAN page, it also chooses the process that is
least likely to be able to hit back, such as anyone logged
in under the `games' account, anyone running a compiler,
or anyone who presses the `help' key on their terminal
more than once every ten minutes.
e everyone. This option de-optimises every other process
currently running, to the sum effect specified in the
[percentage] argument. Each process, regardless of
origin, is decreased equally (excepting the Caenobite
processes, of course. We tried hitting them. But they
hit back harder.)
j jump. This option creates a table of likely victims and
then proceeds to hit each one, successively and at random,
degrading the selected process for the full effect
specified in [percentage], for the time specified in
[time].
r rotation. This option is similar to the `jump' option,
but the processes are hit in turn rather than at random,
for the period specified in [time].
s specific. This option selects the process specified in
[processid] for the full effect of de-optimisation, and is
included for purposes of revenge only.
t temporary. When included, this option specifies that the
optimisation effect should only last for the next n
commands, as specified in the [count] argument, after
which performance will return to normal.
y yourself. This option reduces your own performance, to
the benefit of all the other users on the system. It is
regularly included in the .DoThisBefore file of most
users.
D darwinian (multiple process mode). As specified in the `d'
option, except for more than one user, the load being
spread over the selected tasks Darwinian-ly, i.e. the
weakest tasks copping the most load. This option does
tend to stop some tasks completely until it is finished.
S Statistical. This option seeks the process using the
least resources and de-optimises it to the full effect
specified in [percentage].
EXAMPLES
to optimise the system:
victimise -rt 70 5 2
this will degrade all of the other processes on the system,
to the tune of 70% of their performance, one after the other
at five-second intervals, for the duration of the running of
the next two commands issued to the process performing the
command.
FILES
/typical/who's_who System task table; used by the
aengel Lucifer when compiling the
hit-list table for the `e', `j',
`r' and `D' options.
/uselss/helpcount Counts the number of times each
user presses the `help' key,
expressed as Hits Per Every Ten
Minutes. This count is maintained
as part of the regular system
housekeeping.
/uselss/spew_bucket All mail to the Sysadmin is
directed into this while the
victimise command is in use, since
they are invariably flames of a
highly derogatory and personal
nature. It saves the Sysadmins
doing it themselves.
SEE ALSO
bollx(1), crp(2), argle_bargle(3), roflgo(4), woof(5),
kill(3), mangle(2), castrate(2), knacker(1), beg(2), plead(3),
threaten_with_extreme_violence(1), submit(2).
BUGS
If the `temporary' flag is used, any daemons, maenads, goelems,
etc., spawned while the optimisation is in effect will retain
this `blessed' state until they die of their own accord, or
until the Sysadmin does something about it.
The n option would be slow, but this function doesn't have one.
Due to a bug in the randomisation algorithm, it is possible,
when using the `jump' option, that the same task may be
selected for de-optimisation twenty-three successive times.
this is expected to be rectified at the next revision of the
operating system. No, really. Leo Schwab is going to write a
good randomiser for us.
The e option can be slow.
The `multiple Darwinian' function can completely stop some less
important tasks, but it does seem to have a preference for
anyone using the `wi' editor, with the result that screen
updates can be so slow as to be nonexistant.
There is no way to follow, selectively, symbolic links. And
unless there's a turnaround in the economy soon, there probably
won't be.
-----
Sunburne Computer, Inc. 17 August 1992
wiWI(1) USER COMMANDS WI(1)
PENIX OPERATING SYSTEM DOCUMENTATION PENIX
NAME
wi - whatyouseeisprettypathetic interactiveEditor
SYNOPSIS
wi [ - ] fmnpuvy [ arg1 arg2 argh fname fname fname fname... ]
DESCRIPTION
It is said that you can tell an operating system by the editor
that is bundled with it. That certainly goes a long way to
explaining Penix. wi is a multitasking, multi-windowed
character-based editor that also doubles as a backup print
scheduler for the drooler subsystem and triples as an online
news service (see the verbose option).
OPTIONS
f Set flag. If this option is present, then arg2
indicates the total number of flags that you wish to
set. The flags must be specified after the filenames
and must be preceeded by a colon (see examples).
m Munge. This must be used ONLY with multiple
filenames, and causes the contents of multiple windows
to be appended to the same temporary file if multiple
files are created without filenames and the sefm flag
is set.
n Notify all descendant daemons, aengels, maenads and
goelems that you are in a wi editing session and that
they should not disturb you unless it's really
important.
p Disable print-scheduler-swapping. This option assures
that your wi session will not be interrupted by
messages from the wi_not maenad process which
accompanies the drooler-emulation mode. It is a
toggle; within wi, you can re-enable print-scheduler-
swapping from the command prompt with the
SETENVIRONMENTFLAGSPLEASE command.
u Use a different keymap than the system default. This
allows the user to enter wi from a wide variety of
terminals, and more importantly, to exit again
afterwards. If this option is present, the path for
the new keymap is taken from arg2. If absent, the
default /typical/keymaps/keymaps/keymaps/keymaps/spo0
is used.
v Verbose mode. When enabled, wi will open four windows
on the screen, column-wise, displaying ascii text in
the first, hexadecimal in the second, RTF codes in the
third and any spurious messges from the outside world
in the fourth. As these messages are often deflected
by the RALF lexical fluff filter, or occasionally lost
by the gettyStuffed LZH message compacter, the verbose
mode can be a useful way of finding out what's going
on.
y Yoo-nique option. If multiple windows are opened
without specified filenames, the wi_not maenad will
attempt to generate names for the files using the same
algorithm as used by rcatpar to generate new passwords
(see RCATPAR).
arg1 The number of files which are to be edited, minus one.
This also controls the number of windows which will be
opened; the windows are tiled so that each window has
an equal amount of screen space when opened.
argh This is a dummy argument which acts as a buffer
between the numeric arguments and the filenames.
COMMANDS
Once in wi, you will be in curser mode, as denoted by the words
INSERT-MODE -*-OFF-*- in flashing, reversed characters across
the top of the screen (this flashing, and the blinking of your
cursor, is handled by the wi_not maenad process which is
started with your wi session). You can move the cursor around
the screen with the following keys:
up: f previous word: q page top: enter
down: p next word: f7 page bottom: ctrl-z
left: y previous paragraph: esc file top: alt-k
right: / next paragraph: tab file bottom: ctrl-alt-del
delete: r over-write mode: # beep: ctrl-G
Insert mode is entered by holding down the `i' key until the
terminal's keyboard buffer overflows and it begins to beep at
you. When this happens, the system aengel-process `Goliad'
receives an interrupt from the serIOus controller that your
teminal is connected to; `Goliad' looks your process up in the
system task table, /typical/who's_who, locates the wi_not
maenad process associated with your current wi session and
sends it a `guess_who_wants_to_go_into_insert_mode' message.
The maenad then deletes the .edrc file in your home directory,
replacing it with a copy of /typical/keymaps/InsertModeKeys and
then restarts itself using this keymap. You can return to
curser mode by repeatedly moving the cursor to the bottom of
the file; if the wi_not maenad detects eight or more `move to
file bottom' orders in the space of thirty seconds, it assumes
a desire to leave insert mode. `move to file bottom' is the
only cursor-movement command that is common to both insert and
curser modes.
MACROS
Keyboard macros can be defined when in curser mode by pressing
control-backspace to enter command mode. The command prompt
will appear at the bottom of the screen:
PLEASE ENTER YOUR COMMAND HERE (NO LONGER THAN 80 CHARACTERS):
There are only five valid commands: `q' to save the file, `s'
to quit without saving the file, `a' to quit and save the file,
`n' or SETENVIRONMENTFLAGSPLEASE to allow setting of external
flags and `w' for `set macro'. Once in `set macro' mode, the
words SET-MACRO-MODE -*-ON-*- in flashing, reversed characters
appear across the top of the screen. From then on, any
keystrokes you enter are not acted upon, but are piped into a
file in /ephemeral/keymaps/keymaps/keymaps/$ (where $$ is
your unique system ID). Once macro mode is left (by pressing
control-z eight times quickly), you will be asked which key
sequence to allocate this macro to; it can be assigned to any
key combination, including control-z. On pressing this key in
future, the contents of that file will be piped to the wi_not
maenad, which will assume them to be ordinary keystrokes and
will act upon them as such.
ENVIRONMENT FLAGS
pss ON | OFF
Print-scheduler-swapping. When set ON, your wi_not maenad
will assume control of the drooler printer line that
matches the address of your serIOus line in the
/typical/who's_where file. If wi is being run from the
system console, wi_not will assume control of the parallel
printer. If verbose mode is ON, the fourth wi window will
show status messages from the drooler subsystem.
vrb ON | OFF | SHUT_UP_AWREADY
Verbose mode. When set on, your window will be divided
into four sections, allowing fine control of the text that
is being entered. Control can be switched from one window
to the next by pressing the control-right-cursor key, and
text can be entered in hexadecimal or RTF. Verbose-mode
OFF disables messages from the fourth window for a period
of two minutes (to ensure no conflicts between the wi_not
maenad and the whats_all_this_then daemon which allocates
disk blocks when the file is being saved). Verbose-mode
SHUT-UP-AWREADY disables verbose mode completely.
sefm ON | OFF n
Save every five minutes. When active, this will
automatically write the contents of the wi_not maenad's
tummy_buffer to the originating file. If no origin is
specified (such as in the instance of creating new files),
they will be written to /ephemeral/wi_do_i_bother_$$. n
specifies the number of ticks between successive saves, and
defaults to 2 in the interests of data integrity.
stfu ON | OFF
Setting shut_the_f**k_up to ON disables the standard audio
sample that replaces the control-G beep sound.
EXAMPLES
wi -np 1 /uselss/now_hear_this_you_scum
This will start wi with a single window, notifying
descendant processes to keep quiet for a bit, disables
print-spooler-swapping and loads the system login
message into the tummy_buffer of the wi_not maenad.
wi -mf 4 2 argh albatross choc_ice :stfu ON sefm ON 200
This will start wi with four windows; the first two
will be named `albatross' and `choc_ice'; the third and
fourth windows will be unnamed. The `shut_the_f**k_up'
flag will be set, and the `save_every_five_minutes' flag
will be activated, with a save-frequency of 200 ticks
(or approximately four seconds). The contents of the
third and fourth unnamed windows will be auto-appended
to the file /ephemeral/wi_do_i_bother_$$.
wi -vy 500 argh
This will open five hundred windows on your screen, and
will then sub-divide them into two thousand smaller
windows, each with its own unique filename. This will
usually crash the system.
FILES
/uselss/beep Raw audio sample file, containing
the replacement for the standard
control-G beep sound.
/typical/who's_who System task table; used by the
aengel Goliad to locate your
session when swapping keymaps.
/typical/who's_where Relates user tasks to serIOus
lines, allowing correct allocation
of drooler resources under
print-scheduler-swapping.
/ephemeral/wi_do_i_bother_$$ Temporary write file for autosave
if no filename was specified. If
filenames are not specified when
creating the files, autosave will
be dumped there.
.edrc Settings for wi initialisiation,
located in your home directory.
can contain flag settings.
/typical/keymaps/InsertModeKeys Temporary file for changing to
insert mode
/typical/keymaps/keymaps/keymaps/keymaps/spo0
Default keymap for wi.
/ephemeral/keymaps/keymaps/keymaps/$
Temporary storage for macro
definition.
SEE ALSO
crp(1), stuffio(2), doobrie(9), bwip_init(2), google(2),
edmond(29), raymond(3), horwood(6), output(1), vo_mit(992),
stomp(2), invoke(1), exorcise(666)
BUGS
The n option can be slow.
If you press any keys while the wi_not maenad is engaged in
restarting with the /typical/keymaps/InsertModeKeys file, you
may generate a level six Shee_It CPU trap which may cause the
loss of some data. Be sure to release the `i for insert' key
as soon as your cursor stops flashing.
If you specify a large number of windows when starting wi and
then enter the verbose mode, the total number of windows on the
screen will quadruple. This may reduce the viewable editing
area in each window to less than one character in size.
Entering command mode in this state would not be adviseable, as
considerable system resources would be required to update the
display, possibly impacting on the work of other users.
There is no way selectively to follow symbolic links.
If you create multiple files without specifying filenames for
them and then the sefm autosave flag is activated, the contents
of one window will over-write the contents of the others, as
they are all saved into the same temporary file. This can be
avoided by specifying the -m (munge) command option, which
appends the contents of two or more windows to the same
temporary file.
Exiting verbose mode with the SHUT-UP-AWREADY flag leaves the
screen in the four-column window format, reducing the area
available for text editing to one-fourth of the full screen.
If you start wi with a single filename and specify the -m
option, the session will hang, as wi expects multiple filenames
to be specified along with the munge option.
It is not possible to specify an alternate system keymap and to
set flags on entry simultaneously, as both tasks require
explicit use of the arg2 argument. In this case, enter the
required flags into your .edrc file, using wi to edit it.
If you assign a macro to the control-z key combination, there
is no way to leave wi except by encouraging a caenobite-process
to take over your serIOus line. In this instance, some data
may be lost. If the wi session is being run from the system
console, it may not be possible to contact a caenobite; in
which case, the system must be powered down to free the
console.
We're not kidding about the symbolic links, you know.
-----
Sunburne Computer, Inc. 22 October 1991
wingeWINGE(1) USER COMMANDS WINGE(1)
PENIX OPERATING SYSTEM DOCUMENTATION PENIX
NAME
WinGE - Window-like Graphic Environment
SYNOPSIS
WinGE [ - ] abdfghmnrstvwDMTZ [ percent ] [ task-limit ]
[script]
DESCRIPTION
WinGE (version 9.1b) is the current incarnation of a product
that began its life as a WIMP interface, known as XXX-windows.
It was designed to run on cheap, low-end graphic terminals as an
alternative to the Penix command-line interface. The original
images and specifications were thought to be somewhat on the
`scatological' side and were withdrawn (although i gather that
some of the more, uh, innovative icon designs are available from
a certain x-rated GIF archive site). This document deals with
the WinGE initialisation routines, files and support routines
and peculiarities of the Windowing System.
Basics:
The screen shows currently-running tasks as small graphic
symbols known as icons^H^H^H^H^H `stamps'. They are ranged
along the top left-hand side of the screen, to the right, making
the screen look somewhat like international air-mail. Any
console-directed messages are displayed in areas known as
windows^H^H^H^H^H^H^H `louvres', which open and shut as messages
appear. Control of the tasks is maintained by twiddling the
tiny graphic danglements attached to the bottom of the window,
resembling latches, security screen locks and venetian blind
cords. The control point for external devices (mice, tablets,
data gloves, joysticks, guru-boards etc) is the Flyswatter,
which is used to move `stamps' and `louvres' about the screen.
The graphic data for all images is stored in /WinGE/danglements,
in ASCII format, and can be altered easily with the wi editor.
The system disposal, /dev/ttybowl, is represented by a free-form
porcelain sculpture in the bottom right-hand corner. Files can
be deleted, and tasks halted by dragging their `stamps' or
`louvres' with the flyswatter into the ttybowl and pulling the
tiny chain attached to it. Users of early revisions of WinGE
reported that some `louvres' required more than one flush, and
some even stuck in the ttybowl, requiring use of the PLUNGER
goelem-task. To counter this, an additional `stamp' has been
added for 9.1, /dev/dispose-all. This `stamp' has tiny animated
serrated teeth which make short work of anything stuffed down
it. Just be careful not to get the flyswatter stuck in it, or
the system will hang. If you swat a task-stamp five times with
the Flyswatter, a louvre appears with detailed information about
that task. Note: this window will not fit down /dev/ttybowl or
/dev/dispose-all; it is digitally bio-degradeable and will
decay over a period of half an hour.
FUNCTIONS
a Terminal is a Commodore-Amiga
b Draw big icons (for the visually impaired). This will
source images for `stamps' from /WinGE/biggies/.
c Crash-limit (specified in percentage). If you are running
a task which is not processor-retention-pure, it will not
finish cleanly, and will leave its `stamp' on the screen
until the system is re-shoed. This can be avoided by
specifying a percentage of CPU, which if the system falls
below this level, the task will be assumed to have finished
and the WinGE session will then safely crash.
d Terminal is an MS-DOS-based machine (monochrome)
f Fake the presence of a mouse with numeric keypad. On some
earlier systems, such as the MS-DOS and Vic-20s, mice were
problematical to add without considerable hardware
modifications. This option will allow the numeric keypad
to simulate mouse-movements; the arrow keys indicating
direction, and the numeric `0' and `enter' representing the
mouse buttons. This is an idea we stole, lock, stock and
barrel, from the Macintosh, and we don't care.
g Garfield Cuteness option. Images for `stamps' will be
taken from /WinGE/garfieldies. Cute, but not terminally
so.
h Draw HUGE icons, for the terminally cute. Images for
`stamps' will be taken from /WinGE/ziggies, and have been
known to cover three-quarters of the screen, using the most
garish shades of blue, pink and green that the terminal
will allow. Most of them are animated, using about 300
Kilobytes of graphic information and some of them have been
known to permanently alter the blood-sugar level of anyone
using the system. Diabetics beware.
l Task-limit. Sets a lower limit for the number of
concurrent tasks to be run. If the number of tasks falls
below this, WinGE will automatically start one up at
random, selecting from the list of available tasks in
/WinGE/thumb_twiddle. This is to scotch, once and for all,
any claims that WinGE doesn't concurrently multitask. The
default number of tasks is four.
m Terminal is a Macintosh (monochrome)
n No-idea. This assumes that WinGE has not been installed
correctly, and sets about creating the default environment
for WinGE, including all of the graphic information
directories, filling the stamp-data files with randomly-
generated ascii characters (which often look better than
the supplied defaults).
r Randomise colours on startup. This option isn't really
necessary, as the default colours which you specify in
/WinGE/.snivel rarely match up with what people expect them
to look like. Life is like that, sometimes.
s Specify alternative to default startup script, which is
/WInGE/.snivel.
t Terminal is an Atari (monochrome)
v Terminal is a Commodore Vic-20 (default)
w Wobble option (for hangovers). This is also useful for
preventing pixel-burn-in on monitors if the display is not
particularly active over a long period of time. It moves
the entire bit-mapped display a random number of pixels
(between 0 and 8) to the left; waits a random period
between 0 and 4 seconds, then shifts a random number of
pixels to the right. This effect has been known to cause
nausea and vomiting in hung-over operators, so use it with
caution.
D Terminal is an MS-DOS-based machine (colour)
M Terminal is a Macintosh (colour)
T Terminal is an Atari (colour)
Z Zoom option. When active, this option presents the
bitmapped image as ten to one hundred percent larger, by
pressing function keys F1 to F10. This option was provded
purely for those fanatics who aren't happy until all the
`stamps' and `louvres' are lined up perfectly.
EXAMPLES
To start the Window-like Graphic Environment:
%-) WinGE -cfhlswDZ 85 2 /WinGE/mine/.snivel
This will start WinGE with a minimum of two tasks, halting the
system if processor useage falls below 85 percent, starting up
with /WinGE/mine/.snivel.
FILES
/WinGE/danglements default files for graphic images
/dev/ttybowl system task terminator, represented
by stamp image
/dev/dispose-all more powerful version of the above
/WinGE/biggies directory for large-stamp image
data
/WinGE/Garfieldies directory for cute stamp images
/WinGE/Ziggies directory for obscenely cute stamp
images
/WinGE/thumb_twiddle list of available tasks to fill
cpu-idle time
/WinGE/.snivel default WinGE startup-script file
SEE ALSO
WHINE(1), WinGE_init(1), stuffio(2), WinGE_configure(1),
roflgo(3), WinGE_terminate(3), WinGE_kill(2), tickle(2),
argh_i_think_i'm_going_insane(2)
BUGS
There is a fault in the WinGE_init process that cause WinGE to
hang between processing one line and the next of .snivel. This
usually occurs if the line contains references to processor-
retention-pure tasks, or tasks which do not have matching
stamp-images in /WinGE/danglements. To counter this, the first
line of .snivel should run WHINE (WinGE_init Halt Initialisation
at Next Entrypoint) as a GOELEM task. This will terminate
WinGE_init five seconds after initialisation is complete. If
initialisation proceeds without error, the first thing the
operator should do is locate the WHINE GOELEM stamp and push its
head down /dev/ttybowl, flushing it from the system. This can
be automated with the following .snivel script:
#-> do_quietly /executeables/WHINE -delay 5 -i `GOELEM'
...
(other WinGE initialisation commands)
...
#-> do FLUSH /executeables/WHINE -swirly
#-> do FLUSH /executeables/WHINE -swirly
#-> do FLUSH /executeables/WHINE -swirly
#-> do FLUSH /executeables/WHINE -swirly
(four times, just in case)
If the file /WinGE/thumb_twiddle is missing or empty, and the
task limit falls below the number specified with the l option,
the default task to run is WinGE_init. This actually becomes a
sort of loop, as the default settings for the new WinGE session
are taken from the current task-table, and thus specify a task-
limit which must be filled, so WinGE immediately runs four more
tasks, which, if /WinGE/thumb_twiddle is not present, will be
four new WinGE sessions, and so on. This can lead to the system
gradually slowing to a stop.
There is no way to symbolically follow selective links.
The random numbers generated with the `w' option reveal a
Markoff Chain, to the effect that the screen gradually moves
further left than right. If left unchecked, the entire bitmap
will shift off the screen and onto the terminal next to yours,
and then onwards down the room until it reaches the last
terminal in line, after which the image leaks out of the side of
the screen and onto the carpet.
The n option is slower than the n option in any other Penix
function so far.
-----
Sunburne Computer, Inc. 28 August 1992
Again, this was written and is copyright Nikolai Kingsley, reproduced here simply to stop it sliding into oblivion...
This page was last updated: 14th May 2010 at 10:28pm BST
|
 |