stab at some chapters
[phd-thesis.git] / lst / Clean System Files / generic_eq.abc
1 .comp 920 010111010010000
2 .start __generic_eq_Start
3 .depend "StdGeneric" "20220216025412"
4 .depend "_SystemEnumStrict" "20220216025412"
5 .depend "_SystemStrictLists" "20220216025412"
6 .depend "StdStrictLists" "20220216025412"
7 .depend "_SystemEnum" "20220216025412"
8 .depend "StdEnum" "20220216025412"
9 .depend "StdMisc" "20220216025412"
10 .depend "StdFunctions" "20220216025412"
11 .depend "StdCharList" "20220216025412"
12 .depend "StdTuple" "20220216025412"
13 .depend "StdOrdList" "20220216025412"
14 .depend "StdList" "20220216025412"
15 .depend "StdClass" "20220216025412"
16 .depend "StdFile" "20220216025412"
17 .depend "StdString" "20220216025412"
18 .depend "_SystemArray" "20220216025412"
19 .depend "StdArray" "20220216025412"
20 .depend "StdChar" "20220216025412"
21 .depend "StdReal" "20220216025412"
22 .depend "StdInt" "20220216025412"
23 .depend "StdOverloaded" "20220216025412"
24 .depend "StdBool" "20220216025412"
25 .depend "StdEnv" "20220216025412"
26 .module m_generic_eq "generic_eq" "20220301120355"
27 .endinfo
28 .impmod _system
29 .implab _cycle_in_spine
30 .implab _type_error
31 .implab _hnf
32 .impdesc e_system_dind
33 .implab e_system_nind e_system_eaind
34 .impdesc e_system_dif
35 .implab e_system_nif e_system_eaif
36 .implab e_system_sif
37 .impdesc e_system_dAP
38 .implab e_system_nAP e_system_eaAP
39 .implab e_system_sAP
40 .impdesc ARRAY
41 .impdesc _Nil
42 .impdesc _Cons
43 .impdesc _Conss
44 .implab n_Conss ea_Conss
45 .impdesc _Consts
46 .implab n_Consts ea_Consts
47 .impdesc _Conssts
48 .implab n_Conssts ea_Conssts
49 .impdesc _Tuple
50 .impdesc d_S.1
51 .implab n_S.1 ea_S.1
52 .impdesc d_S.2
53 .implab n_S.2 ea_S.2
54 .impdesc d_S.3
55 .implab n_S.3 ea_S.3
56 .impdesc d_S.4
57 .implab n_S.4 ea_S.4
58 .impdesc d_S.5
59 .implab n_S.5 ea_S.5
60 .impdesc d_S.6
61 .implab n_S.6 ea_S.6
62 .implab _driver
63 .impmod StdChar
64 .implab e_StdChar_s==;18
65 .impmod StdInt
66 .implab e_StdInt_s==;16
67 .impdesc e_StdInt_d<;17
68 .impmod StdBool
69 .implab e_StdBool_s==;3
70 .impmod StdGeneric
71 .impdesc e_StdGeneric_dUNIT
72 .impdesc e_StdGeneric_dLEFT
73 .impdesc e_StdGeneric_dRIGHT
74 .impdesc e_StdGeneric_dPAIR
75 .impdesc e_StdGeneric_dCONS
76 .desc d21 _hnf _add_arg 2 0 "C1"
77 .desc d22 _hnf _hnf 0 0 "C2"
78 .export __generic_eq_Start
79 .o 0 0
80 __generic_eq_Start
81 build _ 0 n1
82 .d 1 0
83 jmp _driver
84 .n 0 _
85 .o 1 0
86 n1
87 push_node _cycle_in_spine 0
88 .o 0 0
89 ea1
90 buildh _Nil 0
91 buildI 4
92 buildh _Cons 2
93 buildI 3
94 buildh _Cons 2
95 buildI 2
96 buildh _Cons 2
97 buildh _Nil 0
98 buildI 3
99 buildh _Cons 2
100 buildI 2
101 buildh _Cons 2
102 buildI 1
103 buildh _Cons 2
104 buildh e_StdInt_d<;17 0
105 build d10 3 n10
106 buildB TRUE
107 buildh _Just 1
108 buildh _Nil 0
109 buildh _Tuple 2
110 buildI 42
111 buildh d21 2
112 buildh d22 0
113 build _ 2 n11
114 push_a 1
115 push_a 1
116 fillh _Tuple 2 4
117 pop_a 2
118 .d 1 0
119 rtn
120 .n 2 _
121 .o 1 0
122 n11
123 push_node _cycle_in_spine 2
124 .d 2 0
125 jsr ea11
126 .o 0 1 b
127 fillB_b 0 0
128 pop_b 1
129 .d 1 0
130 rtn
131 .o 2 0
132 ea11
133 .o 2 0
134 s11
135 push_a 1
136 build _ 1 n15
137 push_a 1
138 build _ 1 n15
139 buildh d47 0
140 update_a 2 4
141 update_a 1 3
142 updatepop_a 0 2
143 .d 3 0
144 jmp s6
145 .desc d47 _hnf l47 2 0 "_f6"
146 .a 2 ea47
147 .o 2 0
148 l47
149 push_args 0 1 1
150 update_a 2 1
151 create
152 update_a 0 3
153 pop_a 1
154 .o 3 0
155 ea47
156 .o 3 0
157 s47
158 push_a 0
159 jsr_eval 0
160 buildh d41 0
161 buildh d46 0
162 push_a 4
163 push_a 3
164 update_a 1 4
165 update_a 2 1
166 update_a 3 2
167 update_a 0 3
168 pop_a 1
169 update_a 3 5
170 update_a 2 4
171 update_a 1 3
172 updatepop_a 0 2
173 .d 4 0
174 jsr s9
175 .o 0 1 b
176 fillB_b 0 0
177 pop_b 1
178 .d 1 0
179 rtn
180 .desc d46 _hnf l46 2 0 "_f5"
181 .a 2 ea46
182 .o 2 0
183 l46
184 push_args 0 1 1
185 update_a 2 1
186 create
187 update_a 0 3
188 pop_a 1
189 .o 3 0
190 ea46
191 .o 3 0
192 s46
193 push_a 1
194 jsr_eval 0
195 push_a 1
196 jsr_eval 0
197 buildh d45 0
198 update_a 2 4
199 update_a 1 3
200 updatepop_a 0 2
201 .d 3 0
202 jsr s7
203 .o 0 1 b
204 fillB_b 0 0
205 pop_b 1
206 .d 1 0
207 rtn
208 .desc d45 _hnf l45 2 0 "_f4"
209 .a 2 ea45
210 .o 2 0
211 l45
212 push_args 0 1 1
213 update_a 2 1
214 create
215 update_a 0 3
216 pop_a 1
217 .o 3 0
218 ea45
219 .o 3 0
220 s45
221 push_a 1
222 jsr_eval 0
223 push_a 1
224 jsr_eval 0
225 buildh d44 0
226 buildh d2 0
227 update_a 3 5
228 update_a 2 4
229 update_a 1 3
230 updatepop_a 0 2
231 .d 4 0
232 jsr s8
233 .o 0 1 b
234 fillB_b 0 0
235 pop_b 1
236 .d 1 0
237 rtn
238 .desc d44 _hnf l44 2 0 "_f3"
239 .a 2 ea44
240 .o 2 0
241 l44
242 push_args 0 1 1
243 update_a 2 1
244 create
245 update_a 0 3
246 pop_a 1
247 .o 3 0
248 ea44
249 .o 3 0
250 s44
251 push_a 1
252 jsr_eval 0
253 repl_args 2 2
254 push_a 2
255 jsr_eval 0
256 repl_args 2 2
257 buildh d43 0
258 buildh d42 0
259 update_a 5 7
260 update_a 4 6
261 update_a 3 5
262 update_a 2 4
263 update_a 1 3
264 updatepop_a 0 2
265 .d 6 0
266 jsr s12
267 .o 0 1 b
268 fillB_b 0 0
269 pop_b 1
270 .d 1 0
271 rtn
272 .desc d43 _hnf l43 2 0 "_f2"
273 .a 2 ea43
274 .o 2 0
275 l43
276 push_args 0 1 1
277 update_a 2 1
278 create
279 update_a 0 3
280 pop_a 1
281 .o 3 0
282 ea43
283 .o 3 0
284 s43
285 push_a 0
286 jsr_eval 0
287 buildh d3 0
288 push_a 3
289 push_a 2
290 update_a 1 3
291 update_a 2 1
292 update_a 0 2
293 pop_a 1
294 update_a 2 4
295 update_a 1 3
296 updatepop_a 0 2
297 .d 3 0
298 jsr s13
299 .o 0 1 b
300 fillB_b 0 0
301 pop_b 1
302 .d 1 0
303 rtn
304 .desc d42 _hnf l42 2 0 "_f1"
305 .a 2 ea42
306 .o 2 0
307 l42
308 push_args 0 1 1
309 update_a 2 1
310 create
311 update_a 0 3
312 pop_a 1
313 .o 3 0
314 ea42
315 .o 3 0
316 s42
317 push_a 0
318 jsr_eval 0
319 buildh d4 0
320 push_a 3
321 push_a 2
322 update_a 1 3
323 update_a 2 1
324 update_a 0 2
325 pop_a 1
326 update_a 2 4
327 update_a 1 3
328 updatepop_a 0 2
329 .d 3 0
330 jsr s10
331 .o 0 1 b
332 fillB_b 0 0
333 pop_b 1
334 .d 1 0
335 rtn
336 .desc d2 _hnf l2 2 0 "gEq_Int;1"
337 .o 3 0
338 i2
339 pop_a 1
340 jsr_eval 1
341 pushI_a 1
342 jsr_eval 0
343 pushI_a 0
344 pop_a 2
345 .d 0 2 ii
346 jmp s2
347 .ai 0 a2 i2
348 .o 2 0
349 l2
350 repl_args 1 1
351 .o 2 0
352 a2
353 .d 2 0
354 jsr ea2
355 .o 0 1 b
356 buildB_b 0
357 pop_b 1
358 .d 1 0
359 rtn
360 .o 2 0
361 ea2
362 jsr_eval 1
363 jsr_eval 0
364 pushI_a 1
365 pushI_a 0
366 pop_a 2
367 .o 0 2 ii
368 s2
369 push_b 1
370 push_b 1
371 update_b 1 3
372 updatepop_b 0 2
373 eqI
374 .d 0 1 b
375 rtn
376 .desc d4 _hnf l4 2 0 "gEq_Char;4"
377 .o 3 0
378 i4
379 pop_a 1
380 jsr_eval 1
381 pushC_a 1
382 jsr_eval 0
383 pushC_a 0
384 pop_a 2
385 .d 0 2 cc
386 jmp s4
387 .ai 0 a4 i4
388 .o 2 0
389 l4
390 repl_args 1 1
391 .o 2 0
392 a4
393 .d 2 0
394 jsr ea4
395 .o 0 1 b
396 buildB_b 0
397 pop_b 1
398 .d 1 0
399 rtn
400 .o 2 0
401 ea4
402 jsr_eval 1
403 jsr_eval 0
404 pushC_a 1
405 pushC_a 0
406 pop_a 2
407 .o 0 2 cc
408 s4
409 push_b 1
410 push_b 1
411 update_b 1 3
412 updatepop_b 0 2
413 eqC
414 .d 0 1 b
415 rtn
416 .desc d3 _hnf l3 2 0 "gEq_Bool;2"
417 .o 3 0
418 i3
419 pop_a 1
420 jsr_eval 1
421 pushB_a 1
422 jsr_eval 0
423 pushB_a 0
424 pop_a 2
425 .d 0 2 bb
426 jmp s3
427 .ai 0 a3 i3
428 .o 2 0
429 l3
430 repl_args 1 1
431 .o 2 0
432 a3
433 .d 2 0
434 jsr ea3
435 .o 0 1 b
436 buildB_b 0
437 pop_b 1
438 .d 1 0
439 rtn
440 .o 2 0
441 ea3
442 jsr_eval 1
443 jsr_eval 0
444 pushB_a 1
445 pushB_a 0
446 pop_a 2
447 .o 0 2 bb
448 s3
449 push_b 1
450 push_b 1
451 update_b 1 3
452 updatepop_b 0 2
453 eqB
454 .d 0 1 b
455 rtn
456 .o 3 0
457 s13
458 push_a 2
459 build _ 1 n17
460 push_a 2
461 build _ 1 n17
462 buildh d41 0
463 push_a 3
464 buildh d7 1
465 buildh d9 2
466 update_a 2 5
467 update_a 1 4
468 updatepop_a 0 3
469 .d 3 0
470 jmp s6
471 .n 1 _ ea17
472 .o 1 0
473 n17
474 push_node _cycle_in_spine 1
475 .o 2 0
476 ea17
477 jsr_eval 0
478 .o 2 0
479 s17
480 eq_desc _Just 1 0
481 jmp_true case.1
482 jmp case.2
483 case.1
484 repl_args 1 1
485 push_a 0
486 buildh e_StdGeneric_dCONS 1
487 fillh e_StdGeneric_dLEFT 1 2
488 pop_a 1
489 .d 1 0
490 rtn
491 case.2
492 buildh e_StdGeneric_dUNIT 0
493 buildh e_StdGeneric_dCONS 1
494 fillh e_StdGeneric_dRIGHT 1 2
495 pop_a 1
496 .d 1 0
497 rtn
498 .o 6 0
499 s12
500 push_a 5
501 push_a 5
502 buildh _Tuple 2
503 build _ 1 n16
504 push_a 4
505 push_a 4
506 buildh _Tuple 2
507 build _ 1 n16
508 push_a 3
509 push_a 3
510 buildh d8 2
511 buildh d7 1
512 update_a 2 8
513 update_a 1 7
514 updatepop_a 0 6
515 .d 3 0
516 jmp s6
517 .n 1 _ ea16
518 .o 1 0
519 n16
520 push_node _cycle_in_spine 1
521 .o 2 0
522 ea16
523 jsr_eval 0
524 repl_args 2 2
525 .o 3 0
526 s16
527 push_a 1
528 push_a 1
529 buildh e_StdGeneric_dPAIR 2
530 fillh e_StdGeneric_dCONS 1 3
531 pop_a 2
532 .d 1 0
533 rtn
534 .n 1 _ ea15
535 .o 1 0
536 n15
537 push_node _cycle_in_spine 1
538 .o 2 0
539 ea15
540 jsr_eval 0
541 .o 2 0
542 s15
543 eq_desc d21 2 0
544 jmp_true case.3
545 jmp case.4
546 case.3
547 repl_args 2 2
548 push_a 1
549 push_a 1
550 buildh e_StdGeneric_dPAIR 2
551 buildh e_StdGeneric_dCONS 1
552 fillh e_StdGeneric_dLEFT 1 3
553 pop_a 2
554 .d 1 0
555 rtn
556 case.4
557 buildh e_StdGeneric_dUNIT 0
558 buildh e_StdGeneric_dCONS 1
559 fillh e_StdGeneric_dRIGHT 1 2
560 pop_a 1
561 .d 1 0
562 rtn
563 .desc d10 n10 l10 3 0 "gEq__List;12"
564 .o 4 0
565 i10
566 pop_a 1
567 jsr_eval 1
568 .d 3 0
569 jmp s10
570 .ai 0 a10 i10
571 .o 2 0
572 l10
573 repl_args 2 2
574 .o 3 0
575 a10
576 .d 3 0
577 jsr ea10
578 .o 0 1 b
579 buildB_b 0
580 pop_b 1
581 .d 1 0
582 rtn
583 .n 3 d10
584 .o 1 0
585 n10
586 push_node _cycle_in_spine 3
587 .d 3 0
588 jsr ea10
589 .o 0 1 b
590 fillB_b 0 0
591 pop_b 1
592 .d 1 0
593 rtn
594 .o 3 0
595 ea10
596 jsr_eval 1
597 .o 3 0
598 s10
599 push_a 2
600 build _ 1 n14
601 push_a 2
602 build _ 1 n14
603 buildh d41 0
604 push_a 3
605 buildh d10 1
606 push_a 4
607 buildh d8 2
608 buildh d7 1
609 buildh d9 2
610 update_a 2 5
611 update_a 1 4
612 updatepop_a 0 3
613 .d 3 0
614 jmp s6
615 .desc d41 _hnf l41 2 0 "_f0"
616 .a 2 ea41
617 .o 2 0
618 l41
619 push_args 0 1 1
620 update_a 2 1
621 create
622 update_a 0 3
623 pop_a 1
624 .o 3 0
625 ea41
626 .o 3 0
627 s41
628 push_a 1
629 jsr_eval 0
630 push_a 1
631 jsr_eval 0
632 buildh d5 0
633 update_a 2 4
634 update_a 1 3
635 updatepop_a 0 2
636 .d 3 0
637 jsr s7
638 .o 0 1 b
639 fillB_b 0 0
640 pop_b 1
641 .d 1 0
642 rtn
643 .desc d8 _hnf l8 4 0 "gEq_PAIR;10"
644 .a 0 a8
645 .o 2 0
646 l8
647 repl_args 3 3
648 .o 4 0
649 a8
650 .d 4 0
651 jsr ea8
652 .o 0 1 b
653 buildB_b 0
654 pop_b 1
655 .d 1 0
656 rtn
657 .o 4 0
658 ea8
659 jsr_eval 3
660 jsr_eval 2
661 jsr_eval 0
662 .o 4 0
663 s8
664 push_args 2 2 2
665 buildh _Nil 0
666 update_a 0 5
667 pop_a 1
668 push_args 5 2 2
669 buildh _Nil 0
670 update_a 0 8
671 pop_a 1
672 push_a 0
673 push_a 3
674 push_a 6
675 update_a 8 10
676 update_a 6 9
677 update_a 4 8
678 update_a 2 7
679 update_a 1 6
680 updatepop_a 0 5
681 jsr_ap 2
682 pushB_a 0
683 pop_a 1
684 jmp_false else.5
685 push_a 0
686 push_a 3
687 jsr_eval 0
688 push_a 3
689 push_a 1
690 update_a 1 2
691 update_a 0 1
692 pop_a 1
693 update_a 2 5
694 update_a 1 4
695 updatepop_a 0 3
696 jsr_ap 2
697 pushB_a 0
698 pop_a 1
699 .d 0 1 b
700 rtn
701 else.5
702 pop_a 3
703 pushB FALSE
704 .d 0 1 b
705 rtn
706 .desc d5 _hnf l5 2 0 "gEq_UNIT;5"
707 .a 0 a5
708 .o 2 0
709 l5
710 repl_args 1 1
711 .o 2 0
712 a5
713 .o 2 0
714 ea5
715 pop_a 2
716 pushB TRUE
717 buildB_b 0
718 pop_b 1
719 .d 1 0
720 rtn
721 .desc d7 _hnf l7 3 0 "gEq_CONS;7"
722 .a 0 a7
723 .o 2 0
724 l7
725 repl_args 2 2
726 .o 3 0
727 a7
728 .d 3 0
729 jsr ea7
730 .o 0 1 b
731 buildB_b 0
732 pop_b 1
733 .d 1 0
734 rtn
735 .o 3 0
736 ea7
737 jsr_eval 2
738 jsr_eval 1
739 jsr_eval 0
740 .o 3 0
741 s7
742 push_args 1 1 1
743 buildh _Nil 0
744 update_a 0 3
745 pop_a 1
746 push_args 3 1 1
747 buildh _Nil 0
748 update_a 0 5
749 pop_a 1
750 push_a 0
751 push_a 2
752 push_a 4
753 update_a 2 7
754 update_a 1 6
755 updatepop_a 0 5
756 jsr_ap 2
757 pushB_a 0
758 pop_a 1
759 .d 0 1 b
760 rtn
761 .desc d9 _hnf l9 4 0 "gEq_EITHER;11"
762 .a 0 a9
763 .o 2 0
764 l9
765 repl_args 3 3
766 .o 4 0
767 a9
768 .d 4 0
769 jsr ea9
770 .o 0 1 b
771 buildB_b 0
772 pop_b 1
773 .d 1 0
774 rtn
775 .o 4 0
776 ea9
777 jsr_eval 2
778 .o 4 0
779 s9
780 eq_desc e_StdGeneric_dLEFT 1 2
781 jmp_true case.6
782 jmp case.7
783 case.6
784 push_args 2 1 1
785 buildh _Nil 0
786 update_a 0 4
787 pop_a 1
788 jsr_eval 4
789 eq_desc e_StdGeneric_dLEFT 1 4
790 jmp_true case.9
791 pop_a 1
792 jmp case.8
793 case.9
794 push_args 4 1 1
795 buildh _Nil 0
796 update_a 0 6
797 pop_a 1
798 push_a 0
799 push_a 3
800 jsr_eval 0
801 push_a 3
802 push_a 1
803 update_a 1 2
804 update_a 0 1
805 pop_a 1
806 update_a 2 8
807 update_a 1 7
808 updatepop_a 0 6
809 jsr_ap 2
810 pushB_a 0
811 pop_a 1
812 .d 0 1 b
813 rtn
814 case.7
815 push_args 2 1 1
816 buildh _Nil 0
817 update_a 0 4
818 pop_a 1
819 jsr_eval 4
820 eq_desc e_StdGeneric_dRIGHT 1 4
821 jmp_true case.10
822 pop_a 1
823 jmp case.8
824 case.10
825 push_args 4 1 1
826 buildh _Nil 0
827 update_a 0 6
828 pop_a 1
829 push_a 0
830 push_a 4
831 jsr_eval 0
832 push_a 3
833 push_a 1
834 update_a 1 2
835 update_a 0 1
836 pop_a 1
837 update_a 2 8
838 update_a 1 7
839 updatepop_a 0 6
840 jsr_ap 2
841 pushB_a 0
842 pop_a 1
843 .d 0 1 b
844 rtn
845 case.8
846 pop_a 4
847 pushB FALSE
848 .d 0 1 b
849 rtn
850 .n 1 _ ea14
851 .o 1 0
852 n14
853 push_node _cycle_in_spine 1
854 .o 2 0
855 ea14
856 jsr_eval 0
857 .o 2 0
858 s14
859 eq_desc _Cons 2 0
860 jmp_true case.11
861 jmp case.12
862 case.11
863 repl_args 2 2
864 push_a 1
865 push_a 1
866 buildh e_StdGeneric_dPAIR 2
867 buildh e_StdGeneric_dCONS 1
868 fillh e_StdGeneric_dLEFT 1 3
869 pop_a 2
870 .d 1 0
871 rtn
872 case.12
873 buildh e_StdGeneric_dUNIT 0
874 buildh e_StdGeneric_dCONS 1
875 fillh e_StdGeneric_dRIGHT 1 2
876 pop_a 1
877 .d 1 0
878 rtn
879 .o 3 0
880 s6
881 push_a 2
882 push_a 2
883 push_a 2
884 update_a 2 5
885 update_a 1 4
886 updatepop_a 0 3
887 jsr_ap 2
888 pushB_a 0
889 pop_a 1
890 .d 0 1 b
891 rtn