(41cx) Mancala Board Game (42s, 35s)
05-05-2016, 04:14 AM (This post was last modified: 05-10-2016 10:45 PM by brianddk.)
Post: #1
 brianddk Junior Member Posts: 24 Joined: Apr 2016
(41cx) Mancala Board Game (42s, 35s)
Update Successfully ported to HP-41cx and 35s. See post #26 for more detail.

Download v0.2 Release for 41cx, 42s, and 35s.

Preamble: Although I wrote this on a 42s, It is completely compatible with a 41-CX. The main difference will be that you would have to swap (X<>Y) to see the Player2 display.

This is a mancala program I wrote for the hp42s (Free42). For those not familiar with mancala, its a very achient game that has become repopularized over the last few years in the US. You can now get a mancala board at most stores that sell board games. This particular 'flavor' of mancala kahla(6,4), but it seemed to be the one that is most available in my area. This is a fun game to play, but most mathmatical analysis of possible permutations make this game signifigantly harder for Player 2. Whoever goes first is likely to win.

Download mancala.raw

HP 35s Portable
I had originally planned on writting this for the hp35s. I still intend to port it, so I wrote this, basically, in hp35s syntax. The primary listing is in an '.asm' file that I put through a very gentle pre-processor. This is done to keep all the LBL, XEQ, GTO statements synced up since the 35s and 42s handle them different. I also prefer verbose label names, but that has a tendency of poluting your program catalog with all your 'subroutines'. The pre-processor will take marked-up verbose labels and convert them to 42s local-labels or 35s line-labels. Neither of which will pollute the catalog. I have also choosen to use no named variables for similar reasons. Since I plan to port this to the 35s, I choose to only access registers indirectly. This is the only way that the 35s can access un-named registers, so enforcing this makes the porting a breeze. References to I, (I), J, and (J), are all 35s notation.

Build Process
The build command does the pre-processing with sed. Once this is done, it feeds the result through txt2raw.pl (by Vini Matangrano). This will both check for syntax errors and produce an hp42s raw-file. My only hp42s is the one simulated through Free42, so no promesses, though I'm not really doing anything special here to cause concern.

Registers
Since a real mancala board uses a counter-clockwise rotation in play, I have configured the phisical registers in a similar fashion. This does make gameplay more natural for Player 1 than Player 2.

Code:
 ; R00       - P2 'Home' pit ; R01       - P1 pit #1 ; R02       - P1 pit #2 ; R03       - P1 pit #3 ; R04       - P1 pit #4 ; R05       - P1 pit #5 ; R06       - P1 pit #6 ; R07       - P1 'Home' pit ; R08       - P2 pit #6 ; R09       - P2 pit #5 ; R10       - P2 pit #4 ; R11       - P2 pit #3 ; R12       - P2 pit #2 ; R13       - P2 pit #1 ; R14       - P1 Display Vector ; R15       - P2 Display Vector ; R16       - Virtual 'I' register ; R17       - Vertual 'J' register

Flags
The flags used are fairly self explanitory. Originally, in the 35s design, I had intended on using the flag indicator as the way for Player 1 and Player 2 to know who's turn it was. Since the 42s doesn't have a flag indicator, I had to use GRAD and RAD to make that distinction.

Code:
 ; FLAG1     - Player 1 turn flag ; FLAG2     - Player 2 turn flag ; FLAG3     - Winner found flag ; FLAG4     - Bad 'pick' choice flag

Game Display
The game display will show a number between 1-million and 2-million, for both Player 1 and Player 2. The fractional part is the player's score (0.10 = 10 points). The number in the million'th place is purely for alignment and should be ignored, the other numbers represent your 6 'pits'. The 'pit' to the far left is 'pit 1' the pit to the far right is 'pit 6'. To move, you specify a pit number to move. Note: 41-C users will need to swap (X<>Y) to see the P2 score and pit display.

Code:
 ; Game Display ; ; x: Z,DCB,A98.P2 ; y: Z,123,456.P1 ; ; Where, ;   'Z,'    - Ignore the 'millionth' place, its a place holder, nothing more ;   'P1'    - The score for Player 1 (in the X vector) ;   'P2'    - The score for Player 2 (in the Y vector) ;   '1|D'   - # of beans in 'pit #1' for P1 and P2 ;   '2|C'   - # of beans in 'pit #2' for P1 and P2 ;   '3|B'   - # of beans in 'pit #3' for P1 and P2 ;   '4|A'   - # of beans in 'pit #4' for P1 and P2 ;   '5|9'   - # of beans in 'pit #5' for P1 and P2 ;   '6|8'   - # of beans in 'pit #6' for P1 and P2 ; ; Indicators ;   'GRAD'  - Player1's turn when 'GRAD' is displayed ;   'RAD'   - Player2's turn when 'RAD' is displayed

