The Museum of HP Calculators

# Hexapawn for the HP-41C/CV/CX

This program is Copyright © HP and is used here by permission. It was originally printed in the Games Solution Book. This program was entered and uploaded by Tony Duell. The documentation was entered by Dave Hicks. The Barcode for this program was provided by Brian Ward.

This program is supplied without representation or warranty of any kind. Tony Duell, Hewlett Packard and The Museum of HP Calculators therefore assume no responsibility and shall have no liability, consequential or otherwise, of any kind arising from the use of this program material or any part thereof.

## Overview

Hexapawn is a game which is programmed to learn from its mistakes. The game is played with chess pawns on a 3x3 board. Pawns may advance one square at a time or capture the opponent's pawns by moving diagonally one square. The game starts with the pawns positioned as follows:

Note the resemblance between the 41C digit keys and the board numbering. The three allowed opening moves for the first player (in this example, white) are 1 to 4 (keyed as 1.4), 2 to 5 (2.5), and 3 to 6 (3.6).

Black's three possible responses to white's 1.4 move are 8 to 4, 8 to 5, and 9 to 6.

Black can move diagonally and capture white (8 to 4), or he can move either pawns 8 or 9 straight ahead one square. The black pawn at 7 is blocked. Note that the only way a pawn can move to an open square is straight ahead. Also the only way a pawn can capture is by moving diagonally.

The game is won by advancing a pawn to the third row, capturing all of the opponent's pawns, or creating a position in which the opponent cannot move.

Moves are made by keying in the board position of the pawn to be moved, a decimal point, then the board position the pawn is to be moved to. The 41C does not check for illegal moves; therefore, you are on your honor not to cheat. The 41C selects its move at random, but if it is then punished, it remembers not to make that move in that situation. Thus, if the machine makes a poor move and is punished, it will not repeat the mistake.* Also, if the mirror image game is played, it will not make the mirror image of the poor move. If a point is reached in a game where all possible moves for a certain board configuration have received previous punishment, "NO MOVE" and "YOU WIN" is displayed, just as if there really were no move. If you cannot move, you can if you wish be a good sport and tell the 41C by keying 0 for your move. It will respond with "I WIN". If chess pawns are not available for visualization, different colored coins work well.

*Similarly, you can punish good moves to make it play a losing game.

Note: Requires 2 Memory Modules on HP-41C

## Instructions

 Step Instructions Input Data/Units Keys Output Data/Units 1 Enter program 2 Initialize type of game:  human first, [XEQ] HUMAN SEED? or machine first. [XEQ] MACHINE SEED? 3 Key in a seed for the random number generator between 0 and 1. (Just hit [R/S] if a seed has been previously entered.) seed [R/S] READY (or) ( ) to ( ) 4 Key in your move FROM.TO F.T [R/S] ( ) to ( ) Repeat step 4 until game is over 5 OPTIONAL: After the 41C displays its move, punish it. [E] AAAIIII... 6 To signify that you can't move 0 [R/S] I WIN 7 To start a new game with the same player first and punishments remembered. [A] READY (or) ( ) to ( ) Go to step 4 8 To start a new game with a different player first and/or forgetting punishments go to step 2.

## Example

```   Keystrokes:          Display:
[XEQ] [ALPHA] SIZE
[ALPHA] 014
[XEQ] [ALPHA]
MACHINE [ALPHA]	        SEED?
.1111111111 [R/S]       8 to 5
1.5 [R/S]               7 to 4
punish)
[E]                     AAAIIII...
5.8 [R/S]               YOU WIN

Start a new game with the 41C remembering its
punishment.

[A]                     8 to 5
1.5 [R/S]               7 to 5
3.5 [R/S]               9 to 5
0 [R/S]                 I WIN
```

How to get this Program to your Calculator (via HP-IL, disk, wand, and fingers)
Display the Program Barcode (.pdf) for printing and scanning

## Program Listing

