Leon Brocard sent the following bits through the ether: > Now to get the hand of the signatures...
Ah, well, I gave up on SDL as it was a little complicated. Instead, I played with curses. Please find attached a cute little curses life program loading and calling curses at runtime with dlfunc. Oh, and I made the shape a small spaceship as it's more interesting. [It's a bit of the pain the way it stomps over registers all the time, though ;-] Leon -- Leon Brocard.............................http://www.astray.com/ scribot.................................http://www.scribot.com/ .... 43rd Law of Computing: Anything that can go wr...
# # life.pasm # # Play conway's (no, not *him*. The other conway) game # of life # # Hacked by Leon Brocard <[EMAIL PROTECTED]> to use curses loadlib P1, "libcurses.so" dlfunc P0, P1, "initscr", "i" invoke dlfunc P0, P1, "curs_set", "ii" set I5, 0 invoke # First the generation count set I2, 5000 # Note the time time N5 # If true, we don't print set I12, 0 set S0, " " set S1, " " set S2, " " set S3, " " set S4, " ** " set S5, " * * " set S6, " * " set S7, " * * " set S8, " ****** " set S9, " " set S10, " " set S11, " " set S12, " " set S13, " " set S14, " " set S15, "" concat S15, S0 concat S15, S1 concat S15, S2 concat S15, S3 concat S15, S4 concat S15, S5 concat S15, S6 concat S15, S7 concat S15, S8 concat S15, S9 concat S15, S10 concat S15, S11 concat S15, S12 concat S15, S13 concat S15, S14 bsr dump set I0, 0 loop: ge I0, I2, getout inc I0 mod I31,I0,100 if I31, skip skip: bsr generate bsr dump branch loop getout: dlfunc P0, P1, "curs_set", "ii" set I5, 1 invoke dlfunc P0, P1, "endwin", "i" invoke end # S15 has the incoming string, S0 is scratch, S1 is scratch, S2 is scratch # # I0 is the length of the string # I1 is the current cell we're checking # I2 is the count for that cell # I3 is the offset to the neighbor generate: pushi length I0, S15 set S1, "" set I1, 0 genloop: set I2, 0 NW: set I3, -16 add I3, I3, I0 add I3, I3, I1 mod I3, I3, I0 substr S0, S15, I3, 1 ne S0, "*", North inc I2 North: set I3, -15 add I3, I3, I0 add I3, I3, I1 mod I3, I3, I0 substr S0, S15, I3, 1 ne S0, "*", NE inc I2 NE: set I3, -14 add I3, I3, I0 add I3, I3, I1 mod I3, I3, I0 substr S0, S15, I3, 1 ne S0, "*", West inc I2 West: set I3, -1 add I3, I3, I0 add I3, I3, I1 mod I3, I3, I0 substr S0, S15, I3, 1 ne S0, "*", East inc I2 East: set I3, 1 add I3, I3, I0 add I3, I3, I1 mod I3, I3, I0 substr S0, S15, I3, 1 ne S0, "*", SW inc I2 SW: set I3, 14 add I3, I3, I0 add I3, I3, I1 mod I3, I3, I0 substr S0, S15, I3, 1 ne S0, "*", South inc I2 South: set I3, 15 add I3, I3, I0 add I3, I3, I1 mod I3, I3, I0 substr S0, S15, I3, 1 ne S0, "*", SE inc I2 SE: set I3, 16 add I3, I3, I0 add I3, I3, I1 mod I3, I3, I0 substr S0, S15, I3, 1 ne S0, "*", check inc I2 check: substr S0, S15, I1, 1 eq S0, "*", check_alive # If eq 3, put a star in else a space check_dead: eq I2, 3, star branch space check_alive: lt I2, 2, space gt I2, 3, space branch star space: concat S1, " " branch iter_done star: concat S1, "*" iter_done: inc I1 lt I1, I0, genloop done: set S15, S1 popi ret # S15 has the incoming string, S0 is scratch dump: saveall dlfunc P0, P1, "move", "iii" set I5, 0 set I6, 0 invoke restoreall if I12, dumpend save I0 save I1 saveall save I0 dlfunc P0, P1, "addstr", "it" set S5, "Generation: " invoke restore I0 dlfunc P0, P1, "addstr", "it" set S5, I0 invoke dlfunc P0, P1, "refresh", "i" invoke restoreall set I0, 0 set I1, 14 printloop: substr S0, S15, I0, 15 saveall dlfunc P0, P1, "addstr", "it" set S5, S0 invoke dlfunc P0, P1, "addstr", "it" set S5, "\n" invoke restoreall add I0, I0, 15 dec I1 ge I1, 0 printloop restore I1 restore I0 sleep 1 dumpend: ret