Gameplay
To start the game, simply XEQ the MANCA program. The game will show the initial board and set the indicator for Player 1 to take his turn. Player 1 can then study the board and pick a pit to move. Thier pick is given by placing the pick in the level 1 (x) on the stack then hit run (aka R/S). The game will then move the beans according to the rules and redisplay the board. It is now time for the next move. The GRAD / RAD indicator will light to instruct the players as to whos turn it is. Keep in mind, earning extra turns is a key strategy of the game.

Bugs
1. Display is base 10, so more than 9 beans in a pit is a problem - For the 35s, I will simply make a modified version of this display in HEX. This will allow 15 beans in a pit, which by most game permutations is unlikely. For the 42s, I will have to do some XTOA commands. This is simple enough, but just a hunk of code I haven't written yet.
2. When a player empties all thier pits, the game should end, but doesn't - This is another simple fix, but something I just haven't done yet.

Listings
Here are the listings, but do recall that you will likely need to understand that pre-processors are the key here.

mancala.asm
Code:
 LBL "MANCA"     ;Main Mancala program         XEQ [INIT]                      ; Init the game registers         LBL [MAIN]                      ; Main game loop             XEQ [CHECK-WINNER]          ; Check for a winner             FS? 3                       ; Flag3 = Winner Found!                 GTO [DONE]              ; Finished when a winner is found             LBL [REDISPLAY]             ; Come here if we pick bad             XEQ [DISPLAY]               ; Display the game board             XEQ [PICK]                  ; Pick a move             FS? 4                       ; Invalid move?                 GTO [REDISPLAY]         ; .. Redisplay             XEQ [MOVE]                  ; Move the beans             XEQ [SWITCH]                ; Swithch players         GTO [MAIN]                      ; Loop for next move         LBL [DONE]                      ; This is where we finish         XEQ [CLEANUP]                   ; Cleanup we are done     RTN     ;     ; .Init registers     LBL [INIT]                          ; Init the game registers         CF 1                            ; Clear our flag regs         CF 2         CF 3         CF 4         13.0                            ; For i in 13..1         STO I                           ; i         4.0                             ; st-x = 4         LBL [INIT-LOOP]             STO (I)                     ; 4->(i)             DSE I                       ; DSE i         GTO [INIT-LOOP]         0.0                             ; i now equals zero         STO (I)                         ; 0->(i), i = 0         7.0         STO I         X<>Y         STO (I)                         ; 0->(i), i = 7         SF 1                            ; P1'S Turn         GRAD                            ; 42s Only, P1 indicator     RTN     ;     ; Check for winner     LBL [CHECK-WINNER]         CF 3                            ; Clear winner found flag         0         STO J                           ; j         7         STO I                           ; i         24.0         RCL (I)                         ; (i)         X>=Y?             GTO [P1-WINNER]         X<>Y         RCL (J)                         ; (j)         X>=Y?             GTO [P2-WINNER]         GTO [WINNER-RTN]         LBL [P1-WINNER]             "Player 1 won!"             GTO [WINNER-DONE]         LBL [P2-WINNER]             "Player 2 won!"         LBL [WINNER-DONE]             SF 3                        ; Set winner found flag             PROMPT         LBL [WINNER-RTN]     RTN     ;     ; Display the board     LBL [DISPLAY]         1.006         STO I                           ; i         14         STO J                           ; "$(j)" == "$(14)"         1000000.0         STO (J)                         ; (j)=1,000,000         LBL [P1-BOARD]             ;STOP             10.0                        ; WARN Base 10 for now             6             RCL I                       ; i             IP             -             Y^X                         ; i^(6-ip(i))             RCL (I)                     ; (i)             x                           ; i^(6-ip(i)) * $(i) STO+ (J) ; @(j) += i^(6-ip(i)) +$(i)             ISG I                       ; i         GTO [P1-BOARD]         15         STO J                           ; j = P2-vector         1000000.0         STO (J)         13.007         STO I         LBL [P2-BOARD]             ;STOP             10.0                        ; WARN Base 10 for now             RCL I             IP             8             -             Y^X             RCL (I)             x             STO+ (J)             DSE I         GTO [P2-BOARD]         14         STO I                           ; i = P1-vector         ;                               ; 42s only code begin         FIX 2         RCL 7                           ; P1 SCORE         100         /         STO+ (I)                        ; P1 VECTOR         RCL 0         100         /         STO+ (J)                        ; P2 VECTOR         ;                               ; 42s only code end         RCL (J)                         ; P2         RCL (I)                         ; P1         STOP     RTN     ;     ; Pick a pit to move     LBL [PICK]         CF 4         IP         1         X<>Y         X<Y?             SF 4         6         X<>Y         X>Y?             SF 4         FS? 4             GTO [PICK-DONE]         STO I                           ; i=PICK         FS? 1             GTO [CHECK-PICK]         14         X<>Y         -         STO I                           ; i         LBL [CHECK-PICK]         RCL (I)                         ; (i)         X=0?             SF 4         LBL [PICK-DONE]         RCL I                           ; i     RTN     ;     ; Move beans from selected pit     LBL [MOVE]         0         X<> (I)                         ; (i)= 0 (MOVE BEANS OUT)         STO J                           ; j=VALUE PREVIOUSLY IN (i)         LBL [MOVE-LOOP]             ; INCI SUBROUTINE-INLINE             1.0             RCL+ I                      ; i++ (MOVE REGISTER FORWARD)             14.0             MOD             STO I                       ; i=(i+1)MOD(14)             FS? 1                       ; P1?                 XEQ [SKIP0]             ; SKIP0 IF P1             FS? 2                 XEQ [SKIP7]             ; SKIP7 IF P2             ; INCI END-SUBROUTINE-INLINE             1.0             STO+ (I)                    ; (i)=(i)+1             DSE J                       ; j--         GTO [MOVE-LOOP]         1.0         RCL (I)         X=Y?             XEQ [WIN-BEANS]     RTN     ;     ; SKIP0     LBL [SKIP0]         X=0?             ISG I         CF 0                            ; NOP     RTN     ;     ; SKIP7     LBL [SKIP7]         7         X<>Y         X=Y?             ISG I         CF 0                            ; NOP     RTN     ;     ; WIN-BEANS     LBL [WIN-BEANS]         ;STOP         7         RCL I         FS? 1             GTO [P1-WINBEANS]         FS? 2             GTO [P2-WINBEANS]         RTN         LBL [P1-WINBEANS]             7.0             STO J             Rv             X>=Y?                 RTN             GTO [DONE-WINBEANS]         LBL [P2-WINBEANS]             0.0             STO J             Rv             X<=Y?                 RTN         LBL [DONE-WINBEANS]         14.0         X<>Y         -         STO I         0         X<> (I)         STO+ (J)     RTN     ;     ; Switch to other players turn     LBL [SWITCH]         7         RCL I                           ; i contains the final register of move         X=Y?                            ; if i=7, landed in a bank, free move             RTN         X=0?                            ; if i=0, landed in a bank, free move             RTN         FS? 1         GTO [SWITCHTO-P2]             CF 2             SF 1             GRAD             GTO [SWITCH-DONE]         LBL [SWITCHTO-P2]             CF 1             SF 2             RAD         LBL [SWITCH-DONE]     RTN     ;     ; Clean up after game     LBL [CLEANUP]         CF 1         CF 2         CF 3         CF 4         FIX 4         DEG     RTN END

