I found an old IBM this weekend, and I learned the Pascal language just to play with it. The IBM is a 1989 PS/2 (so far as I can tell, but it may be older), or Personal System 2. These computers first came out in 1987 as IBM’s third generation of personal computers, you can read more about their history here.
Programming the IBM
While poking around on this computer’s DOS prompt I found a directory that contained all of the previous user’s programs - the most recent of which was edited in 1992. I noticed that the programs were written in the Pascal programming language and that I could make new programs with the included turbo IDE (Integrated Development Environment):
After downloading the free pascal compiler on my Mac, I started learning the language. I began writing pascal programs on my Mac to transfer to the IBM, but when I tried to load the programs into turbo I found that they were corrupted because I had not accounted for the carriage return character in DOS. In UNIX systems only the newline character (denoted by ‘\n’) is needed for newlines, but in DOS the carriage return character is also needed (denoted by ‘\r’, then ‘\r\n’ together). So I wrote a quick bash script to solve my problem:
I then proceeded to write Conway’s game of life in pascal - which is the seen running in the second gif above ( I have the source code here if you would like to read over it). The game of life is a simple simulation game that populates and repopulates a grid of cells based on simple rules. If a cell is filled it is considered “alive”, if it is not it is considered “dead”. Here is an example of an interesting configuration - known as a Glider Gun - in the game of life:
Making Life
I created two arrays, one to store the current state of the grid and another to store the temporary grid that helps calculate the next “generation” of cells.
For each “generation” - or step as I have called it here - I fill the grid with cells based on the following rules:
Any live cell with fewer than two live neighbors dies, as if caused by under-population.
Any live cell with two or three live neighbors lives on to the next generation.
Any live cell with more than three live neighbors dies, as if by over-population.
Any dead cell with exactly three live neighbors becomes a live cell, as if by reproduction.
While looking at the gif above, you may have noticed that there are some cells that seem to pop into existence randomly. This is because I randomly turn 4% of cells in the grid ‘alive’ during each step. I do this to insure that the grid does not empty, because I like to have this programming running in the background as I do other things.
I am currently trying to install old DOS games onto the system. My goal is to get the old elder scrolls arena - the first elder scrolls game - onto the system. Because the file is big (9MB, well… big for 1980′s computing) I will have to break apart and transfer over multiple floppies. I currently have a script to split the executable and I am working on a pascal program to reconstruct the partial files on the IBM.
The Source Code:
To view the source code for this project, or to fork it, check out the github repo:
extra: How did I move the programs from my Mac to the IBM? well I had an old computer - now running puppy linux - that could take my files from a USB and put them onto a floppy disk!