```LINE  KEYS
01 LBL "MACHINE"
02 XEQ 01
03 8388607
04 STO 01
05 3139583
06 STO 02
07 34314
08 STO 03
09 SF 05
10 GTO A
11 LBL "HUMAN"
12 XEQ 01
13 16777215
14 STO 01
15 16756735
16 STO 02
17 524413
18 STO 03
19 CF 05
20 LBL A
21 SF 09
22 SF 08
23 9503
24 STO 10
25 .8596
26 STO 06
27 1
28 FS? 05
29 GTO 20
31 AVIEW
32 GTO 30
33 LBL 01
34 SF 27
35 CF 07
36 CLRG
37 "SEED?"
38 RCL 00
39 PROMPT
40 STO 00
41 RTN
42 LBL 30
43 STOP
44 "I WIN"
45 X=0?
46 PROMPT
47 FC?C 08
48 GTO 00
49 CF 07
50 3.6
51 FS? 05
52 CHS
53 X=Y?
54 SF 07
55 RDN
56 1.4
57 FC? 05
58 CHS
59 X=Y?
60 SF 07
61 RDN
62 1.5
63 X=Y?
64 SF 07
65 RDN
66 LBL 00
67 CF 09
68 STO 13
69 FRC
70 .7
71 X<=Y?
72 GTO 26
73 RCL 13
74 XEQ 50
75 INT
76 STO 11
77 LASTX
78 FRC
79 10
80 *
81 STO 12
82 CF 06
83 XEQ 21
84 .9
85 STO 13
86 FS? 05
87 GTO 22
88 3185.848596
89 XEQ 23
90 7397.7475
91 XEQ 23
92 1316.417596
93 XEQ 23
94 1142.845396
95 XEQ 23
96 2531.759596
97 XEQ 23
98 1023.848586
99 XEQ 23
100 6758.515286
101 XEQ 23
102 7163.9586
103 XEQ 23
104 2720.4142
105 XEQ 23
106 1131.8475
107 XEQ 23
108 818.9596
109 XEQ 23
110 6650.9596
111 XEQ 23
112 992.96
113 XEQ 23
114 677.4152
115 XEQ 23
116 369.75
117 XEQ 23
118 600.4186
119 XEQ 23
120 384.8463
121 XEQ 23
122 693.4152
123 XEQ 23
124 461.5263
125 XEQ 23
126 569.419596
127 XEQ 23
128 411.8452
129 XEQ 23
130 195.5286
131 XEQ 23
132 585.4175
133 XEQ 23
134 137.9563
135 XEQ 23
136 GTO 25
137 LBL 22
138 9503.8596
139 XEQ 23
140 7341.748586
141 XEQ 23
142 7449.7475
143 XEQ 23
144 3237.848562
145 XEQ 23
146 8957.7451
147 XEQ 23
148 8849.9596
149 SF 09
150 XEQ 23
151 CF 09
152 6.9
153 STO 13
154 8849.7475
155 XEQ 23
156 6687.7475
157 XEQ 23
158 855.7475
159 XEQ 23
160 1194.845253
161 XEQ 23
162 2583.756263
163 XEQ 23
164 6702.63
165 XEQ 23
166 1260.41
167 XEQ 23
168 1368.7541
169 XEQ 23
170 6887.9596
171 XEQ 23
172 2783.414295
173 XEQ 23
174 6995.5152
175 XEQ 23
176 1179.5253
177 XEQ 23
178 2286.7475
179 XEQ 23
180 2270.9596
181 XEQ 23
182 2594.96
183 XEQ 23
184 621.4163
185 XEQ 23
186 432.52
187 XEQ 23
188 GTO 25
189 LBL 23
190 ISG 13
191 INT
192 RCL 10
193 X#Y?
194 RTN
195 LASTX
196 FRC
197 STO 06
198 RCL 13
199 INT
200 LBL 20
201 STO 08
202 RCL 04
203 STO 09
204 RCL 05
205 STO 07
206 2
207 RCL 08
208 Y^X
209 STO 05
210 3
211 STO 13
212 RCL 00
213 9821
214 *
215 .211327
216 +
217 FRC
218 STO 00
219 *
220 1
221 +
222 INT
223 STO 04
224 LBL 02
225 3
226 RCL 04
227 1
228 +
229 X>Y?
230 1
231 STO 04
232 X<> 13
233 RCL IND 13
234 X<>Y
235 X<> 13
236 RDN
237 RCL 05
238 /
239 FRC
240 .5
241 X<=Y?
242 GTO 04
243 DSE 13
244 GTO 02
245 RCL 07
246 STO 05
247 STO 04
248 FS? 08
249 CF 09
250 FS? 09
251 RTN
252 LBL 25
253 "NO MOVE"
254 AVIEW
255 PSE
256 LBL 26
257 "YOU WIN"
258 AVIEW
259 STOP
260 LBL 04
261 RCL 04
262 1
263 X#Y?
264 CF 08
265 -
266 2
267 *
268 10^X
269 RCL 06
270 *
271 FRC
272 10
273 *
274 INT
275 STO 11
276 LASTX
277 FRC
278 10
279 *
280 INT
281 STO 12
282 SF 06
283 XEQ 21
284 3
285 RCL 12
286 X>Y?
287 GTO 00
288 AVIEW
289 BEEP
290 LBL 00
291 RCL 11
292 RCL 12
293 10
294 /
295 +
296 XEQ 50
297 FIX 00
298 CF 29
299 CLA
300 INT
301 ARCL X
302 " TO "
303 LASTX
304 FRC
305 10
306 *
307 ARCL X
308 AVIEW
309 GTO 30
310 LBL 50
311 FC? 07
312 RTN
313 STO 06
314 INT
315 1
316 -
317 3
318 /
319 INT
320 5
321 +
322 XEQ IND X
323 RCL 06
324 -
325 RTN
326 LBL 05
327 5
328 RTN
329 LBL 06
330 10.4
331 RTN
332 LBL 07
333 17
334 RTN
335 LBL 21
336 RCL 10
337 3
338 ENTER
339 10
340 ENTER
341 RCL 12
342 -
343 Y^X
344 /
345 FRC
346 3
347 *
348 INT
349 CHS
350 1
351 FS? 06
352 ST+ X
353 +
354 3
355 ENTER
356 9
357 ENTER
358 RCL 12
359 -
360 Y^X
361 *
362 3
363 ENTER
364 9
365 RCL 11
366 -
367 Y^X
368 1
369 FS? 06
370 ST+ X
371 *
372 -
373 ST+ 10
374 RTN
375 LBL E
376 RCL 04
377 X<> 13
378 RCL 05
379 2
380 /
381 ST- IND 13
382 RDN
383 X<> 13
384 "AAAIIII..."
385 AVIEW
386 GTO 30
387 END
```