build.sh
Code:
 #!/bin/env bash get-label() {     grep 'LBL $' 1 | awk '{print 2}' | sort | uniq | sed -s 's/\[//g;s/$//g' } make-sed() {     local ivar=16     local jvar=17     local i     echo "s/^\s\+;.*//g"     echo "s/\s(I)/ IND $ivar/g" echo "s/\s(J)/ IND$jvar/g"     echo "s/\<I\>/$ivar/g" echo "s/\<J\>/$jvar/g"     echo "/^\s*$/d" echo "/^\s*;.*$/d"     while read line     do         i=$((i+1)) echo "s/$$$line$$$/$i\t;\1/g"     done } show-list() {     sed -f /dev/stdin $1 } get-label$1 | make-sed | show-list $1 >$1.txt perl txt2raw.pl \$1.txt

mancala.txt
Code:
 00 { 476-Byte Prgm }  40 CF 03            80 STO+ IND 17   120 X<>Y         160 GTO 11      200 14 01>LBL "MANCA"        41 0                81 ISG 16        121 X<Y?         161 1           201 X<>Y 02 XEQ 07             42 STO 17           82 GTO 12        122 SF 04        162 RCL IND 16  202 - 03>LBL 09             43 7                83 15            123 6            163 X=Y?        203 STO 16 04 XEQ 02             44 STO 16           84 STO 17        124 X<>Y         164 XEQ 26      204 0 05 FS? 03             45 24               85 1E6           125 X>Y?         165 RTN         205 X<> IND 16 06 GTO 05             46 RCL IND 16       86 STO IND 17    126 SF 04        166>LBL 21      206 STO+ IND 17 07>LBL 20             47 X>=Y?            87 13.007        127 FS? 04       167 X=0?        207 RTN 08 XEQ 04             48 GTO 14           88 STO 16        128 GTO 19       168 ISG 16      208>LBL 23 09 XEQ 18             49 X<>Y             89>LBL 15        129 STO 16       169 CF 00       209 7 10 FS? 04             50 RCL IND 17       90 10            130 FS? 01       170 RTN         210 RCL 16 11 GTO 20             51 X>=Y?            91 RCL 16        131 GTO 01       171>LBL 22      211 X=Y? 12 XEQ 10             52 GTO 17           92 IP            132 14           172 7           212 RTN 13 XEQ 23             53 GTO 28           93 8             133 X<>Y         173 X<>Y        213 X=0? 14 GTO 09             54>LBL 14           94 -             134 -            174 X=Y?        214 RTN 15>LBL 05             55 "Player 1 won!"  95 Y^X           135 STO 16       175 ISG 16      215 FS? 01 16 XEQ 03             56 GTO 27           96 RCL IND 16    136>LBL 01       176 CF 00       216 GTO 25 17 RTN                57>LBL 17           97 О             137 RCL IND 16   177 RTN         217 CF 02 18>LBL 07             58 "Player 2 won!"  98 STO+ IND 17   138 X=0?         178>LBL 26      218 SF 01 19 CF 01              59>LBL 27           99 DSE 16        139 SF 04        179 7           219 GRAD 20 CF 02              60 SF 03            100 GTO 15       140>LBL 19       180 RCL 16      220 GTO 24 21 CF 03              61 PROMPT           101 14           141 RCL 16       181 FS? 01      221>LBL 25 22 CF 04              62>LBL 28           102 STO 16       142 RTN          182 GTO 13      222 CF 01 23 13                 63 RTN              103 FIX 02       143>LBL 10       183 FS? 02      223 SF 02 24 STO 16             64>LBL 04           104 RCL 07       144 0            184 GTO 16      224 RAD 25 4                  65 1.006            105 100          145 X<> IND 16   185 RTN         225>LBL 24 26>LBL 08             66 STO 16           106 э            146 STO 17       186>LBL 13      226 RTN 27 STO IND 16         67 14               107 STO+ IND 16  147>LBL 11       187 7           227>LBL 03 28 DSE 16             68 STO 17           108 RCL 00       148 1            188 STO 17      228 CF 01 29 GTO 08             69 1E6              109 100          149 RCL+ 16      189 Rv          229 CF 02 30 0                  70 STO IND 17       110 э            150 14           190 X>=Y?       230 CF 03 31 STO IND 16         71>LBL 12           111 STO+ IND 17  151 MOD          191 RTN         231 CF 04 32 7                  72 10               112 RCL IND 17   152 STO 16       192 GTO 06      232 FIX 04 33 STO 16             73 6                113 RCL IND 16   153 FS? 01       193>LBL 16      233 DEG 34 X<>Y               74 RCL 16           114 STOP         154 XEQ 21       194 0           234 RTN 35 STO IND 16         75 IP               115 RTN          155 FS? 02       195 STO 17      235 END 36 SF 01              76 -                116>LBL 18       156 XEQ 22       196 Rv 37 GRAD               77 Y^X              117 CF 04        157 1            197 X<=Y? 38 RTN                78 RCL IND 16       118 IP           158 STO+ IND 16  198 RTN 39>LBL 02             79 О                119 1            159 DSE 17       199>LBL 06

