JonnyBritish Posted September 12, 2010 Share Posted September 12, 2010 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? Quote Link to comment Share on other sites More sharing options...
Savetz Posted June 24, 2015 Share Posted June 24, 2015 See https://atariage.com/forums/topic/238258-atari-coin-op-forth-and-swarthmore-extensions/ Quote Link to comment Share on other sites More sharing options...
landondyer Posted June 24, 2015 Share Posted June 24, 2015 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 :-) 6 Quote Link to comment Share on other sites More sharing options...
Kylev Posted June 26, 2015 Share Posted June 26, 2015 Unless I have been misinformed, Universe by Omnitrend was written in Forth for the Atari 8 bit. Seemed to work well enough on stock hardware. Didn't like mods at all. Neither computer nor disk drive. 1 Quote Link to comment Share on other sites More sharing options...
Bryan Posted June 26, 2015 Share Posted June 26, 2015 Coin-Op Forth was a pain in the ass. It cost me 8-bucks worth of quarters to run a large program! 3 1 Quote Link to comment Share on other sites More sharing options...
JonnyBritish Posted June 26, 2015 Author Share Posted June 26, 2015 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 1 Quote Link to comment Share on other sites More sharing options...
ricortes Posted June 26, 2015 Share Posted June 26, 2015 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. Quote Link to comment Share on other sites More sharing options...
Subby Posted June 29, 2015 Share Posted June 29, 2015 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! Quote Link to comment Share on other sites More sharing options...
Savetz Posted June 29, 2015 Share Posted June 29, 2015 The 400/800 in-store demo was written in Forth. Trivia: Boulder Dash was written in originally Forth but converted to assembly language before publication. 1 Quote Link to comment Share on other sites More sharing options...
Tempest Posted June 29, 2015 Share Posted June 29, 2015 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? 1 Quote Link to comment Share on other sites More sharing options...
JonnyBritish Posted June 29, 2015 Author Share Posted June 29, 2015 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 Quote Link to comment Share on other sites More sharing options...
JonnyBritish Posted June 29, 2015 Author Share Posted June 29, 2015 not seeing docs on atarimania for ValForth..just seeing the entry and a disk is missing statement ok seeing docs on archive.org - will compare against version I have https://archive.org/details/Atari_valFORTH_Documentation Quote Link to comment Share on other sites More sharing options...
Subby Posted June 29, 2015 Share Posted June 29, 2015 (edited) Yeah, that's the one I scanned. The scan quality is actually good, the originals are very uneven. I would have sworn it was on AtariMania, I'll have to ask Alan about it. Edited June 29, 2015 by Subby Quote Link to comment Share on other sites More sharing options...
unused0 Posted September 16, 2017 Share Posted September 16, 2017 AtariLab Starter Edition was written in the Forth distributed by Atari, written by Calfee. 1 Quote Link to comment Share on other sites More sharing options...
Atari_Ace Posted May 14, 2018 Share Posted May 14, 2018 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. 10 Quote Link to comment Share on other sites More sharing options...
+Stephen Posted May 15, 2018 Share Posted May 15, 2018 Great use of a regular expression I can't wait to share this with some of the guys at work tomorrow. 2 Quote Link to comment Share on other sites More sharing options...
tebe Posted May 15, 2018 Share Posted May 15, 2018 AD-2044, Klątwa (Forth) http://www.atarimania.com/list_games_atari-400-800-xl-xe-compiled-forth_devlanguage_12_8_G.html 2 Quote Link to comment Share on other sites More sharing options...
Atari_Ace Posted May 15, 2018 Share Posted May 15, 2018 AD-2044, Klątwa (Forth) http://www.atarimania.com/list_games_atari-400-800-xl-xe-compiled-forth_devlanguage_12_8_G.html 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. 1 Quote Link to comment Share on other sites More sharing options...
unused0 Posted May 15, 2018 Share Posted May 15, 2018 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. 3 Quote Link to comment Share on other sites More sharing options...
Atari_Ace Posted May 16, 2018 Share Posted May 16, 2018 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. Quote Link to comment Share on other sites More sharing options...
dmsc Posted May 17, 2018 Share Posted May 17, 2018 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-1So 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 2 Quote Link to comment Share on other sites More sharing options...
Atari_Ace Posted July 23, 2020 Share Posted July 23, 2020 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 1 1 Quote Link to comment Share on other sites More sharing options...
_The Doctor__ Posted July 28, 2020 Share Posted July 28, 2020 @unused0 @unusedowl are you the same person? Quote Link to comment Share on other sites More sharing options...
unusedowl Posted August 7, 2020 Share Posted August 7, 2020 On 7/28/2020 at 1:32 AM, _The Doctor__ said: @unused0 @unusedowl are you the same person? Nope! Quote Link to comment Share on other sites More sharing options...
Recommended Posts
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.