100% found this document useful (1 vote)
100 views124 pages

Sargon A Computer Chess Program

Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
100% found this document useful (1 vote)
100 views124 pages

Sargon A Computer Chess Program

Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 124

Digitized by the Internet Archive

in 2017 with funding from


Kahle/Austin Foundation

https://archive.org/details/sargoncomputerchOOspra
SARGON
SARr.ON -- R LOCK O t A r. RAM

DRIVER CHARTR

ANALYS CHARTR

E
BLNKER
ROY ALT

SARGON
.!>efs"RP_-:
I NTERR -- CHARTR

-
PGIFND -- :Q_S �B!lD

INITBD
TBCPCL

CPTRM\' FNDK)V PINFNO PATH


I
L :_ATf�CK '

POINTS :�J\rj-Aci:
Xr.HNr. NF.XTAO
LIMIT
r - - - - - - - - - -- - - � -- - - - - - - 1

r.F.NMOV MPIF.f.E PATH


Al'l-10VF. I GENMOV


I
CASTLE ATIAC�-,

t=
I

ADMOVE
ADJPTR

-- ENPSNT r-- ADMOVE 1

AOJPTR I
I
I
INCHK -- :-AtTAC_K I

:.__ - - - - - - - -- - - - - - - - - - - - - - - - - - - - _J

- SORTM -- EVAL �10VE

c :��:q;
INCHK -- :_AITt-CK_'

PNFNn