Download mancala.raw

Official site:
http://brianddk.github.io/2016/05/hp-42s-mancala/

Update: Fixed broken links

MyCalcs: Physical: {hp48gx, hp50g, hp35s} Emu: {hp42s(Free42), hp41c(v41)}
Blog: https://brianddk.github.io/
05-05-2016, 11:23 PM (This post was last modified: 05-06-2016 10:49 PM by brianddk.)
Post: #2
 brianddk Junior Member Posts: 24 Joined: Apr 2016
RE: (42s) Mancala Board Game
Got my 'compiler' to produce compliant hp-35s listings now. I just need to go through the process of keying them in. So 'untested' on the 35s at this point.

Obviously, you don't key in the ;LBL statements. I left them in to ease reading.

Download

Update: Fixed broken link

MyCalcs: Physical: {hp48gx, hp50g, hp35s} Emu: {hp42s(Free42), hp41c(v41)}
Blog: https://brianddk.github.io/
05-06-2016, 09:51 PM
Post: #3
 Dieter Senior Member Posts: 2,397 Joined: Dec 2013
RE: (42s) Mancala Board Game
(05-05-2016 11:23 PM)brianddk Wrote:  Got my 'compiler' to produce compliant hp-35s listings now. I just need to go through the process of keying them in. So 'untested' on the 35s at this point.

