The Museum of HP Calculators


Poker for the HP-41C

This program is Copyright © 2002 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.

Overview

 1°) Playing against your HP-41
 2°) Playing with your HP-41    ( new )
 

-To simplify the programs, we use a deck of an infinite number of one-suit cards.
-In other words, the probability of each card is 1/13,
  and therefore, the order of the combinations is modified like this:
 
 
     combinations       probability  ranking
       high card           41%      0
         1 pair           46%      1
         2 pairs            7%      2
     3 of a kind           4.6%      3
       full house           0.4%      4
         straight*           0.3%      5
      4 of a kind           0.2%      6
      5 of a kind         0.004%      7

*Here, a straight is always a straight-flush!
  The lowest one is 2345A and the highest one is TJQKA
 

1°) Playing against your HP-41
 

-The HP-41 is always the dealer.

 0- A bet of 1000$ is placed automatically ( line 38 )
 1- The calculator deals 5 cards one by one to the player and to itself,
      the player's cards are gradually shown and the HP-41's cards are displayed as starbursts,
      then the cards are sorted out in increasing order, displayed again, and the program stops.
 2- At this step, key in a stake ( of about 1000$ or 2000$ for instance ) and press  R/S
    ( if the player simply presses R/S the HP-41 wins )
 3- Then, the HP-41 can  a)  fold ( the player wins and the new bank of the player is displayed )
                                       b)  match the player's bet.
                                       c)  make a higher bid ( which is displayed as "  + .... $" )
           In this case, the player can, in his turn:    a) fold  (  press     0   R/S  )
                                                                        b) match the HP-41's bet   (  press  ENTER  R/S )
                                                                        c) make a higher bid  ( key in a number greater than the HP-41's bid and R/S )  ... etc ...
 4- At the end of the stakes, the player's cards are displayed again and the program stops.
            -To exchange the cards number 1, 2, 5 ( if your hand is 45QQA for example )  press  125   R/S
            -If you have a complete hand, simply press  R/S
 5-The HP-41 displays the remaining cards of the player and as many starbursts as its own remaining cards.
 6-About 12 seconds later, the new hand of the player is displayed ( followed by / and 5 starbursts ) and the program stops.
 7-The second round of betting takes place here just like in steps 2 and 3
   ( To fold immediately, simply press R/S ).
 8-If the final bet or raise is not called, the new bank of the player is displayed, but the calculator's cards remain unknown.
    Otherwise, the HP-41 displayed its own cards one by one and then it displays the new bank of the player.
 9-Press R/S to continue the game.
 

Remarks:

  1-If the player exchanges 3; 2; 1; 0 cards, the HP-41 will fold unless it has ( at least )
     one pair; three of a kind; two pairs; a full house ( respectively ).     ( lines 183 to 191 )
  2-This strategy is very simple, so don't play too aggressively against your HP-41 ...
      ( but remember that the HP-41 can bluff in the second round of betting ( lines 177 to 182 ) ).
  3-Don't disturb rashly the stack during the raises.
  4-Digit entry lines are very slow. Therefore, execution time can be saved by storing these numbers in data registers:
       for instance replace line 211 by RCL 41 and key in 1.015008 STO 41 just after line 27 ... etc ...

Data Registers:

  R00 thru R40 are used.  R00 and R12 must be initialized before executing "POKER"

    R00 = random numbers
    R12 = the bank of the player ( the cash )

  R01 thru R05 are the HP-41's cards  R06 thru R11 are used for temporary data storage
  R15 thru R19 are the player's cards   R20 thru R22 ------------------------------------
  R10 is also used for the HP-41's raises.
  R08 and R22 are also used to store the values of both hands.
  R21 is also used to store the player's hand.
  R23 = /¤¤¤¤¤   ( ¤ symbolizes
  R24 = /¤¤¤¤      the starburst,
  R25 = /¤¤¤         the hidden cards
  R26 = /¤¤           of the HP-41 )
  R27 = /¤
  R28 = the "2s"
  R29 = the "3s"
  ....................
  R39 = the "Ks"
  R40 = the "As"

Flags:   F06

Subroutines:  none.
 

Analysis of the program:

-Lines 02 to 27 initialize the registers containing the cards ( 2 , 3 , ... , 9 , T , J , Q , K , A )
      and the hidden cards of the calculator ( displayed as starbursts )
      They are executed only once.
-Lines 28 to 59 place the initial bet ( 1000$  line 38 ) and deal the cards one by one
-Line 60 ( XEQ 09 ) sorts the cards, calculates the value of the HP-41's hand and stores in R10
      the maximum amount of money that the HP-41 will accept.
-Lines 61 to 68 modify this sum when the calculator has 4 cards in sequence ( like 6789K ) which can lead to a straight.
      In such a case, the HP-41 will raise the bets just as if it had two pairs.
-Lines 70 to 94 concern the bettings:
       if the player keys in 0 R/S ( or simply R/S at the first time ) the HP-41 wins the pot.
       -------------------  ENTER^  R/S  the raises are called.
       -------------------  a bet and R/S there are 3 possibilities:
               If the total amount of the raises is higher than the number in R10 the player wins the pot.
               ------------------------------- is smaller than R10 but greater than 0.4*R10, the HP-41 is in.
               ------------------------------- is smaller than 0.4*R10, the HP-41 makes a higher raise ... etc ...
                    This raise is choosen randomly but the total amount of the previous bets is also taken into account )
