XPL IMPLEMENTATION ON IBM PC

XPL is a programming language developed by W. M. McKeeman et al. in 1967. This language has PL/I-like syntax but its structure is close to the C. XPL is indended mainly for compiler development. So this language was used by its authors to develop XPL System that contains:

XCOM self-compiling XPL compiler written on XPL;
ANALYZER grammar analyzing program written on XPL;
SKELETON protocompiler written on XPL;
XPLSM XPL submonitor written on System/360 assembly language. This is a control program intended to load and execute XPL binary code.

Original XPL System was developed to run on System/360 computers under control of OS/360 operating system.

For details see the book (that contains source code of all XPL System components):
W. M. McKeeman, J. J. Horning, and D. B. Wortman. A Compiler Generator. Prentice-Hall Inc., Englewood Cliffs, N. J.

There is an implementation of XPL System on IBM PC to run under control of MS-DOS operating system.

This package is free software and distributed "as is" in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

xcom.xpl (138K) original source code of XCOM;
analyzer.xpl (53K) original source code of ANALYZER;
skeleton.xpl (23K) original source code of SKELETON;
program.xpl (1K) original source code of XPL sample program;
xcom.lib (3K) original source code of the procedure compactify; this file is used by XCOM;
program.lst (12K) sample program compilation listing produced by XCOM;
program.out (11K) output produced by sample program;
sample.bnf (1K) original sample grammar description used in SKELETON;
sample.lst (32K) sample grammar analysis produced by ANALYZER;
xpl.bnf (3K) original XPL grammar description used in XCOM;
xplsm.exe (44K) XPL submonitor to run on IBM PC XT under MS-DOS (for details see below);
xplsm.trc (7K) original OS/360 object module of XPL tracing program; this file is used by XPLSM;
xcom.xpx (89K) original binary code of XCOM;
analyzer.xpx (93K) original binary code of ANALYZER;
skeleton.xpx (16K) original binary code of SKELETON;
program.xpx (4K) original binary code of XPL sample program;
sample.dat (2K) sample data file for SKELETON;
xcom.bat (1K) batch job to run XCOM under MS-DOS;
analyzer.bat (1K) batch job to run ANALYZER under MS-DOS.

Of course, you can grab entire XPL System xpl.zip (128K).

As it is seen there is only one difference between original XPL System and its implementation on IBM PC, namely, the submonitor XPLSM.

PC version of XPLSM simulates System/360 instruction set and works EXACTLY as original XPLSM. Thus you can use PC implementation of XPL System as if you would deal with the original one.

To run original XPLSM you would have to use something like the following (I hope that you know OS/360 Job Control Language):

//MYJOB    JOB  MSGLEVEL=(1,1)
//         EXEC PGM=XPLSM,PARM='optional run-time parameters'
//PROGRAM  DD   <binary code of XPL program to run>
//SYSIN    DD   <data set for input, inout(0), or input(1)>
//INPUT2   DD   <optional data set for input(2)>
//INPUT3   DD   <optional data set for input(3)>
//SYSPRINT DD   <data set for output, output(0), or output(1)>
//SYSPUNCH DD   <optional data set for output(2)>
//OUTPUT3  DD   <optional data set for output(3)>
//FILE1    DD   <optional direct access data set for file(1,i)>
//FILE2    DD   <optional direct access data set for file(2,i)>
//FILE3    DD   <optional direct access data set for file(3,i)>
//SYSUDUMP DD   <optional data set for abend core dump>
// 

To simulate this job under MS-DOS you should use the following command line syntax:

xplsm.exe pgm=filename      simulates //PROGRAM DD
          in=filename       simulates //SYSIN DD
          in1=filename      the same as in=
          in2=filename      simulates //INPUT2 DD
          in3=filename      simulates //INPUT3 DD
          out=filename      simulates //SYSPRINT DD
          out1=filename     the same as out=
          out2=filename     simulates //SYSPUNCH DD
          out3=filename     simulates //OUTPUT3 DD
          da1=filename      simulates //FILE1 DD
          da2=filename      simulates //FILE2 DD
          da3=filename      simulates //FILE3 DD
          ab=filename       simulates //SYSABEND DD
          min=mmmm          set minimal core size allocated by XPLSM to
                            mmmm bytes (optional)
          max=mmmm          set maximal core size allocated by XPLSM to
                            mmmm bytes (optional)
          free=mmmm         set core size returned to MS-DOS after
                            allocating to mmmm bytes (optional)
          noclr             do not clear allocated memory
          trace             run XPLSM in trace mode using XPL tracing
                            program
          q=mmmm            set time quantum to mmmm instructions (used
                            to detect external interrupts)
          dump              dump core if abend occured 

(See also batch jobs xcom.bat and analyzer.bat.)

N.B. The file xplsm.trc should be placed in the same directory as xplsm.exe.

If you suddenly decided to try XPL System on IBM PC under MS-DOS and have downloaded something from this page, please, report to mao@mai2.rcnet.ru brief information about you and about what you got.

The version of XPLSM for IBM PC was programmed by Andrew O. Makhorin,
Department for Applied Informatics, Moscow Aviation Institute, Moscow, Russia.