Obviously, you don't key in the ;LBL statements. I left them in to ease reading.

Download

In both cases (first and second link posted): 404 – Page not found

BTW, what about an .ep file for the 35s emulator ?-)

Dieter
05-06-2016, 10:45 PM
Post: #4
 brianddk Junior Member Posts: 24 Joined: Apr 2016
RE: (42s) Mancala Board Game
(05-06-2016 09:51 PM)Dieter Wrote:  In both cases (first and second link posted): 404 – Page not found

Opps... I moved some files around and now I realize the link was not static.

Try this instead, it's static and will never 404. I will warn you that I found some bugs so that 35s listing is 'tainted' until I can finish my revisions. Here is a current copy link, but the current-copy-link isn't static, and may 404 in the future.

(05-06-2016 09:51 PM)Dieter Wrote:  BTW, what about an .ep file for the 35s emulator ?-)

Emulator?!?! Do tell me more...

While your at it, anyone have an hp-41c compiler? I found some 41c emulators, but I haven't found one yet that will consume a text file and import it into the 41c VM's program memory.

MyCalcs: Physical: {hp48gx, hp50g, hp35s} Emu: {hp42s(Free42), hp41c(v41)}
Blog: https://brianddk.github.io/
05-07-2016, 07:37 AM (This post was last modified: 05-07-2016 09:15 AM by Dieter.)
Post: #5
 Dieter Senior Member Posts: 2,397 Joined: Dec 2013
RE: (42s) Mancala Board Game
(05-06-2016 10:45 PM)brianddk Wrote:  Try this instead, it's static and will never 404. I will warn you that I found some bugs so that 35s listing is 'tainted' until I can finish my revisions. Here is a current copy link, but the current-copy-link isn't static, and may 404 in the future.

OK, thank you.

After a short look at the code I wonder why some integer constants carry trailing zeroes (e.g. 4.0, 0.0, 6.0 ...). And what about an optimized more effective (shorter and faster) version ?-)

BTW, I am missing the rules of the game and an example of a session. What's the highest possible score a player can achieve?

(05-06-2016 10:45 PM)brianddk Wrote:  Emulator?!?! Do tell me more...

There is a "HP35s virtual calculator" by HP. AFAIK it comes with the real thing on CD. Since I already bought my 35s in 2007 (with the printed manual, but without a CD) I downloaded the emulator some years ago from the HP website.

Edit: I didn't find it on the HP website. Did they change their policy? However, I am quite sure it is still available somewhere. Try Google.

And finally:

(05-06-2016 10:45 PM)brianddk Wrote:  While your at it, anyone have an hp-41c compiler? I found some 41c emulators, but I haven't found one yet that will consume a text file and import it into the 41c VM's program memory.

I am not sure what exactly you are looking for. You know hp41uc, don't you? It's here (and possibly a newer version somewhere else). I use it here and there with the V41 emulator to generate program listings, but it can do much more.

Dieter
05-07-2016, 07:26 PM
Post: #6
 brianddk Junior Member Posts: 24 Joined: Apr 2016
RE: (42s) Mancala Board Game
(05-07-2016 07:37 AM)Dieter Wrote:  After a short look at the code I wonder why some integer constants carry trailing zeroes (e.g. 4.0, 0.0, 6.0 ...). And what about an optimized more effective (shorter and faster) version ?-)

Apologies, brainwashing of a former python programmer. It also helped to fool the parsers. txt2raw.pl, as well as build.sh will sometimes treat the first number on a line as "special". I eventually added auto generated sequence numbers removing the need for this parser hack. Other than making the numbers shorter, I would appreciate any suggestions on changing how I loop to reduce bloat. Of course I could make every variable named and dispense with the indirect access charade, but that would make porting to 35s more error prone. That's why I left that particular piece of bloat in, though it is confusing.

(05-07-2016 07:37 AM)Dieter Wrote:  BTW, I am missing the rules of the game and an example of a session. What's the highest possible score a player can achieve?

Others do a much better job of explaining the game than I do. This is Mancala(US) so that generally means Khala(6,4) in other parts of the world.

