poker

# Poker for the HP-41

Overview

3°)  Texas Hold'em Poker
4°)  Synthesis of the 3 programs ( HP-41CX )

a)  3 M-Code Routines:   TRI   MV   CARD
b)  "POKER+"
c)  1 M-Code Routine:  \$
d)  "POKER"

-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

-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 = /¤¤¤¤¤
R24 = /¤¤¤¤
R25 = /¤¤¤       ( ¤ symbolizes the starburst, the hidden cards of the HP-41 )
R26 = /¤¤
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.
if the player keys in  ENTER^  R/S  the raises are called.
if the player keys in  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.
If the total amount of the raises is smaller than R10 but greater than 0.4*R10, the HP-41 is in.
If the total amount of the raises 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

-Lines 138-193 are three-byte  GTOs

 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"/"  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  130  " C="  131  X>0?  132  >"+"  133  ARCL 12 134  >" \$"  135  FIX 4 136  SF 29 137  PROMPT 138  GTO 12 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 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  XY 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  XY 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  XY? 341  1234 342  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  XY 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 )

 STACK INPUTS OUTPUTS X / /

Example:

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

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 ...

-The program may be simplified if your HP-41 becomes a one-arm bandit:

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 )
-If you have 4 of a kind , you win 13 times your bet  ( line 263 )
-If you have a straight    , you win  8  times your bet  ( line 175 )
-If you have a full-house , you win 5  times your bet  ( line 158 )
-If you have 3 of a kind  , you win 3  times your bet  ( line 244 )
-If you have two pairs    , you win 2  times your bet  ( line 252 )

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

-If you have 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" )

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

-Line 101 is a three-byte  GTO 12

 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  " "    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    45  LBL 10 46  " "    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  " "    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  LBL 09   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  "  "    92  X>0?   93  >"+"    94  ARCL 06    95  >" \$"    96  FIX 4   97  SF 29   98  AVIEW   99  CLA 100  STOP 101  GTO 12  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  XY 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  XY 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 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 )

 STACK INPUTS OUTPUTS X / /

Example:     3  STO 00   CLX   STO 06

XEQ "POKER1"        the HP-41 displays successively:

" 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.

3°)  Texas Hold'em Poker

-In order to simplify the program, there is no blind and no round of bettings before the "flop" ( the first 3 community cards ) is displayed.
-And you are always the first player to bet.

-Your bet is computed as follows ( with GETKEY ):

SIGMA+  corresponds to a bet of about   1668 \$   ..................     LN   corresponds to a bet of about   3103 \$
X<>Y      corresponds to a bet of about   6081 \$   ..................   TAN  corresponds to a bet of about   8619 \$
SHIFT     corresponds to a bet of about  13253 \$  ..................    SST  corresponds to a bet of about  16894 \$

.....................................................................................................................................................................

. / .          corresponds to a bet of about   90480 \$  .................    R/S   corresponds to a bet of about   97307 \$

>>> More exactly, the formula is    Bet = [ ( keycode ) Ln(41) ]2

-There are 2 exceptions:  press ENTER^  to accept the HP41's  raise
and press the backarrow key if you want to fold.

Data Registers:           •  R00 = random seed                 ( Registers R00 & R41 are to be initialized before executing "TXEM" )

•  R41 = your Cash      R01 thru R40 & R42 thru R50: temp
Flag:  F10
Subroutines: /

-Lines 120-135-189-246-273 are three-byte GTOs

 01 LBL "TXEM"  02 CF 29  03 13  04 STO 49              05 28  06 STO 50  07 37  08 STO 43  09 27  10 "A"  11 ASTO 40  12 35  13 "K"  14 ASTO 39  15 17.001005  16 STO 06  17 SIGN  18 "Q"  19 ASTO 38  20 9  21 "J"  22 ASTO 37  23 "T"  24 ASTO 36  25 "/"  26 LBL 00  27 STO IND Z  28 R^  29 XTOA  30 ASTO IND X  31 RDN  32 DSE T  33 DSE Z  34 DSE X  35 X>Y?  36 GTO 00  37 LBL 16  38 FIX 0  39 2  40 STO 13  41 16  42 STO 07  43 27  44 STO 08  45  E3  46 STO 48  47 SIGN  48 STO 42  49 " "  50 ASTO 44  51 LBL 01  52 CLA  53 ARCL 44  54 XEQ 04  55 STO IND 07  56 ARCL IND X  57 ASTO 44  58 XEQ 04  59 STO IND 13  60 ARCL IND 08  61 AVIEW  62 DSE 07  63 DSE 08  64 DSE 13  65 GTO 01  66 SF 10  67 3  68 STO 24  69 RCL 01  70 STO 13  71 RCL 02  72 STO 14  73 17.021  74 STO 12 75 LBL 02  76 XEQ 04  77 STO IND 12  78 ISG 12  79 GTO 02  80 "/"  81 ARCL IND 17  82 ARCL IND 18  83 ARCL IND 19  84 ASTO 45  85 " FLOP. . ."  86 AVIEW  87 RCL 06  88 REGMOVE  89 XEQ 14  90 STO 47  91 XEQ 05  92 X<> 47  93 XEQ 05  94 STO 46              95 STO 08  96 CLA  97 ARCL 44  98 ARCL 45  99 ARCL 26 100  E6 101 / 102 X^2 103 STO 10 104 RCL 00 105 R-D 106 FRC 107 STO 00 108 8 109 1/X 110 X>Y? 111 ST/ 42 112 CLST 113 LBL 03 114 AVIEW 115 GETKEY 116 44 117 X=Y? 118 CHS 119 X<0? 120 GTO 06 121 X<> Z 122 ST+ 48 123 X<>Y 124 41 125 X=Y? 126 GTO 10 127 LN 128 * 129 X^2 130 RCL 48 131 + 132 RCL 10 133 X<>Y 134 X>Y? 135 GTO 06 136 STO 48 137 X<>Y 138 3 139 / 140 X" \$" 222 FIX 4 223 AVIEW 224 STOP 225 GTO 16 226 LBL 04 227 RCL 00 228 R-D 229 RCL 49 230 MOD 231 STO 00 232 INT 233 RCL 50 234 + 235 RTN 236 LBL 05 237 STO 12            238 RCL 13 239 X<> 15 240 STO 13 241 STO 04 242 RCL 14 243 X<> 16 244 STO 14 245 STO 05 246 GTO 14 247 LBL 12 248 STO 12 249 RCL 13 250 X<> 15 251 STO 13 252 STO 01 253 RCL 14 254 X<> 16 255 STO 14 256 STO 05 257 XEQ 14 258 RCL 14 259 STO 05 260 RCL 13 261 STO 02 262 XEQ 14 263 RCL 14 264 STO 05 265 RCL 13 266 STO 03 267 XEQ 14 268 RCL 14 269 STO 05 270 XEQ 14 271 RCL 13 272 STO 05 273 GTO 14 274 LBL 13 275 STO 12 276 RCL 13 277 STO 01 278 RCL 14 279 STO 02 280 XEQ 14 281 RCL 13 282 STO 01 283 RCL 14 284 STO 03 285 XEQ 14 286 RCL 13 287 STO 01 288 RCL 14 289 STO 04 290 XEQ 14 291 RCL 13 292 STO 02 293 RCL 14 294 STO 03 295 XEQ 14 296 RCL 13 297 STO 02 298 RCL 14 299 STO 04 300 XEQ 14 301 RCL 13 302 STO 03 303 RCL 14 304 STO 04 305 XEQ 14 306 RCL 13 307 STO 01 308 XEQ 14 309 RCL 13 310 STO 02 311 XEQ 14 312 RCL 13            313 STO 03 314 XEQ 14 315 RCL 13 316 STO 04 317 XEQ 14 318 RCL 14 319 STO 01 320 XEQ 14 321 RCL 14 322 STO 02 323 XEQ 14 324 RCL 14 325 STO 03 326 XEQ 14 327 RCL 14 328 STO 04 329 LBL 14 330 RCL 05 331 RCL 04 332 X>Y? 333 X<>Y 334 RCL 03 335 X>Y? 336 X<>Y 337 RCL 02 338 XY 340 X<> 01 341 X>Y? 342 X<>Y 343 X<> 01 344 X>Y? 345 X<>Y 346 R^ 347 X>Y? 348 X<>Y 349 RDN 350 X>Y? 351 X<>Y 352 RDN 353 XY 355 STO 05 356 STO 08 357 RDN 358 X>Y? 359 X<>Y 360 STO 02 361 STO 11 362 RDN 363 X>Y? 364 X<>Y 365 STO 03 366 STO 10 367 X<>Y 368 STO 04 369 STO 09 370 4 371 STO 07 372 XEQ 10 373 RCL 08 374 RCL 07 375 RCL 43 376 STO T 377 * 378 + 379 * 380 RCL 09 381 + 382 * 383 RCL 10 384 + 385 * 386 RCL 11            387 + 388 * 389 RCL 01 390 + 391 RCL 06 392 REGMOVE 393 CLX 394 RCL 12 395 XY 397 STO 12 398 RTN 399 LBL 10 400 RCL 01 401 RCL 02 402 X=Y? 403 GTO 08 404 RCL 03 405 X=Y? 406 GTO 06 407 RCL 04 408 X=Y? 409 GTO 07 410 RCL 05 411 X=Y? 412 GTO 09 413 RCL 01 414 - 415 5 416 STO 07 417 X>Y? 418 RTN 419 RCL 04 420 LASTX 421 - 422 PI 423 XY 472 STO 08 473 SIGN 474 STO 07 475 RTN 476 LBL 10 477 STO 08 478 RCL 05 479 X=Y? 480 GTO 09 481 STO 09 482 GTO 07 483 LBL 06 484 STO 08 485 RCL 04 486 X=Y? 487 GTO 10 488 RCL 05 489 STO 09 490 X=Y? 491 RTN 492 X<>Y 493 STO 10 494 LBL 07 495 DSE 07 496 RTN 497 LBL 08 498 STO 08 499 RCL 05 500 X=Y? 501 RTN 502 STO 10 503 LBL 11 504 RCL 02 505 STO 09 506 2 507 STO 07 508 RTN 509 LBL 10 510 7 511 STO 07 512 CLX 513 RCL 05 514 X=Y? 515 RTN 516 STO 09 517 LBL 09 518 6 519 STO 07 520 END

