Difference between revisions of "TermOS"

From Space Station 13 Wiki
Jump to navigation Jump to search
(→‎Commands: Remove a different reference to RegDir)
 
(47 intermediate revisions by 21 users not shown)
Line 1: Line 1:
TermOS is a lightweight operating system for terminals, used primarily for the Research Wing network. The terminals are remote displays for the interface of the device they are connected to, and allow input to that device. However, the actual software is running on the device itself, be it the Mainframe or a Communications Array.
TermOS is a lightweight operating system for terminals, used primarily for the Research Department's network.<br>
Terminals act as interfaces to networked servers and devices. Once connected to a server, all commands are sent from your terminal to the server, where they are actually run.


Every device is connected to the network wires through a data terminal on the floor.
Servers you can connect to include the Research Department's Mainframe and the Centcom Communications Array.
Devices have a net_id, their address on the network (an 8 digit string); and a type, which describes their function.  
 
P: [02002776]-TYPE: PNET_MAINFRAME
Every device on the network is connected to through a data terminal directly below it. These transmit data through the station's power lines.
 
Devices have a net_id, which is their address on the network (an 8 digit string); and a type, which describes their function.  
::P: [02002776]-TYPE: PNET_MAINFRAME ''This is the Research Mainframe at address 02002776''


To operate any networked device you will have to ping, then connect to it.
To operate any networked device you will have to ping, then connect to it.


==Connecting==
==Connecting==
*'''Help''': the most '''important command'''. Displays all available commands and their usage.
;help:The most '''important command'''. Displays all available commands and their usage.
*'''Term_Ping'''': this will have the terminal ping the network and produce a list of all connected devices and their net_id.
;term_ping:Pings the network and displays a list of all connected devices and their net_id. (Devices which are disconnected will not display. None will display if YOU are disconnected.)
*'''Connect'''': followed by the 8 digit net_id (e.g. connect 02002ceb) will have the terminal connect to the device. More commands will be available once connected to a device.
;connect ''net_id'':net_ids are 8 digits. For example, ''connect 02002ceb'' will have the terminal connect to the device. More commands will be available once connected and logged into a device.
*'''Term_Login''': logs you on a terminal.
;term_login:Logs you into the terminal. Your ID must be inside the terminal to log in. With your ID in your active hand, click the '''-----''' below the screen to insert your ID.
;disconnect:This will disconnect your terminal from the server you are currently connected to. <del>no shit</del>
 
==The Network==
===DWAINE===
DWAINE is the operating system of Research Mainframes. Scientists use it to run their research programs. Research Directors program guardbuddies on DWAINE.
 
DWAINE is a networked OS. The Mainframe runs the OS and programs, and acts as a bridge between terminals and devices.<br>
Devices - data banks, printers, robuddy docks, radios - are connected to the Mainframe through the network.<br>
Finally, terminals act like a keyboard and monitor, they display program interfaces and transmit commands to the Mainframe.
 
Log into a terminal by inserting your ID card and typing ''term_login''. When you login at a terminal your home directory is created on the Mainframe's storage. This folder is only accessible to you and superusers.  It will generally be preserved between logins, provided you only login to one terminal at a time.


*Disconnect: this will disconnect your terminal from the mainframe or communications array you are currently linked to.
There are two access levels on DWAINE: ''regular users'' only have write access to their home folder, and read access to data banks. They can however directly send commands to peripherals. ''Super users'' status requires logging while either 1) having a [[Captain]], [[Research Director]], [[Head of Security]], or [[Nanotrasen Security Operative]] ID inserted or 2) being a [[Cyborg]] or [[AI]], who do not have to insert an ID. Superusers can read and write to any folder on the system, including other users' private homes, and write/delete files on data-banks.
*Restart: reboots your terminal. It disconnects from any device you were connected or logged in to. This can be handy if the device is locked in some way that would prevent normal use of disconnect.  Overuse of restart is analogous to rebooting your computer every time you open the wrong web page, and is hence discouraged.


==The Network==
Notably, DWAINE instructions can be organized saved as executable files called scripts. A detailed scripting guide can be found here [[DWAINE_Scripting|DWAINE Scripting]].
{|cellspacing="0" align="right" cellpadding="2" style="font-size: 85%;"
 
|-
===Files===
! [[File:Outpost_Computers.png]]
DWAINE runs on the Mainframe in the [[Computer_Core|Computer Core]]. OS files and user homes are stored on a removable electronic board.<br>
|-
|-
|Every networked device in the Research Sector
|-
|}


===Dwaine Terminals===
Program files are stored on magnetic tapes plugged into one of several data-banks.
Dwaine is the operating system of Research Mainframes. Scientists use it to run their research programs. Research Directors program their Robuddies on Dwaine. Log on a terminal inserting your ID card, and typing term_login. When you log in at a terminal your home folder is created on the Mainframe's memory. This folder is only visible to you and superusers. It will generally be preserved between logins, provided you only log in to one terminal at a time.
Available data-banks are listed in the directory /mnt.
Important banks are:
*Control: currently holds copies of the guardbuddy control files and scripts. It is located in the [[Computer_Core|Computer Core]]. It takes the mountpoint ''/mnt/control''.
*Artlab: is the databank in Artifact Research. By default, it contains artifact research software. It takes the mountpoint ''/mnt/artlab''


