Commit | Line | Data |
---|---|---|
81e70d48 PH |
1 | / KERMIT-12 PATCH FILE |
2 | XLIST OFF | |
3 | IFNDEF OFF <OFF= 1> | |
4 | IFNDEF ON <ON= 0> | |
5 | XLIST ON | |
6 | ||
7 | / INDEPENDENT SOURCE FILE TO ALLOW CUSTOMIZATION OF KERMIT-12. | |
8 | ||
9 | / LAST EDIT: 06-SEP-1990 11:00:00 CJL | |
10 | ||
11 | / THIS FILE IS PROVIDED TO USERS OF KERMIT-12 TO ALLOW CUSTOMIZED VERSIONS TO BE | |
12 | / LOCALLY CREATED WITHOUT MODIFYING THE MAIN SOURCE (K12MIT.PAL). | |
13 | ||
14 | / CREATING KERMIT-12 FROM THE STANDARD DISTRIBUTION (AND THIS FILE). | |
15 | ||
16 | / KERMIT-12 IS DISTRIBUTED IN SEVERAL FILES WHICH CAN BE USED TO CREATE A | |
17 | / RUNNING KERMIT-12 VIA SEVERAL METHODS. THE MOST DIRECT METHOD IS TO JUST | |
18 | / ASSEMBLE THE MAIN SOURCE (K12MIT.PAL) POSSIBLY AUGMENTED BY A HEADER FILE | |
19 | / CONTAINING CUSTOMIZING PARAMETERS (PARAM.PAL), OR TO MODIFY AND ASSEMBLE THE | |
20 | / MAIN SOURCE FILE TO PRODUCE A CUSTOMIZED RESULT. THIS ALSO ALLOWS FOR LOCAL | |
21 | / CHANGES TO THE SOURCE ITSELF IF NECESSARY. THE MAIN SOURCE FILE IS RATHER | |
22 | / LARGE AND MIGHT BE DIFFICULT TO ASSEMBLE, ETC. ON SMALL SYSTEMS. MOST USERS | |
23 | / OF KERMIT-12 WILL FIND THE STANDARD ASSEMBLY PARAMETERS SUITING THEIR LOCAL | |
24 | / REQUIREMENTS, AS MOST USER-PREFERENCE ITEMS ARE CUSTOMIZABLE VIA THIS METHOD. | |
25 | / THE USER OF A SMALLER SYSTEM IS ENCOURAGED TO ACQUIRE KERMIT-12 FROM A LARGER | |
26 | / SYSTEM VIA DIRECT MEDIA COPY; AN ACCURATE LISTING OF KERMIT-12 WITH LOCAL | |
27 | / CUSTOMIZATION COULD THEN BE AVAILABLE. | |
28 | ||
29 | / SINCE IT IS NOT ALWAYS POSSIBLE FOR SMALLER INDEPENDENT USERS TO ACQUIRE | |
30 | / KERMIT-12 FROM OTHER INSTALLATIONS, THIS FILE (K12PCH.PAL) WAS CREATED TO | |
31 | / HANDLE MOST PARAMETER SETTINGS. VIRTUALLY ALL OF THE USER-PREFERENCE | |
32 | / PARAMETERS, ETC. HAVE BEEN DUPLICATED HERE TO ALLOW INDEPENDENT ASSEMBLY OF | |
33 | / THIS FILE WHICH IS SMALL ENOUGH TO ALLOW ASSEMBLY ON MODEST SYSTEMS. | |
34 | ||
35 | / NOTE: USING THE METHOD DESCRIBED BELOW ASSUMES THAT ALL CHANGES REQUIRED BY | |
36 | / THE USER HAVE BEEN UPDATED WITHIN K12PCH.PAL (THIS FILE), OR PLACED IN A | |
37 | / SEPARATE FILE (PARAM.PAL). SEE THE ASSEMBLY PARAMETERS SECTION FOR ANY | |
38 | / CUSTOMIZING INFORMATION. | |
39 | ||
40 | / THE STANDARD DISTRIBUTION OF KERMIT-12 INCLUDES A CORE-IMAGE COPY OF K12MIT.SV | |
41 | / WITH ALL STANDARD DEFAULT VALUES SET. IT IS AVAILABLE AS K12MIT.ENC WHICH IS | |
42 | / A "PRINTABLE" ENCODED VERSION OF THE SAVE IMAGE. ASSEMBLING AND RUNNING THE | |
43 | / DECODING PROGRAM K12DEC.PAL CAN PRODUCE K12MIT.SV FROM K12MIT.ENC. | |
44 | ||
45 | / ASSUMING THE AVAILABILITY OF K12MIT.SV AND K12PCH.PAL ON THE DEFAULT DEVICE | |
46 | / DSK:, THE FOLLLOWING CAN BE USED TO CREATE THE RUNNING KERMIT-12: | |
47 | ||
48 | / .PAL K12PCH<PARAM,K12PCH/E/F/W ASSEMBLE CUSTOMIZED PATCH FILE. | |
49 | ||
50 | / .LOAD K12MIT.SV/I$K12PCH$ LOAD IMAGE FILE K12MIT.SV WITH /I SWITCH SET. | |
51 | / $ INDICATES USING <ESC> TO TERMINATE LINE. | |
52 | / K12PCH.BN IS LOADED OVER K12MIT TO PATCH THE | |
53 | / BINARY TO THE DESIRED LOCAL VERSION. | |
54 | ||
55 | / .SAVE DEV KERMIT=1 SAVE RUNNING VERSION ON ANY AVAILABLE DEVICE | |
56 | / DEV (PREFERABLY SYS). | |
57 | ||
58 | / .R KERMIT OR RUN DEV KERMIT RUNNING VERSION NOW CAN BE INVOKED. | |
59 | \f/ ASSEMBLY PARAMETERS. | |
60 | ||
61 | / NOTE: EDIT NUMBERS PLACED ON VARIOUS SECTIONS OF THIS FILE REFER TO THE | |
62 | / CORRESPONDING EDIT NUMBERS WITHIN K12MIT.PAL. SEE THE K12MIT.PAL EDIT HISTORY | |
63 | / FOR FURTHER INFORMATION. | |
64 | ||
65 | / SEVERAL PARAMETERS MUST BE CHANGED WITHIN THIS FILE (K12PCH.PAL) (OR PASSED TO | |
66 | / THE ASSEMBLER VIA A SHORT FILE INSERTED INTO THE ASSEMBLY STREAM BEFORE THE | |
67 | / MAIN FILE): | |
68 | ||
69 | / SETTING KEY= [RECEIVE IOT CODE FOR CONSOLE KEYBOARD] DEFINES THE CONSOLE | |
70 | / KEYBOARD IOT CODE (DEFAULT IS 03). | |
71 | ||
72 | / SETTING TTY= [TRANSMIT IOT CODE FOR CONSOLE OUTPUT] CHANGES THE CONSOLE | |
73 | / PRINTER IOT CODE (DEFAULT IS 04). | |
74 | ||
75 | / THE FOLLOWING DEFINITIONS ARE ESSENTIALLY FOR KL8-TYPE DEVICES ONLY, AS THE | |
76 | / CODE DEMANDS KL8 HARDWARE COMPATIBILITY. MODELS OTHER THAN PDP-8 (SUCH AS | |
77 | / DECMATE) GENERALLY EITHER PLACE RESTRICTIONS ON AVAILABLE INTERFACES (OTHER | |
78 | / SOFTWARE DESIGNATES A SERIAL INTERFACE AS A LOGICAL PRINTER PORT; DECMATES | |
79 | / SUPPORT A FIRMWARE "PRINT SCREEN" KEY WHICH ENFORCES THIS.), OR DON'T ALLOW | |
80 | / USABLE PLUG-IN OPTIONS. | |
81 | ||
82 | / IGNORING BUILT-IN DECMATE SUPPORT, THE FOLLOWING PARAMETERS ARE ACTIVE: | |
83 | ||
84 | / SETTING DEV30= 1 CREATES DEVICE 30/31 REMOTE LINE IOTS. | |
85 | ||
86 | / SETTING DEV40= 1 CREATES DEVICE 40/41 REMOTE LINE IOTS. | |
87 | ||
88 | / SETTING LEDERLE=1 CREATES DEVICE 43/44 REMOTE LINE IOTS (AND A CUSTOM | |
89 | / HEADER). | |
90 | ||
91 | / SETTING ORIGNAL=1 CREATES DEVICE 33/34 REMOTE LINE IOTS (ORIGINAL | |
92 | / SETTINGS). | |
93 | ||
94 | / SETTING SPRINT= 1 CREATES DEVICE 32/33 REMOTE LINE IOTS (SERIAL PRINTER | |
95 | / PORT). | |
96 | ||
97 | / SETTING USER= 1 CREATES DEVICE XX/XY REMOTE LINE IOTS. | |
98 | ||
99 | / IF NONE OF THESE ARE SET, THEN DEV40=1 APPLIES BY DEFAULT. | |
100 | ||
101 | ||
102 | ||
103 | / SETTING USER= 1 REQUIRES THE USER TO DEFINE TWO ADDITIONAL VALUES: | |
104 | ||
105 | / XX= [RECEIVE IOT DEVICE CODE] (DEFAULT IS 40). | |
106 | ||
107 | / XY= [TRANSMIT IOT DEVICE CODE] (DEFAULT IS 41). | |
108 | \f/ SETTING SPRINT= 1 INHIBITS THE BUILT-IN CHECK FOR DECMATE OPERATION AND | |
109 | / USES THE SERIAL PRINTER PORT FOUND ON ALL | |
110 | / WPS-8-CONFIGURED PDP-8/E, PDP-8/A CONFIGURATIONS, | |
111 | / VT-78, AND ALL DECMATES (VT-278, DECMATE II, III, | |
112 | / III+) FOR REMOTE COMMUNICATIONS. | |
113 | ||
114 | / THE USE OF THE SERIAL PRINTER PORT FOR REMOTE COMMUNICATIONS PURPOSES MAY BE | |
115 | / PROBLEMATIC DUE TO CONSIDERATIONS SUCH AS THE RS-232 CONNECTION TO THE PRINTER | |
116 | / IS A MODEM (DCE), RATHER THAN A TERMINAL (DTE) (DECMATE II, ETC. REQUIRES A | |
117 | / GENDER CHANGER.), OR THE SOFTWARE DESIGNATION OF THE PORT AS BEING ALLEDGEDLY | |
118 | / *ONLY* FOR A PRINTER, SUCH AS WHEN CERTAIN SYSTEMS SUPPORT THE "PRINT SCREEN" | |
119 | / KEY AS A SCREEN DUMP TO THE SERIAL PRINTER PORT, ETC. THESE ISSUES ARE NOT | |
120 | / RELEVANT TO KERMIT-12 OPERATION, AS THE "PRINT SCREEN" KEY IS NOT SUPPORTED BY | |
121 | / KERMIT-12 IN THIS CONFIGURATION AS SUCH (FUTURE VERSIONS COULD REDEFINE THE | |
122 | / "PRINT SCREEN" KEY TO SUCH FUNCTIONS AS DUMP SCREEN TO A FILE, ETC.). | |
123 | ||
124 | / SETTING BRATE= NN SETS THE DEFAULT BAUD RATE (FOR SYSTEMS THAT SUPPORT | |
125 | / THIS FEATURE) FROM A TABLE OF VALUES (0-15) AS | |
126 | / FOLLOWS: | |
127 | ||
128 | / NN BAUD RATE | |
129 | ||
130 | / 00 50 | |
131 | / 01 75 | |
132 | / 02 110 | |
133 | / 03 134.5 | |
134 | / 04 150 | |
135 | / 05 300 | |
136 | / 06 600 | |
137 | / 07 1200 | |
138 | / 08 1800 | |
139 | / 09 2000 | |
140 | / 10 2400 | |
141 | / 11 3600 | |
142 | / 12 4800 | |
143 | / 13 7200 | |
144 | / 14 9600 | |
145 | / 15 19200 | |
146 | ||
147 | / SETTING ESCAPE= NNNN SETS THE DEFAULT ESCAPE CHARACTER TO NNNN. | |
148 | ||
149 | / SETTING FLOW= 1 ENABLES FLOW-CONTROL BY DEFAULT. | |
150 | / SETTING FLOW= 0 DISABLES FLOW-CONTROL BY DEFAULT. | |
151 | ||
152 | / SETTING FMODE= 0177 SETS THE DEFAULT FILE MODE TO ASCII. | |
153 | / SETTING FMODE= 4377 SETS THE DEFAULT FILE MODE TO BINARY. | |
154 | \f/ SETTING GENMSG= 0 CAUSES NO BINARY TO BE GENERATED WHERE 'LCLMSG' IS | |
155 | / DEFINED. THIS ALLOWS THE PARAMETER FILE (PARAM.PA) OR | |
156 | / SUBSEQUENT OVERLAY BY K12PCH.BN TO DEFINE THE LOCAL | |
157 | / HEADER MESSAGE. THIS PARAMETER SHOULD NOT BE SET | |
158 | / UNLESS ONE OF THESE METHODS IS USED, ELSE THE HEADER | |
159 | / MESSAGE WILL BE UNDEFINED. (NOTE: IF K12PCH.BN | |
160 | / GENERATES A HEADER MESSAGE, THEN THIS PARAMETER IS | |
161 | / UNIMPORTANT, AS K12PCH.BN OVERLAYS THE BINARY OF | |
162 | / K12MIT.) | |
163 | / SETTING GENMSG= 1 CAUSES A HEADER MESSAGE TO BE GENERATED. THE CONTENTS | |
164 | / OF THE MESSAGE ARE CREATED BY SETTING LEDERLE=1 OR | |
165 | / UMSG=1. IF EITHER IS ZERO, A DEFAULT (NULL) MESSAGE | |
166 | / WILL BE GENERATED. | |
167 | ||
168 | / SETTING ICLOSE= 1 ENSURES A <^Z> AT <EOF> OF ASCII INPUT FILES BY | |
169 | / DEFAULT. | |
170 | / SETTING ICLOSE= 0 CLOSES ASCII INPUT FILES AS RECEIVED BY DEFAULT. | |
171 | ||
172 | / SETTING INIECHO=0 CAUSES A FULL-DUPLEX CONNECT MODE STATE WITH NO LOCAL | |
173 | / CHARACTER ECHOING BY DEFAULT. | |
174 | / SETTING INIECHO=1 CAUSES A HALF-DUPLEX CONNECT MODE STATE WITH LOCAL | |
175 | / ECHO OF ALL CONSOLE CHARACTERS BY DEFAULT. | |
176 | ||
177 | / SETTING LOWER= 0 ALLOWS LOWER-CASE CONSOLE OUTPUT BY DEFAULT. | |
178 | / SETTING LOWER= -40 FOLDS LOWER-CASE CONSOLE OUTPUT TO UPPER-CASE BY | |
179 | / DEFAULT. | |
180 | ||
181 | / SETTING OCLOSE= 0 PREVENTS DEFAULT SENDING OF <^Z> AT <EOF> OF ASCII | |
182 | / FILES. | |
183 | / SETTING OCLOSE= 1 CAUSES <^Z> TO BE SENT AT <EOF> OF ASCII FILES BY | |
184 | / DEFAULT. | |
185 | ||
186 | / SETTING PORT= 0 CAUSES THE DP-278 PORT 0 TO BE USED IF KERMIT-12 IS | |
187 | / RUN ON A DECMATE 1 (ASSUMING SPRINT=0). | |
188 | / SETTING PORT= 1 CAUSES THE DP-278 PORT 1 TO BE USED IF KERMIT-12 IS | |
189 | / RUN ON A DECMATE 1 (ASSUMING SPRINT=0). | |
190 | ||
191 | / SETTING RETCNT= NNNN SETS THE PACKET RETRY COUNT TO NNNN BY DEFAULT. | |
192 | ||
193 | / SETTING UMSG= 0 PREVENTS THE LOCAL USER HEADER MESSAGE FROM BEING | |
194 | / GENERATED. | |
195 | / SETTING UMSG= 1 CAUSES THE LOCAL USER HEADER MESSAGE TO BE GENERATED. | |
196 | / THE PARAMETER GENMSG=1 IS REQUIRED TO BE SET. THE | |
197 | / SOURCE MUST BE MODIFIED LOCALLY TO CHANGE THE MESSAGE | |
198 | / TEXT FROM "INSERT LOCAL USER MESSAGE HERE!," AS THIS | |
199 | / IS THE DEFAULT CONTENTS. | |
200 | \f/ PASSING SHORT PARAMETER FILES. | |
201 | ||
202 | / WHEN INSERTING A SHORT USER MODIFICATION FILE IN THE INPUT STREAM (PARAM.PAL) | |
203 | / THE FOLLOWING SHOULD BE NOTED: | |
204 | ||
205 | / ALWAYS PUT THE SHORT PARAMETER FILE (CONTAINING EQUATED SYMBOLS SUCH AS | |
206 | / USER=1, ETC.) IN FRONT OF K12PCH.PAL. | |
207 | ||
208 | / IF TTY: IS USED FOR DIRECT TYPE-IN OF THESE PARAMETERS, THE INFORMATION NEED | |
209 | / ONLY BE TYPED ENDING WITH <^Z> DURING PASS 1. SUBSEQUENT PASSES REQUIRE THE | |
210 | / ENDING <^Z> ONLY. IF THIS METHOD IS USED, A LISTING WITHOUT THE USER INPUT | |
211 | / WHICH DID THE CUSTOMIZING OF KERMIT-12 CAN BE CREATED. NOTE: IF BINARY IS | |
212 | / GENERATED BY THE CONTENTS OF THE PARAMETER FILE (SUCH AS USE OF THE LOCAL TEXT | |
213 | / MESSAGE, ETC.), THE INFORMATION MUST BE TYPED IN DURING PASS 2. THE PASS 3 | |
214 | / LISTING MAY CONTAIN THE INFORMATION IF SO DESIRED, REQUIRING A REPETITION OF | |
215 | / THE INPUT. PASS 1 INPUT OF THE INFORMATION IS EFFECTIVELY IGNORED, AS NO | |
216 | / DEFINITIONS ARE CREATED ('LCLMSG' IS DEFINED ELSEWHERE, ETC.). | |
217 | ||
218 | / EXPERIENCED PDP-8 USERS NEW TO PAL8 VERSION B0 TAKE SPECIAL NOTICE: | |
219 | ||
220 | / DUE TO HARDWARE LIMITATIONS OF THE DECMATES, THE KEYBOARD FLAG WILL BE CLEARED | |
221 | / DURING PDP-8 PAL8 B0 OPERATION. THE KL8E TTY: HANDLER WILL NO LONGER BE ABLE | |
222 | / TO BUFFER <^Z> DURING THE ASSEMBLY; YOU MUST WAIT UNTIL THE HANDLER ACCESSES | |
223 | / THE KEYBOARD ON EACH PASS *THEN* PRESS <^Z> TO CONTINUE THE ASSEMBLY. | |
224 | ||
225 | ||
226 | / CREATING A CUSTOM MESSAGE FROM THE PARAMETER FILE. | |
227 | ||
228 | / IF SO DESIRED, A CUSTOM LOCAL HEADER MESSAGE MAY BE ADDED BY INSERTING THE | |
229 | / FOLLOWING INTO THE PARAMETER FILE: | |
230 | ||
231 | / BUFFLD= 10 /THESE PROBABLY | |
232 | / FILBUFF=2000 /WON'T CHANGE! | |
233 | ||
234 | / GENMSG= 0 /DON'T GENERATE STANDARD (NULL) MESSAGE | |
235 | / UMSG= 0 /DON'T GENERATE STANDARD (DUMMY) USER MESSAGE | |
236 | ||
237 | / FIELD BUFFLD%10 /FIELD FOR TEXT MESSAGE | |
238 | ||
239 | / *FILBUFFER /LOCAL MESSAGE LOADS THERE | |
240 | ||
241 | /LCLMSG,TEXT "%^I^NSERT ^L^OCAL ^M^ESSAGE ^H^ERE!%" | |
242 | ||
243 | / ZBLOCK LCLMSG+40-. /ZERO REST OF MESSAGE AREA | |
244 | ||
245 | / TEXT IS IN UPPER/LOWER-CASE SIXBIT WITH '^' MEANING SHIFT CASE (INITIALLY | |
246 | / LOWER-CASE) AND '%' MEANING <CR>, <LF>. | |
247 | \f/ MAINTAINING THIS PATCH FILE. | |
248 | ||
249 | / IF ANY CHANGES ARE MADE TO K12MIT.PAL ITSELF WHICH MIGHT AFFECT THIS FILE, THE | |
250 | / GLOBAL TECO MACRO (K12GLB.TEC AKA GLOBAL.TEC) SHOULD BE USED TO RESOLVE ALL | |
251 | / EXTERNAL REFERENCES TO ROUTINES, ETC. IN K12MIT.PAL. TO UPDATE THIS FILE | |
252 | / (K12PCH.PAL), THE FOLLOWING METHOD IS REQUIRED: | |
253 | ||
254 | / .PAL ,K12MIT<DEV:K12MIT/E/F/N/W CREATE "SYMBOLS" LISTING FILE ON DSK: | |
255 | / .MUNG K12GLB.TEC,K12PCH UPDATE THIS FILE ON DSK: | |
256 | ||
257 | / N.B., DSK:K12PCH.PAL WILL BE UPDATED *WITH NO BACKUP*. DSK:EQUATE.TMP WILL BE | |
258 | / CREATED AS AN ARTIFACT. IT CONTAINS THE ACTUAL EQUATE STATEMENTS WHICH WERE | |
259 | / UPDATED IN K12PCH.PAL. | |
260 | ||
261 | / THIS WILL MODIFY THE EQUATED SYMBOLS BELOW IN THE SPECIALLY DELIMITED AREA. | |
262 | / ONLY EQUATED SYMBOLS (AND ANY WHITESPACE) SHOULD BE PLACED BETWEEN THE SPECIAL | |
263 | / DELIMITERS: "<CR><LF>//" WHICH ARE USED BY THE MACRO TO LOCATE THE GLOBAL | |
264 | / EQUATES TO UPDATE. | |
265 | ||
266 | / AS NEW FEATURES ARE ADDED/(DELETED) IN K12MIT.PAL, THE APPROPRIATE DEFINITIONS | |
267 | / AND CONDITIONAL ASSEMBLY PARAMETERS SHOULD BE ADDED TO BOTH K12MIT.PAL AND | |
268 | / K12PCH.PAL FOR CONSISTENCY AND USER FLEXIBILITY. | |
269 | \f/ DEFINITIONS. /017 CJL | |
270 | ||
271 | / REMOTE LINE PARAMETERS; SET ONLY ONE AS NECESSARY. /046 CJL | |
272 | ||
273 | IFNDEF DEV30 <DEV30= 0> /USE DEVICE 30/31 VALUES | |
274 | IFNDEF DEV40 <DEV40= 0> /USE DEVICE 40/41 VALUES | |
275 | IFNDEF LEDERLE <LEDERLE=0> /USE LEDERLE LABS VALUES | |
276 | IFNDEF ORIGNAL <ORIGNAL=0> /USE ORIGINAL VALUES | |
277 | IFNDEF SPRINT <SPRINT=0> /USE DEVICE 32/33 VALUES | |
278 | IFNDEF USER <USER= 0> /USE USER-DEFINED VALUES | |
279 | ||
280 | REMOTE= DEV30+DEV40+LEDERLE+ORIGNAL /SET REMOTE LINE IOT CODE | |
281 | REMOTE= REMOTE+SPRINT+USER /SET REMOTE LINE IOT CODE | |
282 | ||
283 | IFZERO REMOTE <DEV40= 1> /DEFAULT TO DEVICE 40/41 VERSION | |
284 | ||
285 | / DEV30 PARAMETERS. | |
286 | ||
287 | IFNZRO DEV30 < | |
288 | ||
289 | IFNDEF REC <REC= 30> /DEVICE 30 INPUT | |
290 | IFNDEF SEN <SEN= 31> /DEVICE 31 OUTPUT | |
291 | ||
292 | > | |
293 | ||
294 | / DEV40 PARAMETERS (DEFAULT). | |
295 | ||
296 | IFNZRO DEV40 < | |
297 | ||
298 | IFNDEF REC <REC= 40> /DEVICE 40 INPUT | |
299 | IFNDEF SEN <SEN= 41> /DEVICE 41 OUTPUT | |
300 | ||
301 | > | |
302 | ||
303 | / LEDERLE PARAMETERS. /038 CJL | |
304 | ||
305 | IFNZRO LEDERLE < | |
306 | ||
307 | IFNDEF REC <REC= 43> /DEVICE 43 INPUT | |
308 | IFNDEF SEN <SEN= 44> /DEVICE 44 OUTPUT | |
309 | IFNDEF GENMSG <GENMSG=1> /GENERATE LOCAL HEADER MESSAGE | |
310 | IFNDEF UMSG <UMSG= 0> /DON'T GENERATE USER MESSAGE | |
311 | ||
312 | > | |
313 | ||
314 | / ORIGNAL PARAMETERS. | |
315 | ||
316 | IFNZRO ORIGNAL < | |
317 | ||
318 | IFNDEF REC <REC= 33> /DEVICE 33 INPUT | |
319 | IFNDEF SEN <SEN= 34> /DEVICE 34 OUTPUT | |
320 | ||
321 | > | |
322 | \f/ SPRINT PARAMETERS. /046 CJL | |
323 | ||
324 | IFNZRO SPRINT < | |
325 | ||
326 | IFNDEF REC <REC= 32> /DEVICE 32 INPUT | |
327 | IFNDEF SEN <SEN= 33> /DEVICE 33 OUTPUT | |
328 | ||
329 | > | |
330 | ||
331 | / USER PARAMETERS. | |
332 | ||
333 | IFNZRO USER < | |
334 | ||
335 | IFNDEF XX <XX= 40> /DEFAULT TO DEVICE 40 | |
336 | IFNDEF XY <XY= 41> /DEFAULT TO DEVICE 41 | |
337 | IFNDEF REC <REC= XX> /DEVICE XX INPUT | |
338 | IFNDEF SEN <SEN= XY> /DEVICE XY OUTPUT | |
339 | IFNDEF GENMSG <GENMSG=1> /GENERATE LOCAL HEADER MESSAGE | |
340 | IFNDEF UMSG <UMSG= 1> /GENERATE USER MESSAGE | |
341 | ||
342 | > | |
343 | ||
344 | / REMOTE LINE IOT DEFINITIONS. | |
345 | ||
346 | / RECEIVE DEFINITIONS. | |
347 | ||
348 | RKRBIOT=REC^10+6006 /READ REMOTE, CLEAR FLAG | |
349 | RKSFIOT=REC^10+6001 /SKIP ON REMOTE INPUT FLAG | |
350 | ||
351 | / TRANSMIT DEFINITIONS. | |
352 | ||
353 | RSBIOT= SEN^10+6003 /SET BAUD RATE FROM AC[8-11] | |
354 | RTLSIOT=SEN^10+6006 /TRANSMIT CHARACTER, CLEAR FLAG | |
355 | RTSFIOT=SEN^10+6001 /SKIP ON TRANSMIT FLAG | |
356 | ||
357 | / CONSOLE TTY: DEFINITIONS. /017 CJL | |
358 | ||
359 | / KEYBOARD DEFINITIONS. /017 CJL | |
360 | ||
361 | IFNDEF KEY <KEY= 03> /KEYBOARD DEVICE CODE | |
362 | ||
363 | KCCIOT= KEY^10+6002 /CLEAR CONSOLE KEYBOARD FLAG, AC | |
364 | KRBIOT= KEY^10+6006 /READ CONSOLE KEYBOARD BUFFER, CLEAR FLAG | |
365 | KRSIOT= KEY^10+6004 /READ CONSOLE KEYBOARD BUFFER STATIC | |
366 | KSFIOT= KEY^10+6001 /SKIP ON CONSOLE KEYBOARD FLAG | |
367 | ||
368 | / TELEPRINTER DEFINITIONS. /017 CJL | |
369 | ||
370 | IFNDEF TTY <TTY= 04> /TELEPRINTER DEVICE CODE | |
371 | ||
372 | TLSIOT= TTY^10+6006 /PRINT CHARACTER, CLEAR FLAG | |
373 | TSFIOT= TTY^10+6001 /SKIP ON TELEPRINTER FLAG | |
374 | \f/ DEFAULT ESCAPE CHARACTER DEFINITION. /025 CJL | |
375 | ||
376 | IFNDEF ESCAPE <ESCAPE="]&37> /DEFAULT IS CONTROL-] | |
377 | ||
378 | / DEFAULT LOWER-CASE ENABLE DEFINITION. /030 CJL | |
379 | ||
380 | IFNDEF LOWER <LOWER= 0/-40> /LOWER-CASE IS ALLOWED AS IS | |
381 | /CHANGE TO -40 IF LOWER-CASE | |
382 | /SHOULD BE FOLDED TO UPPER-CASE | |
383 | ||
384 | / DEFAULT RETRY COUNT DEFINITION. /031 CJL | |
385 | ||
386 | IFNDEF RETCNT <RETCNT=5> /DEFAULT IS FIVE RETRIES | |
387 | ||
388 | / DEFAULT FILE MODE DEFINITION. /031 CJL | |
389 | ||
390 | IFNDEF FMODE <FMODE= 0177> /DEFAULT IS ASCII FILE MODE | |
391 | /4377 IS BINARY FILE MODE | |
392 | ||
393 | / DEFAULT FLOW-CONTROL MODE DEFINITION. /031 CJL | |
394 | ||
395 | IFNDEF FLOW <FLOW= 1> /DEFAULT IS FLOW-CONTROL ENABLED | |
396 | ||
397 | / DEFAULT ASCII INPUT FILE <^Z> DISPOSITION. /031 CJL | |
398 | ||
399 | IFNDEF ICLOSE <ICLOSE=1> /ENSURE <^Z> AT ASCII <EOF> | |
400 | ||
401 | / DEFAULT ASCII OUTPUT FILE <^Z> DISPOSITION. /031 CJL | |
402 | ||
403 | IFNDEF OCLOSE <OCLOSE=0> /<^Z> NOT SENT AT ASCII <EOF> | |
404 | ||
405 | / DEFAULT LOCAL MESSAGE GENERATION DEFINITIONS. /038 CJL | |
406 | ||
407 | IFNDEF GENMSG <GENMSG=1> /DEFAULT IS TO GENERATE A MESSAGE | |
408 | IFNDEF UMSG <UMSG= 0> /DEFAULT IS NO DUMMY USER MESSAGE | |
409 | IFNDEF LEDERLE <LEDERLE=0> /DEFAULT IS NO LEDERLE MESSAGE | |
410 | ||
411 | / THE NULL MESSAGE WILL BE GENERATED BY DEFAULT. | |
412 | ||
413 | / ECHO DEFINITION. /039 CJL | |
414 | ||
415 | IFNDEF INIECHO <INIECHO=0> /DEFUALT IS NO LOCAL ECHO | |
416 | ||
417 | / DEFAULT DECMATE I PORT DEFINITION. /050 CJL | |
418 | ||
419 | IFNDEF PORT <PORT= 0> /DEFAULT IS PORT ZERO | |
420 | ||
421 | / DEFAULT BAUD RATE DEFINITION. /050 CJL | |
422 | ||
423 | IFNDEF BRATE <BRATE= 7> /DEFAULT IS 1200 BAUD | |
424 | \f | |
425 | // GLOBAL EQUATED SYMBOLS FROM K12MIT.PAL. | |
426 | ||
427 | BUFFLD= 0010 /I/O BUFFER FIELD | |
428 | CMOUT4= 0712 /REMOTE OUTPUT WRITE | |
429 | CONTLS= 5701 /CONSOLE OUTPUT WRITE | |
430 | CONTSF= 5677 /CONSOLE OUTPUT TEST | |
431 | COUTINI=6601 /CONSOLE OUTPUT WRITE | |
432 | DAYMSG= 2145 /DAY MESSAGE | |
433 | DIRXR= 0012 /DIRECTORY AUTO-INDEX | |
434 | ECHOFLA=5153 /ECHO FLAG | |
435 | ESCHAR= 0101 /ESCAPE CHARACTER | |
436 | FILBUFF=2000 /FILE BUFFER | |
437 | FILMODE=0075 /INTERNAL FILE MODE FLAG | |
438 | FLOWFLA=0102 /FLOW CONTROL FLAG | |
439 | ICTLZFL=4033 /INPUT <^Z> FLAG | |
440 | INMSG2= 2242 /INITIAL MESSAGE | |
441 | INMSG3= 2243 /INITIAL MESSAGE | |
442 | INREAD= 0640 /REMOTE INPUT READ | |
443 | INSKIP= 0636 /REMOTE INPUT SKIP | |
444 | KCCZAP= 6501 /CONSOLE INPUT CLEAR | |
445 | KCCZP2= 6546 /CONSOLE INPUT CLEAR | |
446 | KGTEST= 5250 /CONSOLE INPUT TEST | |
447 | KGREAD= 5252 /CONSOLE INPUT READ | |
448 | KRSZAP= 6472 /CONSOLE KEYBOARD READ | |
449 | KSFLOC= 6470 /CONSOLE KEYBOARD SKIP | |
450 | LCLMSG= 2000 /LOCAL USER MESSAGE | |
451 | MONMSG= 2246 /MONTH MESSAGE | |
452 | MSGFLD= 0010 /TEXT MESSAGE FIELD | |
453 | NOWAIT= 0705 /REMOTE OUTPUT SKIP | |
454 | OCTLZFL=3762 /OUTPUT <^Z> FLAG | |
455 | PRGFLD= 0000 /PROGRAM FIELD | |
456 | P7TLS= 6540 /CONSOLE OUTPUT WRITE | |
457 | P7TSF= 6536 /CONSOLE OUTPUT TEST | |
458 | RATE= 0007 /BAUD RATE | |
459 | REMTLS= 5726 /REMOTE OUTPUT WRITE | |
460 | REMTSF= 5724 /REMOTE OUTPUT TEST | |
461 | RETRY= 0033 /RETRY COUNT | |
462 | RININIT=6613 /REMOTE INPUT READ | |
463 | RINREAD=5505 /REMOTE INPUT READ | |
464 | RINTEST=5503 /REMOTE INPUT TEST | |
465 | ROUTINI=6612 /REMOTE OUTPUT WRITE | |
466 | UPONLY= 0076 /UPPER-CASE ONLY FLAG | |
467 | YEARMSG=2274 /YEAR MESSAGE | |
468 | ||
469 | // END OF GLOBAL SYMBOLS FROM K12MIT.PAL | |
470 | \f/ EQUATED SYMBOLS. | |
471 | ||
472 | NL7777= CLA CMA /LOAD AC WITH 7777 | |
473 | \f/ STATIC DATE CALCULATIONS. /024 CJL | |
474 | ||
475 | / THESE EQUATIONS CAUSE PRINTABLE TEXT OF THE DATE PARTICULARS, WHICH ARE GIVEN | |
476 | / IN OS/8 INTERNAL FORMAT. PROGRAM MAINTAINENCE REQUIRES THE UPDATE OF VERSION, | |
477 | / REVISION, REVDATE, AND REVDGRP. REVDATE AND REVDGRP SHOULD BE OBTAINED FROM | |
478 | / THE SYSTEM WHEN RELEASING A NEW VERSION AFTER FIRST CORRECTLY INVOKING THE | |
479 | / SYSTEM DATE COMMAND. | |
480 | ||
481 | / VERSION=[ANY NUMBER IN THE RANGE 00-143 (DECIMAL 00-99)] | |
482 | ||
483 | / REVISIO=[ANY SIX-BIT ALPHA (A-Z); DO NOT FORGET &77] | |
484 | ||
485 | / REVDATE=[THE CONTENTS OF 17666 (DATE WORD)] | |
486 | ||
487 | / REVDGRP=[THE CONTENTS OF 07777 (ONLY BITS[3-4] ARE USED)] | |
488 | ||
489 | ||
490 | ||
491 | IFNDEF REVDATE <REVDATE=4464> /REVISION DATE (LOCATION 17666) | |
492 | ||
493 | IFNDEF REVDGRP <REVDGRP=0400> /REVISION 8 YEAR DATE GROUP (LOCATION 07777) | |
494 | ||
495 | IFNDEF REVISIO <REVISIO="G&77> /REVISION OF KERMIT-12 | |
496 | ||
497 | IFNDEF VERSION <VERSION=12> /VERSION OF KERMIT-12 | |
498 | ||
499 | ||
500 | DAY= REVDATE&370%10 /REVISION DAY | |
501 | ||
502 | DGROUP= REVDGRP&600%20 /REVISION DATE GROUP (WHICH 8 YEARS) | |
503 | ||
504 | MONTH= REVDATE&7400%400 /REVISION MONTH | |
505 | ||
506 | YEAR= REVDATE&7+DGROUP+106 /REVISION YEAR (SINCE 1900) | |
507 | \f/ PATCHED LOCATIONS. | |
508 | ||
509 | FIELD PRGFLD%10 /OVER MAIN PROGRAM CODE | |
510 | ||
511 | *RATE /OVER BAUD RATE VALUE | |
512 | ||
513 | RATE, BRATE /BAUD RATE VALUE /050 CJL | |
514 | ||
515 | *RETRY /OVER PACKET ERROR RETRY COUNTER | |
516 | ||
517 | RETRY, -RETCNT /PACKET ERROR RETRY COUNTER /031 CJL | |
518 | ||
519 | *FILMODE /OVER INTERNAL FILE MODE FLAG | |
520 | ||
521 | FILMODE,FMODE /ASCII=0177, BINARY=4377 /019 CJL | |
522 | ||
523 | *UPONLY /OVER UPPER-CASE ONLY FLAG | |
524 | ||
525 | / UPPER-CASE ONLY FLAG. /023 CJL | |
526 | ||
527 | UPONLY, LOWER /0=UPPER/LOWER CASE, -40=UPPER-CASE ONLY/030 CJL | |
528 | ||
529 | *ESCHAR /OVER ESCAPE CHARACTER FOR CONNECT MODE | |
530 | ||
531 | / ESCAPE CHARACTER FOR CONNECT MODE. /025 CJL | |
532 | ||
533 | ESCHAR, ESCAPE /ESCAPE CHARACTER FOR CONNECT MODE /025 CJL | |
534 | ||
535 | *FLOWFLAG /OVER FLOW CONTROL FLAG | |
536 | ||
537 | / FLOW CONTROL FLAG. /026 CJL | |
538 | ||
539 | FLOWFLA,FLOW /0=NO FLOW CONTROL, NON-ZERO=FLOW /026 CJL | |
540 | /CONTROL VIA <^S>/<^Q> | |
541 | \f/ I/O PATCHES. | |
542 | ||
543 | / REMOTE LINE (NON-CONNECT) PATCHES. | |
544 | ||
545 | / INPUT ROUTINE PATCHES. | |
546 | ||
547 | *INSKIP /OVER REMOTE INPUT SKIP | |
548 | ||
549 | INSKIP, RKSFIOT /FLAG UP YET? /049 CJL | |
550 | ||
551 | *INREAD /OVER REMOTE INPUT READ | |
552 | ||
553 | INREAD, RKRBIOT /GET THE CHARACTER /049 CJL | |
554 | ||
555 | / OUTPUT ROUTINE PATCHES. | |
556 | ||
557 | *NOWAIT /OVER REMOTE OUTPUT SKIP | |
558 | ||
559 | NOWAIT, RTSFIOT /OUTPUT FLAG UP? /049 CJL | |
560 | ||
561 | *CMOUT4 /OVER REMOTE OUTPUT WRITE | |
562 | ||
563 | CMOUT4, RTLSIOT /YES, OUTPUT THE CHARACTER NOW /049 CJL | |
564 | ||
565 | / INITIALIZATION PATCHES. | |
566 | ||
567 | *DIRXR /OVER DECMATE I PORT SELECT | |
568 | ||
569 | DIRXR, PORT /DECMATE I PORT SELECT VALUE /050 CJL | |
570 | ||
571 | *ROUTINITIALIZE /OVER REMOTE OUTPUT WRITE | |
572 | ||
573 | ROUTINI,RTLSIOT /INITIALIZE REMOTE OUTPUT /046 CJL | |
574 | ||
575 | *RININITIALIZE /OVER REMOTE INPUT READ | |
576 | ||
577 | RININIT,RKRBIOT /INITIALIZE REMOTE INPUT /046 CJL | |
578 | \f/ CONSOLE (NON-CONNECT) PATCHES. | |
579 | ||
580 | / INPUT ROUTINE PATCHES. | |
581 | ||
582 | *KSFLOC /OVER CONSOLE INPUT ROUTINE | |
583 | ||
584 | KSFLOC, KSFIOT /SKIP ON KEYBOARD FLAG /023 CJL | |
585 | ||
586 | *KRSZAP /OVER CONSOLE INPUT ROUTINE | |
587 | ||
588 | KRSZAP, KRSIOT /READ KEYBOARD BUFFER /023 CJL | |
589 | ||
590 | *KCCZAP /OVER CONSOLE INPUT ROUTINE | |
591 | ||
592 | KCCZAP, KCCIOT /CLEAR KEYBOARD FLAG /023 CJL | |
593 | ||
594 | *KCCZP2 /OVER CONSOLE INPUT ROUTINE | |
595 | ||
596 | KCCZP2, KCCIOT /CLEAR KEYBOARD FLAG, AC /023 CJL | |
597 | ||
598 | / OUTPUT ROUTINE PATCHES. | |
599 | ||
600 | *P7TSF /OVER CONSOLE OUTPUT ROUTINE | |
601 | ||
602 | P7TSF, TSFIOT /TEST IF OUTPUT READY /023 CJL | |
603 | ||
604 | *P7TLS /OVER CONSOLE OUTPUT ROUTINE | |
605 | ||
606 | P7TLS, TLSIOT /OUTPUT THE CHARACTER /023 CJL | |
607 | ||
608 | / INITIALIZATION PATCH. | |
609 | ||
610 | *COUTINIALIZE /OVER CONSOLE INITIALIZE | |
611 | ||
612 | COUTINI,TLSIOT /INITIALIZE CONSOLE OUTPUT FLAG /046 CJL | |
613 | \f/ CONNECT ROUTINE PATCHES. | |
614 | ||
615 | *KGTEST /OVER KEYBOARD TEST | |
616 | ||
617 | KGTEST, KSFIOT /SKIP ON KEYBOARD FLAG /047 CJL | |
618 | ||
619 | *KGREAD /OVER KEYBOARD READ | |
620 | ||
621 | KGREAD, KRBIOT /READ KEYBOARD BUFFER, CLEAR FLAG /047 CJL | |
622 | ||
623 | *CONTSF /OVER CONSOLE OUTPUT TEST | |
624 | ||
625 | CONTSF, TSFIOT /SKIP ON CONSOLE OUTPUT FLAG /047 CJL | |
626 | ||
627 | *CONTLS /OVER CONSOLE OUTPUT WRITE | |
628 | ||
629 | CONTLS, TLSIOT /OUTPUT TO CONSOLE /047 CJL | |
630 | ||
631 | *RINTEST /OVER REMOTE TEST | |
632 | ||
633 | RINTEST,RKSFIOT /SKIP ON REMOTE INPUT FLAG /047 CJL | |
634 | ||
635 | *RINREAD /OVER REMOTE READ | |
636 | ||
637 | RINREAD,RKRBIOT /READ REMOTE CHARACTER /047 CJL | |
638 | ||
639 | *REMTSF /OVER REMOTE OUTPUT TEST | |
640 | ||
641 | REMTSF, RTSFIOT /SKIP ON REMOTE OUTPUT FLAG /047 CJL | |
642 | ||
643 | *REMTLS /OVER REMOTE OUTPUT WRITE | |
644 | ||
645 | REMTLS, RTLSIOT /OUTPUT TO REMOTE /047 CJL | |
646 | ||
647 | / ADDITIONAL PATCHES. | |
648 | ||
649 | *OCTLZFLAG /OVER ASCII OUTPUT FILE <^Z> FLAG | |
650 | ||
651 | / ASCII FILE MODE <^Z> OUTPUT DISPOSITION FLAG. | |
652 | ||
653 | OCTLZFL,OCLOSE /ZERO=DON'T SEND <^Z> AT <EOF>, | |
654 | /NON-ZERO=SEND <^Z> AT <EOF> | |
655 | ||
656 | *ICTLZFLAG /OVER ASCII INPUT FILE <^Z> FLAG | |
657 | ||
658 | / ASCII FILE MODE <^Z> INPUT DISPOSITION FLAG. | |
659 | ||
660 | ICTLZFL,ICLOSE /ZERO=DON'T ENSURE <^Z> IN FILE, NON-ZERO=PACK <^Z> | |
661 | /IF LAST CHARACTER WASN'T <^Z> | |
662 | ||
663 | *ECHOFLAG /OVER ECHO FLAG | |
664 | ||
665 | ECHOFLA,INIECHO /0=DON'T ECHO, NON-ZERO=ECHO | |
666 | \f/ ONCE-ONLY TEXT MESSAGES. /024 CJL | |
667 | ||
668 | FIELD BUFFLD%10 /FILE I/O BUFFER FIELD | |
669 | ||
670 | *FILBUFFER /OVER FILE I/O BUFFER | |
671 | ||
672 | / LOCAL PREFERENCE MESSAGE. /024 CJL | |
673 | ||
674 | / USE SOMETHING APPROPRIATE HERE TO CUSTOMIZE KERMIT-12 TO YOUR MACHINE. | |
675 | ||
676 | / THIS LOCATION SHOULD BE MAINTAINED SINCE IT IS DOCUMENTED TO BE HERE. | |
677 | ||
678 | XLIST OFF | |
679 | IFZERO GENMSG < | |
680 | XLIST ON | |
681 | LCLMSG, *LCLMSG+40 /EMPTY HOLE FOR USER MESSAGE /039 CJL | |
682 | ||
683 | XLIST OFF > | |
684 | IFNZRO GENMSG < | |
685 | IFNZRO LEDERLE < | |
686 | XLIST ON | |
687 | LCLMSG, TEXT "%^T^HANKS TO: ^B^ILL ^S^MITH AND ^D^INGER ^M^ILLER%" | |
688 | ||
689 | XLIST OFF > | |
690 | IFNZRO UMSG < | |
691 | XLIST ON | |
692 | LCLMSG, TEXT "%^I^NSERT LOCAL USER MESSAGE HERE!%^" | |
693 | ||
694 | XLIST OFF > | |
695 | IFZERO LEDERLE!UMSG < | |
696 | XLIST ON | |
697 | LCLMSG, TEXT "^^^^^^^^^^^^^^^^^^^^^^"/DEFAULT IS NO MESSAGE | |
698 | ||
699 | XLIST OFF > | |
700 | IFNZRO LCLMSG+40-. < | |
701 | XLIST ON | |
702 | ZBLOCK LCLMSG+40-. /LEAVE PATCHING SPACE | |
703 | ||
704 | XLIST OFF > | |
705 | > | |
706 | XLIST ON | |
707 | \f *DAYMSG /OVER DAY OF THE MONTH MESSAGE | |
708 | ||
709 | DAYMSG, DAY%12^66+DAY+6060 /DAY MESSAGE | |
710 | ||
711 | *INMSG2 /OVER INITIAL MESSAGE | |
712 | ||
713 | INMSG2, VERSION%12^66+VERSION+6060 /VERSION DIGITS | |
714 | ||
715 | *INMSG3 /OVER INITIAL MESSAGE | |
716 | ||
717 | INMSG3, "^^100+REVISION /REVISION | |
718 | ||
719 | *MONMSG /OVER MONTH MESSAGE | |
720 | ||
721 | XLIST OFF | |
722 | IFZERO MONTH-1 < | |
723 | XLIST ON | |
724 | MONMSG, TEXT "^J^ANUARY ^" /MONTH MESSAGE | |
725 | XLIST OFF > | |
726 | IFZERO MONTH-2 < | |
727 | XLIST ON | |
728 | MONMSG, TEXT "^F^EBRUARY " /MONTH MESSAGE | |
729 | XLIST OFF > | |
730 | IFZERO MONTH-3 < | |
731 | XLIST ON | |
732 | MONMSG, TEXT "^M^ARCH ^" /MONTH MESSAGE | |
733 | XLIST OFF > | |
734 | IFZERO MONTH-4 < | |
735 | XLIST ON | |
736 | MONMSG, TEXT "^A^PRIL ^" /MONTH MESSAGE | |
737 | XLIST OFF > | |
738 | IFZERO MONTH-5 < | |
739 | XLIST ON | |
740 | MONMSG, TEXT "^M^AY ^" /MONTH MESSAGE | |
741 | XLIST OFF > | |
742 | IFZERO MONTH-6 < | |
743 | XLIST ON | |
744 | MONMSG, TEXT "^J^UNE " /MONTH MESSAGE | |
745 | XLIST OFF > | |
746 | IFZERO MONTH-7 < | |
747 | XLIST ON | |
748 | MONMSG, TEXT "^J^ULY " /MONTH MESSAGE | |
749 | XLIST OFF > | |
750 | IFZERO MONTH-10 < | |
751 | XLIST ON | |
752 | MONMSG, TEXT "^A^UGUST " /MONTH MESSAGE | |
753 | XLIST OFF > | |
754 | IFZERO MONTH-11 < | |
755 | XLIST ON | |
756 | MONMSG, TEXT "^S^EPTEMBER ^" /MONTH MESSAGE | |
757 | XLIST OFF > | |
758 | IFZERO MONTH-12 < | |
759 | XLIST ON | |
760 | MONMSG, TEXT "^O^CTOBER ^" /MONTH MESSAGE | |
761 | XLIST OFF > | |
762 | IFZERO MONTH-13 < | |
763 | XLIST ON | |
764 | MONMSG, TEXT "^N^OVEMBER " /MONTH MESSAGE | |
765 | XLIST OFF > | |
766 | IFZERO MONTH-14 < | |
767 | XLIST ON | |
768 | MONMSG, TEXT "^D^ECEMBER " /MONTH MESSAGE | |
769 | XLIST OFF > | |
770 | IFNZRO MONMSG+7-. < | |
771 | XLIST ON | |
772 | ||
773 | ZBLOCK MONMSG+7-. /EMPTY SPACE FOR ALIGNMENT | |
774 | ||
775 | XLIST OFF > | |
776 | XLIST ON | |
777 | ||
778 | *YEARMSG /OVER YEAR MESSAGE | |
779 | ||
780 | YEARMSG,TEXT "19" /YEAR MESSAGE | |
781 | YEAR%12^66+YEAR+6060 /YEAR DIGITS | |
782 | ||
783 | / END OF PATCH FILE. | |
784 | ||
785 | $ /THAT'S ALL FOLK! |