( 795 bytes / SIZE 051 )

 STACK INPUT OUTPUT X / C

where C = your cash = R41

Example:   Initialize the random seed, say  3  STO 00  and your cash  40000 \$  STO 41

1000 \$  are automatically placed in the pot ( lines 45-46 )

•   XEQ "TXEM"   the HP-41 successively displays:

" 4/¤"
" 49/¤¤"
" FLOP. . ."
" 49/45Q/¤¤"          and stops: the 1st round of betting may start. If you press  [B]  ( about 1986 \$ ):

•   [B]   the HP-41 makes a higher bid and displays   +379   If you are in, simply press   ENTER

( Press the backarrow key to fold, or another key to make another higher bid )

" TURN. . ."          and 24 seconds later
" 49/45Q4/¤¤"      If you press  [C]  ( about 2330 \$ ):

•  [C]   the HP-41 displays   +23029      if you match the HP-41's bet,  press  ENTER

" RIVER. . ."          and  34 seconds later
" 49/45Q4T/¤¤"     if you press  [C]  again

•  [C]  the HP-41 makes another higher bid   +4791      if you match the HP-41's bet,  press  ENTER

49/45Q4T/JJ     the calculators computes the maximum value of your possible hands and finally displays your cash

C=+75846 \$       ( after 33 seconds )

•  Simply press R/S to continue the game.

Notes:

-The last possible hands of the player are not evaluated if he - or the HP41 - has folded.
-In this case, the HP-41 cards are not displayed.

-The HP41 has bluffed in the example above.
-If you don't want that the HP41 can bluff, delete lines 172-173 ,  104 to 111 & 47-48

-This program is obviously very slow on a true HP-41, unless you use the M-Code routine "TRI" listed hereafter.
-But with a good emulator, the delays become acceptable - even without a turbo mode.

4°)  Synthesis of the 3 Programs

a)  3 M-Code Routines:  TRI   MV   CARD

Warning:   These routines check that the required registers exist but they do not check for alpha data.

-Among these 3 routines, "TRI" is the most important to reduce execution time when playing Texas Hold'em Poker.

-The first one sorts the 5 cards in R01 thru R05, evaluate the poker hand - the value is returned in X -
compares this result with the number already in R48 and stores the maximum of these 2 numbers into R48.

