This program is Copyright © 2007 by Jean-Marc Baillard and is used here by permission.
This program is supplied without representation or warranty of any kind. Jean-Marc Baillard 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.
-You and the HP-41 are on square#0
-The 2 players alternately roll 2 dice. ( Flag F01 is set if it's your
turn to play )
-If the dice are D1 D2, the player on square S moves forward on square
S+D1+D2
-The snakes and the ladders may appear at random on every square#S
provided 1 < S < 100
-When a snake appears, you move back. If a ladder appears, you move
forward.
-Ladders are long near square#1, short near square#99
-Snakes are short ------------- , long ---------------
-The winner is the first one who reaches ( or exceeds ) square#100
Program Listing
Data Registers:
• R00 = r = random numbers
( Register R00 is to be initialized before executing "SNLD" )
R01 thru R05: temp
Flags: F29 & F01
when F01 is set, it's your turn to play: press any key to roll the
dice
when F01 is clear, the HP-41 is playing.
Subroutines: /
01 LBL "SNLD"
02 " 00/00"
03 AVIEW
04 CLX
05 STO 01
06 STO 02
07 FIX 0
08 CF 01
09 CF 29
10 XEQ 06
11 4
12 X>Y?
13 SF 01
14 LBL 01
15 FS? 01
16 GETKEY
( lines 15-16 are actually almost unuseful! )
17 XEQ 06
18 STO 03
19 XEQ 06
20 STO 04
21 +
22 LBL 02
23 FS? 01
24 ST+ 01
25 FC? 01
26 ST+ 02
27 COS
28 COS
29 COS
30 RCL 01
31 10
32 " "
one space
33 X>Y?
34 "~0"
append 0
35 ARCL 01
36 "~/"
append /
37 RCL 02
38 X<Y?
39 "~0"
append 0
40 ARCL 02
41 "~ "
append space space
42 ARCL 03
43 "~+"
append +
44 ARCL 04
45 AVIEW
46 FS? 01
47 RCL 01
48 STO 05
49 99
50 X<Y?
51 GTO 07
52 SIGN
53 X=Y?
54 GTO 03
55 RCL 00
56 R-D
57 FRC
58 STO 00
59 .8
there is a snake if r > 0.8
where r is the content of register R00
60 X<Y?
61 GTO 04
62 6
63 /
there is a ladder if r < 0.8/6 change lines
59-62-63 if you prefer more ( or less ) snakes and/or ladders.
64 X>Y?
65 GTO 05
66 LBL 03
67 FC?C 01
68 SF 01
69 GTO 01
70 LBL 04
71 RCL 05
72 3
73 /
74 1
75 +
76 INT
77 CHS
78 " SNAKE"
79 AVIEW
80 GTO 02
81 LBL 05
82 15
83 RCL 05
84 7
85 /
86 -
87 INT
88 1
89 +
90 " LADDER"
91 AVIEW
92 GTO 02
a three-byte GTO
93 LBL 06
94 RCL 00
95 R-D
96 FRC
97 STO 00
98 6
99 *
100 1
101 +
102 INT
103 RTN
104 LBL 07
105 FS? 01
106 " YOU WIN"
107 FC?C 01
108 " HP-41 WINS"
109 FIX 4
110 SF 29
111 AVIEW
112 END
( 210 bytes / SIZE 006 )
Example: 5 STO 00 XEQ "SNLD"
" 00/00"
and flag F01 is set: it's your turn to play, press any key
" 04/00
3+1" the dice are 3 &
1 so you move on square#04. Flag F01 is cleared so the HP-41 roll the dice
" 04/07
6+1" -----------
6 & 1 the HP-41 move on square#07...
" SNAKE"
but there is a snake, the calculator moves back...
" 04/04
6+1" ... on square#04...
" LADDER"
a ladder! HP-41 moves forward
" 04/19
6+1" ... on square#19
and flag F01 is set again: you press a key
" 13/19
3+6" the dice are
3 & 6 so you move on square#13 ... and so forth ...
-The HP-41 displays " S1/S2 D1+D2" where S1 is your square, S2 is HP-41's square, D1+D2 are the 2 dice.
-Actually, the game is completely determined by the seed you've stored
in register R00
-If you want to influence the chance, add FS? 01 ST+ 00
after line 16:
the keys you'll press will modify the random numbers in register
R00.
-Do not store a number like PI in R00: the sequence of "random" numbers
would be 0 0 0 0 ....
( or change the random number generator lines 94 to 97 )
Go back to the HP-41 software library
Go back to the general software library
Go
back to the main exhibit hall