VM370 - adesutherland/CREXX GitHub Wiki

VM/370 Notes

Currently the last working version is i0226 which has been snapshotted into its own readonly branch. Work will bring the VM/370 builds up to date, this is just noting where we are now!

The VM/370 specific files are in folder S370

  • cms.h configures the build parameters
  • cmsutil.c is where CMS specific versions of platform utility functions are placed
  • cmsmake.exec is the CMS EXEC script to build the solution
  • encoding.re is the EBCDIC snipit for the re2c lexer generator
  • The *.sh file are shell scripts that are used in the github actions. These depend on HercControl (Tool to allow Batch Control of the Hercules mainframe emulator) and YATA (Lightweight tool to archive text files). These are in my github repositories and are just my own homebrew approach, however the build logic is all in CMSMAKE EXEC which can be used manually and obviosley other tools might be more convenient, e.g. VMARC, and for later versions of VM. The *.sh files are quite readable and it is straightforward to understand the overall gibhub build/action pipe, see also .github/workflows/build.yml (look at the build-cms section).
  • Other files are just fixes/hacks needed to make the GCCCMS environment work

Other Notes

  • The re2c and lemon generators are run on Unix and the generated files are sent to CMS. This avoids porting re2c and lemon to CMS.
  • Computed GOTOs did not work for the large "switch" logic in the CREXX VM so we added a build mode to make a classic VM actually using a switch/case statements. Small computed GOTOs work, so my hypothesis that the compiler generated assembler uses a jump with a base and offset and the offset is overflowing.
  • Later builds started to fail because the compiler ran out of Storage/RAM. The solution to this will be to cross compile on Linux and send the ASSEMBLE files to CMS.

VM/ESA, IBM Compiler:

  • I put source on B and plan to have output on C, D is readonly on my system
  • the parms 'rexxd' are not understood, I left them out
  • command line is CC PLATFORM H B
  • for platform.h
  • empty line starting the file is not OK = // C++ style comments not grokked
  • seems preprocessor directives not well understood (needed to remove long long but should not have reached)
  • warning after a hashmark is a line it does not grok
  • with platform.h fixed, I have TEXT files for CMSUTIL and PLATFORM
  • no direct option for generation of assembly, with (LIST you get a listing which can probably changed into a proper assembler file