15.0 THE CODE

15.0 THE CODE #

15.1 #

The considerations of 14.0 provide the basis for a complete classification of the contents of M, i.e. they enumerate a system of successive disjunctions which give together this classification. This classification will put us into the position to formulate the code which effects the logical control of CC, and hence of the entire device.

Let us therefore restate the pertinent definitions and disjunctions.

The contents of M are the memory units, each one being characterized by the presence or absence of a stimulus. It can be used to represent accordingly the binary digit 1 or 0, and we will at any rate designate its content by the binary digit i = 1 or 0 to which it corresponds in this manner. (cf. 12.2 and 12.5 with 7.6.) These units are grouped together to form 32-unit minor cycles, and these minor cycles are the entities which will acquire direct significance in the code which we will introduce. (cf. 12.2.) We denote the binary digits which make up the 32 units of a minor cycle, in their natural temporal sequence, by i0, i1, i2,…, i31. The minor cycles with these units may be written I = (i0, i1, i2,…, i31) = (iv).

Minor cycles fall into two classes: Standard numbers and orders. (cf. 12.2 and 14.1.) These two categories should be distinguished from each other by their respective first units (cf. 12.2) i.e. by the value of i0. We agree accordingly that i0 = 0 is to designate a standard number, and i0 = 1 an order.

15.2 #

The remaining 31 units of a standard number express its binary digits and its sign. It is in the nature of all arithmetical operations, specifically because of the role of carry digits, that the binary digits of the numbers which enter into them must be fed in from right to left, i.e. those with the lowest positional values first. (This is so because the digits appear in a temporal succession and not simultaneously, cf. 7.1. The details are most simply evident in the discussion of the adder in 7.2.) The sign plays the role of the digit farthest left, i.e. of the highest positional value (cf. 8.1). Hence it comes last, i.e. i31 = 0 designates the + sign and i31 = 1 the − sign. Finally by 9.2 the binary point follows immediately after the sign digit, and the number ξ thus represented must be moved mod 2 into the interval −1, 1. That is ξ = i31i30i29 ··· i1 = Σv=1 31iv2v − 31 (mod 2), −1 ≤ ξ < 1.

15.3 #

