blob: 2255e72daf549ff542a4413c8f996b17b370d2ec (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
|
* 1.3.2 Ex. 14. Work in progress...
ORIG 0
Y CON 0 Y is stored here.
G CON 0 G will get stored here.
C CON 0 C will get stored here.
X CON 0 X will get stored here.
Z CON 0 Z will get stored here.
D CON 0 D will get stored here.
E CON 0 E will get stored here.
N CON 0 N will get stored here.
ORIG 2000
POUT ALF " 23 "
ALF "MARCH"
ALF ", 20"
ALF "28 "
ORIG 1000
START JMP DOE
* Date of Easter routine. Assumes Y is in address 0.
DOE LDX Y Compute G.
ENTA 0
DIV =19=
INCX 1
STX G
ENTA 0 Compute C.
LDX Y
DIV =100=
INCA 1
STA C
ENTA 3 Compute X.
MUL C
DIV =4=
DECA 12
STA X
ENTA 8 Compute Z.
MUL C
INCX 5
DIV =25=
DECA 5
STA Z
ENTA 5 Compute D.
MUL Y
DIV =4=
SUB X
DECA 10
STA D
ENTA 11 Compute E.
MUL G
INCX 20
SLC 5 Move value to reg. A from reg. X.
ADD Z
SUB X
SRC 5 Move value to reg. X from reg. A.
DIV =30=
CMPX =24= Compare E with 24.
JE INCRE
CMPX =25= Compare E with 25.
JNE STRE
LD1 G
CMP1 =11=
JLE STRE
INCRE INCX 1 Increment E by 1.
STRE STX E
ENTA 44 Compute N.
SUB E
CMPA =21=
JGE STRN
INCA 30
STRN STA N
LDA D Penultimate step.
ADD N
SRC 5 Move value to reg. X from reg. A.
ENTA 0 Clear reg. A
DIV =-7=
SLC 5 Move value to reg. X from reg. X
ADD =7=
ADD N
ENTX 0 Clear reg. X.
CMPA =31=
JLE DAY
SUB =31=
ENT1 1 Means month is April.
DAY CHAR
SRC 5 Build and store DD
SLA 3
SRA 3
STA POUT(3:4)
YEAR LDA Y
CHAR
SLC 3
SLA 2 Build and store higher YYY
SRA 2
STA POUT+2(3:5)
SLC 2 Build and store lower YY
SLA 3
SRA 3
STA POUT+3(1:2)
OUT 2000(18)
STOP HLT
END START
|