home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Source Code 1994 March
/
Source_Code_CD-ROM_Walnut_Creek_March_1994.iso
/
compsrcs
/
games
/
vmsnet
/
ldb
/
part01
< prev
next >
Wrap
Internet Message Format
|
1993-04-07
|
52KB
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 <ake@dayton.saic.com>)
$!
$! 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<space`20bar>`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<return>`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 +-+-+-+-+-+-+-+-