The remaining 31 units of an order, on the other hand, must express the nature of this order. The orders were classified in 14.1 into four classes (a)–(d), and these were subdivided further as follows: (a) in 11.4, (b) in 14.2, (b) and (c) in 14.3, 14.4, and the second remark in 14.5. Accordingly, the following complete list of orders obtains: (α) Orders for CC to instruct CA to carry out one of its ten specific operations enumerated in 11.4. (This is (a) in 14.1.) We designate these operations by the numbers 0, 1, 2, ··· , 9 in the order in which they occur in 11.4, and thereby place ourselves into the position to refer to any one of them by its number w = 0, 1, 2, ··· , 9, which is best given as a 4-digit binary number (cf. however, {}). Regarding the origin of the numbers which enter (as variables) into these operations and the disposal of the result, this should be said: According to 11.4, the former comes from Ica and Jca and the latter goes to Oca, all in CA (cf. Figures 16, 17), Jca is fed through Ica, and Ica is the original input and Oca the final output of CA. The feeding into Ica will be described in (β), (γ), (θ) below, the disposal from Oca will be described in (δ), (є), (θ) below. Certain operations are so fast (they can be handled so as to consume only the duration of a minor cycle) that it is worthwhile to bypass Oca when disposing of their result. (cf. {}.) The provisions for clearing Ica and Jca were described in 11.4. Regarding the clearing of Oca this ought to be said: It would seem natural to clear Oca each time after its contents have been transferred into M (cf. below). There are, however, cases when it is preferable not to transfer out from Oca, and not to clear the contents of Oca. Specifically: In the discussion of the operation s in 11.3 it turned out to be necessary to hold in this manner in Oca the result of a previous operation −. Alternatively, the previous operation might also be +, i, j, or even ×, (cf. there). Another instance: If a multiplication xy is carried out, with an Oca which contains, say, z at the beginning of the operation, then actually z + xy will form in Oca (cf. the discussion of multiplication in 7.7). It may therefore be occasionally desirable to hold the result of an operation, which is followed by a multiplication, in Oca. Formation of sums Σ xy is one example of this. We need therefore an additional digit c = 0, 1 to indicate whether Oca should or should not be cleared after the operation. We let c = 0 express the former, and c = 1 the latter. (β) Orders for CC to cause the transfer of a standard number from a definite minor cycle in M to CA. (This is (b) in 14.1, type (bj) of 14.2.) The minor cycle is defined by the two indices µ, ρ (cf. the third remark in 14.5). The transfer into CA is, more precisely, one into Ica (cf. (α) above). (γ) Orders for CC to cause the transfer of a standard number which follows immediately upon the order, into CA. (This is the immediate transfer of the second remark in 14.5 in the variant which corresponds to (β) above.) It is simplest to consider a minor cycle containing a standard number (the kind analyzed in 15.2) as such an order per se. This modifies the statement loc. cit. somewhat: The standard number in question is next in the minor cycle following immediately upon a minor cycle which has just given an order to CC, then the number will automatically operate as an immediate transfer order of the type described. (cf. also the pertinent remarks in (є) and in (ζ) below.) The transfer into CA is again one into Ica (cf. (α) or (β) above). (δ) Orders for CC to cause the transfer of a standard number from CA to a definite minor cycle in M. (This is (b) in 14.1, type (bjj) in 14.2.) The minor cycle in M is defined by the two indices µ, ρ, as in (β) above. The transfer from CA is, more precisely, one from Oca—this was discussed, together with the necessary explanations and qualifications, in (α) above. (є) Orders for CC to cause the transfer of a standard number from CA into the minor cycle which follows immediately upon the one containing this order. (This is the immediate transfer, cf. the second remark in 14.5, in the variant which corresponds to (δ) above.) The transfer from CA is again one from Oca (cf. (α) or (δ) above). In this case the CC connection passes from this transfer order on to the next minor cycle into which the standard number in question is just being sent. There would be no point in CC now obeying (γ), and sending this number back into CA—also, there might be timing difficulties. It is best, therefore, to except this case explicitly from the operation of (γ). i.e.: (γ) is invalid if it follows immediately upon an (є). (θ) Orders for CC to cause the transfer of a standard number from CA into CA. (This is an operation of CA, the usefulness of which we recognized in 11.2. Cf. also {}.) More precisely, from

Oca into Ica (cf. (α) above). (ζ) Orders for CC to transfer its own connection with M to a definite minor cycle (elsewhere) in M. (This is (c) in 14.1.) The minor cycle in M is defined by the two indices µ, ρ, as in (β) above. Note that a (β) could be replaced by a (ζ), considering (γ). The only difference is that (ζ) is a permanent transfer, while (β) is a transient one. This may serve to place additional emphasis on the corresponding considerations of 14.3 and 14.4. (η) Orders controlling the operation of the input and the output of the device (i.e. I of 2.7 and O of 2.8) (This is (d) in 14.1.) As indicated in 14.1, the discussion of these orders is better delayed (cf. {}). 15.4Let us now compare the numbers of digits necessary to express these orders with the number of available digits in a minor cycle—31, as stated at the beginning of 15.3. To begin with we have in (α)–(η) 8 types of order, to distinguish these from each other requires 3 digits. Next, the types (α)–(ζ) (we postpone (η), cf. above) have these requirements: (α) must specify the number w, i.e. 4 digits, plus the digit c—all together 5 digits. (β), as well as (δ) and (ζ), must specify the numbers µ and ρ, i.e. 8 + 5 = 13 digits. (γ) is outside this category. (є), as well as (θ), requires no further specifications. Neither of these uses the 31 available digits very efficiently. Consequently we might consider putting several such orders into one minor cycle. On the other hand such a tendency to pool orders should be kept within very definite limits, for the following reasons. First, pooling several orders into one minor cycle should be avoided, if it requires the simulta- neous performance of several operations (i.e. violates the principle of 5.6.) Second, it should also be avoided if it upsets the timing of the operations. Third, the entire matter is usually not important from the point of view of the total memory capacity: Indeed, it reduces the number of those minor cycles only, which are used for logical instructions, i.e. for the purpose (b) in 2.4, and these represent usually only a small fraction of the total capacity of M (cf. (b) in 12.3 and {}). Hence the pooling of orders should rather be carried out from the point of view of simplifying the logical structure of the code.