-Lines 104 to 112 are the showdown: the calculator displays its cards one by one.
-Lines 113 to 137 display the player's bank.
-Line  138 returns to line 28
-Lines 139 to 175 display the remaining cards of the player ( and as many starbursts as the remaining cards of the HP-41 ) after discarding.
-Line  176 executes the LBL 09 ( see below )
-Lines 177 to 182 are the calculator's bluff ( only in the second round of betting ):
       The number in R10 is divided by a random real number r ( 0 < r < 1 ).
-Lines 183 to 191 are the HP-41's strategy ( as explained in the 1st remark above )
-Lines 192 to 193 return to line 70 ( the betting )
-Lines 194 to 209 calculate and store in R10 the maximum amount of money that the HP-41 will accept.
      This number suits to bets of  a few thousand ( or ten thousand ) dollars.
-Lines 210 to 222 replace the discarded cards by new ones.
-Lines 223 to 263 sort out the cards in increasing order ( in R01 to R05 )
-Lines 269 to 288 calculate the value of the hand in R08
      The result is also used to obtain the number in R10 which is proportional to the square of R08.
      The number 37 ( line 271 ) can be changed but must not be too small ( not smaller than 16 ).
      Otherwise, the order of the different hands could become wrong.
-Lines 289 to 300 deal the cards. The random number generator used by this LBL 08
      is quite simple:   R-D  FRC
      It's perhaps not a perfect one but it's good enough for a game.
