home *** CD-ROM | disk | FTP | other *** search
/ CP/M / CPM_CDROM.iso / simtel / sigm / vols000 / vol029 / catalog.049 < prev    next >
Encoding:
Text File  |  1984-04-29  |  26.8 KB  |  573 lines

  1. VOLUME 49
  2.  
  3. DESCRIPTION:    FORTRAN, RATIONAL FORTRAN PROGRAMS.
  4.         CDOS ROUTINES FOR CP/M.
  5.  
  6. NUMBER    SIZE    NAME        COMMENTS
  7.  
  8.         -CATALOG.049    CONTENTS OF CP/M VOL. 49
  9. 49.1    4K    4FDCBIOS.DOC    Files for running CP/M 2.0+
  10. 49.2    2K    4FDCBIOS.HEX
  11. 49.3    13K    4FDCBIOS.Z80      on CDOS systems using this
  12. 49.4    1K    4FDCBOOT.HEX
  13. 49.5    2K    4FDCBOOT.Z80      BIOS and BOOT.
  14. 49.6    11K    ABSTRACT.049    Abstracts of the files on this
  15.                 disk.
  16. 49.7    1K    ASMDEF.RAT    Used by LCAT, part of RATFOR.
  17. 49.8    6K    ASTRO.FOR    FORTRAN Astronomy program.
  18. 49.9    10K    CDOS.DOC    Comments on CDOS features.
  19. 49.10    2K    CDOSCOPY.COM    Full disk copy program
  20. 49.11    2K    CDOSCOPY.DOC      for CDOS systems,
  21. 49.12    4K    CDOSCOPY.HEX      single or double
  22. 49.13    26K    CDOSCOPY.PRN      density, and single
  23. 49.14    12K    CDOSCOPY.Z80      or double sided.
  24. 49.15    1K    CONSTS.RAT    Definitions of some frequently
  25.                 used constants (RATFOR).
  26. 49.16    1K    F77.DOC        FORTRAN 77 Documentation.
  27. 49.17    1K    F77DEF.RAT    FORTRAN 77 Functions.
  28. 49.18    2K    F77LIB.FOR    Definitions of some intrinsic
  29.                 FORTRAN 77 functions.
  30. 49.19    3K    FILTER.Z80    Source code for emulating CDOS
  31. 49.20    1K    FILTER.HEX      calls under standard CP/M.
  32. 49.21   6K    FILTER2.Z80    Modified version of FILTER
  33. 49.22    1K    FILTER2.HEX      (above)
  34. 49.23    2K    INDEX.Z80    RATFOR Subroutine.
  35. 49.24    1K    INDEXT.FOR    Test for INDEX.Z80.
  36. 49.25    1K    IOER.Z80    Used by LCAT (RATFOR).
  37. 49.26    1K    LCAT.DOC    Used to concatenate Microsoft
  38. 49.27    3K    LCAT.RAT      .REL files.
  39. 49.28    2K    MINV.DOC    Matrix Inversion Determinant
  40. 49.29    3K    MINV.FOR      Calculator, FORTRAN and
  41. 49.30    3K    MINV.RAT      RATFOR source code.
  42. 49.31    2K    RATCOMNS.RAT    Used by RATFOR.
  43. 49.32    3K    RATFOR.DOC    Documentation of RATFOR.
  44. 49.33    40K    RATFOR.FOR    FORTRAN source code for RATFOR.
  45. 49.34    25K    RATFOR.RAT    RATFOR source code for RATFOR.
  46. 49.35    17K    RATFOR.REL    Microsoft .REL file, does not
  47.                 include library routines.
  48. 49.36    1K    READLB.Z80    Subroutine for SCOPY (RATFOR).
  49. 49.37    1K    RFG.CMD        CDOS equivelent of a submit
  50.                 file. (^=$).
  51. 49.38    1K    SCOPY.DOC    Direct Disk I/O (RATFOR).
  52. 49.39    2K    SCOPY.FOR      FORTRAN source code.
  53. 49.40    1K    SORTI.DOC    Quicksort program (RATFOR).
  54. 49.41    2K    SORTI.FOR      FORTRAN Source code.
  55. 49.42    3K    SORTI.RAT      RATFOR Source code.
  56. 49.43    1K    TRNSLT.Z80    Used by RATFOR.
  57.  
  58. NOTE:  Most of the FORTRAN files on this disk will run on
  59. Z-80 processors only, some will run only with Cromemco CDOS.
  60. Check the abstracts and .DOC files for more details.
  61.  
  62.  
  63.     CBIOS for Cromemco 4FDC or CCS 2422 disk controller
  64.  
  65.     4FDCBIOS.Z80  and  4FDCBOOT.Z80 are the bootstrap and Cbios
  66. for running CP/M 2.x with a Cromemco 4FDC controller  board,  a
  67. Z80*  cpu,  and  minimum  20K  of  RAM.   CP/M  1.4  can also be
  68. supported if some of the 2.x-only code is removed. This code is
  69. also applicable to,  and tested upon,  the California Computer
  70. Systems disk controller board model 2422, if a serial port at 0
  71. compatible with CDOS is used (a 3P + S, or a Cromemco TUART, or
  72. the serial port on a Cromemco Single Card Computer.)
  73.  
  74.     This source is capable of supporting three types of  disks:
  75. 5  inch  (such  as  Wangco),  8  inch  (such  as  Shugart), and
  76. single-arm voice-coil 8 inch (such as Persci).  Between one and
  77. four  drives  are supportable, but no intermixing.  There is no
  78. current support for  double-sided  drives,  but  it  should  be
  79. easily addable.
  80.  
  81.     There is no support for the double density mode in the Cro-
  82. memco 16FDC, or the CCS 2422. This bios is limited to 128 byte
  83. sectors.
  84.  
  85.     The  8  inch  format  is  compatable with all CP/M and CDOS
  86. versions currently known.  The 5 inch format  (skew  of  5)  is
  87. compatable with all 5 inch CDOS formats currently used.
  88.  
  89.     It  is  assumed  that  the  main  console, at port zero, is
  90. already initialized by RDOS or some other program.  If not, you
  91. can insert the necessary code into 4FDCBOOT.Z80.
  92.  
  93.     As additional features, the routine  contains  an  optional
  94. reader-punch  and  printer  support  routine, via TUART and PRI
  95. boards, and a standard  missing  memory  check.   The  external
  96. interrupt  of the TMS 5501 is enabled on the 4FDC, which causes
  97. a 0FF interrupt, which is the same as a missing  memory  board.
  98. I  like  to use this to break out of loops without losing CP/M.
  99. If this is not desired, it is easily removed from the code.
  100.     Also, in a commented section is a small modification so the
  101. DEL key (07FH) is changed to a Control-U by the  CBIOS,  for
  102. those who have Backspace on the terminal.  I do not like to use
  103. two  hands  just to be able to erase a mistake.
  104.     The source is for Cromemco Z80  assembler,  and  there  are
  105. five  constants  in  the  front to be changed to select various
  106. options.
  107.  
  108.     First, select the type of drive: If  5  inch,  LARGESW  and
  109. PERSCISW  should be 0.  If 8 inch Shugart, LARGESW should be 1,
  110. PERSCISW 0.  If Persci, PERSCISW should be 1.   LARGESW  should
  111. also be altered in 4FDCBOOT.Z80.
  112.  
  113.     Next, NUMDRIVES should be 1 to 4 for 5" and 8" drives, and
  114. 2 or 4 for Persci double-disk drives.
  115.  
  116.     Then, to have support for printer and TUART, BIGIOSW should
  117. be  1,  otherwise 0.  You might also wish to change BAUDRATE to
  118. the desired value for the reader-punch (110 baud is supplied).
  119. Note: if the CCS 2422 is used, it may be necessary to supply an
  120. initialization and bootstrap routine for the console port, if
  121. that is on a TUART addressed at zero. The current code does not
  122. initialize the port at zero, assuming that has been done before
  123. the disk was booted. The code for the TUART referred to here is
  124. for an additional TUART port, not the console port, but it is
  125. easy to add the necessary code to initialize the console port
  126. also.
  127.  
  128.     Finally, set BEGINADR to the start of  the  CBIOS.   It  is
  129. supplied as 0E400, which is for a 64K system.  This should also
  130. be altered in 4FDCBOOT.Z80.
  131.  
  132.     The  switches  on  the 4FDC are set exactly as described in
  133. the board manual.  For a system  over  48K,  the  ROM  must  be
  134. disabled  upon  bootstrapping.   For a smaller system, the RDOS
  135. can stay in, or not, as you desire.  For a CCS 2422 controller,
  136. the same statement applies, except the 2422 ROM need not be dis-
  137. abled unless the system memory exceeds 60K.
  138.  
  139.     4FDCBOOT.HEX and 4FDCBIOS.HEX are supplied, assembled from 
  140. the source files. They are set for a 64K version of CP/M. You
  141. can use them in another system if you can put about 8K at the
  142. upper end of memory (E000) and maybe 16K at the low end (0000)
  143. to be able to re-assemble the files.
  144.  
  145.  
  146.           GENERAL NOTES ON CDOS' UNDOCUMENTED FEATURES
  147.  
  148. When  CDOSGEN asks you whether the drive is large [L] or  small 
  149. [S] try answering 'X'.  You will then get a menu for  Shugarts, 
  150. etc.
  151.  
  152. You  can  use  the  'SYS.DIR'  FCB  create call of CDOS 1.07 or
  153. higher to access  the  directory  regardless  of  its  size  or
  154. position  on the disk.  Although the FCB created with this call
  155. is write protected, you can reset that  attribute  bit and  can
  156. then write to the directory as well as read it.
  157.  
  158. Disk Labels.
  159. A directory label is written to the disk by STAT and is used to 
  160. ascertain  the  storage capacity of the disk and the number  of 
  161. directory entries (64 to 512).
  162. The last 8 bytes of the first boot loader sector (usually  side 
  163. 0  track 0 sector 1) are always recorded in single density  and 
  164. contain eight bytes indicating the type of disk to the BIOS, eg
  165.      LGSSSD
  166. for Large (8"), Single Sided, Single Density
  167. or   LGDSDD
  168. for 8" Double Sided, Double Density diskettes (1.2 MBytes)
  169.  
  170. STAT  2.15  was written for a WD1797 FDC chip (it  records  the 
  171. side  numbers  into the address fields) although a  WD1793  was 
  172. eventually used.  CDOS 2.36 does not support the 1797, however, 
  173. and this chip will not work instead of the 1793 on the 16FDC.
  174.  
  175. Double Density Recording Format:
  176. 16 sectors of 512 bytes are used per track.(MFM)
  177. A 12 interleave is used (1,C,7,2,D,8,3,E,9,4,F,A,5,10,B,6)
  178. Although  a 4 interleave can be read as COM files in my 4MHz no 
  179. wait state system a 6 interleave speeds throughput by a  factor 
  180. of  two.  (use 1,2,3,4,5,6,C,D,E,F,10,7,8,9,A,B).  INIT can  be 
  181. modified  to  do  this..  if  interested write me  and  I  will 
  182. disclose all....
  183.  
  184. Finally,  if  someone has deciphered how to call the 2.36  BIOS 
  185. directly without getting error returns I am all ears...
  186.  
  187. Trevor Marshall,
  188. 26 Mirrelia Way, Ferndale, Western Australia 6155
  189. phone International (619)4576049   or national (09)457 6059
  190. 14 December 1980
  191.  
  192. Notes added by:    Chuck Weingart        February 1, 1981
  193.         2152 W. Iowa
  194.         Chicago, Ill 60622
  195.  
  196. On the "X" feature of CDOSGEN, described above, you must respond
  197. to  several  questions,  such  as  "Fast  or  Slow",  "Single or
  198. Double".  All Shugart type drives are "slow".   "Double"  drives
  199. are  those like the Persci, that have one seek mechanism for two
  200. different disks, or when you are  using  a  Shugart  851  double
  201. sided  drive as two "drives" (one "drive" on each side, requires
  202. rewiring the cable).
  203.  
  204. In CDOSGEN 2.36, when you respond "S" to  the  drive  type,  you
  205. again  get  a "Fast or Slow?"  question.  MPI drives are "fast",
  206. and Shugart 400 and Wangco drives are "slow" in my experience.
  207.  
  208. It is easy to attach one of the new Shugart  801/851  drives  to
  209. the 4FDC, just use the "TS" data separator (install the jumper).
  210. If  you  are  trying  to use an old 800-1 or 801 drive, the data
  211. separator adjustments probably have to be changed to  work  with
  212. the 4FDC.
  213.  
  214. To attach the MPI model 52 double-sided 5" drive to a 4FDC, just
  215. add  a jumper on the 4FDC from J4 pin 21 to J2 pin 32, if one is
  216. not already there.  Then gen a 5"  double-sided  drive  at  that
  217. position  with 2.17 or greater, initialize some disks with INIT,
  218. and write a double-sided label with STAT, and you are  ready  to
  219. go. I converted to double-sided in one hour, and it's great!
  220.  
  221. To  attach  a  Shugart 851 to the 4FDC, install the TS jumper as
  222. noted above.  Disconnect the wires 2, 12, 18, and  32  from  the
  223. cable (at the drive end is easiest).  Connect the Shugart pin 12
  224. to  the 4FDC pin 2 (for side select), Shugart pin 30 to 4FDC pin
  225. 4 (for Drive select 3), and Shugart pin 32 to 4FDC pin  18  (for
  226. Drive select 4).  Connect a jumper from J4 pin 21 to J3 pin 2 if
  227. one  is  not  already  there.   Use  the "X" feature and 2.17 or
  228. greater, initialize disks with INIT, and label  the  disks  with
  229. STAT for double-sided operation.
  230.  
  231. CDOS  1.07  can  be  used  unchanged  on the California Computer
  232. Systems 2422 disk controller if there is a  Cromemco  compatible
  233. console  port  at  0,  such  as a 3P + S, Cromemco TUART, or the
  234. console on the Cromemco SCC.  The latter will have to  have  two
  235. modifications  made:  the  prom (U25) must be altered to put the
  236. parallel port at address 04 somewhere else  (such  as  0E),  and
  237. there  must  be  a 220 ohm resistor in series with U52 pin 6 (to
  238. delay PWR) and a 400pf capacitor from U52 pin 6 to  ground  (pin
  239. 8).
  240.  
  241. CDOS 2.17 can be used on  the  CCS  2422  controller  in  single
  242. density  if  one  uses  the  1.07  bootstrap  loader.   The 2.17
  243. bootstrap will not work without a hardware change  on  the  2422
  244. board,  and  it is somewhat lengthy.  There will be a persistent
  245. problem of read errors on track 2 sector 1, but this is  due  to
  246. the  WD1793 chip.  Just Retry the operation and it will clear up
  247. every time.
  248.  
  249. CDOS 2.17 has a command, VERIFY, with  one  of  three  operands.
  250. VERIFY ON will enable read-after-write verification on the disk.
  251. VERIFY  OFF will disable that, and just VERIFY will indicate the
  252. status of the feature.  VERIFY is not present in CDOS 2.36.
  253.  
  254. CDOS 2.17 and up has  several  undocumented  commands:  REM  and
  255. ATTR.   ATTR  is  the  same  as  ATRIB, and REM is for inserting
  256. remarks into your batch file, because the REM line is ignored.
  257.  
  258. Although  it  isnt  currently  stated  in  any   Cromemco   doc-
  259. umentation  that  I have seen (and I have written Cromemco twice
  260. about it with no answer),  all  versions  of  Cromemco  software
  261. shipped  since  about  February 1980 come with the system genned
  262. for 64K.  If you have a copy of CDOS 1.07, you can run the  2.17
  263. or  2.36  versions  of CDOSGEN under 1.07 in order to generate a
  264. smaller system.  The new versions of CDOSGEN will not run  in  a
  265. 32K system, tho, they are quite a bit bigger.
  266.  
  267. For users of non-Cromemco memory boards that want to get a "full
  268. house"  (64K),  here is how to add a Phantom signal to the 4FDC.
  269. Add a jumper from IC46(74367) pin 15 to IC31(2708) pin 20.   Add
  270. a  jumper from IC46 pin 12 to pin 8 (ground).  Add a jumper from
  271. IC46 pin 11 to S100 pin 67 (Phantom output).  The  memory  board
  272. addressed  at  C000H  must  respond  to  the  Phantom signal, of
  273. course.  The RES switch (SW2) must be set on.  This way, you can
  274. use the 4FDC RDOS program until CDOS is booted, then  the  EPROM
  275. will  be turned off and the memory board "behind" it can then be
  276. used.  This method must be used even in  many  boards  that  are
  277. advertised  as  "Cromemco banking compatible" because the boards
  278. do not have the feature of being bank-disabled upon power-up.
  279.  
  280. CDOS 2.17 now takes about 11K minimum for itself.  CDOS 2.36 now
  281. takes 14K minimum.
  282.  
  283. STAT for 2.36 has several undocumented switches: /M, /N, /E, and
  284. /EZ.   STAT/M  allows  you to change the "master" drive (the one
  285. that CDOS looks at if it cant find  a  program  on  the  current
  286. drive).   STAT/N  gives  a  5-up directory display.  STAT/E is a
  287. directory erase, with prompting.  STAT/EZ erases, and no prompts
  288. as I recall.
  289.  
  290. Jordan Siedband tells me that 2.36  will  not  read  CP/M  disks
  291. correctly,  cause  unknown.   Keep  a copy of 2.17 around if you
  292. want to continue to use CPMUG stuff.  There is one thing that is
  293. obvious to anyone who has looked: CP/M and CDOS directories  are
  294. compatable  only in  "1.4 mode", that is, no system flags of any
  295. kind set in the directories,  either  CP/M  2.2  flags  or  CDOS
  296. flags. When they  are  not  compatable, the one operating system
  297. will usually clobber directory entries in the  other  format  or
  298. refuse to work.
  299.  
  300. CDOS 1.07 and up have an  undocumented  error  message:  LOGICAL
  301. DISK ERROR n.  This message is produced if you do something like
  302. request  a  track that does not exist, or a sector that does not
  303. exist, or try an operation that is impossible for the  drive  to
  304. perform.   You will generally get these messages only if you are
  305. trying to do disk I/O thru the "BIOS" directly.
  306.  
  307. There is a small bug in the Divide Integers CDOS call  (8AH)  in
  308. 2.17  -  the BC register will be altered.  No problem in 1.07 or
  309. 2.36 as far as I can tell.
  310.  
  311. All  versions  of  CDOS have the CP/M "BIOS" jump table in them,
  312. but none of them use it.  That is, you can jump to  the  entries
  313. in this table, but cannot modify the jump addresses in the table
  314. and  expect it to work.  The first entry in the table, the "cold
  315. start" jump, is a jump to itself, because CDOS never  uses  this
  316. entry,  and  the  user  is not supposed to use it, either.  This
  317. makes routines like FAST rather difficult  to  use  under  CDOS.
  318. Some CPMUG programs set themselves below the operating system by
  319. changing the address at location 6, but that will not work under
  320. CDOS.   You  can use the CDOS call 97H to do the same thing, see
  321. the manual for details.
  322.  
  323. All  versions of CDOS I have used  try  to initialize all  TUART
  324. ports in the system.  That is, they will output to ports 12, 13,
  325. 22,  23,  52,  53,  62, ...  F2, and F3.  If you have some other
  326. hardware at those addresses, good luck.  CDOS will also zero out
  327. the Dazzler port at 0E every time it starts disk I/O.
  328.  
  329. CDOS 2.17 and up will disable all interrupts when doing disk I/O
  330. and never  re-enable.   This  means  you  can't  use  the  timer
  331. interrupts available in the TMS5501.
  332.  
  333. If anyone figures out what attributes S and U are, I would like
  334. to know.  They can be set, reset, and listed,  but dont seem to
  335. make any difference to the operating system. Could they be used
  336. for Hard disk files?
  337.  
  338.     SCOPY enables you to search a strange disk on drive B
  339. for ASCII files which may not be recoverable via a directory,
  340. and copy them to an MCOS file on drive A.  This should permit
  341. recovery of files which have been erased, and is also intended
  342. for recovery of files from ISIS or GE disks.
  343.  
  344. ABSTRACTS FOR CP/M USERS' GROUP VOLUME 49
  345. -----------------------------------------
  346.  
  347. This volume consists mostly of Rational Fortran (RATFOR) files.
  348. A letter and abstract by the author are presented here, as
  349. well as several abstracts on various files by Chuck Weingart
  350. of the Chicago Area Computer Hobbyist Exchange.  Please note
  351. that some of the files on this disk rely on Cromemco CDOS
  352. calls and are not compatible with "standard" CP/M systems.
  353. Almost ALL FORTRAN and RATFOR files require a Z-80 processor.
  354. See the abstracts by Chuck which point these out.
  355. 01/28/81        Jim Mills, CACHE SIG CP/M Chairman
  356.  
  357. ------------------------------------------------------------
  358.  
  359. 1 E. Lakeview Dr. #17
  360. Cincinnati, OH 45237.
  361. Oct 1, 1979
  362.  
  363. CP/M Users Group
  364. --etc--
  365.     I have enclosed a disk which has RATFOR.RAT adapted for
  366. Fortran-80.  This gives essentially identical results to your
  367. volume 24 RATFOR.COM but is somewhat faster and gives people
  368. the chance to play with it.  Also the foreign .COM file
  369. is hard to work with.  I had to write a special program
  370. to copy it correctly on my system.  The disk also has some
  371. useful sample programs.
  372.                 Tim Prince
  373. ------------------------------------------------------------
  374.  
  375.      This disk contains mainly utility programs associated with
  376. the Ratfor preprocessor and helps to bring some of the FORTRAN
  377. 77 functions into FORTRAN-80.  The Ratfor follows the Addison-
  378. Wesley code closely but uses BYTE variables as appropriate.
  379. Transliteration, which is done inefficiently in the A-W ver-
  380. sion, is omitted.  The matrix inversion-determinant calculator
  381. MINV and the address quicksort SORTI are given as examples of
  382. the use of Ratfor.
  383.      The INDEX subroutine is given both in FORTRAN (in F77LIB)
  384. and Z80 versions.  As FORTRAN-80 does not permit the usage of
  385. this function to be as in FORTRAN 77, the calling sequence is
  386. somewhat arbitrary.
  387.      LCAT, for concatenating .REL files, calls assembler
  388. library functions which may not be available on some systems.
  389. However, the .COM file may work anyway.  SCOPY calls the
  390. READLB subroutine which will have to be rewritten for systems
  391. which do not support the same extended CP/M calls.
  392.                     Tim Prince
  393.  
  394. ------------------------------------------------------------
  395.  
  396.         REVIEWS BY CHUCK WEINGART
  397.  
  398. RATFOR is a preprocessor for FORTRAN source programs which
  399. facilitates control constructs and text insertions, described
  400. in "Software Tools" by Kernighan and Plauger (Addison-Wesley).
  401. RATFOR source code is free form, with statements separated by ;
  402. or [CR]. Ratfor statements include extensions to Fortran such
  403. as IF ELSE, WHILE, REPEAT UNTIL, FOR, BREAK, NEXT, and INCLUDE.
  404. An earlier version of RATFOR.COM is in CPMUG V.24. This new
  405. version runs only on a Z80, is faster, has documentation
  406. (RATFOR.DOC), source (RATFOR.RAT, RATFOR.FOR), and uses
  407. RATCOMNS.RAT and TRNSLT.Z80. The resulting Fortran program is
  408. then compiled with Microsoft FORTRAN-80 or Cromemco Fortran,
  409. V3.21. This should run on any version of CP/M that supports the
  410. Fortran and has a Z80. (reviewed by Chuck Weingart)
  411.  
  412. F77LIB.FOR is a file containing definitions of most of the new
  413. intrinsic functions in FORTRAN 77.  These functions can be
  414. employed by searching the file F77LIB.REL which will be created
  415. by compiling F77LIB.FOR There is also an INCLUDE file
  416. CONSTS.RAT which automatically defines some frequently used
  417. constants. INDEX.Z80 is a subroutine given both in FORTRAN (in
  418. F77LIB) and Z80 versions.  They are  written in Cromemco
  419. Z80 Fortran and assembler language, but should be acceptable to
  420. Microsoft versions. INDEXT.FOR is a test for INDEX. There is
  421. some Fortran-77 documentation in F77.DOC and F77DEF.DOC.
  422. (reviewed by Chuck Weingart)
  423.  
  424. LCAT.RAT are for concatenating Microsoft .REL files,  described
  425. in LCAT.DOC. It calls CDOS Z80 assembler library functions
  426. which are not be available on CP/M systems. This is written for
  427. RATFOR, and uses ASMDEF.RAT and IOER.Z80, written in Cromemco
  428. Z80 assembler, Microsoft will also work. There are two possible
  429. problems with this routine, both related to the end-of-file.
  430. First, some versions of Microsoft Fortran did not put an eof
  431. (1A hex) at the end of the REL library.  Second, this program
  432. stops if it hits 9E1A Hex, and there is a small chance of that
  433. ocurring in the middle of a file, so don't destroy your old
  434. library before checking the output of LCAT. (reviewed by Chuck
  435. Weingart)
  436.  
  437. MINV.RAT and MINV.FOR contain a subroutine which inverts a
  438. matrix and calculates the determinant. It does not have any
  439. protection against the case where the equations are of wildly
  440. different orders of magnitude. There is a test case included in
  441. the file. These are included as tests for RATFOR, and the
  442. Fortran version will run on Microsoft or Cromemco Fortran,
  443. V3.21, any supported size and version of CP/M or CDOS,
  444. respectively. The DOC file includes some, but not all, info
  445. needed to use. Look at the test file included for more.
  446. (reviewed by Chuck Weingart)
  447.  
  448. SORTI.RAT, SORTI.FOR are an address quicksort with a test
  449. driver program. Unfortunately, although the FORTRAN appears
  450. essentially identical to a successful program developed on a
  451. large system, the Microsoft version doesn't work yet. They are
  452. given as examples of the use of RATFOR. The SORTI.DOC file has
  453. some information describing the use of this routine. The FOR
  454. file will compile on Microsoft or Cromemco Fortran, V3.21, with
  455. any supported CP/M or CDOS, respectively. (reviewed by Chuck
  456. Weingart)
  457.  
  458. SCOPY.FOR does direct disk I/O, either disk to disk or disk to
  459. console, described scantily in SCOPY.DOC. The FOR file should
  460. be useable by any Microsoft or Cromemco Fortran, V3.21. It
  461. calls the READLB.Z80 subroutine which will have to be rewritten
  462. for systems which do not support the same CDOS calls. READLB is
  463. written in Z80 assembler, Microsoft is acceptable. (reviewed by
  464. Chuck Weingart)
  465.  
  466. ------------------------------------------------------------
  467.  
  468.         NON-RATFOR PROGRAM REVIEWS
  469.  
  470. FILTER.ASM
  471. FILTER.HEX
  472. FILTER2.ASM
  473. FILTER2.HEX
  474. FILTER.ASM is source taken from an article by J. Warner in the
  475. January, 1980 issue of Dr. Dobbs. It implements two essential
  476. CDOS calls, 80H and 86H, to allow some Cromemco software to run
  477. under CP/M*. This is commented Zilog Z80* source, and can be
  478. assembled by Microsoft or CDOS* assemblers. The chicken-egg
  479. problem is avoided by supplying the FILTER.HEX file to bring up
  480. the CDOS assembler. As supplied, Cromemco Fortran IV and COBOL
  481. will not work with it, more functions must be added. This
  482. routine is installed by making it part of the memory image of a
  483. program: using DDT, load FILTER.HEX, then load the Cromemco
  484. program starting at 200H, and then save the combined programs.
  485. When it gets control it boosts the function code filter into
  486. place at the top of the TPA and then moves the original program
  487. down to 100H and jumps to it.  (reviewed by Chuck Weingart)
  488.  
  489. FILTER2.ASM is the source for a modified version of FILTER.ASM,
  490. primarily minor improvements and one bug fix. More comments 
  491. are also included from the original article in DDJ. The same
  492. installation procedures and comments as FILTER apply to FILTER2,
  493. including FILTER2.HEX. (FILTER2 is from the reviewer, Chuck
  494. Weingart.)
  495.  
  496. Warning: CP/M and Cromemco CDOS directories are partially in-
  497. compatable. The first byte of each FCB must be made zero (1.4
  498. mode). These routines do not allow most Cromemco software to
  499. run on non-Cromemco equipment. They are supplied here to let
  500. the Cromemco owner run his/her legitimately obtained programs
  501. under CP/M on Cromemco hardware. It does not appear that any
  502. any software supplied with versions of CDOS after 2.17 are
  503. compatible with CP/M (2.2) with FILTER.
  504.  
  505. 4FDCBIOS.DOC
  506. 4FDCBIOS.Z80
  507. 4FDCBIOS.HEX
  508. 4FDCBOOT.Z80
  509. 4FDCBOOT.HEX
  510. 4FDCBIOS.Z80 and 4FDCBOOT.Z80 are the cbios and boot programs
  511. for running CP/M 2.x on a Cromemco 4FDC disk controller board,
  512. or a California Computer Systems 2422 disk controller, with a
  513. 3P + S or Cromemco TUART or similar console port at address 0.
  514. Assembly options include memory size, one to four drives, supp-
  515. ort for 5", 8" Shugart, and 8" Persci drives. Drivers for the
  516. Cromemco TUART for paper tape and Cromemco printer board are
  517. optionally included. The source is moderately commented, not
  518. structured, in Cromemco Z80 assembler; Microsoft can also be
  519. used. The source is supplied for two 8" Shugart drives and 64K,
  520. and 4FDCBIOS.HEX and 4FDCBOOT.HEX are the assembled output
  521. files. Since the 4FDC is designed for the Z80*, conversion to
  522. 8080 would be difficult. 4FDCBIOS.DOC contains detailed doc-
  523. umentation. (abstract by Chuck Weingart)
  524.  
  525. CDOS.DOC
  526. This is an accumulation of comments by Trevor Marshall and this
  527. reviewer for users of Cromemco hardware and software. Nothing
  528. can be guaranteed, but everything is true as far as can be
  529. checked. (No attempt is made to help those who want to run the
  530. cheap Cromemco programs on CP/M without buying any Cromemco
  531. hardware). Must reading for CDOS users who participate in
  532. CPMUG. (reviewed by Chuck Weingart)
  533.  
  534. CDOSCOPY.COM
  535. CDOSCOPY.DOC
  536. CDOSCOPY.HEX
  537. CDOSCOPY.PRN
  538. CDOSCOPY.Z80
  539. CDOSCOPY is the COPY program, CPMUG 1.3, converted to Z80 and
  540. extensively rewritten by Trevor Marshall to work on the Cromemco
  541. CDOS operating system. The program supports 8" disks, single or
  542. double sided, single or double density. It is possible to con-
  543. vert the program for 5" disks, see the DOC file for details.
  544. As supplied, would require a 48K system to copy double-density
  545. disks, but I have not personally been able to verify operation
  546. that way. The program runs correctly, but unfortunatly slower
  547. than the COPY program because of CDOS internal operations. A
  548. single-sided, single density disk copies in around 5 minutes.
  549. Supplied are the source file (.Z80), the output (.HEX), the
  550. print file (.PRN), and the executable program (.COM). This pro-
  551. gram runs only on a CDOS system, with all Cromemco hardware as
  552. required by that operating system, and assembles only with the
  553. Cromemco Z80 assembler. (reviewed by Chuck Weingart)
  554.  
  555. ASTRO.FOR is a series of Fortran routines to do astronomical 
  556. calculations. (Borrowed from an old SMITHSONIAN ASTROPHYSICAL
  557. OBSERVATORY computing note.) Of only specialized interest but
  558. for the DECML, IDECML, and KDECML; These are routines for free
  559. format reading from Fortran. They are used by reading the
  560. characters into a LOGICAL*1 array of dimension of say 80, using
  561. a format of say 80A1. Successive calls to DECML as a function
  562. then give the real numbers on that line. The variable N is a
  563. pointer, the current column of the input buffer. Can be com-
  564. piled by CDOS or Microsoft Fortran IV, tho their usefulness can
  565. only be judged by an astronomer. (Reviewed bu Chuck Weingart)
  566.  
  567. * Please note that Z80 is a trademark of Zilog, Inc. CP/M is
  568. a trademark of Digital Research, and CDOS is a trademark of 
  569. Cromemco, Inc. Use of the term Z80 in this application is in
  570. no way meant to imply that this program was written by Zilog,
  571. (or Digital Research, or Cromemco).
  572.  
  573.