089   "I"
012   "R"
014   "T"
03C   RCR 3
106   A=C S&X
130   LDI S&X           The lines written in red
1D0  1D0h                   check that R48 exist.
306   ?A<C S&X        You might delete them
381   ?NCGO              to save a fraction of a second ... but it's risky if you XEQ "TRI" accidentally.
00A   02E0                  However, the existence of R48 is already checked line 37 of "POKER+"
130   LDI S&X
005   005
146   A=A+C S&X
266   C=C-1 S&X
0E6   B<>C S&X
0A6  A<>C S&X
270   RAMSLCT
0A6  A<>C S&X
0E6   B<>C S&X
270   RAMSLCT
0E6   B<>C S&X
2F0   WRITDATA
1A6   A=A-1 S&X
0E6   B<>C S&X
266   C=C-1  S&X
01F   JC+03
0E6   B<>C S&X
39B  JNC -13d
130   LDI S&X
005   005
070   N=C ALL
0EE   B<>C ALL
00E   A=0 ALL
0CE  C=B ALL
266   C=C-1 S&X
057   JC+10d
270   RAMSLCT
0EE   B<>C ALL
31A  ?A<C ALL
3CB  JNC-07
0AE  A<>C ALL
0CE  C=B ALL
158   M=C ALL
3AB  JNC-11d
0B0   C=N ALL
266   C=C-1 S&X
070   N=C ALL
270   RAMSLCT
0AE  A<>C ALL
2F0   WRITDATA
198   C=M ALL
270   RAMSLCT
0AE  A<>C ALL
2F0   WRITDATA
0B0   C=N ALL
2E6   ?C#0 S&X
32F   JC-27d
04E   C=0 ALL
270   RAMSLCT
168   WRIT 5(M)
35C   PT=12
110   LD@PT-4
1A8  WRIT 6(N)
268   WRIT 9(Q)
228   WRIT 8(P)
1E8   WRIT 7(O)
046   C=0 S&X
270   RAMSLCT
158   M=C ALL
10E   A=C ALL
070   N=C ALL
36E   ?A#C ALL
18B   JNC+49d
10E   A=C ALL
36E   ?A#C ALL
15B   JNC+43d
10E   A=C ALL
36E   ?A#C ALL
143   JNC+40d
10E   A=C ALL
36E   ?A#C ALL
1F3   JNC+62d
2A0   SETDEC
10E   A=C ALL
198   C=M ALL
1CE  A=A-C ALL
08E   B=A ALL
04E   C=0 ALL
35C   PT= 12
150    LD@PT-5
1A8   WRIT 6(N)
3CE   RSHFC
30E   ?A<C ALL
187    JC+48d
10E   A=C ALL
198   C=M ALL
1CE  A=A-C ALL
04E   C=0 ALL
19C   PT= 11
0D0   LD@PT-3
158   M=C ALL
36E   ?A#C ALL
087   JC+16d
06E   A<>B ALL
3EE   LSHFA
04E   C=0 ALL
35C   PT= 12
1D0    LD@PT-7
1CE   A=A-C ALL
36E   ?A#C ALL
0D7   JC+26d
1E8   WRIT 7(O)
0D3  JNC+26d
11B  JNC+35d
1D3  JNC+58d
0C3  JNC+24d
10E   A=C ALL
1CE  A=A-C ALL
198   C=M ALL
36E   ?A#C ALL
02F   JC+05
04E   C=0 ALL
35C   PT= 12
050    LD@PT-1
04B   JNC+09
04E   C=0 ALL
35C   PT= 12
050    LD@PT-1
090    LD@PT-2
0D0   LD@PT-3
110   LD@PT-4
130   LDI S&X
003   003
168   M=C ALL
04E   C=0 ALL
1A8  WRIT 6(N)
163   JNC+44d
1AB  JNC+53d
04E   C=0 ALL
35C   PT= 12
050    LD@PT-1
090    LD@PT-2
0D0   LD@PT-3
130   LDI S&X
002   002
0C3  JNC+24d
10E   A=C ALL
36E   ?A#C ALL
1CB  JNC+57d
10E   A=C ALL
36E   ?A#C ALL
02F   JC+05
04E   C=0 ALL
35C   PT= 12
050    LD@PT-1
183   JNC+48d
228   WRIT 8(P)
0AE  A<>C ALL
268   WRIT 9(Q)
04E   C=0 ALL
35C   PT= 12
050    LD@PT-1
110    LD@PT-4
150    LD@PT-5
130    LDI S&X
002    002
1A3   JNC+52d
10E   A=C ALL
36E  ?A#C ALL
047   JC+08
04E   C=0 ALL
35C   PT= 12
050    LD@PT-1
090    LD@PT-2
226    C=C+1 S&X
193    JNC+50d
183    JNC+48d
228    WRIT 8(P)
04E   C=0 ALL
35C   PT= 12
050    LD@PT-1
090    LD@PT-2
150    LD@PT-5
130    LDI S&X
002    002
103    JNC+32d
10E   A=C ALL
36E   ?A#C ALL
1BB  JNC+55d
10E   A=C ALL
36E  ?A#C ALL
193   JNC+50d
10E   A=C ALL
36E  ?A#C ALL
037   JC+06
04E   C=0 ALL
35C   PT= 12
0D0   LD@PT-3
14B   JNC+41d
0C3   JNC+24d
228   WRIT 8(P)
0AE   A<>C ALL
268   WRIT 9(Q)
070   N=C ALL
10E   A=C ALL
04E   C=0 ALL
35C   PT= 12
0D0   LD@PT-3
110    LD@PT-4
150    LD@PT-5
130    LDI S&X
002    002
168    M=C ALL
0AE   A<>C ALL
1E8    WRIT 7(O)
04E   C=0 ALL
35C   PT= 12
050    LD@PT-1
1A8   WRIT 6(N)
153    JNC+42d
123    JNC+36d
1E8   WRIT 7(O)
10E   A=C ALL
36E  ?A#C ALL
02F   JC+05
04E   C=0 ALL
35C   PT= 12
050    LD@PT-1
193    JNC+50d
228   WRIT 8(P)
04E   C=0 ALL
35C   PT= 12
050    LD@PT-1
150    LD@PT-5
226   C=C+1 S&X
0A3   JNC+20d
113    JNC+34d
0C3   JNC+24d
1E8   WRIT 7(O)
10E   A=C ALL
36E   ?A#C ALL
12B   JNC+37d
10E   A=C ALL
228   WRIT 8(P)
36E  ?A#C ALL
183   JNC+48d
0AE  A<>C ALL
268   WRIT 9(Q)
04E   C=0 ALL
35C   PT= 12
110    LD@PT-4
150    LD@PT-5
226    C=C+1 S&X
168    WRIT 5(M)
04E   C=0 ALL
35C   PT= 12
0D0    LD@PT-3
1A8   WRIT 6(N)
11B   JNC+35d
1E8   WRIT 7(O)
10E   A=C ALL
36E  ?A#C ALL
0F3   JNC+30d
268   WRIT 9(Q)
04E   C=0 ALL
35C   PT= 12
150    LD@PT-5
168   WRIT 5(M)
228   WRIT 8(P)
04E   C=0 ALL
35C   PT= 12
090    LD@PT-2
1A8   WRIT 6(N)
093   JNC+18d
063   JNC+12d
04E   C=0 ALL
35C   PT= 12
1D0    LD@PT-7
1A8   WRIT 6(N)
36E  ?A#C ALL
053   JNC+10d
228   WRIT 8(P)
04E   C=0 ALL
35C   PT= 12
150    LD@PT-5
168   WRIT 5(M)
04E   C=0 ALL
35C   PT= 12
190    LD@PT-6
1A8   WRIT 6(N)
260    SETHEX
03C   RCR 3
106   A=C S&X
130   LDI S&X
00B  011d
206   C=A+C S&X
270   RAMSLCT
10E   A=C ALL
0B0   C=N ALL
2F0   WRITDATA
130   LDI S&X
009   009
158   M=C ALL
270   RAMSLCT
0AE  A<>C ALL
266   C=C-1 S&X
270   RAMSLCT
0AE  A<>C ALL
2F0   WRITDATA
198   C=M ALL
266   C=C-1 S&X
3B3   JNC-10d
04E   C=0 ALL
270   RAMSLCT
35C  PT=12
0D0  LD@PT-3                     37 is used to evaluate the poker hands.
1D0  LD@PT-7                     Replace these 2 lines if you prefer another number, but choose at least 16.
226   C=C+1 S&X
2A0  SETDEC
128   WRIT 4(L)
10E   A=C ALL
135   ?NCXQ                    C=
060   184D                       A*C
10E   A=C ALL
01D  ?NCXQ                    C=
060   1807                       A+C
10E   A=C ALL
135   ?NCXQ                    C=
060   184D                       A*C
10E   A=C ALL
01D  ?NCXQ                    C=
060   1807                       A+C
10E   A=C ALL
135   ?NCXQ                    C=
060   184D                       A*C
10E   A=C ALL
01D  ?NCXQ                    C=
060   1807                       A+C
10E   A=C ALL
135   ?NCXQ                    C=
060   184D                       A*C
10E   A=C ALL
0B0   C=N ALL
01D  ?NCXQ                    C=
060   1807                       A+C
10E   A=C ALL
135   ?NCXQ                    C=
060   184D                       A*C
10E   A=C ALL
046   C=0 S&X                 C
270   RAMSLCT               =
01D  ?NCXQ                    C=
060   1807                       A+C
0E8   WRIT 3(X)                                 Here, the combination is evaluated.
070   N=C ALL                                   Then, its value is compared to R48 and the maximum is stored in R48
260   SETHEX
03C   RCR 3
106   A=C S&X
130   LDI S&X
030   048d
206   C=A+C S&X
270   RAMSLCT
0E6   B<>C S&X
10E   A=C ALL
0B0   C=N ALL
306   ?A<C S&X
037   JC+06
0AE  A<>C ALL
306   ?A<C S&X
360   ?C RTN
31A   ?A<C M
360   ?C RTN
0E6   B<>C S&X
270   RAMSLCT
0B0  C=N ALL
2F0   WRITDATA
3E0   RTN

 Poker Hand X-OUTPUT 23457 63459727 9JQKA 76995333 22345 123432879 JQKAA 146391351 22334 194499001 QKKAA 215684693 22234 262068734 QKAAA 285080672 22233 331360669 KKAAA 354424630 2345A 402682868 23456 408305351 TJQKA 423715119 22223 470048583 KAAAA 493112581 22222 539341887 AAAAA 562456539