-Lines 301 to 454 concern the evaluation of the hand, the cards to be exchaned ...etc...
      The details are somewhat complex, but it works well!

  For instance, if the HP-41's hand is  3377K we have: R01 = R02 = 29 (the "3s") ; R03 = R04 = 33 (the"7s") ; R05 = 39 (the "K").
     R06 = 5 because the HP-41 will exchange its 5th card ( the King ) after the first round of betting.
     R07 = 2 = the ranking of the hand: two pairs.
     R08 = 33 ; R09 = 29 ; R10 = 39 ; R11 = 29
  Then, the value of the hand is obtained by   375*R07+374*R08+373*R09+372*R10+37*R11+R01 = 202058657 and stored in R08 ( line 287 ).
   ( In this example, R11 and R01 could be replaced by zero in the above formula, but it's not necessary ).
  This number characterizes the hand and allows to compare the HP-41's hand with the player's hand.
   (R08/E6)2 = 40827.7 $ is then stored in register R10 ( line 210 ).
 
 
 

Program Listing:
 

- In this listing, the "append" character is replaced by "~"
- The functions XTOA  ATOX  REGSWAP of the X-Functions module are used.
- CLRGX is also used, but if you don't have an HP-41 CX, replace lines 154 to 157 by

     X<=0?
     GTO 07
     0
     STO IND Y
     RDN
     GTO 03
     LBL 07
 

  01  LBL "POKER"
  02  27
  03  "A"
  04  ASTO 40
  05  35
  06  "K"
  07  ASTO 39
  08  1
  09  "Q"
  10  ASTO 38
  11  9
  12  "J"
  13  ASTO 37
  14  "T"
  15  ASTO 36
  16  "/"
  17  LBL 01
  18  STO IND Z
  19  R^
  20  XTOA
  21  ASTO IND X
  22  RDN
  23  DSE T
  24  DSE Z
  25  DSE X
  26  X>Y?
  27  GTO 01
  28  LBL 12
  29  CLX
  30  STO 20
  31  CF 29
  32  FIX 0
  33  SF 06
  34  5
  35  STO 06
  36  19
  37  STO 07
  38   E3
  39  STO 14
  40  27
  41  CHS
  42  STO 13
  43  CLA
  44  ASTO 21
  45  LBL 02
  46  CLA
  47  ARCL 21
  48  RCL 07
  49  XEQ 08
  50  ARCL IND X
  51  ASTO 21
  52  RCL 06
  53  XEQ 08
  54  ARCL IND 13
  55  AVIEW
  56  ISG 13
  57  DSE 07
  58  DSE 06
  59  GTO 02
  60  XEQ 09
  61  RCL 07
  62  X#0?
  63  9
  64  RCL 06
  65  +
  66  7
  67  X>Y?
  68  ST* 10
  69  CLST
  70  LBL 14
  71  PROMPT
  72  X=0?
  73  GTO 07
  74  ST+ 14
  75  X=Y?
  76  GTO 10
  77  RCL 14
  78  RCL 10
  79  X<Y?
  80  GTO 06
  81  .4
  82  *
  83  X<=Y?
  84  GTO 10
  85  *
  86  SQRT
  87  RCL 00
  88  R-D
  89  FRC
  90  STO 00
  91  *
  92  " +"
  93  ARCL X
  94  GTO 14
  95  LBL 10
  96  CLA
  97  ARCL 21
  98  RCL 13
  99  X<0?
100  GTO 10
101  5
102  "~/"                     ( I mean  2 characters:  append and / )
103  1
104  LBL 04
105  RCL IND X
106  ARCL IND X
107  COS
108  AVIEW
109  SIGN
110  +
111  X<=Y?
112  GTO 04
113  RCL 22
114  LBL 07
115  RCL 08
116  -
117  GTO 07
118  LBL 06
119  RDN
120  -
121  -
122  STO 14
123  LBL 07
124  X#0?
125  SIGN
126  RCL 14
127  *
128  ST+ 12
129  RCL 12          ( lines 129-131-132 are not necessary and can be deleted )       Each one will modify lines 129 to 134
130  " C="              ( 3 characters:  space C = )                                                        to display the cash according to his
131  X>0?                                                                                                               preference.
132  "~+"                ( 2 characters:  append and + )
133  ARCL 12
134  "~ $"               ( 3 characters:  append space $ )
135  FIX 4
136  SF 29
137  PROMPT
138  GTO 12          ( a synthetic three byte GTO )
139  LBL 10
140  ARCL 23
141  CLX
142  PROMPT
143  STO 20
144  CLA
145  X#0?
146  ARCL X
147  ALENG
148  ST+ X
149  STO 13
150  LBL 03
151  ATOX
152  34
153  -
154  X>0?
155  CLRGX
156  X>0?
157  GTO 03
158  3
159  E^X-1
160  15
161  LBL 13
162  RCL IND X
163  X#0?
164  ARCL IND X
165  SIGN
166  +
167  X<=Y?
168  GTO 13
169  RCL 06
170  DSE X
171  LOG
172  24
173  +
174  ARCL IND X
175  AVIEW
176  XEQ 09
177  SIGN
178  RCL 00
179  X^2
180  -
181  SQRT
182  ST/ 10
183  PI
184  PI
185  RCL 13
186  -
187  X<0?
188  +
189  RCL 07
190  X<=Y?
191  STO 10
192  CLST
193  GTO 14            ( a three-byte GTO )
194  LBL 09
195  XEQ 10
196  XEQ 10
197  CLA
198  ARCL IND 15
199  ARCL IND 16
200  ARCL IND 17
201  ARCL IND 18
202  ARCL IND 19
203  ASTO 21
204  ARCL 23
205   E6
206  /
207  X^2
208  STO 10
209  RTN
210  LBL 10
211  1.015008
212  REGSWAP
213  LBL 05
214  RCL 06
215  INT
216  10
217  ST/ 06
218  MOD
219  X#0?
220  XEQ 08
221  X#0?
222  GTO 05
223  STO 06
224  RCL 05
225  RCL 04
226  X>Y?
227  X<>Y
228  RCL 03
229  X>Y?
230  X<>Y
231  RCL 02
232  X<Y?
233  X<>Y
234  X<> 01
235  X>Y?
236  X<>Y
237  X<> 01
238  X>Y?
239  X<>Y
240  R^
241  X>Y?
242  X<>Y
243  RDN
244  X>Y?
245  X<>Y
246  RDN
247  X<Y?
248  X<>Y
249  STO 05
250  STO 08
251  RDN
252  X>Y?
253  X<>Y
254  STO 02
255  STO 11
256  RDN
257  X>Y?
258  X<>Y
259  STO 03
260  STO 10
261  X<>Y
262  STO 04
263  STO 09
264  FS?C 06
265  RTN
266  4
267  STO 07
268  XEQ 10
269  RCL 08
270  RCL 07
271  37
272  STO T
273  *
274  +
275  *
276  RCL 09
277  +
278  *
279  RCL 10
280  +
281  *
282  RCL 11
283  +
284  *
285  RCL 01
286  +
287  STO 08
288  RTN
289  LBL 08
290  RCL 00
291  R-D
292  FRC
293  STO 00
294  13
295  *
296  28
297  +
298  INT
299  STO IND Y
300  RTN
301  LBL 10
302  RCL 01
303  RCL 02
304  X=Y?
305  GTO 08
306  RCL 03
307  X=Y?
308  GTO 06
309  RCL 04
310  X=Y?
311  GTO 07
312  RCL 05
313  X=Y?
314  GTO 11
315  RCL 01
316  -
317  5
318  STO 07
319  X>Y?
320  RTN
321  RCL 04
322  LAST X
323  -
324  PI
325  X<Y?
326  GTO 09
327  R^
328  7
329  -
330  RCL 07
331  X#Y?
332  GTO 10
333  RCL 01
334  STO 08
335  RTN
336  LBL 09
337  RCL 05
338  RCL 02
339  -
340  X>Y?
341  1234
342  X<Y?
343  SIGN
344  LBL 10
345  STO 06
346  CLX
347  STO 07
348  RTN
349  LBL 11
350  123
351  GTO 09
352  LBL 06
353  RCL 04
354  X=Y?
355  GTO 10
356  RCL 05
357  X=Y?
358  SIGN
359  X<Y?
360  GTO 11
361  STO 09
362  RDN
363  STO 10
364  145
365  GTO 09
366  LBL 07
367  RCL 05
368  X=Y?
369  12
370  X<Y?
371  GTO 07
372  STO 09
373  125
374  GTO 09
375  LBL 08
376  RCL 03
377  X=Y?
378  GTO 06
379  RCL 04
380  X=Y?
381  GTO 08
382  RCL 05
383  X=Y?
384  3
385  X<Y?
386  GTO 11
387  STO 09
388  RDN
389  STO 10
390  RDN
391  STO 11
392  345
393  LBL 09
394  STO 06
395  X<> Z
396  STO 08
397  SIGN
398  STO 07
399  RTN
400  LBL 10
401  STO 08
402  RCL 05
403  X=Y?
404  SIGN
405  X<Y?
406  GTO 09
407  STO 09
408  15
409  GTO 07
410  LBL 06
411  STO 08
412  RCL 04
413  X=Y?
414  GTO 10
415  RCL 05
416  STO 09
417  X=Y?
418  RTN
419  X<>Y
420  STO 10
421  45
422  LBL 07
423  STO 06
424  3
425  STO 07
426  RTN
427  LBL 08
428  STO 08
429  RCL 05
430  X=Y?
431  RTN
432  STO 10
433  5
434  LBL 11
435  STO 06
436  RCL 02
437  STO 09
438  2
439  STO 07
440  RTN
441  LBL 10
442  7
443  STO 07
444  CLX
445  RCL 05
446  X=Y?
447  RTN
448  STO 09
449  5
450  LBL 09
451  STO 06
452  6
453  STO 07
454  END

( 629 bytes / SIZE 041 )
 
 

An example of game:
 

N.B: The first execution of the program is very slow because the XEQs and GTOs are not yet compiled.

0-Registers R00 and R12 are to be initialized, for instance:

            9 STO 00  ( avoid a seed like PI which would be converted into an integer by the R-D function )
    40000 STO 12
 

                                                                                  THE DISPLAY:         COMMENTS:
 

1- XEQ "POKER"                                                            T/¤                          ( ¤ symbolizes the starburst )
                                                                                         T6/¤¤
                                                                                         T64/¤¤¤
                                                                                         T64T/¤¤¤¤
                                                                                         T64T4/¤¤¤¤¤
             the player has two pairs                                        446TT/¤¤¤¤¤           the cards are sorted.

2-The 1st round of betting:                2000  R/S                    +1460                    the HP-41 makes a higher bid
              a new raise                         4000  R/S                    +2557                    idem
                 we are in                  ENTER^   R/S                  446TT/¤¤¤¤¤

3-We exchange the "6" ( the 3rd card )    3 R/S                  44TT/¤¤¤¤               the HP-41 has 2 pairs or a sequence of 4 cards.
    and ( 10 seconds later )                                                  44TTK/¤¤¤¤¤

4-The second round of betting:         3000  R/S                    +22441                   a raise
      to match the HP-41's raise:  ENTER^  R/S                   44TTK/2
                                                                                          44TTK/22
                                                                                          44TTK/22K
                                                                                          44TTK/22KA
                                                                                          44TTK/22KAA        The HP-41 wins!

                and the cash is displayed:                                      C = +5002 $

----------------------------------------------------------------------------------------------------------------------------------

1'-Let's continue:                            R/S                                J/¤
                                                                                           J3/¤¤
                                                                                           J33/¤¤¤
                                                                                           J339/¤¤¤¤
                                                                                           J3395/¤¤¤¤¤
            the player has one pair                                             3359J/¤¤¤¤¤

2'-1st round of betting                2000    R/S                        3359J/¤¤¤¤¤             the HP-41 is in

3'-We exchange the last 3 cards:   345   R/S                        33/¤                           the HP-41 has only a high card.
     and, (13 seconds later ),   three of a kind:                        3335K/¤¤¤¤¤

4'-2nd round of betting                 3000  R/S                         +4783                      a raise
                                                    6000  R/S                       3335K/5                    the HP-41 matches the bet
                                                                                           3335K/57
                                                                                           3335K/579
                                                                                           3335K/579K
                                                                                           3335K/579KK         the player wins the pot.

                    and the cash is                                                  C = +17002 $

----------------------------------------------------------------------------------------------------------------------------------

1"-One more time:                              R/S                            K/¤
                                                                                            K6/¤¤
                                                                                            K65/¤¤¤
                                                                                            K656/¤¤¤¤
                                                                                            K6567/¤¤¤¤¤
            one pair:                                                                   5667K/¤¤¤¤¤

2"-1st round of betting                  2000  R/S                        5667K/¤¤¤¤¤           the HP-41 is in

3"-We exchange the 1st, 4th and 5th cards:
                                                     145   R/S                        66/¤                          theHP-41 has a high card
              ( 13 seconds later )                                                 668TA/¤¤¤¤¤

4"-2nd round of betting                2000   R/S                         +12131                    the HP-41 makes a higher bid!

             a) if we fold:                      0       R/S    the cash:       C = +12003 $
             b) if we want to see    ENTER^  R/S                       668TA/3
                                                                                            668TA/3J
                                                                                            668TA/3JJ
                                                                                            668TA/3JJJ
                                                                                            668TA/3JJJA            three of a kind ( it was not a bluff! )

                     and the cash:                                                      C = -128 $             the player is in debt ...
 
 
 