15.5 #

These considerations discourage pooling several orders of the type (α)—besides this would often not be logically possible either, without intervening orders of the types (β)–(ζ). Combining two orders of the types (β), (δ), (ζ) is also dubious from the above points of view, besides it would leave only 31 − 3 − 13 − 13 = 2 digits free, and this (although it could be increased by various tricks to 3) is uncomfortably low: It is advisable to conserve some spare capacity in the logical part of the code (i.e. in the orders), since later on changes might be desirable. (e.g. it may become advisable to increase the capacity of M, i.e. the number 256 of major cycles, i.e. the number 8 of digits of µ. For another reason cf. {}. The best chance lies in pooling an operation order (α) with orders controlling the transfer of its variables into CA or the transfer of its result out of CA. Both types may involve 13 digit orders (namely (β) or (δ)), hence we cannot count on pooling (α) with more than one such order (cf. the above estimate plus the 5 digits required by (α)!). Now one (α) usually requires transferring two variables into CA, hence the simplest systematical procedure consists in pooling (α) with the disposal of its result. I.e. (α) with (δ) or (є) or (θ). It should be noted that every (δ), (є) (θ), i.e. transfer from CA, must be preceded by an (α), and every (β), (γ), i.e. transfer into CA, must be followed by an (α). Indeed, these transfers are always connected with an (α) operation, the only possible exception would be an M to M transfer, routed through (α), but even this involves an (α) operation (i or j in 11.4, cf. there and in 11.2). Consequently orders (δ), (є), (θ) will always occur pooled with (α), and orders (β), (γ) will always occur alone. (α) too may occasionally occur alone: If the result of the operation ordered by (α) is to be held in Oca (cf. the last part of (α) in 15.3), then it will usually not be necessary or desirable to dispose of this result in any other way (cf. the examples loc. cit.). We shall keep both possibilities open: There may or may not be an additional disposal of the result, and in the second case (α) will not be pooled with any disposal order. Orders (ζ) are of

a sufficiently exceptional logical character, to justify that they too always occur alone. Thus we have—if we disregard (γ), which is in reality a standard number—the 7 following types of orders: (α) + (δ), (α) + (є), (α) + (θ), (α), (β), (ζ), (η). They require 5 + 13 = 18, 5, 5, 5, 13, 13 digits (we disregard (η), which will be discussed later) plus 3 digits to distinguish the types from each other, plus one digit (i0 = 1) to express that an order is involved. Hence the totals are 22, 9, 9, 9, 17, 17 digits. This is an average efficiency of ≈ 50% in utilizing the 32 digits of a minor cycle. This efficiency can be considered adequate, in view of the third remark of 15.4, and it leaves at the same time a comfortable spare capacity (cf. the beginning of 15.5).

15.6 #

We are now in the position to formulate our code. This formulation will be presented in the following manner:

We propose to characterize all possible minor cycles which may be used by the device. These are standard numbers and orders, already enumerated and described in 15.1–15.5. In the table which follows we will specify the four following things for each possible minor cycle: (I) The type, i.e. its relationship to the classification (α)–(η) of 15.3, and to the pooling procedures of 15.5; (II) The meaning, as described in 15.1–15.5; (III) The short symbol, to be used in verbal or written discussions of the code, and in particular in all further analyses of this paper, and when setting up problems for the device (cf. {}); (IV) The code symbol, i.e. the 32 binary digits i0, i1, i2,… , i31 which correspond to the 32 units of the minor cycle in question. However, there will only be partial statements on this last point at this time, the precise description will be given later (cf. {}).

Regarding the numbers (binary integers) which occur in these symbols, we observe this: These numbers are µ, ρ, w, c. We will denote their binary digits (in the usual, left to right, order) by u7,… , u0; ρ4,…, ρ0; w3,…, w0; c.

Remark: Orders w (or wh) → µρ (or f) transfer a standard number ξ from CA into a minor cycle. If this minor cycle is of the type Nξ (i.e. i0 = 0), then it should clear its 31 digits representing ξj, and accept the 31 digits of ξ. If it is a minor cycle ending in µρ (i.e. i0 = 1, order w → µρ or wh → µρ or A ← µρ or C ← µρ), then it should clear only its 13 digits representing µρ, and accept the last 13 digits of ξ!