Set Up Your Own Retro Terminal
Build your own 1980s computer interface backed by a Google Drive folder. Visitors get a glowing CRT, a login prompt, and a DOS style file system containing whatever you put on the “disk.”
Quick Start
Create a folder in Google Drive. This folder is your “disk.”
Create the password file. Inside the folder, make a file named
password.txt(a plain Google Doc namedpasswordworks too). Each line is one login. Put the username and password on the same line, separated by a comma:user,test2 admin,youcantguessthisUsernames are not case sensitive when logging in. Passwords are exact. Lines starting with
#are ignored, so you can leave notes in the file.No password file? The terminal falls back to two built in logins:
user/test2andadmin/youcantguessthis. This means any shared folder works as a disk right away, and you can add a password file later when you want your own logins.Create a folder for each user. For every username, add a subfolder with the same name (
user/,admin/). Whatever you put inside is what that person sees after logging in. Subfolders inside those work too, and players navigate them with the CD command.Share the disk. Set the main folder’s sharing to “Anyone with the link.” Every file inside inherits this, which is what lets the terminal read it.
Build your link. Copy the long code out of your Drive share link and add it to the end of the terminal’s address after
#d=.If your share link is:
https://drive.google.com/drive/folders/1w9vDeouonV_qoUnJMMbNMTXymHF5XF5-?usp=sharingyour terminal link is:
https://deckanddicegames.com/terminal/#d=1w9vDeouonV_qoUnJMMbNMTXymHF5XF5-Send that link to your users along with their username and password. That’s it. The terminal boots straight into your disk.
Commands Your Users Can Type
| Command | What it does |
|---|---|
DIR | List the files and folders in the current directory |
CD folder | Enter a subfolder. CD .. goes up and CD \ returns to home |
TYPE filename | Display a text file (long files pause, ENTER continues, Q quits) |
VIEW filename | Display a picture, drawn scanline by scanline |
PLAY filename | Play a sound file (only listed when the folder has audio) |
LOGOUT | Return to the login screen |
? or HELP | Show the command list, including any custom commands |
Filenames are forgiving. Any unique beginning of a name works, so VIEW SUN finds SUNSET.GIF. All pictures display with a .GIF extension for period flavor, whatever their real format. Folders show as <DIR> in the listing.
Customizing With config.txt
Add an optional file named config.txt (or a Google Doc named config) to the disk’s main folder. Every setting is optional. Leave one out and the default applies.
You can comment your config file. A # starts a comment, whole line or at the end of a line. If a value needs a real #, write it as \#.
Appearance
| Option | Values | Default |
|---|---|---|
screen= | green, amber, grey, white, cyan, blue, ice, red, crimson, magenta, pink, purple, yellow, gold, orange, lime, mint, teal | green |
monitor= | The plastic casing color: cream, white, black, graphite, silver, slate, navy, olive, red, teal, pink, gold, any #hex, or off to remove the casing and show only the glowing screen | cream |
flicker= | on, off | on |
scanlines= | on, off | on |
font= | small, normal, large, or a pixel size from 10 to 40 | normal |
badge= | Any text. The label printed on the monitor’s plastic bezel | PHOSPHOR/86 [COLOR] DISPLAY |
Boot and Login
| Option | Values | Default |
|---|---|---|
boot= | bios (power on self test), dialup (modem call with sound), telnet (network login), none (skip straight to login) | bios |
bios= | Any text. Repeat the line to build a multi line power on screen, used by the bios style | PHOSPHOR/86 POST text |
os= | Any text. The system name shown while booting | PH-DOS |
ver= | Any text. The version shown next to the name | 3.30 |
message= | Any text. The banner above the login prompt. Leave blank (message=) to hide it | RESTRICTED SYSTEM -- AUTHORIZED USERS ONLY |
modem= | on (synthesized handshake), off (silent), or a sound filename. See below | on |
phone= | A phone number users must dial before they can connect. See below | off |
Real modem sound. Drop an audio file named modem.mp3 (or .wav, .ogg, .m4a) into the disk’s main folder and the dialup boot plays it automatically instead of the synthesized handshake. To use a different filename, point at it with modem=thatfile.mp3. Browsers require a click or keypress before playing audio, so dial up boots show PRESS ANY KEY TO DIAL first. The boot text waits for the recording to finish before showing CONNECT.
Phone number puzzle. Set phone=555-0186 (with boot=dialup) and the terminal asks for a number to dial instead of dialing automatically. Only the right number connects and reaches the login. Wrong numbers dial with real touch tones, then either ring with no answer (numbers ending in an odd digit) or hit a busy signal (numbers ending in an even digit). Both hang up after 5 seconds and return to the DIAL prompt. Hide the correct number somewhere in your game world.
Behavior
| Option | Values | Default |
|---|---|---|
speed= | instant, fast, normal, slow, or a number (a multiplier, so 2 is twice as slow) | normal |
beep= | on, off. Keystroke click sounds | off |
path= | Any text. The drive path shown in the prompt | C:\USERS\ |
motd= | A text filename that is automatically displayed after login, like a welcome screen. Put the file in the user’s folder or the main folder | off |
hidden= | Filenames separated by commas. Hidden files do not appear in DIR but can still be opened by anyone who knows their name. Great for puzzles | none |
hidedirs= | Subfolder names separated by commas. Hidden folders do not appear in DIR but can still be entered with CD if you know the name | none |
Custom Commands
Invent your own commands that print text when typed. Perfect for LOOK, story beats, or flavor. Use cmd.NAME= for the text (repeat the line for multiple lines), and optionally help.NAME= for the one line description shown in the ? menu.
cmd.LOOK=You stand in a server room. Racks hum in the dark.
cmd.LOOK=A single terminal glows against the far wall.
help.LOOK=examine your surroundings
Commands with a second word. A command can respond differently depending on what word follows it. Add the word to the key with a dot:
cmd.SRCHDIR=Which directory? Try SRCHDIR <name>.
cmd.SRCHDIR.JOHN=JOHN DOE -- CLEARANCE 2 -- ACTIVE
cmd.SRCHDIR.JOHN=LAST LOGIN: 03-14-88
cmd.SRCHDIR.MIKE=MIKE ROSS -- CLEARANCE 4 -- SUSPENDED
cmd.SRCHDIR.*=NO PERSONNEL RECORD FOR {ARG}
help.SRCHDIR=search the personnel directory
Now SRCHDIR JOHN and SRCHDIR MIKE give different answers. The .* line is the response for any word you did not define, and the plain cmd.SRCHDIR= line is the response when someone types the command with no word at all. The special token {ARG} is replaced with whatever the player typed, which lets the default echo their input back at them.
Matching is not case sensitive. If you define only specific words and skip the .* and bare forms, the terminal falls back to built in replies: “No entry found for X” and “Required parameter missing”.
Action lines. Inside a custom command, a line starting with ! performs an action instead of printing:
| Action | Effect |
|---|---|
!type file.txt | Display a text file |
!view photo.jpg | Display a picture |
!play siren.mp3 | Play a sound |
!pause 2 | Wait 2 seconds |
!unlock file.txt | Unlock a password locked file |
!reveal name | Un-hide a hidden file or folder for the rest of the session |
So a command can tell a little scene:
cmd.SCAN=SCANNING SECTOR 7 . . .
cmd.SCAN=!pause 2
cmd.SCAN=!play blip.mp3
cmd.SCAN=ANOMALY DETECTED
cmd.SCAN=!reveal vault
help.SCAN=sweep the area
Typing SCAN prints the first line, pauses, plays a sound, announces the anomaly, and a previously hidden vault folder now appears in DIR.
Locked Files
Require a password before a file can be opened with TYPE, VIEW, or PLAY:
lock.dossier.txt=swordfish
When someone tries to open it, the terminal prompts PASSWORD: with masked input. The right answer unlocks it for the rest of the session. The wrong one gets ACCESS DENIED. Locks match the real filename, the DOS short name, or the name without its extension.
Chain these together for puzzles. Hide the password to one file inside another, gate a folder reveal behind a custom command, or make !unlock the reward for solving something. Combined with hidden=, hidedirs=, and phone=, you have a complete puzzle toolkit.
Custom Dialup Script
When boot=dialup (without phone=), you can rewrite the entire modem sequence with repeated dial= lines. Use {DOTS} to mark where it should wait for the handshake sound to finish, and {OS} or {VER} to insert those values. A line starting with ~ is dimmed.
dial=ATDT 1-800-555-BBS
dial=CONNECTING TO THE GRID{DOTS}
dial=
dial=CONNECT 56000/V.90
dial=~SECURE CHANNEL ESTABLISHED
dial={OS} {VER} READY
Example config.txt
# -- my haunted mainframe --
screen=amber # green, amber, grey, and 15 more
monitor=black # casing color, or off for bare screen
boot=dialup # bios, dialup, telnet or none
phone=555-0186 # players must find and dial this number
os=NECRO-DOS # shown while booting
ver=6.66
message=SPEAK FRIEND AND ENTER
badge=WYRM SYSTEMS 3000 # label on the monitor bezel
speed=fast
beep=on
motd=welcome.txt # auto displays after login
hidden=clue3.txt # findable only if you know its name
lock.dossier.txt=raven # requires a password to open
GM Tip: Fullscreen
Press Ctrl+F (Cmd+F on Mac) at any time, even during boot or at the login screen, to toggle fullscreen. Only the terminal fills the display, never the rest of the webpage around it. There is no on screen hint and no command for it, so you can set the mood before handing the device to your players. Open the link, hit Ctrl+F, and pass it over showing nothing but the glowing tube. Ctrl+F again (or ESC) exits. On iPhones, which do not support true browser fullscreen, it falls back to filling the visible screen instead.
Troubleshooting
- Disk error at boot. The folder could not be read. Check that it is shared as “Anyone with the link” and that the folder code in your URL is correct.
- The default logins work but mine do not. Check the file is named
password(notpasswords) and that each line has the username and password separated by a comma. - Pictures show a display error. The image file is not publicly readable. Re-check the folder’s sharing.
- A user sees “no folder named X on this disk.” Their subfolder’s name does not match their username in the password file.
A Note on Security
This is retro theater, not a vault. The disk is a publicly shared folder, so anyone who has the folder ID can open it in Google Drive directly and read everything, including the password file. Use it for fun: scavenger hunts, story games, party invitations, hidden lore. Do not use it for anything private.
Development, Comments, Suggestions?
Visit our Discord Server.