The board has four edges, North, South, East, West. Player 1 and Player 2 face each other with the board in the middle. P1 to the south, P2 to the north. Movements are counter clockwise (player moves pieces to the right). The board is laid out with 6 pits on the north, 6 on the south, and a capture pit on the east for P1, and on the west for P2. The game starts with 4 beans in each pit (north and south), and P1 moves first. To move, take all the beans from a pit on your side and "sow" them into the pits to the right. One in each pit wrapping around the board as needed. You are allowed to place a pit in your capture as you wrap around, but are also allowed to skip your opponents capture pit if you have a move that large. You capture beans by wrapping around your pit, and by capturing your opponents. To capture your opponents beans, you need to complete a move where the final pit you move into ends with exactly one seed. The you capture all beans opposite of that pit. First player to 24 wins, though some versions force you to keep playing. Its unlikely to ever win if your opponent reaches 24.

Much better explanations here.
https://en.wikipedia.org/wiki/Mancala

The Kalah page mentiones a mathmatical study of the game my Mark Rawlings that would likely be of more interest, though I can't find where the study was published.
https://en.wikipedia.org/wiki/Kalah

(05-07-2016 07:37 AM)Dieter Wrote:  There is a "HP35s virtual calculator" by HP. AFAIK it comes with the real thing on CD. Since I already bought my 35s in 2007 (with the printed manual, but without a CD) I downloaded the emulator some years ago from the HP website.

OK... so I checked the CD that came with it last month... Nothing but PDFs. Turns out reading a CD is harder than I thought. Don't have one in any of my primary machines anymore. Found an old Vista laptop for the task eventually. I found another article mentioning that the SW is available with proof-of-purchase, but didn't find where to get it. Contacted support and they agreed, but hung up before they could send me the link.

I did eventually find an "Educators" page where you can request teaching material (including emulators), but I don't know that I qualify. I sent my syllabus / lesson-plan for the computer class I teach, but it's not really in the same realm as Calculus III. Might be interesting to add a section on low-level programming. The RPN 'language' has some similarities to assembler and microcode that would be fun to present.

(05-07-2016 07:37 AM)Dieter Wrote:  I am not sure what exactly you are looking for. You know hp41uc, don't you? It's here (and possibly a newer version somewhere else). I use it here and there with the V41 emulator to generate program listings, but it can do much more.

I'm looking for something that will convert:
Code:
LBL "HHGTTG" 42 RTN
... into something that can be executed on some 41c emulator/simulator. Basically a way to take a text file of instructions and see if it would likely execute on a 41 as expected.

Looks like hp41uc.exe does TXT to RAW and looks like V41R8.exe can import and execute RAW files. So these two should work for me. Didn't find them earlier, so thanks for the suggestions.

MyCalcs: Physical: {hp48gx, hp50g, hp35s} Emu: {hp42s(Free42), hp41c(v41)}
Blog: https://brianddk.github.io/
05-07-2016, 07:42 PM
Post: #7
 Didier Lachieze Senior Member Posts: 1,365 Joined: Dec 2013
RE: (42s) Mancala Board Game
(05-07-2016 07:37 AM)Dieter Wrote:
(05-07-2016 07:26 PM)brianddk Wrote:  Emulator?!?! Do tell me more...
There is a "HP35s virtual calculator" by HP. AFAIK it comes with the real thing on CD. Since I already bought my 35s in 2007 (with the printed manual, but without a CD) I downloaded the emulator some years ago from the HP website.

Edit: I didn't find it on the HP website. Did they change their policy? However, I am quite sure it is still available somewhere. Try Google.

You can find a collection of hp emulators here.
05-07-2016, 08:50 PM
Post: #8
 brianddk Junior Member Posts: 24 Joined: Apr 2016
RE: (42s) Mancala Board Game
(05-07-2016 07:42 PM)Didier Lachieze Wrote:  You can find a collection of hp emulators here.

I did find a few third-party sites, torrents, and megaupload links, but was a bit hesitant to install an usigned binary from a source I couldn't vet. I know HP used to sign some of there binaries with a Authenticode certificate a few years back, but it was eventually revoked. I'll see if I can dig it up and put the bins to the test.

Is that your site? Do you know the staff?

Thx

MyCalcs: Physical: {hp48gx, hp50g, hp35s} Emu: {hp42s(Free42), hp41c(v41)}
Blog: https://brianddk.github.io/
05-07-2016, 09:15 PM
Post: #9
 Didier Lachieze Senior Member Posts: 1,365 Joined: Dec 2013
RE: (42s) Mancala Board Game
(05-07-2016 08:50 PM)brianddk Wrote:  Is that your site? Do you know the staff?

