Commit | Line | Data |
---|---|---|
81e70d48 PH |
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 | PROWS=37 | |
42 | PCOLS=77 | |
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 | EXIT, CLA CLL | |
191 | IOF | |
192 | TAD ADR1 | |
193 | JMS I XCOUNT | |
194 | HLT | |
195 | ||
196 | JMP 200 | |
197 | ||
198 | ADR1, 0202 | |
199 | /******************************************************************** | |
200 | / INTERRUPT HANDLER | |
201 | ||
202 | PAGE | |
203 | ||
204 | IHAND, DCA INTAC / SAVE AC AND LINK | |
205 | RAR | |
206 | DCA INTLNK | |
207 | ||
208 | KSF | |
209 | SKP | |
210 | JMP TTIHAN / TELETYPE INPUT | |
211 | TSF | |
212 | SKP | |
213 | JMP TTOHAN / TELETYPE OUTPUT | |
214 | ||
215 | HLT / OH, AN UNKNOWN INTERRUPT! | |
216 | ||
217 | / RESTORE AC AND LINK AND GO BACK TO WORK | |
218 | ||
219 | IEND, CLA CLL | |
220 | TAD INTLNK | |
221 | RAL | |
222 | TAD INTAC | |
223 | ION | |
224 | JMP I INTR / BACK TO NORMAL OPERATION | |
225 | ||
226 | /******************************************************************** | |
227 | / TELETYPE INPUT HANDLER | |
228 | ||
229 | TTIHAN, | |
230 | KRB / READ AND CLEAR FLAG | |
231 | AND K177 / MASK TO 7 BITS - I HATE PARITY! | |
232 | DCA KBCHAR / SAVE FOR USE | |
233 | ||
234 | TAD KBCHAR | |
235 | TAD CKDMPS | |
236 | SNA | |
237 | JMS I XDUMPS / SOURCE DUMP (DEBUG) | |
238 | ||
239 | CLA CLL | |
240 | TAD KBCHAR | |
241 | TAD CKDMPT | |
242 | SNA | |
243 | JMS I XDUMPT / TARGET DUMP (DEBUG) | |
244 | ||
245 | CLA CLL | |
246 | TAD KBCHAR | |
247 | TAD CKDUMP | |
248 | SNA | |
249 | JMS I XDUMP / NORMAL DUMP | |
250 | ||
251 | CLA CLL | |
252 | TAD KBCHAR | |
253 | TAD CKKILL | |
254 | SNA | |
255 | JMP I XEXIT | |
256 | ||
257 | CLA CLL | |
258 | TAD KBCHAR | |
259 | TAD CKHALT | |
260 | SNA | |
261 | HLT | |
262 | ||
263 | JMP IEND | |
264 | ||
265 | K177, 177 | |
266 | KBCHAR, 0 | |
267 | ||
268 | / COMMAND KEYS | |
269 | ||
270 | CKDUMP, -104 / D | |
271 | CKDMPS, -123 / S | |
272 | CKDMPT, -124 / T | |
273 | ||
274 | CKKILL, -3 / CTRL-C | |
275 | CKHALT, -10 / CTRL-H | |
276 | ||
277 | /******************************************************************** | |
278 | / TELETYPE OUTPUT HANDLER AND MANAGEMENT | |
279 | ||
280 | TTOHAN, | |
281 | TCF / CLEAR FLAG | |
282 | TAD TTACT / ACTIVITY GOING ON? | |
283 | SZA | |
284 | JMP TRESUM / JUMP INTO ONGOING ACTIVITY | |
285 | HLT / DEBUG HALT - THIS SHOULD NEVER BE HIT! | |
286 | JMP IEND / DO NOTHING, SAY GOODBYE. | |
287 | ||
288 | TSTART, 0 / SCHEDULE TYPING TO BE DONE. NEW "PROCESS" | |
289 | / STARTS ONE WORD AFTER THIS CALL'S REGULAR | |
290 | / RETURN. | |
291 | DCA TAC / SAVE AC FOR NOW | |
292 | ||
293 | / TSWAIT, CLA CLL | |
294 | / TAD TTACT | |
295 | / SZA | |
296 | / JMP TSWAIT / WAIT UNTIL TYPING SYSTEM IS IDLE! | |
297 | ||
298 | CLA CLL | |
299 | TAD TTACT | |
300 | SZA | |
301 | JMP I TSTART / RETURN, WE'RE BUSY! | |
302 | ||
303 | ISZ TTACT / NOW IT IS ACTIVE (AGAIN?) | |
304 | TAD TAC / GET BACK THE TEMPORARY AC | |
305 | DCA SAVTAC / SAVE FOR NEW THREAD | |
306 | RAR | |
307 | DCA SAVTLI / SAME FOR LINK | |
308 | TAD TSTART / POINTER TO MAIN THREAD RETURN CALL | |
309 | IAC / NOW POINTER TO FIRST EXTRA THREAD LOCATION | |
310 | DCA TYPE / INSTALL AS WAKEUP ADDRESS | |
311 | SPF / WE WILL BE INTERRUPTED RIGHT NOW! | |
312 | JMP I TSTART / RETURN TO CALLER | |
313 | ||
314 | TYPE, 0 / TYPE CHARACTER | |
315 | TLS / GET IT OUT! | |
316 | DCA SAVTAC / SAVE AC, JUST POLITE | |
317 | RAR | |
318 | DCA SAVTLI / SAVE LINK, STILL POLITE | |
319 | JMP IEND / END OF INTERRUPT HANDLING | |
320 | TRESUM, TAD SAVTLI | |
321 | RAL | |
322 | TAD SAVTAC | |
323 | JMP I TYPE / WAKE UP INTERRUPTED PROCESS | |
324 | ||
325 | TSTOP, CLA / JUMP HERE TO KILL TYPING THREAD | |
326 | DCA TTACT / CLEAR ACTIVITY FLAG | |
327 | TCF / CLEAR TELEPRINTER FLAG | |
328 | JMP IEND / END OF INTERRUPT HANDLING | |
329 | ||
330 | /******************************************************************** | |
331 | / THE CALCULATION | |
332 | PAGE | |
333 | CCADDR, 0 / CURRENT CELL ADDRESS | |
334 | CROW, 0 | |
335 | CCOL, 0 | |
336 | NBORS, 0 | |
337 | ||
338 | CALC, 0 | |
339 | CLA CLL | |
340 | DCA CCADDR | |
341 | ||
342 | TAD KROWS | |
343 | CIA | |
344 | DCA CROW | |
345 | ||
346 | CRLOOP, CLA CLL | |
347 | TAD KCOLS | |
348 | CIA | |
349 | DCA CCOL | |
350 | ||
351 | CCLOOP, | |
352 | / NOW, DO IT, PLEASE! | |
353 | TAD CCADDR | |
354 | JMS I XCOUNT | |
355 | DCA NBORS | |
356 | ||
357 | TAD CCADDR | |
358 | JMS I XGET | |
359 | SNA | |
360 | JMP ISDEAD | |
361 | ||
362 | ISALIV, CLA CLL | |
363 | TAD NBORS | |
364 | TAD KN4 | |
365 | SMA | |
366 | JMP DIE | |
367 | ||
368 | CLA CLL | |
369 | TAD NBORS | |
370 | TAD KN2 | |
371 | SMA | |
372 | JMP LIVE | |
373 | JMP DIE | |
374 | ||
375 | ISDEAD, TAD NBORS | |
376 | TAD KN3 | |
377 | SZA | |
378 | JMP DIE | |
379 | JMP LIVE | |
380 | ||
381 | LIVE, CLA CLL | |
382 | TAD CCADDR | |
383 | JMS I XSET / NOW, IT'S ALIVE! | |
384 | JMP CDONE | |
385 | DIE, CLA CLL | |
386 | TAD CCADDR | |
387 | JMS I XCLEAR | |
388 | CDONE, CLA CLL | |
389 | ||
390 | ISZ CCADDR | |
391 | ISZ CCOL | |
392 | JMP CCLOOP | |
393 | ||
394 | TAD CCADDR | |
395 | TAD K100 | |
396 | AND K7700 | |
397 | ISZ CROW | |
398 | JMP CRLOOP | |
399 | ||
400 | JMP I CALC | |
401 | KN2, -2 | |
402 | KN3, -3 | |
403 | KN4, -4 | |
404 | K100, 100 | |
405 | ||
406 | /******************************************************************** | |
407 | / DATA DUMPING | |
408 | PAGE | |
409 | NLINE=JMS CRLF | |
410 | ||
411 | DBASE, 0 | |
412 | DDPTR, 0 | |
413 | DOFF, 0 | |
414 | ||
415 | DUMPS, 0 | |
416 | JMS I XTSTRT | |
417 | JMP I DUMPS | |
418 | CLA | |
419 | TAD SPTR | |
420 | DCA DBASE | |
421 | JMP DMPINT | |
422 | ||
423 | DUMPT, 0 | |
424 | JMS I XTSTRT | |
425 | JMP I DUMPT | |
426 | CLA | |
427 | TAD TPTR | |
428 | DCA DBASE | |
429 | JMP DMPINT | |
430 | ||
431 | DUMP, 0 | |
432 | JMS I XTSTRT | |
433 | JMP I DUMP | |
434 | CLA | |
435 | TAD DPTR | |
436 | DCA DBASE | |
437 | ||
438 | DMPINT, DCA DOFF | |
439 | ||
440 | TAD KROWS | |
441 | CIA | |
442 | DCA ROWCNT | |
443 | ||
444 | NLINE;NLINE | |
445 | ||
446 | / START OF ROW | |
447 | RLOOP, CLA CLL | |
448 | TAD KCOLS | |
449 | CIA | |
450 | DCA COLCNT | |
451 | TAD K200 | |
452 | DCA DMSK | |
453 | ||
454 | TAD DBASE / BUFFER BASE ADDRESS | |
455 | TAD DOFF / CURRENT WORD OFFSET | |
456 | DCA DDPTR / TO INTERNAL POINTER | |
457 | ||
458 | / START OF COLUMN | |
459 | CLOOP, TAD DMSK / BIT MASK, DYNAMIC | |
460 | AND I DDPTR / COMBINE CURRENT WORD | |
461 | SZA | |
462 | JMP ONE | |
463 | ZERO, TAD KDEAD | |
464 | JMP TT | |
465 | ONE, CLA | |
466 | TAD KALIVE | |
467 | TT, JMS I XTYPE | |
468 | ||
469 | CLA CLL | |
470 | TAD DMSK | |
471 | RAR | |
472 | SZA | |
473 | JMP MASKOK | |
474 | TAD K200 | |
475 | ISZ DDPTR | |
476 | MASKOK, DCA DMSK | |
477 | ||
478 | ISZ COLCNT | |
479 | JMP CLOOP | |
480 | ||
481 | NLINE | |
482 | ||
483 | CLA CLL | |
484 | TAD DOFF | |
485 | TAD K10 | |
486 | DCA DOFF | |
487 | ||
488 | ISZ ROWCNT | |
489 | JMP RLOOP | |
490 | ||
491 | JMP I XTSTOP / STOP INTERRUPT MADNESS. | |
492 | ||
493 | CRLF, 0 | |
494 | CLA CLL | |
495 | TAD CR | |
496 | JMS I XTYPE | |
497 | CLA CLL | |
498 | TAD LF | |
499 | JMS I XTYPE | |
500 | JMP I CRLF | |
501 | ||
502 | DMSK, 0 | |
503 | CR, 215 | |
504 | LF, 212 | |
505 | ||
506 | ROWCNT, 0 | |
507 | COLCNT, 0 | |
508 | ||
509 | /******************************************************************** | |
510 | / NEIGHBORHOOD COUNTING | |
511 | / (ADDRESS IN AC) | |
512 | PAGE | |
513 | POS, 0 | |
514 | ||
515 | COUNT, 0 | |
516 | DCA POS | |
517 | DCA CNT | |
518 | ||
519 | TAD POS | |
520 | TAD KCOLM1 / STEP LEFT | |
521 | TAD KROWM1 / STEP UP | |
522 | JMS ACCNT | |
523 | ||
524 | TAD KCOLP1 | |
525 | JMS ACCNT | |
526 | ||
527 | TAD KCOLP1 | |
528 | JMS ACCNT | |
529 | ||
530 | TAD KROWP1 | |
531 | JMS ACCNT | |
532 | ||
533 | TAD KROWP1 | |
534 | JMS ACCNT | |
535 | ||
536 | TAD KCOLM1 | |
537 | JMS ACCNT | |
538 | ||
539 | TAD KCOLM1 | |
540 | JMS ACCNT | |
541 | ||
542 | TAD KROWM1 | |
543 | JMS ACCNT | |
544 | ||
545 | CLA CLL | |
546 | TAD CNT | |
547 | JMP I COUNT | |
548 | ||
549 | ACCNT, 0 | |
550 | DCA POS | |
551 | TAD POS | |
552 | JMS I XGET | |
553 | SZA | |
554 | ISZ CNT | |
555 | CLA CLL | |
556 | TAD POS | |
557 | JMP I ACCNT | |
558 | ||
559 | CNT, 0 / COUNTER VARIABLE | |
560 | ||
561 | ||
562 | /******************************************************************** | |
563 | / DATA HOLDING AND ACCESS | |
564 | ||
565 | PAGE / START ON NEW PAGE | |
566 | ||
567 | / INTERNAL DATA | |
568 | ||
569 | CADR, 0 / CURRENT CELL ADDRESS | |
570 | MASK, 0 / BIT MASK TO CURRENT CELL BIT | |
571 | APTR, 0 / ACCESS POINTER TO CURRENT CELL WORD | |
572 | ||
573 | / GET A BIT OF DATA | |
574 | GET, 0 / GET POSITION'S VALUE | |
575 | JMS ASETUP / CHECK LIMITS, STORE ADDRESS ETC. | |
576 | JMP I GET / ERROR RETURN, RETURN WITH LIMIT VALUE IN AC | |
577 | TAD APTR | |
578 | TAD SPTR / ADD SOURCE DATA BASE | |
579 | DCA APTR | |
580 | TAD I APTR / LOAD DATA | |
581 | AND MASK / MASK OUT DESIRED BIT | |
582 | SZA | |
583 | CLA CLL IAC / MAKE A ONE OUT OF AC CONTENTS | |
584 | JMP I GET / RETURN | |
585 | ||
586 | SET, 0 / SET POSITION'S VALUE TO 1 | |
587 | JMS ASETUP / CHECK LIMITS, STORE ADDRESS ETC. | |
588 | JMP I SET / ERROR RETURN, RETURN WITH LIMIT VALUE IN AC | |
589 | TAD APTR | |
590 | TAD TPTR / ADD SOURCE DATA BASE | |
591 | DCA APTR | |
592 | TAD MASK / GET MASK | |
593 | CMA / INVERT | |
594 | AND I APTR / COMBINE WITH DATA | |
595 | TAD MASK / SET BIT | |
596 | DCA I APTR / UPDATE DATA | |
597 | JMP I SET / RETURN | |
598 | ||
599 | CLEAR, 0 / CLEAR POSITION'S VALUE TO 0 | |
600 | JMS ASETUP / CHECK LIMITS, STORE ADDRESS ETC. | |
601 | JMP I CLEAR / ERROR RETURN, RETURN WITH LIMIT VALUE IN AC | |
602 | TAD APTR | |
603 | TAD TPTR / ADD SOURCE DATA BASE | |
604 | DCA APTR | |
605 | TAD MASK / GET MASK | |
606 | CMA / INVERT | |
607 | AND I APTR / COMBINE WITH DATA | |
608 | DCA I APTR / UPDATE DATA | |
609 | JMP I CLEAR / RETURN | |
610 | ||
611 | ASETUP, 0 | |
612 | DCA CADR / SAVE ADDRESS FOR LATER USE | |
613 | ||
614 | / LIMIT CHECK | |
615 | TAD CADR | |
616 | BSW / NOW ROW ADDRESS IN LOWER BITS | |
617 | AND K77 / MASK OUT UPPER BITS | |
618 | TAD KNMROW | |
619 | SPA | |
620 | JMP LGD1 / ONE LIMIT GOOD | |
621 | CLA | |
622 | TAD KBORD / BORDER STANDARD RETURN VALUE | |
623 | JMP I ASETUP / ERROR RETURN | |
624 | LGD1, CLA CLL | |
625 | TAD CADR | |
626 | AND K77 | |
627 | TAD KNMCO | |
628 | SPA | |
629 | JMP LGD2 | |
630 | CLA CLL | |
631 | TAD KBORD | |
632 | JMP I ASETUP / ERROR RETURN | |
633 | LGD2, CLA CLL | |
634 | ||
635 | / SETUP POINTER AND MASK | |
636 | TAD CADR | |
637 | RTR | |
638 | RAR | |
639 | AND K377 | |
640 | DCA APTR / ACCESS POINTER | |
641 | TAD CADR | |
642 | AND K7 | |
643 | TAD MASKSP | |
644 | DCA MPTR | |
645 | TAD I MPTR | |
646 | DCA MASK | |
647 | ||
648 | ISZ ASETUP / PREPARE GOOD RETURN | |
649 | JMP I ASETUP / GOOD RETURN | |
650 | ||
651 | ||
652 | ||
653 | MPTR, 0 | |
654 | MASKSP, MASKS | |
655 | MASKS, 200 | |
656 | 100 | |
657 | 040 | |
658 | 020 | |
659 | 010 | |
660 | 004 | |
661 | 002 | |
662 | 001 | |
663 | ||
664 | ||
665 | ||
666 | /******************************************************************** | |
667 | /******************************************************************** | |
668 | PAGE | |
669 | DATA0, | |
670 | 0000;0000;0000;0000;0000;0000;0000;0000 | |
671 | 0000;0000;0000;0000;0000;0000;0000;0000 | |
672 | 0000;0000;0000;0000;0000;0000;0000;0000 | |
673 | 0000;0000;0000;0000;0000;0000;0000;0000 | |
674 | 0000;0000;0000;0000;0000;0000;0000;0000 | |
675 | 0000;0000;0000;0000;0000;0000;0000;0000 | |
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;0007;0000;0000;0000;0000 | |
682 | 0000;0000;0000;0005;0000;0000;0000;0000 | |
683 | 0000;0000;0000;0005;0000;0000;0000;0000 | |
684 | 0000;0000;0000;0000;0000;0000;0000;0000 | |
685 | 0000;0000;0000;0005;0000;0000;0000;0000 | |
686 | 0000;0000;0000;0005;0000;0000;0000;0000 | |
687 | 0000;0000;0000;0007;0000;0000;0000;0000 | |
688 | 0000;0000;0000;0000;0000;0000;0000;0000 | |
689 | 0000;0000;0000;0000;0000;0000;0000;0000 | |
690 | 0000;0000;0000;0000;0000;0000;0000;0000 | |
691 | 0000;0000;0000;0000;0000;0000;0000;0000 | |
692 | 0000;0000;0000;0000;0000;0000;0000;0000 | |
693 | 0000;0000;0000;0000;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 | ||
703 | PAGE | |
704 | DATA1, | |
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 | 0000;0000;0000;0000;0000;0000;0000;0000 | |
709 | 0000;0000;0000;0000;0000;0000;0000;0000 | |
710 | 0000;0000;0000;0000;0000;0000;0000;0000 | |
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 | ||
738 | ||
739 | /******************************************************************** | |
740 | /******************************************************************** | |
741 | / THIS IS IT, FOLKS! | |
742 | /******************************************************************** | |
743 | /******************************************************************** | |
744 | $ | |
745 | ||
746 |