First entry.. the Pinball Operating System has begun to function

Greetings..
The quest here is to create a broad Pinball Operating System. The PBOS will interpret numerous threads, where such threads are built of codes that represent specific commands or operations. For example, { THCMD_WAIT_SW_CLOSE, SW_LEFT_EJECT_HOLE, }, will wait for a switch closure on the left eject hole. When the switch closes, the code moves to the next line.
An early list of commands:
                case THCMD_WAIT_SW_CLOSE:
                case THCMD_SET_LAMP_ON:
                case THCMD_SET_LAMP_OFF:
                case THCMD_SET_LAMP_FLASH:
                case THCMD_SELECT_SOL:
                case THCMD_SET_SOL_ON:
                case THCMD_SET_SOL_TIME:
                case THCMD_SET_SOL_OFF:
                case THCMD_SET_DELAY_mS:
                case THCMD_WAIT_DELAY_mS:
                case THCMD_SET_DELAY_SEC:
                case THCMD_WAIT_DELAY_SEC:
                case THCMD_SET_PL1_DISPLAY:
                case THCMD_SET_PL2_DISPLAY:
                case THCMD_SET_PL3_DISPLAY:
                case THCMD_SET_PL4_DISPLAY:
                case THCMD_SET_CREDITS_DISPLAY:
                case THCMD_SET_BALL_DISPLAY:
                case THCMD_PROCESS_COIN:
                case THCMD_GOTO_LINE:
                case THCMD_LINE_TAG:
                case THCMD_KILL_THREAD:
                case THCMD_KILL_THREAD_TYPE:
                case THCMD_SET_THREAD_TYPE:
                case THCMD_START_THREAD:
                case THCMD_KILL_THIS_THREAD:
                case THCMD_SET_FLAG:
                case THCMD_TEST_FLAG:
You can see that there are commands to manage switches, lamps, solenoids, displays, delays, and the like.

The ultimate goal of the project is:
To have a number of replacement boards available for a variety of machines
To allow the aficionado to modify/edit/add to the rules easily
To allow others to implement the PBOS on other hardware
To have a commercial quality electronic system available to short run production endevors.

As of this blog, I have built a daughter board that plugs into a 6800 socket, and written software to scan and operate the board (and associated driver board). I then created a linked task list executor, which uses the cooperative multitasking scheme, to allow the machine to execute multiple threads at once. This is an ideal method, as there are multiple separate things going on in a machine at the same time. One target may need to: post a score change, post a sound, set the players target flag, flash the bulb 4 times, and leave the bulb on. You can see that to do this all over the playfield would be difficult in one continuous program. Also, the threads can be started up and killed as needed. A thread that flashes game over during attract is not wanted during game play.

The existing daughter board is really for development only, and sharing with some beta testers. The next step is to flesh out a board for system 3/4/6/7 that replaces the driver board altogether. This will allow:
Eliminate the existing MPU board
Eliminate the dodgy connector strip that is the cause of failure
Eliminate the batteries for non-volatile memory
Eliminate the high wattage resistors that generate heat (they only did this so they could use regular transistors.. a darlington or MOSFET would have eliminated the high watt resistors).
Allow the addition of current monitoring to prevent latchup of the solenoids
Allow the addition of a serial port to show debugging information for developing


 

What did you think of this article?




Trackbacks
  • No trackbacks exist for this entry.
Comments
  • No comments exist for this entry.
Leave a comment

Submitted comments will be subject to moderation before being displayed.

 Enter the above security code (required)

 Name

 Email (will not be published)

 Website

Your comment is 0 characters limited to 3000 characters.