It's not my site, it's the site of the French distributor for the HP calculators.
05-08-2016, 05:44 AM
Post: #10
 brianddk Junior Member Posts: 24 Joined: Apr 2016
RE: (42s) Mancala Board Game
(05-07-2016 09:15 PM)Didier Lachieze Wrote:  It's not my site, it's the site of the French distributor for the HP calculators.
Looks legit. The EXE in the ZIP is signed by one of the valid (not revoked) HP certificates. The MSI inside the EXE (inside the zip) is not. But certainly better than nothing.

I took the leap... Thx for the links. Wish I could import a text file, but keyboard is still better than nothing.

MyCalcs: Physical: {hp48gx, hp50g, hp35s} Emu: {hp42s(Free42), hp41c(v41)}
Blog: https://brianddk.github.io/
05-09-2016, 07:07 AM
Post: #11
 Ángel Martin Senior Member Posts: 1,251 Joined: Dec 2013
RE: (42s) Mancala Board Game
FWIW, I've made the needed changes for an HP41-compatible version of this game - see attached.

I've also included this and the GALAXIS program in a new games module I'm sort of putting together, more to follow.

Cheers,
ÁM
05-09-2016, 08:11 AM
Post: #12
 Dieter Senior Member Posts: 2,397 Joined: Dec 2013
RE: (42s) Mancala Board Game
(05-09-2016 07:07 AM)Ángel Martin Wrote:  FWIW, I've made the needed changes for an HP41-compatible version of this game - see attached.

I do not see any attachment. #-)

(05-09-2016 07:07 AM)Ángel Martin Wrote:  I've also included this and the GALAXIS program in a new games module I'm sort of putting together, more to follow.

What about the Kalah / Wari version in the Games Solutions Book? The rules are slightly different, but this version offers the option that the user plays against the machine.

Dieter
05-09-2016, 10:34 AM
Post: #13
 Ángel Martin Senior Member Posts: 1,251 Joined: Dec 2013
RE: (42s) Mancala Board Game
(05-09-2016 08:11 AM)Dieter Wrote:
(05-09-2016 07:07 AM)Ángel Martin Wrote:  FWIW, I've made the needed changes for an HP41-compatible version of this game - see attached.

I do not see any attachment. #-)

(05-09-2016 07:07 AM)Ángel Martin Wrote:  I've also included this and the GALAXIS program in a new games module I'm sort of putting together, more to follow.

What about the Kalah / Wari version in the Games Solutions Book? The rules are slightly different, but this version offers the option that the user plays against the machine.

Dieter

Having issues with the attachments, will do this afternoon.

That game is already included in the FUNSTUFF module, available at TOS.
05-09-2016, 11:12 AM
Post: #14
 brianddk Junior Member Posts: 24 Joined: Apr 2016
RE: (42s) Mancala Board Game
(05-09-2016 07:07 AM)Ángel Martin Wrote:  FWIW, I've made the needed changes for an HP41-compatible version of this game

Wow, thanks... This is still a pretty rough. I'm planning on adding HP-41 to my 'sed' list based on the hp41uc syntax rules. When I'm done, I will hopefully have mancala-hp41c.raw, mancala-hp42s.raw, and mancala-hp35s.ep all building from the same source (well maybe not the EP file). If anyone knows of a way to produce a hp35s.raw file, or a way to build an EP file from 'source', I'd love to know.

I'll post updates to github and this thread as I make them... but this is still a Sunday afternoon project, so updates might be slow.

(05-09-2016 08:11 AM)Dieter Wrote:  What about the Kalah / Wari version in the Games Solutions Book? The rules are slightly different, but this version offers the option that the user plays against the machine.

LOL... I genuinely had no idea this had already been written. Seemed like an obvious choice for a calculator game though. The Kalah game is likely the same game.

(05-09-2016 10:34 AM)Ángel Martin Wrote:  That game is already included in the FUNSTUFF module, available at TOS.

For the newbies here... what or where is TOS?

MyCalcs: Physical: {hp48gx, hp50g, hp35s} Emu: {hp42s(Free42), hp41c(v41)}
Blog: https://brianddk.github.io/
05-09-2016, 12:31 PM
Post: #15
 Massimo Gnerucci Senior Member Posts: 2,328 Joined: Dec 2013
RE: (42s) Mancala Board Game
(05-09-2016 11:12 AM)brianddk Wrote:  For the newbies here... what or where is TOS?

Just one of many threads about this.

Greetings,
Massimo