===The Mainframe===
Databanks can be accessed in the same way as any other folder in the operating system, with the caveat that any file I/O will have a minor delay that could interfere with scripting. It is a good idea to double check any file transfers to them, in case the tape has been write-protected or removed.
Dwaine OS runs on the Mainframe in the central part of the research wing. Its core files are stored on an electronic board. To interface with peripherals the Mainframe uses a series of device drivers and mountpoints. All drivers are on the Mainframe by default. The Mainframe is accessed from Terminals in the research Labs. All programs you use are being run on the Mainframe, terminals simply display the program's interface and transmit commands to the Mainframe.


===Peripherals===
===Peripherals===
From the Mainframe you will have access to peripherals, including databanks, printers, and guardbuddies. Many of these feature some manner of interface with the file system in the form of a mountpoint folder in the directory /mnt.
To interface with peripherals the Mainframe uses a series of device drivers and mountpoints. All drivers are on the Mainframe by default.


==Commands==
Peripherals include databanks, printers, guardbuddies and their radio. Many of these feature some manner of interface with the file system in the form of a mountpoint in the directory /mnt. Mountpoints are like folders, their contents can be listed, and files can be copied to them
 
For a list of currently connected peripherals, scan the contents of /mnt with the command ''ls /mnt''.<br>
Peripheral can contain files, receive commands, or both.
 
===Commands===
The in-system help file is currently a work in progress, but may be accessed by the command ''help''.<br>
The in-system help file is currently a work in progress, but may be accessed by the command ''help''.<br>
'''File operations''':
*'''ls''': and an optional argument specifying the filepath.  If no filepath is supplied, it will list the contents of the current working directory.
*'''ls''': and an optional argument specifying the filepath.  If no filepath is supplied, it will list the contents of the current working directory.
*'''cd''' ''"filepath"'' changes the current working directory. If the filepath is not prefixed with a forward slash, it will be taken as relative to the current directory. For example, "cd /" would set the working directory to root, and then a subsequent "cd mnt/artlab" would have the same effective result as "cd /mnt/artlab"
*'''cd''' ''"filepath"'' changes the current working directory. If the filepath is not prefixed with a forward slash, it will be taken as relative to the current directory. For example, "cd /" would set the working directory to root, and then a subsequent "cd mnt/artlab" would have the same effective result as "cd /mnt/artlab"
*'''rm''' [-r/i/f] ''"filepath"'' removes a target file or directory. The user must have appropriate access to the target file. There are three possible command switches, which may be combined (e.g. -r, -rf, and -if would all be valid). ''r'', recursive, is necessary for the deletion of directories.  ''i'' instructs the system to confirm before deletion with a simple yes/no dialog, and ''f'' suppresses response messages (And overrides ''i'').
*'''rm''' [-r/i/f] ''"filepath"'' removes a target file or directory. The user must have appropriate access to the target file. There are three possible command switches, which may be combined (e.g. -r, -rf, and -if would all be valid). ''r'', recursive, is necessary for the deletion of directories.  ''i'' instructs the system to confirm before deletion with a simple yes/no dialog, and ''f'' suppresses response messages (And overrides ''i'').
*'''cat''' ''"filepath" [additional filepaths...]'' will print the contents of the document(s) at the specified filepath(s)
*'''cp''' ''"filepath to copy" "destination filepath"'' will make a copy of the file at the first filepath and place it in the destination.  If the destination is a directory, the copy will try to maintain the name of the original.
*'''cp''' ''"filepath to copy" "destination filepath"'' will make a copy of the file at the first filepath and place it in the destination.  If the destination is a directory, the copy will try to maintain the name of the original.
*'''mv''' ''"filepath to move" "destination filepath"'' functions in much the same way as cp, with the exception that the original file will be removed following the copy operation.
*'''mv''' ''"filepath to move" "destination filepath"'' functions in much the same way as cp, with the exception that the original file will be removed following the copy operation.
*'''su''' is used to assume superuser statusAfter executing su, insert an authorized (Read: Station Heads) ID card and follow on-screen instructions.
*'''chmod''' ''"new permission value" "target filepath"'' will change the access permission of a target file.  The permission value takes the form of three octal digits, going (from left to right) owner access, group access, and other accessEach can be thought of as three-bit binary values, bit 1 (the least significant) controlling modify access, bit 2 controlling write access, and bit 3 controlling read access. For example, the value "777" would be 111 111 111 in binary, and thus would be all access.
 