POINTS [;;: Ait_Afl-:

XCHNI. --NEXTAD
LIMIT
IJNMOVF.
ASr.F.NO -- I JNMOVF.
llNMOVE

F CDMA T b BOOK

M AT E O � CO NVRT

RLNKER
r- OIVIOF.
L_ MLTPLY

INSPCF.
CllARTR
TBPL'MV

EXECMV -- MAKF.MV [ C ONV RT ,--- DIVIDE


L_ MLTPLY
BLNKER
INSPCF. -- MLTPLY
RITASN -- OIVIOF.

[
INOIK --�A fr)� � : r - - - - - -- -- --- - -- - - - - ;

PLYRMV CHARTR
OS PBRO CONVRT r- DIVIOE : DSPIRD
L_ MLTPLY 1
ASNTBI -- MLTPLY
I

VALt.«)V INSPCE -- MLTPLY 1

- - - - ·- - - - - - - - - - - - I
��OVE r

IJNMOVF. ATTACK PATH I

I 1ATTACK
l_ ATKSAV -- PNCK


r - '
INC!IK --lAJTA�K •
� - - -- - - - - - - - - - - - - - - _J

EXECMV -- �KEMV CONVRT r- OIVIOE


L__ 'ML TP 1.Y
BLNKER
INSPCE -- MLTPl.Y

PGIFND --�D�PBRD :

TBPLCL
DAN AND KATHE SPRACKLEN

HAYDEN BOOK COMPANY, INC.


Rochelle Park, New Jersey
ISBN 0-8104-5155-17
Library of Congress Catalog Card Number 78-64981

Copyrig ht © 1978 by HAYDEN BOOK COMPANY, INC. All rights reserved.


No part of this book may be reprinted, or reproduced, or utilized in any
form or by any electronic, mechanical, or other means, now known or
hereafter invented, including photocopying and recording, or in any infor­
mation storage and retrieval system, without permission in writing from
the Publisher.
Printed in the United States of America

3 4 5 6 7 8 9 PRINTING

79 80 81 82 83 84 85 86 YEAR
CONTENTS

Meet Sargon 1
The Ches board in Computer Graphics 3
Chess Piece Summary . . . . 6
Users Guide to Sargon 11
Notes on the Implementation of Sargon 17
Equates ..... . 19
Direction Tables 20
Point Value Array 20
Board Array 21
Attack List 22
Pinned Piece Array 22
Score and Ply Tables 23
Table Indices Section 24
Variables Section 25
Move List Section 27
Board Setup Routine 28
Path Routine 29
Piece Mover Routine ... ... .. . . 30
En Passant Routine 32
Adjust Move List Pointer .. . 33
Castle Routine ....... .. .. . 34
Admove Routine 36
Generate Move Routine . 37
Check Routine .. .... ...... .... ... ..
. . . . . . 38
Attack Routine 39
Attack Save Routine .. .. ... . .. . ... . . .. . . .. . .
. . . . . . . . .... .. ...... .. .. .. .....
. . . . . . 42
Pin Check Routine 43
Pin Find Routine 44
Exchange Routine 47
Next Attacker/Defender Routine 48
Point Evaluation Routine 49
Limit Routine 51
Move Routine 54
Un-Move Routine 56
Sort Routine 58
Evaluation Routine 59
Find Move Routine 60
Ascend Tree Routine 64
One Move Book Opening 65
Graphics Data Base 66
Standard Message 67
Graphics Variables 68
I/0 Macro Definitions 68
Main Program Driver 69
Interrogation for Ply & Color 71
Computer Move Routine 73
Forced Mate Handling 75
Tab to Player's Column 76
Tab to Computer's Column 76
Tab to Player's Column w /o Move No. . . .. 77
Tab to Computer's Column w/o Move No. 77
Board Index to ASCII Square Name ... ........... ... 78
Player's Move Analysis ....................... ........ ................ ........ ........... . . 79
ASCII Square Name to Board Index ...... .... .. ....................... .... . ... ....... 80
Validate Move Subroutine ......... . ................ ..... ...... . .... ............. 81
Accept Input Character ................ ... ............... . ......... ..................... 82
New Page if Needed ..... . ....................................... ....... ................................
. 83
Display Mated King ................................................ . ............ ........... . .......... 84
Set Up Position for Analysis . ............................. ......... ..... ...... ............... . 85
Update Positions of Royalty .. ......... .............. ........ . . . .... .. ... ............ .... 88
Set Up Empty Board ...................... ........ ... .......... .. . .... ..... . .......... ... 89
Insert Piece Subroutine ...................... ............... .... .... . ... . ..... .... .......... 91
Board Index to Norm Address Subr. . ..... . . . . . ... ...................... 93
Positive Integer Division ... ......................... .. . . . ... . ... ....... ..... ... 94
Positive Integer Multiplication ................. .......... .. . .......... ..... .......... 94
Square Blinker .... ........ . ......... ....... ... ... . .. . . . . .. .................... 95
Execute Move Subroutine . ...................... ............. . ... ... ...................... 97
Make Move Subroutine . .... . .......... . ... . ... .... ..... .. ... . ..... ...... 98
TDL/ZILOG Mnemonics Conversion . ... ........ ....... ...... 99
Index to Subroutines .. . ......... . ..... . . .......... . . .. ... ... .. ... ............ 113
MEET SARGON

SARGON is a computer chess program by Dan and Kathe Spracklen. In March


1978 it took first place in the first chess tournament held strictly for microcom­
puters. The tournament took place during the 21h days of the 1978 West Coast
Computer Faire and drew large crowds each day. When the last battle ended,
SARGON had won 5 games of 5 played. A tie existed for second place, with 3
programs scoring a total of 3 points in the 5 rounds.
SARGON is written in Z-80 assembly language using the TDL Macro
Assembler. The program occupies BK of RAM, which includes 2K of data areas,
2K graphics display and user interface, and 4K move logic. The move logic is the
heart of SARGON. It is displayed in the block diagram as the set of routines
called by FNDMOV (Find Move). FNDMOV controls the search for the comput­
er's best move by performing a depth first-tree search using the techniques of
alpha beta pruning. Listed first under FNDMOV's calls on the block diagram is
PINFND (Pin Find Routine). PINFND produces a list of all pieces pinned
against the king or queen for both white and black. Pinned pieces must be
treated carefully when analyzing battles engaged on the chess board, since their
attacking power may be an illusion. FNDMOV also calls POINTS (Point E valu­
ation Routine). POINTS performs a static evaluation and derives a score for a
given board position. POINTS takes factors of material, board control, and
development into account. Predominant in the evaluation is material. Material
scores must be adjusted to reflect unresolved battles on the chess board. It is the
function of XCHNG (Exchange Evaluation Routine) to judge the outcome of
these unresolved battles. The factors of development and board control are not
allowed to dominate the move choice. LIMIT is called to truncate the contribu­
tion of those factors to the score.
FNDMOV controls the generation of legal moves by GENMOV (Generate
Move Routine). GENMOV produces the move set for all of the pieces of a given
color. For each piece in turn, GENMOV calls MPIECE (Piece Mover Routine),
which generates all the possible legal moves for a given piece. MPIECE itself
calls a series of routines. PATH generates a single possible move for a given
piece along its current path of motion. ADMOVE adds a move to the move list.
CASTLE and E NPSNT (En Passant Pawn Capture Routine) handle the special
moves. After MPIECE has produced all legal moves, GENMOV calls INCHK,
which determines whether or not the king is in check.
Basic to the success of alpha beta pruning is the sorting of moves generated
at each ply level. FNDMOV calls SORTM (Sort Routine) to accomplish this task.
A sort is dependent on an evaluation, so SORTM calls E VAL (Evaluation
Routine). To evaluate a given move on the move list, EVAL first makes the move
on the board by calling MOVE. It is determined if the move is legal by calling
INCHK. Then, if the move is legal, it is evaluated by calling PNFND and
POINTS. Finally, EVAL restores the board position by calling UNMOVE.
The bookkeeping required by alpha beta pruning is for the most part coded
in line in FNDMOV. However, FNDMOV calls ASCE ND (Ascend Tree Routine)

1
to adjust all the parameters in transferring the parameters up one ply in the
tree.
At the bottom of FNDMOV's call list on the block diagram is BOOK. BOOK
provides an opening book of a single move. If white, SARGON will play P-K4 or
P-Q4 at random. If black, SARGON replies to any opening move with P-K4 or
P-Q4, whichever is most appropriate.
The move selection logic of FNDMOV is embedded in a whole network of
routines that forms SARGON's interface to the outside world. The DRIVER
routine initiates and coordinates the entire game. First on the block diagram in
DRIVER's list of calls is CHARTR (Accept Input Character). CHARTR is a
totally machine-dependent input routine whose sole purpose is to accept a single
character input from the keyboard. All machine-dependent aspects of SARGON
have been isolated in this manner to simplify conversion to Z-80 machines
running under different operating systems. Machine-dependent code appears in
only two other places. The first is the macro definition area, where all the output
functions are listed, and the second is in the routine DSPBRD (Display Graphics
Board and Pieces), where machine-dependent lines of code are clearly marked.
Next on the block diagram is ANALYS (Set Up Position for Analysis).
ANALYS allows the user to set the board to any position of his choosing. The
routine blinks the graphics board squares in turn, allowing the user to input a
piece of his choice or leave the contents unchanged. When the board has been set
to the desired arrangement of pieces, play of the game may be resumed.
ANALYS also provides a handy means of correcting a move entered by mistake.
As a part of game initialization, DRIVER calls INTERR (Interrogate for Ply
and Color). INTERR questions the player for his choice of white or black, and
allows him to select the depth of search. DSPBRD and INITBD complete ini­
tialization by setting up the graphics board display and internal board array.
PGIFND (New Page if Needed) and TBCPCL (Tab to Computer's Column) are
used to control spacing in the move list. The move list is displayed to the left of the
graphics board on the video screen.
The most important routines called by DRIVER are, of course, CPTRMV and
PLYRMV, which are control routines for the computer's and player's moves,
respectively. Central to CPTRMV is FNDMOV, the logic to select the computer's
move, which has already been discussed. Below FNDMOV on the block diagram is
FCDMAT (Forced Mate Handling). If the computer is checkmated, it acknowl­
edges the fact with a message displayed in the move list and by tipping over its
king. Assuming the computer is not mated, MOVE makes the chosen move on the
board array and E XECMV displays it on the graphics board. In displaying the
move, the piece first blinks a few times, moves to its new location, and then blinks
a few times again. The function of BITASN (Board Index to ASCII Square Name)
is to convert the internal move into a representation in algebraic chess notation on
the move list, then INCHK determines whether or not the computer should call
((Check."
When the opponent is on the move, PL YRMV controls the events. It calls
CHARTR to accept the move entry. ASNTBI (ASCII Square Name to Board
Index) converts the move to internal representation. Then VALMOV checks the

2
player's move for validity. If the n1ove is legal, E XECMV displays it on the
graphics board as in CPTRMV. PGIFND (New Page if Needed) and TBPLCL (Tab
to Player's Column) control spacing in the move list.

The Chess Board in Computer Graphics


A graphics display is an eye-catching addition to a chess program. For the
human player, a visual display of the board is far easier to relate to than a
scheme which creates an array using purely alphabetic characters. Graphics
display requires specialized hardware, and degree of resolution varies with
existing displays. The SARGON program features a complete graphics board
display. The video screen of the Jupiter III microcomputer, on which it is
implemented, has a 96 x 128 dot graphics matrix. The screen display is con­
trolled by a 2k area of static RAM. Information may be displayed on the screen
by storing the desired values in that 2k area. So only move instructions are
required for graphics display.
The SARGON display utilizes 96 x 96 dots for the graphics chess board. The
remaining area is used to list the moves of the game in algebraic chess notation.
The display is arranged as follows:

Sargon Player
"'$."""·>;"
. .,,,
";<;;�
:::::.

3
The empty board and move list area are displayed using the block move
feature of the Z-80. It requires no stored data. The memory required to store the
piece shapes has been kept to a minimum through use of the concept of boundary
and kernel dots.

Graphles Control
On the Jupiter III System, every graphics byte is of the form:

1X5 Y4 Y3 Y2 Y1 Yo

where: 1 - Indicates a graphics character


X - Is unimportant, may be 0 or 1 with no effect on the resultant
graphics character.

IF Y0 = 1

IFY4=1

"U�
IFY5 = 0
'Z
rf
"'""

���
Graphics Characte rs
By varying and ombining bits that ar turn d on, a tot.al of 64 differ nt
graphic characters may be produc d. For exan1ple:

1010 0101 gives

Now, 1010 0101 = 165 in decimal, which can be used as the ASC II code for
this character.

Pillar and Bar Formating


We've seen how individual dots are grouped into blocks of six dots each. The
blocks are then laid out like tiles to cover the display area. So a dot matrix that is
12 x 12 would look like:

Dot Column

2 3 4 5 6 7 8 9 10 11 12

2 1 2 3 4 5 6

5 7 8 9 10 11 12 2

6
Dot Row Block Bar
7

8 13 14 15 16 17 18 3

10

11 19 20 21 22 23 24 4

12

2 3 4 5 6

Block Pillar

5
CHESS PIECE Sl!MMABY
Each square is 12 x 12 graphics dots,
and 6 x 4 bytes.

No piece affects the 1 byte pillar at each


side of the square. So the true region
involved is 8 x 12 dots or 4 x 4 bytes.

Boundary dots are the color oppo­


site that of the square.

Kernel dots are the color of the


piece.

The top left corner of a square is the


norm of the square.
80H -White square
BFH -Black square I
I
\
\
\
\ \
It is also the base address of the square. I
I
\
\

Addresses of the alterable portions of I '

the square relative to the base address Base Base Bose Base
Base + + + +
are on the chart. The alterable portions 1H 2H 3H 4H
of the square are referred to as the field.
Norm
Base Base Base Base
+ + + +
41H 42H 43H 44H
-

Base Base Base Base


+ + + +
81H 82H 83H 84H

Base Base Base Base


+ + + +
C1H C2H C3H C4H

Field

For each type of piece the tables on the following pages will give the piece
shape and four field configurations:

Black on White
Black on Black
White on Black
White on White

All field values are in hexadecimal. Only the black on white configuration is
stored in the graphics data base.

6
KING

Black on "' hite White on Black

B0 BB 90 B0 BF B7 AF BF
BC BA BB 94 B3 B5 B7 AB
AF BF BF B5 90 B0 B0 BA
B3 B3 B3 Bl BC BC BC BE

Black on Black White on White


/
:;i:..� '
BF B7 AF BF B0 BB 90 B0
A3 B5 A7 AB 9C BA 9B 94
9A BF 9F BA A5 B0 A0 B5
BC BC BC BE B3 B3 B3 Bl

QUEEN

Black on White White on Black

90 B0 B0 90 AF BF BF AF
BF B4 BE 95 B0 BB Bl AA
BB BF 9F Bl B4 B0 A0 BE
B3 B3 B3 Bl BC BC BC BE

Black on Black White on White

AF BF BF AF 90 B0 B0 90
AB 9B B9 AA 97 A4 B6 95
B6 AF A7 BE B9 90 9B Bl
BC BC BC BE B3 B3 B3 Bl

7
ROOK

Black on White White on Black

B0 B0 B0 B0 BF BF BF BF
BA BE BD B5 B5 Bl B2 BA
B0 BF BF B0 BF B0 B0 BF
B2 B3 B3 Bl BD BC BC BE

Black on Black White on White

BF BF BF BF B0 B0 B0 B0
B5 Al 92 BA BA 9E AD B5
BF AA 95 BF B0 95 AA B0
BD BC BC BE B2 B3 B3 Bl

BISHOP

Black on White White on Black

B0 A0 B0 B0 BF 9F BF BF
AB BF BD B0 97 B0 B2 BF
B2 AF B7 B0 BD 90 BB BF
B2 B3 B3 B0 BD BC BC BF

Black on Black White on White


' /
x
/ " / ' BF 9F BF BF B0 A0 B0 B0
x )<
'
x
/ '
x
/ '
x
/
97 BE 96 BF AB Bl A9 B0
/ "
x
/ '\,
x
/ '-
BD 9B B9 BF B2 A4 B6 B0
, / '-. / '\, /

/
x
' /
x
'
x BD BC BC BF B2 B3 B3 B0
/ '

8
KNIGHT

Black on White White on Black

B0 B0 B0 B0 BF BF BF BF
BE BF BF 95 Bl B0 B0 AA
A0 BF BF B5 9F Bl BF BA
B3 B3 B3 Bl BC BC BC BE

Black on Black White on White


/
)<
BF BF BF BF B0 B0 B0 B0 x
/

89
/
AF BF AA B6 90 B0 95 x
/
9F B9 9F BA A0 B6 A0 B5
BC BC BC BE B3 B3 B3 Bl

PAWN

Black on White White on Black

B0 80 80 80 BF BF BF BF
B0 A0 90 B0 BF 9F AF BF
80 AF 9F B0 BF 90 A0 BF
B0 B3 B3 80 BF BC BC BF

Black on Black White on White

BF BF BF BF 80 B0 80 B0
BF 9F AF BF 80 Af/J 90 B0
BF 9A A5 BF B0 A5 9A B0
BF BC BC BF B0 83 B3 B0

9
TOPPLED KING

Black on White

90 B0 B0 B0
BF BF B7 B0
9F BF BD B0
B0 B0 BB 9D

Black on Black

AF BF BF BF
AB BF B9 BF
A2 BF B6 BF
BF BF B7 A2

For any byte the 10 in bits 6 and 7 must remain.

Boundary bytes are complemented if a piece moves to another color square.

Kernel bytes must be moved in from a table in memory. Only one color need
be stored, since the other color is the complement. For each piece, the kernel will
be composed of 6 bytes to be transferred to base plus 41H, 42H, 43H, BlH, B2H,
and B3H. Only the black on black values are stored in the graphics data base.

Black on White on Black

KING BC BA BB AF BF BF A3 B5 A7 9A BF 9F
QUEEN BF B4 BE BB BF 9F AB 9B B9 B6 AF A7
ROOK BA BE BD B0 BF BF B5 Al 92 BF AA 95
BISHOP AB BF BD B2 AF B7 97 BE 96 BD 9B B9
KNIGHT BE BF BF A0 BE BF B9 AF BF 9F B9 9F
PAWN B0 A0 90 B0 AF 9F BF 9F AF BF 9A A5

Thus, the entire data base required for all pieces to be displayed occupies
only 154 bytes of storage.
10
l!ser's Guide to SARGON
1. To b gin execution:

The start address of SARGON will vary depending on th load addr ss. It will
always be the address of DRIVE R. Once execution has begun, SARGON will ask
you a series of questions:

'(Welcome to Chess. Care for a Game?"

To play a game of chess respond with ''y ." An answer of '(n" will get you to
the routine that allows you to set up a board position. (See Item 5.)

''Would you like to play white (w) or black (b)?"

The player selects white by entering ''w" or black by ''b." Any other key
defaults to black. White always moves first.

((Select look ahead (1-6)."

This allows the player to select the depth of search. For example, if you select 3
ply, SARGON will consider:

1. All of his possible moves.


2. All of your responses to those moves.
3. All of his possible replies to your responses.

At this point, the board display will appear on the screen. If you choose white,
SARGON will be waiting for your move entry. If you choose black, SARGON
will make its move on the board, print it in the move list, and then wait for your
move entry.

2. To enter a move:

Moves must be entered in algebraic chess notation. This means you must tell
SARGON the file and rank coordinates of the squares you are moving from and
to. The files are lettered a-h and the ranks are numbered 1-8. So the coordinates
of the board are:

11
a b c d e f g h

8 08 b8 c8 d8 e8 f8 g8 h8 8

7 o7 b7 c7 d7 e7 f7 g7 h7 7

6 06 b6 c6 d6 e6 f6 g6 h6 6

5 o5 b5 c5 d5 e5 f5 g5 h5 5

4 o4 b4 c4 d4 e4 f4 g4 h4 4

3 o3 b3 c3 d3 e3 f3 g3 h3 3

2 o2 b2 c2 d2 e2 f2 g2 h2 2

o1 b1 c1 d1 e1 f1 g1 h1

o b c d e f g h

The move itself is entered as ff-tt, so to play the king's pawn up two squares
you would enter:

If SARGON responded. with the same move, it would print:

He7-e5"

To Castle
Just enter the king's move. The rook will tag along. For example, if you are
white and you wish to castle king's side, enter:

Hel-gl"

You will see both your king and rook move. W -�n SARGON castles, he lists it as
0-0 or 0-0-0 as in normal chess notation.

To Capture En Passant
If you wish to capture one of SARGON's pawns using the en passant
privilege, enter your pawn's move. After your pawn move is displayed, SAR­
GON's pawn will blink and then vanish. When SARGON captures en passant,

12
his move is displayed on the graphics board in the same way. SARGON prints it
in the move list as PxPep.

3. To play another game after checkmate:

If either you or SARGON is checkmated, and you wish to play again,just hit any
key. The screen will blank out and SARGON will ask:

''Care for Another Game?"

Replies to this question are just like those to the original"Care for a Game?"

4. To resign a hopeless game or take back a move:

If you decide your position is hopeless, or you wish to change a move entered in
error, first wait until it is your turn to move. Then enter "control-R." You will
immediately get the "Care for Another Game?" question. If you want to start
over, type "y," but if you want to correct the board display, type "n." You will
then get the routine that allows you to set up a board position.

5. To set up or correct a board position:

If you typed "n" to a "Care for a Game" question, SARGON will now ask:

"Would you like to analyze a position?"

If you answer "n" to this one, you will be out of SARGON entirely and back
in the computer's monitor state. An answer of"y" will display the board just
as you left it. The lower left-hand corner will blink. That's your signal that
you can change the contents of that square, using one of the analysis
commands.

Summary o f Analysis Commands


<CR>
A carriage return leaves the contents of the square unchanged and blinks the
next square. If you are already at the upper right-hand corner, it wraps around
to the lower left-hand corner and blinks that square.

Backspace
A backspace leaves the contents of the square unchanged and blinks a square in
the other direction. It's the opposite of a <CR>, so you can go either direction.

0
An entry of 0 , or of the space bar, or any key not listed in these commands will
empty the square.

13
<<Enter a Piece"
To enter a piece, type in piece-code, color-code, moved-code.

Piece-code is a letter indicating the desired piece (upper or lower case):

K - King
Q - Queen
R - Rook
B - Bishop
N - Knight
P - Pawn

Color-code is a letter indicating the side the piece belongs to (also upper or lower
case):

w - white
b - black

Moved-code is a number indicating whether the piece has moved or not:

0 - piece has never moved


1 - piece has moved

Some examples:

To enter a black pawn on its original square type:

«p b 0"
' '

A white knight in the middle of the board would be:

A black king on its original square which has, however, moved:

Escape
The escape key will terminate the blinking cycle. SARGON will ask:

''Is this right?"

An answer of ((n" will go back to setting up the board. If you say <<y" then
SARGON will ask for the information it needs to resume play from this point.
The color choice and search depth questions are the same as in Section 1. In
addition SARGON must be given the answer to:

14
ccWhos move I it?"

6. To t rminat ex cution:

The way out of the SARGON program depends on whether you're at th end of a
game, in the middle of a game, or setting up a board position.

At the end of a game:

1. Depress any key.


2. SARGON responds with: "Care for Another Game?"
3. Answer with <en."
4. SARGON responds with: ((Would you like to analyze a position?"
5. Answer with ((n" and you're out.

In the middle of a game:

1. Wait until it's your turn.


2. Enter "Control-R."
3. SARGON responds with: «Care for Another Game?"
4. Follow 3-5 as for the end of a game.

Setting up a board:

1. Depress the escape key.


2. SARGON answers: ((Is this right?"
3. Respond with ((ywlw," answering four questions at once.
4. Follow 2-4 as for the middle of a game.

15
Notes on the ImplementaUon o£SABGON
1. AR TON wa a embled using the TDL Macro Ass \n1bler, whi ·h do \s not.
u the ZILOG mnemonics. Conversion to ZILOG mnen1onics can b 1 p •r­
formed on an in truction for instruction basis using th conversion ·hart
1

included with this listing.

2. I/0 is based on the JOVE operation system which runs on th Wave-Mat


Jupiter III computer. For ease in conversion all I/0 has been isolated to the
following areas: Accept Input Character (p. 82), I/0 Ma ro Definitions (p.
68), and Set Up Empty Board (p. 89).

3. S ARGON must be loaded at a start address which is an even 256 byte page
boundary (that is, at an address of the form XX00 hexadecimal).

4. Graphics routines assume a 96 by 128 dot matrix with black characters on a


white background. To convert to a display with white characters on a black
background, only six lines of code need be changed:

Location Is Change to
DB ¢4 MVI M,80H MVI M,¢ BFH
DB08 MVI M,0BFH MVI M,80H
2 lines above IP04 JRZ IP04 JRNZ IP04
4 lines above IP18 JRNZ IP18 JRZ IP18
2 lines above IP18 JRNZ IP2C JRZ IP2C
1 line below IP18 JRZ IP2C JRNZ IP2C

5. SARGON requires a minimum of BK bytes of memory available for user


programs.

17

· ***********************************************************
I

.
I

.
I SARGO
.
I

.
I Sargon is a computer chess playing program d esig n e d
; anu codea by Dan and Kathe Spracklen. Copyright 1978. All

I rights reserved. No part of this publication may be


.
I rep roduced without t he �rior written permission •

.
,

· **************************************************** *******
I

; EQUATES
· ***********************************************************
,
.
,

PAW N =
1
KN IGH'r =
2
i3ISHOP =
3
ROOK =
4
QUEEN =
5
KING - 6
WHITE -
0
B LA C K -
80H
BPAWN =
BLACK+PAWt

· ***********************************************************
I

; TABLES SECTION
· ***********************************************************
I

s·rART:
. LOC START+80H
'IB�SE START+l00H
· ***********************************************************
I

I DIR E C T - - Direction Table. Used to determine the dir­


.
, ection of movement of each p i ece •

· ***********************************************************
,

DIRECT .-TBASE
.BYTE +09,+11,-11,-09
. BY'rE +10,-10,+01,-01
.BYTE -21,-12,+08,+19
.BYTE +21,+12,-08,-19
.BYTE +10,+10,+ll,+09
. B YTE -10,-10,-11,-09

19
· ***********************************************************
I

; DPO I NT D i r e c t i o n Ta b l e Po i n t e r . Us e d t o d e t e r m i n e
; whe r e to beg i n i n t h e d i r e c t i o n t a b l e fo r a n y
; g iven piece .
· ***********************************************************
,
D PO I N T . -T BAS E
. BYTE 20 , 16 , 8 , 0 , 4 , 0 , 0
· ***********************************************************
I

; DCOU N T D i r e c t i o n Ta b l e Co u n t e r . Us e d t o d e t e r m i n e

, t h e n u m b e r o f d i r e c t i o n s o f mo v e m e n t f o r a n y
. .

; g i ven p i ece .
· ***********************************************************
I

DCOU NT =
. -T BAS E
. B YTE 4,4,8,4,4,8,8

· ***********************************************************
I

; PVA L U E Po i n t Va l u e . G i v e s t h e po i n t v a l u e o f e a c h
; p i e c e , o r t h e wo r th o f e a c h p i e c e .
· ***********************************************************
I

P VAL U E . - T BA S E - 1
. B YTE 1 , 3, 3 , 5 , 9 , 10
· ***********************************************************
I

; P I EC ES Th e i n i t i a l a r r a n g e me n t o f t h e f i r s t r a nk o f
; p i e c e s o n t h e bo a r d . U s e t o s e t up t h e bo a r d
; fo r t h e s t a r t o f t h e g a m e .
;***********************************************************
P I EC� S =
. -T B AS E
. BYTE 4,2,3,5,6,3, 2,4

20
.
I BOARD Boa r d Ar r ay . U s e d t o h o l d t h e c u r r e n t po s i t i o n

I o f t h e bo a r d d u r i ng p l a y . Th e bo a r d i t s e l f
.
I l oo k s l i k e :

I FFFFFFFFFFFFFFFFFFFF

I FFFFFFFFFFFFFFFFFFFF
.
I FF0 4 0 20 30 50 6 0 30 20 4FF

I FF0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1FF
.
I FF0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0FF

I F F0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 F F

I FF0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0FF

I F F0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0F F

I FF8 1 8 1 8 1 8 1 8 1 8 1 8 1 8 1FF

I FF8 4 8 28 3 8 58 6 8 3 8 28 4FF

I FFFFFFFFFFFFFFFFFFFF

I FFFFFFFFFFFFFFFF FFFF

I Th e v a l u e s o f F F f o r m t h e bo r d e r o f t h e

I bo a r d , and a r e u se d t o i nd i c a te w h e n a p i e c e

, mo v e s o f f t h e bo a r d . Th e i nd i v i d u a l b i t s o f

I t h e o t h e r b y t e s i n t h e bo a r d a r r a y a r e a s

I f o l l ow s :

I B i t 7 - - C o l o r o t the p i e c e

I 1 -- B l ac k

I 0--
Wh i te

I Bit 6 No t u sed

I Bit 5 No t u s ed

, Bit 4 C a s t l e f l ag f o r K i ng s o n l y

I Bit 3 P i e c e h a s mo v e d f l a g

I B i t s 2 - 0 P i e c e type

, 1 Pa wn

I 2 Kn i g h t
.
I 3 B i shop

I 4 Ro o k

I 5 Qu e e n

, 6 K i ng

I 7 No t u sed

I 0 Empty Sq u a r e
· ************************************************************
I

B O A RD - . -T B A S E
B O A RDA : . BLK B 1 20

21
· ************************************************************
I

: A T K L I S ·r -- At tac k Li s t . A two pa r t a r r ay , t h e f i r s t
.I h a l f f o r wh i t e a n d t h e s e c o nd h a l f f o r b l a c k .

I I t i s u s e d t o h old t h e a t t a c k e r s o f a n y g i v e n
.
I s qua r e i n t h e o r d e r o f t h ei r v a l ue .
.
I

; WAC'r Wh i t e A t t a c k C oun t . This i s t h e f i r s t


.
I by t e o f t h e a r r a y a n d t e l l s h o w m a n y p i e c e s a r e

I i n t h e w h i t e po r t i o n o f t h e a t t a c k l i s t .
.
I

; BACT B l a c k A t t a c k C o un t . Th i s i s t h e eig h t h by t e o f
; t h e a r r a y a nd d o e s t h e s a m e f o r bla c k .
· ***********************************************************
I
WAC T =
A T K L S 'I '
B AC T =
AT K L S T + 7
ATKLS T : . WO RD 0,0,0,0,0,0,0

· ***********************************************************
I

; PL I ST P i nned P i ece Ar r ay . Th i s i s a two p a r t a r r a y .


; P L I S T A c o n t a i n s t h e p i n n ed p i e c e po s i t i o n .
; P L I STD c o n ta i n s the d i r e c t i on f r om the p i n ned
; p i e ce to t h e a t ta c k e r .
· ***********************************************************
I

PL I ST =
. -T BA S E -1
PLI STD =
PL I S T + l 0
P L I S TA : . WO RD 0 ,0, 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0

· ****************************************************��*****
I

I POS K Po s i t i o n o f K i n g s . A two by t e a r e a , t h e f i r s t

I by t e o f w h i c h h o l d t h e po s i t i o n o f t h e w h i t e

I k i n g a n d t h e s e c o n d h o l d i n g t h e po s i t i o n o f

I the bl ac k k i ng .

I

; POSQ Po s i t i o n o f Que e n s . L i k e POS K , b u t f o r que e n s .


· ************************************************************
I

POS K : . BYTE 24 , 9 5
POSQ : . B YTE 14 , 94
. BYTE -1

22
· ************************************************************
I

; SCORE Sc o r e Ar r a y . U s ed d u r i n g A l p ha-Be t a p r u n i ng t o
; h o l d t h e s c o r e s a t e a c h pl y . I t i n c lu e s t w o
; " d u mm y " e n t r i e s f o r p l y -1 a n d ply 0.
· ************************************************************
I

S CORE : . WO R D 0,0,0,0,0,0
· ************************************************************
I


I PLY I X P l y Ta b l e . Co n t a i n s pa i r s o f po i n t e r s , a pa i r

I for each ply . T h e f i r s t po i n t e r po i n t s t o t h e
.
' t o p o f t h e l i s t o f p o s s i b l e mo v e s a t t h a t p l y .
.
' T h e s e c o n d p o i n t e r p o i n t s t o w h i c h mo v e i n t h e

I l i s t i s t h e o n e c u r r e n t l y be i ng c o n s i d e r ed .
· ************************************************************
,

PLY I X : . WO R D 0,0,0,0,0,0,0,0,0,0
. WO R D 0,0,0,0,0,0,0,0,0,0
· ************************************************************
I

; S T AC K C o n t a i n s t h e s ta c k f o r t h e p r og r am .
· ************************************************************
I

. LOC S TA RT + 2 F F H
S TAC K :

23
· ************************************************************
'
; TAB L E I N D I C E S S EC T I ON

'
; M l -M4 W o r k i ng i n d i c e s us e d t o i n d e x i n t o

' t h e boa r d a r r ay .
.

'
; 'T l -T3 Wo r k i n g i n d i c e s us e d t o i n d e x i n t o D i r e c t i o n
.

' C o un t , D i r e c t i o n V a l ue , a n d P i e ce V a l ue t a b l e s .
.

'
; I NDX l Ge n e r a l wo r k i n g i n d i c e s . U s ed f o r v a r i ous
; IN D X 2 pur po s e s .

'
; NP I NS Num be r o f P i n s . C oun t a n d po i n t e r i n t o t h e
.

' p i nned p i ece l i s t .


.

'
; M LPTRI Po i n t e r i n t o t h e p l y t a b l e w h i c h t e l l s
.

' w h i c h p a i r o f po i n t e r s a r e i n cur r e n t us e .

'
; M L P TR J Po i n t e r i n t o t h e mo v e l i s t t o t h e mo v e t h a t i s

' cur r e n t l y be i n g p r o c e s s ed .
.

'
; SCRI X Sc o r e I n d e x . Po i n t e r t o t h e s c o r e t a b l e f o r

' t h e p l y be i n g e x a m i n e d .

'
; B ESTM Po i n t e r i n t o t h e mo v e l i s t f o r t h e mo v e t h a t
.' i s c u r r e n t l y c o n s i d e r e d t h e be s t b y t h e

' A l p h a - B e t a p r un i n g p r o c e s s .

'
; M LLST Po i n t e r t o t h e p r e v i ous mo v e p l a c e d i n t h e mo v e
.

' l i s t. U s e d d u r i n g g e n e r a t i o n o f t h e mo v e l i s t .

'
; M LN X T Po i n t e r t o t h e n e x t a v a i l a b l e s p a c e i n t h e mo v e

' 1 i s t.
.
'
· ************************************************************
'
. LOC S TA RT + 0
Ml : .WO RD T BA S E
M2 : . WO RD T BA S E
M3 : .WO RD T BA S E
M4 : . WO RD T B AS E
T1 : .WO R D T BA S E
T2 : .WO RD T BA S E
T3 : . WO R D T B AS E
I NDX l : . WO RD T B AS E
I ND X 2 : . WORD T BA S E
NP I N S : . WO R D TBAS E
M L P'I'R I : .WORD P LY I X
M L P T RJ : .WO R D 0
SCRI X : . WO RD 0
B E STM : . WO RD 0
M LLST : .WO RD 0
M LN X T : .WO RD MLIST

24:
· ************************************************************
I

; VA R I A B L E S S E C T I O N

I

; KOLOR I n d i c a t e s c o mp u t e r ' s c o l o r . Wh i t e i s 0 , a nd

I
Bl ack i s 8 0H •


I

; COLOR I n d i c a t e s c o l o r o f t h e s i d e w i t h t h e mo v e .

I

; Pl-P3 W o r k i n g a r e a t o h o l d t h e c o n t e n t s o f t h e bo a r d
.
I a r r ay f o r a g i v e n squa r e .

I

; P MA T E Th e mo ve n umbe r a t wh i c h a c h e c k m a t e i s

I d i scove r ed d u r i ng l o o k ahead .

I

; M OV E N O C u r r e n t mo v e n u m be r .

I

; P LYMAX M a x i mu m d e p t h o f s e a r c h u s i ng A l p h a -B e ta

I p r u n i ng .

I

; N P LY C u r r e n t p l y n u mb e r d u r i n g A l p h a - B e t a

I
p r u n i ng .
.
I

; C K F LG A n o n- z e r o v a l u e i nd i c a t e s t h e k i ng i s i n c h e c k .

I

; M A T EF A z e r o v a l u e i n d i c a t e s n o l e g a l mo v e s .

; VALM Th e s c o r e o f t h e c u r r e n t mo v e be i n g e x a m i n e d .
.
I

; B RD C A m e a s u r e o f mo b i l i ty equ a l to the to t a l n u m be r

I o f s q u a r e s w h i t e c a n mo v e t o m i n u s t h e n u m b e r
.
I b l a c k c a n mo v e t o .

I

; PTS L Th e ma x i m u m n umbe r o f po i n t s wh i c h c o u l d be l o s t

I t h r o u g h a n e x c h a n g e by t h e p l a y e r n o t o n t h e
.
I
mov e •

.
I

; P TS W l Th e m a x i m u m n u m b e r o f p o i n t s w h i c h c o u l d b e w o n

I t h r o u g h a n e xch a n g e b y t h e p l a y e r n o t o n t h e
.
I move .
.
I

; PTSW2 Th e s e c o n d h i g h e s t n u m b e r o f po· i n t s w h i c h c o u l d
.
I be wo n th r o u g h a d i f f e r e n t e x c h a n g e by t h e p l ay e r

I n o t o n t h e mo v e .
.
I

; M'r R L A mea s u r e o f the d i f fe r e nce i n ma te r i a l



I c u r r e n t l y o n t h e bo a r d . I t i s the to t a l va l ue o f

I
the wh i te p i e c e s m i n u s the to t a l v a l u e o f t h e

I
black pieces .
.
I

; BC0 Th e v a l u e o f bo a r d c o n t r o l ( B RD C ) at ply 0 .

25

I

; MV0 Th e v a l u e o f ma t e r i a l ( MT R L ) at ply 0 .

I

; PTSC K A n o n - z e r o v a l u e i nd i c a t e s t h a t t h e p i e c e h a s

I
j u s t mo v e d i t s e l f i n t o a l o s i ng e x c h a n g e o f

I ma te r i a l •


I

; B MOV E S O u r v e r y t i n y boo k o f o p e n i ng s . De t e r m i n e s

I t h e f i r s t mo v e f o r t h e c o mp u t e r .

I

· ************************************************************
I

K O LOR : . BYTE 0
C O LO R : . B YTE 0
Pl : . BYTE 0
P2 : . BYTE 0
P3 : . B YT E 0
PMATE : . B YTE 0
MOV E N O : . BYTE 0
P L Y MA X : . BYTE 2
N PLY : . B YTE 0
C K F LG : . B YTE 0
M AT E F : . BYTE 0
VALM : . BYTE 0
B RDC : . BYTE 0
PTSL : . B YT E 0
PTSW l : . BYTE 0
P T SW 2 : . BYTE 0
MT RL : . BYTE 0
BC 0 : . BYTE 0
MV0 : . BYTE 0
P T SCK : . BYTE 0
BMOV E S : . B YTE 35, 55, 1 0H
. B YT E 34 , 54 , 10H
. B YTE 85, 65, 10H
. BYTE 84 , 64, 10H

26
· ************************************************************
I

; M OV E L I S T S E C T I O N

I

; M L I ST A 2 0 4 8 b y t e s t o r a g e a r e a f o r g e n e r a t ed mo v e s .

I T h i s a r e a mus t b e l a r g e e n o ug h t o h o l d a l l
.
I t h e m o v e s f o r a s i ng l e l e g o f t h e m o v e t r e e .
.
,

; MLEND Th e add r e s s o f t h e l a s t a v a i l a b l e l o c a t i o n
.
, i n t h e mo v e l i s t .

,

; M LPTR T h e Mo v e L i s t i s a l i n k e d l i s t o f i n d i v i d ua l

I m o v e s e a c h o f w h i c h i s 6 b y t e s i n l e n g t h. T h e

, m o v e l i s t p o i n t e r (M L PT R ) i s t h e l i n k f i e l d

, w i t h i n a mo v e .
.
I

; M L F RP T h e f i e l d i n t h e mo v e e n t r y w h i c h g i v e s t h e

, b o a r d p o s i t i o n f r o m w h i c h t h e p i e c e i s mo v i n g .

,

; M LTO P T h e f i e l d i n t h e mo v e e n t r y w h i c h g i v e s t h e

, b o a r d p o s i t i o n t o w h i c h t h e p i e c e i s mo v i n g .

I

; M L F LG A f i e l d i n t h e mo v e e n t r y w h i c h c o n t a i n s f l ag

I i n f o r m a t i o n. T h e m e a n i n g o f e a c h b i t i s a s

, f o l l o w s:

I Bit 7 T h e c o l o r o f a n y c a p tu r e d p i e c e

I 0 Wh i te
.
, 1 Bl ack
.
, Bit 6 Doub l e mo v e f l a g (s e t f o r c a s t l i n g a n d
.
I e n p a s s a n t p a w n c a p tu r e s )
.
I Bit 5 P a w n P r o mo t i o n f l a g ; s e t w h e n pa w n

I p r o m o t e s.

I Bit 4 W h e n s e t , t h i s f l ag i nd i c a t e s t h a t
.
, t h i s i s t h e f i r s t mo v e f o r t h e

, p i e c e o n t h e mo v e .
.
I Bit 3 Th i s f l ag i s s e t i s t h e r e i s a p i e c e
.
, c a p tu r e d , a n d t h a t p i e c e h a s m o v e d a t
.
, l e a s t o n c e.
.
I B i ts 2-0 D e s c r i b e t h e c a p tu r e d p i e c e. A

, z e r o v a l ue i n d i c a t e s n o c a p tu r e .

,

; MLVAL T h e f i e l d i n t h e mo v e e n t r y w h i c h c o n t a i n s t h e

, s c o r e a s s i g n e d t o t h e m o v e.

,
· ************************************************************
,

27
. LOC S TART + 3 00H
ML IST : . BLKB 2048
M LE N D =
M L I S T + 20 4 0
M LPTR -
0
MLFRP =
2
M L TOP =
3
M L F LG -
4
M LVAL =
5

; PROGRAM CO DE S ECT I O N
· ************************************************************
I

; B OA R D S E T U P RO U T I N E
· ******** ****************************************************
I

I FUNCT I ON : To ini tia l i z e t h e bo a r d a r r a y , s e t ting t h e


.
I pie c e s in t h e i r initia l po s i t io n s f o r t h e

I s t a r t o f t h e g a me

I CALLED BY : DR I V E R

I

I CALLS : No n e

I A RG U M ENTS : No n e

I

· ******************************************************�******
I

I N I TBD : MV I B ,1 20 ; P r e - f i l l b o a r d wi t h - l ' s
LX I H , BOARDA
MV I M , -1
I NX H
DJ N Z .-3
MV I B,8
LXI X , BOARDA
IB2 : MOV A , -B ( X ) •
I Fil l non-bo r d e r sq u a r e s
MOV 2l (X) ,A •
I Whi t e p i e c e s
S ET 7,A •
' C hang e to b l a c k
MOV 91 ( X ) , A •
, B l a c k pie c e s
MVI 3 l ( X ) , PAWN •
' W h i t e Pa w n s
MVI 81 ( X ) , BP AWN •
' B l a c k Pa w n s
MV I 4l (X) , 0 •
' Em p t y s q u a r e s
MVI 51 ( X ) , 0
MV I 6l (X) ,0
MVI 71 ( X ) ,0
I NX x
DJ N Z IB2
LXI X , PO S K ; !n i t K i n g /Qu e e n po s i t i o n l i s ·
MV I 0 (X ) , 25
MV I 1 (X) , 95
MV I 2 (X ) , 24
MVI 3 (X) , 94
RET

28
· ******************************* * ****************************
I

; P A T H RO U T I N E
· ************************************ * *** * ** * ** * * * * * * * ****** *
I

; F U l C T I ON : To g e n e r a t e a s i n g l e po s s i b l e mo v e f o r a g i v e n

I p i e c e a l o n g i t s c u r r e n t p a t h o f mo t i o n i n c l u d i n g :

I Fe t c h i n g t h e c o n t e n t s o f t h e b o a r d a t t h e n e w

I po s i t i o n , and se t t i ng a f l ag d e s c r i b i ng the
.
I contents :

I 0 N e w p o s t i o n i s e mp t y

I 1 E n c o u n t e r e d a p i e c e of t h e

I o pp o s i t e c o l o r

I 2 En c o u n t e r e d a p i e c e o f t h e

, s ame c o l o r

I 3 Ne w p o s i t i o n i s o f f t h e

I bo a r d

I

; CALLED BY : MP I E C E
; ATTAC K
; PI NFND

; C AL LS : No n e

I

; A RG U M E N T S : D i r e c t i o n f r om t h e d i r e c t i o n a r r a y g i v i ng t h e

I c on s t a n t to b e added f o r t h e n e w po s i t i o n •

· ************************************************************
I

PATH : LX I H , M2 ; Ge t p r e v i o u s po s i t i o n
M OV A,M
ADD c ; Ad d d i e c t i o n c o n s t a n t
M OV M,A ; Sa v e new pos i t i o n
L I XD M2 ; Lo a d b o a r d i n d e x
MOV A , B O A R D( X ) ; Ge t c o n t e n t s o f b o a r d
CPI -1 ; I n bo a r d e r a r e a ?
JRZ PA 2 ; Ye s - J u m p
S TA P2 ; Save p i ec e
AN I 7 ; C l e a r f lag s
S TA T2 ; Save p i ec e type
RZ ; Re t u r n i f e mp t y
L DA P2 ; Ge t p i e c e e n c o u n t e r e d
LXI H , Pl ; Ge t mo v i ng p i e c e a d d r e s s
X RA M ; C o mp a r e
BIT 7,A ; Do c o l o r s m a t c h ?
JRZ PA l ; Ye s - J u m p
MV I A,l ; Se t d i f fe r en t c o l o r f l ag
RET ; Re t u r n
PAl : MVI A,2 ; Se t s ame c o l o r f l a g
RET ; Re t u r n
PA 2 : MV I A,3 ; Se t o f f boa r d f l ag
RET ; Re t u r n

29
· ******************************************************** * ***
I

; P I E C E MOV E R RO U T I N E
· ************************************************************
I

; F U N C 'I1 I ON : To g e n e r a t e a l l t h e po s s i b l e l e g a l mo v e s f o r a
.
I g iven p i ece .
.
I

; C AL L E D B Y : G E N MOV
.
I

; C AL LS : PATH
.
I ADMOVE
.
I C AS T L E
.
I ENPSNT
.

; A RG U M E N T S : Th e p i e c e t o b e mo v e d .
· ***************************** * * * * * * * ***** * * * **** * ************
I

M P I E C E : X RA M ; P i e c e to move
AN I 8 7H ; C l ea r f l ag b i t
CPI B P AWN ; I s i s a b l a c k Pawn ?
J RN Z . +3 ; No - S k i p
OC R A ; De c r e m e n t f o r b l a c k Pa w n s
AN I 7 ; Ge t p i e c e t y p e
S TA Tl ; Save p i e ce type
L I YD Tl ; Lo a d i n d e x to D C O U NT/D P O I N T
MOV B , DCOUNT ( Y ) ; Ge t d i r e c t i o n c o u n t
M OV A , D PO I N T ( Y ) ; Ge t d i r e c t i o n po i n t e r
S TA I NDX 2 ; Sa v e a s i n d e x to d i r e c t
L I YD I NDX 2 ; Lo a d i n d e x
MPS : MOV C , D I RECT ( Y ) ; Ge t mo v e d i r e c t i o n
LOA Ml ; F r o m po s i t i o n
STA M2 ; I n i t i a l i z e to po s i t i o n
MP10 : CALL PATH ; C a l c u l a t e n e x t po s i t i o n
CPI 2 ; Re a d y f o r n e w d i r e c t i o n ?
J RN C MP l S ; Ye s - J u mp
ANA A ; Te s t f o r e m p t y s q u a r e
E XA F ; Sa v e r e s u l t
L OA Tl ; Ge t p i e c e mo v e d
CPI P AWN + l ; Is i t a Pawn ?
J RC MP20 ; Ye s - J u mp
C ALL A DMOVE ; Ad d mo v e t o l i s t
E XA F ; Emp t y s q u a r e ?
J RN Z MPl S ; No - J u mp
L OA Tl ; P i ece type
CPI K I NG ; K i ng ?
J RZ MPl S ; Ye s - J u mp
CPI B I S HOP ; B i s h o p , Ro o k , o r Qu e e n ?
J RN C MP 1 0 ; Ye s - J u m p
MPl S : I NX y ; I n c r e me n t d i r e c t i o n i n d e x
DJN Z MP S ; De e r . c o u n t - j u mp i f n o n - z e r o
LOA Tl ; P i e c e type

30
CPI K I NG ; K i ng ?
CZ CASTLE ; Ye s - T r y C a s t l i n g
RET ; Re t u r n
. * * * * * P AWN LOG I C * * * * *
I

MP20 : MOV A,B ; Co u n t e r fo r d i r e c t i on


CPI 3 ; On d i a g o n a l mo v e s ?
J RC MP3 5 ; Ye s - J u m p
JRZ MP30 ; - o r - J u m p i f o n 2 s q u a r e mo v e
E XA F ; I s f o r w a r d s q u a r e e mp t y ?
J RN Z MPl S ; N o - J ump
LOA M2 ; Ge t " t o " p o s i t i o n
CPI 91 ; P r omo t e wh i t e Pa w n ?
J RN C MP2 5 ; Ye s - J u m p
CPI 29 ; P r o mo t e b l a c k P a w n ?
J RN C MP26 ; N o - J u mp
MP2 5 : LX I H , P2 ; Fl ag add r es s
S ET 5,M ; S e t p r o mo t e f l a g
MP26 : CALL AOMOVE ; Ad d t o mo v e l i s t
I NX y ; Ad j u s t t o t w o s q u a r e mo v e
DCR B
LX I H , Pl ; C h e c k P a w n mo v e d f l a g
BIT 3,M ; H a s i t mo v e d b e f o r e ?
J RZ MP10 ; No - J u mp
JMP MP1 5 ; J u mp
MP30 : E XA F ; I s f o r w a r d s q u a r e e mp t y ?
J RN Z MP1 5 ; No - J u mp
MP31 : CAL L AOMOV E ; Ad d t o mo v e l i s t
JMP MPl S ; J u mp
MP3 5 : E XA F ; I s d i a g o n a l s q u a r e e mp t y ?
JRZ MP3 6 ; Ye s - J u m p
LOA M2 ; Ge t " t o " p o s i t i o n
CPI 91 ; P r o mo t e w h i t e P a w n ?
J RN C MP3 7 ; Ye s - J u mp
CPI 29 ; B l a c k P a w n p r omo t i o n ?
J RN C M P 31 ; No - J u m p
MP37 : LXI H , P2 ; Ge t f l a g a d d r e s s
S ET 5,M ; S e t p r o mo t e f l a g
J M PR MP3 1 ; J u mp
MP3 6 : CALL ENPSNT ; Tr y e n pa s s a n t c a p t u r e
JMP MP1 5 ; J u mp

31
· *************************** * * * * * ***************************
,
; E N PAS S AN T ROU T I N E
· ***********************************************************
,
; F U N C T I ON : To t e s t f o r e n p a s s a n t P a w n c a p t u r e a nd

, t o a d d i t t o t h e mo v e l i s t i f i·t i s

, l eg a l •


,
; CALLED BY : M P I EC E

,
; C A L LS : A DMOV E


, ADJ P T R
.

,
; A RG U M E N T S : No n e
· ************************************************************
,
E N P S NT : L DA Ml ; Se t p o s i t i o n o f P a w n
LX I H , Pl ; C hec k c o l o r
BIT 7,M ; I s i t wh i te ?
J RZ . +4 ; Ye s - s k i p
ADI 10 ; Ad d 1 0 f o r b l a c k
CPI 61 ; On e n p a s s a n t c a p t u r e r a n k ?
RC ; No - r e t u r n
CPI 69 ; On e n p a s s a n t c a p t u r e r a n k ?
RNC ; No - r e t u r n
L I XD M L PT RJ ; Ge t po i n t e r t o p r e v i o u s mo v e
BIT 4 , M L F LG ( X ) ; F i r s t mo v e f o r t h a t p i e c e ?
RZ ; No - r e t u r n
MOV A , M LTOP ( X ) ; Ge t " t o " po s t i t i o n
S TA M4 ; S t o r e a s i n d e x t o bo a r d
L I XD M4 ; Lo a d bo a r d i nd e x
MOV A , BOARD ( X ) ; Ge t p i e c e mo v e d
S TA P3 ; Save i t
AN ! 7 ; Ge t p i e c e t y p e
CPI PAWN ; Is i t a Pawn ?
RN Z ; No - r e t u r n
L DA M4 ; Ge t " t o " p o s i t i o n
LX I H , M2 ; Ge t p r e s e n t " t o " p o s i t i o n
SUB M ; F i nd d i f f e r e nce
JP . +5 ; Po s i t i v e ? Ye s - J u mp
N EG ; E l s e ta k e abs o l u t e va l u e
CPI 10 ; I s d i f f e r e nce 1 0 ?
RN Z ; No - r e t u r n
LXI H , P2 ; Ad d r e s s o f f l a g s
S ET 6,M ; Se t d o u b l e mo v e f l a g
C AL L A DMOVE ; Ad d P a w n m o v e t o mo v e l i s t
L DA Ml ; S a v e i n i t i a l P a w n po s i t i o n
STA M3
L DA M4 ; Se t " f r o m " a n d " t o " p o s i t i o n s
; f o r d u mmy m o v e

32
S TA Ml
S TA M2
L OA P3 •
I Sa ve c ap t u r ed Pa wn
S TA P2
CALL A DMOV E .
I Ad d P a w n c a p t u r e t o mo v e l i s t
L OA M3 •
I Re s t o r e " f r o m " p o s i t i o n
S TA Ml

· ************************************************************
I

: ADJ U S T MOV E L I S T PO I N T E R F O R DOU B L E M O V E


· ************************************************************
I

; F U N C T I ON : To a d j u s t mo v e l i s t po i n t e r t o l i n k a r o u n d

, s e c o n d mo v e i n d o u b l e mo v e •


I

; CALLED BY : EN P S NT

I CASTLE

I
(Th i s m i n i - r o u t i n e i s no t r ea l ly ca l led ,

I
b u t i s j umped t o t o s a v e t i me . )

I

; C AL LS : No n e

I

; A RG U M E N T S : No n e
· *************************************************************
I

A DJ P T R : LHLD MLLST •
I Ge t l i s t p o i n t e r
LX I D , -6 •
I S i z e o f a mov e e n t r y
DAD D •
I B a c k u p l i s t po i n t e r
S H LD MLLST •
I Sa v e l i s t po i n t e r
MVI M,0 •
I Z e r o o u t l i n k , f i r s t by t e
I NX H •
I N e x t by t e
MV I M,0 •
I Z e r o o u t l i n k , s e c o n d by t e
RET •
I Re t u r n

33
· * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * � * * * * * * * *
,
; C A S T L E ROU 'r I N E
· * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
,
; F U N C T I ON : To d e t e r m i n e w h e t h e r c a s t l i n g i s l e g a l
.
, ( Q u e e n s i d e , K i ng s i d e , o r bo t h ) a n d a d d i t
.
,
to th e move l i s t i f i t i s .

,

; CALLED BY : M P I EC E
.
,
; C AL L S : A TTAC K
.
, A D MOV E

, ADJ P T R
.
,
; A RG U M E N T S : No n e
· * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * ** * * * * * * * * * * ** * * * * * * * * * * * * * *
,
CASTLE : L OA Pl ; Ge t K i ng
BIT 3,A ; Ha s i t moved ?
RN Z ; Ye s - r e t u r n
L OA C K F LG ; Fe t c h Chec k Fl ag
ANA A ; Is the K i ng in c h e c k ?
RN Z ; Ye s - Re t u r n
LXI B , 0FF0 3H ; I n i t i a l i z e K i ng - s i d e v a l u e s
CAS : L OA Ml ; K i ng po s i t i o n
ADD c ; Ro o k p o s i t i o n
M OV C,A ; Save
s ·r A M3 ; S t o r e a s bo a r d i n d e x
L I XD M3 ; Lo a d bo a r d i n d e x
M OV A , BOARD ( X ) ; Ge t c o n t e n t s o f bo a r d
AN I 7FH ; C l e a r color bi t
CPI ROOK ; H a s Ro o k e v e r mo v e d ?
J RN Z CA2 0 ; Ye s - J u mp
MOV A,C ; Re s t o r e Ro o k po s i t i o n
J M PR CA1 5 ; J u mp
CA1 0 : L I XD M3 ; Lo a d bo a r d i n d e x
MOV A , BOARD ( X ) ; Ge t c o n t e n t s o f bo a r d
ANA A ; Emp t y ?
J RN Z CA2 0 ; No - J u mp
LOA M3 ; C u r r en t pos i t i on
CPI 22 ; W hj t e Q u e e n K n i g h t s q u a r e ?
JRZ CA1 5 ; Ye s - J u m p
CPI 92 ; B l a c k Qu e e n Kn i g h t s q u a r e ?
JRZ CA1 5 ; Ye s - J u mp
CALL ATTAC K ; Lo o k f o r a t t a c k o n s q u a r e
ANA A ; An y a t t a c k e r s ?
J RN Z CA 2 0 ; Ye s - J u mp
L OA M3 ; C u r r e n t po s i t i o n
CA1 5 : ADD B ; Ne x t p o s i t i o n
S TA M3 ; Sa ve a s boa r d i nd e x
LXI H , Ml ; K i ng pos i t i on
C MP M ; Re a c h e d K i n g ?

34
JR Z CA1 0 ; No - J u m p
SUB B ; De t e r m i n e K i n g ' s p o s i t i o n
SUB B
STA M2 ; Sa ve i t
LX I H , P2 ; Ad d r e s s o f f l a g s
MV I M, 40H ; Se t d o u b l e mo v e f l a g
CALL ADMOVE ; P u t k i n g mo v e i n l i s t
LX I H , Ml ; Ad d r o f K i n g " f r o m " po s i t i o n
MOV A,M ; Ge t K i n g ' s " f r o m " po s i t i o n
MOV M,C ; S t o r e Ro o k " f r o m " po s i t i o n
SUB 8 ; Ge t Ro o k " t o " po s i t i o n
S 'rA M2 ; S t o r e Ro o k " t o " p o s i t i o n
X RA A ; Zero
S TA P2 ; Z e r o move f l ags
CALL A D MOV E ; P u t Ro o k m o v e i n l i s t
CALL ADJ PTR ; Re - a d j u s t m o v e l i s t po i n t e r
L OA M3 ; Re s t o r e K i n g po s i t i o n
S TA Ml ; Sto r e
CA20 : MOV A,B ; Sc a n I n d e x
CPI 1 ; Do n e ?
RZ ; Ye s - r e t u r n
LXI B , 0 1FCH ; Se t Qu e e n- s i d e i n i t i a l va l u e s
JMP CAS ; J u mp

36
· **** * *********** * *******************************************
'
; A D MOV E ROUT I N E
· ** * *********************************************************
'

; F U N C T I ON : To a d d a m o v e t o t h e mo v e l i s t
.
,

; C A L L E D BY : M P I EC E
.
I E NP SNT

I C AS T L E

I

; CALLS : No n e

I

; A RG U M E N T : No n e
· ** * * * * * * * * * * * * **** * **** * *** * *********************************
I

A DMOVE : LDED MLNXT ; Ad d r o f n e x t l o c i n mo v e l i s t


LX I H , MLEND ; Ad d r e s s o f l i s t e n d
ANA A ; C l ea r ca r r y f l ag
D S BC D ; Ca l c u l a t e d i f f e r e n c e
J RC AM 1 0 ; J u mp i f o u t o f s p a c e
L H LD M L LS T ; Ad d r o f p r e v . l i s t a r e a
SDED MLLST ; Sa v 0. n e x t a s p r e v i o u s
MOV M,E ; Sto r e l i n k add r e ss
I NX H
MOV M,D
LX I H , Pl ; Ad d r e s s o f mo v e d p i e c e
BIT 3,M ; H a s i t mo v e d b e f o r e ?
J RN Z . +7 ; Ye s - J ump
LX I H , P2 ; Ad d r e s s o f mo v e f l a g s
S ET 4,M ; S e t f i r s t mo v e f l a g
XC H G ; Ad d r e s s o f mo v e a r e a
MV I M ,0 ; Sto r e z e r o i n l i nk add r e s s
I NX H
MV I M,0
I NX H
LDA Ml ; S t o r e " f r o m " mo v e po s i t i o n
M OV M,A
I NX H
LDA M2 ; S t o r e " t o " mo v e po s i t i o n
MOV M,A
I NX H
LDA P2 ; S t o r e mo v e f l a g s / c a p t . p i e c e
M OV M,A
I NX H
MV I M,0 ; S to r e i n i t i a l move va l ue
I NX H
S H LD M LN XT ; S a v e a d d r e s s f o r n e x t mo v e
RET ; Re t u r n
AM 1 0 : MV I M,0 ; A b o r t e n t r y o n t a b l e o v f l ow
I NX H
MV I M,0
DC X H
RET

36
· *************************************** * ****** * *** * ** * * ** * **
I

; G E N E RA T E MOV E ROUT, I N E
· ************************************************ * * * * * * * * * * **
I

; F U NC T I ON : To g e n e r a t e t h e mo v e s e t f o r a l l o f t h e

I p i eces of a g i ven co l o r •


I

; CALLED BY : F N D MO V

I

; CALLS : M I EC E

, I NC H K

I

; A RG U M E N T S : No n e
· ****************************************************** * *****
,
G E N MO V : C A L L I NC H K ; Te s t f o r K i n g i n c h e c k
S TA C KFLG ; Sa v e a t ta c k cou n t a s f l ag
LDED M LN XT ; Ad d r o f n e x t a v a i l l i s t s p a c e
LHLD M L PTR I ; P l y l i s t po i n t e r i nd e x
INX H ; I n c r e me n t to n e x t p l y
INX H
MOV M,E ; S a v e mo v e l i s t p o i n t e r
I NX H
MOV M,D
INX H
S H LD M LPTR I ; S a v e n ew i n d e x
S HLD MLLST ; La s t p o i n t e r f o r c h a i n i n i t .
MV I A, 21 ; F i r s t po s i t i o n o n bo a r d
GMS : S TA Ml ; Save a s i nd e x
L I XD Ml ; Lo a d b o a r d i n d e x
MOV A , BOARD ( X ) ; F e t c h bo a r d c o n t e n t s
ANA A ; I s i t e mp t y ?
JRZ GM 1 0 ; Ye s - J u mp
CPI -1 ; I s i t a bo a r d e r s q u a r e ?
JRZ GM 1 0 ; Ye s - J u m p
STA Pl ; Sa v e p i ec e
LXI H , COLOR ; Ad d r e s s o f c o l o r o f p i e c e
X RA M ; Te s t c o l o r o f p i e c e
B IT 7,A ; Ma tch ?
CZ M P I EC E ; Ye s - c a l l Mo v e P i e c e
GM 1 0 : LOA Ml ; F e t c h c u r r e n t bo a r d po s i t i o n
I NR A ; I n e r t o n e x t bo a r d po s i t i o n
CPI 99 ; E n d o f bo a r d a r r a y ?
JNZ GM S ; N o - J u mp
RET ; Re t u r n

37
· * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
I

; C H E C K ROUT I N E
· * * * * * * * * * * * * * * * * * * * * � * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
I

; F U NC T I ON : To d e t e r m i n e w h e t h e r o r n o t t h e

I K i ng i s i n c h e c k •


I

; CALLED BY : G E N MOV

I F N DMOV

I EVAL

I

; CALLS : A TTAC K

I

; ARG U M E N T S : C o l o r o f K i ng
· * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
I

I NC H K : LDA C O LOR ; Ge t c o l o r
I NCH K l : LX I H , POS K ; Ad d r o f w h i t e K i ng po s i t i o n
ANA A ; Wh i te ?
J RZ . +3 ; Ye s - S k i p
I NX H ; Ad d r o f b l a c k K i ng po s i t i o n
M OV A,M ; F e t c h K i n g po s i t i o n
S TA M3 ; Save
L I XD M3 ; Lo a d b o a r d i nd e x
M OV A , BOARD ( X ) ; Fe t c h boa r d co n te n t s
s ·r A Pl ; Save
AN ! 7 ; Ge t p i e c e t y p e
S TA Tl ; Sa v e
CALL ATTAC K ; Lo o k f o r a t t a c k e r s o n K i ng
RET ; Re t u r n

38
· * * * * * * * * * * * * * * ** * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
I

; AT'r AC K RO U 'r I N E
· * * * * * * * * * * * * * * * * * * * * ** * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
I

; FUNCT I ON : To f i n d a l l a t t a c k e r s o n a g i v e n s q u a r e
.

I by s c a n n i ng o u twa r d f r om the s q u a r e
.

I u n t i l a p i e c e i s f o u nd t h a t a t ta c k s

I t h a t ·s q u a r e , o r a p i e c e i s f o u n d t h a t

I doe s n ' t a t ta c k tha t s q ua r e , o r the edg e

I o f t h e bo a r d i s r e a c he d .

I

I I n d e te r m i n i ng wh i c h p i e c e s a t t a c k

I a squ a r e , t h i s r o u t i n e a l s o t a k e s in to

I ac coun t the a b i l i ty o f ce r t a i n p i e c e s to

I a t t a c k t h r o u g h a n o t h e r a t t a c k i n g p i e c e . ( Fo r

I e x a mp l e a q u e e n l i n e d u p b e h i nd a b i s h o p
.

I o f h e r s a me c o l o r a l o n g a d i a g o n a l . ) T h e

I b i s hop i s then s a i d to be t r a n spa r en t to the

I q u e e n , s i n c e bo t h p a r t i c i p a t e i n t h e

I a t tac k .

I


I
I n the c a s e whe r e t h i s r ou t i n e i s c a l l ed

I b y C AS T L E o r I NC H K , t h e r o u t i n e i s

I
t e r m i n a ted a s s o o n a s a n a t ta c k e r o f t he
.

I
o p po s i t e c o l o r i s e n c o u n t e r e d .
.

; C AL L E D B Y : PO I NTS
.

I P I N FN D
.

I C AS T L E

I I NC H K

I

; C AL L S : PATH

I A T K S AV

I

; A RG U M E N T S : No n e
· * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
I

A T T AC K : PUSH B ; S a v e Re g i s t e r B
X RA A ; Cl ea r
MVI B,16 ; In i t i a l d i r ec t i on coun t
S TA I NDX 2 •
I I n i t i a l d i r e c t i o n i nd e x
L I YD I ND X 2 ; Lo a d i n d e x
ATS : M OV C , D I R E C 'r ( Y ) ; Ge t d i r e c t i o n
MVI D,0 ; I n i t . s c a n c o u n t/f l ag s
LOA M3 .

I I n i t . bo a r d s ta r t po s i t i o n
S TA M2 ; Sa ve
AT 1 0 : I NR D ; I n c r e me n t s c a n c o u n t
C AL L P A11 H ; Ne x t po s i t i o n
CPI l ; P i e c e o f a o p po s i t e c o l o r ?
J RZ AT 1 4A ; Ye s - J u m p
CPI 2 ; P i e c e o f s ame co l o r ?
JRZ AT 1 4 B ; Ye s - J ump

39
ANA A ; Em p t y p o s i t i o n ?
J RN Z AT 1 2 ; N o - j u mp
MOV A,B ; Fe t c h d i r e c t i o n c o u n t
CPI 9 ; On k n i g h t s c a n ?
J RN C AT 1 0 ; No - J um p
AT 1 2 : I NX y ; I n c r e me n t d i r e c t i o n i n d e x
DJ N Z AT S ; Do n e ? N o - J um p
X RA A ; No a t tac k e r s
AT 1 3 : POP B ; Re s t o r e r e g i s t e r B
RET ; Re t u r n
AT 1 4 A : BIT 6,D ; S a me c o l o r f o u n d a l r e a d y ?
J RN Z AT 1 2 ; Ye s - j u mp
S ET 5,D ; Se t o p p o s i t e c o l o r f o u nd f l a g
JMP AT 1 4 ; J u mp
AT 1 4 B : BIT 5,D ; Op po s i t e c o l o r f o u n d a l r e a d y ?
J RN Z AT 1 2 ; Ye s - j u mp
S ET 6,D ; Se t s a me c o l o r f o u n d f l a g
.
I

.
I * * * * * D ET E RM I N E I F P I E C E E N C OU NT E R E D ATTAC K S S QU A R E * * * * *
AT 1 4 : LOA T2 ; Fe t c h p i e c e type e nc o u n t e r e d
MOV E,A ; Sa ve
M OV A,B ; Ge t d i r e c t i o n c o u n t e r
CPI 9 ; Lo o k f o r K n i g h t s ?
J RC AT 2 5 ; Ye s - J u mp
MOV A,E ; Ge t p i e c e t y p e
CPI QU EEN ; Is i s a Qu e e n ?
J RN Z AT 1 5 ; No - J u mp
S ET 7,D ; Se t Q u e e n f o u n d f l a g
JMPR AT 3 0 ; J u mp
AT 1 5 : M OV A,D ; Ge t f l a g / s c a n c o u n t
AN I 0FH ; I s o l a te cou n t
CPI 1 ; On f i r s t po s i t i o n ?
J RN Z AT 1 6 ; No - J u mp
MOV A,E ; Ge t e n c o u n t e r e d p i e c e t y p e
CPI K I NG ; Is i t a K i ng ?
J RZ AT 3 0 ; Ye s - J um p
AT1 6 : MOV A,B ; Ge t d i r e c t i o n c o u n t e r
CP I 13 ; Sc a n n i n g f i l e s o r r a n k s ?
J RC AT 2 1 ; Yes - J ump
M OV A,E ; Ge t p i e c e t y p e
CPI B I S H OP ; Is i t a B i s hop ?
J RZ AT 3 0 ; Ye s - J um p
MOV A,D ; Ge t f l a g s/ s c a n c o u n t
ANI 0FH ; Isol a te coun t
CPI 1 ; On f i r s t p o s i t i o n ?
J RN Z AT1 2 ; No - J ump
CMP E ; I s i t a Pa wn ?
J RN Z AT1 2 ; No - J u m p
LOA P2 ; Fe t c h p i e c e i nc l ud i ng c o l o r

40
B I 'I' 7,A •
I Is i t wh i t e ?
JRZ AT 2 0 .
I Ye s -
] U mp
M OV A , B .
I Ge t d i r e c t i o n c o u n t e r
CPI 15 •
I On a n o n - a t t a c k i n g d i a g o n a l ? .

J RC AT 1 2 •
I Ye s - ] U m p
JMPR AT 3 0 •
, J u mp
A 'l1 2 0 : MOV A , B .
, Ge t d i r e c t i o n c o u n t e r
CPI 15 •
, On a n o n - a t t a c k i n g d i a g o n a l ? .

J RNC AT 1 2 .
, Ye s -
] U mp
J M PR AT3 0 •
I J u mp
AT 2 1 : MOV A,E •
, Ge t p i e c e t y p e
CPI ROOK •
I I s i s a Ro o k ? .

J RN Z AT1 2 •
, No - ] U m p
JMPR AT3 0 •
I J u mp
AT2 5 : MOV A,E •
I Ge t p i e c e type
CPI K N I G HT •
I I s i t a Kn i g h t ?
J RN Z AT 1 2 •
I No -
] Ump
AT 3 0 : LDA Tl •
, A t t a c ked p i e ce type/ f l ag
CPI 7 •
I Ca l l f r om PO I NTS ?
J RZ A'I' 3 1 •
, Ye s -
] Ump
BIT 5,D , I s a t tac k e r oppos i te c o l o r ?

JRZ AT 3 2 •
I No -
) Ump
MV I A,l •
I Se t a t ta c k e r f o u nd f l ag
JMP AT 1 3 •
, J u mp
.
AT 3 1 : CALL A T K S AV •
, Sa ve a t ta c k e r i n a t ta c k l i s t
AT3 2 : L DA T2 •
I A t t ac k i ng p i e c e type
CPI K I NG •
, I s i t a K i n g· ?
JZ AT 1 2 •
I Ye s -
) Ump
CPI KN IGHT •
I I s i t a Kn i g h t ? •

JZ AT 1 2 •
I Ye s -
j ump
JMP AT 1 0 •
I J u mp

41
· ************************************************************
I

; ATTAC K S AV E RO UT I N E
· ************************************************************
I

; F U N C T I ON : To s a v e a n a t t a c k i n g p i e c e v a l u e i n t h e
.
I a t t a c k l i s t , a n d t o i n c r e me n t t h e a t t a c k
.
I coun t fo r tha t c o l o r p i e c e .
.
I


I Th e p i n p i e c e l i s t i s c h e c k e d f o r t h e

I a t t ac k i ng p i ece , and i f fo und the r e , the
.
I p i ece i s no t i nc l ud ed in the a t t a c k l i s t .
.
I

; CALLED BY : AT'I1AC K

I

; C A L LS : P NC K

I

; ARG U M E N T S : No n e
· ***********************************************************
I

ATKSAV : PUS H B ; S a v e Re g s BC
PUSH D ; S a v e Re g s D E
L OA NP I NS ; N u m be r o f p i n n e d p i e c e s
ANA A ; An y ?
CNZ P NC K ; Ye s - c h e c k p i n l i s t
L I XD T2 ; I n i t i n d e x to v a l u e t a b l e
LX I H , ATKLST ; In i t add r ess o f a t tac k l i s t
LXI B,0 ; I n i t i n c r e me n t f o r wh i t e
LOA P2 ; A t t a c k i ng p i ece
B I '11 7IA ; I s i t wh i t e ?
JRZ . +4 ; Ye s - ] U mp
MVI C,7 ; I n i t i n c r e me n t f o r b l a c k
AN I 7 ; A t ta c k i ng p i e c e type
MOV E,A ; I n i t i nc r emen t f o r type
B IT 7,D ; Qu e e n f o u n d t h i s s c a n ?
J RZ . +4 ; No - J u mp
MVI E , QU E EN ; U s e Qu e e n s l o t i n a t t a c k l i s t
DAD B ; A t ta c k l i s t add r e s s
I NR M ; I n c r eme n t l i s t c o u n t
MVI D,0
DAD D ; At tac k l i s t s l o t add r e s s
M OV A,M ; Ge t d a t a a l r e a d y t h e r e
AN I 0FH ; I s f i r s t s l o t emp ty ?
J RZ AS 2 0 ; Ye s - J ump
MOV A,M ; Ge t d a t a a g a i n
AN I 0F0H ; I s s e c o n d s l o t e mp t y ?
J RZ AS 1 9 ; Ye s - J um p
I NX H ; I n c r e me n t to K i ng s l o t
JMPR AS 20 ; J u mp
AS 1 9 : RLD ; Te m p s a v e l o we r i n u p p e r
MOV A , P VA L U E ( X ) ; Ge t n e w v a l u e f o r a t t a c k l i s t
RRD ; Pu t i n 2 n d a t t a c k l i s t s l o t
J M PR AS 2 5 ; J u mp
AS 2 0 : MOV A , P VA L U E ( X ) ; Ge t n e w v a l u e f o r a t t a c k l i s t
RLD ; Pu t i n 1 s t a t t a c k l i s t s l o t
AS 2 S : POP D ; Re s t o r e D E r e g s
POP B ; Re s t o r e B C r e g s
RET ; Re t u r n

· * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
,
; P I N C H E C K ROU T I N E
· * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * ** * * * * * * * * * * * *
,
; F U NC T I O N : Chec k s to see i f the a t tac k e r i s i n the
.
, p i nned p i ece l i s t . I f so h e i s no t a va l i d
.
, a t t a c k e r u n l e s s t h e d i r e c t i o n i n wh i c h h e

, a t ta c k s i n the s ame a s t h e d i r ec t i o n a l ong
.
, wh i c h he i s p i nn ed . I f the p ie c e i s
.
, f o u nd to be i n va l id a s a n a t tac k e r , t h e

, r e t u r n t o t h e c a l l i n g r o u t i n e i s a bo r t e d

, a n d t h i s r o u t i n e r e t u r n s d i r e c t l y t o ATTAC K .

,
; CAL L E D BY : A T K S AV
.,
; CALLS : No n e

,
; A RG U M E N T S : Th e d i r e c t i o n o f t h e a t t a c k .
; Th e p i n n e d p i e c e c o u n n t .
· * * * * * ** * * * * * * * * * * ** * * * * * * * * * * * * * * * * * * * * * * ** * * * * * * * * * * * * * * * * * *
,
PNCK : MOV D,C ; Sa v e a t t a c k d i r e c t i on
MVI E,0 ; Cl ear f lag
MOV C,A ; Lo a d p i n c o u n t f o r s e a r c h
MVI 8,0
LOA M2 ; Po s i t i o n o f p i e c e
LX I H , P L I S TA ; Pi n l i s t add r ess
PC l : CC I R ; Se a r c h l i s t t o r po s i t i o n
RN Z ; Re t u r n i f n o t f o u n d
E XA F ; S a v e s e a r c h p a r a me n t e r s
B IT 0,E ; I s th i s the f i r s t f ind ?
J RN Z PC S ; No - j ump
S E 'T 0,E ; Se t f i r s t f i nd f l ag
PUSH H ; Ge t c o r r e s p i n d e x t o d i r l i s t
POP x
MOV
.
A,9 (X) ; Ge t d i r e c t i o n
CMP D ; Sa me a s a t t ac k i ng d i r ec t i o n ?
JRZ PC 3 ; Ye s - j u m p
N EG ; Op p o s i t e d i r e c t i o n ?
CMP D ; Same a s a t t ac k i ng d i r e c t i on ?
J RN Z PC S ; No - j u m p
PC 3 : E XA F ; Re s t o r e s e a r c h p a r a m e t e r s
J PE PC l ; J u mp i f s e a r c h n o t c o mp l e t e
RET ; Re t u r n
PC S : POP PSW ; Abno r ma l e x i t
POP D ; Re s t o r e r e g s .
POP B
R E 'I1 ; Re t u r n t o ATTAC K

43
· * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
I

; P I N F I N D ROU T I N E
· * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
I

; F U N C T I ON : To p r o d u c e a l i s t o f a l l p i e c e s p i n n e d
.

I a g a i n s t t h e K i ng o r Q u e e n , f o r bo t h w h i t e
.

I a nd b l a c k .

I

; CALLED BY : F N DM OV
.

I EVAL
.

; C AL L S : PATH

I ATTAC K
.

; A RG U M E N T S : No n e
· * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
I

P I NFND : X RA A ; Z e r o p i n coun t
STA NP I NS
LX I D , PO S K ; Ad d r o f K i n g /Q u e e n p o s l i s t
PFl : L DA X D ; Ge t p o s i t i o n o f r o y a l p i e c e
ANA A ; I s i t o n bo a r d ?
JZ PF26 ; No - J um p
CPI -1 ; A t e nd of l i s t ?
RZ ; Ye s r e t u r n
S TA M3 ; S a v e po s i t i o n a s b o a r d i n d e x
L I XD M3 ; Lo a d i n d e x t o bo a r d
MOV A , BOARD ( X ) ; Ge t c o n t e n t s o f b o a r d
S TA Pl ; Sa v e
MV I B,8 ; !n i t scan d i rect ion coun t
X RA A
S TA I NDX 2 ; !n i t d i r e c t ion i nd e x
L I YD I NDX 2
PF2 : LOA M3 ; Ge t K i n g /Q u e e n p o s i t i o n
S TA M2 ; Save
X RA A
S TA M4 ; C l e a r p i nned p i ece saved pos
M OV C , D I RECT ( Y ) ; Ge t d i r e c t i o n o f s c a n
PFS : CALL PATH ; C o mp u t e n e x t po s i t i o n
ANA A ; I s i t e mp t y ?
J RZ PFS ; Ye s - J um p
CPI 3 ; O f f bo a r d ?
JZ PF 2 5 ; Ye s - J u m p
CPI 2 ; P i e c e o f s a me c o l o r f o u n d ?
L OA M4 ; Lo a d p i n n e d p i e c e p o s i t i o n
J RZ PF1 5 ; Ye s - J u mp
ANA A ; Po s s i b l e p i n ?
JZ PF2 5 ; No - J um p
LOA T2 ; P i ece type e ncoun te r e d
CPI QU E EN ; Qu e e n ?
JZ PF 1 9 ; Ye s - J u m p
M OV L,A ; Sa v e p i e c e t y p e

44
MOV A,B ; Di r ec t ion co unte r
CPI 5 ; No n - d i a g o n a l d i r e c t i o n ?
J RC PF 1 0 ; Ye s - J U mp
MOV A,L ; P i ece type
CPI B I S HOP ; B i shop ?
JNZ PF2 5 ; No - J u m p
JMP PF20 ; J u mp
PF1 0 : MOV A,L ; P i ece type
CPI ROO K ; Ro o k ?
JNZ PF2 5 ; No - J u mp
JMP PF20 ; J u mp
PF1 5 : ANA A ; Po s s i b l e p i n ?
JNZ PF2 5 ; No - J u m p
LDA M2 ; Sa v e po s s i b l e p i n po s i t i o n
S TA M4
JMP PFS ; J u mp
PF1 9 : LDA Pl ; Lo a d K i n g o r Q u e e n
AN I 7 ; C l ea r f l ag s
CPI QUEEN ; Qu e e n ?
J RN Z PF20 ; No - J u m p
PUSH B ; Sa v e r eg s .
PUSH D
PUSH y
X RA A ; Z e r o o u t a t tac k l is t
MV I B, 14
LX I H , AT K L S T
MOV M,A
I NX H
DJ N Z . -2
MV I A,7 ; Se t a t t ac k f l ag
S TA 'I' l
CALL ATTAC K ; F i nd a t t a c k e r s/d e f e nd e r s
LXI H , WAC 'r ; Wh i te queen a t tac k e r s
LXI D , BACT ; B l a c k queen a t t ac ke r s
LOA Pl ; Ge t q u e e n
BIT 7,A ; I s she wh i te ?
J RZ . +3 ; Ye s - s k i p
XC HG ; Re v e r s e f o r b l a c k
M OV A,M ; N u m be r o f d e f e nd e r s
XC H G ; Re v e r s e f o r a t t a c k e r s
SUB M ; De f e n d e r s m i n u s a t t a c k e r s
DC R A ; Le S S 1
POP y ; Re s t o r e r e g s .
POP D
POP B
JP PF2 5 ; J u mp i f p i n n o t v a l i d
PF20 : LX I H , NP I NS ; Ad d r e s s o f p i n n e d p i e c e c o u n t
I NR M ; I n c r e me n t
L I XD NP I NS ; Lo a d p i n l i s t i n d e x
MOV P L I STD ( X ) , C ; Sa ve d i r e c t ion o f p i n

LDA M4 , Po s i t i o n of p i n ned p iece
MOV PL I ST ( X ) , A •
, Sa ve in list

PF2 5 : I NX y , I n c r e me n t d i r ec t ion i nd e x
DJ N Z PF27 •
, Do n e ? No -
Jump
PF26 : I NX D .
, Iner K i n g /Q u e e n po s i nd e x

JMP PFl , J u mp
PF27 : J !1 P PF2 •
, J u mp

46
· ************************************************************
I

; E XC H A N G E RO U T I N E
· ************************************************************
I

; F U NCT I ON : To d e t e r m i n e t h e e x c h a n g e v a l u e o f a
.

I p i e c e o n a g i v e n s q u a r e by e x a m 1 n 1 n g a l l
.

I a t t a c k e r s a nd d e f e nd e r s o f t h a t p i e ce .
.
I

; CALLED BY : PO I N T S
.

; CALLS : N E X 'T A D
.
I

; A RG U M E N TS : No n e .
· ***********************************************************
I

XC H NG : EXX ; Swa p r eg s .
L OA Pl ; P i ec e a t t a c k ed
LX I H , WA C T ; Ad d r o f w h i t e a t t k r s /d f n d r s
LX I D , BACT ; Ad d r o f b l a c k a t t k r s / d f n d r s
BIT 7,A ; Is p i e c e wh i te ?
J RZ . +3 ; Ye s - J u m p
XC HG ; S w a p l i s t po i n t e r s
M OV B,M ; In i t l i s t cou n ts
XC HG
MOV C,M
XC HG
E XX ; Re s t o r e r e g s .
MV I C,0 ; I n i t a t t a c k e r /d e f e n d e r f l a g
MV I E,0 ; I n i t po i n t s l o s t c o u n t
L I XD T3 ; Lo a d p i e c e v a l u e i n d e x
M OV D , P VA L U E ( X ) ; Ge t a t t a c k ed p i e c e v a l u e
S LA R D ; Do u b l e i t
M OV B,D ; Save
C AL L N E XTAD ; Re t r i e v e f i r s t a t t a c k e r
RZ ; Re t u r n i f n o n e
XC 1 0 : MOV L,A ; Save a t tacke r va l ue
CALL N E X TAD ; Ge t n e x t d e f e n d e r
JRZ XC 1 8 ; J u mp i f n o n e
E XA F ; Sa v e d e f e nd e r v a l ue
M OV A,B ; Ge t a t t a c k e d v a l ue
CMP L ; At tacked l e s s than a t ta c k e r ?
J RN C XC 1 9 ; No - J U m p
EXAF ; Re s t o r e d e f e nd e r
XC 1 5 : CMP L ; De f e n d e r l e s s t h a n a t t a c k e r ?
RC ; Ye s - r e t u r n
C ALL N EXTAD ; Re t r i e v e n e x t a t t a c k e r v a l u e
RZ ; Re t u r n i f n o n e
M OV L,A ; Sa ve a t ta c k e r va l ue
CALL N E X TA O ; Re t r i e v e n e x t d e f e n d e r v a l u e
J RN Z XC 1 5 ; J u mp i f n o n e
XC 1 8 : E XA F ; Save De f e nd e r
.

MOV A,B ; Ge t v a l ue o f a t ta c k e d p i ec e

47
XC 1 9 : B I 'l' 0,C •
I A t ta c k e r o r d e fe nd e r ? .

J RZ . +4 •
I Jump i f d e f e nd e r
N EG •
I Ne g a t e v a l u e fo r a t t a c k e r
ADD E .
I To t a l p o i n t s l o s t
M OV E,A •
I S a v e to ta l
E XA F •
I Re s t o r e p r e v i o u s d e f e n d e r
RZ •
I Re t u r n i f n o n e
MOV B,L •
I P r e v a t t c k r be c o me s d e f e n d e r
JMP XC 1 0 •
I J u mp

· * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
,
; N E X T ATTAC K E R/ D E F E N D E R RO U T I N E
· * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
I

; F U NC T I O N : To r e t r i e v e t h e n e x t a t t a c k e r o r d e f e n d e r

I p i e c e va l ue f r om t h e a t t a c k l i s t , a nd d e l e t e

I t h a t p i e ce f r om t h e l i s t •


I

; CALLED BY : XC H NG
.

: CALLS : No n e

,

; A RG U M E N T S : A t ta c k l i s t add r e sses .

I S i de f lag

I At tac k l i s t coun ts
· * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
I

N E X TAD : I NR c ; I n c r eme n t s id e f l ag
E XX ; S wa p r e g i s t e r s
MOV A,B ; Swap l i s t coun t s
MOV B,C
MOV C,A
XC HG ; Swap l i s t po i n t e r s
X RA A
CMP B ; At end o f l i s t ?
J RZ NX6 ; Ye s - J u mp
DCR B ; De c r e m e n t l i s t c o u n t
I NX H ; I n c r e m e n t l i s t po i n t e r
CMP M ; C h e c k ne x t i tem i n l i s t
JRZ .
-
2 ; J u mp i f e mp t y
RRD ; Ge t v a l u e f r o m l i s t
ADD A ; Do u b l e i t
DCX H ; De c r e me n t l i s t po i n t e r
NX6 : EXX ; Re s t o r e r e g s .
RET ; Re t u r n

48
· * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
'

; P O I N T E V A L U AT I ON ROU T I N E
· * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
'

; F U N C T I ON : To p e r f o r m a s t a t i c b o a r d e v a l u a t i o n a n d

' d e r i v e a s c o r e f o r a g i v e n bo a r d po s i t i o n
.

; CALLED BY : F N D MOV

I EVAL

I

; C AL L S : A TTAC K

' XC H N G

I LIMIT

I

; A RG U M E N T S : No n e
· * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
I

PO I NTS : X RA A ; Z e r o o u t var i ables


S TA MTRL
S TA B RD C
S TA PTSL
S TA P TS W l
S TA PTSW 2
S TA PTSC K
LX I H , Tl ; Se t a t t ac k e r f l ag
MVI M, 7
MVI A, 21 ; I n i t t o f i r s t s q u a r e o n bo a r d
PT S : S 'rA M3 ; Sa v e a s boa r d i nd e x
L I XD M3 ; Lo a d b o a r d i nd e x
M OV A , BOA R D ( X ) ; Ge t p i e c e f r o m b o a r d
CPI -1 ; O f f boa r d edg e ?
JZ PT 2 5 ; Ye s - ] Ump
LX I H , Pl ; Sa ve p i ec e , i f a ny
MOV M,A
AN I 7 ; Sa ve p i ec e type , i f a ny
S TA T3
CPI KN I G H T ; Le s s t h a n a K n i g h t ( P a w n ) ?.

J RC PT 6 X ; Ye s - J u mp
CPI ROO K ; Ro o k , Qu e e n o r K i n g ?
J RC PT6B ; No - J Ump
CPI K I NG ; I s i t a K i ng ?
J RZ PT6AA ; Ye s - J u m p
L DA M OV E N O ; Ge t mo v e n u m b e r
CPI 7 ; Le s s t h a n 7 ?
J RC PT 6A ; Ye s - J u mp
JMP PT6 X ; J u mp
PT6AA : BIT 4,M ; Ca s t l ed ye t ?
JRZ PT6A ; No - J u m p
MV I A , +6 ; Bo n u s f o r c a s t l i ng
BIT 7,M ; Chec k p i ece color
J RZ PT6D ; J u mp i f wh i te
MV I A, -6 ; Bo n u s f o r b l a c k c a s t l i ng

49
JMP PT 6 D ; J u mp
PT6A : B IT 3,M ; Ha s p i e c e moved ye t ?
JRZ PT6 X ; No - ] U m p
JMP PT6C ; Jump
PT6B : BIT 3,M ; Ha s p i ece moved ye t ?
J RN Z PT6X ; Ye s - J u m p
PT6C : MV I A,-2 ; T w o po i n t p e n a l t y f o r w h i t e
B IT 7,M ; C he c k p i e c e co l or
JRZ . +4 ; Jump i f wh i te
MV I A , +2 ; Two p o i n t pe n a l t y f o r b l a c k
PT6 D : LX I H , B RD C ; Ge t a d d r e s s o f bo a r d c o n t r o l
ADD M ; Ad d o n p e n a l t y / bo n u s p o i n t s
MOV M,A ; Sa ve
PT6 X : X RA A ; Z e r o ou t a t tack l i s t
MVI B, 14
LX I H , AT K L S T
MOV M,A
I NX H
,
DJ N Z . -2
C ALL AT'fAC K ; Bu i l d a t ta c k l i s t for squ a r e
LXI H , BACT ; Ge t b l a c k a t t a c k e r c o u n t a d d r
L DA WAC T ; Ge t w h i t e a t t a c k e r c o u n t
SUB M ; Co m p u t e c o u n t d i f f e r e n c e
LXI H , B RD C ; Ad d r e s s o f bo a r d c o n t r o l
ADD M ; Ac c u m bo a r d c o n t r o l s c o r e
MOV M,A ; Sa ve
L DA Pl ; Ge t p i e c e o n c u r r e n t s q u a r e
ANA A ; I s i t empty ?
JZ PT 2 5 ; Ye s - J u m p
CALL XC H NG ; E v a l u a t e e x c h a ng e , i f a n y
X RA A ; Check for a loss
C MP E ; Po i n t s l o s t ?
J RZ PT 2 3 ; No - J u m p
DC R D ; De d u c t h a l f a P a wn v a l u e
L DA Pl ; Ge t p i e c e u n d e r a t t a c k
LXI H , COLOR ; C o l o r o f s i d e j u s t mo v e d
X RA M ; Compa r e w i th p i ec e
BIT 7,A ; Do c o l o r s m a t c h ?
MOV A,E ; Po i n t s l o s t
J RN Z PT 2 0 ; J u mp i f no m a t c h
LX I H , PTS L ; P r e v i o u s m a x po i n t s l o s t
CMP M ; C o mp a r e to c u r r e n t v a l u e
J RC PT 2 3 ; J u mp i f g r e a t e r t h a n
M OV M,E ; S t o r e n e w va l u e a s ma x l os t
L I XD M L PT RJ ; Lo a d p o i n t e r t o t h i s m o v e
L DA M3 ; Ge t po s i t i o n o f l o s t p i e c e
CMP M L TOP ( X ) ; I s i t t h e o n e mo v i n g ?
J RN Z PT2 3 ; No - ] U m p
S TA PTS C K ; S a v e pos i t i o n a s a f l ag
JMP PT2 3 ; J u mp

50
PT 2 0 : LX I H , PTS W l ; P r e v i o u s m a x i m u m po i n t s wo n
C MP M ; C o mp a r e t o c u r r e n t v a l u e
J RC . +4 ; J ump i f g r e a t e r than
M OV A,M ; Lo a d p r e v i o u s m a x v a l u e
M OV M,E ; S t o r e n e w v a l u e a s ma x w o n
LXI H , PTSW 2 ; P r e v i o u s 2 n d ma x po i n t s wo n
CMP M ; C o mp a r e t o c u r r e n t v a l u e
J RC PT2 3 ; J ump i f g r e a t e r t h a n
M OV M,A ; S to r e a s new 2nd max los t
PT 2 3 : LXI H , Pl ; Ge t p i e c e
B IT 7,M ; Te s t c o l o r
M OV A,D ; Va l u e o f p i e c e
J RZ . +4 ; J u mp i f w h i t e
N EG ; Neg a te fo r b l a c k
LXI H , MTRL ; Ge t a d d r s o f ma t e r i a l t o t a l
ADD M ; Ad d n e w v a l u e
MOV M,A ; Sto r e
PT2 5 : LOA M3 ; G e t c u r r e n t b o a r d po s i t i o n
INR A ; I n c r eme n t
CPI 99 ; A t e nd o f bo a r d ?
JNZ PTS ; No - J ump
L OA PTSC K ; Mo v i ng p i e c e l o s t f l a g
ANA A ; Was i t lost ?
J RZ PT 2 5A ; No - J u m p
LDA PTS W 2 ; 2nd ma x po i n t s won
S TA PTS W l ; S t o r e a s ma x po i n t s w o n
X RA A ; Z e r o o u t 2 n d m a x po i n t s w o n
S TA P TS W 2
P T 2 5A : LOA PTS L ; Ge t m a x p o i n t s l o s t
ANA A ; Is i t zero ?
J RZ . +3 ; Ye s - J ump
DC R A ; De c r e m e n t i t
M OV B,A ; Sa v e i t
L OA PTSW l ; M a x po i n t s wo n
ANA A ; Is i t ze r o ?
J RZ . +11 ; Ye s - J u m p
LDA PTS W 2 ; 2 n d m a x p o i n t s wo n
ANA A ; I s i t ze r o ?
J RZ . +5 ; Ye s - J um p
DC R A ; De c r e m e n t i t
S RL R A ; D i v i d e i t by 2
SUB B ; S u b t r a c t po i n t s l o s t
LX J Y , C O LO R ; Co l o r o f s i d e j u s t mo v e d
B I 'I' 7,M ; I s i t wh i te ?
JRZ . +4 ; Ye s - J u m p
N EG ; Ne g a t e f o r bl a c k
LX I H , MTRL ; Ne t m a t e r i a l o n b o a r d
ADD M ; Ad d e x c h a n g e a d j u s t me n t s
LX I H , MV 0 ; Mater ial at ply 0

51
SUB M ; Sub t r a c t f r om c u r r e n t
MOV B,A ; Save
MV I A, 30 ; Lo a d m a t e r i a l l i m i t
C ALL LIMIT ; L i m i t to p l u s o r m i n u s v a l u e
MOV E,A ; Save l i m i ted va l ue
LOA B R DC ; Ge t bo a r d c o n t r o l po i n t s
LX I H , BC 0 ; Boa r d con t r o l a t p l y ze ro
SUB M ; Ge t d i f f e r e n c e
MOV B,A ; Save
LOA PTS C K ; Mo v i ng p i e c e l o s t f l a g
ANA A ; Is i t ze r o ?
JRZ . +4 ; Ye s - J u m p
MV I 8,0 ; Z e r o bo a r d c o n t r o l po i n t s
MVI A, 6 ; Lo a d bo a r d c o n t r o l l i m i t
C ALL LIMIT ; L i m i t to p l u s o r m i n u s v a l u e
MOV D,A ; Sa ve l i m i t ed va l u e
MOV A,E ; Ge t m a t e r i a l po i n t s
ADD A ; M u l t i p l y by 4
ADD A
ADD D ; Ad d bo a r d c o n t r o l
LX I H , COLOR ; Co l o r o f s i d e j u s t mo v e d
B I 'I' 7,M ; Is i t wh i t e ?
J RN Z . +4 ; No - J u m p
N EG ; N e g a t e f o r wh i t e
AD I 80H ; Re s c a l e s c o r e ( n e u t r a l - 8 0 H )
S TA VALM ; Save sco r e
L I XD MLPTRJ ; Lo a d m o v e l i s t p o i n t e r
M OV M LV A L ( X ) , A ; S a v e s c o r e i n mo v e l i s t
RET ; Re t u r n

52
· ***************************************** * * * * * * * * * * * * * * * * * *
'

; LIMIT RO U T I N E
· ************* * ** * *** * ***** * * * * * * * * * * * * * * * * * * * * * * * * ** * * * * * *
'

; F U N C T I ON : To l i m i t t h e m a g n i t u d e o f a g i v e n v a l u e

' to ano the r g i ven va l ue .


.
'

; CALLED BY : Pu I NTS
.
I

; CALLS : No n e

; A RG U M E N T S : Input - Va l u e t o b e l i m i t e d i n t h e B

, r eg i s te r .

I - Va l u e t o l i m i t t o i n t h e A r e g i s t e r .

, Ou t p u t - L i m i t e d v a l u e i n t h e A r e g i s t e r .
· ************************************************************
,

LIMIT : BIT 7 , B •
, Is va l ue nega t ive ? .

JZ LIM10 •
I No - ] U m p
N EG •
I Make pos i t i ve
CMP B •
I C o mp a r e t o 1 1 m 1 t
RNC •
I Re t u r n i f o u t s i d e l i m i t
MOV A,B •
I Ou tpu t v a l u e a s l S
RET •
I Re t u r n
LIM10 : CMP B •
I C o mp a r e t o l i m i t
RC •
I Re t u r n i f o u t s i d e l i m i t
M OV A,B •
I Ou t p u t v a l u e a s l S
'
RE r •
I Re t u r n
. END

53
· * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
'

; M O V E RO U T I N E
· * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
'

; F U N C ·r I 0 N : To e x e c u t e a mo v e f r o m t h e mo v e l i s t o n t h e
.
' bo a r d a r r a y .
.
'

; C A L L E D BY : C PT RM V
.
' P L Y RM V
.
' EVAL
.
' F N DMOV
.
' VALMOV
.
'

; CALLS : No n e
.
'

; A RG U M E N T S : No n e
· * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
'

MOV E : L H LD M L P T RJ ; Lo a d mo v e l i s t po i n t e r
I NX H ; I n c r e m e n t pa s t l i n k by t e s
I NX H
MV l : M OV A,M ; " F r o m " po s i t i o n
S TA Ml ; Save
I NX H ; I n c r e me n t po i n t e r
M OV A,M ; " To " po s i t i o n
S TA M2 ; Save
I NX H ; I n c r e m e n t po i n t e r
MOV D,M ; Ge t c a p t u r e d p i e c e / f l a g s
L I XD Ml ; Lo a d " f r o m " p o s bo a r d i n d e x
MOV E , BOARD ( X ) ; Ge t p i e c e m o v e d
B IT 5,D ; Te s t P a w n p r omo t i o n f l a g
J RN Z MV 1 5 ; J u mp i f s e t
M OV A,E ; P i e c e mo v ed
AN ! 7 ; C l e a r f l ag b i t s
CPI QU E EN ; Is i t a queen ?
JRZ MV 2 0 ; Ye s - J u m p
CPI K I NG ; Is i t a k i ng ?
J RZ MV3 0 ; Ye s - J u mp
MVS : L I YD M2 ; Lo a d " t o " po s bo a r d i n d e x
S ET 3,E ; Se t p i e c e moved f l ag
M OV BOARD ( Y ) , E ; I n s e r t p i e c e a t n e w po s i t i o n
MVI BOARD ( X ) , 0 ; E m p t y p r e v i o u s po s i t i o n
B IT 6,D ; Do u b l e m o v e ?
J RN Z MV4 0 ; Ye s - j um p
M OV A,D ; Ge t c a p t u r e d p i e c e , i f a n y
AN ! 7
CPI QUEEN ; Was i t a queen ?
RN Z ; No - r e t u r n
LXI H , POSQ ; Ad d r o f s a v e d Q u e e n po s i t i o n
BIT 7,D ; I s Qu e e n w h i t e ?
JRZ MV1 0 ; Ye s - j u mp
I NX H ; I n c r e me n t t o b l a c k Qu e e n po s

54
MV l O : X RA A ; Se t s a v e d po s i t i o n to z e r o
M OV M,A
RET ; Re t u r n
MV 1 5 : S ET 2,E ; C h a ng e P a w n t o a Q u e e n
JMP MV S ; J u mp
MV 2 0 : LX I H , POSQ ; Ad d r o f s a v e d Qu e e n po s i t i o n
MV2 1 : BIT 7,E ; I s Qu e e n w h i t e ?
JRZ MV 2 2 ; Ye s - j u m p
I NX H ; I n c r e m e n t t o b l a c k Qu e e n po s
MV 2 2 : LOA M2 ; Ge t n e w Qu e e n p o s i t i o n
M OV M,A ; Save
JMP MV S ; Jump
MV3 0 : LX I H , POS K ; Ge t s a v e d K i n g p o s i t i o n
BIT 6,D ; C a s t l i ng ?
J RZ MV 2 1 ; No - ] U m p
S ET 4,E ; Se t K i ng c a s t l ed f l ag
JMP MV 2 1 ; J u mp
MV4 0 : L H LD M L P T RJ ; G e t mo v e l i s t p o i n t e r
LXI D,8 ; I n c r emen t t o n e x t mo v e
DAD D
JMP MVl ; J u mp ( 2 n d p a r t o f d b l mo v e )

55
· *********************** * *****************************� ****
I

; U N -M OV E RO U T I N E
· **********************************************************
I

; F U N C 'r I O N : To r e v e r s e t h e p r o c e s s o f t h e mo v e r o u t i n e ,
.

I t h e r e by r e s t o r i ng t h e b o a r d a r r a y t o i t s

I p r e v i o u s po s i t i o n


I

; CALLED BY : VALMOV
.

I EVAL

I F N DMOV

I ASC END
.

; CALLS : No n e
.

; A RG U M E NTS : No n e
· *************************************************************
I

U NMOV E : LHLD M L P T RJ ; Lo a d m o v e l i s t po i n t e r
I NX H ; I n c r e m e n t pa s t l i n k by t e s
I NX H
UMl : MOV A,M ; Ge t " f r o m " po s i t i o n
STA Ml ; Sa v e
I NX H ; I n c r e m e n t po i n t e r
M OV A,M ; Ge t " t o " po s i t i o n
S TA M2 ; Save
I NX H ; I n c r e m e n t po i n t e r
M OV D,M ; Ge t c a p t u r e d p i e c e / f l a g s
L I XD M2 ; Lo a d " t o " po s bo a r d i n d e x
M OV E , B O A RD ( X ) ; Ge t p i e c e mo v e d
BIT 5,D ; W a s i t a P a w n p r o mo t i o n ?
JRNZ UM1 5 ; Ye s - J u m p
MOV A,E ; Ge t p i e c e m o v e d
AN ! 7 ; C l e a r f l ag b i t s
CPI QUE EN ; W a s i t a Qu e e n ?
JRZ UM 2 0 ; Ye s - ] U m p
CPI K I NG ; Was i t a K i ng ?
JRZ UM 3 0 ; Ye s - ] U mp
UMS : B IT 4,D •
I I s t h i s 1 s t mo v e f o r p i e c e ?
J RN Z UM1 6 ; Ye s - ] U mp
UM6 : L I YD Ml ; Lo a d " f r o m " po s bo a r d i n d e x
MOV BOARD ( Y ) , E ; Re t u r n t o p r e v i o u s bo a r d po s
M OV A,D ; Ge t c a p t u r e d p i e c e , i f a n y
AN ! 8FH ; Clear f lag s
MOV BOARD ( X ) , A ; Re t u r n to bo a r d
BIT 6,D ; W a s i t a d o u b l e mo v e ?
J RN Z UM4 0 ; Ye s - ] U mp
M OV A,D ; Ge t c a p t u r e d p i e c e , i f a n y
AN ! 7 ; C l e a r f l ag b i t s
CPI QUEEN ; W a s i t a Qu e e n ?
RN Z ; No - r e t u r n

