home *** CD-ROM | disk | FTP | other *** search
/ ftp.barnyard.co.uk / 2015.02.ftp.barnyard.co.uk.tar / ftp.barnyard.co.uk / cpm / walnut-creek-CDROM / ENTERPRS / C128 / TEXT / SC-CORR.ASC < prev    next >
Text File  |  2000-06-30  |  14KB  |  291 lines

  1. Material on "Super C" from a letter to Bill Robinson, Bandon, OR. I don't have 
  2. a record of the date of the letter,but it was probably about 2 years ago at 
  3. least. I have not gone much further than this with "C", and have forgotten 
  4. most of this. So please don't ask me for advice or help with C. 
  5.            Jean Nance 1576B County Rd. 2350 E, St.Joseph, IL 61873
  6.  
  7.  
  8. Dear Sirs: 
  9.  
  10. I own a copy of your "Super C" package. I have been working on it over the 
  11. last several weeks. So far, I have found the following errors, or very 
  12. confusing sections in the manual: 
  13.  
  14. Pages 8 and 9, and part of page 10, discuss "device". It is only half way down 
  15. page 10, and after considerable frustration, that you learn that "device" will 
  16. not work if you have more than one disk drive! 
  17.  
  18. At the bottom of page 13 "stdio.p"is referred to. This is an error, it is 
  19. "std.p". Also, you state that "std.p" contains the list of files on page 12. 
  20. It doesn't contain "ctype.h", or "libcs.l". 
  21.  
  22. On page 20 there is a reference to a file "exp-text.c". The correct name is 
  23. "text.c". 
  24.  
  25. At the bottom of page 28, you are told the sample program has a line "#include 
  26. "stdio.h". The actual line is "#include "stdio.c". Therefore, you need to make 
  27. two changes in that line, not one to get the proper form "#include 
  28. "h:stdio.h"". 
  29.  
  30. On page 31, it is stated that the compiler prints the source files it is 
  31. processing in grey type. These are actually in cyan. 
  32.  
  33. Near the middle of page 33, you have the following. "If both link files. o.o 
  34. and libc.l are now on the work diskette or the Ram disk, load the loader---". 
  35. Obviously, "linker" is meant here. 
  36.  
  37. These are the more obvious errors in the first 47 pages, which is as far as I 
  38. have gone at present. You may think these are all minor errors, but when a 
  39. person is working hard to understand an entirely new concept, such errors can 
  40. confuse and frustrate. 
  41.  
  42. The format of the manual, such that directions for version 2 and for version 3 
  43. are interlaced is very confusing. You could have used different type, or some 
  44. other method of indicating which version is being dealt with at any one time. 
  45. Better yet would have been two manuals, each of them could have been much 
  46. shorter. I have gone through and highlighted version 3 material for myself. It 
  47. takes very careful reading to be sure which directions are for version 2, 
  48. which for version 3, and which cover both versions. The index is very scanty, 
  49. which makes it impossible to look most topics up except by leafing through the 
  50. book. 
  51.  
  52. The program on page 39 works. But, the first line of text after you run the 
  53. program overlays the command to load the program, so if the program has been 
  54. named "objects",  you get something like this: "h:obe=2.7182818". This is 
  55. messy! A "backslash n" before the first printf line would have prevented this. 
  56. Most of the programs are equally messy, they need carriage returns inserted 
  57. and other changes to make them run nicely. 
  58.  
  59. At the bottom of page 40, format instructions are explained, but the reader 
  60. must search the book to find that all format instructions are listed on page 
  61. 181. If format commands can't be listed here, certainly the reader can be told 
  62. where they are listed. 
  63.  
  64. Early in the manual, the reader is required to type in programs. But nowhere 
  65. are there any directions as to how to type in the backslash, curly brackets, 
  66. and other special C characters. I finally found these in the appendix on page 
  67. 256. They are not listed, but buried in a rather confusing diagram of the 
  68. keyboard. And, the diagram is wrong, in that the two sets of graphics obtained 
  69. with the shift or Commodore logo key and the key, are not correctly 
  70. diagrammed. Look at the Commodore keyboard and compare with that diagram. 
  71.  
  72. On page 42 there is a program that just does not work. You get a blank screen 
  73. and the program hangs up. Luckily for me, I have a copy of Kerningham and 
  74. Ritchie, and am also working through their beginner programs, from which the 
  75. programs in your manual seem to have been borrowed. In the program on page 42, 
  76. it is necessary to put brackets () around "celsius +32.0". Then the program 
  77. will work! 
  78.  
  79. On the bottom of page 46 there is an explanation of why it is necessary to use 
  80. (c-'0') in the line shown. I puzzled over it for a long time, and it didn't 
  81. seem to make much sense. Again, good old K.and R. to the rescue. They have an 
  82. excellent explanation of this. 
  83.  
  84. Along about now, I decided to just explore the book. I saw a reference to the 
  85. graphics demo program (cdemo) on page 203. Since I am using version 3, I was 
  86. instructed to follow the directions, and compile the code which is on the 
  87. system disk. How do you do it? Well, you first erase your Ram disk. Then, you 
  88. load the demo code, and proceed to compile and link it. This gives you an 
  89. error message in the compiler. Finally I took a look at the demo code with the 
  90. editor. It includes two files from the RAM disk!. These, of course, aren't on 
  91. the Ram disk because the contents of the Ram disk have been erased. 
  92.  
  93. First I tried erasing everything from the RAM disk except the two files that 
  94. are needed by the demo. However, there isn't enough room on the RAM disk to 
  95. save the program if these are on the RAM disk. So, I changed the program to 
  96. get the files from disk a instead of h, and saved the new version to disk b. 
  97. Then I went through the procedure again, using the new version as my source. 
  98. Everything went fine, it compiled, it linked, there was room enough for the 
  99. final program on the RAM disk. There was only one little problem. The damned 
  100. program doesn't work! 
  101.  
  102. (Note to Bill. The reason it didn't work, which I discovered for myself, is: 
  103. Commodore C graphics are 40 columns. I was trying to run it in 80 columns. It 
  104. does work in 40 columns. However, not easily. The procedure, arrived at by 
  105. trial, error and many curses, is as follows: Set your computer for 40 columns. 
  106. Load "cdemo" which is on work disk 1 and on work disk 2. Nothing happens! Do 
  107. not touch any keys, let it sit for at least 2 or 3 minutes. I presume it is 
  108. doing something important during this period and I don't know how long it 
  109. takes. Then hit the up arrow. Then hit return. The program will run. It will 
  110. run forever,and the only way to turn it off is to hit the reset button. By the 
  111. way, it appears that if you start hitting keys, especially the up arrow/return 
  112. combination too soon, you load only part of the program. It will run for a 
  113. while, but won't run to completion. Mysterious!) 
  114.  
  115. Returning you to my letter to Abacus:
  116.  
  117. Having invested $37.95 in this, and a lot of work, I am not about to throw it 
  118. out, but boy, am I tempted! I can only assume that the rest of the book is 
  119. just as full of errors and ambiguities as the section I have already covered. 
  120. This is a no way to learn a language. 
  121.  
  122. One last question. In version 2, it is apparently possible to make a compiled 
  123. form of a program that will run directly from Basic. This is apparently 
  124. impossible with version 3. Does this mean that a C program compiled with 
  125. version 2 in the proper form can be loaded directly from Basic by someone who 
  126. does not have the C system disk? Would this mean that you could show a friend 
  127. who doesn't have C a program you have written in C? Or just that the part of 
  128. the C system needed to run a program is loaded, then the program itself is 
  129. loaded, and the program runs. If a compiled C program is actually in machine 
  130. language, isn't it possible to load it somehow from Basic? In either version 2 
  131. or version 3? 
  132.  
  133. (Note- Apparently, the answer is that C version 2 can be compiled to run from 
  134. Basic. Version 3 cannot. They sent a sheet with directions for making a disk 
  135. that will boot from the 128. It loads the central processing program, so you 
  136. end up with a disk that a person with a 128 can use to run C programs. (C test 
  137. disk). They don't make it clear whether this would be copyright infringement 
  138. or not. I assume not, since you don't have the editor, compiler, or linker 
  139. just the processor.  A version of the material is on pages 115 and 116, 
  140. (sysgen) and you may be able to get the information from that. I think what 
  141. they sent me is clearer, let me know if you don't have luck with 115-116 and I 
  142. can get it photocopied.) 
  143.  
  144. (Continuing letter)
  145.  
  146. I am rather shocked to find a product put out by Abacus that has so many 
  147. serious and frustrating errors. I will keep going at this, but I resent the 
  148. time I have to spend discovering errors and compensationg for them. This 
  149. package  has been on the market for several years. In that time, did you ever 
  150. feel the responsibility to either put out an "errata" sheet, or better yet, to 
  151. reprint the whole thing? 
  152.                                     Your sincerely, 
  153.  
  154. To Bill: Their reply was very apologetic. They enclosed a disk of utilities. I 
  155. am sending you a copy, since you too will have to struggle with the manual. 
  156. Their explanation was that the manual was written in German and translated 
  157. into English. (The person who did the translating, I assume, knew German, and 
  158. English, but very little about C.) Apparently, only recently have they 
  159. obtained permission to create a new version of the manual, and they are 
  160. working on it. I also enclose a copy of the "test disk" referred to above, a 
  161. copy of my work disk 1 and a copy of my work disk 2. I can't make most of the 
  162. programs on the utility disk work, but admit I haven't spent much time at it. 
  163.  
  164. The programs on the work disk are mostly in two forms, source code, and a 
  165. program that can be run from C. For example, "countword.s" would be source 
  166. code. Load it into the editor, and see what it looks like. "Countword" would 
  167. be the result of compiling and linking "countword.s", and can be run directly. 
  168.  
  169.  
  170. This is an outline of how to do things. I find it useful because I worked it 
  171. up. Hope it is of some use to you. I have a shortened version of this on a 
  172. sheet of paper and keep it available at all times, to help me remember how to 
  173. do things. 
  174.  
  175.  
  176. COMMANDS:
  177.     
  178. Copy. Must be loaded from system disk.
  179.                  copy h:name to a:*
  180.  
  181. means, copy program "name" from Ram drive to 'a' drive, using the same name.
  182.  
  183.                    copy h:name to a:name2
  184. means copy program "name" from Ram drive to 'a' drive using different name.
  185.  
  186. If any other command is given, "copy" is no longer available and must be 
  187. loaded again. When copy is available, the "a:" prompt will be red. 
  188.  
  189. Rename. Is on Ram disk at loadup.
  190.                 com r:newname=oldname
  191. means rename program "oldname" as "newname".
  192.  
  193. Scratch. Is on Ram disk at loadup.
  194.                    com s:name
  195.  
  196. means scratch program "name". 
  197.  
  198. Format. Is on Ram disk at loadup.
  199.                  com n:name, id
  200.  
  201. EDITOR. 
  202.  
  203. To write a new program:
  204.  
  205. Load editor from system disk with "ce" 
  206. F5, and then type "new". Enter 80 for line length. 
  207. Enter file name as h:name.h
  208.  
  209. Enter an extra line with F7, and color it yellow or other readable color. Then 
  210. enter more lines by hitting F7 until you have the number you need. Type in 
  211. code, proofread it carefully! Proofread it again! 
  212.  
  213. F5 and then S to save. It will be saved to Ram disk. 
  214.  
  215. Load. To load a source code file into the editor.
  216.       Load editor with "ce".
  217.  
  218. F5 and then L. (load).
  219. Enter drive designation and file name and hit return.
  220.         For example: b:program.c (return)
  221.  
  222. Shorter  way to load a file into the editor: assuming program to be loaded is 
  223. in "b" drive. Type: 
  224.       a:ce b:program.c (return)
  225.  
  226. Save. To save a copy of an edited source file to disk.
  227.  
  228. F5 and then F for file name change. 
  229. Put work disk in drive a or drive b. Change name to "a:name.s" or "b:name.s" 
  230. and then "S" to save to work disk in drive a or b.(I prefer ".s"  for source, 
  231. they seem to prefer ".c" [code?] ) 
  232. Get out of editor with F5, X. 
  233.  
  234. COMPILER. 
  235.      Be sure edited program and any link files needed are on Ram disk!
  236.      Load compiler from system disk with "cc".
  237.      Enter "h:name.h" (Return)
  238.      Enter "h:name.o" for link file (default)(return)
  239.      Enter "h:name.e" for error file (default)(return)
  240.  
  241.      Hit return. If there is any trouble, go back to editor, load source file, 
  242. make necessary crrections and start over. Save to same name.(Automatic 
  243. replace). 
  244.  
  245. Note. They confuse the issue by suggesting that you use "o.o" for the link 
  246. (object) file rather than "name.o". This works, but I preferred to use the 
  247. default form that includes the name at first. Later when you have a feel for 
  248. what you are doing, using "o.o" will save some typing and disk space. 
  249.  
  250. Note. The material on page 140 and following explains the use of the compiler 
  251. and is actually easier to follow than the material in the early chapters. 
  252. Notice you can do this: 
  253.  
  254.      a:cc h:program.h h:program.o h:error.e  (Return). 
  255. The compiler will be loaded and the code will be compiled. A bit more 
  256. efficient, I suggest you do it the original way at first, until you see what 
  257. is what. 
  258.  
  259. LINKER.
  260.      Load linker from system disk with "cl"
  261.      Enter name "h:name" (Return)
  262.      Enter "libr.l" (default) (Return)
  263.      Enter other library file name if needed. (Return)
  264.      (When all library files needed are listed:
  265.      Enter "h:name.o" (Return)
  266. Note. See page 150 and following for a fairly good description of how to use 
  267. linker. You can link with one line of code, too, like so. 
  268.  
  269. a:cl h:program h:libc.l h:program.o (Return)
  270.  
  271. or even:
  272.  
  273. a:cl h:program h:libc.l h:another lib file  h:program.o
  274.  
  275. Other library programs may be included here if needed. This will link all in 
  276. one shot. 
  277.  
  278. You can also compile and link all in one shot. Like so.
  279.  
  280. a:cc h:program.h h:program.o h:error.e h:program h:libc.l (Return)
  281.  
  282. The compiler is loaded, the program compiled, the linker is loaded, and the 
  283. program linked. "h:program.o" is understood here, so it isn't necessary to 
  284. type it in.  You are going through all the steps to compile and link, but 
  285. faster and with less typing. 
  286.      
  287. SAVING. After linking and compiling, run the program from the Ram drive. If it 
  288. the way you want it, save it to work disk. To do this, load "copy" from system 
  289. disk. Save with   copy h:name to b:*, or copy h:name to b:name2. 
  290.  
  291.