fallout-term/fallout_boot.py
2024-04-28 10:02:47 -05:00

110 lines
2.9 KiB
Python

from fallout_functions import slowWrite
from fallout_functions import INPUT_PAUSE
from fallout_functions import TYPE_DELAY
from fallout_functions import upperInput
import curses
######################## global 'constants' ##############
ENTRY_1 = "SET TERMINAL/INQUIRE"
ENTRY_2 = "SET FILE/PROTECTION=OWNER:RWED ACCOUNTS.F"
ENTRY_3 = "SET HALT RESTART/MAINT"
ENTRY_4 = "RUN DEBUG/ACCOUNTS.F"
######################## text strings ####################
MESSAGE_1 = "WELCOME TO ROBCO INDUSTRIES (TM) TERMLINK"
MESSAGE_2 = "RIT-V300"
MESSAGE_3 = [
"\nInitializing Robco Industries(TM) MF Boot Agent v2.3.0\n",
"RETROS BIOS\n",
"RBIOS-4.02.08.00 52EE5.E7.E8\n",
"Copyright 2201-2203 Robco Ind.\n",
"Uppermem: 64 KB\n",
"Root (5A8)\n",
"Maintenance Mode\n\n",
]
######################## functions #######################
def runBoot(scr, hardMode):
"""
Start the boot portion of the terminal
hardMode - boolean indicating whether the user has to enter the ENTRY
constants, or if they are entered automatically
"""
curses.use_default_colors()
scr.erase()
scr.move(0, 0)
curses.noecho()
scr.scrollok(True)
slowWrite(scr, MESSAGE_1 + "\n\n")
if hardMode:
# use must enter the correct text to proceed
entry = ""
while entry.upper() != ENTRY_1.upper():
slowWrite(scr, ">")
entry = upperInput(scr)
else:
# input is entered for them
slowWrite(scr, ">")
curses.napms(INPUT_PAUSE)
slowWrite(scr, ENTRY_1 + "\n", TYPE_DELAY, True)
slowWrite(scr, "\n" + MESSAGE_2 + "\n\n")
if hardMode:
entry = ""
while entry.upper() != ENTRY_2.upper():
slowWrite(scr, ">")
entry = upperInput(scr)
while entry.upper() != ENTRY_3.upper():
slowWrite(scr, ">")
entry = upperInput(scr)
else:
slowWrite(scr, ">")
curses.napms(INPUT_PAUSE)
slowWrite(scr, ENTRY_2 + "\n", TYPE_DELAY, True)
slowWrite(scr, ">")
curses.napms(INPUT_PAUSE)
slowWrite(scr, ENTRY_3 + "\n", TYPE_DELAY, True)
for LINE in MESSAGE_3:
slowWrite(scr, LINE)
if hardMode:
entry = ""
while entry.upper() != ENTRY_4.upper():
slowWrite(scr, ">")
entry = upperInput(scr)
else:
slowWrite(scr, ">")
curses.napms(INPUT_PAUSE)
slowWrite(scr, ENTRY_4 + "\n", TYPE_DELAY, True)
curses.napms(INPUT_PAUSE)
return True
def beginBoot(hardMode):
"""
Initialize curses and start the boot process
hardMode - boolean indicating whether the user has to enter the ENTRY
constants, or if they are entered automatically
Returns true if hardMode == false or if the user entered the correct string
"""
res = curses.wrapper(runBoot, hardMode)
return res