home *** CD-ROM | disk | FTP | other *** search
/ Vectronix 2 / VECTRONIX2.iso / FILES_01 / LATTIC_1.LZH / READ.ME < prev   
Text File  |  1990-10-30  |  32KB  |  864 lines

  1. Lattice C ST 5.06.02 - 30 October 1990
  2. ======================================
  3.  
  4. This is the READ.ME file for Lattice C version 5.06.02. Please write
  5. this version number on your registration card and return it now. Please
  6. note the zeroes are very important and allow us to work out exactly
  7. which version you have should you require technical support. Without
  8. this version number we will be less able to help you if you have
  9. problems.
  10.  
  11. Of the seven disks, only disk 1 is serialised, this is quite normal and
  12. you may, if you wish, copy the serial number to your other disks.
  13. Should you need to return your disks for any reason, then you MUST
  14. return all seven disks. 
  15.  
  16. This file details the last minute changes which we have made to Lattice
  17. C that did not make it into the manuals.
  18.  
  19. Version 1.9 of the HiSoft File Selector can be found in the FSEL folder
  20. of disk 2. The .TXT file contains its documentation.
  21.  
  22. Version 1.1 of the HiSoft AES path patch program can be found in the
  23. AESPATH folder of disk 3. The .TXT file contains its documentation.
  24.  
  25. The file PRELINK.TXT contains some information for advanced users on the
  26. pre-linkage features available in the linker.
  27.  
  28. Re-installation for upgrade users
  29. =================================
  30.  
  31. If you are upgrading from an earlier Lattice 5 release, re-installation
  32. can be performed safely by simply re-running the installation program
  33. which will overwrite any old versions of the tools/libraries it finds.
  34. Note that any files which you have added in the directory structure
  35. will not be changed.
  36.  
  37. Features of 5.06.02
  38. ===================
  39.  
  40. Editor
  41. ------
  42. A cycle windows command is available on the Options menu, or via Ctrl-V.
  43.  
  44. Integrated compiler
  45. -------------------
  46. The left mouse button may be used as an alternative to a keyboard
  47. key-press at any of the 'Press a key' prompts.
  48.  
  49. Compiler
  50. --------
  51. A new option -Lq is available to add the QUIET option for CLink.
  52.  
  53. The -cq option strengthens the aggregate equivalence type checker. When
  54. disabled (the default), this option allows two aggregates with common
  55. initial subsequences over the length of one of the aggregates to type
  56. check equivalent. This option is automatically enabled by -ca.
  57.  
  58. Bugs fixed for 5.06.02
  59. ======================
  60.  
  61. Compiler
  62. --------
  63. A condition codes tracking problem was corrected.
  64. Invalid dates are detected and ignored. If no valid date and time is
  65. available for __DATE__ and __TIME__ the time and date of compiler build
  66. is used.
  67. Passing floats to prototyped functions was fixed up.
  68. Register passing of volatile objects (meaningless concept) to functions
  69. was changed to fix a CXERR 26.
  70. -cl now generates the correct code for passed parameters.
  71.  
  72. Integrated compiler
  73. -------------------
  74. Linking with the normal maths library was corrected.
  75.  
  76. Linker
  77. ------
  78. Absolute symbols are correctly re-exported when prelinking.
  79.  
  80. Header Files
  81. ------------
  82. assert.h:    Modified to conform to the ANSI definition.
  83.  
  84. Library
  85. -------
  86. form_keybd() doesn't swap its parameters.
  87. assert() changed to conform to the ANSI definition.
  88. movmem() fixed in register passing mode.
  89. _main() fixed so I/O redirection works again.
  90.  
  91. Features of 5.06.01
  92. ===================
  93.  
  94. Integrated Compiler
  95. -------------------
  96. Support now exists for using the -L option in the LC_OPT variable. This
  97. enables additional libraries to be specified simply in the integrated
  98. environment. HiSoft C users may simply specify -L+hc.lib to use the
  99. HiSoft C library without needing to become involved in the intricasies
  100. of WITH files.
  101.  
  102. The -f8, -fa and -fi options now pull in the lcm8, lcma and lcmi
  103. libraries for use with the 68881 maths co-processor libraries
  104. (available separately).
  105.  
  106. Library
  107. -------
  108. An additional function stime() is available for setting the system time
  109. and date. It has the prototype:
  110.  
  111.     int stime(const time_t *);
  112.  
  113. and is passed a pointer to a time_t value as processed via time.
  114.  
  115. Header Files
  116. ------------
  117. time.h:        Includes the prototype for stime().
  118.  
  119. Bugs fixed for 5.06.01
  120. ======================
  121.  
  122. Compiler
  123. --------
  124. A minor problem with very long strings was corrected.
  125.  
  126. Linker
  127. ------
  128. A bus error introduced in 5.06.00 was eliminated. Pre-linkage was
  129. reworked to improve coalescing of unmerged unnamed sections.
  130.  
  131. Assembler
  132. ---------
  133. A problem with using macros was corrected.
  134.  
  135. Debugger
  136. --------
  137. Various incorrect dissasemblies were corrected.
  138.  
  139. Installation Program
  140. --------------------
  141. This correctly from drive B.
  142.  
  143. Ramdisk
  144. -------
  145. This now handles the initial reset correctly on the Atari TT030.
  146.  
  147. Strip
  148. -----
  149. Re-linked with fixed stat() function.
  150.  
  151. Library
  152. -------
  153. _dread() preserves d1 across GEMDOS calls.
  154. _main() sets the file handle flag on handles 0,1 and 2 when redirected.
  155. onbreak() works correctly in registerised parameter models.
  156. open() doesn't do a disk access when opening a system device (prn:
  157. etc.), also errno is preserved in the case where a file must be created
  158. which didn't previously exist.
  159. stat() corrects for timezone differences correctly.
  160.  
  161. Header Files
  162. ------------
  163. assert.h:    NULL definition removed in accordance with ANSI.
  164. ctype.h:    NULL definition removed in accordance with ANSI.
  165. errno.h:    NULL definition removed in accordance with ANSI.
  166. limits.h:    SHRT_MIN (and INT_MIN in short integer mode) reduced to
  167.         -32767 in in accordance with ANSI.
  168. stdarg.h:    NULL definition removed in accordance with ANSI.
  169. stdarg.h:    NULL definition removed in accordance with spirit of ANSI.
  170.  
  171.  
  172. Features of 5.06.00
  173. ===================
  174.  
  175. Compiler
  176. --------
  177. #pragma inline now hoists non-live variable saves to the head of the
  178. function when possible. The code generated for short integer parameters
  179. is better, and corrects a possible problem when passing a long value
  180. to a a short parameter.
  181.  
  182. When using #pragma inline, if the code generation sequence is omitted
  183. then a call to the original function is made using the calling and
  184. register kill conventions mentioned in the pragma, this is especially
  185. useful for calling out to languages with different register conventions.
  186.  
  187. Two new options, -b and -r, are available on LC2. Respectively these
  188. allow the global data base register and frame register to be specified.
  189. Note that code compiled using other than the default options (-b4 and -r6)
  190. will *not* work with the standard run time libraries. The special option
  191. -bn is also available, allowing register A4 to be placed on the register
  192. selection list. Note that if this option is used and *any* reference
  193. must be made to the global data register then a CXERR will be issued.
  194.  
  195. 68020 (and above) code generation now takes full advantage of the bit
  196. field instructions available on these processors, when manipulating
  197. bit fields at the C level.
  198.  
  199. Both phases of the compiler have had substantial speed optimisations made
  200. to them. This leads to approximately 35% faster compilation times.
  201.  
  202. When using default short integer mode (-w), message 135, "Assignment to
  203. shorter data type (precision may be lost)", is automatically enabled.
  204.  
  205. The behaviour of -f8 has been modified to support the 68881 libraries
  206. (available separately from ourselves, at the address below). Note that
  207. two additional options are available for these users, -fi (use ST I/O
  208. only maths library) and -fa (use auto-detecting 68881 maths for TT/ST
  209. I/O/software emulation only systems). All of these options require the
  210. separate 68881 maths library pack.
  211.  
  212. The pre-processor symbols available for detecting the model in use have
  213. been greatly extended. The current list of symbols is:
  214.  
  215.   Symbol        Enabling option
  216.   ------        ---------------
  217.   DEBUG         Any -d
  218.   _BASEREL        -b1
  219.   _ANSI         -ca
  220.   _UNSIGNEDCHAR     -cu
  221.   _M881         -f8
  222.   _MLATTICE        -fl
  223.   _MMIXED        -fm
  224.   _MSINGLE        -fs
  225.   _MDOUBL        -fd
  226.   _PCREL        -r1
  227.   _REGARGS        -rr
  228.   _SHORTINT        -w
  229.   STPR         -w
  230.   LPTR         without -w
  231.  
  232. The set of static pre-processor symbols has also been extended, the
  233. following additional symbols are now available:
  234.  
  235.   Symbol    Value    Meaning
  236.   ------    -----    -------
  237.   LATTICE_56    1    Current compiler release.
  238.   __VERSION__    5    Current major version number.
  239.   __REVISION__    6    Current minor version number.
  240.  
  241. Several changes have been made to improve overall code quality.
  242.  
  243. The macro buffer was extended to 4096 characters and the maximum number
  244. of macro arguments increased to 32.
  245.  
  246. Optimiser
  247. ---------
  248. When generating code for the 68881 GO performs full global allocation
  249. of floating point data registers.
  250.  
  251. Assembler
  252. ---------
  253. A GenST2 style INCBIN directive is available, using the normal DevpacST
  254. syntax. Note that, in common with the current GenST2 release, the
  255. section counter is not even aligned after an INCBIN and so a "CNOP 0,2"
  256. should be used if required afterwards.
  257.  
  258. Editor
  259. ------
  260. Window overlap is now more intelligent, several minor bugs which could
  261. cause window (but not text) corruption have been fixed.
  262.  
  263. Bugs fixed for 5.06.00
  264. ======================
  265.  
  266. Compiler
  267. --------
  268. __builtin_strcmp correctly predicts possible register spillage to allow
  269. correct tracking of condition codes.
  270. __builtin_max/__builtin_min kills the register used as a working register
  271. prior to a possible reload.
  272. -ca now removes the near, far and huge keywords from the compiler
  273. keyword table.
  274. Function assignments to candidates for post-increment addressing modes
  275. now occurs correctly, potential problems with using an address register
  276. as left and right operands whilst being a candidates for post-increment
  277. addressing modes was corected.
  278. Float parameters to prototyped functions now occur correctly.
  279. Temporaries created as a result of calls to inline functions are correctly
  280. killed at the virtual function call boundary.
  281. Pre-compiled header files containing #pragma inline directives should
  282. no longer cause "File too short" messages on reloading.
  283. When generating prototypes, all modifiers and specialised keywords are
  284. output correctly. Note that enumerated types will use an enum tag as the
  285. parameter type, and so the definition of the enum tag must be in scope
  286. at the time of prototype file inclusion.
  287. __TIME__ and __DATE__ now return the correct time/date.
  288. Builtin errors in phase 2, do not cause bus errors when line number info
  289. is not available.
  290. Several CXERR's 26, 22, 31 and 124 have been fixed
  291. The INCLUDE variable may now be specified as a ; or , separated list.
  292. A problem with __builtin_strcpy not preserving the status has been
  293. fixed.
  294. Pointer/pointer subtractions use the correct return register.
  295. A bus error caused by not declaring a function used in error as a scalar
  296. is corrected.
  297. Multiplies by zero which are not eliminated by phase 1 are correctly
  298. handled by lc2.
  299. The -rb flag generates distinct names for the two external definitions
  300. created.
  301. A bus error caused by attempting to initialise arrays illegally was
  302. eliminated.
  303. The -j options to lc1 are more effective in their treatment of warnings.
  304. Empty files may be compiled without causing an error.
  305. __FILE__ scans filenames doubling up '\'s as required.
  306. -f options may be specified in any order, this corrects the problem of
  307. using -f8 from the integrated compiler.
  308. Problems with long effective address calculations in 68020 mode have
  309. been fixed.
  310.  
  311. Optimiser
  312. ---------
  313. In short integer mode GO correctly performs global register re-allocation.
  314. In short integer mode, the computation of structure array accesses with
  315. negative offsets occurs correctly.
  316. In short integer mode, hoisting of constant induction variables occurs
  317. correctly.
  318.  
  319. Assembler
  320. ---------
  321. The 68020 bit field instructions now follow the standard Motorola syntax,
  322. and the BFINS instruction is now accepted in all forms.
  323. The BKPT and FMOVECR instructions now allow all constant legal operands.
  324. 68020 addressing modes with implicit fields are assembled correctly.
  325. fmove.p fpx,<ea>{#-k} is assembled correctly.
  326.  
  327. Disassembler
  328. ------------
  329. The 68020 bit field instructions are disassembled in the standard Motorola
  330. syntax.
  331. Line-A instructions are output as a single DC.W.
  332. 68881 FMOVEM instructions display the correct register list.
  333. fmove.p fpx,<ea>{#-k} is dissasembled correctly.
  334.  
  335. Integrated compiler
  336. -------------------
  337. The -ta option now works correctly when the link with GEM option is
  338. selected (the normal case).
  339.  
  340. Library
  341. -------
  342. chkml() now works correctly.
  343. getclk() doesn't return the day two days out.
  344. getmem() in short-integer stack based mode now works correctly.
  345. modf() returns a fractional part of zero when the the accuracy of a
  346. double is exceeded.
  347. strtol() and atoi() now skip leading white space correctly.
  348. iabs() appears in the normal libraries, not the floating point now.
  349. _CXFERR() is passed correct values in short integer mode.
  350. setvbuf() allocates a buffer correctly when passed a NULL pointer.
  351. The _d...() family of functions ensure that D2/A2 is preserved.
  352. realloc() copies the block correctly as the size increases.
  353. stat() restores the system DTA pointer if an error occurs.
  354. utime() takes the timezone into account when processing the time.
  355. v_get_pixel() returns the pixel values correctly.
  356. _ddup2() swaps its arguments prior to passing to GEMDOS Fforce().
  357. dup() returns the internal, not the GEMDOS handle.
  358. calloc() works correctly for large blocks.
  359. stcgfe() and stcgfp() now copy 3 and 8 characters respectively.
  360. Conversions from doubles to decimal strings occur correctly with no loss
  361. of final digit precision.
  362. mktime() fixed to give correct dates.
  363. strftime() %I and %U conversions fixed in short integer mode.
  364. rc_union() works correctly.
  365. printf() using precision specifications and 0 padding requests works as
  366. expected for floating point numbers.
  367.  
  368. Header Files
  369. ------------
  370. ctype.h:    _toupper() fixed.
  371. fcntl.h:    Added opene() prototype.
  372. float.h:    Changed to take advantage of _MMIXED, _MSINGLE, _MDOUBL.
  373. limits.h:    Changed to use _SHORTINT and _UNSIGNEDCHAR.
  374. math.h:        Prototype for _CXFERR added.
  375. osbind.h:    Fdatime(), Frename() definition changed to long
  376.         returning, definitions of prototype parameters changed
  377.         to int. 
  378. stdio.h:    lprintf() prototype added.
  379. stdlib.h:    bldmem() prototype added, min() and max() added.
  380.  
  381.  
  382. Features of 5.04.01
  383. ===================
  384.  
  385. Editor
  386. ------
  387. If 'Wrap' is selected in the Preferences box, pressing Delete at the
  388. end of a line now causes following text to be closed up.
  389. The Find box is now the full screen width.
  390. The vertical scroll bar arrows now scroll the window rather than the
  391. cursor.
  392. The position of the cursor after a find or goto line is more
  393. intelligent.
  394.  
  395. Linker
  396. ------ 
  397. CLink now searches the environment variable LIB for all files itself.
  398. Previously the work was done by LC.PRG or LC.TTP. As a result of this
  399. LIB may now be specified in terms of several ',' or ';' separated
  400. strings.
  401.  
  402. Two new keywords have been added, QUIET to suppress all output (other
  403. than fatal errors) and VER <filename> which specifies a file to which
  404. all output is to be directed.
  405.  
  406. Unlimited length command lines are now permitted when running from a
  407. shell supporting the Atari extended command line format (e.g. Craft).
  408.  
  409. Note that the TO and MAP commands do not need full names for output
  410. files. If the output file is specified as .PRG or .MAP (for example)
  411. then a file name based on the second file linked is used (or first file
  412. if only one file is available).
  413.  
  414. lc.ttp
  415. ------
  416. -N, has been added which supresses all compilations, this can be used
  417. to force the building of a .LNK file when used with -L without the
  418. neccessity of compiling any files.
  419.  
  420. -Lb, may be used to force batch mode linking, previously all links were
  421. done using batch mode.
  422.  
  423. -Lf, may be used to force a file map to be generated in the map file.
  424.  
  425. Libraries
  426. ---------
  427. It is possible to turn on detection for Ctrl-C in all read and write
  428. calls by setting the external variable __chkabort to a non-zero value.
  429. This is easiest done by re-defining the external viz:
  430.  
  431.     int __chkabort=1;
  432.  
  433. Note that this variable has no effect on the normal GEMDOS checking.
  434. Also it should not be used in GEM programs which expect to terminate and
  435. clean up in a controlled manner. This code works by sending a \0 to the
  436. GEMDOS console device, consequently it may interfere with any program
  437. which uses VT52 codes, hence this is a powerful facility but must be
  438. used with care.
  439.  
  440. Startup Code
  441. ------------ 
  442. The main entry point is now named ___start which is externally visible
  443. for those applications which wish to have some custom code before it
  444. without having a complete new stub.
  445.  
  446. Integrated compiler
  447. -------------------
  448. When displaying error messages, the whole of the status line is now
  449. used if the screen width is 80 characters or less and the length of the
  450. message is more than 40 characters.
  451.  
  452. The -t and -L options are now available in the compiler options box,
  453. although strictly these are functions of the linker. Please note that
  454. the compiler in the integrated compiler is a big compiler, also the
  455. options -B, -C, -E, -M, -N, -R and -z access special facilities of the
  456. lc.ttp driver which are not normally needed in the integrated compiler,
  457. and would cause a considerable overhead for 1Mb users.
  458.  
  459. As a result of these extensions any options stored in old EDCTOOLS.INF
  460. are ignored when loading. A new options table is saved when the tool
  461. info is saved. This ensures that old tools and environment settings are
  462. retained.
  463.  
  464. Files
  465. -----
  466. A WITH for the linker (lib\hc.lnk) is supplied on disk 3 to aid users
  467. of HiSoft C who are compiling their programs.
  468.  
  469. Batcher
  470. -------
  471. The FORMAT command (described below) has been extended to provide a
  472. volume label.
  473.  
  474. e.g.
  475.     FORMAT B: VOLID
  476.  
  477. Formats a disk in drive B with a volume label of VOLID.
  478.  
  479. The COPYWARN command lets you enable warnings when over-writing an
  480. existing file using the COPY command. Use
  481.  
  482. COPYWARN ON
  483.  
  484. to enable this. If you are prompted, press Y to over-write this file,
  485. N to leave this file and A to copy this and all subsequent files without
  486. asking.
  487.  
  488. The /D and /S flags used by the COPY and DIR commands have been
  489. extended to give the files in reverse order using /D- and /S-.
  490.  
  491. Installation program
  492. --------------------
  493. The installation program has been improved so that it now ensures that
  494. the appropriate disk has been inserted by checking the volume label. If
  495. you wish to over-ride this then press I when informed that you have
  496. inserted the wrong disk.
  497.  
  498. If you have a Single-sided drive A
  499. ----------------------------------
  500. The installation program can now be used on systems with a single-sided
  501. drive A and a double-sided drive B. Users with this configuration and
  502. no hard disk should run the installation program as normal - this will
  503. produce disks for a 'normal' system with a double-sided drive A and
  504. then procede as follows:
  505.  
  506. 1. Half a megabyte of RAM: Use the bootdisk produced by the
  507.    installation program in drive B and store your source files on
  508.    drive A.
  509.  
  510. 2. One megabyte of RAM: Copy the AUTO, H and LIB folders from the
  511.    bootdisk produced by the installation program to a single-sided disk
  512.    that you will boot from. Also make a BIN folder and copy CLINK.TTP
  513.    and lc1.lc from the BIN folder of the double-sided. You can now use
  514.    the Work disk produced by the installation in Drive B. You will
  515.    probably want to use the Environment editor command so that the PATH
  516.    environment variable refers to B:\BIN. When the system has booted
  517.    you can remove your single-sided bootdisk from drive A and use this
  518.    for a disk to hold your source files.
  519.  
  520. 3. More than one megabyte of RAM. Use the Ramdisk installation program
  521.    on disk 3 in the RAMDISK folder to inset B: in front of the files to
  522.    be copied and save this to the AUTO folder of a single-sided boot
  523.    disk. You can then boot using the bootdisk produced by the
  524.    installation program in drive B.
  525.  
  526. Ramdisk Installation program
  527. ----------------------------
  528. The ramdisk installation program now has two extra buttons:
  529.  
  530. 1. Load driver. This loads just the ramdisk driver without the
  531.    information on the files to be copied, disk size etc.
  532.  
  533. 2. Load info. This loads the just the latter information without the
  534.    driver.
  535.  
  536. These buttons can be used to upgrade an existing ramdisk set up to the
  537. latest version of the driver without the need to re-enter the
  538. information concerning the files to be copied.
  539.  
  540. MonST2C version 2.08c
  541. ---------------------
  542. Control-W is now Single-Step for the benefit of users with French
  543. keyboards.
  544.  
  545. The word, long and byte searches can now be made to only look for the
  546. pattern starting on word or long word boundaries. To only search on
  547. word boundaries finish the list of items to search for with ',W'. For
  548. longwords use ',L'. For example:
  549.  
  550.     G W
  551.     1234,W
  552.     
  553. will look for $1234 only on word boundaries.
  554.  
  555. The Textual and Instruction searches now ask further you wish the
  556. search to be case sensitive. If you press Y then Test will match TEST
  557. or TeSt.
  558.  
  559. Bugs fixed for 5.04.01
  560. ======================
  561.  
  562. Installation program
  563. --------------------
  564. The cautbin.tos archive no longer claims to extract two copies of
  565. csnbaut.bin, in fact only one copy of csnbaut.bin was extracted, the
  566. other was cnbaut.bin.
  567.  
  568. Integrated compiler
  569. -------------------
  570. Non-base relative floating point maths now works correctly when linking
  571. in the integrated environment.
  572.  
  573. As a result of the change to CLink regarding library searching (see
  574. above) longer path names are now possible for filenames.
  575.  
  576. A problem caused by QuickST2 was fixed, error messages should now
  577. appear correctly.
  578.  
  579. Linker
  580. ------
  581. The coalesce phase has been completely rewritten for use when
  582. prelinking. This means that empty sections are no longer generated, and
  583. sections are not merged unnecessarily. Also when prelinking, the
  584. anonymous relocation sections are now correctly merged into a minimal
  585. number of blocks.
  586.  
  587. XNOALVS completely suppresses all (not most!) ALV generation, including
  588. inter-section references. This is particularly useful when prelinking as
  589. code sections are not necessarily merged during prelinking.
  590.  
  591. Batcher
  592. -------
  593. Batcher has had all of its output modified so that it now uses Fwrite,
  594. rather than Cxxxx. This means that redirection will now work correctly
  595. under TOS 1.0. Note that any program which does not use only Fwrite for
  596. output on TOS 1.0 will cause the machine to bomb if the output has been
  597. redirected from Batcher. Any programs compiled with Lattice C 5 will
  598. not suffer from this problem if only the UNIX or ANSI file routines are
  599. used.
  600.  
  601. Batcher has been improved so that it converts file specifications that
  602. are missing drives or directories fully before prompting - this avoids
  603. occassional copying of the same file onto itself. Batcher also handles
  604. folder names contains full stops fully now.
  605.  
  606. Ramdisk
  607. -------
  608. The ramdisk will now exit more cleanly if it runs out of space when copying
  609. files on startup.
  610.  
  611. The ramdisk is now more tolerant of a wider range of file
  612. specifications. When specifying directories to copy there is no need to
  613. include \*.*. Also there is no need to use, say,  A:\H just A:H will
  614. work fine. 
  615.  
  616. WERCS
  617. -----
  618. The line draw feature in the icon editor now works correctly on TOS 1.4
  619. and above.
  620.  
  621. Startup Code
  622. ------------ 
  623. This correctly sizes the environment string area in the fixenv
  624. function, consequently putenv should be more reliable now.
  625.  
  626. The desk accessory register passing startup stub now calls @main rather
  627. than _main.
  628.  
  629. _setargv() now opens output redirection files in the correct mode. This
  630. is mainly a cosmetic change as GEMDOS did not cause any problems in the
  631. incorrect usage anyway.
  632.  
  633. Library
  634. -------
  635. The v_ellipse, v_ellpie, v_arc and v_ellarc bindings now work correctly.
  636. printf("%p") now works correctly, more complex variants already worked.
  637. linea0() now preserves d2.
  638. _mediach() now correctly validates the drive number in the Rwabs patch.
  639. _AESglobal has been extended to the recommended 15 shorts.
  640. strtol() is now named correctly in the registerised models.
  641. swab() is now accessible in the library.
  642. strspn() should now 'see' the last character in the spanning string.
  643. memmove() now adds the correct offset in registerised models.
  644. stccpy() now works in the limit case.
  645. longjmp() now accounts for the function return address pushed by setjmp.
  646. cprintf() now correctly calls cputs in the registerised model.
  647. _dwrite/_dread now watch for zero length reads/writes and ignore them so
  648. that TOS 1.0 doesn't die.
  649. fputchar and putchar (function version) now work as expected.
  650. fputc() no longer loses 1 character per buffer on mode w(b)+ files.
  651. div() and ldiv now use the same layout, this corrects a problem in long
  652. integer mode.
  653. strftime(), setlocale() etc. recompiled to reflect the change in locale.h
  654. strstr() now works as expected when string2 is the null string.
  655. system() in the registerised models now calls via _shell_p correctly.
  656. atof(), strtod() now indicate overflow correctly.
  657.  
  658. Header Files
  659. ------------
  660. aes.h:        definition of RSHDR made int size independent
  661. dos.h:        _dwrite #define removed (for reason above)
  662. locale.h    Definitions of LC_xxx corrected
  663. osbind.h:    Frename, Xbtimer, Midiws fixed. Dfree redefined as (long *).
  664.         Keytbl changed to use char * cf. void *.
  665. stdio.h:    Now includes the definition for FOPEN_MAX, printf et al no
  666.         longer __stdargs (implied via ellipsis).
  667. stdlib.h:    bsearch added. Parameters of div_t transposed
  668. string.h:    NULL definition added
  669. time.h:        Now includes the definition for CLOCKS_PER_SEC
  670.  
  671.  
  672. Disk Contents
  673. =============
  674.  
  675. The installation program on disk 2 is actually called INSTALL.PRG, not
  676. INSTALL.TOS. This is so it may (optionally) auto-run Batcher after
  677. creating the batch file. Sorry for this typo.
  678.  
  679. The non-base relative maths libraries LCM?NB.LIB are not mentioned in
  680. the installation guide, they exist however on disk 5. Similarly the
  681. archived GST versions can be found on disk 7, LCMNBBIN.TOS.
  682.  
  683. On disk 6 the installation guide fails to mention the C.LNK file in the
  684. bin directory for use as a 'WITH' file for LinkST.
  685.  
  686.  
  687. Documentation
  688. =============
  689.  
  690. On page 18 of volume one there is a small problem with the options
  691. used, in particular the -w option should not be used. This is because
  692. there is insufficient disk space for the short integer libraries on the
  693. default work disks, note that this only applies to floppy based users,
  694. hard disk users may still attempt the use of this flag. On the
  695. following page the command line for 512K users has a small typo... the
  696. -ih option (present on all other 512K command lines) was omitted. Hence
  697. the full command line for 512K users should read:
  698.  
  699.     -ih -csf -v -Lag wtest
  700.  
  701. The documentation on csub (complex subtraction) was accidentally
  702. omitted. Please refer to cadd substituting the word subtraction for
  703. addition.
  704.  
  705. The -c options, page 54 Volume I, are in fact toggle options, i.e.
  706. specifying any such option twice will disable it.
  707.  
  708. -ca, enable ANSI mode, has the following effects, it disables register
  709. (-cr) and extra (-ck) keywords, also the warning messages 122 - "Missing
  710. ellipsis", 132 - "Extra tokens after valid preprocessor directive" and
  711. 135 - "Assignment to shorter data type (precision may be lost)" are
  712. enabled.
  713.  
  714. -cl is mis-documented, and is used to force long word alignment of
  715. externals.
  716.  
  717. -cr is mis-documented, it actually enables the register keywords __d0,
  718. used in conjuction with the __asm directive.
  719.  
  720. Page 321 of Volume II has the parameters to strstr transposed in the
  721. synopsis. The returns section should say that: "If s2 points to a string
  722. with zero length, the function returns s1."
  723.  
  724. Page 92 of Volume III incorrectly describes wind_calc as taking a handle.
  725. This parameter is not required.
  726.  
  727. Page 105 of Volume III describes the return values from the user function
  728. wrongly. The user function should return 1 for success, 0 for failure.
  729.  
  730. Page 213 of Volume III describes vsf_interior and vsf_style incorrectly,
  731. the first parameter is to vsf_style, the second to vsf_interior.
  732.  
  733. Page 265 of Volume III describes the info pointer of Dfree as being type
  734. void *, this should be type long *.
  735.  
  736. Page 289 of Volume III is inconsistent in the synopsis of Pexec, the cmd
  737. parameter should be tail.
  738.  
  739. Page 300 of Volume III omits the character 'c' in the synopsis of
  740. Bconout. The call is of the form "error=Bconout(dev,c)".
  741.  
  742. Pages 313-358 of Volume III, the XBIOS section, contains several
  743. references to vdi.h, these should, of course, be osbind.h.
  744.  
  745. Page 316 of Volume III has the enable/disable blinking flags of Cursconf
  746. transposed. 2 is used to enable blinking, 3 to disable it.
  747.  
  748. Page 326 of Volume III is describes Giaccess incorrectly, bit 7 should
  749. be *clear* to read and *set* to write, i.e. the opposite of that
  750. described.
  751.  
  752. Page 368 of Volume III describes linea4 incorrectly in the synopsis,
  753. with reference to Y2, this should of course be X2. The remainder of the
  754. description is correct.
  755.  
  756.  
  757. Libraries
  758. =========
  759.  
  760. The _tzset function uses the _country variable when an environment
  761. variable TZ cannot be found. All countries will have the correct number
  762. of hours difference from GMT although the country codes may not be
  763. correct as we were unable to find a reference for these.
  764.  
  765. The codes 13 and 14 for _country (Saudi Arabia and Holland) *may* have
  766. been transposed, although we are uncertain of this at the present time
  767. and are attempting to resolve the issue.
  768.  
  769. The variable 'long _MNEED' has been added and specifies the number of
  770. bytes placed in the initial heap. It does not (unlike version 3) set
  771. the maximum amount of RAM which may be used. We strongly recommend that
  772. you do not adjust its value.
  773.  
  774. When building Desk Accessories TOS does not support dynamic memory
  775. allocation. To circumvent this problem Lattice C 5 allows one (or more)
  776. static arrays to be linked into its heap. To do this the _addheap
  777. function is used; note that the length of the heap *must* be a longword
  778. multiple:
  779.  
  780.     long heap[BYTES/sizeof(long)];
  781.  
  782.     main()
  783.     {
  784.         _addheap(heap,sizeof(heap));
  785.         ...
  786.     }
  787.  
  788. Note that if you do not put any memory in the heap, any attempt to use
  789. malloc will fail, which may or may not be important to you. The DA
  790. example program chdiracc has no need of any malloc'd memory.
  791.  
  792. There are some special startup stubs only touched on in the manual
  793. which allow your program to detect how it is running. All you need to
  794. do is link with the C?AUT.O startup code and the GEM library (LCG*.LIB)
  795. so that the variable _XMODE will be magically set. The values used are:
  796.  
  797.     0    Standard GEM program
  798.     1    Standard TOS program
  799.     2    GEM DA
  800.     3    Auto folder TOS program
  801.  
  802. A simple example program testaut.c is provided in the examples
  803. directory.
  804.  
  805. Assembler
  806. =========
  807.  
  808. ASM, the assembler, has been extended to support standard Motorola
  809. style macros, although we recommend the use of the Lattice macro system
  810. as this style is more readable.
  811.  
  812. Note that ASM unlike DevpacST does not force word alignment of
  813. instructions, hence if you have a byte table you should always follow it
  814. with an even directive.
  815.  
  816. Batcher
  817. =======
  818.  
  819. Several new commands were added to Batcher primarily to assist the
  820. installation program, however these are also facilities which may be
  821. useful to you:
  822.  
  823. FORMAT command
  824. --------------
  825. This will format standard ST double-sided disks without any interleave.
  826. It should be followed by the drive to format e.g.
  827.  
  828.     FORMAT B:
  829.  
  830. will format the disk in drive B.
  831.  
  832. PAUSE command
  833. -------------
  834. PAUSE will wait for a single key to be pressed. This can be used in
  835. batch files so that the user can read the previous output or change
  836. disks.
  837.  
  838. ECHO command
  839. ------------
  840. If the parameter to ECHO is not ON or OFF (as described in the manual)
  841. then the text will be echoed to the screen. For example:
  842.  
  843.     ECHO This is a message
  844.  
  845. will display 'This is a message'.
  846.  
  847. VIRTUALDISK command
  848. -------------------
  849. This command is used by the installation program so that Batcher can
  850. perform 'virtual disking' itself rather than using the operating system
  851. routines, which do not work reliably. However, as all Batcher commands
  852. do not support this facility, we do not recommend that it is used
  853. interactively.
  854.  
  855. HiSoft, 30 October 1990
  856. The Old School
  857. Greenfield
  858. Bedford
  859. MK45 5DE
  860. ENGLAND.
  861.  
  862. Phone:    +44 525 718181
  863. Fax:    +44 525 713716
  864.