Initial data commit
This commit is contained in:
parent
72d218235f
commit
f23f22d71c
199087 changed files with 3378941 additions and 0 deletions
99
Task/Catalan-numbers/EDSAC-order-code/catalan-numbers.edsac
Normal file
99
Task/Catalan-numbers/EDSAC-order-code/catalan-numbers.edsac
Normal file
|
|
@ -0,0 +1,99 @@
|
|||
[Calculation of Catalan numbers.
|
||||
EDSAC program, Initial Orders 2.]
|
||||
|
||||
[Define where to store the list of Catalan numbers.]
|
||||
T 54 K [store address in location 54, so that values
|
||||
are accessed by code letter C (for Catalan)]
|
||||
P 200 F [<------ address here]
|
||||
|
||||
[Modification of library subroutine P7.
|
||||
Prints signed integer up to 10 digits, right-justified.
|
||||
54 storage locations; working position 4D.
|
||||
Must be loaded at an even address.
|
||||
Input: Number is at 0D.]
|
||||
T 56 K
|
||||
GKA3FT42@A47@T31@ADE10@T31@A48@T31@SDTDH44#@NDYFLDT4DS43@TF
|
||||
H17@S17@A43@G23@UFS43@T1FV4DAFG50@SFLDUFXFOFFFSFL4FT4DA49@T31@
|
||||
A1FA43@G20@XFP1024FP610D@524D!FO46@O26@XFO46@SFL8FT4DE39@
|
||||
|
||||
[Main routine]
|
||||
T 120 K [load at 120]
|
||||
G K [set @ (theta) to load address]
|
||||
[Variables]
|
||||
[0] P F [index of Catalan number]
|
||||
[Constants]
|
||||
[1] P 7 D [maximum index required]
|
||||
[2] P D [single-word 1]
|
||||
[3] P 2 F [to change addresses by 2]
|
||||
[4] H #C [these 3 are used to manufacture EDSAC orders]
|
||||
[5] T #C
|
||||
[6] V #C
|
||||
[7] K 4096 F [(1) add to change T order into H order
|
||||
(2) teleprinter null]
|
||||
[8] # F [figures shift]
|
||||
[9] ! F [space]
|
||||
[10] @ F [carriage return]
|
||||
[11] & F [line feed]
|
||||
|
||||
[Enter with acc = 0]
|
||||
[12] O 8 @ [set teleprinter to figures]
|
||||
T 4 D [clear 5F and sandwich bit]
|
||||
A 2 @ [load single-word 1]
|
||||
T 4 F [store as double word at 4D; clear acc]
|
||||
[Here with index in acc, Catalan number in 4D]
|
||||
[16] U @ [store index]
|
||||
L 1 F [times 4 by shifting]
|
||||
A 5 @ [make T order to store Catalan number]
|
||||
U 27 @ [plant in code]
|
||||
A 7 @ [make H order with same address]
|
||||
U 45 @ [plant in code]
|
||||
S 47 @ [make A order with same address]
|
||||
T 34 @ [plant in code]
|
||||
A 6 @ [load V order for start of list]
|
||||
T 46 @ [plant in code]
|
||||
A 4 D [Catalan number from temp store]
|
||||
[27] T #C [store in list (manufactured order)]
|
||||
T D [clear 1F and sandwich bit]
|
||||
A @ [load single-word index]
|
||||
T F [store as double word at 0D]
|
||||
[31] A 31 @ [for return from print subroutine]
|
||||
G 56 F [print index]
|
||||
O 9 @ [followed by space]
|
||||
[34] A #C [load Catalan number (manufactured order)]
|
||||
T D [to 0D for printing]
|
||||
[36] A 36 @ [for return from print subroutine]
|
||||
G 56 F [print Catalan number]
|
||||
O 10 @ [followed by new line]
|
||||
O 11 @
|
||||
T 4 D [clear partial sum]
|
||||
A @ [load index]
|
||||
S 1 @ [reached the maximum?]
|
||||
E 64 @ [if so, jump to exit]
|
||||
[Inner loop to compute sum of products C{i}*C(n-1}]
|
||||
[44] T F [clear acc]
|
||||
[45] H #C [C{n-i} to mult reg (manufactured order)]
|
||||
[46] V #C [acc := C{i}*C{n-i} (manufactiured order)]
|
||||
[Multiply product by 2^34 (see preamble). The 'L F' order is
|
||||
also exploited above to convert an H order into an A order.]
|
||||
[47] L F [shift acc left by 13 (the maximum available)]
|
||||
L F [shift 13 more]
|
||||
L 64 F [shift 8 more, total 34]
|
||||
A 4 D [add partial sum]
|
||||
T 4 D [update partial sum]
|
||||
A 46 @ [inc i in V order]
|
||||
A 3 @
|
||||
T 46 @
|
||||
A 45 @ [dec (n - i) in H order]
|
||||
S 3 @
|
||||
U 45 @
|
||||
S 4 @ [is (n - i) now negative?]
|
||||
E 44 @ [if not, loop back]
|
||||
[Here with latest Catalan number in temp store 4D]
|
||||
T F [clear acc]
|
||||
A @ [load index]
|
||||
A 2 @ [add 1]
|
||||
E 16 @ [back to start of outer loop]
|
||||
[64] O 7 @ [exit; print null to flush teleprinter buffer]
|
||||
Z F [stop]
|
||||
E 12 Z [define entry point]
|
||||
P F [acc = 0 on entry]
|
||||
Loading…
Add table
Add a link
Reference in a new issue