HISTORY of MISH: The MASH program: The MISH program was created from a program called MASH. The MASH program was used to convert and create a file which could be transmitted on a HASP reader stream. These files had to be 80 bytes bytes in length and could contain binary data. The MASH program has the following features: o Uses HASP data compression. o Allows conversion of any type of file. o File attributes stored in a header record. o Format acceptable for HASP and 2780 punch streams. o Written in RSX MACRO-11. o Runs on RSX-11M/M+ and VMS in compatibility mode. The MISH Program: There was a need to transfer files on the HASP reader streams and also to be able to transfer these files using the RSXNET and VAXNET programs. It seemed logical then to convert the output of the MASH program into printable ASCII to accomplish this need. At this time, the MASH program was converted into MISH. The MISH program has the following features: o Uses HASP data compression. o Allows conversion of any type of file. o File attributes stored in two header records. o Format acceptable for HASP and 2780 reader streams. o Format acceptable to the RSXNET and VAXNET programs. o Format acceptable to the VMS Code Management System. o Base character for the ASCII conversion is '%' ('$'+1) to allow easy file inclusion in VMS batch jobs. o Conversion is 2 bytes into 3 printable ASCII bytes with a maximum record size of 78 bytes (reader stream max=80). o Written in RSX MACRO-11. o Runs on RSX-11M/M+ and VMS in compatibility mode. VMS MISH Program: All seemed well with the MISH and MASH programs until VMS V4.0 was released. Now the Application Migration Executive (AME) used for running compatibility programs on VMS became a layered product called VAX-11/RSX. Existing sites could obtain the first release of this product free of charge if they were upgrading from a previous version of VMS, otherwise there was a fee. There was also a need to run MISH on the Micro-VAX which doesn't include compatiblity mode. Thus, MISH needed to be rewritten to run on any VMS system. The language chosen was the new FORTRAN available on VMS V4 since it now contains extensions which allow easy access to the RMS structures to obtain the file attributes. Also, the source modules created can be easily included in the VAXNET program also written in FORTRAN. Since the MISH and MASH programs had much common code, I decided to include the features of both programs in the VMS MISH. To select MISH mode, which is the default, the /ASCII qualifer is used and to select MASH mode, the /BINARY qualifier is used. I also discovered during the rewrite that the compression routine could be optimized. This optimization resulted in the following savings when used with an executable file during testing: OLD: Program Blocks In Blocks Out Records Out ------- --------- ---------- ----------- MISH 30 42 283 MASH 30 29 174 NEW: Mode Blocks In Blocks Out Records Out Savings ---- --------- ---------- ----------- ------- ASCII 30 40 264 19 BINARY 30 27 168 6 Since most file transfers are done at slow speeds (300 or 1200 baud), the above savings will be significate on larger files. XMODEM Qualifier: It's obvious from the above statistics that conversion of binary data to ASCII is expensive. Since the VAXNET program supports the XMODEM protocol, I decided to allow the option of generating a file suitable for transfer using XMODEM in binary mode. When the XMODEM qualifier is specified, BINARY mode is selected and the record size is changed to 128 (size of an XMODEM data block). Since the XMODEM protocol has better error checking than the VAXNET protocol and allows binary transfers, I prefer to use this program. Design Notes: o The header record is not compressed which forces one or two header records for MASH and MISH respectively. The header record should be compressed just like any other record. o The UIC stored in the VMS header record is only a word instead of a longword to be compatible with the PDP-11 programs. This UIC is used for identification of where the file came from, it is not used when decompressing the file. o The maximum size of the file name stored in the header record is limited to 31 characters. This limitation is imposed to be compatible with the PDP-11 programs. This causes no real problem except that the file name in the header record can't be used when the file is decompressed. In this case, an output file name must be specified. During compression, anything over the limit is overwritten with the file attributes which is much more important than the file name. o Access Control Lists (ACL's) are not retained.