2°) Playing with your HP-41
 
 

-The program may be simplified if your HP-41 becomes a one-arm bandit:
-Your calculator deals 5 cards,
  then you discard from 0 to 5 cards
  the HP-41 replaces these cards and
  -If you have 5 of a kind , you win 21 times your bet  ( line 256 )
  ------------ 4 ------------------- 13 --------------  ( line 263 )
  ------------ a straight    ---------  8  --------------  ( line 175 )
  ------------ a full-house --------   5  --------------  ( line 158 )
  ------------ 3 of a kind  --------   3  --------------  ( line 244 )
  ------------ two pairs    --------   2  --------------  ( line 252 )

  ------------ 1 pair of Jacks ( or higher )  you win 1 time your bet      |    lines 198 & 228
  ------------ 1 pair of 7s to 1 pair of 10s  your cash is unchanged      |            and
  ------------ 1 pair of 2s to 1 pair of 6s   you lose 1 time your bet     |    lines 68 thru 79

  ------------ a high card you lose 5 times your bet  ( line 192 )
 

-All these values are quite arbitrary and may be modified as you like.
 

Data Registers:             R00 = random numbers                ( Registers R00 & R06 are to be initialized before executing "POKER1" )
                                        R06 = your cash

                                         R01 to R05 = your 5 cards   ;   R07 thru R21: temp
