996
|
1 Although the non-binary libraries syslib.[3-7]i are meant to be
|
|
2 treated as workalikes with the original system library, it should be
|
|
3 noted that several of them contain some new routines. These are used
|
|
4 internally by the standard routines, and are there to provide methods
|
|
5 for doing a few things that are taken for granted in base 2. While
|
|
6 they were not intended to be used by other programs, there is nothing
|
|
7 stopping them from being so used.
|
|
8
|
|
9 The even bases have routines to double and halve values, and use a
|
|
10 third variable as a carry/borrow flag. Since halving in odd bases
|
|
11 produces infinite fractions, bases 5 and 7 instead use a single-digit
|
|
12 multiplication routine. (Base 3 multiplication is still simple enough
|
|
13 to be handled without a separate support routine.)
|
|
14
|
|
15 syslib.4i
|
|
16 ---------
|
|
17 (1200) .2 <- .1 times two
|
|
18 .3 <- #0 if no overflow, otherwise .3 contains the quart that
|
|
19 was "shifted" off the left end
|
|
20 (1210) .2 <- .1 divided by two
|
|
21 .3 <- #0 if .1 is even, otherwise .3 contains #2
|
|
22 (1700) :2 <- :1 times two
|
|
23 .1 <- #0 if no overflow, otherwise .1 contains the quart that
|
|
24 was "shifted" off the left end
|
|
25 (1710) :2 <- :1 divided by two
|
|
26 .1 <- #0 if .1 is even, otherwise .1 contains #2
|
|
27
|
|
28 syslib.5i
|
|
29 ---------
|
|
30 (1720) :2 <- :1 times the least significant quint of .1 (the remaining
|
|
31 quints of .1 are ignored)
|
|
32 .2 <- #0 if no overflow, otherwise .2 contains the quint that
|
|
33 was "shifted" off the left end
|
|
34
|
|
35 syslib.6i
|
|
36 ---------
|
|
37 (1200) .2 <- .1 times two
|
|
38 .3 <- #0 if no overflow, otherwise .3 contains the sext that
|
|
39 was "shifted" off the left end
|
|
40 (1210) .2 <- .1 divided by two
|
|
41 .3 <- #0 if .1 is even, otherwise .3 contains #3
|
|
42 (1700) :2 <- :1 times two
|
|
43 .1 <- #0 if no overflow, otherwise .1 contains the sext that
|
|
44 was "shifted" off the left end
|
|
45 (1710) :2 <- :1 divided by two
|
|
46 .1 <- #0 if .1 is even, otherwise .1 contains #3
|
|
47
|
|
48 syslib.7i
|
|
49 ---------
|
|
50 (1720) :2 <- :1 times the least significant sept of .1 (the remaining
|
|
51 septs of .1 are ignored)
|
|
52 .2 <- #0 if no overflow, otherwise .2 contains the sept that
|
|
53 was "shifted" off the left end
|