-The second M-Code routine "MV" is equivalent to  17.001005   REGMOVE
-Checking for alpha data would be unuseful.

096   "V"
00D  "M"
03C   RCR 3
106   A=C S&X
130   LDI S&X           The lines written in red
1EB  1EBh                   check that R21 exist.
306   ?A<C S&X        You might delete them
381   ?NCGO              to save a fraction of a second ... but it's risky if you XEQ "MV" accidentally.
00A   02E0                  However, the existence of R42 is checked line 03 of "POKER+". So R21 does exist too !
130   LDI S&X
010   016d
206   C=A+C S&X
0E6   B<>C S&X
130   LDI S&X
004   004
070   N=C ALL
0E6   B<>C S&X
226   C=C+1 S&X
270   RAMSLCT
0E6   B<>C S&X
0AE  A<>C ALL
226   C=C+1 S&X
270   RAMSLCT
0AE  A<>C ALL
2F0   WRITDATA
0B0   C=N ALL
266   C=C-1 S&X
39B   JNC-13d
3E0   RTN

-And the 3rd routine "CARD" takes a random number in R00 to calculate another random number which is stored in R00
and returns a "card",  i-e an integer between 28 & 40 in register X

084   "D"
012   "R"
001   "A"
003   "C"
0A8  WRIT 2(Y)
03C  RCR 3
106   A=C S&X          The lines written in red
130   LDI S&X            check that R00 exist.
1EB  1EBh
306   ?A<C S&X        You might delete them
381   ?NCGO              to save a fraction of a second ... but it's risky if you XEQ "CARD" accidentally.
00A   02E0                  On the other hand, the existence of R42 is checked line 03 of "POKER+".
0A6  A<>C S&X        So R00 does exist too !
270   RAMSLCT
2A0  SETDEC
231   ?NCXQ           xeq
064   198C               R-D
084   CLRF 5
0ED  ?NCXQ           FRC
064   193B
2F0   WRITDATA
10E   A=C ALL
04E   C=0 ALL
270   RAMSLCT
35C  PT=12
050   LD@PT-1
0D0  LD@PT-3
226   C=C+1 S&X
135   ?NCXQ             C=
060   184D                A*C
088   SETF 5
0ED  ?NCXQ           INT
064   193B
10E   A=C ALL
04E   C=0 ALL
35C  PT=12
090   LD@PT-2
210   LD@PT-8
226   C=C+1 S&X
01D  ?NCXQ              C=
060   1807                  A+C
0E8   WRIT 3(X)
3E0   RTN

 STACK INPUTS OUTPUTS Y / x X x N

with  28 <= N <= 40   provided  R00 contains a random seed

b)  "POKER+"

-This program combines "POKER" , "POKER1" and "TXEM" and uses the 3 M-Code routines above.

Data Registers:           •  R00 = n               ( Registers R00 & R41 are to be initialized before executing "POKER+" )

•  R41 = your Cash      R01 thru R40 & R42 thru R48: temp
Flags:  F07-F08-F10

CF 07 & CF 08 = Standard Draw Poker
SF 07 & CF 08 = One-arm Bandit
SF 08 = Texas Hold'em Poker

Subroutines:  TRI  MV  CARD

