ZX-Chess II

Products: ZX Chess II
Date: 1981
Type: Cassette
Platform(s): TS 1000
Tags: Chess, Game

ZX-Chess II is a chess-playing program that stores its entire chess engine as machine code embedded within REM statements and string data, launched via PRINT USR 20480 at line 2. The machine code at address 20480 implements move generation, position evaluation, and a variable-strength minimax search selectable from level 0 through level 6. The program supports three modes — Play, Analyse, and Load — and allows the user to choose color, specify the move number, and set which color moves next, making it suitable for analyzing positions mid-game. The BASIC loader is minimal by design, with the bulk of the program’s logic residing in the raw byte sequences packed into REM lines and data lines that follow line 2.


Program Analysis

Program Structure

The program is essentially a two-line BASIC wrapper around a large machine code payload. Line 1 is a SAVE command used to store the program, and line 2 executes PRINT USR 20480, which transfers control to machine code loaded at address 20480 (decimal). Everything from line 50077 onward consists of REM statements and apparent BASIC lines whose tokenized content is actually binary machine code data — a common technique for embedding Z80 routines directly in the BASIC program area.

Machine Code Embedding Technique

The overwhelming majority of the listing — lines 50077 through the end — is not intended to be executed as BASIC. Instead, these lines serve as containers for raw Z80 machine code bytes. The ZX81/TS1000 BASIC interpreter stores each line with a length field, and the tokenizer encodes keywords as single bytes, meaning arbitrary binary sequences can be stored as a mixture of keyword tokens and literal character bytes inside REM statements or within string and numeric operand fields. The chess engine exploits this by placing its entire game logic — board representation, move generation, evaluation, and search — into these binary sequences.

Entry Point and Initialization

Line 2 uses PRINT USR 20480 to call the machine code. Address 20480 (0x5000 hex) places the code just above the system area typically available on a 16K machine. The PRINT wrapper means any value returned by the USR call will be displayed, though in practice the machine code takes over the display entirely and implements its own I/O loop, presenting the prompts visible at the end of the listing: mode selection (Play/Analyse/Load), color choice, skill level (0–6), color to move, and move number.

User Interface Strings

Near the end of the listing, readable ASCII text appears embedded in the data: ZXCHESS-II, the prompt strings PLAY,ANALYSE OR LOAD (P,A,L)?, YOUR COLOUR(B,W)?, LEVEL OF PLAY? (0-6), COLOUR TO MOVE NEXT?(B,W), MOVE NUMBER? (NN), and ZXCHESS PLAYER. These are stored as literal byte sequences within the machine code data and are output directly by the Z80 routine rather than by BASIC PRINT statements.

Notable BASIC Idioms

  • PRINT USR 20480 on line 2 is the canonical single-line BASIC launcher for a self-contained machine code program.
  • The high line numbers (50077, 9783, etc.) push the REM/data lines far up the line-number space, making accidental RUN or GO TO into them less likely during normal execution flow.
  • The SAVE "ZXCHES[S]" on line 1 saves the entire program including its machine code payload.

Chess Engine Features

Based on the user-facing prompt strings embedded in the binary data, the engine supports:

  • Three operating modes: Play (human vs. computer), Analyse (computer evaluates a position), and Load (load a previously saved game or position).
  • Color selection: the human player can choose Black or White.
  • Six skill levels (0–6): almost certainly controlling the search depth of a minimax or alpha-beta search.
  • Mid-game entry: prompts for the color to move next and the move number, allowing analysis or play to begin from an arbitrary position.

Binary Data Anomalies

Because the listing is a disassembly of tokenized BASIC bytes rather than source text, many lines appear as nonsensical sequences of BASIC keywords (RETURN, TAN, LN, INKEY$, GOSUB, ACS, RND, etc.). These are not actual BASIC commands — they are the interpreter’s keyword tokens (each a single byte in the range 0xA0–0xFF on the ZX81) being misread as code. The true content is Z80 opcodes and data bytes that happen to share the same byte values as these tokens.

Block Graphics in Data

Block graphic characters (▘, ▝, ▀, ▖, ▗, ▄, ▌, ▐, ▞, ▚, ▛, ▜, ▙, ▟, █, ▒) appear throughout the data lines. On the ZX81/TS1000, block graphics occupy character codes 128–143 (0x80–0x8F), and their presence in the binary payload simply reflects Z80 instruction bytes or data values that fall in that range — they carry no graphical meaning in this context.

Program Size and Memory Considerations

The sheer volume of data lines indicates a substantial machine code routine. A chess engine with a six-level search requires significant code for move generation, legal-move filtering, board evaluation, and the search tree itself. Fitting this into a 16K machine alongside the BASIC system variables, display file, and a usable stack represents a careful memory layout, with the code beginning at 0x5000 to leave the lower RAM for system use.

Content

Appears On

Related Products

All the features of ZX Chess I, plus more. Has a book of 32 opening moves. Can play at 7...

Related Articles

Related Content

Image Gallery

