BackIntroduction to the ISIS environment:
The ISIS environment is started from CP/M with the command a:isx. The first four disk drives can be accessed with the following syntax:
:f0: CP/M drive a: :f1: CP/M drive b: :f2: CP/M drive c: :f3: CP/M drive d:While the ISIS environment is running the command prompt is the drive number, followed by the greater symbol:
CP/M ISIS A: 0> B: 1> ...The ISIS program to leave the environment and return to CP/M is :f1:cpm, which can be used from submit scripts. If used interactive at the command prompt typing CTRL-C returns to CP/M too.
The transient CP/M commands DIR, ERA, TYPE and REN are available in the ISIS environment and work similar as under CP/M.
File specification under ISIS works a bit different as under CP/M, a complete file name consists of drive letter, followed by filename and suffix. The lenght of the filename part is limited to 6 characters, under CP/M 8 characters are allowed. This needs to be taken into account for files to be processed under ISIS. Also ISIS doesn't know about user numbers and file attributes, so this can't be used if files need to be processed under ISIS.
dir - show directory of current drive dir :f1: - show directory of second drive dir :f1:*.com - show files with suffix .com on second drive
ISIS drive search path:
If a file is specified without the drive part the ISIS system would first search this file on the current logged drive, and if not found there it would look on the first drive. Unfortunately this is pretty much broken in the ISIS emulation environment for CP/M 2, as the following example shows:
2>dir F2: LOAD PLM 2>:f1:plm80 load.plm ISIS-II PL/M-80 COMPILER V3.1 PL/M-80 I/O ERROR -- FILE: SOURCE NAME: LOAD.PLM ERROR: 13--NO SUCH FILE COMPILATION TERMINATED 2>This would not be a problem for very simple programs like load.plm, because one could specify the drive for the source file in the command line:
2>dir F2: LOAD PLM 2>:f1:plm80 :f2:load.plm ISIS-II PL/M-80 COMPILER V3.1 PL/M-80 COMPILATION COMPLETE. 0 PROGRAM ERROR(S) 2>dir F2: LOAD OBJ : LOAD LST : LOAD PLM 2>For larger programs build from many modules, like several CP/M 3 and MP/M 2 transient commands, this is a problem because the allowed command line lenght is exceeded when linking all the modules into the final program. Fortunately another odd bug was discovered:
2>dir F2: LOAD PLM 2>:f3: 3>:f1:plm80 load.plm ISIS-II PL/M-80 COMPILER V3.1 PL/M-80 COMPILATION COMPLETE. 0 PROGRAM ERROR(S) 3>:f2: 2>dir F2: LOAD PLM : LOAD OBJ : LOAD LST 2>If the drive part is missing the ISIS programs look at the drive one lower than the current logged drive for files. This bug is exploited a lot in the submit scripts to build CP/M 3 and MP/M transient programs to avoid command line lenght problems.
Exact file sizes and EOF:
One of the major differences between CP/M 2 and ISIS is how this OS's handle the size of files and where a text file ends. ISIS knows the exact size of any file in bytes just like modern OS's. CP/M 2 counts the number of 128 byte records for a file, which will cause problems with text files not ending with the last record boundary. As a convention every program writing text files appends a CTRL-Z character at the end of the file and every program reading text files needs to stop when this EOF mark was read.
If one just compiles a PL/M source under ISIS emulation the following will happen:
0>:f1:plm80 :f3:load.plm ISIS-II PL/M-80 COMPILER V3.1 PL/M-80 COMPILATION COMPLETE. 117 PROGRAM ERROR(S) 0>type :f3:load.lst ... ... 258 2 CALL BOOT; 259 2 END LOADCOM; 260 1 END; *** ERROR #2, STATEMENT #260, NEAR 'END', UNPRINTABLE ASCII CHARACTER *** ERROR #2, STATEMENT #260, NEAR 'END', UNPRINTABLE ASCII CHARACTER ... ...