Path: uunet!spool.mu.edu!howland.reston.ans.net!usc!news.service.uci.edu!unogate!mvb.saic.com!dayton.saic.com!dayvd.dayton.saic.com!ake From: ake@dayvd.dayton.saic.com (Earle Ake) Newsgroups: vmsnet.sources.games Subject: ldb - Long Distance Backgammon [01/16] Date: 8 Apr 93 10:42:10 EST Organization: Science Applications Intl Corp - Dayton, OH Lines: 1225 Message-ID: <1993Apr8.104211.1@dayvd.dayton.saic.com> NNTP-Posting-Host: dayvd.dayton.saic.com Xref: uunet vmsnet.sources.games:662 Long Distance Backgammon ------------------------ This is a program that lets two people easily play backgammon by e-mail. It currently runs only on character-oriented terminals (or emulators thereof) under the curses package. It runs on most flavors of UNIX, as well as VMS version 5.0 and above. New Features ------------ A complete listing of the changes for rev 1.1, 1.2, and 1.3 is in the comments at the top of main.c. Briefly, they are: - Ldb has a context-sensitive help function that is activated whenever you press ? or h. - Match play is now supported. - The Crawford and Jacoby rules are supported, as is the european scoring of backgammons as double rather than triple games. - You can now declare a game to be "permanent", meaning that it will be automatically restarted when it ends. This is for people you play continuously. - The current pip count for you and your opponent is displayed above the board. - You can obtain detailed statistics about the rolls you and your opponent have received, including a histogram of relative frequency, by pressing the % or # keys. - You can use the -score option to print a summary of games won/lost by opponent. - You can press ESC while entering a message to get back to your game and abort the operation. - Ldb will not ask for the second digit of a 1-digit point number unless it needs to (e.g. to tell the difference between 1 and 12) - Comments are rot13'd before they are sent. That way you won't accidentally read the comment while extracting your mail and ruin the surprise. If ldb sees that your opponent is running an old version of ldb, comments work like they used to. - Concede now scores gammons/backgammons, so a player cannot concede to avoid a gammon or backgammon. - A lock file is used to prevent more than one ldb from running at the same time in any account. - The name, mail address, and an alias for all your opponents are stored in a new file. This file also keeps track of games won and lost to that opponent. - If you clobber your data file, ldb can reconstruct it from your opponents' data files. - Reverse video now works on VMS, as does the screen redraw and the supervisor key. - Any printing characters may be used to draw the game pieces. - You can dump the screen to a file from the -control menu. Perry R. Ross ross@emf780.den.mmc.com VMS modifications by Earle Ake ake@dayton.saic.com $! ------------------ CUT HERE ----------------------- $ v='f$verify(f$trnlnm("SHARE_UNPACK_VERIFY"))' $! $! This archive created by VMS_SHARE Version 8.3 $! On 7-APR-1993 22:25:30.21 By user AKE (Earle Ake ) $! $! The VMS_SHARE software that created this archive $! was written by Andy Harper, Kings College London UK $! -- December 1992 $! $! Credit is due to these people for their original ideas: $! James Gray, Michael Bednarek $! $!+ THIS PACKAGE DISTRIBUTED IN 16 PARTS, TO KEEP EACH PART $! BELOW 100 BLOCKS $! $! TO UNPACK THIS SHARE FILE, CONCATENATE ALL PARTS IN ORDER $! AND EXECUTE AS A COMMAND PROCEDURE ( @name ) $! $! THE FOLLOWING FILE(S) WILL BE CREATED AFTER UNPACKING: $! 1. README.;1 $! 2. TODO.;1 $! 3. LDB.DOC;1 $! 4. LDB.MAN;1 $! 5. LDB.PS;1 $! 6. MAKEFILE.;10 $! 7. MAKEFILE.UNIX;1 $! 8. MAKEFILE.VMS;4 $! 9. LDB.OPT;1 $! 10. MAKELDB.COM;1 $! 11. BOARD.C;1 $! 12. CHECK.C;1 $! 13. CONTROL.C;1 $! 14. DOHELP.C;1 $! 15. DOSTATS.C;1 $! 16. FE_CURSES.C;1 $! 17. FLIST_NONE.C;1 $! 18. FLIST_UNIX.C;1 $! 19. FLIST_VMS.C;1 $! 20. GAME.C;1 $! 21. LOCK.C;1 $! 22. MAIN.C;1 $! 23. MISC.C;1 $! 24. MOVE.C;1 $! 25. PROCESS.C;1 $! 26. RCVOP.C;1 $! 27. READMAIL.C;1 $! 28. RENAME.C;1 $! 29. R_XRAND.C;1 $! 30. SAVE.C;1 $! 31. T_EMAIL.C;1 $! 32. VARS.C;1 $! 33. LDB.H;1 $! 34. PATCHLEVEL.H;1 $! 35. LDBSTARTER.CSH;1 $! 36. LDB.TEX;1 $! $set="set" $set symbol/scope=(nolocal,noglobal) $f=f$parse("SHARE_UNPACK_TEMP","SYS$SCRATCH:."+f$getjpi("","PID")) $e="write sys$error ""%UNPACK"", " $w="write sys$output ""%UNPACK"", " $ if .not. f$trnlnm("SHARE_UNPACK_LOG") then $ w = "!" $ if f$getsyi("CPU") .gt. 127 then $ goto start $ ve=f$getsyi("version") $ if ve-f$extract(0,1,ve) .ges. "4.4" then $ goto start $ e "-E-OLDVER, Must run at least VMS 4.4" $ v=f$verify(v) $ exit 44 $unpack: subroutine ! P1=filename, P2=checksum, P3=attributes $ if f$parse(P1) .nes. "" then $ goto dirok $ dn=f$parse(P1,,,"DIRECTORY") $ w "-I-CREDIR, Creating directory ''dn'" $ create/dir 'dn' $ if $status then $ goto dirok $ e "-E-CREDIRFAIL, Unable to create ''dn' File skipped" $ delete 'f'* $ exit $dirok: $ x=f$search(P1) $ if x .eqs. "" then $ goto file_absent $ e "-W-EXISTS, File ''P1' exists. Skipped" $ delete 'f'* $ exit $file_absent: $ w "-I-UNPACK, Unpacking file ", P1 $ n=P1 $ if P3 .nes. "" then $ n=f $ if .not. f$verify() then $ define/user sys$output nl: $ EDIT/TPU/NOSEC/NODIS/COM=SYS$INPUT 'f'/OUT='n' PROCEDURE GetHex(s,p)LOCAL x1,x2;x1:=INDEX(t,SUBSTR(s,p,1))-1;x2:=INDEX(t, SUBSTR(s,p+1,1))-1;RETURN 16*x1+x2;ENDPROCEDURE; PROCEDURE SkipPartsep LOOP EXITIF MARK(NONE)=END_OF(b);EXITIF INDEX(ERASE_LINE, "-+-+-+-+-+-+-+-+")=1;ENDLOOP;ENDPROCEDURE;PROCEDURE ProcessLine LOCAL c,s,l,b, n,p;c := ERASE_CHARACTER(1);s := ERASE_LINE;IF c = "X" THEN SPLIT_LINE; ENDIF; MOVE_HORIZONTAL(-1);l := LENGTH(s);p := 1;LOOP EXITIF p > l;c := SUBSTR(s,p,1); p := p+1;CASE c FROM ' ' TO '`' ['`']: COPY_TEXT(ASCII(GetHex(s,p))); p:=p+2;[ ' ']: p:=p+1;[INRANGE,OUTRANGE]: COPY_TEXT(c);ENDCASE;ENDLOOP;ENDPROCEDURE; PROCEDURE Decode POSITION(BEGINNING_OF(b));LOOP EXITIF MARK(NONE)=END_OF(b); IF INDEX(CURRENT_LINE,"+-+-+-+-+-+-+-+-")=1 THEN SkipPartSep;ELSE ProcessLine; MOVE_HORIZONTAL(1);ENDIF;ENDLOOP;ENDPROCEDURE;SET(FACILITY_NAME,"UNPACK");SET( SUCCESS,OFF);SET(INFORMATIONAL,OFF);t:="0123456789ABCDEF";f:=GET_INFO( COMMAND_LINE,"file_name");b:=CREATE_BUFFER(f,f);Decode;WRITE_FILE(b,GET_INFO( COMMAND_LINE,"output_file"));QUIT; $ if p3 .eqs. "" then $ goto dl $ open/write fdl &f $ write fdl "RECORD" $ write fdl P3 $ close fdl $ w "-I-CONVRFM, Converting record format to ", P3 $ convert/fdl=&f &f-1 &P1 $dl: delete 'f'* $ checksum 'P1' $ if checksum$checksum .nes. P2 then $ - e "-E-CHKSMFAIL, Checksum of ''P1' failed." $ exit $ endsubroutine $start: $! $ create 'f' X`09`09Long`20Distance`20Backgammon X`09`09------------------------ X X`09This`20is`20a`20program`20that`20lets`20two`20people`20easily`20play`20back Vgammon Xby`20e-mail.`20`20It`20currently`20runs`20only`20on`20character-oriented`20ter Vminals X(or`20emulators`20thereof)`20under`20the`20curses`20package.`20`20It`20runs V`20on`20most Xflavors`20of`20UNIX,`20as`20well`20as`20VMS`20version`205.0`20and`20above. X X`09To`20build`20ldb,`20create`20a`20directory,`20copy`20all`20the`20parts`20in Vto Xthat`20directory,`20strip`20the`20usenet`20or`20mail`20headers`20with`20a`20te Vxt`20editor, Xand`20execute`20them`20with`20a`20shell`20(e.g.`20sh`20Part1;`20sh`20Part2; V`20...). XThe`20installation`20options`20are`20documented`20in`20the`20Makefile. X X`09Suggestions`20and`20problems`20are`20cheerfully`20accepted,`20all`20the`20m Vore Xso`20when`20accompanied`20by`20appropriate`20patches,`20in`20any`20format`20th Ve`20patch Xprogram`20understands`20(e.g.`20context`20diff).`20`20E-mail`20to`20ross@emf78 V0.den.mmc.com. X X`09This`20file`20is`20for`20version`201.3`20of`20ldb.`20`20For`20those`20upgra Vding`20from X1.0`20who`20are`20wondering`20what`20happened`20to`201.1,`20it`20was`20only V`20released`20on Xthe`20DECUS`20tape.`20`20Because`20of`20time`20constraints,`20it`20had`20to V`20be`20released Xwithout`20some`20of`20the`20planned`20features,`20so`20it`20was`20assigned`20a V`20unique`20rev`20number. X1.2`20was`20to`20be`20the`20next`20version,`20but`20it`20was`20released`20so V`20widely`20for`20beta Xtest`20that`20there`20were`20countless`20different`20"versions"`20of`20version V`201.2. X X`09`09New`20Features X`09`09------------ X X`09A`20complete`20listing`20of`20the`20changes`20for`20rev`201.1,`201.2,`20and V`201.3`20is`20in Xthe`20comments`20at`20the`20top`20of`20main.c.`20`20Briefly,`20they`20are: X`09-`20Ldb`20has`20a`20context-sensitive`20help`20function`20that`20is`20activ Vated X`09`20`20whenever`20you`20press`20?`20or`20h. X`09-`20Match`20play`20is`20now`20supported. X`09-`20The`20Crawford`20and`20Jacoby`20rules`20are`20supported,`20as`20is`20th Ve`20european X`09`20`20scoring`20of`20backgammons`20as`20double`20rather`20than`20triple`20g Vames. X`09-`20You`20can`20now`20declare`20a`20game`20to`20be`20"permanent",`20meaning V`20that`20it X`09`20`20will`20be`20automatically`20restarted`20when`20it`20ends.`20`20This V`20is`20for X`09`20`20people`20you`20play`20continuously. X`09-`20The`20current`20pip`20count`20for`20you`20and`20your`20opponent`20is V`20displayed X`09`20`20above`20the`20board. X`09-`20You`20can`20obtain`20detailed`20statistics`20about`20the`20rolls`20you V`20and X`09`20`20your`20opponent`20have`20received,`20including`20a`20histogram`20of X`09`20`20relative`20frequency,`20by`20pressing`20the`20%`20or`20#`20keys. X`09-`20You`20can`20use`20the`20-score`20option`20to`20print`20a`20summary`20of V`20games X`09`20`20won/lost`20by`20opponent. X`09-`20You`20can`20press`20ESC`20while`20entering`20a`20message`20to`20get`20b Vack`20to X`09`20`20your`20game`20and`20abort`20the`20operation. X`09-`20Ldb`20will`20not`20ask`20for`20the`20second`20digit`20of`20a`201-digit V`20point`20number X`09`20`20unless`20it`20needs`20to`20(e.g.`20to`20tell`20the`20difference`20bet Vween`201`20and`2012) X`09-`20Comments`20are`20rot13'd`20before`20they`20are`20sent.`20`20That`20way V`20you`20won't X`09`20`20accidentally`20read`20the`20comment`20while`20extracting`20your`20mai Vl`20and X`09`20`20ruin`20the`20surprise.`20`20If`20ldb`20sees`20that`20your`20opponent V`20is`20running X`09`20`20an`20old`20version`20of`20ldb,`20comments`20work`20like`20they`20used V`20to. X`09-`20Concede`20now`20scores`20gammons/backgammons,`20so`20a`20player`20canno Vt X`09`20`20concede`20to`20avoid`20a`20gammon`20or`20backgammon. X`09-`20A`20lock`20file`20is`20used`20to`20prevent`20more`20than`20one`20ldb V`20from`20running X`09`20`20at`20the`20same`20time`20in`20any`20account. X`09-`20The`20name,`20mail`20address,`20and`20an`20alias`20for`20all`20your`20o Vpponents`20are X`09`20`20stored`20in`20a`20new`20file.`20`20This`20file`20also`20keeps`20track V`20of`20games X`09`20`20won`20and`20lost`20to`20that`20opponent. X`09-`20If`20you`20clobber`20your`20data`20file,`20ldb`20can`20reconstruct`20it V`20from`20your X`09`20`20opponents'`20data`20files. X`09-`20Reverse`20video`20now`20works`20on`20VMS,`20as`20does`20the`20screen V`20redraw`20and X`09`20`20the`20supervisor`20key. X`09-`20Any`20printing`20characters`20may`20be`20used`20to`20draw`20the`20game V`20pieces. X`09-`20You`20can`20dump`20the`20screen`20to`20a`20file`20from`20the`20-control V`20menu. X X X`09`09Automatic`20Game`20Starters X`09`09----------------------- X X`09An`20automatic`20game`20starter`20has`20been`20set`20up`20by`20Mark`20Rubin V`20on Xcs.umb.edu.`20`20This`20matches`20people`20by`20ability`20and`20automatically V`20starts`20a Xgame`20between`20them.`20`20The`20ability`20categories`20are`20novice,`20inter Vmediate,`20and Xexpert.`20`20For`20example,`20if`20you`20consider`20yourself`20an`20expert, V`20you`20would Xmail`20to: X X`09`09ldb-expert@cs.umb.edu X Xwhereupon`20you`20will`20be`20matched`20at`20random`20with`20someone`20else V`20who`20mailed`20to`20the Xsame`20address,`20and`20your`20game`20will`20be`20started`20using`20the`20remo Vtestart Xfunction`20of`20ldb. X X`09For`20more`20information,`20mail`20to: X X`09`09ldb-help@cs.umb.edu X XYou`20will`20receive`20an`20automated`20reply`20by`20return`20mail. X XFor`20those`20wishing`20to`20set`20up`20their`20own`20game`20starter,`20the V`20shellscript`20used Xto`20do`20it`20is`20included`20in`20this`20distribution`20as`20ldbstarter.csh. V XGetting`20it`20to`20work`20on`20your`20system`20may`20take`20a`20little`20work V. X X X`09`09Running`20Ldb X`09`09----------- X X`09The`20first`20time`20ldb`20is`20run,`20it`20will`20create`20a`20file`20in V`20your`20home Xdirectory`20called`20".ldbrc".`20`20If`20this`20name`20is`20inconvenient,`20de Vfine`20the Xenvironment`20variable`20LDBRC`20to`20be`20the`20name`20you`20want`20before V`20running`20it Xthe`20first`20time`20(and`20all`20times`20after`20that).`20`20Ldb`20will`20ask V`20for`20your Xpersonal,`20human-type`20name`20and`20your`20e-mail`20address.`20`20All`20othe Vr`20options Xwill`20be`20set`20to`20their`20defaults,`20as`20explained`20in`20the`20manual. V`20`20The`20"sendcmd" Xoption`20in`20.ldbrc`20may`20need`20to`20be`20modified`20to`20work`20with`20th Ve`20mail`20program Xon`20your`20system.`20`20This`20option`20tells`20ldb`20how`20to`20send`20mail V`20to`20your`20opponent, Xand`20must`20be`20correctly`20set`20for`20ldb`20to`20work.`20`20This`20string V`20after`20"sendcmd=" Xis`20executed`20by`20ldb`20after`20making`20the`20following`20substitutions: X`09$a`09is`20replaced`20by`20the`20address`20to`20mail`20to. X`09$f`09is`20replaced`20by`20the`20file`20containing`20the`20message. X`09$s`09is`20replaced`20by`20the`20subject`20line`20of`20the`20message. X`09$$`09is`20replaced`20by`20a`20single`20$. XThe`20default,`20which`20should`20work`20with`20most`20UNIX`20systems,`20is: X`09mail`20-s`20'$s'`20$a`20<`20$f XNote`20that`20ldb`20performs`20the`20substitutions,`20not`20the`20shell,`20so V`20the`20substitutions Xare`20not`20subject`20to`20any`20quoting.`20`20All`20other`20characters,`20inc Vluding`20shell Xmetacharacters,`20are`20passed`20to`20the`20system`20unchanged. X XVMS`20users`20will`20have`20the`20following`20default`20sendcmd`20set: X X`09sendcmd=MAIL/SUBJECT="$s"`20$f`20IN%"""$a""" X XThis`20is`20correct`20if`20you`20are`20using`20the`20IN%`20SMTP`20mailer.`20 V`20If`20not, Xyou`20may`20need`20to`20change`20the`20sendcmd=`20line`20as`20follows: X XIf`20you`20are`20using`20VMS`20mail`20only,`20use`20the`20line: X X`09sendcmd=MAIL/SUBJECT="$s"`20$f`20$a X XDepending`20on`20which`20SMTP`20mailer`20you`20have,`20the`20IN%`20may`20need V`20to`20be Xchanged`20to`20WINS%`20(for`20Wollongong),`20etc. X X X`09`09Starting`20A`20Game X`09`09--------------- X X`09To`20start`20a`20game,`20type: X`09`09ldb`20-start`20opponent's-email-address Xand`20everything`20is`20automatic`20from`20there.`20`20You`20may`20have`20to V`20exchange Xseveral`20mail`20messages`20before`20you`20are`20ready`20to`20play,`20since V`20your`20ldb`20has`20to Xdo`20the`20initial`20roll`20with`20the`20remote`20ldb,`20and`20if`20there`20is V`20a`20tie,`20the Xinitial`20roll`20is`20repeated.`20`20Eventually,`20you`20will`20see`20a`20boar Vd`20drawn`20on Xthe`20screen.`20`20The`20commands`20are`20in`20the`20bottom`20right`20corner. V`20`20The`20moves`20by Xyou`20and`20your`20opponent`20are`20above`20that,`20on`20the`20right`20side V`20of`20the`20screen,`20and Xthe`20bottom`20of`20the`20screen`20contains`20a`20place`20for`20you`20to`20enc Vlose`20a`202-line Xmessage`20with`20each`20move.`20`20This`20is`20useful`20for`20taunting,`20plea Vding,`20etc. XYou`20will`20need`20to`20press`20'r'`20to`20roll`20the`20dice,`20then`20press V`20the`20number`20of`20the`20roll Xyou`20want`20to`20use`20followed`20by`20the`20point`20you`20want`20to`20move V`20from.`20`20For`20example, Xif`20you`20roll`205`202,`20and`20you`20want`20to`20move`20the`20piece`20on`20t Vhe`2011`20point`205,`20press X5`201`201.`20`20You`20don't`20need`20to`20hit`20return.`20`20After`20you`20hav Ve`20used`20one`20of`20your`20rolls, Xthere`20are`203`20shortcuts`20you`20can`20use`20for`20the`20remainder`20of`20y Vour`20roll: X`09`09Continues`20the`20last`20move.`20`20The`20piece`20you`20las Vt`20moved X`09`09`09is`20moved`20by`20the`20amount`20of`20the`20other/next`20roll. X`09`09Repeat`20the`20last`20move.`20`20The`20other/next`20roll`20is V`20applied X`09`09`09to`20the`20same`20point`20you`20moved`20from`20last`20time. X`09p`09`09Make`20point.`20`20This`20gets`20a`20little`20tricky.`20`20Ldb`20att Vempts X`09`09`09to`20use`20the`20other/next`20roll`20to`20move`20one`20of`20your`20pi Veces X`09`09`09so`20that`20it`20ends`20up`20on`20the`20same`20point`20as`20your`20la Vst`20move X`09`09`09ended`20on.`20`20That`20is,`20if`20you`20roll`205`202`20and`20use`20t Vhe`205 X`09`09`09to`20move`20from`20the`206`20point`20to`20the`2011`20point,`20and`20h Vit`20"p", X`09`09`09ldb`20will`20move`20one`20of`20your`20pieces`20from`20the`209`20point V`20to X`09`09`09the`2011`20point`20to`20make`20the`2011`20point.`20`20This`20assumes, V X`09`09`09of`20course,`20that`20you`20have`20a`20piece`20on`20the`209`20point. X X`09Ldb`20checks`20your`20moves`20for`20all`20conceivable`20errors.`20`20These Xare`20listed`20in`20the`20manual. X X`09To`20move`20off`20the`20bar,`20merely`20select`20a`20roll.`20`20That`20roll V`20will Xautomatically`20bring`20you`20off`20the`20bar,`20since`20you`20have`20no`20oth Ver`20legal Xmove`20anyway.`20`20To`20bear`20pieces`20off,`20you`20can`20either`20enter`20t Vhe`20point Xnumber`20like`20normal,`20or`20press`20"o"`20to`20have`20it`20bear`20off`20for V`20you`20automatically. X X`09When`20a`20move`20arrives`20in`20your`20mail,`20go`20into`20mail`20and`20sa Vve`20the`20message Xinto`20a`20file.`20`20Delete`20the`20message`20from`20your`20mail,`20exit`20ma Vil,`20and`20run Xldb`20with`20the`20name`20of`20the`20file`20as`20an`20argument.`20`20There`20a Vre`20easier`20ways Xto`20feed`20incoming`20mail`20to`20ldb;`20these`20are`20discussed`20in`20the V`20manual. X X`09For`20more`20options,`20read`20the`20manual`20and`20the`20comments`20at`20t Vhe`20top Xof`20main.c. X X`09Good`20luck! X X`09`09`09`09`09`09Perry`20R.`20Ross X`09`09`09`09`09`09ross@emf780.den.mmc.com X X----------------------------------------------------------------------------- X X`09Really`20Scary`20and`20Hopefully`20Bulletproof`20Legal`20Statement: X XThis`20software`20is`20copyright`201991`20by`20Perry`20R.`20Ross.`20`20Permiss Vion`20to`20use, Xcopy,`20modify,`20and`20redistribute`20it`20is`20granted`20provided: X`09(1)`20It`20is`20not`20sold. X`09(2)`20This`20notice`20accompanies`20all`20copies,`20and`20is`20kept`20intac Vt. X`09(3)`20Users`20do`20not`20cheat`20by`20any`20method,`20including`20but`20not V`20limited`20to: X`09`09A.`20modifying`20the`20roll`20generated`20by`20the`20random`20number`20g Venerator, X`09`09B.`20modifying`20the`20code`20to`20provide`20any`20roll`20other`20than V`20that X`09`09`20`20`20generated`20by`20a`20bona-fide`20random`20number`20generator, X`09`09C.`20taking`20advantage`20of`20any`20non-randomness`20in`20a`20random X`09`09`20`20`20number`20generator`20to`20predict`20upcoming`20rolls, X`09`09D.`20changing`20the`20contents`20of`20an`20incoming`20message`20or`20of V`20the X`09`09`20`20`20.ldbdata`20file`20to`20modify`20the`20normal`20progression`20of V`20a X`09`09`20`20`20game`20in`20any`20way,`20or X`09`09E.`20generating`20a`20roll`20before`20offering`20to`20double. X`09`20`20`20Persons`20guilty`20of`20cheating`20in`20any`20way`20while`20using V`20this`20software X`09`20`20`20are`20denied`20permission`20to`20use`20or`20distribute`20this`20so Vftware X`09`20`20`20in`20perpetuity.`20`20Excluded`20from`20the`20definition`20of`20ch Veating`20is X`09`20`20`20any`20action`20whose`20intention`20is`20to`20test`20or`20debug`20t Vhis`20software, X`09`20`20`20as`20long`20as`20the`20opponent`20is`20aware`20that`20these`20acti Vons`20are`20being X`09`20`20`20performed,`20and`20the`20game`20is`20considered`20"unofficial". XThe`20above`20restrictions`20are`20made`20in`20all`20seriousness,`20and`20with V`20every Xintention`20of`20enforcement`20by`20any`20and`20all`20legal`20means`20where V`20practical. X X(Sounds`20almost`20as`20good`20as`20the`20real`20thing,`20doesn't`20it?) $ call unpack README.;1 1649131628 "" $! $ create 'f' Xdelmail`20option`20should`20work`20on`20system`20mail`20file. X XMake`20superkey`20work`20instantly,`20instead`20of`20only`20when`20waiting`20f Vor`20a`20character. X XWay`20of`20changing`20local`20colors`20for`20a`20game,`20or`20for`20setting V`20local`20colors Xindependent`20of`20colors`20specified`20in`20START. X XIndication`20of`20last`20access`20time`20for`20a`20game`20in`20-control. X XInstead`20of`20keeping`203`20board`20images`20Bef,`20Aft,`20Cur,`20keep`20log V`20file`20of Xall`20prior`20moves,`20with`20board`20image,`20player,`20`26`20move`20made. V`20`20Use`20`5E`20and`20v Xcommands`20(or`20ku`20`26`20kd`20from`20termcap?)`20to`20scroll`20backward`20a Vnd`20forward`20through Xlog`20file,`20displaying`20board`20`26`20pieces`20moved`20at`20each`20step. V`20`20Delete`20log`20file Xwhen`20game`20is`20deleted?`20`20Use`20name`20like`20.ldblogXXXXX`20for`20log V`20file, Xput`20log`20file`20name`20into`20game`20structure.`20`20Scan`20directory`20for V`20unused Xlog`20files`20when`20games`20are`20read,`20so`20they`20can`20be`20deleted?`20 V`20Maybe,`20each Xscroll`20back`20is`20in`20two`20steps,`20before`20move`20was`20made`20`26`20af Vter.`20`20That`20is, XCur,`20-1`20After,`20-1`20Before,`20-2`20After,`20-2`20Before,`20... X XWay`20of`20specifying`20that`20board`20should`20invert`20if`20necessary`20auto Vmatically Xso`20that`20play`20is`20always`20in`20the`20desired`20direction. X XWay`20of`20informing`20your`20opponents`20of`20a`20change`20in`20your`20e-mail V`20address. XUse`20new`20opcode?`20`20Check`20opponent's`20version`20to`20avoid`20killing V`20opponent's Xldb`20with`20invalid`20opcode.`20`20If`20in`20OPSTATE,`20also`20request`20rese Vnd? XSend`20one`20packet`20per`20game?`20`20Be`20sure`20to`20update`20people`20file V`20too. XEliminate`20old`20address`20when`20no`20more`20games`20point`20to`20it.`20`20M Vaybe`20better Xto`20send`20one`20packet`20per`20opponent`20(scan`20people`20file),`20so`20it V`20can Xjust`20change`20the`20people`20record`20in`20place.`20`20What`20to`20do`20with V`20equiv's? X Xallow`20unlimited`20length`20comments,`20scroll`20window. X XWay`20to`20print`20board`20to`20file,`20load`20board`20from`20file.`20`20Allow V`20board Xto`20be`20set`20up`20in`20any`20desired`20configuration. X XSecurity`20from`20(1)`20advance`20knowledge`20of`20rolls,`20(2)`20generating V`20false`20rolls. X XMultiple`20language`20support. X Xregister`20vars X XFlip`20board`20left/right. X XFlush`20input`20before`20reading. X XSocket`20transport. X XMotif`20front-end.`20`20Open`20Look?`20`20Xlib? X XVMS`20command`20line`20interface.`20`20Maybe,`20separate`20out`20all`20host-sp Vecific Xstuff`20into`20a`20separate`20file,`20`26`20only`20compile`20in`20the`20one V`20you`20need. X XOption`20to`20display`20"scratch"`20screen,`20move`20any`20piece.`20`20Don't V`20save. XInitial`20setup? X XProtect`20critical`20sections`20from`20SIGINT.`20`20Catch`20more`20signals? XCatch`20SIGSTOP/SIGTSTP/SIGCONT`20`26`20reset`20tty`20modes. X XAllow`20multiple`20rolls`20without`20sending`20packet`20when`20opponent`20is V`20closed`20out. XAllow`20opponent's`20roll`20to`20be`20generated`20locally`20when`20piece`20is V`20on`20the`20bar, X`26`20skip`20if`20he`20cannot`20move.`20`20Conflicts`20with`20secure`20dice V`20roller?`20`20How Xto`20send`20multiple`20moves`20in`20one`20packet? X XProcess`20id`20in`20lock`20file,`20look`20to`20see`20if`20process`20still`20ex Vists. XPortability?`20`20How`20in`20VMS? X XPlug`20memory`20leaks. X XFaster`20start`20protocol,`20have`20starting`20host`20perform`20entire`20openi Vng`20roll Xand`20reroll`20ties`20immediately.`20`20Conflicts`20with:`201)`20backward`20co Vmpatibility, X2)`20autodoubling,`203)`20secure`20roller. X XCatch`20failure`20in`20sending`20mail,`20return`20to`20move`20state. X Xhandle`20failed`20write`20better.`20`20""`20in`20writegames. $ call unpack TODO.;1 1651455370 "" $! $ create 'f' X X X XLDB(1)`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20USER`20COMMANDS V`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20LDB(1) X X X XNAME X`20`20`20`20`20ldb`20-`20Play`20backgammon`20by`20e-mail X XSYNOPSIS X`20`20`20`20`20ldb`20`5Boptions`5D`20`5Binput`20files...`5D X XDESCRIPTION X`20`20`20`20`20_`08L_`08d_`08b`20allows`20two`20people`20to`20`20play`20`20bac Vkgammon`20`20over`20`20a`20`20network X`20`20`20`20`20using`20`20`20electronic`20`20mail.`20`20`20It`20`20runs`20`20o Vn`20`20character-oriented X`20`20`20`20`20terminals,`20or`20emulators`20thereof,`20`20using`20`20the`20 V`20_`08c_`08u_`08r_`08s_`08e_`08s`20`20screen X`20`20`20`20`20package.`20`20`20It`20`20will`20`20run`20`20on`20`20most`20UNIX V`20dialects,`20as`20well`20as X`20`20`20`20`20VAX-C`20under`20VMS`205.0`20and`20above.`20`20_`08L_`08d_`08b V`20will`20display`20`20a`20`20picture X`20`20`20`20`20of`20`20the`20`20board,`20`20prompt`20`20the`20user`20to`20ente Vr`20a`20move,`20check`20the X`20`20`20`20`20move`20for`20legality,`20and`20send`20the`20move`20to`20the`20o Vpponent.`20`20`20When X`20`20`20`20`20it`20`20arrives,`20`20it`20will`20be`20displayed`20on`20the`20o Vpponent's`20screen, X`20`20`20`20`20after`20which`20the`20opponent`20will`20be`20prompted`20for`20a V`20move`20`20to`20`20be X`20`20`20`20`20sent`20back. X XFEATURES X`20`20`20`20`20Multiple`20Games X`20`20`20`20`20`20`20`20`20`20_`08L_`08d_`08b`20can`20keep`20track`20of`20`20a Vn`20`20arbitrary`20`20number`20`20of`20`20games X`20`20`20`20`20`20`20`20`20`20simultaneously,`20and`20will`20display`20them V`20one`20at`20a`20time`20for X`20`20`20`20`20`20`20`20`20`20you`20to`20play.`20`20You`20can`20exit`20from V`20_`08l_`08d_`08b`20at`20any`20`20time;`20`20when X`20`20`20`20`20`20`20`20`20`20you`20run`20ldb`20again,`20it`20will`20pick`20up V`20your`20games`20where`20you X`20`20`20`20`20`20`20`20`20`20left`20off. X X`20`20`20`20`20Move`20Checking X`20`20`20`20`20`20`20`20`20`20Both`20your`20moves`20and`20your`20opponent's V`20moves`20`20are`20`20checked X`20`20`20`20`20`20`20`20`20`20for`20legality.`20`20This`20includes: X X`20`20`20`20`20-`20`20`20`20Landing`20on`20an`20occupied`20point. X X`20`20`20`20`20-`20`20`20`20Bearing`20off`20before`20your`20inner`20table`20is V`20full. X X`20`20`20`20`20-`20`20`20`20Trying`20to`20move`20pieces`20that`20are`20on`20th Ve`20`20board`20`20when`20`20you X`20`20`20`20`20`20`20`20`20`20have`20a`20piece`20on`20the`20bar. X X`20`20`20`20`20-`20`20`20`20Trying`20to`20bear`20off`20a`20piece`20when`20ther Ve`20is`20a`20piece`20`20on`20`20a X`20`20`20`20`20`20`20`20`20`20higher`20point,`20and`20the`20roll`20is`20not V`20being`20used`20exactly. X X`20`20`20`20`20-`20`20`20`20Trying`20to`20leave`20a`20usable`20move`20unused. X X`20`20`20`20`20-`20`20`20`20Trying`20to`20leave`20a`20move`20unused`20when`20i Vt`20is`20usable`20and`20has X`20`20`20`20`20`20`20`20`20`20a`20higher`20roll`20than`20the`20move`20that`20i Vs`20used. X X`20`20`20`20`20-`20`20`20`20Trying`20to`20double`20when`20you`20doubled`20last V. X X`20`20`20`20`20-`20`20`20`20Trying`20to`20double`20in`20a`20Crawford`20rule V`20game. X X`20`20`20`20`20Message`20Reliability X`20`20`20`20`20`20`20`20`20`20_`08L_`08d_`08b`20detects`20(and`20rejects)`20du Vplicate`20messages,`20`20and`20`20can X`20`20`20`20`20`20`20`20`20`20regenerate`20lost`20messages. X X X XSun`20Release`204.1`20`20`20Last`20change:`20October`206,`201992`20`20`20`20 V`20`20`20`20`20`20`20`20`20`20`20`20`20`201 X X X X X X XLDB(1)`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20USER`20COMMANDS V`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20LDB(1) X X X X`20`20`20`20`20Remote`20Start X`20`20`20`20`20`20`20`20`20`20_`08L_`08d_`08b`20can`20start`20a`20game`20`20be Vtween`20`20two`20`20players`20`20on`20`20remote X`20`20`20`20`20`20`20`20`20`20hosts.`20`20`20This`20`20is`20`20used`20to`20set V`20up`20"game`20starter"`20hosts, X`20`20`20`20`20`20`20`20`20`20where`20people`20interested`20in`20finding`20 V`20new`20`20opponents`20`20are X`20`20`20`20`20`20`20`20`20`20matched`20`20by`20`20some`20`20criteria`20`20(su Vch`20`20as`20ability,`20or`20by`20a X`20`20`20`20`20`20`20`20`20`20tournament`20schedule),`20`20and`20`20have`20 V`20their`20`20games`20`20started X`20`20`20`20`20`20`20`20`20`20automatically.`20`20`20For`20`20a`20current`20li Vsting`20of`20game`20starter X`20`20`20`20`20`20`20`20`20`20hosts,`20see`20the`20README`20file. X X`20`20`20`20`20Game`20Value X`20`20`20`20`20`20`20`20`20`20_`08L_`08d_`08b`20`20detects`20`20the`20`20end V`20`20of`20`20the`20`20game,`20`20`20gammons,`20`20`20and X`20`20`20`20`20`20`20`20`20`20backgammons,`20`20and`20`20notifies`20`20both V`20`20players`20`20of`20the`20game X`20`20`20`20`20`20`20`20`20`20value`20when`20the`20game`20is`20over.`20`20The V`20Jacoby`20`20rule`20`20may`20`20be X`20`20`20`20`20`20`20`20`20`20enabled,`20as`20may`20European`20scoring,`20to V`20calculate`20the`20game X`20`20`20`20`20`20`20`20`20`20value`20as`20desired. X X`20`20`20`20`20Online`20Help`20Screen X`20`20`20`20`20`20`20`20`20`20_`08L_`08d_`08b`20has`20an`20online,`20context V`20sensitive`20help`20facility`20that X`20`20`20`20`20`20`20`20`20`20lists`20the`20available`20commands`20for`20the V`20current`20screen. X X`20`20`20`20`20Match`20Play X`20`20`20`20`20`20`20`20`20`20_`08L_`08d_`08b`20can`20support`20matches`20that V`20play`20to`20any`20desired`20`20point X`20`20`20`20`20`20`20`20`20`20total,`20`20and`20`20will`20`20continue`20`20to V`20`20start`20`20games`20until`20one X`20`20`20`20`20`20`20`20`20`20player`20reaches`20that`20total. X XOPTIONS X`20`20`20`20`20-read X`20`20`20`20`20`20`20`20`20`20Mail`20is`20read,`20and`20the`20games`20are`20up Vdated`20and`20saved.`20`20The X`20`20`20`20`20`20`20`20`20`20user`20`20is`20`20not`20prompted`20for`20his`20m Voves.`20`20If`20neither`20-read X`20`20`20`20`20`20`20`20`20`20nor`20-play`20are`20given,`20both`20are`20assume Vd. X X`20`20`20`20`20-play X`20`20`20`20`20`20`20`20`20`20Any`20`20games`20`20that`20`20are`20`20waiting V`20`20for`20`20local`20`20input`20`20`20are X`20`20`20`20`20`20`20`20`20`20displayed`20`20for`20`20the`20`20user`20to`20pro Vcess.`20`20No`20mail`20is`20read. X`20`20`20`20`20`20`20`20`20`20If`20neither`20-read`20nor`20-play`20are`20given V,`20both`20are`20assumed. X X`20`20`20`20`20-color`20xy X`20`20`20`20`20`20`20`20`20`20The`20colors`20for`20the`20game`20started`20by V`20this`20ldb`20run`20are`20set X`20`20`20`20`20`20`20`20`20`20to`20`20x`20`20and`20`20y.`20`20`20The`20first V`20color`20is`20played`20by`20the`20local X`20`20`20`20`20`20`20`20`20`20user,`20and`20the`20other`20is`20played`20by`20t Vhe`20`20opponent.`20`20`20Legal X`20`20`20`20`20`20`20`20`20`20color`20`20characters`20`20are`20`20any`20`20pri Vnting`20character,`20except X`20`20`20`20`20`20`20`20`20`20that`20x`20and`20y`20may`20not`20be`20the`20uppe Vr`20and`20lower`20case`20of`20the X`20`20`20`20`20`20`20`20`20`20same`20character.`20`20The`20default`20is`20"-co Vlor`20rw". X X`20`20`20`20`20-direction`20up/down X`20`20`20`20`20`20`20`20`20`20This`20sets`20the`20direction`20of`20play`20for V`20the`20local`20user`20`20for X`20`20`20`20`20`20`20`20`20`20the`20`20game`20`20started`20`20by`20`20this`20 V`20ldb`20`20run.`20`20The`20default`20is X`20`20`20`20`20`20`20`20`20`20"-direction`20up". X X`20`20`20`20`20-myaddr`20addr X`20`20`20`20`20`20`20`20`20`20Your`20mail`20address`20is`20set`20to`20_`08a_ V`08d_`08d_`08r`20for`20games`20`20started`20`20on X`20`20`20`20`20`20`20`20`20`20this`20`20ldb`20run.`20`20This`20overrides`20the V`20address`20specified`20in X X X XSun`20Release`204.1`20`20`20Last`20change:`20October`206,`201992`20`20`20`20 V`20`20`20`20`20`20`20`20`20`20`20`20`20`202 X X X X X X XLDB(1)`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20USER`20COMMANDS V`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20LDB(1) X X X X`20`20`20`20`20`20`20`20`20`20._`08l_`08d_`08b_`08r_`08c. X X`20`20`20`20`20-start`20user X`20`20`20`20`20`20`20`20`20`20A`20game`20is`20started`20with`20the`20specified V`20`20user.`20`20`20The`20`20_`08u_`08s_`08e_`08r X`20`20`20`20`20`20`20`20`20`20argument`20`20may`20`20be`20`20any`20e-mail`20ad Vdress`20that`20is`20valid`20for X`20`20`20`20`20`20`20`20`20`20your`20host.`20`20Some`20`20e-mail`20`20addresse Vs`20`20will`20`20need`20`20to`20`20be X`20`20`20`20`20`20`20`20`20`20quoted`20`20if`20they`20contain`20shell`20metach Varacters.`20`20The`20_`08u_`08s_`08e_`08r X`20`20`20`20`20`20`20`20`20`20argument`20may`20also`20be`20an`20_`08a_`08l_ V`08i_`08a_`08s`20for`20an`20opponent`20you`20`20have X`20`20`20`20`20`20`20`20`20`20played`20before.`20`20Aliases`20are`20defined V`20in`20the`20people`20file, X`20`20`20`20`20`20`20`20`20`20and`20are`20initialized`20to`20the`20first`20nam Ve`20of`20the`20`20opponent, X`20`20`20`20`20`20`20`20`20`20with`20`20all`20`20upper-case`20`20letters`20 V`20changed`20`20to`20lower.`20`20The X`20`20`20`20`20`20`20`20`20`20-start`20`20option`20`20is`20`20deferred`20`20un Vtil`20`20all`20`20command`20`20line X`20`20`20`20`20`20`20`20`20`20options`20`20have`20`20been`20`20scanned,`20`20s Vo`20`20the`20`20position`20of`20the X`20`20`20`20`20`20`20`20`20`20-start`20option`20on`20the`20command`20`20line V`20`20is`20`20not`20`20important. X`20`20`20`20`20`20`20`20`20`20Only`20one`20-start`20may`20be`20used`20per`20ld Vb`20run. X X`20`20`20`20`20-remotestart`20user1`20user2 X`20`20`20`20`20`20`20`20`20`20A`20game`20is`20started`20between`20user1`20and V`20user2.`20`20`20The`20`20local X`20`20`20`20`20`20`20`20`20`20host`20`20sends`20a`20remote`20start`20message V`20to`20user1`20instructing X`20`20`20`20`20`20`20`20`20`20it`20to`20start`20a`20game`20with`20user2.`20 V`20The`20local`20host`20does`20not X`20`20`20`20`20`20`20`20`20`20participate`20`20thereafter`20`20in`20the`20game V.`20`20For`20the`20purposes X`20`20`20`20`20`20`20`20`20`20of`20`20the`20`20-color`20`20and`20`20-direction V`20`20options,`20`20`20user1`20`20`20is X`20`20`20`20`20`20`20`20`20`20considered`20`20the`20local`20user.`20`20The`20- Vremotestart`20option`20is X`20`20`20`20`20`20`20`20`20`20deferred`20until`20`20all`20`20command`20`20line V`20`20options`20`20have`20`20been X`20`20`20`20`20`20`20`20`20`20scanned,`20`20so`20the`20position`20of`20the`20- Vremotestart`20option`20on X`20`20`20`20`20`20`20`20`20`20the`20`20command`20`20line`20`20is`20`20`20not V`20`20`20important.`20`20`20`20Only`20`20`20one X`20`20`20`20`20`20`20`20`20`20-remotestart`20may`20be`20used`20per`20ldb`20run V. X X`20`20`20`20`20-notify`20addr X`20`20`20`20`20`20`20`20`20`20This`20option`20affects`20games`20started`20by V`20either`20`20-start`20`20or X`20`20`20`20`20`20`20`20`20`20-remotestart`20on`20this`20ldb`20run.`20`20A`20m Vessage`20is`20sent`20to`20the X`20`20`20`20`20`20`20`20`20`20specified`20address`20when`20the`20game`20that V`20is`20started`20by`20`20the X`20`20`20`20`20`20`20`20`20`20-start`20`20or`20`20-remotestart`20`20option`20 V`20ends.`20`20`20This`20`20message X`20`20`20`20`20`20`20`20`20`20includes`20the`20termination`20code`20of`20`20th Ve`20`20game,`20`20the`20`20game X`20`20`20`20`20`20`20`20`20`20value,`20`20and`20`20a`20`20gammon/backgammon V`20flag.`20`20This`20option`20is X`20`20`20`20`20`20`20`20`20`20mainly`20for`20the`20use`20of`20game`20starters V`20that`20wish`20to`20either X`20`20`20`20`20`20`20`20`20`20keep`20score`20or`20start`20new`20games`20when V`20the`20old`20ones`20finish. X`20`20`20`20`20`20`20`20`20`20Even`20though`20-notify`20is`20only`20used`20 V`20by`20`20the`20`20player`20`20that X`20`20`20`20`20`20`20`20`20`20starts`20`20`20the`20`20game`20`20(or`20`20the V`20`20game`20`20starter`20`20that`20`20uses X`20`20`20`20`20`20`20`20`20`20-remotestart),`20both`20player's`20ldb`20will V`20`20send`20`20a`20`20message X`20`20`20`20`20`20`20`20`20`20when`20the`20game`20ends. X X`20`20`20`20`20-jacoby X`20`20`20`20`20`20`20`20`20`20The`20Jacoby`20rule`20is`20enabled`20for`20the V`20game`20started`20by`20this X`20`20`20`20`20`20`20`20`20`20ldb`20`20`20run.`20`20`20`20This`20`20rule`20 V`20specifies`20`20that`20`20gammons`20`20and X`20`20`20`20`20`20`20`20`20`20backgammons`20count`20as`20a`20single`20point V`20if`20`20neither`20`20player X`20`20`20`20`20`20`20`20`20`20doubled`20`20during`20`20the`20`20game.`20`20 V`20This`20`20option`20`20may`20only`20be X`20`20`20`20`20`20`20`20`20`20enabled`20by`20the`20user`20starting`20the`20gam Ve,`20and`20may`20`20not`20`20be X`20`20`20`20`20`20`20`20`20`20disabled`20`20by`20`20the`20`20other`20`20player V.`20`20`20If`20`20the`20`20opponent's X`20`20`20`20`20`20`20`20`20`20version`20of`20ldb`20does`20not`20support`20the V`20Jacoby`20rule,`20it`20`20is X`20`20`20`20`20`20`20`20`20`20disabled`20`20and`20`20the`20`20game`20`20procee Vds`20`20as`20if`20it`20were`20never X`20`20`20`20`20`20`20`20`20`20enabled. X X X XSun`20Release`204.1`20`20`20Last`20change:`20October`206,`201992`20`20`20`20 V`20`20`20`20`20`20`20`20`20`20`20`20`20`203 X X X X X X XLDB(1)`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20USER`20COMMANDS V`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20LDB(1) X X X X`20`20`20`20`20-crawford X`20`20`20`20`20`20`20`20`20`20The`20Crawford`20rule`20is`20enabled`20for`20the V`20`20game`20`20started`20`20by X`20`20`20`20`20`20`20`20`20`20this`20`20ldb`20run.`20`20This`20rule`20specifie Vs`20that`20neither`20player X`20`20`20`20`20`20`20`20`20`20may`20double`20for`20the`20first`20game`20of`20a V`20match`20`20after`20`20either X`20`20`20`20`20`20`20`20`20`20player`20`20is`20`20within`20`201`20`20point`20 V`20of`20winning`20the`20match.`20`20If X`20`20`20`20`20`20`20`20`20`20match`20`20play`20`20is`20`20not`20`20enabled, V`20`20this`20`20argument`20`20has`20`20no X`20`20`20`20`20`20`20`20`20`20meaning.`20`20`20This`20`20option`20may`20only V`20be`20enabled`20by`20the`20user X`20`20`20`20`20`20`20`20`20`20starting`20the`20game,`20and`20may`20not`20be V`20disabled`20by`20the`20other X`20`20`20`20`20`20`20`20`20`20player.`20`20`20If`20`20the`20`20opponent's`20 V`20version`20`20of`20ldb`20does`20not X`20`20`20`20`20`20`20`20`20`20support`20the`20Crawford`20rule,`20it`20is`20dis Vabled`20and`20the`20`20game X`20`20`20`20`20`20`20`20`20`20proceeds`20as`20if`20it`20were`20never`20enabled V. X X`20`20`20`20`20-european X`20`20`20`20`20`20`20`20`20`20The`20European`20rule`20is`20enabled`20for`20the V`20`20game`20`20started`20`20by X`20`20`20`20`20`20`20`20`20`20this`20`20ldb`20`20run.`20`20`20This`20`20rule V`20specifies`20that`20backgammons X`20`20`20`20`20`20`20`20`20`20count`20as`20double,`20rather`20than`20triple, V`20the`20score`20shown`20on X`20`20`20`20`20`20`20`20`20`20the`20`20cube.`20`20This`20option`20may`20only V`20be`20enabled`20by`20the`20user X`20`20`20`20`20`20`20`20`20`20starting`20the`20game,`20and`20may`20not`20be V`20disabled`20by`20the`20other X`20`20`20`20`20`20`20`20`20`20player.`20`20`20If`20`20the`20`20opponent's`20 V`20version`20`20of`20ldb`20does`20not X`20`20`20`20`20`20`20`20`20`20support`20the`20European`20rule,`20it`20is`20dis Vabled`20and`20the`20`20game X`20`20`20`20`20`20`20`20`20`20proceeds`20as`20if`20it`20were`20never`20enabled V. X X`20`20`20`20`20-permanent X`20`20`20`20`20`20`20`20`20`20The`20game`20started`20by`20this`20ldb`20run`20i Vs`20`20marked`20`20permanent. X`20`20`20`20`20`20`20`20`20`20Permanent`20`20games`20`20are`20automatically V`20restarted`20when`20they X`20`20`20`20`20`20`20`20`20`20end.`20`20This`20is`20for`20people`20you`20play V`20with`20constantly,`20`20and X`20`20`20`20`20`20`20`20`20`20it`20saves`20you`20the`20trouble`20of`20restarti Vng`20the`20game`20when`20it X`20`20`20`20`20`20`20`20`20`20is`20over.`20`20This`20option`20may`20only`20be V`20enabled`20by`20`20the`20`20user X`20`20`20`20`20`20`20`20`20`20starting`20the`20game,`20and`20may`20not`20be V`20disabled`20by`20the`20other X`20`20`20`20`20`20`20`20`20`20player.`20`20If`20the`20opponent's`20`20version V`20`20of`20`20ldb`20`20does`20`20not X`20`20`20`20`20`20`20`20`20`20support`20permanent`20games,`20the`20permanent V`20flag`20is`20disabled X`20`20`20`20`20`20`20`20`20`20and`20the`20game`20proceeds`20as`20if`20it`20wer Ve`20never`20enabled. X X`20`20`20`20`20-match`20points X`20`20`20`20`20`20`20`20`20`20This`20option`20enables`20match`20play`20and`20s Vpecifies`20the`20number X`20`20`20`20`20`20`20`20`20`20of`20points`20the`20match`20is`20to`20play`20to. V`20`20Games`20that`20are`20part X`20`20`20`20`20`20`20`20`20`20of`20a`20match`20have`20additional`20information V`20displayed`20`20above X`20`20`20`20`20`20`20`20`20`20the`20`20board`20`20to`20`20show`20`20the`20`20c Vurrent`20`20match`20score`20and`20the X`20`20`20`20`20`20`20`20`20`20number`20of`20points`20being`20played`20to.`20 V`20When`20a`20game`20that`20`20is X`20`20`20`20`20`20`20`20`20`20part`20`20of`20`20a`20`20match`20`20ends,`20`20a Vnd`20`20the`20specified`20number`20of X`20`20`20`20`20`20`20`20`20`20points`20has`20not`20been`20reached,`20`20the V`20`20game`20`20is`20`20restarted. X`20`20`20`20`20`20`20`20`20`20This`20`20option`20`20may`20`20only`20be`20enabl Ved`20by`20the`20user`20starting X`20`20`20`20`20`20`20`20`20`20the`20game,`20and`20may`20not`20be`20disabled V`20by`20the`20other`20`20player. X`20`20`20`20`20`20`20`20`20`20If`20the`20opponent's`20version`20of`20ldb`20doe Vs`20not`20support`20match X`20`20`20`20`20`20`20`20`20`20play,`20the`20game`20proceeds`20as`20if`20it`20w Vere`20a`20normal`20game. X X`20`20`20`20`20-score X`20`20`20`20`20`20`20`20`20`20The`20cumulative`20score`20`20for`20`20all`20 V`20opponents`20`20is`20`20printed. X`20`20`20`20`20`20`20`20`20`20This`20`20consists`20`20of`20points,`20games, V`20gammons,`20backgammons, X`20`20`20`20`20`20`20`20`20`20and`20matches`20that`20`20have`20`20been`20`20wo Vn`20`20and`20`20lost`20`20for`20`20each X`20`20`20`20`20`20`20`20`20`20opponent.`20`20A`20total`20over`20all`20opponent Vs`20is`20also`20printed. X X X X XSun`20Release`204.1`20`20`20Last`20change:`20October`206,`201992`20`20`20`20 V`20`20`20`20`20`20`20`20`20`20`20`20`20`204 X X X X X X XLDB(1)`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20USER`20COMMANDS V`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20LDB(1) X X X X`20`20`20`20`20-broadcast`20`5Bfile`5D X`20`20`20`20`20`20`20`20`20`20The`20specified`20file`20is`20mailed`20to`20all V`20current`20`20opponents. X`20`20`20`20`20`20`20`20`20`20This`20`20is`20`20useful`20for`20announcing`20va Vcation`20absences,`20etc. X`20`20`20`20`20`20`20`20`20`20If`20the`20file`20argument`20is`20not`20given, V`20`20standard`20`20input`20`20is X`20`20`20`20`20`20`20`20`20`20read`20and`20sent`20to`20all`20opponents. X X`20`20`20`20`20-control X`20`20`20`20`20`20`20`20`20`20This`20option`20puts`20ldb`20into`20a`20special V`20mode`20that`20does`20`20not X`20`20`20`20`20`20`20`20`20`20allow`20games`20to`20be`20played,`20but`20instea Vd`20displays`20them`20one X`20`20`20`20`20`20`20`20`20`20at`20a`20time`20and`20allows`20certain`20"overhe Vad"`20functions`20to`20be X`20`20`20`20`20`20`20`20`20`20performed.`20`20`20These`20`20are`20`20described V`20fully`20in`20the`20section X`20`20`20`20`20`20`20`20`20`20titled`20"CONTROLLING`20A`20GAME". X X`20`20`20`20`20-reconstruct`20file X`20`20`20`20`20`20`20`20`20`20This`20option`20allows`20your`20game`20file`20to V`20`20be`20`20reconstructed X`20`20`20`20`20`20`20`20`20`20if`20`20you`20`20accidentally`20`20clobber`20 V`20it.`20`20`20It`20`20does`20`20this`20by X`20`20`20`20`20`20`20`20`20`20extracting`20the`20information`20from`20`20your V`20`20opponent's`20`20data X`20`20`20`20`20`20`20`20`20`20file`20`20and`20"reversing"`20it`20so`20you`20ca Vn`20use`20it.`20`20To`20use`20the X`20`20`20`20`20`20`20`20`20`20reconstruct`20option,`20ask`20all`20of`20your V`20opponents`20`20to`20`20send X`20`20`20`20`20`20`20`20`20`20you`20their`20.ldbdata`20files.`20`20Extract`20t Vhese`20from`20your`20mail X`20`20`20`20`20`20`20`20`20`20into`20files`20on`20your`20system,`20strip`20the V`20mail`20headers,`20`20and X`20`20`20`20`20`20`20`20`20`20feed`20`20them`20one`20at`20a`20time`20into`20ld Vb.`20`20For`20each`20game`20found X`20`20`20`20`20`20`20`20`20`20listing`20you`20as`20the`20opponent,`20you`20wil Vl`20`20be`20`20prompted`20`20to X`20`20`20`20`20`20`20`20`20`20enter`20`20the`20`20opponent's`20e-mail`20addres Vs`20or`20alias`20(and`20his X`20`20`20`20`20`20`20`20`20`20name`20if`20he`20is`20not`20in`20your`20people V`20file),`20`20and`20`20the`20`20game X`20`20`20`20`20`20`20`20`20`20will`20be`20added`20to`20your`20game`20file. X X`20`20`20`20`20`20`20`20`20`20The`20reconstruct`20function`20cannot`20recover V`20games`20that`20were X`20`20`20`20`20`20`20`20`20`20in`20`20the`20process`20of`20starting`20(i.e. V`20in`20their`20initial`20roll X`20`20`20`20`20`20`20`20`20`20stage),`20or`20that`20have`20already`20completed V`20`20(why`20`20bother?). X`20`20`20`20`20`20`20`20`20`20Your`20`20opponent`20`20should`20`20read`20`20an Vy`20`20mail`20`20files`20you`20sent X`20`20`20`20`20`20`20`20`20`20before`20your`20data`20file`20got`20clobbered, V`20`20and`20`20should`20`20make X`20`20`20`20`20`20`20`20`20`20his`20`20move`20and`20send`20it`20before`20sendi Vng`20you`20his`20data`20file. X`20`20`20`20`20`20`20`20`20`20You`20will`20not`20need`20to`20process`20the`20m Vove`20he`20sent,`20`20though, X`20`20`20`20`20`20`20`20`20`20since`20`20all`20`20that`20`20data`20is`20in`20h Vis`20file`20anyway.`20`20It`20won't X`20`20`20`20`20`20`20`20`20`20hurt`20if`20you`20do,`20ldb`20will`20just`20igno Vre`20it. X X`20`20`20`20`20-help X`20`20`20`20`20`20`20`20`20`20This`20prints`20a`20one-line`20description`20of V`20each`20`20option,`20`20in X`20`20`20`20`20`20`20`20`20`20case`20you`20forget`20later`20on. X XSCREEN X`20`20`20`20`20The`20screen`20displays`20the`20following`20items`20of`20intere Vst: X X`20`20`20`20`20Opponent X`20`20`20`20`20`20`20`20`20`20The`20e-mail`20address`20and`20personal`20name V`20`20of`20`20the`20`20opponent X`20`20`20`20`20`20`20`20`20`20are`20`20displayed`20on`20the`20top`20line`20of V`20the`20screen.`20`20This`20can X`20`20`20`20`20`20`20`20`20`20help`20identify`20the`20`20game`20`20if`20`20you V`20`20have`20`20many`20`20games`20`20in X`20`20`20`20`20`20`20`20`20`20progress`20at`20once. X X`20`20`20`20`20Board`20Label X`20`20`20`20`20`20`20`20`20`20_`08L_`08d_`08b`20displays`20one`20of`20three V`20possible`20board`20`20images`20`20at`20`20a X X X XSun`20Release`204.1`20`20`20Last`20change:`20October`206,`201992`20`20`20`20 V`20`20`20`20`20`20`20`20`20`20`20`20`20`205 X X X X X X XLDB(1)`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20USER`20COMMANDS V`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20LDB(1) X X X X`20`20`20`20`20`20`20`20`20`20time;`20`20the`20`20name`20`20of`20`20the`20`20b Voard`20currently`20displayed`20is X`20`20`20`20`20`20`20`20`20`20shown`20on`20the`20second`20line`20of`20the`20sc Vreen,`20near`20the`20`20left. X`20`20`20`20`20`20`20`20`20`20The`20`20significance`20`20of`20`20these`20`20th Vree`20boards`20is`20explained X`20`20`20`20`20`20`20`20`20`20below. X X`20`20`20`20`20Flags X`20`20`20`20`20`20`20`20`20`20This`20area`20displays`20any`20special`20rules V`20in`20effect`20for`20`20the X`20`20`20`20`20`20`20`20`20`20game.`20`20`20Each`20`20special`20`20rule`20`20c Vauses`20one`20character`20to`20be X`20`20`20`20`20`20`20`20`20`20displayed.`20`20These`20are: X`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20J`20`20`20`20`20Jacoby`20rule X`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20C`20`20`20`20`20Crawford`20rule X`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20E`20`20`20`20`20European`20rule X`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20P`20`20`20`20`20Permanent`20game X`20`20`20`20`20`20`20`20`20`20In`20addition,`20the`20Crawford`20rule`20indicat Vor`20`20is`20`20shown`20`20in X`20`20`20`20`20`20`20`20`20`20reverse`20`20video`20`20if`20`20the`20Crawford V`20rule`20game`20is`20currently X`20`20`20`20`20`20`20`20`20`20being`20played. X X`20`20`20`20`20Match`20Score X`20`20`20`20`20`20`20`20`20`20The`20current`20match`20score`20is`20displayed V`20next`20to`20the`20`20board X`20`20`20`20`20`20`20`20`20`20label,`20`20as`20`20is`20the`20number`20of`20poi Vnts`20the`20match`20plays`20to. X`20`20`20`20`20`20`20`20`20`20If`20the`20game`20being`20displayed`20is`20not V`20`20part`20`20of`20`20a`20`20match, X`20`20`20`20`20`20`20`20`20`20this`20area`20is`20blanked`20out. X X`20`20`20`20`20Pip`20Count X`20`20`20`20`20`20`20`20`20`20Near`20the`20right`20of`20the`20screen`20on`20th Ve`20second`20line`20is`20`20the X`20`20`20`20`20`20`20`20`20`20pip`20count`20for`20the`20board`20being`20displa Vyed. X X`20`20`20`20`20Board X`20`20`20`20`20`20`20`20`20`20The`20board`20is`20`20displayed`20`20near`20`20t Vhe`20`20left`20`20side`20`20of`20`20the X`20`20`20`20`20`20`20`20`20`20screen,`20`20and`20`20takes`20`20up`20`20most V`20`20of`20`20the`20screen`20area.`20`20It X`20`20`20`20`20`20`20`20`20`20consists`20of`20an`20outline,`20drawn`20`20with V`20`20ASCII`20`20characters, X`20`20`20`20`20`20`20`20`20`20and`20`2028`20"points"`20where`20pieces`20can V`20reside.`20`20Of`20these,`2024 X`20`20`20`20`20`20`20`20`20`20are`20the`20normal`20points`20making`20up`20the V`20main`20`20body`20`20of`20`20the X`20`20`20`20`20`20`20`20`20`20board`20`20(numbered`201-24),`202`20are`20the V`20"BAR"`20points,`20located X`20`20`20`20`20`20`20`20`20`20between`20the`20left`20and`20right`20halves`20of V`20`20the`20`20main`20`20board, X`20`20`20`20`20`20`20`20`20`20and`20`202`20`20are`20the`20"OFF"`20points`20(wh Vere`20pieces`20go`20when`20they X`20`20`20`20`20`20`20`20`20`20are`20borne`20off),`20located`20`20to`20`20the V`20`20left`20`20of`20`20the`20`20board. X`20`20`20`20`20`20`20`20`20`20Pieces`20`20are`20represented`20by`20upper`20or V`20lower`20case`20letters. X`20`20`20`20`20`20`20`20`20`20To`20help`20you`20remember`20which`20direction V`20you`20`20are`20`20playing, X`20`20`20`20`20`20`20`20`20`20there`20are`20arrows`20drawn`20at`20the`20four V`20corners`20of`20the`20board X`20`20`20`20`20`20`20`20`20`20indicating`20`20your`20`20direction`20`20of`20 V`20play.`20`20`20The`20`20`20bar`20`20`20is X`20`20`20`20`20`20`20`20`20`20indicated`20`20by`20`20the`20word`20"BAR";`20thi Vs`20changes`20to`20"---"`20if X`20`20`20`20`20`20`20`20`20`20neither`20player`20can`20hit. X X`20`20`20`20`20Doubling`20Cube X`20`20`20`20`20`20`20`20`20`20The`20current`20value`20of`20the`20doubling`20cu Vbe`20is`20displayed`20`20in X`20`20`20`20`20`20`20`20`20`20reverse`20video`20on`20the`20left`20side`20of V`20the`20screen.`20`20The`20cube X`20`20`20`20`20`20`20`20`20`20will`20appear`20next`20to`20the`20home`20board V`20of`20the`20owner`20of`20`20the X`20`20`20`20`20`20`20`20`20`20cube,`20`20or`20`20in`20the`20middle`20if`20neit Vher`20player`20has`20doubled. X`20`20`20`20`20`20`20`20`20`20For`20example,`20if`20the`20player`20whose`20hom Ve`20board`20is`20`20at`20`20the X`20`20`20`20`20`20`20`20`20`20bottom`20of`20the`20screen`20doubled`20last,`20t Vhe`20cube`20will`20appear X`20`20`20`20`20`20`20`20`20`20beside`20the`20top`20of`20the`20board. X X X XSun`20Release`204.1`20`20`20Last`20change:`20October`206,`201992`20`20`20`20 V`20`20`20`20`20`20`20`20`20`20`20`20`20`206 X X X X X X XLDB(1)`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20USER`20COMMANDS V`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20LDB(1) X X X X`20`20`20`20`20Move`20Blocks +-+-+-+-+-+-+-+- END OF PART 1 +-+-+-+-+-+-+-+-