A large commit.
[pdp8.git] / sw / src / life / LIFE10.PA.1
1 / CONWAY'S GAME OF LIFE - BREED LIFE ON YOUR PDP8
2
3 /********************************************************************
4 /********************************************************************
5 /
6 / PAL-8 IMPLEMENTATION OF CONWAY'S GAME OF LIFE
7 /
8 / PHILIPP HACHTMANN, JULY 2010
9 /
10 / REVISIONS:
11 /
12 / 2010-07-24 - INITIAL RELEASE
13 /
14 /********************************************************************
15 /********************************************************************
16
17
18 /********************************************************************
19 /********************************************************************
20 /
21 / GAME CONFIGURATION PARAMETERS
22 / CHANGE ONLY IF YOU KNOW WHAT YOU'RE DOING!
23
24 / SIZE OF THE PLAYING FIELD
25 / =========================
26
27 / THE PLAYING FIELD HAS A MAXIMUM SIZE OF 32 ROWS BY 64 COLUMNS.
28 /
29 / THE DATA IS ORGANIZED AS FOLLOWS:
30 / EVERY CELL OCCUPIES ONE BIT. THE CELLS OF EACH ROW ARE STORED IN
31 / A CONTIGUOUS PIECE OF MEMORY. BUT ONLY THE LOWER 8 BITS OF A WORD
32 / ARE USED!
33 / THE WHOLE GAME BUFFER CONSISTS OF 32 ROWS OF 8 WORDS EACH. THIS
34 / LEADS TO A MEMORY FOOTPRINT OF 256 WORDS.
35 / THERE'S ONE RESTRICTION: THE LAST COLUMN IS NOT USABLE DUE TO
36 / BORDER DETECTION. THAT MEANS THAT THE MAXIMUM SIZE OF THE ACTUAL
37 / CELL ROW IS ONLY 63!!!
38 / THE FOLLOWIN PARAMETERS DEFINE THE DIMENSIONS OF THE ACTUAL
39 / SIZE OF THE CELL ARRAY. KEEP IN MIND THAT THIS WILL NOT CHANGE
40 / THE MEMORY FOOTPRINT!
41 PCOLS=76
42 PROWS=23
43
44 / CELL ADDRESS CODING:
45 /
46 / 0RR RRR CCC CCC <- AS USED THROUGHOUT THE PROGRAM
47 /
48 / WHERE
49 / R - ROW ADDRESS BIT
50 / C - COLUMN ADDRESS BIT
51
52 / COLUMN ADDRESS IS SPLIT INTO
53 /
54 / WWW BBB
55 / WHERE
56 / W - WORD ADDRESS
57 / B - BIT IN WORD ADDRESS
58 /
59 / A CELL ADDRESS CAN BE TRANSLATED INTO A MEMORY OFFSET BY SIMPLY
60 / SHIFTING THREE BITS TO THE RIGHT AND MASKING WITH 0377:
61 /
62 / 000 0RR RRR CCC
63 /
64 / HERE THE LOWER 3 COLUMN ADDRESS BITS WHICH SPECIFY THE BIT ADDRESS
65 / IN A WORD ARE DISCARDED.
66
67 / HAS THE FIELD LIMITS OR IS IT ENDLESS? (CURRENTLY UNSUPPORTED!)
68
69 / ENDLESS=1
70
71
72 / BORDER BEHAVIOUR FOR LIMITED FIELD
73 / 0 - OFF FIELD POSITIONS ARE ASSUMED TO BE ALWAYS DEAD
74 / 1 - OFF FIELD POSITIONS ARE ASSUMED TO BE ALWAYS ALIFE
75
76 BORDER=0
77
78 / CHARACTER CODES TO USE FOR CELL DISPLAY OUTPUT
79 / 55:-
80 / 52:*
81 / DEAD=55
82 DEAD=40
83 ALIVE=52
84
85
86 /********************************************************************
87 / HELP FOR PALBART - CAN BE OMITTED WITH REAL PAL-8
88
89 KCF=6030
90 SPF=6040
91
92 /********************************************************************
93 /********************************************************************
94 / ZERO PAGE STUFF
95
96 *0
97 INTR, 0 / INTERRUPT TARGET
98 JMP I XIHAND / JUMP TO INTERRUPT HANDLER
99 XIHAND, IHAND
100
101 *10
102 AUTO0, 0
103 AUTO1, 1
104
105 *100
106 / MAJOR POITERS
107 SPTR, DATA0 / POINTER TO SOURCE DATA (GET, COUNT)
108 TPTR, DATA1 / POINTER TO TARGET DATA (SET, RESET)
109 DPTR, DATA0 / POINTER TO DUMP DATA
110
111 / INTERRUPT BACKUPS
112 INTAC, 0 / INTERRUPT BACKUP AC
113 INTLNK, 0 / INTERRUPT BACKUP OF LINK
114
115 / TYPING THREAD DATA
116 SAVTLI, 0 / SAVED LINK FOR TYPING THREAD
117 SAVTAC, 0 / SAVED AC FOR TYPING THREAD
118 TAC, 0 / TEMPORARY AC, USED ON TYPING START
119 TTACT, 0 / TYPING THREAD ACTIVE FLAG
120
121 / KEYBOARD COMMANDS
122 CMKILL, 0
123 CMDUMP, 0
124
125 /********************************************************************
126 / ZERO PAGE CONSTANTS
127
128 K7, 7
129 K10, 10
130 K77, 77
131 K200, 200
132 K377, 377
133 K7700, 7700
134
135 KROWS, PROWS
136 KCOLS, PCOLS
137
138 KDEAD, DEAD
139 KALIVE, ALIVE
140
141 KNMCO, 1-PCOLS / NEGATIVE OF LAST COLUMN ADDRESS
142 KNMROW, 1-PROWS / NEGATIVE OF LAST ROW ADDRESS
143 KBORD, BORDER
144
145 KCOLM1, -1
146 KCOLP1, 1
147 KROWM1, -100
148 KROWP1, 100
149
150 /********************************************************************
151 / ZERO PAGE POINTERS AND SHORTCUTS
152
153 XDUMPS, DUMPS / START DATA DUMP
154 XDUMPT, DUMPT / START DATA DUMP
155 XDUMP, DUMP
156 XCALC, CALC
157 XTYPE, TYPE
158 XGET, GET / GET A CELL STATE
159 XSET, SET / SET A CELL TO LIVING
160 XCLEAR, CLEAR / SET A CELL TO DEAD
161 XTSTRT, TSTART
162 XTSTOP, TSTOP
163 XEXIT, EXIT
164 XCOUNT, COUNT
165 /********************************************************************
166 /********************************************************************
167 / MAIN PROGRAM
168 *200
169 CLA CLL
170 DCA TTACT
171 TCF
172 ION / WELCOME TO HELL!
173
174 MLOOP, / MAIN EVENT LOOP
175 JMS I XDUMP / START A DUMP, PLEASE
176 JMS I XCALC / CALCULATE NEW DATA
177 CLA CLL
178 TAD TTACT
179 SZA
180 JMP .-2
181 CLA CLL
182 TAD TPTR
183 DCA DPTR
184 TAD SPTR
185 DCA TPTR
186 TAD DPTR
187 DCA SPTR
188 JMP MLOOP
189
190
191 /********************************************************************
192 / INTERRUPT HANDLER
193
194 PAGE
195
196 IHAND, DCA INTAC / SAVE AC AND LINK
197 RAR
198 DCA INTLNK
199
200 KSF
201 SKP
202 JMP TTIHAN / TELETYPE INPUT
203 TSF
204 SKP
205 JMP TTOHAN / TELETYPE OUTPUT
206
207 HLT / OH, AN UNKNOWN INTERRUPT!
208
209 / RESTORE AC AND LINK AND GO BACK TO WORK
210
211 IEND, CLA CLL
212 TAD INTLNK
213 RAL
214 TAD INTAC
215 ION
216 JMP I INTR / BACK TO NORMAL OPERATION
217
218 /********************************************************************
219 / TELETYPE INPUT HANDLER
220
221 TTIHAN,
222 KRB / READ AND CLEAR FLAG
223 AND K177 / MASK TO 7 BITS - I HATE PARITY!
224 DCA KBCHAR / SAVE FOR USE
225
226 TAD KBCHAR
227 TAD CKDMPS
228 SNA
229 JMS I XDUMPS / SOURCE DUMP (DEBUG)
230
231 CLA CLL
232 TAD KBCHAR
233 TAD CKDMPT
234 SNA
235 JMS I XDUMPT / TARGET DUMP (DEBUG)
236
237 CLA CLL
238 TAD KBCHAR
239 TAD CKDUMP
240 SNA
241 JMS I XDUMP / NORMAL DUMP
242
243 CLA CLL
244 TAD KBCHAR
245 TAD CKKILL
246 SNA
247 JMP I XEXIT
248
249 CLA CLL
250 TAD KBCHAR
251 TAD CKHALT
252 SNA
253 HLT
254
255 JMP IEND
256
257 K177, 177
258 KBCHAR, 0
259
260 / COMMAND KEYS
261
262 CKDUMP, -104 / D
263 CKDMPS, -123 / S
264 CKDMPT, -124 / T
265
266 CKKILL, -3 / CTRL-C
267 CKHALT, -10 / CTRL-H
268
269 /********************************************************************
270 / TELETYPE OUTPUT HANDLER AND MANAGEMENT
271
272 TTOHAN,
273 TCF / CLEAR FLAG
274 TAD TTACT / ACTIVITY GOING ON?
275 SZA
276 JMP TRESUM / JUMP INTO ONGOING ACTIVITY
277 HLT / DEBUG HALT - THIS SHOULD NEVER BE HIT!
278 JMP IEND / DO NOTHING, SAY GOODBYE.
279
280 TSTART, 0 / SCHEDULE TYPING TO BE DONE. NEW "PROCESS"
281 / STARTS ONE WORD AFTER THIS CALL'S REGULAR
282 / RETURN.
283 DCA TAC / SAVE AC FOR NOW
284
285 / TSWAIT, CLA CLL
286 / TAD TTACT
287 / SZA
288 / JMP TSWAIT / WAIT UNTIL TYPING SYSTEM IS IDLE!
289
290 CLA CLL
291 TAD TTACT
292 SZA
293 JMP I TSTART / RETURN, WE'RE BUSY!
294
295 ISZ TTACT / NOW IT IS ACTIVE (AGAIN?)
296 TAD TAC / GET BACK THE TEMPORARY AC
297 DCA SAVTAC / SAVE FOR NEW THREAD
298 RAR
299 DCA SAVTLI / SAME FOR LINK
300 TAD TSTART / POINTER TO MAIN THREAD RETURN CALL
301 IAC / NOW POINTER TO FIRST EXTRA THREAD LOCATION
302 DCA TYPE / INSTALL AS WAKEUP ADDRESS
303 SPF / WE WILL BE INTERRUPTED RIGHT NOW!
304 JMP I TSTART / RETURN TO CALLER
305
306 TYPE, 0 / TYPE CHARACTER
307 TLS / GET IT OUT!
308 DCA SAVTAC / SAVE AC, JUST POLITE
309 RAR
310 DCA SAVTLI / SAVE LINK, STILL POLITE
311 JMP IEND / END OF INTERRUPT HANDLING
312 TRESUM, TAD SAVTLI
313 RAL
314 TAD SAVTAC
315 JMP I TYPE / WAKE UP INTERRUPTED PROCESS
316
317 TSTOP, CLA / JUMP HERE TO KILL TYPING THREAD
318 DCA TTACT / CLEAR ACTIVITY FLAG
319 TCF / CLEAR TELEPRINTER FLAG
320 JMP IEND / END OF INTERRUPT HANDLING
321
322 /********************************************************************
323 / THE CALCULATION
324 PAGE
325 CCADDR, 0 / CURRENT CELL ADDRESS
326 CROW, 0
327 CCOL, 0
328 NBORS, 0
329
330 CALC, 0
331 CLA CLL
332 DCA CCADDR
333
334 TAD KROWS
335 CIA
336 DCA CROW
337
338 CRLOOP, CLA CLL
339 TAD KCOLS
340 CIA
341 DCA CCOL
342
343 CCLOOP,
344 / NOW, DO IT, PLEASE!
345 TAD CCADDR
346 JMS I XCOUNT
347 DCA NBORS
348
349 TAD CCADDR
350 JMS I XGET
351 SNA
352 JMP ISDEAD
353
354 ISALIV, CLA CLL
355 TAD NBORS
356 TAD KN4
357 SMA
358 JMP DIE
359
360 CLA CLL
361 TAD NBORS
362 TAD KN2
363 SMA
364 JMP LIVE
365 JMP DIE
366
367 ISDEAD, TAD NBORS
368 TAD KN3
369 SZA
370 JMP DIE
371 JMP LIVE
372
373 LIVE, CLA CLL
374 TAD CCADDR
375 JMS I XSET / NOW, IT'S ALIVE!
376 JMP CDONE
377 DIE, CLA CLL
378 TAD CCADDR
379 JMS I XCLEAR
380 CDONE, CLA CLL
381
382 ISZ CCADDR
383 ISZ CCOL
384 JMP CCLOOP
385
386 TAD CCADDR
387 TAD K100
388 AND K7700
389 ISZ CROW
390 JMP CRLOOP
391
392 JMP I CALC
393 KN2, -2
394 KN3, -3
395 KN4, -4
396 K100, 100
397
398 /********************************************************************
399 / DATA DUMPING
400 PAGE
401 NLINE=JMS CRLF
402 HOME=JMS HOM
403
404 DBASE, 0
405 DDPTR, 0
406 DOFF, 0
407
408 DUMPS, 0
409 JMS I XTSTRT
410 JMP I DUMPS
411 CLA
412 TAD SPTR
413 DCA DBASE
414 JMP DMPINT
415
416 DUMPT, 0
417 JMS I XTSTRT
418 JMP I DUMPT
419 CLA
420 TAD TPTR
421 DCA DBASE
422 JMP DMPINT
423
424 DUMP, 0
425 JMS I XTSTRT
426 JMP I DUMP
427 CLA
428 TAD DPTR
429 DCA DBASE
430
431 DMPINT, DCA DOFF
432
433 TAD KROWS
434 CIA
435 DCA ROWCNT
436
437 // NLINE;NLINE
438 HOME
439
440 / START OF ROW
441 RLOOP, CLA CLL
442 TAD KCOLS
443 CIA
444 DCA COLCNT
445 TAD K200
446 DCA DMSK
447
448 TAD DBASE / BUFFER BASE ADDRESS
449 TAD DOFF / CURRENT WORD OFFSET
450 DCA DDPTR / TO INTERNAL POINTER
451
452 / START OF COLUMN
453 CLOOP, TAD DMSK / BIT MASK, DYNAMIC
454 AND I DDPTR / COMBINE CURRENT WORD
455 SZA
456 JMP ONE
457 ZERO, TAD KDEAD
458 JMP TT
459 ONE, CLA
460 TAD KALIVE
461 TT, JMS I XTYPE
462
463 CLA CLL
464 TAD DMSK
465 RAR
466 SZA
467 JMP MASKOK
468 TAD K200
469 ISZ DDPTR
470 MASKOK, DCA DMSK
471
472 ISZ COLCNT
473 JMP CLOOP
474
475 NLINE
476
477 CLA CLL
478 TAD DOFF
479 TAD K10
480 DCA DOFF
481
482 ISZ ROWCNT
483 JMP RLOOP
484
485 JMP I XTSTOP / STOP INTERRUPT MADNESS.
486
487 HOM, 0
488 CLA CLL
489 TAD K035
490 JMS I XTYPE
491 CLA CLL
492 JMS I XTYPE / FILLER CHARACTERS!
493 JMS I XTYPE
494 JMS I XTYPE
495 JMS I XTYPE
496 JMP I HOM
497
498 CRLF, 0
499 CLA CLL
500 TAD CR
501 JMS I XTYPE
502 CLA CLL
503 TAD LF
504 JMS I XTYPE
505 JMP I CRLF
506
507 DMSK, 0
508 K035, 35
509 CR, 215
510 LF, 212
511
512 ROWCNT, 0
513 COLCNT, 0
514
515 /********************************************************************
516 / NEIGHBORHOOD COUNTING
517 / (ADDRESS IN AC)
518 PAGE
519 POS, 0
520
521 COUNT, 0
522 DCA POS
523 DCA CNT
524
525 TAD POS
526 TAD KCOLM1 / STEP LEFT
527 TAD KROWM1 / STEP UP
528 JMS ACCNT
529
530 TAD KCOLP1
531 JMS ACCNT
532
533 TAD KCOLP1
534 JMS ACCNT
535
536 TAD KROWP1
537 JMS ACCNT
538
539 TAD KROWP1
540 JMS ACCNT
541
542 TAD KCOLM1
543 JMS ACCNT
544
545 TAD KCOLM1
546 JMS ACCNT
547
548 TAD KROWM1
549 JMS ACCNT
550
551 CLA CLL
552 TAD CNT
553 JMP I COUNT
554
555 ACCNT, 0
556 DCA POS
557 TAD POS
558 JMS I XGET
559 SZA
560 ISZ CNT
561 CLA CLL
562 TAD POS
563 JMP I ACCNT
564
565 CNT, 0 / COUNTER VARIABLE
566
567
568 /********************************************************************
569 / DATA HOLDING AND ACCESS
570
571 PAGE / START ON NEW PAGE
572
573 / INTERNAL DATA
574
575 CADR, 0 / CURRENT CELL ADDRESS
576 MASK, 0 / BIT MASK TO CURRENT CELL BIT
577 APTR, 0 / ACCESS POINTER TO CURRENT CELL WORD
578
579 / GET A BIT OF DATA
580 GET, 0 / GET POSITION'S VALUE
581 JMS ASETUP / CHECK LIMITS, STORE ADDRESS ETC.
582 JMP I GET / ERROR RETURN, RETURN WITH LIMIT VALUE IN AC
583 TAD APTR
584 TAD SPTR / ADD SOURCE DATA BASE
585 DCA APTR
586 TAD I APTR / LOAD DATA
587 AND MASK / MASK OUT DESIRED BIT
588 SZA
589 CLA CLL IAC / MAKE A ONE OUT OF AC CONTENTS
590 JMP I GET / RETURN
591
592 SET, 0 / SET POSITION'S VALUE TO 1
593 JMS ASETUP / CHECK LIMITS, STORE ADDRESS ETC.
594 JMP I SET / ERROR RETURN, RETURN WITH LIMIT VALUE IN AC
595 TAD APTR
596 TAD TPTR / ADD SOURCE DATA BASE
597 DCA APTR
598 TAD MASK / GET MASK
599 CMA / INVERT
600 AND I APTR / COMBINE WITH DATA
601 TAD MASK / SET BIT
602 DCA I APTR / UPDATE DATA
603 JMP I SET / RETURN
604
605 CLEAR, 0 / CLEAR POSITION'S VALUE TO 0
606 JMS ASETUP / CHECK LIMITS, STORE ADDRESS ETC.
607 JMP I CLEAR / ERROR RETURN, RETURN WITH LIMIT VALUE IN AC
608 TAD APTR
609 TAD TPTR / ADD SOURCE DATA BASE
610 DCA APTR
611 TAD MASK / GET MASK
612 CMA / INVERT
613 AND I APTR / COMBINE WITH DATA
614 DCA I APTR / UPDATE DATA
615 JMP I CLEAR / RETURN
616
617 ASETUP, 0
618 DCA CADR / SAVE ADDRESS FOR LATER USE
619
620 / LIMIT CHECK
621 TAD CADR
622 BSW / NOW ROW ADDRESS IN LOWER BITS
623 AND K77 / MASK OUT UPPER BITS
624 TAD KNMROW
625 SPA
626 JMP LGD1 / ONE LIMIT GOOD
627 CLA
628 TAD KBORD / BORDER STANDARD RETURN VALUE
629 JMP I ASETUP / ERROR RETURN
630 LGD1, CLA CLL
631 TAD CADR
632 AND K77
633 TAD KNMCO
634 SPA
635 JMP LGD2
636 CLA CLL
637 TAD KBORD
638 JMP I ASETUP / ERROR RETURN
639 LGD2, CLA CLL
640
641 / SETUP POINTER AND MASK
642 TAD CADR
643 RTR
644 RAR
645 AND K377
646 DCA APTR / ACCESS POINTER
647 TAD CADR
648 AND K7
649 TAD MASKSP
650 DCA MPTR
651 TAD I MPTR
652 DCA MASK
653
654 ISZ ASETUP / PREPARE GOOD RETURN
655 JMP I ASETUP / GOOD RETURN
656
657
658
659 MPTR, 0
660 MASKSP, MASKS
661 MASKS, 200
662 100
663 040
664 020
665 010
666 004
667 002
668 001
669
670
671
672 /********************************************************************
673 /********************************************************************
674 PAGE
675 DATA0,
676 0000;0000;0000;0000;0000;0000;0000;0000
677 0000;0000;0000;0000;0000;0000;0000;0000
678 0000;0000;0000;0000;0000;0000;0000;0000
679 0000;0000;0000;0000;0000;0000;0000;0000
680 0000;0000;0000;0000;0000;0000;0000;0000
681 0000;0000;0000;0000;0000;0000;0000;0000
682 0000;0000;0000;0000;0000;0000;0000;0000
683 0000;0000;0000;0000;0000;0000;0000;0000
684 0000;0000;0000;0000;0000;0000;0000;0000
685 0000;0000;0000;0000;0000;0000;0000;0000
686 0000;0000;0000;0000;0000;0000;0000;0000
687 0000;0000;0000;0007;0000;0000;0000;0000
688 0000;0000;0000;0005;0000;0000;0000;0000
689 0000;0000;0000;0005;0000;0000;0000;0000
690 0000;0000;0000;0000;0000;0000;0000;0000
691 0000;0000;0000;0005;0000;0000;0000;0000
692 0000;0000;0000;0005;0000;0000;0000;0000
693 0000;0000;0000;0007;0000;0000;0000;0000
694 0000;0000;0000;0000;0000;0000;0000;0000
695 0000;0000;0000;0000;0000;0000;0000;0000
696 0000;0000;0000;0000;0000;0000;0000;0000
697 0000;0000;0000;0000;0000;0000;0000;0000
698 0000;0000;0000;0000;0000;0000;0000;0000
699 0000;0000;0000;0000;0000;0000;0000;0000
700 0000;0000;0000;0000;0000;0000;0000;0000
701 0000;0000;0000;0000;0000;0000;0000;0000
702 0000;0000;0000;0000;0000;0000;0000;0000
703 0000;0000;0000;0000;0000;0000;0000;0000
704 0000;0000;0000;0000;0000;0000;0000;0000
705 0000;0000;0000;0000;0000;0000;0000;0000
706 0000;0000;0000;0000;0000;0000;0000;0000
707 0000;0000;0000;0000;0000;0000;0000;0000
708
709 PAGE
710 DATA1,
711 0000;0000;0000;0000;0000;0000;0000;0000
712 0000;0000;0000;0000;0000;0000;0000;0000
713 0000;0000;0000;0000;0000;0000;0000;0000
714 0000;0000;0000;0000;0000;0000;0000;0000
715 0000;0000;0000;0000;0000;0000;0000;0000
716 0000;0000;0000;0000;0000;0000;0000;0000
717 0000;0000;0000;0000;0000;0000;0000;0000
718 0000;0000;0000;0000;0000;0000;0000;0000
719 0000;0000;0000;0000;0000;0000;0000;0000
720 0000;0000;0000;0000;0000;0000;0000;0000
721 0000;0000;0000;0000;0000;0000;0000;0000
722 0000;0000;0000;0000;0000;0000;0000;0000
723 0000;0000;0000;0000;0000;0000;0000;0000
724 0000;0000;0000;0000;0000;0000;0000;0000
725 0000;0000;0000;0000;0000;0000;0000;0000
726 0000;0000;0000;0000;0000;0000;0000;0000
727 0000;0000;0000;0000;0000;0000;0000;0000
728 0000;0000;0000;0000;0000;0000;0000;0000
729 0000;0000;0000;0000;0000;0000;0000;0000
730 0000;0000;0000;0000;0000;0000;0000;0000
731 0000;0000;0000;0000;0000;0000;0000;0000
732 0000;0000;0000;0000;0000;0000;0000;0000
733 0000;0000;0000;0000;0000;0000;0000;0000
734 0000;0000;0000;0000;0000;0000;0000;0000
735 0000;0000;0000;0000;0000;0000;0000;0000
736 0000;0000;0000;0000;0000;0000;0000;0000
737 0000;0000;0000;0000;0000;0000;0000;0000
738 0000;0000;0000;0000;0000;0000;0000;0000
739 0000;0000;0000;0000;0000;0000;0000;0000
740 0000;0000;0000;0000;0000;0000;0000;0000
741 0000;0000;0000;0000;0000;0000;0000;0000
742 0000;0000;0000;0000;0000;0000;0000;0000
743
744 /********************************************************************
745 / PROGRAM TERMINATION - IGNORED BY OS/8!
746 *7600
747 EXIT, CLA CLL
748 IOF
749 HLT
750 JMP I XSTA
751 XSTA, 200
752
753 /********************************************************************
754 / THIS IS IT, FOLKS!
755 /********************************************************************
756 /********************************************************************
757 $
758
759