Initial commit
This commit is contained in:
commit
66e488f9b3
15 changed files with 581 additions and 0 deletions
5
.gitignore
vendored
Normal file
5
.gitignore
vendored
Normal file
|
@ -0,0 +1,5 @@
|
||||||
|
*~
|
||||||
|
*.BAK
|
||||||
|
*.bak
|
||||||
|
*.EXE
|
||||||
|
*.exe
|
11
pc/os/BOOTUP.BAT
Normal file
11
pc/os/BOOTUP.BAT
Normal file
|
@ -0,0 +1,11 @@
|
||||||
|
@echo off
|
||||||
|
echo ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍť
|
||||||
|
echo ş System Configuration (C) Copyright 1985-2024, Kangaroo Punch Studios ş
|
||||||
|
echo ĚÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍš
|
||||||
|
echo ş Main Processor : 80486 ł Base Memory Size : 640 KB ş
|
||||||
|
echo ş Numeric Processor : None ł Ext. Memory Size : 14912 KB ş
|
||||||
|
echo ş Floppy Drive A : 1.44MB, 3Ť" ł Hard Disk C: Type : 47 ş
|
||||||
|
echo ş Floppy Drive B : 1.2 MB, 5Ź" ł Hard Disk D: Type : None ş
|
||||||
|
echo ş Display Type : VGA or EGA ł Serial Port(s) : 3F8 ş
|
||||||
|
echo ş ROM-BIOS Date : 11/15/24 ł Parallel Port(s) : 3BC ş
|
||||||
|
echo ČÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍź
|
1
pc/os/EDIT.BAT
Normal file
1
pc/os/EDIT.BAT
Normal file
|
@ -0,0 +1 @@
|
||||||
|
@c:\snafu\gets\tools\se.exe %1 %2 %3 %4 %5 %6 %7 %8 %9
|
25
pc/os/SPLASH.ANS
Normal file
25
pc/os/SPLASH.ANS
Normal file
|
@ -0,0 +1,25 @@
|
||||||
|
[?7h[40m[2J[40m
|
||||||
|
|
||||||
|
[0;1m [0mM [1;30mI C R O S
|
||||||
|
M [0mI [1;30mC R O S[5C[36mMiniature PC BIOS
|
||||||
|
[30mM I [0mC [1;30mR O S
|
||||||
|
M I C [0mR [1;30mO S[5C[0;36mVersion 1.0
|
||||||
|
[1;30mM I C R [0mO [1;30mS[5C[0;36mCopyright 2024 Scott Duensing
|
||||||
|
[1;37mM I C R O S[5C[0;36mKangaroo Punch Studios
|
||||||
|
|
||||||
|
|
||||||
|
[5C[37mCPU : Broadcom BCM2711 Quad Cortex-A72 ARM v8
|
||||||
|
[5CRAM : 2097152 KB
|
||||||
|
[5CUSB : 2x 3.0 / 2x 2.0
|
||||||
|
RADIO : BT 5.0 BLE / 2.4GHz @ 5GHz 802.11ac
|
||||||
|
VIDEO : 2x 1920x1080 HDMI
|
||||||
|
|
||||||
|
|
||||||
|
ARM-to-x86 Translation and DOS provided by [1mDOSBox Staging
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
[27C[33m* * * PLEASE WAIT * * *
|
||||||
|
|
||||||
|
|
||||||
|
[0m[255D
|
158
pc/os/notes.txt
Normal file
158
pc/os/notes.txt
Normal file
|
@ -0,0 +1,158 @@
|
||||||
|
- Things we need to configure:
|
||||||
|
|
||||||
|
Locale
|
||||||
|
|
||||||
|
Keyboard
|
||||||
|
|
||||||
|
Timezone
|
||||||
|
timedatectl show
|
||||||
|
timedatectl --no-pager list-timezones
|
||||||
|
timedatectl set-timezone <ZONE>
|
||||||
|
|
||||||
|
WiFi Region
|
||||||
|
WiFi SSID
|
||||||
|
WiFi Passkey
|
||||||
|
Bluetooth
|
||||||
|
Hostname
|
||||||
|
Password
|
||||||
|
Volume
|
||||||
|
Audio Internal / HDMI
|
||||||
|
|
||||||
|
|
||||||
|
- Change /boot/firmware/cmdline.txt:
|
||||||
|
|
||||||
|
console=serial0,115200 console=tty3 logo.nologo root=PARTUUID=df70021d-02 rootfstype=ext4 fsck.repair=yes rootwait quiet splash plymouth.ignore-serial-consoles cfg80211.ieee80211_regdom=US video=HDMI-A-1:640x480M@60,panel_orientation=up
|
||||||
|
|
||||||
|
|
||||||
|
- Change /boot/firmware/config.txt (add to end):
|
||||||
|
|
||||||
|
[pi4]
|
||||||
|
arm_freq=2100
|
||||||
|
gpu_freq=750
|
||||||
|
over_voltage=6
|
||||||
|
|
||||||
|
[all]
|
||||||
|
dtoverlay=audremap,pins_18_19
|
||||||
|
disable_splash=1
|
||||||
|
disable_touchscreen=1
|
||||||
|
|
||||||
|
|
||||||
|
- Tweak CPU:
|
||||||
|
|
||||||
|
sudo apt-get install cpufrequtils
|
||||||
|
echo "CPU_DEFAULT_GOVERNOR=\"performance\"" >> /etc/cpu_governor
|
||||||
|
|
||||||
|
|
||||||
|
- Hide some text:
|
||||||
|
|
||||||
|
echo > /etc/issue
|
||||||
|
echo > /etc/motd
|
||||||
|
cat <<- GETTY > /etc/systemd/system/getty@tty1.service.d/autologin.conf
|
||||||
|
[Service]
|
||||||
|
ExecStart=
|
||||||
|
ExecStart=-/sbin/agetty --skip-login --nonewline --noissue --autologin ${SUDO_USER} --noclear %I $TERM
|
||||||
|
GETTY
|
||||||
|
touch .hushlogin
|
||||||
|
sudo chmod -x /etc/update-motd.d/*
|
||||||
|
|
||||||
|
|
||||||
|
- Set config options:
|
||||||
|
|
||||||
|
sudo raspi-config nonint do_update
|
||||||
|
sudo raspi-config nonint do_hostname tinydos
|
||||||
|
sudo raspi-config nonint do_boot_behaviour B2
|
||||||
|
sudo raspi-config nonint do_boot_wait 0
|
||||||
|
sudo raspi-config nonint do_audio 0 # ERRORS!
|
||||||
|
sudo raspi-config nonint do_blanking 0
|
||||||
|
sudo raspi-config nonint do_ssh 0
|
||||||
|
sudo raspi-config nonint do_rpi_connect 1
|
||||||
|
sudo raspi-config nonint do_vnc 0
|
||||||
|
sudo raspi-config nonint do_net_names 0
|
||||||
|
sudo raspi-config nonint do_wayland W1
|
||||||
|
sudo raspi-config nonint do_overscan_kms 1 0
|
||||||
|
|
||||||
|
|
||||||
|
- Install Samba:
|
||||||
|
|
||||||
|
sudo apt-get install samba samba-common-bin smbclient cifs-utils
|
||||||
|
cat <<- SAMBA >> /etc/samba/smb.conf
|
||||||
|
[DOS]
|
||||||
|
comment = Tiny DOS Files
|
||||||
|
path = /home/scott/dos
|
||||||
|
writable = yes
|
||||||
|
browseable = yes
|
||||||
|
public = no
|
||||||
|
SAMBA
|
||||||
|
(echo "${PASSWORD}"; echo "${PASSWORD}") | sudo smbpasswd -s -a "${SUDO_USER}"
|
||||||
|
sudo service smbd restart
|
||||||
|
|
||||||
|
|
||||||
|
- Install DOSBox Staging:
|
||||||
|
|
||||||
|
sudo apt install flatpak
|
||||||
|
flatpak remote-add --if-not-exists flathub https://dl.flathub.org/repo/flathub.flatpakrepo
|
||||||
|
flatpak install flathub io.github.dosbox-staging
|
||||||
|
|
||||||
|
|
||||||
|
- Configure DOSBox:
|
||||||
|
|
||||||
|
sed -i "s/fullscreen.\s*= false/fullscreen = true/" dos/dosbox-staging.conf
|
||||||
|
sed -i "s/fullresolution.\s*= desktop/fullresolution = 1920x1080/" dos/dosbox-staging.conf
|
||||||
|
sed -i "s/startup_verbosity.\s*= auto/startup_verbosity = quiet/" dos/dosbox-staging.conf
|
||||||
|
sed -i "s/aspect.\s*= auto/aspect = stretch/" dos/dosbox-staging.conf
|
||||||
|
sed -i "s/integer_scaling.\s*= auto/integer_scaling = off/" dos/dosbox-staging.conf
|
||||||
|
sed -i "s/viewport.\s*= fit/viewport = 80%/" dos/dosbox-staging.conf
|
||||||
|
sed -i "s/glshader.\s*= crt_auto/glshader = none/" dos/dosbox-staging.conf
|
||||||
|
sed -i "s/cycles.\s*= auto/cycles = 40000/" dos/dosbox-staging.conf
|
||||||
|
sed -i "s/capture_dir.\s*= capture/capture_dir = ~\/dos\/capture/" dos/dosbox-staging.conf
|
||||||
|
sed -i "s/phonebookfile.\s*= phonebook.txt/phonebookfile = ~\/dos\/phonebook.txt" dos/dosbox-staging.conf
|
||||||
|
sed -i "s/ipx.\s*= false/ipx = true/" dos/dosbox-staging.conf
|
||||||
|
cat <<- STARTUP >> dos/dosbox-staging.conf
|
||||||
|
@echo off
|
||||||
|
cls
|
||||||
|
mount c ~/dos/c > NUL
|
||||||
|
c:
|
||||||
|
call dos\bootup.bat
|
||||||
|
autoexec.bat
|
||||||
|
STARTUP
|
||||||
|
|
||||||
|
|
||||||
|
- Start on boot:
|
||||||
|
|
||||||
|
cat <<- "XINIT" > .xinitrc
|
||||||
|
amixer -q -M sset Master 100%
|
||||||
|
xrandr --output HDMI-1 --mode "1920x1080"
|
||||||
|
xrandr --output HDMI-2 --same-as HDMI-1
|
||||||
|
flatpak run io.github.dosbox-staging
|
||||||
|
XINIT
|
||||||
|
|
||||||
|
cat <<- "PROFILE" >> .profile
|
||||||
|
# DOSBox Staging
|
||||||
|
if [[ -z \"\${SSH_CLIENT}\" ]]; then
|
||||||
|
startx -- -quiet -depth 24
|
||||||
|
fi
|
||||||
|
PROFILE
|
||||||
|
|
||||||
|
|
||||||
|
- Set up DOS folder:
|
||||||
|
|
||||||
|
mkdir -p dos/c/DOS
|
||||||
|
mkdir -p dos/capture
|
||||||
|
ln -s /home/${USER}/.var/app/io.github.dosbox-staging/config/dosbox/dosbox-staging.conf dos/.
|
||||||
|
cat <<- AUTOEXEC > dos/c/AUTOEXEC.BAT
|
||||||
|
@echo off
|
||||||
|
PATH=C:\DOS;Z:\;Y:\DOS
|
||||||
|
dir
|
||||||
|
AUTOEXEC
|
||||||
|
unix2dos dos/c/AUTOEXEC.BAT
|
||||||
|
echo "@c:\snafu\gets\tools\se.exe %1 %2 %3 %4 %5 %6 %7 %8 %9" > dos/c/DOS/EDIT.BAT
|
||||||
|
unix2dos dos/c/DOS/EDIT.BAT
|
||||||
|
|
||||||
|
|
||||||
|
- Modify Plymouth:
|
||||||
|
|
||||||
|
cd /usr/share/plymouth/themes/pix
|
||||||
|
sudo mv splash.png splash.png.old
|
||||||
|
sudo cp ~/splash.png splash.png
|
||||||
|
sudo sed -i "s/Plymouth.SetUpdateStatusFunction(message_callback);/#Plymouth.SetUpdateStatusFunction(message_callback);/" pix.script
|
||||||
|
sudo update-initramfs -u
|
BIN
pc/os/splash.png
Normal file
BIN
pc/os/splash.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 72 KiB |
BIN
pc/os/splash.xcf
Normal file
BIN
pc/os/splash.xcf
Normal file
Binary file not shown.
BIN
pc/settings/DIALOG.FRM
Normal file
BIN
pc/settings/DIALOG.FRM
Normal file
Binary file not shown.
BIN
pc/settings/MAIN.FRM
Normal file
BIN
pc/settings/MAIN.FRM
Normal file
Binary file not shown.
139
pc/settings/MM_SETUP.BAS
Normal file
139
pc/settings/MM_SETUP.BAS
Normal file
|
@ -0,0 +1,139 @@
|
||||||
|
'$FORM frmMain
|
||||||
|
|
||||||
|
|
||||||
|
' $INCLUDE: 'MM_SETUP.BI'
|
||||||
|
|
||||||
|
|
||||||
|
DECLARE SUB comLine (n, a$(), max)
|
||||||
|
DECLARE SUB showHelp ()
|
||||||
|
DECLARE SUB startup ()
|
||||||
|
|
||||||
|
|
||||||
|
CONST magic$ = "KSFGILWZ"
|
||||||
|
|
||||||
|
|
||||||
|
' UI Colors.
|
||||||
|
SCREEN.ControlPanel(DESKTOP_BACKCOLOR) = 1
|
||||||
|
SCREEN.ControlPanel(DESKTOP_FORECOLOR) = 7
|
||||||
|
SCREEN.ControlPanel(DESKTOP_PATTERN) = 32
|
||||||
|
|
||||||
|
|
||||||
|
' *** DEBUGGING ***
|
||||||
|
dialogOpen "Setup", "Loading Settings"
|
||||||
|
loadSettings
|
||||||
|
dialogClose
|
||||||
|
|
||||||
|
frmMain.Tag = magic$
|
||||||
|
frmMain.SHOW
|
||||||
|
|
||||||
|
|
||||||
|
'startup
|
||||||
|
|
||||||
|
STATIC SUB comLine (NumArgs AS INTEGER, Args$(), MaxArgs AS INTEGER)
|
||||||
|
|
||||||
|
DIM in
|
||||||
|
DIM cl$
|
||||||
|
DIM l
|
||||||
|
DIM I
|
||||||
|
DIM c$
|
||||||
|
|
||||||
|
NumArgs = 0: in = FALSE
|
||||||
|
' Get the command line using the COMMAND$ function
|
||||||
|
cl$ = COMMAND$
|
||||||
|
l = LEN(cl$)
|
||||||
|
' Go through the command line a character at a time
|
||||||
|
FOR I = 1 TO l
|
||||||
|
c$ = MID$(cl$, I, 1)
|
||||||
|
' Test for character being a blank or a tab
|
||||||
|
IF (c$ <> " " AND c$ <> CHR$(9)) THEN
|
||||||
|
' Neither blank nor tab; test if you're already inside
|
||||||
|
' an argument
|
||||||
|
IF NOT in THEN
|
||||||
|
' You've found the start of a new argument
|
||||||
|
' Test for too many arguments
|
||||||
|
IF NumArgs = MaxArgs THEN EXIT FOR
|
||||||
|
NumArgs = NumArgs + 1
|
||||||
|
in = TRUE
|
||||||
|
END IF
|
||||||
|
' Add the character to the current argument
|
||||||
|
Args$(NumArgs) = Args$(NumArgs) + c$
|
||||||
|
ELSE
|
||||||
|
' Found a blank or a tab.
|
||||||
|
' Set "Not in an argument" flag to FALSE
|
||||||
|
in = FALSE
|
||||||
|
END IF
|
||||||
|
NEXT I
|
||||||
|
|
||||||
|
END SUB
|
||||||
|
|
||||||
|
STATIC SUB showHelp ()
|
||||||
|
|
||||||
|
PRINT "This isn't helpful yet."
|
||||||
|
|
||||||
|
END SUB
|
||||||
|
|
||||||
|
SUB startup ()
|
||||||
|
|
||||||
|
'
|
||||||
|
' Read command line options from passed argument ("\ksfgilwz.$$$").
|
||||||
|
'
|
||||||
|
' After arguments are read, delete this file. If it re-appears, read
|
||||||
|
' data from Linux out of it and delete it again.
|
||||||
|
'
|
||||||
|
' For us to send data to Linux, write it to the first argument but change
|
||||||
|
' the extension to !!! ("\ksfgilwz.!!!"). Linux will delete it when it
|
||||||
|
' has been processed.
|
||||||
|
'
|
||||||
|
' If we need to execute DOS commands, write them to the second argument
|
||||||
|
' ("\ksfgilwz.bat") and exit this program.
|
||||||
|
'
|
||||||
|
|
||||||
|
DIM p$(1 TO 10)
|
||||||
|
DIM a$(1 TO 10)
|
||||||
|
DIM c$
|
||||||
|
DIM n
|
||||||
|
DIM f
|
||||||
|
|
||||||
|
' Parse command line.
|
||||||
|
CALL comLine(n, a$(), 10)
|
||||||
|
|
||||||
|
' Did we get exactly two arguments?
|
||||||
|
IF (n <> 1) OR (a$(1) <> magic$) THEN
|
||||||
|
PRINT "Do not run MM_SETUP directly. Use SETTINGS instead."
|
||||||
|
END
|
||||||
|
END IF
|
||||||
|
|
||||||
|
' Load the actual command line arguments from a file to preserve case.
|
||||||
|
n = 0
|
||||||
|
ON LOCAL ERROR RESUME NEXT
|
||||||
|
f = FREEFILE
|
||||||
|
OPEN "C:\" + magic$ + ".$$$" FOR INPUT AS f
|
||||||
|
IF ERR = 0 THEN
|
||||||
|
DO WHILE NOT EOF(f)
|
||||||
|
n = n + 1
|
||||||
|
LINE INPUT #f, p$(n)
|
||||||
|
LOOP
|
||||||
|
CLOSE f
|
||||||
|
END IF
|
||||||
|
ERR = 0
|
||||||
|
ON LOCAL ERROR GOTO 0
|
||||||
|
|
||||||
|
' Did they send us any arguments? If not, go GUI!
|
||||||
|
IF (n = 0) THEN
|
||||||
|
frmMain.Tag = magic$
|
||||||
|
frmMain.SHOW
|
||||||
|
ELSE
|
||||||
|
' Process command line arguments.
|
||||||
|
c$ = RTRIM$(LTRIM$(UCASE$(p$(1))))
|
||||||
|
SELECT CASE c$
|
||||||
|
CASE "?", "/?", "HELP", "/HELP"
|
||||||
|
showHelp
|
||||||
|
CASE ELSE
|
||||||
|
PRINT "Unknown option "; CHR$(34); c$; CHR$(34); "."
|
||||||
|
PRINT "Use "; CHR$(34); "SETTINGS HELP"; CHR$(34); " for help."
|
||||||
|
END 1
|
||||||
|
END SELECT
|
||||||
|
END IF
|
||||||
|
|
||||||
|
END SUB
|
||||||
|
|
14
pc/settings/MM_SETUP.BI
Normal file
14
pc/settings/MM_SETUP.BI
Normal file
|
@ -0,0 +1,14 @@
|
||||||
|
OPTION EXPLICIT
|
||||||
|
DEFINT A-Z
|
||||||
|
|
||||||
|
' $INCLUDE: 'CONSTANT.BI'
|
||||||
|
|
||||||
|
DECLARE SUB centerForm (who AS FORM)
|
||||||
|
DECLARE SUB dialogClose ()
|
||||||
|
DECLARE SUB dialogOpen (titleBar AS STRING, message AS STRING)
|
||||||
|
DECLARE SUB getList (f AS INTEGER, who AS CONTROL)
|
||||||
|
DECLARE SUB loadSettings ()
|
||||||
|
DECLARE SUB setList (who AS CONTROL, what AS STRING)
|
||||||
|
|
||||||
|
DECLARE FUNCTION getSetting (f AS INTEGER) AS STRING
|
||||||
|
|
4
pc/settings/MM_SETUP.MAK
Normal file
4
pc/settings/MM_SETUP.MAK
Normal file
|
@ -0,0 +1,4 @@
|
||||||
|
MM_SETUP.BAS
|
||||||
|
MAIN.FRM
|
||||||
|
DIALOG.FRM
|
||||||
|
SHARED.BAS
|
39
pc/settings/SETTINGS.BAT
Normal file
39
pc/settings/SETTINGS.BAT
Normal file
|
@ -0,0 +1,39 @@
|
||||||
|
@echo off
|
||||||
|
|
||||||
|
rem VBDOS is stupid and insists that command line arguments be translated
|
||||||
|
rem to upper case. So we shove them into a file and read them from there.
|
||||||
|
|
||||||
|
rem "ksfgilwz" is random crap I banged into my keyboard. Nobody should have
|
||||||
|
rem a file with that name. Right?
|
||||||
|
set MM_RN=ksfgilwz
|
||||||
|
|
||||||
|
rem Specify our settings, batch, and response files.
|
||||||
|
set MM_SF=C:\%MM_RN%.$$$
|
||||||
|
set MM_BF=C:\%MM_RN%.bat
|
||||||
|
set MM_RF=C:\%MM_RN%.!!!
|
||||||
|
|
||||||
|
if exist %MM_SF% del %MM_SF%
|
||||||
|
if exist %MM_BF% del %MM_BF%
|
||||||
|
if exist %MM_RF% del %MM_RF%
|
||||||
|
|
||||||
|
if not "%1"=="" echo %1 >> %MM_SF%
|
||||||
|
if not "%2"=="" echo %2 >> %MM_SF%
|
||||||
|
if not "%3"=="" echo %3 >> %MM_SF%
|
||||||
|
if not "%4"=="" echo %4 >> %MM_SF%
|
||||||
|
if not "%5"=="" echo %5 >> %MM_SF%
|
||||||
|
if not "%6"=="" echo %6 >> %MM_SF%
|
||||||
|
if not "%7"=="" echo %7 >> %MM_SF%
|
||||||
|
if not "%8"=="" echo %8 >> %MM_SF%
|
||||||
|
if not "%9"=="" echo %9 >> %MM_SF%
|
||||||
|
|
||||||
|
mm_setup.exe %MM_RN%
|
||||||
|
|
||||||
|
if exist %MM_BF% call %MM_BF%
|
||||||
|
|
||||||
|
if exist %MM_SF% del %MM_SF%
|
||||||
|
if exist %MM_BF% del %MM_BF%
|
||||||
|
if exist %MM_RF% del %MM_RF%
|
||||||
|
|
||||||
|
set MM_SF=
|
||||||
|
set MM_BF=
|
||||||
|
set MM_RN=
|
132
pc/settings/SHARED.BAS
Normal file
132
pc/settings/SHARED.BAS
Normal file
|
@ -0,0 +1,132 @@
|
||||||
|
'$FORM frmMain
|
||||||
|
'$FORM frmDialog
|
||||||
|
|
||||||
|
' $INCLUDE: 'MM_SETUP.BI'
|
||||||
|
|
||||||
|
SUB centerForm (who AS FORM)
|
||||||
|
|
||||||
|
' Center us on the screen.
|
||||||
|
who.Left = ((SCREEN.Width - who.Width) / 2)
|
||||||
|
who.Top = ((SCREEN.Height - who.Height) / 2)
|
||||||
|
|
||||||
|
END SUB
|
||||||
|
|
||||||
|
SUB dialogClose ()
|
||||||
|
|
||||||
|
frmDialog.HIDE
|
||||||
|
UNLOAD frmDialog
|
||||||
|
|
||||||
|
END SUB
|
||||||
|
|
||||||
|
SUB dialogOpen (titleBar AS STRING, message AS STRING)
|
||||||
|
|
||||||
|
frmDialog.Caption = titleBar
|
||||||
|
frmDialog.lblMessage.Caption = message
|
||||||
|
frmDialog.SHOW
|
||||||
|
|
||||||
|
END SUB
|
||||||
|
|
||||||
|
SUB getList (f AS INTEGER, who AS CONTROL)
|
||||||
|
|
||||||
|
DIM line$
|
||||||
|
|
||||||
|
WHILE who.ListCount
|
||||||
|
who.REMOVEITEM 0
|
||||||
|
WEND
|
||||||
|
|
||||||
|
DO
|
||||||
|
LINE INPUT #f, line$
|
||||||
|
IF (line$ = "---") THEN EXIT DO
|
||||||
|
who.ADDITEM line$
|
||||||
|
LOOP WHILE TRUE
|
||||||
|
|
||||||
|
IF (who.ListCount > 0) THEN who.ListIndex = 0
|
||||||
|
|
||||||
|
END SUB
|
||||||
|
|
||||||
|
FUNCTION getSetting (f AS INTEGER) AS STRING
|
||||||
|
|
||||||
|
' Load a single line setting from file.
|
||||||
|
' If setting is "---" return nothing.
|
||||||
|
' If setting is not "---", read until we get "---".
|
||||||
|
|
||||||
|
DIM line$
|
||||||
|
|
||||||
|
getSetting = ""
|
||||||
|
|
||||||
|
LINE INPUT #f, line$
|
||||||
|
IF (line$ = "---") THEN EXIT FUNCTION
|
||||||
|
|
||||||
|
getSetting = line$
|
||||||
|
|
||||||
|
DO
|
||||||
|
LINE INPUT #f, line$
|
||||||
|
LOOP UNTIL (line$ = "---")
|
||||||
|
|
||||||
|
END FUNCTION
|
||||||
|
|
||||||
|
SUB loadSettings ()
|
||||||
|
|
||||||
|
DIM f
|
||||||
|
DIM line$
|
||||||
|
|
||||||
|
' We load all the settings into frmMain,
|
||||||
|
' even if it's not going to be displayed.
|
||||||
|
|
||||||
|
frmMain.HIDE
|
||||||
|
|
||||||
|
ON LOCAL ERROR RESUME NEXT
|
||||||
|
f = FREEFILE
|
||||||
|
OPEN "GETINFO.OUT" FOR INPUT AS f
|
||||||
|
IF ERR = 0 THEN
|
||||||
|
|
||||||
|
ON LOCAL ERROR GOTO 0
|
||||||
|
|
||||||
|
' Hostname
|
||||||
|
frmMain.txtHostname.Text = getSetting(f)
|
||||||
|
|
||||||
|
' IPs
|
||||||
|
getList f, frmMain.cmbCurrentIPs
|
||||||
|
|
||||||
|
' Timezone
|
||||||
|
getList f, frmMain.cmbTimezone
|
||||||
|
setList frmMain.cmbTimezone, getSetting(f)
|
||||||
|
|
||||||
|
' WiFi Country
|
||||||
|
getList f, frmMain.cmbWiFiCountry
|
||||||
|
setList frmMain.cmbWiFiCountry, getSetting(f)
|
||||||
|
|
||||||
|
' WiFi Network
|
||||||
|
getList f, frmMain.cmbWiFiNetwork
|
||||||
|
setList frmMain.cmbWiFiNetwork, getSetting(f)
|
||||||
|
|
||||||
|
' Bluetooth
|
||||||
|
line$ = getSetting(f)
|
||||||
|
|
||||||
|
' Volume
|
||||||
|
frmMain.hsbVolume.Value = VAL(getSetting(f))
|
||||||
|
|
||||||
|
' Audio Device
|
||||||
|
getList f, frmMain.cmbAudioDevice
|
||||||
|
setList frmMain.cmbAudioDevice, getSetting(f)
|
||||||
|
|
||||||
|
CLOSE f
|
||||||
|
END IF
|
||||||
|
ERR = 0
|
||||||
|
ON LOCAL ERROR GOTO 0
|
||||||
|
|
||||||
|
END SUB
|
||||||
|
|
||||||
|
SUB setList (who AS CONTROL, what AS STRING)
|
||||||
|
|
||||||
|
DIM x
|
||||||
|
|
||||||
|
FOR x = 0 TO who.ListCount - 1
|
||||||
|
IF (LEFT$(who.List(x), LEN(what)) = what) THEN
|
||||||
|
who.ListIndex = x
|
||||||
|
EXIT FOR
|
||||||
|
END IF
|
||||||
|
NEXT x
|
||||||
|
|
||||||
|
END SUB
|
||||||
|
|
53
pc/settings/getInfo.sh
Executable file
53
pc/settings/getInfo.sh
Executable file
|
@ -0,0 +1,53 @@
|
||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
# Fetch all info needed for UI.
|
||||||
|
|
||||||
|
LINE="---"
|
||||||
|
|
||||||
|
# Hostname - txtHostname
|
||||||
|
hostname
|
||||||
|
echo "${LINE}"
|
||||||
|
|
||||||
|
# Assigned IP Addresses - cboCurrentIPs
|
||||||
|
hostname -I | tr " " "\n" | grep -v -e '^[[:space:]]*$'
|
||||||
|
echo "${LINE}"
|
||||||
|
|
||||||
|
# Available Timezones - cmbTimezone
|
||||||
|
timedatectl --no-pager list-timezones
|
||||||
|
echo "${LINE}"
|
||||||
|
|
||||||
|
# Current Timezone
|
||||||
|
timedatectl show | grep Timezone | sed 's/Timezone=//'
|
||||||
|
echo "${LINE}"
|
||||||
|
|
||||||
|
# Available WiFi Countries - cboWiFiCountry
|
||||||
|
grep "^[A-Z][A-Z][[:space:]]" /usr/share/zoneinfo/iso3166.tab | sed 's/\t/ - /'
|
||||||
|
echo "${LINE}"
|
||||||
|
|
||||||
|
# Current WiFi Country
|
||||||
|
iw reg get | sed -n "0,/country/s/^country \(.\+\):.*$/\1/p"
|
||||||
|
echo "${LINE}"
|
||||||
|
|
||||||
|
# Available WiFi Networks - cboWiFiNetwork
|
||||||
|
sudo iw dev wlan0 scan | grep SSID: | sed "s/[[:space:]]SSID: //" | grep -v -e '^[[:space:]]*$' | uniq
|
||||||
|
echo "${LINE}"
|
||||||
|
|
||||||
|
# Current WiFi Network
|
||||||
|
iw wlan0 info | grep ssid | sed "s/[[:space:]]ssid //"
|
||||||
|
echo "${LINE}"
|
||||||
|
|
||||||
|
# Connected Bluetooth devices
|
||||||
|
#https://superuser.com/questions/1500383/bluetoothctl-list-connected-devices
|
||||||
|
#bluetoothctl devices | cut -f2 -d' ' | while read uuid; do bluetoothctl info $uuid; done|grep -e "Device\|Connected\|Name"
|
||||||
|
echo "${LINE}"
|
||||||
|
|
||||||
|
# Volume - hsbVolume, lblVolumeLevel
|
||||||
|
XDG_RUNTIME_DIR=/run/user/$UID amixer sget Master | grep 'Right:' | awk -F'[][]' '{ print $2 }' | sed 's/%//'
|
||||||
|
echo "${LINE}"
|
||||||
|
|
||||||
|
# Get Audio Outputs - cboAudioDevice
|
||||||
|
aplay -l | grep "^card" | awk -F'[][]' '{ print $2 }'
|
||||||
|
echo "${LINE}"
|
||||||
|
|
||||||
|
# Current Audio Output
|
||||||
|
echo "${LINE}"
|
Loading…
Add table
Reference in a new issue