Skip to content

Primarily a UBEE512 launcher. Uses CPMTOOLS to work with DSK files, and runs checks over the settings and selected options. Will one day understand the RunCPM folder layout.

License

Notifications You must be signed in to change notification settings

mikecornflake/uBee512Launcher

Repository files navigation

UBEE512 Launcher

Why?

  • ubee512 is an excellent Microbee emulator, covering all models and a wide range of peripherals
    • It has a myriad of options available through the settings files and command line parameters (described in its readme)
    • Due to copyright issues, it doesn't ship with all the required files (ROMS/disks - covered in its readme)
  • ubee512launcher checks the files in the uBee512 installation against the selected options in ubee512launcher, and highlights missing files (required files raised as error, optional as warning)
  • ubee512Launcher allows inexperienced users (me) to easily view, configure and select the available emulated systems
  • And yes, it's also for users (again, me) who are more comfortable with UI than command line

Release v0.5beta

  • Big release:
    • Added GPL licenses to uBee512Launcher, LGPL to IM_units.lpk
    • Framework for core functionality now in, and checks/options for Disk based models mostly complete
    • Virtually nothing for ROM based models implemented (and won't until 0.6beta release)
      • Framework shouldn't need much tweaking to accomodate (famous last words)
    • Sigh, actual functionality implies bugs. Keep your eyes open, and please report...
  • Framework for Validators added (See section on Validation Rules below)
    • Disk Alias Validator added (finished)
    • Installation Validator added (charrom.bin/rom1.bin checks. Settings & Alias file checks. Not sure what else to check, but this got me thinking about adding Installation Aids)
    • Definition Validator refined (Decent checks on SRAM, Disks, Tapes. NOTHING on ROMs, PAKs, HDDs or IDEs)
    • Microbee Model Validator added (Only checks default boot disks for Disk Models. No checks for boot ROMs for IC models)
    • Settings Validator checks the values currently selected in the UI and the default values from Definitions/Models, and makes sure we'll get a valid result
  • Added "Disk Alias" dialog (Add/Delete Alias, Edit Alias name. Assign disk/clear assignment for Alias. Display validator checks)
  • Integrate "disks.alias" updates into Disk Explorer (Assign disk to existing Alias, Clear existing Alias)
  • Add Display options (monitor, opengl/sdl)
  • UI has again been reworked several times.
    • Changed Disk A/B/C selection in main form:
      • Can use dialog to select a file/folder from the filesystem
      • or choose a valid disk alias from the dropdown
    • Issues found by Validators now being displayed in assorted locations across UI
    • Now displaying Issues using HTML

Whats new (Trunk)

Known Issues

  • uBee512Launcher Validator gets confused if UI has Disk A populated AND selected definition also has Disk A defined through -a
    • (reproducable with [ciab] definition)
    • [ciab] has a -a disk set (ciab.ss80). This is best resolved with disks.alias.

Notes on implementation

  • Only allows bootable DSKs to be loaded in A: (only checks DSKs for bootability)
  • Has a "File Preview": for now, either shows contents of text files, or files inside a DSK (you need to load the patched CPMTools using "File" - "Settings" for the DSK listing to work)
  • Contents of DSK listed using either original CPMtools or patched CPMTools (allows for Microbee specific formats)
  • Parses ubee512rc to build up System Definitions, uses these in Main Form & Definitions Explorer
  • I know there looks like a lot of Definitions in ubee512rc sample. Err, I'm currently filtering out about half - the ones I haven't researched
  • Signficant testing under macOS/Cocoa. Bugger - Cocoa framework not fully implemented in LCL, so some workarounds for known issues with TComboBox and TListView
  • Minor testing under Ubuntu/GTK2. Same lack of full feature for TListView as Cocoa, so workaround there also worked here
  • Most dev work & testing done on Windows 11

Implemented Validation Rules

  • Results of Validation checks visible several locations around the UI (still to add "Issues" dialog)
  • ubee512 Installation checks
    • Does charrom.bin & rom1.bin exist? (Error flag if not)
    • Does "ubee512rc" exist? (Error flag if not)
    • Does "disks.alias" and "roms.alias" exist? (Warning flag if not)
  • Settings checks
    • Is a valid microbee Model selected? (Error flag if not)
    • For Disk Models:
      • Following disk checks are done in the following order:
        • Disk defined in Definition?
        • Disk defined in UI?
        • Default boot disk for Microbee Model (ie p64.dsk)?
        • Default boot disk (boot.dsk)?
      • Is there a valid Disk A? (Error flag if not, Info flag if there is)
        • Can we deduce format for disk A? (Warning flag if not)
      • Is there a valid Disk B? (Info flag if so, nothing if there isn't)
        • Can we deduce format for disk B? (Warning flag if not)
        • Does Format A match Format B (Warning flag if not)
      • Is there a valid Disk C? (Info flag if so)
        • Can we deduce format for disk C? (Warning flag if not)
        • Does Format A match Format C (Warning flag if not)
      • Raise an addition error if no disks selected at all...
  • Microbee Model checks
    • For each Disk Model:
      • Does a boot disk exist? (model.dsk, or boot.dsk) (Warning flag if not)
      • Does a boot disk alias exist? (Warning flag if alias exists, but not defined)
      • Is Boot Disk readonly? (Error flag is so)
  • "disk.alias" checks:
    • Does the alias have a lookup filename? (warning flag if not)
    • Does the lookup filename exist? (error flag if not)
  • uBee512rc Definition checks:
    • For disks assigned to A, B or C:
      • If absolute filename, does disk exist? (Error flag if not)
      • If relative filename:
        • does disk exist in ubee512 working directory "disks" subfolder? (no flag if it does)
        • If not: Does entry exist in "disks.alias"? (info flag if it does)
          • Is "disks.alias" entry valid? (checks both absolute and relative file paths). (Flag escalated to Error if not)
    • For --sram-file, --ide-a0, --tapei, --tapeo entries: Does file exist? (checks absolute filenames or looks in correct subfolder if relative) (Error Flag if not)
  • You may notice from the above that some checks are duplicated:
    • This is by design to assist end user diagnosis
    • Sigh. Likely to be the most common source of bugs as a consequence

TODO

Medium term (not until 0.6beta or higher)

  • Implement --account (if rc file not in expected location)
  • Add Installation Aids (copy *.sample files to appropriate locations. HTML summary of Repository Locations/ettiquette. Display Validator results)
  • Add "Issues" pane to summarise ALL issues
  • Add awareness of RunCPM folder structure
  • Add awareness of roms.alias + native md5 (before doing the below)
  • Add boot ROM checks to TModelValidator
  • Add support for PAKx (inc Validator)
  • Add support for HDDx (inc Validator)
  • Add support for IDEx (inc Validator)
  • Add support for non libdsk file formats (this might not be a goal anymore - I hadn't realised ubee512 was so good at detecting disk format)
  • Continue to add support for working with DSK files prior to running in a CP/M system
    • Create blank DSK
    • DSK To/From folder (inc To/From RunCPM folder)
  • Add direct support for the zip file structure pioneered by @ChickenMan for both MSPP repository and Microbee Technology repository
    • Display embedded ReadMe in the Preview Pane
    • Implement a "Mount ZIP" that extracts the DSK, then actually mounts that DSK in the CP/M system
  • Add support for Microbee Peripherals (Beetalker etc)
  • Add support for UBEEDISK tools (to be honest, this means learning them first)
  • I keep thinking about adding ability for users to define their own System Definitions (by first copying an existing).
  • (Library): Write a CommandLine+Params_As_String to CommandLine+Array_of_Param
  • Expand roms.alias to a full UI - offering ability to QC/add/edit/delete entries

Long Term

(dreamer! you're nothing but a dreamer)

  • Investigate automating a running instance of UBEE512 (allow dynamic changing of disks)

Development Notes

  • Developed under Windows 11, Ubuntu & macOS using Lazarus Trunk (3.99) / fpc 3.2.2 / 64bit
  • Due to changes in TurboPowerHTML rendering only use Lazarus Trunk for compiling releases
  • Uses a OO framework I developed while freelancing as "Inspector Mike"
    • There's some code tidy-up pending, this framework was developed during Lazarus & fpc early days (2009 to 2014)
    • Both projects have since moved on, leaving me with some now redundant routines

Distribution

  • UBEE512, UBEEDISK, patched CPMTools, original CPMTools & RunCPM are NOT distributed with this application. You'll have to download these separetely (see Acknowledgements)
  • The app will look for these on your environment path. If they're not on the path, you'll need to open "File" - "Settings" and set the appropriate paths manually

Screenshots

Image: Main UI Image: Definition Explorer Image: Disk Explorer

Build Notes

  • This project requires the IM_units.lpk (Lazarus Package) from https://github.com/mikecornflake/InspectorMike-common
    • Clone InspectorMike-common
    • Install LazSerial (either use Lazarus Online Package Manager, or clone https://github.com/JurassicPork/TLazSerial)
      • not needed for uBee512Launcher, but is needed for IM_units.lpk)
    • In Lazarus: "Project" "Open"
      • Select "uBee512Launcher.lpr"
    • Then "Package" "Open Package File (.lpk)"
      • Select "InspectorMike-common\Packages\IM_units.lpk"
      • click on "Compile",
      • Then "Use" - "Add to Project" (or "Use" - "Install")
    • You should now be able to compile "uBeeLauncher.lpr"

Acknowledgements

Licenses

  • ubee512launcher binaries and source code are released under GPL 3.0
  • ubee512launcher uses:
    • Libraries and code supplied by the freepascal project (FCL, RTL) & the Lazarus project (LCL) under a modified Library GPL with linking exceptions
    • IM_units package which is released under GPL 3.0
    • IM_units package contains third party packages released under seperate licenses. Most third party packages are not used by ubee512launcher, the exception is:

Mike Thompson mike.cornflake@gmail.com

  • Project start 2 Jan 2024
  • Updated 10 Feb 2024

About

Primarily a UBEE512 launcher. Uses CPMTOOLS to work with DSK files, and runs checks over the settings and selected options. Will one day understand the RunCPM folder layout.

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages