Jump to content
IGNORED

[Forth] Coin-op Forth?


JonnyBritish

Recommended Posts

I keep seeing mention of a Forth in use at Atari Corp. It was called Game Forth in the Byte Magazine Forth issue and now after seeing this site:

 

Atari Programming Languages

 

Then this : Strolling Forth

 

Which Forth? Virtually all Forths available for the Atari are based on the FIG (Forth Interest Group) model for 6502 by William Ragsdale, so there is relatively good code compatibility. There are currently about a half-dozen Forths for the 400/800's. In approximate chronological order of appearance, they are: Coin-op Forth, a sort of inhouse version at Atari; Sunnyvale Forth, a public-domain version from a users group there (?); QS Forth, from Quality Software; PNS Forth from Pink Noise Studios; APX Forth, from Atari; Ataforth, (sorry, not sure whose); and Valforth, from Valpar International. We wrote and use Valforth, though the programs appearing in this column will generally run without much prodding on any of these systems.

 

Was there a Forth in use and actually used for production software or were they just testing?

Link to comment
Share on other sites

  • 4 years later...

I keep seeing mention of a Forth in use at Atari Corp. It was called Game Forth in the Byte Magazine Forth issue and now after seeing this site

 

Was there a Forth in use and actually used for production software or were they just testing?

 

As far as I know, no games issued from Atari that were written in FORTH. Certainly no big titles. The language was fun to play with, but ultimately too slow (and a generally write-only class of unmaintainable) for production use.

 

Donkey Kong Junior for the Atari 400/800 was started in FORTH, and it was a disaster on rollerskates -- really a spectacular mix of arrogance, self-delusion and lying -- until the programmer was fired and it was re-written in assembly (by Jeff Milhorn and Kevin Sacher, IIRC).

 

FORTH was used in the bring-up of the Atari ST hardware, and it worked well there. It was an in-house adaptation of something (probably 68000 FigFORTH) on a cartridge, and used to exercise registers and do limited testing. We software types were quite happy that the hardware engineers were able to try their own stuff out and fix bugs in it before (a) committing to silicon and (b) passing the ball to us :-)

  • Like 6
Link to comment
Share on other sites

I think Forth still has it place, just that that place isn't in most* modern computers. We kind of went through this same discussion with Tiny BASIC. Forth was from a time when RAM was small and ROMs were expensive. There's still hardware out there that can benefit from a small memory footprint i.e. micro controllers. Important historically but the need and utility has changed. Even the microcontrollers have 8k to 512k of FLASH available.

Link to comment
Share on other sites

Correct

 

Universe was written in Valforth. I have the manuals and disks for Valforth including extra libraries and yes I need to scan them and post

Jonny,

I scanned the docs already (although you might want to check and see if our versions are different), they are up on AtariMania and Atchive.org.

I have not been able to get the disks copied, that we would appreciate greatly!

Link to comment
Share on other sites

I also thought that the logic for the unreleased Atari pinball game 4x4 was done in Forth.

 

BTW thanks for the programmer names for DK jr, I'll make sure they get mentioned on my page. Was any part of the original programmers code used in the final game?

  • Like 1
Link to comment
Share on other sites

Jonny,

I scanned the docs already (although you might want to check and see if our versions are different), they are up on AtariMania and Atchive.org.

I have not been able to get the disks copied, that we would appreciate greatly!

 

not seeing docs on atarimania for ValForth..just seeing the entry and a disk is missing statement

Link to comment
Share on other sites

  • 2 years later...
  • 7 months later...

AtariLab Starter Edition was written in the Forth distributed by Atari, written by Calfee.

 

That's interesting. I've been slowly recovering all the Forth definitions from the In-Store Demonstration cartridge, and having some other known Forth-developed carts should help me out.

 

Given then two Forth-developed cartridges, I decided to see if I could spot any others. The core routine of Forth is the NEXT routine, which in fig-Forth and Coin-op Forth looks like:

803C: A0 01     NEXT    LDY #1
803E: B1 F8             LDA (IP),Y
8040: 85 FC             STA W+1
8042: 88                DEY
8043: B1 F8             LDA (IP),Y
8045: 85 FB             STA W
8047: 18                CLC
8048: A5 F8             LDA IP
804A: 69 02             ADC #2
804C: 85 F8             STA IP
804E: 90 02             BCC L54
8050: E6 F9             INC IP+1
8052: 4C FA 00  L54     JMP W-1

So I converted that to a regular expression pattern (below) and tested all the ROMs I have.

/(\xa0\x01\xb1.\x85.\x88\xb1.\x85.\x18\xa5.\x69\x02\x85.\x90.\xe6.\x4c..)/

Here are the results:

 

"Alien Garden (1982)(Epyx).car": Forth NEXT detected at 0059

"AtariLab Light Module (1984)(Atari).car": Forth NEXT detected at 002a

"AtariLab Temperature Module (1983)(Atari).car": Forth NEXT detected at 002a

"In-Store Demonstration (1980)(Atari).car": Forth NEXT detected at 004c

 

Sure enough, Alien Garden looks like it was at least partly developed in Forth, which I didn't know, but after doing some research it is mentioned in http://www.mobygames.com/game/alien-garden, using a Forth from Nautilus Systems.

  • Like 10
Link to comment
Share on other sites

For utilites, there's also

 

http://www.atarimania.com/list_utilities_atari-400-800-xl-xe-compiled-forth_devlanguage_12_8_U.html

 

So I tried my regex against some atrs to see if it found any candidates not on those lists. Here are some likely ones:

 

D-Bug by Electronic Arts

Jeepers Creepers by Quality Software

Match Wits by CBS Software

 

D-Bug is definitely in Forth, you can still see some of the Forth words in ASCII in the image. The other two I'll need to do some additional investigation to verify.

  • Like 1
Link to comment
Share on other sites

 

Here are the results:

"AtariLab Light Module (1984)(Atari).car": Forth NEXT detected at 002a

That surprises me; I left the AtariLab project after the temperature module and was replaced by a team of hot-shot assembly programmers; as I understood it the plan was to drop Forth. I left a lot of good documentation, but I wrote the cross-compiler and was pretty much the only one who understood it, so I am wondering what they did.

  • Like 3
Link to comment
Share on other sites

That surprises me; I left the AtariLab project after the temperature module and was replaced by a team of hot-shot assembly programmers; as I understood it the plan was to drop Forth. I left a lot of good documentation, but I wrote the cross-compiler and was pretty much the only one who understood it, so I am wondering what they did.

 

The first 600 bytes or so are definitely the start of a Forth (I can match many routines to the fig-Forth reference listing). I'll do a more detailed decompilation later to see if that's just a remnant or if the code is largely Forth.

Link to comment
Share on other sites

Hi!

 

That's interesting. I've been slowly recovering all the Forth definitions from the In-Store Demonstration cartridge, and having some other known Forth-developed carts should help me out.

 

Given then two Forth-developed cartridges, I decided to see if I could spot any others. The core routine of Forth is the NEXT routine, which in fig-Forth and Coin-op Forth looks like:

803C: A0 01     NEXT    LDY #1
803E: B1 F8             LDA (IP),Y
8040: 85 FC             STA W+1
8042: 88                DEY
8043: B1 F8             LDA (IP),Y
8045: 85 FB             STA W
8047: 18                CLC
8048: A5 F8             LDA IP
804A: 69 02             ADC #2
804C: 85 F8             STA IP
804E: 90 02             BCC L54
8050: E6 F9             INC IP+1
8052: 4C FA 00  L54     JMP W-1
So I converted that to a regular expression pattern (below) and tested all the ROMs I have.

/(\xa0\x01\xb1.\x85.\x88\xb1.\x85.\x18\xa5.\x69\x02\x85.\x90.\xe6.\x4c..)/
.....

 

Good regex!

 

Run through my local copy of the holmes collection (skipped compilations):

 