'''Input/Output'''
*'''cat''' ''"filepath" [additional filepaths...]'' will print the contents of the document(s) at the specified filepath(s)
*'''echo''' ''[text...]'' will print provided text to the current output stream.  By default, this is the user's terminal.  This may also be '''piped''' into a record file by use of ''^''.  For example: ''"echo Hello, World! ^ ./file"'' will create a file named "file" in your current directory (Assuming you have write access) containing the the text "Hello, World"  "|n" may be used to establish newlines.
*'''echo''' ''[text...]'' will print provided text to the current output stream.  By default, this is the user's terminal.  This may also be '''piped''' into a record file by use of ''^''.  For example: ''"echo Hello, World! ^ ./file"'' will create a file named "file" in your current directory (Assuming you have write access) containing the the text "Hello, World"  "|n" may be used to establish newlines.
*'''chmod''' ''"new permission value" "target filepath"'' will change the access permission of a target fileThe permission value takes the form of three octal digits, going (from left to right) owner access, group access, and other access. Each can be thought of as three-bit binary values, bit 1 (The least significant) controlling modify access, bit 2 controlling write access, and bit 3 controlling read access. For example, the value "777" would be 111 111 111 in binary, and thus would be all access.
*'''unset''' clears out values set for variables. If you don't specify anything, it'll reset all the variables, but it is possible to reset only one or a few. For example, if you have a ''fileOutput1'' variable you want to clear and a ''fileOutput2'' variable you want to leave alone, you can do ''unset fileOutput1''.
 
'''System Utilities'''
*'''su''' is used to assume superuser statusAfter executing su, insert an authorized ID card and follow on-screen instructions. Jobs with superuser access: [[Cyborg]], [[Artificial Intelligence|AI]], [[Captain]][[Head of Security]], and [[Research Director]]. [[Artificial Intelligence|AI]] and [[Cyborg]] do not need to insert an ID; they can simply input the required commands.
*'''who''' will list the usernames and network IDs of other current users on the system.
*'''who''' will list the usernames and network IDs of other current users on the system.
*'''talk''' ''"username or network ID"'' ''"message"'' will send a message to another user on the system.
*'''talk''' ''"username or network ID"'' ''"message"'' will send a message to another user on the system.
Line 51: Line 75:


*'''logout''' ''or'' '''logoff''' will do exactly what you would expect.
*'''logout''' ''or'' '''logoff''' will do exactly what you would expect.
==Transferring Files==
Databanks connected to the network serve as external storage; data is recorded on magnetic tapes, which can be removed and swapped. The important banks are:
*Control: currently holds copies of the guardbuddy control files and scripts. It is located in the RD's office. It takes the mountpoint ''/mnt/control''.
*Artlab: is the databank in Artifact Research. By default, it contains artifact research software. And a readme, you should read that. It takes the mountpoint ''/mnt/artlab''
Databanks can be accessed in the same way as any other folder in the operating system, with the caveat that any file I/O will have a minor delay that could interfere with scripting.  It is a good idea to double check any file transfers to them, in case the tape has been write-protected.


==Printing Files==
==Printing Files==
Any valid document copied to the mountpoint of a printer will be printed.  The printer mountpoints are, as expected, in /mnt, and are generally prefixed with "lp-"
Any valid document copied to the mountpoint of a printer will be printed.  The printer mountpoints are in /mnt, and are generally prefixed with "lp-".
''cp filename /mnt/lp-artlab'', will order the printer in Artifacts Lab to print the contents of filename.


==GuardBuddies==
==GuardBuddies==
Line 74: Line 92:
*''prman list''
*''prman list''


You are now in the folder with the GuardBuddy controls, and you have big boss access so they actually listen to you. The list you see before you will show your little minions with their network IDs and their equipped weapon.  
You are now in the folder with the GuardBuddy controls, and you have big boss access so they actually listen to you. The list you see before you will show all the buddy docking station network IDs and the equipped weapon of the buddy docked in them.
{| class="wikitable"
!Job
!Commands
!Description
|-
|- id="Assign a buddy to guard"
|Guard
|
* ''guard_script (network ID) (name without spaces)''
|The computer should respond ''Transmitting wake command''.  The buddy should be active, with a small face on its viewscreen.  When it gets close enough to see whomever they are guarding, they will point at that person and announce they are under guard.  If the guard target does not have access to the Guardbuddy bay, you might need to drag it out to meet its ward. Don't always think a guard is a good thing, though...many flavors of Guardbuddies are capable of friendly fire, and that can leave you vulnerable to antagonists - perhaps even the devious RD who assigned the buddy in the first place!
|- id="Assign a buddy to patrol"
|Patrol
|
* ''patrol_script (network ID)''
|The computer should respond ''Transmitting wake command''.  The Guardbuddy will wake up and behave much like a [[Securitron]], roaming the halls and arresting people doing bad things.  This is a good thing to fall back on if you don't have something better for the buddy to do, but don't want it idle.
|- id="Assigning a buddy to purge"
|Purge
|
* ''prman upload (network ID) purge''
* ''prman wake (network ID)''
|This one doesn't have a fancy control script with it because you really, really should not be uploading this command unless you are a traitor or everything has completely gone to hell.  When under these orders, the Guardbuddies figure 'if it ain't a Head, it's dead.' They will roam station and arrest anyone not showing a Head ID, causing mass havoc. Laser blasts from an energy gun will also stun a buddy and make it a sitting duck to repeated blasts.
|- id="Assigning a buddy to cheer_up"
|Cheer_Up
|
* ''prman upload (network ID) cheer_up name= (name without spaces)''
* ''prman wake (network ID)''
|This program has the GuardBuddy follow the assigned person and cheer them up by telling them jokes. The best way for a buddy to be someone's buddy!
|- id="Assigning a buddy to heckle"
|Heckle
|
* ''prman upload (network ID) heckle name= (name without spaces)''
* ''prman wake (network ID)''
|In this mode, the GuardBuddy follows the assigned person around and sometimes shouts usually lame but occasionally clever insults at them.  In other words, rather the opposite of a buddy.
|- id="Recall the buddies"
|Recall buddies
|
* ''prman recall (buddy network ID or network ID of its last dock)'' OR
* ''prman recall all''
|This will order the buddies back to their charging bays and cancel all standing orders.  This is useful if a traitor got into your controls and corrupted the buddies. Be aware that the mainframe radio has a limited range, and may not be able to recall guardbuddies too far away from the Research Sector.
|- id="Buddy Statuses"
|Buddy Statuses
|
* ''prman stat (network id)''
|This will return a series of information about the guardbuddy including the charge, currently installed tool, current task, and default task. This is useful both for figuring out why your buddies aren't doing what you want, and also figuring out whether or not people are being set to arrest, or someone just decided to set all the buddies to purge.
|-
|}
''' Note:''' ''network ID'', when used by itself, refers to the network ID of the buddy docking station, and not the network ID of the buddy itself (the buddy cannot directly interface with DWAINE, as the latter is a wired network). The only time the buddy's network ID may be used in a command is when it is being recalled.


===Assign a buddy to guard===
==Radio==
*''guard_script (network ID) (name without spaces)''<br>
If connected, the radio interface module (Used primarily by the Guardbuddy software to recall them) will appear at ''/mnt/radio''.  This can be used to transmit packets simply by writing a record file to a subdirectory named after the frequency to transmit on, each line being interpreted as a separate key in the radio packet.
The computer should respond ''Transmitting wake command''.  The buddy should be active, with a small face on its viewscreen.  When it gets close enough to see whomever they are guarding, they will point at that person and announce they are under guard.  If the guard target does not have access to the Guardbuddy bay, you might need to drag it out to meet its ward. Don't always think a guard is a good thing, though...many flavors of Guardbuddies are capable of friendly fire, and that can leave you vulnerable to antagonists - perhaps even the devious RD who assigned the buddy in the first place!


===Assign a buddy to patrol===
For example, "echo command=dostuff|naddress_1=020000FF ^ /mnt/radio/1211/test" would cause the radio to transmit a packet on frequency 121.1 with two entries, "command" equal to "dostuff" and a target address equal to 020000FF.
*''patrol_script (network ID)''<br>
The computer should respond ''Transmitting wake command''. The Guardbuddy will wake up and behave much like a [[Securitron]], roaming the halls and arresting people doing bad things.  This is a good thing to fall back on if you don't have something better for the buddy to do, but don't want it idle.


===Assigning a buddy to purge===
==Troubleshooting==
*''prman upload purge (network ID)''<br>
[[File:DataTerminalV2-128x128.png|frame|This is a data terminal, enlarged for detail. Make sure your TermOS device is directly above this.]]
*''prman wake (network ID)''<br>
When a terminal become unable to connect to the network some elements may be damaged.<br>
This one doesn't have a fancy control script with it because you really, really should not be uploading this command unless you are a traitor or everything has completely gone to hell. When under these orders, the Guardbuddies figure 'if it ain't a Head, it's dead.'  They will roam station and arrest anyone not showing a Head ID, causing mass havoc. The AI can shut down Guardbuddies remotely, so if you are a traitor and want to start a mechanical revolution, you should probably corrupt or kill the AI before setting about it.  Laser blasts from one of the lasers or Energy guns around the station will also stun a buddy and make it a sitting duck to repeated blasts.
As the network is wired, a severed cable is the most frequent problem, and requires to track the missing section in the cables between the devices you are communicating with.
 
===Recall the buddies===
*''prman recall (network ID)'' OR<br>
*''prman recall all''<br>
This will order the buddies back to their charging bays and cancel all standing orders.  This is useful if a traitor got into your controls and corrupted the buddies.


==Radio==
Every device is connected to the wires through a data terminal. Data terminals are directly under the device, hidden by the floor tile. They are '''different''' from APC terminals. Network cables run between terminals to connect devices. When a data terminal is destroyed, if the device is still functioning, it will be unable to connect to the network.
If connected, the radio interface module (Used primarily by the Guardbuddy software to recall them) will appear at ''/mnt/radio''. This can be used to transmit packets simply by writing a record file to it, each line being interpreted as a separate key in the radio packet. For example, "echo command=dostuff|naddress_1=020000FF ^ /mnt/radio/test" would cause the radio to transmit a packet on the default frequency with two entries, "command" equal to "dostuff" and a target address equal to 020000FF.  It should be noted that all packets sent in this method must have the address_1 value specified to be transmitted.
<br>
<br>
If you wish to send a signal on a frequency other than the radio's default (the Guardbuddy communication frequency), include a line in your file specifying the value of "_freq" such as "_freq=1149" to transmit over the PDA communication frequency 114.9.


==Troubleshooting==
Terminals themselves are easy to [[Constructions#Computers|build]] and [[Constructions##Computers_2|disassemble]]. TermOS can be easily installed from a disk in Tech Storage.
When a terminal become unable to connect to the network there are few elements which may be damaged.<br>
As the network is wired, a severed cable is the most frequent problem, and requires to track the missing section in the cable between the devices you are communicating with.


[[File:Terminal_Blowout.png|thumb|Data Terminal|right]]
Every device is connected to the wires through a data terminal. Data terminals are directly under the device, hidden by the floor tile. Network cables run between terminals to connect devices.<br>
When a data terminal is destroyed, if the device is still functioning, it will be off the network.<br>
Terminal themselves are easy to [[Constructions#Computers|build]] and [[Constructions##Computers_2|disassemble]].<br>
TermOS can be easily installed from a disk in Tech Storage.
<br>
<br>
This is a list of the most common problems:
This is a list of the most common problems:


*Blinking terminal screen
*;Blinking terminal screen : The glass is cracked. Take it off with screwdriver, then crowbar. Replace the glass.
*: The glass is cracked. Take it off with screwdriver, then crowbar. Replace the glass.


*Terminal unable to ping
*;Terminal unable to ping
*: Wires might be severed at some point. Search for the damaged cable section and replace it.
*:*Wires might be severed at some point. Search for the damaged cable section and replace it.  
*: A data terminal might have been destroyed by an explosion. Dismantle your terminal and move it onto another data terminal. Or ask the electricians to scan one and make you a replacement.
*:*A data terminal might have been destroyed by an explosion. Dismantle your terminal and move it onto another data terminal. Or ask the [[Engineer]]s to scan one and make you a replacement.
*:*The Mainframe might be out of power. Ask someone to check the [[Computer Core]]'s APC, or do it yourself.


*Programs stop responding. But terminal is able to ping other devices
*;Programs stop responding. But the terminal is able to ping other devices: The Mainframe may be damaged. Use the restore kit in the Research Director's office. It comes with instructions
*: The mainframe may be damaged. Use the restore kit in the Research Director's office. It comes with instructions


*Data Banks cannot be accessed and do not appear in /mnt.
*;Data Banks cannot be accessed and do not appear in /mnt.: Banks are directly connected to the Mainframe, the cable between them may be damaged. Look for the missing section. Or a missing terminal port.
*: Banks are directly connected to the Mainframe, the cable between them may be damaged. Look for the missing section. Or a missing terminal port.


==Tapping the Wire==
==Tapping the Wire==


Communications between terminals and devices run on the wire; commands are sent as messages that can be eavesdropped with the proper equipment. The Mainframe on the station is not unique. Another mainframe is at an high-tech location away from the station.
Communications between terminals and devices run on the wire; commands are sent as plain-text messages that can be eavesdropped with the proper equipment. If you want to understand how to hack the Mainframe, you should spend a round or two reading network traffic.<br>
This is ideal to practice on, if you don't want an angry scientists to blow you up for breaking his work.
If you're interested in practicing with a network but don't want to get disciplined for ruining the station's mainframe, check the debris
field. There's a completely functional mainframe and network on an abandoned space station somewhere for all of your educational needs.


==Scripting==
==Scripting==
Line 144: Line 186:


"#!" is at the start of every script, to tell the system the file is executable.<br>
"#!" is at the start of every script, to tell the system the file is executable.<br>
"|n" breaks lines in the script, one line for every command.<br>
"|n" breaks lines in the script, one line for every command (the vertical bar is made by holding {{key|ALT}} and pressing {{key|1}}{{key|2}}{{key|4}}).<br>
"^" marks the path to the file where the script is to be saved (in this case a file named myscript in the current folder).<br>
"^" marks the path to the file where the script is to be saved (in this case a file named myscript in the current folder).<br>
<br>
<br>
The tape in /mnt/control has some scripts which you can study to understand how more complex scripts can be layed out.
The tape in /mnt/control has some scripts which you can study to understand how more complex scripts can be layed out.<br>
To read existing scripts, type ''cat filename'' to have the script printed on screen.
<br>
<br>


==Tech Support==
==Tech Support==


To contain costs, our Help Line has been relocated to Space India. It can be reached from any land line, Monday to Friday.<br>
our Help Line is currently unavailable as conversion to automated Buddy Troubleshooters is in progress.<br>
If you are interested in financially sponsoring the Thinktronic. LTD.robuddy basketball team, please contact  Stephen H. Toczylowski.  
If you are interested in financially sponsoring the Thinktronic. LTD.robuddy basketball team, please contact  Stephen H. Toczylowski.  


==Bridge Comm. Console==
==Bridge Comm. Console==
There is one communication console on station. It is on the Bridge, and it is used to connect to Centcom's communication array to download often flawed intel on potential traitors or revolutions, or other messages from Centcom.  
There is one communication console on station. It is on the Bridge, and it is used to connect to Centcom's communication array to download often flawed intel on potential traitors or revolutions, or other messages from Centcom.


Instructions are available on a nearby slip of paper.
Instructions are available on a nearby slip of paper.
Line 165: Line 209:


When a file is downloaded it can be printed with the file_print command. Simply examine the paper to read the message.
When a file is downloaded it can be printed with the file_print command. Simply examine the paper to read the message.
==Supplementary Video==
<youtube>dFUlAQZB9Ng</youtube>
----
{{Department Guides}}

Latest revision as of 05:48, 5 June 2024

TermOS is a lightweight operating system for terminals, used primarily for the Research Department's network.
Terminals act as interfaces to networked servers and devices. Once connected to a server, all commands are sent from your terminal to the server, where they are actually run.

Servers you can connect to include the Research Department's Mainframe and the Centcom Communications Array.

Every device on the network is connected to through a data terminal directly below it. These transmit data through the station's power lines.

Devices have a net_id, which is their address on the network (an 8 digit string); and a type, which describes their function.

P: [02002776]-TYPE: PNET_MAINFRAME This is the Research Mainframe at address 02002776

To operate any networked device you will have to ping, then connect to it.

Connecting

help
The most important command. Displays all available commands and their usage.
term_ping
Pings the network and displays a list of all connected devices and their net_id. (Devices which are disconnected will not display. None will display if YOU are disconnected.)
connect net_id
net_ids are 8 digits. For example, connect 02002ceb will have the terminal connect to the device. More commands will be available once connected and logged into a device.
term_login
Logs you into the terminal. Your ID must be inside the terminal to log in. With your ID in your active hand, click the ----- below the screen to insert your ID.
disconnect
This will disconnect your terminal from the server you are currently connected to. no shit

The Network

DWAINE

DWAINE is the operating system of Research Mainframes. Scientists use it to run their research programs. Research Directors program guardbuddies on DWAINE.

DWAINE is a networked OS. The Mainframe runs the OS and programs, and acts as a bridge between terminals and devices.
Devices - data banks, printers, robuddy docks, radios - are connected to the Mainframe through the network.
Finally, terminals act like a keyboard and monitor, they display program interfaces and transmit commands to the Mainframe.

Log into a terminal by inserting your ID card and typing term_login. When you login at a terminal your home directory is created on the Mainframe's storage. This folder is only accessible to you and superusers. It will generally be preserved between logins, provided you only login to one terminal at a time.

There are two access levels on DWAINE: regular users only have write access to their home folder, and read access to data banks. They can however directly send commands to peripherals. Super users status requires logging while either 1) having a Captain, Research Director, Head of Security, or Nanotrasen Security Operative ID inserted or 2) being a Cyborg or AI, who do not have to insert an ID. Superusers can read and write to any folder on the system, including other users' private homes, and write/delete files on data-banks.

Notably, DWAINE instructions can be organized saved as executable files called scripts. A detailed scripting guide can be found here DWAINE Scripting.

Files

DWAINE runs on the Mainframe in the Computer Core. OS files and user homes are stored on a removable electronic board.

Program files are stored on magnetic tapes plugged into one of several data-banks. Available data-banks are listed in the directory /mnt. Important banks are:

  • Control: currently holds copies of the guardbuddy control files and scripts. It is located in the Computer Core. It takes the mountpoint /mnt/control.
  • Artlab: is the databank in Artifact Research. By default, it contains artifact research software. It takes the mountpoint /mnt/artlab

Databanks can be accessed in the same way as any other folder in the operating system, with the caveat that any file I/O will have a minor delay that could interfere with scripting. It is a good idea to double check any file transfers to them, in case the tape has been write-protected or removed.

Peripherals

To interface with peripherals the Mainframe uses a series of device drivers and mountpoints. All drivers are on the Mainframe by default.

Peripherals include databanks, printers, guardbuddies and their radio. Many of these feature some manner of interface with the file system in the form of a mountpoint in the directory /mnt. Mountpoints are like folders, their contents can be listed, and files can be copied to them

For a list of currently connected peripherals, scan the contents of /mnt with the command ls /mnt.
Peripheral can contain files, receive commands, or both.

Commands

The in-system help file is currently a work in progress, but may be accessed by the command help.

File operations:

  • ls: and an optional argument specifying the filepath. If no filepath is supplied, it will list the contents of the current working directory.
  • cd "filepath" changes the current working directory. If the filepath is not prefixed with a forward slash, it will be taken as relative to the current directory. For example, "cd /" would set the working directory to root, and then a subsequent "cd mnt/artlab" would have the same effective result as "cd /mnt/artlab"
  • rm [-r/i/f] "filepath" removes a target file or directory. The user must have appropriate access to the target file. There are three possible command switches, which may be combined (e.g. -r, -rf, and -if would all be valid). r, recursive, is necessary for the deletion of directories. i instructs the system to confirm before deletion with a simple yes/no dialog, and f suppresses response messages (And overrides i).
  • cp "filepath to copy" "destination filepath" will make a copy of the file at the first filepath and place it in the destination. If the destination is a directory, the copy will try to maintain the name of the original.
  • mv "filepath to move" "destination filepath" functions in much the same way as cp, with the exception that the original file will be removed following the copy operation.
  • chmod "new permission value" "target filepath" will change the access permission of a target file. The permission value takes the form of three octal digits, going (from left to right) owner access, group access, and other access. Each can be thought of as three-bit binary values, bit 1 (the least significant) controlling modify access, bit 2 controlling write access, and bit 3 controlling read access. For example, the value "777" would be 111 111 111 in binary, and thus would be all access.

Input/Output

  • cat "filepath" [additional filepaths...] will print the contents of the document(s) at the specified filepath(s)
  • echo [text...] will print provided text to the current output stream. By default, this is the user's terminal. This may also be piped into a record file by use of ^. For example: "echo Hello, World! ^ ./file" will create a file named "file" in your current directory (Assuming you have write access) containing the the text "Hello, World" "|n" may be used to establish newlines.
  • unset clears out values set for variables. If you don't specify anything, it'll reset all the variables, but it is possible to reset only one or a few. For example, if you have a fileOutput1 variable you want to clear and a fileOutput2 variable you want to leave alone, you can do unset fileOutput1.

System Utilities

  • su is used to assume superuser status. After executing su, insert an authorized ID card and follow on-screen instructions. Jobs with superuser access: Cyborg, AI, Captain, Head of Security, and Research Director. AI and Cyborg do not need to insert an ID; they can simply input the required commands.
  • who will list the usernames and network IDs of other current users on the system.
  • talk "username or network ID" "message" will send a message to another user on the system.
  • mesg [y/n] Will allow/disallow receiving messages from other users, or, if invoked without arguments, will show the current acceptance status.
  • logout or logoff will do exactly what you would expect.

Printing Files

Any valid document copied to the mountpoint of a printer will be printed. The printer mountpoints are in /mnt, and are generally prefixed with "lp-". cp filename /mnt/lp-artlab, will order the printer in Artifacts Lab to print the contents of filename.

GuardBuddies

Using the DWAINE terminals, you can assign Guardbuddies to various jobs. To start playing with your buddies, follow these instructions. Italicized words are commands you input into the computer:

  • Insert your ID card into the terminal
  • term_login
  • su
  • term_login
  • Eject your ID card
  • cd /mnt/control
  • prman list

You are now in the folder with the GuardBuddy controls, and you have big boss access so they actually listen to you. The list you see before you will show all the buddy docking station network IDs and the equipped weapon of the buddy docked in them.

Job Commands Description
Guard
  • guard_script (network ID) (name without spaces)
The computer should respond Transmitting wake command. The buddy should be active, with a small face on its viewscreen. When it gets close enough to see whomever they are guarding, they will point at that person and announce they are under guard. If the guard target does not have access to the Guardbuddy bay, you might need to drag it out to meet its ward. Don't always think a guard is a good thing, though...many flavors of Guardbuddies are capable of friendly fire, and that can leave you vulnerable to antagonists - perhaps even the devious RD who assigned the buddy in the first place!
Patrol
  • patrol_script (network ID)
The computer should respond Transmitting wake command. The Guardbuddy will wake up and behave much like a Securitron, roaming the halls and arresting people doing bad things. This is a good thing to fall back on if you don't have something better for the buddy to do, but don't want it idle.
Purge
  • prman upload (network ID) purge
  • prman wake (network ID)
This one doesn't have a fancy control script with it because you really, really should not be uploading this command unless you are a traitor or everything has completely gone to hell. When under these orders, the Guardbuddies figure 'if it ain't a Head, it's dead.' They will roam station and arrest anyone not showing a Head ID, causing mass havoc. Laser blasts from an energy gun will also stun a buddy and make it a sitting duck to repeated blasts.
Cheer_Up
  • prman upload (network ID) cheer_up name= (name without spaces)
  • prman wake (network ID)
This program has the GuardBuddy follow the assigned person and cheer them up by telling them jokes. The best way for a buddy to be someone's buddy!
Heckle
  • prman upload (network ID) heckle name= (name without spaces)
  • prman wake (network ID)
In this mode, the GuardBuddy follows the assigned person around and sometimes shouts usually lame but occasionally clever insults at them. In other words, rather the opposite of a buddy.
Recall buddies
  • prman recall (buddy network ID or network ID of its last dock) OR
  • prman recall all
This will order the buddies back to their charging bays and cancel all standing orders. This is useful if a traitor got into your controls and corrupted the buddies. Be aware that the mainframe radio has a limited range, and may not be able to recall guardbuddies too far away from the Research Sector.
Buddy Statuses
  • prman stat (network id)
This will return a series of information about the guardbuddy including the charge, currently installed tool, current task, and default task. This is useful both for figuring out why your buddies aren't doing what you want, and also figuring out whether or not people are being set to arrest, or someone just decided to set all the buddies to purge.

Note: network ID, when used by itself, refers to the network ID of the buddy docking station, and not the network ID of the buddy itself (the buddy cannot directly interface with DWAINE, as the latter is a wired network). The only time the buddy's network ID may be used in a command is when it is being recalled.

Radio

If connected, the radio interface module (Used primarily by the Guardbuddy software to recall them) will appear at /mnt/radio. This can be used to transmit packets simply by writing a record file to a subdirectory named after the frequency to transmit on, each line being interpreted as a separate key in the radio packet.

For example, "echo command=dostuff|naddress_1=020000FF ^ /mnt/radio/1211/test" would cause the radio to transmit a packet on frequency 121.1 with two entries, "command" equal to "dostuff" and a target address equal to 020000FF.

Troubleshooting

This is a data terminal, enlarged for detail. Make sure your TermOS device is directly above this.

When a terminal become unable to connect to the network some elements may be damaged.
As the network is wired, a severed cable is the most frequent problem, and requires to track the missing section in the cables between the devices you are communicating with.

Every device is connected to the wires through a data terminal. Data terminals are directly under the device, hidden by the floor tile. They are different from APC terminals. Network cables run between terminals to connect devices. When a data terminal is destroyed, if the device is still functioning, it will be unable to connect to the network.

Terminals themselves are easy to build and disassemble. TermOS can be easily installed from a disk in Tech Storage.

This is a list of the most common problems:

  • Blinking terminal screen
    The glass is cracked. Take it off with screwdriver, then crowbar. Replace the glass.
  • Terminal unable to ping
    • Wires might be severed at some point. Search for the damaged cable section and replace it.
    • A data terminal might have been destroyed by an explosion. Dismantle your terminal and move it onto another data terminal. Or ask the Engineers to scan one and make you a replacement.
    • The Mainframe might be out of power. Ask someone to check the Computer Core's APC, or do it yourself.
  • Programs stop responding. But the terminal is able to ping other devices
    The Mainframe may be damaged. Use the restore kit in the Research Director's office. It comes with instructions
  • Data Banks cannot be accessed and do not appear in /mnt.
    Banks are directly connected to the Mainframe, the cable between them may be damaged. Look for the missing section. Or a missing terminal port.

Tapping the Wire

Communications between terminals and devices run on the wire; commands are sent as plain-text messages that can be eavesdropped with the proper equipment. If you want to understand how to hack the Mainframe, you should spend a round or two reading network traffic.
If you're interested in practicing with a network but don't want to get disciplined for ruining the station's mainframe, check the debris field. There's a completely functional mainframe and network on an abandoned space station somewhere for all of your educational needs.

Scripting

It is possible to automate function with the use of script files. These are text files with a special prefix that marks them as executable.

A sample script to display a few words on screen.

#!
echo Hello World.

To create this script you must enter the following text.

echo #!|necho Hello World ^./myscript

"#!" is at the start of every script, to tell the system the file is executable.
"|n" breaks lines in the script, one line for every command (the vertical bar is made by holding ALT and pressing 124).
"^" marks the path to the file where the script is to be saved (in this case a file named myscript in the current folder).


The tape in /mnt/control has some scripts which you can study to understand how more complex scripts can be layed out.
To read existing scripts, type cat filename to have the script printed on screen.

Tech Support

our Help Line is currently unavailable as conversion to automated Buddy Troubleshooters is in progress.
If you are interested in financially sponsoring the Thinktronic. LTD.robuddy basketball team, please contact Stephen H. Toczylowski.

Bridge Comm. Console

There is one communication console on station. It is on the Bridge, and it is used to connect to Centcom's communication array to download often flawed intel on potential traitors or revolutions, or other messages from Centcom.

Instructions are available on a nearby slip of paper.

  • Initially two commands will be available.
    list: This prints a list of all the Centcom messages available to download and their messages IDs
    download: Download (message ID)

When a file is downloaded it can be printed with the file_print command. Simply examine the paper to read the message.

Supplementary Video


Department Guides
Engineering Making and Breaking · Construction · Gas · Power Grid · Thermoelectric Generator · Singularity Generator · Geothermal Generator · Catalytic Generator · Nuclear Generator · Mining · Materials and Crafting · Wiring · Hacking · MechComp · Mechanic components and you · Control Unit · Ruckingenur Kit · Reactor Statistics Computer · Cargo Crates
Medsci Doctoring · Genetics · Robotics · Telescience · Plasma Research · Artifact Research · Chemistry · Chemicals · ChemiCompiler · Decomposition
Security Security Officer · Contraband · Forensics · Space Law
Service Foods and Drinks · Botany · Writing · Piano Song Dump · Instruments
The AI Artificial Intelligence · AI Laws · Chain of Command · Guide to AI · Humans and Nonhumans · Killing the AI
Computers Computers · TermOS · ThinkDOS · Packets