AminetAminet
Search:
85022 packages online
About
Recent
Browse
Search
Upload
Setup
Services

util/boot/sysvars.lha

Mirror:Random
Showing: m68k-amigaos iconppc-amigaos iconppc-morphos iconi386-aros iconi386-amithlon iconppc-warpup iconppc-powerup icongeneric iconother icon
No screenshot available
Short:Put system information in env. variables
Author: larsonmars at email.de
Uploader:Alexander Gent (aagent298 gmail com)
Type:util/boot
Version:0.16
Architecture:m68k-amigaos
Date:2025-10-31
Distribution:Aminet
Download:util/boot/sysvars.lha - View contents
Readme:util/boot/sysvars.readme
Downloads:2863

                      ___ _    __ _    _     ____  ____ 
                     / __| |  / _| |  | |/\ |  _ \/ ___)
                    | (__| | | (_| |  | /  \| | \| (__ 
                     \__  \ \/\__| |  |/ /\ | |_/ \__ \
                        ) )\ /   )\ \// ____|  _ (   ) )
                     __/ // / __/ /\ / /    | | \ \_/ /
                    (___//_/ |___/  V_/     |_|  (___/ 

                    https://github.com/larsonmars/sysvars                    

sysvars is a small CLI tool for the Amiga that creates several environment
variables holding valuable system information. These variables can be used,
for example, in the startup-sequence to enable/disable certain patches,
assigns, and so on.

To install it, copy sysvars into your c directory and add it to your
startup-sequence or User-Startup, depending on how early you need the
variables.

You can extract the content of the sysvars directory inside this archive to a
bootable floppy disk or use the CreateTestDisk script, which formats a disk,
installs a bootblock and copies the files.

Currently, the following variables are set...

always:
- $CPU:          Installed CPU, for example 68030 (68080 is supported)
- $Chipset:      Installed graphics chipset, one of OCS, ECS, AGA, SAGA
- $VFreq:        The vertical frequency of the native display, can be either
                 50 (PAL 50Hz) or 60 (NTSC 60Hz)
- $TotalChipRam: Total amount of Chip RAM installed in KB
- $TotalFastRam: Total amount of real Fast RAM installed in KB
- $TotalRam:     Total amount RAM installed in KB
- $KickVer:      Kickstart version
- $KickRev:      Kickstart revision (See OS 1.2 LIMITATIONS)

if CPU is at least 68020:
- $FPU: Installed FPU, on of 68881, 68882, internal, or empty for LC/EC 040
        and 060 CPUs, where no FPU is available (see LIMITATIONS)

if Slow RAM (a.k.a Ranger Memory, Trapdoor RAM) is detected
- $TotalSlowRam: Total amount of Slow RAM installed in KB

If Slow RAM is the first to be allocated as non-Chip RAM
- $SlowRamFirst (set to "1")

if bsdsocket.library is available
- $BSDSockLib:    bsdsocket.library ID string
- $BSDSockLibVer: bsdsocket.library version
- $BSDSockLibRev: bsdsocket.library revision

if UAE is detected (see NOTES and LIMMITATIONS):
- $UAEMajor: UAE major version
- $UAEMinor: UAE minor version
- $UAERev:   UAE revision

if CPU is 68080:
- $VampireType:      The type of vampire installed, for example "V2_600", or
                     "V4_Standalone"
- $VampireCoreRev:   The core revision of the currently flashed firmware .jic
                     file; "N/A", if not available (e.g., some beta cores)
- $VampireClockMult: The vampire clock multiplier

_____________________________________________________________________________

REQUIREMENTS

- The tool works best with Amiga OS 2.0 or later. Here, it calls SetVar,
  which allows for local scope variables. Local scope is no limitiation,
  because the workbench is also loaded in the scope of the startup-sequence.
  Another advantage is that it does not require ENV:. This means it can run
  very early, even before SetPatch.
- For the purists, sysvars runs happily also on OS 1.3 and even down to
  OS 1.2. However, there are some limitations to consider (see below).

_____________________________________________________________________________

LIMITATIONS/DISCLAIMER

As sysvars is optimized for speed, being compact and system friendly, it is
not an elaborate H/W detection tool, such as WhichAmiga. This means that
there might be system combinations, where sysvars gets it wrong. Some known
limititaions are listed below. Anyway, you can always file a bug report, if
you think that sysvars can be optimized.

Kickstart 1.3 and below:
- Sysvars currently detects CPUs above 68020 as 68020 and any FPUs as 68881
- Environment variables can only have global scope (ENV: must be mounted)
- Environment variables can only be used with the IF command (things like
  'ECHO $CPU' do not work. You must use 'IF $CPU GE 68010').

Kickstart 1.2:
- The native IF command does not support environment variables, but you can
  use the IF command from Workbench 1.3
- Even with the Workbench 1.3 IF command, only EQ seems to work
- $KickRev is set, but to an empty value

Slow RAM detection:
  RAM speed is not actually measured. Instead, it is assumed that any non-
  Chip RAM residing at $C0xxxx is actually Slow RAM. This is common for the
  Amiga 500s with a trapdoor expansion. Thus, if you have an expansion that
  actually maps real Fast RAM into the $C0 region, sysvars still consideres
  it to be Slow RAM.

UAE detection:
  UAE is detected via the uae.resource, which is only there if
  - a virtual hard drive or another UAE expansion is enabled
  - Kickstart is at least version 34 (OS 1.3)
  Thus, detection will fail on any floppy-only-unexpanded Amiga configura-
  tions and on anything with a ROM older than 1.3

_____________________________________________________________________________

WHY SUCH A TOOL?

As many Amiga users, I have multiple Amigas, booting from flash memory.
However, I do not want to maintain multiple operating system configurations.
In the past, I have used several tools to branch during startup, which
yielded a complex startup-sequence/user-startup and an extended boot time.

I wanted a small fast utility that gives me neat environment variables, so I
can write something like this in the startup-sequence:

IF $CPU GE 68020
  MCP
ENDIF

or

IF $FPU EQ internal
  FastIEEE
ENDIF

Also, I always wanted to learn M68k assembler. After 30 years using an Amiga
this was about time!

_____________________________________________________________________________

THE OTHER UTILITIES

The following utilities are mainly intended to test sysvars, but could also
be useful in other contexts.

ksge36

  Quickly check if Kick ROM is at least version 36, that is OS 2.0 or
  greater. If it detects a version below 36, it returns WARN (error code 5).
  It can be used (like it is in the sysvar test) to write startup-sequences
  that work for both OS 1.3 and OS2.0+, branching where needed.

probevar (New in 0.14)

  A tool for all Amiga operating systems to quickly check for the existence
  of a local (OS 2.0 and up) or global (OS 1.3 and below) environment
  variable. It is similar to the Get command of OS 2.0 in that it returns
  SUCCESS (error code 0) if a variable is available and WARN (error code 5)
  if not. The difference is that
  1. probevar does not write out the actual value, so you do not have to do a
     >NIL: to suppress it
  2. probevar can be used in OS 1.3 and below (only there it queries global
     variables)

  Why is this tool needed now?

  In the past, sysvars would set environment variables, such as $UAEMajor to
  an empty string if it did not detect UAE. So one could always use
  'IF "$UAEMajor" EQ ""'. However, with the growing number of supported use
  cases and variables, the variable space became increasingly polluted.
  Therefore, I decided to only ever set variables, when the environment
  warrants for it (see the "Availability" column table at the top). Thus, if
  UAE is not detected, $UAEMajor will now not be available at all. So, the
  line IF '"$UAEMajor" EQ ""' would bring up an unwanted requester asking for
  ENV:, because the OS tries to search for a global variable.

_____________________________________________________________________________

FUTURE PLANS

The tool is already quite useable, but there are still some things missing,
which I want to fix in future versions (no particular order):

- Add $RTG variable to enable/disable stuff like FBlit or swap screen mode
  configurations
- For Os 1.3: add detection for CPUs > 68020 and at least the 68882
- Make use of boards.library and identify.library if available for even more
  expansions.
- Make a WinUAE/FS-UAE-based test suite for automated tests (CI/CD-like)

_____________________________________________________________________________

LICENSE

The code is licensed under the MIT License

_____________________________________________________________________________

RELEASE HISTORY

Version 0.16
- Added SAGA (Vampire) support for A6000 (Unicorn).

Version 0.15.1
- Fixed Vampire V2 detection (removing SAGA as precodition)
- Small code improvents

Version 0.15
- Added $TotalRam variable as a convenience
- Fixed Vampire detection
- Fixed FastMemFirst integration in test
- Code Cleanup

Version 0.14
- Added memory-related variables that allow to distinguish Slow Ram from real
  Fast Ram
- Changed some variables to now being not set at all, instead of setting them
  to an empty value, in order to not unnecessarily pollute environment
  variable space
- Fixed critical bug for Kickstart 1.3 and 1.2
- added probevar utility to test for the existance of environment variables
- Added compile support for PhxAsm and asmotor

Version 0.13
- Added Vampire infos $VampireType, $VampireCoreRev and VampireClockMult
- Minor code cleanup

Version 0.12
- Added 68080 and SAGA (Vampire) support following
  http://adevnoo.wikidot.com/detect-080-code
- minor code cleanup

Version 0.11
- Added the tiny tool KSGE36 to the distribution
  - Stands for KickStart greater or equal 36
  - Tests if the current OS is at least version 36 (i.e., OS 2.0)
  - Used in the test script to decide if an ENV: assign is necessary (which
    is for OS below 2.0) and commands have to be made resident (see below)
  - It is more or less equivalent to calling Version 36 from Workbench, with
    the difference that it can be freely distributed (unlike the Version
    command) and also works below OS 1.3
- Improved the speed of the test script in OS1.2 and OS1.3 by putting the
  ECHO, IF, ELSE, and ENDIF commands into RAM (via resident if in shell)
- The test (in test/sysvars-test) can be run from workbench or deployed on a
  bootable floppy for real Amigas. The script CreateTestDisk can be called
  with a device name (e.g., df1:) to create such a disk
- Fix for AROS (here, SetVar cannot access the bsdsocket.library id string)
- Code builds with most ASM-One flavors again.
- Added version information so you can call Version sysvars[6]
- Code/comment cleanup

Version 0.10
- Added $KickVer and $KickEnv that provide kickstart version and revision
- $UAE is now split in $UAEMajor, $UAEMinor and $UAERev for more convenient
  scripting
- Added detection of bsdsocket.library ($BSDSockLib contains the id string,
  $BSDSockLibVer the version, and $BSDSockRev the revision)
- Refactoring and code improvements (still learning though)
  - Easy way to disable certain variables/features at the beginning of the
    file using constants (Adapt to your need and make the tool as tiny as
    possible)
  - Unified SetVar approach using macros
  - Easier integration of new features via consistent scheme
  - Better comments
- added test script for startup-sequence

Version 0.9:
- Added limited OS 1.3 Support (CPU/FPU detection up to 68020/68881) via a
  custom SetVar implementation (setenv-like functionality)
- small code improvements

Version 0.8:
- Initial Release on GitHub and Aminet


Contents of util/boot/sysvars.lha
 PERMSSN    UID  GID    PACKED    SIZE  RATIO METHOD CRC     STAMP          NAME
---------- ----------- ------- ------- ------ ---------- ------------ -------------
[Amiga]                    273     628  43.5% -lh6- 0a72 Nov  1 00:32 sysvars.info
[Amiga]                     40      40 100.0% -lh0- eabd Nov  1 00:32 sysvars/.info
[Amiga]                     26      26 100.0% -lh0- df1b Nov  1 00:32 sysvars/Add OS 1.3 Support
[Amiga]                    309     870  35.5% -lh6- 6e30 Nov  1 00:32 sysvars/Add OS 1.3 Support.info
[Amiga]                    485    1724  28.1% -lh6- d791 Nov  1 00:32 sysvars/add-os1.3-support
[Amiga]                     90      92  97.8% -lh6- 3948 Nov  1 00:32 sysvars/c/ksge36
[Amiga]                    195     200  97.5% -lh6- 8577 Nov  1 00:32 sysvars/c/probevar
[Amiga]                    174     313  55.6% -lh6- e7b7 Nov  1 00:32 sysvars/CreateTestDisk
[Amiga]                    144     430  33.5% -lh6- 1366 Nov  1 00:32 sysvars/Disk.info
[Amiga]                   2348   10663  22.0% -lh6- cf1f Nov  1 00:32 sysvars/s/startup-sequence
[Amiga]                    394    1231  32.0% -lh6- 7d94 Nov  1 00:32 sysvars/source/ksge36.S
[Amiga]                   1050    3011  34.9% -lh6- 3798 Nov  1 00:32 sysvars/source/probevar.S
[Amiga]                   9880   41088  24.0% -lh6- 6403 Nov  1 00:32 sysvars/source/sysvars.S
[Amiga]                   1734    2672  64.9% -lh6- 332c Nov  1 00:32 sysvars/sysvars
[Amiga]                   4808   11701  41.1% -lh6- 66cb Nov  1 00:32 sysvars/sysvars.readme
[Amiga]                     35      35 100.0% -lh0- e805 Nov  1 00:32 sysvars/TEST
[Amiga]                    920    3536  26.0% -lh6- 30ce Nov  1 00:32 sysvars/TEST.info
---------- ----------- ------- ------- ------ ---------- ------------ -------------
 Total        17 files   22905   78260  29.3%            Oct 31 22:06
Page generated in 0.02 seconds
Aminet © 1992-2024 Urban Müller and the Aminet team. Aminet contact address: <aminetaminet net>