Thank you for these disk images!
Monsieur Roche was a well-known CP/M expert and sometimes a hard opponent in discussions.
Some years ago, when I was playing with the GXS system, I was very interested in the GSS-Plot and GSS-Kernel disks, but he could not make a disk image.
Now, with your images, I enthusiastically started with the first dump of the two disks (01 and 02) and had big difficulties decoding them.
I spent a whole day examining the image files and trying to make sens of them. I found some systematically intermixed extents so that I finally changed the directory entries.
This allowed me to scrape most of the text files from the disks. but the binaries were not correct and a part of one text files was nowhere to be found.
Close to giving up, I revisited this thread and found the re-dumped new images.
And these were perfectly usable without tinkering!
Now I was able to have a closer look at the files and I tried to rebuild one of the demonstration programs written in PL/I.
Lacking a PL/I manual, I experimented with compilers and linkers and finally found a combination which worked.
Initially, I used PL/I Version 1.0 and LINK 1.0 which were able to translate and link the files, but the resulting .COM file crashed.
A second experiment with PL/I 1.4 and LINK 1.3A gave more satisfying results.
Obviously PL/I 1.4 and the associated LINK 1.3A are useable for producing working programs.
Linking gives some warnings about three multiple defined references, but these seem to be harmless:
MULTIPLE DEFINITION: X$EB4
MULTIPLE DEFINITION: X$NB
MULTIPLE DEFINITION: X$NU
Additionally, three unsatisfied externals are listed, but they seem to be unused so that the executable works.
UNDEFINED SYMBOLS:
KCSTOT KCSTIN KCHRIN
I guess, that these names may be related to I/O
KCSTOT STandared OuTput
KCSTIN STandard INput
KCHRIN CHaracter INput
In order to resolve these externals, I created three dummy PL/I modules D1, D2 and, D3.
(I do not know how to implement three public functions in a single PL/I module, so I created three).
File D1.PLI:
KCSTOT:
procedure returns (fixed);
return (0);
end KCSTOT;
File D2.PLI:
KCSTIN:
procedure returns (fixed);
return (0);
end KCSTIN;
File D3.PLI:
KCHRIN:
procedure returns (fixed);
return (0);
end KCHRIN;
Additional files required:
GENGRAF.COM
GSX.SYS
ASSIGN.SYS
+ at least one DD...REL driver, also entered into ASSIGN.SYS
also useful:
PIP.COM
STAT.COM
+ a text editor, e.g. TURBO.COM
The whole process is then:
1) ===== compiling =====
A>PLI PLOTEXP
--------------------------------------------------
PL/I-80 Compiler Version 1.4
Serial No. 3032-0000-001130 All Rights Reserved
Copyright (c) 1980-1982 Digital Research, Inc.
--------------------------------------------------
COMPILATION OF: PLOTEXP
%include 'IPLTPLI.PLI';
NO ERROR(S) IN PASS 1
NO ERROR(S) IN PASS 2
CODE SIZE = 00A0
DATA AREA = 0392
FREE SYMS = 2C55
END COMPILATION
Notes:
PLI produces a file PLOTEXP.REL of 2KB.
The three dummy modules D1 to D3 are also compiled into .REL files.
2) ===== linking =====
A>LINK PLOTEXP,GRAFPLI,PLOTLIB,D1,D2,D3[A]
LINK 1.3A
MULTIPLE DEFINITION: X$EB4
MULTIPLE DEFINITION: X$NB
MULTIPLE DEFINITION: X$NU
PLILIB RQST EXAMPL 0100 GPINI 0209 XRANGE 02AB
... long list of references ...
X$$TTIN C52B X$$TTOT C52E X$TTIN A268 X$TTOT A288
X$AD C537 X$J6 C57E X$SK C592
ABSOLUTE 0000
CODE SIZE A938 (0100-AA37)
DATA SIZE 1951 (AD53-C6A3)
COMMON SIZE 031B (AA38-AD52)
USE FACTOR 54
Notes:
GRAFPLI.REL is a thin, language dependent interface layer, similar mobject modules exist for Fortran and Pascal.
The option [A] is required to avoid memory overflow.)
LINK produces a file PLOTEXP.COM of 50 KB.
3) ===== combining with the GSX system file =====
A>GENGRAF PLOTEXP
---------------------------------------------------
GENGRAF 1.0 15 Nov 82 Serial No 5000-0000-000292
Copyright (C) 1982
Digital Research, Inc. All Rights Reserved
---------------------------------------------------
Notes:
GENGRAF requires the file GSX.SYS.
It produces a new file PLOTEXP.COM of 52 KB.
4) ===== executing the final .COM file =====
A>PLOTEXP
---------------------------------------------------
GSX-80 1.0 15 Nov 82 Serial No 5000-0000-000292
Copyright (C) 1982
Digital Research, Inc. All Rights Reserved
---------------------------------------------------
HP 2648A Driver Version 1.0
Copyright (C) 2020 by Martin Hepperle
---------------------------------------------------
... output of graphics terminal escape sequences ...
A>
Notes:
In my ASSIGN.SYS file I have an 8KB driver for a HP 2648A terminal.
The final .COM file is quite large. For a 64 kB CP/M 2.2 the demonstration porgram is already close to the limit.
Applying the same procedure to the GSS-Kernel example program produces a .COM file which is too large to be executed on my CP/M 2.2 simulator.
So I guess that the GKS system was an interesting technology demonstration, but the application of GSS-Plot and GSS-Kernel was rather limited due to these problems.
I still have two questions:
What is the purpose of GENREL.COM which is included with GSS-Plot and GSS-Kernel?
What happens if the GSS suite is compiled and run on a CP/M 3 system? Is memory still as tight as on 2.2?
Martin