56
LX I H , POSQ ; Ad d r e s s o f s a v e d Qu e e n po s
BIT 7,D ; I s Qu e e n w h i t e ?
JRZ UM 1 0 ; Ye s - J ump
I NX H ; I n c r e m e n t t o b l a c k Qu e e n po s
UM1 0 : LOA M2 ; Qu e e n ' s p r e v i o u s p o s i t i o n
MOV M,A ; Save
RET ; Re t u r n
UMl S : RES 2,E ; Re s t o r e Qu e e n t o P a w n
JMP UMS ; J u mp
UM1 6 : RES 3,E ; C l e a r p i e c e mo v e d f l a g
JMP UM6 ; J u mp
UM20 : LXI H , POSQ ; Ad d r o f s a v e d Qu e e n po s i t i o n
UM21 : BIT 7,E ; I s Qu e e n w h i t e ?
J RZ UM2 2 ; Ye s - J u m p
I NX H ; I n c r e m e n t t o b l a c k Qu e e n p o s
UM2 2 : LOA Ml ; Ge t p r e v i o u s p o s i t i o n
MOV M,A ; Save
JMP UMS ; J u mp
UM3 0 : LXI H , PO S K ; Ad d r e s s o f s a v e d K i n g p o s
BIT 6,D ; Was i t a castle ?
J RZ UM2 1 ; N o - J um p
RES 4,E ; C l e a r c a s t l ed f l ag
JMP UM2 1 ; J u mp
UM4 0 : L H LD M L PT RJ ; Lo a d m o v e l i s t po i n t e r
LXI D,8 ; I n c r e me n t t o n e x t mo v e
DAD D
JMP UMl ; J u mp ( 2 n d p a r t o f d b l mo v e )

