PMF$  #"othello.h"   G*strdup(	str) G*	str;; { G*newstr;; x;;  $((newstr(G*)(H(	str)+W))
NULL) { (x_;;xH(	str);;x) *(newstr+x)*(	str+x);; };;  o(newstr);; };;    E The At_???? macros each take a Board Descriptor as their argument.  E Their value is TRUE or FALSE, depending on whether the square       E described by the (BOARD *)brd descriptor is in the topmost row,     E bottommost row, leftmost column or rightmost column of the Board    E respectively.                                                       E                                                                     E.IMPORTANT...IMPORTANT...IMPORTANT...IMPORTANT...IMPORTANT...IMPORTA E                                                                     E These macros will not work with Hisoft C. From experience, it       E appears that - among the many, many things which the Hisoft C       E Interpreter cannot handle - it cannot handle macros which involve   E struct's. You may remember the problems with the macros used in     E game_over() last month - which have now been abandoned.             E                                                                     E As a consequence, the macros have been replaced by the 4 (slower)   E functions given below. Sorry, but these macros are just too damn    E useful for me to deprive non-Hisoft C users of them.                  At_top(	brd) BOARD*	brd;; { o(	brdoffsetBRD_W);; };;  At_bottom(	brd) BOARD*	brd;; { o((	brdoffset+BRD_W)BRD_SIZ);; };;  At_left(	brd) BOARD*	brd;; { o((	brdoffset%BRD_W)_);; };;  At_right(	brd) BOARD*	brd;; { o((	brdoffset%BRD_W)(BRD_W-W));; };;  