******************************************************************** ******************************************************************** ********************** ********************* ********************** PASCAL/MT+ ********************* ********************** ********************* ******************************************************************** ******************************************************************** ********** ********** ******* Release Notes ******* ****** ****** ******************************************************************** ******************************************************************** ******************************************************************** ***** ***** ***** Copyright (c) 1983 by Digital Research ***** ***** ***** ***** CP/M-86 is a registered trademark of Digital Research. ***** ***** ***** ******************************************************************** These release notes pertain to both the software and the documentation set for the Digital Research product: Pascal/MT+ For the CP/M-86 Family of Operating Systems They provide the most current information regarding: o Sofware bugs that have been identified since the product was released. o Errors or omissions in the documentation set that could not be corrected because of the lead time needed for typesetting and printing. 1 DOCUMENTATION ERRATA The following are errors in the Pascal/MT+ Language Reference Manual: Page 3-3. Change WORD(x) to WRD(x) Page 6-2. Change the third paragraph to read: "The data type for a function must be a simple type. Put the type name after a colon at the end of the function heading. Page 6-8. In Table 6-1, change the Returns type for the Function ABS from REAL to "same as NUM". Page 6-10. In Table 6-1, the Function @HERR returns a BOOLEAN type, and the the Function ADDR returns a POINTER not an INTEGER type. Also change FUNCTION @RLS to PROCEDURE @RLS. Page 6-12. Change the first sentence in the second paragraph to read: "You can use ADDR to reference external variables." Page 6-13. Change the example to ARCTAN(1) = 0.78539 Page 6-19. Change the first sentence in the second paragraph to read: "CLOSEDEL closes and deletes files after use." In the last paragraph, change File Control Blocks (FCBs) to File Information Blocks (FIBs). Page 6-68. Change the fifth paragraph to read: "WRITE and WRITELN treat strings as arrays of characters. They do not write the length byte to TEXT files." Page 7-2. In the second paragraph, change F2 to F3 in: F2^ := 45; puts the integer value 45 in the buffer of the file variable F2. 2 The following are errors in the Pascal/MT+ Programmer's Guide for the CP/M-86 Family of Operating Systems. Page 1-5. Delete the following files from Table 1-2. They are NOT distributed with the product: o 8087.I86 o 87XOP.I86 o 87TRS.I86 o 87REALS.BLD Page 1-6. The second paragraph states you can use the distribution disks just as they are. This is not true; they are write-protected. You must copy them onto backup disks. Page 2-3. Change the first paragraph to read: "During Phase 0, When the compiler finds a syntax error, it displays the line containing the error. If you are using the MTERRS.TXT file, the compiler also displays an error description. In all other Phases, if you are not using the MTERRS.TXT file, or you have a nonsyntax error, the compiler displays the line number and an error identification number." Page 2-15. Table 2-5 is incomplete. Add the following Linker error messages: Unable to open input file: xxxxxxxx Explanation: The linker cannot find the specified input file. Incompatible relocatable file format Explanation: Either the R86 file is corrupted or it has a format that is incompatible with the format expected by LINK/MT+86. Initialization of DSEG not allowed Explanation: The linker has encountered a DB or DW instruction in the Data segment. Undefined symbol: xxxxxxxxx Explanation: The specified symbol is referenced but not defined in the module. 3 Page 3-8. The explanation of the /O option is incorrect. Change as follows: "/O:n tells the linker that the previous file is a SYM file and that n is the overlay number, in hexadecimal. You must specify the overlay filename and number in the link command line. This option is for overlays only." Page 3-10. Change the command line for linking an overlay to: LINKMT =/O:,/P:mmmm/X:ssss Page 3-11. Change section 3.2.5 to 3.2.6. Insert section 3.2.5 as follows: 3.2.5 Overlay Symbol Table LINKMT creates a symbol table at the end of the code segment for each overlay module. This symbol table can be very large because it includes all the symbols in the overlay and the root. However, not all the entries in the symbol table are required by the overlay. The overlay requires only those entries called from the root or another overlay. Therefore, after linking each overlay module, you should use the STRIP utility to reduce the size of the symbol table. Note: LINKMT provides the size of the code segment which does not include the symbol table for overlay modules. Thus, the total code size required for an overlay module will be much larger than the size given by LINKMT if you do not use STRIP. To use STRIP, enter the command A>strip Once invoked, STRIP asks for the name of the file to strip, the location of the symbol table (the same number used with the P parameter when you link the overlay), and the name of each entry point you want to retain in the symbol table. You must enter the entry points in reverse order of their declaration. STRIP searches the symbol table for the first entry point and deletes all others it encounters until it finds the correct one. STRIP then requests another entry point and continues. When the last one is found, you enter a dummy entry point such as ZZZ and then STRIP continues to delete the other entries until it finds the end to the table. 4 After deleting all the unused entry points, STRIP lists the remaining entry points and asks if it should replace the original version with the stripped version. You must answer with "YESDOIT" to replace the original. Any other response terminates STRIP and does not change the original. Page 3-13. The example command lines for linking overlays 1 and 2 are incorrect. They should be: A>LINKMT DEMOPROG.001=DEMOPROG/O.1,MOD1,PASLIB,/S/P:4000/L A>LINKMT DEMOPROG.002=DEMOPROG/O.2,MOD2,PASLIB,/S/P:4000/L Page 3-14. Add the following to paragraph 6 concerning shared variables: "You must also rewrite the initialization routine in PASLIB because it zeros out the data area. Change @INI3.I86 to reflect the size of the common area. For example, SUB CX, 100H + common area size MOV DI, 100H + " " " Page 4-7. Delete the third paragraph, and insert the following: "Floating-point real numbers are returned in the DX, CX, BX, and AX registers. BCD reals are returned in DI, DX, CX, BX, and AX. The high-order byte is in DX (or DI), and the low-order is always in AX." Page 4-14. In the paragraph under Listing 4-6 add the sentence: "An extra eight bytes of code is generated here, but the amount can vary depending on the number and type of parameters. There is no empirical formula for determining the extra amount." 5 Page 4-18. Add the following to the explanation of MEMAVAIL: "FULLHEAP.R86 has been extended to make available up to 1 megabyte of heap space. MEMAVAIL and MAXAVAIL both return INTEGER values, so if you are using more than 32K of heap space, you must declare them as follows: EXTERNAL FUNCTION LMEMAVAIL : LONGINT; EXTERNAL FUNCTION LMAXAVAIL : LONGINT; These functions are both in PASLIB. Page 5-1. The first paragraph in Section 5.1 refers to the Intel publication named "MCS-86 Macro Assembly Language Reference Manual." This manual is no longer in print, but has been replaced by the "ASM86 Language Reference Manual". The Intel order number for this new manual is 121703-002. Page 5-3. In Table 5-1, add the following to the explanation of the Pd option: Unlike the similar MT86 compiler option, P does not send output to the printer. Page 5-9. In Table 5-3, 320 bytes should be 32 bytes. 6