67
· * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
I

; S O RT ROUT I N E
· * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
I

; F U NC T I ON : To s o r t t h e mo v e l i s t i n o r d e r o f

I i n c r e a s i n g mo v e v a l u e s c o r e s •

; CAL LED BY : F N DMOV



I

; CALLS : EVAL

I

; A RG U M E NT S : No n e
· * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
I

S O RT M : LBC D M LPTR I ; M o v e l i s t beg i n po i n t e r


LXI D,0 ; I n i t i a l i z e wo r k i ng po i n t e r s
S RS : M OV H,B
MOV L,C
MOV C,M ; Li n k to nex t move
INX H
MOV B,M
MOV M,D ; S to r e to l i nk i n l i s t
DC X H
MOV M,E
X RA A ; End o f l i s t ?
CMP B
RZ ; Ye s - r e t u r n
SR1 0 : S BC D M L PT RJ ; sa v e l i s t po i n t e r
CALL E VA L ; Ev a l u a t e mo v e
L H LD MLPTRI ; B e g i n i n g o f mo v e l i s t
L BC D M L P T RJ ; Re s t o r e l i s t po i n t e r
S R1 5 : MOV E,M ; Ne x t mo v e f o r c o m p a r e
I NX H
MOV D,M
X RA A ; A t end o f l i s t ?
C MP D
JRZ SR2 5 ; Ye s - J u mp
PUSH D ; T r a n s f e r mo ve po i n t e r
POP x
LOA VALM ; G e t n e w mo v e v a l u e
CMP M LVAL ( X } ; Le s s t h a n l i s t v a l u e ?
J RN C SR3 0 ; No - J u mp
SR2 5 : MOV M,B ; L i n k new m o v e i n t o l i s t
DC X H
MOV M,C
JMP SRS ; J u mp
S R3 0 : XC H G ; S w a p po i n t e r s
JMP SR1 5 ; J u mp

