--- title: "Chess" id: 51714 type: "computer_media" slug: "chess-2" url: "http://localhost/computer_media/chess-2/" markdown_url: "http://localhost/computer_media/chess-2.md" published_at: "2023-08-13T23:14:28+00:00" modified_at: "2026-04-02T16:31:24+00:00" author: "David Anderson" featured_image: url: "http://localhost/wp-content/uploads/2019/02/20230809-041332.jpg" excerpt: "A complete chess engine squeezed into a single REM statement." category: - name: "Archived Media" slug: "archived-media" taxonomy: "category" url: "http://localhost/category/archived-media/" post_tag: - name: "Artic Computing" slug: "artic-computing" taxonomy: "post_tag" url: "http://localhost/tag/artic-computing/" - name: "Downloadable" slug: "downloadable" taxonomy: "post_tag" url: "http://localhost/tag/downloadable/" - name: "TS 1000" slug: "ts1000" taxonomy: "post_tag" url: "http://localhost/tag/ts1000/" model: - name: "Timex/Sinclair 1000" slug: "ts-1000" taxonomy: "model" url: "http://localhost/model/ts-1000/" genre: - name: "Chess" slug: "chess" taxonomy: "genre" url: "http://localhost/type/chess/" media_type: "Cassette" download_url: "https://archive.org/download/timex-sinclair-software-archive/Chess (198x)(Artic Computing)(UK)(TS1000)(Cassette).zip" mediadate: "198x" producer_company: - id: 10657 title: "Artic Computing" type: "company" url: "http://localhost/company/artic-computing/" related_products: - id: 11547 title: "1K Chess" type: "product" url: "http://localhost/product/1k-chess/" - id: 12135 title: "Chess and Chess Clock" type: "product" url: "http://localhost/product/chess-3/" media_type_tags: "Chess" --- # Chess This chess program stores its entire game engine as Z80 machine code packed into the REM statement at line 1, with only two additional BASIC lines needed: a SLOW command to enable the display driver and a RAND USR X call to transfer execution into the machine code. Chess piece abbreviations Q, R, B, N, P, K are visible within the REM, likely corresponding to piece-type identifiers encoded in the engine’s data tables. *** ## Source Code ``` 1 REM FASTVAL LN [V]▝###=C RUN LN [X]▛#AT VAL [T]C▞£( IF AT / SCROLLAT LPRINT #TAN ▘1▒LN ▙RNDF:ALN ▙RND7#CHR$ 0#:"[J]▟( CLEARLEN #F[-]##A##▞▘ NEW# RETURN C=▖ RETURN#C? RETURNBS"#▖IR▚ACS #C▝▞ ##TAN ▘" COPY PRINT PLOT POKE £\~~$ NEXT + FOR * DIM RUN \,,"\~~£QRBNP[J]M#RND# NEW# RETURNPC#:▘▞▒5 SCROLLRND RETURNNC-I TO RETURNKC(# RETURNQC"▞▖ RETURNRC▌I STOP RETURNB""#▚ PRINT FASTVAL RETURNZS2 RETURN[=]K,LN [V]RND RETURN▝K< PRINT LN [$]PI LET RETURN C\~~AT LPRINT # RETURN▘C▌ LET / AND AT LPRINT LET 7(PEEK TAN # NEW█5 SLOWRND4▝I LET -▀#▚ FAST PRINT RETURNZS4 RETURN[=]K0LN [V]RND RETURN C0 RETURN▘4)# RETURN▘4£LN [$]PI# RETURN#S< RETURN#K? LET LPRINT F+4ABS TAN # RETURN▘CODE [$]PI/ LET LET LPRINT #/VAL FASTVAL STR$ FASTVAL #5RNDRNDLN 8▛LN \~~##▜# LET LN \~~# LPRINT LN /#K▘█# LPRINT SGN ## FASTSTR$ LN /#K▘[(] PRINT LN RUN PILN ▘PIAT K▝▖▖SGN LPRINT # LPRINT LN IF PILN /#K▘▌LN IF PILN RUN PI#5WRND# FOR 5INKEY$ RND[Y]**▘▌ /"5#RND)#RND▘0 S▘ FOR GOSUB [K]TAN UR#LEN K5Y## GOSUB [L]F6█RND▞#5Y#7 FASTVAL #LN [Z]RND RETURN 4;LN RUN PI#LN RUN RNDLN RUN PILN ▙PIC\~~E█RND[X]4 PRINT AT LPRINT RTAN AT LPRINT (**[B]TAN ▞▌Y▒5[3]#7#( UNPLOT LN [4]RND RETURN▀4 INPUT 6▛RND#LN RUN RND5[5]#LN [4]RND RETURN▝ FOR K>=LN ▙PICNOT [T]4 SAVE LN COPYPI OR LN ▘PI OR S▒LN FOR PILN [-]PI/TAB ##>/ RAND 5#RNDP#WCOS ▐##TAN 5#RNDO#▐##TAN [J]MINKEY$ RND▞#5Y#7 FASTVAL #LN [Z]RND RETURN▀4D#6▛RNDLN RUN RNDLN ▙PIC1#-#LN COPYPI OR [B]LN PAUSE INKEY$ LN ▘PI OR ##>S▀LN [;]INKEY$ RLN PAUSE INKEY$ / THENAT LPRINT (COS UINKEY$ RND RETURN C RETURN5#RND#FF#-#>F##ACS #Q█C▝Q LN RUN PITAN 5R##LEN █#TAN E▛RND,##Q >#TAN NEW#5 PAUSE RND▞▌[Y]COS 7( CLS#TAN # OR M█RNDLN (PI OR #TAN 2 SLOW 3 RAND USR X ```