Flags: /
Subroutines: /
 

-2 CX-functions are used ( GETKEYX and CLRGX ) but if you don't have an HP-41CX, replace lines 36 thru 45 by

     STOP           10                    -                        /
     LBL 03         MOD              0                        GTO 03                    Press  123  R/S  if, for instance, you want to discard the cards n°1-2-3 ( from the left )
     ENTER^       ST- Y             STO IND Y       LBL 10                     Simply press R/S if you have already a complete hand
     X=0?            6                     X<> Z                CF 22
     GTO 10        X<>Y             10
 

  01  LBL "POKER1"
  02  "A"
  03  ASTO 21
  04  "K"
  05  ASTO 20
  06  "Q"
  07  ASTO 19
  08  "J"
  09  ASTO 18
  10  16
  11  "T"
  12  ASTO 17
  13  9
  14  LBL 01
  15  STO IND Y
  16  DSE Y
  17  DSE X
  18  GTO 01
  19  LBL 12
  20  FIX 0
  21  CF 29
  22  " "                         one space
  23  ASTO 08
  24  5
  25  LBL 02
  26  CLA
  27  ARCL 08
  28  ENTER^
  29  XEQ 14
  30  ARCL IND X
  31  ASTO 08
  32  X<>Y
  33  AVIEW
  34  DSE X
  35  GTO 02
  36  LBL 03
  37  54
  38  GETKEYX
  39  X=0?
  40  GTO 10
  41  LASTX
  42  -
  43  CLRGX
  44  GTO 03               SST  this line in RUN mode before the first execution to compile the GTO 03
  45  LBL 10
  46  " "                         one space
  47  5
  48  LBL 13
  49  RCL IND X
  50  X#0?
  51  ARCL IND X
  52  X<>Y
  53  DSE X
  54  GTO 13
  55  AVIEW
  56  5
  57  XEQ 05
  58  " "                         one space
  59  5
  60  LBL 04
  61  RCL IND X
  62  ARCL IND X
  63  COS
  64  AVIEW
  65  X<>Y
  66  DSE X
  67  GTO 04
  68  RCL 07
  69  X#0?
  70  GTO 09
  71  17
  72  RCL 08
  73  X>Y?
  74  ISG 07
  75  INT
  76  14
  77  X>Y?
  78  DSE 07
  79  LBL09
  80  RCL 00
  81  FRC
  82  4
  83  /
  84  8
  85  +
  86  E^X
  87  RCL 07
  88  *
  89  ST+ 06
  90  RCL 06
  91  "  "                         2 spaces
  92  X>0?
  93  "~+"                       append  +
  94  ARCL 06
  95  "~ $"                      append  space  $
  96  FIX 4
  97  SF 29
  98  AVIEW
  99  CLA