58
· **********************************************************
I

; E V A L U A T I Ot ROUT I N E
· **********************************************************
I

; F U NC T I ON : To e v a l u a t e a g i v e n mo v e i n t h e mo v e l i s t .

I I t f i r s t ma k e s t h e mo v e o n t h e bo a r d , t h e n i
.
I t h e mo v e i s l e g a l , i t e v a l u a t e s i t , a n d t h e n
.
I r e s t o r e s t h e bo a a r d p o s i t i o n .
.
I

; CALLED BY : S OR'T

I

; C AL LS : M OV E
.
I I NC H K

I P I NFND

I PO I NTS

I U NMOV
.
I

; A RG U M E N T S : No n e
· * * * * * ****** * * ************************************************
I

EVAL : CALL MOVE •


I M a k e mo v e o n t h e bo a r d a r r a y
CALL I NC H K •
I De t e r m i n e i f mo v e l S l e g a l
ANA A •
I L e g a l mo v e ? .

JRZ EVS •
I Ye s -
] Ump
X RA A . Sc o r e o f z e r o
I

S TA VALM •
I F o r i l l e g a l mo v e
JMP EV10 •
' J u mp
EVS : CALL PINFND •
I C o mp i l e p i n n e d l i s t
CALL PO I NTS •
' A s s i g n po i n t s t o m o v e
EV1 0 : CALL U NMOVE •
I Re s t o r e bo a r d a r r a y
R E 'r •
I Re t u r n

59
· * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
I

; F I N D MOV E RO U T I N E
· * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
I

; F U N C T I ON : To d e t e r m i n e t h e c o m p u t e r ' s b e s t mo v e by

I pe r f o r m i ng a d e p t h f i r s t t r e e s e a r c h u s i ng

I t h e tec h n i q u e s o f a l ph a - be ta p r u n i ng •


I

; CALLED BY : C P T RMV
.
I

; CALLS : P I NFND

I POI NTS

I G E N MOV

I S O RT M

I AS C E N D

I U N MOV

I

; A RG U M E N T S : No n e
· * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
I

F N DMOV : LOA MOV E N O ; C u r r n e t mo ve n u m b e r


CPI 1 ; F i r s t mo v e ?
CZ BOOK ; Ye s - e x e c u t e b o o k o p e n i n g
X RA A ; I n i t i a l i z e p l y n umbe r to z e r
S 'I'A N PLY
LX I H,0 ; I n i t i a l i z e be s t mo v e t o z e r o
S H LD B E S TM
LXI H , ML I ST ; I n i t i a l i z e p l y l i s t po i n t e r s
S H LD MLNXT
LX I H , P LY I X- 2
S HLD MLPTRI
LOA K O LOR .
I In i t i a l i z e co l o r
S TA COLOR
LXI H , S C OR E •
I I n i t i a l i z e s c o r e i nd e x
S H LD SCRI X
L OA P LY M A X •
I Ge t m a x p l y n um b e r
AD I 2 •
I Ad d 2
M OV B,A •
I Sa ve a s c o u n te r
X RA A •
, Z e r o out sco r e table
MOV M,A
I NX H
DJ N Z . -2
S TA BC 0 ; Z e r o p l y 0 boa r d con t r o l
STA MV0 ; Z e r o p l y 0 ma t e r i a l
C ALL P I N FN D ; C o rnp l i e p i n l i s t
CALL PO I N T S ; E v a l u a t e bo a r d a t p l y 0
LDA B RDC ; Ge t bo a r d c o n t r o l p o i n t s
S TA BC 0 ; Sa v e
L OA MTRL ; Ge t m a t e r i a l c o u n t
STA MV0 ; Save
FM S : LX I H , N PLY ; Ad d r e s s o f p l y c o u n t e r
I NR M ; I n c r e me n t p l y c o u n t

60
X RA A ; I n i t i a l i z e ma te f l ag
S TA M AT E F
CALL G E N MOV ; G e n e r a t e l i s t o f mo v e s
L OA N P LY ; C u r r ent ply coun te r
LX I H , P LYMAX ; Ad d r e s s o f ma x i m u m p l y n u m b e r
CMP M ; A t ma x p l y ?
cc S O RT M ; No - c a l l s o r t
L H LO M LPTR I ; Lo a d p l y i n d e x po i n t e r
S HLO M L P T RJ ; Sa v e a s l a s t mov e po i n t e r
FM1 5 : LH LO M L PT RJ ; Lo a d l a s t m o v e po i n t e r
MOV E,M ; Ge t n e x t mo v e p o i n t e r
I NX H
MOV D,M
MOV A,D
ANA A ; End o f mov e l i s t ?
JRZ FM 2 5 ; Ye s - J u m p
SOEO M L P T RJ ; S a v e c u r r e n t mo v e po i n t e r
L H LO M LPTRI ; Sa v e i n p l y p o i n t e r l i s t
M OV M,E
INX H
MOV M,D
LOA NPLY ; C u r r ent p l y coun te r
LX I H , P LYMAX ; M a x i m u m p l y n u m be r ?
C MP M ; Co mpa r e
J RC FM 1 8 ; J u mp i f n o t m a x
<: A L L MOVE ; Ex e c u t e mo ve o n boa r d a r r ay
CALL I NC H K ; C h e c k f o r l e g a l mo v e
ANA A ; I s mo v e l e g a l ?
JRZ . +8 ; Ye s - ] Um p
C AL L U N MOV E ; Re s t o r e bo a r d p o s i t i o n
JMP FM 1 5 ; J u mp
LOA NPLY ; Ge t p l y c o u n t e r
LX I H , PLYMAX ; Max p l y n umbe r
CMP M ; Beyond ma x p l y ?
J RN Z FM 3 5 ; Ye s - J u m p
LOA C O LO R ; Ge t c u r r e n t c o l o r
XRI 80H ; Ge t o p po s i t e c o l o r
CALL I NC H K l ; De t e r m i n e i f K i ng i s i n c h e c k
ANA A ; In check ?
JRZ FM 3 5 ; No - J ump
JMP FM 1 9 ; J u m p ( O n e mo r e p l y f o r c h e c k )
FM1 8 : L I XO M L PT RJ ; Lo a d mo v e p o i n t e r
M OV A , M LV A L ( X ) ; G e t mo v e s c o r e
ANA A ; I s i t z e r o ( i l l e g a l mo v e ) ?
J RZ FM 1 5 ; Ye s - ] Ump
CALL MOVE ; E x e c u t e mo v e o n bo a r d a r r a y
FM 1 9 : LX I H , C O LO R ; To g g l e c o l o r
MV I A, 80H
X RA M
M OV M,A ; Save new col o r

61
BIT 7,A ; I s i t wh i te ?
J RN Z . +6 ; No - J u mp
LXI H , M OV E NO ; I n c r e m e n t mo v e n u m b e r
I NR M
L H LD SCR I X ; Lo a d s c o r e t a b l e po i n t e r
M OV A,M ; Ge t s c o r e two p l y s a bo v e
I NX H ; I n c r eme n t to c u r r e n t p l y
I NX H
MOV M,A ; Save sco r e as i n i t i a l val ue
DC X H ; De c r e m e n t po i n t e r
S H LD SCR I X ; Sa ve i t
JMP FMS ; J u mp
FM2 5 : LOA M A 1' E F ; Ge t m a t e f l ag
ANA A ; Chec kma te or s ta l ema te ?
J RN Z FM3 0 ; No - J um p
LOA C K F LG ; Ge t c h e c k f l a g
ANA A ; Wa s K i ng i n c h e c k ?
MV I A , 80H ; P r e - s e t s t a l e ma t e s c o r e
JRZ FM3 6 ; No - J um p ( s t a l e m a t e )
L OA M OV E N O ; Ge t mo v e n u m b e r
S TA PMATE ; Sa ve
MV I A , 0 F FH ; P r e- s e t c h e c km a t e s co r e
JMP FM3 6 ; J u mp
FM30 : L OA N PLY ; Ge t pl y co u n t e r
CPI 1 ; A t top o f t r e e ?
RZ ; Ye s - r e t u r n
CALL A S C E ND ; A s c e nd o n e p l y i n t r e e
L H LD SC R I X ; Lo a d s c o r e t a b l e p o i n t e r
I NX H ; I n c r eme n t to c u r r e n t p l y
I NX H
MOV A,M ; Ge t sc o r e
DC X H ; Re s t o r e po i n t e r
DCX H
JM P FM3 7 ; J u mp
FM3 5 : CALL P I N FN D ; C o mp i l e p i n l i s t
C ALL PO I N 'rS ; Ev a l u a t e mo v e
C AL L U N MOV E ; Re s t o r e bo a r d po s i t i o n
L OA VA LM ; G e t v a l u e o f mo v e
FM 3 6 : LX I H , MA'I' E F ; Se t ma t e f l ag
S ET 0,M
L H LD SCRIX ; Lo a d s c o r e t a b l e po i n t e r
FM 3 7 : C MP M ; C o m p a r e t o s c o r e 2 p l y a bo v e
J RC FM 4 0 ; Jump i f less
JRZ FM4 0 ; J u mp i f e q u a l
N EG ; Ne g a t e s c o r e
I NX H ; I n e r s c o r e t a b l e po i n t e r
C MP M ; C o mp a r e t o s c o r e 1 p l y a bo v e
JC FM l S ; J u mp i f l e s s t h a n
JZ FM l S ; Jump i f equal

62
MOV M,A ; S a v e a s n e w s c o r e 1 p l y a bo v e
L DA N P LY ; Ge t c u r r e n t p l y c o u n t e r
CPI 1 ; At top o f t r ee ?
JNZ FM 1 5 ; No - J u m p
LHLD M L P T RJ ; Lo a d c u r r e n t m o v e p o i n t e r
SHLD B E S TM ; S a v e a s b e s t mo v e p o i n t e r
LOA SCORE + l ; G e t b e s t mo v e s c o r e
CPI 0 F FH ; Was i t a c h e c km a te ?
JNZ FM 1 5 ; No - J u m p
LX I H , P LY M A X ; Ge t m a x i m u m p l y n u m b e r
DC R M ; Subtr ac t 2
DCR M
LOA KOLOR ; Ge t c o mp u t e r ' s c o l o r
B I 'r 7,A ; I s i t wh i te ?
RZ ; Ye s - r e t u r n
LX I H , PMATE ; C h e c km a t e move n um be r
OC R M ; De c r e m e n t
RET ; Re t u r n
FM 4 0 : CALL ASC END ; A s c e nd o n e p l y i n t r e e
JMP FM 1 5 ; J u mp

63
· * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
I

; ASC EN D TRE E ROUT I N E


· * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
I

; F U N C ·r I 0 N : To a d j u s t a l l n e c e s s a r y p a r a me t e r s t o

I a scend one ply in the t r ee .

; CALLED BY : F N D �l O V
.
I

; CALLS : U N M OV
.
I

; A RG U M E N T S : No n e
· * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
I

ASC END : LX I H , C O LO R ; To g g l e c o l o r
MV I A, 80H
X RA M
MOV M,A ; Save new co l o r
B I 'I' 7, A ; I s i t wh i t e ?
JRZ . +6 ; Ye s - j u m p
LX I H , M OV E N O ; De c r e m e n t mo ve n u m b e r
OC R M
LHLD SCRI X •

I Lo a d s c o r e t a b l e i n d e x
DC X H .
I De c r e m e n t
S H LD SCR I X •

I Sa ve
LXI H , NPLY •
I De c r e me n t p l y c o u n t e r
OC R M
LHLD MLPTRI •
I Lo a d p l y l i s t po i n t e r
DCX H •
I Lo a d po i n t e r t o mo v e l i s t t o p
MOV D,M
DC X H
MOV E , M
SDED M LN XT ; Up d a t e mo v e l i s t a v a i l p t r
DC X H ; Ge t p t r t o n e x t mo v e t o u n d o
MOV D,M
DC X H
MOV E,M
S H LD MLPTRI ; Sa ve new p l y l i s t po i n t e r
S DED M L P T RJ ; S a v e n e x t m o v e po i n t e r
C ALL U NMOVE ; Re s t o r e b o a r d t o p r e v i o u s p l y
RET ; Re t u r n

64
· * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
,

; ON E MOV E BOO K O P E N I NG
· * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
,

; FU CT ION : To p r o v i d e a n o p e n i n g bo o k o f a s i n g l e

I mov e .
.
I

; C ALLED BY : F N DMOV
.
I

; C A L LS : No n e
.
I

; A RG U M E N T S : No n e
· * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
I

BOOK : POP PSW ; A b o r t r e t u r n t o F N OM OV


LX I H , SCORE+ l ; Z e r o ou t sco r e
MV I M , 0 ; Z e r o ou t sco r e table
LXI H , B MOV E S - 2 ; I n i t b e s t mo v e p t r t o bo o k
SHLO B E STM
LX I H , B ESTM ; I n i t i a l i z e a d d r e s s o f po i n t e r
LOA KOLOR ; Ge t c o mp u t e r ' s c o l o r
ANA A ; I s i t wh i te ?
J RN Z BM S ; N o - J u mp
L OA R ; Lo a d r e f r e s h r e g ( r a n d o m n o )
BIT 0,A ; Te s t r a n d o m b i t
RZ ; Re t u r n i f z e r o ( P - K 4 )
I NR M ; P-Q4
I NR M
INR M
RET ; Re t u r n
BMS : I NR M ; I n c r eme n t to bl a c k mov e s
I NR M
I NR M
INR M
INR M
I NR M
L I XO M L P T RJ ; Po i n t e r t o o p p o n e n t s 1 s t m o v e
MOV A , MLFRP ( X ) ; Ge t " f r om " po s i t i o n
CPI 22 ; I s i t a Qu e e n K n i g h t m o v e ?
JRZ BM 9 ; Y e s - J u mp
CPI 27 ; . r s i t a K i ng K n i g h t mo v e ?
JRZ BM9 ; Ye s - J ump
CPI 34 ; I s i t a Qu e e n Pa w n ?
J RZ BM 9 ; Ye s - J ump
RC ; I f Q u e e n s i d e P a w n o pe n i ng -
; r eturn ( P-K4 )
CPI 35 ; I s i t a K i ng P a wn ?
RZ ; Ye s - r e t u r n ( P - K 4 )
BM9 : I NR M •
I ( P -Q 4 )
I NR M
I NR M
RET ; Re t u r n t o C PT RM V

· * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
,

65
· * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
'

; G RA P H I C S DATA B A S E
· * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
'

; D E S C R I P T I ON : T h e G r a p h i c s Da t a B a s e c o n t a i n s t h e
; n e c e s s a r y s t o r e d d a t a to p r e p u c e t h e p i e c e
; o n t he bo a r d . On l y t h e c e n t e r 4 x 4 b l o c k s a r e
; s t o r e d a nd o n l y f o r a B l a c k P i e c e o n a W h i t e
; squa r e . A Wh i t e p i e c e o n a b l a c k s q u a r e i s
; p r o d u c e d by c o mp l e m e n t i n g e a c h b l o c k , a n d a
; p i e c e o n i t s own c o l o r s q u a r e i s p r o d u c e d
; by mov i n g i n a ke r ne l o f 6 b l oc k s .
· * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
'

. LOC S T A RT + 3 8 4
B LB A S E =
S T ART+ 5 1 2
B LOC K =
. - B L BAS E
. RA D I X 16
. BYTE 80 , 80 , 80 , 80 ; B l a c k P a w n o n Wh i t e s q u a r e
. B YTE 8 0 , 0A 0 , 9 0 , 8 0
. BYTE 8 0 , 0A F , 9 F , 8 0
. BYTE 80 , 83 , 83 , 80
. BYTE 80 , 0B0 , 0B0 , 80 ; B l a c k K n i g h t o n Wh i t e sq u a r e
. BYTE 0BE , 0BF , 0BF , 9 5
. BYTE 0A0 , 0BE , 0BF , 8 5
. BYTE 83, 83, 83, 81
. B YT E 0 0 , 0A 0 , a 0 , 0 0 ; B l a c k B i s hop o n Wh i t e squ a r e
. BYTE 0A8 , 0BF , 0BD , 8 0
. B YT E 8 2 , 0A F , 8 7 , 8 0
. BYTE 82 , 83 , 83 , 80
. BYTE 80, 80 , 80 , 80 ; B l a c k Ro o k o n Wh i t e s q u a r e
. BYTE 8A , 0 B E , 0 B D , 8 5
. BYTE 8 0 , 0B F , 0BF , 8 0
. B YT E 82, 83, 83, 81
. B YT E 90 , 80 , 80 , 90 ; B l a c k Qu e e n o n Wh i t e s q u a r e
. BYTE 0BF , 0B 4 , 0BE , 9 5
. B YT E 8B , 0B F , 9F , 8 1
. BYTE 83 , 83 , 83 , 81
. BYTE 80 , 0B8 , 90 , 80 ; B l a c k K i n g o n Wh i t e s q u a r e
. B Y'r E 0 BC , 0BA , 0B 8 , 9 4
. BYTE 0AF , 0BF , 0B F , 8 5
. BYTE 83, 83 , 83, 81
. BYTE 9 0 , 0B 0 , 0B0 , 8 0 ; To pp l e d B l a c k K i n g
. BYTE 0BF , 0B F , 0B 7 , 8 0
. BYTE 9F , 0BF , 0BD , 8 0
. BYTE 80 , 80 , 88 , 9D
K E RN E L =
. - B LB A S E
. BYTE 0 B F , 9 F , 0 A F , 0 B F , 9A , 0A 5 ' P a wn Ke r n e l

. BYTE 8 9 , 0A F , 0 BF , 9F , 0B 9 , 9 F K n i g h t Ke r n e l

I

. BYTE 9 7 , 0B E , 9 6 , 0 BD , 9B , 0 B 9 B i s h o p Ke r n e l
.

. BYTE 0 B 5 , 0 A l , 9 2 , 0 B F , 0 AA , 9 5 Ro o k Ke r n e l

I

. BYTE 0A8 , 9B , 0B 9 , 0 B 6 , 0A F , 0A 7 ' Qu e e n Ke r n e l


. B Yrr E 0A 3 , 8 5 , 0A 7 , 9A , 0B F , 9F K i ng K e r ne l

I

. BYTE 0A8 , 0B F , 8 9 , 0A 2 , 8F , 8 6 To pp l e d K i ng K e r n e l

I

. RA D I X 10

66
· * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
I

; S TA N DA R D M E S S AG E S
· * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
I

