JCC Systemr Programs.

The JCC command line parameter -systemr enables the generation of recursive-enabled functions which have self-contained (and reentrant) local storage allocation to enable direct linkage into assembler programs without the C-Run-Time library. The object produced can also be used as a stand-alone program, without host assembler code. There are many restrictions for programs built this way, the most obvious being the lack of IO support from the library. To be truely reentrant, no global variables should be modified by the C function souce code, constant globals are allowed however.

The following list describes the functions which are available in this mode, note that the use of prelink is not allowed to resolve library objects automatically. The nolib option can be used to build user specified objects into a single E/XSD object.

!WARNING! @@DIVI64 and @@DIVU64 cannot be used in systemr programs. These are automatically generated when long long variables are divided in user-code.

* means "__libc_arch" must be defined as int, 0=s370 or 1=s390
  abs
  bzero   *
  bcopy   (in memmove.obj)
  div
  isupper \__ in ctype.obj
  islower
  isalpha
  isdigit
  isxdigit
  isspace
  isprint
  isgraph
  isblank
  iscntrl
  ispunct  __ end ctype.obj
  isalnum /
  ldiv    (in div.obj)
  llabs   (in abs.obj)
  lrotl   (in rot.obj)
  lrotr   (in rot.obj)
  memccpy
  memchr  *
  memcmp  *
  memcpy  *
  memicmp (requires toupper.obj)
  memmove
  memrchr (in strrchr.obj)
  memset  *
  rotl    (in rot.obj)
  rotr    (in rot.obj)
  strcat  *
  strchr  *
  strcmp  *
  strcpy  *
  strlen  *
  strncat *
  strncpy
  strrchr
  swab
  tolower
  toupper
  udiv    (in div.obj)
Unlike systems mode, setjmp and longjmp are not properly supported by systemr since the local memory allocated will not be deallocated at the end of the function.

socket.c may be recompiled and used with EZASOKET in systemr mode. errno and the errno.h header file must be replaced with a non-thread aware version, and the inet_addr and inet_aton functions must be removed to prevent the use of strstr and atol which aren't supported in systemr mode.

The full-screen terminal functions may also be used - these include memory allocation routines for 24 bit addressable memory.