-+×÷ ↔ left is right and right is wrong
05-09-2016, 01:38 PM
Post: #16
 brianddk Junior Member Posts: 24 Joined: Apr 2016
RE: (42s) Mancala Board Game
(05-09-2016 08:11 AM)Dieter Wrote:  What about the Kalah / Wari version in the Games Solutions Book? The rules are slightly different, but this version offers the option that the user plays against the machine.

OK.. did some reading, and the mancala variant in the Game Solution Book titled "Wari" is traditionally refereed to as "Oware". The mancala variant that I call "mancala" is traditionally referred to "Kalah(6,4)". Both Mancala, variants, with one popular in West Africa and the Caribbean, and the other popular in the US and Europe.

MyCalcs: Physical: {hp48gx, hp50g, hp35s} Emu: {hp42s(Free42), hp41c(v41)}
Blog: https://brianddk.github.io/
05-09-2016, 02:38 PM (This post was last modified: 09-08-2016 12:49 PM by Ángel Martin.)
Post: #17
 Ángel Martin Senior Member Posts: 1,251 Joined: Dec 2013
RE: (42s) Mancala Board Game
(05-09-2016 01:38 PM)brianddk Wrote:
(05-09-2016 08:11 AM)Dieter Wrote:  What about the Kalah / Wari version in the Games Solutions Book? The rules are slightly different, but this version offers the option that the user plays against the machine.

OK.. did some reading, and the mancala variant in the Game Solution Book titled "Wari" is traditionally refereed to as "Oware". The mancala variant that I call "mancala" is traditionally referred to "Kalah(6,4)". Both Mancala, variants, with one popular in West Africa and the Caribbean, and the other popular in the US and Europe.

Thanks, that helps keep tabs with all the versions.
I'll post the 41-based raw file this evening CET.

Edited:- RAW file is now posted. I used the HP-42 version as source, so this may be a bit iffy - pls. report on errors if you find some. This version should be 100% compatible with V41, no other modules required.

Cheers,
ÁM
05-10-2016, 06:14 AM (This post was last modified: 05-10-2016 10:48 PM by brianddk.)
Post: #18
 brianddk Junior Member Posts: 24 Joined: Apr 2016
RE: (41cx) Mancala Board Game (42s, 35s)
Update Successfully ported to HP-41cx and 35s. See post #26 for more detail.

Download v0.2 Release for 41cx, 42s, and 35s.

OK... I made my first successful run at a 41cx compilation. I had to use dosbox, but I suppose that is the prescribed method for hp41uc. If there are other 'compilers' anyone wants me to try let me know.

Light Testing
Light testing using hp41uc (through dosbox) and v41r8.exe as the emulator. Honestly, my impressions are that is likely too slow to realistically play through the simulator. Real HW might be faster. Especially modern HW like DM41L, but I'll have to hear more to know for sure.

Testing was very light. Let me know what you find.

Please read the ASM source file as most the 'Readme' contents are there.

Bugs:
• Display is base 10, so more than 9 beans in a pit is a problem.
• When a player empties all thier pits the game is supposed to end... it doesn't
• First to 24 wins, though it should catch ties... it doesn't
• Found a bug in the compiler (hp41uc), but worked around it.

MyCalcs: Physical: {hp48gx, hp50g, hp35s} Emu: {hp42s(Free42), hp41c(v41)}
Blog: https://brianddk.github.io/
05-10-2016, 08:03 AM
Post: #19
 Massimo Gnerucci Senior Member Posts: 2,328 Joined: Dec 2013
RE: (41cx) Mancala Board Game
(05-10-2016 06:14 AM)brianddk Wrote:  Light testing using hp41uc (through dosbox) and v41r8.exe as the emulator. Honestly, my impressions are that is likely too slow to realistically play through the simulator. Real HW might be faster. Especially modern HW like DM41L, but I'll have to hear more to know for sure.

What speed did you set in V41 (Options / More Settings...)?

Greetings,
Massimo

-+×÷ ↔ left is right and right is wrong
05-10-2016, 01:27 PM
Post: #20
 brianddk Junior Member Posts: 24 Joined: Apr 2016
RE: (41cx) Mancala Board Game
(05-10-2016 08:03 AM)Massimo Gnerucci Wrote:  What speed did you set in V41 (Options / More Settings...)?
Cranked up full, yes, that helped alot, but couldn't figure out how to use 'Turbo'-tab.

MyCalcs: Physical: {hp48gx, hp50g, hp35s} Emu: {hp42s(Free42), hp41c(v41)}
Blog: https://brianddk.github.io/
 « Next Oldest | Next Newest »

User(s) browsing this thread: 1 Guest(s)