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