Source Code

   1 SAVE "ZXCHES[S]"
   2 PRINT USR 20480
 65283 RETURNZCE RETURNTASN ## RETURNOASN #INKEY$ TAN LN [G]##LN [G]#TAN .LN [G]## RETURN0TAB #INKEY$ TAN LN ▌##)#-/E£RND7LN #▒ LPRINT 
 50077 REM 5 #60#TAN 5 PAUSE ## RETURNX""5 #▞##WC▝Q 7( RUN  LPRINT #▒INKEY$  CLEAR5 RNDUQ TAN 5P#Q4#█#LN [G]# CLEARACS ▘#TAB #INKEY$ # RETURN0TAB #INKEY$ TAN ...............) #5ASN #▘*  GOSUB [K])4#5#INKEY$ ▘*  GOSUB [K]TAN .(C)1981
 9783C COMPUTING.LN  LLIST ▒<>5##▘00VAL LN [T]#AT <= CLS NEWRND4▖ CLEARACS ▘EXP ▀# RETURNA4▀:0▖#LN [G]##LN [G]#2 STR$ [J]LN [G]#[J]LN [G]#<> NEW#LN  PRINT INKEY$  LET  NEW█Y-C▝YXLN [G]#<>7<>7SGN 0ACS #CINT Y#LN (INKEY$ # NEW▘4[M]LN ,,#/[2]SGN ACS #Y#CODE [G]# CLEARACS ▘#ATN ,,#U[W]# RETURN▘ASN ##UX#[R]ASN ##U[X]# RETURN COPYASN ### STEP ##LN [:]###[L]RND...[I][N][B][R][Q][K]I##VAL STR$  FAST PRINT LN INT #5▛#2▖▞▀Q 7( CLS▞▀Q█7( CLS14 LOAD 5▛#)B#▘/  GOSUB [K]5▛#)##▘/  GOSUB [K]5~~# FAST)##▘+  GOSUB [K] LPRINT )▗#▘+  GOSUB [K]5~~#)[B]#▘+  GOSUB [K]5 #)""#▘""  GOSUB [K]5 #▘█▘ GOSUB [K]5▛#)# ▞▒Y8 PRINT [Q]# LET ;X( SAVE 5 SCROLL##J#TAN  FASTVAL STR$ <> FAST PRINT LN ##M▞PI<>E▞PI<> COPYC* NEW▛ FAST5 COPYINKEY$ - #;# LPRINT     <> LET <> LPRINT SGN AT  LPRINT TAN VAL STR$  PRINT U£##[J]2~~LN ▘#++ PRINT Y▛[>]# LET A ▞▌D( CLEAR FASTSGN D;#▗▄LEN ▖#-#; LET SGN AT TAN )RND#5 PAUSE #▘▌  GOSUB [K]TAN )RND#▘▌ 5[,]# GOSUB [K]TAN 5[B]#)RND#▘▌  GOSUB [K] 5[3]#)##▘▖  GOSUB [K]TAN  FOR )""# GOSUB [K]TAN 5VAL #)##▘▛  GOSUB [K]TAN 5[7]#)█#▘▖  GOSUB [K]TAN  FOR )█# GOSUB [K]TAN LN ""PI7U£#TAN 5##)[4]#▘▛  GOSUB [K]5##)4#▘▞  GOSUB [K]TAN 5[,,]#UP##2~~▞▝[J]LN ▘#LEN 0F#( PLOT  RETURN04▝Q 5▗#▘▝ ) # GOSUB [K]TAN 5RND#60#) PAUSE #TAN ▞▛Q 7( CLSTAN 5RND#LN [;]#5##LN [;]#5█#LN [;]#5█##[;]#LN  STEP RND:/▞3Q 7( CLSQ#7$4 NEXT 6(RNDTAN LN [T]#5▛#TAN  FASTSTR$ VAL <> FAST▘ █LN  INKEY$  RETURN▜4,,LN M? CLEARQP COPY/▀LN P? GOSUB #9RNDLN [X]▛TAN YAVAL ▞▒ACS 6*[<] IF :#=/▘▄( NEXT AT TAN VAL [*]▞▒ACS PIC▘▄ACS JACS ,( PRINT AT TAN  COPY COPY COPY COPY COPY COPY COPY COPY   YA▞▒ PRINT [Q]# LET W777( PLOT Y+M£#LN ""PILN [▒]PIW RETURN#S PAUSE  LET  LPRINT SGN AT TAN <>E4#LN [Z]#<>ACS ▖#TAB ▐#<>#▝LN [:]#6 PAUSE #<>#▀LN [:]#6 PRINT #<>C▝YXM POKE #) PAUSE #/5)▌ <>;LN [Z]#U£#<>[Y]▝)""#C:)[Q]# RETURN,C▛ RETURN#C▀)[V]#▘▌ LN 1#UV#[B]COS   # RAND PI         <>~~   LN [▒]PI<>[▒]PI▞~~TAN                                        5 LIST #) LET #▘,,  GOSUB [S]5 LIST #) LET #▘▒  GOSUB [S]<>E4#<>#▝<>#▀6 CONT #TAN U##5K#ACS █ RETURN▄SQR E CONT # GOSUB # LIST #[B] GOSUB #""<>E8#<>#▝<>#▀ GOSUB # INPUT #[B] GOSUB #""<># <>#▘#[B]COS 68#TAN #[B]COS  FAST<> LPRINT <>8#TAN ▘▝▝) PAUSE #LN [7]#LN [Y]# RETURN#4▌LN [>]#/ LET ><( GOSUB LN [>]#LN **#U PAUSE #TAN FY LN ▀##[T]C▀F.▖60#TAN E0#Y▖LN ▀#LN ,,# NEW# RETURNS#CODE # RETURN# LIST  RETURN# SAVE CHR$ 4TAN E0#LN ▀#760#TAN ,LN [Y]#<( RAND TAN LN TAN #LN **#TAN  FASTE0## NEW STEP #)4 ;      60# LPRINT TAN VAL STR$ ▞$5""W)█WVAL #INT # CONT # >#7* [,]/#7Q [/]  7J [0]£#7. [.]2#FO [/]Q#FXE0##FQ ▄▞#F4 [(]##F+ ▚##F6 [/]##F;["]#K#G* ▜E#G4 [£]PI#GO ▄ #G8 [/]##G;["]###HR █##SPI █▜#Z# █##INKEY$ # #[~~]##Y  8### █W##X  #### #[0]#;6 [£][6]#;F"#[C]#;8  [I]#;J~~ [O]#NY  [U]#NE  ""#NX    NO    NO  ABS #NX"   NO    NO   SLOW#*#(  REM #/7(  LIST #/I(  PLOT #/T(  UNPLOT #/#( ▝#/6( ▒#/G( :#;6( =#;7( ,#,7( 4#,G( A#,P( G#,Y( M#,#( S#.7( Y#.I( ##.K( ##3D( ##3N( ##4E( ##5F( ##5P( ##8I( ##8S( ##9J( ##9T( █#AK( ▚#AU( [£]#QRND    QINKEY$ [,,]   INKEY$ S[,,]#[2]#INKEY$ #  [8]#INKEY$ #  [E]#INKEY$ #  [K]#INKEY$ #▟ [Q]#INKEY$ Q  [W]#INKEY$ F  TAB #INKEY$ 4  COS #INKEY$ +  EXP #INKEY$ S  USR #INKEY$ J   AND #INKEY$ A   STEP ###   NEW###   GOTO ##Y   PAUSE ##O   SAVE ##E   RETURN##4  ▖##-  ~~###  (###  -###  0###  6###  C###  I###  O##RND  U##P  RND##E  ###3    #PI  ###3    #PI["] ##RND#  ##RND#  ##RNDP  ##RNDE  ##RNDR  ##RNDI  ▙#RND9  [▒]#RND0  [:]#RND#  [=]#RND#  [,]#RND#  [4]#RNDQ[$] [A]#RNDZ  [G]#RNDY  [M]#RNDX[,,] [S]#INKEY$ #  [Y]#INKEY$ #  CODE #INKEY$ #  ASN #INKEY$ #  SQR #INKEY$ #▟ CHR$ #INKEY$ Q[$] >=###   LLIST ###    ##    ##   POKE ###   IF ###    ##  ▞#INKEY$ A  £###  >###    ##    ##[,,] 8###  E###    ##  Q#RND#  W#RND#  PI#RND#  ##RNDQ  ##RNDG  ##RND6  ##RND/ [W]##RNDINKEY$   ##RNDPI  ##RND#  ##RND#[,,] ##RNDZ    RNDX[,,]                                                                                                                             ?$(#" DIM #,,##▝SGN #?▖#Z,,A#▌##▒[0]#▖[P]#▞ AND #> STOP#▛ NEW#▒$H#/###?U#,##▞ COPY,, COPY▛ COPY/▛##▞##▘##S▌ COPY" COPY/ COPY. COPY▝; COPY0 COPY 0 COPY▞)##▘ COPY* COPY▘▘ COPY  COPY  ## : COPY▒$##▘[;]#;▌##(▜#▛["]#=[>]# )▟#   COPY )[▒]#   COPY )[?]#   COPY .[-]# ▝ COPY ( COPY -[4]# ▒[8]#▝▘[F]#▝[K]#▝1 COPY3 COPY▝3 COPY▛ COPY▒-[W]#$PEEK # ▞""#~~▘ASN #8LN #9SQR #   COPY   COPY ( COPY ▞NOT # ▘ COPY - THEN#▝; COPY" COPY 1 COPY 1 COPY,,> NEXT #▛6#"## > RUN #▘$ RETURN#?$#▝▘▌#:▒# ; COPY▒▒ COPY; COPY/▘*#/0#:3#▝= COPY$ COPY $ COPY = COPY >A#~~▛K#▌Z# ##▒▘R#/W#▝3 COPY▛ COPY 3 COPY▒:##0## . COPY   COPY :## 0 COPY▝>##=## > COPY  ## ▘ COPY.▌##,,["]#▒[O]#▖VAL #>ATN #▘▘##▌>#▝?▙#<?#▒([▒]#▖ COPY ? COPY ▘[?]#▀([;]#.[6]#▛[L]#▘([3]#▖ COPY : COPY▘([D]#▖[I]#▘: COPY~~ COPY < COPY ( COPY ▌[S]# .[W]#▝:TAB #$ COPY $ COPY ▌TAN # < COPY▘▌ COPY▘ COPY~~▛<=#▌ PLOT #>▘#▝$ LLIST #▒ NEXT #▝▞ DIM #, LIST # ▝ GOSUB # ( COPY ▝ COPY   COPY $ IF # ( RETURN# ▝ COPY $ COPY ▛▒# ▀£# , COPY ( COPY <-#▝"0#: COPY   COPY) #E4#[B] GOSUB ###2▌LN ▘##M=#EG#UP# RETURN▘4£5 #6G#UK#[B]CA▘▖[B]4 SAVE U=#7[Y]C:▌C▌LN [T]#/ PRINT Y█MT#TAN LN [9]#K▘TAN # GOSUB ##ACS SS:#[B]C,,ACS TK POKE LN [T]#/ LOAD  FOR #▞ LN [9]#5 #,,#▗#,,,,68#5 █6[W]# LPRINT TAN 77# FOR 6G#[B]TAN MT#RTAN  PRINT 77 LET TAN ASN  AND # RETURNMTAB [6]RNDU##[B]COS U##[B]COS <>5##<># LN [:]#6 PAUSE #<>#▘LN [:]#6 PRINT #Y-M POKE #▘▌ )█#5 PAUSE # GOSUB [K] LPRINT  LPRINT #[1]#[F]#[J]M##5 CONT #TAN M##U##M##UQ####5RND#60#  ▘▌▌TAN                  U##5Q#[Y]K.5##▐#U##[Y]S(UR# RETURN▘C▞LN >=#### LPRINT  LPRINT TAN E4#TAN                                                                                                                                                                  LN ##5  6##6##6[U]#5##6##[J]M##)##LN [.]# GOSUB [K]5 #6E#68#   5ASN #62#5[V]#66#LN  THEN#EE#6SQR #UT#[B]ATN 3#Y▘MQ#      LN [/]#U[X]#[B]COS  RETURN COPYCOS UQ# RETURN▘CJE## GOSUB #[W]#[B] GOSUB #K#5  [B] GOSUB # FOR E[U]#[B] GOSUB #K#E[W]#)[0] COPY;6## FOR 5S COPY[B] GOSUB #6[U]#UQ# RETURN▒COS 5##[Y]S(U##[Y]SQR      5Q#O/N5  6##6[U]## REM # GOSUB #6[U]#/)5  6##6[U]## REM # GOSUB #6##U9#[B]4▞EA#68#E8#E8#6EXP #ESQR #6E#U###"#     C>U▝INKEY$  RETURN#K▖ RETURN1K GOSUB 57INKEY$ ACS  INPUT / NEWLN ,#/[C]U INKEY$ 56INKEY$ ACS X** RETURN#SQR <>E-INKEY$ <>ACS ▖#COS <>E▞INKEY$ <>▛ RETURN▘""U▞INKEY$ 5▝INKEY$ [-] PAUSE ## GOSUB # RETURN~~""57INKEY$ ACS  PLOT LN £#U INKEY$ M▖INKEY$ U▞INKEY$ M INKEY$ M▝INKEY$ U8INKEY$ M7INKEY$ LN £#U▖INKEY$ M INKEY$ E0INKEY$ ) IF  COPY;60INKEY$ Q 7Q TAN U6INKEY$ ACS #""UDINKEY$ [B]""▘▀ COPYU INKEY$ ▟#M▖INKEY$ <>E▖INKEY$ <>4##/2<>E▖INKEY$ <>▖INKEY$  RETURN-C$ RETURN#C,,LN [O]#[B]4NU▖INKEY$ █M▖INKEY$ 5 INKEY$ [Y]4**[(][(]M▝INKEY$ 57INKEY$ QRNDLN £#5 INKEY$ [J]M7INKEY$ LN £#LN ##U▖INKEY$ # AND ##TAN #I#A#RND#Z#▝# #▘#/#█#EXP ###[V]###  ##LN #[0]#  █ £ [,,])▘▘ █▘▘#[B] ▛▌ ▒[Y]  LOAD # LIST  PAUSE     6##,M    ## ▘▝▌(4█▘▝▌(4█ COPY6HU#      NO6H            ,," PRINT  RUN ~~ PLOT ▘ COPY FOR  POKE ▒<+£ SAVE  GOSUB ,,"~~~~ RUN  PRINT  PLOT  PLOT (▒ ▖  ▖▒▖▖▒▒ ▘▀▀▌,,~~        ▘        #[G][4]#K▙$))) #COS #LN ### PRINT #G###[(]#####[,]#CHR$ # RAND ###QIKA#Q0KO#AAXF3Q▖▝▀▌▞▀▝▖ COPY COPY COPY COPY COPY COPY COPY COPY COPY COPY COPY COPY COPY COPY COPY COPY COPY COPY COPY COPY COPY  ▀  ▀   COPY COPY ▘▘: ▘ £ COPY COPY     [~~],,  COPY COPY[£]      ,, COPY COPY   [,,]     COPY COPY [,,]  [,,]    COPY COPY ▟▟ ["]▟▟▟ COPY COPY   ▐ [£][:]  COPY COPY COPY COPY COPY COPY COPY COPY COPY COPY COPY COPY COPY COPY COPY COPY COPY COPY COPY COPY COPY                                                                                     [N]##   ##  RUN INKEY$ ▝X? SAVE # CONT #▌▌ PAUSE #RND#[I]###[7]# CLEAR#TAB INKEY$ TAB INKEY$ TAB INKEY$ TAB INKEY$ TAB INKEY$ TAB INKEY$ TAB INKEY$ TAB INKEY$ TAB INKEY$ TAB INKEY$ TAB INKEY$ TAB INKEY$ TAB INKEY$ TAB INKEY$ TAB INKEY$ TAB INKEY$ TAB INKEY$ TAB INKEY$ TAB INKEY$ TAB INKEY$ TAB INKEY$ TAB INKEY$ TAB INKEY$ TAB INKEY$ TAB INKEY$ TAB INKEY$ TAB INKEY$ TAB INKEY$ TAB INKEY$ TAB INKEY$ TAB INKEY$ TAB INKEY$ TAB INKEY$ TAB INKEY$ TAB INKEY$ TAB INKEY$ ##[7]# CLEAR#TAB INKEY$ TAB INKEY$ TAB INKEY$ TAB INKEY$ TAB INKEY$ TAB INKEY$ TAB INKEY$ TAB INKEY$ TAB INKEY$ TAB INKEY$ TAB INKEY$ TAB INKEY$ TAB INKEY$ TAB INKEY$ TAB INKEY$ TAB INKEY$ TAB INKEY$ TAB INKEY$ TAB INKEY$ TAB INKEY$ TAB INKEY$ ##[7]# PRINT #TAB INKEY$ TAB INKEY$     [N]##   ##  RUN INKEY$ ▝X? SAVE #[K]#▌▌ PAUSE #RND#[I]###[7]# CLEAR#TAB INKEY$ TAB INKEY$ TAB INKEY$ TAB INKEY$ TAB INKEY$     [N]##   ##  RUN INKEY$ ▝X? SAVE #[8]#▌▖ NEXT #INKEY$ #[I]###[7]# CLEAR#TAB INKEY$ TAB INKEY$ TAB INKEY$ TAB INKEY$ TAB INKEY$ TAB INKEY$ TAB INKEY$ TAB INKEY$ TAB INKEY$ TAB INKEY$ TAB INKEY$ TAB INKEY$ TAB INKEY$      ▒EXP ( ▒EXP ( ▒EXP (0## ▝ ####W#[T]##*## STEP # 4[6]*5J[U]8[U]RND#######RND###################################################  COPY  COPY  COPY  COPY  COPY  COPY  COPY  COPY  COPY  COPY  COPY  STEP  [X] COPY COPY  COPY  COPY  COPY  COPY  COPY  COPY  COPY [I][I][I][U][U][U][U][U][U][U][U][U][U][U][A][U][6]**668AAJ############################################################XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX#############NIII▌#NX ~~#N# ?#N# =#N# ;#ND 2#N3 C#N+  #NO H#NP M#Q5▘R#QE W#QY INKEY$ #Q# ##QPI 7#QI~~##Q7 ###Y ###INKEY$  ####(###Z(#### ###Z ###O ###D #### ▙### ▗##U,,[£]###([)]##PI([-]###([.]###([4]###([9]###([E]###([J]###([O]###([T]###([Y]###(####(COS ###   ## ABS #,7 NOT #,G >=#,P  LPRINT #,Y  NEW#,#  FOR #,9  LIST #,K  PRINT #4E  IF #4O  COPY#5F   5P ##6F 1#6H ▖#6; :#6G <#6/ /#67 B#AK G#A0 L#A9 LN #I; ,,#IQ[~~]6#IINKEY$  Q#I#["]##I. V#JT RND#U#["]##U# ##I# ##IA ##I. ##JT NOT #U# ##ND ##N3 ▟#N+ ▚#NO ["]#NP  FOR #U# ["]#6/ [(]#67 [+]#68 [8]#9J [D]#9T [I]#KU [N]#QRND [S]#Q# [X]#Q# TAB #Q# SIN #QG ATN #QR SGN #QP CHR$ #QO <=#QN ##SPI  FAST#PQ  REM #PR  LOAD #PO  POKE #PN [N]#SPI ##SPI [X]#SPI ▒#Q# $#QG >#Q6 *#Q/ 0#QR 5#QP A#QO F#QN   SPI P#PG U#P7 Z#P, SGN #SPI   PRND ##P#["]##PE ##PG ##P7 ##P, SGN #SPI ##Q/ ##QR ##QP ##QO █#QN   SPI ##SPI [?]#QR ##SPI [;]#8Q [2]#8Z   8# LEN #8#▟[H]#8; [M]#F- [R]#FN [W]#FY A#FR [7]#JS["]ACS #JT SQR #KU [C]#RND#  AND #KU ##RND# ####  DIM ###▐[2]###[£]STR$ ###[,,] SAVE ###  CLEAR###  AND ##U ▛#H# £#I;  SLOW#IQ  NEXT #IINKEY$ [,,].#I# 4#IU 9###  SAVE ### )###▟O##RND T##P Y##E ###PI ###T -##K -###$#### #### #### ####$▛### 4### ###RND ###P ###E ▜##PI [,,]##T ###K [<]#-+ ##8H [,,]#8;[$][6]#8. [B]#8I [G]#8, [L]#89 [Q]#87 [V]#AK([:]#AU( THEN#RPI[,,]ASN #RINKEY$  INT #RND# USR #RND# [1]#RND# ""#RND#[£] STOP#RNDP  CONT #RNDE  GOSUB #RND3  PAUSE ### VAL ###  UNPLOT ### ▘##Y▌#,7 ~~#,G ?#,P =#,Y ;#,# 2#,9 7#4E C#4O H#5F M#5P R#6F W#6H INKEY$ #6; ##6G ##6/ ##67 ##I; ##IQ[~~]##IINKEY$  ##I# ##IA ##I. ##JT ##KA ##K0   U#   U# [£]#I. [)]#JT   U# [.]#IA [4]#I. [9]#JT   U#   QRND [O]#NF   QRND [Y]#QRND   RINKEY$    RND#   RINKEY$  ABS #P#["]  PE >=#P#  LPRINT #P#▟  PE  FOR ###   ##  IF ###RND  ##  COPY###   ##                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       ▘▝▀▀▝▘   ▘▀▖▌▌▖▀▘  ▝▖▞▛▛▞▖▝  ▀▌▛▒▒▛▌▀  ▀▌▛▒▒▛▌▀  ▝▖▞▛▛▞▖▝  ▘▀▖▌▌▖▀▘   ▘▝▀▀▝▘  ▞#5 #Q COPY7( CLS▞▒<>5 #<> COPY<>##<>Q3▘<>Q#▟<>QD <>QN <>QX <>Q# <>7( OR TAN  CLEARE=# CLEAR#[1] CLEARACS /# CLEARE/##[?]#SGN STR$  CLEAR#█#▄#,[B]C$ RETURN COPYC55M#[I]ACS #C;[I]▒U=# RETURN▘C2LN [P]#4"U=# RETURN▞C▖ RETURN▀KUSR  CLEAR7(ACS SGN U=# RETURN▞""#### RETURN▀K>▒4$▒LN [P]#UM#ACS #4▝([L]SGN TAN ▒C▞▒LN [P]#/ABS LN  PAUSE #/LN U£#5M#ACS X** RETURN#SQR <>E4#<>ACS ▖#COS <>E>#<>▛ RETURN▘""U>#[<] PAUSE F# GOSUB # RETURN~~""YRND▒LN [P]#U£#M(#U>#M£##UO#▒LN [P]#U(#M£#EC#  FFFF[J]#F#6C#TAN ,ACS #""LN 0#""▘ COPY▝Y▀STR$ ▄#M:#, NEW# RETURN▖4H#▟#,[B]4A# RETURN▀C▌LN 0#40( GOSUB #[)]#YRND▒LN [P]#U:#M£##▟#[J]▒LN [P]#LN ##SGN ACS #COS #M£#▘▘▀Y UNPLOT /[R]<>EC#EE#6C#<># <>#▘[J]#7#7U£##7#7▒#76E#TAN  76E#TAN  GOSUB #E#E2#77#7#762#6C#)+#,[B]C0 RETURN COPYC/5L#[I]ACS #4([I]MM# NEW▛M=##M£#LN ##0# RETURN#TAB  POKE #TAN VAL ▞([J]   M/# CLEARE/##I#SGN STR$  CLEAR#█I RETURNG#▟#, RETURN COPYC▒[B]4,# RETURN,,K LOAD  CLEAR7( SLOWSGN AT [J]TAN SGN AT TAN SGN AT  PLOT ▘TAN ▚##/ FOR #UM#[G]ACS #C LLIST # NEW▛▒# RETURN,,SV▒ RETURN▌C TO ACS #C▖ RETURN▞CNOT ▒ RETURN$S6▒ RETURN▀CLN ACS #C[Y] RETURN▘4[U]UM#ACS #4▛▒ RETURN?S[I]/[R]▒ RETURN?K[B]/[K]▒ RETURN▖4[4]/[D]▒ RETURN▝4[;]/[6][J]M##Y#M##)+#,[B]C? RETURN COPYC"MM# NEW▛M=#LN STR$ #0# RETURN#TAB [U]#TAN  CLEARE=# CLEAR#[1] CLEAR▌▌5M#ACS /# CLEARE/## RAND #SGN STR$  CLEAR#█[J]M/(#M£##▄#, RETURN COPY4▞ CLEAR7( SCROLLSGN TAN 5/#ACS #4#5USR :;ACS ##▚#,[B]C##UM#[G]ACS #CPI# NEW▛ RETURN▞4:UL#[G]ACS #ASN 2#Y▘MV#5/#ACS #4▝ACS EXP ACS  RETURN5##[3]# NEW▛ RETURN▘C[4]UM#[G]ACS #C[/]ACS  CLS5/#ACS [:]/ THEN5/#ACS LEN 5###ACS  CLEARU£##U=# RETURN▀ AND $# RETURN▞ASN $#5/#ACS #TAB ▌#ACS  NEW▛ASN ▌#▒ RETURN▖4<▒ RETURN▖ASN ▌# RETURN▌TAB $#5£#ACS  RETURN#▌# RETURN▀4>▒ RETURN▘CS RETURN▌TAB $#5£#ACS  RETURN#▌#▒ RETURN▀4,,# RETURN▌ AND $##▌# RETURN▖4,,# RETURN▌ AND ▌##$# RETURN▌ASN ▌# RETURN▘TAB $## RETURN▌ AND $#UM#[D]ACS #TAB $#5/#ACS  RETURN#▌#SGN  LPRINT  LPRINT TAN U## GOSUB #LEN #COS 5###ACS TAN  FASTVAL ACS  CLEAR# OR 5 ##▞C0# OR #>5 #U##[B]C###[Y]ASN Y#G( RAND 5█#U##[B]C##ACS [X] OR ## RETURN▞ OR C▒ OR JSTR$ VAL  FAST#U## GOSUB #LEN ##ACS [X]4▌ LPRINT AT SGN /▒H( CONT  LPRINT AT SGN Q ACS  CLEARG([I]5 COPY#U## GOSUB #LEN ##ACS [X] OR ## RETURN▞ OR C7 OR #H(▖▖G/=ACS  OR #MGQ HU##[B]CASTR$ VAL  FAST##ACS [X]4▌ LPRINT AT SGN /▒G( CONT  LPRINT AT SGN Q ACS  CLEARH([=]AT  LPRINT #M# OR [J]▞:5[G]##G( UNPLOT  OR : ACS  RETURN FASTACS  CLEAR## NEW#5 ##C▀5[N]#O NEW▛#ACS #C/Y▌▐# NEW LIST C▀G/,, GOSUB ## GOSUB #/"▐## GOSUB #[B]C▀G/ SAVE  LPRINT U:#ACS INKEY$ C~~(▘TAN G[Y]4 RAND ###($5###5 #ACS AT ▖H/ SCROLLH[Y]4 GOSUB ###<>E:#<>5[G]#)[N]#ACS #4▘ FOR # FOR # OR  NEW▛M=#<>E=#<>5  LN (#C/ GOSUB #█#[W]S▝##LN (#C?█#[U]K CONT ### DIM ##[V]**#TAN #[X]SQR #TAN  OR ### FOR [B]C<[J]▌7[Y]C UNPLOT  GOSUB #M=#<>E=#<>##7#[P]4▘F6##[J]▞,,5V##G( UNPLOT LN [I]#LN 6#U## GOSUB #LEN #C##5##C#M:# FASTVAL LN ##LN [W]#CHR$ █ IF [P]#C0#UM#5L#[I]ACS ##455Y#[Y]S▘#UPI#CHR$ ▒MPI#<>E4#U:#<>[Y]▀41MINKEY$ ##[P]#5Z#[Y]S▝S▘#UPI#LEN ▖MPI#AT  LPRINT H([0]UINKEY$ #[B]C▖[J]MRND#US#[B]CODE [C]#LN ##URND#5Y#[-][-]5L##ACS #C▝ GOSUB #5##▚▚#I UY#▗#UZ#[(]#UPI#█ACS #C▝ GOSUB #LN ##U##LN ##U##LN ##;U##LN ## ;ACS #C▛ FOR 5  [B] GOSUB #) █;6W#TAN █;6W#TAN <>#Y▛[=]#[J]TAN <>##[J]TAN              - #*K▝- COPY;TAN [J]▒5  : 6##)3#▞▞, NEW▛ RETURN▘41,*S:#[B]C▛Y UNPLOT ▟##/:#/"#[B]C▞Y▖▟#/▘#Y~~▄#(CHR$ STR$  GOSUB ###▒##[B]4INKEY$ #[B]CPACS  LIST UP# RETURN=K▖Y▖/,,LN H#R*( CLEAR<>#▟##[B]C([W]C,,X[W]C▌LEN ▝[W]4▖Y▝▟##[B]C▀[W]S▝ACS  SAVE #[B]C▖Y▖▟##[B]4RND#[B]COACS  STEP UP# RETURN=K▖Y UNPLOT /"LN P#R*( CLEAR<># GOSUB #▟##[B]C([X]C,,W[X]C▌CHR$ ▝[X]4▖Y RETURN▟##[U]S▝ACS  CONT #[B]C▖Y UNPLOT ▟#ACS #C7#[B]C([U]C,,W[U]C▌CHR$ ▝[U]4▖Y▝▟#ACS #C"#[B]C▀[U]S▖Y▖▟#ACS RNDC4#[B]C([V]C,,X[V]C▌LEN ▝[V]4▖Y RETURN▟#ACS #C▒#[W]S▖Y UNPLOT ▟#ACS SACS SACS SACS S#▒6##5  SGN #CHR$ V# RETURNB4▖STR$ #,# RETURN GOTO TAB ###M##TAN Y▛[7]COS  RETURN▘TAB ▒#U£##U:#[S]COS UP# RETURN~~K9#ACS #C▝CHR$ M RETURN6C,, RETURN7C▌▞ RETURN#▜#▞▖5:#[-] RETURN GOTO ASN ## RETURN LLIST ASN ##TAN  RETURN;SQR ACS #4+U## RETURN,S▛ RETURN1SQR ▞ /, RETURN/SQR ▞▌/<U## RETURN#S▖▞EXP /▒ RETURN#SQR  RETURN#**▞PEEK U£#█ RETURNBSQR  RETURN8**▞ POKE #▜# RETURN▖S6 RETURN▞C"UP# RETURN▛KD▞ LIST /#ACS #C▌LN [*]#/BUP# RETURN2SQR ▞ POKE /#ACS #C▖▞▒/+UP# RETURN,,SQR ▞ SAVE /*ACS #COS Y RAND ACS #LN 3#TAN /~~#XACS Z▗▗ GOSUB #█#UP# RETURN?KAU:#ACS #C▝CHR$ 2 RETURNGC▖ RETURNH4+CHR$ ~~ACS #C▝LEN M5 ##▝▞ CONT #ACS INKEY$ C▝ GOSUB #ACS #C▝ GOSUB #5##▚#TAN U:#ACS #C▝CHR$ #▞£ RETURN.COS ▞▞TAN U###[J]2~~LN ▘###U###[J]LN ▘#[(] PAUSE TAB # GOSUB ###[>] PAUSE ASN # GOSUB #█ GOSUB #LEN :#U##5##ACS #4▘G)+##5USR :;█#U##ACS ##C▝ GOSUB #▗▗M##[J]MZ#TAN [▒]<6##TAN E4#77M:#7#<>E£#<># ACS #4▖ACS  NEWACS <=# NEW▛ RETURN▘C3 RETURN▞CH CLEARE:# CLEAR# <>Q  : LN [£]#ACS #4C# NEW▛CODE <#TAN U:# RETURN#K▖ RETURN1K AND ACS  INPUT ACS PEEK #J#5##ACS #C▘GU:###J#E4#)▛ ;#~~#E4#77M:#7#<>E:#<># :▘LN [£]#ACS #46# NEW▛ RETURN▞C9ACS #40 CLEARE£# CLEAR# # NEW[?]<># ACS #43 NEW▛CODE <#TAN ACS [<]#[0]#ACS [.]#[4]#5##ACS #C▘GU£###[0]#E4#)▛ ;###E## GOSUB #** LPRINT  LPRINT TAN 9#[B]""EA#68#TAN ▞~~ RETURN#S▝▞:UR#XACS Z▗▗ GOSUB #█ACS #C▝ GOSUB #ACS INKEY$ C▝ GOSUB #5##▚#▒M=#<>E=#<> GOSUB #ACS INKEY$ C▝ GOSUB #5###▚#TAN R#XACS Z▗▗▗CHR$ (ACS #4▝ GOSUB #5##▚#TAN  GOSUB #2#)  ###7##F#[J][S]COS VAL <> LPRINT LN TAB #C▀E2#▒#7#[J][U]C$STR$ <> LPRINT  FASTLN TAB ##▒[W] LPRINT S▞#F#### FOR ###UL#5##[B]C▘7) ##,MM#LN 0#TAN Y▘MR#[J]M##MU#5     E##6[W]#E2#64#LN A##7##[B]C# GOSUB #4#E2##7#LN ▌#LN ▙#C▞LN ###[Q]#UR#5Q#[Y]ABS ##5L#Y█[I]#ACS #4▖5P#O<>E6#<># <># COPY<>#▖<>#▀<>7<>7<>66#5R#O[J]MU#E##776##LN  THEN#LN ###[K]#UU#[B]46LN ▙#[B]) █ASN ▗#UR##- #▗#L#ACS █#2 /XUR# RETURN▘COS LN >=#<>E6#<>#▀<>#▖5  [B] GOSUB # FOR #[(]#LN I#UR#5##[Y]S$5Q#[Y]4▛UV#[B]TAB  LLIST #LN ## GOSUB #W#5U#ACS LEN <>E6#<>#▝<>#▘[B] GOSUB #ABS [Q]#<>#▝<>#▘LN  SLOW#5  [B] GOSUB # FOR <># <># COPY[B] GOSUB #K[<]UR# RETURN▘ATN  CLS##[Q]# FAST<>4-E##<>~~7<>▘W[B] LPRINT TAN  CLEARE4#LN ▜# NEW▛""E## CLEAR▀#TAN LN ## GOSUB #4#[B] GOSUB PICOS ,, FAST GOSUB #8##7# FOR [B] GOSUB PI,,4 PLOT 7 GOSUB #4#SGN #7#TAN    UQ#5#UQ#5##[Y]KCU##▗#I UL#[B]C▛ FOR 5  [B] GOSUB #) ▟; FOR <>E6#<>#▝<>#▘[B] GOSUB #K▖LN H#TAN  GOSUB #W#UL# INPUT █LN ▐#MV#TAN ##LN >=####[J]MS#M##M##▞#)+#, NEW▛M=# RETURN▞4~~,5##ACS #C▘G#<>E=#,ACS #<>#5##▚##7▚#<(SGN  RETURNISQR U##ACS #C▝ GOSUB # RETURN▌**MS#TAN Q#5 █6[W]#TAN ▝Y▝MQ#TAN 5L#Y█[I]#ACS #C▖5P#PE6#FF66#5R#PE2#F#F# GOSUB #E#F#F#62# GOSUB #4#E##FF6##LN ##TAN R# RETURN▘""       TAN U##5Q#[Y]K.5##▐#U##[Y]S(UR# RETURN▘C▞LN >=##U# LPRINT  LPRINT TAN E4#TAN    <>E4#<>#▝LN [:]#6 PAUSE #<>#▀LN [:]#6 PRINT #YHM POKE #        E8#U##M##U##M##TAN UR# RETURN▝4£ CLEAR5##TAN #E4#[B] GOSUB ###2▌LN ▘#AT  LPRINT #ACS #4▘▀# NEWZ[U]ASN ##7ACS #C INPUT Y█MT#TAN <<<<< ZXCHESS-II >>>>> (EXPERIMENTAL)PLAY,ANALYSE OR LOAD (P,A,L)?           YOUR COLOUR(B,W)? LEVEL OF PLAY? (0-6) COLOUR TO MOVE NEXT?(B,W) MOVE NUMBER? (NN) ZXCHESS PLAYER               17   
   0
   0
   0

Note: Type-in program listings on this website use ZMAKEBAS notation for graphics characters.

People

No people associated with this content.

Scroll to Top