100  STOP
101  GTO 12                 a three-byte GTO
102  LBL 14
103  CLX
104  RCL 00
105  R-D
106  13
107  MOD
108  STO 00
109  9
110  +
111  INT
112  STO IND Y
113  RTN
114  LBL 05
115  RCL IND X
116  X=0?
117  XEQ 14
118  X<>Y
119  DSE X
120  GTO 05
121  RCL 01
122  RCL 02
123  X>Y?
124  X<>Y
125  RCL 03
126  X>Y?
127  X<>Y
128  RCL 04
129  X<Y?
130  X<>Y
131  X<> 05
132  X>Y?
133  X<>Y
134  X<> 05
135  X>Y?
136  X<>Y
137  R^
138  X>Y?
139  X<>Y
140  RDN
141  X>Y?
142  X<>Y
143  RDN
144  X<Y?
145  X<>Y
146  STO 01
147  STO 08
148  RDN
149  X>Y?
150  X<>Y
151  STO 04
152  RDN
153  X>Y?
154  X<>Y
155  STO 03
156  X<>Y
157  STO 02
158  5
159  STO 07
160  RCL 05
161  RCL 04
162  X=Y?
163  GTO 08
164  RCL 03
165  X=Y?
166  GTO 06
167  RCL 02
168  X=Y?
169  GTO 07
170  RCL 01
171  X=Y?
172  GTO 11
173  RCL 05
174  -
175  8
176  STO 07
177  CLX
178  5
179  X>Y?
180  RTN
181  RCL 02
182  LASTX
183  -
184  PI
185  X<Y?
186  GTO 10
187  R^
188  12
189  X=Y?
190  RTN
191  LBL 10
192  5
193  CHS
194  STO 07
195  RTN
196  LBL 11
197  STO 08
198  CLX
199  STO 07
200  RTN
201  LBL 06
202  RCL 02
203  X=Y?
204  GTO 10
205  RCL 01
206  X=Y?
207  GTO 11
208  GTO 09
209  LBL 07
210  RCL 01
211  X=Y?
212  GTO 07
213  GTO 09
214  LBL 08
215  RCL 03
216  X=Y?
217  GTO 06
218  RCL 02
219  X=Y?
220  GTO 08
221  RCL 01
222  X=Y?
223  GTO 11
224  RDN
225  LBL 09
226  X<> Z
227  STO 08
228  CLX
229  STO 07
230  RTN
231  LBL 10
232  RCL 01
233  X=Y?
234  GTO 09
235  GTO 07
236  LBL 06
237  RCL 02
238  X=Y?
239  GTO 10
240  RCL 01
241  X=Y?
242  RTN
243  LBL 07
244  3
245  STO 07
246  RTN
247  LBL 08
248  RCL 01
249  X=Y?
250  RTN
251  LBL 11
252  2
253  STO 07
254  RTN
255  LBL 10
256  21
257  STO 07
258  CLX
259  RCL 01
260  X=Y?
261  RTN
262  LBL 09
263  13
264  STO 07
265  END

