Research V4 development
authorRobert Morris <rhm@research.uucp>
Fri, 16 Nov 1973 23:52:04 +0000 (18:52 -0500)
committerRobert Morris <rhm@research.uucp>
Fri, 16 Nov 1973 23:52:04 +0000 (18:52 -0500)
Work on file man/man1/dc.1

Synthesized-from: v4

man/man1/dc.1 [new file with mode: 0644]

diff --git a/man/man1/dc.1 b/man/man1/dc.1
new file mode 100644 (file)
index 0000000..5631def
--- /dev/null
@@ -0,0 +1,146 @@
+.th DC I 1/15/73
+.sh NAME
+dc \*- desk calculator
+.sh SYNOPSIS
+.bd dc
+[ file ]
+.sh DESCRIPTION
+.it Dc
+is an arbitrary precision integer arithmetic package.
+The overall structure of
+.it dc
+is
+a stacking (reverse Polish) calculator.
+The following constructions are recognized
+by the calculator:
+.s3
+.lp +10 10
+number The value of the number is pushed on the stack.
+A number is an unbroken string of the digits 0-9.
+It may be preceded by an underscore \*_ to input a
+negative number.
+.s3
+.lp +10 10
++|\*-|*|/|%|^  The top two values on the stack are added
+(+),
+subtracted
+(\*-),
+multiplied (*),
+divided (/),
+remaindered (%),
+or exponentiated (^).
+The two entries are popped off the stack;
+the result is pushed on the stack in their place.
+.s3
+.lp +10 10
+\fBs\fIx\fR    The
+top of the stack is popped and stored into
+a register named
+.it x,
+where
+.it x
+may be any character.
+.s3
+.lp +10 10
+\fBl\fIx\fR    The
+value in register
+.it x
+is pushed on the stack.
+The register
+.it x
+is not altered.
+All registers start with zero value.
+.s3
+.lp +10 10
+\fBd\fR        The top value on the stack is pushed on the stack.
+Thus the top value is duplicated.
+.s3
+.lp +10 10
+\fBp\fR        The top value on the stack is printed.
+The top value remains unchanged.
+.s3
+.lp +10 10
+\fBf\fR        All values on the stack and in registers are printed.
+.s3
+.lp +10 10
+\fBq\fR        exits the program. If executing a string, the nesting level is
+popped by two.
+.s3
+.lp +10 10
+\fBx\fR        treats the top element of the stack as a character string
+and executes it as a string of dc commands.
+.s3
+.lp +10 10
+\fB[|...|]\fR  puts the bracketed ascii string onto the top of the stack.
+.s3
+.lp +10 10
+\fI<x||=x||>x\fR       The
+top two elements of the stack are popped and compared.
+Register
+.it x
+is executed if they obey the stated
+relation.
+.s3
+.lp +10 10
+\fBv\fR        replaces the top element on the stack by its square root.
+.s3
+.lp +10 10
+\fB!\fR        interprets the rest of the line as a UNIX command.
+.s3
+.lp +10 10
+\fBc\fR        All values on the stack are popped.
+.s3
+.lp +10 10
+\fBi\fR        The top value on the stack is popped and used as the
+number radix for further input.
+.s3
+.lp +10 10
+\fBo\fR        The top value on the stack is popped and used as the
+number radix for further output.
+.s3
+.lp +10 10
+\fBz\fR        The stack level is pushed onto the stack.
+.s3
+.lp +10 10
+\fB?\fR        A line of input is taken from the input source (usually the console)
+and executed.
+.s3
+.lp +10 10
+new-line       ignored
+except as the name of a register or to end the
+response to a
+.bd ?.
+.s3
+.lp +10 10
+space  ignored
+except as the name of a register or to terminate a number.
+.s3
+.i0
+If a file name is given, input is taken from that file until
+end-of-file, then input is taken from the console.
+An example which prints the first ten values of n! is
+.nf
+.s3
+.in +3
+.bd "[la1+dsa*pla10>x]sx"
+.bd "0sa1"
+.bd lxx
+.s3
+.fi
+.in -3
+.sh FILES
+/etc/msh       to implement `!'
+.sh DIAGNOSTICS
+(x) ? for unrecognized character x.
+.br
+(x) ? for not enough elements on the stack to do what was asked
+by command x.
+.br
+`Out of space' when the free list is exhausted (too many digits).
+.br
+`Out of headers' for too many numbers being kept around.
+.br
+`Out of pushdown' for too many items on the stack.
+.br
+`Nesting Depth' for too many levels of nested execution.
+.sh BUGS