. LO C S TA RT + l 8 0 0 H
G RTTNG : . ASC I I " W E LC O M E TO C H E S S ! C A R E FOR A GAM E ? "
A NA M S G : . AS C I I " WO U L D YOU L I K E TO ANA L Y Z E A POS I T I ON ? "
C L RM S G : . AS C I I " DO Y O U WAN T TO P L A Y W H I T E ( w ) O R B LAC K ( b ) ? "
T I T LE ! : . ASC I I " S A RGON "
T I TLE 2 : . ASC I I " P LA Y E R "
..
S PAC E : • ASC I I " ; Fo r o u tp u t o f b l a n k a r e a
MVENUM : . AS C I I "01 "
ti "
T I TLE 3 : . AS C I I
. AS C I I [ "H 83 ] ; Pa r t o f T I TL E 3 - U n d e r l i n e s
. ASC I I [ "H 8 3 ]
. AS C I I [ "H8 3 ]
. ASC I I [ "H 8 3 ]
. ASC I I [ "H 8 3 ]
.
. AS C I I [ .H 8 3 ]
It "
. ASC I I
. ASC I I [ .. H 8 3 ]
. AS C I I [ .. H 8 3 ]
.
. AS C I I [ .H 83 ]
.
. ASC I I [ .H 8 3 ]
. AS C I I [ .. H 8 3 ]
. AS C I I [ .. H 8 3 ]
" It
. AS C I I
MVEMSG : . ASC I I " a l -a l "
o.o: . AS C I I " 0 -0 "
0.0.0: . ASC I I " 0 -0 -0 "
C KM S G : . ASC I I " C H EC K "
MTMSG : . ASC I I " MA T E I N "
It
MTPL : . ASC I I 2 ti
PCS : . ASC I I " K QRBNP " ; Va l i d p i e c e c h a r a c t e r s
UW I N : . AS C I I " YOU W I N "
!WIN : . ASC I I " I WIN"
A GA I N : . ASC I I " C A R E F O R A N OT H E R GAM E ? "
C RT N E S : . ASC I I " I S TH I S R I GHT? "
P LYDEP : . ASC I I " S E L E C T LOOK A H E A D ( 1 - 6 ) "
..
T I T LE 4 : ·. A S C I I "
W S MOVE : . AS C I I " W H O S E MOV E I S I T ? "
B LAN K R : . ASC I I [ � H lC ] ; Con t r o l-\
P . PE P : . AS C I I " P x Pe p "
I N VA L l : . AS C I I " I N VA L I D MOVE "
I N VA L 2 : . AS C I I " T R Y AGA I N "

67
· *******************************************************
I

; VAR I ABLES
· ****************************************************** *
I

B RD P OS : . B L K B 1 ; I n d e x i n t o t h e bo a r d a r r a y
A N BDPS : . B LKB 1 ; Ad d i t i o n a l i n d e x r eq u i r e d f o r AN A L Y S
I N D X E R : . WORD B LB AS E ; I nde x into g r aph i c s d a t a base
N O RMA D : . B LKW 1 ; Th e a d d r e s s o f t h e u p p e r l e f t h a nd
; c o r n e r o f t h e s q u a r e o n t h e bo a r d
L I N EC T : . B Y T E ; C u r r e n t l i n e n umbe r

·
I *******************************************************
; MAC RO D E F I N I T I ON S
·
I *******************************************************
; A l l i n p u t / o u t p u t t o S A RG O N i s h a nd l e d i n t h e f o r m o f
; m a c r o c a l l s t o s i mp l i f y c o n v e r s i o n t o a l t e r n a t e s y s t e m s .
; A l l o f t h e i n p u t /o u t p u t ma c r o s c o n f o r m t o t h e J o v e m o n i t o r
; o f t h e J u p i t e r I I I c o mp u t e r .
·
I ************************* ******************************
·
I * * * OUTPUT <C R > < L F > * * *
. D E F I N E C A RR E·r =
[ RST 7
. B Y'r E 9 2H , lAH
. WORD 0]
·
I * * * C LEAR SCREEN * * *
. D E F I N E C LRS C R =
[ RST 7
. B Y'r E 08 2H , lAH
. WORD B LA N K R , l ]
·
I * * * P R I N T AN Y L I N E ( N A M E , L E NG T H ) * * *
. D E F I N E PRT L I N [ N AM E , L N G T H ] =
[ R ST 7
. B Y'r E 08 2H , lAH
. WORD N A M E , LN G T H ]
·
I * * * P R I N T AN Y B LOC K ( N A M E , L E N GT H ) * * *
. D E F I N E P RT B L K [ N AM E , L N G T H ] =
[ RST 7
. B Y 'r E 0 B 3 H , lAH
. WORD N AM E , L N GT H ]
·
I * * * E X I T TO M O N I TO R * * *
. DEF I NE EX IT=
[ RST 7
. B Y 'r E 0 lFH ]

68
· * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
I

; M A I N P ROG RA M D R I V E R
· * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
I

; F U N C T I ON : To c o o r d i n a t e t h e g a m e m o v e s .

I

; CALLED BY : No ne

I

; C ALLS : I N T E RR

I I N I TB D

, D S P B RD

I C PT RM V

, P L Y RM V

, T B C PC L

I PG I FN D

I

; M A C RO C A L LS : C L RS C R

I C A RR E T

I P RT L I N

, P RT B L K

I

; A RG U M E N T S : No ne
· * * * * * * * * * * * * * * * * * * ** * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
I

. LOC S 'f A RT + l A 0 0 H ; A b o v e t h e mo v e l o g i c
D R I VE R : L X I S P , STAC K ; S e t s t a c k po i n t e r
C LRSCR ; B l a n k out sc r een
P RT L I N G RT'f N G , 3 4 ; Ou t p u t g r e e t i n g
D R I V0 1 : CALL C HARTR ; Ac c e p t a n swe r
CARRET ; New l i ne
CPI 5 9H ; Is i t a ' Y ' ?
JNZ ANALYS ; Y e s - J u mp
S UB A ; Code o f Wh i te i s z e r o
S TA C O LOR ; Wh i te a lways mov e s f i r s t
CALL I NT E RR ; P l a ye r s c o l o r /s e a r c h d ep t h
CALL I N I TB D ; I n i t i a l i ze boa r d a r r a y
MVI A,l ; M o v e n u m be r i s l a t a t s t a r t
S TA MOVENO ; Save
S TA L I N EC T ; L i n e n u m be r i s o n e a t s t a r t
LX I H , MVENUM ; Ad d r e s s o f a s c i i mo v e n u m be r
MVI M , 30H ; In i t to ' 0 1 '
I NX H
MVI M , 31H
I NX H
MVI M , 20H
CALL D S P B RD ; Se t up g r aph i c s boa r d
P RT L I N TITLE4 , 1 5 ; Pu t u p p l a y e r h e a d i ng s
P RT L I N T I TL E 3 , 1 5
D R I V 0 4 : P RT B L K M VE N U M , 3 ; D i s p l ay m o v e n umbe r
L OA K O LOR ; B r i n g i n c o mp u t e r ' s c o l o r
ANA A ; I s i t wh i te ?
J RN Z DR08 ; No - j u mp

69
CALL PG I F N D ; New pa g e i f needed
CPI 1 ; W a s p a g e t u r ned ?
CZ T B C PC L ; Ye s - T a b to c o m p u t e r s c o l u rr
C A LL C PT R M V ; M a k e a n d w r i t e c o mp u t e r s m o v
PRTBLK S PAC E , l ; Ou t p u t a s pa c e
CALL P L Y RM V ; A c c e p t a n d m a k e p l a y e r s mo v e
C A RR E T ; New l i ne
J M PR DR0C ; J u mp
DR0 8 : CALL P LYRMV ; Ac c e p t a n d ma k e p l a y e r s mo v e
P RT B L K S PA C E , l ; O u t p u t a s pa c e
CALL PG I FND ; N e w pa g e i f n e e d e d
C P I· 1 ; Was pag e t u r ned ?
CZ T B C PC L ; Ye s - T a b to c o mp u t e r s c o l u m
C A LL C P TRM V ; M a k e and w r i t e compu te r s mov
C A RR E T ; Ne w l i n e
DR0C : LX I H , M VE N U M + 2 ; Ad d r o f 3 r d c h a r o f mo v e
MVI A , 20H ; Asc i i space
CMP M ; Is cha r a space ?
MVI A , 3AH ; Se t u p t e s t v a l u e
J RZ DR1 0 ; Ye s - ] U m p
I NR M ; I n c r eme n t v a l ue
CMP M ; Ov e r A s c i i 9 ?
J RN Z DR1 4 ; No - J u m p
MVI M , 30H ; Se t c h a r t o z e r o
DR1 0 : DC X H ; 2nd cha r o f Asc i i move no .
I NR M ; I n c r e m e n t va l u e
CMP M ; Ov e r A s c i i 9 ?
J RN Z DR1 4 ; No - J ump
MVI M , 30H ; Se t c h a r to z e r o
DC X H ; 1 s t c ha r o f Asc i i move no .
I NR M ; I n c r eme n t va l ue
CMP M ; Ov e r A s c i i 9 ?
J RN Z DR1 4 ; N o - ] U mp
MVI M, 31H ; Make 1s t cha r a one
MVI A, 30H ; Make 3 rd cha r a zero
S TA M VE N U M + 2
DR1 4 : LX I H , M OV E N O ; H e x a d e c i ma l mo v e n u m b e r
I NR M ; I n c r eme n t
JMP DR I V0 4 ; J u mp

70
· * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
,

, I N T E R ROGA T I ON F O R P L Y & C O LOR


· * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
I

; F U NC T I ON : To q u e r y t h e p l a y e r for h i s cho ice o f ply


, depth a nd co l o r .
.

'

; C AL L E D BY : DR I VE R

I

; C ALLS : C H A RT R

; M A C RO C A L L S : P RT L I N

' CARRET

I

; A RG U M E N T S : No n e

71
· * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
I

I NTERR : P RT L I N C L RM S G , 4 1 ; Re q u e s t c o l o r c h o i c e
CALL C H A RT R ; Ac c e p t r e s po n s e
C A RR E T ; Ne w l i n e
CPI 57H ; Did p l aye r r eq u e s t wh i te ?
J RZ IN0 4 ; Ye s - b r a n c h
SUB A ; Se t c o m p u t e r s c o l o r t o w h i t e
S TA K O LOR
LX I H , T I TLE l ; P r epa r e move l i s t t i t l e s
LXI D , TITLE4+2
LXI B,6
LD IR
LX I H , T I TLE 2
LX I D , T I TLE 4 + 9
LX I B,6
LDI R
JMPR IN08 ; J u mp
I N0 4 : MVI A , 80H ; Se t c o mp u t e r s c o l o r t o b l a c k
S TA KO LOR
LX I H , T ITLE 2 ; P r e p a r e mo v e l i s t t i t l e s
LXI D , TI TLE 4 + 2
LX I B,6
LD I R
LXI H , T I TLE l
LX I D , T I TLE 4 +9
LXI B,6
LDI R
I N0 8 : P RT L I N PLYDEP , 2 3 ; Re q u e s t d e p t h o f s e a r c h
CALL C H A RTR ; A c c e p t r e s po n s e
C ARRET ; New l i ne
LXI H , PLYMAX ; Ad d r e s s o f p l y d e p t h v a r i a b l
MVI M,2 ; De f a u l t d e p t h o f s e a r c h
CPI 31H ; Und e r m i n i mum o f 1 ?
RM ; Ye s - r e t u r n
CPI 3 7H ; Ov e r ma x i m um o f 6 ?
RP ; Ye s - r e t u r n
SUI 30H ; Subt r a c t Asc i i con s t a n t
MOV M,A ; Se t d e s i r ed depth
RET ; Re t u r n

72
· * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
I
; C OM P U T E R MOV E R O U T I N E
· * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
I
; F UNCT I ON : To c o n t r o l t h e s e a r c h f o r t h e c o m p u t e r s mo v e

I a n d t h e d i s p l a y o f t h a t mo v e o n t h e b o a r d

, a n d 1 n t h e mo v e l i s t •


I
; CALLE D BY : DR I VE R

: C A L LS : F N D MOV

, F C D MA T

I MOV E

, E X EC M V

' B I TA S N

' I NC H K

,

; M A C RO C A L LS : PRTBLK

• CARRET

,

; A RG U M E NT S : No n e
· * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
,
C PT R M V : C A L L FN DMOV ; S e l e c t b e s t mo v e
L H LD B E S TM ; M o v e l i s t po i n t e r v a r i a b l e
S HLD M L P T R'1 ; Po i n t e r t o mo v e d a t a
L OA SCORE + l ; To c h e c k f o r m a t e s
CPI 1 ; M a t e a g a i n s t c o mp u t e r ?
J RN Z C P 0C ; No - J ump
MVI C,l ; C o mp u t e r m a t e f l a g
CALL FC DMAT ; Fu l l chec kma te ?
C P 0C : CALL MOVE ; P r o d u c e mo v e o n b o a r d a r r a y
C ALL E X EC M V ; M a k e move o n g r a p h i c s bo a r d
; a n d r e t u r n i n f o a bo u t i t
MOV A,B ; Spec i a l move f l ag s
A NA A ; Spec i a l ?
J RN Z CP10 ; Ye s - j u m p
MOV D,E ; " To " p o s i t i o n o f t h e m o v e
CALL B I TAS N ; Conve r t to Asc i i
S.H L D MVEMSG + 3 ; Pu t i n move m e s s a g e
M OV D,C ; " F r om " p o s i t i o n o f t h e move
CALL B I TA S N ; Conve r t to Asc i i
S HLD MVEMSG ; Pu t i n move me s s age
P RT B L K MVEMSG , 5 ; Ou tpu t te x t o f move
JMPR CPlC ; J u mp
CP10 : BIT l,B ; K i ng s i d e c a s t l e ?
J RZ . +1 1 ; No - J u mp
P RT B L K 0.0, 5 ; O u t p u t " 0 -0 "
J M PR C P lC ; J u mp
BIT 2,B ; Qu e e n s i d e c a s t l e ?
JRZ . +1 1 ; No - ] U m p

73
P RT B L K o.o.o, 5 , Ou t p u t " 0 - 0 -0 "
JMPR CPlC ; J u mp
P RT B L K P . PEP , 5 ; Ou t p u t " P x Pe p " - E n pa s s a n t
C P lC : L OA C O LOR ; S h o u l d c omp u t e r c a l l c h e c k ?
M OV B,A
XRI 80H ; To g g l e c o l o r
S TA C O LOR
C A LL I NC H K ; C he c k f o r chec k
ANA A ; I s e nemy i n chec k ?
MOV A,B ; Re s t o r e c o l o r
STA C OLOR
J RZ CP24 ; No - r e t u r n
C ARRET ; New l i ne
L OA S C OR E + l ; C h e c k f o r p l a y e r ma t e d
CPI 0 F FH ; Fo r ce d m a t e ?
CNZ T BC P M V ; No - T a b t o c o mp u t e r c o l um n
P RT B L K C KM S G , 5 ; Ou t p u t " c h e c k "
LXI H , L I N ECT ; Ad d r e s s o f s c r e e n l i n e c o u n t
I NR M ; I n c r e m e n t f o r me s s a g e
CP24 : L OA SCORE + l ; C h e c k a g a i n f o r ma t e s
CPI 0FFH ; Pl a y e r ma ted ?
RN Z ; No - r e t u r n
MVI C,0 ; S e t p l a y e r ma t e f l a g
C A LL F C OMAT ; F u l l c he c kma t e ?
RET ; Re t u r n

74
· * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
,
; F O RC E D M A T E H A N D L I NG
· * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
,
; F U N C T I ON : To e x a m i n e s i t u a t i o n s w h e r e t h e r e e x i t s
.

, a f o r c ed ma te a nd d e te r m i n e whe t h e r o r
.

, n o t t h e c u r r e n t mo v e i s c h e c k m a t e . If it lS ,
.

, a l o s i ng pl aye r i s o f fe r ed a no the r g ame ,



, wh i l e a l os s f o r t h e c ompu t e r s ig n a l s t h e

, K i ng to t ip o ve r in r es i g n a t i o n .
.

,
; CALLED BY : C PT RM V

,
; C ALLS : MATED
.

, C HARTR

, TBP LMV

,
; A RG U M E N TS : Th e o n l y v a l u e pa s s ed i n a r e g i s t e r i s t h e
; f l a g wh i c h t e l l s FC DMAT w h e t h e r t h e c ompu t e r
; o r t h e p l a y e r i s ma t e d .
· * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * ** * * * * * *
,
F C DM A T : L OA M OV E N O ; C u r r e n t m o v e n um b e r
M OV B ,A ; Save
L OA PMATE ; M o v e n um b e r w h e r e ma t e o c c u r s
SUB B ; Numbe r o f move s t i l l ma t e
ANA A ; Chec kma te ?
J RN Z FM0C ; No - j ump
B IT 0 ,C ; C he c k f l ag f o r who i s ma t e d
J RZ FM0 4 ; Jump i f p l aye r
C AR P S T ; New l i ne
P RT L I N C KM S G , 9 ; P r i n t " C H EC KM AT E "
CALL MATED ; T i p o v e r K i ng
P RT L I N UWI N , 7 ; Ou tpu t " YOU W I N "
JMPR FM0 8 ; J ump
FM 0 4 : P RT L I N MTMSG , 4 ; O u t p u t " MA T E "
P RT L I N IWIN , 5 ; Ou t p u t " I W I N "
FM0 8 : P OP H ; Re m o v e r e t u r n a d d r e s s e s
POP H
CALL C HA RT R ; I n pu t a n y c h a r to p l ay a g a i n
FM0 9 : C L RS C R ; Blank s c r een
P RT L I N AGA I N , 2 2 •
, " C A R E F O R A N OT H E R G A M E ? "
JMP DRIV0 1 ; J u mp ( Re s t o f g a m e i n i t )
F M 0C : B IT 0,C ; Who h a s f o r c ed ma t e ?
RNZ ; Re tu r n i f p l a y e r
C A RR E T ; New l i ne
ADI 30H ; N u m be r o f mo v e s t o As c i i
S TA MTPL ; P l a ce va l ue i n me s s a g e
P RT L I N MTM S G , 9 ; O u t p u t " MA 'l' E I N x MOV E S "
CALL T B P LMV ; Ta b t o p l a y e r s c o l um n
RET ; Re t u r n

75
· * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
'

; TAB TO P LAY E RS C O L U M N
· * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
'

; FUNCT I ON : To s p a c e o v e r i n t h e mo v e l i s t i n g t o t h e
.
'
c o l u m n i n w h i c h t h e p l a y e r s mo v e s a r e b e i n g

,
r e cor ded . Th i s r o u t i n e a l s o r e p r i n t s t h e

' mo v e n u m b e r .

; C A L L E D BY : P L Y RM V

,

; C A L LS : No ne

,

; M AC RO C A L L S : P RT B L K
.
.

: ARG U M E N T S : No n e
· * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
,

T B P LC L : P R T B L K MVENUM , 3 •
, Re p r o d u c e m o v e n u m b e r
L OA K O LOR •
, C o mp u t e r s c o l o r
ANA A •
' I s c o mp u t e r w h i t e ? .

RN Z .
' No -
return
P RT B L K S PAC E , 6 •
' Ta b t o n e x t c o l u m n
RET •
' Re t u r n

· * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
'

; TA B TO C OM P U T E RS C O L U M N
· * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
,

; F U N C T I ON : To s p a c e o v e r i n t h e mo v e l i s t i n g t o t h e

I c o l um n i n w h i c h t h e c o m p u t e r s mo v e s a r e

' be i n g r e c o r d e d . Th i s r o u t i n e a l s o r e p r i n t s

' t h e mo v e n u m b e r •


'

; CALLED BY : DRIVER

' C PT RM V

I

; C A L LS : No n e

,

; MAC RO C A L LS : P RT B L K

'

; ARG U M E N T S : No n e
· * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
,

T B C PC L : P RT B L K MVENUM , 3 •
' Re p r od u c e m o v e n um be r
L DA K O LOR •
, Compu te r ' s co l o r
ANA A •
, I s c o mp u t e r w h i t e ? .

RZ •
' Ye s -
return
P RT B L K S PAC E , 6 •
' Ta b t o n e x t c o l u m n
RET •
' Re t u r n

76
· * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
'

; TA B TO P LA Y E R S C O L U M N W/O M O V E N O .
· * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
,
; F U N C T I ON : L i k e T B P LC L , e x c e p t t h a t t h e m o v e n u m b e r
.
, i s n o t r ep r i n ted .

'

i CALLED BY : FC DMAT
· * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
'

T B P LM V : P RT B L K S P AC E , 3
L OA K OLOR
ANA A
RN Z
P RT B L K S PAC 8 , 6
R E 'f

· * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
,
; TA B TO C OM P U T E R S C O L U MN W/O MOV E N O .
· * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
I

: F U N C T I ON : L i k e T B C P C L , e x c e p t t h a t t h e mo v e n u m b e r

I i s no t r ep r i n ted .

,

; CALLED BY : C PTRMV
· * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
I

T B C PM V : P RT B L K S P AC E , 3
LOA KOLOR
ANA A
RZ
P RT B L K S PA C E , 6
RET

77
· * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
,
; B O A RD I N D E X TO AS C I I S Q U A R E NAM E
· * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
,
; F U N C 'r I O N : To t r a n s l a t e a h e x a d e c i ma l i nd e x i n t h e

, bo a r d a r r a y i n t o a n a s c i i d e s c r i p t i o n

, o f t h e squa r e i n a l g e b r a i c che s s n o t a t i o n •

,
; C A L L E O BY : C P T RM V

,
; CALLS : DIVIDE

,
; ARG U M E N T S : Bo a r d i nd e x i npu t i n r eg i s te r D a nd t h e
; As c i i squa r e name i s o u tpu t i n r eg i s t e r
; pa i r H L .
· * * * * * * * * * * ** * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
,
B I TA S N : SUB A •
, Ge t r e a d y f o r d i v i s i o n
MVI E, 10
CALL D I V I DE •
, Di v ide
DC R D •
I Ge t r a n k o n 1 - 8 ba s i s
ADI 60H •
I Conve r t f i l e to Ase i i ( a- h )
MOV L,A •
I Save
M OV A,D •
I Ra n k
ADI 30H •
I Conve r t r a n k to Ase i i ( 1-8 )
M OV H ,A •
I Save
RET •
, Re t u r n

78
· * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
I

; P L A Y E RS MOV E A N A L Y S I S
· * * * * * * * * * * * * * * * * * * * * * * * ** * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
I

; F U N C T I ON : To a c c e p t a n d v a l i d a t e t h e p l a y e r s mo v e

I a n d p r od u c e i t o n t h e g r a p h i c s bo a r d . Al so

I a l l ow s p l a y e r t o r e s i g n t h e g a m e by
.
I e n t e r i ng a c o n t r o l - R .
.
I

; CALLED BY : D R I VE R

I

; CALLS : C HARTR

I ASNTB I
.

I VA LMOV

I EXECMV

I PG I FN D

I T B P LC L

I

; A RG U M E N T S : No ne
· * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
I

P LY RM V : C A L L C HA RT R ; Ac c e p t " f r o m " f i l e l e t t e r
CPI 12H ; I s i t i ns tead a Con t r o l -R ?
JZ FM 0 9 ; Ye s - ] U m p
M OV H,A ; Sa v e
CALL C HA RT R ; Ac c e p t " f r om " r an k numbe r
M OV L,A ; Save
CALL ASN TB I ; C o n v e r t t o a bo a r d i n d e x
SUB B ; G i v e s boa r d i nd e x , i f va l i d
J RZ PL0 8 ; Jump i f i nv a l i d
S TA M VE M S G ; Mo ve l i s t " f r om " p o s i t i on
CALL C HART R ; Ac c e p t s e pa r a t o r & i g n o r e i t
C ALL C HA RT R ; Re p e a t f o r " t o " p o s i t i o n
M OV H ,A
CALL C H A RT R
M OV L,A
C ALL ASNTB I
SUB B
J RZ PL0 8
S TA M V E M SG + l ; Move l i s t " to " pos i t i o n
CALL VA LMOV ; De t e r m i n e s i f a l e g a l m o v e
ANA A ; Le g a l ?
JNZ PL0 8 ; No - J ump
C ALL E X EC M V ; M a k e mo v e on g r a ph i c s boa r d
RET ; Re t u r n
PL0 8 : LX I H , L I N ECT ; Ad d r e s s o f s c r e e n l i n e c o u n t
I NR M ; I n c r e a s e by 2 f o r m e s s a g e
I NR M
CARRET ; Ne w l i ne
CALL PG I FND ; New pag e i f needed
P RT L I N I N VA L l , 1 2 ; O u t p u t " I N VA L I D M OV E "
P RT L I N I N VA L 2 , 9 ; Ou t p u t " T R Y AGA I N "
C ALL T B P LC L ; Ta b t o p l a y e r s c o l u m n
J�P P LY RM V ; J ump

79
· * * * * * * * * * * * * * * * * * * * * * * * * * * * * * ** ** * * * * * * * * * * * * * * * * * * * * * * * * * * *
,
; A S C I I S QU A R E NAME TO BOARD I N D E X
· * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * ** * * * * * * * * * * * * * * * * * * * *
I

; F U NC T I ON : To c o n v e r t a n a l g e b r a i c s q u a r e n a m e i n

, A s c i i t o a h e x a d e c i ma l bo a r d i nd e x •


I Th i s r o u t i n e a l s o c h e c k s t h e i n p u t f o r

I va l id i ty •


I

; CALLE D BY : P L Y RM V

,
; C A L LS : M LT P LY

I

; ARG U M E N T S : A c c e p t s t h e s q u a r e n a me i n r e g i s t e r p a i r H L

I a n d o u t p u t s t h e boa r d i n d e x i n r e g i s t e r A •


I Reg i s t e r B = 0 i f o k . Reg i s te r B = Reg i s te r

, A i f i n va l i d .
· * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
,
A S N T B I : MOV A,L •
I Asc i i r an k
SUI 30H •
I Ra n k 1 - 8
CPI 1 •
I C h e c k l owe r bo u nd
JM AT 0 4 •
I J u mp i f i n v a l i d
CPI 9 •
I C h e c k u p p e r bo u n d
J RN C AT0 4 •
I J u mp i f i n v a l i d
I NR A •
, Ra n k 2 - 9
M OV D ,A •
I Re a d y f o r m u l t i p l i c a t i o n
MVI E , 10
C A LL M LT P L Y •
I Mu l t iply
MOV A,H •
I As c i i f i l e l e t te r ( a - h )
SUI 4 0H •
I F i le 1 - 8
CPI 1 •
, C h e c k l owe r bo u n d
JM AT0 4 •
I J u mp i f i n v a l i d
CPI 9 •
, C h e c k u pp e r bo u n d
J RN C AT 0 4 •
, J ump i f i n va l i d
ADD D •
I F i l e +Ra n k ( 2 0 - 9 0 ) =Bo a r d i nd e x
MVI B,0 •
, Ok f l ag
RET •
I Re t u r n
AT 0 4 : MOV B ,A •
, I n va l id f l ag
RET •
, Re t u r n

80
· * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
,

; VA L I DAT E M O V E S U B R O U T I N E
· * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
I

; F U NC T I ON : To c h e c k a p l a y e r s mo v e f o r v a l i d i t y .

I

; CALLED BY : P L Y RM V

I

; CALLS : G E N MOV

I MOVE

I I NC H K

I U NM O V E

I

; A RG U M E N T S : Re t u r n s f l a g i n r e g i s t e r A , 0 f o r va l id

I and 1 f o r i n va l i d move .
· * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
I

V A LM O V : L H LD M L P T RJ ; S a v e l a s t mo v e po i n t e r
PUSH H ; Sa v e r eg i s t e r
L OA K O LOR ; Compu t e r s c o l o r
XRI 80H ; To g g l e c o l o r
S 'rA C O LO R ; Sto r e
LX I H , PLY I X- 2 ; Lo a d mo v e l i s t i n d e x
S H LD MLPTR I
LX I H , ML I ST+l 0 2 4 ; Ne x t a v a i l a b l e l i s t po i n t e r
S H LO M LNXT
CALL G E N M OV ; G e n e r a t e o p p o n e n t s mo v e s
LX I X , MLIST+l 0 2 4 ; I n d e x t o s t a r t o f mo v e s
VA S : L OA MVEMSG ; " F r om " po s i t i o n
CMP MLFRP ( X ) ; I s i t in l i s t ?
J RN Z VA 6 ; No - J ump
L OA MVEMSG+ l ; " To " po s i t i o n
CMP M LT O P ( X ) ; Is i t in l is t ?
J RZ VA 7 ; Ye s - ] U m p
VA 6 : M OV E , M LPTR ( X ) ; Po i n te r to n e x t l i s t move
M OV D , M L PTR+ l ( X )
X RA A ; A t e nd o f l i s t ?
C MP D
J RZ VA 1 0 ; Ye s - ] U m p
PUSH D ; Mo v e t o X r eg i s t e r
POP x
JMPR VA S ; J u mp
VA 7 : S I XO M L PT RJ ; S a v e o pp o n e n t s m o v e p o i n t e r
CALL MOVE ; Ma k e move on boa r d a r r ay
CALL I NC H K ; Was i t a l eg a l move ?
ANA A
J RN Z VA 9 ; No - ] Ump
VAS : POP H ; Re s t o r e s a v e d r e g i s t e r
RET ; Re t u r n
VA9 : CALL U NMOVE ; U n - d o mov e o n boa r d a r r a y
VA 1 0 : MVI A, l ; Se t f l ag f o r i n va l i d move
POP H ; Re s t o r e s a v e d r e g i s t e r
S H LD M L P T RJ ; S a v e m o v e po i n t e r
RET ; Re t u r n

