My first chess program was written during the end of 1977 in assembler for the Heatkit H8 (2MHz. 8080) and played it's first moves in januari 1978.
I don't remember much details, only that the move generator was able to generate 15k moves/sec. (rather fast for the hardware used). With full evaluation the program searched about 700 nodes/sec. The search depth was around 3 to 4 ply including quiescense. The playing strenght was approx. 1600 Dutch ELO.
Your first chess program.
Moderators: hgm, Rebel, chrisw
-
- Posts: 1597
- Joined: Thu Jul 16, 2009 10:47 am
- Location: Almere, The Netherlands
-
- Posts: 2929
- Joined: Sat Jan 22, 2011 12:42 am
- Location: NL
Re: Your first chess program.
Over summer holidays in 1992 or 1993 I wrote my first chess program in 8086 assembly language in a notebook. Then when I got home I implemented the thing (using inline assembly in Turbo Pascal).
I think I only had material evaluation and maybe piece square tables and no quiescence search. I discovered much later that there was a bug in the move generator caused by ignoring the piece type when setting the en-passant square, leading to hilarious results like 1. ... Qd7-d5 2. e5xd6ep
I think I only had material evaluation and maybe piece square tables and no quiescence search. I discovered much later that there was a bug in the move generator caused by ignoring the piece type when setting the en-passant square, leading to hilarious results like 1. ... Qd7-d5 2. e5xd6ep
-
- Posts: 4375
- Joined: Fri Mar 10, 2006 5:23 am
- Location: http://www.arasanchess.org
Re: Your first chess program.
I wrote a DOS-based program in Modula-2 back in 1991-2. It was never released. It had an integrated user interface written in assembly language, using direct video writes, supporting VGA and Hercules graphics modes (if you remember Hercules, you are an old-timer like me). The graphics was probably the best part of it, though, because the chess engine was junk, and like Dan, I was happy if it could solve mate in 4 or something like that. It tried to do some fancy dynamic eval with analysis of en prise pieces etc. - sort of like an eval function with integrated SEE. I'm ashamed to even show the code to this, although I still have the source.
Arasan was started from scratch some time later (1992?) and was C++, and more or less a conventional alpha-beta searcher with a hash table and null move, although I probably did lots of things wrong in my first implementation of this. Also it used Windows for UI (then a very new technology).
--Jon
Arasan was started from scratch some time later (1992?) and was C++, and more or less a conventional alpha-beta searcher with a hash table and null move, although I probably did lots of things wrong in my first implementation of this. Also it used Windows for UI (then a very new technology).
--Jon
-
- Posts: 318
- Joined: Thu Mar 09, 2006 1:07 am
Re: Your first chess program.
I wrote my first chess program "HLSchach" 1990 on the Atari ST.
It had a nice GEM GUI but the engine was poor and slow.
It was never released.
- The static evaluation was ok
- Alpha-beta search without any tricks
- No hash table
- Poor move ordering, but I tried to dynamically sort good moves to the top.
- The move generator kind of selected valid moves from the sorted list.
- Coded in C and German with a little English
Is anybody interested in the code? The zipped folder includes some pictures
and binaries and has about 400 kByte. Uncompressed source about 300 kByte.
Harald
It had a nice GEM GUI but the engine was poor and slow.
It was never released.
- The static evaluation was ok
- Alpha-beta search without any tricks
- No hash table
- Poor move ordering, but I tried to dynamically sort good moves to the top.
- The move generator kind of selected valid moves from the sorted list.
- Coded in C and German with a little English
Is anybody interested in the code? The zipped folder includes some pictures
and binaries and has about 400 kByte. Uncompressed source about 300 kByte.
Harald
-
- Posts: 878
- Joined: Thu Mar 09, 2006 11:21 pm
- Location: Nederland
Re: Your first chess program.
ah,Atari ST I had one tooHarald wrote:I wrote my first chess program "HLSchach" 1990 on the Atari ST.
It had a nice GEM GUI but the engine was poor and slow.
It was never released.
- The static evaluation was ok
- Alpha-beta search without any tricks
- No hash table
- Poor move ordering, but I tried to dynamically sort good moves to the top.
- The move generator kind of selected valid moves from the sorted list.
- Coded in C and German with a little English
Is anybody interested in the code? The zipped folder includes some pictures
and binaries and has about 400 kByte. Uncompressed source about 300 kByte.
Harald
You used metacomco C too?
I once ported the basic code from "Das grosse ComputerschachBuch" to C on the Atari.
Data Becker had some real good books those days...
-
- Posts: 1494
- Joined: Thu Mar 30, 2006 2:08 pm
Re: Your first chess program.
I took used an Ohio Scientific (C1P I think). It had a "massive" 4k bytes, and I wrote a chess program in interpreted BASIC for it. This was about 1980. When I had a co-op job during a break in college for GE, a boss there gave me some used memory chips allowing me to upgrade it to 8k! Wow! To fit the program I had to use direct peek and poke statements (to allow byte access since and INT would be too big!). And you had to put multiple lines together since breaking them up took too much memory. Even spaces took up memory so it was all squashed together. It only did 3-4 ply searches. I remember after a long drive on icy roads, a chess playing friend, very tired from the drive, agreed to play it. And for the first time, my program won a game!
-
- Posts: 5106
- Joined: Tue Apr 29, 2008 4:27 pm
Re: Your first chess program.
I tried a couple of time to write a chess program in basic, but did not succeed due to the small memory size of the TRS-80 I had which was 4k. The program as well as all data had to fit in 4k. I don't even know if that was even possible to do in Basic, but it was definitely not possible for my skill level at the time. 4k was the entire RAM in the machine and some of this was needed for the operating system (which was essentially the basic interpreter.)mjlef wrote:I took used an Ohio Scientific (C1P I think). It had a "massive" 4k bytes, and I wrote a chess program in interpreted BASIC for it. This was about 1980. When I had a co-op job during a break in college for GE, a boss there gave me some used memory chips allowing me to upgrade it to 8k! Wow! To fit the program I had to use direct peek and poke statements (to allow byte access since and INT would be too big!). And you had to put multiple lines together since breaking them up took too much memory. Even spaces took up memory so it was all squashed together. It only did 3-4 ply searches. I remember after a long drive on icy roads, a chess playing friend, very tired from the drive, agreed to play it. And for the first time, my program won a game!
Capital punishment would be more effective as a preventive measure if it were administered prior to the crime.
-
- Posts: 1354
- Joined: Wed Mar 08, 2006 9:41 pm
- Location: Morgantown, WV, USA
Re: Your first chess program.
My first program is almost chess lore. I started the obsession around 1996 and have yet to finish. Think at that time I was using a P133mhz system with 8 megs of ram, running Slackware.
Caught the chess bug in high school, and AI fascinated me. When I entered college that fall I came across crafty and I was hooked. Figured it would be a nice test bed for learning about AI systems and started reading. Talkchess has always been a great home for tossing ideas and have been following it since early on.
Still working on olympus, and have started from scratch at least a dozen times. Each time creating cleaner and more efficient code as my programming skills were getting better.
I've spawned a handful of side projects all with hopes of incorporating them into my engine. Namely my "Golden Tree" project which has had solid code for several years now. However the goal of the project has changed since I no longer want to record the best moves based on engine-X (started with crafty, then fruit, then Rybka) as I realised the database would corrupt the purity of my engine. Since it would be their moves it would play not my own so I stopped dedicating CPU time to it, and have let the code go idle till my engine is done. Then plan to start fresh and let my engine crunch away using the Golden Tree framework.
For a while even veared toward genetic algorithms and still plan to use some of that code for seed values in my evaluation function but no longer a driving force. Have also done some minor code first using GPGPU's then as it became more common CUDA and now OpenCL. But alas it was a dead end.
Have also been a big fan of egtb's. Though I no longer aspire to write my own I was lucky enough to get permission from both authors to use Nalimov code in my engine, but also plan support Gaviota as I respect that project as well. Have stable probing code with glue written so that will be a nice bump once the rest is done.
It's a wonderful field. I'm also interested in Go and have been following it a couple years as well via the comp-go mailing list. That engine is very dumbed down but oddly was able to get a working/playable version done even though my chess engine isn't complete.
My dream is to go to the WCCC in person someday and let my brain child play. Meeting fellow comp-chess enthusiast in person is another dream. Never been to Europe or Asia so it's something to look forward to.
Caught the chess bug in high school, and AI fascinated me. When I entered college that fall I came across crafty and I was hooked. Figured it would be a nice test bed for learning about AI systems and started reading. Talkchess has always been a great home for tossing ideas and have been following it since early on.
Still working on olympus, and have started from scratch at least a dozen times. Each time creating cleaner and more efficient code as my programming skills were getting better.
I've spawned a handful of side projects all with hopes of incorporating them into my engine. Namely my "Golden Tree" project which has had solid code for several years now. However the goal of the project has changed since I no longer want to record the best moves based on engine-X (started with crafty, then fruit, then Rybka) as I realised the database would corrupt the purity of my engine. Since it would be their moves it would play not my own so I stopped dedicating CPU time to it, and have let the code go idle till my engine is done. Then plan to start fresh and let my engine crunch away using the Golden Tree framework.
For a while even veared toward genetic algorithms and still plan to use some of that code for seed values in my evaluation function but no longer a driving force. Have also done some minor code first using GPGPU's then as it became more common CUDA and now OpenCL. But alas it was a dead end.
Have also been a big fan of egtb's. Though I no longer aspire to write my own I was lucky enough to get permission from both authors to use Nalimov code in my engine, but also plan support Gaviota as I respect that project as well. Have stable probing code with glue written so that will be a nice bump once the rest is done.
It's a wonderful field. I'm also interested in Go and have been following it a couple years as well via the comp-go mailing list. That engine is very dumbed down but oddly was able to get a working/playable version done even though my chess engine isn't complete.
My dream is to go to the WCCC in person someday and let my brain child play. Meeting fellow comp-chess enthusiast in person is another dream. Never been to Europe or Asia so it's something to look forward to.
-
- Posts: 1354
- Joined: Wed Mar 08, 2006 9:41 pm
- Location: Morgantown, WV, USA
Re: Your first chess program.
Thanks for sharing I had fun playing it.mar wrote: In case someone wants to see cheng1 in action and laugh, here's the link (Windows only).
http://www.mediafire.com/?fwqj59mzk14vv92
-
- Posts: 454
- Joined: Mon Nov 01, 2010 6:55 am
- Full name: Ted Wong
Re: Your first chess program.
Sounds like everybody here had an engine before I was born. My first chess engine starts in 2012.