home *** CD-ROM | disk | FTP | other *** search
/ Frozen Fish 1: Amiga / FrozenFish-Apr94.iso / bbs / alib / d5xx / d591 / monopolysrc.lha / MonopolySrc / README < prev    next >
Text File  |  1992-01-31  |  10KB  |  160 lines

  1. 4 January 1992
  2.  
  3. Back in June 1986 I purchased my Amiga 1000. At that time I also 
  4. purchased Commodore's Amiga C--a software package for C language
  5. programmers. The documentation was photo-copied loose pages
  6. inserted into a PeeChee style folder, and an incomprehensible
  7. small manual. Lattice was the software developer, and eventually
  8. offered an upgrade to an early Lattice version, as Commodore
  9. never supported the software. 
  10.  
  11. Way back in the dark ages (1969) I took a programming class at 
  12. Duke University, a degree requirement even then for psychologists!
  13. Imagine, a huge building with an air-tight sealed basement,
  14. stuffed with whirring noises and shadow-less nooks. This massive
  15. collection of machinery was less powerful and had less storage 
  16. capacity than the Amiga 3000 I am using today! Programmers sat at
  17. large machines which cut holes in cards, these cards held the
  18. program and data. the program. on cards was submitted through an 
  19. air-lock drawer to a technician gowned for surgery in white, head 
  20. to toe. Hours or days later a printed output would appear 
  21. upstairs, available for the programmer's inspection. Typically,
  22. the result was not what the programmer expected, and the whole
  23. process:  punch cards, submit, wait, examine output, was repeated
  24. (and repeated and repeated and repeated and repeated and 
  25. repeated and repeated and repeated and repeated and repeated)
  26. until a satisfactory program yielded a satisfactory output (all
  27. output was just typewriter style letters and numbers.) Each 
  28. student was allotted just so much processing time per semester,
  29. called time-sharing, and a run-away program could easily
  30. consume most of the time-share owned by the student! The language
  31. used was Algol, supposedly tailor made for scientific use.
  32.  
  33. Time marched on, progress was made, I transferred to the University
  34. of California at San Diego (UCSD [really in La Jolla]) to complete 
  35. my degree. I needed an extra math class for general requirements,
  36. and found that computer programming was under the math department.
  37. I had enjoyed (alright so I'm a masochist) my Algol class, so I
  38. thought that I would try programming again. This was about 1975, 
  39. and UCSD had just acquired a revolutionary new tool, the individual
  40. terminal. Fifteen of these units were installed in an old
  41. language lab--no special precautions against dust, temperature nor
  42. humidity were required, though the main processor still was 
  43. protected and very massive. Each terminal comprised a keyboard 
  44. and a monochrome monitor screen. All fifteen terminals shared a
  45. single tape drive as their only means of storing and loading data.
  46. Now picture this tape drive: a machine the size of a kitchen
  47. refrigerator, with tapes made of paper, about one inch wide and 
  48. a few hundred feet long. This was a permanent tape, no changes 
  49. could be made--any corrections to program or data required that a
  50. new tape be made! The programming language was Basic and the text
  51. was a comic book style workbook.
  52.  
  53. After graduation, I drifted into electronics, as the general 
  54. manager of La Jolla Electronic (a small group dedicated to 
  55. one-of-a-kind electronic proto-typing.) I expected to handle 
  56. paperwork and office chores, but found that I needed to 
  57. learn the basics from chip logic, circuit diagrams, pc boards, 
  58. wirewrapping, debugging hardware, on down to manufacturing. This 
  59. was a challenging job, and I had the opportunity to work on a 
  60. number of important projects. From my programming classes I 
  61. recognised that many of my routine tasks could be handled better
  62. using a computer, but computers cost many tens of thousands of 
  63. dollars then (even the cheapest) and those companies advertising
  64. often were fly-by-night developers selling vaporware--as we found 
  65. out to our financial distress! We finally managed to acquire a 
  66. proto-type computer because we helped develop the man-machine 
  67. interface on a device which allowed non-speakers to type in letters
  68. to make very short phrases visible on a wrist-watch type display
  69. (only each letter display was about two inches tall--very small 
  70. for those days, the height of miniaturization.)
  71.  
  72. Nature called, and I chose to spend the next ten years as a hermit,
  73. camping out from Mexico to Canada, high up in the mountains, 
  74. coming out to civilization only rarely. You can imagine my 
  75. reaction when I first saw a Commodore 64 in 1985--my first contact
  76. with computers since 1975! What a difference a decade made. I had
  77. been living without benefit of electric power for many years, and
  78. suddenly I had to hook up my backwoods cabin to the power company--
  79. I had already purchase a C-64 system, and was eager to start 
  80. playing with it. I started writing a computer game in 1985, 
  81. working title:  "Generic War Game", language:  Basic, platform:
  82. C-64. The game soon outgrew the 64K memory available, so I started
  83. paying attention to Amiga advertisements. The memory! The colors!
  84. The attraction was too great, I had to have one. Only one problem
  85. was obvious:  what to do with the old C-64? I gave it to my niece
  86. for Christmas, then started saving for my Amiga (I kept 
  87. visitation rights until I could get my Amiga together.) In May 1986
  88. I got a good bonus and rushed down to pick up my Amiga, I found
  89. that very little software was available, no games, just Deluxe
  90. Paint (the savior of the Amiga--if it can be saved!) So I bought a
  91. C-128 to play games on as well! The C-128 got a years worth of
  92. heavy use, the niece moved out (C-64 and all) and I gave the C-128
  93. to my nephew. By then software was more available for the Amiga.
  94.  
  95. I had re-written "Generic War Game" in AmigaBasic, but it soon grew
  96. too big to be easily managed. After talking with many hot-shot 
  97. programmers, I chose to learn the C programming language. I bought
  98. "C Primer Plus" by Waite, Prata, & Martin, and Inside the Amiga by
  99. Berry--both published by Sams, as well as the official Kernighan 
  100. and Ritchie description "The C Programming Language". I set myself
  101. the task of self-learning C, then chose to produce a Parker
  102. Brothers' Monopoly simulation as my "final exam". The 
  103. award-winning game included with this file is that project's 
  104. culmination. 
  105.  
  106. I am releasing this archive because I have received
  107. some requests for the code. In going back into my dusty old disk
  108. storage boxes, I had to piece together these files from a few 
  109. corrupted disks. Specifically the source files for all IFF 
  110. functions were lost. I had changed two files (ilbmr.c and 
  111. readpict.c) to support my monopoly screen and window, as opposed to
  112. opening a new screen and window. Other IFF files may have had minor changes
  113. as well. I do have the correct object files for all these 
  114. functions and have included them. The other C source code was all
  115. last compiled under Lattice 3.x using link_monopoly to call BLINK and a 
  116. "with file" link_mono_with (which may have to be modified to reflect
  117. the directories in which another programmer chooses to keep the
  118. object files.) The picture file monopoly.board may need to be located
  119. someplace assigned to "monopoly.c:". Geltools.c is modified from the
  120. original Rom Kernal Manual example to be program specific. The file "index"
  121. lists which function is in which module, and s.c calls main(). The bob
  122. file was an example from which I worked to get my blitter object routines,
  123. and was included as extra study material--may be needed because the tokens
  124. appear to have corrupt data under 2.0 and SAS.
  125.  
  126. I remain interested in C programming, and have a commercial game 
  127. almost ready for delivery. It is a major rework of "Generic 
  128. War Game", comprising a geo-political, socio-economic simulation of
  129. galactic expansion and empire building. My favorite games all lend
  130. some background to the game: "Imperium Galactum", "Reach for the 
  131. Stars", and "Empire"; though the original concept is my very old 
  132. C-64 Basic code, the game is completely Amiga specific, and has a 
  133. business program hidden inside. The working title (copyright 1989)
  134. is "Sphreres of Influence" and it plays on any Amiga with at least 
  135. 512K of memory, running any operating system from 1.2 through 2.0.
  136.  
  137. P.S. Just for fun, after writing this note, I tried to compile and link this
  138. set of source code files under SAS C version 5.10b, running the 2.04 OS,
  139. Kickstart 37.176, Workbench 37.67, and using the 2.04 Libraries and Includes.
  140. By turning off all warnings and changing one source file (I have a table of
  141. mainly two digit numbers with two exceptions: zero and nine, to make the table
  142. more readable I used 00 and 09 for my data--worked fine under 3.x, but caused
  143. an error under 5.10b) I was able to successfully compile and link all modules.
  144. I took a short look at main.c and one other module and found some really
  145. glaring mistakes--not functionally, but in succinct succinctness and style.
  146. Remember, this was my first C program, a project that snowballed out of
  147. control! It may actually be of benefit to beginners, just learning the ropes,
  148. because it has no tricky code, nor obtuse variable names, uses no custom
  149. structures, and avoids the use of pointers where possible. Much of the system
  150. interface code is right out of the Rom Kernal Manual (errors fixed up), and
  151. the IFF routines are presented as object modules so that early contact with
  152. the entertaining IFF source code is eliminated (thus better assuring their
  153. use!) For more advance programmers, I simply modified the IFF source code
  154. which opens a custom screen and/or window into which the bitmap data is
  155. written; originally hard coding in my global screen and window variable names,
  156. then in newer projects passing a pointer to my custom structure Destiny. This
  157. may be accomplished with the IFF type defined ILBMdestination appearing in the
  158. newest iff.h file--I hope, but I have not updated my iff routines yet, and
  159. will probably not do so until after completion of "Spheres of Influence".
  160.