Skip to content

Packaging of the compilers as zip files? #4

@HarryR

Description

@HarryR

I was working on a browser-based CP/M Z80 system, and came across your compiler collection after getting turbo pascal and some others working.

my project is at: https://github.com/lockboot/desktop/tree/main/win95-sim

one feature I like is I can add read-only 'overlays' to a drive, so my A: drive I may load cpm22 and bds-c and whatever else, and they're available to use without unzipping the package .zip

I was going to build some packages using your compiler collection, but would you be open to a pull request that adds metadata files and a tool to create & validate package .zip files?


Currently the package spec looks like:

packages/
  my-package/
    manifest.mf          # Package definition (JSON)
    TOOL.COM             # CP/M binaries
    TOOL.DOC             # Documentation (optional)
    my-package.test.ts   # Tests (optional)

You can even associate 'actions' with file patterns, to run templated SUBMIT batch commands, or expect style scripts as I did with turbo-pascal below, this means when I drag the turbo pascal 3 zip onto the emulator it becomes available, and if I open a .PAS file in the IDE it shows 'Turbo Pascal 3' in the dropdown next to the 'build & run' button, and the package becomes available under the 'compiler' section of the programs menu, for example:

{
  "id": "turbo-pascal-3",
  "name": "Turbo Pascal",
  "version": "3.0",
  "description": "Borland Turbo Pascal 3.0 compiler for CP/M",
  "files": [
    { "src": "TURBO.COM" },
    { "src": "TURBO.MSG" },
    { "src": "TURBO.OVR" },
    { "src": "TINST.COM" },
    { "src": "TINST.DTA" },
    { "src": "TINST.MSG" }
  ],
  "meta": {
    "type": "compiler"
  },
  "actions": [
    {
      "id": "turbop3",
      "name": "Turbo Pascal 3",
      "command": "TURBO",
      "patterns": ["*.PAS"],
      "outputExts": ["COM"],
      "interactiveScript": [
        { "wait": "(Y/N)?", "send": "Y" },
        { "wait": "E)dit", "send": "W" },
        { "wait": "Work file name:", "send": "{drive}:{name}.PAS\r" },
        { "wait": "Loading", "send": "O" },
        { "wait": "(Q)uit", "send": "C" },
        { "wait": ")om-file", "send": "Q" },
        { "wait": ">", "send": "C" },
        { "wait": "Compiling", "send": "Q" }
      ]
    }
  ]
}

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions