Trailing-Edge
-
PDP-10 Archives
-
decuslib20-04
-
decus/20-0133/biorth.lpt
There is 1 other file named biorth.lpt in the archive. Click here to see a list.
BIORTH -- PROGRAM TO CHART BIORHYTHMS %2(6) MACRO %50A(441)-2 14:08 23-FEB-77 PAGE 1
BIORTH MAC 3-FEB-77 13:19 B. SCHREIBER
1 SUBTTL B. SCHREIBER
2
3 SEARCH JOBDAT,UUOSYM,MACTEN,SCNMAC
4 .DIREC .XTABM
5 .DIRECT .OKOVL ;MACRO %50A WILL GET NUMBER ERROR
6 ;ON <ASCII/ /> OTHERWISE
7 SALL
8
9 ;BIORTH VERSION
10
11 000002 BIOVER==2 ;MAJOR VERSION
12 000006 BIOEDT==6 ;EDIT LEVEL
13 000000 BIOMIN==0 ;MINOR VERSION
14 000000 BIOWHO==0 ;WHO?
15
16 DEFINE CTITLE (WORD1,TEXT,MAJVER,VEREDT)
17 <WORD1 'TEXT'MAJVER(VEREDT)>
18
19 CTITLE (TITLE,<BIORTH -- PROGRAM TO CHART BIORHYTHMS %>,\BIOVER,\BIOEDT)
20
21 000137 LOC .JBVER
22 000200 000006 %%BIOV==:VRSN. (BIO)
23 000137 000200 000006 EXP %%BIOV
24
25 ;SHOW UNIVERSAL VERSION NUMBERS
26
27 043000 000443 %%JOBD==%%JOBD ;JOBDAT
28 101100 000225 %%UUOS==:%%UUOS ;UUOSYM
29 000100 000024 %%MACT==:%%MACT ;MACTEN
30 000700 000203 %%SCNM==:%%SCNM ;SCNMAC
31
32 ;REQUEST REST OF LOADING
33
34 .TEXT &/SEGMENT:LOW/SEARCH REL:ALCOR,REL:SCN7B,REL:HELPER,SYS:FORLIB&
BIORTH -- PROGRAM TO CHART BIORHYTHMS %2(6) MACRO %50A(441)-2 14:08 23-FEB-77 PAGE 2
BIORTH MAC 3-FEB-77 13:19 ASSEMBLY / ACCUMULATOR DEFINITIONS
35 SUBTTL ASSEMBLY / ACCUMULATOR DEFINITIONS
36
37 ND LN$PDL,^D200 ;PDL SIZE
38 ND MY$NAM,'BIORTH' ;MY NAME
39 ND MY$PFX,'BIO' ;MY MESSAGE PREFIX
40 ND MX$CRT,4 ;NEARNESS TO MIDDLE TO BE CONSIDERED CRITICAL
41 ND PLTWID,^D60 ;WIDTH OF PLOT
42 000036 PLTZER==PLTWID/2;MIDDLE OF PLOT
43 ND PLTBSZ,PLTWID/5+1 ;# WORDS REQUIRED TO STORE ONE LINE
44 ND ICYCLE,^D33 ;DAYS/INTELLECTUAL CYCLE
45 ND ECYCLE,^D28 ;DAYS/EMOTIONAL CYCLE
46 ND PCYCLE,^D23 ;DAYS/PHYSICAL CYCLE
47 ND FT$OPT,0 ;NON-ZERO TO SCAN SWITCH.INI
48 ND FT$DDT,0 ;NON-ZERO FOR DEBUGGING
49
50 ;DEFINE THE ACCUMULATORS
51
52 DEFINE AC$ (X)
53 <X=ZZ
54 ZZ==ZZ+1
55 X=X>
56
57 000000 ZZ==0
58
59 000000 AC$ (X) ;ARGUMENTS FROM FORTRAN SUBRS (SOMETIMES)
60 000001 AC$ (T1) ;T1-4 ARE TEMPORARY
61 000002 AC$ (T2)
62 000003 AC$ (T3)
63 000004 AC$ (T4)
64 000005 AC$ (P1) ;P1-4 ARE PERMANENT--MUST BE PRESERVED
65 000006 AC$ (P2)
66 000007 AC$ (P3)
67 000010 AC$ (P4)
68 000011 AC$ (F) ;FLAGS
69 000012 AC$ (D) ;DATE
70 000007 N==P3 ;NUMBER/WORD FROM SCAN
71 000010 C==P4 ;CHARACTER FROM SCAN
72 000017 P=17 ;PUSHDOWN LIST PTR
BIORTH -- PROGRAM TO CHART BIORHYTHMS %2(6) MACRO %50A(441)-2 14:08 23-FEB-77 PAGE 3
BIORTH MAC 3-FEB-77 13:19 FLAG DEFINITIONS
73 SUBTTL FLAG DEFINITIONS
74
75 ;FLAGS IN LH OF F
76
77 DEFINE FLAG$ (FLG)
78 <FL$'FLG==ZZ
79 ZZ==ZZ_-1
80 FL$'FLG==FL$'FLG>
81
82 400000 ZZ==(1B0)
83
84 400000 FLAG$ (FIL) ;ON IF PLOTTING TO A FILE
85 200000 FLAG$ (HVB) ;ON WHEN HAVE A BIRTHDAY
86 100000 FLAG$ (BKW) ;ON IF PLOTTING BACKWARDS IN TIME
87 040000 FLAG$ (CRT) ;ON IF FOUND TO BE A CRITICAL DAY
88
89 ;I/O CHANNELS
90
91 ;0 ;NEVER USED BY ME
92 000001 OUTC==1 ;FOR OUTPUT
93
94 ;OPDEFINES
95
96 260740 000000 OPDEF CALL [PUSHJ P,] ;SUBROUTINE CALL
97 132000 000233 OPDEF FLOAT. [FSC 233] ;FLOAT # IN AC
98
99 ;OTHER STUFF
100
101 000020 ATSIGN==(1B13) ;THE INDIRECT BIT
BIORTH -- PROGRAM TO CHART BIORHYTHMS %2(6) MACRO %50A(441)-2 14:08 23-FEB-77 PAGE 5
BIORTH MAC 3-FEB-77 13:19 ERROR MACRO DEFINITIONS
102 SUBTTL ERROR MACRO DEFINITIONS
103
104 ;ERROR. ($FLGS,$PFX,$MSG)
105 ;
106 ;$FLGS IS THE COMBINITATION OF THE FOLLOWING BITS:
107
108 000000 EF$ERR==0 ;ERROR--PREFIX MSG WITH ?, RETURN CONTROL AFTER CALL
109 000400 EF$FTL==400 ;FATAL ERROR--ABORT AND RESTART
110 000200 EF$WRN==200 ;WARNING MESSAGE--CONTINUE
111 000100 EF$INF==100 ;INFORMATIVE MESSAGE--CONTINUE
112 000040 EF$NCR==40 ;NO FREE CRLF AFTER MESSAGE
113
114 DEFINE ETYP ($TYP)
115 <ZZ==ZZ+1
116 EF$'$TYP==ZZ>
117
118 000000 ZZ==0 ;TYPE CODES ARE FROM 1-37
119
120 000001 ETYP (DEC) ;TYPE T1 IN DECIMAL AT END OF MESSAGE
121 000002 ETYP (OCT) ;TYPE T1 IN OCTAL AT END OF MESSAGE
122 000003 ETYP (SIX) ;TYPE T1 IN SIXBIT AT END OF MESSAGE
123 000004 ETYP (PPN) ;TYPE T1 AS A PPN AT END OF MESSAGE
124 000005 ETYP (STR) ;T1 PTS TO ASCIZ STR TO TYPE AT END OF MESSAGE
125 000006 ETYP (FIL) ;T1 PTS TO SCAN FILE BLOCK TO TYPE AT END OF MSG
126 000007 ETYP (DAT) ;TYPE T1 AS A DATE AT END OF MESSAGE
127 000007 EF$MAX==ZZ ;MAX ERROR TYPE
128
129 IFG ZZ-37,<PRINTX ?TOO MANY ERROR TYPES>
130
131 ;$PFX IS THE 3-LETTER PREFIX FOR THE MESSAGE
132 ;$MSG IS THE MESSAGE ITSELF
133
134 300000 NOOP== (CAI) ;DEFINE NO-MEMORY-REFERENCE RIGHT-HAND NOOP
135
136 DEFINE ERROR. ($FLGS,$PFX,$MSG)
137 <CALL EHNDLR
138 XWD NOOP+<$FLGS>,[''$PFX'',,[ASCIZ @$MSG@ ] ]
139 >
140
141 ;WARN. FLGS,PFX,MSG
142
143 DEFINE WARN. ($FLGS,$PFX,$MSG)
144 <ERROR. (EF$WRN!$FLGS,$PFX,$MSG)>
145
146 ;INFO. FLGS,PFX,MSG
147
148 DEFINE INFO. ($FLGS,$PFX,$MSG)
149 <ERROR. (EF$INF!$FLGS,$PFX,$MSG)>
150
151 DEFINE M$FAIL ($PFX,$MSG)
152 <E$$'$PFX: ERROR. (EF$FTL,$PFX,$MSG)>
BIORTH -- PROGRAM TO CHART BIORHYTHMS %2(6) MACRO %50A(441)-2 14:08 23-FEB-77 PAGE 6
BIORTH MAC 3-FEB-77 13:19 OTHER MACRO DEFINITIONS
153 SUBTTL OTHER MACRO DEFINITIONS
154 ;SAVE$ SAVES DATA ON THE STACK
155
156 DEFINE SAVE$ (X)
157 <XLIST
158 IRP X,<PUSH P,X>
159 LIST>
160
161 ;RESTR$ RESTORES DATA FROM THE STACK
162
163 DEFINE RESTR$ (X)
164 <XLIST
165 IRP X,<POP P,X>
166 LIST>
167
168 ;MACRO TO ALLOCATE STORAGE IN THE LOW SEGMENT DATA BASE
169
170 DEFINE U ($NAME,$WORDS<1>)
171 <$NAME: BLOCK $WORDS>
172
173 ;STRNG$ (STRING) SENDS STRING TO OUTPUT THROUGH .TSTRG
174
175 DEFINE STRNG$ (S)
176 <MOVEI T1,[ASCIZ \S\]
177 CALL .TSTRG##>
178
179 ;ASCIZ$ (STRING) CREATES XLISTED ASCIZ STRING TO KEEP LISTING PRETTY
180
181 DEFINE ASCIZ$ (S)
182 <XLIST
183 ASCIZ \S\
184 LIST>
BIORTH -- PROGRAM TO CHART BIORHYTHMS %2(6) MACRO %50A(441)-2 14:08 23-FEB-77 PAGE 7
BIORTH MAC 3-FEB-77 13:19 MAIN-LINE PROGRAM
185 SUBTTL MAIN-LINE PROGRAM
186
187 000000' RELOC 0
188
189 000000' 634 01 0 00 000001 BIORTH: TDZA T1,T1 ;FLAG NORMAL START
190 000001' 201 01 0 00 000001 MOVEI T1,1 ;FLAG CCL START
191 000002' 202 01 0 00 001632' MOVEM T1,OFFSET ;SAVE FOR SCAN
192
193 000003' 402 00 0 00 000000 STORE 17,0,16,0 ;CLEAR ACS
194 000004' 200 17 0 00 002340'
195 000005' 251 17 0 00 000016
196 000006' 402 00 0 00 001634' STORE 17,FW$ZER,LW$ZER,0 ;AND CORE WHICH SHOULD BE CLEARED
197 000007' 200 17 0 00 002341'
198 000010' 251 17 0 00 002337'
199 000011' 047 00 0 00 000000 RESET ;STOP EXTERNAL I/O WHICH MAY BE IN PROGRESS
200 000012' 334 17 0 00 000013' SKIPA P,.+1 ;SETUP PDL
201 000013' 777470 001633' INIPDP: IOWD LN$PDL,PDLIST
202 000014' 260 17 0 00 000000* CALL .RECOR## ;RESET CORE ALLOCATION
203 000015' 200 01 0 00 000042' MOVE T1,ISCNBL ;GET ISCAN BLOCK
204 000016' 260 17 0 00 000000* CALL .ISCAN## ;INITIALIZE THE COMMAND SCANNER
205 000017' 202 01 0 00 001630' MOVEM T1,ISCNVL ;REMEMBER WHAT ISCAN RETURNS
206 000020' 336 00 0 00 001632' SKIPN OFFSET ;CCL ENTRY?
207 000021' 332 00 0 00 001631' SKIPE TLDVER ;OR ALREADY TOLD VERSION?
208 000022' 254 00 0 00 000030' JRST BIOR.0 ;ONE OR THE OTHER
209 000023' 201 01 0 00 002342' STRNG$ <BIORTH %> ;NO--DO IT NOW
210 000024' 260 17 0 00 000000*
211 000025' 200 01 0 00 000137 MOVE T1,.JBVER
212 000026' 260 17 0 00 000000* CALL .TVERW##
213 000027' 260 17 0 00 000000* CALL .TCRLF##
214 000030' 561 01 0 00 000130 BIOR.0: HRROI T1,.GTJLT ;GET LOGIN TIME
215 000031' 047 01 0 00 000041 GETTAB T1, ;FOR DATE-TIME STUFF
216 000032' 400 01 0 00 000000 SETZ T1, ;(OLD MON)
217 000033' 202 01 0 00 001633' MOVEM T1,LOGTIM ;...
218 000034' 476 00 0 00 001631' SETOM TLDVER ;SO WE ONLY TELL VERSION ONE TIME
219 000035' 200 01 0 00 000050' RESTRT: MOVE T1,VSCNBL ;GET ARG BLOCK FOR .VSCAN
220 000036' 260 17 0 00 000000* CALL .VSCAN## ;DO THE WORK
221 000037' 260 17 0 00 000000* CALL .MONRT## ;EXIT TO MONITOR
222 000040' 254 00 0 00 000035' JRST RESTRT ;GO RESTART
223 000041' 203622 077174 TWOPI: EXP 6.28318 ;PI*2
BIORTH -- PROGRAM TO CHART BIORHYTHMS %2(6) MACRO %50A(441)-2 14:08 23-FEB-77 PAGE 8
BIORTH MAC 3-FEB-77 13:19 ARGUMENT BLOCKS FOR ISCAN AND VSCAN
224 SUBTTL ARGUMENT BLOCKS FOR ISCAN AND VSCAN
225
226 000042' 000005 000043' ISCNBL: XWD 5, .+1
227 000043' 777777 000064' IOWD N$CMDS,CMDLST
228 000044' 001632' 425157 XWD OFFSET,MY$PFX
229 000045' 000000 000000 EXP 0
230 000046' 000000 000000 EXP 0
231 000047' 000060' 000000 XWD DOPRMP,0
232
233 ;ARG BLOCK FOR .VSCAN
234
235 000050' 000007 000051' VSCNBL: XWD 7, .+1
236 000051' 777772 000065' IOWD VSWTL,VSWTN
237 000052' 000110' 000102' XWD VSWTD,VSWTM
238 000053' 000000 000074' XWD 0,VSWTP
239 000054' 777777 777777 EXP -1 ;USE MY NAME FOR HELP
240 000055' 000002 002335' XWD 2,BEGNDT ;SO PLOT/BEGIN:XX/END:XX WILL WORK
241 000056' 000000 002337' XWD 0,PBEGND ;DUMMY
242 000057' 000000 000000 EXP 0
243
244 ;SCAN CALLS HERE TO PROMPT -- T1 NEGATIVE IF CONTINUATION
245
246 000060' 331 00 0 00 000001 DOPRMP: SKIPL T1 ;FIRST?
247 000061' 334 01 0 00 000064' SKIPA T1,PRMPTM ;YES--LOAD UP MESSAGE
248 000062' 205 01 0 00 030000 MOVSI T1,'# ' ;NO--LOAD UP CONTINUATION
249 000063' 254 00 0 00 000000* PJRST .TSIXN## ;GO TYPE IT
250
251 000064' 425157 360000 PRMPTM: XWD MY$PFX,'> '
252
253 000065' 425157 626450 CMDLST: EXP MY$NAM
254 000001 N$CMDS==.-CMDLST
BIORTH -- PROGRAM TO CHART BIORHYTHMS %2(6) MACRO %50A(441)-2 14:08 23-FEB-77 PAGE 9
BIORTH MAC 3-FEB-77 13:19 SWITCH TABLE
255 SUBTTL SWITCH TABLE
256
257 DEFINE SWTCHS,<
258 SP BEGIN,BEGNDT,.DATIM,,FS.NUE!FS.VRQ
259 SP *BIRTHD,,$BIRTHDAY,,
260 SP *CHART,,$CHART,,
261 SP COMPAT,,$COMPAT,,
262 IFN FT$DDT,<
263 SP DDT,,$DDT,,
264 >;END IFN FT$DDT
265 SP END,ENDATE,.DATIM,,FS.NUE!FS.VRQ
266 SP *PLOT,,$PLOT,,
267 >
268
269 DOSCAN (VSWT)
270 000066' 424547 515600 EXP SIXBIT /BEGIN/
271 000067' 124251 626450 EXP SIXBIT /*BIRTHD/
272 000070' 124350 416264 EXP SIXBIT /*CHART/
273 000071' 435755 604164 EXP SIXBIT /COMPAT/
274 000072' 455644 000000 EXP SIXBIT /END/
275 000073' 126054 576400 EXP SIXBIT /*PLOT/
276 000074' 000000 002335' EXP <BEGNDT> ;BEGIN
277 000075' 000 00 0 00 000000 Z ;*BIRTHD
278 000076' 000 00 0 00 000000 Z ;*CHART
279 000077' 000 00 0 00 000000 Z ;COMPAT
280 000100' 000000 002336' EXP <ENDATE> ;END
281 000101' 000 00 0 00 000000 Z ;*PLOT
282 000102' 000000 000512' XWD MX.,.DATIM ;BEGIN
283 000103' 000000 000116' XWD MX.,$BIRTHDAY ;*BIRTHD
284 000104' 000000 000235' XWD MX.,$CHART ;*CHART
285 000105' 000000 000124' XWD MX.,$COMPAT ;COMPAT
286 000106' 000000 000512' XWD MX.,.DATIM ;END
287 000107' 000000 000235' XWD MX.,$PLOT ;*PLOT
288 000110' 140000 000000 XWD ..TEMR,PD. ;BEGIN
289 000111' 000000 000000 XWD ..TEMR,PD. ;*BIRTHD
290 000112' 000000 000000 XWD ..TEMR,PD. ;*CHART
291 000113' 000000 000000 XWD ..TEMR,PD. ;COMPAT
292 000114' 140000 000000 XWD ..TEMR,PD. ;END
293 000115' 000000 000000 XWD ..TEMR,PD. ;*PLOT
294
BIORTH -- PROGRAM TO CHART BIORHYTHMS %2(6) MACRO %50A(441)-2 14:08 23-FEB-77 PAGE 10
BIORTH MAC 3-FEB-77 13:19 MISC. COMMANDS
295 SUBTTL MISC. COMMANDS
296
297 000116' $BIRTHDAY:
298 000116' 621 11 0 00 200000 TLZ F,FL$HVB ;HAVE NO BIRTHDAY
299 000117' 323 10 0 00 000240' JUMPLE C,E$$NBG ;GUARD AGAINST HALT IN SCAN
300 000120' 260 17 0 00 000512' CALL .DATIM ;READ IT
301 000121' 512 07 0 00 002334' HLLZM N,BIRTHD ;SAVE BIRTHDAY
302 000122' 661 11 0 00 200000 TLO F,FL$HVB ;HAVE A BIRTHDAY
303 000123' 254 00 0 00 000000* JRST .POPJ1## ;SKIP BACK TO AVOID STORE
304
305 IFN FT$DDT,<
306 $DDT: STRNG$ <DDT
307 >
308 AOS (P) ;SO CAN POPJ FROM DDT
309 SKIPE T1,.JBDDT ;GET DDT ADDR
310 JRST (T1) ;AND GO TO IT
311 WARN. 0,DNL,<DDT NOT LOADED>
312 POPJ P,
313 >;END IFN FT$DDT
BIORTH -- PROGRAM TO CHART BIORHYTHMS %2(6) MACRO %50A(441)-2 14:08 23-FEB-77 PAGE 11
BIORTH MAC 3-FEB-77 13:19 COMPUTE COMPATIBILITIES
314 SUBTTL COMPUTE COMPATIBILITIES
315
316 000124' 260 17 0 00 000000* $COMPAT:CALL .SAVE2## ;PRESERVE
317 000125' 350 00 0 17 000000 AOS (P) ;SO SCAN DOESN'T STORE
318 000126' 260 17 0 00 000000* CALL .CLRBF## ;EAT REST
319 000127' 400 01 0 00 000000 SETZ T1, ;DUMMY ARG BLOK FOR QSCAN
320 000130' 260 17 0 00 000000* CALL .QSCAN## ;INIT A LINE
321 000131' 255 00 0 00 000000 JFCL ;WILL PROMPT ANYWHAY
322 000132' 201 01 0 00 002344' STRNG$ <BIRTHDATE 1: >
323 000133' 260 17 0 00 000024*
324 000134' 260 17 0 00 000512' CALL .DATIM
325 000135' 554 05 0 00 000007 HLRZ P1,N ;ONLY WANT THE DATE
326 000136' 260 17 0 00 000126* CALL .CLRBF## ;EAT WHAT MAY BE LEFT
327 000137' 400 01 0 00 000000 SETZ T1,
328 000140' 260 17 0 00 000130* CALL .QSCAN##
329 000141' 255 00 0 00 000000 JFCL
330 000142' 201 01 0 00 002347' STRNG$ <BIRTHDATE 2: >
331 000143' 260 17 0 00 000133*
332 000144' 260 17 0 00 000512' CALL .DATIM
333 000145' 554 06 0 00 000007 HLRZ P2,N ;AND DITTO HERE
334 000146' 260 17 0 00 000136* CALL .CLRBF## ;CLEAR ANY LEFT
335 000147' 201 01 0 00 000041 MOVEI T1,ICYCLE ;COMPUTE THE PERCENTAGES
336 000150' 260 17 0 00 000204' CALL CMPTFN ;...
337 000151' 202 01 0 00 002217' MOVEM T1,IPOS
338 000152' 201 01 0 00 000034 MOVEI T1,ECYCLE
339 000153' 260 17 0 00 000204' CALL CMPTFN
340 000154' 202 01 0 00 002220' MOVEM T1,EPOS
341 000155' 201 01 0 00 000027 MOVEI T1,PCYCLE
342 000156' 260 17 0 00 000204' CALL CMPTFN
343 000157' 202 01 0 00 002221' MOVEM T1,PPOS
344 000160' 201 01 0 00 002352' STRNG$ <INTELLECTUAL COMPATIBILITY = >
345 000161' 260 17 0 00 000143*
346 000162' 200 01 0 00 002217' MOVE T1,IPOS
347 000163' 260 17 0 00 000231' CALL .TPCNT ;TYPE DECIMAL AND PERCENT AND CRLF
348 000164' 201 01 0 00 002360' STRNG$ <EMOTIONAL COMPATIBILITY = >
349 000165' 260 17 0 00 000161*
350 000166' 200 01 0 00 002220' MOVE T1,EPOS
351 000167' 260 17 0 00 000231' CALL .TPCNT
352 000170' 201 01 0 00 002366' STRNG$ <PHYSICAL COMPATIBILITY = >
353 000171' 260 17 0 00 000165*
354 000172' 200 01 0 00 002221' MOVE T1,PPOS
355 000173' 260 17 0 00 000231' CALL .TPCNT
356 000174' 201 01 0 00 002374' STRNG$ <TOTAL COMPATIBILITY = >
357 000175' 260 17 0 00 000171*
358 000176' 200 01 0 00 002217' MOVE T1,IPOS
359 000177' 270 01 0 00 002220' ADD T1,EPOS
360 000200' 270 01 0 00 002221' ADD T1,PPOS
361 000201' 231 01 0 00 000003 IDIVI T1,3 ;AVERAGE
362 000202' 260 17 0 00 000231' CALL .TPCNT
363 000203' 263 17 0 00 000000 POPJ P,
BIORTH -- PROGRAM TO CHART BIORHYTHMS %2(6) MACRO %50A(441)-2 14:08 23-FEB-77 PAGE 12
BIORTH MAC 3-FEB-77 13:19 COMPUTE THE COMPATIBILITY FUNCTION
364 SUBTTL COMPUTE THE COMPATIBILITY FUNCTION
365
366 ;CALL HERE WITH P1=BIRTHDATE IN RH
367 ; P2=BIRTHDATE IN RH
368 ; T1=CYCLE LENGTH
369 ;
370 ;RETURN WITH T1=COMPATIBILITY PERCENTAGE
371
372 000204' 554 02 0 00 002204' CMPTFN: HLRZ T2,NOW ;USE NOW TO COMPUTE DIFF
373 000205' 274 02 0 00 000005 SUB T2,P1 ;# DAYS ALIVE
374 000206' 214 02 0 00 000002 MOVM T2,T2 ;ALLOW WHATEVER
375 000207' 231 02 0 01 000000 IDIVI T2,(T1) ;GET DAYS INTO CYCLE
376 000210' 200 02 0 00 000003 MOVE T2,T3 ;SAVE REMAINDER
377 000211' 554 03 0 00 002204' HLRZ T3,NOW
378 000212' 274 03 0 00 000006 SUB T3,P2
379 000213' 214 03 0 00 000003 MOVM T3,T3
380 000214' 231 03 0 01 000000 IDIVI T3,(T1) ;DAYS INTO CYCLE
381 000215' 274 02 0 00 000004 SUB T2,T4 ;DIFF
382 000216' 214 02 0 00 000002 MOVM T2,T2 ;GET THE MAGNITUDE
383 000217' 221 02 0 00 000310 IMULI T2,^D200 ;* 200
384 000220' 132 02 0 00 000233 FLOAT. T2, ;MAKE IT REAL
385 000221' 132 01 0 00 000233 FLOAT. T1, ;CYCLE ALSO
386 000222' 174 02 0 00 000001 FDVR T2,T1 ;200*DIFF/CYCLE LENGTH
387 000223' 205 01 0 00 207620 MOVSI T1,(100.0) ;GET ONE HUNDRED
388 000224' 154 01 0 00 000002 FSBR T1,T2 ;100-ABOVE
389 000225' 335 00 0 00 000001 SKIPGE T1 ;IF NEGATIVE
390 000226' 213 00 0 00 000001 MOVNS T1 ;MAKE IT POSITIVE
391 000227' 145 01 0 00 200400 FADRI T1,(0.5) ;ROUND IT UP
392 000230' 254 00 0 00 000000* PJRST IFX.1## ;FIX AND RETURN
393
394 ;.TPCNT -- TYPE DECIMAL # , "%", AND CRLF
395
396 000231' 260 17 0 00 000000* .TPCNT: CALL .TDECW## ;TYPE DECIMAL
397 000232' 201 01 0 00 000045 MOVEI T1,"%" ;GET A PERCENT
398 000233' 260 17 0 00 000000* CALL .TCHAR## ;BOOT IT
399 000234' 254 00 0 00 000027* PJRST .TCRLF## ;NEW LINE AND EXIT
BIORTH -- PROGRAM TO CHART BIORHYTHMS %2(6) MACRO %50A(441)-2 14:08 23-FEB-77 PAGE 13
BIORTH MAC 3-FEB-77 13:19 PLOT THE CYCLES
400 SUBTTL PLOT THE CYCLES
401
402 000235' $PLOT:
403 000235' $CHART:
404 000235' 260 17 0 00 000124* CALL .SAVE2## ;SAVE REGISTERS
405 000236' 350 00 0 17 000000 AOS (P) ;SKIP SCAN STORE ON WAY BACK
406 000237' 607 11 0 00 200000 TLNN F,FL$HVB ;MUST HAVE A BIRTHDAY
407 000240' 260 17 0 00 001532' E$$NBG: ERROR. EF$FTL,NBG,<NO BIRTHDAY GIVEN>
408 000241' 300400 002406'
409 000242' 621 11 0 00 540000 TLZ F,FL$FIL!FL$BKW!FL$CRT ;NOT TO FILE,NOT BACKWARDS,AND NOT CRIT.
410 000243' 323 10 0 00 000301' JUMPLE C,PLOT.0 ;JUMP IF NO FILE SPEC
411 000244' 260 17 0 00 000000* CALL .FILIN## ;YES--READ IT
412 000245' 336 00 0 00 777777* SKIPN F.NAM##-1 ;NULL DEVICE/
413 000246' 332 00 0 00 000000* SKIPE F.NAM## ;OR NULL FILENAME?
414 000247' 334 00 0 00 000000 SKIPA ;NO--THERE IS REALLY A SPEC
415 000250' 254 00 0 00 000301' JRST PLOT.0 ;MUST HAVE JUST BEEN SWITCHES
416 000251' 201 01 0 00 002222' MOVEI T1,FILSPC ;GET THE SPEC
417 000252' 201 02 0 00 000032 MOVEI T2,.FXLEN ;AND LENGTH
418 000253' 260 17 0 00 000000* CALL .GTSPC## ;COPY IT OVER
419 000254' 205 01 0 00 546064 MOVSI T1,'LPT' ;FILL IN DEFAULTS
420 000255' 336 00 0 00 002222' SKIPN FILSPC+.FXDEV ;FOR DEVICE
421 000256' 202 01 0 00 002222' MOVEM T1,FILSPC+.FXDEV
422 000257' 200 01 0 00 002407' MOVE T1,[SIXBIT/BIORTH/] ;FOR FILENAME
423 000260' 336 00 0 00 002223' SKIPN FILSPC+.FXNAM
424 000261' 476 00 0 00 002224' SETOM FILSPC+.FXNMM
425 000262' 336 00 0 00 002223' SKIPN FILSPC+.FXNAM
426 000263' 202 01 0 00 002223' MOVEM T1,FILSPC+.FXNAM
427 000264' 525 01 0 00 546064 HRLOI T1,'LPT' ;AND EXTENSION
428 000265' 336 00 0 00 002225' SKIPN FILSPC+.FXEXT
429 000266' 202 01 0 00 002225' MOVEM T1,FILSPC+.FXEXT
430 000267' 201 01 0 00 002222' MOVEI T1,FILSPC ;POINT AT IT
431 000270' 260 17 0 00 001404' CALL OPENIO ;OPEN CHANNEL
432 000271' 300 01 1 00 002331' CAI OUTC,@OBHR(.IOASC) ;
433 000272' 400 01 0 00 000000 SETZ T1, ;DEFAULT # BUFFERS
434 000273' 200 02 0 00 002410' MOVE T2,[XWD OPNBLK,OBHR]
435 000274' 260 17 0 00 000000* CALL .ALCBF## ;ALLOCATE BUFFERS
436 000275' 661 11 0 00 400000 TLO F,FL$FIL ;FLAG TO A FILE
437 000276' 201 01 0 00 001471' MOVEI T1,CHROUT ;SETUP ROUTINE
438 000277' 260 17 0 00 000000* CALL .TYOCH## ;WITH SCAN
439 SAVE$ T1 ;REMEMBER OLD ONE
440 000301' 513 00 0 00 002336' PLOT.0: HLLZS ENDATE ;CLEAR SO WE ONLY LOOK AT DAYS, NOT HOURS
441 000302' 260 17 0 00 001253' CALL .GTNOW ;USE TODAY
442 000303' 336 12 0 00 002335' SKIPN D,BEGNDT ;UNLESS /BEGIN WAS GIVEN
443 000304' 200 12 0 00 000001 MOVE D,T1 ;POSITION DATE
444 000305' 513 00 0 00 000012 HLLZS D ;ONLY LOOK AT DATE
445 000306' 205 01 0 00 377776 MOVSI T1,377776 ;A VERY LARGE DATE
446 000307' 607 11 0 00 400000 TLNN F,FL$FIL ;UNLESS OUTPUTTING TO A FILE
447 000310' 254 00 0 00 000313' JRST PLOT0B ;NO--GO FOREVER
448 000311' 510 01 0 00 000012 HLLZ T1,D ;THEN START WITH BEGINNING DATE
449 000312' 270 01 0 00 002411' ADD T1,[XWD ^D31,0] ;AND GO FOR A MONTH
450 000313' 336 00 0 00 002336' PLOT0B: SKIPN ENDATE ;MAKE SURE END SPECIFIED
451 000314' 202 01 0 00 002336' MOVEM T1,ENDATE ;NO--MAKE IT VERY LARGE
452 000315' 313 12 0 00 002336' CAMLE D,ENDATE ;BEGINNING MUST BE BEFORE END
453 000316' 661 11 0 00 100000 TLO F,FL$BKW ;OR ELSE WE ARE GOING BACKWARDS IN TIME
454 STRNG$ <
BIORTH -- PROGRAM TO CHART BIORHYTHMS %2(6) MACRO %50A(441)-2 14:08 23-FEB-77 PAGE 13-1
BIORTH MAC 3-FEB-77 13:19 PLOT THE CYCLES
455 000317' 201 01 0 00 002412' BIORHYTHM CHART FOR BIRTHDATE: >
456 000320' 260 17 0 00 000175*
457 000321' 200 01 0 00 002334' MOVE T1,BIRTHD ;GET THE BIRTHDAY
458 000322' 260 17 0 00 001345' CALL .TDATX ;TYPE DAY OF WEEK AND DATE
459 STRNG$ <
460
461 E - EMOTIONAL CYCLE -- 28 DAYS
462 I - INTELLECUTAL CYCLE -- 33 DAYS
463 P - PHYSICAL CYCLE -- 23 DAYS
464 # INDICATES CRITICAL DAY
465
466 000323' 201 01 0 00 002421' >
467 000324' 260 17 0 00 000320*
468 STRNG$ < LOW CRITICAL HI
469 GH
470 000325' 201 01 0 00 002455' >
471 000326' 260 17 0 00 000324*
472 000327' 260 17 0 00 000234* CALL .TCRLF## ;NEW LINES
BIORTH -- PROGRAM TO CHART BIORHYTHMS %2(6) MACRO %50A(441)-2 14:08 23-FEB-77 PAGE 14
BIORTH MAC 3-FEB-77 13:19 PLOT THE CYCLES
473 000330' 200 01 0 00 002400' PLOT.1: STORE T1,PLTBUF,PLTBUF+PLTBSZ-1,<ASCII/ /> ;INIT TO BLANKS
474 000331' 202 01 0 00 002164'
475 000332' 200 01 0 00 002475'
476 000333' 251 01 0 00 002200'
477 000334' 201 01 0 00 000041 MOVEI T1,ICYCLE ;DO I CYCLE
478 000335' 260 17 0 00 000425' CALL COMPOS ;COMPOSE POSITION
479 000336' 202 01 0 00 002217' MOVEM T1,IPOS
480 000337' 260 17 0 00 000420' CALL CRTCHK ;SEE IF CRITICAL
481 000340' 201 01 0 00 000034 MOVEI T1,ECYCLE ;DO E CYCLE
482 000341' 260 17 0 00 000425' CALL COMPOS
483 000342' 202 01 0 00 002220' MOVEM T1,EPOS
484 000343' 260 17 0 00 000420' CALL CRTCHK ;SEE IF CRITICAL
485 000344' 201 01 0 00 000027 MOVEI T1,PCYCLE
486 000345' 260 17 0 00 000425' CALL COMPOS
487 000346' 202 01 0 00 002221' MOVEM T1,PPOS
488 000347' 260 17 0 00 000420' CALL CRTCHK ;SEE IF CRITICAL
489 000350' 201 01 0 00 000041 MOVEI T1,"!" ;SETUP THE BORDERS
490 000351' 201 02 0 00 000000 MOVEI T2,0 ;...
491 000352' 260 17 0 00 000454' CALL PUTPLC ;LEFT SIDE
492 000353' 201 02 0 00 000036 MOVEI T2,PLTZER ;THE MIDDLE
493 000354' 260 17 0 00 000454' CALL PUTPLC
494 000355' 201 02 0 00 000074 MOVEI T2,PLTWID ;RIGHT SIDE
495 000356' 260 17 0 00 000454' CALL PUTPLC ;...
496 000357' 201 01 0 00 000043 MOVEI T1,"#" ;IN CASE CRITICAL
497 000360' 201 02 0 00 000075 MOVEI T2,PLTWID+1 ;...
498 000361' 623 11 0 00 040000 TLZE F,FL$CRT ;CRITICAL?
499 000362' 260 17 0 00 000454' CALL PUTPLC ;YES--MARK IN CHART
500 000363' 205 05 0 00 777775 MOVSI P1,-LN$PCH ;GET A LOOPER
501 000364' 554 01 0 05 000415' PLOT.2: HLRZ T1,PCHTBL(P1) ;GET CHAR TO PLOT
502 000365' 550 02 0 05 000415' HRRZ T2,PCHTBL(P1) ;AND ADDR OF POS
503 000366' 200 02 0 02 000000 MOVE T2,(T2) ;GET POS
504 000367' 260 17 0 00 000454' CALL PUTPLC ;PLOT IT
505 000370' 253 05 0 00 000364' AOBJN P1,PLOT.2 ;DO ALL
506 000371' PLOT.5:
507 000371' 200 01 0 00 000012 MOVE T1,D ;GET DATE
508 000372' 260 17 0 00 001345' CALL .TDATX ;TYPE DAY AND DATE
509 000373' 260 17 0 00 000000* CALL .TSPAC## ;AND A SPACE
510 000374' 201 01 0 00 002164' MOVEI T1,PLTBUF ;BUFFER ADDR
511 000375' 260 17 0 00 000326* CALL .TSTRG## ;SEND IT
512 000376' 260 17 0 00 000327* CALL .TCRLF## ;NEW LINE
513 000377' 205 01 0 00 000001 MOVSI T1,1 ;GET ONE IN LH
514 000400' 603 11 0 00 100000 TLNE F,FL$BKW ;GOING BACKWARDS?
515 JRST [SUB D,T1 ;YES--DO THAT
516 CAML D,ENDATE;DONE YET?
517 JRST PLOT.1 ;NO--CONTINUE
518 000401' 254 00 0 00 002476' JRST PLOT.9] ;YES--GO QUIT
519 000402' 270 12 0 00 000001 ADD D,T1 ;NEXT DAY
520 000403' 317 12 0 00 002336' PLOT.6: CAMG D,ENDATE ;REACHED THE END YET?
521 000404' 254 00 0 00 000330' JRST PLOT.1 ;..
522 000405' 627 11 0 00 400000 PLOT.9: TLZN F,FL$FIL ;YES--OUTPUTTING TO A FILE?
523 000406' 263 17 0 00 000000 POPJ P, ;NO--DONE
524 000407' 070 01 0 00 000000 CLOSE OUTC, ;YES--CLOSE FILE
525 000410' 071 01 0 00 000000 RELEASE OUTC, ;...
526 000411' 201 01 0 00 002331' MOVEI T1,OBHR ;RELEASE BUFFERS
527 000412' 260 17 0 00 000000* CALL .FREBF##
BIORTH -- PROGRAM TO CHART BIORHYTHMS %2(6) MACRO %50A(441)-2 14:08 23-FEB-77 PAGE 14-1
BIORTH MAC 3-FEB-77 13:19 PLOT THE CYCLES
528 RESTR$ T1 ;GET SCAN ROUTINE
529 000414' 254 00 0 00 000277* PJRST .TYOCH## ;RESTORE AND RETURN
530
531 000415' 000111 002217' PCHTBL: XWD "I",IPOS ;INTELLECTUAL
532 000416' 000105 002220' XWD "E",EPOS ;EMOTIONAL
533 000417' 000120 002221' XWD "P",PPOS ;PHYSICAL
534 000003 LN$PCH==.-PCHTBL
535 000420' 275 01 0 00 000036 CRTCHK: SUBI T1,PLTZER ;SEE IF NEAR THE MIDDLE
536 000421' 217 00 0 00 000001 MOVMS T1 ;GET ONLY THE MAGNITUDE
537 000422' 307 01 0 00 000004 CAIG T1,MX$CRT ;CAN IT BE CRITICAL?
538 000423' 661 11 0 00 040000 TLO F,FL$CRT ;YES--FLAG FOR PRINTER
539 000424' 263 17 0 00 000000 POPJ P, ;DONE
BIORTH -- PROGRAM TO CHART BIORHYTHMS %2(6) MACRO %50A(441)-2 14:08 23-FEB-77 PAGE 15
BIORTH MAC 3-FEB-77 13:19 PLOT THE CYCLES
540 000425' 132 01 0 00 000233 COMPOS: FLOAT. T1, ;FLOAT CYCLE LENGTH
541 000426' 200 02 0 00 000041' MOVE T2,TWOPI ;GET 2*PI
542 000427' 174 02 0 00 000001 FDVR T2,T1 ;2*PI/CYCLE LENGTH
543 000430' 202 02 0 00 002216' MOVEM T2,TEMP ;SAVE IT
544 000431' 554 01 0 00 000012 HLRZ T1,D ;GET DAY WE ARE WORKING ON
545 000432' 554 02 0 00 002334' HLRZ T2,BIRTHD ;AND BIRTHDAY
546 000433' 275 01 0 02 000000 SUBI T1,(T2) ;DIFFERENCE
547 000434' 260 17 0 00 000000* PUSHJ P,FLT.1## ;FLOAT IT
548 000435' 166 01 0 00 002216' FMPRM T1,TEMP ;* ABOVE RESULT AND SAVE IT
549 000436' 201 16 0 00 002503' MOVEI 16,1+[EXP <-1,,0>,TEMP] ;ARG BLOCK
550 000437' 260 17 0 00 000000* CALL SIN.## ;GET THE SINE
551 000440' 202 00 0 00 002216' MOVEM X,TEMP ;SAVE IT
552 000441' 205 01 0 00 201400 MOVSI T1,(1.0) ;ADD ONE TO IT
553 000442' 146 01 0 00 002216' FADRM T1,TEMP ;...
554 000443' 201 01 0 00 000074 MOVEI T1,PLTWID ;GET PLOT WIDTH
555 000444' 132 01 0 00 000233 FLOAT. T1, ;MAKE IT REAL
556 000445' 166 01 0 00 002216' FMPRM T1,TEMP
557 000446' 205 01 0 00 202400 MOVSI T1,(2.0) ;GET A TWO
558 000447' 250 01 0 00 002216' EXCH T1,TEMP ;POSITION
559 000450' 176 01 0 00 002216' FDVRM T1,TEMP ;DIVIDE BY TWO
560 000451' 205 01 0 00 200400 MOVSI T1,(0.5) ;GET 1/2
561 000452' 147 01 0 00 002216' FADRB T1,TEMP ;ADD THAT IN ALSO
562 000453' 254 00 0 00 000230* PJRST IFX.1## ;FIX AND RETURN
563
564 ;PUTPLC -- PUT CHAR IN PLOT BUFFER
565 ;CALL: MOVEI T1,CHAR
566 ; MOVEI T2,POS
567 ; CALL PUTPLC
568 ;USES T1-4
569
570 000454' 231 02 0 00 000005 PUTPLC: IDIVI T2,5 ;T2=WORD, T3=POS IN WORD
571 000455' 205 04 0 00 440700 MOVSI T4,(POINT 7) ;START TO FORM BYTE PTR
572 000456' 541 04 0 02 002164' HRRI T4,PLTBUF(T2) ;FINISH IT
573 000457' 133 00 0 00 000004 IBP T4 ;INC ONE
574 000460' 365 03 0 00 000457' SOJGE T3,.-1 ;DO ALL
575 000461' 137 01 0 00 000004 DPB T1,T4 ;STORE CHAR
576 000462' 263 17 0 00 000000 POPJ P,
BIORTH -- PROGRAM TO CHART BIORHYTHMS %2(6) MACRO %50A(441)-2 14:08 23-FEB-77 PAGE 16
BIORTH MAC 3-FEB-77 13:19 SUBROUTINES FOR COMMAND INPUT -- GET DATE/TIME
577 SUBTTL SUBROUTINES FOR COMMAND INPUT -- GET DATE/TIME
578
579 ;.DATIF -- ROUTINE TO SCAN DATE AND TIME ARGUMENT IN FUTURE
580 ;.DATIG -- DITTO (CHARACTER ALREADY IN C)
581 ;CALL: PUSHJ P,.DATIF/.DATIG
582 ; RETURN WITH VALUE IN INTERNAL FORMAT IN N
583 ;USES T1-4 UPDATES C (SEPARATOR)
584
585 000463' 260 17 0 00 000000* .DATIF: PUSHJ P,.TIAUC## ;PRIME THE PUMP
586
587 000464' 402 00 0 00 002203' .DATIG: SETZM FLFUTR ;CLEAR FUTURE RELATIVE
588 000465' 402 00 0 00 002202' SETZM FLFUTD ;SET DEFAULT
589 000466' 350 00 0 00 002202' AOS FLFUTD ; TO FUTURE
590 000467' 302 10 0 00 000053 CAIE C,"+" ;SEE IF FUTURE RELATIVE
591 000470' 254 00 0 00 000473' JRST DATIF1 ;NO--JUST GET DATE-TIME
592 000471' 350 00 0 00 002203' AOS FLFUTR ;YES--SET FUTURE REL FLAG
593 000472' 260 17 0 00 000463* PUSHJ P,.TIAUC## ;GET ANOTHER CHARACTER
594 000473' 260 17 0 00 000525' DATIF1: PUSHJ P,DATIM ;GET DATE/TIME
595 000474' 315 07 0 00 002204' CAMGE N,NOW ;SEE IF IN FUTURE
596 000475' 254 00 0 00 001117' JRST E$$NFT ;NO--NOT FUTURE ERROR
597 000476' 263 17 0 00 000000 POPJ P, ;RETURN
598
599 ;.DATIP -- ROUTINE TO SCAN DATE AND TIME ARGUMENT IN THE PAST
600 ;.DATIQ -- DITTO (CHARACTER ALREADY IN C)
601 ;CALL: PUSHJ P,.DATIP/.DATIQ
602 ; RETURN WITH VALUE IN INTERNAL FORMAT IN N
603 ;USES T1-4 UPDATES C (SEPARATOR)
604
605 000477' 260 17 0 00 000472* .DATIP: PUSHJ P,.TIAUC## ;PRIME THE PUMP
606
607 000500' 402 00 0 00 002203' .DATIQ: SETZM FLFUTR ;CLEAR PAST RELATIVE
608 000501' 476 00 0 00 002202' SETOM FLFUTD ;SET DEFAULT TO PAST
609 000502' 302 10 0 00 000055 CAIE C,"-" ;SEE IF PAST RELATIVE
610 000503' 254 00 0 00 000506' JRST DATIP1 ;NO--JUST GET DATE-TIME
611 000504' 370 00 0 00 002203' SOS FLFUTR ;YES--SET PAST REL FLAG
612 000505' 260 17 0 00 000477* PUSHJ P,.TIAUC## ;GET ANOTHER CHARACTER
613 000506' 260 17 0 00 000525' DATIP1: PUSHJ P,DATIM ;GET DATE/TIME
614 000507' 313 07 0 00 002204' CAMLE N,NOW ;SEE IF IN PAST
615 000510' 254 00 0 00 001121' JRST E$$NPS ;NO--NOT PAST ERROR
616 000511' 263 17 0 00 000000 POPJ P, ;RETURN
BIORTH -- PROGRAM TO CHART BIORHYTHMS %2(6) MACRO %50A(441)-2 14:08 23-FEB-77 PAGE 17
BIORTH MAC 3-FEB-77 13:19 SUBROUTINES FOR COMMAND INPUT -- GET DATE/TIME
617 ;.DATIM -- ROUTINE TO SCAN DATE AND TIME ARGUMENT
618 ;.DATIC -- DITTO (CHARACTER ALREADY IN C)
619 ;CALL: PUSHJ P,.DATIM/.DATIC
620 ; RETURN WITH VALUE IN INTERNAL FORMAT IN N
621 ;USES T1-4 UPDATES C (SEPARATOR)
622
623 000512' 260 17 0 00 000505* .DATIM: PUSHJ P,.TIAUC## ;PRIME THE PUMP
624
625 000513' 402 00 0 00 002203' .DATIC: SETZM FLFUTR ;CLEAR RELATIVE FLAG
626 000514' 402 00 0 00 002202' SETZM FLFUTD ;CLEAR DEFAULT FLAG
627 000515' 302 10 0 00 000053 CAIE C,"+" ;SEE IF FUTURE RELATIVE
628 000516' 254 00 0 00 000521' JRST DATIC1 ;NO--PROCEED
629 000517' 350 00 0 00 002203' AOS FLFUTR ;YES--SET FLAG
630 000520' 254 00 0 00 000524' JRST DATIC2 ;AND PROCEED
631 000521' 302 10 0 00 000055 DATIC1: CAIE C,"-" ;SEE IF PAST RELATIVE
632 000522' 254 00 0 00 000525' PJRST DATIM ;NO--JUST GET ABS DATE
633 000523' 370 00 0 00 002203' SOS FLFUTR ;YES--SET FLAG
634 000524' 260 17 0 00 000512* DATIC2: PUSHJ P,.TIAUC## ;GET NEXT CHAR
635 ;AND FALL INTO DATE/TIME GETTER
636
637 ;DATIM -- ROUTINE TO INPUT DATE/TIME
638 ;CALL: SET FLFUTR TO -1 IF PAST RELATIVE, 0 IF ABSOLUTE, +1 IF FUTURE RELATIVE
639 ; SIMILARLY FOR FLFUTD TO INDICATE DEFAULT DIRECTION IF FLFUTR=0
640 ; GET NEXT CHARACTER IN C
641 ; PUSHJ P,DATIM
642 ;RETURN WITH TRUE DATE/TIME IN N IN INTERNAL SPECIAL FORMAT
643 ; SETS NOW TO CURRENT DATE/TIME
644 ;USES T1-4, UPDATES C
645 ;
646 ;TYPE-IN FORMATS:
647 ; (THE LEADING +- IS HANDLED BY CALLER)
648 ;
649 ; [ [ DAY IN WEEK ] ]
650 ; [ [ NNND ] ]
651 ; [ [ [ MM-DD [-Y ] ] : ] [HH[:MM[:SS]]] ]
652 ; [ [ [ MMM-DD [-YY ] ] ] ]
653 ; [ [ [ DD-MMM [-YYYY] ] ] ]
654 ; [ MNEMONIC ]
655 ;WHERE:
656 ; D LETTER D
657 ; DD DAY IN MONTH (1-31)
658 ; HH HOURS (00-23)
659 ; MM MONTH IN YEAR (1-12)
660 ; OR MINUTES (00-59)
661 ; MMM MNEMONIC MONTH OR ABBREV.
662 ; SS SECONDS (0-59)
663 ; Y LAST DIGIT OF THIS DECADE
664 ; YY LAST TWO DIGITS OF THIS CENTURY
665 ; YYYY YEAR
666 ; DAY IN WEEK IS MNEMONIC OR ABBREVIATION
667 ; MNEMONIC IS A SET OF PREDEFINED TIMES
BIORTH -- PROGRAM TO CHART BIORHYTHMS %2(6) MACRO %50A(441)-2 14:08 23-FEB-77 PAGE 18
BIORTH MAC 3-FEB-77 13:19 SUBROUTINES FOR COMMAND INPUT -- GET DATE/TIME
668 ;DESCRIBED ABOVE
669 ;FALL HERE FROM .DATIC
670
671 000525' 332 01 0 00 002203' DATIM: SKIPE T1,FLFUTR ;SEE IF FORCED DIRECTION
672 000526' 202 01 0 00 002202' MOVEM T1,FLFUTD ; YES--THAT IMPLIES DEFAULT
673 000527' 476 00 0 00 002205' SETOM VAL1 ;CLEAR RESULT WORDS
674 000530' 200 01 0 00 002504' MOVE T1,[VAL1,,VAL2]
675 000531' 251 01 0 00 002215' BLT T1,VAL9 ; ..
676 000532' 260 17 0 00 001253' PUSHJ P,.GTNOW ;GET CURRENT DATE/TIME
677 000533' 202 01 0 00 002204' MOVEM T1,NOW ;SAVE FOR LATER TO BE CONSISTENT
678 000534' 301 10 0 00 000060 CAIL C,"0" ;SEE IF DIGIT
679 000535' 303 10 0 00 000071 CAILE C,"9" ; ..
680 000536' 254 00 0 00 000540' JRST .+2 ;NO--MNEMONIC FOR SOMETHING
681 000537' 254 00 0 00 000637' JRST DATIMD ;YES--GO GET DECIMAL
682 ;HERE IF STARTING WITH ALPHA, MIGHT BE DAY, MONTH, OR MNEMONIC
683 000540' 260 17 0 00 000000* PUSHJ P,.SIXSC## ;GET SIXBIT WORD
684 000541' 322 07 0 00 001143' JUMPE N,E$$DTM ;ILLEGAL SEPARATOR IF ABSENT
685 000542' 200 01 0 00 001201' MOVE T1,MNDPTR ;POINT TO FULL TABLE
686 000543' 260 17 0 00 000000* PUSHJ P,.NAME## ;LOOKUP IN TABLE
687 000544' 254 00 0 00 001137' JRST E$$UDN ;ERROR IF NOT KNOWN
688 000545' 201 07 0 01 000000 MOVEI N,(T1) ;GET
689 000546' 275 07 0 00 001145' SUBI N,DAYS ; DAY INDEX
690 000547' 301 07 0 00 000007 CAIL N,7 ;SEE IF DAY OF WEEK
691 000550' 254 00 0 00 000575' JRST DATIMM ;NO--LOOK ON
692 ;HERE WHEN DAY OF WEEK RECOGNIZED
693 000551' 336 01 0 00 002202' SKIPN T1,FLFUTD ;GET DEFAULT DIRECTION
694 000552' 254 00 0 00 001125' JRST E$$NPF ;ERROR IF NONE
695 000553' 202 01 0 00 002203' MOVEM T1,FLFUTR ;SET AS FORCED DIRECTION
696 000554' 554 02 0 00 002204' HLRZ T2,NOW ;GET DAYS
697 000555' 231 02 0 00 000007 IDIVI T2,7 ;GET DAY OF WEEK
698 000556' 274 07 0 00 000003 SUB N,T3 ;GET FUTURE DAYS FROM NOW
699 000557' 335 00 0 00 000007 SKIPGE N ;IF NEGATIVE,
700 000560' 271 07 0 00 000007 ADDI N,7 ; MAKE LATER THIS WEEK
701 000561' 510 01 0 00 002204' HLLZ T1,NOW ;CLEAR CURRENT
702 000562' 331 00 0 00 002202' SKIPL FLFUTD ;SEE IF FUTURE
703 000563' 664 01 0 00 777777 TROA T1,-1 ;YES--SET MIDNIGHT MINUS EPSILON
704 000564' 275 07 0 00 000007 SUBI N,7 ;NO--MAKE PAST
705 000565' 514 07 0 00 000007 HRLZ N,N ;POSITION TO LEFT HALF
706 000566' 270 07 0 00 000001 ADD N,T1 ;MODIFY CURRENT DATE/TIME
707 000567' 261 17 0 00 000007 DATIMW: PUSH P,N ;SAVE DATE
708 000570' 260 17 0 00 001055' PUSHJ P,DATIC ;GO CHECK TIME
709 000571' 550 07 0 17 000000 HRRZ N,(P) ;NO--USE VALUE IN DATE
710 000572' 262 17 0 00 000001 POP P,T1 ;RESTORE DATE
711 000573' 500 07 0 00 000001 HLL N,T1 ; TO ANSWER
712 000574' 254 00 0 00 001024' JRST DATIMX ;CHECK ANSWER AND RETURN
BIORTH -- PROGRAM TO CHART BIORHYTHMS %2(6) MACRO %50A(441)-2 14:08 23-FEB-77 PAGE 19
BIORTH MAC 3-FEB-77 13:19 SUBROUTINES FOR COMMAND INPUT -- GET DATE/TIME
713 ;HERE IF MONTH OR MNEMONIC
714 000575' 201 07 0 01 000000 DATIMM: MOVEI N,(T1) ;GET MONTH
715 000576' 275 07 0 00 001153' SUBI N,MONTHS-1 ; AS 1-12
716 000577' 303 07 0 00 000014 CAILE N,^D12 ;SEE IF MONTH
717 000600' 254 00 0 00 000612' JRST DATIMN ;NO--MUST BE MNEMONIC
718 000601' 202 07 0 00 002212' MOVEM N,VAL6 ;YES--STORE MONTH
719 000602' 302 10 0 00 000055 CAIE C,"-" ;MUST BE DAY NEXT
720 000603' 254 00 0 00 001141' JRST E$$MDD ;NO--ERROR
721 000604' 260 17 0 00 000000* PUSHJ P,.DECNW## ;YES--GET IT
722 000605' 323 07 0 00 001123' JUMPLE N,E$$NND ;ERROR IF NEGATIVE
723 000606' 303 07 0 00 000037 CAILE N,^D31 ;VERIFY IN RANGE
724 000607' 254 00 0 00 001127' JRST E$$DFL ;ERROR IF TOO LARGE
725 000610' 202 07 0 00 002211' MOVEM N,VAL5 ;SAVE AWAY
726 000611' 254 00 0 00 000717' JRST DATIY0 ;AND GET YEAR IF PRESENT
727
728 ;HERE IF MNEMONIC
729 000612' 550 02 0 00 000001 DATIMN: HRRZ T2,T1 ;GET COPY
730 000613' 306 02 0 00 001173' CAIN T2,SPLGTM ;SEE IF "LOGIN"
731 000614' 337 07 0 00 001633' SKIPG N,LOGTIM ;AND WE KNOW IT
732 000615' 334 00 0 00 000000 SKIPA ;NO--PROCEED
733 000616' 254 00 0 00 001024' JRST DATIMX ;YES--GO GIVE ANSWER
734 000617' 306 02 0 00 001174' CAIN T2,SPNOON ;SEE IF "NOON"
735 JRST [HLLZ N,NOW ;YES--GET TODAY
736 HRRI N,1B18 ;SET TO NOON
737 000620' 254 00 0 00 002505' JRST DATIMW] ;GO FINISH UP
738 000621' 306 02 0 00 001175' CAIN T2,SPMIDN ;SEE IF "MIDNIGHT"
739 JRST [HLLZ N,NOW ;GET TODAY
740 000622' 254 00 0 00 002510' JRST DATIMO] ;GO SET TO MIDNIGHT
741 000623' 275 02 0 00 001170' SUBI T2,SPCDAY ;SUBTRACT OFFSET TO SPECIAL DAYS
742 000624' 303 02 0 00 000002 CAILE T2,2 ;SEE IF ONE OF THREE
743 000625' 254 00 0 00 000634' JRST E.MDS ;NO--UNSUPPORTED
744 000626' 554 07 0 00 002204' HLRZ N,NOW ;YES--GET TODAY
745 000627' 271 07 0 02 777777 ADDI N,-1(T2) ;OFFSET IT
746 000630' 517 00 0 00 000007 HRLZS N ;POSITION FOR ANSWER
747 000631' 331 00 0 00 002202' DATIMO: SKIPL FLFUTD ;SEE IF FUTURE
748 000632' 660 07 0 00 777777 TRO N,-1 ;YES--SET TO MIDNIGHT MINUS EPSILON
749 000633' 254 00 0 00 000567' JRST DATIMW ;AND GO FINISH UP
750 ;HERE IF UNSUPPORTED MNEMONIC
751 000634' 200 01 0 01 000000 E.MDS: MOVE T1,(T1) ;GET NAME OF SWITCH
752 000635' 260 17 0 00 001532' ERROR. EF$FTL!EF$SIX,MDS,<MNEMONIC DATE/TIME SWITCH NOT IMPLEMENTED>
753 000636' 300403 002523'
BIORTH -- PROGRAM TO CHART BIORHYTHMS %2(6) MACRO %50A(441)-2 14:08 23-FEB-77 PAGE 20
BIORTH MAC 3-FEB-77 13:19 SUBROUTINES FOR COMMAND INPUT -- GET DATE/TIME
754 ;HERE IF STARTING WITH DECIMAL NUMBER
755 000637' 260 17 0 00 000000* DATIMD: PUSHJ P,.DECNC## ;YES--GO GET FULL NUMBER
756 000640' 321 07 0 00 001123' JUMPL N,E$$NND ;ILLEGAL IF NEGATIVE
757 000641' 302 10 0 00 000104 CAIE C,"D" ;SEE IF DAYS
758 000642' 254 00 0 00 000656' JRST DATIN ;NO--MUST BE -
759 000643' 200 01 0 00 002202' MOVE T1,FLFUTD ;YES--RELATIVE SO GET FORCING FUNCTION
760 000644' 202 01 0 00 002203' MOVEM T1,FLFUTR ; AND FORCE IT
761 000645' 322 01 0 00 001125' JUMPE T1,E$$NPF ;ERROR IF DIRECTION UNCLEAR
762 000646' 301 07 0 00 400000 CAIL N,1B18 ;VERIFY NOT HUGE
763 000647' 254 00 0 00 001127' JRST E$$DFL ;ERROR--TOO LARGE
764 000650' 202 07 0 00 002211' MOVEM N,VAL5 ;SAVE RELATIVE DATE
765 000651' 260 17 0 00 000524* PUSHJ P,.TIAUC## ;GET NEXT CHARACTER (SKIP D)
766 000652' 260 17 0 00 001055' PUSHJ P,DATIC ;GO CHECK FOR TIME
767 000653' 201 07 0 00 000000 MOVEI N,0 ;0 IF NONE
768 000654' 504 07 0 00 002211' HRL N,VAL5 ;INCLUDE DAYS IN LH
769 000655' 254 00 0 00 000704' JRST DATITR ;GO DO RELATIVE RETURN
770 ;HERE WHEN DIGITS SEEN WITHOUT A FOLLOWING D
771 000656' 302 10 0 00 000055 DATIN: CAIE C,"-" ;SEE IF DAY/MONTH COMBO
772 000657' 254 00 0 00 000700' JRST DATIT ;NO--MUST BE INTO TIME
773 000660' 303 07 0 00 000037 CAILE N,^D31 ;MUST BE LESS THAN 31
774 000661' 254 00 0 00 001127' JRST E$$DFL ;NO--ERROR
775 000662' 322 07 0 00 001131' JUMPE N,E$$DFZ ;VERIFY NOT ZERO
776 000663' 202 07 0 00 002211' MOVEM N,VAL5 ;SAVE VALUE
777 000664' 260 17 0 00 000651* PUSHJ P,.TIAUC## ;SKIP OVER MINUS
778 000665' 301 10 0 00 000060 CAIL C,"0" ;SEE IF DIGIT NEXT
779 000666' 303 10 0 00 000071 CAILE C,"9" ; ..
780 000667' 254 00 0 00 000710' JRST DATMMM ;NO-- MUST BE MNEMONIC MONTH
781 000670' 260 17 0 00 000637* PUSHJ P,.DECNC## ;YES-- MUST BE MM-DD FORMAT
782 000671' 323 07 0 00 001123' JUMPLE N,E$$NND ;BAD IF LE 0
783 000672' 303 07 0 00 000037 CAILE N,^D31 ;VERIFY LE 31
784 000673' 254 00 0 00 001127' JRST E$$DFL ;BAD
785 000674' 250 07 0 00 002211' EXCH N,VAL5 ;SWITCH VALUES
786 000675' 303 07 0 00 000014 CAILE N,^D12 ;VERIFY MONTH OK
787 000676' 254 00 0 00 001127' JRST E$$DFL ;BAD
788 000677' 254 00 0 00 000716' JRST DATMM1 ;GO STORE MONTH
789 ;HERE WHEN TIME SEEN BY ITSELF
790 000700' 260 17 0 00 001060' DATIT: PUSHJ P,DATIG ;GET REST OF TIME
791 000701' 254 04 0 00 000701' HALT . ;CAN NOT GET HERE
792 000702' 336 00 0 00 002203' SKIPN FLFUTR ;SEE IF RELATIVE
793 000703' 254 00 0 00 000761' JRST DATIRN ;NO--GO HANDLE AS ABS.
794 ;HERE WITH DISTANCE IN N
795 000704' 335 00 0 00 002203' DATITR: SKIPGE FLFUTR ;IF PAST,
796 000705' 210 07 0 00 000007 MOVN N,N ; COMPLEMENT DISTANCE
797 000706' 270 07 0 00 002204' ADD N,NOW ;ADD TO CURRENT DATE/TIME
798 000707' 254 00 0 00 001024' JRST DATIMX ;CHECK ANSWER AND RETURN
BIORTH -- PROGRAM TO CHART BIORHYTHMS %2(6) MACRO %50A(441)-2 14:08 23-FEB-77 PAGE 21
BIORTH MAC 3-FEB-77 13:19 SUBROUTINES FOR COMMAND INPUT -- GET DATE/TIME
799 ;HERE WHEN DD- SEEN AND MNEMONIC MONTH COMING
800 000710' 260 17 0 00 000540* DATMMM: PUSHJ P,.SIXSC## ;GET MNEMONIC
801 000711' 200 01 0 00 001200' MOVE T1,MONPTR ;GET POINTER TO MONTH TABLE
802 000712' 260 17 0 00 000543* PUSHJ P,.NAME## ;LOOKUP IN TABLE
803 000713' 254 00 0 00 001133' JRST E$$UDM ;NO GOOD
804 000714' 201 07 0 01 000000 MOVEI N,(T1) ;GET MONTH
805 000715' 275 07 0 00 001153' SUBI N,MONTHS-1 ; AS 1-12
806 ;HERE WITH MONTH INDEX (1-12) IN T1
807 000716' 202 07 0 00 002212' DATMM1: MOVEM N,VAL6 ;SAVE FOR LATER
808 000717' 302 10 0 00 000055 DATIY0: CAIE C,"-" ;SEE IF YEAR NEXT
809 000720' 254 00 0 00 000747' JRST DATIRA ;NO--GO HANDLE TIME
810 ;HERE WHEN YEAR NEXT AS ONE, TWO, OR FOUR DIGITS
811 000721' 403 07 0 00 000001 SETZB N,T1 ;CLEAR DIGIT AND RESULT COUNTERS
812 000722' 260 17 0 00 000664* DATIY: PUSHJ P,.TIAUC## ;GET NEXT DIGIT
813 000723' 301 10 0 00 000060 CAIL C,"0" ;SEE IF NUMERIC
814 000724' 303 10 0 00 000071 CAILE C,"9" ; ..
815 000725' 254 00 0 00 000731' JRST DATIY1 ;NO--MUST BE DONE
816 000726' 221 07 0 00 000012 IMULI N,^D10 ;ADVANCE RESULT
817 000727' 271 07 0 10 777720 ADDI N,-"0"(C) ;INCLUDE THIS DIGIT
818 000730' 344 01 0 00 000722' AOJA T1,DATIY ;LOOP FOR MORE, COUNTING DIGIT
819 000731' 322 01 0 00 001135' DATIY1: JUMPE T1,E$$ILR ;ERROR IF NO DIGITS
820 000732' 302 01 0 00 000003 CAIE T1,3 ;ERROR IF 3 DIGITS
821 000733' 303 01 0 00 000004 CAILE T1,4 ;OK IF 1,2, OR 4
822 000734' 254 00 0 00 001135' JRST E$$ILR ;ERROR IF GT 4 DIGITS
823 000735' 200 02 0 00 000007 MOVE T2,N ;GET RESULT
824 000736' 231 02 0 00 000144 IDIVI T2,^D100 ;SEP. CENTURY
825 000737' 231 03 0 00 000012 IDIVI T3,^D10 ;SEP. DECADE
826 000740' 307 01 0 00 000002 CAIG T1,2 ;IF ONE OR TWO DIGITS,
827 000741' 476 00 0 00 000002 SETOM T2 ; FLAG NO CENTURY KNOWN
828 000742' 306 01 0 00 000001 CAIN T1,1 ;IF ONE DIGIT,
829 000743' 476 00 0 00 000003 SETOM T3 ; FLAG NO DECADE KNOWN
830 000744' 202 04 0 00 002213' MOVEM T4,VAL7 ;SAVE UNITS
831 000745' 202 03 0 00 002214' MOVEM T3,VAL8 ;SAVE DECADE
832 000746' 202 02 0 00 002215' MOVEM T2,VAL9 ;SAVE CENTURY
BIORTH -- PROGRAM TO CHART BIORHYTHMS %2(6) MACRO %50A(441)-2 14:08 23-FEB-77 PAGE 22
BIORTH MAC 3-FEB-77 13:19 SUBROUTINES FOR COMMAND INPUT -- GET DATE/TIME
833 ;HERE WITH VAL5-9 CONTAINING DAY, MONTH, YEAR, DECADE, CENTURY
834 000747' 370 00 0 00 002211' DATIRA: SOS VAL5 ;MAKE DAYS 0-30
835 000750' 370 00 0 00 002212' SOS VAL6 ;MAKE MONTHS 0-11
836 000751' 260 17 0 00 001055' PUSHJ P,DATIC ;GET TIME IF PRESENT
837 000752' 337 00 0 00 002202' SKIPG FLFUTD ;IGNORE ABSENCE
838 000753' 254 00 0 00 000761' JRST DATIRN ; UNLESS FUTURE
839 ;HERE IF FUTURE WITHOUT TIME
840 000754' 201 01 0 00 000073 MOVEI T1,^D59 ;SET TO
841 000755' 202 01 0 00 002206' MOVEM T1,VAL2 ; 23:59:59
842 000756' 202 01 0 00 002207' MOVEM T1,VAL3 ; ..
843 000757' 201 01 0 00 000027 MOVEI T1,^D23 ; ..
844 000760' 202 01 0 00 002210' MOVEM T1,VAL4 ; ..
845 ;HERE WITH VAL2-9 CONTAINING PARSE OR -1 IF TO BE FILLED IN
846 ; STRATEGY IS TO FILL-IN HOLES LESS SIGNIFICANT THAN
847 ; MOST SIGN. FIELD WITH 0; AND TO FILL IN MORE SIGNIFICANT
848 ; HOLES WITH CURRENT VALUE. THEN IF WRONG DIRECTION FROM
849 ; NOW, ADD/SUB ONE TO FIELD JUST ABOVE MOST SIGNIFICANT DIFFERENT
850 ; (FIELD CARRY NOT NEEDED SINCE IT WILL HAPPEN IMPLICITLY).
851 000761' 260 17 0 00 000000* DATIRN: PUSHJ P,.TICAN## ;MAKE SURE NEXT CHAR IS SEPARATOR
852 000762' 334 00 0 00 000000 SKIPA ;YES--OK
853 000763' 254 00 0 00 000000* JRST E.ILSC## ;NO--FLAG ERROR BEFORE DEFAULTING
854 000764' 200 01 0 00 002204' MOVE T1,NOW ;GET CURRENT DATE/TIME
855 000765' 260 17 0 00 001202' PUSHJ P,.CNTDT ;CONVERT TO EASY FORMAT
856 000766' 200 03 0 00 000001 MOVE T3,T1 ;SAVE MSTIME
857 000767' 231 03 0 00 001750 IDIVI T3,^D1000 ; AS SECONDS
858 000770' 270 02 0 00 002524' ADD T2,[^D1900*^D12*^D31] ;MAKE REAL
859 000771' 201 04 0 00 000010 MOVEI T4,8 ;TRY 8 FIELDS
860 000772' 200 01 0 00 000002 DATIRB: MOVE T1,T2 ;POSITION REMAINDER
861 IDIV T1,[1
862 ^D60
863 ^D60*^D60
864 1
865 ^D31
866 ^D31*^D12
867 ^D31*^D12*^D10
868 000773' 230 01 0 04 002524' ^D31*^D12*^D10*^D10]-1(T4) ;SPLIT THIS FIELD FROM REST
869 000774' 331 00 0 04 002205' SKIPL VAL1(T4) ;SEE IF DEFAULT
870 JRST [TLNN T3,-1 ;NO--FLAG TO ZERO DEFAULTS
871 HRL T3,T4 ; SAVING INDEX OF LAST DEFAULT
872 000775' 254 00 0 00 002535' JRST DATRIC] ;AND CONTINUE LOOP
873 000776' 402 00 0 04 002205' SETZM VAL1(T4) ;DEFAULT TO
874 000777' 607 03 0 00 777777 TLNN T3,-1 ;SEE IF NEED CURRENT
875 001000' 202 01 0 04 002205' MOVEM T1,VAL1(T4) ;YES--SET THAT INSTEAD
876 001001' 312 01 0 04 002205' DATRIC: CAME T1,VAL1(T4) ;SEE IF SAME AS CURRENT
877 001002' 254 00 0 00 001006' JRST DATIRD ;NO--REMEMBER FOR LATER
878 001003' 306 04 0 00 000004 CAIN T4,4 ;SEE IF TIME FOR TIME
879 001004' 550 02 0 00 000003 HRRZ T2,T3 ;YES--GET IT
880 001005' 367 04 0 00 000772' SOJG T4,DATIRB ;LOOP UNTIL ALL DONE
BIORTH -- PROGRAM TO CHART BIORHYTHMS %2(6) MACRO %50A(441)-2 14:08 23-FEB-77 PAGE 23
BIORTH MAC 3-FEB-77 13:19 SUBROUTINES FOR COMMAND INPUT -- GET DATE/TIME
881 ;HERE WHEN FILLED IN CURRENT FOR SIGNIFICANT DEFAULTS
882 001006' 335 00 0 04 002205' DATIRD: SKIPGE VAL1(T4) ;SEE IF DEFAULT
883 001007' 402 00 0 04 002205' SETZM VAL1(T4) ;CLEAR DEFAULT
884 001010' 367 04 0 00 001006' SOJG T4,DATIRD ;LOOP UNTIL DONE
885 001011' 554 07 0 00 000003 HLRZ N,T3 ;RECOVER LAST SIGN. DEFAULT-1
886 001012' 322 07 0 00 001022' JUMPE N,DATIRR ;DONE IF NONE
887 001013' 260 17 0 00 001034' PUSHJ P,DATIRM ;MAKE CURRENT DATE, TIME
888 001014' 200 04 0 00 002202' MOVE T4,FLFUTD ;GET DEFAULT DIRECTION
889 XCT [CAMGE T1,NOW
890 JFCL
891 001015' 256 00 0 04 002541' CAMLE T1,NOW]+1(T4) ;SEE IF OK
892 001016' 254 00 0 00 001022' JRST DATIRR ;YES--GO RETURN
893 001017' 337 00 0 00 002202' SKIPG FLFUTD ;NO--SEE WHICH DIRECTION
894 001020' 374 00 0 07 002206' SOSA VAL2(N) ;PAST
895 001021' 350 00 0 07 002206' AOS VAL2(N) ;FUTURE
896 001022' 260 17 0 00 001034' DATIRR: PUSHJ P,DATIRM ;REMAKE ANSWER
897 001023' 200 07 0 00 000001 MOVE N,T1 ;MOVE TO ANSWER
898 ;HERE WITH FINAL RESULT, CHECK FOR OK
899 RADIX 10
900 001024' 201 01 0 00 001336' DATIMX: MOVEI T1,.TDTTM ;SET DATE-TIME
901 001025' 202 01 0 00 000000* MOVEM T1,.LASWD## ; OUTPUTER
902 001026' 315 07 0 00 002543' CAMGE N,[<1900-1859>*365+<1900-1859>/4+<31-18>+31,,0]
903 001027' 254 00 0 00 001032' JRST E$$DOR ;OUT OF RANGE
904 001030' 202 07 0 00 000000* MOVEM N,.NMUL## ;STORE IN .NMUL
905 001031' 263 17 0 00 000000 POPJ P, ;**RETURN
906 RADIX 8
907 001032' 260 17 0 00 001532' M$FAIL (DOR,Date/time out of range)
908 001033' 300400 002551'
909
910 ;SUBROUTINE TO MAKE DATE/TIME
911 001034' 200 01 0 00 002210' DATIRM: MOVE T1,VAL4 ;GET HOURS
912 001035' 221 01 0 00 000074 IMULI T1,^D60 ;MAKE INTO MINS
913 001036' 270 01 0 00 002207' ADD T1,VAL3 ;ADD MINS
914 001037' 221 01 0 00 000074 IMULI T1,^D60 ;MAKE INTO SECS
915 001040' 270 01 0 00 002206' ADD T1,VAL2 ;ADD SECS
916 001041' 221 01 0 00 001750 IMULI T1,^D1000 ;MAKE INTO MILLISECS
917 001042' 200 02 0 00 002215' MOVE T2,VAL9 ;GET CENTURIES
918 001043' 221 02 0 00 000012 IMULI T2,^D10 ;MAKE INTO DECADES
919 001044' 270 02 0 00 002214' ADD T2,VAL8 ;ADD DECADES
920 001045' 221 02 0 00 000012 IMULI T2,^D10 ;MAKE INTO YEARS
921 001046' 270 02 0 00 002213' ADD T2,VAL7 ;ADD YEARS
922 001047' 221 02 0 00 000014 IMULI T2,^D12 ;MAKE INTO MONTHS
923 001050' 270 02 0 00 002212' ADD T2,VAL6 ;ADD MONTHS
924 001051' 221 02 0 00 000037 IMULI T2,^D31 ;MAKE INTO DAYS
925 001052' 270 02 0 00 002211' ADD T2,VAL5 ;ADD DAYS
926 001053' 274 02 0 00 002524' SUB T2,[^D1900*^D12*^D31] ;REDUCE TO SYSTEM RANGE
927 001054' 254 00 0 00 001260' PJRST .CNVDT ;CONVERT TO INTERNAL FORM AND RETURN
BIORTH -- PROGRAM TO CHART BIORHYTHMS %2(6) MACRO %50A(441)-2 14:08 23-FEB-77 PAGE 24
BIORTH MAC 3-FEB-77 13:19 SUBROUTINES FOR COMMAND INPUT -- GET DATE/TIME
928 ;SUBROUTINE TO GET TIME IF SPECIFIED
929 ;RETURNS CPOPJ IF NO TIME, SKIP RETURN IF TIME
930 ; WITH TIME IN RH(N) AS FRACTION OF DAY
931 ;USES T1-4, N
932
933 001055' 302 10 0 00 000072 DATIC: CAIE C,":" ;SEE IF TIME NEXT
934 001056' 263 17 0 00 000000 POPJ P, ;NO--MISSING TIME
935 001057' 260 17 0 00 000604* PUSHJ P,.DECNW## ;GET DECIMAL NUMBER FOR TIME
936 ;HERE WITH FIRST TIME FIELD IN N
937 001060' 321 07 0 00 001123' DATIG: JUMPL N,E$$NND ;ERROR IF NEGATIVE
938 001061' 301 07 0 00 000030 CAIL N,^D24 ; AND GE 24,
939 001062' 254 00 0 00 001127' JRST E$$DFL ;GIVE ERROR--TOO LARGE
940 001063' 202 07 0 00 002210' MOVEM N,VAL4 ;SAVE HOURS
941 001064' 302 10 0 00 000072 CAIE C,":" ;SEE IF MINUTES COMING
942 001065' 254 00 0 00 001102' JRST DATID ;NO--DONE
943 001066' 260 17 0 00 001057* PUSHJ P,.DECNW## ;YES--GET IT
944 001067' 301 07 0 00 000074 CAIL N,^D60 ;SEE IF IN RANGE
945 001070' 254 00 0 00 001127' JRST E$$DFL ;NO--GIVE ERROR
946 001071' 321 07 0 00 001123' JUMPL N,E$$NND ;ERROR IF NEG
947 001072' 202 07 0 00 002207' MOVEM N,VAL3 ;SAVE MINUTES
948 001073' 302 10 0 00 000072 CAIE C,":" ;SEE IF SEC. COMING
949 001074' 254 00 0 00 001102' JRST DATID ;NO--DONE
950 001075' 260 17 0 00 001066* PUSHJ P,.DECNW## ;GET SECONDS
951 001076' 301 07 0 00 000074 CAIL N,^D60 ;CHECK RANGE
952 001077' 254 00 0 00 001127' JRST E$$DFL ;NO--GIVE ERROR
953 001100' 321 07 0 00 001123' JUMPL N,E$$NND ;ERROR IF NEG
954 001101' 202 07 0 00 002206' MOVEM N,VAL2 ;SAVE SECONDS
955 ;HERE WITH TIME IN VAL2-4
956 001102' 335 01 0 00 002210' DATID: SKIPGE T1,VAL4 ;GET HOURS
957 001103' 201 01 0 00 000000 MOVEI T1,0 ; UNLESS ABSENT
958 001104' 221 01 0 00 000074 IMULI T1,^D60 ;CONV TO MINS
959 001105' 331 00 0 00 002207' SKIPL VAL3 ;IF MINS PRESENT,
960 001106' 270 01 0 00 002207' ADD T1,VAL3 ; ADD MINUTES
961 001107' 221 01 0 00 000074 IMULI T1,^D60 ;CONV TO SECS
962 001110' 331 00 0 00 002206' SKIPL VAL2 ;IF SECS PRESENT,
963 001111' 270 01 0 00 002206' ADD T1,VAL2 ; ADD SECONDS
964 001112' 201 02 0 00 000000 MOVEI T2,0 ;CLEAR OTHER HALF
965 001113' 244 01 0 00 777757 ASHC T1,-^D17 ;MULT BY 2**18
966 001114' 235 01 0 00 250600 DIVI T1,^D24*^D3600 ;DIVIDE BY SECONDS/DAY
967 001115' 200 07 0 00 000001 MOVE N,T1 ;RESULT IS FRACTION OF DAY IN RH
968 001116' 254 00 0 00 000123* JRST .POPJ1## ;RETURN
BIORTH -- PROGRAM TO CHART BIORHYTHMS %2(6) MACRO %50A(441)-2 14:08 23-FEB-77 PAGE 25
BIORTH MAC 3-FEB-77 13:19 SUBROUTINES FOR COMMAND INPUT -- GET DATE/TIME
969 ;DATE/TIME ERRORS
970
971 001117' 260 17 0 00 001532' M$FAIL (NFT,Date/time must be in the future)
972 001120' 300400 002561'
973 001121' 260 17 0 00 001532' M$FAIL (NPS,Date/time must be in the past)
974 001122' 300400 002570'
975 001123' 260 17 0 00 001532' M$FAIL (NND,Negative number in date/time)
976 001124' 300400 002577'
977 001125' 260 17 0 00 001532' M$FAIL (NPF,Not known whether past or future in date/time)
978 001126' 300400 002612'
979 001127' 260 17 0 00 001532' M$FAIL (DFL,Field too large in date/time)
980 001130' 300400 002621'
981 001131' 260 17 0 00 001532' M$FAIL (DFZ,Field zero in date/time)
982 001132' 300400 002627'
983 001133' 260 17 0 00 001532' M$FAIL (UDM,Unrecognized month in date/time)
984 001134' 300400 002637'
985 001135' 260 17 0 00 001532' M$FAIL (ILR,Illegal year format in date/time)
986 001136' 300400 002647'
987 001137' 260 17 0 00 001532' M$FAIL (UDN,Unrecognized name in date/time)
988 001140' 300400 002657'
989 001141' 260 17 0 00 001532' M$FAIL (MDD,Missing day in date/time)
990 001142' 300400 002665'
991 001143' 260 17 0 00 001532' M$FAIL (DTM,Value missing in date/time)
992 001144' 300400 002674'
993
994
995 ;MNEMONIC WORDS IN DATE/TIME SCAN
996
997 DEFINE XX($1),<
998 EXP <SIXBIT /$1/>>
999
1000 001145' 674544 564563 DAYS: XX WEDNESDAY
1001 001146' 645065 626344 XX THURSDAY
1002 001147' 466251 444171 XX FRIDAY
1003 001150' 634164 656244 XX SATURDAY
1004 001151' 636556 444171 XX SUNDAY
1005 001152' 555756 444171 XX MONDAY
1006 001153' 646545 634441 XX TUESDAY
1007
1008 001154' 524156 654162 MONTHS: XX JANUARY
1009 001155' 464542 626541 XX FEBRUARY
1010 001156' 554162 435000 XX MARCH
1011 001157' 416062 515400 XX APRIL
1012 001160' 554171 000000 XX MAY
1013 001161' 526556 450000 XX JUNE
1014 001162' 526554 710000 XX JULY
1015 001163' 416547 656364 XX AUGUST
1016 001164' 634560 644555 XX SEPTEMBER
1017 001165' 574364 574245 XX OCTOBER
1018 001166' 565766 455542 XX NOVEMBER
1019 001167' 444543 455542 XX DECEMBER
1020
1021 001170' 714563 644562 SPCDAY: XX YESTERDAY
1022 001171' 645744 417100 XX TODAY
1023 001172' 645755 576262 XX TOMORROW
BIORTH -- PROGRAM TO CHART BIORHYTHMS %2(6) MACRO %50A(441)-2 14:08 23-FEB-77 PAGE 25-1
BIORTH MAC 3-FEB-77 13:19 SUBROUTINES FOR COMMAND INPUT -- GET DATE/TIME
1024
1025 001173' 545747 515600 SPLGTM: XX LOGIN
1026 001174' 565757 560000 SPNOON: XX NOON
1027 001175' 555144 565147 SPMIDN: XX MIDNIGHT
1028
1029 001176' 546556 435000 SPDATM: XX LUNCH
1030 001177' 445156 564562 XX DINNER
1031 000033 LSPDTM==.-DAYS
1032
1033 ;POINTERS
1034
1035 001200' 777764 001153' MONPTR: IOWD ^D12,MONTHS
1036 001201' 777745 001144' MNDPTR: IOWD LSPDTM,DAYS
BIORTH -- PROGRAM TO CHART BIORHYTHMS %2(6) MACRO %50A(441)-2 14:08 23-FEB-77 PAGE 26
BIORTH MAC 3-FEB-77 13:19 ROUTINES TO COVERT DATE/TIME FORMATS
1037 SUBTTL ROUTINES TO COVERT DATE/TIME FORMATS
1038
1039 ;.CNTDT -- SUBROUTINE TO CONVERT FROM INTERNAL DATE/TIME FORMAT
1040 ;CALL: MOVE T1,DATE/TIME
1041 ; PUSHJ P,.CNTDT
1042 ; RETURN WITH T1=TIME IN MS., T2=DATE IN SYSTEM FORMAT (.LT. 0 IF ARG .LT. 0)
1043 ;BASED ON IDEAS BY JOHN BARNABY, DAVID ROSENBERG, PETER CONKLIN
1044 ;USES T1-4
1045
1046 001202' 261 17 0 00 000001 .CNTDT: PUSH P,T1 ;SAVE TIME FOR LATER
1047 001203' 321 01 0 00 001245' JUMPL T1,CNTDT6 ;DEFEND AGAINST JUNK INPUT
1048 001204' 554 01 0 00 000001 HLRZ T1,T1 ;GET DATE PORTION (DAYS SINCE 1858)
1049
1050 RADIX 10 ;**** NOTE WELL ****
1051
1052 ADDI T1,<1857-1500>*365+<1857-1500>/4-<1857-1500>/100+<1857-1500>/400+31+28+31+3
1053 001205' 271 01 0 00 377230 0+31+30+31+31+30+31+17
1054 ;T1=DAYS SINCE JAN 1, 1501
1055 001206' 231 01 0 00 435261 IDIVI T1,400*365+400/4-400/100+400/400
1056 ;SPLIT INTO QUADRACENTURY
1057 001207' 242 02 0 00 000002 LSH T2,2 ;CONVERT TO NUMBER OF QUARTER DAYS
1058 001210' 231 02 0 00 435261 IDIVI T2,<100*365+100/4-100/100>*4+400/400
1059 ;SPLIT INTO CENTURY
1060 001211' 435 03 0 00 000003 IORI T3,3 ;DISCARD FRACTIONS OF DAY
1061 001212' 231 03 0 00 002665 IDIVI T3,4*365+1 ;SEPARATE INTO YEARS
1062 001213' 242 04 0 00 777776 LSH T4,-2 ;T4=NO DAYS THIS YEAR [311]
1063 001214' 242 01 0 00 000002 LSH T1,2 ;T1=4*NO QUADRACENTURIES [311]
1064 001215' 270 01 0 00 000002 ADD T1,T2 ;T1=NO CENTURIES [311]
1065 001216' 221 01 0 00 000144 IMULI T1,100 ;T1=100*NO CENTURIES [311]
1066 001217' 271 01 0 03 002735 ADDI T1,1501(T3) ;T1 HAS YEAR, T4 HAS DAY IN YEAR [311]
1067
1068 001220' 200 02 0 00 000001 MOVE T2,T1 ;COPY YEAR TO SEE IF LEAP YEAR
1069 001221' 602 02 0 00 000003 TRNE T2,3 ;IS THE YEAR A MULT OF 4? [311]
1070 001222' 254 00 0 00 001227' JRST CNTDT0 ;NO--JUST INDICATE NOT A LEAP YEAR [311]
1071 001223' 231 02 0 00 000144 IDIVI T2,100 ;SEE IF YEAR IS MULT OF 100 [311]
1072 001224' 336 00 0 00 000003 SKIPN T3 ;IF NOT, THEN LEAP [311]
1073 001225' 606 02 0 00 000003 TRNN T2,3 ;IS YEAR MULT OF 400? [311]
1074 001226' 634 03 0 00 000003 TDZA T3,T3 ;YES--LEAP YEAR AFTER ALL [311]
1075 001227' 201 03 0 00 000001 CNTDT0: MOVEI T3,1 ;SET LEAP YEAR FLAG [311]
1076 ;T3 IS 0 IF LEAP YEAR
BIORTH -- PROGRAM TO CHART BIORHYTHMS %2(6) MACRO %50A(441)-2 14:08 23-FEB-77 PAGE 27
BIORTH MAC 3-FEB-77 13:19 ROUTINES TO COVERT DATE/TIME FORMATS
1077 ;UNDER RADIX 10 **** NOTE WELL ****
1078
1079 001230' 275 01 0 00 003554 CNTDT1: SUBI T1,1900 ;SET TO SYSTEM ORIGIN
1080 001231' 221 01 0 00 000564 IMULI T1,31*12 ;CHANGE TO SYSTEM PSEUDO DAYS
1081 001232' 326 03 0 00 001236' JUMPN T3,CNTDT2 ;IF NOT LEAP YEAR, PROCEED
1082 001233' 305 04 0 00 000074 CAIGE T4,31+29 ;LEAP YEAR--SEE IF BEYOND FEB 29
1083 001234' 254 00 0 00 001244' JRST CNTDT5 ;NO--JUST INCLUDE IN ANSWER
1084 001235' 370 00 0 00 000004 SOS T4 ;YES--BACK OFF ONE DAY
1085 001236' 205 02 0 00 777765 CNTDT2: MOVSI T2,-11 ;LOOP FOR 11 MONTHS
1086
1087 001237' 315 04 0 02 001322' CNTDT3: CAMGE T4,MONTAB+1(T2) ;SEE IF BEYOND THIS MONTH
1088 001240' 254 00 0 00 001243' JRST CNTDT4 ;YES--GO FINISH UP
1089 001241' 271 01 0 00 000037 ADDI T1,31 ;NO--COUNT SYSTEM MONTH
1090 001242' 253 02 0 00 001237' AOBJN T2,CNTDT3 ;LOOP THROUGH NOVEMBER
1091
1092 001243' 274 04 0 02 001321' CNTDT4: SUB T4,MONTAB(T2) ;GET DAYS IN THIS MONTH
1093 001244' 270 01 0 00 000004 CNTDT5: ADD T1,T4 ;INCLUDE IN FINAL RESULT
1094
1095 001245' 250 01 0 17 000000 CNTDT6: EXCH T1,(P) ;SAVE ANSWER, GET TIME
1096 001246' 621 01 0 00 777777 TLZ T1,-1 ;CLEAR DATE
1097 001247' 224 01 0 00 002675' MUL T1,[24*60*60*1000] ;CONVERT TO MILLI-SEC.
1098 001250' 244 01 0 00 000021 ASHC T1,17 ;POSITION RESULT
1099 001251' 262 17 0 00 000002 POP P,T2 ;RECOVER DATE
1100 001252' 263 17 0 00 000000 POPJ P, ;RETURN
1101
1102 ;.GTNOW -- COMPUTE CURRENT TIME IN SPECIAL FORMAT
1103 ;CALL: PUSHJ P,.GTNOW
1104 ;RETURNS WITH RESULT IN T1
1105 ;USES T2, T3, T4
1106
1107 001253' 200 01 0 00 002676' .GTNOW: MOVX T1,%CNDTM ;ASK MONITOR [310]
1108 001254' 047 01 0 00 000041 GETTAB T1, ; FOR ANSWER [310]
1109 001255' 260 17 0 00 001532' ERROR. EF$FTL,CGN,<CAN'T GET 'NOW' FROM MONITOR>
1110 001256' 300400 002705'
1111 001257' 254 00 0 00 001320' JRST GETNWX ;GO GIVE RESULT
BIORTH -- PROGRAM TO CHART BIORHYTHMS %2(6) MACRO %50A(441)-2 14:08 23-FEB-77 PAGE 28
BIORTH MAC 3-FEB-77 13:19 ROUTINES TO COVERT DATE/TIME FORMATS
1112 ;UNDER RADIX 10 **** NOTE WELL ****
1113
1114 ;FALL HERE FROM .GTNOW
1115
1116 ;.CNVDT -- CONVERT ARBITRARY DATE TO SPECIAL FORMAT
1117 ;CALL: MOVE T1,TIME IN MILLISEC.
1118 ; MOVE T2,DATE IN SYSTEM FORMAT (Y*12+M)*31+DAY SINCE 1/1/64
1119 ; PUSHJ P,.CNVDT
1120 ;RETURNS WITH RESULT IN T1 (.GT.0; OR -1 IF BEYOND SEPT. 27,2217)
1121 ; NOTE THAT IN SPECIAL FORMAT, THE LEFT HALF DIVIDED
1122 ; BY 7 GIVES THE DAY OF THE WEEK (0=WED.)
1123 ;USES T2, T3, T4
1124
1125 001260' 260 17 0 00 000000* .CNVDT: PUSHJ P,.SAVE1## ;PRESERVE P1
1126 001261' 261 17 0 00 000001 PUSH P,T1 ;SAVE TIME FOR LATER
1127 001262' 231 02 0 00 000564 IDIVI T2,12*31 ;T2=YEARS-1900
1128 001263' 303 02 0 00 000475 CAILE T2,2217-1900 ;SEE IF BEYOND 2217
1129 001264' 254 00 0 00 001312' JRST GETNW2 ;YES--RETURN -1
1130 001265' 231 03 0 00 000037 IDIVI T3,31 ;T3=MONTHS-JAN, T4=DAYS-1
1131 001266' 270 04 0 03 001321' ADD T4,MONTAB(T3) ;T4=DAYS-JAN 1
1132 001267' 201 05 0 00 000000 MOVEI P1,0 ;LEAP YEAR ADDITIVE IF JAN, FEB
1133 001270' 301 03 0 00 000002 CAIL T3,2 ;CHECK MONTH
1134 001271' 201 05 0 00 000001 MOVEI P1,1 ;ADDITIVE IF MAR-DEC
1135 001272' 200 01 0 00 000002 MOVE T1,T2 ;SAVE YEARS FOR REUSE
1136 001273' 271 02 0 00 000003 ADDI T2,3 ;OFFSET SINCE LEAP YEAR DOES NOT GET COUNTED
1137 001274' 231 02 0 00 000004 IDIVI T2,4 ;HANDLE REGULAR LEAP YEARS
1138 001275' 302 03 0 00 000003 CAIE T3,3 ;SEE IF THIS IS LEAP YEAR
1139 001276' 201 05 0 00 000000 MOVEI P1,0 ;NO--WIPE OUT ADDITIVE
1140 001277' 271 04 0 02 035253 ADDI T4,<1900-1859>*365+<1900-1859>/4+<31-18>+31(T2)
1141 ;T4=DAYS BEFORE JAN 1,1900 +SINCE JAN 1
1142 ; +ALLOWANCE FOR ALL LEAP YEARS SINCE 64
1143 001300' 200 02 0 00 000001 MOVE T2,T1 ;RESTORE YEARS SINCE 1900
1144 001301' 221 02 0 00 000555 IMULI T2,365 ;DAYS SINCE 1900
1145 001302' 270 04 0 00 000002 ADD T4,T2 ;T4=DAYS EXCEPT FOR 100 YR. FUDGE
1146 001303' 571 02 0 01 777633 HRREI T2,-100-1(T1) ;T2=YEARS SINCE 2001
1147 001304' 323 02 0 00 001310' JUMPLE T2,GETNW1 ;ALL DONE IF NOT YET 2001
1148 001305' 231 02 0 00 000144 IDIVI T2,100 ;GET CENTURIES SINCE 2001
1149 001306' 274 04 0 00 000002 SUB T4,T2 ;ALLOW FOR LOST LEAP YEARS
1150 001307' 302 03 0 00 000143 CAIE T3,99 ;SEE IF THIS IS A LOST L.Y.
1151 001310' 270 04 0 00 000005 GETNW1: ADD T4,P1 ;ALLOW FOR LEAP YEAR THIS YEAR
1152 001311' 303 04 0 00 377777 CAILE T4,^O377777 ;SEE IF TOO BIG
1153 001312' 476 00 0 00 000004 GETNW2: SETOM T4 ;YES--SET -1
1154
1155 001313' 262 17 0 00 000001 POP P,T1 ;GET MILLISEC TIME
1156 001314' 201 02 0 00 000000 MOVEI T2,0 ;CLEAR OTHER HALF
1157 001315' 244 01 0 00 777757 ASHC T1,-17 ;POSITION
1158 001316' 234 01 0 00 002675' DIV T1,[24*60*60*1000] ;CONVERT TO 1/2**18 DAYS
1159 001317' 504 01 0 00 000004 HRL T1,T4 ;INCLUDE DATE
1160 001320' 263 17 0 00 000000 GETNWX: POPJ P, ;RETURN
BIORTH -- PROGRAM TO CHART BIORHYTHMS %2(6) MACRO %50A(441)-2 14:08 23-FEB-77 PAGE 29
BIORTH MAC 3-FEB-77 13:19 ROUTINES TO COVERT DATE/TIME FORMATS
1161 ;UNDER RADIX 10 **** NOTE WELL ****
1162
1163 001321' 000000 000000 MONTAB: EXP 0,31,59,90,120,151,181,212,243,273,304,334,365
1164 001322' 000000 000037
1165 001323' 000000 000073
1166 001324' 000000 000132
1167 001325' 000000 000170
1168 001326' 000000 000227
1169 001327' 000000 000265
1170 001330' 000000 000324
1171 001331' 000000 000363
1172 001332' 000000 000421
1173 001333' 000000 000460
1174 001334' 000000 000516
1175 001335' 000000 000555
1176 RADIX 8
BIORTH -- PROGRAM TO CHART BIORHYTHMS %2(6) MACRO %50A(441)-2 14:08 23-FEB-77 PAGE 30
BIORTH MAC 3-FEB-77 13:19 DATE/TIME OUTPUT
1177 SUBTTL DATE/TIME OUTPUT
1178
1179 ;.TDTTM -- TYPE DATE AND TIME IN UNIVERSAL FORMAT
1180 ;CALL: MOVE T1,DATE/TIME IN UNIVERSAL FORMAT
1181 ; CALL .TDTTM
1182 ;USES T1-4
1183
1184 001336' 260 17 0 00 001202' .TDTTM: PUSHJ P,.CNTDT ;DISASSEMBLE
1185 SAVE$ T1 ;SAVE TIME
1186 001340' 200 01 0 00 000002 MOVE T1,T2 ;POSITION DATE
1187 001341' 260 17 0 00 001355' PUSHJ P,.TDATE ;TYPE DATE
1188 001342' 260 17 0 00 000000* PUSHJ P,.TCOLN## ;AND A COLON
1189 RESTR$ T1 ;GET TIME
1190 001344' 254 00 0 00 000000* PJRST .TTIME## ;TYPE IT AND RETURN
1191
1192 ;.TDATX -- TYPE DAY AND DATE IN UNIVERSAL FORMAT
1193 ;CALL: MOVE T1,DATE/TIME IN UNIVERSAL FORMAT
1194 ; CALL .TDATX
1195 ;USES T1-4
1196
1197 001345' 261 17 0 00 000001 .TDATX: PUSH P,T1 ;REMEMBER UNIVERSAL DATE/TIME
1198 001346' 557 00 0 00 000001 HLRZS T1 ;POSITION DATE TO RIGHT HALF
1199 001347' 231 01 0 00 000007 IDIVI T1,7 ;FIGURE DAY OF WEEK
1200 001350' 201 01 0 02 001375' MOVEI T1,DAYOFW(T2) ;GET STRING ADDRESS
1201 001351' 260 17 0 00 000375* CALL .TSTRG## ;SEND DAY STRING
1202 001352' 262 17 0 00 000001 POP P,T1 ;GET DATE BACK
1203 001353' 260 17 0 00 001202' CALL .CNTDT ;DISSASSEMBLE
1204 001354' 200 01 0 00 000002 MOVE T1,T2 ;POSITION DATE
1205 ; PJRST .TDATE ;TYPE AND RETURN
1206
1207 ;.TDATE -- TYPE DATE IN STANDARD FORMAT OF DD-MMM-YY
1208 ;CALL: MOVEI T1,DATE IN SYSTEM FORMAT FROM DATE UUO
1209 ; PUSHJ P,.TDATE
1210 ;USES T1-4
1211
1212 001355' 260 17 0 00 001260* .TDATE: PUSHJ P,.SAVE1## ;SAVE P1
1213 001356' 231 01 0 00 000037 IDIVI T1,^D31 ;GET DAYS
1214 001357' 200 04 0 00 000001 MOVE T4,T1 ;SAVE REST
1215 001360' 201 01 0 02 000001 MOVEI T1,1(T2) ;GET DAYS AS 1-31
1216 001361' 201 02 0 00 000040 MOVEI T2," " ;FILL WITH SPACE
1217 001362' 260 17 0 00 000000* PUSHJ P,.TDEC2## ;TYPE IN DECIMAL
1218 001363' 231 04 0 00 000014 IDIVI T4,^D12 ;GET MONTHS
1219 MOVEI T1,[ASCIZ /-Jan/
1220 ASCIZ /-Feb/
1221 ASCIZ /-Mar/
1222 ASCIZ /-Apr/
1223 ASCIZ /-May/
1224 ASCIZ /-Jun/
1225 ASCIZ /-Jul/
1226 ASCIZ /-Aug/
1227 ASCIZ /-Sep/
1228 ASCIZ /-Oct/
1229 ASCIZ /-Nov/
1230 001364' 201 01 0 05 002706' ASCIZ /-Dec/](P1) ;GET ASCII
1231 001365' 260 17 0 00 001351* PUSHJ P,.TSTRG## ;TYPE IT
BIORTH -- PROGRAM TO CHART BIORHYTHMS %2(6) MACRO %50A(441)-2 14:08 23-FEB-77 PAGE 30-1
BIORTH MAC 3-FEB-77 13:19 DATE/TIME OUTPUT
1232 001366' 201 01 0 04 000000 MOVEI T1,(T4) ;GET YEAR SINCE 1900
1233 001367' 231 01 0 00 000144 IDIVI T1,^D100 ;GET JUST YEARS IN CENTURY
1234 001370' 201 01 0 00 000055 MOVEI T1,"-" ;GET A SIGN
1235 001371' 260 17 0 00 000233* CALL .TCHAR## ;SEND IT
1236 001372' 200 01 0 00 000002 MOVE T1,T2 ;POSITION YEARS
1237 001373' 201 02 0 00 000060 MOVEI T2,"0" ;FILL WITH A ZERO
1238 001374' 254 00 0 00 001362* PJRST .TDEC2## ;TYPE AND RETURN
1239
1240 001375' 127 105 104 040 000 DAYOFW: ASCII /WED /
1241 001376' 124 110 125 040 000 ASCII /THU /
1242 001377' 106 122 111 040 000 ASCII /FRI /
1243 001400' 123 101 124 040 000 ASCII /SAT /
1244 001401' 123 125 116 040 000 ASCII /SUN /
1245 001402' 115 117 116 040 000 ASCII /MON /
1246 001403' 124 125 105 040 000 ASCII /TUE /
BIORTH -- PROGRAM TO CHART BIORHYTHMS %2(6) MACRO %50A(441)-2 14:08 23-FEB-77 PAGE 31
BIORTH MAC 3-FEB-77 13:19 OPEN I/O CHANNELS
1247 SUBTTL OPEN I/O CHANNELS
1248 ;OPENIO
1249 ;CALL: MOVEI T1,<FDB ADDR>
1250 ; CALL OPENIO
1251 ; CAI CHANNEL,BUFADR ;@ IF OUTPUT, (MODE)
1252 ; *ALL IS WELL*
1253
1254 001404' 504 01 0 17 000000 OPENIO: HRL T1,0(P) ;REMEMBER CALLER
1255 001405' 350 00 0 17 000000 AOS 0(P) ;SKIP ARGS ON RETURN
1256 001406' 260 17 0 00 000000* CALL .SAVE3## ;PRESERVE REGISTERS
1257 001407' 204 05 0 00 000001 MOVS P1,T1 ;COPY ARGUMENTS
1258 001410' 200 06 0 05 000000 MOVE P2,(P1) ;GET REST OF THEM
1259 001411' 205 01 0 00 000032 MOVSI T1,.FXLEN ;SETUP FOR .STOPB
1260 001412' 544 01 0 00 000005 HLR T1,P1 ;...
1261 001413' 201 02 0 00 002254' MOVEI T2,OPNBLK ;
1262 001414' 200 03 0 00 002722' MOVE T3,[XWD .RBTIM+1,LKPBLK] ;
1263 001415' 201 04 0 00 002314' MOVEI T4,PTHBLK
1264 001416' 260 17 0 00 000000* CALL .STOPB## ;CONVERT TO OPEN/LOOKUP BLOCKS
1265 001417' 254 00 0 00 001455' JRST WLDERR ;NO WILDCARDING!
1266 001420' 201 01 0 00 000035 MOVEI T1,.RBTIM ;SETUP COUNT
1267 001421' 202 01 0 00 002257' MOVEM T1,LKPBLK+.RBCNT
1268 001422' 135 01 0 00 002723' LDB T1,[POINT 4,P2,17] ;GET MODE
1269 001423' 202 01 0 00 002254' MOVEM T1,OPNBLK ;STORE IN OPEN BLOCK
1270 001424' 550 01 0 00 000006 HRRZ T1,P2 ;BUFFER HEADER ADDRESS
1271 001425' 603 06 0 00 000020 TLNE P2,ATSIGN ;READ OR WRITE?
1272 001426' 207 00 0 00 000001 MOVSS T1 ;WRITING, POSITON FOR IT
1273 001427' 202 01 0 00 002256' MOVEM T1,OPNBLK+.OPBUF;STORE
1274 001430' 135 07 0 00 002724' LDB P3,[POINT 4,P2,12] ;GET I/O CHANNEL
1275 001431' 242 07 0 00 000005 LSH P3,5 ;POSITION
1276 001432' 207 00 0 00 000007 MOVSS P3 ;IN CHANNEL POSITION
1277 001433' 200 01 0 00 002725' MOVE T1,[OPEN OPNBLK];FORM INSTR
1278 001434' 434 01 0 00 000007 OR T1,P3 ;FINISH
1279 001435' 256 00 0 00 000001 XCT T1 ;TRY TO OPEN DEVICE
1280 001436' 254 00 0 00 001452' JRST OPENER ;CAN'T--BOMB OUT
1281 001437' 200 01 0 00 000007 MOVE T1,P3 ;REGET I/O CHANNEL
1282 001440' 603 06 0 00 000020 TLNE P2,ATSIGN ;READ/WRITE?
1283 001441' 665 01 0 00 077000 TLOA T1,(ENTER) ;WRITE
1284 001442' 661 01 0 00 076000 TLO T1,(LOOKUP) ;READ
1285 001443' 541 01 0 00 002257' HRRI T1,LKPBLK ;COMPLETE INSTR
1286 001444' 256 00 0 00 000001 XCT T1 ;FIND/WRITE THE FILE
1287 001445' 254 00 0 00 001460' JRST LKENER ;OOPS
1288 001446' 263 17 0 00 000000 POPJ P, ;OK--RETURN
1289 001447' 350 00 0 17 000000 $POPJ2: AOS (P) ;SKIP 2
1290 001450' 350 00 0 17 000000 $POPJ1: AOS (P) ;SKIP 1
1291 001451' 263 17 0 00 000000 $POPJ: POPJ P, ;SKIP 0
1292
BIORTH -- PROGRAM TO CHART BIORHYTHMS %2(6) MACRO %50A(441)-2 14:08 23-FEB-77 PAGE 32
BIORTH MAC 3-FEB-77 13:19 OPEN I/O CHANNELS
1293 ;OPENIO ERRORS
1294
1295 001452' 554 01 0 00 000005 OPENER: HLRZ T1,P1 ;COPY FDB ADDR
1296 001453' 260 17 0 00 001532' ERROR. EF$FTL!EF$FIL,COD,<CAN'T OPEN DEVICE, FILE >
1297 001454' 300406 002733'
1298
1299 001455' 554 01 0 00 000005 WLDERR: HLRZ T1,P1 ;GET FDB
1300 001456' 260 17 0 00 001532' ERROR. EF$FTL!EF$FIL,WFI,<WILDCARD FILESPEC ILLEGAL, FILE >
1301 001457' 300406 002743'
1302
1303 001460' 550 01 0 00 002262' LKENER: HRRZ T1,LKPBLK+.RBEXT;GET FAIL CODE
1304 001461' 260 17 0 00 001532' ERROR. EF$ERR!EF$OCT!EF$NCR,LER,<LOOKUP/ENTER ERROR(>
1305 001462' 300042 002750'
1306 001463' 201 01 0 00 002751' STRNG$ <) FILE >
1307 001464' 260 17 0 00 001365*
1308 001465' 554 01 0 00 000005 HLRZ T1,P1
1309 001466' 260 17 0 00 000000* CALL .TFBLK## ;TYPE SCAN BLOCK
1310 001467' 260 17 0 00 000376* CALL .TCRLF## ;NEW LINE
1311 001470' 254 00 0 00 001613' JRST ERRFTL ;GO DIE
1312
1313 ;CALL HERE WITH CHAR IN T1 TO OUTPUT
1314
1315 001471' 377 00 0 00 002333' CHROUT: SOSG OBHR+.BFCTR ;ROOM?
1316 001472' 254 00 0 00 001475' JRST CHRO.1 ;NO
1317 001473' 136 01 0 00 002332' CHRO.0: IDPB T1,OBHR+.BFPTR ;YES--STORE IT
1318 001474' 263 17 0 00 000000 POPJ P,
1319
1320 001475' 260 17 0 00 001501' CHRO.1: CALL XCTIO ;DO IT
1321 001476' 057 01 0 00 000000 OUT OUTC, ;XCT'D
1322 001477' 254 04 0 00 001500' HALT .+1 ;SNH
1323 001500' 254 00 0 00 001473' JRST CHRO.0 ;STORE CHAR
BIORTH -- PROGRAM TO CHART BIORHYTHMS %2(6) MACRO %50A(441)-2 14:08 23-FEB-77 PAGE 33
BIORTH MAC 3-FEB-77 13:19 XCTIO EXECUTES IN/OUT UUO WITH ERROR HANDLING
1324 SUBTTL XCTIO EXECUTES IN/OUT UUO WITH ERROR HANDLING
1325
1326 ;XCTIO
1327 ;CALL: CALL XCTIO
1328 ; <INSTR TO XCT> ;IN/OUT UUO
1329 ; *EOF/EOT RETURN*
1330 ; *NORMAL RETURN*
1331
1332 001501' 256 00 1 17 000000 XCTIO: XCT @0(P) ;DO THE INSTR
1333 001502' 254 00 0 00 001447' JRST $POPJ2 ;OK--SKIP 2 AND RETURN
1334 SAVE$ T1 ;OOPS--SAVE T1
1335 001504' 200 01 1 17 777777 MOVE T1,@-1(P) ;GET INSTR WE FAILED ON
1336 001505' 350 00 0 17 777777 AOS -1(P) ;SKIP INSTR ON WAY BACK
1337 001506' 404 01 0 00 002753' AND T1,[17B12] ;ERROR--GET THE CHANNEL
1338 001507' 434 01 0 00 002754' OR T1,[GETSTS T2] ;GET ERRROR BITS
1339 001510' 256 00 0 00 000001 XCT T1
1340 001511' 602 02 0 00 022000 TRNE T2,IO.EOF!IO.EOT;END OF SOMETHING?
1341 001512' 254 00 0 00 001530' JRST TPOPJ ;YES
1342 001513' 250 01 0 00 000002 EXCH T1,T2 ;NO--GET BITS IN RIGHT PLACE, SAVE I/O INSTR
1343 001514' 540 02 0 00 000001 HRR T2,T1 ;PUT BITS IN THE INSTR
1344 SAVE$ T2 ;SAVE I/O INSTR A SEC
1345 001516' 260 17 0 00 001532' WARN. EF$NCR!EF$OCT,IOE,<I/O ERROR - STATUS=>
1346 001517' 300242 002761'
1347 ; STRNG$ <, FILE >
1348 ; LDB T1,[POINT 4,(P),12] ;GET CHANNEL
1349 ; MOVE T1,[EXP INPSPC,OUTSPC]-1(T1) ;GET FDB ADDRESS
1350 ; CALL .TFBLK## ;TYPE FILE
1351 STRNG$ < - CONTINUING
1352 001520' 201 01 0 00 002762' >
1353 001521' 260 17 0 00 001464*
1354 RESTR$ T1 ;GET INSTR BACK
1355 001523' 620 01 0 00 740000 TRZ T1,IO.ERR ;CLEAR ERROR BITS
1356 001524' 621 01 0 00 002000 TLZ T1,002000 ;GETSTS BECOMES SETSTS
1357 001525' 256 00 0 00 000001 XCT T1
1358 001526' TPOPJ1: RESTR$ T1 ;GET T1 AGAIN
1359 001527' 354 00 0 17 000000 AOSA (P)
1360 001530' TPOPJ: RESTR$ T1
1361 001531' 263 17 0 00 000000 POPJ P,
BIORTH -- PROGRAM TO CHART BIORHYTHMS %2(6) MACRO %50A(441)-2 14:08 23-FEB-77 PAGE 34
BIORTH MAC 3-FEB-77 13:19 ERROR HANDLER
1362 SUBTTL ERROR HANDLER
1363
1364 ;EHNDLR -- HANDLE ALL ERRORS
1365 ;THE ONLY CALL IS THRU THE ERROR. MACRO
1366
1367 001532' 260 17 0 00 001623' EHNDLR: CALL SAVACS ;SAVE THE ACS
1368 001533' 200 05 1 17 000000 MOVE P1,@0(P) ;GET FLAGS AND ADDRESSES
1369 001534' 336 00 1 00 000414* SKIPN @.TYOCH## ;IS SCAN TTCALLING?
1370 JRST [SETZM ERRTYX ;YES--CLEAR FLAG
1371 001535' 254 00 0 00 002766' JRST EHND.0] ;AND SKIP ON
1372 001536' 400 01 0 00 000000 SETZ T1, ;NO--SO MAKE IT
1373 001537' 260 17 0 00 001534* CALL .TYOCH## ;TELL SCAN
1374 001540' 202 01 0 00 002325' MOVEM T1,ERRTYX ;REMEMBER/SET FLAG
1375 001541' 201 01 0 00 000077 EHND.0: MOVEI T1,"?" ;ASSUME AN ERROR
1376 001542' 603 05 0 00 000200 TLNE P1,EF$WRN ;CHECK WARNING
1377 001543' 201 01 0 00 000045 MOVEI T1,"%" ;YES
1378 001544' 603 05 0 00 000100 TLNE P1,EF$INF ;IF BOTH OFF NOW THEN INFO
1379 001545' 201 01 0 00 000133 MOVEI T1,"[" ;GOOD THING WE CHECKED
1380 001546' 260 17 0 00 001371* CALL .TCHAR## ;OUTPUT THE START OF MESSAGE
1381 001547' 205 01 0 00 425157 MOVSI T1,MY$PFX ;SET UP MY PREFIX
1382 001550' 544 01 0 05 000000 HLR T1,(P1) ;GET MESSAGE PREFIX
1383 001551' 260 17 0 00 000063* CALL .TSIXN## ;OUTPUT THE PREFIXES
1384 001552' 260 17 0 00 000373* CALL .TSPAC## ;AND A SPACE
1385 001553' 550 01 0 05 000000 HRRZ T1,(P1) ;GET STRING ADDRESS
1386 001554' 260 17 0 00 001521* CALL .TSTRG## ;SEND IT
1387 001555' 200 01 0 00 002145' MOVE T1,SAVAC+T1 ;GET ORIGINAL T1 IN CASE TYPEOUT DESIRED
1388 001556' 135 02 0 00 002770' LDB T2,[POINT 5,P1,17] ;GET TYPED OUT DESIRED
1389 001557' 303 02 0 00 000007 CAILE T2,EF$MAX ;CHECK LEGAL
1390 001560' 201 02 0 00 000000 MOVEI T2,0 ;NOOOP
1391 001561' 260 17 1 02 001603' CALL @ERRTAB(T2) ;CALL THE ROUTINE
1392 001562' 603 05 0 00 000040 TLNE P1,EF$NCR ;IF NO CRLF THEN DON'T CLOSE INFO
1393 001563' 254 00 0 00 001571' JRST EHND.1 ;NO--DON'T CHECK
1394 001564' 201 01 0 00 000135 MOVEI T1,"]" ;PREPARE TO CLOSE INFO
1395 001565' 603 05 0 00 000100 TLNE P1,EF$INF ;CHECK FOR INFO
1396 001566' 260 17 0 00 001546* CALL .TCHAR## ;SEND INFO CLOSE
1397 001567' 607 05 0 00 000040 TLNN P1,EF$NCR ;NO CARRIAGE RETURN?
1398 001570' 260 17 0 00 001467* CALL .TCRLF## ;YES--SEND ONE
1399 001571' 336 01 0 00 002325' EHND.1: SKIPN T1,ERRTYX ;DID WE RESET SCAN?
1400 001572' 254 00 0 00 001575' JRST EHND.2 ;NO
1401 001573' 260 17 0 00 001537* CALL .TYOCH## ;AND RESTORE IT
1402 001574' 402 00 0 00 002325' SETZM ERRTYX ;CLEAR FLAG
1403 001575' 603 05 0 00 000400 EHND.2: TLNE P1,EF$FTL ;NOW CHECK FATAL
1404 001576' 254 00 0 00 001613' JRST ERRFTL ;YES--GO DIE
1405 ;FALL INTO RESACS
BIORTH -- PROGRAM TO CHART BIORHYTHMS %2(6) MACRO %50A(441)-2 14:08 23-FEB-77 PAGE 35
BIORTH MAC 3-FEB-77 13:19 ERROR HANDLER
1406 ;RESACS -- RESTORE ALL ACS FROM SAVAC AREA
1407 ; CALL RESACS
1408 ; *ACS RESTORED FROM SAVAC*
1409
1410 001577' 202 17 0 00 002163' RESACS: MOVEM 17,SAVAC+17 ;SAVE 17 TO RESTORE INTO IT
1411 001600' 205 17 0 00 002144' MOVSI 17,SAVAC
1412 001601' 251 17 0 00 000017 BLT 17,17 ;REGISTERS ARE RESTORED
1413 001602' 263 17 0 00 000000 POPJ P, ;RETURN
1414
1415 001603' 000000 000000* ERRTAB: .POPJ## ;CODE 0 -- NO ACTION
1416 001604' 000000 000231* .TDECW## ;CODE 1 -- TYPE T1 IN DECIMAL
1417 001605' 000000 000000* .TOCTW## ;CODE 2 -- TYPE T1 IN OCTAL
1418 001606' 000000 001551* .TSIXN## ;CODE 3 -- TYPE T1 IN SIXBIT
1419 001607' 000000 000000* .TPPNW## ;CODE 4 -- TYPE T1 AS PPN
1420 001610' 000000 001554* .TSTRG## ;CODE 5 -- T1 POINTS TO ASCIZ STRING
1421 001611' 000000 001466* .TFBLK## ;CODE 6 -- T1 POINTS AT FDB
1422 001612' 000000 001345' .TDATX ;CODE 7 -- TYPE T1 AS DAY/DATE
1423
1424 ;HERE TO DIE--
1425
1426 001613' ERRFTL: SAVE$ .JBFF ;SAVE JBFF OVER RESET
1427 001614' 047 00 0 00 000000 RESET ;KILL ALL FILES
1428 RESTR$ .JBFF ;GET JOBFF BACK
1429 001616' 200 17 0 00 000013' MOVE P,INIPDP ;RESET PDL
1430 001617' 260 17 0 00 000146* CALL .CLRBF## ;CLEAR ANY TYPE AHEAD OR UNEATEN COMMANDS
1431 001620' 332 00 0 00 001632' SKIPE OFFSET ;CCL ENTRY
1432 001621' 260 17 0 00 000037* CALL .MONRT## ;YES--EXIT 1,
1433 001622' 254 00 0 00 000035' JRST RESTRT ;AND RESTART ON CONTINUE
1434
1435 ;SAVAC -- SAVE ALL ACS
1436 ;CALL -- PUSHJ P,SAVACS
1437 ; *ACS SAVED IN SAVAC* BEWARE!!
1438
1439 001623' 202 17 0 00 002163' SAVACS: MOVEM 17,SAVAC+17 ;SAVE ONE
1440 001624' 201 17 0 00 002144' MOVEI 17,SAVAC
1441 001625' 251 17 0 00 002162' BLT 17,SAVAC+16
1442 001626' 200 17 0 00 002163' MOVE 17,SAVAC+17
1443 001627' 263 17 0 00 000000 POPJ P, ;ACS ARE SAVED
1444
BIORTH -- PROGRAM TO CHART BIORHYTHMS %2(6) MACRO %50A(441)-2 14:08 23-FEB-77 PAGE 36
BIORTH MAC 3-FEB-77 13:19 STORAGE
1445 SUBTTL STORAGE
1446
1447 ;STORAGE THAT REMAINS BETWEEN RUNS
1448
1449 001630' U (ISCNVL) ;VALUE FROM .ISCAN
1450 001631' U (TLDVER) ;-1 WHEN TYPED VERSION TO TTY
1451 001632' U (OFFSET) ;STARTING OFFSET
1452 001633' U (LOGTIM) ;JOB LOGIN TIME
1453
1454 001634' FW$ZER==. ;FIRST WORD ZEROED
1455 001634' U (PDLIST,LN$PDL) ;PUSHDOWN LIST
1456 002144' U (SAVAC,20) ;SAVE ACS HERE
1457 002164' U (PLTBUF,PLTBSZ+1) ;FORM A LINE HERE
1458 002202' U (FLFUTD) ;FLAGS FOR DATE-TIME GETTER
1459 002203' U (FLFUTR)
1460 002204' U (NOW) ;CURRENT DATE/TIME
1461 002205' U (VAL1) ;DON'T SEPARATE VALX
1462 002206' U (VAL2)
1463 002207' U (VAL3)
1464 002210' U (VAL4)
1465 002211' U (VAL5)
1466 002212' U (VAL6)
1467 002213' U (VAL7)
1468 002214' U (VAL8)
1469 002215' U (VAL9)
1470 002216' U (TEMP) ;TEMP
1471 002217' U (IPOS)
1472 002220' U (EPOS)
1473 002221' U (PPOS)
1474 002222' U (FILSPC,.FXLEN) ;SCAN FILE SPEC
1475 002254' U (OPNBLK,3) ;OPEN BLOCK
1476 002257' U (LKPBLK,.RBTIM) ;LOOKUP/ENTER BLOCK
1477 002314' U (PTHBLK,^D9) ;PATH BLOCK
1478 002325' U (ERRTYX) ;FLAG FOR EHNDLR
1479 002326' U (IBHR,3) ;INPUT BUFFER HEADER
1480 002331' U (OBHR,3) ;OUTPUT BUFFER HEADER
1481 002334' SCN$FZ==. ;FIRST WORD ZEROED AT CLRANS
1482 002333' SCN$LZ==.-1 ;LAST WORD ZEROED AT CLRANS
1483 002334' SCN$FO==. ;FIRST WORD MINUS ONNED AT CLRANS
1484 002334' U (BIRTHD) ;/BIRTHDAY ARG
1485 002335' U (BEGNDT) ;/BEGIN
1486 002336' U (ENDATE) ;/END
1487 002337' U (PBEGND) ;PXXX SWITCHES (NOT USED)
1488 002337' SCN$LO==.-1 ;LAST WORD ONNED AT CLRANS
1489 002337' LW$ZER==.-1 ;LAST WORD ZEROED AT STARTUP
1490
1491 000000' END BIORTH
NO ERRORS DETECTED
PROGRAM BREAK IS 002771
CPU TIME USED 00:36.632
14K CORE USED
BIORTH -- PROGRAM TO CHART BIORHYTHMS %2(6) MACRO %50A(441)-2 14:08 23-FEB-77 PAGE S-1
BIORTH MAC 3-FEB-77 13:19 SYMBOL TABLE
ATSIGN 000020 SPD DATRIC 001001' FS.NUE 100000 000000 SPD PCHTBL 000415'
BEGNDT 002335' DAYOFW 001375' FS.VRQ 040000 000000 SPD PCYCLE 000027 SPD
BIOEDT 000006 SPD DAYS 001145' FT$DDT 000000 SPD PD. 000000 SPD
BIOMIN 000000 SPD DOPRMP 000060' FT$OPT 000000 SPD PDLIST 001634'
BIOR.0 000030' E$$DFL 001127' FW$ZER 001634' SPD PJRST 254000 000000
BIORTH 000000' E$$DFZ 001131' GETNW1 001310' PLOT.0 000301'
BIOVER 000002 SPD E$$DOR 001032' GETNW2 001312' PLOT.1 000330'
BIOWHO 000000 SPD E$$DTM 001143' GETNWX 001320' PLOT.2 000364'
BIRTHD 002334' E$$ILR 001135' GETSTS 062000 000000 PLOT.5 000371'
C 000010 SPD E$$MDD 001141' GETTAB 047000 000041 PLOT.6 000403'
CALL 260740 000000 E$$NBG 000240' HALT 254200 000000 PLOT.9 000405'
CHRO.0 001473' E$$NFT 001117' IBHR 002326' PLOT0B 000313'
CHRO.1 001475' E$$NND 001123' ICYCLE 000041 SPD PLTBSZ 000015 SPD
CHROUT 001471' E$$NPF 001125' IFX.1 000453' EXT PLTBUF 002164'
CLOSE 070000 000000 E$$NPS 001121' INIPDP 000013' PLTWID 000074 SPD
CMDLST 000065' E$$UDM 001133' IO.EOF 020000 SPD PLTZER 000036 SPD
CMPTFN 000204' E$$UDN 001137' IO.EOT 002000 SPD PPOS 002221'
CNTDT0 001227' E.ILSC 000763' EXT IO.ERR 740000 SPD PRMPTM 000064'
CNTDT1 001230' E.MDS 000634' IPOS 002217' PTHBLK 002314'
CNTDT2 001236' ECYCLE 000034 SPD ISCNBL 000042' PUTPLC 000454'
CNTDT3 001237' EF$DAT 000007 SPD ISCNVL 001630' RELEAS 071000 000000
CNTDT4 001243' EF$DEC 000001 SPD LKENER 001460' RESACS 001577'
CNTDT5 001244' EF$ERR 000000 SPD LKPBLK 002257' RESET 047000 000000
CNTDT6 001245' EF$FIL 000006 SPD LN$PCH 000003 SPD RESTRT 000035'
COMPOS 000425' EF$FTL 000400 SPD LN$PDL 000310 SPD SAVAC 002144'
CRTCHK 000420' EF$INF 000100 SPD LOGTIM 001633' SAVACS 001623'
D 000012 EF$MAX 000007 SPD LOOKUP 076000 000000 SCN$FO 002334' SPD
DATIC 001055' EF$NCR 000040 SPD LSPDTM 000033 SPD SCN$FZ 002334' SPD
DATIC1 000521' EF$OCT 000002 SPD LW$ZER 002337' SPD SCN$LO 002337' SPD
DATIC2 000524' EF$PPN 000004 SPD MNDPTR 001201' SCN$LZ 002333' SPD
DATID 001102' EF$SIX 000003 SPD MONPTR 001200' SIN. 000437' EXT
DATIF1 000473' EF$STR 000005 SPD MONTAB 001321' SPCDAY 001170'
DATIG 001060' EF$WRN 000200 SPD MONTHS 001154' SPDATM 001176'
DATIM 000525' EHND.0 001541' MX$CRT 000004 SPD SPLGTM 001173'
DATIMD 000637' EHND.1 001571' MX. 000000 SPD SPMIDN 001175'
DATIMM 000575' EHND.2 001575' MY$NAM 425157 626450 SPD SPNOON 001174'
DATIMN 000612' EHNDLR 001532' MY$PFX 425157 SPD T1 000001
DATIMO 000631' ENDATE 002336' N 000007 SPD T2 000002
DATIMW 000567' ENTER 077000 000000 N$CMDS 000001 SPD T3 000003
DATIMX 001024' EPOS 002220' NOOP 300000 SPD T4 000004
DATIN 000656' ERRFTL 001613' NOW 002204' TEMP 002216'
DATIP1 000506' ERRTAB 001603' OBHR 002331' TLDVER 001631'
DATIRA 000747' ERRTYX 002325' OFFSET 001632' TPOPJ 001530'
DATIRB 000772' F 000011 OPEN 050000 000000 TPOPJ1 001526'
DATIRD 001006' F.NAM 000246' EXT OPENER 001452' TWOPI 000041'
DATIRM 001034' FILSPC 002222' OPENIO 001404' VAL1 002205'
DATIRN 000761' FL$BKW 100000 SPD OPNBLK 002254' VAL2 002206'
DATIRR 001022' FL$CRT 040000 SPD OUT 057000 000000 VAL3 002207'
DATIT 000700' FL$FIL 400000 SPD OUTC 000001 SPD VAL4 002210'
DATITR 000704' FL$HVB 200000 SPD P 000017 VAL5 002211'
DATIY 000722' FLFUTD 002202' P1 000005 VAL6 002212'
DATIY0 000717' FLFUTR 002203' P2 000006 VAL7 002213'
DATIY1 000731' FLOAT. 132000 000233 P3 000007 VAL8 002214'
DATMM1 000716' FLT.1 000434' EXT P4 000010 VAL9 002215'
DATMMM 000710' FS.LRG 200000 000000 SPD PBEGND 002337' VSCNBL 000050'
BIORTH -- PROGRAM TO CHART BIORHYTHMS %2(6) MACRO %50A(441)-2 14:08 23-FEB-77 PAGE S-2
BIORTH MAC 3-FEB-77 13:19 SYMBOL TABLE
VSWTD 000110' .POPJ 001603' EXT
VSWTL 000006 SPD .POPJ1 001116' EXT
VSWTM 000102' .QSCAN 000140' EXT
VSWTN 000066' .RBCNT 000000 SPD
VSWTP 000074' .RBEXT 000003 SPD
WLDERR 001455' .RBTIM 000035 SPD
X 000000 .RECOR 000014' EXT
XCTIO 001501' .SAVE1 001355' EXT
ZZ 000007 SPD .SAVE2 000235' EXT
$BIRTH 000116' .SAVE3 001406' EXT
$CHART 000235' .SIXSC 000710' EXT
$COMPA 000124' .STOPB 001416' EXT
$PLOT 000235' .TCHAR 001566' EXT
$POPJ 001451' .TCOLN 001342' EXT
$POPJ1 001450' .TCRLF 001570' EXT
$POPJ2 001447' .TDATE 001355'
%%BIOV 000200 000006 SIN .TDATX 001345'
%%JOBD 043000 000443 SPD .TDEC2 001374' EXT
%%MACT 000100 000024 SIN .TDECW 001604' EXT
%%SCNM 000700 000203 SIN .TDTTM 001336'
%%UUOS 101100 000225 SIN .TFBLK 001611' EXT
%CNDTM 000053 000011 SPD .TIAUC 000722' EXT
.ALCBF 000274' EXT .TICAN 000761' EXT
.BFCTR 000002 SPD .TOCTW 001605' EXT
.BFPTR 000001 SPD .TPCNT 000231'
.CLRBF 001617' EXT .TPPNW 001607' EXT
.CNTDT 001202' .TSIXN 001606' EXT
.CNVDT 001260' .TSPAC 001552' EXT
.DATIC 000513' .TSTRG 001610' EXT
.DATIF 000463' .TTIME 001344' EXT
.DATIG 000464' .TVERW 000026' EXT
.DATIM 000512' .TYOCH 001573' EXT
.DATIP 000477' .VSCAN 000036' EXT
.DATIQ 000500'
.DECNC 000670' EXT
.DECNW 001075' EXT
.FILIN 000244' EXT
.FREBF 000412' EXT
.FXDEV 000000 SPD
.FXEXT 000003 SPD
.FXLEN 000032 SPD
.FXNAM 000001 SPD
.FXNMM 000002 SPD
.GTJLT 000130 SPD
.GTNOW 001253'
.GTSPC 000253' EXT
.IOASC 000000 SPD
.ISCAN 000016' EXT
.JBFF 000121
.JBVER 000137
.LASWD 001025' EXT
.MONRT 001621' EXT
.NAME 000712' EXT
.NMUL 001030' EXT
.OPBUF 000002 SPD
ATSIGN 101# 1271 1282
BEGNDT 240 276 442 1485#
BIOEDT 12# 19 22
BIOMIN 13# 22
BIOR.0 208 214#
BIORTH 189# 1491
BIOVER 11# 19 22
BIOWHO 14# 22
BIRTHD 301 457 545 1484#
C 71# 299 410 590 609 627 631 678 679 719 757 771 778 779
808 813 814 817 933 941 948
CHRO.0 1317# 1323
CHRO.1 1316 1320#
CHROUT 437 1315#
CMDLST 227 253# 254
CMPTFN 336 339 342 372#
CNTDT0 1070 1075#
CNTDT1 1079#
CNTDT2 1081 1085#
CNTDT3 1087# 1090
CNTDT4 1088 1092#
CNTDT5 1083 1093#
CNTDT6 1047 1095#
COMPOS 478 482 486 540#
CRTCHK 480 484 488 535#
D 69# 69 442 443 444 448 452 507 515 516 519 520 544
DATIC 708 766 836 933#
DATIC1 628 631#
DATIC2 630 634#
DATID 942 949 956#
DATIF1 591 594#
DATIG 790 937#
DATIM 594 613 632 671#
DATIMD 681 755#
DATIMM 691 714#
DATIMN 717 729#
DATIMO 740 747#
DATIMW 707# 737 749
DATIMX 712 733 798 900#
DATIN 758 771#
DATIP1 610 613#
DATIRA 809 834#
DATIRB 860# 880
DATIRD 877 882# 884
DATIRM 887 896 911#
DATIRN 793 838 851#
DATIRR 886 892 896#
DATIT 772 790#
DATITR 769 795#
DATIY 812# 818
DATIY0 726 808#
DATIY1 815 819#
DATMM1 788 807#
DATMMM 780 800#
DATRIC 872 876#
DAYOFW 1200 1240#
DAYS 689 1000# 1031 1036
DOPRMP 231 246#
E$$DFL 724 763 774 784 787 939 945 952 979#
E$$DFZ 775 981#
E$$DOR 903 907#
E$$DTM 684 991#
E$$ILR 819 822 985#
E$$MDD 720 989#
E$$NBG 299 407#
E$$NFT 596 971#
E$$NND 722 756 782 937 946 953 975#
E$$NPF 694 761 977#
E$$NPS 615 973#
E$$UDM 803 983#
E$$UDN 687 987#
E.ILSC 853
E.MDS 743 751#
ECYCLE 45 338 481
EF$DAT 126#
EF$DEC 120#
EF$ERR 108# 1305
EF$FIL 125# 1297 1301
EF$FTL 109# 408 753 908 972 974 976 978 980 982 984 986 988 990
992 1110 1297 1301 1403
EF$INF 111# 1378 1395
EF$MAX 127# 1389
EF$NCR 112# 1305 1346 1392 1397
EF$OCT 121# 1305 1346
EF$PPN 123#
EF$SIX 122# 753
EF$STR 124#
EF$WRN 110# 1346 1376
EHND.0 1371 1375#
EHND.1 1393 1399#
EHND.2 1400 1403#
EHNDLR 407 752 907 971 973 975 977 979 981 983 985 987 989 991
1109 1296 1300 1304 1345 1367#
ENDATE 280 440 450 451 452 516 520 1486#
EPOS 340 350 359 483 532 1472#
ERRFTL 1311 1404 1426#
ERRTAB 1391 1415#
ERRTYX 1370 1374 1399 1402 1478#
F 68# 68 298 302 406 409 436 446 453 498 514 522 538
F.NAM 412 413
FILSPC 416 420 421 423 424 425 426 428 429 430 1474#
FL$BKW 86# 86 409 453 514
FL$CRT 87# 87 409 498 538
FL$FIL 84# 84 409 436 446 522
FL$HVB 85# 85 298 302 406
FLFUTD 588 589 608 626 672 693 702 747 759 837 888 893 1458#
FLFUTR 587 592 607 611 625 629 633 671 695 760 792 795 1459#
FLT.1 547
FS.LRG 282 283 284 285 286 287 288 289 290 291 292 293
FS.NUE 282 286 288 292
FS.VRQ 282 286 288 292
FT$DDT 48 274 280 286 292 305
FT$OPT 47
FW$ZER 196 197 1454#
GETNW1 1147 1151#
GETNW2 1129 1153#
GETNWX 1111 1160#
IBHR 1479#
ICYCLE 44 335 477
IFX.1 392 562
INIPDP 201# 1429
IO.EOF 1340
IO.EOT 1340
IO.ERR 1355
IPOS 337 346 358 479 531 1471#
ISCNBL 203 226#
ISCNVL 205 1449#
LKENER 1287 1303#
LKPBLK 1262 1267 1285 1303 1476#
LN$PCH 500 534#
LN$PDL 37 201 1455
LOGTIM 217 731 1452#
LSPDTM 1031# 1036
LW$ZER 198 1489#
MNDPTR 685 1036#
MONPTR 801 1035#
MONTAB 1087 1092 1131 1163#
MONTHS 715 805 1008# 1035
MX$CRT 40 537
MX. 282# 282 283 284 285 286 287
MY$NAM 38 253
MY$PFX 39 228 251 1381
N 70# 301 325 333 595 614 684 688 689 690 698 699 700 704
705 706 707 709 711 714 715 716 718 722 723 725 731 735
736 739 744 745 746 748 756 762 764 767 768 773 775 776
782 783 785 786 796 797 804 805 807 811 816 817 823 885
886 894 895 897 902 904 937 938 940 944 946 947 951 953
954 967
N$CMDS 227 254#
NOOP 134# 408 753 908 972 974 976 978 980 982 984 986 988 990
992 1110 1297 1301 1305 1346
NOW 372 377 595 614 677 696 701 735 739 744 797 854 889 891
1460#
OBHR 432 434 526 1315 1317 1480#
OFFSET 191 206 228 1431 1451#
OPENER 1280 1295#
OPENIO 431 1254#
OPNBLK 434 1261 1269 1273 1277 1475#
OUTC 92# 432 524 525 1321
P 72# 96 200 317 363 405 440 523 529 539 547 576 585 593
594 597 605 612 613 616 623 634 676 683 686 707 708 709
710 721 755 765 766 777 781 790 800 802 812 836 851 855
887 896 905 934 935 943 950 1046 1095 1099 1100 1125 1126 1155
1160 1184 1186 1187 1188 1190 1197 1202 1212 1217 1231 1254 1255 1288
1289 1290 1291 1318 1332 1335 1336 1345 1355 1359 1361 1368 1413 1427
1429 1443
P1 64# 64 325 373 500 501 502 505 1132 1134 1139 1151 1230 1257
1258 1260 1295 1299 1308 1368 1376 1378 1382 1385 1388 1392 1395 1397
1403
P2 65# 65 333 378 1258 1268 1270 1271 1274 1282
P3 66# 66 70 1274 1275 1276 1278 1281
P4 67# 67 71
PBEGND 241 1487#
PCHTBL 501 502 531# 534
PCYCLE 46 341 485
PD. 288# 288 289 290 291 292 293
PDLIST 201 1455#
PLOT.0 410 415 440#
PLOT.1 473# 517 521
PLOT.2 501# 505
PLOT.5 506#
PLOT.6 520#
PLOT.9 518 522#
PLOT0B 447 450#
PLTBSZ 43 476 1457
PLTBUF 474 475 476 510 572 1457#
PLTWID 41 42 494 497 554
PLTZER 42# 492 535
PPOS 343 354 360 487 533 1473#
PRMPTM 247 251#
PTHBLK 1263 1477#
PUTPLC 491 493 495 499 504 570#
RESACS 1410#
RESTRT 219# 222 1433
SAVAC 1387 1410 1411 1439 1440 1441 1442 1456#
SAVACS 1367 1439#
SCN$FO 1483#
SCN$FZ 1481#
SCN$LO 1488#
SCN$LZ 1482#
SIN. 550
SPCDAY 741 1021#
SPDATM 1029#
SPLGTM 730 1025#
SPMIDN 738 1027#
SPNOON 734 1026#
T1 60# 60 189 190 191 203 205 209 211 214 215 216 217 219
246 247 248 319 322 327 330 335 337 338 340 341 343 344
346 348 350 352 354 356 358 359 360 361 375 380 385 386
387 388 389 390 391 397 416 419 421 422 426 427 429 430
433 437 440 443 445 448 449 451 455 457 466 470 473 474
475 476 477 479 481 483 485 487 489 496 501 507 510 513
515 519 526 529 535 536 537 540 542 544 546 548 552 553
554 555 556 557 558 559 560 561 575 671 672 674 675 677
685 688 693 695 701 703 706 710 711 714 729 751 759 760
761 801 804 811 818 819 820 821 826 828 840 841 842 843
844 854 856 860 861 875 876 889 891 897 900 901 911 912
913 914 915 916 956 957 958 960 961 963 965 966 967 1046
1047 1048 1052 1055 1063 1064 1065 1066 1068 1079 1080 1089 1093 1095
1096 1097 1098 1107 1108 1126 1135 1143 1146 1155 1157 1158 1159 1186
1190 1197 1198 1199 1200 1202 1204 1213 1214 1215 1219 1232 1233 1234
1236 1254 1257 1259 1260 1266 1267 1268 1269 1270 1272 1273 1277 1278
1279 1281 1283 1284 1285 1286 1295 1299 1303 1306 1308 1317 1335 1337
1338 1339 1342 1343 1352 1355 1356 1357 1359 1361 1372 1374 1375 1377
1379 1381 1382 1385 1387 1394 1399
T2 61# 61 372 373 374 375 376 381 382 383 384 386 388 417
434 490 492 494 497 502 503 541 542 543 545 546 570 572
696 697 729 730 734 738 741 742 745 823 824 827 832 858
860 879 917 918 919 920 921 922 923 924 925 926 964 1057
1058 1064 1068 1069 1071 1073 1085 1087 1090 1092 1099 1127 1128 1135
1136 1137 1140 1143 1144 1145 1146 1147 1148 1149 1156 1186 1200 1204
1215 1216 1236 1237 1261 1338 1340 1342 1343 1345 1388 1389 1390 1391
T3 62# 62 376 377 378 379 380 574 698 825 829 831 856 857
870 871 874 879 885 1060 1061 1066 1072 1074 1075 1081 1130 1131
1133 1138 1150 1262
T4 63# 63 381 571 572 573 575 830 859 868 869 871 873 875
876 878 880 882 883 884 888 891 1062 1082 1084 1087 1092 1093
1131 1140 1145 1149 1151 1152 1153 1159 1214 1218 1232 1263
TEMP 543 548 549 551 553 556 558 559 561 1470#
TEST%% 474 1108
TLDVER 207 218 1450#
TPOPJ 1341 1360#
TPOPJ1 1358#
TWOPI 223# 541
VAL1 673 674 869 873 875 876 882 883 1461#
VAL2 674 841 894 895 915 954 962 963 1462#
VAL3 842 913 947 959 960 1463#
VAL4 844 911 940 956 1464#
VAL5 725 764 768 776 785 834 925 1465#
VAL6 718 807 835 923 1466#
VAL7 830 921 1467#
VAL8 831 919 1468#
VAL9 675 832 917 1469#
VSCNBL 219 235#
VSWTD 237 288#
VSWTL 236 276#
VSWTM 237 282#
VSWTN 236 270# 276
VSWTP 238 276#
WLDERR 1265 1299#
X 59# 59 551
XCTIO 1320 1332#
ZZ 57# 59 59# 60 60# 61 61# 62 62# 63 63# 64 64# 65
65# 66 66# 67 67# 68 68# 69 69# 82# 84 84# 85 85#
86 86# 87 87# 118# 120 120# 121 121# 122 122# 123 123# 124
124# 125 125# 126 126# 127 129
$BIRTH 283 297#
$CHART 284 403#
$COMPA 285 316#
$PLOT 287 402#
$POPJ 1291#
$POPJ1 1290#
$POPJ2 1289# 1333
%%BIOV 22# 23
%%JOBD 27 27#
%%MACT 29 29#
%%SCNM 30 30#
%%UUOS 28 28#
%CNDTM 1107
..TEMP 276# 276 277# 278# 279# 280# 280 281# 282# 282 283 283# 284 284#
285 285# 286 286# 287 287# 288 288# 289 289# 290 290# 291 291#
292 292# 293 293# 294
..TEMR 288# 288 289# 289 290# 290 291# 291 292# 292 293# 293 294
.ALCBF 435
.BFCTR 1315
.BFPTR 1317
.CLRBF 318 326 334 1430
.CNTDT 855 1046# 1184 1203
.CNVDT 927 1125#
.DATIC 625#
.DATIF 585#
.DATIG 587#
.DATIM 282 286 300 324 332 623#
.DATIP 605#
.DATIQ 607#
.DECNC 755 781
.DECNW 721 935 943 950
.FILIN 411
.FREBF 527
.FXDEV 420 421
.FXEXT 428 429
.FXLEN 417 1259 1474
.FXNAM 423 425 426
.FXNMM 424
.GTJLT 214
.GTNOW 441 676 1107#
.GTSPC 418
.IOASC 432
.ISCAN 204
.JBFF 1427 1429
.JBVER 21 211
.LASWD 901
.MONRT 221 1432
.NAME 686 802
.NMUL 904
.OPBUF 1273
.POPJ 1415
.POPJ1 303 968
.QSCAN 320 328
.RBCNT 1267
.RBEXT 1303
.RBTIM 1262 1266 1476
.RECOR 202
.SAVE1 1125 1212
.SAVE2 316 404
.SAVE3 1256
.SIXSC 683 800
.STOPB 1264
.TCHAR 398 1235 1380 1396
.TCOLN 1188
.TCRLF 213 399 472 512 1310 1398
.TDATE 1187 1212#
.TDATX 458 508 1197# 1422
.TDEC2 1217 1238
.TDECW 396 1416
.TDTTM 900 1184#
.TFBLK 1309 1421
.TIAUC 585 593 605 612 623 634 765 777 812
.TICAN 851
.TOCTW 1417
.TPCNT 347 351 355 362 396#
.TPPNW 1419
.TSIXN 249 1383 1418
.TSPAC 509 1384
.TSTRG 210 323 331 345 349 353 357 456 467 471 511 1201 1231 1307
1353 1386 1420
.TTIME 1190
.TVERW 212
.TYOCH 438 529 1369 1373 1401
.VSCAN 220
AC$ 53# 59 60 61 62 63 64 65 66 67 68 69
ASCIZ$ 182#
CALL 96# 202 204 210 212 213 220 221 300 316 318 320 323 324
326 328 331 332 334 336 339 342 345 347 349 351 353 355
357 362 396 398 404 407 411 418 431 435 438 441 456 458
467 471 472 478 480 482 484 486 488 491 493 495 499 504
508 509 511 512 527 550 752 907 971 973 975 977 979 981
983 985 987 989 991 1109 1201 1203 1235 1256 1264 1296 1300 1304
1307 1309 1310 1320 1345 1353 1367 1373 1380 1383 1384 1386 1391 1396
1398 1401 1430 1432
CLOSE 524
CTITLE 17# 19
DOSCAN 269
ENTER 1283
ERROR. 137# 407 752 907 971 973 975 977 979 981 983 985 987 989
991 1109 1296 1300 1304 1345
ETYP 115# 120 121 122 123 124 125 126
FLAG$ 78# 84 85 86 87
FLOAT. 97# 384 385 540 555
GETSTS 1338
GETTAB 215 1108
HALT 791 1322
INFO. 149#
LOOKUP 1284
M$FAIL 152# 907 971 973 975 977 979 981 983 985 987 989 991
MOVX 473 1107
ND 37 38 39 40 41 43 44 45 46 47 48
OPEN 1277
OUT 1321
PJRST 249 392 399 529 562 632 927 1190 1238
RELEAS 525
RESET 199 1427
RESTR$ 164# 528 1189 1354 1358 1360 1428
SAVE$ 157# 439 1185 1334 1344 1426
SP 270 271 272 273 274 275 276 277 278 279 280 281 282 283
284 285 286 287 288 289 290 291 292 293
STORE 193 196 473
STRNG$ 176# 209 322 330 344 348 352 356 454 459 468 1306 1351
SWTCHS 257# 270 276 282 288
U 171# 1449 1450 1451 1452 1455 1456 1457 1458 1459 1460 1461 1462 1463
1464 1465 1466 1467 1468 1469 1470 1471 1472 1473 1474 1475 1476 1477
1478 1479 1480 1484 1485 1486 1487
VRSN. 22
WARN. 144# 1345
X 270# 270 271 272 273 274 275 276# 276 277 278 279 280 281
282# 282 283 284 285 286 287 288# 288 289 290 291 292 293
XX 997# 1000 1001 1002 1003 1004 1005 1006 1008 1009 1010 1011 1012 1013
1014 1015 1016 1017 1018 1019 1021 1022 1023 1025 1026 1027 1029 1030