-Lines 72-129-144-163-204-263-323 are three-byte GTOs
-The append character is denoted  ~

 01  LBL "POKER+"   02  10   03  STO 42              04  27   05  "A"   06  ASTO 40   07  35   08  "K"   09  ASTO 39   10  1.015008   11  STO 43   12  "Q"   13  ASTO 38   14  9   15  "J"   16  ASTO 37   17  "T"   18  ASTO 36   19  "/"   20  LBL 00   21  STO IND Z   22  R^   23  XTOA   24  ASTO IND X    25  RDN   26  DSE T   27  DSE Z   28  DSE X   29  X>Y?   30  GTO 00   31  FS? 08   32  CF 07   33  LBL 01   34  FIX 0   35  CF 29   36  5   37  STO 48   38  FS? 08   39  2   40  STO 06   41  15   42  STO 07   43  27   44  STO 08   45   E3   46  STO 12   47  CHS   48  STO 13   49  " "   50  ASTO 21   51  LBL 02   52  CLA   53  ARCL 21   54  CARD   55  STO IND 07   56  ARCL IND X   57  ASTO 21   58  FS? 07   59  GTO 02   60  CARD   61  STO IND 06   62  LBL 02   63  FS? 08   64  ARCL IND 08   65  AVIEW   66  DSE 08   67  ISG 07   68  CLX   69  DSE 06   70  GTO 02   71  FS? 07   72  GTO 11   73  FC? 08   74  GTO 01   75  SF 10   76  3   77  STO 24   78  RCL 01   79  STO 13   80  RCL 02   81  STO 14   82  CLA   83  ARCL 21   84  ASTO 44   85  CARD   86  STO 17   87  CARD   88  STO 18 89  CARD   90  STO 19    91  "/"   92  ARCL IND 17   93  ARCL IND 18   94  ARCL IND 19   95  ASTO 45   96  " FLOP. . ."   97  AVIEW   98  XEQ 16   99  STO 47            100  XEQ 16 101  STO 46 102  STO 08 103  CLA 104  ARCL 44 105  ARCL 45 106  ARCL 26 107   E6 108  / 109  X^2 110  STO 10 111  CLX 112  GTO 03 113  LBL 01 114  XEQ 09 115  RCL 07 116  X#0? 117  9 118  RCL 06 119  + 120  7 121  X>Y? 122  ST* 10 123  CLX 124  LBL 03 125  AVIEW 126  GETKEY 127  44 128  X=Y? 129  GTO 06 130  X<> Z 131  ST+ 12 132  X<>Y 133  41 134  X=Y? 135  GTO 10 136  LN 137  * 138  X^2 139  RCL 12 140  + 141  RCL 10 142  X<>Y 143  X>Y? 144  GTO 07 145  STO 12 146  X<>Y 147  .4 148  * 149  X 15 218  STO 13 219  RCL 14 220  X<> 16 221  STO 14 222  RCL 47 223  XEQ 18 224  STO 47 225  RCL 46 226  - 227  GTO 07 228  LBL 10 229  CLA 230  ARCL 21 231  RCL 13 232  X<0? 233  GTO 10 234  6 235  "~/" 236  LBL 15 237  1 238  LBL 19 239  RCL IND X 240  ARCL IND X 241  AVIEW 242  COS 243  SIGN 244  + 245  X#Y? 246  GTO 19 247  RCL 22 248  LBL 06 249  RCL 08 250  - 251  LBL 07 252  X#0? 253  SIGN 254  RCL 12 255  * 256  ST+ 41 257  " C=" 258  ARCL 41 259  "~ \$" 260  FIX 4 261  SF 29 262  PROMPT 263  GTO 01 264  LBL 10 265  ARCL 23 266  AVIEW 267  LBL 11 268  CLA 269  LBL 05 270  34 271  GETKEYX 272  X=0? 273  GTO 10 274  XTOA 275  LASTX 276  - 277  CLRGX 278  GTO 05 279  LBL 10 280  ANUM 281  STO 20            282  ALENG 283  ST+ X 284  STO 13 285  20 286  " " 287  15 288  LBL 12 289  RCL IND X 290  X#0? 291  ARCL IND X  292  SIGN 293  + 294  X#Y? 295  GTO 12 296  RCL 06 297  DSE X 298  LOG 299  24 300  + 301  FC? 07 302  ARCL IND X 303  AVIEW 304  XEQ 08 305  FS? 07 306  GTO 07 307  SIGN 308  RCL 00 309  X^2 310  - 311  SQRT 312  ST/ 10 313  PI 314  PI 315  RCL 13 316  - 317  X<0? 318  + 319  RCL 07 320  X 08 357  RCL 07 358  X=0? 359  GTO 07 360  .47 361  * 362  E^X 363  .75 364  * 365  RND 366  STO 12            367  1 368  X#Y? 369  GTO 07 370  37 371  R^ 372  XY? 377  DSE 12  378  LBL 07 379  RCL 00 380  FRC 381  4 382  / 383  8 384  + 385  E^X 386  ST* 12 387  6 388  " " 389  GTO 15 390  LBL 16 391  CLX 392  STO 48 393  MV 394  RCL 13 395  X<> 15 396  STO 13 397  STO 04 398  RCL 14 399  X<> 16 400  STO 14 401  STO 05 402  TRI 403  RCL 48 404  RTN 405  LBL 17 406  STO 48 407  MV 408  RCL 13 409  X<> 15 410  STO 13 411  STO 01 412  RCL 14 413  X<> 16 414  STO 14 415  STO 05 416  TRI 417  MV 418  RCL 14 419  STO 05 420  RCL 13 421  STO 02 422  TRI 423  MV 424  RCL 14 425  STO 05 426  RCL 13 427  STO 03 428  TRI 429  MV 430  RCL 14 431  STO 05 432  TRI 433  MV 434  RCL 13 435  STO 05 436  TRI 437  RCL 48 438  RTN 439  LBL 18 440  STO 48 441  MV 442  RCL 13 443  STO 01 444  RCL 14 445  STO 02 446  TRI 447  MV 448  RCL 13 449  STO 01 450  RCL 14 451  STO 03 452  TRI 453  MV 454  RCL 13            455  STO 01  456  RCL 14 457  STO 04 458  TRI 459  MV 460  RCL 13 461  STO 02 462  RCL 14  463  STO 03 464  TRI 465  MV 466  RCL 13 467  STO 02 468  RCL 14 469  STO 04 470  TRI 471  MV 472  RCL 13 473  STO 03 474  RCL 14 475  STO 04 476  TRI 477  MV 478  RCL 13 479  STO 01 480  TRI 481  MV 482  RCL 13 483  STO 02 484  TRI 485  MV 486  RCL 13 487  STO 03 488  TRI 489  MV 490  RCL 13 491  STO 04 492  TRI 493  MV 494  RCL 14 495  STO 01 496  TRI 497  MV 498  RCL 14 499  STO 02 500  TRI 501  MV 502  RCL 14 503  STO 03 504  TRI 505  MV 506  RCL 14 507  STO 04 508  TRI 509  MV 510  TRI 511  RCL 48 512  RTN 513  LBL 13 514  RCL 06 515  INT 516  RCL 42 517  ST/ 06 518  MOD 519  X#0? 520  CARD 521  X#0? 522  STO IND Y 523  X#0? 524  GTO 13 525  TRI 526  FC? 07 527  STO 08 528  END

( 872 bytes / SIZE 049 )

 STACK INPUTS OUTPUTS X / /

Instructions:

-After displaying your cards, GETKEY is used to place your bet ( draw poker or texas hold'em ):

SIGMA+  corresponds to a bet of about   1668 \$   ..................     LN   corresponds to a bet of about   3103 \$
X<>Y      corresponds to a bet of about   6081 \$   ..................   TAN  corresponds to a bet of about   8619 \$
SHIFT     corresponds to a bet of about  13253 \$  ..................    SST  corresponds to a bet of about  16894 \$

.....................................................................................................................................................................

. / .          corresponds to a bet of about   90480 \$  .................    R/S   corresponds to a bet of about   97307 \$

>>> More exactly, the formula is    Bet = [ ( keycode ) Ln(41) ]2

-There are, however, 2 exceptions:  press ENTER^  to accept the HP41's  raise
and press  the backarrow key if you want to fold.

-Likewise - with CF 08 - when you want to discard some cards, say the cards n° 1 3 5 ( seen from the left ),
simply press  1  3  5  ENTER^  ( not too quickly ) - the program doesn't stop.

-With CF 07  CF 08  ( one-arm bandit ), your bet is randomly evaluated.

Notes:

-The HP-41 does not bluff when playing "Texas Hold'em Poker" i-e  SF 08
-If you want this option,

add for instance    RCL 49   *   after line 190
add    RCL 00    R-D   FRC   STO 00   .12   X>Y?   ST/ 49   after line 110
and add    1   STO 49    after line 33

-With respect to execution time, " RIVER. . ."  is now displayed for 7 or 8 seconds instead of 37s

-It's surely possible to save bytes if you create loops inside LBL 17 & LBL 18,
but this would increase execution time...

c)  1 M-Code Routine:  \$

