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.