MLOAD Description: MLOAD is a transient command used to convert a "HEX" file (the output of an assembler) into an executable "COM" file. In its simplest form, MLOAD takes a program that is in valid Intel hexadecimal format machine code and converts it into a command file that can be executed. The file becomes filename.COM (the hexadecimal file is filename.HEX). This form may be used as a replacement to the Digital Research "LOAD" command. The program may also be used to overlay portions of a "COM" file with patches assembled to a new "HEX" file. Syntax: mload [<outnam=>][<file1.type>,]<file2>[,<file3...>] [bias] <outnam> is the optional output file name. <file1.type> is an optional non-HEX file to be patched by subsequently named HEX files. Specifying the filetype enables this function. <file2> specifies the file to be loaded, unless a file1.type has been specified. In that case, it specifies a HEX file to load. <file3> specifies HEX file(s) to load. <bias> is the offset within the saved image to apply when loading the file. MLOAD with no arguments prints a small help message. This message is also printed whenever a command line syntax error occurs. ZCPR-style du specifications are fully supported, for both input and output files. The following command lines are permissible: b3>mload a4:myfile.com=0:bigfil,b6:patch1,c9:patch2 a6>mload b5:=c3:mdm717.com,mdmpatch Only the optional drive and user spec and the primary filename may be specified. The output filetype is derived exclusively from the 3-byte string at 103h within MLOAD. If no output filename is specified, it will be derived from the first input filename, with filetype of "COM", if not otherwise specified (this default filetype may be patched directly into MLOAD via DDT or with MLOAD itself, using a patch file - its location is at 103H in MLOAD.COM). Note that a command line of the form "C:=<FILENAME>" will place the output file on the "C" drive with the same primary filename as the input file. This feature obviating any need to use DDT. The first (and only the first) filespec (after the "=", if used) may be non-HEX and the filetype must be specified. Examples: 1. "mload MYPROG" loads MYPROG.HEX and writes the output to MYPROG.COM. 2. "mload ws.com,wspatch" loads WS.COM, overlays it with WSPATCH.HEX, and writes the output to WS.COM. 3. "mload MEXTEST=MEX114.COM,MXO-US13" loads MEX114.COM, overlays it with MXO-US13.HEX, and writes the output file to MEXTEST.COM. Note that this is the recommended technique because it preserves the original file! 4. "mload ws.ovr,ovrpatch" loads WS.OVR and patches it with "OVRPATCH.HEX". Filenames may contain drive/user specs, and must not contain wildcards. Input filenames must be separated by comas, and a space is required between the last filename and the optional bias. A load information summary is printed at the successful conclusion of the load. Any errors in loading will generally include the name of the file in question. This program is a replacement for the CP/M "LOAD" program. Why replace "LOAD"? well... LOAD.COM has a few deficiencies. For example, if the hex file's origin is above 100h, LOAD.COM prepends blank space to the output file to insure it will work as a CP/M transient. It doesn't care if the file is not intended as a CP/M transient and it also doesn't like hex records with mixed load addresses. For example, one that loads below a previous record; which is a perfectly legitimate happenstance. Also, LOAD.COM can load only one program at a time, and has no provision for a load bias in the command specification. Finally, there is no provision for user specification of the output file name. In its simplest form, MLOAD's syntax is identical to LOAD.COM. There should be no problem in learning to use the new program. The only significant difference here is that, under LOAD.COM, all files are output starting at 100h, even if they originate elsewhere. MLOAD outputs starting at the hex file origin (actually, the first hex record specifies the output load address). The bias option may be used to override this. An example should clarify this. Suppose you have a file that loads at 1000h. LOAD.COM would save an output file that begins at 100h and loads past 1000h (to wherever the program ends). MLOAD will save an output file starting from 1000h only. If, for some reason, you need the file to start at 100h in spite of its 1000h origin (I can think of several circumstances where this would be necessary), you'd have to specify a bias to MLOAD. Using this example, "MLOAD MYFILE 0F00" would do. Note that this program re-initializes itself each time it is run. If your system supports a direct branch to the TPA (via a zero-length .COM file, or the ZCPR "GO" command), you may safely re-execute MLOAD. Error Messages: Command line syntax error Error in command line, re-enter and try again. Ambiguous file name: <filename.ext> not allowed. Ambiguous files are not allowed. File <filename.ext> not found. Input file could not be found, check spelling and try again. Disk full. No room on disk for output file. Directory full. No room in directory for output file. Premature end-of-file in <filename.ext> Error in input file, correct error, and try again. Checksum error in <filename.ext> Error in input file, correct error, and try again. Can't close <filename.ext> Problem closing file, disk may be in Read/Only status. Memory full while loading <filename.ext> Error in input file, correct error, and try again. Format error in file <filename.ext> Error in input file, correct error, and try again. Writing <filename.ext>, nothing loaded