-This routine combines  TRI & MV  listed in paragraph a)  above according to the content of register X:

If X = 0  "\$"  is equivalent to  TRI
If X < 0  "\$"  ---------------  MV
If X > 0  "\$"  ---------------  TRI + MV

-It saves 1 entry in the FAT and runs slightly faster.

Warning:   This routine checks that the required registers exist but it does not check for alpha data.

0A4  "\$"                       Perhaps a more exotic name like  0A3 "#"  would be better...      (  @FD32  in my ROM  )
03C   RCR 3
106   A=C S&X
130   LDI S&X           The lines written in red
1D0  1D0h                   check that R48 exist.
306   ?A<C S&X        You might delete them
381   ?NCGO              to save a fraction of a second ... but it's risky if you XEQ "\$" accidentally.
00A   02E0                  However, the existence of R48 is already checked line 36 of "POKER" below
0F8   C=X
2FE  ?C<0
361  ?CGO                  GOTO the 2nd part of the routine if X < 0
3FB  FED8                  @FED8 in my ROM.   ->  Change these 2 words according to your own ROM.
104   CLRF 8
2EE  ?C#0
017  JC+02
108  SETF 8
130   LDI S&X
005   005
146   A=A+C S&X
266   C=C-1 S&X
0E6   B<>C S&X
0A6  A<>C S&X
270   RAMSLCT
0A6  A<>C S&X
0E6   B<>C S&X
270   RAMSLCT
0E6   B<>C S&X
2F0   WRITDATA
1A6   A=A-1 S&X
0E6   B<>C S&X
266   C=C-1  S&X
01F   JC+03
0E6   B<>C S&X
39B  JNC -13d
130   LDI S&X
005   005
070   N=C ALL
0EE   B<>C ALL
00E   A=0 ALL
0CE  C=B ALL
266   C=C-1 S&X
057   JC+10d
270   RAMSLCT
0EE   B<>C ALL
31A  ?A<C ALL
3CB  JNC-07
0AE  A<>C ALL
0CE  C=B ALL
158   M=C ALL
3AB  JNC-11d
0B0   C=N ALL
266   C=C-1 S&X
070   N=C ALL
270   RAMSLCT
0AE  A<>C ALL
2F0   WRITDATA
198   C=M ALL
270   RAMSLCT
0AE  A<>C ALL
2F0   WRITDATA
0B0   C=N ALL
2E6   ?C#0 S&X
32F   JC-27d
04E   C=0 ALL
270   RAMSLCT
168   WRIT 5(M)
35C   PT=12
110   LD@PT-4
1A8  WRIT 6(N)
268   WRIT 9(Q)
228   WRIT 8(P)
1E8   WRIT 7(O)
046   C=0 S&X
270   RAMSLCT
158   M=C ALL
10E   A=C ALL
070   N=C ALL
36E   ?A#C ALL
18B   JNC+49d
10E   A=C ALL
36E   ?A#C ALL
15B   JNC+43d
10E   A=C ALL
36E   ?A#C ALL
143   JNC+40d
10E   A=C ALL
36E   ?A#C ALL
1F3   JNC+62d
2A0   SETDEC
10E   A=C ALL
198   C=M ALL
1CE  A=A-C ALL
08E   B=A ALL
04E   C=0 ALL
35C   PT= 12
150    LD@PT-5
1A8   WRIT 6(N)
3CE   RSHFC
30E   ?A<C ALL
187    JC+48d
10E   A=C ALL
198   C=M ALL
1CE  A=A-C ALL
04E   C=0 ALL
19C   PT= 11
0D0   LD@PT-3
158   M=C ALL
36E   ?A#C ALL
087   JC+16d
06E   A<>B ALL
3EE   LSHFA
04E   C=0 ALL
35C   PT= 12
1D0    LD@PT-7
1CE   A=A-C ALL
36E   ?A#C ALL
0D7   JC+26d
1E8   WRIT 7(O)
0D3  JNC+26d
11B  JNC+35d
1D3  JNC+58d
0C3  JNC+24d
10E   A=C ALL
1CE  A=A-C ALL
198   C=M ALL
36E   ?A#C ALL
02F   JC+05
04E   C=0 ALL
35C   PT= 12
050    LD@PT-1
04B   JNC+09
04E   C=0 ALL
35C   PT= 12
050    LD@PT-1
090    LD@PT-2
0D0   LD@PT-3
110   LD@PT-4
130   LDI S&X
003   003
168   M=C ALL
04E   C=0 ALL
1A8  WRIT 6(N)
163   JNC+44d
1AB  JNC+53d
04E   C=0 ALL
35C   PT= 12
050    LD@PT-1
090    LD@PT-2
0D0   LD@PT-3
130   LDI S&X
002   002
0C3  JNC+24d
10E   A=C ALL
36E   ?A#C ALL
1CB  JNC+57d
10E   A=C ALL
36E   ?A#C ALL
02F   JC+05
04E   C=0 ALL
35C   PT= 12
050    LD@PT-1
183   JNC+48d
228   WRIT 8(P)
0AE  A<>C ALL
268   WRIT 9(Q)
04E   C=0 ALL
35C   PT= 12
050    LD@PT-1
110    LD@PT-4
150    LD@PT-5
130    LDI S&X
002    002
1A3   JNC+52d
10E   A=C ALL
36E  ?A#C ALL
047   JC+08
04E   C=0 ALL
35C   PT= 12
050    LD@PT-1
090    LD@PT-2
226    C=C+1 S&X
193    JNC+50d
183    JNC+48d
228    WRIT 8(P)
04E   C=0 ALL
35C   PT= 12
050    LD@PT-1
090    LD@PT-2
150    LD@PT-5
130    LDI S&X
002    002
103    JNC+32d
10E   A=C ALL
36E   ?A#C ALL
1BB  JNC+55d
10E   A=C ALL
36E  ?A#C ALL
193   JNC+50d
10E   A=C ALL
36E  ?A#C ALL
037   JC+06
04E   C=0 ALL
35C   PT= 12
0D0   LD@PT-3
14B   JNC+41d
0C3   JNC+24d
228   WRIT 8(P)
0AE   A<>C ALL
268   WRIT 9(Q)
070   N=C ALL
10E   A=C ALL
04E   C=0 ALL
35C   PT= 12
0D0   LD@PT-3
110    LD@PT-4
150    LD@PT-5
130    LDI S&X
002    002
168    M=C ALL
0AE   A<>C ALL
1E8    WRIT 7(O)
04E   C=0 ALL
35C   PT= 12
050    LD@PT-1
1A8   WRIT 6(N)
153    JNC+42d
123    JNC+36d
1E8   WRIT 7(O)
10E   A=C ALL
36E  ?A#C ALL
02F   JC+05
04E   C=0 ALL
35C   PT= 12
050    LD@PT-1
193    JNC+50d
228   WRIT 8(P)
04E   C=0 ALL
35C   PT= 12
050    LD@PT-1
150    LD@PT-5
226   C=C+1 S&X
0A3   JNC+20d
113    JNC+34d
0C3   JNC+24d
1E8   WRIT 7(O)
10E   A=C ALL
36E   ?A#C ALL
12B   JNC+37d
10E   A=C ALL
228   WRIT 8(P)
36E  ?A#C ALL
183   JNC+48d
0AE  A<>C ALL
268   WRIT 9(Q)
04E   C=0 ALL
35C   PT= 12
110    LD@PT-4
150    LD@PT-5
226    C=C+1 S&X
168    WRIT 5(M)
04E   C=0 ALL
35C   PT= 12
0D0    LD@PT-3
1A8   WRIT 6(N)
11B   JNC+35d
1E8   WRIT 7(O)
10E   A=C ALL
36E  ?A#C ALL
0F3   JNC+30d
268   WRIT 9(Q)
04E   C=0 ALL
35C   PT= 12
150    LD@PT-5
168   WRIT 5(M)
228   WRIT 8(P)
04E   C=0 ALL
35C   PT= 12
090    LD@PT-2
1A8   WRIT 6(N)
093   JNC+18d
063   JNC+12d
04E   C=0 ALL
35C   PT= 12
1D0    LD@PT-7
1A8   WRIT 6(N)
36E  ?A#C ALL
053   JNC+10d
228   WRIT 8(P)
04E   C=0 ALL
35C   PT= 12
150    LD@PT-5
168   WRIT 5(M)
04E   C=0 ALL
35C   PT= 12
190    LD@PT-6
1A8   WRIT 6(N)
260    SETHEX
03C   RCR 3
106   A=C S&X
130   LDI S&X
00B  011d
206   C=A+C S&X
270   RAMSLCT
10E   A=C ALL
0B0   C=N ALL
2F0   WRITDATA
130   LDI S&X
009   009
158   M=C ALL
270   RAMSLCT
0AE  A<>C ALL
266   C=C-1 S&X
270   RAMSLCT
0AE  A<>C ALL
2F0   WRITDATA
198   C=M ALL
266   C=C-1 S&X
3B3   JNC-10d
04E   C=0 ALL
270   RAMSLCT
35C  PT=12
0D0  LD@PT-3                     37 is used to evaluate the poker hands.
1D0  LD@PT-7                     Replace these 2 lines if you prefer another number, but choose at least 16.
226   C=C+1 S&X
2A0  SETDEC
128   WRIT 4(L)
10E   A=C ALL
135   ?NCXQ                    C=
060   184D                       A*C
10E   A=C ALL
01D  ?NCXQ                    C=
060   1807                       A+C
10E   A=C ALL
135   ?NCXQ                    C=
060   184D                       A*C
10E   A=C ALL
01D  ?NCXQ                    C=
060   1807                       A+C
10E   A=C ALL
135   ?NCXQ                    C=
060   184D                       A*C
10E   A=C ALL
01D  ?NCXQ                    C=
060   1807                       A+C
10E   A=C ALL
135   ?NCXQ                    C=
060   184D                       A*C
10E   A=C ALL
0B0   C=N ALL
01D  ?NCXQ                    C=
060   1807                       A+C
10E   A=C ALL
135   ?NCXQ                    C=
060   184D                       A*C
10E   A=C ALL
046   C=0 S&X                 C
270   RAMSLCT               =
01D  ?NCXQ                    C=
060   1807                       A+C
0E8   WRIT 3(X)                                 Here, the combination is evaluated.
070   N=C ALL                                   Then, its value is compared to R48 and the maximum is stored in R48
260   SETHEX
03C   RCR 3
106   A=C S&X
130   LDI S&X
030   048d
206   C=A+C S&X
270   RAMSLCT
0E6   B<>C S&X
10E   A=C ALL
0B0   C=N ALL
306   ?A<C S&X
037   JC+06
0AE  A<>C ALL
306   ?A<C S&X
03F   JC+07
31A   ?A<C M
02F   JC+05
0E6   B<>C S&X
270   RAMSLCT
0B0  C=N ALL
2F0   WRITDATA
04E   C=0 ALL
270   RAMSLCT
10C  ?FSET 8
360   ?C RTN
378    READ 13(c)               @FED8 in my ROM
03C   RCR 3
106   A=C S&X
130   LDI S&X
010   016d
206   C=A+C S&X
0E6   B<>C S&X
130   LDI S&X
004   004
070   N=C ALL
0E6   B<>C S&X
226   C=C+1 S&X
270   RAMSLCT
0E6   B<>C S&X
0AE  A<>C ALL
226   C=C+1 S&X
270   RAMSLCT
0AE  A<>C ALL
2F0   WRITDATA
0B0   C=N ALL
266   C=C-1 S&X
39B   JNC-13d
3E0   RTN                          @FEEF  in my ROM