81
· * * * * * * * * * * * * * * * * * * * * * * * * * * * * * ** * * * * * * * * * * * * * * * * * * * * * * * * * * *
I

; AC C E PT I N P U T C H A RA T E R
· * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
I

; F U NCT I ON : A c c e p t s a s i ng l e c h a r a c t e r i n p u t f r o m t h e

I c o n s o l e k e y bo a r d a n d p l a c e s i t i n t h e A
.

I r eg i s te r . Th e c h a r a c t e r i s a l s o e c h oed o n

I the v ideo s c r een , u n l e s s i t i s a ca r r ag e

I r e t u r n , l i ne f e e d , o r ba c k s p a c e •


I Lo we r c a s e a l p h a be t i c c h a r a c t e r s a r e f o l d e d

I t o u p pe r c a s e .

I

; CALLED BY : DRI VER



I I NTERR

I PLYRMV

I A N A LYS

I

; CALLS : No n e

; ARG U M E N TS : C h a r a c te r i npu t is o u tpu t in r eg i s t e r A .



I

; NOT E S : Th i s r o u t i n e c o n t a i n s a r e f e r e n c e t o a
; m o n i t o r f u n c t i o n o f t h e J o v e mo n i t o r , t h e r e -
; f o r the f i r s t few l i nes o f th i s r o u t i ne a r e
; s y s tem depend e n t .
· * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
I

C H A RTR : RST 7 ; Jove mon i to r s i ng l e c h a r i np t


. BYTE 81H , 0
CPI 0 DH ; Ca r r i age r e t u r n ?
RZ ; Ye s - r e t u r n
CPI 0AH ; Li ne feed ?
RZ ; Ye s - r e t u r n
CPI 0 8H ; B a c k spac e ?
RZ ; Ye s - r e t u r n
RST 7 ; Jove mon i to r s i ng l e c h a r e c h o
. BYTE 8 1 H , 1AH
AN I 7FH ; M a s k o f f pa r i t y b i t
CPI 7BH ; Up p e r r a n g e c h e c k ( z + l )
RP ; No n e e d t o f o l d - r e t u r n
CPI 61H ; Lo w e r r a n g e c h e c k ( a )
·

RM ; No n e e d t o f o l d - r e t u r n
SUI 2 0H ; C ha n g e to one o f A- Z
RET ; Re t u r n

82
· *********** * ********************************************
,

; N E W PAG E I F N E E D E D
· *********************************************************
,

; F U N C 'r I 0 N : To c l e a r mo v e l i s t o u t p u t w h e n t h e c o l u m n

, h a s be e n f i l l ed .

,

; CALLED BY : DR I VE R

, P L Y RM V
.
, C PTRMV

'

; CALLS : DSP BRD



.

; A RG U M E N T S : Re t u r n s a 1 i n t h e A r eg i s te r if
; a new page was t u r ned .
· ********************************************************
'

PG I FN D : LXI H , L I N ECT •
I Ad d r o f p a g e p o s i t i o n c o u n t e r
I NR M •
I I n c r eme n t
MVI A , lBH •
' Pa g e bo t to m ? .

CMP M
RNC •
' No - r e t u r n
CALL D S P B RD •
' Pu t up new pag e
P RT L I N TITLE4 , 1 5 •
I Re - p r i n t t i t l e s
P RT L I N T I TLE 3 , 1 5
MVI A,l •
, Se t l i n e c o u n t ba c k to 1
S TA L I NECT
R E T· •
, Re t u r n

83
· * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
,

; D I S P LA Y MAT E D K I N G
· * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
,

; FUNCT I ON : To t i p o v e r t h e c o mp u t e r s K i n g w h e n

, ma t e d .

,

; CALLED BY : F C DMAT

,

; C A L LS : C O N V RT

, BLNKER

, I NS PC E ( Ab no r ma l C a l l to I P 0 4 )

,

; A RG U M E N T S : No n e
· * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
,

MATED : L OA K O LOR ; Compu te r s co l o r


ANA A ; I s c o m p u t e r w h i.t e ?
JRZ . +9 ; Ye s - s k i p
MVI C,2 ; Se t b l a c k p i e c e f l ag
L DA POS K + l ; Po s i t i o n o f b l a c k K i n g
JMPR MA 0 8 ; J u mp
M OV C,A ; C l e a r bl ack p i ece f l ag
L DA POS K ; Po s i t i o n o f w h i t e K i n g
MA 0 8 : S TA B RD POS ; S t o r e K i ng po s i t i o n
STA ANBDPS ; Ag a i n
CALL C O N V RT ; Ge t t i n g n o r m a d d r e s s i n H L
MVI A,7 ; P i e c e v a l u e o f t o pp l e d K i n g
MVI B, 10 ; B l i n k pa r a m e t e r
CALL BLNKER ; B l i n k K i n g po s i t i o n
LXI Y , MA 0 C ; P r epa r e for a bno r ma l c a l l
PUSH y
PUSH H
PUSH B
PUSH D
PUSH x
PUSH PSW
J�P I P0 4 ; C a l l I NS PC E
MA0C : MVI B , 10 ; B l i n k ag a i n
L OA ANBOPS
S TA B RD P OS
C AL L B LN K E R
RET ; Re t u r n

84
· * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
I

; S E T U P POS I T I ON F O R A N A L Y S I S
· * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
I

; F U NC T I ON : To e n a b l e u s e r t o s e t u p a n y p o s i t i o n

I for ana lys i s , o r to con t i nue to play

I t h e g ame . Th e r o u t i n e b l i n k s t h e boa r d

I s q u a r e s i n t u r n a nd t h e u se r h a s t h e op t i o n

I o f l e a v i n g t h e c o n t e n t s u n c h a n g e d by a

, c a r r i a g e r e t u r n , e mp t y i n g t h e s q u a r e b y a 0 ,

' o r i n p u t t i ng a p i e c e o f h i s c h o s i n g . To

' e n t e r a p i e c e , type i n p i e c e - c od e , c o l o r - co d e ,

' moved - cod e •


'

' P i e c e - code i s a l e t te r i nd i c a t i ng the
.

' d e s i r ed p i ec e :

' K K i ng

' Q Qu e e n

' R Ro o k

I B B i s hop

' N Kn i g h t

' p Pawn

'

' Co l o r code i s a l e t te r , W f o r wh i te , o r

' B for black •


'

' M o v e d - c o d e i s a n um b e r . 0 i n d i c a t e s t h e p i e c e

' h a s neve r moved . 1 i nd i ca te s t h e p i e c e ha s

I
moved •


I


' A b a c k s p a c e w i l l ba c k u p i n t h e s e q u e n c e o f

' bl i n k ed squ a r es . An E s c a pe w i l l t e r m i na t e

' the bl i n k cyc le and ve r i fy tha t the

I po s i t i o n i s c o r r e c t , t h e n p r ec e d e w i t h g ame

I i n i t i a l i za t ion •


,

; CALLED BY : DR I VER

'
; CA LLS : C HARTR

' DPSBRD

' B LN K E R

' ROYA LT

I P L Y RM V

' C PT RM V

'
; M A C RO C A L L S : P RT L I N

' E X I 'r

' C LRSC R

' P RT B L K

I C AR R E T

'
; A RG U M E N T S : No n e
· * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
'

85
ANALYS : PRTL I N ANAMSG , 3 7 ; " C A R E TO A N A L Y S E A POS I T I ON ? "
C ALL C HA RT R ; Ac c e p t a n swe r
C AR R E T ; New l ine
CPI 4 EH ; I s a nswe r a " N " ?
J RN Z AN 0 4 ; No - j um p
EXIT ; Re t u r n t o mo n i t o r
AN 0 4 : CALL D S P BRD ; C u r r e n t bo a r d p o s i t i o n
MVI A, 21 ; F i r s t bo a r d i n d e x
AN 0 8 : S TA ANBDPS ; Save
S TA B R D POS
CALL C ONV RT ; No r m a d d r e s s i n t o H L r e g i s t e r
S TA Ml ; S e t u p bo a r d i n d e x
L I XD Ml
M OV A , BOARD ( X ) ; Ge t b o a r d c o n t e n t s
CPI 0 FFH ; Boa rde r squa r e ?
J RZ AN 1 9 ; Ye s - j u mp
MVI B , 4H ; Re a d y to b l i n k s q u a r e
C ALL B LN K E R ; Bl ink
C AL L C HA RT R ; Ac c e p t i np u t
CPI lBH ; I s i t a n escape ?
J RZ AN l B ; Ye s - j um p
CPI 0 8H ; I s i t a ba c k s p a c e ?
J RZ AN l A ; Ye s - j um p
CPI 0 DH ; I s i t a c a r r i ag e r e tu r n ?
J RZ AN 1 9 ; Y e s - j um p
LXI B, 7 ; N um be r o f t y p e s o f p i e c e s + 1
LX I H , PC S ; Ad d r e s s o f p i e c e s y m bo l t a b l e
CC I R ; Se a r c h
J RN Z AN 1 8 ; J u mp i f n o t f o u n d
CALL C HA RT R ; Ac c e p t a n d i g n o r e s e p a r a t o r
CALL C H ART R ; Co l o r o f p i e c e
CPI 4 2H ; Is i t black ?
J RN Z . +4 ; No - s k i p
S ET 7,C ; B l a c k p i e c e i nd i c a t o r
CALL C HA RT R ; Ac c e p t a n d i g n o r e s e pa r a to r
C AL L C H A RT R ; Mo ved f l ag
CPI 31H ; Has p i ece moved ?
J RN Z AN 1 8 ; N o - J u mp
S ET 3,C ; Se t mo v e d i nd i c a t o r
AN 1 8 : M OV B OA R D ( X ) , C ; I n s e r t p i e ce i n to boa r d a r r ay
C ALL D S P BR D ; Upd a t e g r a p h i c s b o a r d
AN 1 9 : LOA ANBDPS ; C u r r e n t bo a r d p o s i t i o n
I NR A ; Ne x t
CPI 99 ; Do n e ?
J RN Z AN 0 8 ; No - J ump
J M PR AN 0 4 ; J ump
AN lA : L OA A N B DPS ; P r e p a r e to g o b a c k a s q u a r e

86
SUI 3 ; To g e t a r o u n d bo a r d e r
CPI 20 ; Of f the o th e r e nd ?
J NC AN 0 8 ; No - j u mp
MVI A , 98 ; W r a p a r o u n d to top o f s c r e e n
AN 0 B : JMP AN 0 8 ; J u mp
ANlB : P RT L I N C RT N E S , 1 4 ; Ask i f cor rect
C ALL C HARTR ; Ac c e p t a n swe r
CPI 4EH ; Is i t " N" ?
JZ AN 0 4 ; No - J ump
C A LL ROYALT ; Up d a t e po s i t i o n s o f r o y a l t y
C LRSC R ; Blank sc r ee n
C AL L I N T E RR ; Ac c e p t c o l o r c h o i c e
AN lC : P RT L I N WSMOVE , 1 7 ; As k who s e mo v e i t i s
CALL C H A RT R ; Ac cept r e spon s e
CALL D S P B RD ; D i s p l a y g r aph i c s boa r d
P RT L I N T I TLE4 , 1 5 ; Pu t u p t i t l e s
P RT L I N T ITLE 3 , 1 5
CPI 5 7H ; I s i s wh i t e s mov e ?
JZ DRIV0 4 ; Ye s - j ump
P RT B L K Ml/E N U M , 3 ; P r i n t move n umbe r
P RT B L K S PA C E , 6 ; Ta b t o b l a c k s c o l umn
L OA K O LOR ; C o mp u t e r ' s c o l o r
ANA A ; I s c o mp u t e r w h i t e ?
J RN Z AN 20 ; No - j ump
CALL P L Y RM V ; Ge t p l a y e r s mo v e
C A RR E T ; New l i ne
JMP DR0C ; Jump
AN20 : CALL C P T RM V ; Ge t c o mp u t e r s mo v e
CARRET ; New l i n e
JMP D R 0C ; J ump

87
· * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
'
; U P DAT E POS I T I ON S O F RO YA LTY
· * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * ** * * * * * * * * * * * * * * * * * * * * * * * * *
'
; F U NCT I ON : To u pd a t e t h e po s i t i o n s o f t h e K i ng s

' a n d Qu e e n a f t e r a c h a n g e o f b o a r d po s i t i o n

' i n ANALYS •

..
'
; C A L L E D BY : ANA LYS

'
; C A L LS : No n e

'
; A RG U M E N T S : No n e
· * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
'
ROYALT : LX I H , PO S K ; S t a r t o f Ro y a l t y a r r a y
MVI B,4 ; C l ea r a l l fou r pos i t ions
MVI M,0
I NX H
DJ N Z . -3
MVI A, 21 ; F i r s t bo a r d p o s i t i o n
RY 0 4 : STA Ml ; S e t u p bo a r d i n d e x
LX I H , POS K ; Ad d r e s s o f K i n g p o s i t i o n
L I XD Ml
MOV A , BOARD ( X ) ; F e t c h bo a r d c o n t e n t s
BIT 7,A ; Te s t c o l o r b i t
JRZ . +3 ; J u mp i f w h i t e
I NX H ; Of f s e t for b l a c k
AN I 7 ; De l e t e f l a g s , l e a v e p i e c e
CPI K I NG ; K i ng ?
J RZ RY 0 8 ; Ye s - J u m p
CPI QUEEN ; Qu e e n ?
J RN Z RY 0 C ; N o - J u mp
I NX H ; Qu e e n p o s i t i o n
I NX H ; Plus offset
RY 0 8 : L DA Ml ; Index
MOV M,A ; Save
RY0C : L DA Ml ; C u r r e n t po s i t i o n
I NR A ; Ne x t po s i t i o n
CPI 99 ; Do n e . ?
J RN Z RY0 4 ; N o - J u mp
RET ; Re t u r n

88
· * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
I

; S E T UP EMPTY BOARD
· * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
I

; F U N C T I ON : D i p l a y g r a p h i c s bo a r d a n d p i e c e s .

I

; CALLED BY : DR I VER

I ANA L Y S

I PG I FN D

I

; CALLS : CONVRT

I I N S PC E

I

; A RG U M E N T S : No n e

'

; NOT E S : Th i s r o u t i n e m a k e s u s e o f s e v e r a l f i x e d

' add r e s s e s in the v i d e o s to r ag e a r e a o f

, t h e Ju p i t e r I I I c ompu te r , and i s t h e r e f o r

I s y s tem d ep e nd e n t . Each such r e fe rence w i l l

I be ma r k ed •

· * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
I

DS PBRD : PUSH B ; S av e r e g i s t e r s
PUSH D
PUSH H
PUSH PSW
C L RS C R ; Blank screen
LX I H , 0C 0 0 0H ; Sys tem Depen d e n t-F i r s t v id eo
; add r ess
MVI M, 80H ; S t a r t o f b l a n k bo r d e r
LX I D , 0C 0 0 1 H ; S y s D e p - N e x t bo a r d e r s q u a r e
LXI B, 15 ; N u m be r o f b y t e s t o b e m o v e d
LDIR ; B l a n k bo a r d e r ba r
MVI M , 0AAH ; F i r s t b l a c k bo a r d e r bo x
I NR L ; Ne x t blo c k add r es s
MVI B,6 ; Numbe r t o be mo v e d
DB0 4 : MVI M , 80H ; C r ea te wh i te b l o c k
I NR L ; Ne x t bloc k add r e s s
DJN Z 08 0 4 ; Do n e ? � o - j u m p
MVI B,6 ; Numbe r o f r epea t s
DB0 8 : MVI M , 0BFH ; C r e a te b l a c k box
I N '1 L ; Ne x t bloc k add r es s
DJN Z 08 0 8 ; Do n e ? N o - J u m p
XC HG ; Ge t r e a d y f o r b l o c k mo v e
LXI B , 36 ; B y t e s t o be mo v e d
LDI R ; M o v e - c o mp l e t e s f i r s t b a r
LXI H , 0C 0 0 0 H ; S D - F i r s t add r to be c op i ed
LXI B , 0 D0 H ; N u m be r o f b l o c k s t o m o v e
LDIR ; C o mp l e t e s f i r s t r a n k
LXI H , 0C 0 1 6H ; s D - S t a r t o f c o py a r e a
LX I B,6 ; N u m be r o f b l o c k s t o mo v e

89
LDI R ; F i r s t bl a c k sq u a r e done
LX I H , 0C 0 1 0 H ; S D - S t a r t copy a r ea
LXI B,42 ; B y t e s t o be mo v e d
LDI R ; Re s t o f ba r d o n e
LXI H , 0C l 0 0H ; S D - S t a r t o f copy a r ea
LXI B , 0C 0H ; Mo v e t h r e e ba r s
LDI R ; Ne x t r a n k done
LXI H , 0C 0 0 0 H ; S D - C o py r e s t o f s c r e e n
LX I B , 600H ; Numbe r o f bloc k s
LDI R ; Boa rd done
B S ETU P : MV I A, 21 ; F i r s t bo a r d i n d e x
B S ET 0 4 : STA B R D PO S ; Re a d y p a r a me t e r
CALL C O N V RT ; No r m a d d r i n t o H L r e g t i s t e r s
CALL I N S PC E ; I n s e r t t h a t p i e c e o n t o boa r d
I NR A ; Ne x t squa r e
CPI 99 ; Do n e ?
J RC BSET0 4 ; No - J ump
POP PSW ; Re s t o r e r e g i s t e r s
POP H
POP D
POP B
RET

90
· * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
I

; I N S E RT P I E C E S U B RO U T I N E
· * * * * * * * * * * * * * * * * * * * * ** * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
I

; F U NC T I ON : Th i s s u b r o u t i n e p l a c e s a p i e c e o n t o a

I g i v e n squa r e o n th e v i d eo boa r d . Th e p i e c e

I i n s e r t e d i s t h a t s to r ed i n t h e bo a r d a r r a y

I for tha t squa r e .

I

; CALLED BY : DPSPRD

I M AT E D

I

; C A L LS : M LT P L Y
.

; A RGU M E NT S : No r m a d d r e s s f o r t h e s q u a r e i n r e g i s t e r
; pa i r H L .
· * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * ** * * * * * * * * * * * * * * * * * * * * * * *
I

I N S PC E : PUSH H ; Save r eg i s te r s
PUSH B
PUSH D
PUSH x
PUSH PSW
LOA BRDPOS ; Ge t b o a r d i n d e x
S TA Ml ; Save
L I XD Ml ; I n d e x i n t o bo a r d a r r ay
MOV A , BOARD ( X ) ; C o n t e n t s o f bo a r d a r r a y
ANA A ; I s s q u a r e e mp t y ?
J RZ I P 2C ; Ye s - ] Ump
CPI 0 FFH ; I s i t a boa r d e r s q u a r e ?
JRZ I P 2C ; Ye s - J um p
MVI C,0 ; C l ea r f l a g r eg i s t e r
BIT 7,A ; I s p iece wh i te ?
JRZ I P0 4 ; Ye s - J ump
MVI C,2 ; Se t b l a c k p i ece f l ag
I P0 4 : AN ! 7 ; De l e t e f l a g s , l e a v e p i e c e
OC R A ; P i e c e o n a 0 - 5 ba s i s
MOV E ,A ; Save
MVI D , 16 ; M u l t ip l i e r
°
CALL M LT P L Y ; Fo r l o c o f p i e c e i n t a b l e
MOV A,D ; D i s p l a c e me n t i n to b l o c k t a b l e
S TA I NDXER ; Low o r d e r i n d e x by t e
L I XD I NDXER ; Ge t e n t i r e i nd e x
BIT 0,M ; I s s q u a r e wh i te ?
J RZ I P0 8 ; Ye s - J ump
I NR c ; S e t c o mp l i m e n t f l a g
I P0 8 : I NR L ; Ad d r e s s o f f i r s t a l t e r b l o c k
PUS H H ; Sa v e
MVI D,0 ; Ba r cou n t e r
I P 0C : MVI B,4 ; Block counter
I P1 0 : MOV A , B LO C K ( X ) ; B r i ng i n s o u r ce b l o c k
B IT 0,C ; S h o u l d i t b e c o mp l e me n t e d ?

91
J RZ IP14 ; N o - j ump
XRI 3FH ; G r a p h i c s c o mp l e m e n t
IP1 4 : MOV M,A ; Sto r e bloc k
I NR L ; Ne x t b l o c k
I NX x ; Ne x t s o u r ce b l o c k
DJN Z 1 Pl0 ; Do n e ? N o - J um p
MOV A,L ; B a r i n c r e me n t
ADI 3CH
MOV L,A
I NR D ; Ba r cou n te r
B IT 2,D ; Do n e ?
J RZ I P0C ; No - j ump
POP H ; Ad d r e s s o f No r m + 1
BIT 0,C ; I s s q u a r e wh i t e ?
J RN Z IP18 ; No - J ump
B IT l,C ; I s p i e c e wh i t e ?
J RN Z I P 2C ; No - j ump
J�PR I PlC ; J u mp
I P1 8 : BIT l,C ; I s p i e c e wh i t e ?
J RZ I P 2C ; Ye s - j u mp
I P lC : MVI D,6 ; Mu l t ipl i e r
CALL M LT P L Y ; Mu l t i p l y f o r d i s p l a c eme n t
MOV A,D ; Ke r ne l t a b l e d i sp l aceme n t
S TA I NDXER ; Save
L I XD I NDXER ; Ge t c o mp l e t e i n d e x
M OV A,L ; S t a r t o f Ke r n e l
ADI 4 0H
MOV L ,A
MVI D,0 ; Ba r coun ter
IP20 : MVI B, 3 ; B l o c k counter
IP24 : MOV A , K E RN E L ( X ) ; Ke r ne l block
BIT l,C ; Ne e d t o c o mp l e m e n t ?
J RN Z I P28 ; No - J ump
XRI 3FH ; G r a p h i c s c o mp l e m e n t
I P28 : MOV M,A ; S to r e bloc k
I NR L ; Ne x t t a r g e t b l o c k
I NX x ; Ne x t s o u r c e b l o c k
DJN Z IP24 ; Do n e ? N o - ] U mp
M OV A,L ; B a r i nc r eme n t
ADI 3DH
MOV L,A
I NR D ; Ba r cou n t e r
BIT l,D ; Do n e ?
J RZ IP20 ; Re pe a t ba r m o v e
I P 2C : POP PSW ; Re s t o r e r e g i s t e r s
POP x
POP D
POP B
POP H
RET

92
· * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
I

; B O A R D I N D E X TO NORM A D D R E S S S U B R .
· * * * * * * * * * * * * * * * * * * * * * * * * * * * * ** * * * * * * * * * * * * * * * * * * * * * * * * * * * *
I

; F U N C T I ON : C o n v e r t s a h e x a d e c i m a l bo a r d i n d e x into

' a No r m add r e s s f o r t h e s q u a r e •


'

; CALLED BY : DSPBRD

I I N S PC E

I AN A L Y S

' MATE D

I

; C A L LS : D I V I DE
.
I M LT P LY

I

; A RG U M E N T S : R e t u r n s t h e No r m a d d r e s s i n r e g i s t e r p a i r

I HL •

· * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
,

C O N V RT : PUSH B ; S a v e r eg i s te r s
PUSH D
PUSH PSW
L DA B RD PO S ; Ge t bo a r d i nd e x
MOV D ,A ; S e t u p d i v i d e nd
SUB A
MVI E , 10 ; D i v i so r
CALL D I V I DE ; I n d e x i n to r an k a nd f i l e
; f i le ( 1-8 ) & rank ( 2-9 )
DCR D ; Fo r r an k ( 1 - 8 )
DC R A ; Fo r f i 1e ( 0 - 7 )
MOV C,D ; Sa v e
MVI D,6 ; Mul t ipl ier
MOV E ,A ; F i l e n umbe r i s mu l t i p l i ca nd
CALL MLTPLY ; G i v i ng f i l e d i s p l a c eme n t
M OV A,D ; Save
ADI 10H ; F i l e no r m add r es s
MOV L,A ; Low o r d e r a d d r e s s by t e
MVI A,8 ; Ra n k a d j u s t
SUB c ; Ra n k d i s p l a c e m e n t
ADI 0C0H ; Ra n k No r m a d d r e s s
M OV H ,A ; H i g h o r d e r a d d r e s by t e
POP PSW ; Re s t o r e r e g i s t e r s
POP D
POP B
RET ; Re t u r n

93
·I * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
; POS I T I V E I N T E G E R D I V I S I O N
***********
I· * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
D I V I DE : PUS H B
MVI B,8
DD0 4 : S LA R D
RAL
SUB E
JM . +6
I NR D
JMPR . +3
ADD E
DJ N Z DD0 4
POP B
RET

I· * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
; POS I T I V E I N T E G E R MU LT I P L I C AT I ON
; **********************************************************
M LT P L Y : PUSH B
SUB A
MVI B,8
ML0 4 : BIT 0,D
JRZ •+3
ADD E
S RA R A
RARR D
DJN Z ML0 4
POP B
RET

