; ------------------------------------------------------------------ RAM ; The work area: $1900 bytes from WORK, which the includer sets (a page ; boundary). WORK+$400 to +$7ff is free for the caller. W equ WORK+$0000 ; the move generator's board ROOT equ WORK+$0040 ; the position to play from ROOT2 equ WORK+$0080 ; the opponent's position, replying CAND equ WORK+$00c0 ; a candidate play's position PA equ WORK+$0100 ; a position being scored: PA on roll PB equ WORK+$0120 RESULT equ WORK+$0140 ; the chosen play's position STEPS equ WORK+$0200 ; per step of the play being generated: point, hit GDIE equ WORK+$0210 ; the die of each step KEY equ WORK+$0220 ; a play's hash NEWKEY equ WORK+$0230 ; a play for a list: key (5), steps (8) NEWSTEPS equ NEWKEY+5 WINSTEPS equ WORK+$0240 ; a play bearing off the last checker VARS equ WORK+$0280 ; single variables (below) HSTAMP equ WORK+$1800 ; plays of a non-double generated: a stamp, then ; their hash's 4 bytes a page each RTAB equ WORK+$0800 ; hash values: 51 of 4 bytes NST equ WORK+$0340 ; PA/PB's inputs beyond the points (as a base's) FEAT equ WORK+$0350 ; PA/PB's gnubg features (at a base's offset) ECACHE equ WORK+$03a0 ; each half's points held, and escapes from them SUMS equ WORK+$0900 ; a net's first-layer sums (lo, hi) RB_FILTER equ WORK+$0a00 ; the nets' bases, a page each RB_RACE equ WORK+$0b00 RB_REPLY equ WORK+$0c00 RB_CONTACT equ WORK+$0d00 SIDEX equ WORK+$1210 ; features: the side, with zeros around SIDEY equ WORK+$1250 ; and its opponent BX equ WORK+$1290 ; their points held (two or more), 0 or 1 BY equ WORK+$12d0 SHOTP equ WORK+$1300 ; shots: page of TB equ WORK+$1300 ; blots to hit, by the hitter's index EL equ WORK+$1340 ; points that may hit YB equ WORK+$1380 ; opponent's points held, by the hitter's index DK equ WORK+$13c0 ; direct shot per die: the highest hitter DM equ WORK+$13c8 ; and how many hit (1, 2) TOP12 equ WORK+$1400 ; lists of plays: count, capacity, then 16 each TOP2 equ WORK+$1500 TOP5 equ WORK+$1600 TOP1 equ WORK+$1700 WORKEND equ WORK+$1900 ; the end of what init clears WORKTOP equ WORK+$1d00 ; the end of all the engine uses (HSTAMP's pages) ; Variables. GROOT equ VARS+0 ; the board being generated from (2) GCOUNT equ VARS+2 ; plays generated (2) GSP equ VARS+4 ; the stack to leave the search with (2) LEAFFN equ VARS+6 ; the move generator's handler of a play (2) USERFN equ VARS+8 ; the caller's (2) GTARGET equ VARS+10 GMAX equ VARS+11 GEMIT equ VARS+12 GDOUBLE equ VARS+13 GMAXA equ VARS+14 GENID equ VARS+15 ; the move generator's search number DHI equ VARS+16 ; the dice, larger first DLO equ VARS+17 WIN equ VARS+18 ; a play bearing off the last checker was seen CURLIST equ VARS+19 ; the list plays go into (2) CURIDX equ VARS+21 ; a play's place in generation order (2) RES equ VARS+23 ; a net's score (3) NETK equ VARS+26 ; rows added to the sums, net (2) NETD equ VARS+28 W2P equ VARS+29 ; (2) TOTAL equ VARS+31 ; a candidate's sum over the rolls (4) BEST equ VARS+35 ; (4) BESTI equ VARS+39 RA equ VARS+40 RB equ VARS+41 CANDI equ VARS+42 T1 equ VARS+44 ; features' scratch (2 each) T2 equ VARS+46 T3 equ VARS+48 T7 equ VARS+50 T4 equ VARS+52 T5 equ VARS+53 TM equ VARS+54 TA equ VARS+55 TP equ VARS+56 TI equ VARS+57 TX equ VARS+58 HYI equ VARS+59 NOB equ VARS+60 MINA equ VARS+61 MINC equ VARS+62 SNP equ VARS+63 ; shots: pips (2) SN1 equ VARS+65 SN2 equ VARS+66 SSTART equ VARS+67 RNCH equ VARS+68 RNP equ VARS+69 RNEED equ VARS+70 RD equ VARS+71 RD1 equ VARS+72 RK0 equ VARS+73 OFFN equ VARS+74 OFFANY equ VARS+75 OFFS equ VARS+76 ; (3) ESCA equ VARS+79 PHAND equ VARS+80 ; (2) DHAND equ VARS+82 ; (2) SCORER equ VARS+84 ; a list's second stage (2) LISTP equ VARS+86 ; (2) RPAGE equ VARS+88 ; the page of the net's base SIDE equ VARS+89 PTOLD equ VARS+90 PTNEW equ VARS+91 FSCORE equ VARS+92 ; the filter's score of W turned (2) FHIT equ VARS+94 FDIE equ VARS+95 ROWB equ VARS+96 ; a point's first row (2) UD equ VARS+98 ; a point's inputs' changes (4) WINPOSS equ VARS+102 ; a play may bear off the last checker BARM equ VARS+103 ; shots: not two or more on the bar SPSAVE equ VARS+104 ; (2) GKEYED equ VARS+106 ; plays hashed GPRUNE equ VARS+107 ; second-order plays repeating the first skipped PLYBY equ VARS+108 ; the lookahead's replies chosen by the contact net BLIST equ SHOTP+$d0 ; blots to hit, highest first, then $ff OPPOFF equ 32