( 445 words )

d)  "POKER"

-Like "POKER+" this program combines "POKER" , "POKER1" and "TXEM"
-It uses the M-Code routines CARD & \$  listed above.
-Unlike "POKER+", there is also a round of betting before the flop.

Data Registers:           •  R00 = n               ( Registers R00 & R41 are to be initialized before executing "POKER" )

•  R41 = your Cash      R01 thru R40 & R42 thru R50: temp

Flags:  F07-F08-F09-F10

CF 07 & CF 08 = Standard Draw Poker
SF 07 & CF 08 = One-arm Bandit
SF 08 = Texas Hold'em Poker

Subroutines:  \$  CARD

-Lines 77-158-173-192-239-299-359 are three-byte GTOs
-The append character is denoted  >"   ( so that the listing can be use direcly with HP41UC )

 01  LBL "POKER"   02  10   03  STO 42              04  27   05  "A"   06  ASTO 40   07  35   08  "K"   09  ASTO 39   10  1.015008   11  STO 43   12  "Q"   13  ASTO 38   14  9   15  "J"   16  ASTO 37   17  "T"   18  ASTO 36   19  "/"   20  LBL 00   21  STO IND Z   22  R^   23  XTOA   24  ASTO IND X   25  RDN   26  DSE T   27  DSE Z   28  DSE X   29  X>Y?   30  GTO 00   31  FS? 08   32  CF 07   33  CF 09   34  LBL 01   35  CLX   36  STO 50   37  SIGN   38  STO 49   39  FIX 00   40  CF 29   41  5   42  STO 48   43  FS? 08   44  2   45  STO 06   46  15   47  STO 07   48  27   49  STO 08   50   E3   51  STO 12   52  CHS   53  STO 13   54  " "   55  ASTO 21   56  LBL 02   57  CLA   58  ARCL 21   59  CARD   60  STO IND 07   61  ARCL IND X   62  ASTO 21   63  FS? 07   64  GTO 02   65  CARD   66  STO IND 06   67  LBL 02   68  FS? 08   69  ARCL IND 08   70  AVIEW   71  DSE 08   72  ISG 07   73  CLX   74  DSE 06   75  GTO 02   76  FS? 07   77  GTO 11   78  FC? 08   79  GTO 01 80  SF 09   81  RCL 00   82  FRC   83  4 E3   84  STO 08    85  ST* Y   86  ST+ X   87  +   88  STO 10              89  STO 50   90  CLX   91  GTO 14   92  LBL 20   93  SF 10   94  3   95  STO 24   96  RCL 01   97  STO 13   98  RCL 02   99  STO 14 100  CLA 101  ARCL 21 102  ASTO 44 103  CARD 104  STO 17 105  CARD 106  STO 18 107  CARD 108  STO 19 109  "/" 110  ARCL IND 17 111  ARCL IND 18 112  ARCL IND 19 113  ASTO 45 114  " FLOP. . ." 115  AVIEW 116  XEQ 16 117  STO 47 118  XEQ 16 119  STO 46 120  STO 08 121  CLA 122  ARCL 44 123  ARCL 45 124  ARCL 26 125   E6 126  / 127  X^2 128  RCL 50 129  + 130  STO 10 131  SIGN 132  RCL 00 133  R-D 134  FRC 135  STO 00 136  X^2 137  - 138  ST/ 49 139  CLX 140  GTO 03 141  LBL 01 142  XEQ 09 143  RCL 07 144  X#0? 145  9 146  RCL 06 147  + 148  7 149  X>Y? 150  ST* 10 151  CLX 152  LBL 03 153  AVIEW 154  LBL 14 155  GETKEY 156  44 157  X=Y? 158  GTO 06 159  X<> Z 160  ST+ 12 161  X<>Y 162  41 163  X=Y? 164  GTO 10 165  LN 166  * 167  X^2 168  RCL 12            169  + 170  RCL 10 171  X<>Y 172  X>Y? 173  GTO 07 174  STO 12 175  X<>Y 176  3 177  / 178  X 15 253  STO 13 254  RCL 14 255  X<> 16 256  STO 14 257  RCL 47 258  XEQ 18 259  STO 47 260  RCL 46 261  - 262  GTO 07 263  LBL 10 264  CLA 265  ARCL 21 266  RCL 13 267  X<0? 268  GTO 10 269  6 270  >"/" 271  LBL 15 272  1 273  LBL 19 274  RCL IND X 275  ARCL IND X 276  AVIEW 277  COS 278  SIGN 279  + 280  X#Y? 281  GTO 19 282  RCL 22 283  LBL 06 284  RCL 08 285  - 286  LBL 07 287  X#0? 288  SIGN 289  RCL 12 290  * 291  ST+ 41 292  " C=" 293  ARCL 41 294  >" \$" 295  FIX 04 296  SF 29 297  AVIEW 298  STOP 299  GTO 01 300  LBL 10 301  ARCL 23 302  AVIEW 303  LBL 11 304  CLA 305  LBL 05 306  34 307  GETKEYX 308  X=0? 309  GTO 10 310  XTOA 311  LASTX 312  - 313  CLRGX 314  GTO 05 315  LBL 10 316  ANUM 317  STO 20 318  ALENG 319  ST+ X 320  STO 13  321  20 322  " " 323  15 324  LBL 12 325  RCL IND X 326  X#0? 327  ARCL IND X 328  SIGN 329  + 330  X#Y? 331  GTO 12 332  RCL 06            333  DSE X 334  LOG 335  24 336  + 337  FC? 07 338  ARCL IND X 339  AVIEW 340  XEQ 08 341  FS? 07 342  GTO 07 343  SIGN 344  RCL 00 345  X^2 346  - 347  SQRT 348  ST/ 10 349  PI 350  PI 351  RCL 13 352  - 353  X<0? 354  + 355  RCL 07 356  X 08 393  RCL 07 394  X=0? 395  GTO 07 396  .47 397  * 398  E^X 399  .75 400  * 401  RND 402  STO 12  403  1 404  X#Y? 405  GTO 07 406  37 407  R^ 408  XY? 413  DSE 12 414  LBL 07 415  RCL 00            416  FRC 417  4 418  / 419  8 420  + 421  E^X 422  ST* 12 423  6 424  " " 425  GTO 15 426  LBL 16 427  CLX 428  STO 48 429  SIGN 430  CHS 431  \$ 432  RCL 13 433  X<> 15 434  STO 13  435  STO 04 436  RCL 14 437  X<> 16 438  STO 14 439  STO 05 440  CLX 441  \$ 442  RCL 48 443  RTN 444  LBL 17 445  STO 48 446  CHS 447  \$ 448  RCL 13 449  X<> 15 450  STO 13 451  STO 01 452  RCL 14 453  X<> 16 454  STO 14 455  STO 05 456  \$ 457  RCL 14 458  STO 05 459  RCL 13 460  STO 02 461  \$ 462  RCL 14 463  STO 05 464  RCL 13 465  STO 03 466  \$ 467  RCL 14 468  STO 05 469  \$ 470  RCL 13 471  STO 05 472  CLX 473  \$ 474  RCL 48 475  RTN 476  LBL 18 477  STO 48 478  CHS 479  \$ 480  RCL 13  481  STO 01  482  RCL 14 483  STO 02 484  \$ 485  RCL 13 486  STO 01 487  RCL 14 488  STO 03 489  \$ 490  RCL 13 491  STO 01 492  RCL 14 493  STO 04            494  \$ 495  RCL 13  496  STO 02 497  RCL 14 498  STO 03 499  \$ 500  RCL 13 501  STO 02 502  RCL 14 503  STO 04 504  \$ 505  RCL 13 506  STO 03 507  RCL 14 508  STO 04 509  \$ 510  RCL 13 511  STO 01 512  \$ 513  RCL 13  514  STO 02 515  \$ 516  RCL 13 517  STO 03 518  \$ 519  RCL 13 520  STO 04 521  \$ 522  RCL 14 523  STO 01 524  \$ 525  RCL 14 526  STO 02 527  \$ 528  RCL 14 529  STO 03 530  \$ 531  RCL 14 532  STO 04 533  \$ 534  CLX 535  \$ 536  RCL 48 537  RTN 538  LBL 13 539  RCL 06 540  INT 541  RCL 42 542  ST/ 06 543  MOD 544  X#0? 545  CARD 546  X#0? 547  STO IND Y 548  X#0? 549  GTO 13 550  \$ 551  FC? 07 552  STO 08 553  END

( 901 bytes / SIZE 051 )

 STACK INPUTS OUTPUTS X / /

Instructions:

-The instructions are almost identical to "POKER+" listed in paragraph b) except that:

1-Now, the HP-41 can bluff when playing "Texas Hold'em Poker" too ( SF 08 )
2-There is a round of bettings before the "flop"

-The HP-41 bets before the flop are determined by a random number between 8000 and 12000 \$ ( lines 81 to 87 )
-Change these lines according to your preference ( the HP-41 cards are in R01 & R02 at this step )