94
,· * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
; S UARE B L I NKER
,· * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
; F U NC T I ON : To b l i n k t h e g r a p h i c s b o a r d s q u a r e t o s i g n a l

, a p i e c e ' s i n t e n t i o n t o mo v e , o r t o h i g h ­

, l i g h t t h e squa r e a s be i ng a l t e r a b l e

, i n AN A L Y S .

I

; CALLED BY : MAKEMV

, ANA LYS

' M AT E D

'

; CALLS : No n e

,

; A RG U M E N T S : No r m a d d r e s s o f d e s i r e d s q u a r e p a s s e d i n
; r eg i s te r pa i r H L . Numbe r o f t i m e s to
; b l i n k pa s s e d i n r eg i s t e r B .
· ****•******************************************************
I

B LN K E R : PUS H PSW ; Sa v e r eg i s te r s
PUSH B
PUSH D
PUSH H
PUSH x
S H LD NORMAD ; S a v e No r m a d d r e s s
B L0 4 : MVI D,0 ; Ba r counte r
B L0 8 : MVI C,0 ; B l oc k coun t e r
BL0C : MOV A,M ; Fe tch bloc k
XRI 3FH ; G r a p h i c s c o mp l e m e n t
MOV M,A ; Re p l a c e b l o c k
I NR L ; Ne x t bloc k add r e s s
I NR c ; I n c r em e n t b l o c k c o u n t e r
MOV A,C
CPI 6 ; Do n e ?
J RN Z BL0C ; N o - j um p
MOV A,L ; Ad d r e s s
ADI 3AH ; Ad j u s t s q u a r e p o s i t i o n
MOV L,A ; Re p l a c e a d d r e s s
I NR D ; I n c r e me n t b a r c o u n t e r
B IT 2,D ; Do n e ?
J RZ BL0 8 ; No - j ump
L H LD N ORMA D ; Ge t N o r m a d d r e s s
PUSH B ; S a v e r eg i s te r
LX I B , 3030H ; De l a y l o o p , f o r v i s i b i l i ty
B L1 0 : DJ N Z BL10
DC R c
J RN Z BL10

95
POP B •
I Re s t o r e r e g i s t e r
DJ N Z BL0 4 •
I Do n e ? N o
.
-
] Ump
POP x •
I Re s t o r e r e g i s t e r s
POP H
POP D
POP B
POP P SW
RET •
I Re t u r n

96
· * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * �* * * * * * * * * * * * * * * * * * * *
I

; E X EC U T E MOV E S U B R O U T I N E
· * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
I

; F U N C T I ON : Th i s r o u t i ne i s t he c on t r o l r o u t i n e f o r

I M A K E MV . I t c h e c k s fo r d o u b l e mo v e s a nd

I s e e s tha t t hey a r e p r ope r l y h a nd l ed . It

I s e ts f l ag s i n the B r eg i s te r f o r d o u b l e

I mo v e s :

I En Pa s s a n t Bit 0

I o -o Bit l

I 0 -0 -0 Bit 2

I

; CALLED BY : P LY RM V

I C PT RM V

I

; CALLS : M A K E MV
.
'
; A RG U M E N T S : F l ag s s e t i n t h e B r eg i s te r a s d e s c r i bed

I a bo v e .
· * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
I

E X EC M V : PUSH x ; Save reg i s te r s


PUSH PSW
L I XD M L PT RJ ; I n d e x i n t o mo v e l i s t
M OV C , M L F RP (X) ; Mo v e l i s t " f r o m " po s i t i o n
M OV E , M LT O P (X) ; Mo v e l i s t " to " po s i t i o n
CALL MAK EMV ; P r o d u c e mo v e
M OV D , M L F LG (X) ; Mo v e l i s t f l a g s
MVI B,0
BIT 6,D ; Do u b l e mo v e ?
J RZ EX 1 4 ; N o - J um p
LXI D,6 ; M o v e l i s t e n t r y w i d th
DAD X D ; I n c r e me n t M L PT RJ
M OV C , M L F RP (X ) ; Se c o nd " f r o m " po s i t i o n
MOV E , M LT O P (X) ; Se cond " to " po s i t i o n
M OV A,E ; G e t " t o " po s i t i o n
CMP c ; S ame a s " f r o m " po s i t i o n ?
J RN Z EX0 4 ; N o - j um p
I NR B ; Se t en pa s s a n t f l ag
JMPR EX10 ; J u mp
EX0 4 : CPI lAH ; W h i t e 0-0 ?
J RN Z EX0 8 ; N o - J um p
S ET l,B ; Se t 0-0 f l a g
JMPR EX10 ; Jump
EX0 8 : CPI 60H ; B l a c k 0-0 ?
J RN Z EX0C ; N o - J Um p
S ET l,B : Se t 0-0 f l a g
J�PR EX10 ; J u mp
E X 0C : S ET 2,B ; S e t 0-0 -0 f l a g
EX1 0 : CALL MAKEMV ; M a k e 2 n d mo v e o n b o a r d
EX14 : POP PSW ; Re s t o r e r e g i s t e r s
POP x
RET ; Re t u r n

97
· * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
I

; M A K E MOVE S U B RO U T I N E
· * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
I

; F UN D T I ON : Mo v e s the p i e c e on the boa r d whe n a mov e



I i s mad e . I t b l i n k s b o t h t h e " f r o m " a nd

I " t o " p o s i t i o n s t o g i v e n o t i c e o f t h e mo v e •


I

; CALLED BY : EXECMV
.

: CALLS : C O N V RT

I B LN K E R
.

I I NSPCE

I

: A RG U M E N T S : Th e " f r o m " po s i t i o n i s p a s s e d i n r e g i s t e r
: C , a n d t h e " t o " po s i t i o n i n r e g i s t e r E .
· * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
I

MAKEMV : PUSH P SW : Save r eg i s te r


PUS H B
PUSH D
P US H H
M OV A,C •
I " F r om " po s i t i o n
S TA B RD POS : Se t u p pa r a me t e r
CALL C O N V RT : Ge t t i n g N o r m a d d r e s s i n H L
MVI B, 10 : B l i n k pa r ame t e r
CALL BLNKER : B l i n k " f r om " squ a r e
MOV A,M : B r i ng i n No r m b l oc k
I NR L : F i r s t c h a ng e b l oc k
MVI D,0 : Ba r counte r
MM 0 4 : MV I B,4 : B l oc k cou n te r
MM 0 8 : MOV M,A : Inse r t blank block
I NR L : Ne x t change b l o c k
DJ N Z MM0 8 : Do n e ? N o - j u m p
M OV C ,A : S a v i ng n o r m b l o c k
MOV A,L : B a r i n c r e me n t
AD I 3CH
MOV L ,A
MOV A,C •
I Re s t o r e No r m b l o c k
I NR D
B IT 2,D •
I Do n e ? .

J RZ MM 0 4 •
I No - ] U mp
M OV A,E •
I Ge t " t o " p o s i t i o n
S TA B RDPOS •
I Se t up pa r am e te r
C AL L C O N V RT .

I Ge t t i n g N o r m a d d r e s s i n H L
MVI B, 10 •
I B l i n k pa r a m e t e r
CALL I NSPCE •
I Inse r ts the piece
CALL B LN K E R •
I B l i n k s " to " squa r e
POP H •
I Re s t o r e r e g i s t e r s
POP D
POP B
POP PSW
RET : Re t u r n

98
1'.DL/ZILOG lllnenao nie• Con�rsion

Symbols Used.

SYMBOL OPERATION
r one o f the 8-b i t regis ters A , B , C , D , E , H , L
n any 8-b i t absolute value
ii an index reg i s ter referenc e , e i ther X or Y
d an 8-b i t index displacemen t , where - 1 2 8 < d < 1 2 7
zz B for the BC reg is ter pa ir , D for the DE pa ir
nn any 16-b i t value , absolute or relocatable
rr B for the BC regis ter pair , D for the DE pa ir , H for the
HL pair , SP for the s tack po inter
qq B for the BC reg is ter pair , D for the DE pair , H for the
HL pair , PSW for the A/ Flag pair
s any o f r (def ined above) , M , or d ( i i )
IFF interrup t f l ip-f lop
CY carry f l ip- f lop
ZF zero f lag
tt B for the BC regis ter pa ir , D for the DE pair , SP for the
s tack po inter , X for index r eg is ter IX
uu B for the BC regis ter pair , D for the DE pair , SP for the
s tack po inter , Y for index reg i s ter IY
b a b i t pos i t ion in an 8-b i t by te , where the b i t s are
numbered from righ t to lef t 0 to 7
PC program counter
b{n} b i t n of the 8-b i t value or regis ter v
vv/H the mos t s ignif icant by te o f the 16-b i t value or
regis ter vv
vv / L the leas t s igni f icant by te o f the 1 6-b i t va lue o r
regis ter vv

99
Iv an input operat ion on por t v
Ov an ou tput operat ion on por t v
w + v the value of w is replaced by the value of v
w +-+ v the value of w is exchanged wi th the value of v

8 Bit Load Group

TDL Z ILOG tiOF tiOF


MNEMONIC OPERATION MNEMONIC BYTES T STATES
MOV r r ' ' r + r' LD r r '
' 1 4
MOV r , M r + (HL) LD r , (HL) 1 7
MOV r , d ( ii ) r + ( i i+d) LD r,( I i i+d) 3 19
MOV M , r (HL) + r LD (HL) , r 1 7
MOV d ( ii) , r ( ii+d) + r LD ( Ii i+d) , r 3 19
MVI r , n r + n LD r , n 2 7
MVI M , n (HL) + n LD (HL) , n 2 10
MVI d ( i i ) , n ( i i+d) + n LD ( I i i+d ) , n 4 19
LDA nn A + (nn) LD A , (nn) 3 13
STA nn (nn) + A LD (nn) , A 3 13
LDAX z z A + (zz) LD A , ( z z ) 1 7
STAX zz (zz) + A LD ( z z ) , A 1 7
LDAI A + I LD A , I 2 9
LDAR A + R LD A , R 2 9
STAI I +A LD I , A 2 9
STAR R +A LD R , A 2 9
1 00
1 6 Bit Load Group

TDL Z ILOG IIOF tiOF


MNEMONIC OPERAT ION
- ---- -
MNEMONIC BYTES T S TATES
LXI rr , nn rr + nn LD rr , nn 3 10
LXI i i , nn ii + nn LD i i , nn 4 14
LBCD nn B +( nn+l ) LD BC , (nn) 4 20
c + ( nn)
LDED nn D + ( nn+l ) LD DE , (nn) 4 20
E (nn)
+

LHLD nn H + ( nn+l ) LD HL , (nn) 3 16


L + ( nn)
L IXD nn IX/H + ( nn+l ) LD IX , ( nn) 4 20
IX/L + (nn)
L IYD nn IY /H + ( nn+l ) LD IY , ( nn) 4 20
IY /L + ( nn)
LSPD nn S P /H + ( nn+l ) LD SP , ( nn) 4 20
S P /L + ( nn)
S BCD nn (nn+l ) + B LD ( nn) , BC 4 20
( nn) + c
SDED nn ( nn+l ) + D LD (nn) , DE 4 20
( nn) +E
SHLD nn ( nn+l ) + H LD ( nn) , HL 3 16
( nn) + L
S IXD nn ( nn+l ) IX/H
+ LD (nn) , IX 4 20
( nn) + IX/L
S IYD nn ( nn+l ) + IY /H LD ( nn) , IY 4 20
( nn) + IY / L
S SPD nn (nn+l ) S P /H+
LD ( nn) , SP 4 20
( nn) + S P /L
SPHL S P + HL LD S P , HL 1 6
S PIX SP + IX LD S P , IX 2 10
S P IY SP + IY LD S P , IY 2 10

101
PUSH qq ( S P- 1 ) +- qq /H PUSH qq 1 11
(SP- 2 ) +- qq/L
SP +- SP- 2
PUSH i i (SP- 1 ) +- i i /H PUSH ii 2 15
(SP- 2) +- i i/L
SP +- SP- 2
POP q q q q /H + (SP- 1 ) POP q q 1 10
qq /L +- ( SP )
SP +- SP- 2

POP i i i i /H +- ( S P+l ) POP ii 2 14


i i/L +- (SP)
SP +- SP+2

1 02
E xe hanae , Bloe k Transfe r, and Seareh Gro up

TDL Z ILOG IIOF IIOF


MNEMONIC OPERAT ION MNEMON IC BYTES T STATES
XCHG HL �DE EX DE , HL 1 4

EXAF P SW �PSW ' EX AF , AF ' 1 4

EXX BCDEHL �BCDEHL ' EXX 1 4

XTHL H � c sP+1) EX ( S P ) , HL 1 19
L � (S P )
XTIX IX/H � ( S P+l ) EX ( SP) , IX 2 23
IX/L � ( S P )
XTIY I Y /H � csP+l ) EX ( SP ) , IY 2 23
IY /L � ( S P )
LDI (DE) + (HL ) LD I 2 16
DE + DE+l
HL + HL+l
BC + BC- 1
LD IR rep ea t LDI unt il BC= 0 LDIR 2 21 / 16
LDD (DE) + (HL) LDD 2 16
DE + DE- 1
HL + HL- 1
BC + BC- 1
LDDR rep ea t LDD unt il BC= 0 LDDR 2 21/ 16
CC I A - (HL ) CP I 2 16
HL HL+l
+

BC BC-1
+

CCIR repea t CCI unt il A= (HL) CPIR 2 21 / 1 6


o r BC= 0
CCD A - (HL ) CPD 2 16
HL HL- 1
+

BC BC- 1
+

CCDR repea t CCD unt il A= (HL ) CPDR 2 21 / 1 6


or BC=0

1 03
8 B it Arithmetie and Logieal

TDL Z ILOG IIOF IIOF


MNEMONIC OPERATION MNEMONIC BYTES T STATES
ADD r A +A + r ADD A , r 1 4
ADD M A + A + (HL) ADD A , (HL ) 1 7

ADD d ( i i) A + A + ( ii+d ) ADD A , ( I ii+d) 3 19

ADI n A +A + n ADD A , n 2 7

ADC s A + A + s + CY ADC A , s As shown for


ADD ins truc t ion
AC I n A + A + n + CY ADC A , n
SUB s A +A - s SUB s
SUI n A +A - n SUB n

SBB s A + A - s - CY SBC A , s
SBI n A + A - n - CY SBC A , n
ANA s A +A fl.. s AND s
ANI n A +A fl.. n AND n
ORA s A +A v s OR s
ORI n A +A v n OR n
XRA s A +A�s XOR s
XRI n A + A A'3 n XOR n
CMP s A - s CP s
CP I n A - n CP n
INR r r + r + 1 INC r
INR M (HL ) + (HL) + 1 INC (HL )
INR d ( ii) ( i i+d ) + ( ii+d ) + 1 INC ( Ii i+d )
DCR r r + r - 1 DEC r
DCR M (HL) + (HL) - 1 DEC (HL )
DCR d ( i i) ( i i+d ) + ( ii+d ) - 1 DEC ( I i i+d)
1 04:
Gene ral Purpose Arlthmetie and Co ntrol G roup

TDL Z ILOG IIOF IIOF


MN EMONIC OPERATION MNEMONIC BYTES T S TATES
DAA conve r t A to packed BCD DAA 1 4
af t er an add or s ub trac t
o f packed BCD operands
CMA A + rvA CPL 1 4
NEG A + -A NEG 2 8
CMC CY + rvcy CCF 1 4
S TC CY + 1 SCF 1 4
NOP no opera tion NOP 1 4
HLT hal t HALT 1 4
DI IFF + 0 D'I 1 4
EI IFF + 1 EI 1 4
IM0 interrup t mode 0 IM 0 2 8
IMl interrup t mode 1 IM 1 2 8
IM2 interrup t mode 2 IM 2 2 8

105
1 6 Bit Arithmeti� Group

TDL Z ILOG IIOF IIOF


MNEMONIC OPERATION MNEMONIC BYTES T STATES
DAD rr HL + HL + rr ADD HL , rr 1 11
DADC rr HL + HL + rr + CY ADC HL , rr 2 15
DSBC rr HL + HL - rr - CY S BC HL , rr 2 15
DADX t t IX + IX + t t ADD IX , t t 2 15
DADY uu IY + IY + uu ADD IY , uu 2 15
INX rr rr + rr + 1 INC rr 1 6
INX ii ii + ii + 1 INC ii 2 10
DCX rr rr + rr - 1 DEC rr 1 6
DCX ii ii + ii 1 DEC i i 2 10

1 06
Rotate and ShHt G roup

TDL Z ILOG IIOF tiOF


MNEMONIC OPERATION MNEMONIC BYTES T STA T ES
RLC RLCA 1 4
1� J[ 7 + �]J
A
RAL RLA 1 4
tm + [ 7 + 0 1J
A
RRC RRCA 1 4
L1 7 -+
0 � @!J
A
RAR 4
0A 1 + @J
RRA 1
L1 7 -+

RLCR r S ame d iagram as RLC r 2 8


for RLC
RLCR M "
RLC (HL) 2 15

RLCR d ( ii ) "
RLC ( I i i+d ) 4 23
RALR s Same d iagram as RL s Same as for RLCR
for RAL ins truc t ion
RRCR s S ame d iagram as RRC s
for RRC
RARR s Same d iagram as RR s
f o r RAR
SI.AR s ! CY j + l 7
s
+ 01 + 0 SLA s

SRAR s
Cl
-+
0s I -+ ! CY I SRA s

107
SRLR s 0� 1 7 � 0 l �l cY l S RL s
s
RLD RLD 2 18

RRD A 1 7 4 j 3 01 r
RRD 2 18
� t
(HL) I 7 4 l 3 01
L t

B it Set, Reset, and Test Group

TDL Z ILOG # OF IIOF


MNEMONIC OPERATION MNEMONIC BYTES T STATES
BIT b , r ZF +- rvr { b } B IT b , r 2 8
BIT b , M ZF +- rv (HL) { b } BIT b , (HL ) 2 12
BIT b , d ( ii ) ZF +- rv ( Ii i+d ) { b } BIT b , ( I ii+d) 4 20
S ET b , r r{b }+- 1 SET b , r 2 8
SET b , m (HL) { b } � 1 SET b , (HL) 2 15

SET b , d ( i i) ( Iii+d) { b } +- 1 SET b , ( I i i+d ) 4 23


RES b , s S{b} +- 0 RES b , s Same as for
S ET ins truc tion

1 08
Ju.mp Gro up

TDL Z ILOG IIOF IIOF


MNEMONIC OPERATION MNEMONIC BYTES T STATES
JMP nn PC + nn JP nn 3 10
JZ nn if zero , then JMP JP Z , nn 3 10
els e cont inue
JNZ nn if no t zero JP NZ , nn 3 10
JC nn i f carry JP C , nn 3 10
JNC nn i f no t carry JP NC , nn 3 10
JPO nn if par i ty odd JP PO , nn 3 10
JPE nn if par i ty even JP PE , nn 3 10
JP nn i f s ign pos i t ive JP P , nn 3 10
JM nn i f s ign nega t ive JP M , nn 3 10
JO nn if overflow JP P E , nn 3 10
JNO nn i f no overflow JP P O , nn 3 10
JMPR nn PC + PC + e JR e 2 12
where e = nn - PC
- 12 6 < e < 1 2 9
JRZ nn i f zero , then JMPR JR Z , e 2 7 / 12
el s e cont inue
JRNZ nn if no t zero JR NZ , e 2 7/12
JRC nn i f carry JR C , e 2 7/12
JRNC nn if no t carry JR NC , e 2 7/12
DJNZ nn B B - 1
+ DJNZ e 2 8/13
i f B= 0 then cont inue
else JMPR
PCHL PC + HL JP ( HL ) 1 4
PCIX PC + IX JP ( IX) 2 8
PC IY PC + IY JP ( IY ) 2 8

1 09
Call and Return Group

TDL ZILOG IIOF IIOF


MNEMONIC OPERATION MNEMO N I C BYTES T STATES
CALL nn ( SP- 1 ) + PC/ H CALL nn 3 17
(SP- 2 ) + PC/ L
SP + SP- 2
PC + nn
CZ nn if zero , then CALL CALL Z , nn 3 10/17
else cont inue
CNZ nn if no t zero CALL NZ , nn 3 10 / 1 7
CC nn i f tarry CALL C � nn 3 10 / 1 7
CNC nn if no t carry CALL NC , n n 3 10 / 1 7
CPO nn if par i ty odd CALL PO , nn 3 10/17
CPE nn i f par i ty even CALL PE , nn 3 10 / 1 7
CP nn if s ign pos i t ive CALL P , nn 3 10 / 1 7
CM nn if sign nega t ive CALL M , nn 3 10 / 1 7
co nn if overflow CALL PE, nn 3 10 / 1 7
CNO nn if no overf low CALL P O � nn 3 10 / 1 7
RET PC/H + ( SP+l) RET 1 10
PC/L + ( SP )
SP + SP+2
RZ if zero , then RET RET Z 1 5 / 11
e ls e continue
RNZ i f not zero RET NZ 1 5 / 11
RC if carry RET c 1 5 /11
RNC if no t carry RET NC 1 5 / 11
RPO if pari ty odd RET PO 1 5 / 11
RPE if par i ty even RET PE 1 5/11
RP if sign pos i t ive RET P 1 5 / 11
RM if s ign negat ive RET M 1 5 / 11

1 10
RO if ov rf low RET PE 1 5/11
RNO if no overf low RET PO 1 5/ 1 1
RETI re turn f rom interrup t RET I 2 14
RETN re turn from non- RETN 2 14
maskab le in terrup t
RST n ( SP- 1 ) + PC/H RST n 1 11
( SP- 2 ) + PC /L
PC + 8 * n
where o < n < 8

Input and Output Gro up

TDL Z ILOG IIOF IIOF


MNEMONIC OPERATION MNEMONIC
-
BYTES T STATES
IN n A + In IN A , (n) 2 11
INP r r + I (C ) IN r , (C) 2 12
INI (HL) + I (C ) INI 2 16
B + B - 1
HL + HL + 1
INIR r epea t INI unt i l B =0 INIR 2 16/21
IND ( HL ) + I (C ) IND 2 16
B + B - 1
HL + HL - 1
INDR rep ea t IND unt il B =0 INDR 2 16 / 21
OUT n On + A OUT (n) , A 2 11
OUTP r O (C ) + r OUT ( C ) , r 2 12
OUT I O (C ) + (HL ) OUTI 2 16
B + B - 1
HL + HL + 1
OUT IR repea t OUT ! unt i l B =0 OTIR 2 16/21
OUTD O (C ) + (HL ) OUTD 2 16
B + B 1 -

HL + HL - 1
OUTDR r ep ea t OUTD until B = 0 OTDR 2 16/21
111
INDEX TO SUBROUTINES

ADJ PTR 33
AD MOVE 36
AN ALY S 85
ASCEND 64
ASNTBI 80
ATKSAV 42
ATTACK 39
BITASN 76
BLNKER 94
BOO K 65
CASTLE 34
CHARTR 82
CO NVRT 93
CPTRMV 73
D I VIDE 93
DRIVER 69
D SPBRD 89
ENPSNT 32
EVAL 60
EXECMV 97
FCDMAT 75
FNDMOV 59
GENMOV 38
I NCH K 38
I N ITBD 27
INSPCE 91
INTERR 71
L I M IT 51
MAKEMV 98
MATED 84
MLTPLY 94
MOVE 54
MP I E CE 30

113
NEXT AD 49
PATH 29
PGIFND 83
PIN FND 44
PLYRMV 79
PNCK 43
POINTS 49
ROY ALT 88
SOR TM 58
TBCPCL 78
TBPLCL 76
TBPLMV 78
UN MOVE 56
VALMOV 80
XCHNG 47

1 1 4:
sargonco m p u te rc h O O s p ra
sargoncompute rchOOspra

I I I 111 11 1 I 1 1 1 1 1 I
sargonco m puterc h 0 0 spr3
• l .J ..J I

$ 1 4.95

Other Books of Interest . . .

G A M E P LAY I N G WITH CO M P U T E R S , Second Edition


and ·

G A M E P LAY I N G W I T H BAS I C
Both by Dona�d D . Spencer
Two col l ect i o n s of g a m es a n d p u zz l es t h at wi l l c h a l l e n g e yo u r v e ry
best g a m e- p l ay i n g a n d p rog ram m i n g s k i l l s . G a m e P l ay i n g w i t h
C o m p u t e rs , # 51 03-4, c l ot h , 320 p p . ; G a m e Pl ayi n g w i t h BA S I C ,
#51 09-3 , p a p e r, 1 76 pp.

BAS I C BAS I C : An I n trod uction t o Computer P ro g ra m m i n g i n


BAS I C La ng uage, Second E d i ti o n
and
ADVA N C E D BAS I C : Appl i cations a n d Problems
Both b y Jam es S. Coan
Two books t h at g i ve you t h e com p l ete p i ctu re of t h e BAS I C l a n­
g u ag e. O n e i nt rod u ces t h e l a n g u a g e ; t h e ot h e r offers adva n c e d
tec h n i q u es a n d a p p l i c at i o n s . Bas i c BAS I C , # 51 06-9, p a p e r,
# 51 07-7, c l ot h , 288 p p . ; Advan ced BAS I C , # 5855-1 , p a p e r,
# 5856-X, c l ot h , 1 92 p p .

C O N S U M E R' S G U I D E TO P E R S O NAL C O M P UT I N G
A N D M I C R O CO M P UT E R S
B y Stephen Freiberger a n d Paul Chew
An i n t ro d u ct i on to the p r i n c i p l es of m i c roco m p ute rs a n d ·a rev i ew
of 64 m i c roco m p u t e r p ro d u cts f ro m ove r 50 m a n ufact u r e rs .
# 5680-X, paper, 1 76 p p .

H O W T O P R O FIT FRO M YO U R P E RS O NAL C O M P U T E R :


..
P rofessi o n a l , B u s i n ess, and Home Appli c ati ons
B y T. G . Le wis
D es c r i bes p e rs o n a l c o m p u t e r u ses i n co m m o n bu s i n es s a p p l i ca­
t i o n s . I n c l u d es m a n y BAS I C l a n g u ag e p rog rams t h at i l l u st rate t h e
tech n i q u es . # 5761 -X, p a p e r, 208 p p .

H AY D E N BOOK CO M PA N Y , I N C .
Roche l l e Pa rk , New J ersey

I S B N 0-81 04-5 1 55-7

You might also like