( 366 bytes / SIZE 022 )
 

Example:     3  STO 00   CLX   STO 06

 XEQ "POKER1"        the HP-41 displays     " 4"
                                                                     " 4J"
                                                                     " 4J9"
                                                                     " 4J9J"
                                                                     " 4J9J4"            you have 2 pairs
-If you want to discard the "9"
 ( the 3rd card ) press   3  ENTER^               " 4JJ4"              the remaining cards

-The HP-41 replaces this card,
  sorts the 5 cards and displays                      " 4"
                                                                    " 44"
                                                                    " 445"
                                                                    " 445J"
                                                                    " 445JJ"             still 2 pairs

                  followed by                                "  +6509 $"        you have  6509$
----------------------------------------------------------------------------------------------
-                     R/S                                        " Q"
                                                                    " Q4"
                                                                    " Q4T"
                                                                    " Q4TA"
                                                                    " Q4TA5"           only a high card

-You press   1 2 3 5   ENTER^
  in order to keep the ace                             " A"

-A few seconds later:                                   " 2"
                                                                   " 23"
                                                                   " 23K"
                                                                   " 23KA"
                                                                   " 23KAA"           one pair

                  followed by                               "  +10108 $"
-----------------------------------------------------------------------------------------------
-                     R/S                                        " Q"
                                                                    " QQ"
                                                                    " QQ4"
                                                                    " QQ4K"
                                                                    " QQ4K7"           one pair

-Press   3  4  5   ENTER^
 to discard the last 3 cards                            " QQ"

-Then                                                           " 2"
                                                                    " 26"
                                                                    " 268"
                                                                    " 268Q"
                                                                    " 268QQ"            the same pair

                  followed by                                "  +13859 $"
-----------------------------------------------------------------------------------------------
-                     R/S                                        " T"
                                                                    " T2"
                                                                    " T26"
                                                                    " T26Q"
                                                                    " T26Q3"           only a high card

-If you want to keep the Queen
  press  1  2  3  5   ENTER^                         " Q"

-And                                                            " 6"
                                                                    " 66"
                                                                    " 667"
                                                                    " 667Q"
                                                                    " 667QA"           one small pair  ( not enough to win )

                  followed by                                "  +10747 $"       and so forth ...
 

Notes:

-Simply press ENTER^ if you do not want to discard any card ( if you have a complete hand! )
-You can press other keys ( instead of ENTER^ )
  provided it's neither a numeric key nor CHS nor the decimal point.

-In this program, the bets are randomly computed ( approximately between 3000$ and 3800$ - lines 80 to 86 )
  but if you want to place your own bets:

    -Replace lines 80 to 86 by  RCL 22
    -Replace line 19 ( LBL 12 ) by  X<> Z  LBL 12  FS?C 22  STO 22

    -Place your bet in X-register before XEQ "POKER1"  or  R/S
    -If you want to use the same bet, simply press R/S without any digit entry

-The cards are sorted out only after discarding,
-Otherwise, it would needlessly increase execution time.
 

Go back to the HP-41 software library
Go back to the general software library
Go back to the main exhibit hall