dmsc@dmsc-laptop:$ LANG=C rgrep -P '\xa0\x01\xb1.\x85.\x88\xb1.\x85.\x18\xa5.\x69\x02\x85.\x90.\xe6.\x4c' 
Binary file Holmes.1/ATR Programs/Applications A-Z/Fastchip Translator.atr matches
Binary file Holmes.1/ATR Programs/Applications A-Z/Sherlock 0.2 -800b.atr matches
Binary file Holmes.1/ATR Programs/Applications A-Z/Diverse Utils.atr matches
Binary file Holmes.1/ATR Programs/Applications A-Z/Keyboard.atr matches
Binary file Holmes.1/ATR Programs/Applications A-Z/Super Duper Copier.atr matches
Binary file Holmes.1/ATR Programs/Applications A-Z/The Bear Essentials.atr matches
Binary file Holmes.1/ATR Programs/Applications A-Z/The Rotberg Marquee Program.atr matches
Binary file Holmes.1/ATR Programs/Applications A-Z/Headliner.atr matches
Binary file Holmes.1/ATR Programs/Applications A-Z/Synfile+ -800b.atr matches
Binary file Holmes.1/ATR Programs/Applications A-Z/Antic Forth 1.4s A.atr matches
Binary file Holmes.1/ATR Programs/Applications A-Z/Menu to Binary.atr matches
Binary file Holmes.1/ATR Programs/Applications A-Z/Synfile+ 1.02 A.atr matches
Binary file Holmes.1/ATR Programs/Applications A-Z/Fig Forth 1.1.atr matches
Binary file Holmes.1/ATR Programs/Applications A-Z/Rambrandt 2.0 A.atr matches
Binary file Holmes.1/ATR Programs/Applications A-Z/Sherlock 2.3.atr matches
Binary file Holmes.1/ATR Programs/Applications A-Z/Rembrandt [alt ver.].atr matches
Binary file Holmes.1/ATR Programs/Applications A-Z/Beginner Forth 1.0 -800b.atr matches
Binary file Holmes.1/ATR Programs/Applications A-Z/Synchron.atr matches
Binary file Holmes.1/ATR Programs/Applications A-Z/Multiboot Utilities 1.atr matches
Binary file Holmes.1/ATR Programs/Applications A-Z/Bob's Disk Editor [ED].atr matches
Binary file Holmes.1/ATR Programs/Applications A-Z/Fig Forth 1.4S B.atr matches
Binary file Holmes.1/ATR Programs/Applications A-Z/Music Construction Set.atr matches
Binary file Holmes.1/ATR Programs/Applications A-Z/Fig Forth 1.4S A.atr matches
Binary file Holmes.1/ATR Programs/Applications A-Z/Music Construction Set [alt].atr matches
Binary file Holmes.1/ATR Programs/Applications A-Z/Financial Cookbook [crk].atr matches
Binary file Holmes.1/ATR Programs/Applications A-Z/QS Forth 1.0 -800b.atr matches
Binary file Holmes.1/ATR Programs/Applications A-Z/US Doubler Super Mover.atr matches
Binary file Holmes.1/ATR Programs/Applications A-Z/Rambrandt A.atr matches
Binary file Holmes.1/ATR Programs/Applications A-Z/Financial Cookbook.atr matches
Binary file Holmes.1/ATR Programs/Applications A-Z/130XE One Pass Disk Copier.atr matches
Binary file Holmes.1/ATR Programs/Applications A-Z/Sherlock 1050 A.atr matches
Binary file Holmes.1/ATR Programs/Applications A-Z/US Doubler 2 Drive Copier.atr matches
Binary file Holmes.1/ATR Programs/Applications A-Z/Midi Track III.atr matches
Binary file Holmes.1/ATR Programs/Applications A-Z/US Doubler 1 Drive Copier.atr matches
Binary file Holmes.1/ATR Programs/Applications A-Z/Bob's Disk Editor [DD].atr matches
Binary file Holmes.1/ATR Programs/Applications A-Z/SynPower XE (Syncalc-Synfile).atr matches
Binary file Holmes.1/ATR Programs/Applications A-Z/Antic Forth 1.4s B.atr matches
Binary file Holmes.1/ATR Games/Games M-Z/Tac Trek A.atr matches
Binary file Holmes.1/ATR Games/Games M-Z/The Curse.atr matches
Binary file Holmes.1/ATR Games/Games M-Z/Racing Destruction Set [alt] A.atr matches
Binary file Holmes.1/ATR Games/Games M-Z/Sex Misj [pl] A.atr matches
Binary file Holmes.1/ATR Games/Games M-Z/Racing Destruction Set A.atr matches
Binary file Holmes.1/ATR Games/Games M-Z/Spellicopter A.atr matches
Binary file Holmes.1/ATR Games/Games M-Z/Worms.atr matches
Binary file Holmes.1/ATR Games/Games M-Z/Maniac Miner.atr matches
Binary file Holmes.1/ATR Games/Games M-Z/Match Wits.atr matches
Binary file Holmes.1/ATR Games/Games M-Z/Mule -osb.atr matches
Binary file Holmes.1/ATR Games/Games M-Z/Mule [alt].atr matches
Binary file Holmes.1/ATR Games/Games M-Z/Universe Construction.atr matches
Binary file Holmes.1/ATR Games/Games M-Z/Universe Star.atr matches
Binary file Holmes.1/ATR Games/Games M-Z/Simulated Computer II.atr matches
Binary file Holmes.1/ATR Games/Games M-Z/Wladcy Ciemnosci.atr matches
Binary file Holmes.1/ATR Games/Games M-Z/Universe Flight1.atr matches
Binary file Holmes.1/ATR Games/Games M-Z/Murder On The Zinderneuf.atr matches
Binary file Holmes.1/ATR Games/Games A-L/Blockbuster -osb.atr matches
Binary file Holmes.1/ATR Games/Games A-L/Chopperoid.atr matches
Binary file Holmes.1/ATR Games/Games A-L/Jeepers Creepers [alt].atr matches
Binary file Holmes.1/ATR Games/Games A-L/Arkanoid.atr matches
Binary file Holmes.1/ATR Games/Games A-L/D-Bug [fuzzysector43].atr matches
Binary file Holmes.1/ATR Games/Games A-L/Cyborg [pro] A.atr matches
Binary file Holmes.1/ATR Games/Games A-L/Ad2044 Sexmisja A.atr matches
Binary file Holmes.1/ATR Games/Games A-L/D-Bug.atr matches
Binary file Holmes.1/ATR Games/Games A-L/Abraxas-Assault On The Astral Rift A.atr matches
Binary file Holmes.1/ATR Games/Games A-L/Cyborg A.atr matches
Binary file Holmes.1/ATR Games/Games A-L/Cyborg [alt] A.atr matches
Binary file Holmes.1/ATR Games/Games A-L/Ken Ustons Pro Blackjack 1.2.atr matches
Binary file Holmes.1/ATR Games/Games A-L/Hard Hat Mack [clr alt].atr matches
Binary file Holmes.1/ATR Games/Games A-L/Axis Assassin [title].atr matches
Binary file Holmes.1/ATR Games/Games A-L/Electronic Organ -osb.atr matches
Binary file Holmes.1/ATR Games/Games A-L/Creature Creator.atr matches
Binary file Holmes.1/ATR Games/Games A-L/Klatwa -Polish.atr matches
Binary file Holmes.1/ATR Games/Games A-L/Jeepers Creepers.atr matches
Binary file Holmes.2/Programming/Forth/FORTHB.dcm matches
Binary file Holmes.2/Programming/Forth/FORTHA.dcm matches
Binary file Holmes.2/!Archived Files/Web - Mr Barcadi Files/Aura menues/AURA27.XFD matches
Binary file Holmes.2/!Archived Files/DCM Files/AD2044A.DCM matches
Binary file Holmes.2/!Archived Files/DCM Files/MULE_60K.DCM matches
Binary file Holmes.2/!Archived Files/DCM Files/SYNFILE.DCM matches
Binary file Holmes.2/!Archived Files/DCM Files/ASSAULTA.DCM matches
Binary file Holmes.2/!Archived Files/DCM Files/SEXMISJA.DCM matches
Binary file Holmes.2/!Archived Files/DCM Files/WLADCY.DCM matches
Binary file Holmes.2/!Archived Files/DCM Files/DBUG.DCM matches
Binary file Holmes.2/!Archived Files/DCM Files/RACNGDS1.DCM matches
Binary file Holmes.2/!Archived Files/DCM Files/KLATWA.DCM matches
Binary file Holmes.2/Atari Executables/w/Worms.exe matches
Binary file Holmes.2/Atari Executables/m/Maniacmi.exe matches
Binary file Holmes.2/Atari Executables/m/ManiacMiner.exe matches
Binary file Holmes.2/Atari Executables/k/Keyboard.exe matches
Binary file Holmes.2/Atari Executables/k/KeyboardOrgan.exe matches
Binary file Holmes.2/Atari Executables/a/AtariDealerDemo1980TextAltered.exe matches
Binary file Holmes.2/Atari Executables/j/Jeepersc.exe matches
Binary file Holmes.2/Atari Executables/j/JeepersCreepers.exe matches
Binary file Holmes.2/XEX Files - Atari Executables/Games/Worms.xex matches
Binary file Holmes.2/XEX Files - Atari Executables/Games/AtariDealerDemo1980TextAltered.xex matches
Binary file Holmes.2/XEX Files - Atari Executables/Games/JeepersCreepers.xex matches
Binary file Holmes.2/XEX Files - Atari Executables/Games/Maniacmi.xex matches
Binary file Holmes.2/XEX Files - Atari Executables/Games/Keyboard.xex matches
Binary file Holmes.2/XEX Files - Atari Executables/Games/Jeepersc.xex matches
Binary file Holmes.2/XEX Files - Atari Executables/Games/ManiacMiner.xex matches
Binary file Holmes.2/XEX Files - Atari Executables/Games/KeyboardOrgan.xex matches
Binary file Holmes.3/BELLCOM/D009_B.ATR matches
Binary file Holmes.3/BELLCOM/D053_A.ATR matches
Binary file Holmes.3/BELLCOM/045.ATR matches
Binary file Holmes.3/BELLCOM/044.ATR matches
Binary file Holmes.3/HAPS/PDTO1000/PD0628B.ATR matches
Binary file Holmes.3/ACE/ACEC109B.ATR matches
Binary file Holmes.3/Aura/Aura Menu 27.atr matches
Binary file Holmes.3/Apx/APX20029.ATR matches
Binary file Holmes.3/Apx/APX20029-1.ATR matches
Binary file Holmes.3/C&T/137_A.ATR matches
Binary file Holmes.3/C&T/137_B.ATR matches
Binary file Holmes.3/C&T/044.ATR matches
Binary file Holmes.3/Belgium/019A.ATR matches
Binary file Holmes.3/Belgium/023A.ATR matches
Binary file Holmes.3/ABBUC/235_A.ATR matches
Binary file Holmes.3/ABBUC/220_A.ATR matches
  • Like 2
Link to comment
Share on other sites

  • 2 years later...
On 5/15/2018 at 4:28 PM, unused0 said:

That surprises me; I left the AtariLab project after the temperature module and was replaced by a team of hot-shot assembly programmers; as I understood it the plan was to drop Forth. I left a lot of good documentation, but I wrote the cross-compiler and was pretty much the only one who understood it, so I am wondering what they did.

 

On 5/15/2018 at 6:02 PM, Atari_Ace said:

 

The first 600 bytes or so are definitely the start of a Forth (I can match many routines to the fig-Forth reference listing). I'll do a more detailed decompilation later to see if that's just a remnant or if the code is largely Forth.

OK, I finally went back to work on my decompilation of both cartridges (rough around the edges, but good enough to isolate all the FORTH colon routines).  Both AtariLab carts are definitely almost entirely in Forth.  I spotted at least 390 colon definitions in the temperature module and 370 in the light module.  Sadly there's no way to recover the names of the most of these definitions, so the disassembly only gives a rough idea of what the original Forth code might have looked like, but it's still interesting to see how it all fit together.

 

I've attached my current version of the listings and the tools I used to construct them.

lab1.zip

  • Like 1
  • Thanks 1
Link to comment
Share on other sites

  • 2 weeks later...

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...