about summary refs log blame commit diff stats
path: root/html/shell/primitives.mu.html
blob: a885204db3c296c4eed4d865d96851a86c0f09df (plain) (tree)
1
2
3
4
5
6
7
8
9
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
1413
1414
1415
1416
1417
1418
1419
1420
1421
1422
1423
1424
1425
1426
1427
1428
1429
1430
1431
1432
1433
1434
1435
1436
1437
1438
1439
1440
1441
1442
1443
1444
1445
1446
1447
1448
1449
1450
1451
1452
1453
1454
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
1481
1482
1483
1484
1485
1486
1487
1488
1489
1490
1491
1492
1493
1494
1495
1496
1497
1498
1499
1500
1501
1502
1503
1504
1505
1506
1507
1508
1509
1510
1511
1512
1513
1514
1515
1516
1517
1518
1519
1520
1521
1522
1523
1524
1525
1526
1527
1528
1529
1530
1531
1532
1533
1534
1535
1536
1537
1538
1539
1540
1541
1542
1543
1544
1545
1546
1547
1548
1549
1550
1551
1552
1553
1554
1555
1556
1557
1558
1559
1560
1561
1562
1563
1564
1565
1566
1567
1568
1569
1570
1571
1572
1573
1574
1575
1576
1577
1578
1579
1580
1581
1582
1583
1584
1585
1586
1587
1588
1589
1590
1591
1592
1593
1594
1595
1596
1597
1598
1599
1600
1601
1602
1603
1604
1605
1606
1607
1608
1609
1610
1611
1612
1613
1614
1615
1616
1617
1618
1619
1620
1621
1622
1623
1624
1625
1626
1627
1628
1629
1630
1631
1632
1633
1634
1635
1636
1637
1638
1639
1640
1641
1642
1643
1644
1645
1646
1647
1648
1649
1650
1651
1652
1653
1654
1655
1656
1657
1658
1659
1660
1661
1662
1663
1664
1665
1666
1667
1668
1669
1670
1671
1672
1673
1674
1675
1676
1677
1678
1679
1680
1681
1682
1683
1684
1685
1686
1687
1688
1689
1690
1691
1692
1693
1694
1695
1696
1697
1698
1699
1700
1701
1702
1703
1704
1705
1706
1707
1708
1709
1710
1711
1712
1713
1714
1715
1716
1717
1718
1719
1720
1721
1722
1723
1724
1725
1726
1727
1728
1729
1730
1731
1732
1733
1734
1735
1736
1737
1738
1739
1740
1741
1742
1743
1744
1745
1746
1747
1748
1749
1750
1751
1752
1753
1754
1755
1756
1757
1758
1759
1760
1761
1762
1763
1764
1765
1766
1767
1768
1769
1770
1771
1772
1773
1774
1775
1776
1777
1778
1779
1780
1781
1782
1783
1784
1785
1786
1787
1788
1789
1790
1791
1792
1793
1794
1795
1796
1797
1798
1799
1800
1801
1802
1803
1804
1805
1806
1807
1808
1809
1810
1811
1812
1813
1814
3563
3564
3565
3566
3567
3568
3569
3570
3571
3572
3573
3574
3575
3576
3577
3578
3579
3580
3581
3582
3583
3584
3585
3586
3587
3588
3589
3590
3591
3592
3593
3594
3595
3596
3597
3598
3599
3600
3601
3602
3603
3604
3605
3606
3607
3608
3609
3610
3611
3612
3613
3614
3615
3616
3617
3618
3619
3620
3621
3622
3623
3624
3625
3626
3627
3628
3629
3630
3631
3632
3633
3634
3635
3636
3637
3638
3639
3640
3641
3642
3643
3644
3645
3646
3647
3648
3649
3650
3651
3652
3653
3654
3655
3656
3657
3658
3659
3660
3661
3662
3663
3664
3665
3666
3667
3668
3669
3670
3671
3672
3673
3674
3675
3676
3677
3678
3679
3680
3681
3682
3683
3684
3685
3686
3687
3688
3689
3690
3691
3692
3693
3694
3695
3696
3697
3698
3699
3700
3701
3702
3703
3704
3705
3706
3707
3708
3709
3710
3711
3712
3713
3714
3715
3716
3717
3718
3719
3720
3721
3722
3723
3724
3725
3726
3727
3728
3729
3730
3731
3732
3733
3734
3735
3736
3737
3738
3739
3740
3741
3742
3743
3744
3745
3746
3747
3748
3749
3750
3751
3752
3753
3754
3755
3756
3757
3758
3759
3760
3761
3762
3763
3764
3765
3766
3767
3768
3769
3770
3771
3772
3773
3774
3775
3776
3777
3778
3779
3780
3781
3782
3783
3784
3785
3786
3787
3788
3789
3790
3791
3792
3793
3794
3795
3796
3797
3798
3799
3800
3801
3802
3803
3804
3805
3806
3807
3808
3809
3810
3811
3812
3813
3814
3815
3816
3817
3818
3819
3820
3821
3822
3823
3824
3825
3826
3827
3828
3829
3830
3831
3832
3833
3834
3835
3836
3837
3838
3839
3840
3841
3842
3843
3844
3845
3846
3847
3848
3849
3850
3851
3852
3853
3854
3855
3856
3857
3858
3859
3860
3861
3862
3863
3864
3865
3866
3867
3868
               

      
                      
                                       

                                                
                                   
                                                                                                                                         
                                                 
       
    

                                                                                                 



                                     
                                                           


                             


                             
                                  
                           
                              

                             


        
        






























                                                                                                                                       





                                                                                                                                                                                                                                                              











                                                                                                                                                        
                                                                                    



















































                                                                                                                                                             
                                                                                                                                                                                                                                                                                                                                                

                                                                                                                                                                  
                                                                                                                                                                                                                           
                                                                                          

                                                                                                                                                                          

                                                                                                                                                                                                                                                                                                                                                                 
                                                                                          

                                                                                                                                                                                                                                                                                                                                                                                                                       
                                                                                          

                                                                                                                                                                                                                                                                                                                                                               
                                                                                          

                                                                                                                                                                                                                                                                                                                                                                          
                                                                                          

                                                                                                                                                                                                                                                                                                                                                            
                                                                                          

                                                                                                                                                                                                                                                                                                                                                                                                                                                                 
                                                                                          

                                                                                                                                                                                                                                                                                                                                                              
                                                                                          

                                                                                                                                                                                                                                                                                                                                                                        
                                                                                           

                                                                                                                                                                                                                                                                                                                                                                                    
                                                                                           

                                                                                                                                                                                                                                                                                                                                                                                                               
                                                                                           

                                                                                                                                                                                                                                                                                                                                                              
                                                                                           

                                                                                                                                                                                                                                                                                                                                                                                   

                                                                                                                                             

                                                                                                                                                                                                                                                                                                                                                                             
                                                                                           

                                                                                                                                                                                                                                                                                                                                                              
                                                                                           
                                                                                                                                             

                                                                                                                                                                                                                                                                                                                                                                                                                             











                                                                                                                                                                          
                                                                                                                                                                                                                                                                                                                                                                             

                                                                                                                                        

                                                                                                                                                                                                                                                                                                                                                                                                                            

                                                                                                                                        

                                                                                                                                                                                                                                                                                                                                                                                                                               

                                                                                                                                        

                                                                                                                                                                                                                                                                                                                                                                                       

                                                                                                                                        


                                                                                                                                                                                                                                                                                                                                                                                                                     

                                                                                                                                        
                                                                                                                                                                                                                                                                                                                                                                            

                                                                                                                                        
                                                                                                                                                                                                                                                                                                                                                                                                         

                                                                                                                                        

                                                                                                                                                                                                                                                                                                                                                                                                                               

                                                                                                                                        

                                                                                                                                                                                                                                                                                                                                                                          

                                                                                                                                        
                                                                                                                                                                                                                                                                                                                                                                   

                                                                                                                                        

                                                                                                                                                                                                                                                                                                                                                                                        

                                                                                                                                        
                                                                                                                                                                                                                                                                                                                                                                     

                                                                                                                                        

                                                                                                                                                                                                                                                                                                                                                                             

                                                                                                                                        

                                                                                                                                                                                                                                                                                                                                                                                            

                                                                                                                                        

                                                                                                                                                                                                                                                                                                                                                                                 

                                                                                                                                        

                                                                                                                                                                                                                                                                                                                                                                                     


















































































































































































































































































































































































































































































































































































































































































































































                                                                                                                                                                                                                                                                                                                                                                                                                                                     
                                                                             



































































                                                                                                                                                                                                                                                                                                                                          
                                                                             

                                                                                                                                                                                          
                                                                                      
                                                                                                                                                                                                

                                                                                  





















































                                                                                                                                                                                                                                                                                                                                    
                                                                              




























































































                                                                                                                                                                                                                                                                                                                                    
                                                                              

                                                                                                                                                                                         
                                                                                       
                                                                                                                                                                                                                                    

                                                                                   


                                                                                                                                                                                     
                                                                                       
                                                                                                                                                                                              

                                                                                   









































































































                                                                                                                                                                                                                                                                                                                                           
                                                                                       
                                                                                                                                                                                               

                                                                                   



































                                                                                                                                                                                                                                                                                           
                                                                              






























                                                                                                                                                                                                                                                                                                                                                
                                                                              

                                                                                                                                                                                         
                                                                                       
                                                                                                                                                                                               

                                                                                   


                                                                                                                                                                                     
                                                                                       
                                                                                                                                                                                               

                                                                                   

















































































































































































































































































































































































































                                                                                                                                                                                                                                                                                                                                      


                                                                                                                                                                                                                                                                              




















                                                                                                                                                                                                                                   
                                                                                                                                                                                                                                                                                             






































                                                                                                                                                                                                                                                                                                                                      



                                                                                                                                                                                                                                                                                

                                                                                   
                                                                                                                                                                                                                                                                















                                                                                                                                                                                                                                                                                                                                   
                                                                              













                                                                                                                                                                                                                                   


                                                                                                                                                                                                                                                                              
                                                                              
                                                                                                                                                         















                                                                                                                                                                                                                                                                                                                                     
                                                                              













                                                                                                                                                                                                                                   


                                                                                                                                                                                                                                                                              
                                                                              
                                                                                                                                                           






























                                                                                                                                                                                                                                                                                                                                     


                                                                                                                                                                                                                                                                              
                                                                              
                                                                                                                                                          






























                                                                                                                                                                                                                                                                                                                                      


                                                                                                                                                                                                                                                                              
                                                                              
                                                                                                                                                            






























                                                                                                                                                                                                                                                                                                                                   


                                                                                                                                                                                                                                                                              
                                                                              
                                                                                                                                                                                  






























                                                                                                                                                                                                                                                                                                                                      


                                                                                                                                                                                                                                                                              






















































































                                                                                                                                                                                                                                     
                                                                                                                                                                































                                                                                                                                                                                                                                                                                                                                     


                                                                                                                                                                                                                                                                              























                                                                                                                                                                                                                                     
                                                                                                                                                                                                                                                                                           



























                                                                                                                                                                                                                                   
                                                                                                                                                                                                                                                                                          



























                                                                                                                                                                                                                                     
                                                                                                                                                                                                                                                                                         



























                                                                                                                                                                                                                                   
                                                                                                                                                                                                                                                                                        


































                                                                                                                                                                                                                                   
                                                                                                                                                                     
























                                                                                                                                                                                                                                                                                                                                      
                                                                              

                                                                                                                                                                                           
                                                                                       
                                                                                                                                                                                                          

                                                                                   


                                                                                                                                                                                                                                                                              























                                                                                                                                                                                                                                     
                                                                                                                                                                                                                                                                             



























                                                                                                                                                                                                                                   
                                                                                                                                                                                                                                                                                           



























                                                                                                                                                                                                                                     
                                                                                                                                                                                                                                                                                          
































                                                                                                                                                                                                                                   
                                                                                                                                                                            
























                                                                                                                                                                                                                                                                                                                                      
                                                                              

                                                                                                                                                                                           
                                                                                       
                                                                                                                                                                                                          

                                                                                   


                                                                                                                                                                                                                                                                              























                                                                                                                                                                                                                                     
                                                                                                                                                                                                                                                                             



























                                                                                                                                                                                                                                   
                                                                                                                                                                                                                                                                                           



























                                                                                                                                                                                                                                     
                                                                                                                                                                                                                                                                                          
































                                                                                                                                                                                                                                   
                                                                                                                                                                          
























                                                                                                                                                                                                                                                                                                                                       
                                                                              

                                                                                                                                                                                           
                                                                                       
                                                                                                                                                                                                           

                                                                                   


                                                                                                                                                                                                                                                                              























                                                                                                                                                                                                                                     
                                                                                                                                                                                                                                                                                        



























                                                                                                                                                                                                                                   
                                                                                                                                                                                                                                                                                       



























                                                                                                                                                                                                                                     
                                                                                                                                                                                                                                                                        
































                                                                                                                                                                                                                                   
                                                                                                                                                                    































                                                                                                                                                                                                                                                                                                                                       


                                                                                                                                                                                                                                                                              



















                                                                                                                                                                                                                                     
                                                                              

                                                                                                                                                                                             
                                                                                       
                                                                                                                                                                                                                                                                                             

                                                                                   

























                                                                                                                                                                                                                                   
                                                                                                                                                                                                                                                                                            



























                                                                                                                                                                                                                                     
                                                                                                                                                                                                                                                                                               





























                                                                                                                                                                                                                                   
                                                                                                                                                                                                                                                                                              





























                                                                                                                                                                                                                                   
                                                                                                                                                                                                                                                                                          





























                                                                                                                                                                                                                                       
                                                                                                                                                                                                                                                                                            


































                                                                                                                                                                                                                                     
                                                                                                                                                                                            









































                                                                                                                                                                                                                                                                                                                                             
                                                                              






                                                                                                                                                                                                                                   
                                                                                                                                                                                                            






































































                                                                                                                                                                                                                                                                                                                                       
                                                                                                                             








                                                                                                                                                                                                                                                                                                                                       
                                                                              

                                                                                                                                                                                         
                                                                                       
                                                                                                                                                                                                    

                                                                                   
























































                                                                                                                                                                                                                                                                                                                                     
                                                                                                                                                                                                                  


















                                                                                                                                                                                                                                                                                                                                      
                                                                                       
                                                                                                                                                                                                  

                                                                                   









                                                                                                                                                                                                                                   


                                                                                                                                                                                                                                                                              


                                                                                                                                                                                                    
                                                                                                                                                                                                         








                                                                                                                                                                                                                                                                                                                                        
                                                                              






















                                                                                                                                                                                                                                   


                                                                                                                                                                                                                                                                              


                                                                                                                                                                                                   
                                                                                                                                                                                                        
































                                                                                                                                                                                                                                                                                                                                      


                                                                                                                                                                                                                                                                              


                                                                                                                                                                                                   
                                                                                                                                                                                                        

































                                                                                                                                                                                                                                                                                                                                       


                                                                                                                                                                                                                                                                              


                                                                                                                                                                                                    
                                                                                                                                                                                                         






























                                                                                                                                                                                                                                                                                                                                           
                                                                                                                                                                                                                                                                                


























                                                                                                                                                                                                                                     
                                                                                                                                                                                                                                                                                  




































                                                                                                                                                                                                                                                                                                                                     


                                                                                                                                                                                                                                                

























                                                                                                                                                                                                                                     

                                                                                                                                                                                                                                                 
                                                                              

                                                                                                                             

















































































































































































































































































































                                                                                                                                                                                                                                                                                                                                             


                                                                                                                                                                                                                                                                              























































                                                                                                                                                                                                                                                                           
                                                                                                                                                                                                                                                                                      



























                                                                                                                                                                                                                                     
                                                                                                                                                                                                                                                                                        



























                                                                                                                                                                                                                                   
                                                                                                                                                                                                                                                                                       









































                                                                                                                                                                                                                                         
                                                                                                                                                                  





                                                                                                                                                                                                                                                                                                                                      



                                     
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Mu - shell/primitives.mu</title>
<meta name="Generator" content="Vim/8.2">
<meta name="plugin-version" content="vim8.1_v2">
<meta name="syntax" content="none">
<meta name="settings" content="number_lines,use_css,pre_wrap,no_foldcolumn,expand_tabs,line_ids,prevent_copy=,use_input_for_pc=fallback">
<meta name="colorscheme" content="minimal-light">
<style>
<!--
pre { white-space: pre-wrap; font-family: monospace; color: #000000; background-color: #ffffd7; }
body { font-size:12pt; font-family: monospace; color: #000000; background-color: #ffffd7; }
a { color:inherit; }
* { font-size:12pt; font-size: 1em; }
.LineNr { }
.Delimiter { color: #c000c0; }
.muFunction { color: #af5f00; text-decoration: underline; }
.muRegEbx { color: #5f00ff; }
.muRegEsi { color: #005faf; }
.muRegEdi { color: #00af00; }
.Constant { color: #008787; }
.Special { color: #ff6060; }
.PreProc { color: #c000c0; }
.CommentedCode { color: #8a8a8a; }
.muTest { color: #5f8700; }
.muComment { color: #005faf; }
.muRegEcx { color: #870000; }
.muRegEdx { color: #af5f00; }
-->
</style>

<script>
<!--

/* function to open any folds containing a jumped-to line before jumping to it */
function JumpToLine()
{
  var lineNum;
  lineNum = window.location.hash;
  lineNum = lineNum.substr(1); /* strip off '#' */

  if (lineNum.indexOf('L') == -1) {
    lineNum = 'L'+lineNum;
  }
  var lineElem = document.getElementById(lineNum);
  /* Always jump to new location even if the line was hidden inside a fold, or
   * we corrected the raw number to a line ID.
   */
  if (lineElem) {
    lineElem.scrollIntoView(true);
  }
  return true;
}
if ('onhashchange' in window) {
  window.onhashchange = JumpToLine;
}

-->
</script>
</head>
<body onload='JumpToLine();'>
<a href='https://github.com/akkartik/mu/blob/main/shell/primitives.mu'>https://github.com/akkartik/mu/blob/main/shell/primitives.mu</a>
<pre id='vimCodeElement'>
<span id="L1" class="LineNr">   1 </span><span class="muComment"># Primitives are functions that are implemented directly in Mu.</span>
<span id="L2" class="LineNr">   2 </span><span class="muComment"># They always evaluate all their arguments.</span>
<span id="L3" class="LineNr">   3 </span>
<span id="L4" class="LineNr">   4 </span><span class="PreProc">fn</span> <span class="muFunction"><a href='primitives.mu.html#L4'>initialize-primitives</a></span> _self: (addr <a href='global.mu.html#L1'>global-table</a>) <span class="Delimiter">{</span>
<span id="L5" class="LineNr">   5 </span>  <span class="PreProc">var</span> self/<span class="muRegEsi">esi</span>: (addr <a href='global.mu.html#L1'>global-table</a>) <span class="Special">&lt;-</span> copy _self
<span id="L6" class="LineNr">   6 </span>  <span class="muComment"># for numbers</span>
<span id="L7" class="LineNr">   7 </span>  <a href='primitives.mu.html#L210'>append-primitive</a> self, <span class="Constant">&quot;+&quot;</span>
<span id="L8" class="LineNr">   8 </span>  <a href='primitives.mu.html#L210'>append-primitive</a> self, <span class="Constant">&quot;-&quot;</span>
<span id="L9" class="LineNr">   9 </span>  <a href='primitives.mu.html#L210'>append-primitive</a> self, <span class="Constant">&quot;*&quot;</span>
<span id="L10" class="LineNr">  10 </span>  <a href='primitives.mu.html#L210'>append-primitive</a> self, <span class="Constant">&quot;/&quot;</span>
<span id="L11" class="LineNr">  11 </span>  <a href='primitives.mu.html#L210'>append-primitive</a> self, <span class="Constant">&quot;%&quot;</span>
<span id="L12" class="LineNr">  12 </span>  <a href='primitives.mu.html#L210'>append-primitive</a> self, <span class="Constant">&quot;sqrt&quot;</span>
<span id="L13" class="LineNr">  13 </span>  <a href='primitives.mu.html#L210'>append-primitive</a> self, <span class="Constant">&quot;abs&quot;</span>
<span id="L14" class="LineNr">  14 </span>  <a href='primitives.mu.html#L210'>append-primitive</a> self, <span class="Constant">&quot;sgn&quot;</span>
<span id="L15" class="LineNr">  15 </span>  <a href='primitives.mu.html#L210'>append-primitive</a> self, <span class="Constant">&quot;&lt;&quot;</span>
<span id="L16" class="LineNr">  16 </span>  <a href='primitives.mu.html#L210'>append-primitive</a> self, <span class="Constant">&quot;&gt;&quot;</span>
<span id="L17" class="LineNr">  17 </span>  <a href='primitives.mu.html#L210'>append-primitive</a> self, <span class="Constant">&quot;&lt;=&quot;</span>
<span id="L18" class="LineNr">  18 </span>  <a href='primitives.mu.html#L210'>append-primitive</a> self, <span class="Constant">&quot;&gt;=&quot;</span>
<span id="L19" class="LineNr">  19 </span>  <span class="muComment"># generic</span>
<span id="L20" class="LineNr">  20 </span>  <a href='primitives.mu.html#L210'>append-primitive</a> self, <span class="Constant">&quot;apply&quot;</span>
<span id="L21" class="LineNr">  21 </span>  <a href='primitives.mu.html#L210'>append-primitive</a> self, <span class="Constant">&quot;=&quot;</span>
<span id="L22" class="LineNr">  22 </span>  <a href='primitives.mu.html#L210'>append-primitive</a> self, <span class="Constant">&quot;no&quot;</span>
<span id="L23" class="LineNr">  23 </span>  <a href='primitives.mu.html#L210'>append-primitive</a> self, <span class="Constant">&quot;not&quot;</span>
<span id="L24" class="LineNr">  24 </span>  <a href='primitives.mu.html#L210'>append-primitive</a> self, <span class="Constant">&quot;dbg&quot;</span>
<span id="L25" class="LineNr">  25 </span>  <a href='primitives.mu.html#L210'>append-primitive</a> self, <span class="Constant">&quot;len&quot;</span>
<span id="L26" class="LineNr">  26 </span>  <span class="muComment"># for pairs</span>
<span id="L27" class="LineNr">  27 </span>  <a href='primitives.mu.html#L210'>append-primitive</a> self, <span class="Constant">&quot;car&quot;</span>
<span id="L28" class="LineNr">  28 </span>  <a href='primitives.mu.html#L210'>append-primitive</a> self, <span class="Constant">&quot;cdr&quot;</span>
<span id="L29" class="LineNr">  29 </span>  <a href='primitives.mu.html#L210'>append-primitive</a> self, <span class="Constant">&quot;cons&quot;</span>
<span id="L30" class="LineNr">  30 </span>  <a href='primitives.mu.html#L210'>append-primitive</a> self, <span class="Constant">&quot;cons?&quot;</span>
<span id="L31" class="LineNr">  31 </span>  <span class="muComment"># for screens</span>
<span id="L32" class="LineNr">  32 </span>  <a href='primitives.mu.html#L210'>append-primitive</a> self, <span class="Constant">&quot;print&quot;</span>
<span id="L33" class="LineNr">  33 </span>  <a href='primitives.mu.html#L210'>append-primitive</a> self, <span class="Constant">&quot;clear&quot;</span>
<span id="L34" class="LineNr">  34 </span>  <a href='primitives.mu.html#L210'>append-primitive</a> self, <span class="Constant">&quot;lines&quot;</span>
<span id="L35" class="LineNr">  35 </span>  <a href='primitives.mu.html#L210'>append-primitive</a> self, <span class="Constant">&quot;columns&quot;</span>
<span id="L36" class="LineNr">  36 </span>  <a href='primitives.mu.html#L210'>append-primitive</a> self, <span class="Constant">&quot;up&quot;</span>
<span id="L37" class="LineNr">  37 </span>  <a href='primitives.mu.html#L210'>append-primitive</a> self, <span class="Constant">&quot;down&quot;</span>
<span id="L38" class="LineNr">  38 </span>  <a href='primitives.mu.html#L210'>append-primitive</a> self, <span class="Constant">&quot;left&quot;</span>
<span id="L39" class="LineNr">  39 </span>  <a href='primitives.mu.html#L210'>append-primitive</a> self, <span class="Constant">&quot;right&quot;</span>
<span id="L40" class="LineNr">  40 </span>  <a href='primitives.mu.html#L210'>append-primitive</a> self, <span class="Constant">&quot;cr&quot;</span>
<span id="L41" class="LineNr">  41 </span>  <a href='primitives.mu.html#L210'>append-primitive</a> self, <span class="Constant">&quot;pixel&quot;</span>
<span id="L42" class="LineNr">  42 </span>  <a href='primitives.mu.html#L210'>append-primitive</a> self, <span class="Constant">&quot;line&quot;</span>
<span id="L43" class="LineNr">  43 </span>  <a href='primitives.mu.html#L210'>append-primitive</a> self, <span class="Constant">&quot;hline&quot;</span>
<span id="L44" class="LineNr">  44 </span>  <a href='primitives.mu.html#L210'>append-primitive</a> self, <span class="Constant">&quot;vline&quot;</span>
<span id="L45" class="LineNr">  45 </span>  <a href='primitives.mu.html#L210'>append-primitive</a> self, <span class="Constant">&quot;circle&quot;</span>
<span id="L46" class="LineNr">  46 </span>  <a href='primitives.mu.html#L210'>append-primitive</a> self, <span class="Constant">&quot;bezier&quot;</span>
<span id="L47" class="LineNr">  47 </span>  <a href='primitives.mu.html#L210'>append-primitive</a> self, <span class="Constant">&quot;width&quot;</span>
<span id="L48" class="LineNr">  48 </span>  <a href='primitives.mu.html#L210'>append-primitive</a> self, <span class="Constant">&quot;height&quot;</span>
<span id="L49" class="LineNr">  49 </span>  <a href='primitives.mu.html#L210'>append-primitive</a> self, <span class="Constant">&quot;new_screen&quot;</span>
<span id="L50" class="LineNr">  50 </span>  <a href='primitives.mu.html#L210'>append-primitive</a> self, <span class="Constant">&quot;blit&quot;</span>
<span id="L51" class="LineNr">  51 </span>  <span class="muComment"># for keyboards</span>
<span id="L52" class="LineNr">  52 </span>  <a href='primitives.mu.html#L210'>append-primitive</a> self, <span class="Constant">&quot;key&quot;</span>
<span id="L53" class="LineNr">  53 </span>  <span class="muComment"># for streams</span>
<span id="L54" class="LineNr">  54 </span>  <a href='primitives.mu.html#L210'>append-primitive</a> self, <span class="Constant">&quot;stream&quot;</span>
<span id="L55" class="LineNr">  55 </span>  <a href='primitives.mu.html#L210'>append-primitive</a> self, <span class="Constant">&quot;write&quot;</span>
<span id="L56" class="LineNr">  56 </span>  <a href='primitives.mu.html#L210'>append-primitive</a> self, <span class="Constant">&quot;read&quot;</span>
<span id="L57" class="LineNr">  57 </span>  <a href='primitives.mu.html#L210'>append-primitive</a> self, <span class="Constant">&quot;rewind&quot;</span>
<span id="L58" class="LineNr">  58 </span>  <span class="muComment"># for arrays</span>
<span id="L59" class="LineNr">  59 </span>  <a href='primitives.mu.html#L210'>append-primitive</a> self, <span class="Constant">&quot;array&quot;</span>
<span id="L60" class="LineNr">  60 </span>  <a href='primitives.mu.html#L210'>append-primitive</a> self, <span class="Constant">&quot;populate&quot;</span>
<span id="L61" class="LineNr">  61 </span>  <a href='primitives.mu.html#L210'>append-primitive</a> self, <span class="Constant">&quot;index&quot;</span>
<span id="L62" class="LineNr">  62 </span>  <a href='primitives.mu.html#L210'>append-primitive</a> self, <span class="Constant">&quot;iset&quot;</span>
<span id="L63" class="LineNr">  63 </span>  <span class="muComment"># for images</span>
<span id="L64" class="LineNr">  64 </span>  <a href='primitives.mu.html#L210'>append-primitive</a> self, <span class="Constant">&quot;img&quot;</span>
<span id="L65" class="LineNr">  65 </span>  <span class="muComment"># misc</span>
<span id="L66" class="LineNr">  66 </span>  <a href='primitives.mu.html#L210'>append-primitive</a> self, <span class="Constant">&quot;abort&quot;</span>
<span id="L67" class="LineNr">  67 </span>  <span class="muComment"># keep sync'd with render-primitives</span>
<span id="L68" class="LineNr">  68 </span><span class="Delimiter">}</span>
<span id="L69" class="LineNr">  69 </span>
<span id="L70" class="LineNr">  70 </span><span class="muComment"># Slightly misnamed; renders primitives as well as special forms that don't</span>
<span id="L71" class="LineNr">  71 </span><span class="muComment"># evaluate all their arguments.</span>
<span id="L72" class="LineNr">  72 </span><span class="PreProc">fn</span> <span class="muFunction"><a href='primitives.mu.html#L72'>render-primitives</a></span> <a href='../500fake-screen.mu.html#L16'>screen</a>: (addr <a href='../500fake-screen.mu.html#L16'>screen</a>), xmin: int, xmax: int, ymax: int <span class="Delimiter">{</span>
<span id="L73" class="LineNr">  73 </span>  <span class="PreProc">var</span> y/<span class="muRegEcx">ecx</span>: int <span class="Special">&lt;-</span> copy ymax
<span id="L74" class="LineNr">  74 </span>  y <span class="Special">&lt;-</span> subtract <span class="Constant">0x11</span>/primitives-border
<span id="L75" class="LineNr">  75 </span>  <a href='../500fake-screen.mu.html#L432'>clear-rect</a> <a href='../500fake-screen.mu.html#L16'>screen</a>, xmin, y, xmax, ymax, <span class="Constant">0xdc</span>/bg=green-bg
<span id="L76" class="LineNr">  76 </span>  y <span class="Special">&lt;-</span> increment
<span id="L77" class="LineNr">  77 </span>  <span class="PreProc">var</span> right-min/<span class="muRegEdx">edx</span>: int <span class="Special">&lt;-</span> copy xmax
<span id="L78" class="LineNr">  78 </span>  right-min <span class="Special">&lt;-</span> subtract <span class="Constant">0x1e</span>/primitives-divider
<span id="L79" class="LineNr">  79 </span>  <a href='../500fake-screen.mu.html#L269'>set-cursor-position</a> <a href='../500fake-screen.mu.html#L16'>screen</a>, right-min, y
<span id="L80" class="LineNr">  80 </span>  <a href='../501draw-text.mu.html#L324'>draw-text-wrapping-right-then-down-from-cursor</a> <a href='../500fake-screen.mu.html#L16'>screen</a>, <span class="Constant">&quot;primitives&quot;</span>, right-min, y, xmax, ymax, <span class="Constant">7</span>/fg=grey, <span class="Constant">0xdc</span>/bg=green-bg
<span id="L81" class="LineNr">  81 </span>  y <span class="Special">&lt;-</span> increment
<span id="L82" class="LineNr">  82 </span>  <a href='../500fake-screen.mu.html#L269'>set-cursor-position</a> <a href='../500fake-screen.mu.html#L16'>screen</a>, right-min, y
<span id="L83" class="LineNr">  83 </span>  <a href='../501draw-text.mu.html#L324'>draw-text-wrapping-right-then-down-from-cursor</a> <a href='../500fake-screen.mu.html#L16'>screen</a>, <span class="Constant">&quot;  fn <a href='evaluate.mu.html#L681'>apply</a> set if while&quot;</span>, right-min, y, xmax, ymax, <span class="Constant">0x2a</span>/fg=orange, <span class="Constant">0xdc</span>/bg=green-bg
<span id="L84" class="LineNr">  84 </span>  y <span class="Special">&lt;-</span> increment
<span id="L85" class="LineNr">  85 </span>  <a href='../500fake-screen.mu.html#L269'>set-cursor-position</a> <a href='../500fake-screen.mu.html#L16'>screen</a>, right-min, y
<span id="L86" class="LineNr">  86 </span>  <a href='../501draw-text.mu.html#L324'>draw-text-wrapping-right-then-down-from-cursor</a> <a href='../500fake-screen.mu.html#L16'>screen</a>, <span class="Constant">&quot;booleans&quot;</span>, right-min, y, xmax, ymax, <span class="Constant">7</span>/fg=grey, <span class="Constant">0xdc</span>/bg=green-bg
<span id="L87" class="LineNr">  87 </span>  y <span class="Special">&lt;-</span> increment
<span id="L88" class="LineNr">  88 </span>  <a href='../500fake-screen.mu.html#L269'>set-cursor-position</a> <a href='../500fake-screen.mu.html#L16'>screen</a>, right-min, y
<span id="L89" class="LineNr">  89 </span>  <a href='../501draw-text.mu.html#L324'>draw-text-wrapping-right-then-down-from-cursor</a> <a href='../500fake-screen.mu.html#L16'>screen</a>, <span class="Constant">&quot;  = and or not&quot;</span>, right-min, y, xmax, ymax, <span class="Constant">0x2a</span>/fg=orange, <span class="Constant">0xdc</span>/bg=green-bg
<span id="L90" class="LineNr">  90 </span>  y <span class="Special">&lt;-</span> increment
<span id="L91" class="LineNr">  91 </span>  <a href='../500fake-screen.mu.html#L269'>set-cursor-position</a> <a href='../500fake-screen.mu.html#L16'>screen</a>, right-min, y
<span id="L92" class="LineNr">  92 </span>  <a href='../501draw-text.mu.html#L324'>draw-text-wrapping-right-then-down-from-cursor</a> <a href='../500fake-screen.mu.html#L16'>screen</a>, <span class="Constant">&quot;lists&quot;</span>, right-min, y, xmax, ymax, <span class="Constant">7</span>/fg=grey, <span class="Constant">0xdc</span>/bg=green-bg
<span id="L93" class="LineNr">  93 </span>  y <span class="Special">&lt;-</span> increment
<span id="L94" class="LineNr">  94 </span>  <a href='../500fake-screen.mu.html#L269'>set-cursor-position</a> <a href='../500fake-screen.mu.html#L16'>screen</a>, right-min, y
<span id="L95" class="LineNr">  95 </span>  <a href='../501draw-text.mu.html#L324'>draw-text-wrapping-right-then-down-from-cursor</a> <a href='../500fake-screen.mu.html#L16'>screen</a>, <span class="Constant">&quot;  cons <a href='evaluate.mu.html#L1237'>car</a> <a href='evaluate.mu.html#L1265'>cdr</a> no cons? len&quot;</span>, right-min, y, xmax, ymax, <span class="Constant">0x2a</span>/fg=orange, <span class="Constant">0xdc</span>/bg=green-bg
<span id="L96" class="LineNr">  96 </span>  y <span class="Special">&lt;-</span> increment
<span id="L97" class="LineNr">  97 </span>  <a href='../500fake-screen.mu.html#L269'>set-cursor-position</a> <a href='../500fake-screen.mu.html#L16'>screen</a>, right-min, y
<span id="L98" class="LineNr">  98 </span>  <a href='../501draw-text.mu.html#L324'>draw-text-wrapping-right-then-down-from-cursor</a> <a href='../500fake-screen.mu.html#L16'>screen</a>, <span class="Constant">&quot;numbers&quot;</span>, right-min, y, xmax, ymax, <span class="Constant">7</span>/fg=grey, <span class="Constant">0xdc</span>/bg=green-bg
<span id="L99" class="LineNr">  99 </span>  y <span class="Special">&lt;-</span> increment
<span id="L100" class="LineNr"> 100 </span>  <a href='../500fake-screen.mu.html#L269'>set-cursor-position</a> <a href='../500fake-screen.mu.html#L16'>screen</a>, right-min, y
<span id="L101" class="LineNr"> 101 </span>  <a href='../501draw-text.mu.html#L324'>draw-text-wrapping-right-then-down-from-cursor</a> <a href='../500fake-screen.mu.html#L16'>screen</a>, <span class="Constant">&quot;  + - * / %&quot;</span>, right-min, y, xmax, ymax, <span class="Constant">0x2a</span>/fg=orange, <span class="Constant">0xdc</span>/bg=green-bg
<span id="L102" class="LineNr"> 102 </span>  y <span class="Special">&lt;-</span> increment
<span id="L103" class="LineNr"> 103 </span>  <a href='../500fake-screen.mu.html#L269'>set-cursor-position</a> <a href='../500fake-screen.mu.html#L16'>screen</a>, right-min, y
<span id="L104" class="LineNr"> 104 </span>  <a href='../501draw-text.mu.html#L324'>draw-text-wrapping-right-then-down-from-cursor</a> <a href='../500fake-screen.mu.html#L16'>screen</a>, <span class="Constant">&quot;  &lt; &gt; &lt;= &gt;=&quot;</span>, right-min, y, xmax, ymax, <span class="Constant">0x2a</span>/fg=orange, <span class="Constant">0xdc</span>/bg=green-bg
<span id="L105" class="LineNr"> 105 </span>  y <span class="Special">&lt;-</span> increment
<span id="L106" class="LineNr"> 106 </span>  <a href='../500fake-screen.mu.html#L269'>set-cursor-position</a> <a href='../500fake-screen.mu.html#L16'>screen</a>, right-min, y
<span id="L107" class="LineNr"> 107 </span>  <a href='../501draw-text.mu.html#L324'>draw-text-wrapping-right-then-down-from-cursor</a> <a href='../500fake-screen.mu.html#L16'>screen</a>, <span class="Constant">&quot;  sqrt <a href='../506math.mu.html#L1'>abs</a> sgn&quot;</span>, right-min, y, xmax, ymax, <span class="Constant">0x2a</span>/fg=orange, <span class="Constant">0xdc</span>/bg=green-bg
<span id="L108" class="LineNr"> 108 </span>  y <span class="Special">&lt;-</span> increment
<span id="L109" class="LineNr"> 109 </span>  <a href='../500fake-screen.mu.html#L269'>set-cursor-position</a> <a href='../500fake-screen.mu.html#L16'>screen</a>, right-min, y
<span id="L110" class="LineNr"> 110 </span>  <a href='../501draw-text.mu.html#L324'>draw-text-wrapping-right-then-down-from-cursor</a> <a href='../500fake-screen.mu.html#L16'>screen</a>, <span class="Constant">&quot;arrays&quot;</span>, right-min, y, xmax, ymax, <span class="Constant">7</span>/fg=grey, <span class="Constant">0xdc</span>/bg=green-bg
<span id="L111" class="LineNr"> 111 </span>  y <span class="Special">&lt;-</span> increment
<span id="L112" class="LineNr"> 112 </span>  <a href='../500fake-screen.mu.html#L269'>set-cursor-position</a> <a href='../500fake-screen.mu.html#L16'>screen</a>, right-min, y
<span id="L113" class="LineNr"> 113 </span>  <a href='../501draw-text.mu.html#L324'>draw-text-wrapping-right-then-down-from-cursor</a> <a href='../500fake-screen.mu.html#L16'>screen</a>, <span class="Constant">&quot;  array index iset len&quot;</span>, right-min, y, xmax, ymax, <span class="Constant">0x2a</span>/fg=orange, <span class="Constant">0xdc</span>/bg=green-bg
<span id="L114" class="LineNr"> 114 </span>  y <span class="Special">&lt;-</span> increment
<span id="L115" class="LineNr"> 115 </span>  <span class="PreProc">var</span> tmpx/eax: int <span class="Special">&lt;-</span> copy right-min
<span id="L116" class="LineNr"> 116 </span>  tmpx <span class="Special">&lt;-</span> <a href='../501draw-text.mu.html#L113'>draw-text-rightward</a> <a href='../500fake-screen.mu.html#L16'>screen</a>, <span class="Constant">&quot;  populate&quot;</span>, tmpx, xmax, y, <span class="Constant">0x2a</span>/fg=orange, <span class="Constant">0xdc</span>/bg=green-bg
<span id="L117" class="LineNr"> 117 </span>  tmpx <span class="Special">&lt;-</span> <a href='../501draw-text.mu.html#L113'>draw-text-rightward</a> <a href='../500fake-screen.mu.html#L16'>screen</a>, <span class="Constant">&quot;: int _ -&gt; array&quot;</span>, tmpx, xmax, y, <span class="Constant">7</span>/fg=grey, <span class="Constant">0xdc</span>/bg=green-bg
<span id="L118" class="LineNr"> 118 </span>  y <span class="Special">&lt;-</span> increment
<span id="L119" class="LineNr"> 119 </span>  <a href='../500fake-screen.mu.html#L269'>set-cursor-position</a> <a href='../500fake-screen.mu.html#L16'>screen</a>, right-min, y
<span id="L120" class="LineNr"> 120 </span>  <a href='../501draw-text.mu.html#L324'>draw-text-wrapping-right-then-down-from-cursor</a> <a href='../500fake-screen.mu.html#L16'>screen</a>, <span class="Constant">&quot;images&quot;</span>, right-min, y, xmax, ymax, <span class="Constant">7</span>/fg=grey, <span class="Constant">0xdc</span>/bg=green-bg
<span id="L121" class="LineNr"> 121 </span>  y <span class="Special">&lt;-</span> increment
<span id="L122" class="LineNr"> 122 </span>  <span class="PreProc">var</span> tmpx/eax: int <span class="Special">&lt;-</span> copy right-min
<span id="L123" class="LineNr"> 123 </span>  tmpx <span class="Special">&lt;-</span> <a href='../501draw-text.mu.html#L113'>draw-text-rightward</a> <a href='../500fake-screen.mu.html#L16'>screen</a>, <span class="Constant">&quot;  img&quot;</span>, tmpx, xmax, y, <span class="Constant">0x2a</span>/fg=orange, <span class="Constant">0xdc</span>/bg=green-bg
<span id="L124" class="LineNr"> 124 </span>  tmpx <span class="Special">&lt;-</span> <a href='../501draw-text.mu.html#L113'>draw-text-rightward</a> <a href='../500fake-screen.mu.html#L16'>screen</a>, <span class="Constant">&quot;: <a href='../500fake-screen.mu.html#L16'>screen</a> stream x y w h&quot;</span>, tmpx, xmax, y, <span class="Constant">7</span>/fg=grey, <span class="Constant">0xdc</span>/bg=green-bg
<span id="L125" class="LineNr"> 125 </span><span class="CommentedCode">#?   {</span>
<span id="L126" class="LineNr"> 126 </span><span class="CommentedCode">#?     compare screen, 0</span>
<span id="L127" class="LineNr"> 127 </span><span class="CommentedCode">#?     break-if-!=</span>
<span id="L128" class="LineNr"> 128 </span><span class="CommentedCode">#?     var foo/eax: byte &lt;- read-key 0/keyboard</span>
<span id="L129" class="LineNr"> 129 </span><span class="CommentedCode">#?     compare foo, 0</span>
<span id="L130" class="LineNr"> 130 </span><span class="CommentedCode">#?     loop-if-=</span>
<span id="L131" class="LineNr"> 131 </span><span class="CommentedCode">#?   }</span>
<span id="L132" class="LineNr"> 132 </span>  y <span class="Special">&lt;-</span> copy ymax
<span id="L133" class="LineNr"> 133 </span>  y <span class="Special">&lt;-</span> subtract <span class="Constant">0x10</span>/primitives-border
<span id="L134" class="LineNr"> 134 </span>  <span class="PreProc">var</span> left-max/<span class="muRegEdx">edx</span>: int <span class="Special">&lt;-</span> copy xmax
<span id="L135" class="LineNr"> 135 </span>  left-max <span class="Special">&lt;-</span> subtract <span class="Constant">0x20</span>/primitives-divider
<span id="L136" class="LineNr"> 136 </span>  <span class="PreProc">var</span> tmpx/eax: int <span class="Special">&lt;-</span> copy xmin
<span id="L137" class="LineNr"> 137 </span>  tmpx <span class="Special">&lt;-</span> <a href='../501draw-text.mu.html#L113'>draw-text-rightward</a> <a href='../500fake-screen.mu.html#L16'>screen</a>, <span class="Constant">&quot;cursor graphics&quot;</span>, tmpx, left-max, y, <span class="Constant">7</span>/fg=grey, <span class="Constant">0xdc</span>/bg=green-bg
<span id="L138" class="LineNr"> 138 </span>  y <span class="Special">&lt;-</span> increment
<span id="L139" class="LineNr"> 139 </span>  <span class="PreProc">var</span> tmpx/eax: int <span class="Special">&lt;-</span> copy xmin
<span id="L140" class="LineNr"> 140 </span>  tmpx <span class="Special">&lt;-</span> <a href='../501draw-text.mu.html#L113'>draw-text-rightward</a> <a href='../500fake-screen.mu.html#L16'>screen</a>, <span class="Constant">&quot;  print&quot;</span>, tmpx, left-max, y, <span class="Constant">0x2a</span>/fg=orange, <span class="Constant">0xdc</span>/bg=green-bg
<span id="L141" class="LineNr"> 141 </span>  tmpx <span class="Special">&lt;-</span> <a href='../501draw-text.mu.html#L113'>draw-text-rightward</a> <a href='../500fake-screen.mu.html#L16'>screen</a>, <span class="Constant">&quot;: <a href='../500fake-screen.mu.html#L16'>screen</a> _ -&gt; _&quot;</span>, tmpx, left-max, y, <span class="Constant">7</span>/fg=grey, <span class="Constant">0xdc</span>/bg=green-bg
<span id="L142" class="LineNr"> 142 </span>  y <span class="Special">&lt;-</span> increment
<span id="L143" class="LineNr"> 143 </span>  <span class="PreProc">var</span> tmpx/eax: int <span class="Special">&lt;-</span> copy xmin
<span id="L144" class="LineNr"> 144 </span>  tmpx <span class="Special">&lt;-</span> <a href='../501draw-text.mu.html#L113'>draw-text-rightward</a> <a href='../500fake-screen.mu.html#L16'>screen</a>, <span class="Constant">&quot;  lines columns&quot;</span>, tmpx, left-max, y, <span class="Constant">0x2a</span>/fg=orange, <span class="Constant">0xdc</span>/bg=green-bg
<span id="L145" class="LineNr"> 145 </span>  tmpx <span class="Special">&lt;-</span> <a href='../501draw-text.mu.html#L113'>draw-text-rightward</a> <a href='../500fake-screen.mu.html#L16'>screen</a>, <span class="Constant">&quot;: <a href='../500fake-screen.mu.html#L16'>screen</a> -&gt; number&quot;</span>, tmpx, left-max, y, <span class="Constant">7</span>/fg=grey, <span class="Constant">0xdc</span>/bg=green-bg
<span id="L146" class="LineNr"> 146 </span>  y <span class="Special">&lt;-</span> increment
<span id="L147" class="LineNr"> 147 </span>  <span class="PreProc">var</span> tmpx/eax: int <span class="Special">&lt;-</span> copy xmin
<span id="L148" class="LineNr"> 148 </span>  tmpx <span class="Special">&lt;-</span> <a href='../501draw-text.mu.html#L113'>draw-text-rightward</a> <a href='../500fake-screen.mu.html#L16'>screen</a>, <span class="Constant">&quot;  up down left right&quot;</span>, tmpx, left-max, y, <span class="Constant">0x2a</span>/fg=orange, <span class="Constant">0xdc</span>/bg=green-bg
<span id="L149" class="LineNr"> 149 </span>  tmpx <span class="Special">&lt;-</span> <a href='../501draw-text.mu.html#L113'>draw-text-rightward</a> <a href='../500fake-screen.mu.html#L16'>screen</a>, <span class="Constant">&quot;: screen&quot;</span>, tmpx, left-max, y, <span class="Constant">7</span>/fg=grey, <span class="Constant">0xdc</span>/bg=green-bg
<span id="L150" class="LineNr"> 150 </span>  y <span class="Special">&lt;-</span> increment
<span id="L151" class="LineNr"> 151 </span>  <span class="PreProc">var</span> tmpx/eax: int <span class="Special">&lt;-</span> copy xmin
<span id="L152" class="LineNr"> 152 </span>  tmpx <span class="Special">&lt;-</span> <a href='../501draw-text.mu.html#L113'>draw-text-rightward</a> <a href='../500fake-screen.mu.html#L16'>screen</a>, <span class="Constant">&quot;  cr&quot;</span>, tmpx, left-max, y, <span class="Constant">0x2a</span>/fg=orange, <span class="Constant">0xdc</span>/bg=green-bg
<span id="L153" class="LineNr"> 153 </span>  tmpx <span class="Special">&lt;-</span> <a href='../501draw-text.mu.html#L113'>draw-text-rightward</a> <a href='../500fake-screen.mu.html#L16'>screen</a>, <span class="Constant">&quot;: <a href='../500fake-screen.mu.html#L16'>screen</a>   &quot;</span>, tmpx, left-max, y, <span class="Constant">7</span>/fg=grey, <span class="Constant">0xdc</span>/bg=green-bg
<span id="L154" class="LineNr"> 154 </span>  tmpx <span class="Special">&lt;-</span> <a href='../501draw-text.mu.html#L113'>draw-text-rightward</a> <a href='../500fake-screen.mu.html#L16'>screen</a>, <span class="Constant">&quot;# move cursor down and to left margin&quot;</span>, tmpx, left-max, y, <span class="Constant">0x38</span>/fg=trace, <span class="Constant">0xdc</span>/bg=green-bg
<span id="L155" class="LineNr"> 155 </span>  y <span class="Special">&lt;-</span> increment
<span id="L156" class="LineNr"> 156 </span>  <span class="PreProc">var</span> tmpx/eax: int <span class="Special">&lt;-</span> copy xmin
<span id="L157" class="LineNr"> 157 </span>  tmpx <span class="Special">&lt;-</span> <a href='../501draw-text.mu.html#L113'>draw-text-rightward</a> <a href='../500fake-screen.mu.html#L16'>screen</a>, <span class="Constant">&quot;pixel graphics&quot;</span>, tmpx, left-max, y, <span class="Constant">7</span>/fg=grey, <span class="Constant">0xdc</span>/bg=green-bg
<span id="L158" class="LineNr"> 158 </span>  y <span class="Special">&lt;-</span> increment
<span id="L159" class="LineNr"> 159 </span>  <span class="PreProc">var</span> tmpx/eax: int <span class="Special">&lt;-</span> copy xmin
<span id="L160" class="LineNr"> 160 </span>  tmpx <span class="Special">&lt;-</span> <a href='../501draw-text.mu.html#L113'>draw-text-rightward</a> <a href='../500fake-screen.mu.html#L16'>screen</a>, <span class="Constant">&quot;  circle bezier line hline vline pixel&quot;</span>, tmpx, left-max, y, <span class="Constant">0x2a</span>/fg=orange, <span class="Constant">0xdc</span>/bg=green-bg
<span id="L161" class="LineNr"> 161 </span>  y <span class="Special">&lt;-</span> increment
<span id="L162" class="LineNr"> 162 </span>  <span class="PreProc">var</span> tmpx/eax: int <span class="Special">&lt;-</span> copy xmin
<span id="L163" class="LineNr"> 163 </span>  tmpx <span class="Special">&lt;-</span> <a href='../501draw-text.mu.html#L113'>draw-text-rightward</a> <a href='../500fake-screen.mu.html#L16'>screen</a>, <span class="Constant">&quot;  width height&quot;</span>, tmpx, left-max, y, <span class="Constant">0x2a</span>/fg=orange, <span class="Constant">0xdc</span>/bg=green-bg
<span id="L164" class="LineNr"> 164 </span>  tmpx <span class="Special">&lt;-</span> <a href='../501draw-text.mu.html#L113'>draw-text-rightward</a> <a href='../500fake-screen.mu.html#L16'>screen</a>, <span class="Constant">&quot;: <a href='../500fake-screen.mu.html#L16'>screen</a> -&gt; number&quot;</span>, tmpx, left-max, y, <span class="Constant">7</span>/fg=grey, <span class="Constant">0xdc</span>/bg=green-bg
<span id="L165" class="LineNr"> 165 </span>  y <span class="Special">&lt;-</span> increment
<span id="L166" class="LineNr"> 166 </span>  <span class="PreProc">var</span> tmpx/eax: int <span class="Special">&lt;-</span> copy xmin
<span id="L167" class="LineNr"> 167 </span>  tmpx <span class="Special">&lt;-</span> <a href='../501draw-text.mu.html#L113'>draw-text-rightward</a> <a href='../500fake-screen.mu.html#L16'>screen</a>, <span class="Constant">&quot;  clear&quot;</span>, tmpx, left-max, y, <span class="Constant">0x2a</span>/fg=orange, <span class="Constant">0xdc</span>/bg=green-bg
<span id="L168" class="LineNr"> 168 </span>  tmpx <span class="Special">&lt;-</span> <a href='../501draw-text.mu.html#L113'>draw-text-rightward</a> <a href='../500fake-screen.mu.html#L16'>screen</a>, <span class="Constant">&quot;: screen&quot;</span>, tmpx, left-max, y, <span class="Constant">7</span>/fg=grey, <span class="Constant">0xdc</span>/bg=green-bg
<span id="L169" class="LineNr"> 169 </span>  y <span class="Special">&lt;-</span> increment
<span id="L170" class="LineNr"> 170 </span>  <span class="PreProc">var</span> tmpx/eax: int <span class="Special">&lt;-</span> copy xmin
<span id="L171" class="LineNr"> 171 </span>  tmpx <span class="Special">&lt;-</span> <a href='../501draw-text.mu.html#L113'>draw-text-rightward</a> <a href='../500fake-screen.mu.html#L16'>screen</a>, <span class="Constant">&quot;input&quot;</span>, tmpx, left-max, y, <span class="Constant">7</span>/fg=grey, <span class="Constant">0xdc</span>/bg=green-bg
<span id="L172" class="LineNr"> 172 </span>  y <span class="Special">&lt;-</span> increment
<span id="L173" class="LineNr"> 173 </span>  <span class="PreProc">var</span> tmpx/eax: int <span class="Special">&lt;-</span> copy xmin
<span id="L174" class="LineNr"> 174 </span>  tmpx <span class="Special">&lt;-</span> <a href='../501draw-text.mu.html#L113'>draw-text-rightward</a> <a href='../500fake-screen.mu.html#L16'>screen</a>, <span class="Constant">&quot;  key&quot;</span>, tmpx, left-max, y, <span class="Constant">0x2a</span>/fg=orange, <span class="Constant">0xdc</span>/bg=green-bg
<span id="L175" class="LineNr"> 175 </span>  tmpx <span class="Special">&lt;-</span> <a href='../501draw-text.mu.html#L113'>draw-text-rightward</a> <a href='../500fake-screen.mu.html#L16'>screen</a>, <span class="Constant">&quot;: keyboard -&gt; grapheme?&quot;</span>, tmpx, left-max, y, <span class="Constant">7</span>/fg=grey, <span class="Constant">0xdc</span>/bg=green-bg
<span id="L176" class="LineNr"> 176 </span>  y <span class="Special">&lt;-</span> increment
<span id="L177" class="LineNr"> 177 </span>  <span class="PreProc">var</span> tmpx/eax: int <span class="Special">&lt;-</span> copy xmin
<span id="L178" class="LineNr"> 178 </span>  tmpx <span class="Special">&lt;-</span> <a href='../501draw-text.mu.html#L113'>draw-text-rightward</a> <a href='../500fake-screen.mu.html#L16'>screen</a>, <span class="Constant">&quot;streams&quot;</span>, tmpx, left-max, y, <span class="Constant">7</span>/fg=grey, <span class="Constant">0xdc</span>/bg=green-bg
<span id="L179" class="LineNr"> 179 </span>  y <span class="Special">&lt;-</span> increment
<span id="L180" class="LineNr"> 180 </span>  <span class="PreProc">var</span> tmpx/eax: int <span class="Special">&lt;-</span> copy xmin
<span id="L181" class="LineNr"> 181 </span>  tmpx <span class="Special">&lt;-</span> <a href='../501draw-text.mu.html#L113'>draw-text-rightward</a> <a href='../500fake-screen.mu.html#L16'>screen</a>, <span class="Constant">&quot;  stream&quot;</span>, tmpx, left-max, y, <span class="Constant">0x2a</span>/fg=orange, <span class="Constant">0xdc</span>/bg=green-bg
<span id="L182" class="LineNr"> 182 </span>  tmpx <span class="Special">&lt;-</span> <a href='../501draw-text.mu.html#L113'>draw-text-rightward</a> <a href='../500fake-screen.mu.html#L16'>screen</a>, <span class="Constant">&quot;: -&gt; stream &quot;</span>, tmpx, left-max, y, <span class="Constant">7</span>/fg=grey, <span class="Constant">0xdc</span>/bg=green-bg
<span id="L183" class="LineNr"> 183 </span>  y <span class="Special">&lt;-</span> increment
<span id="L184" class="LineNr"> 184 </span>  <span class="PreProc">var</span> tmpx/eax: int <span class="Special">&lt;-</span> copy xmin
<span id="L185" class="LineNr"> 185 </span>  tmpx <span class="Special">&lt;-</span> <a href='../501draw-text.mu.html#L113'>draw-text-rightward</a> <a href='../500fake-screen.mu.html#L16'>screen</a>, <span class="Constant">&quot;  write&quot;</span>, tmpx, left-max, y, <span class="Constant">0x2a</span>/fg=orange, <span class="Constant">0xdc</span>/bg=green-bg
<span id="L186" class="LineNr"> 186 </span>  tmpx <span class="Special">&lt;-</span> <a href='../501draw-text.mu.html#L113'>draw-text-rightward</a> <a href='../500fake-screen.mu.html#L16'>screen</a>, <span class="Constant">&quot;: stream grapheme -&gt; stream&quot;</span>, tmpx, left-max, y, <span class="Constant">7</span>/fg=grey, <span class="Constant">0xdc</span>/bg=green-bg
<span id="L187" class="LineNr"> 187 </span>  y <span class="Special">&lt;-</span> increment
<span id="L188" class="LineNr"> 188 </span>  <span class="PreProc">var</span> tmpx/eax: int <span class="Special">&lt;-</span> copy xmin
<span id="L189" class="LineNr"> 189 </span>  tmpx <span class="Special">&lt;-</span> <a href='../501draw-text.mu.html#L113'>draw-text-rightward</a> <a href='../500fake-screen.mu.html#L16'>screen</a>, <span class="Constant">&quot;  rewind clear&quot;</span>, tmpx, left-max, y, <span class="Constant">0x2a</span>/fg=orange, <span class="Constant">0xdc</span>/bg=green-bg
<span id="L190" class="LineNr"> 190 </span>  tmpx <span class="Special">&lt;-</span> <a href='../501draw-text.mu.html#L113'>draw-text-rightward</a> <a href='../500fake-screen.mu.html#L16'>screen</a>, <span class="Constant">&quot;: stream&quot;</span>, tmpx, left-max, y, <span class="Constant">7</span>/fg=grey, <span class="Constant">0xdc</span>/bg=green-bg
<span id="L191" class="LineNr"> 191 </span>  y <span class="Special">&lt;-</span> increment
<span id="L192" class="LineNr"> 192 </span>  <span class="PreProc">var</span> tmpx/eax: int <span class="Special">&lt;-</span> copy xmin
<span id="L193" class="LineNr"> 193 </span>  tmpx <span class="Special">&lt;-</span> <a href='../501draw-text.mu.html#L113'>draw-text-rightward</a> <a href='../500fake-screen.mu.html#L16'>screen</a>, <span class="Constant">&quot;  read&quot;</span>, tmpx, left-max, y, <span class="Constant">0x2a</span>/fg=orange, <span class="Constant">0xdc</span>/bg=green-bg
<span id="L194" class="LineNr"> 194 </span>  tmpx <span class="Special">&lt;-</span> <a href='../501draw-text.mu.html#L113'>draw-text-rightward</a> <a href='../500fake-screen.mu.html#L16'>screen</a>, <span class="Constant">&quot;: stream -&gt; grapheme&quot;</span>, tmpx, left-max, y, <span class="Constant">7</span>/fg=grey, <span class="Constant">0xdc</span>/bg=green-bg
<span id="L195" class="LineNr"> 195 </span><span class="Delimiter">}</span>
<span id="L196" class="LineNr"> 196 </span>
<span id="L197" class="LineNr"> 197 </span><span class="PreProc">fn</span> <span class="muFunction"><a href='primitives.mu.html#L197'>primitive-global?</a></span> _x: (addr <a href='global.mu.html#L8'>global</a>)<span class="PreProc"> -&gt; </span>_/eax: boolean <span class="Delimiter">{</span>
<span id="L198" class="LineNr"> 198 </span>  <span class="PreProc">var</span> x/eax: (addr <a href='global.mu.html#L8'>global</a>) <span class="Special">&lt;-</span> copy _x
<span id="L199" class="LineNr"> 199 </span>  <span class="PreProc">var</span> value-ah/eax: (addr handle <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> get x, value
<span id="L200" class="LineNr"> 200 </span>  <span class="PreProc">var</span> value/eax: (addr <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> <a href='../120allocate.subx.html#L235'>lookup</a> *value-ah
<span id="L201" class="LineNr"> 201 </span>  compare value, <span class="Constant">0</span>/null
<span id="L202" class="LineNr"> 202 </span>  <span class="Delimiter">{</span>
<span id="L203" class="LineNr"> 203 </span>    <span class="PreProc">break-if-!=</span>
<span id="L204" class="LineNr"> 204 </span>    <span class="PreProc">return</span> <span class="Constant">0</span>/false
<span id="L205" class="LineNr"> 205 </span>  <span class="Delimiter">}</span>
<span id="L206" class="LineNr"> 206 </span>  <span class="PreProc">var</span> <a href='cell.mu.html#L185'>primitive?</a>/eax: boolean <span class="Special">&lt;-</span> <a href='cell.mu.html#L185'>primitive?</a> value
<span id="L207" class="LineNr"> 207 </span>  <span class="PreProc">return</span> <a href='cell.mu.html#L185'>primitive?</a>
<span id="L208" class="LineNr"> 208 </span><span class="Delimiter">}</span>
<span id="L209" class="LineNr"> 209 </span>
<span id="L210" class="LineNr"> 210 </span><span class="PreProc">fn</span> <span class="muFunction"><a href='primitives.mu.html#L210'>append-primitive</a></span> _self: (addr <a href='global.mu.html#L1'>global-table</a>), name: (addr array byte) <span class="Delimiter">{</span>
<span id="L211" class="LineNr"> 211 </span>  <span class="PreProc">var</span> self/<span class="muRegEsi">esi</span>: (addr <a href='global.mu.html#L1'>global-table</a>) <span class="Special">&lt;-</span> copy _self
<span id="L212" class="LineNr"> 212 </span>  compare self, <span class="Constant">0</span>
<span id="L213" class="LineNr"> 213 </span>  <span class="Delimiter">{</span>
<span id="L214" class="LineNr"> 214 </span>    <span class="PreProc">break-if-!=</span>
<span id="L215" class="LineNr"> 215 </span>    <a href='../317abort.subx.html#L5'>abort</a> <span class="Constant">&quot;append primitive&quot;</span>
<span id="L216" class="LineNr"> 216 </span>    <span class="PreProc">return</span>
<span id="L217" class="LineNr"> 217 </span>  <span class="Delimiter">}</span>
<span id="L218" class="LineNr"> 218 </span>  <span class="PreProc">var</span> final-index-addr/<span class="muRegEcx">ecx</span>: (addr int) <span class="Special">&lt;-</span> get self, final-index
<span id="L219" class="LineNr"> 219 </span>  increment *final-index-addr
<span id="L220" class="LineNr"> 220 </span>  <span class="PreProc">var</span> curr-index/<span class="muRegEcx">ecx</span>: int <span class="Special">&lt;-</span> copy *final-index-addr
<span id="L221" class="LineNr"> 221 </span>  <span class="PreProc">var</span> data-ah/eax: (addr handle array <a href='global.mu.html#L8'>global</a>) <span class="Special">&lt;-</span> get self, data
<span id="L222" class="LineNr"> 222 </span>  <span class="PreProc">var</span> data/eax: (addr array <a href='global.mu.html#L8'>global</a>) <span class="Special">&lt;-</span> <a href='../120allocate.subx.html#L235'>lookup</a> *data-ah
<span id="L223" class="LineNr"> 223 </span>  <span class="PreProc">var</span> curr-offset/<span class="muRegEsi">esi</span>: (offset <a href='global.mu.html#L8'>global</a>) <span class="Special">&lt;-</span> compute-offset data, curr-index
<span id="L224" class="LineNr"> 224 </span>  <span class="PreProc">var</span> curr/<span class="muRegEsi">esi</span>: (addr <a href='global.mu.html#L8'>global</a>) <span class="Special">&lt;-</span> index data, curr-offset
<span id="L225" class="LineNr"> 225 </span>  <span class="PreProc">var</span> curr-name-ah/eax: (addr handle array byte) <span class="Special">&lt;-</span> get curr, name
<span id="L226" class="LineNr"> 226 </span>  <a href='../312copy.subx.html#L3'>copy-array-object</a> name, curr-name-ah
<span id="L227" class="LineNr"> 227 </span>  <span class="PreProc">var</span> curr-value-ah/eax: (addr handle <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> get curr, value
<span id="L228" class="LineNr"> 228 </span>  <a href='cell.mu.html#L180'>new-primitive-function</a> curr-value-ah, curr-index
<span id="L229" class="LineNr"> 229 </span><span class="Delimiter">}</span>
<span id="L230" class="LineNr"> 230 </span>
<span id="L231" class="LineNr"> 231 </span><span class="muComment"># a little strange; goes from value to name and selects primitive based on name</span>
<span id="L232" class="LineNr"> 232 </span><span class="PreProc">fn</span> <span class="muFunction"><a href='primitives.mu.html#L232'>apply-primitive</a></span> _f: (addr <a href='cell.mu.html#L1'>cell</a>), args-ah: (addr handle <a href='cell.mu.html#L1'>cell</a>), out: (addr handle <a href='cell.mu.html#L1'>cell</a>), _globals: (addr <a href='global.mu.html#L1'>global-table</a>), trace: (addr trace) <span class="Delimiter">{</span>
<span id="L233" class="LineNr"> 233 </span>  <span class="PreProc">var</span> f/<span class="muRegEsi">esi</span>: (addr <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> copy _f
<span id="L234" class="LineNr"> 234 </span>  <span class="PreProc">var</span> f-index-a/<span class="muRegEcx">ecx</span>: (addr int) <span class="Special">&lt;-</span> get f, index-data
<span id="L235" class="LineNr"> 235 </span>  <span class="PreProc">var</span> f-index/<span class="muRegEcx">ecx</span>: int <span class="Special">&lt;-</span> copy *f-index-a
<span id="L236" class="LineNr"> 236 </span>  <span class="PreProc">var</span> globals/eax: (addr <a href='global.mu.html#L1'>global-table</a>) <span class="Special">&lt;-</span> copy _globals
<span id="L237" class="LineNr"> 237 </span>  compare globals, <span class="Constant">0</span>
<span id="L238" class="LineNr"> 238 </span>  <span class="Delimiter">{</span>
<span id="L239" class="LineNr"> 239 </span>    <span class="PreProc">break-if-!=</span>
<span id="L240" class="LineNr"> 240 </span>    <a href='../317abort.subx.html#L5'>abort</a> <span class="Constant">&quot;apply primitive&quot;</span>
<span id="L241" class="LineNr"> 241 </span>    <span class="PreProc">return</span>
<span id="L242" class="LineNr"> 242 </span>  <span class="Delimiter">}</span>
<span id="L243" class="LineNr"> 243 </span>  <span class="PreProc">var</span> global-data-ah/eax: (addr handle array <a href='global.mu.html#L8'>global</a>) <span class="Special">&lt;-</span> get globals, data
<span id="L244" class="LineNr"> 244 </span>  <span class="PreProc">var</span> global-data/eax: (addr array <a href='global.mu.html#L8'>global</a>) <span class="Special">&lt;-</span> <a href='../120allocate.subx.html#L235'>lookup</a> *global-data-ah
<span id="L245" class="LineNr"> 245 </span>  <span class="PreProc">var</span> f-offset/<span class="muRegEcx">ecx</span>: (offset <a href='global.mu.html#L8'>global</a>) <span class="Special">&lt;-</span> compute-offset global-data, f-index
<span id="L246" class="LineNr"> 246 </span>  <span class="PreProc">var</span> f-value/<span class="muRegEcx">ecx</span>: (addr <a href='global.mu.html#L8'>global</a>) <span class="Special">&lt;-</span> index global-data, f-offset
<span id="L247" class="LineNr"> 247 </span>  <span class="PreProc">var</span> f-name-ah/<span class="muRegEcx">ecx</span>: (addr handle array byte) <span class="Special">&lt;-</span> get f-value, name
<span id="L248" class="LineNr"> 248 </span>  <span class="PreProc">var</span> f-name/eax: (addr array byte) <span class="Special">&lt;-</span> <a href='../120allocate.subx.html#L235'>lookup</a> *f-name-ah
<span id="L249" class="LineNr"> 249 </span>  <span class="Delimiter">{</span>
<span id="L250" class="LineNr"> 250 </span>    <span class="PreProc">var</span> add?/eax: boolean <span class="Special">&lt;-</span> <a href='../105string-equal.subx.html#L8'>string-equal?</a> f-name, <span class="Constant">&quot;+&quot;</span>
<span id="L251" class="LineNr"> 251 </span>    compare add?, <span class="Constant">0</span>/false
<span id="L252" class="LineNr"> 252 </span>    <span class="PreProc">break-if-=</span>
<span id="L253" class="LineNr"> 253 </span>    <a href='primitives.mu.html#L615'>apply-add</a> args-ah, out, trace
<span id="L254" class="LineNr"> 254 </span>    <span class="PreProc">return</span>
<span id="L255" class="LineNr"> 255 </span>  <span class="Delimiter">}</span>
<span id="L256" class="LineNr"> 256 </span>  <span class="Delimiter">{</span>
<span id="L257" class="LineNr"> 257 </span>    <span class="PreProc">var</span> subtract?/eax: boolean <span class="Special">&lt;-</span> <a href='../105string-equal.subx.html#L8'>string-equal?</a> f-name, <span class="Constant">&quot;-&quot;</span>
<span id="L258" class="LineNr"> 258 </span>    compare subtract?, <span class="Constant">0</span>/false
<span id="L259" class="LineNr"> 259 </span>    <span class="PreProc">break-if-=</span>
<span id="L260" class="LineNr"> 260 </span>    <a href='primitives.mu.html#L707'>apply-subtract</a> args-ah, out, trace
<span id="L261" class="LineNr"> 261 </span>    <span class="PreProc">return</span>
<span id="L262" class="LineNr"> 262 </span>  <span class="Delimiter">}</span>
<span id="L263" class="LineNr"> 263 </span>  <span class="Delimiter">{</span>
<span id="L264" class="LineNr"> 264 </span>    <span class="PreProc">var</span> multiply?/eax: boolean <span class="Special">&lt;-</span> <a href='../105string-equal.subx.html#L8'>string-equal?</a> f-name, <span class="Constant">&quot;*&quot;</span>
<span id="L265" class="LineNr"> 265 </span>    compare multiply?, <span class="Constant">0</span>/false
<span id="L266" class="LineNr"> 266 </span>    <span class="PreProc">break-if-=</span>
<span id="L267" class="LineNr"> 267 </span>    <a href='primitives.mu.html#L770'>apply-multiply</a> args-ah, out, trace
<span id="L268" class="LineNr"> 268 </span>    <span class="PreProc">return</span>
<span id="L269" class="LineNr"> 269 </span>  <span class="Delimiter">}</span>
<span id="L270" class="LineNr"> 270 </span>  <span class="Delimiter">{</span>
<span id="L271" class="LineNr"> 271 </span>    <span class="PreProc">var</span> divide?/eax: boolean <span class="Special">&lt;-</span> <a href='../105string-equal.subx.html#L8'>string-equal?</a> f-name, <span class="Constant">&quot;/&quot;</span>
<span id="L272" class="LineNr"> 272 </span>    compare divide?, <span class="Constant">0</span>/false
<span id="L273" class="LineNr"> 273 </span>    <span class="PreProc">break-if-=</span>
<span id="L274" class="LineNr"> 274 </span>    <a href='primitives.mu.html#L833'>apply-divide</a> args-ah, out, trace
<span id="L275" class="LineNr"> 275 </span>    <span class="PreProc">return</span>
<span id="L276" class="LineNr"> 276 </span>  <span class="Delimiter">}</span>
<span id="L277" class="LineNr"> 277 </span>  <span class="muComment"># '%' is the remainder operator, because modulo isn't really meaningful for</span>
<span id="L278" class="LineNr"> 278 </span>  <span class="muComment"># non-integers</span>
<span id="L279" class="LineNr"> 279 </span>  <span class="muComment">#</span>
<span id="L280" class="LineNr"> 280 </span>  <span class="muComment"># I considered calling this operator 'rem', but I want to follow Arc in</span>
<span id="L281" class="LineNr"> 281 </span>  <span class="muComment"># using 'rem' for filtering out elements from lists.</span>
<span id="L282" class="LineNr"> 282 </span>  <span class="muComment">#   <a href="https://arclanguage.github.io/ref/list.html#rem">https://arclanguage.github.io/ref/list.html#rem</a></span>
<span id="L283" class="LineNr"> 283 </span>  <span class="Delimiter">{</span>
<span id="L284" class="LineNr"> 284 </span>    <span class="PreProc">var</span> remainder?/eax: boolean <span class="Special">&lt;-</span> <a href='../105string-equal.subx.html#L8'>string-equal?</a> f-name, <span class="Constant">&quot;%&quot;</span>
<span id="L285" class="LineNr"> 285 </span>    compare remainder?, <span class="Constant">0</span>/false
<span id="L286" class="LineNr"> 286 </span>    <span class="PreProc">break-if-=</span>
<span id="L287" class="LineNr"> 287 </span>    <a href='primitives.mu.html#L896'>apply-remainder</a> args-ah, out, trace
<span id="L288" class="LineNr"> 288 </span>    <span class="PreProc">return</span>
<span id="L289" class="LineNr"> 289 </span>  <span class="Delimiter">}</span>
<span id="L290" class="LineNr"> 290 </span>  <span class="Delimiter">{</span>
<span id="L291" class="LineNr"> 291 </span>    <span class="PreProc">var</span> square-root?/eax: boolean <span class="Special">&lt;-</span> <a href='../105string-equal.subx.html#L8'>string-equal?</a> f-name, <span class="Constant">&quot;sqrt&quot;</span>
<span id="L292" class="LineNr"> 292 </span>    compare square-root?, <span class="Constant">0</span>/false
<span id="L293" class="LineNr"> 293 </span>    <span class="PreProc">break-if-=</span>
<span id="L294" class="LineNr"> 294 </span>    <a href='primitives.mu.html#L965'>apply-square-root</a> args-ah, out, trace
<span id="L295" class="LineNr"> 295 </span>    <span class="PreProc">return</span>
<span id="L296" class="LineNr"> 296 </span>  <span class="Delimiter">}</span>
<span id="L297" class="LineNr"> 297 </span>  <span class="Delimiter">{</span>
<span id="L298" class="LineNr"> 298 </span>    <span class="PreProc">var</span> abs?/eax: boolean <span class="Special">&lt;-</span> <a href='../105string-equal.subx.html#L8'>string-equal?</a> f-name, <span class="Constant">&quot;abs&quot;</span>
<span id="L299" class="LineNr"> 299 </span>    compare abs?, <span class="Constant">0</span>/false
<span id="L300" class="LineNr"> 300 </span>    <span class="PreProc">break-if-=</span>
<span id="L301" class="LineNr"> 301 </span>    <a href='primitives.mu.html#L1000'>apply-abs</a> args-ah, out, trace
<span id="L302" class="LineNr"> 302 </span>    <span class="PreProc">return</span>
<span id="L303" class="LineNr"> 303 </span>  <span class="Delimiter">}</span>
<span id="L304" class="LineNr"> 304 </span>  <span class="Delimiter">{</span>
<span id="L305" class="LineNr"> 305 </span>    <span class="PreProc">var</span> sgn?/eax: boolean <span class="Special">&lt;-</span> <a href='../105string-equal.subx.html#L8'>string-equal?</a> f-name, <span class="Constant">&quot;sgn&quot;</span>
<span id="L306" class="LineNr"> 306 </span>    compare sgn?, <span class="Constant">0</span>/false
<span id="L307" class="LineNr"> 307 </span>    <span class="PreProc">break-if-=</span>
<span id="L308" class="LineNr"> 308 </span>    <a href='primitives.mu.html#L1043'>apply-sgn</a> args-ah, out, trace
<span id="L309" class="LineNr"> 309 </span>    <span class="PreProc">return</span>
<span id="L310" class="LineNr"> 310 </span>  <span class="Delimiter">}</span>
<span id="L311" class="LineNr"> 311 </span>  <span class="Delimiter">{</span>
<span id="L312" class="LineNr"> 312 </span>    <span class="PreProc">var</span> car?/eax: boolean <span class="Special">&lt;-</span> <a href='../105string-equal.subx.html#L8'>string-equal?</a> f-name, <span class="Constant">&quot;car&quot;</span>
<span id="L313" class="LineNr"> 313 </span>    compare car?, <span class="Constant">0</span>/false
<span id="L314" class="LineNr"> 314 </span>    <span class="PreProc">break-if-=</span>
<span id="L315" class="LineNr"> 315 </span>    <a href='primitives.mu.html#L1095'>apply-car</a> args-ah, out, trace
<span id="L316" class="LineNr"> 316 </span>    <span class="PreProc">return</span>
<span id="L317" class="LineNr"> 317 </span>  <span class="Delimiter">}</span>
<span id="L318" class="LineNr"> 318 </span>  <span class="Delimiter">{</span>
<span id="L319" class="LineNr"> 319 </span>    <span class="PreProc">var</span> cdr?/eax: boolean <span class="Special">&lt;-</span> <a href='../105string-equal.subx.html#L8'>string-equal?</a> f-name, <span class="Constant">&quot;cdr&quot;</span>
<span id="L320" class="LineNr"> 320 </span>    compare cdr?, <span class="Constant">0</span>/false
<span id="L321" class="LineNr"> 321 </span>    <span class="PreProc">break-if-=</span>
<span id="L322" class="LineNr"> 322 </span>    <a href='primitives.mu.html#L1137'>apply-cdr</a> args-ah, out, trace
<span id="L323" class="LineNr"> 323 </span>    <span class="PreProc">return</span>
<span id="L324" class="LineNr"> 324 </span>  <span class="Delimiter">}</span>
<span id="L325" class="LineNr"> 325 </span>  <span class="Delimiter">{</span>
<span id="L326" class="LineNr"> 326 </span>    <span class="PreProc">var</span> cons?/eax: boolean <span class="Special">&lt;-</span> <a href='../105string-equal.subx.html#L8'>string-equal?</a> f-name, <span class="Constant">&quot;cons&quot;</span>
<span id="L327" class="LineNr"> 327 </span>    compare cons?, <span class="Constant">0</span>/false
<span id="L328" class="LineNr"> 328 </span>    <span class="PreProc">break-if-=</span>
<span id="L329" class="LineNr"> 329 </span>    <a href='primitives.mu.html#L1179'>apply-cons</a> args-ah, out, trace
<span id="L330" class="LineNr"> 330 </span>    <span class="PreProc">return</span>
<span id="L331" class="LineNr"> 331 </span>  <span class="Delimiter">}</span>
<span id="L332" class="LineNr"> 332 </span>  <span class="Delimiter">{</span>
<span id="L333" class="LineNr"> 333 </span>    <span class="PreProc">var</span> cons-check?/eax: boolean <span class="Special">&lt;-</span> <a href='../105string-equal.subx.html#L8'>string-equal?</a> f-name, <span class="Constant">&quot;cons?&quot;</span>
<span id="L334" class="LineNr"> 334 </span>    compare cons-check?, <span class="Constant">0</span>/false
<span id="L335" class="LineNr"> 335 </span>    <span class="PreProc">break-if-=</span>
<span id="L336" class="LineNr"> 336 </span>    <a href='primitives.mu.html#L1222'>apply-cons-check</a> args-ah, out, trace
<span id="L337" class="LineNr"> 337 </span>    <span class="PreProc">return</span>
<span id="L338" class="LineNr"> 338 </span>  <span class="Delimiter">}</span>
<span id="L339" class="LineNr"> 339 </span>  <span class="Delimiter">{</span>
<span id="L340" class="LineNr"> 340 </span>    <span class="PreProc">var</span> len?/eax: boolean <span class="Special">&lt;-</span> <a href='../105string-equal.subx.html#L8'>string-equal?</a> f-name, <span class="Constant">&quot;len&quot;</span>
<span id="L341" class="LineNr"> 341 </span>    compare len?, <span class="Constant">0</span>/false
<span id="L342" class="LineNr"> 342 </span>    <span class="PreProc">break-if-=</span>
<span id="L343" class="LineNr"> 343 </span>    <a href='primitives.mu.html#L1254'>apply-len</a> args-ah, out, trace
<span id="L344" class="LineNr"> 344 </span>    <span class="PreProc">return</span>
<span id="L345" class="LineNr"> 345 </span>  <span class="Delimiter">}</span>
<span id="L346" class="LineNr"> 346 </span>  <span class="Delimiter">{</span>
<span id="L347" class="LineNr"> 347 </span>    <span class="PreProc">var</span> <a href='evaluate.mu.html#L1293'>cell-isomorphic?</a>/eax: boolean <span class="Special">&lt;-</span> <a href='../105string-equal.subx.html#L8'>string-equal?</a> f-name, <span class="Constant">&quot;=&quot;</span>
<span id="L348" class="LineNr"> 348 </span>    compare <a href='evaluate.mu.html#L1293'>cell-isomorphic?</a>, <span class="Constant">0</span>/false
<span id="L349" class="LineNr"> 349 </span>    <span class="PreProc">break-if-=</span>
<span id="L350" class="LineNr"> 350 </span>    <a href='primitives.mu.html#L1329'>apply-cell-isomorphic</a> args-ah, out, trace
<span id="L351" class="LineNr"> 351 </span>    <span class="PreProc">return</span>
<span id="L352" class="LineNr"> 352 </span>  <span class="Delimiter">}</span>
<span id="L353" class="LineNr"> 353 </span>  <span class="Delimiter">{</span>
<span id="L354" class="LineNr"> 354 </span>    <span class="PreProc">var</span> not?/eax: boolean <span class="Special">&lt;-</span> <a href='../105string-equal.subx.html#L8'>string-equal?</a> f-name, <span class="Constant">&quot;no&quot;</span>
<span id="L355" class="LineNr"> 355 </span>    compare not?, <span class="Constant">0</span>/false
<span id="L356" class="LineNr"> 356 </span>    <span class="PreProc">break-if-=</span>
<span id="L357" class="LineNr"> 357 </span>    <a href='primitives.mu.html#L1382'>apply-not</a> args-ah, out, trace
<span id="L358" class="LineNr"> 358 </span>    <span class="PreProc">return</span>
<span id="L359" class="LineNr"> 359 </span>  <span class="Delimiter">}</span>
<span id="L360" class="LineNr"> 360 </span>  <span class="Delimiter">{</span>
<span id="L361" class="LineNr"> 361 </span>    <span class="PreProc">var</span> not?/eax: boolean <span class="Special">&lt;-</span> <a href='../105string-equal.subx.html#L8'>string-equal?</a> f-name, <span class="Constant">&quot;not&quot;</span>
<span id="L362" class="LineNr"> 362 </span>    compare not?, <span class="Constant">0</span>/false
<span id="L363" class="LineNr"> 363 </span>    <span class="PreProc">break-if-=</span>
<span id="L364" class="LineNr"> 364 </span>    <a href='primitives.mu.html#L1382'>apply-not</a> args-ah, out, trace
<span id="L365" class="LineNr"> 365 </span>    <span class="PreProc">return</span>
<span id="L366" class="LineNr"> 366 </span>  <span class="Delimiter">}</span>
<span id="L367" class="LineNr"> 367 </span>  <span class="Delimiter">{</span>
<span id="L368" class="LineNr"> 368 </span>    <span class="PreProc">var</span> debug?/eax: boolean <span class="Special">&lt;-</span> <a href='../105string-equal.subx.html#L8'>string-equal?</a> f-name, <span class="Constant">&quot;dbg&quot;</span>
<span id="L369" class="LineNr"> 369 </span>    compare debug?, <span class="Constant">0</span>/false
<span id="L370" class="LineNr"> 370 </span>    <span class="PreProc">break-if-=</span>
<span id="L371" class="LineNr"> 371 </span>    <a href='primitives.mu.html#L1415'>apply-debug</a> args-ah, out, trace
<span id="L372" class="LineNr"> 372 </span>    <span class="PreProc">return</span>
<span id="L373" class="LineNr"> 373 </span>  <span class="Delimiter">}</span>
<span id="L374" class="LineNr"> 374 </span>  <span class="Delimiter">{</span>
<span id="L375" class="LineNr"> 375 </span>    <span class="PreProc">var</span> lesser?/eax: boolean <span class="Special">&lt;-</span> <a href='../105string-equal.subx.html#L8'>string-equal?</a> f-name, <span class="Constant">&quot;&lt;&quot;</span>
<span id="L376" class="LineNr"> 376 </span>    compare lesser?, <span class="Constant">0</span>/false
<span id="L377" class="LineNr"> 377 </span>    <span class="PreProc">break-if-=</span>
<span id="L378" class="LineNr"> 378 </span>    <a href='primitives.mu.html#L1445'>apply-&lt;</a> args-ah, out, trace
<span id="L379" class="LineNr"> 379 </span>    <span class="PreProc">return</span>
<span id="L380" class="LineNr"> 380 </span>  <span class="Delimiter">}</span>
<span id="L381" class="LineNr"> 381 </span>  <span class="Delimiter">{</span>
<span id="L382" class="LineNr"> 382 </span>    <span class="PreProc">var</span> greater?/eax: boolean <span class="Special">&lt;-</span> <a href='../105string-equal.subx.html#L8'>string-equal?</a> f-name, <span class="Constant">&quot;&gt;&quot;</span>
<span id="L383" class="LineNr"> 383 </span>    compare greater?, <span class="Constant">0</span>/false
<span id="L384" class="LineNr"> 384 </span>    <span class="PreProc">break-if-=</span>
<span id="L385" class="LineNr"> 385 </span>    <a href='primitives.mu.html#L1514'>apply-&gt;</a> args-ah, out, trace
<span id="L386" class="LineNr"> 386 </span>    <span class="PreProc">return</span>
<span id="L387" class="LineNr"> 387 </span>  <span class="Delimiter">}</span>
<span id="L388" class="LineNr"> 388 </span>  <span class="Delimiter">{</span>
<span id="L389" class="LineNr"> 389 </span>    <span class="PreProc">var</span> lesser-or-equal?/eax: boolean <span class="Special">&lt;-</span> <a href='../105string-equal.subx.html#L8'>string-equal?</a> f-name, <span class="Constant">&quot;&lt;=&quot;</span>
<span id="L390" class="LineNr"> 390 </span>    compare lesser-or-equal?, <span class="Constant">0</span>/false
<span id="L391" class="LineNr"> 391 </span>    <span class="PreProc">break-if-=</span>
<span id="L392" class="LineNr"> 392 </span>    <a href='primitives.mu.html#L1583'>apply-&lt;=</a> args-ah, out, trace
<span id="L393" class="LineNr"> 393 </span>    <span class="PreProc">return</span>
<span id="L394" class="LineNr"> 394 </span>  <span class="Delimiter">}</span>
<span id="L395" class="LineNr"> 395 </span>  <span class="Delimiter">{</span>
<span id="L396" class="LineNr"> 396 </span>    <span class="PreProc">var</span> greater-or-equal?/eax: boolean <span class="Special">&lt;-</span> <a href='../105string-equal.subx.html#L8'>string-equal?</a> f-name, <span class="Constant">&quot;&gt;=&quot;</span>
<span id="L397" class="LineNr"> 397 </span>    compare greater-or-equal?, <span class="Constant">0</span>/false
<span id="L398" class="LineNr"> 398 </span>    <span class="PreProc">break-if-=</span>
<span id="L399" class="LineNr"> 399 </span>    <a href='primitives.mu.html#L1652'>apply-&gt;=</a> args-ah, out, trace
<span id="L400" class="LineNr"> 400 </span>    <span class="PreProc">return</span>
<span id="L401" class="LineNr"> 401 </span>  <span class="Delimiter">}</span>
<span id="L402" class="LineNr"> 402 </span>  <span class="Delimiter">{</span>
<span id="L403" class="LineNr"> 403 </span>    <span class="PreProc">var</span> print?/eax: boolean <span class="Special">&lt;-</span> <a href='../105string-equal.subx.html#L8'>string-equal?</a> f-name, <span class="Constant">&quot;print&quot;</span>
<span id="L404" class="LineNr"> 404 </span>    compare print?, <span class="Constant">0</span>/false
<span id="L405" class="LineNr"> 405 </span>    <span class="PreProc">break-if-=</span>
<span id="L406" class="LineNr"> 406 </span>    <a href='primitives.mu.html#L1721'>apply-print</a> args-ah, out, trace
<span id="L407" class="LineNr"> 407 </span>    <span class="PreProc">return</span>
<span id="L408" class="LineNr"> 408 </span>  <span class="Delimiter">}</span>
<span id="L409" class="LineNr"> 409 </span>  <span class="Delimiter">{</span>
<span id="L410" class="LineNr"> 410 </span>    <span class="PreProc">var</span> clear?/eax: boolean <span class="Special">&lt;-</span> <a href='../105string-equal.subx.html#L8'>string-equal?</a> f-name, <span class="Constant">&quot;clear&quot;</span>
<span id="L411" class="LineNr"> 411 </span>    compare clear?, <span class="Constant">0</span>/false
<span id="L412" class="LineNr"> 412 </span>    <span class="PreProc">break-if-=</span>
<span id="L413" class="LineNr"> 413 </span>    <a href='primitives.mu.html#L1779'>apply-clear</a> args-ah, out, trace
<span id="L414" class="LineNr"> 414 </span>    <span class="PreProc">return</span>
<span id="L415" class="LineNr"> 415 </span>  <span class="Delimiter">}</span>
<span id="L416" class="LineNr"> 416 </span>  <span class="Delimiter">{</span>
<span id="L417" class="LineNr"> 417 </span>    <span class="PreProc">var</span> lines?/eax: boolean <span class="Special">&lt;-</span> <a href='../105string-equal.subx.html#L8'>string-equal?</a> f-name, <span class="Constant">&quot;lines&quot;</span>
<span id="L418" class="LineNr"> 418 </span>    compare lines?, <span class="Constant">0</span>/false
<span id="L419" class="LineNr"> 419 </span>    <span class="PreProc">break-if-=</span>
<span id="L420" class="LineNr"> 420 </span>    <a href='primitives.mu.html#L3210'>apply-lines</a> args-ah, out, trace
<span id="L421" class="LineNr"> 421 </span>    <span class="PreProc">return</span>
<span id="L422" class="LineNr"> 422 </span>  <span class="Delimiter">}</span>
<span id="L423" class="LineNr"> 423 </span>  <span class="Delimiter">{</span>
<span id="L424" class="LineNr"> 424 </span>    <span class="PreProc">var</span> columns?/eax: boolean <span class="Special">&lt;-</span> <a href='../105string-equal.subx.html#L8'>string-equal?</a> f-name, <span class="Constant">&quot;columns&quot;</span>
<span id="L425" class="LineNr"> 425 </span>    compare columns?, <span class="Constant">0</span>/false
<span id="L426" class="LineNr"> 426 </span>    <span class="PreProc">break-if-=</span>
<span id="L427" class="LineNr"> 427 </span>    <a href='primitives.mu.html#L3250'>apply-columns</a> args-ah, out, trace
<span id="L428" class="LineNr"> 428 </span>    <span class="PreProc">return</span>
<span id="L429" class="LineNr"> 429 </span>  <span class="Delimiter">}</span>
<span id="L430" class="LineNr"> 430 </span>  <span class="Delimiter">{</span>
<span id="L431" class="LineNr"> 431 </span>    <span class="PreProc">var</span> up?/eax: boolean <span class="Special">&lt;-</span> <a href='../105string-equal.subx.html#L8'>string-equal?</a> f-name, <span class="Constant">&quot;up&quot;</span>
<span id="L432" class="LineNr"> 432 </span>    compare up?, <span class="Constant">0</span>/false
<span id="L433" class="LineNr"> 433 </span>    <span class="PreProc">break-if-=</span>
<span id="L434" class="LineNr"> 434 </span>    <a href='primitives.mu.html#L1823'>apply-up</a> args-ah, out, trace
<span id="L435" class="LineNr"> 435 </span>    <span class="PreProc">return</span>
<span id="L436" class="LineNr"> 436 </span>  <span class="Delimiter">}</span>
<span id="L437" class="LineNr"> 437 </span>  <span class="Delimiter">{</span>
<span id="L438" class="LineNr"> 438 </span>    <span class="PreProc">var</span> down?/eax: boolean <span class="Special">&lt;-</span> <a href='../105string-equal.subx.html#L8'>string-equal?</a> f-name, <span class="Constant">&quot;down&quot;</span>
<span id="L439" class="LineNr"> 439 </span>    compare down?, <span class="Constant">0</span>/false
<span id="L440" class="LineNr"> 440 </span>    <span class="PreProc">break-if-=</span>
<span id="L441" class="LineNr"> 441 </span>    <a href='primitives.mu.html#L1859'>apply-down</a> args-ah, out, trace
<span id="L442" class="LineNr"> 442 </span>    <span class="PreProc">return</span>
<span id="L443" class="LineNr"> 443 </span>  <span class="Delimiter">}</span>
<span id="L444" class="LineNr"> 444 </span>  <span class="Delimiter">{</span>
<span id="L445" class="LineNr"> 445 </span>    <span class="PreProc">var</span> left?/eax: boolean <span class="Special">&lt;-</span> <a href='../105string-equal.subx.html#L8'>string-equal?</a> f-name, <span class="Constant">&quot;left&quot;</span>
<span id="L446" class="LineNr"> 446 </span>    compare left?, <span class="Constant">0</span>/false
<span id="L447" class="LineNr"> 447 </span>    <span class="PreProc">break-if-=</span>
<span id="L448" class="LineNr"> 448 </span>    <a href='primitives.mu.html#L1895'>apply-left</a> args-ah, out, trace
<span id="L449" class="LineNr"> 449 </span>    <span class="PreProc">return</span>
<span id="L450" class="LineNr"> 450 </span>  <span class="Delimiter">}</span>
<span id="L451" class="LineNr"> 451 </span>  <span class="Delimiter">{</span>
<span id="L452" class="LineNr"> 452 </span>    <span class="PreProc">var</span> right?/eax: boolean <span class="Special">&lt;-</span> <a href='../105string-equal.subx.html#L8'>string-equal?</a> f-name, <span class="Constant">&quot;right&quot;</span>
<span id="L453" class="LineNr"> 453 </span>    compare right?, <span class="Constant">0</span>/false
<span id="L454" class="LineNr"> 454 </span>    <span class="PreProc">break-if-=</span>
<span id="L455" class="LineNr"> 455 </span>    <a href='primitives.mu.html#L1931'>apply-right</a> args-ah, out, trace
<span id="L456" class="LineNr"> 456 </span>    <span class="PreProc">return</span>
<span id="L457" class="LineNr"> 457 </span>  <span class="Delimiter">}</span>
<span id="L458" class="LineNr"> 458 </span>  <span class="Delimiter">{</span>
<span id="L459" class="LineNr"> 459 </span>    <span class="PreProc">var</span> cr?/eax: boolean <span class="Special">&lt;-</span> <a href='../105string-equal.subx.html#L8'>string-equal?</a> f-name, <span class="Constant">&quot;cr&quot;</span>
<span id="L460" class="LineNr"> 460 </span>    compare cr?, <span class="Constant">0</span>/false
<span id="L461" class="LineNr"> 461 </span>    <span class="PreProc">break-if-=</span>
<span id="L462" class="LineNr"> 462 </span>    <a href='primitives.mu.html#L1967'>apply-cr</a> args-ah, out, trace
<span id="L463" class="LineNr"> 463 </span>    <span class="PreProc">return</span>
<span id="L464" class="LineNr"> 464 </span>  <span class="Delimiter">}</span>
<span id="L465" class="LineNr"> 465 </span>  <span class="Delimiter">{</span>
<span id="L466" class="LineNr"> 466 </span>    <span class="PreProc">var</span> pixel?/eax: boolean <span class="Special">&lt;-</span> <a href='../105string-equal.subx.html#L8'>string-equal?</a> f-name, <span class="Constant">&quot;pixel&quot;</span>
<span id="L467" class="LineNr"> 467 </span>    compare pixel?, <span class="Constant">0</span>/false
<span id="L468" class="LineNr"> 468 </span>    <span class="PreProc">break-if-=</span>
<span id="L469" class="LineNr"> 469 </span>    <a href='primitives.mu.html#L2003'>apply-pixel</a> args-ah, out, trace
<span id="L470" class="LineNr"> 470 </span>    <span class="PreProc">return</span>
<span id="L471" class="LineNr"> 471 </span>  <span class="Delimiter">}</span>
<span id="L472" class="LineNr"> 472 </span>  <span class="Delimiter">{</span>
<span id="L473" class="LineNr"> 473 </span>    <span class="PreProc">var</span> line?/eax: boolean <span class="Special">&lt;-</span> <a href='../105string-equal.subx.html#L8'>string-equal?</a> f-name, <span class="Constant">&quot;line&quot;</span>
<span id="L474" class="LineNr"> 474 </span>    compare line?, <span class="Constant">0</span>/false
<span id="L475" class="LineNr"> 475 </span>    <span class="PreProc">break-if-=</span>
<span id="L476" class="LineNr"> 476 </span>    <a href='primitives.mu.html#L2126'>apply-line</a> args-ah, out, trace
<span id="L477" class="LineNr"> 477 </span>    <span class="PreProc">return</span>
<span id="L478" class="LineNr"> 478 </span>  <span class="Delimiter">}</span>
<span id="L479" class="LineNr"> 479 </span>  <span class="Delimiter">{</span>
<span id="L480" class="LineNr"> 480 </span>    <span class="PreProc">var</span> hline?/eax: boolean <span class="Special">&lt;-</span> <a href='../105string-equal.subx.html#L8'>string-equal?</a> f-name, <span class="Constant">&quot;hline&quot;</span>
<span id="L481" class="LineNr"> 481 </span>    compare hline?, <span class="Constant">0</span>/false
<span id="L482" class="LineNr"> 482 </span>    <span class="PreProc">break-if-=</span>
<span id="L483" class="LineNr"> 483 </span>    <a href='primitives.mu.html#L2309'>apply-hline</a> args-ah, out, trace
<span id="L484" class="LineNr"> 484 </span>    <span class="PreProc">return</span>
<span id="L485" class="LineNr"> 485 </span>  <span class="Delimiter">}</span>
<span id="L486" class="LineNr"> 486 </span>  <span class="Delimiter">{</span>
<span id="L487" class="LineNr"> 487 </span>    <span class="PreProc">var</span> vline?/eax: boolean <span class="Special">&lt;-</span> <a href='../105string-equal.subx.html#L8'>string-equal?</a> f-name, <span class="Constant">&quot;vline&quot;</span>
<span id="L488" class="LineNr"> 488 </span>    compare vline?, <span class="Constant">0</span>/false
<span id="L489" class="LineNr"> 489 </span>    <span class="PreProc">break-if-=</span>
<span id="L490" class="LineNr"> 490 </span>    <a href='primitives.mu.html#L2461'>apply-vline</a> args-ah, out, trace
<span id="L491" class="LineNr"> 491 </span>    <span class="PreProc">return</span>
<span id="L492" class="LineNr"> 492 </span>  <span class="Delimiter">}</span>
<span id="L493" class="LineNr"> 493 </span>  <span class="Delimiter">{</span>
<span id="L494" class="LineNr"> 494 </span>    <span class="PreProc">var</span> circle?/eax: boolean <span class="Special">&lt;-</span> <a href='../105string-equal.subx.html#L8'>string-equal?</a> f-name, <span class="Constant">&quot;circle&quot;</span>
<span id="L495" class="LineNr"> 495 </span>    compare circle?, <span class="Constant">0</span>/false
<span id="L496" class="LineNr"> 496 </span>    <span class="PreProc">break-if-=</span>
<span id="L497" class="LineNr"> 497 </span>    <a href='primitives.mu.html#L2613'>apply-circle</a> args-ah, out, trace
<span id="L498" class="LineNr"> 498 </span>    <span class="PreProc">return</span>
<span id="L499" class="LineNr"> 499 </span>  <span class="Delimiter">}</span>
<span id="L500" class="LineNr"> 500 </span>  <span class="Delimiter">{</span>
<span id="L501" class="LineNr"> 501 </span>    <span class="PreProc">var</span> bezier?/eax: boolean <span class="Special">&lt;-</span> <a href='../105string-equal.subx.html#L8'>string-equal?</a> f-name, <span class="Constant">&quot;bezier&quot;</span>
<span id="L502" class="LineNr"> 502 </span>    compare bezier?, <span class="Constant">0</span>/false
<span id="L503" class="LineNr"> 503 </span>    <span class="PreProc">break-if-=</span>
<span id="L504" class="LineNr"> 504 </span>    <a href='primitives.mu.html#L2765'>apply-bezier</a> args-ah, out, trace
<span id="L505" class="LineNr"> 505 </span>    <span class="PreProc">return</span>
<span id="L506" class="LineNr"> 506 </span>  <span class="Delimiter">}</span>
<span id="L507" class="LineNr"> 507 </span>  <span class="Delimiter">{</span>
<span id="L508" class="LineNr"> 508 </span>    <span class="PreProc">var</span> width?/eax: boolean <span class="Special">&lt;-</span> <a href='../105string-equal.subx.html#L8'>string-equal?</a> f-name, <span class="Constant">&quot;width&quot;</span>
<span id="L509" class="LineNr"> 509 </span>    compare width?, <span class="Constant">0</span>/false
<span id="L510" class="LineNr"> 510 </span>    <span class="PreProc">break-if-=</span>
<span id="L511" class="LineNr"> 511 </span>    <a href='primitives.mu.html#L3290'>apply-width</a> args-ah, out, trace
<span id="L512" class="LineNr"> 512 </span>    <span class="PreProc">return</span>
<span id="L513" class="LineNr"> 513 </span>  <span class="Delimiter">}</span>
<span id="L514" class="LineNr"> 514 </span>  <span class="Delimiter">{</span>
<span id="L515" class="LineNr"> 515 </span>    <span class="PreProc">var</span> height?/eax: boolean <span class="Special">&lt;-</span> <a href='../105string-equal.subx.html#L8'>string-equal?</a> f-name, <span class="Constant">&quot;height&quot;</span>
<span id="L516" class="LineNr"> 516 </span>    compare height?, <span class="Constant">0</span>/false
<span id="L517" class="LineNr"> 517 </span>    <span class="PreProc">break-if-=</span>
<span id="L518" class="LineNr"> 518 </span>    <a href='primitives.mu.html#L3331'>apply-height</a> args-ah, out, trace
<span id="L519" class="LineNr"> 519 </span>    <span class="PreProc">return</span>
<span id="L520" class="LineNr"> 520 </span>  <span class="Delimiter">}</span>
<span id="L521" class="LineNr"> 521 </span>  <span class="Delimiter">{</span>
<span id="L522" class="LineNr"> 522 </span>    <span class="PreProc">var</span> <a href='cell.mu.html#L214'>screen?</a>/eax: boolean <span class="Special">&lt;-</span> <a href='../105string-equal.subx.html#L8'>string-equal?</a> f-name, <span class="Constant">&quot;new_screen&quot;</span>
<span id="L523" class="LineNr"> 523 </span>    compare <a href='cell.mu.html#L214'>screen?</a>, <span class="Constant">0</span>/false
<span id="L524" class="LineNr"> 524 </span>    <span class="PreProc">break-if-=</span>
<span id="L525" class="LineNr"> 525 </span>    <a href='primitives.mu.html#L3372'>apply-new-screen</a> args-ah, out, trace
<span id="L526" class="LineNr"> 526 </span>    <span class="PreProc">return</span>
<span id="L527" class="LineNr"> 527 </span>  <span class="Delimiter">}</span>
<span id="L528" class="LineNr"> 528 </span>  <span class="Delimiter">{</span>
<span id="L529" class="LineNr"> 529 </span>    <span class="PreProc">var</span> blit?/eax: boolean <span class="Special">&lt;-</span> <a href='../105string-equal.subx.html#L8'>string-equal?</a> f-name, <span class="Constant">&quot;blit&quot;</span>
<span id="L530" class="LineNr"> 530 </span>    compare blit?, <span class="Constant">0</span>/false
<span id="L531" class="LineNr"> 531 </span>    <span class="PreProc">break-if-=</span>
<span id="L532" class="LineNr"> 532 </span>    <a href='primitives.mu.html#L3435'>apply-blit</a> args-ah, out, trace
<span id="L533" class="LineNr"> 533 </span>    <span class="PreProc">return</span>
<span id="L534" class="LineNr"> 534 </span>  <span class="Delimiter">}</span>
<span id="L535" class="LineNr"> 535 </span>  <span class="Delimiter">{</span>
<span id="L536" class="LineNr"> 536 </span>    <span class="PreProc">var</span> wait-for-key?/eax: boolean <span class="Special">&lt;-</span> <a href='../105string-equal.subx.html#L8'>string-equal?</a> f-name, <span class="Constant">&quot;key&quot;</span>
<span id="L537" class="LineNr"> 537 </span>    compare wait-for-key?, <span class="Constant">0</span>/false
<span id="L538" class="LineNr"> 538 </span>    <span class="PreProc">break-if-=</span>
<span id="L539" class="LineNr"> 539 </span>    <a href='primitives.mu.html#L3012'>apply-wait-for-key</a> args-ah, out, trace
<span id="L540" class="LineNr"> 540 </span>    <span class="PreProc">return</span>
<span id="L541" class="LineNr"> 541 </span>  <span class="Delimiter">}</span>
<span id="L542" class="LineNr"> 542 </span>  <span class="Delimiter">{</span>
<span id="L543" class="LineNr"> 543 </span>    <span class="PreProc">var</span> stream?/eax: boolean <span class="Special">&lt;-</span> <a href='../105string-equal.subx.html#L8'>string-equal?</a> f-name, <span class="Constant">&quot;stream&quot;</span>
<span id="L544" class="LineNr"> 544 </span>    compare stream?, <span class="Constant">0</span>/false
<span id="L545" class="LineNr"> 545 </span>    <span class="PreProc">break-if-=</span>
<span id="L546" class="LineNr"> 546 </span>    <a href='primitives.mu.html#L3064'>apply-stream</a> args-ah, out, trace
<span id="L547" class="LineNr"> 547 </span>    <span class="PreProc">return</span>
<span id="L548" class="LineNr"> 548 </span>  <span class="Delimiter">}</span>
<span id="L549" class="LineNr"> 549 </span>  <span class="Delimiter">{</span>
<span id="L550" class="LineNr"> 550 </span>    <span class="PreProc">var</span> write?/eax: boolean <span class="Special">&lt;-</span> <a href='../105string-equal.subx.html#L8'>string-equal?</a> f-name, <span class="Constant">&quot;write&quot;</span>
<span id="L551" class="LineNr"> 551 </span>    compare write?, <span class="Constant">0</span>/false
<span id="L552" class="LineNr"> 552 </span>    <span class="PreProc">break-if-=</span>
<span id="L553" class="LineNr"> 553 </span>    <a href='primitives.mu.html#L3069'>apply-write</a> args-ah, out, trace
<span id="L554" class="LineNr"> 554 </span>    <span class="PreProc">return</span>
<span id="L555" class="LineNr"> 555 </span>  <span class="Delimiter">}</span>
<span id="L556" class="LineNr"> 556 </span>  <span class="Delimiter">{</span>
<span id="L557" class="LineNr"> 557 </span>    <span class="PreProc">var</span> rewind?/eax: boolean <span class="Special">&lt;-</span> <a href='../105string-equal.subx.html#L8'>string-equal?</a> f-name, <span class="Constant">&quot;rewind&quot;</span>
<span id="L558" class="LineNr"> 558 </span>    compare rewind?, <span class="Constant">0</span>/false
<span id="L559" class="LineNr"> 559 </span>    <span class="PreProc">break-if-=</span>
<span id="L560" class="LineNr"> 560 </span>    <a href='primitives.mu.html#L3136'>apply-rewind</a> args-ah, out, trace
<span id="L561" class="LineNr"> 561 </span>    <span class="PreProc">return</span>
<span id="L562" class="LineNr"> 562 </span>  <span class="Delimiter">}</span>
<span id="L563" class="LineNr"> 563 </span>  <span class="Delimiter">{</span>
<span id="L564" class="LineNr"> 564 </span>    <span class="PreProc">var</span> read?/eax: boolean <span class="Special">&lt;-</span> <a href='../105string-equal.subx.html#L8'>string-equal?</a> f-name, <span class="Constant">&quot;read&quot;</span>
<span id="L565" class="LineNr"> 565 </span>    compare read?, <span class="Constant">0</span>/false
<span id="L566" class="LineNr"> 566 </span>    <span class="PreProc">break-if-=</span>
<span id="L567" class="LineNr"> 567 </span>    <a href='primitives.mu.html#L3172'>apply-read</a> args-ah, out, trace
<span id="L568" class="LineNr"> 568 </span>    <span class="PreProc">return</span>
<span id="L569" class="LineNr"> 569 </span>  <span class="Delimiter">}</span>
<span id="L570" class="LineNr"> 570 </span>  <span class="Delimiter">{</span>
<span id="L571" class="LineNr"> 571 </span>    <span class="PreProc">var</span> <a href='cell.mu.html#L290'>array?</a>/eax: boolean <span class="Special">&lt;-</span> <a href='../105string-equal.subx.html#L8'>string-equal?</a> f-name, <span class="Constant">&quot;array&quot;</span>
<span id="L572" class="LineNr"> 572 </span>    compare <a href='cell.mu.html#L290'>array?</a>, <span class="Constant">0</span>/false
<span id="L573" class="LineNr"> 573 </span>    <span class="PreProc">break-if-=</span>
<span id="L574" class="LineNr"> 574 </span>    <a href='primitives.mu.html#L3500'>apply-array</a> args-ah, out, trace
<span id="L575" class="LineNr"> 575 </span>    <span class="PreProc">return</span>
<span id="L576" class="LineNr"> 576 </span>  <span class="Delimiter">}</span>
<span id="L577" class="LineNr"> 577 </span>  <span class="Delimiter">{</span>
<span id="L578" class="LineNr"> 578 </span>    <span class="PreProc">var</span> populate?/eax: boolean <span class="Special">&lt;-</span> <a href='../105string-equal.subx.html#L8'>string-equal?</a> f-name, <span class="Constant">&quot;populate&quot;</span>
<span id="L579" class="LineNr"> 579 </span>    compare populate?, <span class="Constant">0</span>/false
<span id="L580" class="LineNr"> 580 </span>    <span class="PreProc">break-if-=</span>
<span id="L581" class="LineNr"> 581 </span>    <a href='primitives.mu.html#L3536'>apply-populate</a> args-ah, out, trace
<span id="L582" class="LineNr"> 582 </span>    <span class="PreProc">return</span>
<span id="L583" class="LineNr"> 583 </span>  <span class="Delimiter">}</span>
<span id="L584" class="LineNr"> 584 </span>  <span class="Delimiter">{</span>
<span id="L585" class="LineNr"> 585 </span>    <span class="PreProc">var</span> index?/eax: boolean <span class="Special">&lt;-</span> <a href='../105string-equal.subx.html#L8'>string-equal?</a> f-name, <span class="Constant">&quot;index&quot;</span>
<span id="L586" class="LineNr"> 586 </span>    compare index?, <span class="Constant">0</span>/false
<span id="L587" class="LineNr"> 587 </span>    <span class="PreProc">break-if-=</span>
<span id="L588" class="LineNr"> 588 </span>    <a href='primitives.mu.html#L3602'>apply-index</a> args-ah, out, trace
<span id="L589" class="LineNr"> 589 </span>    <span class="PreProc">return</span>
<span id="L590" class="LineNr"> 590 </span>  <span class="Delimiter">}</span>
<span id="L591" class="LineNr"> 591 </span>  <span class="Delimiter">{</span>
<span id="L592" class="LineNr"> 592 </span>    <span class="PreProc">var</span> iset?/eax: boolean <span class="Special">&lt;-</span> <a href='../105string-equal.subx.html#L8'>string-equal?</a> f-name, <span class="Constant">&quot;iset&quot;</span>
<span id="L593" class="LineNr"> 593 </span>    compare iset?, <span class="Constant">0</span>/false
<span id="L594" class="LineNr"> 594 </span>    <span class="PreProc">break-if-=</span>
<span id="L595" class="LineNr"> 595 </span>    <a href='primitives.mu.html#L3680'>apply-iset</a> args-ah, out, trace
<span id="L596" class="LineNr"> 596 </span>    <span class="PreProc">return</span>
<span id="L597" class="LineNr"> 597 </span>  <span class="Delimiter">}</span>
<span id="L598" class="LineNr"> 598 </span>  <span class="Delimiter">{</span>
<span id="L599" class="LineNr"> 599 </span>    <span class="PreProc">var</span> <a href='global.mu.html#L591'>render-image?</a>/eax: boolean <span class="Special">&lt;-</span> <a href='../105string-equal.subx.html#L8'>string-equal?</a> f-name, <span class="Constant">&quot;img&quot;</span>
<span id="L600" class="LineNr"> 600 </span>    compare <a href='global.mu.html#L591'>render-image?</a>, <span class="Constant">0</span>/false
<span id="L601" class="LineNr"> 601 </span>    <span class="PreProc">break-if-=</span>
<span id="L602" class="LineNr"> 602 </span>    <a href='primitives.mu.html#L3775'>apply-render-image</a> args-ah, out, trace
<span id="L603" class="LineNr"> 603 </span>    <span class="PreProc">return</span>
<span id="L604" class="LineNr"> 604 </span>  <span class="Delimiter">}</span>
<span id="L605" class="LineNr"> 605 </span>  <span class="Delimiter">{</span>
<span id="L606" class="LineNr"> 606 </span>    <span class="PreProc">var</span> abort?/eax: boolean <span class="Special">&lt;-</span> <a href='../105string-equal.subx.html#L8'>string-equal?</a> f-name, <span class="Constant">&quot;abort&quot;</span>
<span id="L607" class="LineNr"> 607 </span>    compare abort?, <span class="Constant">0</span>/false
<span id="L608" class="LineNr"> 608 </span>    <span class="PreProc">break-if-=</span>
<span id="L609" class="LineNr"> 609 </span>    <a href='primitives.mu.html#L3968'>apply-abort</a> args-ah, out, trace
<span id="L610" class="LineNr"> 610 </span>    <span class="PreProc">return</span>
<span id="L611" class="LineNr"> 611 </span>  <span class="Delimiter">}</span>
<span id="L612" class="LineNr"> 612 </span>  <a href='../317abort.subx.html#L5'>abort</a> <span class="Constant">&quot;unknown primitive function&quot;</span>
<span id="L613" class="LineNr"> 613 </span><span class="Delimiter">}</span>
<span id="L614" class="LineNr"> 614 </span>
<span id="L615" class="LineNr"> 615 </span><span class="PreProc">fn</span> <span class="muFunction"><a href='primitives.mu.html#L615'>apply-add</a></span> _args-ah: (addr handle <a href='cell.mu.html#L1'>cell</a>), out: (addr handle <a href='cell.mu.html#L1'>cell</a>), trace: (addr trace) <span class="Delimiter">{</span>
<span id="L616" class="LineNr"> 616 </span>  <a href='trace.mu.html#L185'>trace-text</a> trace, <span class="Constant">&quot;eval&quot;</span>, <span class="Constant">&quot;apply +&quot;</span>
<span id="L617" class="LineNr"> 617 </span>  <span class="PreProc">var</span> args-ah/eax: (addr handle <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> copy _args-ah
<span id="L618" class="LineNr"> 618 </span>  <span class="PreProc">var</span> _args/eax: (addr <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> <a href='../120allocate.subx.html#L235'>lookup</a> *args-ah
<span id="L619" class="LineNr"> 619 </span>  <span class="PreProc">var</span> args/<span class="muRegEsi">esi</span>: (addr <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> copy _args
<span id="L620" class="LineNr"> 620 </span>  <span class="Delimiter">{</span>
<span id="L621" class="LineNr"> 621 </span>    <span class="PreProc">var</span> args-type/eax: (addr int) <span class="Special">&lt;-</span> get args, <span class="PreProc">type</span>
<span id="L622" class="LineNr"> 622 </span>    compare *args-type, <span class="Constant">0</span>/pair
<span id="L623" class="LineNr"> 623 </span>    <span class="PreProc">break-if-=</span>
<span id="L624" class="LineNr"> 624 </span>    <span class="Special"><a href='trace.mu.html#L197'>error</a></span> trace, <span class="Constant">&quot;args to + are not a list&quot;</span>
<span id="L625" class="LineNr"> 625 </span>    <span class="PreProc">return</span>
<span id="L626" class="LineNr"> 626 </span>  <span class="Delimiter">}</span>
<span id="L627" class="LineNr"> 627 </span>  <span class="PreProc">var</span> empty-args?/eax: boolean <span class="Special">&lt;-</span> <a href='print.mu.html#L390'>nil?</a> args
<span id="L628" class="LineNr"> 628 </span>  compare empty-args?, <span class="Constant">0</span>/false
<span id="L629" class="LineNr"> 629 </span>  <span class="Delimiter">{</span>
<span id="L630" class="LineNr"> 630 </span>    <span class="PreProc">break-if-=</span>
<span id="L631" class="LineNr"> 631 </span>    <span class="Special"><a href='trace.mu.html#L197'>error</a></span> trace, <span class="Constant">&quot;+ needs 2 args but got 0&quot;</span>
<span id="L632" class="LineNr"> 632 </span>    <span class="PreProc">return</span>
<span id="L633" class="LineNr"> 633 </span>  <span class="Delimiter">}</span>
<span id="L634" class="LineNr"> 634 </span>  <span class="muComment"># args-&gt;left-&gt;value</span>
<span id="L635" class="LineNr"> 635 </span>  <span class="PreProc">var</span> first-ah/eax: (addr handle <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> get args, left
<span id="L636" class="LineNr"> 636 </span>  <span class="PreProc">var</span> first/eax: (addr <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> <a href='../120allocate.subx.html#L235'>lookup</a> *first-ah
<span id="L637" class="LineNr"> 637 </span>  <span class="Delimiter">{</span>
<span id="L638" class="LineNr"> 638 </span>    <span class="PreProc">var</span> first-type/eax: (addr int) <span class="Special">&lt;-</span> get first, <span class="PreProc">type</span>
<span id="L639" class="LineNr"> 639 </span>    compare *first-type, <span class="Constant">1</span>/number
<span id="L640" class="LineNr"> 640 </span>    <span class="PreProc">break-if-=</span>
<span id="L641" class="LineNr"> 641 </span>    <span class="Special"><a href='trace.mu.html#L197'>error</a></span> trace, <span class="Constant">&quot;first arg for + is not a number&quot;</span>
<span id="L642" class="LineNr"> 642 </span>    <span class="PreProc">return</span>
<span id="L643" class="LineNr"> 643 </span>  <span class="Delimiter">}</span>
<span id="L644" class="LineNr"> 644 </span>  <span class="PreProc">var</span> first-value/<span class="muRegEcx">ecx</span>: (addr float) <span class="Special">&lt;-</span> get first, number-data
<span id="L645" class="LineNr"> 645 </span>  <span class="muComment"># args-&gt;right-&gt;left-&gt;value</span>
<span id="L646" class="LineNr"> 646 </span>  <span class="PreProc">var</span> right-ah/eax: (addr handle <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> get args, right
<span id="L647" class="LineNr"> 647 </span>  <span class="PreProc">var</span> right/eax: (addr <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> <a href='../120allocate.subx.html#L235'>lookup</a> *right-ah
<span id="L648" class="LineNr"> 648 </span>  <span class="Delimiter">{</span>
<span id="L649" class="LineNr"> 649 </span>    <span class="PreProc">var</span> right-type/eax: (addr int) <span class="Special">&lt;-</span> get right, <span class="PreProc">type</span>
<span id="L650" class="LineNr"> 650 </span>    compare *right-type, <span class="Constant">0</span>/pair
<span id="L651" class="LineNr"> 651 </span>    <span class="PreProc">break-if-=</span>
<span id="L652" class="LineNr"> 652 </span>    <span class="Special"><a href='trace.mu.html#L197'>error</a></span> trace, <span class="Constant">&quot;+ encountered non-pair&quot;</span>
<span id="L653" class="LineNr"> 653 </span>    <span class="PreProc">return</span>
<span id="L654" class="LineNr"> 654 </span>  <span class="Delimiter">}</span>
<span id="L655" class="LineNr"> 655 </span>  <span class="Delimiter">{</span>
<span id="L656" class="LineNr"> 656 </span>    <span class="PreProc">var</span> <a href='print.mu.html#L390'>nil?</a>/eax: boolean <span class="Special">&lt;-</span> <a href='print.mu.html#L390'>nil?</a> right
<span id="L657" class="LineNr"> 657 </span>    compare <a href='print.mu.html#L390'>nil?</a>, <span class="Constant">0</span>/false
<span id="L658" class="LineNr"> 658 </span>    <span class="PreProc">break-if-=</span>
<span id="L659" class="LineNr"> 659 </span>    <span class="Special"><a href='trace.mu.html#L197'>error</a></span> trace, <span class="Constant">&quot;+ needs 2 args but got 1&quot;</span>
<span id="L660" class="LineNr"> 660 </span>    <span class="PreProc">return</span>
<span id="L661" class="LineNr"> 661 </span>  <span class="Delimiter">}</span>
<span id="L662" class="LineNr"> 662 </span>  <span class="PreProc">var</span> second-ah/eax: (addr handle <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> get right, left
<span id="L663" class="LineNr"> 663 </span>  <span class="PreProc">var</span> second/eax: (addr <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> <a href='../120allocate.subx.html#L235'>lookup</a> *second-ah
<span id="L664" class="LineNr"> 664 </span>  <span class="Delimiter">{</span>
<span id="L665" class="LineNr"> 665 </span>    <span class="PreProc">var</span> second-type/eax: (addr int) <span class="Special">&lt;-</span> get second, <span class="PreProc">type</span>
<span id="L666" class="LineNr"> 666 </span>    compare *second-type, <span class="Constant">1</span>/number
<span id="L667" class="LineNr"> 667 </span>    <span class="PreProc">break-if-=</span>
<span id="L668" class="LineNr"> 668 </span>    <span class="Special"><a href='trace.mu.html#L197'>error</a></span> trace, <span class="Constant">&quot;second arg for + is not a number&quot;</span>
<span id="L669" class="LineNr"> 669 </span>    <span class="PreProc">return</span>
<span id="L670" class="LineNr"> 670 </span>  <span class="Delimiter">}</span>
<span id="L671" class="LineNr"> 671 </span>  <span class="PreProc">var</span> second-value/<span class="muRegEdx">edx</span>: (addr float) <span class="Special">&lt;-</span> get second, number-data
<span id="L672" class="LineNr"> 672 </span>  <span class="muComment"># add</span>
<span id="L673" class="LineNr"> 673 </span>  <span class="PreProc">var</span> result/<span class="Constant">xmm0</span>: float <span class="Special">&lt;-</span> copy *first-value
<span id="L674" class="LineNr"> 674 </span>  result <span class="Special">&lt;-</span> add *second-value
<span id="L675" class="LineNr"> 675 </span>  <a href='cell.mu.html#L112'>new-float</a> out, result
<span id="L676" class="LineNr"> 676 </span><span class="Delimiter">}</span>
<span id="L677" class="LineNr"> 677 </span>
<span id="L678" class="LineNr"> 678 </span><span class="PreProc">fn</span> <span class="muTest"><a href='primitives.mu.html#L678'>test-evaluate-missing-arg-in-add</a></span> <span class="Delimiter">{</span>
<span id="L679" class="LineNr"> 679 </span>  <span class="PreProc">var</span> t-storage: trace
<span id="L680" class="LineNr"> 680 </span>  <span class="PreProc">var</span> t/<span class="muRegEdi">edi</span>: (addr trace) <span class="Special">&lt;-</span> address t-storage
<span id="L681" class="LineNr"> 681 </span>  <a href='trace.mu.html#L61'>initialize-trace</a> t, <span class="Constant">0x100</span>/max-depth, <span class="Constant">0x100</span>/capacity, <span class="Constant">0</span>/visible  <span class="muComment"># we don't use trace UI</span>
<span id="L682" class="LineNr"> 682 </span>  <span class="muComment">#</span>
<span id="L683" class="LineNr"> 683 </span>  <span class="PreProc">var</span> nil-storage: (handle <a href='cell.mu.html#L1'>cell</a>)
<span id="L684" class="LineNr"> 684 </span>  <span class="PreProc">var</span> nil-ah/<span class="muRegEcx">ecx</span>: (addr handle <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> address nil-storage
<span id="L685" class="LineNr"> 685 </span>  <a href='cell.mu.html#L128'>allocate-pair</a> nil-ah
<span id="L686" class="LineNr"> 686 </span>  <span class="PreProc">var</span> one-storage: (handle <a href='cell.mu.html#L1'>cell</a>)
<span id="L687" class="LineNr"> 687 </span>  <span class="PreProc">var</span> one-ah/<span class="muRegEdx">edx</span>: (addr handle <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> address one-storage
<span id="L688" class="LineNr"> 688 </span>  <a href='cell.mu.html#L99'>new-integer</a> one-ah, <span class="Constant">1</span>
<span id="L689" class="LineNr"> 689 </span>  <span class="PreProc">var</span> add-storage: (handle <a href='cell.mu.html#L1'>cell</a>)
<span id="L690" class="LineNr"> 690 </span>  <span class="PreProc">var</span> add-ah/<span class="muRegEbx">ebx</span>: (addr handle <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> address add-storage
<span id="L691" class="LineNr"> 691 </span>  <a href='cell.mu.html#L43'>new-symbol</a> add-ah, <span class="Constant">&quot;+&quot;</span>
<span id="L692" class="LineNr"> 692 </span>  <span class="muComment"># input is (+ 1)</span>
<span id="L693" class="LineNr"> 693 </span>  <span class="PreProc">var</span> tmp-storage: (handle <a href='cell.mu.html#L1'>cell</a>)
<span id="L694" class="LineNr"> 694 </span>  <span class="PreProc">var</span> tmp-ah/<span class="muRegEsi">esi</span>: (addr handle <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> address tmp-storage
<span id="L695" class="LineNr"> 695 </span>  <a href='cell.mu.html#L142'>new-pair</a> tmp-ah, *one-ah, *nil-ah
<span id="L696" class="LineNr"> 696 </span>  <a href='cell.mu.html#L142'>new-pair</a> tmp-ah, *add-ah, *tmp-ah
<span id="L697" class="LineNr"> 697 </span><span class="CommentedCode">#?   dump-cell tmp-ah</span>
<span id="L698" class="LineNr"> 698 </span>  <span class="muComment">#</span>
<span id="L699" class="LineNr"> 699 </span>  <span class="PreProc">var</span> globals-storage: <a href='global.mu.html#L1'>global-table</a>
<span id="L700" class="LineNr"> 700 </span>  <span class="PreProc">var</span> globals/<span class="muRegEdx">edx</span>: (addr <a href='global.mu.html#L1'>global-table</a>) <span class="Special">&lt;-</span> address globals-storage
<span id="L701" class="LineNr"> 701 </span>  <a href='global.mu.html#L15'>initialize-globals</a> globals
<span id="L702" class="LineNr"> 702 </span>  <span class="muComment">#</span>
<span id="L703" class="LineNr"> 703 </span>  <a href='evaluate.mu.html#L11'>evaluate</a> tmp-ah, tmp-ah, *nil-ah, globals, t, <span class="Constant">0</span>/no-screen, <span class="Constant">0</span>/no-keyboard, <span class="Constant">0</span>/definitions-created, <span class="Constant">0</span>/call-number
<span id="L704" class="LineNr"> 704 </span>  <span class="muComment"># no crash</span>
<span id="L705" class="LineNr"> 705 </span><span class="Delimiter">}</span>
<span id="L706" class="LineNr"> 706 </span>
<span id="L707" class="LineNr"> 707 </span><span class="PreProc">fn</span> <span class="muFunction"><a href='primitives.mu.html#L707'>apply-subtract</a></span> _args-ah: (addr handle <a href='cell.mu.html#L1'>cell</a>), out: (addr handle <a href='cell.mu.html#L1'>cell</a>), trace: (addr trace) <span class="Delimiter">{</span>
<span id="L708" class="LineNr"> 708 </span>  <a href='trace.mu.html#L185'>trace-text</a> trace, <span class="Constant">&quot;eval&quot;</span>, <span class="Constant">&quot;apply -&quot;</span>
<span id="L709" class="LineNr"> 709 </span>  <span class="PreProc">var</span> args-ah/eax: (addr handle <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> copy _args-ah
<span id="L710" class="LineNr"> 710 </span>  <span class="PreProc">var</span> _args/eax: (addr <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> <a href='../120allocate.subx.html#L235'>lookup</a> *args-ah
<span id="L711" class="LineNr"> 711 </span>  <span class="PreProc">var</span> args/<span class="muRegEsi">esi</span>: (addr <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> copy _args
<span id="L712" class="LineNr"> 712 </span>  <span class="Delimiter">{</span>
<span id="L713" class="LineNr"> 713 </span>    <span class="PreProc">var</span> args-type/eax: (addr int) <span class="Special">&lt;-</span> get args, <span class="PreProc">type</span>
<span id="L714" class="LineNr"> 714 </span>    compare *args-type, <span class="Constant">0</span>/pair
<span id="L715" class="LineNr"> 715 </span>    <span class="PreProc">break-if-=</span>
<span id="L716" class="LineNr"> 716 </span>    <span class="Special"><a href='trace.mu.html#L197'>error</a></span> trace, <span class="Constant">&quot;args to - are not a list&quot;</span>
<span id="L717" class="LineNr"> 717 </span>    <span class="PreProc">return</span>
<span id="L718" class="LineNr"> 718 </span>  <span class="Delimiter">}</span>
<span id="L719" class="LineNr"> 719 </span>  <span class="PreProc">var</span> empty-args?/eax: boolean <span class="Special">&lt;-</span> <a href='print.mu.html#L390'>nil?</a> args
<span id="L720" class="LineNr"> 720 </span>  compare empty-args?, <span class="Constant">0</span>/false
<span id="L721" class="LineNr"> 721 </span>  <span class="Delimiter">{</span>
<span id="L722" class="LineNr"> 722 </span>    <span class="PreProc">break-if-=</span>
<span id="L723" class="LineNr"> 723 </span>    <span class="Special"><a href='trace.mu.html#L197'>error</a></span> trace, <span class="Constant">&quot;- needs 2 args but got 0&quot;</span>
<span id="L724" class="LineNr"> 724 </span>    <span class="PreProc">return</span>
<span id="L725" class="LineNr"> 725 </span>  <span class="Delimiter">}</span>
<span id="L726" class="LineNr"> 726 </span>  <span class="muComment"># args-&gt;left-&gt;value</span>
<span id="L727" class="LineNr"> 727 </span>  <span class="PreProc">var</span> first-ah/eax: (addr handle <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> get args, left
<span id="L728" class="LineNr"> 728 </span>  <span class="PreProc">var</span> first/eax: (addr <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> <a href='../120allocate.subx.html#L235'>lookup</a> *first-ah
<span id="L729" class="LineNr"> 729 </span>  <span class="Delimiter">{</span>
<span id="L730" class="LineNr"> 730 </span>    <span class="PreProc">var</span> first-type/eax: (addr int) <span class="Special">&lt;-</span> get first, <span class="PreProc">type</span>
<span id="L731" class="LineNr"> 731 </span>    compare *first-type, <span class="Constant">1</span>/number
<span id="L732" class="LineNr"> 732 </span>    <span class="PreProc">break-if-=</span>
<span id="L733" class="LineNr"> 733 </span>    <span class="Special"><a href='trace.mu.html#L197'>error</a></span> trace, <span class="Constant">&quot;first arg for - is not a number&quot;</span>
<span id="L734" class="LineNr"> 734 </span>    <span class="PreProc">return</span>
<span id="L735" class="LineNr"> 735 </span>  <span class="Delimiter">}</span>
<span id="L736" class="LineNr"> 736 </span>  <span class="PreProc">var</span> first-value/<span class="muRegEcx">ecx</span>: (addr float) <span class="Special">&lt;-</span> get first, number-data
<span id="L737" class="LineNr"> 737 </span>  <span class="muComment"># args-&gt;right-&gt;left-&gt;value</span>
<span id="L738" class="LineNr"> 738 </span>  <span class="PreProc">var</span> right-ah/eax: (addr handle <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> get args, right
<span id="L739" class="LineNr"> 739 </span>  <span class="PreProc">var</span> right/eax: (addr <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> <a href='../120allocate.subx.html#L235'>lookup</a> *right-ah
<span id="L740" class="LineNr"> 740 </span>  <span class="Delimiter">{</span>
<span id="L741" class="LineNr"> 741 </span>    <span class="PreProc">var</span> right-type/eax: (addr int) <span class="Special">&lt;-</span> get right, <span class="PreProc">type</span>
<span id="L742" class="LineNr"> 742 </span>    compare *right-type, <span class="Constant">0</span>/pair
<span id="L743" class="LineNr"> 743 </span>    <span class="PreProc">break-if-=</span>
<span id="L744" class="LineNr"> 744 </span>    <span class="Special"><a href='trace.mu.html#L197'>error</a></span> trace, <span class="Constant">&quot;- encountered non-pair&quot;</span>
<span id="L745" class="LineNr"> 745 </span>    <span class="PreProc">return</span>
<span id="L746" class="LineNr"> 746 </span>  <span class="Delimiter">}</span>
<span id="L747" class="LineNr"> 747 </span>  <span class="Delimiter">{</span>
<span id="L748" class="LineNr"> 748 </span>    <span class="PreProc">var</span> <a href='print.mu.html#L390'>nil?</a>/eax: boolean <span class="Special">&lt;-</span> <a href='print.mu.html#L390'>nil?</a> right
<span id="L749" class="LineNr"> 749 </span>    compare <a href='print.mu.html#L390'>nil?</a>, <span class="Constant">0</span>/false
<span id="L750" class="LineNr"> 750 </span>    <span class="PreProc">break-if-=</span>
<span id="L751" class="LineNr"> 751 </span>    <span class="Special"><a href='trace.mu.html#L197'>error</a></span> trace, <span class="Constant">&quot;- needs 2 args but got 1&quot;</span>
<span id="L752" class="LineNr"> 752 </span>    <span class="PreProc">return</span>
<span id="L753" class="LineNr"> 753 </span>  <span class="Delimiter">}</span>
<span id="L754" class="LineNr"> 754 </span>  <span class="PreProc">var</span> second-ah/eax: (addr handle <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> get right, left
<span id="L755" class="LineNr"> 755 </span>  <span class="PreProc">var</span> second/eax: (addr <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> <a href='../120allocate.subx.html#L235'>lookup</a> *second-ah
<span id="L756" class="LineNr"> 756 </span>  <span class="Delimiter">{</span>
<span id="L757" class="LineNr"> 757 </span>    <span class="PreProc">var</span> second-type/eax: (addr int) <span class="Special">&lt;-</span> get second, <span class="PreProc">type</span>
<span id="L758" class="LineNr"> 758 </span>    compare *second-type, <span class="Constant">1</span>/number
<span id="L759" class="LineNr"> 759 </span>    <span class="PreProc">break-if-=</span>
<span id="L760" class="LineNr"> 760 </span>    <span class="Special"><a href='trace.mu.html#L197'>error</a></span> trace, <span class="Constant">&quot;second arg for - is not a number&quot;</span>
<span id="L761" class="LineNr"> 761 </span>    <span class="PreProc">return</span>
<span id="L762" class="LineNr"> 762 </span>  <span class="Delimiter">}</span>
<span id="L763" class="LineNr"> 763 </span>  <span class="PreProc">var</span> second-value/<span class="muRegEdx">edx</span>: (addr float) <span class="Special">&lt;-</span> get second, number-data
<span id="L764" class="LineNr"> 764 </span>  <span class="muComment"># subtract</span>
<span id="L765" class="LineNr"> 765 </span>  <span class="PreProc">var</span> result/<span class="Constant">xmm0</span>: float <span class="Special">&lt;-</span> copy *first-value
<span id="L766" class="LineNr"> 766 </span>  result <span class="Special">&lt;-</span> subtract *second-value
<span id="L767" class="LineNr"> 767 </span>  <a href='cell.mu.html#L112'>new-float</a> out, result
<span id="L768" class="LineNr"> 768 </span><span class="Delimiter">}</span>
<span id="L769" class="LineNr"> 769 </span>
<span id="L770" class="LineNr"> 770 </span><span class="PreProc">fn</span> <span class="muFunction"><a href='primitives.mu.html#L770'>apply-multiply</a></span> _args-ah: (addr handle <a href='cell.mu.html#L1'>cell</a>), out: (addr handle <a href='cell.mu.html#L1'>cell</a>), trace: (addr trace) <span class="Delimiter">{</span>
<span id="L771" class="LineNr"> 771 </span>  <a href='trace.mu.html#L185'>trace-text</a> trace, <span class="Constant">&quot;eval&quot;</span>, <span class="Constant">&quot;apply *&quot;</span>
<span id="L772" class="LineNr"> 772 </span>  <span class="PreProc">var</span> args-ah/eax: (addr handle <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> copy _args-ah
<span id="L773" class="LineNr"> 773 </span>  <span class="PreProc">var</span> _args/eax: (addr <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> <a href='../120allocate.subx.html#L235'>lookup</a> *args-ah
<span id="L774" class="LineNr"> 774 </span>  <span class="PreProc">var</span> args/<span class="muRegEsi">esi</span>: (addr <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> copy _args
<span id="L775" class="LineNr"> 775 </span>  <span class="Delimiter">{</span>
<span id="L776" class="LineNr"> 776 </span>    <span class="PreProc">var</span> args-type/eax: (addr int) <span class="Special">&lt;-</span> get args, <span class="PreProc">type</span>
<span id="L777" class="LineNr"> 777 </span>    compare *args-type, <span class="Constant">0</span>/pair
<span id="L778" class="LineNr"> 778 </span>    <span class="PreProc">break-if-=</span>
<span id="L779" class="LineNr"> 779 </span>    <span class="Special"><a href='trace.mu.html#L197'>error</a></span> trace, <span class="Constant">&quot;args to * are not a list&quot;</span>
<span id="L780" class="LineNr"> 780 </span>    <span class="PreProc">return</span>
<span id="L781" class="LineNr"> 781 </span>  <span class="Delimiter">}</span>
<span id="L782" class="LineNr"> 782 </span>  <span class="PreProc">var</span> empty-args?/eax: boolean <span class="Special">&lt;-</span> <a href='print.mu.html#L390'>nil?</a> args
<span id="L783" class="LineNr"> 783 </span>  compare empty-args?, <span class="Constant">0</span>/false
<span id="L784" class="LineNr"> 784 </span>  <span class="Delimiter">{</span>
<span id="L785" class="LineNr"> 785 </span>    <span class="PreProc">break-if-=</span>
<span id="L786" class="LineNr"> 786 </span>    <span class="Special"><a href='trace.mu.html#L197'>error</a></span> trace, <span class="Constant">&quot;* needs 2 args but got 0&quot;</span>
<span id="L787" class="LineNr"> 787 </span>    <span class="PreProc">return</span>
<span id="L788" class="LineNr"> 788 </span>  <span class="Delimiter">}</span>
<span id="L789" class="LineNr"> 789 </span>  <span class="muComment"># args-&gt;left-&gt;value</span>
<span id="L790" class="LineNr"> 790 </span>  <span class="PreProc">var</span> first-ah/eax: (addr handle <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> get args, left
<span id="L791" class="LineNr"> 791 </span>  <span class="PreProc">var</span> first/eax: (addr <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> <a href='../120allocate.subx.html#L235'>lookup</a> *first-ah
<span id="L792" class="LineNr"> 792 </span>  <span class="Delimiter">{</span>
<span id="L793" class="LineNr"> 793 </span>    <span class="PreProc">var</span> first-type/eax: (addr int) <span class="Special">&lt;-</span> get first, <span class="PreProc">type</span>
<span id="L794" class="LineNr"> 794 </span>    compare *first-type, <span class="Constant">1</span>/number
<span id="L795" class="LineNr"> 795 </span>    <span class="PreProc">break-if-=</span>
<span id="L796" class="LineNr"> 796 </span>    <span class="Special"><a href='trace.mu.html#L197'>error</a></span> trace, <span class="Constant">&quot;first arg for * is not a number&quot;</span>
<span id="L797" class="LineNr"> 797 </span>    <span class="PreProc">return</span>
<span id="L798" class="LineNr"> 798 </span>  <span class="Delimiter">}</span>
<span id="L799" class="LineNr"> 799 </span>  <span class="PreProc">var</span> first-value/<span class="muRegEcx">ecx</span>: (addr float) <span class="Special">&lt;-</span> get first, number-data
<span id="L800" class="LineNr"> 800 </span>  <span class="muComment"># args-&gt;right-&gt;left-&gt;value</span>
<span id="L801" class="LineNr"> 801 </span>  <span class="PreProc">var</span> right-ah/eax: (addr handle <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> get args, right
<span id="L802" class="LineNr"> 802 </span>  <span class="PreProc">var</span> right/eax: (addr <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> <a href='../120allocate.subx.html#L235'>lookup</a> *right-ah
<span id="L803" class="LineNr"> 803 </span>  <span class="Delimiter">{</span>
<span id="L804" class="LineNr"> 804 </span>    <span class="PreProc">var</span> right-type/eax: (addr int) <span class="Special">&lt;-</span> get right, <span class="PreProc">type</span>
<span id="L805" class="LineNr"> 805 </span>    compare *right-type, <span class="Constant">0</span>/pair
<span id="L806" class="LineNr"> 806 </span>    <span class="PreProc">break-if-=</span>
<span id="L807" class="LineNr"> 807 </span>    <span class="Special"><a href='trace.mu.html#L197'>error</a></span> trace, <span class="Constant">&quot;* encountered non-pair&quot;</span>
<span id="L808" class="LineNr"> 808 </span>    <span class="PreProc">return</span>
<span id="L809" class="LineNr"> 809 </span>  <span class="Delimiter">}</span>
<span id="L810" class="LineNr"> 810 </span>  <span class="Delimiter">{</span>
<span id="L811" class="LineNr"> 811 </span>    <span class="PreProc">var</span> <a href='print.mu.html#L390'>nil?</a>/eax: boolean <span class="Special">&lt;-</span> <a href='print.mu.html#L390'>nil?</a> right
<span id="L812" class="LineNr"> 812 </span>    compare <a href='print.mu.html#L390'>nil?</a>, <span class="Constant">0</span>/false
<span id="L813" class="LineNr"> 813 </span>    <span class="PreProc">break-if-=</span>
<span id="L814" class="LineNr"> 814 </span>    <span class="Special"><a href='trace.mu.html#L197'>error</a></span> trace, <span class="Constant">&quot;* needs 2 args but got 1&quot;</span>
<span id="L815" class="LineNr"> 815 </span>    <span class="PreProc">return</span>
<span id="L816" class="LineNr"> 816 </span>  <span class="Delimiter">}</span>
<span id="L817" class="LineNr"> 817 </span>  <span class="PreProc">var</span> second-ah/eax: (addr handle <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> get right, left
<span id="L818" class="LineNr"> 818 </span>  <span class="PreProc">var</span> second/eax: (addr <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> <a href='../120allocate.subx.html#L235'>lookup</a> *second-ah
<span id="L819" class="LineNr"> 819 </span>  <span class="Delimiter">{</span>
<span id="L820" class="LineNr"> 820 </span>    <span class="PreProc">var</span> second-type/eax: (addr int) <span class="Special">&lt;-</span> get second, <span class="PreProc">type</span>
<span id="L821" class="LineNr"> 821 </span>    compare *second-type, <span class="Constant">1</span>/number
<span id="L822" class="LineNr"> 822 </span>    <span class="PreProc">break-if-=</span>
<span id="L823" class="LineNr"> 823 </span>    <span class="Special"><a href='trace.mu.html#L197'>error</a></span> trace, <span class="Constant">&quot;second arg for * is not a number&quot;</span>
<span id="L824" class="LineNr"> 824 </span>    <span class="PreProc">return</span>
<span id="L825" class="LineNr"> 825 </span>  <span class="Delimiter">}</span>
<span id="L826" class="LineNr"> 826 </span>  <span class="PreProc">var</span> second-value/<span class="muRegEdx">edx</span>: (addr float) <span class="Special">&lt;-</span> get second, number-data
<span id="L827" class="LineNr"> 827 </span>  <span class="muComment"># multiply</span>
<span id="L828" class="LineNr"> 828 </span>  <span class="PreProc">var</span> result/<span class="Constant">xmm0</span>: float <span class="Special">&lt;-</span> copy *first-value
<span id="L829" class="LineNr"> 829 </span>  result <span class="Special">&lt;-</span> multiply *second-value
<span id="L830" class="LineNr"> 830 </span>  <a href='cell.mu.html#L112'>new-float</a> out, result
<span id="L831" class="LineNr"> 831 </span><span class="Delimiter">}</span>
<span id="L832" class="LineNr"> 832 </span>
<span id="L833" class="LineNr"> 833 </span><span class="PreProc">fn</span> <span class="muFunction"><a href='primitives.mu.html#L833'>apply-divide</a></span> _args-ah: (addr handle <a href='cell.mu.html#L1'>cell</a>), out: (addr handle <a href='cell.mu.html#L1'>cell</a>), trace: (addr trace) <span class="Delimiter">{</span>
<span id="L834" class="LineNr"> 834 </span>  <a href='trace.mu.html#L185'>trace-text</a> trace, <span class="Constant">&quot;eval&quot;</span>, <span class="Constant">&quot;apply /&quot;</span>
<span id="L835" class="LineNr"> 835 </span>  <span class="PreProc">var</span> args-ah/eax: (addr handle <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> copy _args-ah
<span id="L836" class="LineNr"> 836 </span>  <span class="PreProc">var</span> _args/eax: (addr <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> <a href='../120allocate.subx.html#L235'>lookup</a> *args-ah
<span id="L837" class="LineNr"> 837 </span>  <span class="PreProc">var</span> args/<span class="muRegEsi">esi</span>: (addr <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> copy _args
<span id="L838" class="LineNr"> 838 </span>  <span class="Delimiter">{</span>
<span id="L839" class="LineNr"> 839 </span>    <span class="PreProc">var</span> args-type/eax: (addr int) <span class="Special">&lt;-</span> get args, <span class="PreProc">type</span>
<span id="L840" class="LineNr"> 840 </span>    compare *args-type, <span class="Constant">0</span>/pair
<span id="L841" class="LineNr"> 841 </span>    <span class="PreProc">break-if-=</span>
<span id="L842" class="LineNr"> 842 </span>    <span class="Special"><a href='trace.mu.html#L197'>error</a></span> trace, <span class="Constant">&quot;args to / are not a list&quot;</span>
<span id="L843" class="LineNr"> 843 </span>    <span class="PreProc">return</span>
<span id="L844" class="LineNr"> 844 </span>  <span class="Delimiter">}</span>
<span id="L845" class="LineNr"> 845 </span>  <span class="PreProc">var</span> empty-args?/eax: boolean <span class="Special">&lt;-</span> <a href='print.mu.html#L390'>nil?</a> args
<span id="L846" class="LineNr"> 846 </span>  compare empty-args?, <span class="Constant">0</span>/false
<span id="L847" class="LineNr"> 847 </span>  <span class="Delimiter">{</span>
<span id="L848" class="LineNr"> 848 </span>    <span class="PreProc">break-if-=</span>
<span id="L849" class="LineNr"> 849 </span>    <span class="Special"><a href='trace.mu.html#L197'>error</a></span> trace, <span class="Constant">&quot;/ needs 2 args but got 0&quot;</span>
<span id="L850" class="LineNr"> 850 </span>    <span class="PreProc">return</span>
<span id="L851" class="LineNr"> 851 </span>  <span class="Delimiter">}</span>
<span id="L852" class="LineNr"> 852 </span>  <span class="muComment"># args-&gt;left-&gt;value</span>
<span id="L853" class="LineNr"> 853 </span>  <span class="PreProc">var</span> first-ah/eax: (addr handle <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> get args, left
<span id="L854" class="LineNr"> 854 </span>  <span class="PreProc">var</span> first/eax: (addr <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> <a href='../120allocate.subx.html#L235'>lookup</a> *first-ah
<span id="L855" class="LineNr"> 855 </span>  <span class="Delimiter">{</span>
<span id="L856" class="LineNr"> 856 </span>    <span class="PreProc">var</span> first-type/eax: (addr int) <span class="Special">&lt;-</span> get first, <span class="PreProc">type</span>
<span id="L857" class="LineNr"> 857 </span>    compare *first-type, <span class="Constant">1</span>/number
<span id="L858" class="LineNr"> 858 </span>    <span class="PreProc">break-if-=</span>
<span id="L859" class="LineNr"> 859 </span>    <span class="Special"><a href='trace.mu.html#L197'>error</a></span> trace, <span class="Constant">&quot;first arg for / is not a number&quot;</span>
<span id="L860" class="LineNr"> 860 </span>    <span class="PreProc">return</span>
<span id="L861" class="LineNr"> 861 </span>  <span class="Delimiter">}</span>
<span id="L862" class="LineNr"> 862 </span>  <span class="PreProc">var</span> first-value/<span class="muRegEcx">ecx</span>: (addr float) <span class="Special">&lt;-</span> get first, number-data
<span id="L863" class="LineNr"> 863 </span>  <span class="muComment"># args-&gt;right-&gt;left-&gt;value</span>
<span id="L864" class="LineNr"> 864 </span>  <span class="PreProc">var</span> right-ah/eax: (addr handle <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> get args, right
<span id="L865" class="LineNr"> 865 </span>  <span class="PreProc">var</span> right/eax: (addr <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> <a href='../120allocate.subx.html#L235'>lookup</a> *right-ah
<span id="L866" class="LineNr"> 866 </span>  <span class="Delimiter">{</span>
<span id="L867" class="LineNr"> 867 </span>    <span class="PreProc">var</span> right-type/eax: (addr int) <span class="Special">&lt;-</span> get right, <span class="PreProc">type</span>
<span id="L868" class="LineNr"> 868 </span>    compare *right-type, <span class="Constant">0</span>/pair
<span id="L869" class="LineNr"> 869 </span>    <span class="PreProc">break-if-=</span>
<span id="L870" class="LineNr"> 870 </span>    <span class="Special"><a href='trace.mu.html#L197'>error</a></span> trace, <span class="Constant">&quot;/ encountered non-pair&quot;</span>
<span id="L871" class="LineNr"> 871 </span>    <span class="PreProc">return</span>
<span id="L872" class="LineNr"> 872 </span>  <span class="Delimiter">}</span>
<span id="L873" class="LineNr"> 873 </span>  <span class="Delimiter">{</span>
<span id="L874" class="LineNr"> 874 </span>    <span class="PreProc">var</span> <a href='print.mu.html#L390'>nil?</a>/eax: boolean <span class="Special">&lt;-</span> <a href='print.mu.html#L390'>nil?</a> right
<span id="L875" class="LineNr"> 875 </span>    compare <a href='print.mu.html#L390'>nil?</a>, <span class="Constant">0</span>/false
<span id="L876" class="LineNr"> 876 </span>    <span class="PreProc">break-if-=</span>
<span id="L877" class="LineNr"> 877 </span>    <span class="Special"><a href='trace.mu.html#L197'>error</a></span> trace, <span class="Constant">&quot;/ needs 2 args but got 1&quot;</span>
<span id="L878" class="LineNr"> 878 </span>    <span class="PreProc">return</span>
<span id="L879" class="LineNr"> 879 </span>  <span class="Delimiter">}</span>
<span id="L880" class="LineNr"> 880 </span>  <span class="PreProc">var</span> second-ah/eax: (addr handle <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> get right, left
<span id="L881" class="LineNr"> 881 </span>  <span class="PreProc">var</span> second/eax: (addr <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> <a href='../120allocate.subx.html#L235'>lookup</a> *second-ah
<span id="L882" class="LineNr"> 882 </span>  <span class="Delimiter">{</span>
<span id="L883" class="LineNr"> 883 </span>    <span class="PreProc">var</span> second-type/eax: (addr int) <span class="Special">&lt;-</span> get second, <span class="PreProc">type</span>
<span id="L884" class="LineNr"> 884 </span>    compare *second-type, <span class="Constant">1</span>/number
<span id="L885" class="LineNr"> 885 </span>    <span class="PreProc">break-if-=</span>
<span id="L886" class="LineNr"> 886 </span>    <span class="Special"><a href='trace.mu.html#L197'>error</a></span> trace, <span class="Constant">&quot;second arg for / is not a number&quot;</span>
<span id="L887" class="LineNr"> 887 </span>    <span class="PreProc">return</span>
<span id="L888" class="LineNr"> 888 </span>  <span class="Delimiter">}</span>
<span id="L889" class="LineNr"> 889 </span>  <span class="PreProc">var</span> second-value/<span class="muRegEdx">edx</span>: (addr float) <span class="Special">&lt;-</span> get second, number-data
<span id="L890" class="LineNr"> 890 </span>  <span class="muComment"># divide</span>
<span id="L891" class="LineNr"> 891 </span>  <span class="PreProc">var</span> result/<span class="Constant">xmm0</span>: float <span class="Special">&lt;-</span> copy *first-value
<span id="L892" class="LineNr"> 892 </span>  result <span class="Special">&lt;-</span> divide *second-value
<span id="L893" class="LineNr"> 893 </span>  <a href='cell.mu.html#L112'>new-float</a> out, result
<span id="L894" class="LineNr"> 894 </span><span class="Delimiter">}</span>
<span id="L895" class="LineNr"> 895 </span>
<span id="L896" class="LineNr"> 896 </span><span class="PreProc">fn</span> <span class="muFunction"><a href='primitives.mu.html#L896'>apply-remainder</a></span> _args-ah: (addr handle <a href='cell.mu.html#L1'>cell</a>), out: (addr handle <a href='cell.mu.html#L1'>cell</a>), trace: (addr trace) <span class="Delimiter">{</span>
<span id="L897" class="LineNr"> 897 </span>  <a href='trace.mu.html#L185'>trace-text</a> trace, <span class="Constant">&quot;eval&quot;</span>, <span class="Constant">&quot;apply %&quot;</span>
<span id="L898" class="LineNr"> 898 </span>  <span class="PreProc">var</span> args-ah/eax: (addr handle <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> copy _args-ah
<span id="L899" class="LineNr"> 899 </span>  <span class="PreProc">var</span> _args/eax: (addr <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> <a href='../120allocate.subx.html#L235'>lookup</a> *args-ah
<span id="L900" class="LineNr"> 900 </span>  <span class="PreProc">var</span> args/<span class="muRegEsi">esi</span>: (addr <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> copy _args
<span id="L901" class="LineNr"> 901 </span>  <span class="Delimiter">{</span>
<span id="L902" class="LineNr"> 902 </span>    <span class="PreProc">var</span> args-type/eax: (addr int) <span class="Special">&lt;-</span> get args, <span class="PreProc">type</span>
<span id="L903" class="LineNr"> 903 </span>    compare *args-type, <span class="Constant">0</span>/pair
<span id="L904" class="LineNr"> 904 </span>    <span class="PreProc">break-if-=</span>
<span id="L905" class="LineNr"> 905 </span>    <span class="Special"><a href='trace.mu.html#L197'>error</a></span> trace, <span class="Constant">&quot;args to % are not a list&quot;</span>
<span id="L906" class="LineNr"> 906 </span>    <span class="PreProc">return</span>
<span id="L907" class="LineNr"> 907 </span>  <span class="Delimiter">}</span>
<span id="L908" class="LineNr"> 908 </span>  <span class="PreProc">var</span> empty-args?/eax: boolean <span class="Special">&lt;-</span> <a href='print.mu.html#L390'>nil?</a> args
<span id="L909" class="LineNr"> 909 </span>  compare empty-args?, <span class="Constant">0</span>/false
<span id="L910" class="LineNr"> 910 </span>  <span class="Delimiter">{</span>
<span id="L911" class="LineNr"> 911 </span>    <span class="PreProc">break-if-=</span>
<span id="L912" class="LineNr"> 912 </span>    <span class="Special"><a href='trace.mu.html#L197'>error</a></span> trace, <span class="Constant">&quot;% needs 2 args but got 0&quot;</span>
<span id="L913" class="LineNr"> 913 </span>    <span class="PreProc">return</span>
<span id="L914" class="LineNr"> 914 </span>  <span class="Delimiter">}</span>
<span id="L915" class="LineNr"> 915 </span>  <span class="muComment"># args-&gt;left-&gt;value</span>
<span id="L916" class="LineNr"> 916 </span>  <span class="PreProc">var</span> first-ah/eax: (addr handle <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> get args, left
<span id="L917" class="LineNr"> 917 </span>  <span class="PreProc">var</span> first/eax: (addr <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> <a href='../120allocate.subx.html#L235'>lookup</a> *first-ah
<span id="L918" class="LineNr"> 918 </span>  <span class="Delimiter">{</span>
<span id="L919" class="LineNr"> 919 </span>    <span class="PreProc">var</span> first-type/eax: (addr int) <span class="Special">&lt;-</span> get first, <span class="PreProc">type</span>
<span id="L920" class="LineNr"> 920 </span>    compare *first-type, <span class="Constant">1</span>/number
<span id="L921" class="LineNr"> 921 </span>    <span class="PreProc">break-if-=</span>
<span id="L922" class="LineNr"> 922 </span>    <span class="Special"><a href='trace.mu.html#L197'>error</a></span> trace, <span class="Constant">&quot;first arg for % is not a number&quot;</span>
<span id="L923" class="LineNr"> 923 </span>    <span class="PreProc">return</span>
<span id="L924" class="LineNr"> 924 </span>  <span class="Delimiter">}</span>
<span id="L925" class="LineNr"> 925 </span>  <span class="PreProc">var</span> first-value/<span class="muRegEcx">ecx</span>: (addr float) <span class="Special">&lt;-</span> get first, number-data
<span id="L926" class="LineNr"> 926 </span>  <span class="muComment"># args-&gt;right-&gt;left-&gt;value</span>
<span id="L927" class="LineNr"> 927 </span>  <span class="PreProc">var</span> right-ah/eax: (addr handle <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> get args, right
<span id="L928" class="LineNr"> 928 </span>  <span class="PreProc">var</span> right/eax: (addr <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> <a href='../120allocate.subx.html#L235'>lookup</a> *right-ah
<span id="L929" class="LineNr"> 929 </span>  <span class="Delimiter">{</span>
<span id="L930" class="LineNr"> 930 </span>    <span class="PreProc">var</span> right-type/eax: (addr int) <span class="Special">&lt;-</span> get right, <span class="PreProc">type</span>
<span id="L931" class="LineNr"> 931 </span>    compare *right-type, <span class="Constant">0</span>/pair
<span id="L932" class="LineNr"> 932 </span>    <span class="PreProc">break-if-=</span>
<span id="L933" class="LineNr"> 933 </span>    <span class="Special"><a href='trace.mu.html#L197'>error</a></span> trace, <span class="Constant">&quot;% encountered non-pair&quot;</span>
<span id="L934" class="LineNr"> 934 </span>    <span class="PreProc">return</span>
<span id="L935" class="LineNr"> 935 </span>  <span class="Delimiter">}</span>
<span id="L936" class="LineNr"> 936 </span>  <span class="Delimiter">{</span>
<span id="L937" class="LineNr"> 937 </span>    <span class="PreProc">var</span> <a href='print.mu.html#L390'>nil?</a>/eax: boolean <span class="Special">&lt;-</span> <a href='print.mu.html#L390'>nil?</a> right
<span id="L938" class="LineNr"> 938 </span>    compare <a href='print.mu.html#L390'>nil?</a>, <span class="Constant">0</span>/false
<span id="L939" class="LineNr"> 939 </span>    <span class="PreProc">break-if-=</span>
<span id="L940" class="LineNr"> 940 </span>    <span class="Special"><a href='trace.mu.html#L197'>error</a></span> trace, <span class="Constant">&quot;% needs 2 args but got 1&quot;</span>
<span id="L941" class="LineNr"> 941 </span>    <span class="PreProc">return</span>
<span id="L942" class="LineNr"> 942 </span>  <span class="Delimiter">}</span>
<span id="L943" class="LineNr"> 943 </span>  <span class="PreProc">var</span> second-ah/eax: (addr handle <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> get right, left
<span id="L944" class="LineNr"> 944 </span>  <span class="PreProc">var</span> second/eax: (addr <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> <a href='../120allocate.subx.html#L235'>lookup</a> *second-ah
<span id="L945" class="LineNr"> 945 </span>  <span class="Delimiter">{</span>
<span id="L946" class="LineNr"> 946 </span>    <span class="PreProc">var</span> second-type/eax: (addr int) <span class="Special">&lt;-</span> get second, <span class="PreProc">type</span>
<span id="L947" class="LineNr"> 947 </span>    compare *second-type, <span class="Constant">1</span>/number
<span id="L948" class="LineNr"> 948 </span>    <span class="PreProc">break-if-=</span>
<span id="L949" class="LineNr"> 949 </span>    <span class="Special"><a href='trace.mu.html#L197'>error</a></span> trace, <span class="Constant">&quot;second arg for % is not a number&quot;</span>
<span id="L950" class="LineNr"> 950 </span>    <span class="PreProc">return</span>
<span id="L951" class="LineNr"> 951 </span>  <span class="Delimiter">}</span>
<span id="L952" class="LineNr"> 952 </span>  <span class="PreProc">var</span> second-value/<span class="muRegEdx">edx</span>: (addr float) <span class="Special">&lt;-</span> get second, number-data
<span id="L953" class="LineNr"> 953 </span>  <span class="muComment"># divide</span>
<span id="L954" class="LineNr"> 954 </span>  <span class="PreProc">var</span> quotient/<span class="Constant">xmm0</span>: float <span class="Special">&lt;-</span> copy *first-value
<span id="L955" class="LineNr"> 955 </span>  quotient <span class="Special">&lt;-</span> divide *second-value
<span id="L956" class="LineNr"> 956 </span>  <span class="PreProc">var</span> quotient-int/eax: int <span class="Special">&lt;-</span> truncate quotient
<span id="L957" class="LineNr"> 957 </span>  quotient <span class="Special">&lt;-</span> convert quotient-int
<span id="L958" class="LineNr"> 958 </span>  <span class="PreProc">var</span> sub-result/<span class="Constant">xmm1</span>: float <span class="Special">&lt;-</span> copy quotient
<span id="L959" class="LineNr"> 959 </span>  sub-result <span class="Special">&lt;-</span> multiply *second-value
<span id="L960" class="LineNr"> 960 </span>  <span class="PreProc">var</span> result/<span class="Constant">xmm0</span>: float <span class="Special">&lt;-</span> copy *first-value
<span id="L961" class="LineNr"> 961 </span>  result <span class="Special">&lt;-</span> subtract sub-result
<span id="L962" class="LineNr"> 962 </span>  <a href='cell.mu.html#L112'>new-float</a> out, result
<span id="L963" class="LineNr"> 963 </span><span class="Delimiter">}</span>
<span id="L964" class="LineNr"> 964 </span>
<span id="L965" class="LineNr"> 965 </span><span class="PreProc">fn</span> <span class="muFunction"><a href='primitives.mu.html#L965'>apply-square-root</a></span> _args-ah: (addr handle <a href='cell.mu.html#L1'>cell</a>), out: (addr handle <a href='cell.mu.html#L1'>cell</a>), trace: (addr trace) <span class="Delimiter">{</span>
<span id="L966" class="LineNr"> 966 </span>  <a href='trace.mu.html#L185'>trace-text</a> trace, <span class="Constant">&quot;eval&quot;</span>, <span class="Constant">&quot;apply sqrt&quot;</span>
<span id="L967" class="LineNr"> 967 </span>  <span class="PreProc">var</span> args-ah/eax: (addr handle <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> copy _args-ah
<span id="L968" class="LineNr"> 968 </span>  <span class="PreProc">var</span> _args/eax: (addr <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> <a href='../120allocate.subx.html#L235'>lookup</a> *args-ah
<span id="L969" class="LineNr"> 969 </span>  <span class="PreProc">var</span> args/<span class="muRegEsi">esi</span>: (addr <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> copy _args
<span id="L970" class="LineNr"> 970 </span>  <span class="Delimiter">{</span>
<span id="L971" class="LineNr"> 971 </span>    <span class="PreProc">var</span> args-type/eax: (addr int) <span class="Special">&lt;-</span> get args, <span class="PreProc">type</span>
<span id="L972" class="LineNr"> 972 </span>    compare *args-type, <span class="Constant">0</span>/pair
<span id="L973" class="LineNr"> 973 </span>    <span class="PreProc">break-if-=</span>
<span id="L974" class="LineNr"> 974 </span>    <span class="Special"><a href='trace.mu.html#L197'>error</a></span> trace, <span class="Constant">&quot;args to sqrt are not a list&quot;</span>
<span id="L975" class="LineNr"> 975 </span>    <span class="PreProc">return</span>
<span id="L976" class="LineNr"> 976 </span>  <span class="Delimiter">}</span>
<span id="L977" class="LineNr"> 977 </span>  <span class="PreProc">var</span> empty-args?/eax: boolean <span class="Special">&lt;-</span> <a href='print.mu.html#L390'>nil?</a> args
<span id="L978" class="LineNr"> 978 </span>  compare empty-args?, <span class="Constant">0</span>/false
<span id="L979" class="LineNr"> 979 </span>  <span class="Delimiter">{</span>
<span id="L980" class="LineNr"> 980 </span>    <span class="PreProc">break-if-=</span>
<span id="L981" class="LineNr"> 981 </span>    <span class="Special"><a href='trace.mu.html#L197'>error</a></span> trace, <span class="Constant">&quot;sqrt needs 1 arg but got 0&quot;</span>
<span id="L982" class="LineNr"> 982 </span>    <span class="PreProc">return</span>
<span id="L983" class="LineNr"> 983 </span>  <span class="Delimiter">}</span>
<span id="L984" class="LineNr"> 984 </span>  <span class="muComment"># args-&gt;left-&gt;value</span>
<span id="L985" class="LineNr"> 985 </span>  <span class="PreProc">var</span> first-ah/eax: (addr handle <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> get args, left
<span id="L986" class="LineNr"> 986 </span>  <span class="PreProc">var</span> first/eax: (addr <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> <a href='../120allocate.subx.html#L235'>lookup</a> *first-ah
<span id="L987" class="LineNr"> 987 </span>  <span class="Delimiter">{</span>
<span id="L988" class="LineNr"> 988 </span>    <span class="PreProc">var</span> first-type/eax: (addr int) <span class="Special">&lt;-</span> get first, <span class="PreProc">type</span>
<span id="L989" class="LineNr"> 989 </span>    compare *first-type, <span class="Constant">1</span>/number
<span id="L990" class="LineNr"> 990 </span>    <span class="PreProc">break-if-=</span>
<span id="L991" class="LineNr"> 991 </span>    <span class="Special"><a href='trace.mu.html#L197'>error</a></span> trace, <span class="Constant">&quot;arg for sqrt is not a number&quot;</span>
<span id="L992" class="LineNr"> 992 </span>    <span class="PreProc">return</span>
<span id="L993" class="LineNr"> 993 </span>  <span class="Delimiter">}</span>
<span id="L994" class="LineNr"> 994 </span>  <span class="PreProc">var</span> first-value/eax: (addr float) <span class="Special">&lt;-</span> get first, number-data
<span id="L995" class="LineNr"> 995 </span>  <span class="muComment"># square-root</span>
<span id="L996" class="LineNr"> 996 </span>  <span class="PreProc">var</span> result/<span class="Constant">xmm0</span>: float <span class="Special">&lt;-</span> square-root *first-value
<span id="L997" class="LineNr"> 997 </span>  <a href='cell.mu.html#L112'>new-float</a> out, result
<span id="L998" class="LineNr"> 998 </span><span class="Delimiter">}</span>
<span id="L999" class="LineNr"> 999 </span>
<span id="L1000" class="LineNr">1000 </span><span class="PreProc">fn</span> <span class="muFunction"><a href='primitives.mu.html#L1000'>apply-abs</a></span> _args-ah: (addr handle <a href='cell.mu.html#L1'>cell</a>), out: (addr handle <a href='cell.mu.html#L1'>cell</a>), trace: (addr trace) <span class="Delimiter">{</span>
<span id="L1001" class="LineNr">1001 </span>  <a href='trace.mu.html#L185'>trace-text</a> trace, <span class="Constant">&quot;eval&quot;</span>, <span class="Constant">&quot;apply abs&quot;</span>
<span id="L1002" class="LineNr">1002 </span>  <span class="PreProc">var</span> args-ah/eax: (addr handle <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> copy _args-ah
<span id="L1003" class="LineNr">1003 </span>  <span class="PreProc">var</span> _args/eax: (addr <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> <a href='../120allocate.subx.html#L235'>lookup</a> *args-ah
<span id="L1004" class="LineNr">1004 </span>  <span class="PreProc">var</span> args/<span class="muRegEsi">esi</span>: (addr <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> copy _args
<span id="L1005" class="LineNr">1005 </span>  <span class="Delimiter">{</span>
<span id="L1006" class="LineNr">1006 </span>    <span class="PreProc">var</span> args-type/eax: (addr int) <span class="Special">&lt;-</span> get args, <span class="PreProc">type</span>
<span id="L1007" class="LineNr">1007 </span>    compare *args-type, <span class="Constant">0</span>/pair
<span id="L1008" class="LineNr">1008 </span>    <span class="PreProc">break-if-=</span>
<span id="L1009" class="LineNr">1009 </span>    <span class="Special"><a href='trace.mu.html#L197'>error</a></span> trace, <span class="Constant">&quot;args to <a href='../506math.mu.html#L1'>abs</a> are not a list&quot;</span>
<span id="L1010" class="LineNr">1010 </span>    <span class="PreProc">return</span>
<span id="L1011" class="LineNr">1011 </span>  <span class="Delimiter">}</span>
<span id="L1012" class="LineNr">1012 </span>  <span class="PreProc">var</span> empty-args?/eax: boolean <span class="Special">&lt;-</span> <a href='print.mu.html#L390'>nil?</a> args
<span id="L1013" class="LineNr">1013 </span>  compare empty-args?, <span class="Constant">0</span>/false
<span id="L1014" class="LineNr">1014 </span>  <span class="Delimiter">{</span>
<span id="L1015" class="LineNr">1015 </span>    <span class="PreProc">break-if-=</span>
<span id="L1016" class="LineNr">1016 </span>    <span class="Special"><a href='trace.mu.html#L197'>error</a></span> trace, <span class="Constant">&quot;abs needs 1 arg but got 0&quot;</span>
<span id="L1017" class="LineNr">1017 </span>    <span class="PreProc">return</span>
<span id="L1018" class="LineNr">1018 </span>  <span class="Delimiter">}</span>
<span id="L1019" class="LineNr">1019 </span>  <span class="muComment"># args-&gt;left-&gt;value</span>
<span id="L1020" class="LineNr">1020 </span>  <span class="PreProc">var</span> first-ah/eax: (addr handle <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> get args, left
<span id="L1021" class="LineNr">1021 </span>  <span class="PreProc">var</span> first/eax: (addr <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> <a href='../120allocate.subx.html#L235'>lookup</a> *first-ah
<span id="L1022" class="LineNr">1022 </span>  <span class="Delimiter">{</span>
<span id="L1023" class="LineNr">1023 </span>    <span class="PreProc">var</span> first-type/eax: (addr int) <span class="Special">&lt;-</span> get first, <span class="PreProc">type</span>
<span id="L1024" class="LineNr">1024 </span>    compare *first-type, <span class="Constant">1</span>/number
<span id="L1025" class="LineNr">1025 </span>    <span class="PreProc">break-if-=</span>
<span id="L1026" class="LineNr">1026 </span>    <span class="Special"><a href='trace.mu.html#L197'>error</a></span> trace, <span class="Constant">&quot;arg for <a href='../506math.mu.html#L1'>abs</a> is not a number&quot;</span>
<span id="L1027" class="LineNr">1027 </span>    <span class="PreProc">return</span>
<span id="L1028" class="LineNr">1028 </span>  <span class="Delimiter">}</span>
<span id="L1029" class="LineNr">1029 </span>  <span class="PreProc">var</span> first-value/<span class="muRegEcx">ecx</span>: (addr float) <span class="Special">&lt;-</span> get first, number-data
<span id="L1030" class="LineNr">1030 </span>  <span class="muComment">#</span>
<span id="L1031" class="LineNr">1031 </span>  <span class="PreProc">var</span> result/<span class="Constant">xmm0</span>: float <span class="Special">&lt;-</span> copy *first-value
<span id="L1032" class="LineNr">1032 </span>  <span class="PreProc">var</span> zero: float
<span id="L1033" class="LineNr">1033 </span>  compare result, zero
<span id="L1034" class="LineNr">1034 </span>  <span class="Delimiter">{</span>
<span id="L1035" class="LineNr">1035 </span>    <span class="PreProc">break-if-float&gt;=</span>
<span id="L1036" class="LineNr">1036 </span>    <span class="PreProc">var</span> neg1/eax: int <span class="Special">&lt;-</span> copy <span class="Constant">-1</span>
<span id="L1037" class="LineNr">1037 </span>    <span class="PreProc">var</span> neg1-f/<span class="Constant">xmm1</span>: float <span class="Special">&lt;-</span> convert neg1
<span id="L1038" class="LineNr">1038 </span>    result <span class="Special">&lt;-</span> multiply neg1-f
<span id="L1039" class="LineNr">1039 </span>  <span class="Delimiter">}</span>
<span id="L1040" class="LineNr">1040 </span>  <a href='cell.mu.html#L112'>new-float</a> out, result
<span id="L1041" class="LineNr">1041 </span><span class="Delimiter">}</span>
<span id="L1042" class="LineNr">1042 </span>
<span id="L1043" class="LineNr">1043 </span><span class="PreProc">fn</span> <span class="muFunction"><a href='primitives.mu.html#L1043'>apply-sgn</a></span> _args-ah: (addr handle <a href='cell.mu.html#L1'>cell</a>), out: (addr handle <a href='cell.mu.html#L1'>cell</a>), trace: (addr trace) <span class="Delimiter">{</span>
<span id="L1044" class="LineNr">1044 </span>  <a href='trace.mu.html#L185'>trace-text</a> trace, <span class="Constant">&quot;eval&quot;</span>, <span class="Constant">&quot;apply sgn&quot;</span>
<span id="L1045" class="LineNr">1045 </span>  <span class="PreProc">var</span> args-ah/eax: (addr handle <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> copy _args-ah
<span id="L1046" class="LineNr">1046 </span>  <span class="PreProc">var</span> _args/eax: (addr <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> <a href='../120allocate.subx.html#L235'>lookup</a> *args-ah
<span id="L1047" class="LineNr">1047 </span>  <span class="PreProc">var</span> args/<span class="muRegEsi">esi</span>: (addr <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> copy _args
<span id="L1048" class="LineNr">1048 </span>  <span class="Delimiter">{</span>
<span id="L1049" class="LineNr">1049 </span>    <span class="PreProc">var</span> args-type/eax: (addr int) <span class="Special">&lt;-</span> get args, <span class="PreProc">type</span>
<span id="L1050" class="LineNr">1050 </span>    compare *args-type, <span class="Constant">0</span>/pair
<span id="L1051" class="LineNr">1051 </span>    <span class="PreProc">break-if-=</span>
<span id="L1052" class="LineNr">1052 </span>    <span class="Special"><a href='trace.mu.html#L197'>error</a></span> trace, <span class="Constant">&quot;args to <a href='../506math.mu.html#L10'>sgn</a> are not a list&quot;</span>
<span id="L1053" class="LineNr">1053 </span>    <span class="PreProc">return</span>
<span id="L1054" class="LineNr">1054 </span>  <span class="Delimiter">}</span>
<span id="L1055" class="LineNr">1055 </span>  <span class="PreProc">var</span> empty-args?/eax: boolean <span class="Special">&lt;-</span> <a href='print.mu.html#L390'>nil?</a> args
<span id="L1056" class="LineNr">1056 </span>  compare empty-args?, <span class="Constant">0</span>/false
<span id="L1057" class="LineNr">1057 </span>  <span class="Delimiter">{</span>
<span id="L1058" class="LineNr">1058 </span>    <span class="PreProc">break-if-=</span>
<span id="L1059" class="LineNr">1059 </span>    <span class="Special"><a href='trace.mu.html#L197'>error</a></span> trace, <span class="Constant">&quot;sgn needs 1 arg but got 0&quot;</span>
<span id="L1060" class="LineNr">1060 </span>    <span class="PreProc">return</span>
<span id="L1061" class="LineNr">1061 </span>  <span class="Delimiter">}</span>
<span id="L1062" class="LineNr">1062 </span>  <span class="muComment"># args-&gt;left-&gt;value</span>
<span id="L1063" class="LineNr">1063 </span>  <span class="PreProc">var</span> first-ah/eax: (addr handle <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> get args, left
<span id="L1064" class="LineNr">1064 </span>  <span class="PreProc">var</span> first/eax: (addr <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> <a href='../120allocate.subx.html#L235'>lookup</a> *first-ah
<span id="L1065" class="LineNr">1065 </span>  <span class="Delimiter">{</span>
<span id="L1066" class="LineNr">1066 </span>    <span class="PreProc">var</span> first-type/eax: (addr int) <span class="Special">&lt;-</span> get first, <span class="PreProc">type</span>
<span id="L1067" class="LineNr">1067 </span>    compare *first-type, <span class="Constant">1</span>/number
<span id="L1068" class="LineNr">1068 </span>    <span class="PreProc">break-if-=</span>
<span id="L1069" class="LineNr">1069 </span>    <span class="Special"><a href='trace.mu.html#L197'>error</a></span> trace, <span class="Constant">&quot;arg for <a href='../506math.mu.html#L10'>sgn</a> is not a number&quot;</span>
<span id="L1070" class="LineNr">1070 </span>    <span class="PreProc">return</span>
<span id="L1071" class="LineNr">1071 </span>  <span class="Delimiter">}</span>
<span id="L1072" class="LineNr">1072 </span>  <span class="PreProc">var</span> first-value/<span class="muRegEcx">ecx</span>: (addr float) <span class="Special">&lt;-</span> get first, number-data
<span id="L1073" class="LineNr">1073 </span>  <span class="muComment">#</span>
<span id="L1074" class="LineNr">1074 </span>  <span class="PreProc">var</span> result/<span class="Constant">xmm0</span>: float <span class="Special">&lt;-</span> copy *first-value
<span id="L1075" class="LineNr">1075 </span>  <span class="PreProc">var</span> zero: float
<span id="L1076" class="LineNr">1076 </span>  $apply-sgn:core: <span class="Delimiter">{</span>
<span id="L1077" class="LineNr">1077 </span>    compare result, zero
<span id="L1078" class="LineNr">1078 </span>    <span class="PreProc">break-if-=</span>
<span id="L1079" class="LineNr">1079 </span>    <span class="Delimiter">{</span>
<span id="L1080" class="LineNr">1080 </span>      <span class="PreProc">break-if-float&gt;</span>
<span id="L1081" class="LineNr">1081 </span>      <span class="PreProc">var</span> neg1/eax: int <span class="Special">&lt;-</span> copy <span class="Constant">-1</span>
<span id="L1082" class="LineNr">1082 </span>      result <span class="Special">&lt;-</span> convert neg1
<span id="L1083" class="LineNr">1083 </span>      <span class="PreProc">break</span> $apply-sgn:core
<span id="L1084" class="LineNr">1084 </span>    <span class="Delimiter">}</span>
<span id="L1085" class="LineNr">1085 </span>    <span class="Delimiter">{</span>
<span id="L1086" class="LineNr">1086 </span>      <span class="PreProc">break-if-float&lt;</span>
<span id="L1087" class="LineNr">1087 </span>      <span class="PreProc">var</span> one/eax: int <span class="Special">&lt;-</span> copy <span class="Constant">1</span>
<span id="L1088" class="LineNr">1088 </span>      result <span class="Special">&lt;-</span> convert one
<span id="L1089" class="LineNr">1089 </span>      <span class="PreProc">break</span> $apply-sgn:core
<span id="L1090" class="LineNr">1090 </span>    <span class="Delimiter">}</span>
<span id="L1091" class="LineNr">1091 </span>  <span class="Delimiter">}</span>
<span id="L1092" class="LineNr">1092 </span>  <a href='cell.mu.html#L112'>new-float</a> out, result
<span id="L1093" class="LineNr">1093 </span><span class="Delimiter">}</span>
<span id="L1094" class="LineNr">1094 </span>
<span id="L1095" class="LineNr">1095 </span><span class="PreProc">fn</span> <span class="muFunction"><a href='primitives.mu.html#L1095'>apply-car</a></span> _args-ah: (addr handle <a href='cell.mu.html#L1'>cell</a>), out: (addr handle <a href='cell.mu.html#L1'>cell</a>), trace: (addr trace) <span class="Delimiter">{</span>
<span id="L1096" class="LineNr">1096 </span>  <a href='trace.mu.html#L185'>trace-text</a> trace, <span class="Constant">&quot;eval&quot;</span>, <span class="Constant">&quot;apply car&quot;</span>
<span id="L1097" class="LineNr">1097 </span>  <span class="PreProc">var</span> args-ah/eax: (addr handle <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> copy _args-ah
<span id="L1098" class="LineNr">1098 </span>  <span class="PreProc">var</span> _args/eax: (addr <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> <a href='../120allocate.subx.html#L235'>lookup</a> *args-ah
<span id="L1099" class="LineNr">1099 </span>  <span class="PreProc">var</span> args/<span class="muRegEsi">esi</span>: (addr <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> copy _args
<span id="L1100" class="LineNr">1100 </span>  <span class="Delimiter">{</span>
<span id="L1101" class="LineNr">1101 </span>    <span class="PreProc">var</span> args-type/eax: (addr int) <span class="Special">&lt;-</span> get args, <span class="PreProc">type</span>
<span id="L1102" class="LineNr">1102 </span>    compare *args-type, <span class="Constant">0</span>/pair
<span id="L1103" class="LineNr">1103 </span>    <span class="PreProc">break-if-=</span>
<span id="L1104" class="LineNr">1104 </span>    <span class="Special"><a href='trace.mu.html#L197'>error</a></span> trace, <span class="Constant">&quot;args to <a href='evaluate.mu.html#L1237'>car</a> are not a list&quot;</span>
<span id="L1105" class="LineNr">1105 </span>    <span class="PreProc">return</span>
<span id="L1106" class="LineNr">1106 </span>  <span class="Delimiter">}</span>
<span id="L1107" class="LineNr">1107 </span>  <span class="PreProc">var</span> empty-args?/eax: boolean <span class="Special">&lt;-</span> <a href='print.mu.html#L390'>nil?</a> args
<span id="L1108" class="LineNr">1108 </span>  compare empty-args?, <span class="Constant">0</span>/false
<span id="L1109" class="LineNr">1109 </span>  <span class="Delimiter">{</span>
<span id="L1110" class="LineNr">1110 </span>    <span class="PreProc">break-if-=</span>
<span id="L1111" class="LineNr">1111 </span>    <span class="Special"><a href='trace.mu.html#L197'>error</a></span> trace, <span class="Constant">&quot;car needs 1 arg but got 0&quot;</span>
<span id="L1112" class="LineNr">1112 </span>    <span class="PreProc">return</span>
<span id="L1113" class="LineNr">1113 </span>  <span class="Delimiter">}</span>
<span id="L1114" class="LineNr">1114 </span>  <span class="muComment"># args-&gt;left</span>
<span id="L1115" class="LineNr">1115 </span>  <span class="PreProc">var</span> first-ah/<span class="muRegEdx">edx</span>: (addr handle <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> get args, left
<span id="L1116" class="LineNr">1116 </span>  <span class="PreProc">var</span> first/eax: (addr <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> <a href='../120allocate.subx.html#L235'>lookup</a> *first-ah
<span id="L1117" class="LineNr">1117 </span>  <span class="Delimiter">{</span>
<span id="L1118" class="LineNr">1118 </span>    <span class="PreProc">var</span> first-type/eax: (addr int) <span class="Special">&lt;-</span> get first, <span class="PreProc">type</span>
<span id="L1119" class="LineNr">1119 </span>    compare *first-type, <span class="Constant">0</span>/pair
<span id="L1120" class="LineNr">1120 </span>    <span class="PreProc">break-if-=</span>
<span id="L1121" class="LineNr">1121 </span>    <span class="Special"><a href='trace.mu.html#L197'>error</a></span> trace, <span class="Constant">&quot;arg for <a href='evaluate.mu.html#L1237'>car</a> is not a pair&quot;</span>
<span id="L1122" class="LineNr">1122 </span>    <span class="PreProc">return</span>
<span id="L1123" class="LineNr">1123 </span>  <span class="Delimiter">}</span>
<span id="L1124" class="LineNr">1124 </span>  <span class="muComment"># nil? return nil</span>
<span id="L1125" class="LineNr">1125 </span>  <span class="Delimiter">{</span>
<span id="L1126" class="LineNr">1126 </span>    <span class="PreProc">var</span> <a href='print.mu.html#L390'>nil?</a>/eax: boolean <span class="Special">&lt;-</span> <a href='print.mu.html#L390'>nil?</a> first
<span id="L1127" class="LineNr">1127 </span>    compare <a href='print.mu.html#L390'>nil?</a>, <span class="Constant">0</span>/false
<span id="L1128" class="LineNr">1128 </span>    <span class="PreProc">break-if-=</span>
<span id="L1129" class="LineNr">1129 </span>    copy-object first-ah, out
<span id="L1130" class="LineNr">1130 </span>    <span class="PreProc">return</span>
<span id="L1131" class="LineNr">1131 </span>  <span class="Delimiter">}</span>
<span id="L1132" class="LineNr">1132 </span>  <span class="muComment"># car</span>
<span id="L1133" class="LineNr">1133 </span>  <span class="PreProc">var</span> result/eax: (addr handle <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> get first, left
<span id="L1134" class="LineNr">1134 </span>  copy-object result, out
<span id="L1135" class="LineNr">1135 </span><span class="Delimiter">}</span>
<span id="L1136" class="LineNr">1136 </span>
<span id="L1137" class="LineNr">1137 </span><span class="PreProc">fn</span> <span class="muFunction"><a href='primitives.mu.html#L1137'>apply-cdr</a></span> _args-ah: (addr handle <a href='cell.mu.html#L1'>cell</a>), out: (addr handle <a href='cell.mu.html#L1'>cell</a>), trace: (addr trace) <span class="Delimiter">{</span>
<span id="L1138" class="LineNr">1138 </span>  <a href='trace.mu.html#L185'>trace-text</a> trace, <span class="Constant">&quot;eval&quot;</span>, <span class="Constant">&quot;apply cdr&quot;</span>
<span id="L1139" class="LineNr">1139 </span>  <span class="PreProc">var</span> args-ah/eax: (addr handle <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> copy _args-ah
<span id="L1140" class="LineNr">1140 </span>  <span class="PreProc">var</span> _args/eax: (addr <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> <a href='../120allocate.subx.html#L235'>lookup</a> *args-ah
<span id="L1141" class="LineNr">1141 </span>  <span class="PreProc">var</span> args/<span class="muRegEsi">esi</span>: (addr <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> copy _args
<span id="L1142" class="LineNr">1142 </span>  <span class="Delimiter">{</span>
<span id="L1143" class="LineNr">1143 </span>    <span class="PreProc">var</span> args-type/eax: (addr int) <span class="Special">&lt;-</span> get args, <span class="PreProc">type</span>
<span id="L1144" class="LineNr">1144 </span>    compare *args-type, <span class="Constant">0</span>/pair
<span id="L1145" class="LineNr">1145 </span>    <span class="PreProc">break-if-=</span>
<span id="L1146" class="LineNr">1146 </span>    <span class="Special"><a href='trace.mu.html#L197'>error</a></span> trace, <span class="Constant">&quot;args to <a href='evaluate.mu.html#L1265'>cdr</a> are not a list&quot;</span>
<span id="L1147" class="LineNr">1147 </span>    <span class="PreProc">return</span>
<span id="L1148" class="LineNr">1148 </span>  <span class="Delimiter">}</span>
<span id="L1149" class="LineNr">1149 </span>  <span class="PreProc">var</span> empty-args?/eax: boolean <span class="Special">&lt;-</span> <a href='print.mu.html#L390'>nil?</a> args
<span id="L1150" class="LineNr">1150 </span>  compare empty-args?, <span class="Constant">0</span>/false
<span id="L1151" class="LineNr">1151 </span>  <span class="Delimiter">{</span>
<span id="L1152" class="LineNr">1152 </span>    <span class="PreProc">break-if-=</span>
<span id="L1153" class="LineNr">1153 </span>    <span class="Special"><a href='trace.mu.html#L197'>error</a></span> trace, <span class="Constant">&quot;cdr needs 1 arg but got 0&quot;</span>
<span id="L1154" class="LineNr">1154 </span>    <span class="PreProc">return</span>
<span id="L1155" class="LineNr">1155 </span>  <span class="Delimiter">}</span>
<span id="L1156" class="LineNr">1156 </span>  <span class="muComment"># args-&gt;left</span>
<span id="L1157" class="LineNr">1157 </span>  <span class="PreProc">var</span> first-ah/<span class="muRegEdx">edx</span>: (addr handle <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> get args, left
<span id="L1158" class="LineNr">1158 </span>  <span class="PreProc">var</span> first/eax: (addr <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> <a href='../120allocate.subx.html#L235'>lookup</a> *first-ah
<span id="L1159" class="LineNr">1159 </span>  <span class="Delimiter">{</span>
<span id="L1160" class="LineNr">1160 </span>    <span class="PreProc">var</span> first-type/eax: (addr int) <span class="Special">&lt;-</span> get first, <span class="PreProc">type</span>
<span id="L1161" class="LineNr">1161 </span>    compare *first-type, <span class="Constant">0</span>/pair
<span id="L1162" class="LineNr">1162 </span>    <span class="PreProc">break-if-=</span>
<span id="L1163" class="LineNr">1163 </span>    <span class="Special"><a href='trace.mu.html#L197'>error</a></span> trace, <span class="Constant">&quot;arg for <a href='evaluate.mu.html#L1265'>cdr</a> is not a pair&quot;</span>
<span id="L1164" class="LineNr">1164 </span>    <span class="PreProc">return</span>
<span id="L1165" class="LineNr">1165 </span>  <span class="Delimiter">}</span>
<span id="L1166" class="LineNr">1166 </span>  <span class="muComment"># nil? return nil</span>
<span id="L1167" class="LineNr">1167 </span>  <span class="Delimiter">{</span>
<span id="L1168" class="LineNr">1168 </span>    <span class="PreProc">var</span> <a href='print.mu.html#L390'>nil?</a>/eax: boolean <span class="Special">&lt;-</span> <a href='print.mu.html#L390'>nil?</a> first
<span id="L1169" class="LineNr">1169 </span>    compare <a href='print.mu.html#L390'>nil?</a>, <span class="Constant">0</span>/false
<span id="L1170" class="LineNr">1170 </span>    <span class="PreProc">break-if-=</span>
<span id="L1171" class="LineNr">1171 </span>    copy-object first-ah, out
<span id="L1172" class="LineNr">1172 </span>    <span class="PreProc">return</span>
<span id="L1173" class="LineNr">1173 </span>  <span class="Delimiter">}</span>
<span id="L1174" class="LineNr">1174 </span>  <span class="muComment"># cdr</span>
<span id="L1175" class="LineNr">1175 </span>  <span class="PreProc">var</span> result/eax: (addr handle <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> get first, right
<span id="L1176" class="LineNr">1176 </span>  copy-object result, out
<span id="L1177" class="LineNr">1177 </span><span class="Delimiter">}</span>
<span id="L1178" class="LineNr">1178 </span>
<span id="L1179" class="LineNr">1179 </span><span class="PreProc">fn</span> <span class="muFunction"><a href='primitives.mu.html#L1179'>apply-cons</a></span> _args-ah: (addr handle <a href='cell.mu.html#L1'>cell</a>), out: (addr handle <a href='cell.mu.html#L1'>cell</a>), trace: (addr trace) <span class="Delimiter">{</span>
<span id="L1180" class="LineNr">1180 </span>  <a href='trace.mu.html#L185'>trace-text</a> trace, <span class="Constant">&quot;eval&quot;</span>, <span class="Constant">&quot;apply cons&quot;</span>
<span id="L1181" class="LineNr">1181 </span>  <span class="PreProc">var</span> args-ah/eax: (addr handle <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> copy _args-ah
<span id="L1182" class="LineNr">1182 </span>  <span class="PreProc">var</span> _args/eax: (addr <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> <a href='../120allocate.subx.html#L235'>lookup</a> *args-ah
<span id="L1183" class="LineNr">1183 </span>  <span class="PreProc">var</span> args/<span class="muRegEsi">esi</span>: (addr <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> copy _args
<span id="L1184" class="LineNr">1184 </span>  <span class="Delimiter">{</span>
<span id="L1185" class="LineNr">1185 </span>    <span class="PreProc">var</span> args-type/eax: (addr int) <span class="Special">&lt;-</span> get args, <span class="PreProc">type</span>
<span id="L1186" class="LineNr">1186 </span>    compare *args-type, <span class="Constant">0</span>/pair
<span id="L1187" class="LineNr">1187 </span>    <span class="PreProc">break-if-=</span>
<span id="L1188" class="LineNr">1188 </span>    <span class="Special"><a href='trace.mu.html#L197'>error</a></span> trace, <span class="Constant">&quot;args to 'cons' are not a list&quot;</span>
<span id="L1189" class="LineNr">1189 </span>    <span class="PreProc">return</span>
<span id="L1190" class="LineNr">1190 </span>  <span class="Delimiter">}</span>
<span id="L1191" class="LineNr">1191 </span>  <span class="PreProc">var</span> empty-args?/eax: boolean <span class="Special">&lt;-</span> <a href='print.mu.html#L390'>nil?</a> args
<span id="L1192" class="LineNr">1192 </span>  compare empty-args?, <span class="Constant">0</span>/false
<span id="L1193" class="LineNr">1193 </span>  <span class="Delimiter">{</span>
<span id="L1194" class="LineNr">1194 </span>    <span class="PreProc">break-if-=</span>
<span id="L1195" class="LineNr">1195 </span>    <span class="Special"><a href='trace.mu.html#L197'>error</a></span> trace, <span class="Constant">&quot;cons needs 2 args but got 0&quot;</span>
<span id="L1196" class="LineNr">1196 </span>    <span class="PreProc">return</span>
<span id="L1197" class="LineNr">1197 </span>  <span class="Delimiter">}</span>
<span id="L1198" class="LineNr">1198 </span>  <span class="muComment"># args-&gt;left</span>
<span id="L1199" class="LineNr">1199 </span>  <span class="PreProc">var</span> first-ah/<span class="muRegEcx">ecx</span>: (addr handle <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> get args, left
<span id="L1200" class="LineNr">1200 </span>  <span class="muComment"># args-&gt;right-&gt;left</span>
<span id="L1201" class="LineNr">1201 </span>  <span class="PreProc">var</span> right-ah/eax: (addr handle <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> get args, right
<span id="L1202" class="LineNr">1202 </span>  <span class="PreProc">var</span> right/eax: (addr <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> <a href='../120allocate.subx.html#L235'>lookup</a> *right-ah
<span id="L1203" class="LineNr">1203 </span>  <span class="Delimiter">{</span>
<span id="L1204" class="LineNr">1204 </span>    <span class="PreProc">var</span> right-type/eax: (addr int) <span class="Special">&lt;-</span> get right, <span class="PreProc">type</span>
<span id="L1205" class="LineNr">1205 </span>    compare *right-type, <span class="Constant">0</span>/pair
<span id="L1206" class="LineNr">1206 </span>    <span class="PreProc">break-if-=</span>
<span id="L1207" class="LineNr">1207 </span>    <span class="Special"><a href='trace.mu.html#L197'>error</a></span> trace, <span class="Constant">&quot;'cons' encountered non-pair&quot;</span>
<span id="L1208" class="LineNr">1208 </span>    <span class="PreProc">return</span>
<span id="L1209" class="LineNr">1209 </span>  <span class="Delimiter">}</span>
<span id="L1210" class="LineNr">1210 </span>  <span class="Delimiter">{</span>
<span id="L1211" class="LineNr">1211 </span>    <span class="PreProc">var</span> <a href='print.mu.html#L390'>nil?</a>/eax: boolean <span class="Special">&lt;-</span> <a href='print.mu.html#L390'>nil?</a> right
<span id="L1212" class="LineNr">1212 </span>    compare <a href='print.mu.html#L390'>nil?</a>, <span class="Constant">0</span>/false
<span id="L1213" class="LineNr">1213 </span>    <span class="PreProc">break-if-=</span>
<span id="L1214" class="LineNr">1214 </span>    <span class="Special"><a href='trace.mu.html#L197'>error</a></span> trace, <span class="Constant">&quot;'cons' needs 2 args but got 1&quot;</span>
<span id="L1215" class="LineNr">1215 </span>    <span class="PreProc">return</span>
<span id="L1216" class="LineNr">1216 </span>  <span class="Delimiter">}</span>
<span id="L1217" class="LineNr">1217 </span>  <span class="PreProc">var</span> second-ah/eax: (addr handle <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> get right, left
<span id="L1218" class="LineNr">1218 </span>  <span class="muComment"># cons</span>
<span id="L1219" class="LineNr">1219 </span>  <a href='cell.mu.html#L142'>new-pair</a> out, *first-ah, *second-ah
<span id="L1220" class="LineNr">1220 </span><span class="Delimiter">}</span>
<span id="L1221" class="LineNr">1221 </span>
<span id="L1222" class="LineNr">1222 </span><span class="PreProc">fn</span> <span class="muFunction"><a href='primitives.mu.html#L1222'>apply-cons-check</a></span> _args-ah: (addr handle <a href='cell.mu.html#L1'>cell</a>), out: (addr handle <a href='cell.mu.html#L1'>cell</a>), trace: (addr trace) <span class="Delimiter">{</span>
<span id="L1223" class="LineNr">1223 </span>  <a href='trace.mu.html#L185'>trace-text</a> trace, <span class="Constant">&quot;eval&quot;</span>, <span class="Constant">&quot;apply cons?&quot;</span>
<span id="L1224" class="LineNr">1224 </span>  <span class="PreProc">var</span> args-ah/eax: (addr handle <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> copy _args-ah
<span id="L1225" class="LineNr">1225 </span>  <span class="PreProc">var</span> _args/eax: (addr <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> <a href='../120allocate.subx.html#L235'>lookup</a> *args-ah
<span id="L1226" class="LineNr">1226 </span>  <span class="PreProc">var</span> args/<span class="muRegEsi">esi</span>: (addr <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> copy _args
<span id="L1227" class="LineNr">1227 </span>  <span class="Delimiter">{</span>
<span id="L1228" class="LineNr">1228 </span>    <span class="PreProc">var</span> args-type/eax: (addr int) <span class="Special">&lt;-</span> get args, <span class="PreProc">type</span>
<span id="L1229" class="LineNr">1229 </span>    compare *args-type, <span class="Constant">0</span>/pair
<span id="L1230" class="LineNr">1230 </span>    <span class="PreProc">break-if-=</span>
<span id="L1231" class="LineNr">1231 </span>    <span class="Special"><a href='trace.mu.html#L197'>error</a></span> trace, <span class="Constant">&quot;args to cons? are not a list&quot;</span>
<span id="L1232" class="LineNr">1232 </span>    <span class="PreProc">return</span>
<span id="L1233" class="LineNr">1233 </span>  <span class="Delimiter">}</span>
<span id="L1234" class="LineNr">1234 </span>  <span class="PreProc">var</span> empty-args?/eax: boolean <span class="Special">&lt;-</span> <a href='print.mu.html#L390'>nil?</a> args
<span id="L1235" class="LineNr">1235 </span>  compare empty-args?, <span class="Constant">0</span>/false
<span id="L1236" class="LineNr">1236 </span>  <span class="Delimiter">{</span>
<span id="L1237" class="LineNr">1237 </span>    <span class="PreProc">break-if-=</span>
<span id="L1238" class="LineNr">1238 </span>    <span class="Special"><a href='trace.mu.html#L197'>error</a></span> trace, <span class="Constant">&quot;cons? needs 1 arg but got 0&quot;</span>
<span id="L1239" class="LineNr">1239 </span>    <span class="PreProc">return</span>
<span id="L1240" class="LineNr">1240 </span>  <span class="Delimiter">}</span>
<span id="L1241" class="LineNr">1241 </span>  <span class="muComment"># args-&gt;left</span>
<span id="L1242" class="LineNr">1242 </span>  <span class="PreProc">var</span> first-ah/<span class="muRegEdx">edx</span>: (addr handle <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> get args, left
<span id="L1243" class="LineNr">1243 </span>  <span class="PreProc">var</span> first/eax: (addr <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> <a href='../120allocate.subx.html#L235'>lookup</a> *first-ah
<span id="L1244" class="LineNr">1244 </span>  <span class="Delimiter">{</span>
<span id="L1245" class="LineNr">1245 </span>    <span class="PreProc">var</span> first-type/eax: (addr int) <span class="Special">&lt;-</span> get first, <span class="PreProc">type</span>
<span id="L1246" class="LineNr">1246 </span>    compare *first-type, <span class="Constant">0</span>/pair
<span id="L1247" class="LineNr">1247 </span>    <span class="PreProc">break-if-=</span>
<span id="L1248" class="LineNr">1248 </span>    <a href='cell.mu.html#L147'>nil</a> out
<span id="L1249" class="LineNr">1249 </span>    <span class="PreProc">return</span>
<span id="L1250" class="LineNr">1250 </span>  <span class="Delimiter">}</span>
<span id="L1251" class="LineNr">1251 </span>  <a href='cell.mu.html#L99'>new-integer</a> out, <span class="Constant">1</span>
<span id="L1252" class="LineNr">1252 </span><span class="Delimiter">}</span>
<span id="L1253" class="LineNr">1253 </span>
<span id="L1254" class="LineNr">1254 </span><span class="PreProc">fn</span> <span class="muFunction"><a href='primitives.mu.html#L1254'>apply-len</a></span> _args-ah: (addr handle <a href='cell.mu.html#L1'>cell</a>), out: (addr handle <a href='cell.mu.html#L1'>cell</a>), trace: (addr trace) <span class="Delimiter">{</span>
<span id="L1255" class="LineNr">1255 </span>  <a href='trace.mu.html#L185'>trace-text</a> trace, <span class="Constant">&quot;eval&quot;</span>, <span class="Constant">&quot;apply len&quot;</span>
<span id="L1256" class="LineNr">1256 </span>  <span class="PreProc">var</span> args-ah/eax: (addr handle <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> copy _args-ah
<span id="L1257" class="LineNr">1257 </span>  <span class="PreProc">var</span> _args/eax: (addr <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> <a href='../120allocate.subx.html#L235'>lookup</a> *args-ah
<span id="L1258" class="LineNr">1258 </span>  <span class="PreProc">var</span> args/<span class="muRegEsi">esi</span>: (addr <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> copy _args
<span id="L1259" class="LineNr">1259 </span>  <span class="Delimiter">{</span>
<span id="L1260" class="LineNr">1260 </span>    <span class="PreProc">var</span> args-type/eax: (addr int) <span class="Special">&lt;-</span> get args, <span class="PreProc">type</span>
<span id="L1261" class="LineNr">1261 </span>    compare *args-type, <span class="Constant">0</span>/pair
<span id="L1262" class="LineNr">1262 </span>    <span class="PreProc">break-if-=</span>
<span id="L1263" class="LineNr">1263 </span>    <span class="Special"><a href='trace.mu.html#L197'>error</a></span> trace, <span class="Constant">&quot;args to len are not a list&quot;</span>
<span id="L1264" class="LineNr">1264 </span>    <span class="PreProc">return</span>
<span id="L1265" class="LineNr">1265 </span>  <span class="Delimiter">}</span>
<span id="L1266" class="LineNr">1266 </span>  <span class="PreProc">var</span> empty-args?/eax: boolean <span class="Special">&lt;-</span> <a href='print.mu.html#L390'>nil?</a> args
<span id="L1267" class="LineNr">1267 </span>  compare empty-args?, <span class="Constant">0</span>/false
<span id="L1268" class="LineNr">1268 </span>  <span class="Delimiter">{</span>
<span id="L1269" class="LineNr">1269 </span>    <span class="PreProc">break-if-=</span>
<span id="L1270" class="LineNr">1270 </span>    <span class="Special"><a href='trace.mu.html#L197'>error</a></span> trace, <span class="Constant">&quot;len needs 1 arg but got 0&quot;</span>
<span id="L1271" class="LineNr">1271 </span>    <span class="PreProc">return</span>
<span id="L1272" class="LineNr">1272 </span>  <span class="Delimiter">}</span>
<span id="L1273" class="LineNr">1273 </span>  <span class="muComment"># args-&gt;left</span>
<span id="L1274" class="LineNr">1274 </span>  <span class="PreProc">var</span> first-ah/<span class="muRegEdx">edx</span>: (addr handle <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> get args, left
<span id="L1275" class="LineNr">1275 </span>  <span class="PreProc">var</span> first/eax: (addr <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> <a href='../120allocate.subx.html#L235'>lookup</a> *first-ah
<span id="L1276" class="LineNr">1276 </span>  <span class="Delimiter">{</span>
<span id="L1277" class="LineNr">1277 </span>    <span class="Delimiter">{</span>
<span id="L1278" class="LineNr">1278 </span>      <span class="PreProc">var</span> first-pair?/eax: boolean <span class="Special">&lt;-</span> <a href='cell.mu.html#L151'>pair?</a> first
<span id="L1279" class="LineNr">1279 </span>      compare first-pair?, <span class="Constant">0</span>/false
<span id="L1280" class="LineNr">1280 </span>    <span class="Delimiter">}</span>
<span id="L1281" class="LineNr">1281 </span>    <span class="PreProc">break-if-=</span>
<span id="L1282" class="LineNr">1282 </span>    <span class="PreProc">var</span> result/eax: int <span class="Special">&lt;-</span> <a href='primitives.mu.html#L1299'>list-length</a> first
<span id="L1283" class="LineNr">1283 </span>    <a href='cell.mu.html#L99'>new-integer</a> out, result
<span id="L1284" class="LineNr">1284 </span>    <span class="PreProc">return</span>
<span id="L1285" class="LineNr">1285 </span>  <span class="Delimiter">}</span>
<span id="L1286" class="LineNr">1286 </span>  <span class="Delimiter">{</span>
<span id="L1287" class="LineNr">1287 </span>    <span class="Delimiter">{</span>
<span id="L1288" class="LineNr">1288 </span>      <span class="PreProc">var</span> first-array?/eax: boolean <span class="Special">&lt;-</span> <a href='cell.mu.html#L290'>array?</a> first
<span id="L1289" class="LineNr">1289 </span>      compare first-array?, <span class="Constant">0</span>/false
<span id="L1290" class="LineNr">1290 </span>    <span class="Delimiter">}</span>
<span id="L1291" class="LineNr">1291 </span>    <span class="PreProc">break-if-=</span>
<span id="L1292" class="LineNr">1292 </span>    <span class="PreProc">var</span> result/eax: int <span class="Special">&lt;-</span> <a href='primitives.mu.html#L1321'>array-length</a> first
<span id="L1293" class="LineNr">1293 </span>    <a href='cell.mu.html#L99'>new-integer</a> out, result
<span id="L1294" class="LineNr">1294 </span>    <span class="PreProc">return</span>
<span id="L1295" class="LineNr">1295 </span>  <span class="Delimiter">}</span>
<span id="L1296" class="LineNr">1296 </span>  <a href='cell.mu.html#L147'>nil</a> out
<span id="L1297" class="LineNr">1297 </span><span class="Delimiter">}</span>
<span id="L1298" class="LineNr">1298 </span>
<span id="L1299" class="LineNr">1299 </span><span class="PreProc">fn</span> <span class="muFunction"><a href='primitives.mu.html#L1299'>list-length</a></span> in: (addr <a href='cell.mu.html#L1'>cell</a>)<span class="PreProc"> -&gt; </span>_/eax: int <span class="Delimiter">{</span>
<span id="L1300" class="LineNr">1300 </span>  <span class="PreProc">var</span> curr/<span class="muRegEcx">ecx</span>: (addr <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> copy in
<span id="L1301" class="LineNr">1301 </span>  <span class="PreProc">var</span> result/<span class="muRegEdi">edi</span>: int <span class="Special">&lt;-</span> copy <span class="Constant">0</span>
<span id="L1302" class="LineNr">1302 </span>  <span class="Delimiter">{</span>
<span id="L1303" class="LineNr">1303 </span>    <span class="PreProc">var</span> <a href='cell.mu.html#L151'>pair?</a>/eax: boolean <span class="Special">&lt;-</span> <a href='cell.mu.html#L151'>pair?</a> curr
<span id="L1304" class="LineNr">1304 </span>    <span class="Delimiter">{</span>
<span id="L1305" class="LineNr">1305 </span>      compare <a href='cell.mu.html#L151'>pair?</a>, <span class="Constant">0</span>/false
<span id="L1306" class="LineNr">1306 </span>      <span class="PreProc">break-if-!=</span>
<span id="L1307" class="LineNr">1307 </span>      <a href='../317abort.subx.html#L5'>abort</a> <span class="Constant">&quot;len: ran into a non-cons&quot;</span>
<span id="L1308" class="LineNr">1308 </span>    <span class="Delimiter">}</span>
<span id="L1309" class="LineNr">1309 </span>    <span class="PreProc">var</span> <a href='print.mu.html#L390'>nil?</a>/eax: boolean <span class="Special">&lt;-</span> <a href='print.mu.html#L390'>nil?</a> curr
<span id="L1310" class="LineNr">1310 </span>    compare <a href='print.mu.html#L390'>nil?</a>, <span class="Constant">0</span>/false
<span id="L1311" class="LineNr">1311 </span>    <span class="PreProc">break-if-!=</span>
<span id="L1312" class="LineNr">1312 </span>    result <span class="Special">&lt;-</span> increment
<span id="L1313" class="LineNr">1313 </span>    <span class="PreProc">var</span> next-ah/eax: (addr handle <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> get curr, right
<span id="L1314" class="LineNr">1314 </span>    <span class="PreProc">var</span> next/eax: (addr <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> <a href='../120allocate.subx.html#L235'>lookup</a> *next-ah
<span id="L1315" class="LineNr">1315 </span>    curr <span class="Special">&lt;-</span> copy next
<span id="L1316" class="LineNr">1316 </span>    <span class="PreProc">loop</span>
<span id="L1317" class="LineNr">1317 </span>  <span class="Delimiter">}</span>
<span id="L1318" class="LineNr">1318 </span>  <span class="PreProc">return</span> result
<span id="L1319" class="LineNr">1319 </span><span class="Delimiter">}</span>
<span id="L1320" class="LineNr">1320 </span>
<span id="L1321" class="LineNr">1321 </span><span class="PreProc">fn</span> <span class="muFunction"><a href='primitives.mu.html#L1321'>array-length</a></span> _in: (addr <a href='cell.mu.html#L1'>cell</a>)<span class="PreProc"> -&gt; </span>_/eax: int <span class="Delimiter">{</span>
<span id="L1322" class="LineNr">1322 </span>  <span class="PreProc">var</span> in/<span class="muRegEsi">esi</span>: (addr <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> copy _in
<span id="L1323" class="LineNr">1323 </span>  <span class="PreProc">var</span> in-data-ah/eax: (addr handle array handle <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> get in, array-data
<span id="L1324" class="LineNr">1324 </span>  <span class="PreProc">var</span> in-data/eax: (addr array handle <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> <a href='../120allocate.subx.html#L235'>lookup</a> *in-data-ah
<span id="L1325" class="LineNr">1325 </span>  <span class="PreProc">var</span> result/eax: int <span class="Special">&lt;-</span> length in-data
<span id="L1326" class="LineNr">1326 </span>  <span class="PreProc">return</span> result
<span id="L1327" class="LineNr">1327 </span><span class="Delimiter">}</span>
<span id="L1328" class="LineNr">1328 </span>
<span id="L1329" class="LineNr">1329 </span><span class="PreProc">fn</span> <span class="muFunction"><a href='primitives.mu.html#L1329'>apply-cell-isomorphic</a></span> _args-ah: (addr handle <a href='cell.mu.html#L1'>cell</a>), out: (addr handle <a href='cell.mu.html#L1'>cell</a>), trace: (addr trace) <span class="Delimiter">{</span>
<span id="L1330" class="LineNr">1330 </span>  <a href='trace.mu.html#L185'>trace-text</a> trace, <span class="Constant">&quot;eval&quot;</span>, <span class="Constant">&quot;apply '='&quot;</span>
<span id="L1331" class="LineNr">1331 </span>  <span class="PreProc">var</span> args-ah/eax: (addr handle <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> copy _args-ah
<span id="L1332" class="LineNr">1332 </span>  <span class="PreProc">var</span> _args/eax: (addr <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> <a href='../120allocate.subx.html#L235'>lookup</a> *args-ah
<span id="L1333" class="LineNr">1333 </span>  <span class="PreProc">var</span> args/<span class="muRegEsi">esi</span>: (addr <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> copy _args
<span id="L1334" class="LineNr">1334 </span>  <span class="Delimiter">{</span>
<span id="L1335" class="LineNr">1335 </span>    <span class="PreProc">var</span> args-type/eax: (addr int) <span class="Special">&lt;-</span> get args, <span class="PreProc">type</span>
<span id="L1336" class="LineNr">1336 </span>    compare *args-type, <span class="Constant">0</span>/pair
<span id="L1337" class="LineNr">1337 </span>    <span class="PreProc">break-if-=</span>
<span id="L1338" class="LineNr">1338 </span>    <span class="Special"><a href='trace.mu.html#L197'>error</a></span> trace, <span class="Constant">&quot;args to '=' are not a list&quot;</span>
<span id="L1339" class="LineNr">1339 </span>    <span class="PreProc">return</span>
<span id="L1340" class="LineNr">1340 </span>  <span class="Delimiter">}</span>
<span id="L1341" class="LineNr">1341 </span>  <span class="PreProc">var</span> empty-args?/eax: boolean <span class="Special">&lt;-</span> <a href='print.mu.html#L390'>nil?</a> args
<span id="L1342" class="LineNr">1342 </span>  compare empty-args?, <span class="Constant">0</span>/false
<span id="L1343" class="LineNr">1343 </span>  <span class="Delimiter">{</span>
<span id="L1344" class="LineNr">1344 </span>    <span class="PreProc">break-if-=</span>
<span id="L1345" class="LineNr">1345 </span>    <span class="Special"><a href='trace.mu.html#L197'>error</a></span> trace, <span class="Constant">&quot;'=' needs 2 args but got 0&quot;</span>
<span id="L1346" class="LineNr">1346 </span>    <span class="PreProc">return</span>
<span id="L1347" class="LineNr">1347 </span>  <span class="Delimiter">}</span>
<span id="L1348" class="LineNr">1348 </span>  <span class="muComment"># args-&gt;left</span>
<span id="L1349" class="LineNr">1349 </span>  <span class="PreProc">var</span> first-ah/<span class="muRegEcx">ecx</span>: (addr handle <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> get args, left
<span id="L1350" class="LineNr">1350 </span>  <span class="muComment"># args-&gt;right-&gt;left</span>
<span id="L1351" class="LineNr">1351 </span>  <span class="PreProc">var</span> right-ah/eax: (addr handle <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> get args, right
<span id="L1352" class="LineNr">1352 </span>  <span class="PreProc">var</span> right/eax: (addr <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> <a href='../120allocate.subx.html#L235'>lookup</a> *right-ah
<span id="L1353" class="LineNr">1353 </span>  <span class="Delimiter">{</span>
<span id="L1354" class="LineNr">1354 </span>    <span class="PreProc">var</span> right-type/eax: (addr int) <span class="Special">&lt;-</span> get right, <span class="PreProc">type</span>
<span id="L1355" class="LineNr">1355 </span>    compare *right-type, <span class="Constant">0</span>/pair
<span id="L1356" class="LineNr">1356 </span>    <span class="PreProc">break-if-=</span>
<span id="L1357" class="LineNr">1357 </span>    <span class="Special"><a href='trace.mu.html#L197'>error</a></span> trace, <span class="Constant">&quot;'=' encountered non-pair&quot;</span>
<span id="L1358" class="LineNr">1358 </span>    <span class="PreProc">return</span>
<span id="L1359" class="LineNr">1359 </span>  <span class="Delimiter">}</span>
<span id="L1360" class="LineNr">1360 </span>  <span class="Delimiter">{</span>
<span id="L1361" class="LineNr">1361 </span>    <span class="PreProc">var</span> <a href='print.mu.html#L390'>nil?</a>/eax: boolean <span class="Special">&lt;-</span> <a href='print.mu.html#L390'>nil?</a> right
<span id="L1362" class="LineNr">1362 </span>    compare <a href='print.mu.html#L390'>nil?</a>, <span class="Constant">0</span>/false
<span id="L1363" class="LineNr">1363 </span>    <span class="PreProc">break-if-=</span>
<span id="L1364" class="LineNr">1364 </span>    <span class="Special"><a href='trace.mu.html#L197'>error</a></span> trace, <span class="Constant">&quot;'=' needs 2 args but got 1&quot;</span>
<span id="L1365" class="LineNr">1365 </span>    <span class="PreProc">return</span>
<span id="L1366" class="LineNr">1366 </span>  <span class="Delimiter">}</span>
<span id="L1367" class="LineNr">1367 </span>  <span class="PreProc">var</span> second-ah/<span class="muRegEdx">edx</span>: (addr handle <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> get right, left
<span id="L1368" class="LineNr">1368 </span>  <span class="muComment"># compare</span>
<span id="L1369" class="LineNr">1369 </span>  <span class="PreProc">var</span> _first/eax: (addr <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> <a href='../120allocate.subx.html#L235'>lookup</a> *first-ah
<span id="L1370" class="LineNr">1370 </span>  <span class="PreProc">var</span> first/<span class="muRegEcx">ecx</span>: (addr <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> copy _first
<span id="L1371" class="LineNr">1371 </span>  <span class="PreProc">var</span> second/eax: (addr <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> <a href='../120allocate.subx.html#L235'>lookup</a> *second-ah
<span id="L1372" class="LineNr">1372 </span>  <span class="PreProc">var</span> match?/eax: boolean <span class="Special">&lt;-</span> <a href='evaluate.mu.html#L1293'>cell-isomorphic?</a> first, second, trace
<span id="L1373" class="LineNr">1373 </span>  compare match?, <span class="Constant">0</span>/false
<span id="L1374" class="LineNr">1374 </span>  <span class="Delimiter">{</span>
<span id="L1375" class="LineNr">1375 </span>    <span class="PreProc">break-if-!=</span>
<span id="L1376" class="LineNr">1376 </span>    <a href='cell.mu.html#L147'>nil</a> out
<span id="L1377" class="LineNr">1377 </span>    <span class="PreProc">return</span>
<span id="L1378" class="LineNr">1378 </span>  <span class="Delimiter">}</span>
<span id="L1379" class="LineNr">1379 </span>  <a href='cell.mu.html#L99'>new-integer</a> out, <span class="Constant">1</span>/true
<span id="L1380" class="LineNr">1380 </span><span class="Delimiter">}</span>
<span id="L1381" class="LineNr">1381 </span>
<span id="L1382" class="LineNr">1382 </span><span class="PreProc">fn</span> <span class="muFunction"><a href='primitives.mu.html#L1382'>apply-not</a></span> _args-ah: (addr handle <a href='cell.mu.html#L1'>cell</a>), out: (addr handle <a href='cell.mu.html#L1'>cell</a>), trace: (addr trace) <span class="Delimiter">{</span>
<span id="L1383" class="LineNr">1383 </span>  <a href='trace.mu.html#L185'>trace-text</a> trace, <span class="Constant">&quot;eval&quot;</span>, <span class="Constant">&quot;apply 'not'&quot;</span>
<span id="L1384" class="LineNr">1384 </span>  <span class="PreProc">var</span> args-ah/eax: (addr handle <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> copy _args-ah
<span id="L1385" class="LineNr">1385 </span>  <span class="PreProc">var</span> _args/eax: (addr <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> <a href='../120allocate.subx.html#L235'>lookup</a> *args-ah
<span id="L1386" class="LineNr">1386 </span>  <span class="PreProc">var</span> args/<span class="muRegEsi">esi</span>: (addr <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> copy _args
<span id="L1387" class="LineNr">1387 </span>  <span class="Delimiter">{</span>
<span id="L1388" class="LineNr">1388 </span>    <span class="PreProc">var</span> args-type/eax: (addr int) <span class="Special">&lt;-</span> get args, <span class="PreProc">type</span>
<span id="L1389" class="LineNr">1389 </span>    compare *args-type, <span class="Constant">0</span>/pair
<span id="L1390" class="LineNr">1390 </span>    <span class="PreProc">break-if-=</span>
<span id="L1391" class="LineNr">1391 </span>    <span class="Special"><a href='trace.mu.html#L197'>error</a></span> trace, <span class="Constant">&quot;args to 'not' are not a list&quot;</span>
<span id="L1392" class="LineNr">1392 </span>    <span class="PreProc">return</span>
<span id="L1393" class="LineNr">1393 </span>  <span class="Delimiter">}</span>
<span id="L1394" class="LineNr">1394 </span>  <span class="PreProc">var</span> empty-args?/eax: boolean <span class="Special">&lt;-</span> <a href='print.mu.html#L390'>nil?</a> args
<span id="L1395" class="LineNr">1395 </span>  compare empty-args?, <span class="Constant">0</span>/false
<span id="L1396" class="LineNr">1396 </span>  <span class="Delimiter">{</span>
<span id="L1397" class="LineNr">1397 </span>    <span class="PreProc">break-if-=</span>
<span id="L1398" class="LineNr">1398 </span>    <span class="Special"><a href='trace.mu.html#L197'>error</a></span> trace, <span class="Constant">&quot;'not' needs 1 arg but got 0&quot;</span>
<span id="L1399" class="LineNr">1399 </span>    <span class="PreProc">return</span>
<span id="L1400" class="LineNr">1400 </span>  <span class="Delimiter">}</span>
<span id="L1401" class="LineNr">1401 </span>  <span class="muComment"># args-&gt;left</span>
<span id="L1402" class="LineNr">1402 </span>  <span class="PreProc">var</span> first-ah/eax: (addr handle <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> get args, left
<span id="L1403" class="LineNr">1403 </span>  <span class="PreProc">var</span> first/eax: (addr <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> <a href='../120allocate.subx.html#L235'>lookup</a> *first-ah
<span id="L1404" class="LineNr">1404 </span>  <span class="muComment"># not</span>
<span id="L1405" class="LineNr">1405 </span>  <span class="PreProc">var</span> <a href='print.mu.html#L390'>nil?</a>/eax: boolean <span class="Special">&lt;-</span> <a href='print.mu.html#L390'>nil?</a> first
<span id="L1406" class="LineNr">1406 </span>  compare <a href='print.mu.html#L390'>nil?</a>, <span class="Constant">0</span>/false
<span id="L1407" class="LineNr">1407 </span>  <span class="Delimiter">{</span>
<span id="L1408" class="LineNr">1408 </span>    <span class="PreProc">break-if-!=</span>
<span id="L1409" class="LineNr">1409 </span>    <a href='cell.mu.html#L147'>nil</a> out
<span id="L1410" class="LineNr">1410 </span>    <span class="PreProc">return</span>
<span id="L1411" class="LineNr">1411 </span>  <span class="Delimiter">}</span>
<span id="L1412" class="LineNr">1412 </span>  <a href='cell.mu.html#L99'>new-integer</a> out, <span class="Constant">1</span>
<span id="L1413" class="LineNr">1413 </span><span class="Delimiter">}</span>
<span id="L1414" class="LineNr">1414 </span>
<span id="L1415" class="LineNr">1415 </span><span class="PreProc">fn</span> <span class="muFunction"><a href='primitives.mu.html#L1415'>apply-debug</a></span> _args-ah: (addr handle <a href='cell.mu.html#L1'>cell</a>), out: (addr handle <a href='cell.mu.html#L1'>cell</a>), trace: (addr trace) <span class="Delimiter">{</span>
<span id="L1416" class="LineNr">1416 </span>  <a href='trace.mu.html#L185'>trace-text</a> trace, <span class="Constant">&quot;eval&quot;</span>, <span class="Constant">&quot;apply 'debug'&quot;</span>
<span id="L1417" class="LineNr">1417 </span>  <span class="PreProc">var</span> args-ah/eax: (addr handle <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> copy _args-ah
<span id="L1418" class="LineNr">1418 </span>  <span class="PreProc">var</span> _args/eax: (addr <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> <a href='../120allocate.subx.html#L235'>lookup</a> *args-ah
<span id="L1419" class="LineNr">1419 </span>  <span class="PreProc">var</span> args/<span class="muRegEsi">esi</span>: (addr <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> copy _args
<span id="L1420" class="LineNr">1420 </span>  <span class="Delimiter">{</span>
<span id="L1421" class="LineNr">1421 </span>    <span class="PreProc">var</span> args-type/eax: (addr int) <span class="Special">&lt;-</span> get args, <span class="PreProc">type</span>
<span id="L1422" class="LineNr">1422 </span>    compare *args-type, <span class="Constant">0</span>/pair
<span id="L1423" class="LineNr">1423 </span>    <span class="PreProc">break-if-=</span>
<span id="L1424" class="LineNr">1424 </span>    <span class="Special"><a href='trace.mu.html#L197'>error</a></span> trace, <span class="Constant">&quot;args to 'debug' are not a list&quot;</span>
<span id="L1425" class="LineNr">1425 </span>    <span class="PreProc">return</span>
<span id="L1426" class="LineNr">1426 </span>  <span class="Delimiter">}</span>
<span id="L1427" class="LineNr">1427 </span>  <span class="PreProc">var</span> empty-args?/eax: boolean <span class="Special">&lt;-</span> <a href='print.mu.html#L390'>nil?</a> args
<span id="L1428" class="LineNr">1428 </span>  compare empty-args?, <span class="Constant">0</span>/false
<span id="L1429" class="LineNr">1429 </span>  <span class="Delimiter">{</span>
<span id="L1430" class="LineNr">1430 </span>    <span class="PreProc">break-if-=</span>
<span id="L1431" class="LineNr">1431 </span>    <span class="Special"><a href='trace.mu.html#L197'>error</a></span> trace, <span class="Constant">&quot;'debug' needs 1 arg but got 0&quot;</span>
<span id="L1432" class="LineNr">1432 </span>    <span class="PreProc">return</span>
<span id="L1433" class="LineNr">1433 </span>  <span class="Delimiter">}</span>
<span id="L1434" class="LineNr">1434 </span>  <span class="muComment"># dump args-&gt;left uglily to screen and wait for a keypress</span>
<span id="L1435" class="LineNr">1435 </span>  <span class="PreProc">var</span> first-ah/eax: (addr handle <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> get args, left
<span id="L1436" class="LineNr">1436 </span>  <a href='print.mu.html#L173'>dump-cell-from-cursor-over-full-screen</a> first-ah, <span class="Constant">7</span>/fg <span class="Constant">0</span>/bg
<span id="L1437" class="LineNr">1437 </span>  <span class="Delimiter">{</span>
<span id="L1438" class="LineNr">1438 </span>    <span class="PreProc">var</span> foo/eax: byte <span class="Special">&lt;-</span> <a href='../102keyboard.subx.html#L21'>read-key</a> <span class="Constant">0</span>/keyboard
<span id="L1439" class="LineNr">1439 </span>    compare foo, <span class="Constant">0</span>
<span id="L1440" class="LineNr">1440 </span>    <span class="PreProc">loop-if-=</span>
<span id="L1441" class="LineNr">1441 </span>  <span class="Delimiter">}</span>
<span id="L1442" class="LineNr">1442 </span>  <span class="muComment"># return nothing</span>
<span id="L1443" class="LineNr">1443 </span><span class="Delimiter">}</span>
<span id="L1444" class="LineNr">1444 </span>
<span id="L1445" class="LineNr">1445 </span><span class="PreProc">fn</span> <span class="muFunction"><a href='primitives.mu.html#L1445'>apply-&lt;</a></span> _args-ah: (addr handle <a href='cell.mu.html#L1'>cell</a>), out: (addr handle <a href='cell.mu.html#L1'>cell</a>), trace: (addr trace) <span class="Delimiter">{</span>
<span id="L1446" class="LineNr">1446 </span>  <a href='trace.mu.html#L185'>trace-text</a> trace, <span class="Constant">&quot;eval&quot;</span>, <span class="Constant">&quot;apply '&lt;'&quot;</span>
<span id="L1447" class="LineNr">1447 </span>  <span class="PreProc">var</span> args-ah/eax: (addr handle <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> copy _args-ah
<span id="L1448" class="LineNr">1448 </span>  <span class="PreProc">var</span> _args/eax: (addr <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> <a href='../120allocate.subx.html#L235'>lookup</a> *args-ah
<span id="L1449" class="LineNr">1449 </span>  <span class="PreProc">var</span> args/<span class="muRegEsi">esi</span>: (addr <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> copy _args
<span id="L1450" class="LineNr">1450 </span>  <span class="Delimiter">{</span>
<span id="L1451" class="LineNr">1451 </span>    <span class="PreProc">var</span> args-type/eax: (addr int) <span class="Special">&lt;-</span> get args, <span class="PreProc">type</span>
<span id="L1452" class="LineNr">1452 </span>    compare *args-type, <span class="Constant">0</span>/pair
<span id="L1453" class="LineNr">1453 </span>    <span class="PreProc">break-if-=</span>
<span id="L1454" class="LineNr">1454 </span>    <span class="Special"><a href='trace.mu.html#L197'>error</a></span> trace, <span class="Constant">&quot;args to '&lt;' are not a list&quot;</span>
<span id="L1455" class="LineNr">1455 </span>    <span class="PreProc">return</span>
<span id="L1456" class="LineNr">1456 </span>  <span class="Delimiter">}</span>
<span id="L1457" class="LineNr">1457 </span>  <span class="PreProc">var</span> empty-args?/eax: boolean <span class="Special">&lt;-</span> <a href='print.mu.html#L390'>nil?</a> args
<span id="L1458" class="LineNr">1458 </span>  compare empty-args?, <span class="Constant">0</span>/false
<span id="L1459" class="LineNr">1459 </span>  <span class="Delimiter">{</span>
<span id="L1460" class="LineNr">1460 </span>    <span class="PreProc">break-if-=</span>
<span id="L1461" class="LineNr">1461 </span>    <span class="Special"><a href='trace.mu.html#L197'>error</a></span> trace, <span class="Constant">&quot;'&lt;' needs 2 args but got 0&quot;</span>
<span id="L1462" class="LineNr">1462 </span>    <span class="PreProc">return</span>
<span id="L1463" class="LineNr">1463 </span>  <span class="Delimiter">}</span>
<span id="L1464" class="LineNr">1464 </span>  <span class="muComment"># args-&gt;left</span>
<span id="L1465" class="LineNr">1465 </span>  <span class="PreProc">var</span> first-ah/<span class="muRegEcx">ecx</span>: (addr handle <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> get args, left
<span id="L1466" class="LineNr">1466 </span>  <span class="muComment"># args-&gt;right-&gt;left</span>
<span id="L1467" class="LineNr">1467 </span>  <span class="PreProc">var</span> right-ah/eax: (addr handle <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> get args, right
<span id="L1468" class="LineNr">1468 </span>  <span class="PreProc">var</span> right/eax: (addr <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> <a href='../120allocate.subx.html#L235'>lookup</a> *right-ah
<span id="L1469" class="LineNr">1469 </span>  <span class="Delimiter">{</span>
<span id="L1470" class="LineNr">1470 </span>    <span class="PreProc">var</span> right-type/eax: (addr int) <span class="Special">&lt;-</span> get right, <span class="PreProc">type</span>
<span id="L1471" class="LineNr">1471 </span>    compare *right-type, <span class="Constant">0</span>/pair
<span id="L1472" class="LineNr">1472 </span>    <span class="PreProc">break-if-=</span>
<span id="L1473" class="LineNr">1473 </span>    <span class="Special"><a href='trace.mu.html#L197'>error</a></span> trace, <span class="Constant">&quot;'&lt;' encountered non-pair&quot;</span>
<span id="L1474" class="LineNr">1474 </span>    <span class="PreProc">return</span>
<span id="L1475" class="LineNr">1475 </span>  <span class="Delimiter">}</span>
<span id="L1476" class="LineNr">1476 </span>  <span class="Delimiter">{</span>
<span id="L1477" class="LineNr">1477 </span>    <span class="PreProc">var</span> <a href='print.mu.html#L390'>nil?</a>/eax: boolean <span class="Special">&lt;-</span> <a href='print.mu.html#L390'>nil?</a> right
<span id="L1478" class="LineNr">1478 </span>    compare <a href='print.mu.html#L390'>nil?</a>, <span class="Constant">0</span>/false
<span id="L1479" class="LineNr">1479 </span>    <span class="PreProc">break-if-=</span>
<span id="L1480" class="LineNr">1480 </span>    <span class="Special"><a href='trace.mu.html#L197'>error</a></span> trace, <span class="Constant">&quot;'&lt;' needs 2 args but got 1&quot;</span>
<span id="L1481" class="LineNr">1481 </span>    <span class="PreProc">return</span>
<span id="L1482" class="LineNr">1482 </span>  <span class="Delimiter">}</span>
<span id="L1483" class="LineNr">1483 </span>  <span class="PreProc">var</span> second-ah/<span class="muRegEdx">edx</span>: (addr handle <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> get right, left
<span id="L1484" class="LineNr">1484 </span>  <span class="muComment"># compare</span>
<span id="L1485" class="LineNr">1485 </span>  <span class="PreProc">var</span> _first/eax: (addr <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> <a href='../120allocate.subx.html#L235'>lookup</a> *first-ah
<span id="L1486" class="LineNr">1486 </span>  <span class="PreProc">var</span> first/<span class="muRegEcx">ecx</span>: (addr <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> copy _first
<span id="L1487" class="LineNr">1487 </span>  <span class="Delimiter">{</span>
<span id="L1488" class="LineNr">1488 </span>    <span class="PreProc">var</span> first-type/eax: (addr int) <span class="Special">&lt;-</span> get first, <span class="PreProc">type</span>
<span id="L1489" class="LineNr">1489 </span>    compare *first-type, <span class="Constant">1</span>/number
<span id="L1490" class="LineNr">1490 </span>    <span class="PreProc">break-if-=</span>
<span id="L1491" class="LineNr">1491 </span>    <span class="Special"><a href='trace.mu.html#L197'>error</a></span> trace, <span class="Constant">&quot;first arg for '&lt;' is not a number&quot;</span>
<span id="L1492" class="LineNr">1492 </span>    <span class="PreProc">return</span>
<span id="L1493" class="LineNr">1493 </span>  <span class="Delimiter">}</span>
<span id="L1494" class="LineNr">1494 </span>  <span class="PreProc">var</span> first-value/<span class="muRegEcx">ecx</span>: (addr float) <span class="Special">&lt;-</span> get first, number-data
<span id="L1495" class="LineNr">1495 </span>  <span class="PreProc">var</span> first-float/<span class="Constant">xmm0</span>: float <span class="Special">&lt;-</span> copy *first-value
<span id="L1496" class="LineNr">1496 </span>  <span class="PreProc">var</span> second/eax: (addr <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> <a href='../120allocate.subx.html#L235'>lookup</a> *second-ah
<span id="L1497" class="LineNr">1497 </span>  <span class="Delimiter">{</span>
<span id="L1498" class="LineNr">1498 </span>    <span class="PreProc">var</span> second-type/eax: (addr int) <span class="Special">&lt;-</span> get second, <span class="PreProc">type</span>
<span id="L1499" class="LineNr">1499 </span>    compare *second-type, <span class="Constant">1</span>/number
<span id="L1500" class="LineNr">1500 </span>    <span class="PreProc">break-if-=</span>
<span id="L1501" class="LineNr">1501 </span>    <span class="Special"><a href='trace.mu.html#L197'>error</a></span> trace, <span class="Constant">&quot;second arg for '&lt;' is not a number&quot;</span>
<span id="L1502" class="LineNr">1502 </span>    <span class="PreProc">return</span>
<span id="L1503" class="LineNr">1503 </span>  <span class="Delimiter">}</span>
<span id="L1504" class="LineNr">1504 </span>  <span class="PreProc">var</span> second-value/eax: (addr float) <span class="Special">&lt;-</span> get second, number-data
<span id="L1505" class="LineNr">1505 </span>  compare first-float, *second-value
<span id="L1506" class="LineNr">1506 </span>  <span class="Delimiter">{</span>
<span id="L1507" class="LineNr">1507 </span>    <span class="PreProc">break-if-float&lt;</span>
<span id="L1508" class="LineNr">1508 </span>    <a href='cell.mu.html#L147'>nil</a> out
<span id="L1509" class="LineNr">1509 </span>    <span class="PreProc">return</span>
<span id="L1510" class="LineNr">1510 </span>  <span class="Delimiter">}</span>
<span id="L1511" class="LineNr">1511 </span>  <a href='cell.mu.html#L99'>new-integer</a> out, <span class="Constant">1</span>/true
<span id="L1512" class="LineNr">1512 </span><span class="Delimiter">}</span>
<span id="L1513" class="LineNr">1513 </span>
<span id="L1514" class="LineNr">1514 </span><span class="PreProc">fn</span> <span class="muFunction"><a href='primitives.mu.html#L1514'>apply-&gt;</a></span> _args-ah: (addr handle <a href='cell.mu.html#L1'>cell</a>), out: (addr handle <a href='cell.mu.html#L1'>cell</a>), trace: (addr trace) <span class="Delimiter">{</span>
<span id="L1515" class="LineNr">1515 </span>  <a href='trace.mu.html#L185'>trace-text</a> trace, <span class="Constant">&quot;eval&quot;</span>, <span class="Constant">&quot;apply '&gt;'&quot;</span>
<span id="L1516" class="LineNr">1516 </span>  <span class="PreProc">var</span> args-ah/eax: (addr handle <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> copy _args-ah
<span id="L1517" class="LineNr">1517 </span>  <span class="PreProc">var</span> _args/eax: (addr <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> <a href='../120allocate.subx.html#L235'>lookup</a> *args-ah
<span id="L1518" class="LineNr">1518 </span>  <span class="PreProc">var</span> args/<span class="muRegEsi">esi</span>: (addr <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> copy _args
<span id="L1519" class="LineNr">1519 </span>  <span class="Delimiter">{</span>
<span id="L1520" class="LineNr">1520 </span>    <span class="PreProc">var</span> args-type/eax: (addr int) <span class="Special">&lt;-</span> get args, <span class="PreProc">type</span>
<span id="L1521" class="LineNr">1521 </span>    compare *args-type, <span class="Constant">0</span>/pair
<span id="L1522" class="LineNr">1522 </span>    <span class="PreProc">break-if-=</span>
<span id="L1523" class="LineNr">1523 </span>    <span class="Special"><a href='trace.mu.html#L197'>error</a></span> trace, <span class="Constant">&quot;args to '&gt;' are not a list&quot;</span>
<span id="L1524" class="LineNr">1524 </span>    <span class="PreProc">return</span>
<span id="L1525" class="LineNr">1525 </span>  <span class="Delimiter">}</span>
<span id="L1526" class="LineNr">1526 </span>  <span class="PreProc">var</span> empty-args?/eax: boolean <span class="Special">&lt;-</span> <a href='print.mu.html#L390'>nil?</a> args
<span id="L1527" class="LineNr">1527 </span>  compare empty-args?, <span class="Constant">0</span>/false
<span id="L1528" class="LineNr">1528 </span>  <span class="Delimiter">{</span>
<span id="L1529" class="LineNr">1529 </span>    <span class="PreProc">break-if-=</span>
<span id="L1530" class="LineNr">1530 </span>    <span class="Special"><a href='trace.mu.html#L197'>error</a></span> trace, <span class="Constant">&quot;'&gt;' needs 2 args but got 0&quot;</span>
<span id="L1531" class="LineNr">1531 </span>    <span class="PreProc">return</span>
<span id="L1532" class="LineNr">1532 </span>  <span class="Delimiter">}</span>
<span id="L1533" class="LineNr">1533 </span>  <span class="muComment"># args-&gt;left</span>
<span id="L1534" class="LineNr">1534 </span>  <span class="PreProc">var</span> first-ah/<span class="muRegEcx">ecx</span>: (addr handle <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> get args, left
<span id="L1535" class="LineNr">1535 </span>  <span class="muComment"># args-&gt;right-&gt;left</span>
<span id="L1536" class="LineNr">1536 </span>  <span class="PreProc">var</span> right-ah/eax: (addr handle <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> get args, right
<span id="L1537" class="LineNr">1537 </span>  <span class="PreProc">var</span> right/eax: (addr <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> <a href='../120allocate.subx.html#L235'>lookup</a> *right-ah
<span id="L1538" class="LineNr">1538 </span>  <span class="Delimiter">{</span>
<span id="L1539" class="LineNr">1539 </span>    <span class="PreProc">var</span> right-type/eax: (addr int) <span class="Special">&lt;-</span> get right, <span class="PreProc">type</span>
<span id="L1540" class="LineNr">1540 </span>    compare *right-type, <span class="Constant">0</span>/pair
<span id="L1541" class="LineNr">1541 </span>    <span class="PreProc">break-if-=</span>
<span id="L1542" class="LineNr">1542 </span>    <span class="Special"><a href='trace.mu.html#L197'>error</a></span> trace, <span class="Constant">&quot;'&gt;' encountered non-pair&quot;</span>
<span id="L1543" class="LineNr">1543 </span>    <span class="PreProc">return</span>
<span id="L1544" class="LineNr">1544 </span>  <span class="Delimiter">}</span>
<span id="L1545" class="LineNr">1545 </span>  <span class="Delimiter">{</span>
<span id="L1546" class="LineNr">1546 </span>    <span class="PreProc">var</span> <a href='print.mu.html#L390'>nil?</a>/eax: boolean <span class="Special">&lt;-</span> <a href='print.mu.html#L390'>nil?</a> right
<span id="L1547" class="LineNr">1547 </span>    compare <a href='print.mu.html#L390'>nil?</a>, <span class="Constant">0</span>/false
<span id="L1548" class="LineNr">1548 </span>    <span class="PreProc">break-if-=</span>
<span id="L1549" class="LineNr">1549 </span>    <span class="Special"><a href='trace.mu.html#L197'>error</a></span> trace, <span class="Constant">&quot;'&gt;' needs 2 args but got 1&quot;</span>
<span id="L1550" class="LineNr">1550 </span>    <span class="PreProc">return</span>
<span id="L1551" class="LineNr">1551 </span>  <span class="Delimiter">}</span>
<span id="L1552" class="LineNr">1552 </span>  <span class="PreProc">var</span> second-ah/<span class="muRegEdx">edx</span>: (addr handle <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> get right, left
<span id="L1553" class="LineNr">1553 </span>  <span class="muComment"># compare</span>
<span id="L1554" class="LineNr">1554 </span>  <span class="PreProc">var</span> _first/eax: (addr <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> <a href='../120allocate.subx.html#L235'>lookup</a> *first-ah
<span id="L1555" class="LineNr">1555 </span>  <span class="PreProc">var</span> first/<span class="muRegEcx">ecx</span>: (addr <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> copy _first
<span id="L1556" class="LineNr">1556 </span>  <span class="Delimiter">{</span>
<span id="L1557" class="LineNr">1557 </span>    <span class="PreProc">var</span> first-type/eax: (addr int) <span class="Special">&lt;-</span> get first, <span class="PreProc">type</span>
<span id="L1558" class="LineNr">1558 </span>    compare *first-type, <span class="Constant">1</span>/number
<span id="L1559" class="LineNr">1559 </span>    <span class="PreProc">break-if-=</span>
<span id="L1560" class="LineNr">1560 </span>    <span class="Special"><a href='trace.mu.html#L197'>error</a></span> trace, <span class="Constant">&quot;first arg for '&gt;' is not a number&quot;</span>
<span id="L1561" class="LineNr">1561 </span>    <span class="PreProc">return</span>
<span id="L1562" class="LineNr">1562 </span>  <span class="Delimiter">}</span>
<span id="L1563" class="LineNr">1563 </span>  <span class="PreProc">var</span> first-value/<span class="muRegEcx">ecx</span>: (addr float) <span class="Special">&lt;-</span> get first, number-data
<span id="L1564" class="LineNr">1564 </span>  <span class="PreProc">var</span> first-float/<span class="Constant">xmm0</span>: float <span class="Special">&lt;-</span> copy *first-value
<span id="L1565" class="LineNr">1565 </span>  <span class="PreProc">var</span> second/eax: (addr <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> <a href='../120allocate.subx.html#L235'>lookup</a> *second-ah
<span id="L1566" class="LineNr">1566 </span>  <span class="Delimiter">{</span>
<span id="L1567" class="LineNr">1567 </span>    <span class="PreProc">var</span> second-type/eax: (addr int) <span class="Special">&lt;-</span> get second, <span class="PreProc">type</span>
<span id="L1568" class="LineNr">1568 </span>    compare *second-type, <span class="Constant">1</span>/number
<span id="L1569" class="LineNr">1569 </span>    <span class="PreProc">break-if-=</span>
<span id="L1570" class="LineNr">1570 </span>    <span class="Special"><a href='trace.mu.html#L197'>error</a></span> trace, <span class="Constant">&quot;second arg for '&gt;' is not a number&quot;</span>
<span id="L1571" class="LineNr">1571 </span>    <span class="PreProc">return</span>
<span id="L1572" class="LineNr">1572 </span>  <span class="Delimiter">}</span>
<span id="L1573" class="LineNr">1573 </span>  <span class="PreProc">var</span> second-value/eax: (addr float) <span class="Special">&lt;-</span> get second, number-data
<span id="L1574" class="LineNr">1574 </span>  compare first-float, *second-value
<span id="L1575" class="LineNr">1575 </span>  <span class="Delimiter">{</span>
<span id="L1576" class="LineNr">1576 </span>    <span class="PreProc">break-if-float&gt;</span>
<span id="L1577" class="LineNr">1577 </span>    <a href='cell.mu.html#L147'>nil</a> out
<span id="L1578" class="LineNr">1578 </span>    <span class="PreProc">return</span>
<span id="L1579" class="LineNr">1579 </span>  <span class="Delimiter">}</span>
<span id="L1580" class="LineNr">1580 </span>  <a href='cell.mu.html#L99'>new-integer</a> out, <span class="Constant">1</span>/true
<span id="L1581" class="LineNr">1581 </span><span class="Delimiter">}</span>
<span id="L1582" class="LineNr">1582 </span>
<span id="L1583" class="LineNr">1583 </span><span class="PreProc">fn</span> <span class="muFunction"><a href='primitives.mu.html#L1583'>apply-&lt;=</a></span> _args-ah: (addr handle <a href='cell.mu.html#L1'>cell</a>), out: (addr handle <a href='cell.mu.html#L1'>cell</a>), trace: (addr trace) <span class="Delimiter">{</span>
<span id="L1584" class="LineNr">1584 </span>  <a href='trace.mu.html#L185'>trace-text</a> trace, <span class="Constant">&quot;eval&quot;</span>, <span class="Constant">&quot;apply '&lt;='&quot;</span>
<span id="L1585" class="LineNr">1585 </span>  <span class="PreProc">var</span> args-ah/eax: (addr handle <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> copy _args-ah
<span id="L1586" class="LineNr">1586 </span>  <span class="PreProc">var</span> _args/eax: (addr <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> <a href='../120allocate.subx.html#L235'>lookup</a> *args-ah
<span id="L1587" class="LineNr">1587 </span>  <span class="PreProc">var</span> args/<span class="muRegEsi">esi</span>: (addr <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> copy _args
<span id="L1588" class="LineNr">1588 </span>  <span class="Delimiter">{</span>
<span id="L1589" class="LineNr">1589 </span>    <span class="PreProc">var</span> args-type/eax: (addr int) <span class="Special">&lt;-</span> get args, <span class="PreProc">type</span>
<span id="L1590" class="LineNr">1590 </span>    compare *args-type, <span class="Constant">0</span>/pair
<span id="L1591" class="LineNr">1591 </span>    <span class="PreProc">break-if-=</span>
<span id="L1592" class="LineNr">1592 </span>    <span class="Special"><a href='trace.mu.html#L197'>error</a></span> trace, <span class="Constant">&quot;args to '&lt;=' are not a list&quot;</span>
<span id="L1593" class="LineNr">1593 </span>    <span class="PreProc">return</span>
<span id="L1594" class="LineNr">1594 </span>  <span class="Delimiter">}</span>
<span id="L1595" class="LineNr">1595 </span>  <span class="PreProc">var</span> empty-args?/eax: boolean <span class="Special">&lt;-</span> <a href='print.mu.html#L390'>nil?</a> args
<span id="L1596" class="LineNr">1596 </span>  compare empty-args?, <span class="Constant">0</span>/false
<span id="L1597" class="LineNr">1597 </span>  <span class="Delimiter">{</span>
<span id="L1598" class="LineNr">1598 </span>    <span class="PreProc">break-if-=</span>
<span id="L1599" class="LineNr">1599 </span>    <span class="Special"><a href='trace.mu.html#L197'>error</a></span> trace, <span class="Constant">&quot;'&lt;=' needs 2 args but got 0&quot;</span>
<span id="L1600" class="LineNr">1600 </span>    <span class="PreProc">return</span>
<span id="L1601" class="LineNr">1601 </span>  <span class="Delimiter">}</span>
<span id="L1602" class="LineNr">1602 </span>  <span class="muComment"># args-&gt;left</span>
<span id="L1603" class="LineNr">1603 </span>  <span class="PreProc">var</span> first-ah/<span class="muRegEcx">ecx</span>: (addr handle <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> get args, left
<span id="L1604" class="LineNr">1604 </span>  <span class="muComment"># args-&gt;right-&gt;left</span>
<span id="L1605" class="LineNr">1605 </span>  <span class="PreProc">var</span> right-ah/eax: (addr handle <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> get args, right
<span id="L1606" class="LineNr">1606 </span>  <span class="PreProc">var</span> right/eax: (addr <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> <a href='../120allocate.subx.html#L235'>lookup</a> *right-ah
<span id="L1607" class="LineNr">1607 </span>  <span class="Delimiter">{</span>
<span id="L1608" class="LineNr">1608 </span>    <span class="PreProc">var</span> right-type/eax: (addr int) <span class="Special">&lt;-</span> get right, <span class="PreProc">type</span>
<span id="L1609" class="LineNr">1609 </span>    compare *right-type, <span class="Constant">0</span>/pair
<span id="L1610" class="LineNr">1610 </span>    <span class="PreProc">break-if-=</span>
<span id="L1611" class="LineNr">1611 </span>    <span class="Special"><a href='trace.mu.html#L197'>error</a></span> trace, <span class="Constant">&quot;'&lt;=' encountered non-pair&quot;</span>
<span id="L1612" class="LineNr">1612 </span>    <span class="PreProc">return</span>
<span id="L1613" class="LineNr">1613 </span>  <span class="Delimiter">}</span>
<span id="L1614" class="LineNr">1614 </span>  <span class="Delimiter">{</span>
<span id="L1615" class="LineNr">1615 </span>    <span class="PreProc">var</span> <a href='print.mu.html#L390'>nil?</a>/eax: boolean <span class="Special">&lt;-</span> <a href='print.mu.html#L390'>nil?</a> right
<span id="L1616" class="LineNr">1616 </span>    compare <a href='print.mu.html#L390'>nil?</a>, <span class="Constant">0</span>/false
<span id="L1617" class="LineNr">1617 </span>    <span class="PreProc">break-if-=</span>
<span id="L1618" class="LineNr">1618 </span>    <span class="Special"><a href='trace.mu.html#L197'>error</a></span> trace, <span class="Constant">&quot;'&lt;=' needs 2 args but got 1&quot;</span>
<span id="L1619" class="LineNr">1619 </span>    <span class="PreProc">return</span>
<span id="L1620" class="LineNr">1620 </span>  <span class="Delimiter">}</span>
<span id="L1621" class="LineNr">1621 </span>  <span class="PreProc">var</span> second-ah/<span class="muRegEdx">edx</span>: (addr handle <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> get right, left
<span id="L1622" class="LineNr">1622 </span>  <span class="muComment"># compare</span>
<span id="L1623" class="LineNr">1623 </span>  <span class="PreProc">var</span> _first/eax: (addr <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> <a href='../120allocate.subx.html#L235'>lookup</a> *first-ah
<span id="L1624" class="LineNr">1624 </span>  <span class="PreProc">var</span> first/<span class="muRegEcx">ecx</span>: (addr <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> copy _first
<span id="L1625" class="LineNr">1625 </span>  <span class="Delimiter">{</span>
<span id="L1626" class="LineNr">1626 </span>    <span class="PreProc">var</span> first-type/eax: (addr int) <span class="Special">&lt;-</span> get first, <span class="PreProc">type</span>
<span id="L1627" class="LineNr">1627 </span>    compare *first-type, <span class="Constant">1</span>/number
<span id="L1628" class="LineNr">1628 </span>    <span class="PreProc">break-if-=</span>
<span id="L1629" class="LineNr">1629 </span>    <span class="Special"><a href='trace.mu.html#L197'>error</a></span> trace, <span class="Constant">&quot;first arg for '&lt;=' is not a number&quot;</span>
<span id="L1630" class="LineNr">1630 </span>    <span class="PreProc">return</span>
<span id="L1631" class="LineNr">1631 </span>  <span class="Delimiter">}</span>
<span id="L1632" class="LineNr">1632 </span>  <span class="PreProc">var</span> first-value/<span class="muRegEcx">ecx</span>: (addr float) <span class="Special">&lt;-</span> get first, number-data
<span id="L1633" class="LineNr">1633 </span>  <span class="PreProc">var</span> first-float/<span class="Constant">xmm0</span>: float <span class="Special">&lt;-</span> copy *first-value
<span id="L1634" class="LineNr">1634 </span>  <span class="PreProc">var</span> second/eax: (addr <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> <a href='../120allocate.subx.html#L235'>lookup</a> *second-ah
<span id="L1635" class="LineNr">1635 </span>  <span class="Delimiter">{</span>
<span id="L1636" class="LineNr">1636 </span>    <span class="PreProc">var</span> second-type/eax: (addr int) <span class="Special">&lt;-</span> get second, <span class="PreProc">type</span>
<span id="L1637" class="LineNr">1637 </span>    compare *second-type, <span class="Constant">1</span>/number
<span id="L1638" class="LineNr">1638 </span>    <span class="PreProc">break-if-=</span>
<span id="L1639" class="LineNr">1639 </span>    <span class="Special"><a href='trace.mu.html#L197'>error</a></span> trace, <span class="Constant">&quot;second arg for '&lt;=' is not a number&quot;</span>
<span id="L1640" class="LineNr">1640 </span>    <span class="PreProc">return</span>
<span id="L1641" class="LineNr">1641 </span>  <span class="Delimiter">}</span>
<span id="L1642" class="LineNr">1642 </span>  <span class="PreProc">var</span> second-value/eax: (addr float) <span class="Special">&lt;-</span> get second, number-data
<span id="L1643" class="LineNr">1643 </span>  compare first-float, *second-value
<span id="L1644" class="LineNr">1644 </span>  <span class="Delimiter">{</span>
<span id="L1645" class="LineNr">1645 </span>    <span class="PreProc">break-if-float&lt;=</span>
<span id="L1646" class="LineNr">1646 </span>    <a href='cell.mu.html#L147'>nil</a> out
<span id="L1647" class="LineNr">1647 </span>    <span class="PreProc">return</span>
<span id="L1648" class="LineNr">1648 </span>  <span class="Delimiter">}</span>
<span id="L1649" class="LineNr">1649 </span>  <a href='cell.mu.html#L99'>new-integer</a> out, <span class="Constant">1</span>/true
<span id="L1650" class="LineNr">1650 </span><span class="Delimiter">}</span>
<span id="L1651" class="LineNr">1651 </span>
<span id="L1652" class="LineNr">1652 </span><span class="PreProc">fn</span> <span class="muFunction"><a href='primitives.mu.html#L1652'>apply-&gt;=</a></span> _args-ah: (addr handle <a href='cell.mu.html#L1'>cell</a>), out: (addr handle <a href='cell.mu.html#L1'>cell</a>), trace: (addr trace) <span class="Delimiter">{</span>
<span id="L1653" class="LineNr">1653 </span>  <a href='trace.mu.html#L185'>trace-text</a> trace, <span class="Constant">&quot;eval&quot;</span>, <span class="Constant">&quot;apply '&gt;='&quot;</span>
<span id="L1654" class="LineNr">1654 </span>  <span class="PreProc">var</span> args-ah/eax: (addr handle <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> copy _args-ah
<span id="L1655" class="LineNr">1655 </span>  <span class="PreProc">var</span> _args/eax: (addr <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> <a href='../120allocate.subx.html#L235'>lookup</a> *args-ah
<span id="L1656" class="LineNr">1656 </span>  <span class="PreProc">var</span> args/<span class="muRegEsi">esi</span>: (addr <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> copy _args
<span id="L1657" class="LineNr">1657 </span>  <span class="Delimiter">{</span>
<span id="L1658" class="LineNr">1658 </span>    <span class="PreProc">var</span> args-type/eax: (addr int) <span class="Special">&lt;-</span> get args, <span class="PreProc">type</span>
<span id="L1659" class="LineNr">1659 </span>    compare *args-type, <span class="Constant">0</span>/pair
<span id="L1660" class="LineNr">1660 </span>    <span class="PreProc">break-if-=</span>
<span id="L1661" class="LineNr">1661 </span>    <span class="Special"><a href='trace.mu.html#L197'>error</a></span> trace, <span class="Constant">&quot;args to '&gt;=' are not a list&quot;</span>
<span id="L1662" class="LineNr">1662 </span>    <span class="PreProc">return</span>
<span id="L1663" class="LineNr">1663 </span>  <span class="Delimiter">}</span>
<span id="L1664" class="LineNr">1664 </span>  <span class="PreProc">var</span> empty-args?/eax: boolean <span class="Special">&lt;-</span> <a href='print.mu.html#L390'>nil?</a> args
<span id="L1665" class="LineNr">1665 </span>  compare empty-args?, <span class="Constant">0</span>/false
<span id="L1666" class="LineNr">1666 </span>  <span class="Delimiter">{</span>
<span id="L1667" class="LineNr">1667 </span>    <span class="PreProc">break-if-=</span>
<span id="L1668" class="LineNr">1668 </span>    <span class="Special"><a href='trace.mu.html#L197'>error</a></span> trace, <span class="Constant">&quot;'&gt;=' needs 2 args but got 0&quot;</span>
<span id="L1669" class="LineNr">1669 </span>    <span class="PreProc">return</span>
<span id="L1670" class="LineNr">1670 </span>  <span class="Delimiter">}</span>
<span id="L1671" class="LineNr">1671 </span>  <span class="muComment"># args-&gt;left</span>
<span id="L1672" class="LineNr">1672 </span>  <span class="PreProc">var</span> first-ah/<span class="muRegEcx">ecx</span>: (addr handle <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> get args, left
<span id="L1673" class="LineNr">1673 </span>  <span class="muComment"># args-&gt;right-&gt;left</span>
<span id="L1674" class="LineNr">1674 </span>  <span class="PreProc">var</span> right-ah/eax: (addr handle <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> get args, right
<span id="L1675" class="LineNr">1675 </span>  <span class="PreProc">var</span> right/eax: (addr <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> <a href='../120allocate.subx.html#L235'>lookup</a> *right-ah
<span id="L1676" class="LineNr">1676 </span>  <span class="Delimiter">{</span>
<span id="L1677" class="LineNr">1677 </span>    <span class="PreProc">var</span> right-type/eax: (addr int) <span class="Special">&lt;-</span> get right, <span class="PreProc">type</span>
<span id="L1678" class="LineNr">1678 </span>    compare *right-type, <span class="Constant">0</span>/pair
<span id="L1679" class="LineNr">1679 </span>    <span class="PreProc">break-if-=</span>
<span id="L1680" class="LineNr">1680 </span>    <span class="Special"><a href='trace.mu.html#L197'>error</a></span> trace, <span class="Constant">&quot;'&gt;=' encountered non-pair&quot;</span>
<span id="L1681" class="LineNr">1681 </span>    <span class="PreProc">return</span>
<span id="L1682" class="LineNr">1682 </span>  <span class="Delimiter">}</span>
<span id="L1683" class="LineNr">1683 </span>  <span class="Delimiter">{</span>
<span id="L1684" class="LineNr">1684 </span>    <span class="PreProc">var</span> <a href='print.mu.html#L390'>nil?</a>/eax: boolean <span class="Special">&lt;-</span> <a href='print.mu.html#L390'>nil?</a> right
<span id="L1685" class="LineNr">1685 </span>    compare <a href='print.mu.html#L390'>nil?</a>, <span class="Constant">0</span>/false
<span id="L1686" class="LineNr">1686 </span>    <span class="PreProc">break-if-=</span>
<span id="L1687" class="LineNr">1687 </span>    <span class="Special"><a href='trace.mu.html#L197'>error</a></span> trace, <span class="Constant">&quot;'&gt;=' needs 2 args but got 1&quot;</span>
<span id="L1688" class="LineNr">1688 </span>    <span class="PreProc">return</span>
<span id="L1689" class="LineNr">1689 </span>  <span class="Delimiter">}</span>
<span id="L1690" class="LineNr">1690 </span>  <span class="PreProc">var</span> second-ah/<span class="muRegEdx">edx</span>: (addr handle <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> get right, left
<span id="L1691" class="LineNr">1691 </span>  <span class="muComment"># compare</span>
<span id="L1692" class="LineNr">1692 </span>  <span class="PreProc">var</span> _first/eax: (addr <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> <a href='../120allocate.subx.html#L235'>lookup</a> *first-ah
<span id="L1693" class="LineNr">1693 </span>  <span class="PreProc">var</span> first/<span class="muRegEcx">ecx</span>: (addr <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> copy _first
<span id="L1694" class="LineNr">1694 </span>  <span class="Delimiter">{</span>
<span id="L1695" class="LineNr">1695 </span>    <span class="PreProc">var</span> first-type/eax: (addr int) <span class="Special">&lt;-</span> get first, <span class="PreProc">type</span>
<span id="L1696" class="LineNr">1696 </span>    compare *first-type, <span class="Constant">1</span>/number
<span id="L1697" class="LineNr">1697 </span>    <span class="PreProc">break-if-=</span>
<span id="L1698" class="LineNr">1698 </span>    <span class="Special"><a href='trace.mu.html#L197'>error</a></span> trace, <span class="Constant">&quot;first arg for '&gt;=' is not a number&quot;</span>
<span id="L1699" class="LineNr">1699 </span>    <span class="PreProc">return</span>
<span id="L1700" class="LineNr">1700 </span>  <span class="Delimiter">}</span>
<span id="L1701" class="LineNr">1701 </span>  <span class="PreProc">var</span> first-value/<span class="muRegEcx">ecx</span>: (addr float) <span class="Special">&lt;-</span> get first, number-data
<span id="L1702" class="LineNr">1702 </span>  <span class="PreProc">var</span> first-float/<span class="Constant">xmm0</span>: float <span class="Special">&lt;-</span> copy *first-value
<span id="L1703" class="LineNr">1703 </span>  <span class="PreProc">var</span> second/eax: (addr <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> <a href='../120allocate.subx.html#L235'>lookup</a> *second-ah
<span id="L1704" class="LineNr">1704 </span>  <span class="Delimiter">{</span>
<span id="L1705" class="LineNr">1705 </span>    <span class="PreProc">var</span> second-type/eax: (addr int) <span class="Special">&lt;-</span> get second, <span class="PreProc">type</span>
<span id="L1706" class="LineNr">1706 </span>    compare *second-type, <span class="Constant">1</span>/number
<span id="L1707" class="LineNr">1707 </span>    <span class="PreProc">break-if-=</span>
<span id="L1708" class="LineNr">1708 </span>    <span class="Special"><a href='trace.mu.html#L197'>error</a></span> trace, <span class="Constant">&quot;second arg for '&gt;=' is not a number&quot;</span>
<span id="L1709" class="LineNr">1709 </span>    <span class="PreProc">return</span>
<span id="L1710" class="LineNr">1710 </span>  <span class="Delimiter">}</span>
<span id="L1711" class="LineNr">1711 </span>  <span class="PreProc">var</span> second-value/eax: (addr float) <span class="Special">&lt;-</span> get second, number-data
<span id="L1712" class="LineNr">1712 </span>  compare first-float, *second-value
<span id="L1713" class="LineNr">1713 </span>  <span class="Delimiter">{</span>
<span id="L1714" class="LineNr">1714 </span>    <span class="PreProc">break-if-float&gt;=</span>
<span id="L1715" class="LineNr">1715 </span>    <a href='cell.mu.html#L147'>nil</a> out
<span id="L1716" class="LineNr">1716 </span>    <span class="PreProc">return</span>
<span id="L1717" class="LineNr">1717 </span>  <span class="Delimiter">}</span>
<span id="L1718" class="LineNr">1718 </span>  <a href='cell.mu.html#L99'>new-integer</a> out, <span class="Constant">1</span>/true
<span id="L1719" class="LineNr">1719 </span><span class="Delimiter">}</span>
<span id="L1720" class="LineNr">1720 </span>
<span id="L1721" class="LineNr">1721 </span><span class="PreProc">fn</span> <span class="muFunction"><a href='primitives.mu.html#L1721'>apply-print</a></span> _args-ah: (addr handle <a href='cell.mu.html#L1'>cell</a>), out: (addr handle <a href='cell.mu.html#L1'>cell</a>), trace: (addr trace) <span class="Delimiter">{</span>
<span id="L1722" class="LineNr">1722 </span>  <a href='trace.mu.html#L185'>trace-text</a> trace, <span class="Constant">&quot;eval&quot;</span>, <span class="Constant">&quot;apply 'print'&quot;</span>
<span id="L1723" class="LineNr">1723 </span>  <span class="PreProc">var</span> args-ah/eax: (addr handle <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> copy _args-ah
<span id="L1724" class="LineNr">1724 </span>  <span class="PreProc">var</span> _args/eax: (addr <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> <a href='../120allocate.subx.html#L235'>lookup</a> *args-ah
<span id="L1725" class="LineNr">1725 </span>  <span class="PreProc">var</span> args/<span class="muRegEsi">esi</span>: (addr <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> copy _args
<span id="L1726" class="LineNr">1726 </span>  <span class="Delimiter">{</span>
<span id="L1727" class="LineNr">1727 </span>    <span class="PreProc">var</span> args-type/eax: (addr int) <span class="Special">&lt;-</span> get args, <span class="PreProc">type</span>
<span id="L1728" class="LineNr">1728 </span>    compare *args-type, <span class="Constant">0</span>/pair
<span id="L1729" class="LineNr">1729 </span>    <span class="PreProc">break-if-=</span>
<span id="L1730" class="LineNr">1730 </span>    <span class="Special"><a href='trace.mu.html#L197'>error</a></span> trace, <span class="Constant">&quot;args to 'print' are not a list&quot;</span>
<span id="L1731" class="LineNr">1731 </span>    <span class="PreProc">return</span>
<span id="L1732" class="LineNr">1732 </span>  <span class="Delimiter">}</span>
<span id="L1733" class="LineNr">1733 </span>  <span class="PreProc">var</span> empty-args?/eax: boolean <span class="Special">&lt;-</span> <a href='print.mu.html#L390'>nil?</a> args
<span id="L1734" class="LineNr">1734 </span>  compare empty-args?, <span class="Constant">0</span>/false
<span id="L1735" class="LineNr">1735 </span>  <span class="Delimiter">{</span>
<span id="L1736" class="LineNr">1736 </span>    <span class="PreProc">break-if-=</span>
<span id="L1737" class="LineNr">1737 </span>    <span class="Special"><a href='trace.mu.html#L197'>error</a></span> trace, <span class="Constant">&quot;'print' needs 2 args but got 0&quot;</span>
<span id="L1738" class="LineNr">1738 </span>    <span class="PreProc">return</span>
<span id="L1739" class="LineNr">1739 </span>  <span class="Delimiter">}</span>
<span id="L1740" class="LineNr">1740 </span>  <span class="muComment"># screen = args-&gt;left</span>
<span id="L1741" class="LineNr">1741 </span>  <span class="PreProc">var</span> first-ah/eax: (addr handle <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> get args, left
<span id="L1742" class="LineNr">1742 </span>  <span class="PreProc">var</span> first/eax: (addr <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> <a href='../120allocate.subx.html#L235'>lookup</a> *first-ah
<span id="L1743" class="LineNr">1743 </span>  <span class="Delimiter">{</span>
<span id="L1744" class="LineNr">1744 </span>    <span class="PreProc">var</span> first-type/eax: (addr int) <span class="Special">&lt;-</span> get first, <span class="PreProc">type</span>
<span id="L1745" class="LineNr">1745 </span>    compare *first-type, <span class="Constant">5</span>/screen
<span id="L1746" class="LineNr">1746 </span>    <span class="PreProc">break-if-=</span>
<span id="L1747" class="LineNr">1747 </span>    <span class="Special"><a href='trace.mu.html#L197'>error</a></span> trace, <span class="Constant">&quot;first arg for 'print' is not a screen&quot;</span>
<span id="L1748" class="LineNr">1748 </span>    <span class="PreProc">return</span>
<span id="L1749" class="LineNr">1749 </span>  <span class="Delimiter">}</span>
<span id="L1750" class="LineNr">1750 </span>  <span class="PreProc">var</span> screen-ah/eax: (addr handle <a href='../500fake-screen.mu.html#L16'>screen</a>) <span class="Special">&lt;-</span> get first, screen-data
<span id="L1751" class="LineNr">1751 </span>  <span class="PreProc">var</span> _screen/eax: (addr <a href='../500fake-screen.mu.html#L16'>screen</a>) <span class="Special">&lt;-</span> <a href='../120allocate.subx.html#L235'>lookup</a> *screen-ah
<span id="L1752" class="LineNr">1752 </span>  <span class="PreProc">var</span> <a href='../500fake-screen.mu.html#L16'>screen</a>/<span class="muRegEcx">ecx</span>: (addr <a href='../500fake-screen.mu.html#L16'>screen</a>) <span class="Special">&lt;-</span> copy _screen
<span id="L1753" class="LineNr">1753 </span>  <span class="muComment"># args-&gt;right-&gt;left</span>
<span id="L1754" class="LineNr">1754 </span>  <span class="PreProc">var</span> right-ah/eax: (addr handle <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> get args, right
<span id="L1755" class="LineNr">1755 </span>  <span class="PreProc">var</span> right/eax: (addr <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> <a href='../120allocate.subx.html#L235'>lookup</a> *right-ah
<span id="L1756" class="LineNr">1756 </span>  <span class="Delimiter">{</span>
<span id="L1757" class="LineNr">1757 </span>    <span class="PreProc">var</span> right-type/eax: (addr int) <span class="Special">&lt;-</span> get right, <span class="PreProc">type</span>
<span id="L1758" class="LineNr">1758 </span>    compare *right-type, <span class="Constant">0</span>/pair
<span id="L1759" class="LineNr">1759 </span>    <span class="PreProc">break-if-=</span>
<span id="L1760" class="LineNr">1760 </span>    <span class="Special"><a href='trace.mu.html#L197'>error</a></span> trace, <span class="Constant">&quot;'print' encountered non-pair&quot;</span>
<span id="L1761" class="LineNr">1761 </span>    <span class="PreProc">return</span>
<span id="L1762" class="LineNr">1762 </span>  <span class="Delimiter">}</span>
<span id="L1763" class="LineNr">1763 </span>  <span class="Delimiter">{</span>
<span id="L1764" class="LineNr">1764 </span>    <span class="PreProc">var</span> <a href='print.mu.html#L390'>nil?</a>/eax: boolean <span class="Special">&lt;-</span> <a href='print.mu.html#L390'>nil?</a> right
<span id="L1765" class="LineNr">1765 </span>    compare <a href='print.mu.html#L390'>nil?</a>, <span class="Constant">0</span>/false
<span id="L1766" class="LineNr">1766 </span>    <span class="PreProc">break-if-=</span>
<span id="L1767" class="LineNr">1767 </span>    <span class="Special"><a href='trace.mu.html#L197'>error</a></span> trace, <span class="Constant">&quot;'print' needs 2 args but got 1&quot;</span>
<span id="L1768" class="LineNr">1768 </span>    <span class="PreProc">return</span>
<span id="L1769" class="LineNr">1769 </span>  <span class="Delimiter">}</span>
<span id="L1770" class="LineNr">1770 </span>  <span class="PreProc">var</span> second-ah/eax: (addr handle <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> get right, left
<span id="L1771" class="LineNr">1771 </span>  <span class="PreProc">var</span> stream-storage: (stream byte <span class="Constant">0x100</span>)
<span id="L1772" class="LineNr">1772 </span>  <span class="PreProc">var</span> stream/<span class="muRegEdi">edi</span>: (addr stream byte) <span class="Special">&lt;-</span> address stream-storage
<span id="L1773" class="LineNr">1773 </span>  <a href='print.mu.html#L7'>print-cell</a> second-ah, stream, trace
<span id="L1774" class="LineNr">1774 </span>  <a href='../501draw-text.mu.html#L295'>draw-stream-wrapping-right-then-down-from-cursor-over-full-screen</a> <a href='../500fake-screen.mu.html#L16'>screen</a>, stream, <span class="Constant">7</span>/fg, <span class="Constant">0</span>/bg
<span id="L1775" class="LineNr">1775 </span>  <span class="muComment"># return what was printed</span>
<span id="L1776" class="LineNr">1776 </span>  copy-object second-ah, out
<span id="L1777" class="LineNr">1777 </span><span class="Delimiter">}</span>
<span id="L1778" class="LineNr">1778 </span>
<span id="L1779" class="LineNr">1779 </span><span class="PreProc">fn</span> <span class="muFunction"><a href='primitives.mu.html#L1779'>apply-clear</a></span> _args-ah: (addr handle <a href='cell.mu.html#L1'>cell</a>), out: (addr handle <a href='cell.mu.html#L1'>cell</a>), trace: (addr trace) <span class="Delimiter">{</span>
<span id="L1780" class="LineNr">1780 </span>  <a href='trace.mu.html#L185'>trace-text</a> trace, <span class="Constant">&quot;eval&quot;</span>, <span class="Constant">&quot;apply 'clear'&quot;</span>
<span id="L1781" class="LineNr">1781 </span>  <span class="PreProc">var</span> args-ah/eax: (addr handle <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> copy _args-ah
<span id="L1782" class="LineNr">1782 </span>  <span class="PreProc">var</span> _args/eax: (addr <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> <a href='../120allocate.subx.html#L235'>lookup</a> *args-ah
<span id="L1783" class="LineNr">1783 </span>  <span class="PreProc">var</span> args/<span class="muRegEsi">esi</span>: (addr <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> copy _args
<span id="L1784" class="LineNr">1784 </span>  <span class="Delimiter">{</span>
<span id="L1785" class="LineNr">1785 </span>    <span class="PreProc">var</span> args-type/eax: (addr int) <span class="Special">&lt;-</span> get args, <span class="PreProc">type</span>
<span id="L1786" class="LineNr">1786 </span>    compare *args-type, <span class="Constant">0</span>/pair
<span id="L1787" class="LineNr">1787 </span>    <span class="PreProc">break-if-=</span>
<span id="L1788" class="LineNr">1788 </span>    <span class="Special"><a href='trace.mu.html#L197'>error</a></span> trace, <span class="Constant">&quot;args to 'clear' are not a list&quot;</span>
<span id="L1789" class="LineNr">1789 </span>    <span class="PreProc">return</span>
<span id="L1790" class="LineNr">1790 </span>  <span class="Delimiter">}</span>
<span id="L1791" class="LineNr">1791 </span>  <span class="PreProc">var</span> empty-args?/eax: boolean <span class="Special">&lt;-</span> <a href='print.mu.html#L390'>nil?</a> args
<span id="L1792" class="LineNr">1792 </span>  compare empty-args?, <span class="Constant">0</span>/false
<span id="L1793" class="LineNr">1793 </span>  <span class="Delimiter">{</span>
<span id="L1794" class="LineNr">1794 </span>    <span class="PreProc">break-if-=</span>
<span id="L1795" class="LineNr">1795 </span>    <span class="Special"><a href='trace.mu.html#L197'>error</a></span> trace, <span class="Constant">&quot;'clear' needs 1 arg but got 0&quot;</span>
<span id="L1796" class="LineNr">1796 </span>    <span class="PreProc">return</span>
<span id="L1797" class="LineNr">1797 </span>  <span class="Delimiter">}</span>
<span id="L1798" class="LineNr">1798 </span>  <span class="muComment"># screen = args-&gt;left</span>
<span id="L1799" class="LineNr">1799 </span>  <span class="PreProc">var</span> first-ah/eax: (addr handle <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> get args, left
<span id="L1800" class="LineNr">1800 </span>  <span class="PreProc">var</span> first/eax: (addr <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> <a href='../120allocate.subx.html#L235'>lookup</a> *first-ah
<span id="L1801" class="LineNr">1801 </span>  <span class="PreProc">var</span> first-type/<span class="muRegEcx">ecx</span>: (addr int) <span class="Special">&lt;-</span> get first, <span class="PreProc">type</span>
<span id="L1802" class="LineNr">1802 </span>  compare *first-type, <span class="Constant">3</span>/stream
<span id="L1803" class="LineNr">1803 </span>  <span class="Delimiter">{</span>
<span id="L1804" class="LineNr">1804 </span>    <span class="PreProc">break-if-!=</span>
<span id="L1805" class="LineNr">1805 </span>    <span class="PreProc">var</span> stream-data-ah/eax: (addr handle stream byte) <span class="Special">&lt;-</span> get first, text-data
<span id="L1806" class="LineNr">1806 </span>    <span class="PreProc">var</span> _stream-data/eax: (addr stream byte) <span class="Special">&lt;-</span> <a href='../120allocate.subx.html#L235'>lookup</a> *stream-data-ah
<span id="L1807" class="LineNr">1807 </span>    <span class="PreProc">var</span> stream-data/<span class="muRegEbx">ebx</span>: (addr stream byte) <span class="Special">&lt;-</span> copy _stream-data
<span id="L1808" class="LineNr">1808 </span>    <a href='../106stream.subx.html#L20'>clear-stream</a> stream-data
<span id="L1809" class="LineNr">1809 </span>    <span class="PreProc">return</span>
<span id="L1810" class="LineNr">1810 </span>  <span class="Delimiter">}</span>
<span id="L1811" class="LineNr">1811 </span>  compare *first-type, <span class="Constant">5</span>/screen
<span id="L1812" class="LineNr">1812 </span>  <span class="Delimiter">{</span>
<span id="L1813" class="LineNr">1813 </span>    <span class="PreProc">break-if-!=</span>
<span id="L1814" class="LineNr">1814 </span>    <span class="PreProc">var</span> screen-ah/eax: (addr handle <a href='../500fake-screen.mu.html#L16'>screen</a>) <span class="Special">&lt;-</span> get first, screen-data
<span id="L1815" class="LineNr">1815 </span>    <span class="PreProc">var</span> _screen/eax: (addr <a href='../500fake-screen.mu.html#L16'>screen</a>) <span class="Special">&lt;-</span> <a href='../120allocate.subx.html#L235'>lookup</a> *screen-ah
<span id="L1816" class="LineNr">1816 </span>    <span class="PreProc">var</span> <a href='../500fake-screen.mu.html#L16'>screen</a>/<span class="muRegEcx">ecx</span>: (addr <a href='../500fake-screen.mu.html#L16'>screen</a>) <span class="Special">&lt;-</span> copy _screen
<span id="L1817" class="LineNr">1817 </span>    <a href='../500fake-screen.mu.html#L330'>clear-screen</a> <a href='../500fake-screen.mu.html#L16'>screen</a>
<span id="L1818" class="LineNr">1818 </span>    <span class="PreProc">return</span>
<span id="L1819" class="LineNr">1819 </span>  <span class="Delimiter">}</span>
<span id="L1820" class="LineNr">1820 </span>  <span class="Special"><a href='trace.mu.html#L197'>error</a></span> trace, <span class="Constant">&quot;first arg for 'clear' is not a <a href='../500fake-screen.mu.html#L16'>screen</a> or a stream&quot;</span>
<span id="L1821" class="LineNr">1821 </span><span class="Delimiter">}</span>
<span id="L1822" class="LineNr">1822 </span>
<span id="L1823" class="LineNr">1823 </span><span class="PreProc">fn</span> <span class="muFunction"><a href='primitives.mu.html#L1823'>apply-up</a></span> _args-ah: (addr handle <a href='cell.mu.html#L1'>cell</a>), out: (addr handle <a href='cell.mu.html#L1'>cell</a>), trace: (addr trace) <span class="Delimiter">{</span>
<span id="L1824" class="LineNr">1824 </span>  <a href='trace.mu.html#L185'>trace-text</a> trace, <span class="Constant">&quot;eval&quot;</span>, <span class="Constant">&quot;apply 'up'&quot;</span>
<span id="L1825" class="LineNr">1825 </span>  <span class="PreProc">var</span> args-ah/eax: (addr handle <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> copy _args-ah
<span id="L1826" class="LineNr">1826 </span>  <span class="PreProc">var</span> _args/eax: (addr <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> <a href='../120allocate.subx.html#L235'>lookup</a> *args-ah
<span id="L1827" class="LineNr">1827 </span>  <span class="PreProc">var</span> args/<span class="muRegEsi">esi</span>: (addr <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> copy _args
<span id="L1828" class="LineNr">1828 </span>  <span class="Delimiter">{</span>
<span id="L1829" class="LineNr">1829 </span>    <span class="PreProc">var</span> args-type/eax: (addr int) <span class="Special">&lt;-</span> get args, <span class="PreProc">type</span>
<span id="L1830" class="LineNr">1830 </span>    compare *args-type, <span class="Constant">0</span>/pair
<span id="L1831" class="LineNr">1831 </span>    <span class="PreProc">break-if-=</span>
<span id="L1832" class="LineNr">1832 </span>    <span class="Special"><a href='trace.mu.html#L197'>error</a></span> trace, <span class="Constant">&quot;args to 'up' are not a list&quot;</span>
<span id="L1833" class="LineNr">1833 </span>    <span class="PreProc">return</span>
<span id="L1834" class="LineNr">1834 </span>  <span class="Delimiter">}</span>
<span id="L1835" class="LineNr">1835 </span>  <span class="PreProc">var</span> empty-args?/eax: boolean <span class="Special">&lt;-</span> <a href='print.mu.html#L390'>nil?</a> args
<span id="L1836" class="LineNr">1836 </span>  compare empty-args?, <span class="Constant">0</span>/false
<span id="L1837" class="LineNr">1837 </span>  <span class="Delimiter">{</span>
<span id="L1838" class="LineNr">1838 </span>    <span class="PreProc">break-if-=</span>
<span id="L1839" class="LineNr">1839 </span>    <span class="Special"><a href='trace.mu.html#L197'>error</a></span> trace, <span class="Constant">&quot;'up' needs 1 arg but got 0&quot;</span>
<span id="L1840" class="LineNr">1840 </span>    <span class="PreProc">return</span>
<span id="L1841" class="LineNr">1841 </span>  <span class="Delimiter">}</span>
<span id="L1842" class="LineNr">1842 </span>  <span class="muComment"># screen = args-&gt;left</span>
<span id="L1843" class="LineNr">1843 </span>  <span class="PreProc">var</span> first-ah/eax: (addr handle <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> get args, left
<span id="L1844" class="LineNr">1844 </span>  <span class="PreProc">var</span> first/eax: (addr <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> <a href='../120allocate.subx.html#L235'>lookup</a> *first-ah
<span id="L1845" class="LineNr">1845 </span>  <span class="Delimiter">{</span>
<span id="L1846" class="LineNr">1846 </span>    <span class="PreProc">var</span> first-type/eax: (addr int) <span class="Special">&lt;-</span> get first, <span class="PreProc">type</span>
<span id="L1847" class="LineNr">1847 </span>    compare *first-type, <span class="Constant">5</span>/screen
<span id="L1848" class="LineNr">1848 </span>    <span class="PreProc">break-if-=</span>
<span id="L1849" class="LineNr">1849 </span>    <span class="Special"><a href='trace.mu.html#L197'>error</a></span> trace, <span class="Constant">&quot;first arg for 'up' is not a screen&quot;</span>
<span id="L1850" class="LineNr">1850 </span>    <span class="PreProc">return</span>
<span id="L1851" class="LineNr">1851 </span>  <span class="Delimiter">}</span>
<span id="L1852" class="LineNr">1852 </span>  <span class="PreProc">var</span> screen-ah/eax: (addr handle <a href='../500fake-screen.mu.html#L16'>screen</a>) <span class="Special">&lt;-</span> get first, screen-data
<span id="L1853" class="LineNr">1853 </span>  <span class="PreProc">var</span> _screen/eax: (addr <a href='../500fake-screen.mu.html#L16'>screen</a>) <span class="Special">&lt;-</span> <a href='../120allocate.subx.html#L235'>lookup</a> *screen-ah
<span id="L1854" class="LineNr">1854 </span>  <span class="PreProc">var</span> <a href='../500fake-screen.mu.html#L16'>screen</a>/<span class="muRegEcx">ecx</span>: (addr <a href='../500fake-screen.mu.html#L16'>screen</a>) <span class="Special">&lt;-</span> copy _screen
<span id="L1855" class="LineNr">1855 </span>  <span class="muComment">#</span>
<span id="L1856" class="LineNr">1856 </span>  <a href='../501draw-text.mu.html#L34'>move-cursor-up</a> <a href='../500fake-screen.mu.html#L16'>screen</a>
<span id="L1857" class="LineNr">1857 </span><span class="Delimiter">}</span>
<span id="L1858" class="LineNr">1858 </span>
<span id="L1859" class="LineNr">1859 </span><span class="PreProc">fn</span> <span class="muFunction"><a href='primitives.mu.html#L1859'>apply-down</a></span> _args-ah: (addr handle <a href='cell.mu.html#L1'>cell</a>), out: (addr handle <a href='cell.mu.html#L1'>cell</a>), trace: (addr trace) <span class="Delimiter">{</span>
<span id="L1860" class="LineNr">1860 </span>  <a href='trace.mu.html#L185'>trace-text</a> trace, <span class="Constant">&quot;eval&quot;</span>, <span class="Constant">&quot;apply 'down'&quot;</span>
<span id="L1861" class="LineNr">1861 </span>  <span class="PreProc">var</span> args-ah/eax: (addr handle <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> copy _args-ah
<span id="L1862" class="LineNr">1862 </span>  <span class="PreProc">var</span> _args/eax: (addr <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> <a href='../120allocate.subx.html#L235'>lookup</a> *args-ah
<span id="L1863" class="LineNr">1863 </span>  <span class="PreProc">var</span> args/<span class="muRegEsi">esi</span>: (addr <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> copy _args
<span id="L1864" class="LineNr">1864 </span>  <span class="Delimiter">{</span>
<span id="L1865" class="LineNr">1865 </span>    <span class="PreProc">var</span> args-type/eax: (addr int) <span class="Special">&lt;-</span> get args, <span class="PreProc">type</span>
<span id="L1866" class="LineNr">1866 </span>    compare *args-type, <span class="Constant">0</span>/pair
<span id="L1867" class="LineNr">1867 </span>    <span class="PreProc">break-if-=</span>
<span id="L1868" class="LineNr">1868 </span>    <span class="Special"><a href='trace.mu.html#L197'>error</a></span> trace, <span class="Constant">&quot;args to 'down' are not a list&quot;</span>
<span id="L1869" class="LineNr">1869 </span>    <span class="PreProc">return</span>
<span id="L1870" class="LineNr">1870 </span>  <span class="Delimiter">}</span>
<span id="L1871" class="LineNr">1871 </span>  <span class="PreProc">var</span> empty-args?/eax: boolean <span class="Special">&lt;-</span> <a href='print.mu.html#L390'>nil?</a> args
<span id="L1872" class="LineNr">1872 </span>  compare empty-args?, <span class="Constant">0</span>/false
<span id="L1873" class="LineNr">1873 </span>  <span class="Delimiter">{</span>
<span id="L1874" class="LineNr">1874 </span>    <span class="PreProc">break-if-=</span>
<span id="L1875" class="LineNr">1875 </span>    <span class="Special"><a href='trace.mu.html#L197'>error</a></span> trace, <span class="Constant">&quot;'down' needs 1 arg but got 0&quot;</span>
<span id="L1876" class="LineNr">1876 </span>    <span class="PreProc">return</span>
<span id="L1877" class="LineNr">1877 </span>  <span class="Delimiter">}</span>
<span id="L1878" class="LineNr">1878 </span>  <span class="muComment"># screen = args-&gt;left</span>
<span id="L1879" class="LineNr">1879 </span>  <span class="PreProc">var</span> first-ah/eax: (addr handle <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> get args, left
<span id="L1880" class="LineNr">1880 </span>  <span class="PreProc">var</span> first/eax: (addr <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> <a href='../120allocate.subx.html#L235'>lookup</a> *first-ah
<span id="L1881" class="LineNr">1881 </span>  <span class="Delimiter">{</span>
<span id="L1882" class="LineNr">1882 </span>    <span class="PreProc">var</span> first-type/eax: (addr int) <span class="Special">&lt;-</span> get first, <span class="PreProc">type</span>
<span id="L1883" class="LineNr">1883 </span>    compare *first-type, <span class="Constant">5</span>/screen
<span id="L1884" class="LineNr">1884 </span>    <span class="PreProc">break-if-=</span>
<span id="L1885" class="LineNr">1885 </span>    <span class="Special"><a href='trace.mu.html#L197'>error</a></span> trace, <span class="Constant">&quot;first arg for 'down' is not a screen&quot;</span>
<span id="L1886" class="LineNr">1886 </span>    <span class="PreProc">return</span>
<span id="L1887" class="LineNr">1887 </span>  <span class="Delimiter">}</span>
<span id="L1888" class="LineNr">1888 </span>  <span class="PreProc">var</span> screen-ah/eax: (addr handle <a href='../500fake-screen.mu.html#L16'>screen</a>) <span class="Special">&lt;-</span> get first, screen-data
<span id="L1889" class="LineNr">1889 </span>  <span class="PreProc">var</span> _screen/eax: (addr <a href='../500fake-screen.mu.html#L16'>screen</a>) <span class="Special">&lt;-</span> <a href='../120allocate.subx.html#L235'>lookup</a> *screen-ah
<span id="L1890" class="LineNr">1890 </span>  <span class="PreProc">var</span> <a href='../500fake-screen.mu.html#L16'>screen</a>/<span class="muRegEcx">ecx</span>: (addr <a href='../500fake-screen.mu.html#L16'>screen</a>) <span class="Special">&lt;-</span> copy _screen
<span id="L1891" class="LineNr">1891 </span>  <span class="muComment">#</span>
<span id="L1892" class="LineNr">1892 </span>  <a href='../501draw-text.mu.html#L47'>move-cursor-down</a> <a href='../500fake-screen.mu.html#L16'>screen</a>
<span id="L1893" class="LineNr">1893 </span><span class="Delimiter">}</span>
<span id="L1894" class="LineNr">1894 </span>
<span id="L1895" class="LineNr">1895 </span><span class="PreProc">fn</span> <span class="muFunction"><a href='primitives.mu.html#L1895'>apply-left</a></span> _args-ah: (addr handle <a href='cell.mu.html#L1'>cell</a>), out: (addr handle <a href='cell.mu.html#L1'>cell</a>), trace: (addr trace) <span class="Delimiter">{</span>
<span id="L1896" class="LineNr">1896 </span>  <a href='trace.mu.html#L185'>trace-text</a> trace, <span class="Constant">&quot;eval&quot;</span>, <span class="Constant">&quot;apply 'left'&quot;</span>
<span id="L1897" class="LineNr">1897 </span>  <span class="PreProc">var</span> args-ah/eax: (addr handle <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> copy _args-ah
<span id="L1898" class="LineNr">1898 </span>  <span class="PreProc">var</span> _args/eax: (addr <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> <a href='../120allocate.subx.html#L235'>lookup</a> *args-ah
<span id="L1899" class="LineNr">1899 </span>  <span class="PreProc">var</span> args/<span class="muRegEsi">esi</span>: (addr <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> copy _args
<span id="L1900" class="LineNr">1900 </span>  <span class="Delimiter">{</span>
<span id="L1901" class="LineNr">1901 </span>    <span class="PreProc">var</span> args-type/eax: (addr int) <span class="Special">&lt;-</span> get args, <span class="PreProc">type</span>
<span id="L1902" class="LineNr">1902 </span>    compare *args-type, <span class="Constant">0</span>/pair
<span id="L1903" class="LineNr">1903 </span>    <span class="PreProc">break-if-=</span>
<span id="L1904" class="LineNr">1904 </span>    <span class="Special"><a href='trace.mu.html#L197'>error</a></span> trace, <span class="Constant">&quot;args to 'left' are not a list&quot;</span>
<span id="L1905" class="LineNr">1905 </span>    <span class="PreProc">return</span>
<span id="L1906" class="LineNr">1906 </span>  <span class="Delimiter">}</span>
<span id="L1907" class="LineNr">1907 </span>  <span class="PreProc">var</span> empty-args?/eax: boolean <span class="Special">&lt;-</span> <a href='print.mu.html#L390'>nil?</a> args
<span id="L1908" class="LineNr">1908 </span>  compare empty-args?, <span class="Constant">0</span>/false
<span id="L1909" class="LineNr">1909 </span>  <span class="Delimiter">{</span>
<span id="L1910" class="LineNr">1910 </span>    <span class="PreProc">break-if-=</span>
<span id="L1911" class="LineNr">1911 </span>    <span class="Special"><a href='trace.mu.html#L197'>error</a></span> trace, <span class="Constant">&quot;'left' needs 1 arg but got 0&quot;</span>
<span id="L1912" class="LineNr">1912 </span>    <span class="PreProc">return</span>
<span id="L1913" class="LineNr">1913 </span>  <span class="Delimiter">}</span>
<span id="L1914" class="LineNr">1914 </span>  <span class="muComment"># screen = args-&gt;left</span>
<span id="L1915" class="LineNr">1915 </span>  <span class="PreProc">var</span> first-ah/eax: (addr handle <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> get args, left
<span id="L1916" class="LineNr">1916 </span>  <span class="PreProc">var</span> first/eax: (addr <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> <a href='../120allocate.subx.html#L235'>lookup</a> *first-ah
<span id="L1917" class="LineNr">1917 </span>  <span class="Delimiter">{</span>
<span id="L1918" class="LineNr">1918 </span>    <span class="PreProc">var</span> first-type/eax: (addr int) <span class="Special">&lt;-</span> get first, <span class="PreProc">type</span>
<span id="L1919" class="LineNr">1919 </span>    compare *first-type, <span class="Constant">5</span>/screen
<span id="L1920" class="LineNr">1920 </span>    <span class="PreProc">break-if-=</span>
<span id="L1921" class="LineNr">1921 </span>    <span class="Special"><a href='trace.mu.html#L197'>error</a></span> trace, <span class="Constant">&quot;first arg for 'left' is not a screen&quot;</span>
<span id="L1922" class="LineNr">1922 </span>    <span class="PreProc">return</span>
<span id="L1923" class="LineNr">1923 </span>  <span class="Delimiter">}</span>
<span id="L1924" class="LineNr">1924 </span>  <span class="PreProc">var</span> screen-ah/eax: (addr handle <a href='../500fake-screen.mu.html#L16'>screen</a>) <span class="Special">&lt;-</span> get first, screen-data
<span id="L1925" class="LineNr">1925 </span>  <span class="PreProc">var</span> _screen/eax: (addr <a href='../500fake-screen.mu.html#L16'>screen</a>) <span class="Special">&lt;-</span> <a href='../120allocate.subx.html#L235'>lookup</a> *screen-ah
<span id="L1926" class="LineNr">1926 </span>  <span class="PreProc">var</span> <a href='../500fake-screen.mu.html#L16'>screen</a>/<span class="muRegEcx">ecx</span>: (addr <a href='../500fake-screen.mu.html#L16'>screen</a>) <span class="Special">&lt;-</span> copy _screen
<span id="L1927" class="LineNr">1927 </span>  <span class="muComment">#</span>
<span id="L1928" class="LineNr">1928 </span>  <a href='../501draw-text.mu.html#L3'>move-cursor-left</a> <a href='../500fake-screen.mu.html#L16'>screen</a>
<span id="L1929" class="LineNr">1929 </span><span class="Delimiter">}</span>
<span id="L1930" class="LineNr">1930 </span>
<span id="L1931" class="LineNr">1931 </span><span class="PreProc">fn</span> <span class="muFunction"><a href='primitives.mu.html#L1931'>apply-right</a></span> _args-ah: (addr handle <a href='cell.mu.html#L1'>cell</a>), out: (addr handle <a href='cell.mu.html#L1'>cell</a>), trace: (addr trace) <span class="Delimiter">{</span>
<span id="L1932" class="LineNr">1932 </span>  <a href='trace.mu.html#L185'>trace-text</a> trace, <span class="Constant">&quot;eval&quot;</span>, <span class="Constant">&quot;apply 'right'&quot;</span>
<span id="L1933" class="LineNr">1933 </span>  <span class="PreProc">var</span> args-ah/eax: (addr handle <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> copy _args-ah
<span id="L1934" class="LineNr">1934 </span>  <span class="PreProc">var</span> _args/eax: (addr <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> <a href='../120allocate.subx.html#L235'>lookup</a> *args-ah
<span id="L1935" class="LineNr">1935 </span>  <span class="PreProc">var</span> args/<span class="muRegEsi">esi</span>: (addr <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> copy _args
<span id="L1936" class="LineNr">1936 </span>  <span class="Delimiter">{</span>
<span id="L1937" class="LineNr">1937 </span>    <span class="PreProc">var</span> args-type/eax: (addr int) <span class="Special">&lt;-</span> get args, <span class="PreProc">type</span>
<span id="L1938" class="LineNr">1938 </span>    compare *args-type, <span class="Constant">0</span>/pair
<span id="L1939" class="LineNr">1939 </span>    <span class="PreProc">break-if-=</span>
<span id="L1940" class="LineNr">1940 </span>    <span class="Special"><a href='trace.mu.html#L197'>error</a></span> trace, <span class="Constant">&quot;args to 'right' are not a list&quot;</span>
<span id="L1941" class="LineNr">1941 </span>    <span class="PreProc">return</span>
<span id="L1942" class="LineNr">1942 </span>  <span class="Delimiter">}</span>
<span id="L1943" class="LineNr">1943 </span>  <span class="PreProc">var</span> empty-args?/eax: boolean <span class="Special">&lt;-</span> <a href='print.mu.html#L390'>nil?</a> args
<span id="L1944" class="LineNr">1944 </span>  compare empty-args?, <span class="Constant">0</span>/false
<span id="L1945" class="LineNr">1945 </span>  <span class="Delimiter">{</span>
<span id="L1946" class="LineNr">1946 </span>    <span class="PreProc">break-if-=</span>
<span id="L1947" class="LineNr">1947 </span>    <span class="Special"><a href='trace.mu.html#L197'>error</a></span> trace, <span class="Constant">&quot;'right' needs 1 arg but got 0&quot;</span>
<span id="L1948" class="LineNr">1948 </span>    <span class="PreProc">return</span>
<span id="L1949" class="LineNr">1949 </span>  <span class="Delimiter">}</span>
<span id="L1950" class="LineNr">1950 </span>  <span class="muComment"># screen = args-&gt;left</span>
<span id="L1951" class="LineNr">1951 </span>  <span class="PreProc">var</span> first-ah/eax: (addr handle <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> get args, left
<span id="L1952" class="LineNr">1952 </span>  <span class="PreProc">var</span> first/eax: (addr <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> <a href='../120allocate.subx.html#L235'>lookup</a> *first-ah
<span id="L1953" class="LineNr">1953 </span>  <span class="Delimiter">{</span>
<span id="L1954" class="LineNr">1954 </span>    <span class="PreProc">var</span> first-type/eax: (addr int) <span class="Special">&lt;-</span> get first, <span class="PreProc">type</span>
<span id="L1955" class="LineNr">1955 </span>    compare *first-type, <span class="Constant">5</span>/screen
<span id="L1956" class="LineNr">1956 </span>    <span class="PreProc">break-if-=</span>
<span id="L1957" class="LineNr">1957 </span>    <span class="Special"><a href='trace.mu.html#L197'>error</a></span> trace, <span class="Constant">&quot;first arg for 'right' is not a screen&quot;</span>
<span id="L1958" class="LineNr">1958 </span>    <span class="PreProc">return</span>
<span id="L1959" class="LineNr">1959 </span>  <span class="Delimiter">}</span>
<span id="L1960" class="LineNr">1960 </span>  <span class="PreProc">var</span> screen-ah/eax: (addr handle <a href='../500fake-screen.mu.html#L16'>screen</a>) <span class="Special">&lt;-</span> get first, screen-data
<span id="L1961" class="LineNr">1961 </span>  <span class="PreProc">var</span> _screen/eax: (addr <a href='../500fake-screen.mu.html#L16'>screen</a>) <span class="Special">&lt;-</span> <a href='../120allocate.subx.html#L235'>lookup</a> *screen-ah
<span id="L1962" class="LineNr">1962 </span>  <span class="PreProc">var</span> <a href='../500fake-screen.mu.html#L16'>screen</a>/<span class="muRegEcx">ecx</span>: (addr <a href='../500fake-screen.mu.html#L16'>screen</a>) <span class="Special">&lt;-</span> copy _screen
<span id="L1963" class="LineNr">1963 </span>  <span class="muComment">#</span>
<span id="L1964" class="LineNr">1964 </span>  <a href='../501draw-text.mu.html#L16'>move-cursor-right</a> <a href='../500fake-screen.mu.html#L16'>screen</a>
<span id="L1965" class="LineNr">1965 </span><span class="Delimiter">}</span>
<span id="L1966" class="LineNr">1966 </span>
<span id="L1967" class="LineNr">1967 </span><span class="PreProc">fn</span> <span class="muFunction"><a href='primitives.mu.html#L1967'>apply-cr</a></span> _args-ah: (addr handle <a href='cell.mu.html#L1'>cell</a>), out: (addr handle <a href='cell.mu.html#L1'>cell</a>), trace: (addr trace) <span class="Delimiter">{</span>
<span id="L1968" class="LineNr">1968 </span>  <a href='trace.mu.html#L185'>trace-text</a> trace, <span class="Constant">&quot;eval&quot;</span>, <span class="Constant">&quot;apply 'cr'&quot;</span>
<span id="L1969" class="LineNr">1969 </span>  <span class="PreProc">var</span> args-ah/eax: (addr handle <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> copy _args-ah
<span id="L1970" class="LineNr">1970 </span>  <span class="PreProc">var</span> _args/eax: (addr <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> <a href='../120allocate.subx.html#L235'>lookup</a> *args-ah
<span id="L1971" class="LineNr">1971 </span>  <span class="PreProc">var</span> args/<span class="muRegEsi">esi</span>: (addr <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> copy _args
<span id="L1972" class="LineNr">1972 </span>  <span class="Delimiter">{</span>
<span id="L1973" class="LineNr">1973 </span>    <span class="PreProc">var</span> args-type/eax: (addr int) <span class="Special">&lt;-</span> get args, <span class="PreProc">type</span>
<span id="L1974" class="LineNr">1974 </span>    compare *args-type, <span class="Constant">0</span>/pair
<span id="L1975" class="LineNr">1975 </span>    <span class="PreProc">break-if-=</span>
<span id="L1976" class="LineNr">1976 </span>    <span class="Special"><a href='trace.mu.html#L197'>error</a></span> trace, <span class="Constant">&quot;args to 'cr' are not a list&quot;</span>
<span id="L1977" class="LineNr">1977 </span>    <span class="PreProc">return</span>
<span id="L1978" class="LineNr">1978 </span>  <span class="Delimiter">}</span>
<span id="L1979" class="LineNr">1979 </span>  <span class="PreProc">var</span> empty-args?/eax: boolean <span class="Special">&lt;-</span> <a href='print.mu.html#L390'>nil?</a> args
<span id="L1980" class="LineNr">1980 </span>  compare empty-args?, <span class="Constant">0</span>/false
<span id="L1981" class="LineNr">1981 </span>  <span class="Delimiter">{</span>
<span id="L1982" class="LineNr">1982 </span>    <span class="PreProc">break-if-=</span>
<span id="L1983" class="LineNr">1983 </span>    <span class="Special"><a href='trace.mu.html#L197'>error</a></span> trace, <span class="Constant">&quot;'cr' needs 1 arg but got 0&quot;</span>
<span id="L1984" class="LineNr">1984 </span>    <span class="PreProc">return</span>
<span id="L1985" class="LineNr">1985 </span>  <span class="Delimiter">}</span>
<span id="L1986" class="LineNr">1986 </span>  <span class="muComment"># screen = args-&gt;left</span>
<span id="L1987" class="LineNr">1987 </span>  <span class="PreProc">var</span> first-ah/eax: (addr handle <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> get args, left
<span id="L1988" class="LineNr">1988 </span>  <span class="PreProc">var</span> first/eax: (addr <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> <a href='../120allocate.subx.html#L235'>lookup</a> *first-ah
<span id="L1989" class="LineNr">1989 </span>  <span class="Delimiter">{</span>
<span id="L1990" class="LineNr">1990 </span>    <span class="PreProc">var</span> first-type/eax: (addr int) <span class="Special">&lt;-</span> get first, <span class="PreProc">type</span>
<span id="L1991" class="LineNr">1991 </span>    compare *first-type, <span class="Constant">5</span>/screen
<span id="L1992" class="LineNr">1992 </span>    <span class="PreProc">break-if-=</span>
<span id="L1993" class="LineNr">1993 </span>    <span class="Special"><a href='trace.mu.html#L197'>error</a></span> trace, <span class="Constant">&quot;first arg for 'cr' is not a screen&quot;</span>
<span id="L1994" class="LineNr">1994 </span>    <span class="PreProc">return</span>
<span id="L1995" class="LineNr">1995 </span>  <span class="Delimiter">}</span>
<span id="L1996" class="LineNr">1996 </span>  <span class="PreProc">var</span> screen-ah/eax: (addr handle <a href='../500fake-screen.mu.html#L16'>screen</a>) <span class="Special">&lt;-</span> get first, screen-data
<span id="L1997" class="LineNr">1997 </span>  <span class="PreProc">var</span> _screen/eax: (addr <a href='../500fake-screen.mu.html#L16'>screen</a>) <span class="Special">&lt;-</span> <a href='../120allocate.subx.html#L235'>lookup</a> *screen-ah
<span id="L1998" class="LineNr">1998 </span>  <span class="PreProc">var</span> <a href='../500fake-screen.mu.html#L16'>screen</a>/<span class="muRegEcx">ecx</span>: (addr <a href='../500fake-screen.mu.html#L16'>screen</a>) <span class="Special">&lt;-</span> copy _screen
<span id="L1999" class="LineNr">1999 </span>  <span class="muComment">#</span>
<span id="L2000" class="LineNr">2000 </span>  <a href='../501draw-text.mu.html#L65'>move-cursor-to-left-margin-of-next-line</a> <a href='../500fake-screen.mu.html#L16'>screen</a>
<span id="L2001" class="LineNr">2001 </span><span class="Delimiter">}</span>
<span id="L2002" class="LineNr">2002 </span>
<span id="L2003" class="LineNr">2003 </span><span class="PreProc">fn</span> <span class="muFunction"><a href='primitives.mu.html#L2003'>apply-pixel</a></span> _args-ah: (addr handle <a href='cell.mu.html#L1'>cell</a>), out: (addr handle <a href='cell.mu.html#L1'>cell</a>), trace: (addr trace) <span class="Delimiter">{</span>
<span id="L2004" class="LineNr">2004 </span>  <a href='trace.mu.html#L185'>trace-text</a> trace, <span class="Constant">&quot;eval&quot;</span>, <span class="Constant">&quot;apply 'pixel'&quot;</span>
<span id="L2005" class="LineNr">2005 </span>  <span class="PreProc">var</span> args-ah/eax: (addr handle <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> copy _args-ah
<span id="L2006" class="LineNr">2006 </span>  <span class="PreProc">var</span> _args/eax: (addr <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> <a href='../120allocate.subx.html#L235'>lookup</a> *args-ah
<span id="L2007" class="LineNr">2007 </span>  <span class="PreProc">var</span> args/<span class="muRegEsi">esi</span>: (addr <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> copy _args
<span id="L2008" class="LineNr">2008 </span>  <span class="Delimiter">{</span>
<span id="L2009" class="LineNr">2009 </span>    <span class="PreProc">var</span> args-type/eax: (addr int) <span class="Special">&lt;-</span> get args, <span class="PreProc">type</span>
<span id="L2010" class="LineNr">2010 </span>    compare *args-type, <span class="Constant">0</span>/pair
<span id="L2011" class="LineNr">2011 </span>    <span class="PreProc">break-if-=</span>
<span id="L2012" class="LineNr">2012 </span>    <span class="Special"><a href='trace.mu.html#L197'>error</a></span> trace, <span class="Constant">&quot;args to 'pixel' are not a list&quot;</span>
<span id="L2013" class="LineNr">2013 </span>    <span class="PreProc">return</span>
<span id="L2014" class="LineNr">2014 </span>  <span class="Delimiter">}</span>
<span id="L2015" class="LineNr">2015 </span>  <span class="PreProc">var</span> empty-args?/eax: boolean <span class="Special">&lt;-</span> <a href='print.mu.html#L390'>nil?</a> args
<span id="L2016" class="LineNr">2016 </span>  compare empty-args?, <span class="Constant">0</span>/false
<span id="L2017" class="LineNr">2017 </span>  <span class="Delimiter">{</span>
<span id="L2018" class="LineNr">2018 </span>    <span class="PreProc">break-if-=</span>
<span id="L2019" class="LineNr">2019 </span>    <span class="Special"><a href='trace.mu.html#L197'>error</a></span> trace, <span class="Constant">&quot;'pixel' needs 4 args but got 0&quot;</span>
<span id="L2020" class="LineNr">2020 </span>    <span class="PreProc">return</span>
<span id="L2021" class="LineNr">2021 </span>  <span class="Delimiter">}</span>
<span id="L2022" class="LineNr">2022 </span>  <span class="muComment"># screen = args-&gt;left</span>
<span id="L2023" class="LineNr">2023 </span>  <span class="PreProc">var</span> first-ah/eax: (addr handle <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> get args, left
<span id="L2024" class="LineNr">2024 </span>  <span class="PreProc">var</span> first/eax: (addr <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> <a href='../120allocate.subx.html#L235'>lookup</a> *first-ah
<span id="L2025" class="LineNr">2025 </span>  <span class="Delimiter">{</span>
<span id="L2026" class="LineNr">2026 </span>    <span class="PreProc">var</span> first-type/eax: (addr int) <span class="Special">&lt;-</span> get first, <span class="PreProc">type</span>
<span id="L2027" class="LineNr">2027 </span>    compare *first-type, <span class="Constant">5</span>/screen
<span id="L2028" class="LineNr">2028 </span>    <span class="PreProc">break-if-=</span>
<span id="L2029" class="LineNr">2029 </span>    <span class="Special"><a href='trace.mu.html#L197'>error</a></span> trace, <span class="Constant">&quot;first arg for 'pixel' is not a screen&quot;</span>
<span id="L2030" class="LineNr">2030 </span>    <span class="PreProc">return</span>
<span id="L2031" class="LineNr">2031 </span>  <span class="Delimiter">}</span>
<span id="L2032" class="LineNr">2032 </span>  <span class="PreProc">var</span> screen-ah/eax: (addr handle <a href='../500fake-screen.mu.html#L16'>screen</a>) <span class="Special">&lt;-</span> get first, screen-data
<span id="L2033" class="LineNr">2033 </span>  <span class="PreProc">var</span> _screen/eax: (addr <a href='../500fake-screen.mu.html#L16'>screen</a>) <span class="Special">&lt;-</span> <a href='../120allocate.subx.html#L235'>lookup</a> *screen-ah
<span id="L2034" class="LineNr">2034 </span>  <span class="PreProc">var</span> <a href='../500fake-screen.mu.html#L16'>screen</a>/<span class="muRegEdi">edi</span>: (addr <a href='../500fake-screen.mu.html#L16'>screen</a>) <span class="Special">&lt;-</span> copy _screen
<span id="L2035" class="LineNr">2035 </span>  <span class="muComment"># x = args-&gt;right-&gt;left-&gt;value</span>
<span id="L2036" class="LineNr">2036 </span>  <span class="PreProc">var</span> rest-ah/eax: (addr handle <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> get args, right
<span id="L2037" class="LineNr">2037 </span>  <span class="PreProc">var</span> _rest/eax: (addr <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> <a href='../120allocate.subx.html#L235'>lookup</a> *rest-ah
<span id="L2038" class="LineNr">2038 </span>  <span class="PreProc">var</span> rest/<span class="muRegEsi">esi</span>: (addr <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> copy _rest
<span id="L2039" class="LineNr">2039 </span>  <span class="Delimiter">{</span>
<span id="L2040" class="LineNr">2040 </span>    <span class="PreProc">var</span> rest-type/eax: (addr int) <span class="Special">&lt;-</span> get rest, <span class="PreProc">type</span>
<span id="L2041" class="LineNr">2041 </span>    compare *rest-type, <span class="Constant">0</span>/pair
<span id="L2042" class="LineNr">2042 </span>    <span class="PreProc">break-if-=</span>
<span id="L2043" class="LineNr">2043 </span>    <span class="Special"><a href='trace.mu.html#L197'>error</a></span> trace, <span class="Constant">&quot;'pixel' encountered non-pair&quot;</span>
<span id="L2044" class="LineNr">2044 </span>    <span class="PreProc">return</span>
<span id="L2045" class="LineNr">2045 </span>  <span class="Delimiter">}</span>
<span id="L2046" class="LineNr">2046 </span>  <span class="Delimiter">{</span>
<span id="L2047" class="LineNr">2047 </span>    <span class="PreProc">var</span> rest-nil?/eax: boolean <span class="Special">&lt;-</span> <a href='print.mu.html#L390'>nil?</a> rest
<span id="L2048" class="LineNr">2048 </span>    compare rest-nil?, <span class="Constant">0</span>/false
<span id="L2049" class="LineNr">2049 </span>    <span class="PreProc">break-if-=</span>
<span id="L2050" class="LineNr">2050 </span>    <span class="Special"><a href='trace.mu.html#L197'>error</a></span> trace, <span class="Constant">&quot;'pixel' needs 4 args but got 1&quot;</span>
<span id="L2051" class="LineNr">2051 </span>    <span class="PreProc">return</span>
<span id="L2052" class="LineNr">2052 </span>  <span class="Delimiter">}</span>
<span id="L2053" class="LineNr">2053 </span>  <span class="PreProc">var</span> second-ah/eax: (addr handle <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> get rest, left
<span id="L2054" class="LineNr">2054 </span>  <span class="PreProc">var</span> second/eax: (addr <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> <a href='../120allocate.subx.html#L235'>lookup</a> *second-ah
<span id="L2055" class="LineNr">2055 </span>  <span class="Delimiter">{</span>
<span id="L2056" class="LineNr">2056 </span>    <span class="PreProc">var</span> second-type/eax: (addr int) <span class="Special">&lt;-</span> get second, <span class="PreProc">type</span>
<span id="L2057" class="LineNr">2057 </span>    compare *second-type, <span class="Constant">1</span>/number
<span id="L2058" class="LineNr">2058 </span>    <span class="PreProc">break-if-=</span>
<span id="L2059" class="LineNr">2059 </span>    <span class="Special"><a href='trace.mu.html#L197'>error</a></span> trace, <span class="Constant">&quot;second arg for 'pixel' is not an int (x coordinate)&quot;</span>
<span id="L2060" class="LineNr">2060 </span>    <span class="PreProc">return</span>
<span id="L2061" class="LineNr">2061 </span>  <span class="Delimiter">}</span>
<span id="L2062" class="LineNr">2062 </span>  <span class="PreProc">var</span> second-value/eax: (addr float) <span class="Special">&lt;-</span> get second, number-data
<span id="L2063" class="LineNr">2063 </span>  <span class="PreProc">var</span> x/<span class="muRegEdx">edx</span>: int <span class="Special">&lt;-</span> convert *second-value
<span id="L2064" class="LineNr">2064 </span>  <span class="muComment"># y = rest-&gt;right-&gt;left-&gt;value</span>
<span id="L2065" class="LineNr">2065 </span>  <span class="PreProc">var</span> rest-ah/eax: (addr handle <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> get rest, right
<span id="L2066" class="LineNr">2066 </span>  <span class="PreProc">var</span> _rest/eax: (addr <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> <a href='../120allocate.subx.html#L235'>lookup</a> *rest-ah
<span id="L2067" class="LineNr">2067 </span>  rest <span class="Special">&lt;-</span> copy _rest
<span id="L2068" class="LineNr">2068 </span>  <span class="Delimiter">{</span>
<span id="L2069" class="LineNr">2069 </span>    <span class="PreProc">var</span> rest-type/eax: (addr int) <span class="Special">&lt;-</span> get rest, <span class="PreProc">type</span>
<span id="L2070" class="LineNr">2070 </span>    compare *rest-type, <span class="Constant">0</span>/pair
<span id="L2071" class="LineNr">2071 </span>    <span class="PreProc">break-if-=</span>
<span id="L2072" class="LineNr">2072 </span>    <span class="Special"><a href='trace.mu.html#L197'>error</a></span> trace, <span class="Constant">&quot;'pixel' encountered non-pair&quot;</span>
<span id="L2073" class="LineNr">2073 </span>    <span class="PreProc">return</span>
<span id="L2074" class="LineNr">2074 </span>  <span class="Delimiter">}</span>
<span id="L2075" class="LineNr">2075 </span>  <span class="Delimiter">{</span>
<span id="L2076" class="LineNr">2076 </span>    <span class="PreProc">var</span> rest-nil?/eax: boolean <span class="Special">&lt;-</span> <a href='print.mu.html#L390'>nil?</a> rest
<span id="L2077" class="LineNr">2077 </span>    compare rest-nil?, <span class="Constant">0</span>/false
<span id="L2078" class="LineNr">2078 </span>    <span class="PreProc">break-if-=</span>
<span id="L2079" class="LineNr">2079 </span>    <span class="Special"><a href='trace.mu.html#L197'>error</a></span> trace, <span class="Constant">&quot;'pixel' needs 4 args but got 2&quot;</span>
<span id="L2080" class="LineNr">2080 </span>    <span class="PreProc">return</span>
<span id="L2081" class="LineNr">2081 </span>  <span class="Delimiter">}</span>
<span id="L2082" class="LineNr">2082 </span>  <span class="PreProc">var</span> third-ah/eax: (addr handle <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> get rest, left
<span id="L2083" class="LineNr">2083 </span>  <span class="PreProc">var</span> third/eax: (addr <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> <a href='../120allocate.subx.html#L235'>lookup</a> *third-ah
<span id="L2084" class="LineNr">2084 </span>  <span class="Delimiter">{</span>
<span id="L2085" class="LineNr">2085 </span>    <span class="PreProc">var</span> third-type/eax: (addr int) <span class="Special">&lt;-</span> get third, <span class="PreProc">type</span>
<span id="L2086" class="LineNr">2086 </span>    compare *third-type, <span class="Constant">1</span>/number
<span id="L2087" class="LineNr">2087 </span>    <span class="PreProc">break-if-=</span>
<span id="L2088" class="LineNr">2088 </span>    <span class="Special"><a href='trace.mu.html#L197'>error</a></span> trace, <span class="Constant">&quot;third arg for 'pixel' is not an int (y coordinate)&quot;</span>
<span id="L2089" class="LineNr">2089 </span>    <span class="PreProc">return</span>
<span id="L2090" class="LineNr">2090 </span>  <span class="Delimiter">}</span>
<span id="L2091" class="LineNr">2091 </span>  <span class="PreProc">var</span> third-value/eax: (addr float) <span class="Special">&lt;-</span> get third, number-data
<span id="L2092" class="LineNr">2092 </span>  <span class="PreProc">var</span> y/<span class="muRegEbx">ebx</span>: int <span class="Special">&lt;-</span> convert *third-value
<span id="L2093" class="LineNr">2093 </span>  <span class="muComment"># color = rest-&gt;right-&gt;left-&gt;value</span>
<span id="L2094" class="LineNr">2094 </span>  <span class="PreProc">var</span> rest-ah/eax: (addr handle <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> get rest, right
<span id="L2095" class="LineNr">2095 </span>  <span class="PreProc">var</span> _rest/eax: (addr <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> <a href='../120allocate.subx.html#L235'>lookup</a> *rest-ah
<span id="L2096" class="LineNr">2096 </span>  rest <span class="Special">&lt;-</span> copy _rest
<span id="L2097" class="LineNr">2097 </span>  <span class="Delimiter">{</span>
<span id="L2098" class="LineNr">2098 </span>    <span class="PreProc">var</span> rest-type/eax: (addr int) <span class="Special">&lt;-</span> get rest, <span class="PreProc">type</span>
<span id="L2099" class="LineNr">2099 </span>    compare *rest-type, <span class="Constant">0</span>/pair
<span id="L2100" class="LineNr">2100 </span>    <span class="PreProc">break-if-=</span>
<span id="L2101" class="LineNr">2101 </span>    <span class="Special"><a href='trace.mu.html#L197'>error</a></span> trace, <span class="Constant">&quot;'pixel' encountered non-pair&quot;</span>
<span id="L2102" class="LineNr">2102 </span>    <span class="PreProc">return</span>
<span id="L2103" class="LineNr">2103 </span>  <span class="Delimiter">}</span>
<span id="L2104" class="LineNr">2104 </span>  <span class="Delimiter">{</span>
<span id="L2105" class="LineNr">2105 </span>    <span class="PreProc">var</span> rest-nil?/eax: boolean <span class="Special">&lt;-</span> <a href='print.mu.html#L390'>nil?</a> rest
<span id="L2106" class="LineNr">2106 </span>    compare rest-nil?, <span class="Constant">0</span>/false
<span id="L2107" class="LineNr">2107 </span>    <span class="PreProc">break-if-=</span>
<span id="L2108" class="LineNr">2108 </span>    <span class="Special"><a href='trace.mu.html#L197'>error</a></span> trace, <span class="Constant">&quot;'pixel' needs 4 args but got 3&quot;</span>
<span id="L2109" class="LineNr">2109 </span>    <span class="PreProc">return</span>
<span id="L2110" class="LineNr">2110 </span>  <span class="Delimiter">}</span>
<span id="L2111" class="LineNr">2111 </span>  <span class="PreProc">var</span> fourth-ah/eax: (addr handle <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> get rest, left
<span id="L2112" class="LineNr">2112 </span>  <span class="PreProc">var</span> fourth/eax: (addr <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> <a href='../120allocate.subx.html#L235'>lookup</a> *fourth-ah
<span id="L2113" class="LineNr">2113 </span>  <span class="Delimiter">{</span>
<span id="L2114" class="LineNr">2114 </span>    <span class="PreProc">var</span> fourth-type/eax: (addr int) <span class="Special">&lt;-</span> get fourth, <span class="PreProc">type</span>
<span id="L2115" class="LineNr">2115 </span>    compare *fourth-type, <span class="Constant">1</span>/number
<span id="L2116" class="LineNr">2116 </span>    <span class="PreProc">break-if-=</span>
<span id="L2117" class="LineNr">2117 </span>    <span class="Special"><a href='trace.mu.html#L197'>error</a></span> trace, <span class="Constant">&quot;fourth arg for 'pixel' is not an int (color; 0..0xff)&quot;</span>
<span id="L2118" class="LineNr">2118 </span>    <span class="PreProc">return</span>
<span id="L2119" class="LineNr">2119 </span>  <span class="Delimiter">}</span>
<span id="L2120" class="LineNr">2120 </span>  <span class="PreProc">var</span> fourth-value/eax: (addr float) <span class="Special">&lt;-</span> get fourth, number-data
<span id="L2121" class="LineNr">2121 </span>  <span class="PreProc">var</span> color/eax: int <span class="Special">&lt;-</span> convert *fourth-value
<span id="L2122" class="LineNr">2122 </span>  <a href='../500fake-screen.mu.html#L580'>pixel</a> <a href='../500fake-screen.mu.html#L16'>screen</a>, x, y, color
<span id="L2123" class="LineNr">2123 </span>  <span class="muComment"># return nothing</span>
<span id="L2124" class="LineNr">2124 </span><span class="Delimiter">}</span>
<span id="L2125" class="LineNr">2125 </span>
<span id="L2126" class="LineNr">2126 </span><span class="PreProc">fn</span> <span class="muFunction"><a href='primitives.mu.html#L2126'>apply-line</a></span> _args-ah: (addr handle <a href='cell.mu.html#L1'>cell</a>), out: (addr handle <a href='cell.mu.html#L1'>cell</a>), trace: (addr trace) <span class="Delimiter">{</span>
<span id="L2127" class="LineNr">2127 </span>  <a href='trace.mu.html#L185'>trace-text</a> trace, <span class="Constant">&quot;eval&quot;</span>, <span class="Constant">&quot;apply 'line'&quot;</span>
<span id="L2128" class="LineNr">2128 </span>  <span class="PreProc">var</span> args-ah/eax: (addr handle <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> copy _args-ah
<span id="L2129" class="LineNr">2129 </span>  <span class="PreProc">var</span> _args/eax: (addr <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> <a href='../120allocate.subx.html#L235'>lookup</a> *args-ah
<span id="L2130" class="LineNr">2130 </span>  <span class="PreProc">var</span> args/<span class="muRegEsi">esi</span>: (addr <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> copy _args
<span id="L2131" class="LineNr">2131 </span>  <span class="Delimiter">{</span>
<span id="L2132" class="LineNr">2132 </span>    <span class="PreProc">var</span> args-type/eax: (addr int) <span class="Special">&lt;-</span> get args, <span class="PreProc">type</span>
<span id="L2133" class="LineNr">2133 </span>    compare *args-type, <span class="Constant">0</span>/pair
<span id="L2134" class="LineNr">2134 </span>    <span class="PreProc">break-if-=</span>
<span id="L2135" class="LineNr">2135 </span>    <span class="Special"><a href='trace.mu.html#L197'>error</a></span> trace, <span class="Constant">&quot;args to 'line' are not a list&quot;</span>
<span id="L2136" class="LineNr">2136 </span>    <span class="PreProc">return</span>
<span id="L2137" class="LineNr">2137 </span>  <span class="Delimiter">}</span>
<span id="L2138" class="LineNr">2138 </span>  <span class="PreProc">var</span> empty-args?/eax: boolean <span class="Special">&lt;-</span> <a href='print.mu.html#L390'>nil?</a> args
<span id="L2139" class="LineNr">2139 </span>  compare empty-args?, <span class="Constant">0</span>/false
<span id="L2140" class="LineNr">2140 </span>  <span class="Delimiter">{</span>
<span id="L2141" class="LineNr">2141 </span>    <span class="PreProc">break-if-=</span>
<span id="L2142" class="LineNr">2142 </span>    <span class="Special"><a href='trace.mu.html#L197'>error</a></span> trace, <span class="Constant">&quot;'line' needs 6 args but got 0&quot;</span>
<span id="L2143" class="LineNr">2143 </span>    <span class="PreProc">return</span>
<span id="L2144" class="LineNr">2144 </span>  <span class="Delimiter">}</span>
<span id="L2145" class="LineNr">2145 </span>  <span class="muComment"># screen = args-&gt;left</span>
<span id="L2146" class="LineNr">2146 </span>  <span class="PreProc">var</span> first-ah/eax: (addr handle <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> get args, left
<span id="L2147" class="LineNr">2147 </span>  <span class="PreProc">var</span> first/eax: (addr <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> <a href='../120allocate.subx.html#L235'>lookup</a> *first-ah
<span id="L2148" class="LineNr">2148 </span>  <span class="Delimiter">{</span>
<span id="L2149" class="LineNr">2149 </span>    <span class="PreProc">var</span> first-type/eax: (addr int) <span class="Special">&lt;-</span> get first, <span class="PreProc">type</span>
<span id="L2150" class="LineNr">2150 </span>    compare *first-type, <span class="Constant">5</span>/screen
<span id="L2151" class="LineNr">2151 </span>    <span class="PreProc">break-if-=</span>
<span id="L2152" class="LineNr">2152 </span>    <span class="Special"><a href='trace.mu.html#L197'>error</a></span> trace, <span class="Constant">&quot;first arg for 'line' is not a screen&quot;</span>
<span id="L2153" class="LineNr">2153 </span>    <span class="PreProc">return</span>
<span id="L2154" class="LineNr">2154 </span>  <span class="Delimiter">}</span>
<span id="L2155" class="LineNr">2155 </span>  <span class="PreProc">var</span> screen-ah/eax: (addr handle <a href='../500fake-screen.mu.html#L16'>screen</a>) <span class="Special">&lt;-</span> get first, screen-data
<span id="L2156" class="LineNr">2156 </span>  <span class="PreProc">var</span> _screen/eax: (addr <a href='../500fake-screen.mu.html#L16'>screen</a>) <span class="Special">&lt;-</span> <a href='../120allocate.subx.html#L235'>lookup</a> *screen-ah
<span id="L2157" class="LineNr">2157 </span>  <span class="PreProc">var</span> <a href='../500fake-screen.mu.html#L16'>screen</a>/<span class="muRegEdi">edi</span>: (addr <a href='../500fake-screen.mu.html#L16'>screen</a>) <span class="Special">&lt;-</span> copy _screen
<span id="L2158" class="LineNr">2158 </span>  <span class="muComment"># x1 = args-&gt;right-&gt;left-&gt;value</span>
<span id="L2159" class="LineNr">2159 </span>  <span class="PreProc">var</span> rest-ah/eax: (addr handle <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> get args, right
<span id="L2160" class="LineNr">2160 </span>  <span class="PreProc">var</span> _rest/eax: (addr <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> <a href='../120allocate.subx.html#L235'>lookup</a> *rest-ah
<span id="L2161" class="LineNr">2161 </span>  <span class="PreProc">var</span> rest/<span class="muRegEsi">esi</span>: (addr <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> copy _rest
<span id="L2162" class="LineNr">2162 </span>  <span class="Delimiter">{</span>
<span id="L2163" class="LineNr">2163 </span>    <span class="PreProc">var</span> rest-type/eax: (addr int) <span class="Special">&lt;-</span> get rest, <span class="PreProc">type</span>
<span id="L2164" class="LineNr">2164 </span>    compare *rest-type, <span class="Constant">0</span>/pair
<span id="L2165" class="LineNr">2165 </span>    <span class="PreProc">break-if-=</span>
<span id="L2166" class="LineNr">2166 </span>    <span class="Special"><a href='trace.mu.html#L197'>error</a></span> trace, <span class="Constant">&quot;'line' encountered non-pair&quot;</span>
<span id="L2167" class="LineNr">2167 </span>    <span class="PreProc">return</span>
<span id="L2168" class="LineNr">2168 </span>  <span class="Delimiter">}</span>
<span id="L2169" class="LineNr">2169 </span>  <span class="Delimiter">{</span>
<span id="L2170" class="LineNr">2170 </span>    <span class="PreProc">var</span> rest-nil?/eax: boolean <span class="Special">&lt;-</span> <a href='print.mu.html#L390'>nil?</a> rest
<span id="L2171" class="LineNr">2171 </span>    compare rest-nil?, <span class="Constant">0</span>/false
<span id="L2172" class="LineNr">2172 </span>    <span class="PreProc">break-if-=</span>
<span id="L2173" class="LineNr">2173 </span>    <span class="Special"><a href='trace.mu.html#L197'>error</a></span> trace, <span class="Constant">&quot;'line' needs 6 args but got 1&quot;</span>
<span id="L2174" class="LineNr">2174 </span>    <span class="PreProc">return</span>
<span id="L2175" class="LineNr">2175 </span>  <span class="Delimiter">}</span>
<span id="L2176" class="LineNr">2176 </span>  <span class="PreProc">var</span> second-ah/eax: (addr handle <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> get rest, left
<span id="L2177" class="LineNr">2177 </span>  <span class="PreProc">var</span> second/eax: (addr <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> <a href='../120allocate.subx.html#L235'>lookup</a> *second-ah
<span id="L2178" class="LineNr">2178 </span>  <span class="Delimiter">{</span>
<span id="L2179" class="LineNr">2179 </span>    <span class="PreProc">var</span> second-type/eax: (addr int) <span class="Special">&lt;-</span> get second, <span class="PreProc">type</span>
<span id="L2180" class="LineNr">2180 </span>    compare *second-type, <span class="Constant">1</span>/number
<span id="L2181" class="LineNr">2181 </span>    <span class="PreProc">break-if-=</span>
<span id="L2182" class="LineNr">2182 </span>    <span class="Special"><a href='trace.mu.html#L197'>error</a></span> trace, <span class="Constant">&quot;second arg for 'line' is not a number (<a href='../500fake-screen.mu.html#L16'>screen</a> x coordinate of start point)&quot;</span>
<span id="L2183" class="LineNr">2183 </span>    <span class="PreProc">return</span>
<span id="L2184" class="LineNr">2184 </span>  <span class="Delimiter">}</span>
<span id="L2185" class="LineNr">2185 </span>  <span class="PreProc">var</span> second-value/eax: (addr float) <span class="Special">&lt;-</span> get second, number-data
<span id="L2186" class="LineNr">2186 </span>  <span class="PreProc">var</span> x1/<span class="muRegEdx">edx</span>: int <span class="Special">&lt;-</span> convert *second-value
<span id="L2187" class="LineNr">2187 </span>  <span class="muComment"># y1 = rest-&gt;right-&gt;left-&gt;value</span>
<span id="L2188" class="LineNr">2188 </span>  <span class="PreProc">var</span> rest-ah/eax: (addr handle <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> get rest, right
<span id="L2189" class="LineNr">2189 </span>  <span class="PreProc">var</span> _rest/eax: (addr <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> <a href='../120allocate.subx.html#L235'>lookup</a> *rest-ah
<span id="L2190" class="LineNr">2190 </span>  rest <span class="Special">&lt;-</span> copy _rest
<span id="L2191" class="LineNr">2191 </span>  <span class="Delimiter">{</span>
<span id="L2192" class="LineNr">2192 </span>    <span class="PreProc">var</span> rest-type/eax: (addr int) <span class="Special">&lt;-</span> get rest, <span class="PreProc">type</span>
<span id="L2193" class="LineNr">2193 </span>    compare *rest-type, <span class="Constant">0</span>/pair
<span id="L2194" class="LineNr">2194 </span>    <span class="PreProc">break-if-=</span>
<span id="L2195" class="LineNr">2195 </span>    <span class="Special"><a href='trace.mu.html#L197'>error</a></span> trace, <span class="Constant">&quot;'line' encountered non-pair&quot;</span>
<span id="L2196" class="LineNr">2196 </span>    <span class="PreProc">return</span>
<span id="L2197" class="LineNr">2197 </span>  <span class="Delimiter">}</span>
<span id="L2198" class="LineNr">2198 </span>  <span class="Delimiter">{</span>
<span id="L2199" class="LineNr">2199 </span>    <span class="PreProc">var</span> rest-nil?/eax: boolean <span class="Special">&lt;-</span> <a href='print.mu.html#L390'>nil?</a> rest
<span id="L2200" class="LineNr">2200 </span>    compare rest-nil?, <span class="Constant">0</span>/false
<span id="L2201" class="LineNr">2201 </span>    <span class="PreProc">break-if-=</span>
<span id="L2202" class="LineNr">2202 </span>    <span class="Special"><a href='trace.mu.html#L197'>error</a></span> trace, <span class="Constant">&quot;'line' needs 6 args but got 2&quot;</span>
<span id="L2203" class="LineNr">2203 </span>    <span class="PreProc">return</span>
<span id="L2204" class="LineNr">2204 </span>  <span class="Delimiter">}</span>
<span id="L2205" class="LineNr">2205 </span>  <span class="PreProc">var</span> third-ah/eax: (addr handle <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> get rest, left
<span id="L2206" class="LineNr">2206 </span>  <span class="PreProc">var</span> third/eax: (addr <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> <a href='../120allocate.subx.html#L235'>lookup</a> *third-ah
<span id="L2207" class="LineNr">2207 </span>  <span class="Delimiter">{</span>
<span id="L2208" class="LineNr">2208 </span>    <span class="PreProc">var</span> third-type/eax: (addr int) <span class="Special">&lt;-</span> get third, <span class="PreProc">type</span>
<span id="L2209" class="LineNr">2209 </span>    compare *third-type, <span class="Constant">1</span>/number
<span id="L2210" class="LineNr">2210 </span>    <span class="PreProc">break-if-=</span>
<span id="L2211" class="LineNr">2211 </span>    <span class="Special"><a href='trace.mu.html#L197'>error</a></span> trace, <span class="Constant">&quot;third arg for 'line' is not a number (<a href='../500fake-screen.mu.html#L16'>screen</a> y coordinate of start point)&quot;</span>
<span id="L2212" class="LineNr">2212 </span>    <span class="PreProc">return</span>
<span id="L2213" class="LineNr">2213 </span>  <span class="Delimiter">}</span>
<span id="L2214" class="LineNr">2214 </span>  <span class="PreProc">var</span> third-value/eax: (addr float) <span class="Special">&lt;-</span> get third, number-data
<span id="L2215" class="LineNr">2215 </span>  <span class="PreProc">var</span> y1/<span class="muRegEbx">ebx</span>: int <span class="Special">&lt;-</span> convert *third-value
<span id="L2216" class="LineNr">2216 </span>  <span class="muComment"># x2 = rest-&gt;right-&gt;left-&gt;value</span>
<span id="L2217" class="LineNr">2217 </span>  <span class="PreProc">var</span> rest-ah/eax: (addr handle <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> get rest, right
<span id="L2218" class="LineNr">2218 </span>  <span class="PreProc">var</span> _rest/eax: (addr <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> <a href='../120allocate.subx.html#L235'>lookup</a> *rest-ah
<span id="L2219" class="LineNr">2219 </span>  <span class="PreProc">var</span> rest/<span class="muRegEsi">esi</span>: (addr <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> copy _rest
<span id="L2220" class="LineNr">2220 </span>  <span class="Delimiter">{</span>
<span id="L2221" class="LineNr">2221 </span>    <span class="PreProc">var</span> rest-type/eax: (addr int) <span class="Special">&lt;-</span> get rest, <span class="PreProc">type</span>
<span id="L2222" class="LineNr">2222 </span>    compare *rest-type, <span class="Constant">0</span>/pair
<span id="L2223" class="LineNr">2223 </span>    <span class="PreProc">break-if-=</span>
<span id="L2224" class="LineNr">2224 </span>    <span class="Special"><a href='trace.mu.html#L197'>error</a></span> trace, <span class="Constant">&quot;'line' encountered non-pair&quot;</span>
<span id="L2225" class="LineNr">2225 </span>    <span class="PreProc">return</span>
<span id="L2226" class="LineNr">2226 </span>  <span class="Delimiter">}</span>
<span id="L2227" class="LineNr">2227 </span>  <span class="Delimiter">{</span>
<span id="L2228" class="LineNr">2228 </span>    <span class="PreProc">var</span> rest-nil?/eax: boolean <span class="Special">&lt;-</span> <a href='print.mu.html#L390'>nil?</a> rest
<span id="L2229" class="LineNr">2229 </span>    compare rest-nil?, <span class="Constant">0</span>/false
<span id="L2230" class="LineNr">2230 </span>    <span class="PreProc">break-if-=</span>
<span id="L2231" class="LineNr">2231 </span>    <span class="Special"><a href='trace.mu.html#L197'>error</a></span> trace, <span class="Constant">&quot;'line' needs 6 args but got 3&quot;</span>
<span id="L2232" class="LineNr">2232 </span>    <span class="PreProc">return</span>
<span id="L2233" class="LineNr">2233 </span>  <span class="Delimiter">}</span>
<span id="L2234" class="LineNr">2234 </span>  <span class="PreProc">var</span> fourth-ah/eax: (addr handle <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> get rest, left
<span id="L2235" class="LineNr">2235 </span>  <span class="PreProc">var</span> fourth/eax: (addr <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> <a href='../120allocate.subx.html#L235'>lookup</a> *fourth-ah
<span id="L2236" class="LineNr">2236 </span>  <span class="Delimiter">{</span>
<span id="L2237" class="LineNr">2237 </span>    <span class="PreProc">var</span> fourth-type/eax: (addr int) <span class="Special">&lt;-</span> get fourth, <span class="PreProc">type</span>
<span id="L2238" class="LineNr">2238 </span>    compare *fourth-type, <span class="Constant">1</span>/number
<span id="L2239" class="LineNr">2239 </span>    <span class="PreProc">break-if-=</span>
<span id="L2240" class="LineNr">2240 </span>    <span class="Special"><a href='trace.mu.html#L197'>error</a></span> trace, <span class="Constant">&quot;fourth arg for 'line' is not a number (<a href='../500fake-screen.mu.html#L16'>screen</a> x coordinate of end point)&quot;</span>
<span id="L2241" class="LineNr">2241 </span>    <span class="PreProc">return</span>
<span id="L2242" class="LineNr">2242 </span>  <span class="Delimiter">}</span>
<span id="L2243" class="LineNr">2243 </span>  <span class="PreProc">var</span> fourth-value/eax: (addr float) <span class="Special">&lt;-</span> get fourth, number-data
<span id="L2244" class="LineNr">2244 </span>  <span class="PreProc">var</span> x2/<span class="muRegEcx">ecx</span>: int <span class="Special">&lt;-</span> convert *fourth-value
<span id="L2245" class="LineNr">2245 </span>  <span class="muComment"># y2 = rest-&gt;right-&gt;left-&gt;value</span>
<span id="L2246" class="LineNr">2246 </span>  <span class="PreProc">var</span> rest-ah/eax: (addr handle <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> get rest, right
<span id="L2247" class="LineNr">2247 </span>  <span class="PreProc">var</span> _rest/eax: (addr <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> <a href='../120allocate.subx.html#L235'>lookup</a> *rest-ah
<span id="L2248" class="LineNr">2248 </span>  rest <span class="Special">&lt;-</span> copy _rest
<span id="L2249" class="LineNr">2249 </span>  <span class="Delimiter">{</span>
<span id="L2250" class="LineNr">2250 </span>    <span class="PreProc">var</span> rest-type/eax: (addr int) <span class="Special">&lt;-</span> get rest, <span class="PreProc">type</span>
<span id="L2251" class="LineNr">2251 </span>    compare *rest-type, <span class="Constant">0</span>/pair
<span id="L2252" class="LineNr">2252 </span>    <span class="PreProc">break-if-=</span>
<span id="L2253" class="LineNr">2253 </span>    <span class="Special"><a href='trace.mu.html#L197'>error</a></span> trace, <span class="Constant">&quot;'line' encountered non-pair&quot;</span>
<span id="L2254" class="LineNr">2254 </span>    <span class="PreProc">return</span>
<span id="L2255" class="LineNr">2255 </span>  <span class="Delimiter">}</span>
<span id="L2256" class="LineNr">2256 </span>  <span class="Delimiter">{</span>
<span id="L2257" class="LineNr">2257 </span>    <span class="PreProc">var</span> rest-nil?/eax: boolean <span class="Special">&lt;-</span> <a href='print.mu.html#L390'>nil?</a> rest
<span id="L2258" class="LineNr">2258 </span>    compare rest-nil?, <span class="Constant">0</span>/false
<span id="L2259" class="LineNr">2259 </span>    <span class="PreProc">break-if-=</span>
<span id="L2260" class="LineNr">2260 </span>    <span class="Special"><a href='trace.mu.html#L197'>error</a></span> trace, <span class="Constant">&quot;'line' needs 6 args but got 4&quot;</span>
<span id="L2261" class="LineNr">2261 </span>    <span class="PreProc">return</span>
<span id="L2262" class="LineNr">2262 </span>  <span class="Delimiter">}</span>
<span id="L2263" class="LineNr">2263 </span>  <span class="PreProc">var</span> fifth-ah/eax: (addr handle <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> get rest, left
<span id="L2264" class="LineNr">2264 </span>  <span class="PreProc">var</span> fifth/eax: (addr <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> <a href='../120allocate.subx.html#L235'>lookup</a> *fifth-ah
<span id="L2265" class="LineNr">2265 </span>  <span class="Delimiter">{</span>
<span id="L2266" class="LineNr">2266 </span>    <span class="PreProc">var</span> fifth-type/eax: (addr int) <span class="Special">&lt;-</span> get fifth, <span class="PreProc">type</span>
<span id="L2267" class="LineNr">2267 </span>    compare *fifth-type, <span class="Constant">1</span>/number
<span id="L2268" class="LineNr">2268 </span>    <span class="PreProc">break-if-=</span>
<span id="L2269" class="LineNr">2269 </span>    <span class="Special"><a href='trace.mu.html#L197'>error</a></span> trace, <span class="Constant">&quot;fifth arg for 'line' is not a number (<a href='../500fake-screen.mu.html#L16'>screen</a> y coordinate of end point)&quot;</span>
<span id="L2270" class="LineNr">2270 </span>    <span class="PreProc">return</span>
<span id="L2271" class="LineNr">2271 </span>  <span class="Delimiter">}</span>
<span id="L2272" class="LineNr">2272 </span>  <span class="PreProc">var</span> fifth-value/eax: (addr float) <span class="Special">&lt;-</span> get fifth, number-data
<span id="L2273" class="LineNr">2273 </span>  <span class="PreProc">var</span> tmp/eax: int <span class="Special">&lt;-</span> convert *fifth-value
<span id="L2274" class="LineNr">2274 </span>  <span class="PreProc">var</span> y2: int
<span id="L2275" class="LineNr">2275 </span>  copy-to y2, tmp
<span id="L2276" class="LineNr">2276 </span>  <span class="muComment"># color = rest-&gt;right-&gt;left-&gt;value</span>
<span id="L2277" class="LineNr">2277 </span>  <span class="PreProc">var</span> rest-ah/eax: (addr handle <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> get rest, right
<span id="L2278" class="LineNr">2278 </span>  <span class="PreProc">var</span> _rest/eax: (addr <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> <a href='../120allocate.subx.html#L235'>lookup</a> *rest-ah
<span id="L2279" class="LineNr">2279 </span>  rest <span class="Special">&lt;-</span> copy _rest
<span id="L2280" class="LineNr">2280 </span>  <span class="Delimiter">{</span>
<span id="L2281" class="LineNr">2281 </span>    <span class="PreProc">var</span> rest-type/eax: (addr int) <span class="Special">&lt;-</span> get rest, <span class="PreProc">type</span>
<span id="L2282" class="LineNr">2282 </span>    compare *rest-type, <span class="Constant">0</span>/pair
<span id="L2283" class="LineNr">2283 </span>    <span class="PreProc">break-if-=</span>
<span id="L2284" class="LineNr">2284 </span>    <span class="Special"><a href='trace.mu.html#L197'>error</a></span> trace, <span class="Constant">&quot;'line' encountered non-pair&quot;</span>
<span id="L2285" class="LineNr">2285 </span>    <span class="PreProc">return</span>
<span id="L2286" class="LineNr">2286 </span>  <span class="Delimiter">}</span>
<span id="L2287" class="LineNr">2287 </span>  <span class="Delimiter">{</span>
<span id="L2288" class="LineNr">2288 </span>    <span class="PreProc">var</span> rest-nil?/eax: boolean <span class="Special">&lt;-</span> <a href='print.mu.html#L390'>nil?</a> rest
<span id="L2289" class="LineNr">2289 </span>    compare rest-nil?, <span class="Constant">0</span>/false
<span id="L2290" class="LineNr">2290 </span>    <span class="PreProc">break-if-=</span>
<span id="L2291" class="LineNr">2291 </span>    <span class="Special"><a href='trace.mu.html#L197'>error</a></span> trace, <span class="Constant">&quot;'line' needs 6 args but got 5&quot;</span>
<span id="L2292" class="LineNr">2292 </span>    <span class="PreProc">return</span>
<span id="L2293" class="LineNr">2293 </span>  <span class="Delimiter">}</span>
<span id="L2294" class="LineNr">2294 </span>  <span class="PreProc">var</span> sixth-ah/eax: (addr handle <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> get rest, left
<span id="L2295" class="LineNr">2295 </span>  <span class="PreProc">var</span> sixth/eax: (addr <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> <a href='../120allocate.subx.html#L235'>lookup</a> *sixth-ah
<span id="L2296" class="LineNr">2296 </span>  <span class="Delimiter">{</span>
<span id="L2297" class="LineNr">2297 </span>    <span class="PreProc">var</span> sixth-type/eax: (addr int) <span class="Special">&lt;-</span> get sixth, <span class="PreProc">type</span>
<span id="L2298" class="LineNr">2298 </span>    compare *sixth-type, <span class="Constant">1</span>/number
<span id="L2299" class="LineNr">2299 </span>    <span class="PreProc">break-if-=</span>
<span id="L2300" class="LineNr">2300 </span>    <span class="Special"><a href='trace.mu.html#L197'>error</a></span> trace, <span class="Constant">&quot;sixth arg for 'line' is not an int (color; 0..0xff)&quot;</span>
<span id="L2301" class="LineNr">2301 </span>    <span class="PreProc">return</span>
<span id="L2302" class="LineNr">2302 </span>  <span class="Delimiter">}</span>
<span id="L2303" class="LineNr">2303 </span>  <span class="PreProc">var</span> sixth-value/eax: (addr float) <span class="Special">&lt;-</span> get sixth, number-data
<span id="L2304" class="LineNr">2304 </span>  <span class="PreProc">var</span> color/eax: int <span class="Special">&lt;-</span> convert *sixth-value
<span id="L2305" class="LineNr">2305 </span>  <a href='../507line.mu.html#L1'>draw-line</a> <a href='../500fake-screen.mu.html#L16'>screen</a>, x1, y1, x2, y2, color
<span id="L2306" class="LineNr">2306 </span>  <span class="muComment"># return nothing</span>
<span id="L2307" class="LineNr">2307 </span><span class="Delimiter">}</span>
<span id="L2308" class="LineNr">2308 </span>
<span id="L2309" class="LineNr">2309 </span><span class="PreProc">fn</span> <span class="muFunction"><a href='primitives.mu.html#L2309'>apply-hline</a></span> _args-ah: (addr handle <a href='cell.mu.html#L1'>cell</a>), out: (addr handle <a href='cell.mu.html#L1'>cell</a>), trace: (addr trace) <span class="Delimiter">{</span>
<span id="L2310" class="LineNr">2310 </span>  <a href='trace.mu.html#L185'>trace-text</a> trace, <span class="Constant">&quot;eval&quot;</span>, <span class="Constant">&quot;apply 'hline'&quot;</span>
<span id="L2311" class="LineNr">2311 </span>  <span class="PreProc">var</span> args-ah/eax: (addr handle <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> copy _args-ah
<span id="L2312" class="LineNr">2312 </span>  <span class="PreProc">var</span> _args/eax: (addr <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> <a href='../120allocate.subx.html#L235'>lookup</a> *args-ah
<span id="L2313" class="LineNr">2313 </span>  <span class="PreProc">var</span> args/<span class="muRegEsi">esi</span>: (addr <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> copy _args
<span id="L2314" class="LineNr">2314 </span>  <span class="Delimiter">{</span>
<span id="L2315" class="LineNr">2315 </span>    <span class="PreProc">var</span> args-type/eax: (addr int) <span class="Special">&lt;-</span> get args, <span class="PreProc">type</span>
<span id="L2316" class="LineNr">2316 </span>    compare *args-type, <span class="Constant">0</span>/pair
<span id="L2317" class="LineNr">2317 </span>    <span class="PreProc">break-if-=</span>
<span id="L2318" class="LineNr">2318 </span>    <span class="Special"><a href='trace.mu.html#L197'>error</a></span> trace, <span class="Constant">&quot;args to 'hline' are not a list&quot;</span>
<span id="L2319" class="LineNr">2319 </span>    <span class="PreProc">return</span>
<span id="L2320" class="LineNr">2320 </span>  <span class="Delimiter">}</span>
<span id="L2321" class="LineNr">2321 </span>  <span class="PreProc">var</span> empty-args?/eax: boolean <span class="Special">&lt;-</span> <a href='print.mu.html#L390'>nil?</a> args
<span id="L2322" class="LineNr">2322 </span>  compare empty-args?, <span class="Constant">0</span>/false
<span id="L2323" class="LineNr">2323 </span>  <span class="Delimiter">{</span>
<span id="L2324" class="LineNr">2324 </span>    <span class="PreProc">break-if-=</span>
<span id="L2325" class="LineNr">2325 </span>    <span class="Special"><a href='trace.mu.html#L197'>error</a></span> trace, <span class="Constant">&quot;'hline' needs 5 args but got 0&quot;</span>
<span id="L2326" class="LineNr">2326 </span>    <span class="PreProc">return</span>
<span id="L2327" class="LineNr">2327 </span>  <span class="Delimiter">}</span>
<span id="L2328" class="LineNr">2328 </span>  <span class="muComment"># screen = args-&gt;left</span>
<span id="L2329" class="LineNr">2329 </span>  <span class="PreProc">var</span> first-ah/eax: (addr handle <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> get args, left
<span id="L2330" class="LineNr">2330 </span>  <span class="PreProc">var</span> first/eax: (addr <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> <a href='../120allocate.subx.html#L235'>lookup</a> *first-ah
<span id="L2331" class="LineNr">2331 </span>  <span class="Delimiter">{</span>
<span id="L2332" class="LineNr">2332 </span>    <span class="PreProc">var</span> first-type/eax: (addr int) <span class="Special">&lt;-</span> get first, <span class="PreProc">type</span>
<span id="L2333" class="LineNr">2333 </span>    compare *first-type, <span class="Constant">5</span>/screen
<span id="L2334" class="LineNr">2334 </span>    <span class="PreProc">break-if-=</span>
<span id="L2335" class="LineNr">2335 </span>    <span class="Special"><a href='trace.mu.html#L197'>error</a></span> trace, <span class="Constant">&quot;first arg for 'hline' is not a screen&quot;</span>
<span id="L2336" class="LineNr">2336 </span>    <span class="PreProc">return</span>
<span id="L2337" class="LineNr">2337 </span>  <span class="Delimiter">}</span>
<span id="L2338" class="LineNr">2338 </span>  <span class="PreProc">var</span> screen-ah/eax: (addr handle <a href='../500fake-screen.mu.html#L16'>screen</a>) <span class="Special">&lt;-</span> get first, screen-data
<span id="L2339" class="LineNr">2339 </span>  <span class="PreProc">var</span> _screen/eax: (addr <a href='../500fake-screen.mu.html#L16'>screen</a>) <span class="Special">&lt;-</span> <a href='../120allocate.subx.html#L235'>lookup</a> *screen-ah
<span id="L2340" class="LineNr">2340 </span>  <span class="PreProc">var</span> <a href='../500fake-screen.mu.html#L16'>screen</a>/<span class="muRegEdi">edi</span>: (addr <a href='../500fake-screen.mu.html#L16'>screen</a>) <span class="Special">&lt;-</span> copy _screen
<span id="L2341" class="LineNr">2341 </span>  <span class="muComment"># y = args-&gt;right-&gt;left-&gt;value</span>
<span id="L2342" class="LineNr">2342 </span>  <span class="PreProc">var</span> rest-ah/eax: (addr handle <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> get args, right
<span id="L2343" class="LineNr">2343 </span>  <span class="PreProc">var</span> _rest/eax: (addr <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> <a href='../120allocate.subx.html#L235'>lookup</a> *rest-ah
<span id="L2344" class="LineNr">2344 </span>  <span class="PreProc">var</span> rest/<span class="muRegEsi">esi</span>: (addr <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> copy _rest
<span id="L2345" class="LineNr">2345 </span>  <span class="Delimiter">{</span>
<span id="L2346" class="LineNr">2346 </span>    <span class="PreProc">var</span> rest-type/eax: (addr int) <span class="Special">&lt;-</span> get rest, <span class="PreProc">type</span>
<span id="L2347" class="LineNr">2347 </span>    compare *rest-type, <span class="Constant">0</span>/pair
<span id="L2348" class="LineNr">2348 </span>    <span class="PreProc">break-if-=</span>
<span id="L2349" class="LineNr">2349 </span>    <span class="Special"><a href='trace.mu.html#L197'>error</a></span> trace, <span class="Constant">&quot;'hline' encountered non-pair&quot;</span>
<span id="L2350" class="LineNr">2350 </span>    <span class="PreProc">return</span>
<span id="L2351" class="LineNr">2351 </span>  <span class="Delimiter">}</span>
<span id="L2352" class="LineNr">2352 </span>  <span class="Delimiter">{</span>
<span id="L2353" class="LineNr">2353 </span>    <span class="PreProc">var</span> rest-nil?/eax: boolean <span class="Special">&lt;-</span> <a href='print.mu.html#L390'>nil?</a> rest
<span id="L2354" class="LineNr">2354 </span>    compare rest-nil?, <span class="Constant">0</span>/false
<span id="L2355" class="LineNr">2355 </span>    <span class="PreProc">break-if-=</span>
<span id="L2356" class="LineNr">2356 </span>    <span class="Special"><a href='trace.mu.html#L197'>error</a></span> trace, <span class="Constant">&quot;'hline' needs 5 args but got 1&quot;</span>
<span id="L2357" class="LineNr">2357 </span>    <span class="PreProc">return</span>
<span id="L2358" class="LineNr">2358 </span>  <span class="Delimiter">}</span>
<span id="L2359" class="LineNr">2359 </span>  <span class="PreProc">var</span> second-ah/eax: (addr handle <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> get rest, left
<span id="L2360" class="LineNr">2360 </span>  <span class="PreProc">var</span> second/eax: (addr <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> <a href='../120allocate.subx.html#L235'>lookup</a> *second-ah
<span id="L2361" class="LineNr">2361 </span>  <span class="Delimiter">{</span>
<span id="L2362" class="LineNr">2362 </span>    <span class="PreProc">var</span> second-type/eax: (addr int) <span class="Special">&lt;-</span> get second, <span class="PreProc">type</span>
<span id="L2363" class="LineNr">2363 </span>    compare *second-type, <span class="Constant">1</span>/number
<span id="L2364" class="LineNr">2364 </span>    <span class="PreProc">break-if-=</span>
<span id="L2365" class="LineNr">2365 </span>    <span class="Special"><a href='trace.mu.html#L197'>error</a></span> trace, <span class="Constant">&quot;second arg for 'hline' is not a number (<a href='../500fake-screen.mu.html#L16'>screen</a> y coordinate)&quot;</span>
<span id="L2366" class="LineNr">2366 </span>    <span class="PreProc">return</span>
<span id="L2367" class="LineNr">2367 </span>  <span class="Delimiter">}</span>
<span id="L2368" class="LineNr">2368 </span>  <span class="PreProc">var</span> second-value/eax: (addr float) <span class="Special">&lt;-</span> get second, number-data
<span id="L2369" class="LineNr">2369 </span>  <span class="PreProc">var</span> y/<span class="muRegEdx">edx</span>: int <span class="Special">&lt;-</span> convert *second-value
<span id="L2370" class="LineNr">2370 </span>  <span class="muComment"># x1 = rest-&gt;right-&gt;left-&gt;value</span>
<span id="L2371" class="LineNr">2371 </span>  <span class="PreProc">var</span> rest-ah/eax: (addr handle <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> get rest, right
<span id="L2372" class="LineNr">2372 </span>  <span class="PreProc">var</span> _rest/eax: (addr <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> <a href='../120allocate.subx.html#L235'>lookup</a> *rest-ah
<span id="L2373" class="LineNr">2373 </span>  rest <span class="Special">&lt;-</span> copy _rest
<span id="L2374" class="LineNr">2374 </span>  <span class="Delimiter">{</span>
<span id="L2375" class="LineNr">2375 </span>    <span class="PreProc">var</span> rest-type/eax: (addr int) <span class="Special">&lt;-</span> get rest, <span class="PreProc">type</span>
<span id="L2376" class="LineNr">2376 </span>    compare *rest-type, <span class="Constant">0</span>/pair
<span id="L2377" class="LineNr">2377 </span>    <span class="PreProc">break-if-=</span>
<span id="L2378" class="LineNr">2378 </span>    <span class="Special"><a href='trace.mu.html#L197'>error</a></span> trace, <span class="Constant">&quot;'hline' encountered non-pair&quot;</span>
<span id="L2379" class="LineNr">2379 </span>    <span class="PreProc">return</span>
<span id="L2380" class="LineNr">2380 </span>  <span class="Delimiter">}</span>
<span id="L2381" class="LineNr">2381 </span>  <span class="Delimiter">{</span>
<span id="L2382" class="LineNr">2382 </span>    <span class="PreProc">var</span> rest-nil?/eax: boolean <span class="Special">&lt;-</span> <a href='print.mu.html#L390'>nil?</a> rest
<span id="L2383" class="LineNr">2383 </span>    compare rest-nil?, <span class="Constant">0</span>/false
<span id="L2384" class="LineNr">2384 </span>    <span class="PreProc">break-if-=</span>
<span id="L2385" class="LineNr">2385 </span>    <span class="Special"><a href='trace.mu.html#L197'>error</a></span> trace, <span class="Constant">&quot;'hline' needs 5 args but got 2&quot;</span>
<span id="L2386" class="LineNr">2386 </span>    <span class="PreProc">return</span>
<span id="L2387" class="LineNr">2387 </span>  <span class="Delimiter">}</span>
<span id="L2388" class="LineNr">2388 </span>  <span class="PreProc">var</span> third-ah/eax: (addr handle <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> get rest, left
<span id="L2389" class="LineNr">2389 </span>  <span class="PreProc">var</span> third/eax: (addr <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> <a href='../120allocate.subx.html#L235'>lookup</a> *third-ah
<span id="L2390" class="LineNr">2390 </span>  <span class="Delimiter">{</span>
<span id="L2391" class="LineNr">2391 </span>    <span class="PreProc">var</span> third-type/eax: (addr int) <span class="Special">&lt;-</span> get third, <span class="PreProc">type</span>
<span id="L2392" class="LineNr">2392 </span>    compare *third-type, <span class="Constant">1</span>/number
<span id="L2393" class="LineNr">2393 </span>    <span class="PreProc">break-if-=</span>
<span id="L2394" class="LineNr">2394 </span>    <span class="Special"><a href='trace.mu.html#L197'>error</a></span> trace, <span class="Constant">&quot;third arg for 'hline' is not a number (<a href='../500fake-screen.mu.html#L16'>screen</a> x coordinate of start point)&quot;</span>
<span id="L2395" class="LineNr">2395 </span>    <span class="PreProc">return</span>
<span id="L2396" class="LineNr">2396 </span>  <span class="Delimiter">}</span>
<span id="L2397" class="LineNr">2397 </span>  <span class="PreProc">var</span> third-value/eax: (addr float) <span class="Special">&lt;-</span> get third, number-data
<span id="L2398" class="LineNr">2398 </span>  <span class="PreProc">var</span> x1/<span class="muRegEbx">ebx</span>: int <span class="Special">&lt;-</span> convert *third-value
<span id="L2399" class="LineNr">2399 </span>  <span class="muComment"># x2 = rest-&gt;right-&gt;left-&gt;value</span>
<span id="L2400" class="LineNr">2400 </span>  <span class="PreProc">var</span> rest-ah/eax: (addr handle <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> get rest, right
<span id="L2401" class="LineNr">2401 </span>  <span class="PreProc">var</span> _rest/eax: (addr <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> <a href='../120allocate.subx.html#L235'>lookup</a> *rest-ah
<span id="L2402" class="LineNr">2402 </span>  <span class="PreProc">var</span> rest/<span class="muRegEsi">esi</span>: (addr <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> copy _rest
<span id="L2403" class="LineNr">2403 </span>  <span class="Delimiter">{</span>
<span id="L2404" class="LineNr">2404 </span>    <span class="PreProc">var</span> rest-type/eax: (addr int) <span class="Special">&lt;-</span> get rest, <span class="PreProc">type</span>
<span id="L2405" class="LineNr">2405 </span>    compare *rest-type, <span class="Constant">0</span>/pair
<span id="L2406" class="LineNr">2406 </span>    <span class="PreProc">break-if-=</span>
<span id="L2407" class="LineNr">2407 </span>    <span class="Special"><a href='trace.mu.html#L197'>error</a></span> trace, <span class="Constant">&quot;'hline' encountered non-pair&quot;</span>
<span id="L2408" class="LineNr">2408 </span>    <span class="PreProc">return</span>
<span id="L2409" class="LineNr">2409 </span>  <span class="Delimiter">}</span>
<span id="L2410" class="LineNr">2410 </span>  <span class="Delimiter">{</span>
<span id="L2411" class="LineNr">2411 </span>    <span class="PreProc">var</span> rest-nil?/eax: boolean <span class="Special">&lt;-</span> <a href='print.mu.html#L390'>nil?</a> rest
<span id="L2412" class="LineNr">2412 </span>    compare rest-nil?, <span class="Constant">0</span>/false
<span id="L2413" class="LineNr">2413 </span>    <span class="PreProc">break-if-=</span>
<span id="L2414" class="LineNr">2414 </span>    <span class="Special"><a href='trace.mu.html#L197'>error</a></span> trace, <span class="Constant">&quot;'hline' needs 5 args but got 3&quot;</span>
<span id="L2415" class="LineNr">2415 </span>    <span class="PreProc">return</span>
<span id="L2416" class="LineNr">2416 </span>  <span class="Delimiter">}</span>
<span id="L2417" class="LineNr">2417 </span>  <span class="PreProc">var</span> fourth-ah/eax: (addr handle <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> get rest, left
<span id="L2418" class="LineNr">2418 </span>  <span class="PreProc">var</span> fourth/eax: (addr <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> <a href='../120allocate.subx.html#L235'>lookup</a> *fourth-ah
<span id="L2419" class="LineNr">2419 </span>  <span class="Delimiter">{</span>
<span id="L2420" class="LineNr">2420 </span>    <span class="PreProc">var</span> fourth-type/eax: (addr int) <span class="Special">&lt;-</span> get fourth, <span class="PreProc">type</span>
<span id="L2421" class="LineNr">2421 </span>    compare *fourth-type, <span class="Constant">1</span>/number
<span id="L2422" class="LineNr">2422 </span>    <span class="PreProc">break-if-=</span>
<span id="L2423" class="LineNr">2423 </span>    <span class="Special"><a href='trace.mu.html#L197'>error</a></span> trace, <span class="Constant">&quot;fourth arg for 'hline' is not a number (<a href='../500fake-screen.mu.html#L16'>screen</a> x coordinate of end point)&quot;</span>
<span id="L2424" class="LineNr">2424 </span>    <span class="PreProc">return</span>
<span id="L2425" class="LineNr">2425 </span>  <span class="Delimiter">}</span>
<span id="L2426" class="LineNr">2426 </span>  <span class="PreProc">var</span> fourth-value/eax: (addr float) <span class="Special">&lt;-</span> get fourth, number-data
<span id="L2427" class="LineNr">2427 </span>  <span class="PreProc">var</span> x2/<span class="muRegEcx">ecx</span>: int <span class="Special">&lt;-</span> convert *fourth-value
<span id="L2428" class="LineNr">2428 </span>  <span class="muComment"># color = rest-&gt;right-&gt;left-&gt;value</span>
<span id="L2429" class="LineNr">2429 </span>  <span class="PreProc">var</span> rest-ah/eax: (addr handle <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> get rest, right
<span id="L2430" class="LineNr">2430 </span>  <span class="PreProc">var</span> _rest/eax: (addr <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> <a href='../120allocate.subx.html#L235'>lookup</a> *rest-ah
<span id="L2431" class="LineNr">2431 </span>  rest <span class="Special">&lt;-</span> copy _rest
<span id="L2432" class="LineNr">2432 </span>  <span class="Delimiter">{</span>
<span id="L2433" class="LineNr">2433 </span>    <span class="PreProc">var</span> rest-type/eax: (addr int) <span class="Special">&lt;-</span> get rest, <span class="PreProc">type</span>
<span id="L2434" class="LineNr">2434 </span>    compare *rest-type, <span class="Constant">0</span>/pair
<span id="L2435" class="LineNr">2435 </span>    <span class="PreProc">break-if-=</span>
<span id="L2436" class="LineNr">2436 </span>    <span class="Special"><a href='trace.mu.html#L197'>error</a></span> trace, <span class="Constant">&quot;'hline' encountered non-pair&quot;</span>
<span id="L2437" class="LineNr">2437 </span>    <span class="PreProc">return</span>
<span id="L2438" class="LineNr">2438 </span>  <span class="Delimiter">}</span>
<span id="L2439" class="LineNr">2439 </span>  <span class="Delimiter">{</span>
<span id="L2440" class="LineNr">2440 </span>    <span class="PreProc">var</span> rest-nil?/eax: boolean <span class="Special">&lt;-</span> <a href='print.mu.html#L390'>nil?</a> rest
<span id="L2441" class="LineNr">2441 </span>    compare rest-nil?, <span class="Constant">0</span>/false
<span id="L2442" class="LineNr">2442 </span>    <span class="PreProc">break-if-=</span>
<span id="L2443" class="LineNr">2443 </span>    <span class="Special"><a href='trace.mu.html#L197'>error</a></span> trace, <span class="Constant">&quot;'hline' needs 5 args but got 5&quot;</span>
<span id="L2444" class="LineNr">2444 </span>    <span class="PreProc">return</span>
<span id="L2445" class="LineNr">2445 </span>  <span class="Delimiter">}</span>
<span id="L2446" class="LineNr">2446 </span>  <span class="PreProc">var</span> fifth-ah/eax: (addr handle <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> get rest, left
<span id="L2447" class="LineNr">2447 </span>  <span class="PreProc">var</span> fifth/eax: (addr <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> <a href='../120allocate.subx.html#L235'>lookup</a> *fifth-ah
<span id="L2448" class="LineNr">2448 </span>  <span class="Delimiter">{</span>
<span id="L2449" class="LineNr">2449 </span>    <span class="PreProc">var</span> fifth-type/eax: (addr int) <span class="Special">&lt;-</span> get fifth, <span class="PreProc">type</span>
<span id="L2450" class="LineNr">2450 </span>    compare *fifth-type, <span class="Constant">1</span>/number
<span id="L2451" class="LineNr">2451 </span>    <span class="PreProc">break-if-=</span>
<span id="L2452" class="LineNr">2452 </span>    <span class="Special"><a href='trace.mu.html#L197'>error</a></span> trace, <span class="Constant">&quot;fifth arg for 'hline' is not an int (color; 0..0xff)&quot;</span>
<span id="L2453" class="LineNr">2453 </span>    <span class="PreProc">return</span>
<span id="L2454" class="LineNr">2454 </span>  <span class="Delimiter">}</span>
<span id="L2455" class="LineNr">2455 </span>  <span class="PreProc">var</span> fifth-value/eax: (addr float) <span class="Special">&lt;-</span> get fifth, number-data
<span id="L2456" class="LineNr">2456 </span>  <span class="PreProc">var</span> color/eax: int <span class="Special">&lt;-</span> convert *fifth-value
<span id="L2457" class="LineNr">2457 </span>  <a href='../507line.mu.html#L64'>draw-horizontal-line</a> <a href='../500fake-screen.mu.html#L16'>screen</a>, y, x1, x2, color
<span id="L2458" class="LineNr">2458 </span>  <span class="muComment"># return nothing</span>
<span id="L2459" class="LineNr">2459 </span><span class="Delimiter">}</span>
<span id="L2460" class="LineNr">2460 </span>
<span id="L2461" class="LineNr">2461 </span><span class="PreProc">fn</span> <span class="muFunction"><a href='primitives.mu.html#L2461'>apply-vline</a></span> _args-ah: (addr handle <a href='cell.mu.html#L1'>cell</a>), out: (addr handle <a href='cell.mu.html#L1'>cell</a>), trace: (addr trace) <span class="Delimiter">{</span>
<span id="L2462" class="LineNr">2462 </span>  <a href='trace.mu.html#L185'>trace-text</a> trace, <span class="Constant">&quot;eval&quot;</span>, <span class="Constant">&quot;apply 'vline'&quot;</span>
<span id="L2463" class="LineNr">2463 </span>  <span class="PreProc">var</span> args-ah/eax: (addr handle <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> copy _args-ah
<span id="L2464" class="LineNr">2464 </span>  <span class="PreProc">var</span> _args/eax: (addr <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> <a href='../120allocate.subx.html#L235'>lookup</a> *args-ah
<span id="L2465" class="LineNr">2465 </span>  <span class="PreProc">var</span> args/<span class="muRegEsi">esi</span>: (addr <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> copy _args
<span id="L2466" class="LineNr">2466 </span>  <span class="Delimiter">{</span>
<span id="L2467" class="LineNr">2467 </span>    <span class="PreProc">var</span> args-type/eax: (addr int) <span class="Special">&lt;-</span> get args, <span class="PreProc">type</span>
<span id="L2468" class="LineNr">2468 </span>    compare *args-type, <span class="Constant">0</span>/pair
<span id="L2469" class="LineNr">2469 </span>    <span class="PreProc">break-if-=</span>
<span id="L2470" class="LineNr">2470 </span>    <span class="Special"><a href='trace.mu.html#L197'>error</a></span> trace, <span class="Constant">&quot;args to 'vline' are not a list&quot;</span>
<span id="L2471" class="LineNr">2471 </span>    <span class="PreProc">return</span>
<span id="L2472" class="LineNr">2472 </span>  <span class="Delimiter">}</span>
<span id="L2473" class="LineNr">2473 </span>  <span class="PreProc">var</span> empty-args?/eax: boolean <span class="Special">&lt;-</span> <a href='print.mu.html#L390'>nil?</a> args
<span id="L2474" class="LineNr">2474 </span>  compare empty-args?, <span class="Constant">0</span>/false
<span id="L2475" class="LineNr">2475 </span>  <span class="Delimiter">{</span>
<span id="L2476" class="LineNr">2476 </span>    <span class="PreProc">break-if-=</span>
<span id="L2477" class="LineNr">2477 </span>    <span class="Special"><a href='trace.mu.html#L197'>error</a></span> trace, <span class="Constant">&quot;'vline' needs 5 args but got 0&quot;</span>
<span id="L2478" class="LineNr">2478 </span>    <span class="PreProc">return</span>
<span id="L2479" class="LineNr">2479 </span>  <span class="Delimiter">}</span>
<span id="L2480" class="LineNr">2480 </span>  <span class="muComment"># screen = args-&gt;left</span>
<span id="L2481" class="LineNr">2481 </span>  <span class="PreProc">var</span> first-ah/eax: (addr handle <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> get args, left
<span id="L2482" class="LineNr">2482 </span>  <span class="PreProc">var</span> first/eax: (addr <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> <a href='../120allocate.subx.html#L235'>lookup</a> *first-ah
<span id="L2483" class="LineNr">2483 </span>  <span class="Delimiter">{</span>
<span id="L2484" class="LineNr">2484 </span>    <span class="PreProc">var</span> first-type/eax: (addr int) <span class="Special">&lt;-</span> get first, <span class="PreProc">type</span>
<span id="L2485" class="LineNr">2485 </span>    compare *first-type, <span class="Constant">5</span>/screen
<span id="L2486" class="LineNr">2486 </span>    <span class="PreProc">break-if-=</span>
<span id="L2487" class="LineNr">2487 </span>    <span class="Special"><a href='trace.mu.html#L197'>error</a></span> trace, <span class="Constant">&quot;first arg for 'vline' is not a screen&quot;</span>
<span id="L2488" class="LineNr">2488 </span>    <span class="PreProc">return</span>
<span id="L2489" class="LineNr">2489 </span>  <span class="Delimiter">}</span>
<span id="L2490" class="LineNr">2490 </span>  <span class="PreProc">var</span> screen-ah/eax: (addr handle <a href='../500fake-screen.mu.html#L16'>screen</a>) <span class="Special">&lt;-</span> get first, screen-data
<span id="L2491" class="LineNr">2491 </span>  <span class="PreProc">var</span> _screen/eax: (addr <a href='../500fake-screen.mu.html#L16'>screen</a>) <span class="Special">&lt;-</span> <a href='../120allocate.subx.html#L235'>lookup</a> *screen-ah
<span id="L2492" class="LineNr">2492 </span>  <span class="PreProc">var</span> <a href='../500fake-screen.mu.html#L16'>screen</a>/<span class="muRegEdi">edi</span>: (addr <a href='../500fake-screen.mu.html#L16'>screen</a>) <span class="Special">&lt;-</span> copy _screen
<span id="L2493" class="LineNr">2493 </span>  <span class="muComment"># x = args-&gt;right-&gt;left-&gt;value</span>
<span id="L2494" class="LineNr">2494 </span>  <span class="PreProc">var</span> rest-ah/eax: (addr handle <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> get args, right
<span id="L2495" class="LineNr">2495 </span>  <span class="PreProc">var</span> _rest/eax: (addr <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> <a href='../120allocate.subx.html#L235'>lookup</a> *rest-ah
<span id="L2496" class="LineNr">2496 </span>  <span class="PreProc">var</span> rest/<span class="muRegEsi">esi</span>: (addr <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> copy _rest
<span id="L2497" class="LineNr">2497 </span>  <span class="Delimiter">{</span>
<span id="L2498" class="LineNr">2498 </span>    <span class="PreProc">var</span> rest-type/eax: (addr int) <span class="Special">&lt;-</span> get rest, <span class="PreProc">type</span>
<span id="L2499" class="LineNr">2499 </span>    compare *rest-type, <span class="Constant">0</span>/pair
<span id="L2500" class="LineNr">2500 </span>    <span class="PreProc">break-if-=</span>
<span id="L2501" class="LineNr">2501 </span>    <span class="Special"><a href='trace.mu.html#L197'>error</a></span> trace, <span class="Constant">&quot;'vline' encountered non-pair&quot;</span>
<span id="L2502" class="LineNr">2502 </span>    <span class="PreProc">return</span>
<span id="L2503" class="LineNr">2503 </span>  <span class="Delimiter">}</span>
<span id="L2504" class="LineNr">2504 </span>  <span class="Delimiter">{</span>
<span id="L2505" class="LineNr">2505 </span>    <span class="PreProc">var</span> rest-nil?/eax: boolean <span class="Special">&lt;-</span> <a href='print.mu.html#L390'>nil?</a> rest
<span id="L2506" class="LineNr">2506 </span>    compare rest-nil?, <span class="Constant">0</span>/false
<span id="L2507" class="LineNr">2507 </span>    <span class="PreProc">break-if-=</span>
<span id="L2508" class="LineNr">2508 </span>    <span class="Special"><a href='trace.mu.html#L197'>error</a></span> trace, <span class="Constant">&quot;'vline' needs 5 args but got 1&quot;</span>
<span id="L2509" class="LineNr">2509 </span>    <span class="PreProc">return</span>
<span id="L2510" class="LineNr">2510 </span>  <span class="Delimiter">}</span>
<span id="L2511" class="LineNr">2511 </span>  <span class="PreProc">var</span> second-ah/eax: (addr handle <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> get rest, left
<span id="L2512" class="LineNr">2512 </span>  <span class="PreProc">var</span> second/eax: (addr <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> <a href='../120allocate.subx.html#L235'>lookup</a> *second-ah
<span id="L2513" class="LineNr">2513 </span>  <span class="Delimiter">{</span>
<span id="L2514" class="LineNr">2514 </span>    <span class="PreProc">var</span> second-type/eax: (addr int) <span class="Special">&lt;-</span> get second, <span class="PreProc">type</span>
<span id="L2515" class="LineNr">2515 </span>    compare *second-type, <span class="Constant">1</span>/number
<span id="L2516" class="LineNr">2516 </span>    <span class="PreProc">break-if-=</span>
<span id="L2517" class="LineNr">2517 </span>    <span class="Special"><a href='trace.mu.html#L197'>error</a></span> trace, <span class="Constant">&quot;second arg for 'vline' is not a number (<a href='../500fake-screen.mu.html#L16'>screen</a> x coordinate)&quot;</span>
<span id="L2518" class="LineNr">2518 </span>    <span class="PreProc">return</span>
<span id="L2519" class="LineNr">2519 </span>  <span class="Delimiter">}</span>
<span id="L2520" class="LineNr">2520 </span>  <span class="PreProc">var</span> second-value/eax: (addr float) <span class="Special">&lt;-</span> get second, number-data
<span id="L2521" class="LineNr">2521 </span>  <span class="PreProc">var</span> x/<span class="muRegEdx">edx</span>: int <span class="Special">&lt;-</span> convert *second-value
<span id="L2522" class="LineNr">2522 </span>  <span class="muComment"># y1 = rest-&gt;right-&gt;left-&gt;value</span>
<span id="L2523" class="LineNr">2523 </span>  <span class="PreProc">var</span> rest-ah/eax: (addr handle <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> get rest, right
<span id="L2524" class="LineNr">2524 </span>  <span class="PreProc">var</span> _rest/eax: (addr <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> <a href='../120allocate.subx.html#L235'>lookup</a> *rest-ah
<span id="L2525" class="LineNr">2525 </span>  rest <span class="Special">&lt;-</span> copy _rest
<span id="L2526" class="LineNr">2526 </span>  <span class="Delimiter">{</span>
<span id="L2527" class="LineNr">2527 </span>    <span class="PreProc">var</span> rest-type/eax: (addr int) <span class="Special">&lt;-</span> get rest, <span class="PreProc">type</span>
<span id="L2528" class="LineNr">2528 </span>    compare *rest-type, <span class="Constant">0</span>/pair
<span id="L2529" class="LineNr">2529 </span>    <span class="PreProc">break-if-=</span>
<span id="L2530" class="LineNr">2530 </span>    <span class="Special"><a href='trace.mu.html#L197'>error</a></span> trace, <span class="Constant">&quot;'vline' encountered non-pair&quot;</span>
<span id="L2531" class="LineNr">2531 </span>    <span class="PreProc">return</span>
<span id="L2532" class="LineNr">2532 </span>  <span class="Delimiter">}</span>
<span id="L2533" class="LineNr">2533 </span>  <span class="Delimiter">{</span>
<span id="L2534" class="LineNr">2534 </span>    <span class="PreProc">var</span> rest-nil?/eax: boolean <span class="Special">&lt;-</span> <a href='print.mu.html#L390'>nil?</a> rest
<span id="L2535" class="LineNr">2535 </span>    compare rest-nil?, <span class="Constant">0</span>/false
<span id="L2536" class="LineNr">2536 </span>    <span class="PreProc">break-if-=</span>
<span id="L2537" class="LineNr">2537 </span>    <span class="Special"><a href='trace.mu.html#L197'>error</a></span> trace, <span class="Constant">&quot;'vline' needs 5 args but got 2&quot;</span>
<span id="L2538" class="LineNr">2538 </span>    <span class="PreProc">return</span>
<span id="L2539" class="LineNr">2539 </span>  <span class="Delimiter">}</span>
<span id="L2540" class="LineNr">2540 </span>  <span class="PreProc">var</span> third-ah/eax: (addr handle <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> get rest, left
<span id="L2541" class="LineNr">2541 </span>  <span class="PreProc">var</span> third/eax: (addr <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> <a href='../120allocate.subx.html#L235'>lookup</a> *third-ah
<span id="L2542" class="LineNr">2542 </span>  <span class="Delimiter">{</span>
<span id="L2543" class="LineNr">2543 </span>    <span class="PreProc">var</span> third-type/eax: (addr int) <span class="Special">&lt;-</span> get third, <span class="PreProc">type</span>
<span id="L2544" class="LineNr">2544 </span>    compare *third-type, <span class="Constant">1</span>/number
<span id="L2545" class="LineNr">2545 </span>    <span class="PreProc">break-if-=</span>
<span id="L2546" class="LineNr">2546 </span>    <span class="Special"><a href='trace.mu.html#L197'>error</a></span> trace, <span class="Constant">&quot;third arg for 'vline' is not a number (<a href='../500fake-screen.mu.html#L16'>screen</a> y coordinate of start point)&quot;</span>
<span id="L2547" class="LineNr">2547 </span>    <span class="PreProc">return</span>
<span id="L2548" class="LineNr">2548 </span>  <span class="Delimiter">}</span>
<span id="L2549" class="LineNr">2549 </span>  <span class="PreProc">var</span> third-value/eax: (addr float) <span class="Special">&lt;-</span> get third, number-data
<span id="L2550" class="LineNr">2550 </span>  <span class="PreProc">var</span> y1/<span class="muRegEbx">ebx</span>: int <span class="Special">&lt;-</span> convert *third-value
<span id="L2551" class="LineNr">2551 </span>  <span class="muComment"># y2 = rest-&gt;right-&gt;left-&gt;value</span>
<span id="L2552" class="LineNr">2552 </span>  <span class="PreProc">var</span> rest-ah/eax: (addr handle <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> get rest, right
<span id="L2553" class="LineNr">2553 </span>  <span class="PreProc">var</span> _rest/eax: (addr <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> <a href='../120allocate.subx.html#L235'>lookup</a> *rest-ah
<span id="L2554" class="LineNr">2554 </span>  <span class="PreProc">var</span> rest/<span class="muRegEsi">esi</span>: (addr <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> copy _rest
<span id="L2555" class="LineNr">2555 </span>  <span class="Delimiter">{</span>
<span id="L2556" class="LineNr">2556 </span>    <span class="PreProc">var</span> rest-type/eax: (addr int) <span class="Special">&lt;-</span> get rest, <span class="PreProc">type</span>
<span id="L2557" class="LineNr">2557 </span>    compare *rest-type, <span class="Constant">0</span>/pair
<span id="L2558" class="LineNr">2558 </span>    <span class="PreProc">break-if-=</span>
<span id="L2559" class="LineNr">2559 </span>    <span class="Special"><a href='trace.mu.html#L197'>error</a></span> trace, <span class="Constant">&quot;'vline' encountered non-pair&quot;</span>
<span id="L2560" class="LineNr">2560 </span>    <span class="PreProc">return</span>
<span id="L2561" class="LineNr">2561 </span>  <span class="Delimiter">}</span>
<span id="L2562" class="LineNr">2562 </span>  <span class="Delimiter">{</span>
<span id="L2563" class="LineNr">2563 </span>    <span class="PreProc">var</span> rest-nil?/eax: boolean <span class="Special">&lt;-</span> <a href='print.mu.html#L390'>nil?</a> rest
<span id="L2564" class="LineNr">2564 </span>    compare rest-nil?, <span class="Constant">0</span>/false
<span id="L2565" class="LineNr">2565 </span>    <span class="PreProc">break-if-=</span>
<span id="L2566" class="LineNr">2566 </span>    <span class="Special"><a href='trace.mu.html#L197'>error</a></span> trace, <span class="Constant">&quot;'vline' needs 5 args but got 3&quot;</span>
<span id="L2567" class="LineNr">2567 </span>    <span class="PreProc">return</span>
<span id="L2568" class="LineNr">2568 </span>  <span class="Delimiter">}</span>
<span id="L2569" class="LineNr">2569 </span>  <span class="PreProc">var</span> fourth-ah/eax: (addr handle <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> get rest, left
<span id="L2570" class="LineNr">2570 </span>  <span class="PreProc">var</span> fourth/eax: (addr <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> <a href='../120allocate.subx.html#L235'>lookup</a> *fourth-ah
<span id="L2571" class="LineNr">2571 </span>  <span class="Delimiter">{</span>
<span id="L2572" class="LineNr">2572 </span>    <span class="PreProc">var</span> fourth-type/eax: (addr int) <span class="Special">&lt;-</span> get fourth, <span class="PreProc">type</span>
<span id="L2573" class="LineNr">2573 </span>    compare *fourth-type, <span class="Constant">1</span>/number
<span id="L2574" class="LineNr">2574 </span>    <span class="PreProc">break-if-=</span>
<span id="L2575" class="LineNr">2575 </span>    <span class="Special"><a href='trace.mu.html#L197'>error</a></span> trace, <span class="Constant">&quot;fourth arg for 'vline' is not a number (<a href='../500fake-screen.mu.html#L16'>screen</a> y coordinate of end point)&quot;</span>
<span id="L2576" class="LineNr">2576 </span>    <span class="PreProc">return</span>
<span id="L2577" class="LineNr">2577 </span>  <span class="Delimiter">}</span>
<span id="L2578" class="LineNr">2578 </span>  <span class="PreProc">var</span> fourth-value/eax: (addr float) <span class="Special">&lt;-</span> get fourth, number-data
<span id="L2579" class="LineNr">2579 </span>  <span class="PreProc">var</span> y2/<span class="muRegEcx">ecx</span>: int <span class="Special">&lt;-</span> convert *fourth-value
<span id="L2580" class="LineNr">2580 </span>  <span class="muComment"># color = rest-&gt;right-&gt;left-&gt;value</span>
<span id="L2581" class="LineNr">2581 </span>  <span class="PreProc">var</span> rest-ah/eax: (addr handle <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> get rest, right
<span id="L2582" class="LineNr">2582 </span>  <span class="PreProc">var</span> _rest/eax: (addr <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> <a href='../120allocate.subx.html#L235'>lookup</a> *rest-ah
<span id="L2583" class="LineNr">2583 </span>  rest <span class="Special">&lt;-</span> copy _rest
<span id="L2584" class="LineNr">2584 </span>  <span class="Delimiter">{</span>
<span id="L2585" class="LineNr">2585 </span>    <span class="PreProc">var</span> rest-type/eax: (addr int) <span class="Special">&lt;-</span> get rest, <span class="PreProc">type</span>
<span id="L2586" class="LineNr">2586 </span>    compare *rest-type, <span class="Constant">0</span>/pair
<span id="L2587" class="LineNr">2587 </span>    <span class="PreProc">break-if-=</span>
<span id="L2588" class="LineNr">2588 </span>    <span class="Special"><a href='trace.mu.html#L197'>error</a></span> trace, <span class="Constant">&quot;'vline' encountered non-pair&quot;</span>
<span id="L2589" class="LineNr">2589 </span>    <span class="PreProc">return</span>
<span id="L2590" class="LineNr">2590 </span>  <span class="Delimiter">}</span>
<span id="L2591" class="LineNr">2591 </span>  <span class="Delimiter">{</span>
<span id="L2592" class="LineNr">2592 </span>    <span class="PreProc">var</span> rest-nil?/eax: boolean <span class="Special">&lt;-</span> <a href='print.mu.html#L390'>nil?</a> rest
<span id="L2593" class="LineNr">2593 </span>    compare rest-nil?, <span class="Constant">0</span>/false
<span id="L2594" class="LineNr">2594 </span>    <span class="PreProc">break-if-=</span>
<span id="L2595" class="LineNr">2595 </span>    <span class="Special"><a href='trace.mu.html#L197'>error</a></span> trace, <span class="Constant">&quot;'vline' needs 5 args but got 5&quot;</span>
<span id="L2596" class="LineNr">2596 </span>    <span class="PreProc">return</span>
<span id="L2597" class="LineNr">2597 </span>  <span class="Delimiter">}</span>
<span id="L2598" class="LineNr">2598 </span>  <span class="PreProc">var</span> fifth-ah/eax: (addr handle <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> get rest, left
<span id="L2599" class="LineNr">2599 </span>  <span class="PreProc">var</span> fifth/eax: (addr <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> <a href='../120allocate.subx.html#L235'>lookup</a> *fifth-ah
<span id="L2600" class="LineNr">2600 </span>  <span class="Delimiter">{</span>
<span id="L2601" class="LineNr">2601 </span>    <span class="PreProc">var</span> fifth-type/eax: (addr int) <span class="Special">&lt;-</span> get fifth, <span class="PreProc">type</span>
<span id="L2602" class="LineNr">2602 </span>    compare *fifth-type, <span class="Constant">1</span>/number
<span id="L2603" class="LineNr">2603 </span>    <span class="PreProc">break-if-=</span>
<span id="L2604" class="LineNr">2604 </span>    <span class="Special"><a href='trace.mu.html#L197'>error</a></span> trace, <span class="Constant">&quot;fifth arg for 'vline' is not an int (color; 0..0xff)&quot;</span>
<span id="L2605" class="LineNr">2605 </span>    <span class="PreProc">return</span>
<span id="L2606" class="LineNr">2606 </span>  <span class="Delimiter">}</span>
<span id="L2607" class="LineNr">2607 </span>  <span class="PreProc">var</span> fifth-value/eax: (addr float) <span class="Special">&lt;-</span> get fifth, number-data
<span id="L2608" class="LineNr">2608 </span>  <span class="PreProc">var</span> color/eax: int <span class="Special">&lt;-</span> convert *fifth-value
<span id="L2609" class="LineNr">2609 </span>  <a href='../507line.mu.html#L75'>draw-vertical-line</a> <a href='../500fake-screen.mu.html#L16'>screen</a>, x, y1, y2, color
<span id="L2610" class="LineNr">2610 </span>  <span class="muComment"># return nothing</span>
<span id="L2611" class="LineNr">2611 </span><span class="Delimiter">}</span>
<span id="L2612" class="LineNr">2612 </span>
<span id="L2613" class="LineNr">2613 </span><span class="PreProc">fn</span> <span class="muFunction"><a href='primitives.mu.html#L2613'>apply-circle</a></span> _args-ah: (addr handle <a href='cell.mu.html#L1'>cell</a>), out: (addr handle <a href='cell.mu.html#L1'>cell</a>), trace: (addr trace) <span class="Delimiter">{</span>
<span id="L2614" class="LineNr">2614 </span>  <a href='trace.mu.html#L185'>trace-text</a> trace, <span class="Constant">&quot;eval&quot;</span>, <span class="Constant">&quot;apply 'circle'&quot;</span>
<span id="L2615" class="LineNr">2615 </span>  <span class="PreProc">var</span> args-ah/eax: (addr handle <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> copy _args-ah
<span id="L2616" class="LineNr">2616 </span>  <span class="PreProc">var</span> _args/eax: (addr <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> <a href='../120allocate.subx.html#L235'>lookup</a> *args-ah
<span id="L2617" class="LineNr">2617 </span>  <span class="PreProc">var</span> args/<span class="muRegEsi">esi</span>: (addr <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> copy _args
<span id="L2618" class="LineNr">2618 </span>  <span class="Delimiter">{</span>
<span id="L2619" class="LineNr">2619 </span>    <span class="PreProc">var</span> args-type/eax: (addr int) <span class="Special">&lt;-</span> get args, <span class="PreProc">type</span>
<span id="L2620" class="LineNr">2620 </span>    compare *args-type, <span class="Constant">0</span>/pair
<span id="L2621" class="LineNr">2621 </span>    <span class="PreProc">break-if-=</span>
<span id="L2622" class="LineNr">2622 </span>    <span class="Special"><a href='trace.mu.html#L197'>error</a></span> trace, <span class="Constant">&quot;args to 'circle' are not a list&quot;</span>
<span id="L2623" class="LineNr">2623 </span>    <span class="PreProc">return</span>
<span id="L2624" class="LineNr">2624 </span>  <span class="Delimiter">}</span>
<span id="L2625" class="LineNr">2625 </span>  <span class="PreProc">var</span> empty-args?/eax: boolean <span class="Special">&lt;-</span> <a href='print.mu.html#L390'>nil?</a> args
<span id="L2626" class="LineNr">2626 </span>  compare empty-args?, <span class="Constant">0</span>/false
<span id="L2627" class="LineNr">2627 </span>  <span class="Delimiter">{</span>
<span id="L2628" class="LineNr">2628 </span>    <span class="PreProc">break-if-=</span>
<span id="L2629" class="LineNr">2629 </span>    <span class="Special"><a href='trace.mu.html#L197'>error</a></span> trace, <span class="Constant">&quot;'circle' needs 5 args but got 0&quot;</span>
<span id="L2630" class="LineNr">2630 </span>    <span class="PreProc">return</span>
<span id="L2631" class="LineNr">2631 </span>  <span class="Delimiter">}</span>
<span id="L2632" class="LineNr">2632 </span>  <span class="muComment"># screen = args-&gt;left</span>
<span id="L2633" class="LineNr">2633 </span>  <span class="PreProc">var</span> first-ah/eax: (addr handle <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> get args, left
<span id="L2634" class="LineNr">2634 </span>  <span class="PreProc">var</span> first/eax: (addr <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> <a href='../120allocate.subx.html#L235'>lookup</a> *first-ah
<span id="L2635" class="LineNr">2635 </span>  <span class="Delimiter">{</span>
<span id="L2636" class="LineNr">2636 </span>    <span class="PreProc">var</span> first-type/eax: (addr int) <span class="Special">&lt;-</span> get first, <span class="PreProc">type</span>
<span id="L2637" class="LineNr">2637 </span>    compare *first-type, <span class="Constant">5</span>/screen
<span id="L2638" class="LineNr">2638 </span>    <span class="PreProc">break-if-=</span>
<span id="L2639" class="LineNr">2639 </span>    <span class="Special"><a href='trace.mu.html#L197'>error</a></span> trace, <span class="Constant">&quot;first arg for 'circle' is not a screen&quot;</span>
<span id="L2640" class="LineNr">2640 </span>    <span class="PreProc">return</span>
<span id="L2641" class="LineNr">2641 </span>  <span class="Delimiter">}</span>
<span id="L2642" class="LineNr">2642 </span>  <span class="PreProc">var</span> screen-ah/eax: (addr handle <a href='../500fake-screen.mu.html#L16'>screen</a>) <span class="Special">&lt;-</span> get first, screen-data
<span id="L2643" class="LineNr">2643 </span>  <span class="PreProc">var</span> _screen/eax: (addr <a href='../500fake-screen.mu.html#L16'>screen</a>) <span class="Special">&lt;-</span> <a href='../120allocate.subx.html#L235'>lookup</a> *screen-ah
<span id="L2644" class="LineNr">2644 </span>  <span class="PreProc">var</span> <a href='../500fake-screen.mu.html#L16'>screen</a>/<span class="muRegEdi">edi</span>: (addr <a href='../500fake-screen.mu.html#L16'>screen</a>) <span class="Special">&lt;-</span> copy _screen
<span id="L2645" class="LineNr">2645 </span>  <span class="muComment"># cx = args-&gt;right-&gt;left-&gt;value</span>
<span id="L2646" class="LineNr">2646 </span>  <span class="PreProc">var</span> rest-ah/eax: (addr handle <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> get args, right
<span id="L2647" class="LineNr">2647 </span>  <span class="PreProc">var</span> _rest/eax: (addr <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> <a href='../120allocate.subx.html#L235'>lookup</a> *rest-ah
<span id="L2648" class="LineNr">2648 </span>  <span class="PreProc">var</span> rest/<span class="muRegEsi">esi</span>: (addr <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> copy _rest
<span id="L2649" class="LineNr">2649 </span>  <span class="Delimiter">{</span>
<span id="L2650" class="LineNr">2650 </span>    <span class="PreProc">var</span> rest-type/eax: (addr int) <span class="Special">&lt;-</span> get rest, <span class="PreProc">type</span>
<span id="L2651" class="LineNr">2651 </span>    compare *rest-type, <span class="Constant">0</span>/pair
<span id="L2652" class="LineNr">2652 </span>    <span class="PreProc">break-if-=</span>
<span id="L2653" class="LineNr">2653 </span>    <span class="Special"><a href='trace.mu.html#L197'>error</a></span> trace, <span class="Constant">&quot;'circle' encountered non-pair&quot;</span>
<span id="L2654" class="LineNr">2654 </span>    <span class="PreProc">return</span>
<span id="L2655" class="LineNr">2655 </span>  <span class="Delimiter">}</span>
<span id="L2656" class="LineNr">2656 </span>  <span class="Delimiter">{</span>
<span id="L2657" class="LineNr">2657 </span>    <span class="PreProc">var</span> rest-nil?/eax: boolean <span class="Special">&lt;-</span> <a href='print.mu.html#L390'>nil?</a> rest
<span id="L2658" class="LineNr">2658 </span>    compare rest-nil?, <span class="Constant">0</span>/false
<span id="L2659" class="LineNr">2659 </span>    <span class="PreProc">break-if-=</span>
<span id="L2660" class="LineNr">2660 </span>    <span class="Special"><a href='trace.mu.html#L197'>error</a></span> trace, <span class="Constant">&quot;'circle' needs 5 args but got 1&quot;</span>
<span id="L2661" class="LineNr">2661 </span>    <span class="PreProc">return</span>
<span id="L2662" class="LineNr">2662 </span>  <span class="Delimiter">}</span>
<span id="L2663" class="LineNr">2663 </span>  <span class="PreProc">var</span> second-ah/eax: (addr handle <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> get rest, left
<span id="L2664" class="LineNr">2664 </span>  <span class="PreProc">var</span> second/eax: (addr <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> <a href='../120allocate.subx.html#L235'>lookup</a> *second-ah
<span id="L2665" class="LineNr">2665 </span>  <span class="Delimiter">{</span>
<span id="L2666" class="LineNr">2666 </span>    <span class="PreProc">var</span> second-type/eax: (addr int) <span class="Special">&lt;-</span> get second, <span class="PreProc">type</span>
<span id="L2667" class="LineNr">2667 </span>    compare *second-type, <span class="Constant">1</span>/number
<span id="L2668" class="LineNr">2668 </span>    <span class="PreProc">break-if-=</span>
<span id="L2669" class="LineNr">2669 </span>    <span class="Special"><a href='trace.mu.html#L197'>error</a></span> trace, <span class="Constant">&quot;second arg for 'circle' is not a number (<a href='../500fake-screen.mu.html#L16'>screen</a> x coordinate of center)&quot;</span>
<span id="L2670" class="LineNr">2670 </span>    <span class="PreProc">return</span>
<span id="L2671" class="LineNr">2671 </span>  <span class="Delimiter">}</span>
<span id="L2672" class="LineNr">2672 </span>  <span class="PreProc">var</span> second-value/eax: (addr float) <span class="Special">&lt;-</span> get second, number-data
<span id="L2673" class="LineNr">2673 </span>  <span class="PreProc">var</span> cx/<span class="muRegEdx">edx</span>: int <span class="Special">&lt;-</span> convert *second-value
<span id="L2674" class="LineNr">2674 </span>  <span class="muComment"># cy = rest-&gt;right-&gt;left-&gt;value</span>
<span id="L2675" class="LineNr">2675 </span>  <span class="PreProc">var</span> rest-ah/eax: (addr handle <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> get rest, right
<span id="L2676" class="LineNr">2676 </span>  <span class="PreProc">var</span> _rest/eax: (addr <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> <a href='../120allocate.subx.html#L235'>lookup</a> *rest-ah
<span id="L2677" class="LineNr">2677 </span>  rest <span class="Special">&lt;-</span> copy _rest
<span id="L2678" class="LineNr">2678 </span>  <span class="Delimiter">{</span>
<span id="L2679" class="LineNr">2679 </span>    <span class="PreProc">var</span> rest-type/eax: (addr int) <span class="Special">&lt;-</span> get rest, <span class="PreProc">type</span>
<span id="L2680" class="LineNr">2680 </span>    compare *rest-type, <span class="Constant">0</span>/pair
<span id="L2681" class="LineNr">2681 </span>    <span class="PreProc">break-if-=</span>
<span id="L2682" class="LineNr">2682 </span>    <span class="Special"><a href='trace.mu.html#L197'>error</a></span> trace, <span class="Constant">&quot;'circle' encountered non-pair&quot;</span>
<span id="L2683" class="LineNr">2683 </span>    <span class="PreProc">return</span>
<span id="L2684" class="LineNr">2684 </span>  <span class="Delimiter">}</span>
<span id="L2685" class="LineNr">2685 </span>  <span class="Delimiter">{</span>
<span id="L2686" class="LineNr">2686 </span>    <span class="PreProc">var</span> rest-nil?/eax: boolean <span class="Special">&lt;-</span> <a href='print.mu.html#L390'>nil?</a> rest
<span id="L2687" class="LineNr">2687 </span>    compare rest-nil?, <span class="Constant">0</span>/false
<span id="L2688" class="LineNr">2688 </span>    <span class="PreProc">break-if-=</span>
<span id="L2689" class="LineNr">2689 </span>    <span class="Special"><a href='trace.mu.html#L197'>error</a></span> trace, <span class="Constant">&quot;'circle' needs 5 args but got 2&quot;</span>
<span id="L2690" class="LineNr">2690 </span>    <span class="PreProc">return</span>
<span id="L2691" class="LineNr">2691 </span>  <span class="Delimiter">}</span>
<span id="L2692" class="LineNr">2692 </span>  <span class="PreProc">var</span> third-ah/eax: (addr handle <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> get rest, left
<span id="L2693" class="LineNr">2693 </span>  <span class="PreProc">var</span> third/eax: (addr <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> <a href='../120allocate.subx.html#L235'>lookup</a> *third-ah
<span id="L2694" class="LineNr">2694 </span>  <span class="Delimiter">{</span>
<span id="L2695" class="LineNr">2695 </span>    <span class="PreProc">var</span> third-type/eax: (addr int) <span class="Special">&lt;-</span> get third, <span class="PreProc">type</span>
<span id="L2696" class="LineNr">2696 </span>    compare *third-type, <span class="Constant">1</span>/number
<span id="L2697" class="LineNr">2697 </span>    <span class="PreProc">break-if-=</span>
<span id="L2698" class="LineNr">2698 </span>    <span class="Special"><a href='trace.mu.html#L197'>error</a></span> trace, <span class="Constant">&quot;third arg for 'circle' is not a number (<a href='../500fake-screen.mu.html#L16'>screen</a> y coordinate of center)&quot;</span>
<span id="L2699" class="LineNr">2699 </span>    <span class="PreProc">return</span>
<span id="L2700" class="LineNr">2700 </span>  <span class="Delimiter">}</span>
<span id="L2701" class="LineNr">2701 </span>  <span class="PreProc">var</span> third-value/eax: (addr float) <span class="Special">&lt;-</span> get third, number-data
<span id="L2702" class="LineNr">2702 </span>  <span class="PreProc">var</span> cy/<span class="muRegEbx">ebx</span>: int <span class="Special">&lt;-</span> convert *third-value
<span id="L2703" class="LineNr">2703 </span>  <span class="muComment"># r = rest-&gt;right-&gt;left-&gt;value</span>
<span id="L2704" class="LineNr">2704 </span>  <span class="PreProc">var</span> rest-ah/eax: (addr handle <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> get rest, right
<span id="L2705" class="LineNr">2705 </span>  <span class="PreProc">var</span> _rest/eax: (addr <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> <a href='../120allocate.subx.html#L235'>lookup</a> *rest-ah
<span id="L2706" class="LineNr">2706 </span>  <span class="PreProc">var</span> rest/<span class="muRegEsi">esi</span>: (addr <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> copy _rest
<span id="L2707" class="LineNr">2707 </span>  <span class="Delimiter">{</span>
<span id="L2708" class="LineNr">2708 </span>    <span class="PreProc">var</span> rest-type/eax: (addr int) <span class="Special">&lt;-</span> get rest, <span class="PreProc">type</span>
<span id="L2709" class="LineNr">2709 </span>    compare *rest-type, <span class="Constant">0</span>/pair
<span id="L2710" class="LineNr">2710 </span>    <span class="PreProc">break-if-=</span>
<span id="L2711" class="LineNr">2711 </span>    <span class="Special"><a href='trace.mu.html#L197'>error</a></span> trace, <span class="Constant">&quot;'circle' encountered non-pair&quot;</span>
<span id="L2712" class="LineNr">2712 </span>    <span class="PreProc">return</span>
<span id="L2713" class="LineNr">2713 </span>  <span class="Delimiter">}</span>
<span id="L2714" class="LineNr">2714 </span>  <span class="Delimiter">{</span>
<span id="L2715" class="LineNr">2715 </span>    <span class="PreProc">var</span> rest-nil?/eax: boolean <span class="Special">&lt;-</span> <a href='print.mu.html#L390'>nil?</a> rest
<span id="L2716" class="LineNr">2716 </span>    compare rest-nil?, <span class="Constant">0</span>/false
<span id="L2717" class="LineNr">2717 </span>    <span class="PreProc">break-if-=</span>
<span id="L2718" class="LineNr">2718 </span>    <span class="Special"><a href='trace.mu.html#L197'>error</a></span> trace, <span class="Constant">&quot;'circle' needs 5 args but got 3&quot;</span>
<span id="L2719" class="LineNr">2719 </span>    <span class="PreProc">return</span>
<span id="L2720" class="LineNr">2720 </span>  <span class="Delimiter">}</span>
<span id="L2721" class="LineNr">2721 </span>  <span class="PreProc">var</span> fourth-ah/eax: (addr handle <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> get rest, left
<span id="L2722" class="LineNr">2722 </span>  <span class="PreProc">var</span> fourth/eax: (addr <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> <a href='../120allocate.subx.html#L235'>lookup</a> *fourth-ah
<span id="L2723" class="LineNr">2723 </span>  <span class="Delimiter">{</span>
<span id="L2724" class="LineNr">2724 </span>    <span class="PreProc">var</span> fourth-type/eax: (addr int) <span class="Special">&lt;-</span> get fourth, <span class="PreProc">type</span>
<span id="L2725" class="LineNr">2725 </span>    compare *fourth-type, <span class="Constant">1</span>/number
<span id="L2726" class="LineNr">2726 </span>    <span class="PreProc">break-if-=</span>
<span id="L2727" class="LineNr">2727 </span>    <span class="Special"><a href='trace.mu.html#L197'>error</a></span> trace, <span class="Constant">&quot;fourth arg for 'circle' is not a number (<a href='../500fake-screen.mu.html#L16'>screen</a> radius)&quot;</span>
<span id="L2728" class="LineNr">2728 </span>    <span class="PreProc">return</span>
<span id="L2729" class="LineNr">2729 </span>  <span class="Delimiter">}</span>
<span id="L2730" class="LineNr">2730 </span>  <span class="PreProc">var</span> fourth-value/eax: (addr float) <span class="Special">&lt;-</span> get fourth, number-data
<span id="L2731" class="LineNr">2731 </span>  <span class="PreProc">var</span> r/<span class="muRegEcx">ecx</span>: int <span class="Special">&lt;-</span> convert *fourth-value
<span id="L2732" class="LineNr">2732 </span>  <span class="muComment"># color = rest-&gt;right-&gt;left-&gt;value</span>
<span id="L2733" class="LineNr">2733 </span>  <span class="PreProc">var</span> rest-ah/eax: (addr handle <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> get rest, right
<span id="L2734" class="LineNr">2734 </span>  <span class="PreProc">var</span> _rest/eax: (addr <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> <a href='../120allocate.subx.html#L235'>lookup</a> *rest-ah
<span id="L2735" class="LineNr">2735 </span>  rest <span class="Special">&lt;-</span> copy _rest
<span id="L2736" class="LineNr">2736 </span>  <span class="Delimiter">{</span>
<span id="L2737" class="LineNr">2737 </span>    <span class="PreProc">var</span> rest-type/eax: (addr int) <span class="Special">&lt;-</span> get rest, <span class="PreProc">type</span>
<span id="L2738" class="LineNr">2738 </span>    compare *rest-type, <span class="Constant">0</span>/pair
<span id="L2739" class="LineNr">2739 </span>    <span class="PreProc">break-if-=</span>
<span id="L2740" class="LineNr">2740 </span>    <span class="Special"><a href='trace.mu.html#L197'>error</a></span> trace, <span class="Constant">&quot;'circle' encountered non-pair&quot;</span>
<span id="L2741" class="LineNr">2741 </span>    <span class="PreProc">return</span>
<span id="L2742" class="LineNr">2742 </span>  <span class="Delimiter">}</span>
<span id="L2743" class="LineNr">2743 </span>  <span class="Delimiter">{</span>
<span id="L2744" class="LineNr">2744 </span>    <span class="PreProc">var</span> rest-nil?/eax: boolean <span class="Special">&lt;-</span> <a href='print.mu.html#L390'>nil?</a> rest
<span id="L2745" class="LineNr">2745 </span>    compare rest-nil?, <span class="Constant">0</span>/false
<span id="L2746" class="LineNr">2746 </span>    <span class="PreProc">break-if-=</span>
<span id="L2747" class="LineNr">2747 </span>    <span class="Special"><a href='trace.mu.html#L197'>error</a></span> trace, <span class="Constant">&quot;'circle' needs 5 args but got 5&quot;</span>
<span id="L2748" class="LineNr">2748 </span>    <span class="PreProc">return</span>
<span id="L2749" class="LineNr">2749 </span>  <span class="Delimiter">}</span>
<span id="L2750" class="LineNr">2750 </span>  <span class="PreProc">var</span> fifth-ah/eax: (addr handle <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> get rest, left
<span id="L2751" class="LineNr">2751 </span>  <span class="PreProc">var</span> fifth/eax: (addr <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> <a href='../120allocate.subx.html#L235'>lookup</a> *fifth-ah
<span id="L2752" class="LineNr">2752 </span>  <span class="Delimiter">{</span>
<span id="L2753" class="LineNr">2753 </span>    <span class="PreProc">var</span> fifth-type/eax: (addr int) <span class="Special">&lt;-</span> get fifth, <span class="PreProc">type</span>
<span id="L2754" class="LineNr">2754 </span>    compare *fifth-type, <span class="Constant">1</span>/number
<span id="L2755" class="LineNr">2755 </span>    <span class="PreProc">break-if-=</span>
<span id="L2756" class="LineNr">2756 </span>    <span class="Special"><a href='trace.mu.html#L197'>error</a></span> trace, <span class="Constant">&quot;fifth arg for 'circle' is not an int (color; 0..0xff)&quot;</span>
<span id="L2757" class="LineNr">2757 </span>    <span class="PreProc">return</span>
<span id="L2758" class="LineNr">2758 </span>  <span class="Delimiter">}</span>
<span id="L2759" class="LineNr">2759 </span>  <span class="PreProc">var</span> fifth-value/eax: (addr float) <span class="Special">&lt;-</span> get fifth, number-data
<span id="L2760" class="LineNr">2760 </span>  <span class="PreProc">var</span> color/eax: int <span class="Special">&lt;-</span> convert *fifth-value
<span id="L2761" class="LineNr">2761 </span>  <a href='../508circle.mu.html#L1'>draw-circle</a> <a href='../500fake-screen.mu.html#L16'>screen</a>, cx, cy, r, color
<span id="L2762" class="LineNr">2762 </span>  <span class="muComment"># return nothing</span>
<span id="L2763" class="LineNr">2763 </span><span class="Delimiter">}</span>
<span id="L2764" class="LineNr">2764 </span>
<span id="L2765" class="LineNr">2765 </span><span class="PreProc">fn</span> <span class="muFunction"><a href='primitives.mu.html#L2765'>apply-bezier</a></span> _args-ah: (addr handle <a href='cell.mu.html#L1'>cell</a>), out: (addr handle <a href='cell.mu.html#L1'>cell</a>), trace: (addr trace) <span class="Delimiter">{</span>
<span id="L2766" class="LineNr">2766 </span>  <a href='trace.mu.html#L185'>trace-text</a> trace, <span class="Constant">&quot;eval&quot;</span>, <span class="Constant">&quot;apply 'bezier'&quot;</span>
<span id="L2767" class="LineNr">2767 </span>  <span class="PreProc">var</span> args-ah/eax: (addr handle <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> copy _args-ah
<span id="L2768" class="LineNr">2768 </span>  <span class="PreProc">var</span> _args/eax: (addr <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> <a href='../120allocate.subx.html#L235'>lookup</a> *args-ah
<span id="L2769" class="LineNr">2769 </span>  <span class="PreProc">var</span> args/<span class="muRegEsi">esi</span>: (addr <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> copy _args
<span id="L2770" class="LineNr">2770 </span>  <span class="Delimiter">{</span>
<span id="L2771" class="LineNr">2771 </span>    <span class="PreProc">var</span> args-type/eax: (addr int) <span class="Special">&lt;-</span> get args, <span class="PreProc">type</span>
<span id="L2772" class="LineNr">2772 </span>    compare *args-type, <span class="Constant">0</span>/pair
<span id="L2773" class="LineNr">2773 </span>    <span class="PreProc">break-if-=</span>
<span id="L2774" class="LineNr">2774 </span>    <span class="Special"><a href='trace.mu.html#L197'>error</a></span> trace, <span class="Constant">&quot;args to 'bezier' are not a list&quot;</span>
<span id="L2775" class="LineNr">2775 </span>    <span class="PreProc">return</span>
<span id="L2776" class="LineNr">2776 </span>  <span class="Delimiter">}</span>
<span id="L2777" class="LineNr">2777 </span>  <span class="PreProc">var</span> empty-args?/eax: boolean <span class="Special">&lt;-</span> <a href='print.mu.html#L390'>nil?</a> args
<span id="L2778" class="LineNr">2778 </span>  compare empty-args?, <span class="Constant">0</span>/false
<span id="L2779" class="LineNr">2779 </span>  <span class="Delimiter">{</span>
<span id="L2780" class="LineNr">2780 </span>    <span class="PreProc">break-if-=</span>
<span id="L2781" class="LineNr">2781 </span>    <span class="Special"><a href='trace.mu.html#L197'>error</a></span> trace, <span class="Constant">&quot;'bezier' needs 8 args but got 0&quot;</span>
<span id="L2782" class="LineNr">2782 </span>    <span class="PreProc">return</span>
<span id="L2783" class="LineNr">2783 </span>  <span class="Delimiter">}</span>
<span id="L2784" class="LineNr">2784 </span>  <span class="muComment"># screen = args-&gt;left</span>
<span id="L2785" class="LineNr">2785 </span>  <span class="PreProc">var</span> first-ah/eax: (addr handle <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> get args, left
<span id="L2786" class="LineNr">2786 </span>  <span class="PreProc">var</span> first/eax: (addr <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> <a href='../120allocate.subx.html#L235'>lookup</a> *first-ah
<span id="L2787" class="LineNr">2787 </span>  <span class="Delimiter">{</span>
<span id="L2788" class="LineNr">2788 </span>    <span class="PreProc">var</span> first-type/eax: (addr int) <span class="Special">&lt;-</span> get first, <span class="PreProc">type</span>
<span id="L2789" class="LineNr">2789 </span>    compare *first-type, <span class="Constant">5</span>/screen
<span id="L2790" class="LineNr">2790 </span>    <span class="PreProc">break-if-=</span>
<span id="L2791" class="LineNr">2791 </span>    <span class="Special"><a href='trace.mu.html#L197'>error</a></span> trace, <span class="Constant">&quot;first arg for 'bezier' is not a screen&quot;</span>
<span id="L2792" class="LineNr">2792 </span>    <span class="PreProc">return</span>
<span id="L2793" class="LineNr">2793 </span>  <span class="Delimiter">}</span>
<span id="L2794" class="LineNr">2794 </span>  <span class="PreProc">var</span> screen-ah/eax: (addr handle <a href='../500fake-screen.mu.html#L16'>screen</a>) <span class="Special">&lt;-</span> get first, screen-data
<span id="L2795" class="LineNr">2795 </span>  <span class="PreProc">var</span> _screen/eax: (addr <a href='../500fake-screen.mu.html#L16'>screen</a>) <span class="Special">&lt;-</span> <a href='../120allocate.subx.html#L235'>lookup</a> *screen-ah
<span id="L2796" class="LineNr">2796 </span>  <span class="PreProc">var</span> <a href='../500fake-screen.mu.html#L16'>screen</a>/<span class="muRegEdi">edi</span>: (addr <a href='../500fake-screen.mu.html#L16'>screen</a>) <span class="Special">&lt;-</span> copy _screen
<span id="L2797" class="LineNr">2797 </span>  <span class="muComment"># x0 = args-&gt;right-&gt;left-&gt;value</span>
<span id="L2798" class="LineNr">2798 </span>  <span class="PreProc">var</span> rest-ah/eax: (addr handle <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> get args, right
<span id="L2799" class="LineNr">2799 </span>  <span class="PreProc">var</span> _rest/eax: (addr <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> <a href='../120allocate.subx.html#L235'>lookup</a> *rest-ah
<span id="L2800" class="LineNr">2800 </span>  <span class="PreProc">var</span> rest/<span class="muRegEsi">esi</span>: (addr <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> copy _rest
<span id="L2801" class="LineNr">2801 </span>  <span class="Delimiter">{</span>
<span id="L2802" class="LineNr">2802 </span>    <span class="PreProc">var</span> rest-type/eax: (addr int) <span class="Special">&lt;-</span> get rest, <span class="PreProc">type</span>
<span id="L2803" class="LineNr">2803 </span>    compare *rest-type, <span class="Constant">0</span>/pair
<span id="L2804" class="LineNr">2804 </span>    <span class="PreProc">break-if-=</span>
<span id="L2805" class="LineNr">2805 </span>    <span class="Special"><a href='trace.mu.html#L197'>error</a></span> trace, <span class="Constant">&quot;'bezier' encountered non-pair&quot;</span>
<span id="L2806" class="LineNr">2806 </span>    <span class="PreProc">return</span>
<span id="L2807" class="LineNr">2807 </span>  <span class="Delimiter">}</span>
<span id="L2808" class="LineNr">2808 </span>  <span class="Delimiter">{</span>
<span id="L2809" class="LineNr">2809 </span>    <span class="PreProc">var</span> rest-nil?/eax: boolean <span class="Special">&lt;-</span> <a href='print.mu.html#L390'>nil?</a> rest
<span id="L2810" class="LineNr">2810 </span>    compare rest-nil?, <span class="Constant">0</span>/false
<span id="L2811" class="LineNr">2811 </span>    <span class="PreProc">break-if-=</span>
<span id="L2812" class="LineNr">2812 </span>    <span class="Special"><a href='trace.mu.html#L197'>error</a></span> trace, <span class="Constant">&quot;'bezier' needs 8 args but got 1&quot;</span>
<span id="L2813" class="LineNr">2813 </span>    <span class="PreProc">return</span>
<span id="L2814" class="LineNr">2814 </span>  <span class="Delimiter">}</span>
<span id="L2815" class="LineNr">2815 </span>  <span class="PreProc">var</span> second-ah/eax: (addr handle <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> get rest, left
<span id="L2816" class="LineNr">2816 </span>  <span class="PreProc">var</span> second/eax: (addr <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> <a href='../120allocate.subx.html#L235'>lookup</a> *second-ah
<span id="L2817" class="LineNr">2817 </span>  <span class="Delimiter">{</span>
<span id="L2818" class="LineNr">2818 </span>    <span class="PreProc">var</span> second-type/eax: (addr int) <span class="Special">&lt;-</span> get second, <span class="PreProc">type</span>
<span id="L2819" class="LineNr">2819 </span>    compare *second-type, <span class="Constant">1</span>/number
<span id="L2820" class="LineNr">2820 </span>    <span class="PreProc">break-if-=</span>
<span id="L2821" class="LineNr">2821 </span>    <span class="Special"><a href='trace.mu.html#L197'>error</a></span> trace, <span class="Constant">&quot;second arg for 'bezier' is not a number (<a href='../500fake-screen.mu.html#L16'>screen</a> x coordinate of start point)&quot;</span>
<span id="L2822" class="LineNr">2822 </span>    <span class="PreProc">return</span>
<span id="L2823" class="LineNr">2823 </span>  <span class="Delimiter">}</span>
<span id="L2824" class="LineNr">2824 </span>  <span class="PreProc">var</span> second-value/eax: (addr float) <span class="Special">&lt;-</span> get second, number-data
<span id="L2825" class="LineNr">2825 </span>  <span class="PreProc">var</span> x0/<span class="muRegEdx">edx</span>: int <span class="Special">&lt;-</span> convert *second-value
<span id="L2826" class="LineNr">2826 </span>  <span class="muComment"># y0 = rest-&gt;right-&gt;left-&gt;value</span>
<span id="L2827" class="LineNr">2827 </span>  <span class="PreProc">var</span> rest-ah/eax: (addr handle <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> get rest, right
<span id="L2828" class="LineNr">2828 </span>  <span class="PreProc">var</span> _rest/eax: (addr <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> <a href='../120allocate.subx.html#L235'>lookup</a> *rest-ah
<span id="L2829" class="LineNr">2829 </span>  rest <span class="Special">&lt;-</span> copy _rest
<span id="L2830" class="LineNr">2830 </span>  <span class="Delimiter">{</span>
<span id="L2831" class="LineNr">2831 </span>    <span class="PreProc">var</span> rest-type/eax: (addr int) <span class="Special">&lt;-</span> get rest, <span class="PreProc">type</span>
<span id="L2832" class="LineNr">2832 </span>    compare *rest-type, <span class="Constant">0</span>/pair
<span id="L2833" class="LineNr">2833 </span>    <span class="PreProc">break-if-=</span>
<span id="L2834" class="LineNr">2834 </span>    <span class="Special"><a href='trace.mu.html#L197'>error</a></span> trace, <span class="Constant">&quot;'bezier' encountered non-pair&quot;</span>
<span id="L2835" class="LineNr">2835 </span>    <span class="PreProc">return</span>
<span id="L2836" class="LineNr">2836 </span>  <span class="Delimiter">}</span>
<span id="L2837" class="LineNr">2837 </span>  <span class="Delimiter">{</span>
<span id="L2838" class="LineNr">2838 </span>    <span class="PreProc">var</span> rest-nil?/eax: boolean <span class="Special">&lt;-</span> <a href='print.mu.html#L390'>nil?</a> rest
<span id="L2839" class="LineNr">2839 </span>    compare rest-nil?, <span class="Constant">0</span>/false
<span id="L2840" class="LineNr">2840 </span>    <span class="PreProc">break-if-=</span>
<span id="L2841" class="LineNr">2841 </span>    <span class="Special"><a href='trace.mu.html#L197'>error</a></span> trace, <span class="Constant">&quot;'bezier' needs 8 args but got 2&quot;</span>
<span id="L2842" class="LineNr">2842 </span>    <span class="PreProc">return</span>
<span id="L2843" class="LineNr">2843 </span>  <span class="Delimiter">}</span>
<span id="L2844" class="LineNr">2844 </span>  <span class="PreProc">var</span> third-ah/eax: (addr handle <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> get rest, left
<span id="L2845" class="LineNr">2845 </span>  <span class="PreProc">var</span> third/eax: (addr <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> <a href='../120allocate.subx.html#L235'>lookup</a> *third-ah
<span id="L2846" class="LineNr">2846 </span>  <span class="Delimiter">{</span>
<span id="L2847" class="LineNr">2847 </span>    <span class="PreProc">var</span> third-type/eax: (addr int) <span class="Special">&lt;-</span> get third, <span class="PreProc">type</span>
<span id="L2848" class="LineNr">2848 </span>    compare *third-type, <span class="Constant">1</span>/number
<span id="L2849" class="LineNr">2849 </span>    <span class="PreProc">break-if-=</span>
<span id="L2850" class="LineNr">2850 </span>    <span class="Special"><a href='trace.mu.html#L197'>error</a></span> trace, <span class="Constant">&quot;third arg for 'bezier' is not a number (<a href='../500fake-screen.mu.html#L16'>screen</a> y coordinate of start point)&quot;</span>
<span id="L2851" class="LineNr">2851 </span>    <span class="PreProc">return</span>
<span id="L2852" class="LineNr">2852 </span>  <span class="Delimiter">}</span>
<span id="L2853" class="LineNr">2853 </span>  <span class="PreProc">var</span> third-value/eax: (addr float) <span class="Special">&lt;-</span> get third, number-data
<span id="L2854" class="LineNr">2854 </span>  <span class="PreProc">var</span> y0/<span class="muRegEbx">ebx</span>: int <span class="Special">&lt;-</span> convert *third-value
<span id="L2855" class="LineNr">2855 </span>  <span class="muComment"># x1 = rest-&gt;right-&gt;left-&gt;value</span>
<span id="L2856" class="LineNr">2856 </span>  <span class="PreProc">var</span> rest-ah/eax: (addr handle <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> get rest, right
<span id="L2857" class="LineNr">2857 </span>  <span class="PreProc">var</span> _rest/eax: (addr <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> <a href='../120allocate.subx.html#L235'>lookup</a> *rest-ah
<span id="L2858" class="LineNr">2858 </span>  <span class="PreProc">var</span> rest/<span class="muRegEsi">esi</span>: (addr <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> copy _rest
<span id="L2859" class="LineNr">2859 </span>  <span class="Delimiter">{</span>
<span id="L2860" class="LineNr">2860 </span>    <span class="PreProc">var</span> rest-type/eax: (addr int) <span class="Special">&lt;-</span> get rest, <span class="PreProc">type</span>
<span id="L2861" class="LineNr">2861 </span>    compare *rest-type, <span class="Constant">0</span>/pair
<span id="L2862" class="LineNr">2862 </span>    <span class="PreProc">break-if-=</span>
<span id="L2863" class="LineNr">2863 </span>    <span class="Special"><a href='trace.mu.html#L197'>error</a></span> trace, <span class="Constant">&quot;'bezier' encountered non-pair&quot;</span>
<span id="L2864" class="LineNr">2864 </span>    <span class="PreProc">return</span>
<span id="L2865" class="LineNr">2865 </span>  <span class="Delimiter">}</span>
<span id="L2866" class="LineNr">2866 </span>  <span class="Delimiter">{</span>
<span id="L2867" class="LineNr">2867 </span>    <span class="PreProc">var</span> rest-nil?/eax: boolean <span class="Special">&lt;-</span> <a href='print.mu.html#L390'>nil?</a> rest
<span id="L2868" class="LineNr">2868 </span>    compare rest-nil?, <span class="Constant">0</span>/false
<span id="L2869" class="LineNr">2869 </span>    <span class="PreProc">break-if-=</span>
<span id="L2870" class="LineNr">2870 </span>    <span class="Special"><a href='trace.mu.html#L197'>error</a></span> trace, <span class="Constant">&quot;'bezier' needs 8 args but got 3&quot;</span>
<span id="L2871" class="LineNr">2871 </span>    <span class="PreProc">return</span>
<span id="L2872" class="LineNr">2872 </span>  <span class="Delimiter">}</span>
<span id="L2873" class="LineNr">2873 </span>  <span class="PreProc">var</span> fourth-ah/eax: (addr handle <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> get rest, left
<span id="L2874" class="LineNr">2874 </span>  <span class="PreProc">var</span> fourth/eax: (addr <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> <a href='../120allocate.subx.html#L235'>lookup</a> *fourth-ah
<span id="L2875" class="LineNr">2875 </span>  <span class="Delimiter">{</span>
<span id="L2876" class="LineNr">2876 </span>    <span class="PreProc">var</span> fourth-type/eax: (addr int) <span class="Special">&lt;-</span> get fourth, <span class="PreProc">type</span>
<span id="L2877" class="LineNr">2877 </span>    compare *fourth-type, <span class="Constant">1</span>/number
<span id="L2878" class="LineNr">2878 </span>    <span class="PreProc">break-if-=</span>
<span id="L2879" class="LineNr">2879 </span>    <span class="Special"><a href='trace.mu.html#L197'>error</a></span> trace, <span class="Constant">&quot;fourth arg for 'bezier' is not a number (<a href='../500fake-screen.mu.html#L16'>screen</a> x coordinate of control point)&quot;</span>
<span id="L2880" class="LineNr">2880 </span>    <span class="PreProc">return</span>
<span id="L2881" class="LineNr">2881 </span>  <span class="Delimiter">}</span>
<span id="L2882" class="LineNr">2882 </span>  <span class="PreProc">var</span> fourth-value/eax: (addr float) <span class="Special">&lt;-</span> get fourth, number-data
<span id="L2883" class="LineNr">2883 </span>  <span class="PreProc">var</span> tmp/eax: int <span class="Special">&lt;-</span> convert *fourth-value
<span id="L2884" class="LineNr">2884 </span>  <span class="PreProc">var</span> x1: int
<span id="L2885" class="LineNr">2885 </span>  copy-to x1, tmp
<span id="L2886" class="LineNr">2886 </span>  <span class="muComment"># y1 = rest-&gt;right-&gt;left-&gt;value</span>
<span id="L2887" class="LineNr">2887 </span>  <span class="PreProc">var</span> rest-ah/eax: (addr handle <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> get rest, right
<span id="L2888" class="LineNr">2888 </span>  <span class="PreProc">var</span> _rest/eax: (addr <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> <a href='../120allocate.subx.html#L235'>lookup</a> *rest-ah
<span id="L2889" class="LineNr">2889 </span>  rest <span class="Special">&lt;-</span> copy _rest
<span id="L2890" class="LineNr">2890 </span>  <span class="Delimiter">{</span>
<span id="L2891" class="LineNr">2891 </span>    <span class="PreProc">var</span> rest-type/eax: (addr int) <span class="Special">&lt;-</span> get rest, <span class="PreProc">type</span>
<span id="L2892" class="LineNr">2892 </span>    compare *rest-type, <span class="Constant">0</span>/pair
<span id="L2893" class="LineNr">2893 </span>    <span class="PreProc">break-if-=</span>
<span id="L2894" class="LineNr">2894 </span>    <span class="Special"><a href='trace.mu.html#L197'>error</a></span> trace, <span class="Constant">&quot;'bezier' encountered non-pair&quot;</span>
<span id="L2895" class="LineNr">2895 </span>    <span class="PreProc">return</span>
<span id="L2896" class="LineNr">2896 </span>  <span class="Delimiter">}</span>
<span id="L2897" class="LineNr">2897 </span>  <span class="Delimiter">{</span>
<span id="L2898" class="LineNr">2898 </span>    <span class="PreProc">var</span> rest-nil?/eax: boolean <span class="Special">&lt;-</span> <a href='print.mu.html#L390'>nil?</a> rest
<span id="L2899" class="LineNr">2899 </span>    compare rest-nil?, <span class="Constant">0</span>/false
<span id="L2900" class="LineNr">2900 </span>    <span class="PreProc">break-if-=</span>
<span id="L2901" class="LineNr">2901 </span>    <span class="Special"><a href='trace.mu.html#L197'>error</a></span> trace, <span class="Constant">&quot;'bezier' needs 8 args but got 4&quot;</span>
<span id="L2902" class="LineNr">2902 </span>    <span class="PreProc">return</span>
<span id="L2903" class="LineNr">2903 </span>  <span class="Delimiter">}</span>
<span id="L2904" class="LineNr">2904 </span>  <span class="PreProc">var</span> fifth-ah/eax: (addr handle <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> get rest, left
<span id="L2905" class="LineNr">2905 </span>  <span class="PreProc">var</span> fifth/eax: (addr <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> <a href='../120allocate.subx.html#L235'>lookup</a> *fifth-ah
<span id="L2906" class="LineNr">2906 </span>  <span class="Delimiter">{</span>
<span id="L2907" class="LineNr">2907 </span>    <span class="PreProc">var</span> fifth-type/eax: (addr int) <span class="Special">&lt;-</span> get fifth, <span class="PreProc">type</span>
<span id="L2908" class="LineNr">2908 </span>    compare *fifth-type, <span class="Constant">1</span>/number
<span id="L2909" class="LineNr">2909 </span>    <span class="PreProc">break-if-=</span>
<span id="L2910" class="LineNr">2910 </span>    <span class="Special"><a href='trace.mu.html#L197'>error</a></span> trace, <span class="Constant">&quot;fifth arg for 'bezier' is not a number (<a href='../500fake-screen.mu.html#L16'>screen</a> y coordinate of control point)&quot;</span>
<span id="L2911" class="LineNr">2911 </span>    <span class="PreProc">return</span>
<span id="L2912" class="LineNr">2912 </span>  <span class="Delimiter">}</span>
<span id="L2913" class="LineNr">2913 </span>  <span class="PreProc">var</span> fifth-value/eax: (addr float) <span class="Special">&lt;-</span> get fifth, number-data
<span id="L2914" class="LineNr">2914 </span>  <span class="PreProc">var</span> tmp/eax: int <span class="Special">&lt;-</span> convert *fifth-value
<span id="L2915" class="LineNr">2915 </span>  <span class="PreProc">var</span> y1: int
<span id="L2916" class="LineNr">2916 </span>  copy-to y1, tmp
<span id="L2917" class="LineNr">2917 </span>  <span class="muComment"># x2 = rest-&gt;right-&gt;left-&gt;value</span>
<span id="L2918" class="LineNr">2918 </span>  <span class="PreProc">var</span> rest-ah/eax: (addr handle <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> get rest, right
<span id="L2919" class="LineNr">2919 </span>  <span class="PreProc">var</span> _rest/eax: (addr <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> <a href='../120allocate.subx.html#L235'>lookup</a> *rest-ah
<span id="L2920" class="LineNr">2920 </span>  <span class="PreProc">var</span> rest/<span class="muRegEsi">esi</span>: (addr <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> copy _rest
<span id="L2921" class="LineNr">2921 </span>  <span class="Delimiter">{</span>
<span id="L2922" class="LineNr">2922 </span>    <span class="PreProc">var</span> rest-type/eax: (addr int) <span class="Special">&lt;-</span> get rest, <span class="PreProc">type</span>
<span id="L2923" class="LineNr">2923 </span>    compare *rest-type, <span class="Constant">0</span>/pair
<span id="L2924" class="LineNr">2924 </span>    <span class="PreProc">break-if-=</span>
<span id="L2925" class="LineNr">2925 </span>    <span class="Special"><a href='trace.mu.html#L197'>error</a></span> trace, <span class="Constant">&quot;'bezier' encountered non-pair&quot;</span>
<span id="L2926" class="LineNr">2926 </span>    <span class="PreProc">return</span>
<span id="L2927" class="LineNr">2927 </span>  <span class="Delimiter">}</span>
<span id="L2928" class="LineNr">2928 </span>  <span class="Delimiter">{</span>
<span id="L2929" class="LineNr">2929 </span>    <span class="PreProc">var</span> rest-nil?/eax: boolean <span class="Special">&lt;-</span> <a href='print.mu.html#L390'>nil?</a> rest
<span id="L2930" class="LineNr">2930 </span>    compare rest-nil?, <span class="Constant">0</span>/false
<span id="L2931" class="LineNr">2931 </span>    <span class="PreProc">break-if-=</span>
<span id="L2932" class="LineNr">2932 </span>    <span class="Special"><a href='trace.mu.html#L197'>error</a></span> trace, <span class="Constant">&quot;'bezier' needs 8 args but got 3&quot;</span>
<span id="L2933" class="LineNr">2933 </span>    <span class="PreProc">return</span>
<span id="L2934" class="LineNr">2934 </span>  <span class="Delimiter">}</span>
<span id="L2935" class="LineNr">2935 </span>  <span class="PreProc">var</span> sixth-ah/eax: (addr handle <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> get rest, left
<span id="L2936" class="LineNr">2936 </span>  <span class="PreProc">var</span> sixth/eax: (addr <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> <a href='../120allocate.subx.html#L235'>lookup</a> *sixth-ah
<span id="L2937" class="LineNr">2937 </span>  <span class="Delimiter">{</span>
<span id="L2938" class="LineNr">2938 </span>    <span class="PreProc">var</span> sixth-type/eax: (addr int) <span class="Special">&lt;-</span> get sixth, <span class="PreProc">type</span>
<span id="L2939" class="LineNr">2939 </span>    compare *sixth-type, <span class="Constant">1</span>/number
<span id="L2940" class="LineNr">2940 </span>    <span class="PreProc">break-if-=</span>
<span id="L2941" class="LineNr">2941 </span>    <span class="Special"><a href='trace.mu.html#L197'>error</a></span> trace, <span class="Constant">&quot;sixth arg for 'bezier' is not a number (<a href='../500fake-screen.mu.html#L16'>screen</a> x coordinate of end point)&quot;</span>
<span id="L2942" class="LineNr">2942 </span>    <span class="PreProc">return</span>
<span id="L2943" class="LineNr">2943 </span>  <span class="Delimiter">}</span>
<span id="L2944" class="LineNr">2944 </span>  <span class="PreProc">var</span> sixth-value/eax: (addr float) <span class="Special">&lt;-</span> get sixth, number-data
<span id="L2945" class="LineNr">2945 </span>  <span class="PreProc">var</span> tmp/eax: int <span class="Special">&lt;-</span> convert *sixth-value
<span id="L2946" class="LineNr">2946 </span>  <span class="PreProc">var</span> x2: int
<span id="L2947" class="LineNr">2947 </span>  copy-to x2, tmp
<span id="L2948" class="LineNr">2948 </span>  <span class="muComment"># y2 = rest-&gt;right-&gt;left-&gt;value</span>
<span id="L2949" class="LineNr">2949 </span>  <span class="PreProc">var</span> rest-ah/eax: (addr handle <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> get rest, right
<span id="L2950" class="LineNr">2950 </span>  <span class="PreProc">var</span> _rest/eax: (addr <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> <a href='../120allocate.subx.html#L235'>lookup</a> *rest-ah
<span id="L2951" class="LineNr">2951 </span>  rest <span class="Special">&lt;-</span> copy _rest
<span id="L2952" class="LineNr">2952 </span>  <span class="Delimiter">{</span>
<span id="L2953" class="LineNr">2953 </span>    <span class="PreProc">var</span> rest-type/eax: (addr int) <span class="Special">&lt;-</span> get rest, <span class="PreProc">type</span>
<span id="L2954" class="LineNr">2954 </span>    compare *rest-type, <span class="Constant">0</span>/pair
<span id="L2955" class="LineNr">2955 </span>    <span class="PreProc">break-if-=</span>
<span id="L2956" class="LineNr">2956 </span>    <span class="Special"><a href='trace.mu.html#L197'>error</a></span> trace, <span class="Constant">&quot;'bezier' encountered non-pair&quot;</span>
<span id="L2957" class="LineNr">2957 </span>    <span class="PreProc">return</span>
<span id="L2958" class="LineNr">2958 </span>  <span class="Delimiter">}</span>
<span id="L2959" class="LineNr">2959 </span>  <span class="Delimiter">{</span>
<span id="L2960" class="LineNr">2960 </span>    <span class="PreProc">var</span> rest-nil?/eax: boolean <span class="Special">&lt;-</span> <a href='print.mu.html#L390'>nil?</a> rest
<span id="L2961" class="LineNr">2961 </span>    compare rest-nil?, <span class="Constant">0</span>/false
<span id="L2962" class="LineNr">2962 </span>    <span class="PreProc">break-if-=</span>
<span id="L2963" class="LineNr">2963 </span>    <span class="Special"><a href='trace.mu.html#L197'>error</a></span> trace, <span class="Constant">&quot;'bezier' needs 8 args but got 4&quot;</span>
<span id="L2964" class="LineNr">2964 </span>    <span class="PreProc">return</span>
<span id="L2965" class="LineNr">2965 </span>  <span class="Delimiter">}</span>
<span id="L2966" class="LineNr">2966 </span>  <span class="PreProc">var</span> seventh-ah/eax: (addr handle <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> get rest, left
<span id="L2967" class="LineNr">2967 </span>  <span class="PreProc">var</span> seventh/eax: (addr <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> <a href='../120allocate.subx.html#L235'>lookup</a> *seventh-ah
<span id="L2968" class="LineNr">2968 </span>  <span class="Delimiter">{</span>
<span id="L2969" class="LineNr">2969 </span>    <span class="PreProc">var</span> seventh-type/eax: (addr int) <span class="Special">&lt;-</span> get seventh, <span class="PreProc">type</span>
<span id="L2970" class="LineNr">2970 </span>    compare *seventh-type, <span class="Constant">1</span>/number
<span id="L2971" class="LineNr">2971 </span>    <span class="PreProc">break-if-=</span>
<span id="L2972" class="LineNr">2972 </span>    <span class="Special"><a href='trace.mu.html#L197'>error</a></span> trace, <span class="Constant">&quot;seventh arg for 'bezier' is not a number (<a href='../500fake-screen.mu.html#L16'>screen</a> y coordinate of end point)&quot;</span>
<span id="L2973" class="LineNr">2973 </span>    <span class="PreProc">return</span>
<span id="L2974" class="LineNr">2974 </span>  <span class="Delimiter">}</span>
<span id="L2975" class="LineNr">2975 </span>  <span class="PreProc">var</span> seventh-value/eax: (addr float) <span class="Special">&lt;-</span> get seventh, number-data
<span id="L2976" class="LineNr">2976 </span>  <span class="PreProc">var</span> tmp/eax: int <span class="Special">&lt;-</span> convert *seventh-value
<span id="L2977" class="LineNr">2977 </span>  <span class="PreProc">var</span> y2: int
<span id="L2978" class="LineNr">2978 </span>  copy-to y2, tmp
<span id="L2979" class="LineNr">2979 </span>  <span class="muComment"># color = rest-&gt;right-&gt;left-&gt;value</span>
<span id="L2980" class="LineNr">2980 </span>  <span class="PreProc">var</span> rest-ah/eax: (addr handle <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> get rest, right
<span id="L2981" class="LineNr">2981 </span>  <span class="PreProc">var</span> _rest/eax: (addr <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> <a href='../120allocate.subx.html#L235'>lookup</a> *rest-ah
<span id="L2982" class="LineNr">2982 </span>  rest <span class="Special">&lt;-</span> copy _rest
<span id="L2983" class="LineNr">2983 </span>  <span class="Delimiter">{</span>
<span id="L2984" class="LineNr">2984 </span>    <span class="PreProc">var</span> rest-type/eax: (addr int) <span class="Special">&lt;-</span> get rest, <span class="PreProc">type</span>
<span id="L2985" class="LineNr">2985 </span>    compare *rest-type, <span class="Constant">0</span>/pair
<span id="L2986" class="LineNr">2986 </span>    <span class="PreProc">break-if-=</span>
<span id="L2987" class="LineNr">2987 </span>    <span class="Special"><a href='trace.mu.html#L197'>error</a></span> trace, <span class="Constant">&quot;'bezier' encountered non-pair&quot;</span>
<span id="L2988" class="LineNr">2988 </span>    <span class="PreProc">return</span>
<span id="L2989" class="LineNr">2989 </span>  <span class="Delimiter">}</span>
<span id="L2990" class="LineNr">2990 </span>  <span class="Delimiter">{</span>
<span id="L2991" class="LineNr">2991 </span>    <span class="PreProc">var</span> rest-nil?/eax: boolean <span class="Special">&lt;-</span> <a href='print.mu.html#L390'>nil?</a> rest
<span id="L2992" class="LineNr">2992 </span>    compare rest-nil?, <span class="Constant">0</span>/false
<span id="L2993" class="LineNr">2993 </span>    <span class="PreProc">break-if-=</span>
<span id="L2994" class="LineNr">2994 </span>    <span class="Special"><a href='trace.mu.html#L197'>error</a></span> trace, <span class="Constant">&quot;'bezier' needs 8 args but got 5&quot;</span>
<span id="L2995" class="LineNr">2995 </span>    <span class="PreProc">return</span>
<span id="L2996" class="LineNr">2996 </span>  <span class="Delimiter">}</span>
<span id="L2997" class="LineNr">2997 </span>  <span class="PreProc">var</span> eighth-ah/eax: (addr handle <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> get rest, left
<span id="L2998" class="LineNr">2998 </span>  <span class="PreProc">var</span> eighth/eax: (addr <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> <a href='../120allocate.subx.html#L235'>lookup</a> *eighth-ah
<span id="L2999" class="LineNr">2999 </span>  <span class="Delimiter">{</span>
<span id="L3000" class="LineNr">3000 </span>    <span class="PreProc">var</span> eighth-type/eax: (addr int) <span class="Special">&lt;-</span> get eighth, <span class="PreProc">type</span>
<span id="L3001" class="LineNr">3001 </span>    compare *eighth-type, <span class="Constant">1</span>/number
<span id="L3002" class="LineNr">3002 </span>    <span class="PreProc">break-if-=</span>
<span id="L3003" class="LineNr">3003 </span>    <span class="Special"><a href='trace.mu.html#L197'>error</a></span> trace, <span class="Constant">&quot;eighth arg for 'bezier' is not an int (color; 0..0xff)&quot;</span>
<span id="L3004" class="LineNr">3004 </span>    <span class="PreProc">return</span>
<span id="L3005" class="LineNr">3005 </span>  <span class="Delimiter">}</span>
<span id="L3006" class="LineNr">3006 </span>  <span class="PreProc">var</span> eighth-value/eax: (addr float) <span class="Special">&lt;-</span> get eighth, number-data
<span id="L3007" class="LineNr">3007 </span>  <span class="PreProc">var</span> color/eax: int <span class="Special">&lt;-</span> convert *eighth-value
<span id="L3008" class="LineNr">3008 </span>  <a href='../509bezier.mu.html#L14'>draw-monotonic-bezier</a> <a href='../500fake-screen.mu.html#L16'>screen</a>, x0, y0, x1, y1, x2, y2, color
<span id="L3009" class="LineNr">3009 </span>  <span class="muComment"># return nothing</span>
<span id="L3010" class="LineNr">3010 </span><span class="Delimiter">}</span>
<span id="L3011" class="LineNr">3011 </span>
<span id="L3012" class="LineNr">3012 </span><span class="PreProc">fn</span> <span class="muFunction"><a href='primitives.mu.html#L3012'>apply-wait-for-key</a></span> _args-ah: (addr handle <a href='cell.mu.html#L1'>cell</a>), out: (addr handle <a href='cell.mu.html#L1'>cell</a>), trace: (addr trace) <span class="Delimiter">{</span>
<span id="L3013" class="LineNr">3013 </span>  <a href='trace.mu.html#L185'>trace-text</a> trace, <span class="Constant">&quot;eval&quot;</span>, <span class="Constant">&quot;apply 'key'&quot;</span>
<span id="L3014" class="LineNr">3014 </span>  <span class="PreProc">var</span> args-ah/eax: (addr handle <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> copy _args-ah
<span id="L3015" class="LineNr">3015 </span>  <span class="PreProc">var</span> _args/eax: (addr <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> <a href='../120allocate.subx.html#L235'>lookup</a> *args-ah
<span id="L3016" class="LineNr">3016 </span>  <span class="PreProc">var</span> args/<span class="muRegEsi">esi</span>: (addr <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> copy _args
<span id="L3017" class="LineNr">3017 </span>  <span class="Delimiter">{</span>
<span id="L3018" class="LineNr">3018 </span>    <span class="PreProc">var</span> args-type/eax: (addr int) <span class="Special">&lt;-</span> get args, <span class="PreProc">type</span>
<span id="L3019" class="LineNr">3019 </span>    compare *args-type, <span class="Constant">0</span>/pair
<span id="L3020" class="LineNr">3020 </span>    <span class="PreProc">break-if-=</span>
<span id="L3021" class="LineNr">3021 </span>    <span class="Special"><a href='trace.mu.html#L197'>error</a></span> trace, <span class="Constant">&quot;args to 'key' are not a list&quot;</span>
<span id="L3022" class="LineNr">3022 </span>    <span class="PreProc">return</span>
<span id="L3023" class="LineNr">3023 </span>  <span class="Delimiter">}</span>
<span id="L3024" class="LineNr">3024 </span>  <span class="PreProc">var</span> empty-args?/eax: boolean <span class="Special">&lt;-</span> <a href='print.mu.html#L390'>nil?</a> args
<span id="L3025" class="LineNr">3025 </span>  compare empty-args?, <span class="Constant">0</span>/false
<span id="L3026" class="LineNr">3026 </span>  <span class="Delimiter">{</span>
<span id="L3027" class="LineNr">3027 </span>    <span class="PreProc">break-if-=</span>
<span id="L3028" class="LineNr">3028 </span>    <span class="Special"><a href='trace.mu.html#L197'>error</a></span> trace, <span class="Constant">&quot;'key' needs 1 arg but got 0&quot;</span>
<span id="L3029" class="LineNr">3029 </span>    <span class="PreProc">return</span>
<span id="L3030" class="LineNr">3030 </span>  <span class="Delimiter">}</span>
<span id="L3031" class="LineNr">3031 </span>  <span class="muComment"># keyboard = args-&gt;left</span>
<span id="L3032" class="LineNr">3032 </span>  <span class="PreProc">var</span> first-ah/eax: (addr handle <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> get args, left
<span id="L3033" class="LineNr">3033 </span>  <span class="PreProc">var</span> first/eax: (addr <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> <a href='../120allocate.subx.html#L235'>lookup</a> *first-ah
<span id="L3034" class="LineNr">3034 </span>  <span class="Delimiter">{</span>
<span id="L3035" class="LineNr">3035 </span>    <span class="PreProc">var</span> first-type/eax: (addr int) <span class="Special">&lt;-</span> get first, <span class="PreProc">type</span>
<span id="L3036" class="LineNr">3036 </span>    compare *first-type, <span class="Constant">6</span>/keyboard
<span id="L3037" class="LineNr">3037 </span>    <span class="PreProc">break-if-=</span>
<span id="L3038" class="LineNr">3038 </span>    <span class="Special"><a href='trace.mu.html#L197'>error</a></span> trace, <span class="Constant">&quot;first arg for 'key' is not a keyboard&quot;</span>
<span id="L3039" class="LineNr">3039 </span>    <span class="PreProc">return</span>
<span id="L3040" class="LineNr">3040 </span>  <span class="Delimiter">}</span>
<span id="L3041" class="LineNr">3041 </span>  <span class="PreProc">var</span> keyboard-ah/eax: (addr handle <a href='../514gap-buffer.mu.html#L3'>gap-buffer</a>) <span class="Special">&lt;-</span> get first, keyboard-data
<span id="L3042" class="LineNr">3042 </span>  <span class="PreProc">var</span> _keyboard/eax: (addr <a href='../514gap-buffer.mu.html#L3'>gap-buffer</a>) <span class="Special">&lt;-</span> <a href='../120allocate.subx.html#L235'>lookup</a> *keyboard-ah
<span id="L3043" class="LineNr">3043 </span>  <span class="PreProc">var</span> keyboard/<span class="muRegEcx">ecx</span>: (addr <a href='../514gap-buffer.mu.html#L3'>gap-buffer</a>) <span class="Special">&lt;-</span> copy _keyboard
<span id="L3044" class="LineNr">3044 </span>  <span class="PreProc">var</span> result/eax: int <span class="Special">&lt;-</span> <a href='primitives.mu.html#L3049'>wait-for-key</a> keyboard
<span id="L3045" class="LineNr">3045 </span>  <span class="muComment"># return key typed</span>
<span id="L3046" class="LineNr">3046 </span>  <a href='cell.mu.html#L99'>new-integer</a> out, result
<span id="L3047" class="LineNr">3047 </span><span class="Delimiter">}</span>
<span id="L3048" class="LineNr">3048 </span>
<span id="L3049" class="LineNr">3049 </span><span class="PreProc">fn</span> <span class="muFunction"><a href='primitives.mu.html#L3049'>wait-for-key</a></span> keyboard: (addr <a href='../514gap-buffer.mu.html#L3'>gap-buffer</a>)<span class="PreProc"> -&gt; </span>_/eax: int <span class="Delimiter">{</span>
<span id="L3050" class="LineNr">3050 </span>  <span class="muComment"># if keyboard is 0, use real keyboard</span>
<span id="L3051" class="LineNr">3051 </span>  <span class="Delimiter">{</span>
<span id="L3052" class="LineNr">3052 </span>    compare keyboard, <span class="Constant">0</span>/real-keyboard
<span id="L3053" class="LineNr">3053 </span>    <span class="PreProc">break-if-!=</span>
<span id="L3054" class="LineNr">3054 </span>    <span class="PreProc">var</span> key/eax: byte <span class="Special">&lt;-</span> <a href='../102keyboard.subx.html#L21'>read-key</a> <span class="Constant">0</span>/real-keyboard
<span id="L3055" class="LineNr">3055 </span>    <span class="PreProc">var</span> result/eax: int <span class="Special">&lt;-</span> copy key
<span id="L3056" class="LineNr">3056 </span>    <span class="PreProc">return</span> result
<span id="L3057" class="LineNr">3057 </span>  <span class="Delimiter">}</span>
<span id="L3058" class="LineNr">3058 </span>  <span class="muComment"># otherwise read from fake keyboard</span>
<span id="L3059" class="LineNr">3059 </span>  <span class="PreProc">var</span> g/eax: grapheme <span class="Special">&lt;-</span> <a href='../514gap-buffer.mu.html#L1082'>read-from-gap-buffer</a> keyboard
<span id="L3060" class="LineNr">3060 </span>  <span class="PreProc">var</span> result/eax: int <span class="Special">&lt;-</span> copy g
<span id="L3061" class="LineNr">3061 </span>  <span class="PreProc">return</span> result
<span id="L3062" class="LineNr">3062 </span><span class="Delimiter">}</span>
<span id="L3063" class="LineNr">3063 </span>
<span id="L3064" class="LineNr">3064 </span><span class="PreProc">fn</span> <span class="muFunction"><a href='primitives.mu.html#L3064'>apply-stream</a></span> _args-ah: (addr handle <a href='cell.mu.html#L1'>cell</a>), out: (addr handle <a href='cell.mu.html#L1'>cell</a>), trace: (addr trace) <span class="Delimiter">{</span>
<span id="L3065" class="LineNr">3065 </span>  <a href='trace.mu.html#L185'>trace-text</a> trace, <span class="Constant">&quot;eval&quot;</span>, <span class="Constant">&quot;apply stream&quot;</span>
<span id="L3066" class="LineNr">3066 </span>  <a href='cell.mu.html#L73'>allocate-stream</a> out
<span id="L3067" class="LineNr">3067 </span><span class="Delimiter">}</span>
<span id="L3068" class="LineNr">3068 </span>
<span id="L3069" class="LineNr">3069 </span><span class="PreProc">fn</span> <span class="muFunction"><a href='primitives.mu.html#L3069'>apply-write</a></span> _args-ah: (addr handle <a href='cell.mu.html#L1'>cell</a>), out: (addr handle <a href='cell.mu.html#L1'>cell</a>), trace: (addr trace) <span class="Delimiter">{</span>
<span id="L3070" class="LineNr">3070 </span>  <a href='trace.mu.html#L185'>trace-text</a> trace, <span class="Constant">&quot;eval&quot;</span>, <span class="Constant">&quot;apply 'write'&quot;</span>
<span id="L3071" class="LineNr">3071 </span>  <span class="PreProc">var</span> args-ah/eax: (addr handle <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> copy _args-ah
<span id="L3072" class="LineNr">3072 </span>  <span class="PreProc">var</span> _args/eax: (addr <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> <a href='../120allocate.subx.html#L235'>lookup</a> *args-ah
<span id="L3073" class="LineNr">3073 </span>  <span class="PreProc">var</span> args/<span class="muRegEsi">esi</span>: (addr <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> copy _args
<span id="L3074" class="LineNr">3074 </span>  <span class="Delimiter">{</span>
<span id="L3075" class="LineNr">3075 </span>    <span class="PreProc">var</span> args-type/eax: (addr int) <span class="Special">&lt;-</span> get args, <span class="PreProc">type</span>
<span id="L3076" class="LineNr">3076 </span>    compare *args-type, <span class="Constant">0</span>/pair
<span id="L3077" class="LineNr">3077 </span>    <span class="PreProc">break-if-=</span>
<span id="L3078" class="LineNr">3078 </span>    <span class="Special"><a href='trace.mu.html#L197'>error</a></span> trace, <span class="Constant">&quot;args to 'write' are not a list&quot;</span>
<span id="L3079" class="LineNr">3079 </span>    <span class="PreProc">return</span>
<span id="L3080" class="LineNr">3080 </span>  <span class="Delimiter">}</span>
<span id="L3081" class="LineNr">3081 </span>  <span class="PreProc">var</span> empty-args?/eax: boolean <span class="Special">&lt;-</span> <a href='print.mu.html#L390'>nil?</a> args
<span id="L3082" class="LineNr">3082 </span>  compare empty-args?, <span class="Constant">0</span>/false
<span id="L3083" class="LineNr">3083 </span>  <span class="Delimiter">{</span>
<span id="L3084" class="LineNr">3084 </span>    <span class="PreProc">break-if-=</span>
<span id="L3085" class="LineNr">3085 </span>    <span class="Special"><a href='trace.mu.html#L197'>error</a></span> trace, <span class="Constant">&quot;'write' needs 2 args but got 0&quot;</span>
<span id="L3086" class="LineNr">3086 </span>    <span class="PreProc">return</span>
<span id="L3087" class="LineNr">3087 </span>  <span class="Delimiter">}</span>
<span id="L3088" class="LineNr">3088 </span>  <span class="muComment"># stream = args-&gt;left</span>
<span id="L3089" class="LineNr">3089 </span>  <span class="PreProc">var</span> first-ah/<span class="muRegEdx">edx</span>: (addr handle <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> get args, left
<span id="L3090" class="LineNr">3090 </span>  <span class="PreProc">var</span> first/eax: (addr <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> <a href='../120allocate.subx.html#L235'>lookup</a> *first-ah
<span id="L3091" class="LineNr">3091 </span>  <span class="Delimiter">{</span>
<span id="L3092" class="LineNr">3092 </span>    <span class="PreProc">var</span> first-type/eax: (addr int) <span class="Special">&lt;-</span> get first, <span class="PreProc">type</span>
<span id="L3093" class="LineNr">3093 </span>    compare *first-type, <span class="Constant">3</span>/stream
<span id="L3094" class="LineNr">3094 </span>    <span class="PreProc">break-if-=</span>
<span id="L3095" class="LineNr">3095 </span>    <span class="Special"><a href='trace.mu.html#L197'>error</a></span> trace, <span class="Constant">&quot;first arg for 'write' is not a stream&quot;</span>
<span id="L3096" class="LineNr">3096 </span>    <span class="PreProc">return</span>
<span id="L3097" class="LineNr">3097 </span>  <span class="Delimiter">}</span>
<span id="L3098" class="LineNr">3098 </span>  <span class="PreProc">var</span> stream-data-ah/eax: (addr handle stream byte) <span class="Special">&lt;-</span> get first, text-data
<span id="L3099" class="LineNr">3099 </span>  <span class="PreProc">var</span> _stream-data/eax: (addr stream byte) <span class="Special">&lt;-</span> <a href='../120allocate.subx.html#L235'>lookup</a> *stream-data-ah
<span id="L3100" class="LineNr">3100 </span>  <span class="PreProc">var</span> stream-data/<span class="muRegEbx">ebx</span>: (addr stream byte) <span class="Special">&lt;-</span> copy _stream-data
<span id="L3101" class="LineNr">3101 </span>  <span class="muComment"># args-&gt;right-&gt;left</span>
<span id="L3102" class="LineNr">3102 </span>  <span class="PreProc">var</span> right-ah/eax: (addr handle <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> get args, right
<span id="L3103" class="LineNr">3103 </span>  <span class="PreProc">var</span> right/eax: (addr <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> <a href='../120allocate.subx.html#L235'>lookup</a> *right-ah
<span id="L3104" class="LineNr">3104 </span>  <span class="Delimiter">{</span>
<span id="L3105" class="LineNr">3105 </span>    <span class="PreProc">var</span> right-type/eax: (addr int) <span class="Special">&lt;-</span> get right, <span class="PreProc">type</span>
<span id="L3106" class="LineNr">3106 </span>    compare *right-type, <span class="Constant">0</span>/pair
<span id="L3107" class="LineNr">3107 </span>    <span class="PreProc">break-if-=</span>
<span id="L3108" class="LineNr">3108 </span>    <span class="Special"><a href='trace.mu.html#L197'>error</a></span> trace, <span class="Constant">&quot;'write' encountered non-pair&quot;</span>
<span id="L3109" class="LineNr">3109 </span>    <span class="PreProc">return</span>
<span id="L3110" class="LineNr">3110 </span>  <span class="Delimiter">}</span>
<span id="L3111" class="LineNr">3111 </span>  <span class="Delimiter">{</span>
<span id="L3112" class="LineNr">3112 </span>    <span class="PreProc">var</span> <a href='print.mu.html#L390'>nil?</a>/eax: boolean <span class="Special">&lt;-</span> <a href='print.mu.html#L390'>nil?</a> right
<span id="L3113" class="LineNr">3113 </span>    compare <a href='print.mu.html#L390'>nil?</a>, <span class="Constant">0</span>/false
<span id="L3114" class="LineNr">3114 </span>    <span class="PreProc">break-if-=</span>
<span id="L3115" class="LineNr">3115 </span>    <span class="Special"><a href='trace.mu.html#L197'>error</a></span> trace, <span class="Constant">&quot;'write' needs 2 args but got 1&quot;</span>
<span id="L3116" class="LineNr">3116 </span>    <span class="PreProc">return</span>
<span id="L3117" class="LineNr">3117 </span>  <span class="Delimiter">}</span>
<span id="L3118" class="LineNr">3118 </span>  <span class="PreProc">var</span> second-ah/eax: (addr handle <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> get right, left
<span id="L3119" class="LineNr">3119 </span>  <span class="PreProc">var</span> second/eax: (addr <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> <a href='../120allocate.subx.html#L235'>lookup</a> *second-ah
<span id="L3120" class="LineNr">3120 </span>  <span class="Delimiter">{</span>
<span id="L3121" class="LineNr">3121 </span>    <span class="PreProc">var</span> second-type/eax: (addr int) <span class="Special">&lt;-</span> get second, <span class="PreProc">type</span>
<span id="L3122" class="LineNr">3122 </span>    compare *second-type, <span class="Constant">1</span>/number
<span id="L3123" class="LineNr">3123 </span>    <span class="PreProc">break-if-=</span>
<span id="L3124" class="LineNr">3124 </span>    <span class="Special"><a href='trace.mu.html#L197'>error</a></span> trace, <span class="Constant">&quot;second arg for 'write' is not a number/grapheme&quot;</span>
<span id="L3125" class="LineNr">3125 </span>    <span class="PreProc">return</span>
<span id="L3126" class="LineNr">3126 </span>  <span class="Delimiter">}</span>
<span id="L3127" class="LineNr">3127 </span>  <span class="PreProc">var</span> second-value/eax: (addr float) <span class="Special">&lt;-</span> get second, number-data
<span id="L3128" class="LineNr">3128 </span>  <span class="PreProc">var</span> x-float/<span class="Constant">xmm0</span>: float <span class="Special">&lt;-</span> copy *second-value
<span id="L3129" class="LineNr">3129 </span>  <span class="PreProc">var</span> x/eax: int <span class="Special">&lt;-</span> convert x-float
<span id="L3130" class="LineNr">3130 </span>  <span class="PreProc">var</span> x-grapheme/eax: grapheme <span class="Special">&lt;-</span> copy x
<span id="L3131" class="LineNr">3131 </span>  <a href='../403unicode.mu.html#L339'>write-grapheme</a> stream-data, x-grapheme
<span id="L3132" class="LineNr">3132 </span>  <span class="muComment"># return the stream</span>
<span id="L3133" class="LineNr">3133 </span>  copy-object first-ah, out
<span id="L3134" class="LineNr">3134 </span><span class="Delimiter">}</span>
<span id="L3135" class="LineNr">3135 </span>
<span id="L3136" class="LineNr">3136 </span><span class="PreProc">fn</span> <span class="muFunction"><a href='primitives.mu.html#L3136'>apply-rewind</a></span> _args-ah: (addr handle <a href='cell.mu.html#L1'>cell</a>), out: (addr handle <a href='cell.mu.html#L1'>cell</a>), trace: (addr trace) <span class="Delimiter">{</span>
<span id="L3137" class="LineNr">3137 </span>  <a href='trace.mu.html#L185'>trace-text</a> trace, <span class="Constant">&quot;eval&quot;</span>, <span class="Constant">&quot;apply 'rewind'&quot;</span>
<span id="L3138" class="LineNr">3138 </span>  <span class="PreProc">var</span> args-ah/eax: (addr handle <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> copy _args-ah
<span id="L3139" class="LineNr">3139 </span>  <span class="PreProc">var</span> _args/eax: (addr <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> <a href='../120allocate.subx.html#L235'>lookup</a> *args-ah
<span id="L3140" class="LineNr">3140 </span>  <span class="PreProc">var</span> args/<span class="muRegEsi">esi</span>: (addr <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> copy _args
<span id="L3141" class="LineNr">3141 </span>  <span class="Delimiter">{</span>
<span id="L3142" class="LineNr">3142 </span>    <span class="PreProc">var</span> args-type/eax: (addr int) <span class="Special">&lt;-</span> get args, <span class="PreProc">type</span>
<span id="L3143" class="LineNr">3143 </span>    compare *args-type, <span class="Constant">0</span>/pair
<span id="L3144" class="LineNr">3144 </span>    <span class="PreProc">break-if-=</span>
<span id="L3145" class="LineNr">3145 </span>    <span class="Special"><a href='trace.mu.html#L197'>error</a></span> trace, <span class="Constant">&quot;args to 'rewind' are not a list&quot;</span>
<span id="L3146" class="LineNr">3146 </span>    <span class="PreProc">return</span>
<span id="L3147" class="LineNr">3147 </span>  <span class="Delimiter">}</span>
<span id="L3148" class="LineNr">3148 </span>  <span class="PreProc">var</span> empty-args?/eax: boolean <span class="Special">&lt;-</span> <a href='print.mu.html#L390'>nil?</a> args
<span id="L3149" class="LineNr">3149 </span>  compare empty-args?, <span class="Constant">0</span>/false
<span id="L3150" class="LineNr">3150 </span>  <span class="Delimiter">{</span>
<span id="L3151" class="LineNr">3151 </span>    <span class="PreProc">break-if-=</span>
<span id="L3152" class="LineNr">3152 </span>    <span class="Special"><a href='trace.mu.html#L197'>error</a></span> trace, <span class="Constant">&quot;'rewind' needs 1 arg but got 0&quot;</span>
<span id="L3153" class="LineNr">3153 </span>    <span class="PreProc">return</span>
<span id="L3154" class="LineNr">3154 </span>  <span class="Delimiter">}</span>
<span id="L3155" class="LineNr">3155 </span>  <span class="muComment"># stream = args-&gt;left</span>
<span id="L3156" class="LineNr">3156 </span>  <span class="PreProc">var</span> first-ah/<span class="muRegEdx">edx</span>: (addr handle <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> get args, left
<span id="L3157" class="LineNr">3157 </span>  <span class="PreProc">var</span> first/eax: (addr <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> <a href='../120allocate.subx.html#L235'>lookup</a> *first-ah
<span id="L3158" class="LineNr">3158 </span>  <span class="Delimiter">{</span>
<span id="L3159" class="LineNr">3159 </span>    <span class="PreProc">var</span> first-type/eax: (addr int) <span class="Special">&lt;-</span> get first, <span class="PreProc">type</span>
<span id="L3160" class="LineNr">3160 </span>    compare *first-type, <span class="Constant">3</span>/stream
<span id="L3161" class="LineNr">3161 </span>    <span class="PreProc">break-if-=</span>
<span id="L3162" class="LineNr">3162 </span>    <span class="Special"><a href='trace.mu.html#L197'>error</a></span> trace, <span class="Constant">&quot;first arg for 'rewind' is not a stream&quot;</span>
<span id="L3163" class="LineNr">3163 </span>    <span class="PreProc">return</span>
<span id="L3164" class="LineNr">3164 </span>  <span class="Delimiter">}</span>
<span id="L3165" class="LineNr">3165 </span>  <span class="PreProc">var</span> stream-data-ah/eax: (addr handle stream byte) <span class="Special">&lt;-</span> get first, text-data
<span id="L3166" class="LineNr">3166 </span>  <span class="PreProc">var</span> _stream-data/eax: (addr stream byte) <span class="Special">&lt;-</span> <a href='../120allocate.subx.html#L235'>lookup</a> *stream-data-ah
<span id="L3167" class="LineNr">3167 </span>  <span class="PreProc">var</span> stream-data/<span class="muRegEbx">ebx</span>: (addr stream byte) <span class="Special">&lt;-</span> copy _stream-data
<span id="L3168" class="LineNr">3168 </span>  <a href='../106stream.subx.html#L59'>rewind-stream</a> stream-data
<span id="L3169" class="LineNr">3169 </span>  copy-object first-ah, out
<span id="L3170" class="LineNr">3170 </span><span class="Delimiter">}</span>
<span id="L3171" class="LineNr">3171 </span>
<span id="L3172" class="LineNr">3172 </span><span class="PreProc">fn</span> <span class="muFunction"><a href='primitives.mu.html#L3172'>apply-read</a></span> _args-ah: (addr handle <a href='cell.mu.html#L1'>cell</a>), out: (addr handle <a href='cell.mu.html#L1'>cell</a>), trace: (addr trace) <span class="Delimiter">{</span>
<span id="L3173" class="LineNr">3173 </span>  <a href='trace.mu.html#L185'>trace-text</a> trace, <span class="Constant">&quot;eval&quot;</span>, <span class="Constant">&quot;apply 'read'&quot;</span>
<span id="L3174" class="LineNr">3174 </span>  <span class="PreProc">var</span> args-ah/eax: (addr handle <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> copy _args-ah
<span id="L3175" class="LineNr">3175 </span>  <span class="PreProc">var</span> _args/eax: (addr <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> <a href='../120allocate.subx.html#L235'>lookup</a> *args-ah
<span id="L3176" class="LineNr">3176 </span>  <span class="PreProc">var</span> args/<span class="muRegEsi">esi</span>: (addr <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> copy _args
<span id="L3177" class="LineNr">3177 </span>  <span class="Delimiter">{</span>
<span id="L3178" class="LineNr">3178 </span>    <span class="PreProc">var</span> args-type/eax: (addr int) <span class="Special">&lt;-</span> get args, <span class="PreProc">type</span>
<span id="L3179" class="LineNr">3179 </span>    compare *args-type, <span class="Constant">0</span>/pair
<span id="L3180" class="LineNr">3180 </span>    <span class="PreProc">break-if-=</span>
<span id="L3181" class="LineNr">3181 </span>    <span class="Special"><a href='trace.mu.html#L197'>error</a></span> trace, <span class="Constant">&quot;args to 'read' are not a list&quot;</span>
<span id="L3182" class="LineNr">3182 </span>    <span class="PreProc">return</span>
<span id="L3183" class="LineNr">3183 </span>  <span class="Delimiter">}</span>
<span id="L3184" class="LineNr">3184 </span>  <span class="PreProc">var</span> empty-args?/eax: boolean <span class="Special">&lt;-</span> <a href='print.mu.html#L390'>nil?</a> args
<span id="L3185" class="LineNr">3185 </span>  compare empty-args?, <span class="Constant">0</span>/false
<span id="L3186" class="LineNr">3186 </span>  <span class="Delimiter">{</span>
<span id="L3187" class="LineNr">3187 </span>    <span class="PreProc">break-if-=</span>
<span id="L3188" class="LineNr">3188 </span>    <span class="Special"><a href='trace.mu.html#L197'>error</a></span> trace, <span class="Constant">&quot;'read' needs 1 arg but got 0&quot;</span>
<span id="L3189" class="LineNr">3189 </span>    <span class="PreProc">return</span>
<span id="L3190" class="LineNr">3190 </span>  <span class="Delimiter">}</span>
<span id="L3191" class="LineNr">3191 </span>  <span class="muComment"># stream = args-&gt;left</span>
<span id="L3192" class="LineNr">3192 </span>  <span class="PreProc">var</span> first-ah/<span class="muRegEdx">edx</span>: (addr handle <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> get args, left
<span id="L3193" class="LineNr">3193 </span>  <span class="PreProc">var</span> first/eax: (addr <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> <a href='../120allocate.subx.html#L235'>lookup</a> *first-ah
<span id="L3194" class="LineNr">3194 </span>  <span class="Delimiter">{</span>
<span id="L3195" class="LineNr">3195 </span>    <span class="PreProc">var</span> first-type/eax: (addr int) <span class="Special">&lt;-</span> get first, <span class="PreProc">type</span>
<span id="L3196" class="LineNr">3196 </span>    compare *first-type, <span class="Constant">3</span>/stream
<span id="L3197" class="LineNr">3197 </span>    <span class="PreProc">break-if-=</span>
<span id="L3198" class="LineNr">3198 </span>    <span class="Special"><a href='trace.mu.html#L197'>error</a></span> trace, <span class="Constant">&quot;first arg for 'read' is not a stream&quot;</span>
<span id="L3199" class="LineNr">3199 </span>    <span class="PreProc">return</span>
<span id="L3200" class="LineNr">3200 </span>  <span class="Delimiter">}</span>
<span id="L3201" class="LineNr">3201 </span>  <span class="PreProc">var</span> stream-data-ah/eax: (addr handle stream byte) <span class="Special">&lt;-</span> get first, text-data
<span id="L3202" class="LineNr">3202 </span>  <span class="PreProc">var</span> _stream-data/eax: (addr stream byte) <span class="Special">&lt;-</span> <a href='../120allocate.subx.html#L235'>lookup</a> *stream-data-ah
<span id="L3203" class="LineNr">3203 </span>  <span class="PreProc">var</span> stream-data/<span class="muRegEbx">ebx</span>: (addr stream byte) <span class="Special">&lt;-</span> copy _stream-data
<span id="L3204" class="LineNr">3204 </span><span class="CommentedCode">#?   rewind-stream stream-data</span>
<span id="L3205" class="LineNr">3205 </span>  <span class="PreProc">var</span> result-grapheme/eax: grapheme <span class="Special">&lt;-</span> <a href='../403unicode.mu.html#L236'>read-grapheme</a> stream-data
<span id="L3206" class="LineNr">3206 </span>  <span class="PreProc">var</span> result/eax: int <span class="Special">&lt;-</span> copy result-grapheme
<span id="L3207" class="LineNr">3207 </span>  <a href='cell.mu.html#L99'>new-integer</a> out, result
<span id="L3208" class="LineNr">3208 </span><span class="Delimiter">}</span>
<span id="L3209" class="LineNr">3209 </span>
<span id="L3210" class="LineNr">3210 </span><span class="PreProc">fn</span> <span class="muFunction"><a href='primitives.mu.html#L3210'>apply-lines</a></span> _args-ah: (addr handle <a href='cell.mu.html#L1'>cell</a>), out: (addr handle <a href='cell.mu.html#L1'>cell</a>), trace: (addr trace) <span class="Delimiter">{</span>
<span id="L3211" class="LineNr">3211 </span>  <a href='trace.mu.html#L185'>trace-text</a> trace, <span class="Constant">&quot;eval&quot;</span>, <span class="Constant">&quot;apply 'lines'&quot;</span>
<span id="L3212" class="LineNr">3212 </span>  <span class="PreProc">var</span> args-ah/eax: (addr handle <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> copy _args-ah
<span id="L3213" class="LineNr">3213 </span>  <span class="PreProc">var</span> _args/eax: (addr <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> <a href='../120allocate.subx.html#L235'>lookup</a> *args-ah
<span id="L3214" class="LineNr">3214 </span>  <span class="PreProc">var</span> args/<span class="muRegEsi">esi</span>: (addr <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> copy _args
<span id="L3215" class="LineNr">3215 </span>  <span class="Delimiter">{</span>
<span id="L3216" class="LineNr">3216 </span>    <span class="PreProc">var</span> args-type/eax: (addr int) <span class="Special">&lt;-</span> get args, <span class="PreProc">type</span>
<span id="L3217" class="LineNr">3217 </span>    compare *args-type, <span class="Constant">0</span>/pair
<span id="L3218" class="LineNr">3218 </span>    <span class="PreProc">break-if-=</span>
<span id="L3219" class="LineNr">3219 </span>    <span class="Special"><a href='trace.mu.html#L197'>error</a></span> trace, <span class="Constant">&quot;args to 'lines' are not a list&quot;</span>
<span id="L3220" class="LineNr">3220 </span>    <span class="PreProc">return</span>
<span id="L3221" class="LineNr">3221 </span>  <span class="Delimiter">}</span>
<span id="L3222" class="LineNr">3222 </span>  <span class="PreProc">var</span> empty-args?/eax: boolean <span class="Special">&lt;-</span> <a href='print.mu.html#L390'>nil?</a> args
<span id="L3223" class="LineNr">3223 </span>  compare empty-args?, <span class="Constant">0</span>/false
<span id="L3224" class="LineNr">3224 </span>  <span class="Delimiter">{</span>
<span id="L3225" class="LineNr">3225 </span>    <span class="PreProc">break-if-=</span>
<span id="L3226" class="LineNr">3226 </span>    <span class="Special"><a href='trace.mu.html#L197'>error</a></span> trace, <span class="Constant">&quot;'lines' needs 1 arg but got 0&quot;</span>
<span id="L3227" class="LineNr">3227 </span>    <span class="PreProc">return</span>
<span id="L3228" class="LineNr">3228 </span>  <span class="Delimiter">}</span>
<span id="L3229" class="LineNr">3229 </span>  <span class="muComment"># screen = args-&gt;left</span>
<span id="L3230" class="LineNr">3230 </span>  <span class="PreProc">var</span> first-ah/eax: (addr handle <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> get args, left
<span id="L3231" class="LineNr">3231 </span>  <span class="PreProc">var</span> first/eax: (addr <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> <a href='../120allocate.subx.html#L235'>lookup</a> *first-ah
<span id="L3232" class="LineNr">3232 </span>  <span class="Delimiter">{</span>
<span id="L3233" class="LineNr">3233 </span>    <span class="PreProc">var</span> first-type/eax: (addr int) <span class="Special">&lt;-</span> get first, <span class="PreProc">type</span>
<span id="L3234" class="LineNr">3234 </span>    compare *first-type, <span class="Constant">5</span>/screen
<span id="L3235" class="LineNr">3235 </span>    <span class="PreProc">break-if-=</span>
<span id="L3236" class="LineNr">3236 </span>    <span class="Special"><a href='trace.mu.html#L197'>error</a></span> trace, <span class="Constant">&quot;first arg for 'lines' is not a screen&quot;</span>
<span id="L3237" class="LineNr">3237 </span>    <span class="PreProc">return</span>
<span id="L3238" class="LineNr">3238 </span>  <span class="Delimiter">}</span>
<span id="L3239" class="LineNr">3239 </span>  <span class="PreProc">var</span> screen-ah/eax: (addr handle <a href='../500fake-screen.mu.html#L16'>screen</a>) <span class="Special">&lt;-</span> get first, screen-data
<span id="L3240" class="LineNr">3240 </span>  <span class="PreProc">var</span> _screen/eax: (addr <a href='../500fake-screen.mu.html#L16'>screen</a>) <span class="Special">&lt;-</span> <a href='../120allocate.subx.html#L235'>lookup</a> *screen-ah
<span id="L3241" class="LineNr">3241 </span>  <span class="PreProc">var</span> <a href='../500fake-screen.mu.html#L16'>screen</a>/<span class="muRegEdx">edx</span>: (addr <a href='../500fake-screen.mu.html#L16'>screen</a>) <span class="Special">&lt;-</span> copy _screen
<span id="L3242" class="LineNr">3242 </span>  <span class="muComment"># compute dimensions</span>
<span id="L3243" class="LineNr">3243 </span>  <span class="PreProc">var</span> dummy/eax: int <span class="Special">&lt;-</span> copy <span class="Constant">0</span>
<span id="L3244" class="LineNr">3244 </span>  <span class="PreProc">var</span> height/<span class="muRegEcx">ecx</span>: int <span class="Special">&lt;-</span> copy <span class="Constant">0</span>
<span id="L3245" class="LineNr">3245 </span>  dummy, height <span class="Special">&lt;-</span> <a href='../500fake-screen.mu.html#L75'>screen-size</a> <a href='../500fake-screen.mu.html#L16'>screen</a>
<span id="L3246" class="LineNr">3246 </span>  <span class="PreProc">var</span> result/<span class="Constant">xmm0</span>: float <span class="Special">&lt;-</span> convert height
<span id="L3247" class="LineNr">3247 </span>  <a href='cell.mu.html#L112'>new-float</a> out, result
<span id="L3248" class="LineNr">3248 </span><span class="Delimiter">}</span>
<span id="L3249" class="LineNr">3249 </span>
<span id="L3250" class="LineNr">3250 </span><span class="PreProc">fn</span> <span class="muFunction"><a href='primitives.mu.html#L3250'>apply-columns</a></span> _args-ah: (addr handle <a href='cell.mu.html#L1'>cell</a>), out: (addr handle <a href='cell.mu.html#L1'>cell</a>), trace: (addr trace) <span class="Delimiter">{</span>
<span id="L3251" class="LineNr">3251 </span>  <a href='trace.mu.html#L185'>trace-text</a> trace, <span class="Constant">&quot;eval&quot;</span>, <span class="Constant">&quot;apply 'columns'&quot;</span>
<span id="L3252" class="LineNr">3252 </span>  <span class="PreProc">var</span> args-ah/eax: (addr handle <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> copy _args-ah
<span id="L3253" class="LineNr">3253 </span>  <span class="PreProc">var</span> _args/eax: (addr <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> <a href='../120allocate.subx.html#L235'>lookup</a> *args-ah
<span id="L3254" class="LineNr">3254 </span>  <span class="PreProc">var</span> args/<span class="muRegEsi">esi</span>: (addr <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> copy _args
<span id="L3255" class="LineNr">3255 </span>  <span class="Delimiter">{</span>
<span id="L3256" class="LineNr">3256 </span>    <span class="PreProc">var</span> args-type/eax: (addr int) <span class="Special">&lt;-</span> get args, <span class="PreProc">type</span>
<span id="L3257" class="LineNr">3257 </span>    compare *args-type, <span class="Constant">0</span>/pair
<span id="L3258" class="LineNr">3258 </span>    <span class="PreProc">break-if-=</span>
<span id="L3259" class="LineNr">3259 </span>    <span class="Special"><a href='trace.mu.html#L197'>error</a></span> trace, <span class="Constant">&quot;args to 'columns' are not a list&quot;</span>
<span id="L3260" class="LineNr">3260 </span>    <span class="PreProc">return</span>
<span id="L3261" class="LineNr">3261 </span>  <span class="Delimiter">}</span>
<span id="L3262" class="LineNr">3262 </span>  <span class="PreProc">var</span> empty-args?/eax: boolean <span class="Special">&lt;-</span> <a href='print.mu.html#L390'>nil?</a> args
<span id="L3263" class="LineNr">3263 </span>  compare empty-args?, <span class="Constant">0</span>/false
<span id="L3264" class="LineNr">3264 </span>  <span class="Delimiter">{</span>
<span id="L3265" class="LineNr">3265 </span>    <span class="PreProc">break-if-=</span>
<span id="L3266" class="LineNr">3266 </span>    <span class="Special"><a href='trace.mu.html#L197'>error</a></span> trace, <span class="Constant">&quot;'columns' needs 1 arg but got 0&quot;</span>
<span id="L3267" class="LineNr">3267 </span>    <span class="PreProc">return</span>
<span id="L3268" class="LineNr">3268 </span>  <span class="Delimiter">}</span>
<span id="L3269" class="LineNr">3269 </span>  <span class="muComment"># screen = args-&gt;left</span>
<span id="L3270" class="LineNr">3270 </span>  <span class="PreProc">var</span> first-ah/eax: (addr handle <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> get args, left
<span id="L3271" class="LineNr">3271 </span>  <span class="PreProc">var</span> first/eax: (addr <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> <a href='../120allocate.subx.html#L235'>lookup</a> *first-ah
<span id="L3272" class="LineNr">3272 </span>  <span class="Delimiter">{</span>
<span id="L3273" class="LineNr">3273 </span>    <span class="PreProc">var</span> first-type/eax: (addr int) <span class="Special">&lt;-</span> get first, <span class="PreProc">type</span>
<span id="L3274" class="LineNr">3274 </span>    compare *first-type, <span class="Constant">5</span>/screen
<span id="L3275" class="LineNr">3275 </span>    <span class="PreProc">break-if-=</span>
<span id="L3276" class="LineNr">3276 </span>    <span class="Special"><a href='trace.mu.html#L197'>error</a></span> trace, <span class="Constant">&quot;first arg for 'columns' is not a screen&quot;</span>
<span id="L3277" class="LineNr">3277 </span>    <span class="PreProc">return</span>
<span id="L3278" class="LineNr">3278 </span>  <span class="Delimiter">}</span>
<span id="L3279" class="LineNr">3279 </span>  <span class="PreProc">var</span> screen-ah/eax: (addr handle <a href='../500fake-screen.mu.html#L16'>screen</a>) <span class="Special">&lt;-</span> get first, screen-data
<span id="L3280" class="LineNr">3280 </span>  <span class="PreProc">var</span> _screen/eax: (addr <a href='../500fake-screen.mu.html#L16'>screen</a>) <span class="Special">&lt;-</span> <a href='../120allocate.subx.html#L235'>lookup</a> *screen-ah
<span id="L3281" class="LineNr">3281 </span>  <span class="PreProc">var</span> <a href='../500fake-screen.mu.html#L16'>screen</a>/<span class="muRegEdx">edx</span>: (addr <a href='../500fake-screen.mu.html#L16'>screen</a>) <span class="Special">&lt;-</span> copy _screen
<span id="L3282" class="LineNr">3282 </span>  <span class="muComment"># compute dimensions</span>
<span id="L3283" class="LineNr">3283 </span>  <span class="PreProc">var</span> width/eax: int <span class="Special">&lt;-</span> copy <span class="Constant">0</span>
<span id="L3284" class="LineNr">3284 </span>  <span class="PreProc">var</span> dummy/<span class="muRegEcx">ecx</span>: int <span class="Special">&lt;-</span> copy <span class="Constant">0</span>
<span id="L3285" class="LineNr">3285 </span>  width, dummy <span class="Special">&lt;-</span> <a href='../500fake-screen.mu.html#L75'>screen-size</a> <a href='../500fake-screen.mu.html#L16'>screen</a>
<span id="L3286" class="LineNr">3286 </span>  <span class="PreProc">var</span> result/<span class="Constant">xmm0</span>: float <span class="Special">&lt;-</span> convert width
<span id="L3287" class="LineNr">3287 </span>  <a href='cell.mu.html#L112'>new-float</a> out, result
<span id="L3288" class="LineNr">3288 </span><span class="Delimiter">}</span>
<span id="L3289" class="LineNr">3289 </span>
<span id="L3290" class="LineNr">3290 </span><span class="PreProc">fn</span> <span class="muFunction"><a href='primitives.mu.html#L3290'>apply-width</a></span> _args-ah: (addr handle <a href='cell.mu.html#L1'>cell</a>), out: (addr handle <a href='cell.mu.html#L1'>cell</a>), trace: (addr trace) <span class="Delimiter">{</span>
<span id="L3291" class="LineNr">3291 </span>  <a href='trace.mu.html#L185'>trace-text</a> trace, <span class="Constant">&quot;eval&quot;</span>, <span class="Constant">&quot;apply 'width'&quot;</span>
<span id="L3292" class="LineNr">3292 </span>  <span class="PreProc">var</span> args-ah/eax: (addr handle <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> copy _args-ah
<span id="L3293" class="LineNr">3293 </span>  <span class="PreProc">var</span> _args/eax: (addr <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> <a href='../120allocate.subx.html#L235'>lookup</a> *args-ah
<span id="L3294" class="LineNr">3294 </span>  <span class="PreProc">var</span> args/<span class="muRegEsi">esi</span>: (addr <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> copy _args
<span id="L3295" class="LineNr">3295 </span>  <span class="Delimiter">{</span>
<span id="L3296" class="LineNr">3296 </span>    <span class="PreProc">var</span> args-type/eax: (addr int) <span class="Special">&lt;-</span> get args, <span class="PreProc">type</span>
<span id="L3297" class="LineNr">3297 </span>    compare *args-type, <span class="Constant">0</span>/pair
<span id="L3298" class="LineNr">3298 </span>    <span class="PreProc">break-if-=</span>
<span id="L3299" class="LineNr">3299 </span>    <span class="Special"><a href='trace.mu.html#L197'>error</a></span> trace, <span class="Constant">&quot;args to 'width' are not a list&quot;</span>
<span id="L3300" class="LineNr">3300 </span>    <span class="PreProc">return</span>
<span id="L3301" class="LineNr">3301 </span>  <span class="Delimiter">}</span>
<span id="L3302" class="LineNr">3302 </span>  <span class="PreProc">var</span> empty-args?/eax: boolean <span class="Special">&lt;-</span> <a href='print.mu.html#L390'>nil?</a> args
<span id="L3303" class="LineNr">3303 </span>  compare empty-args?, <span class="Constant">0</span>/false
<span id="L3304" class="LineNr">3304 </span>  <span class="Delimiter">{</span>
<span id="L3305" class="LineNr">3305 </span>    <span class="PreProc">break-if-=</span>
<span id="L3306" class="LineNr">3306 </span>    <span class="Special"><a href='trace.mu.html#L197'>error</a></span> trace, <span class="Constant">&quot;'width' needs 1 arg but got 0&quot;</span>
<span id="L3307" class="LineNr">3307 </span>    <span class="PreProc">return</span>
<span id="L3308" class="LineNr">3308 </span>  <span class="Delimiter">}</span>
<span id="L3309" class="LineNr">3309 </span>  <span class="muComment"># screen = args-&gt;left</span>
<span id="L3310" class="LineNr">3310 </span>  <span class="PreProc">var</span> first-ah/eax: (addr handle <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> get args, left
<span id="L3311" class="LineNr">3311 </span>  <span class="PreProc">var</span> first/eax: (addr <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> <a href='../120allocate.subx.html#L235'>lookup</a> *first-ah
<span id="L3312" class="LineNr">3312 </span>  <span class="Delimiter">{</span>
<span id="L3313" class="LineNr">3313 </span>    <span class="PreProc">var</span> first-type/eax: (addr int) <span class="Special">&lt;-</span> get first, <span class="PreProc">type</span>
<span id="L3314" class="LineNr">3314 </span>    compare *first-type, <span class="Constant">5</span>/screen
<span id="L3315" class="LineNr">3315 </span>    <span class="PreProc">break-if-=</span>
<span id="L3316" class="LineNr">3316 </span>    <span class="Special"><a href='trace.mu.html#L197'>error</a></span> trace, <span class="Constant">&quot;first arg for 'width' is not a screen&quot;</span>
<span id="L3317" class="LineNr">3317 </span>    <span class="PreProc">return</span>
<span id="L3318" class="LineNr">3318 </span>  <span class="Delimiter">}</span>
<span id="L3319" class="LineNr">3319 </span>  <span class="PreProc">var</span> screen-ah/eax: (addr handle <a href='../500fake-screen.mu.html#L16'>screen</a>) <span class="Special">&lt;-</span> get first, screen-data
<span id="L3320" class="LineNr">3320 </span>  <span class="PreProc">var</span> _screen/eax: (addr <a href='../500fake-screen.mu.html#L16'>screen</a>) <span class="Special">&lt;-</span> <a href='../120allocate.subx.html#L235'>lookup</a> *screen-ah
<span id="L3321" class="LineNr">3321 </span>  <span class="PreProc">var</span> <a href='../500fake-screen.mu.html#L16'>screen</a>/<span class="muRegEdx">edx</span>: (addr <a href='../500fake-screen.mu.html#L16'>screen</a>) <span class="Special">&lt;-</span> copy _screen
<span id="L3322" class="LineNr">3322 </span>  <span class="muComment"># compute dimensions</span>
<span id="L3323" class="LineNr">3323 </span>  <span class="PreProc">var</span> width/eax: int <span class="Special">&lt;-</span> copy <span class="Constant">0</span>
<span id="L3324" class="LineNr">3324 </span>  <span class="PreProc">var</span> dummy/<span class="muRegEcx">ecx</span>: int <span class="Special">&lt;-</span> copy <span class="Constant">0</span>
<span id="L3325" class="LineNr">3325 </span>  width, dummy <span class="Special">&lt;-</span> <a href='../500fake-screen.mu.html#L75'>screen-size</a> <a href='../500fake-screen.mu.html#L16'>screen</a>
<span id="L3326" class="LineNr">3326 </span>  width <span class="Special">&lt;-</span> shift-left <span class="Constant">3</span>/log2-font-width
<span id="L3327" class="LineNr">3327 </span>  <span class="PreProc">var</span> result/<span class="Constant">xmm0</span>: float <span class="Special">&lt;-</span> convert width
<span id="L3328" class="LineNr">3328 </span>  <a href='cell.mu.html#L112'>new-float</a> out, result
<span id="L3329" class="LineNr">3329 </span><span class="Delimiter">}</span>
<span id="L3330" class="LineNr">3330 </span>
<span id="L3331" class="LineNr">3331 </span><span class="PreProc">fn</span> <span class="muFunction"><a href='primitives.mu.html#L3331'>apply-height</a></span> _args-ah: (addr handle <a href='cell.mu.html#L1'>cell</a>), out: (addr handle <a href='cell.mu.html#L1'>cell</a>), trace: (addr trace) <span class="Delimiter">{</span>
<span id="L3332" class="LineNr">3332 </span>  <a href='trace.mu.html#L185'>trace-text</a> trace, <span class="Constant">&quot;eval&quot;</span>, <span class="Constant">&quot;apply 'height'&quot;</span>
<span id="L3333" class="LineNr">3333 </span>  <span class="PreProc">var</span> args-ah/eax: (addr handle <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> copy _args-ah
<span id="L3334" class="LineNr">3334 </span>  <span class="PreProc">var</span> _args/eax: (addr <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> <a href='../120allocate.subx.html#L235'>lookup</a> *args-ah
<span id="L3335" class="LineNr">3335 </span>  <span class="PreProc">var</span> args/<span class="muRegEsi">esi</span>: (addr <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> copy _args
<span id="L3336" class="LineNr">3336 </span>  <span class="Delimiter">{</span>
<span id="L3337" class="LineNr">3337 </span>    <span class="PreProc">var</span> args-type/eax: (addr int) <span class="Special">&lt;-</span> get args, <span class="PreProc">type</span>
<span id="L3338" class="LineNr">3338 </span>    compare *args-type, <span class="Constant">0</span>/pair
<span id="L3339" class="LineNr">3339 </span>    <span class="PreProc">break-if-=</span>
<span id="L3340" class="LineNr">3340 </span>    <span class="Special"><a href='trace.mu.html#L197'>error</a></span> trace, <span class="Constant">&quot;args to 'height' are not a list&quot;</span>
<span id="L3341" class="LineNr">3341 </span>    <span class="PreProc">return</span>
<span id="L3342" class="LineNr">3342 </span>  <span class="Delimiter">}</span>
<span id="L3343" class="LineNr">3343 </span>  <span class="PreProc">var</span> empty-args?/eax: boolean <span class="Special">&lt;-</span> <a href='print.mu.html#L390'>nil?</a> args
<span id="L3344" class="LineNr">3344 </span>  compare empty-args?, <span class="Constant">0</span>/false
<span id="L3345" class="LineNr">3345 </span>  <span class="Delimiter">{</span>
<span id="L3346" class="LineNr">3346 </span>    <span class="PreProc">break-if-=</span>
<span id="L3347" class="LineNr">3347 </span>    <span class="Special"><a href='trace.mu.html#L197'>error</a></span> trace, <span class="Constant">&quot;'height' needs 1 arg but got 0&quot;</span>
<span id="L3348" class="LineNr">3348 </span>    <span class="PreProc">return</span>
<span id="L3349" class="LineNr">3349 </span>  <span class="Delimiter">}</span>
<span id="L3350" class="LineNr">3350 </span>  <span class="muComment"># screen = args-&gt;left</span>
<span id="L3351" class="LineNr">3351 </span>  <span class="PreProc">var</span> first-ah/eax: (addr handle <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> get args, left
<span id="L3352" class="LineNr">3352 </span>  <span class="PreProc">var</span> first/eax: (addr <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> <a href='../120allocate.subx.html#L235'>lookup</a> *first-ah
<span id="L3353" class="LineNr">3353 </span>  <span class="Delimiter">{</span>
<span id="L3354" class="LineNr">3354 </span>    <span class="PreProc">var</span> first-type/eax: (addr int) <span class="Special">&lt;-</span> get first, <span class="PreProc">type</span>
<span id="L3355" class="LineNr">3355 </span>    compare *first-type, <span class="Constant">5</span>/screen
<span id="L3356" class="LineNr">3356 </span>    <span class="PreProc">break-if-=</span>
<span id="L3357" class="LineNr">3357 </span>    <span class="Special"><a href='trace.mu.html#L197'>error</a></span> trace, <span class="Constant">&quot;first arg for 'height' is not a screen&quot;</span>
<span id="L3358" class="LineNr">3358 </span>    <span class="PreProc">return</span>
<span id="L3359" class="LineNr">3359 </span>  <span class="Delimiter">}</span>
<span id="L3360" class="LineNr">3360 </span>  <span class="PreProc">var</span> screen-ah/eax: (addr handle <a href='../500fake-screen.mu.html#L16'>screen</a>) <span class="Special">&lt;-</span> get first, screen-data
<span id="L3361" class="LineNr">3361 </span>  <span class="PreProc">var</span> _screen/eax: (addr <a href='../500fake-screen.mu.html#L16'>screen</a>) <span class="Special">&lt;-</span> <a href='../120allocate.subx.html#L235'>lookup</a> *screen-ah
<span id="L3362" class="LineNr">3362 </span>  <span class="PreProc">var</span> <a href='../500fake-screen.mu.html#L16'>screen</a>/<span class="muRegEdx">edx</span>: (addr <a href='../500fake-screen.mu.html#L16'>screen</a>) <span class="Special">&lt;-</span> copy _screen
<span id="L3363" class="LineNr">3363 </span>  <span class="muComment"># compute dimensions</span>
<span id="L3364" class="LineNr">3364 </span>  <span class="PreProc">var</span> dummy/eax: int <span class="Special">&lt;-</span> copy <span class="Constant">0</span>
<span id="L3365" class="LineNr">3365 </span>  <span class="PreProc">var</span> height/<span class="muRegEcx">ecx</span>: int <span class="Special">&lt;-</span> copy <span class="Constant">0</span>
<span id="L3366" class="LineNr">3366 </span>  dummy, height <span class="Special">&lt;-</span> <a href='../500fake-screen.mu.html#L75'>screen-size</a> <a href='../500fake-screen.mu.html#L16'>screen</a>
<span id="L3367" class="LineNr">3367 </span>  height <span class="Special">&lt;-</span> shift-left <span class="Constant">4</span>/log2-font-height
<span id="L3368" class="LineNr">3368 </span>  <span class="PreProc">var</span> result/<span class="Constant">xmm0</span>: float <span class="Special">&lt;-</span> convert height
<span id="L3369" class="LineNr">3369 </span>  <a href='cell.mu.html#L112'>new-float</a> out, result
<span id="L3370" class="LineNr">3370 </span><span class="Delimiter">}</span>
<span id="L3371" class="LineNr">3371 </span>
<span id="L3372" class="LineNr">3372 </span><span class="PreProc">fn</span> <span class="muFunction"><a href='primitives.mu.html#L3372'>apply-new-screen</a></span> _args-ah: (addr handle <a href='cell.mu.html#L1'>cell</a>), out: (addr handle <a href='cell.mu.html#L1'>cell</a>), trace: (addr trace) <span class="Delimiter">{</span>
<span id="L3373" class="LineNr">3373 </span>  <a href='trace.mu.html#L185'>trace-text</a> trace, <span class="Constant">&quot;eval&quot;</span>, <span class="Constant">&quot;apply 'screen'&quot;</span>
<span id="L3374" class="LineNr">3374 </span>  <span class="PreProc">var</span> args-ah/eax: (addr handle <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> copy _args-ah
<span id="L3375" class="LineNr">3375 </span>  <span class="PreProc">var</span> _args/eax: (addr <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> <a href='../120allocate.subx.html#L235'>lookup</a> *args-ah
<span id="L3376" class="LineNr">3376 </span>  <span class="PreProc">var</span> args/<span class="muRegEsi">esi</span>: (addr <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> copy _args
<span id="L3377" class="LineNr">3377 </span>  <span class="Delimiter">{</span>
<span id="L3378" class="LineNr">3378 </span>    <span class="PreProc">var</span> args-type/eax: (addr int) <span class="Special">&lt;-</span> get args, <span class="PreProc">type</span>
<span id="L3379" class="LineNr">3379 </span>    compare *args-type, <span class="Constant">0</span>/pair
<span id="L3380" class="LineNr">3380 </span>    <span class="PreProc">break-if-=</span>
<span id="L3381" class="LineNr">3381 </span>    <span class="Special"><a href='trace.mu.html#L197'>error</a></span> trace, <span class="Constant">&quot;args to 'screen' are not a list&quot;</span>
<span id="L3382" class="LineNr">3382 </span>    <span class="PreProc">return</span>
<span id="L3383" class="LineNr">3383 </span>  <span class="Delimiter">}</span>
<span id="L3384" class="LineNr">3384 </span>  <span class="PreProc">var</span> empty-args?/eax: boolean <span class="Special">&lt;-</span> <a href='print.mu.html#L390'>nil?</a> args
<span id="L3385" class="LineNr">3385 </span>  compare empty-args?, <span class="Constant">0</span>/false
<span id="L3386" class="LineNr">3386 </span>  <span class="Delimiter">{</span>
<span id="L3387" class="LineNr">3387 </span>    <span class="PreProc">break-if-=</span>
<span id="L3388" class="LineNr">3388 </span>    <span class="Special"><a href='trace.mu.html#L197'>error</a></span> trace, <span class="Constant">&quot;'screen' needs 2 args but got 0&quot;</span>
<span id="L3389" class="LineNr">3389 </span>    <span class="PreProc">return</span>
<span id="L3390" class="LineNr">3390 </span>  <span class="Delimiter">}</span>
<span id="L3391" class="LineNr">3391 </span>  <span class="muComment"># args-&gt;left-&gt;value</span>
<span id="L3392" class="LineNr">3392 </span>  <span class="PreProc">var</span> first-ah/eax: (addr handle <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> get args, left
<span id="L3393" class="LineNr">3393 </span>  <span class="PreProc">var</span> first/eax: (addr <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> <a href='../120allocate.subx.html#L235'>lookup</a> *first-ah
<span id="L3394" class="LineNr">3394 </span>  <span class="Delimiter">{</span>
<span id="L3395" class="LineNr">3395 </span>    <span class="PreProc">var</span> first-type/eax: (addr int) <span class="Special">&lt;-</span> get first, <span class="PreProc">type</span>
<span id="L3396" class="LineNr">3396 </span>    compare *first-type, <span class="Constant">1</span>/number
<span id="L3397" class="LineNr">3397 </span>    <span class="PreProc">break-if-=</span>
<span id="L3398" class="LineNr">3398 </span>    <span class="Special"><a href='trace.mu.html#L197'>error</a></span> trace, <span class="Constant">&quot;first arg for 'screen' is not a number (<a href='../500fake-screen.mu.html#L16'>screen</a> width in pixels)&quot;</span>
<span id="L3399" class="LineNr">3399 </span>    <span class="PreProc">return</span>
<span id="L3400" class="LineNr">3400 </span>  <span class="Delimiter">}</span>
<span id="L3401" class="LineNr">3401 </span>  <span class="PreProc">var</span> first-value-a/<span class="muRegEcx">ecx</span>: (addr float) <span class="Special">&lt;-</span> get first, number-data
<span id="L3402" class="LineNr">3402 </span>  <span class="PreProc">var</span> first-value/<span class="muRegEcx">ecx</span>: int <span class="Special">&lt;-</span> convert *first-value-a
<span id="L3403" class="LineNr">3403 </span>  <span class="muComment"># args-&gt;right-&gt;left-&gt;value</span>
<span id="L3404" class="LineNr">3404 </span>  <span class="PreProc">var</span> right-ah/eax: (addr handle <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> get args, right
<span id="L3405" class="LineNr">3405 </span>  <span class="PreProc">var</span> right/eax: (addr <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> <a href='../120allocate.subx.html#L235'>lookup</a> *right-ah
<span id="L3406" class="LineNr">3406 </span>  <span class="Delimiter">{</span>
<span id="L3407" class="LineNr">3407 </span>    <span class="PreProc">var</span> right-type/eax: (addr int) <span class="Special">&lt;-</span> get right, <span class="PreProc">type</span>
<span id="L3408" class="LineNr">3408 </span>    compare *right-type, <span class="Constant">0</span>/pair
<span id="L3409" class="LineNr">3409 </span>    <span class="PreProc">break-if-=</span>
<span id="L3410" class="LineNr">3410 </span>    <span class="Special"><a href='trace.mu.html#L197'>error</a></span> trace, <span class="Constant">&quot;'screen' encountered non-pair&quot;</span>
<span id="L3411" class="LineNr">3411 </span>    <span class="PreProc">return</span>
<span id="L3412" class="LineNr">3412 </span>  <span class="Delimiter">}</span>
<span id="L3413" class="LineNr">3413 </span>  <span class="Delimiter">{</span>
<span id="L3414" class="LineNr">3414 </span>    <span class="PreProc">var</span> <a href='print.mu.html#L390'>nil?</a>/eax: boolean <span class="Special">&lt;-</span> <a href='print.mu.html#L390'>nil?</a> right
<span id="L3415" class="LineNr">3415 </span>    compare <a href='print.mu.html#L390'>nil?</a>, <span class="Constant">0</span>/false
<span id="L3416" class="LineNr">3416 </span>    <span class="PreProc">break-if-=</span>
<span id="L3417" class="LineNr">3417 </span>    <span class="Special"><a href='trace.mu.html#L197'>error</a></span> trace, <span class="Constant">&quot;'screen' needs 2 args but got 1&quot;</span>
<span id="L3418" class="LineNr">3418 </span>    <span class="PreProc">return</span>
<span id="L3419" class="LineNr">3419 </span>  <span class="Delimiter">}</span>
<span id="L3420" class="LineNr">3420 </span>  <span class="PreProc">var</span> second-ah/eax: (addr handle <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> get right, left
<span id="L3421" class="LineNr">3421 </span>  <span class="PreProc">var</span> second/eax: (addr <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> <a href='../120allocate.subx.html#L235'>lookup</a> *second-ah
<span id="L3422" class="LineNr">3422 </span>  <span class="Delimiter">{</span>
<span id="L3423" class="LineNr">3423 </span>    <span class="PreProc">var</span> second-type/eax: (addr int) <span class="Special">&lt;-</span> get second, <span class="PreProc">type</span>
<span id="L3424" class="LineNr">3424 </span>    compare *second-type, <span class="Constant">1</span>/number
<span id="L3425" class="LineNr">3425 </span>    <span class="PreProc">break-if-=</span>
<span id="L3426" class="LineNr">3426 </span>    <span class="Special"><a href='trace.mu.html#L197'>error</a></span> trace, <span class="Constant">&quot;second arg for 'screen' is not a number (<a href='../500fake-screen.mu.html#L16'>screen</a> height in pixels)&quot;</span>
<span id="L3427" class="LineNr">3427 </span>    <span class="PreProc">return</span>
<span id="L3428" class="LineNr">3428 </span>  <span class="Delimiter">}</span>
<span id="L3429" class="LineNr">3429 </span>  <span class="PreProc">var</span> second-value-a/<span class="muRegEdx">edx</span>: (addr float) <span class="Special">&lt;-</span> get second, number-data
<span id="L3430" class="LineNr">3430 </span>  <span class="PreProc">var</span> second-value/<span class="muRegEdx">edx</span>: int <span class="Special">&lt;-</span> convert *second-value-a
<span id="L3431" class="LineNr">3431 </span>  <span class="muComment"># create fake screen</span>
<span id="L3432" class="LineNr">3432 </span>  <a href='cell.mu.html#L204'>new-fake-screen</a> out, first-value, second-value, <span class="Constant">1</span>/pixel-graphics
<span id="L3433" class="LineNr">3433 </span><span class="Delimiter">}</span>
<span id="L3434" class="LineNr">3434 </span>
<span id="L3435" class="LineNr">3435 </span><span class="PreProc">fn</span> <span class="muFunction"><a href='primitives.mu.html#L3435'>apply-blit</a></span> _args-ah: (addr handle <a href='cell.mu.html#L1'>cell</a>), out: (addr handle <a href='cell.mu.html#L1'>cell</a>), trace: (addr trace) <span class="Delimiter">{</span>
<span id="L3436" class="LineNr">3436 </span>  <a href='trace.mu.html#L185'>trace-text</a> trace, <span class="Constant">&quot;eval&quot;</span>, <span class="Constant">&quot;apply 'blit'&quot;</span>
<span id="L3437" class="LineNr">3437 </span>  <span class="PreProc">var</span> args-ah/eax: (addr handle <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> copy _args-ah
<span id="L3438" class="LineNr">3438 </span>  <span class="PreProc">var</span> _args/eax: (addr <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> <a href='../120allocate.subx.html#L235'>lookup</a> *args-ah
<span id="L3439" class="LineNr">3439 </span>  <span class="PreProc">var</span> args/<span class="muRegEsi">esi</span>: (addr <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> copy _args
<span id="L3440" class="LineNr">3440 </span>  <span class="Delimiter">{</span>
<span id="L3441" class="LineNr">3441 </span>    <span class="PreProc">var</span> args-type/eax: (addr int) <span class="Special">&lt;-</span> get args, <span class="PreProc">type</span>
<span id="L3442" class="LineNr">3442 </span>    compare *args-type, <span class="Constant">0</span>/pair
<span id="L3443" class="LineNr">3443 </span>    <span class="PreProc">break-if-=</span>
<span id="L3444" class="LineNr">3444 </span>    <span class="Special"><a href='trace.mu.html#L197'>error</a></span> trace, <span class="Constant">&quot;args to 'blit' are not a list&quot;</span>
<span id="L3445" class="LineNr">3445 </span>    <span class="PreProc">return</span>
<span id="L3446" class="LineNr">3446 </span>  <span class="Delimiter">}</span>
<span id="L3447" class="LineNr">3447 </span>  <span class="PreProc">var</span> empty-args?/eax: boolean <span class="Special">&lt;-</span> <a href='print.mu.html#L390'>nil?</a> args
<span id="L3448" class="LineNr">3448 </span>  compare empty-args?, <span class="Constant">0</span>/false
<span id="L3449" class="LineNr">3449 </span>  <span class="Delimiter">{</span>
<span id="L3450" class="LineNr">3450 </span>    <span class="PreProc">break-if-=</span>
<span id="L3451" class="LineNr">3451 </span>    <span class="Special"><a href='trace.mu.html#L197'>error</a></span> trace, <span class="Constant">&quot;'blit' needs 2 args but got 0&quot;</span>
<span id="L3452" class="LineNr">3452 </span>    <span class="PreProc">return</span>
<span id="L3453" class="LineNr">3453 </span>  <span class="Delimiter">}</span>
<span id="L3454" class="LineNr">3454 </span>  <span class="muComment"># screen = args-&gt;left</span>
<span id="L3455" class="LineNr">3455 </span>  <span class="PreProc">var</span> first-ah/eax: (addr handle <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> get args, left
<span id="L3456" class="LineNr">3456 </span>  <span class="PreProc">var</span> first/eax: (addr <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> <a href='../120allocate.subx.html#L235'>lookup</a> *first-ah
<span id="L3457" class="LineNr">3457 </span>  <span class="Delimiter">{</span>
<span id="L3458" class="LineNr">3458 </span>    <span class="PreProc">var</span> first-type/eax: (addr int) <span class="Special">&lt;-</span> get first, <span class="PreProc">type</span>
<span id="L3459" class="LineNr">3459 </span>    compare *first-type, <span class="Constant">5</span>/screen
<span id="L3460" class="LineNr">3460 </span>    <span class="PreProc">break-if-=</span>
<span id="L3461" class="LineNr">3461 </span>    <span class="Special"><a href='trace.mu.html#L197'>error</a></span> trace, <span class="Constant">&quot;first arg for 'blit' is not a screen&quot;</span>
<span id="L3462" class="LineNr">3462 </span>    <span class="PreProc">return</span>
<span id="L3463" class="LineNr">3463 </span>  <span class="Delimiter">}</span>
<span id="L3464" class="LineNr">3464 </span>  <span class="PreProc">var</span> src-ah/eax: (addr handle <a href='../500fake-screen.mu.html#L16'>screen</a>) <span class="Special">&lt;-</span> get first, screen-data
<span id="L3465" class="LineNr">3465 </span>  <span class="PreProc">var</span> _src/eax: (addr <a href='../500fake-screen.mu.html#L16'>screen</a>) <span class="Special">&lt;-</span> <a href='../120allocate.subx.html#L235'>lookup</a> *src-ah
<span id="L3466" class="LineNr">3466 </span>  <span class="PreProc">var</span> src/<span class="muRegEcx">ecx</span>: (addr <a href='../500fake-screen.mu.html#L16'>screen</a>) <span class="Special">&lt;-</span> copy _src
<span id="L3467" class="LineNr">3467 </span>  <span class="muComment"># args-&gt;right-&gt;left</span>
<span id="L3468" class="LineNr">3468 </span>  <span class="PreProc">var</span> right-ah/eax: (addr handle <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> get args, right
<span id="L3469" class="LineNr">3469 </span>  <span class="PreProc">var</span> right/eax: (addr <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> <a href='../120allocate.subx.html#L235'>lookup</a> *right-ah
<span id="L3470" class="LineNr">3470 </span>  <span class="Delimiter">{</span>
<span id="L3471" class="LineNr">3471 </span>    <span class="PreProc">var</span> right-type/eax: (addr int) <span class="Special">&lt;-</span> get right, <span class="PreProc">type</span>
<span id="L3472" class="LineNr">3472 </span>    compare *right-type, <span class="Constant">0</span>/pair
<span id="L3473" class="LineNr">3473 </span>    <span class="PreProc">break-if-=</span>
<span id="L3474" class="LineNr">3474 </span>    <span class="Special"><a href='trace.mu.html#L197'>error</a></span> trace, <span class="Constant">&quot;'blit' encountered non-pair&quot;</span>
<span id="L3475" class="LineNr">3475 </span>    <span class="PreProc">return</span>
<span id="L3476" class="LineNr">3476 </span>  <span class="Delimiter">}</span>
<span id="L3477" class="LineNr">3477 </span>  <span class="Delimiter">{</span>
<span id="L3478" class="LineNr">3478 </span>    <span class="PreProc">var</span> <a href='print.mu.html#L390'>nil?</a>/eax: boolean <span class="Special">&lt;-</span> <a href='print.mu.html#L390'>nil?</a> right
<span id="L3479" class="LineNr">3479 </span>    compare <a href='print.mu.html#L390'>nil?</a>, <span class="Constant">0</span>/false
<span id="L3480" class="LineNr">3480 </span>    <span class="PreProc">break-if-=</span>
<span id="L3481" class="LineNr">3481 </span>    <span class="Special"><a href='trace.mu.html#L197'>error</a></span> trace, <span class="Constant">&quot;'blit' needs 2 args but got 1&quot;</span>
<span id="L3482" class="LineNr">3482 </span>    <span class="PreProc">return</span>
<span id="L3483" class="LineNr">3483 </span>  <span class="Delimiter">}</span>
<span id="L3484" class="LineNr">3484 </span>  <span class="PreProc">var</span> second-ah/eax: (addr handle <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> get right, left
<span id="L3485" class="LineNr">3485 </span>  <span class="PreProc">var</span> second/eax: (addr <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> <a href='../120allocate.subx.html#L235'>lookup</a> *second-ah
<span id="L3486" class="LineNr">3486 </span>  <span class="Delimiter">{</span>
<span id="L3487" class="LineNr">3487 </span>    <span class="PreProc">var</span> second-type/eax: (addr int) <span class="Special">&lt;-</span> get second, <span class="PreProc">type</span>
<span id="L3488" class="LineNr">3488 </span>    compare *second-type, <span class="Constant">5</span>/screen
<span id="L3489" class="LineNr">3489 </span>    <span class="PreProc">break-if-=</span>
<span id="L3490" class="LineNr">3490 </span>    <span class="Special"><a href='trace.mu.html#L197'>error</a></span> trace, <span class="Constant">&quot;second arg for 'blit' is not a screen&quot;</span>
<span id="L3491" class="LineNr">3491 </span>    <span class="PreProc">return</span>
<span id="L3492" class="LineNr">3492 </span>  <span class="Delimiter">}</span>
<span id="L3493" class="LineNr">3493 </span>  <span class="PreProc">var</span> dest-ah/eax: (addr handle <a href='../500fake-screen.mu.html#L16'>screen</a>) <span class="Special">&lt;-</span> get second, screen-data
<span id="L3494" class="LineNr">3494 </span>  <span class="PreProc">var</span> dest/eax: (addr <a href='../500fake-screen.mu.html#L16'>screen</a>) <span class="Special">&lt;-</span> <a href='../120allocate.subx.html#L235'>lookup</a> *dest-ah
<span id="L3495" class="LineNr">3495 </span>  <span class="muComment">#</span>
<span id="L3496" class="LineNr">3496 </span>  <a href='../500fake-screen.mu.html#L683'>convert-screen-cells-to-pixels</a> src
<span id="L3497" class="LineNr">3497 </span>  <a href='../500fake-screen.mu.html#L643'>copy-pixels</a> src, dest
<span id="L3498" class="LineNr">3498 </span><span class="Delimiter">}</span>
<span id="L3499" class="LineNr">3499 </span>
<span id="L3500" class="LineNr">3500 </span><span class="PreProc">fn</span> <span class="muFunction"><a href='primitives.mu.html#L3500'>apply-array</a></span> _args-ah: (addr handle <a href='cell.mu.html#L1'>cell</a>), _out-ah: (addr handle <a href='cell.mu.html#L1'>cell</a>), trace: (addr trace) <span class="Delimiter">{</span>
<span id="L3501" class="LineNr">3501 </span>  <a href='trace.mu.html#L185'>trace-text</a> trace, <span class="Constant">&quot;eval&quot;</span>, <span class="Constant">&quot;apply 'array'&quot;</span>
<span id="L3502" class="LineNr">3502 </span>  <span class="PreProc">var</span> args-ah/eax: (addr handle <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> copy _args-ah
<span id="L3503" class="LineNr">3503 </span>  <span class="PreProc">var</span> _args/eax: (addr <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> <a href='../120allocate.subx.html#L235'>lookup</a> *args-ah
<span id="L3504" class="LineNr">3504 </span>  <span class="PreProc">var</span> args/<span class="muRegEsi">esi</span>: (addr <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> copy _args
<span id="L3505" class="LineNr">3505 </span>  <span class="Delimiter">{</span>
<span id="L3506" class="LineNr">3506 </span>    <span class="PreProc">var</span> args-type/eax: (addr int) <span class="Special">&lt;-</span> get args, <span class="PreProc">type</span>
<span id="L3507" class="LineNr">3507 </span>    compare *args-type, <span class="Constant">0</span>/pair
<span id="L3508" class="LineNr">3508 </span>    <span class="PreProc">break-if-=</span>
<span id="L3509" class="LineNr">3509 </span>    <span class="Special"><a href='trace.mu.html#L197'>error</a></span> trace, <span class="Constant">&quot;args to 'array' are not a list&quot;</span>
<span id="L3510" class="LineNr">3510 </span>    <span class="PreProc">return</span>
<span id="L3511" class="LineNr">3511 </span>  <span class="Delimiter">}</span>
<span id="L3512" class="LineNr">3512 </span>  <span class="PreProc">var</span> capacity/eax: int <span class="Special">&lt;-</span> <a href='primitives.mu.html#L1299'>list-length</a> args
<span id="L3513" class="LineNr">3513 </span>  <span class="PreProc">var</span> out-ah/<span class="muRegEdi">edi</span>: (addr handle <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> copy _out-ah
<span id="L3514" class="LineNr">3514 </span>  <a href='cell.mu.html#L280'>new-array</a> out-ah, capacity
<span id="L3515" class="LineNr">3515 </span>  <span class="PreProc">var</span> out/eax: (addr <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> <a href='../120allocate.subx.html#L235'>lookup</a> *out-ah
<span id="L3516" class="LineNr">3516 </span>  <span class="PreProc">var</span> out-data-ah/eax: (addr handle array handle <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> get out, array-data
<span id="L3517" class="LineNr">3517 </span>  <span class="PreProc">var</span> _out-data/eax: (addr array handle <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> <a href='../120allocate.subx.html#L235'>lookup</a> *out-data-ah
<span id="L3518" class="LineNr">3518 </span>  <span class="PreProc">var</span> out-data/<span class="muRegEdi">edi</span>: (addr array handle <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> copy _out-data
<span id="L3519" class="LineNr">3519 </span>  <span class="PreProc">var</span> i/<span class="muRegEcx">ecx</span>: int <span class="Special">&lt;-</span> copy <span class="Constant">0</span>
<span id="L3520" class="LineNr">3520 </span>  <span class="Delimiter">{</span>
<span id="L3521" class="LineNr">3521 </span>    <span class="PreProc">var</span> done?/eax: boolean <span class="Special">&lt;-</span> <a href='print.mu.html#L390'>nil?</a> args
<span id="L3522" class="LineNr">3522 </span>    compare done?, <span class="Constant">0</span>/false
<span id="L3523" class="LineNr">3523 </span>    <span class="PreProc">break-if-!=</span>
<span id="L3524" class="LineNr">3524 </span>    <span class="PreProc">var</span> curr-ah/eax: (addr handle <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> get args, left
<span id="L3525" class="LineNr">3525 </span>    <span class="PreProc">var</span> dest-ah/<span class="muRegEdx">edx</span>: (addr handle <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> index out-data, i
<span id="L3526" class="LineNr">3526 </span>    copy-object curr-ah, dest-ah
<span id="L3527" class="LineNr">3527 </span>    <span class="muComment"># update loop variables</span>
<span id="L3528" class="LineNr">3528 </span>    i <span class="Special">&lt;-</span> increment
<span id="L3529" class="LineNr">3529 </span>    <span class="PreProc">var</span> next-ah/eax: (addr handle <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> get args, right
<span id="L3530" class="LineNr">3530 </span>    <span class="PreProc">var</span> next/eax: (addr <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> <a href='../120allocate.subx.html#L235'>lookup</a> *next-ah
<span id="L3531" class="LineNr">3531 </span>    args <span class="Special">&lt;-</span> copy next
<span id="L3532" class="LineNr">3532 </span>    <span class="PreProc">loop</span>
<span id="L3533" class="LineNr">3533 </span>  <span class="Delimiter">}</span>
<span id="L3534" class="LineNr">3534 </span><span class="Delimiter">}</span>
<span id="L3535" class="LineNr">3535 </span>
<span id="L3536" class="LineNr">3536 </span><span class="PreProc">fn</span> <span class="muFunction"><a href='primitives.mu.html#L3536'>apply-populate</a></span> _args-ah: (addr handle <a href='cell.mu.html#L1'>cell</a>), _out-ah: (addr handle <a href='cell.mu.html#L1'>cell</a>), trace: (addr trace) <span class="Delimiter">{</span>
<span id="L3537" class="LineNr">3537 </span>  <a href='trace.mu.html#L185'>trace-text</a> trace, <span class="Constant">&quot;eval&quot;</span>, <span class="Constant">&quot;apply 'populate'&quot;</span>
<span id="L3538" class="LineNr">3538 </span>  <span class="PreProc">var</span> args-ah/eax: (addr handle <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> copy _args-ah
<span id="L3539" class="LineNr">3539 </span>  <span class="PreProc">var</span> _args/eax: (addr <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> <a href='../120allocate.subx.html#L235'>lookup</a> *args-ah
<span id="L3540" class="LineNr">3540 </span>  <span class="PreProc">var</span> args/<span class="muRegEsi">esi</span>: (addr <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> copy _args
<span id="L3541" class="LineNr">3541 </span>  <span class="Delimiter">{</span>
<span id="L3542" class="LineNr">3542 </span>    <span class="PreProc">var</span> args-type/eax: (addr int) <span class="Special">&lt;-</span> get args, <span class="PreProc">type</span>
<span id="L3543" class="LineNr">3543 </span>    compare *args-type, <span class="Constant">0</span>/pair
<span id="L3544" class="LineNr">3544 </span>    <span class="PreProc">break-if-=</span>
<span id="L3545" class="LineNr">3545 </span>    <span class="Special"><a href='trace.mu.html#L197'>error</a></span> trace, <span class="Constant">&quot;args to 'populate' are not a list&quot;</span>
<span id="L3546" class="LineNr">3546 </span>    <span class="PreProc">return</span>
<span id="L3547" class="LineNr">3547 </span>  <span class="Delimiter">}</span>
<span id="L3548" class="LineNr">3548 </span>  <span class="PreProc">var</span> empty-args?/eax: boolean <span class="Special">&lt;-</span> <a href='print.mu.html#L390'>nil?</a> args
<span id="L3549" class="LineNr">3549 </span>  compare empty-args?, <span class="Constant">0</span>/false
<span id="L3550" class="LineNr">3550 </span>  <span class="Delimiter">{</span>
<span id="L3551" class="LineNr">3551 </span>    <span class="PreProc">break-if-=</span>
<span id="L3552" class="LineNr">3552 </span>    <span class="Special"><a href='trace.mu.html#L197'>error</a></span> trace, <span class="Constant">&quot;'populate' needs 2 args but got 0&quot;</span>
<span id="L3553" class="LineNr">3553 </span>    <span class="PreProc">return</span>
<span id="L3554" class="LineNr">3554 </span>  <span class="Delimiter">}</span>
<span id="L3555" class="LineNr">3555 </span>  <span class="muComment"># args-&gt;left</span>
<span id="L3556" class="LineNr">3556 </span>  <span class="PreProc">var</span> first-ah/<span class="muRegEcx">ecx</span>: (addr handle <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> get args, left
<span id="L3557" class="LineNr">3557 </span>  <span class="muComment"># args-&gt;right-&gt;left</span>
<span id="L3558" class="LineNr">3558 </span>  <span class="PreProc">var</span> right-ah/eax: (addr handle <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> get args, right
<span id="L3559" class="LineNr">3559 </span>  <span class="PreProc">var</span> right/eax: (addr <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> <a href='../120allocate.subx.html#L235'>lookup</a> *right-ah
<span id="L3560" class="LineNr">3560 </span>  <span class="Delimiter">{</span>
<span id="L3561" class="LineNr">3561 </span>    <span class="PreProc">var</span> right-type/eax: (addr int) <span class="Special">&lt;-</span> get right, <span class="PreProc">type</span>
<span id="L3562" class="LineNr">3562 </span>    compare *right-type, <span class="Constant">0</span>/pair
<span id="L3563" class="LineNr">3563 </span>    <span class="PreProc">break-if-=</span>
<span id="L3564" class="LineNr">3564 </span>    <span class="Special"><a href='trace.mu.html#L197'>error</a></span> trace, <span class="Constant">&quot;'populate' encountered non-pair&quot;</span>
<span id="L3565" class="LineNr">3565 </span>    <span class="PreProc">return</span>
<span id="L3566" class="LineNr">3566 </span>  <span class="Delimiter">}</span>
<span id="L3567" class="LineNr">3567 </span>  <span class="Delimiter">{</span>
<span id="L3568" class="LineNr">3568 </span>    <span class="PreProc">var</span> <a href='print.mu.html#L390'>nil?</a>/eax: boolean <span class="Special">&lt;-</span> <a href='print.mu.html#L390'>nil?</a> right
<span id="L3569" class="LineNr">3569 </span>    compare <a href='print.mu.html#L390'>nil?</a>, <span class="Constant">0</span>/false
<span id="L3570" class="LineNr">3570 </span>    <span class="PreProc">break-if-=</span>
<span id="L3571" class="LineNr">3571 </span>    <span class="Special"><a href='trace.mu.html#L197'>error</a></span> trace, <span class="Constant">&quot;'populate' needs 2 args but got 1&quot;</span>
<span id="L3572" class="LineNr">3572 </span>    <span class="PreProc">return</span>
<span id="L3573" class="LineNr">3573 </span>  <span class="Delimiter">}</span>
<span id="L3574" class="LineNr">3574 </span>  <span class="PreProc">var</span> second-ah/<span class="muRegEdx">edx</span>: (addr handle <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> get right, left
<span id="L3575" class="LineNr">3575 </span>  <span class="muComment">#</span>
<span id="L3576" class="LineNr">3576 </span>  <span class="PreProc">var</span> first/eax: (addr <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> <a href='../120allocate.subx.html#L235'>lookup</a> *first-ah
<span id="L3577" class="LineNr">3577 </span>  <span class="Delimiter">{</span>
<span id="L3578" class="LineNr">3578 </span>    <span class="PreProc">var</span> first-type/eax: (addr int) <span class="Special">&lt;-</span> get first, <span class="PreProc">type</span>
<span id="L3579" class="LineNr">3579 </span>    compare *first-type, <span class="Constant">1</span>/number
<span id="L3580" class="LineNr">3580 </span>    <span class="PreProc">break-if-=</span>
<span id="L3581" class="LineNr">3581 </span>    <span class="Special"><a href='trace.mu.html#L197'>error</a></span> trace, <span class="Constant">&quot;first arg for 'populate' is not a number&quot;</span>
<span id="L3582" class="LineNr">3582 </span>    <span class="PreProc">return</span>
<span id="L3583" class="LineNr">3583 </span>  <span class="Delimiter">}</span>
<span id="L3584" class="LineNr">3584 </span>  <span class="PreProc">var</span> first-value/eax: (addr float) <span class="Special">&lt;-</span> get first, number-data
<span id="L3585" class="LineNr">3585 </span>  <span class="PreProc">var</span> capacity/<span class="muRegEcx">ecx</span>: int <span class="Special">&lt;-</span> convert *first-value
<span id="L3586" class="LineNr">3586 </span>  <span class="PreProc">var</span> out-ah/<span class="muRegEdi">edi</span>: (addr handle <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> copy _out-ah
<span id="L3587" class="LineNr">3587 </span>  <a href='cell.mu.html#L280'>new-array</a> out-ah, capacity
<span id="L3588" class="LineNr">3588 </span>  <span class="PreProc">var</span> out/eax: (addr <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> <a href='../120allocate.subx.html#L235'>lookup</a> *out-ah
<span id="L3589" class="LineNr">3589 </span>  <span class="PreProc">var</span> data-ah/eax: (addr handle array handle <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> get out, array-data
<span id="L3590" class="LineNr">3590 </span>  <span class="PreProc">var</span> data/eax: (addr array handle <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> <a href='../120allocate.subx.html#L235'>lookup</a> *data-ah
<span id="L3591" class="LineNr">3591 </span>  <span class="PreProc">var</span> i/<span class="muRegEbx">ebx</span>: int <span class="Special">&lt;-</span> copy <span class="Constant">0</span>
<span id="L3592" class="LineNr">3592 </span>  <span class="Delimiter">{</span>
<span id="L3593" class="LineNr">3593 </span>    compare i, capacity
<span id="L3594" class="LineNr">3594 </span>    <span class="PreProc">break-if-&gt;=</span>
<span id="L3595" class="LineNr">3595 </span>    <span class="PreProc">var</span> curr-ah/<span class="muRegEcx">ecx</span>: (addr handle <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> index data, i
<span id="L3596" class="LineNr">3596 </span>    copy-object second-ah, curr-ah
<span id="L3597" class="LineNr">3597 </span>    i <span class="Special">&lt;-</span> increment
<span id="L3598" class="LineNr">3598 </span>    <span class="PreProc">loop</span>
<span id="L3599" class="LineNr">3599 </span>  <span class="Delimiter">}</span>
<span id="L3600" class="LineNr">3600 </span><span class="Delimiter">}</span>
<span id="L3601" class="LineNr">3601 </span>
<span id="L3602" class="LineNr">3602 </span><span class="PreProc">fn</span> <span class="muFunction"><a href='primitives.mu.html#L3602'>apply-index</a></span> _args-ah: (addr handle <a href='cell.mu.html#L1'>cell</a>), out: (addr handle <a href='cell.mu.html#L1'>cell</a>), trace: (addr trace) <span class="Delimiter">{</span>
<span id="L3603" class="LineNr">3603 </span>  <a href='trace.mu.html#L185'>trace-text</a> trace, <span class="Constant">&quot;eval&quot;</span>, <span class="Constant">&quot;apply 'index'&quot;</span>
<span id="L3604" class="LineNr">3604 </span>  <span class="PreProc">var</span> args-ah/eax: (addr handle <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> copy _args-ah
<span id="L3605" class="LineNr">3605 </span>  <span class="PreProc">var</span> _args/eax: (addr <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> <a href='../120allocate.subx.html#L235'>lookup</a> *args-ah
<span id="L3606" class="LineNr">3606 </span>  <span class="PreProc">var</span> args/<span class="muRegEsi">esi</span>: (addr <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> copy _args
<span id="L3607" class="LineNr">3607 </span>  <span class="Delimiter">{</span>
<span id="L3608" class="LineNr">3608 </span>    <span class="PreProc">var</span> args-type/eax: (addr int) <span class="Special">&lt;-</span> get args, <span class="PreProc">type</span>
<span id="L3609" class="LineNr">3609 </span>    compare *args-type, <span class="Constant">0</span>/pair
<span id="L3610" class="LineNr">3610 </span>    <span class="PreProc">break-if-=</span>
<span id="L3611" class="LineNr">3611 </span>    <span class="Special"><a href='trace.mu.html#L197'>error</a></span> trace, <span class="Constant">&quot;args to 'index' are not a list&quot;</span>
<span id="L3612" class="LineNr">3612 </span>    <span class="PreProc">return</span>
<span id="L3613" class="LineNr">3613 </span>  <span class="Delimiter">}</span>
<span id="L3614" class="LineNr">3614 </span>  <span class="PreProc">var</span> empty-args?/eax: boolean <span class="Special">&lt;-</span> <a href='print.mu.html#L390'>nil?</a> args
<span id="L3615" class="LineNr">3615 </span>  compare empty-args?, <span class="Constant">0</span>/false
<span id="L3616" class="LineNr">3616 </span>  <span class="Delimiter">{</span>
<span id="L3617" class="LineNr">3617 </span>    <span class="PreProc">break-if-=</span>
<span id="L3618" class="LineNr">3618 </span>    <span class="Special"><a href='trace.mu.html#L197'>error</a></span> trace, <span class="Constant">&quot;'index' needs 2 args but got 0&quot;</span>
<span id="L3619" class="LineNr">3619 </span>    <span class="PreProc">return</span>
<span id="L3620" class="LineNr">3620 </span>  <span class="Delimiter">}</span>
<span id="L3621" class="LineNr">3621 </span>  <span class="muComment"># args-&gt;left</span>
<span id="L3622" class="LineNr">3622 </span>  <span class="PreProc">var</span> first-ah/<span class="muRegEcx">ecx</span>: (addr handle <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> get args, left
<span id="L3623" class="LineNr">3623 </span>  <span class="muComment"># args-&gt;right-&gt;left</span>
<span id="L3624" class="LineNr">3624 </span>  <span class="PreProc">var</span> right-ah/eax: (addr handle <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> get args, right
<span id="L3625" class="LineNr">3625 </span>  <span class="PreProc">var</span> right/eax: (addr <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> <a href='../120allocate.subx.html#L235'>lookup</a> *right-ah
<span id="L3626" class="LineNr">3626 </span>  <span class="Delimiter">{</span>
<span id="L3627" class="LineNr">3627 </span>    <span class="PreProc">var</span> right-type/eax: (addr int) <span class="Special">&lt;-</span> get right, <span class="PreProc">type</span>
<span id="L3628" class="LineNr">3628 </span>    compare *right-type, <span class="Constant">0</span>/pair
<span id="L3629" class="LineNr">3629 </span>    <span class="PreProc">break-if-=</span>
<span id="L3630" class="LineNr">3630 </span>    <span class="Special"><a href='trace.mu.html#L197'>error</a></span> trace, <span class="Constant">&quot;'index' encountered non-pair&quot;</span>
<span id="L3631" class="LineNr">3631 </span>    <span class="PreProc">return</span>
<span id="L3632" class="LineNr">3632 </span>  <span class="Delimiter">}</span>
<span id="L3633" class="LineNr">3633 </span>  <span class="Delimiter">{</span>
<span id="L3634" class="LineNr">3634 </span>    <span class="PreProc">var</span> <a href='print.mu.html#L390'>nil?</a>/eax: boolean <span class="Special">&lt;-</span> <a href='print.mu.html#L390'>nil?</a> right
<span id="L3635" class="LineNr">3635 </span>    compare <a href='print.mu.html#L390'>nil?</a>, <span class="Constant">0</span>/false
<span id="L3636" class="LineNr">3636 </span>    <span class="PreProc">break-if-=</span>
<span id="L3637" class="LineNr">3637 </span>    <span class="Special"><a href='trace.mu.html#L197'>error</a></span> trace, <span class="Constant">&quot;'index' needs 2 args but got 1&quot;</span>
<span id="L3638" class="LineNr">3638 </span>    <span class="PreProc">return</span>
<span id="L3639" class="LineNr">3639 </span>  <span class="Delimiter">}</span>
<span id="L3640" class="LineNr">3640 </span>  <span class="PreProc">var</span> second-ah/<span class="muRegEdx">edx</span>: (addr handle <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> get right, left
<span id="L3641" class="LineNr">3641 </span>  <span class="muComment"># index</span>
<span id="L3642" class="LineNr">3642 </span>  <span class="PreProc">var</span> _first/eax: (addr <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> <a href='../120allocate.subx.html#L235'>lookup</a> *first-ah
<span id="L3643" class="LineNr">3643 </span>  <span class="PreProc">var</span> first/<span class="muRegEcx">ecx</span>: (addr <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> copy _first
<span id="L3644" class="LineNr">3644 </span>  <span class="Delimiter">{</span>
<span id="L3645" class="LineNr">3645 </span>    <span class="PreProc">var</span> first-type/eax: (addr int) <span class="Special">&lt;-</span> get first, <span class="PreProc">type</span>
<span id="L3646" class="LineNr">3646 </span>    compare *first-type, <span class="Constant">7</span>/array
<span id="L3647" class="LineNr">3647 </span>    <span class="PreProc">break-if-=</span>
<span id="L3648" class="LineNr">3648 </span>    <span class="Special"><a href='trace.mu.html#L197'>error</a></span> trace, <span class="Constant">&quot;first arg for 'index' is not an array&quot;</span>
<span id="L3649" class="LineNr">3649 </span>    <span class="PreProc">return</span>
<span id="L3650" class="LineNr">3650 </span>  <span class="Delimiter">}</span>
<span id="L3651" class="LineNr">3651 </span>  <span class="PreProc">var</span> second/eax: (addr <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> <a href='../120allocate.subx.html#L235'>lookup</a> *second-ah
<span id="L3652" class="LineNr">3652 </span>  <span class="Delimiter">{</span>
<span id="L3653" class="LineNr">3653 </span>    <span class="PreProc">var</span> second-type/eax: (addr int) <span class="Special">&lt;-</span> get second, <span class="PreProc">type</span>
<span id="L3654" class="LineNr">3654 </span>    compare *second-type, <span class="Constant">1</span>/number
<span id="L3655" class="LineNr">3655 </span>    <span class="PreProc">break-if-=</span>
<span id="L3656" class="LineNr">3656 </span>    <span class="Special"><a href='trace.mu.html#L197'>error</a></span> trace, <span class="Constant">&quot;second arg for 'index' is not a number&quot;</span>
<span id="L3657" class="LineNr">3657 </span>    <span class="PreProc">return</span>
<span id="L3658" class="LineNr">3658 </span>  <span class="Delimiter">}</span>
<span id="L3659" class="LineNr">3659 </span>  <span class="PreProc">var</span> second-value/eax: (addr float) <span class="Special">&lt;-</span> get second, number-data
<span id="L3660" class="LineNr">3660 </span>  <span class="PreProc">var</span> index/<span class="muRegEdx">edx</span>: int <span class="Special">&lt;-</span> truncate *second-value
<span id="L3661" class="LineNr">3661 </span>  <span class="PreProc">var</span> data-ah/eax: (addr handle array handle <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> get first, array-data
<span id="L3662" class="LineNr">3662 </span>  <span class="PreProc">var</span> data/eax: (addr array handle <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> <a href='../120allocate.subx.html#L235'>lookup</a> *data-ah
<span id="L3663" class="LineNr">3663 </span>  <span class="Delimiter">{</span>
<span id="L3664" class="LineNr">3664 </span>    <span class="PreProc">var</span> len/eax: int <span class="Special">&lt;-</span> length data
<span id="L3665" class="LineNr">3665 </span>    compare index, len
<span id="L3666" class="LineNr">3666 </span>    <span class="PreProc">break-if-&lt;</span>
<span id="L3667" class="LineNr">3667 </span>    <span class="Special"><a href='trace.mu.html#L197'>error</a></span> trace, <span class="Constant">&quot;index: too few elements in array&quot;</span>
<span id="L3668" class="LineNr">3668 </span>    compare index, len
<span id="L3669" class="LineNr">3669 </span>    <span class="Delimiter">{</span>
<span id="L3670" class="LineNr">3670 </span>      <span class="PreProc">break-if-&lt;=</span>
<span id="L3671" class="LineNr">3671 </span>      <span class="Special"><a href='trace.mu.html#L197'>error</a></span> trace, <span class="Constant">&quot;foo&quot;</span>
<span id="L3672" class="LineNr">3672 </span>    <span class="Delimiter">}</span>
<span id="L3673" class="LineNr">3673 </span>    <span class="PreProc">return</span>
<span id="L3674" class="LineNr">3674 </span>  <span class="Delimiter">}</span>
<span id="L3675" class="LineNr">3675 </span>  <span class="PreProc">var</span> offset/<span class="muRegEdx">edx</span>: (offset handle <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> compute-offset data, index
<span id="L3676" class="LineNr">3676 </span>  <span class="PreProc">var</span> src/eax: (addr handle <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> index data, offset
<span id="L3677" class="LineNr">3677 </span>  copy-object src, out
<span id="L3678" class="LineNr">3678 </span><span class="Delimiter">}</span>
<span id="L3679" class="LineNr">3679 </span>
<span id="L3680" class="LineNr">3680 </span><span class="PreProc">fn</span> <span class="muFunction"><a href='primitives.mu.html#L3680'>apply-iset</a></span> _args-ah: (addr handle <a href='cell.mu.html#L1'>cell</a>), out: (addr handle <a href='cell.mu.html#L1'>cell</a>), trace: (addr trace) <span class="Delimiter">{</span>
<span id="L3681" class="LineNr">3681 </span>  <a href='trace.mu.html#L185'>trace-text</a> trace, <span class="Constant">&quot;eval&quot;</span>, <span class="Constant">&quot;apply 'iset'&quot;</span>
<span id="L3682" class="LineNr">3682 </span>  <span class="PreProc">var</span> args-ah/eax: (addr handle <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> copy _args-ah
<span id="L3683" class="LineNr">3683 </span>  <span class="PreProc">var</span> _args/eax: (addr <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> <a href='../120allocate.subx.html#L235'>lookup</a> *args-ah
<span id="L3684" class="LineNr">3684 </span>  <span class="PreProc">var</span> args/<span class="muRegEsi">esi</span>: (addr <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> copy _args
<span id="L3685" class="LineNr">3685 </span>  <span class="Delimiter">{</span>
<span id="L3686" class="LineNr">3686 </span>    <span class="PreProc">var</span> args-type/eax: (addr int) <span class="Special">&lt;-</span> get args, <span class="PreProc">type</span>
<span id="L3687" class="LineNr">3687 </span>    compare *args-type, <span class="Constant">0</span>/pair
<span id="L3688" class="LineNr">3688 </span>    <span class="PreProc">break-if-=</span>
<span id="L3689" class="LineNr">3689 </span>    <span class="Special"><a href='trace.mu.html#L197'>error</a></span> trace, <span class="Constant">&quot;args to 'iset' are not a list&quot;</span>
<span id="L3690" class="LineNr">3690 </span>    <span class="PreProc">return</span>
<span id="L3691" class="LineNr">3691 </span>  <span class="Delimiter">}</span>
<span id="L3692" class="LineNr">3692 </span>  <span class="PreProc">var</span> empty-args?/eax: boolean <span class="Special">&lt;-</span> <a href='print.mu.html#L390'>nil?</a> args
<span id="L3693" class="LineNr">3693 </span>  compare empty-args?, <span class="Constant">0</span>/false
<span id="L3694" class="LineNr">3694 </span>  <span class="Delimiter">{</span>
<span id="L3695" class="LineNr">3695 </span>    <span class="PreProc">break-if-=</span>
<span id="L3696" class="LineNr">3696 </span>    <span class="Special"><a href='trace.mu.html#L197'>error</a></span> trace, <span class="Constant">&quot;'iset' needs 3 args but got 0&quot;</span>
<span id="L3697" class="LineNr">3697 </span>    <span class="PreProc">return</span>
<span id="L3698" class="LineNr">3698 </span>  <span class="Delimiter">}</span>
<span id="L3699" class="LineNr">3699 </span>  <span class="muComment"># array = args-&gt;left</span>
<span id="L3700" class="LineNr">3700 </span>  <span class="PreProc">var</span> first-ah/eax: (addr handle <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> get args, left
<span id="L3701" class="LineNr">3701 </span>  <span class="PreProc">var</span> first/eax: (addr <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> <a href='../120allocate.subx.html#L235'>lookup</a> *first-ah
<span id="L3702" class="LineNr">3702 </span>  <span class="Delimiter">{</span>
<span id="L3703" class="LineNr">3703 </span>    <span class="PreProc">var</span> first-type/eax: (addr int) <span class="Special">&lt;-</span> get first, <span class="PreProc">type</span>
<span id="L3704" class="LineNr">3704 </span>    compare *first-type, <span class="Constant">7</span>/array
<span id="L3705" class="LineNr">3705 </span>    <span class="PreProc">break-if-=</span>
<span id="L3706" class="LineNr">3706 </span>    <span class="Special"><a href='trace.mu.html#L197'>error</a></span> trace, <span class="Constant">&quot;first arg for 'iset' is not an array&quot;</span>
<span id="L3707" class="LineNr">3707 </span>    <span class="PreProc">return</span>
<span id="L3708" class="LineNr">3708 </span>  <span class="Delimiter">}</span>
<span id="L3709" class="LineNr">3709 </span>  <span class="PreProc">var</span> array-ah/eax: (addr handle array handle <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> get first, array-data
<span id="L3710" class="LineNr">3710 </span>  <span class="PreProc">var</span> _array/eax: (addr array handle <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> <a href='../120allocate.subx.html#L235'>lookup</a> *array-ah
<span id="L3711" class="LineNr">3711 </span>  <span class="PreProc">var</span> array/<span class="muRegEcx">ecx</span>: (addr array handle <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> copy _array
<span id="L3712" class="LineNr">3712 </span>  <span class="muComment"># idx = args-&gt;right-&gt;left-&gt;value</span>
<span id="L3713" class="LineNr">3713 </span>  <span class="PreProc">var</span> rest-ah/eax: (addr handle <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> get args, right
<span id="L3714" class="LineNr">3714 </span>  <span class="PreProc">var</span> _rest/eax: (addr <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> <a href='../120allocate.subx.html#L235'>lookup</a> *rest-ah
<span id="L3715" class="LineNr">3715 </span>  <span class="PreProc">var</span> rest/<span class="muRegEsi">esi</span>: (addr <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> copy _rest
<span id="L3716" class="LineNr">3716 </span>  <span class="Delimiter">{</span>
<span id="L3717" class="LineNr">3717 </span>    <span class="PreProc">var</span> rest-type/eax: (addr int) <span class="Special">&lt;-</span> get rest, <span class="PreProc">type</span>
<span id="L3718" class="LineNr">3718 </span>    compare *rest-type, <span class="Constant">0</span>/pair
<span id="L3719" class="LineNr">3719 </span>    <span class="PreProc">break-if-=</span>
<span id="L3720" class="LineNr">3720 </span>    <span class="Special"><a href='trace.mu.html#L197'>error</a></span> trace, <span class="Constant">&quot;'iset' encountered non-pair&quot;</span>
<span id="L3721" class="LineNr">3721 </span>    <span class="PreProc">return</span>
<span id="L3722" class="LineNr">3722 </span>  <span class="Delimiter">}</span>
<span id="L3723" class="LineNr">3723 </span>  <span class="Delimiter">{</span>
<span id="L3724" class="LineNr">3724 </span>    <span class="PreProc">var</span> rest-nil?/eax: boolean <span class="Special">&lt;-</span> <a href='print.mu.html#L390'>nil?</a> rest
<span id="L3725" class="LineNr">3725 </span>    compare rest-nil?, <span class="Constant">0</span>/false
<span id="L3726" class="LineNr">3726 </span>    <span class="PreProc">break-if-=</span>
<span id="L3727" class="LineNr">3727 </span>    <span class="Special"><a href='trace.mu.html#L197'>error</a></span> trace, <span class="Constant">&quot;'iset' needs 3 args but got 1&quot;</span>
<span id="L3728" class="LineNr">3728 </span>    <span class="PreProc">return</span>
<span id="L3729" class="LineNr">3729 </span>  <span class="Delimiter">}</span>
<span id="L3730" class="LineNr">3730 </span>  <span class="PreProc">var</span> second-ah/eax: (addr handle <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> get rest, left
<span id="L3731" class="LineNr">3731 </span>  <span class="PreProc">var</span> second/eax: (addr <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> <a href='../120allocate.subx.html#L235'>lookup</a> *second-ah
<span id="L3732" class="LineNr">3732 </span>  <span class="Delimiter">{</span>
<span id="L3733" class="LineNr">3733 </span>    <span class="PreProc">var</span> second-type/eax: (addr int) <span class="Special">&lt;-</span> get second, <span class="PreProc">type</span>
<span id="L3734" class="LineNr">3734 </span>    compare *second-type, <span class="Constant">1</span>/number
<span id="L3735" class="LineNr">3735 </span>    <span class="PreProc">break-if-=</span>
<span id="L3736" class="LineNr">3736 </span>    <span class="Special"><a href='trace.mu.html#L197'>error</a></span> trace, <span class="Constant">&quot;second arg for 'iset' is not an int (index)&quot;</span>
<span id="L3737" class="LineNr">3737 </span>    <span class="PreProc">return</span>
<span id="L3738" class="LineNr">3738 </span>  <span class="Delimiter">}</span>
<span id="L3739" class="LineNr">3739 </span>  <span class="PreProc">var</span> second-value/eax: (addr float) <span class="Special">&lt;-</span> get second, number-data
<span id="L3740" class="LineNr">3740 </span>  <span class="PreProc">var</span> idx/eax: int <span class="Special">&lt;-</span> truncate *second-value
<span id="L3741" class="LineNr">3741 </span>  <span class="muComment"># offset based on idx after bounds check</span>
<span id="L3742" class="LineNr">3742 </span>  <span class="PreProc">var</span> max/<span class="muRegEdx">edx</span>: int <span class="Special">&lt;-</span> length array
<span id="L3743" class="LineNr">3743 </span>  compare idx, max
<span id="L3744" class="LineNr">3744 </span>  <span class="Delimiter">{</span>
<span id="L3745" class="LineNr">3745 </span>    <span class="PreProc">break-if-&lt;</span>
<span id="L3746" class="LineNr">3746 </span>    <span class="Special"><a href='trace.mu.html#L197'>error</a></span> trace, <span class="Constant">&quot;iset: too few elements in array&quot;</span>
<span id="L3747" class="LineNr">3747 </span>    <span class="PreProc">return</span>
<span id="L3748" class="LineNr">3748 </span>  <span class="Delimiter">}</span>
<span id="L3749" class="LineNr">3749 </span>  <span class="PreProc">var</span> offset/<span class="muRegEdx">edx</span>: (offset handle <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> compute-offset array, idx
<span id="L3750" class="LineNr">3750 </span>  <span class="muComment"># val = rest-&gt;right-&gt;left</span>
<span id="L3751" class="LineNr">3751 </span>  <span class="PreProc">var</span> rest-ah/eax: (addr handle <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> get rest, right
<span id="L3752" class="LineNr">3752 </span>  <span class="PreProc">var</span> _rest/eax: (addr <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> <a href='../120allocate.subx.html#L235'>lookup</a> *rest-ah
<span id="L3753" class="LineNr">3753 </span>  rest <span class="Special">&lt;-</span> copy _rest
<span id="L3754" class="LineNr">3754 </span>  <span class="Delimiter">{</span>
<span id="L3755" class="LineNr">3755 </span>    <span class="PreProc">var</span> rest-type/eax: (addr int) <span class="Special">&lt;-</span> get rest, <span class="PreProc">type</span>
<span id="L3756" class="LineNr">3756 </span>    compare *rest-type, <span class="Constant">0</span>/pair
<span id="L3757" class="LineNr">3757 </span>    <span class="PreProc">break-if-=</span>
<span id="L3758" class="LineNr">3758 </span>    <span class="Special"><a href='trace.mu.html#L197'>error</a></span> trace, <span class="Constant">&quot;'iset' encountered non-pair&quot;</span>
<span id="L3759" class="LineNr">3759 </span>    <span class="PreProc">return</span>
<span id="L3760" class="LineNr">3760 </span>  <span class="Delimiter">}</span>
<span id="L3761" class="LineNr">3761 </span>  <span class="Delimiter">{</span>
<span id="L3762" class="LineNr">3762 </span>    <span class="PreProc">var</span> rest-nil?/eax: boolean <span class="Special">&lt;-</span> <a href='print.mu.html#L390'>nil?</a> rest
<span id="L3763" class="LineNr">3763 </span>    compare rest-nil?, <span class="Constant">0</span>/false
<span id="L3764" class="LineNr">3764 </span>    <span class="PreProc">break-if-=</span>
<span id="L3765" class="LineNr">3765 </span>    <span class="Special"><a href='trace.mu.html#L197'>error</a></span> trace, <span class="Constant">&quot;'iset' needs 3 args but got 2&quot;</span>
<span id="L3766" class="LineNr">3766 </span>    <span class="PreProc">return</span>
<span id="L3767" class="LineNr">3767 </span>  <span class="Delimiter">}</span>
<span id="L3768" class="LineNr">3768 </span>  <span class="PreProc">var</span> val-ah/eax: (addr handle <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> get rest, left
<span id="L3769" class="LineNr">3769 </span>  <span class="muComment"># copy</span>
<span id="L3770" class="LineNr">3770 </span>  <span class="PreProc">var</span> dest/<span class="muRegEdi">edi</span>: (addr handle <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> index array, offset
<span id="L3771" class="LineNr">3771 </span>  copy-object val-ah, dest
<span id="L3772" class="LineNr">3772 </span>  <span class="muComment"># return nothing</span>
<span id="L3773" class="LineNr">3773 </span><span class="Delimiter">}</span>
<span id="L3774" class="LineNr">3774 </span>
<span id="L3775" class="LineNr">3775 </span><span class="PreProc">fn</span> <span class="muFunction"><a href='primitives.mu.html#L3775'>apply-render-image</a></span> _args-ah: (addr handle <a href='cell.mu.html#L1'>cell</a>), out: (addr handle <a href='cell.mu.html#L1'>cell</a>), trace: (addr trace) <span class="Delimiter">{</span>
<span id="L3776" class="LineNr">3776 </span>  <a href='trace.mu.html#L185'>trace-text</a> trace, <span class="Constant">&quot;eval&quot;</span>, <span class="Constant">&quot;apply 'img'&quot;</span>
<span id="L3777" class="LineNr">3777 </span>  <span class="PreProc">var</span> args-ah/eax: (addr handle <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> copy _args-ah
<span id="L3778" class="LineNr">3778 </span>  <span class="PreProc">var</span> _args/eax: (addr <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> <a href='../120allocate.subx.html#L235'>lookup</a> *args-ah
<span id="L3779" class="LineNr">3779 </span>  <span class="PreProc">var</span> args/<span class="muRegEsi">esi</span>: (addr <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> copy _args
<span id="L3780" class="LineNr">3780 </span>  <span class="Delimiter">{</span>
<span id="L3781" class="LineNr">3781 </span>    <span class="PreProc">var</span> args-type/eax: (addr int) <span class="Special">&lt;-</span> get args, <span class="PreProc">type</span>
<span id="L3782" class="LineNr">3782 </span>    compare *args-type, <span class="Constant">0</span>/pair
<span id="L3783" class="LineNr">3783 </span>    <span class="PreProc">break-if-=</span>
<span id="L3784" class="LineNr">3784 </span>    <span class="Special"><a href='trace.mu.html#L197'>error</a></span> trace, <span class="Constant">&quot;args to 'img' are not a list&quot;</span>
<span id="L3785" class="LineNr">3785 </span>    <span class="PreProc">return</span>
<span id="L3786" class="LineNr">3786 </span>  <span class="Delimiter">}</span>
<span id="L3787" class="LineNr">3787 </span>  <span class="PreProc">var</span> empty-args?/eax: boolean <span class="Special">&lt;-</span> <a href='print.mu.html#L390'>nil?</a> args
<span id="L3788" class="LineNr">3788 </span>  compare empty-args?, <span class="Constant">0</span>/false
<span id="L3789" class="LineNr">3789 </span>  <span class="Delimiter">{</span>
<span id="L3790" class="LineNr">3790 </span>    <span class="PreProc">break-if-=</span>
<span id="L3791" class="LineNr">3791 </span>    <span class="Special"><a href='trace.mu.html#L197'>error</a></span> trace, <span class="Constant">&quot;'img' needs 6 args but got 0&quot;</span>
<span id="L3792" class="LineNr">3792 </span>    <span class="PreProc">return</span>
<span id="L3793" class="LineNr">3793 </span>  <span class="Delimiter">}</span>
<span id="L3794" class="LineNr">3794 </span>  <span class="muComment"># screen = args-&gt;left</span>
<span id="L3795" class="LineNr">3795 </span>  <span class="PreProc">var</span> first-ah/eax: (addr handle <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> get args, left
<span id="L3796" class="LineNr">3796 </span>  <span class="PreProc">var</span> first/eax: (addr <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> <a href='../120allocate.subx.html#L235'>lookup</a> *first-ah
<span id="L3797" class="LineNr">3797 </span>  <span class="Delimiter">{</span>
<span id="L3798" class="LineNr">3798 </span>    <span class="PreProc">var</span> first-type/eax: (addr int) <span class="Special">&lt;-</span> get first, <span class="PreProc">type</span>
<span id="L3799" class="LineNr">3799 </span>    compare *first-type, <span class="Constant">5</span>/screen
<span id="L3800" class="LineNr">3800 </span>    <span class="PreProc">break-if-=</span>
<span id="L3801" class="LineNr">3801 </span>    <span class="Special"><a href='trace.mu.html#L197'>error</a></span> trace, <span class="Constant">&quot;first arg for 'img' is not a screen&quot;</span>
<span id="L3802" class="LineNr">3802 </span>    <span class="PreProc">return</span>
<span id="L3803" class="LineNr">3803 </span>  <span class="Delimiter">}</span>
<span id="L3804" class="LineNr">3804 </span>  <span class="PreProc">var</span> screen-ah/eax: (addr handle <a href='../500fake-screen.mu.html#L16'>screen</a>) <span class="Special">&lt;-</span> get first, screen-data
<span id="L3805" class="LineNr">3805 </span>  <span class="PreProc">var</span> _screen/eax: (addr <a href='../500fake-screen.mu.html#L16'>screen</a>) <span class="Special">&lt;-</span> <a href='../120allocate.subx.html#L235'>lookup</a> *screen-ah
<span id="L3806" class="LineNr">3806 </span>  <span class="PreProc">var</span> <a href='../500fake-screen.mu.html#L16'>screen</a>/<span class="muRegEdi">edi</span>: (addr <a href='../500fake-screen.mu.html#L16'>screen</a>) <span class="Special">&lt;-</span> copy _screen
<span id="L3807" class="LineNr">3807 </span>  <span class="muComment"># x1 = args-&gt;right-&gt;left-&gt;value</span>
<span id="L3808" class="LineNr">3808 </span>  <span class="PreProc">var</span> rest-ah/eax: (addr handle <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> get args, right
<span id="L3809" class="LineNr">3809 </span>  <span class="PreProc">var</span> _rest/eax: (addr <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> <a href='../120allocate.subx.html#L235'>lookup</a> *rest-ah
<span id="L3810" class="LineNr">3810 </span>  <span class="PreProc">var</span> rest/<span class="muRegEsi">esi</span>: (addr <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> copy _rest
<span id="L3811" class="LineNr">3811 </span>  <span class="Delimiter">{</span>
<span id="L3812" class="LineNr">3812 </span>    <span class="PreProc">var</span> rest-type/eax: (addr int) <span class="Special">&lt;-</span> get rest, <span class="PreProc">type</span>
<span id="L3813" class="LineNr">3813 </span>    compare *rest-type, <span class="Constant">0</span>/pair
<span id="L3814" class="LineNr">3814 </span>    <span class="PreProc">break-if-=</span>
<span id="L3815" class="LineNr">3815 </span>    <span class="Special"><a href='trace.mu.html#L197'>error</a></span> trace, <span class="Constant">&quot;'img' encountered non-pair&quot;</span>
<span id="L3816" class="LineNr">3816 </span>    <span class="PreProc">return</span>
<span id="L3817" class="LineNr">3817 </span>  <span class="Delimiter">}</span>
<span id="L3818" class="LineNr">3818 </span>  <span class="Delimiter">{</span>
<span id="L3819" class="LineNr">3819 </span>    <span class="PreProc">var</span> rest-nil?/eax: boolean <span class="Special">&lt;-</span> <a href='print.mu.html#L390'>nil?</a> rest
<span id="L3820" class="LineNr">3820 </span>    compare rest-nil?, <span class="Constant">0</span>/false
<span id="L3821" class="LineNr">3821 </span>    <span class="PreProc">break-if-=</span>
<span id="L3822" class="LineNr">3822 </span>    <span class="Special"><a href='trace.mu.html#L197'>error</a></span> trace, <span class="Constant">&quot;'img' needs 6 args but got 1&quot;</span>
<span id="L3823" class="LineNr">3823 </span>    <span class="PreProc">return</span>
<span id="L3824" class="LineNr">3824 </span>  <span class="Delimiter">}</span>
<span id="L3825" class="LineNr">3825 </span>  <span class="PreProc">var</span> second-ah/eax: (addr handle <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> get rest, left
<span id="L3826" class="LineNr">3826 </span>  <span class="PreProc">var</span> second/eax: (addr <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> <a href='../120allocate.subx.html#L235'>lookup</a> *second-ah
<span id="L3827" class="LineNr">3827 </span>  <span class="Delimiter">{</span>
<span id="L3828" class="LineNr">3828 </span>    <span class="PreProc">var</span> second-type/eax: (addr int) <span class="Special">&lt;-</span> get second, <span class="PreProc">type</span>
<span id="L3829" class="LineNr">3829 </span>    compare *second-type, <span class="Constant">3</span>/stream
<span id="L3830" class="LineNr">3830 </span>    <span class="PreProc">break-if-=</span>
<span id="L3831" class="LineNr">3831 </span>    <span class="Special"><a href='trace.mu.html#L197'>error</a></span> trace, <span class="Constant">&quot;second arg for 'img' is not a stream (<a href='../511image.mu.html#L6'>image</a> data in ascii netpbm)&quot;</span>
<span id="L3832" class="LineNr">3832 </span>    <span class="PreProc">return</span>
<span id="L3833" class="LineNr">3833 </span>  <span class="Delimiter">}</span>
<span id="L3834" class="LineNr">3834 </span>  <span class="PreProc">var</span> img-data-ah/eax: (addr handle stream byte) <span class="Special">&lt;-</span> get second, text-data
<span id="L3835" class="LineNr">3835 </span>  <span class="PreProc">var</span> img-data/eax: (addr stream byte) <span class="Special">&lt;-</span> <a href='../120allocate.subx.html#L235'>lookup</a> *img-data-ah
<span id="L3836" class="LineNr">3836 </span>  <span class="PreProc">var</span> img-h: (handle <a href='cell.mu.html#L1'>cell</a>)
<span id="L3837" class="LineNr">3837 </span>  <span class="PreProc">var</span> img-ah/<span class="muRegEcx">ecx</span>: (addr handle <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> address img-h
<span id="L3838" class="LineNr">3838 </span>  <a href='cell.mu.html#L301'>new-image</a> img-ah, img-data
<span id="L3839" class="LineNr">3839 </span>  <span class="muComment"># x = rest-&gt;right-&gt;left-&gt;value</span>
<span id="L3840" class="LineNr">3840 </span>  <span class="PreProc">var</span> rest-ah/eax: (addr handle <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> get rest, right
<span id="L3841" class="LineNr">3841 </span>  <span class="PreProc">var</span> _rest/eax: (addr <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> <a href='../120allocate.subx.html#L235'>lookup</a> *rest-ah
<span id="L3842" class="LineNr">3842 </span>  rest <span class="Special">&lt;-</span> copy _rest
<span id="L3843" class="LineNr">3843 </span>  <span class="Delimiter">{</span>
<span id="L3844" class="LineNr">3844 </span>    <span class="PreProc">var</span> rest-type/eax: (addr int) <span class="Special">&lt;-</span> get rest, <span class="PreProc">type</span>
<span id="L3845" class="LineNr">3845 </span>    compare *rest-type, <span class="Constant">0</span>/pair
<span id="L3846" class="LineNr">3846 </span>    <span class="PreProc">break-if-=</span>
<span id="L3847" class="LineNr">3847 </span>    <span class="Special"><a href='trace.mu.html#L197'>error</a></span> trace, <span class="Constant">&quot;'img' encountered non-pair&quot;</span>
<span id="L3848" class="LineNr">3848 </span>    <span class="PreProc">return</span>
<span id="L3849" class="LineNr">3849 </span>  <span class="Delimiter">}</span>
<span id="L3850" class="LineNr">3850 </span>  <span class="Delimiter">{</span>
<span id="L3851" class="LineNr">3851 </span>    <span class="PreProc">var</span> rest-nil?/eax: boolean <span class="Special">&lt;-</span> <a href='print.mu.html#L390'>nil?</a> rest
<span id="L3852" class="LineNr">3852 </span>    compare rest-nil?, <span class="Constant">0</span>/false
<span id="L3853" class="LineNr">3853 </span>    <span class="PreProc">break-if-=</span>
<span id="L3854" class="LineNr">3854 </span>    <span class="Special"><a href='trace.mu.html#L197'>error</a></span> trace, <span class="Constant">&quot;'img' needs 6 args but got 2&quot;</span>
<span id="L3855" class="LineNr">3855 </span>    <span class="PreProc">return</span>
<span id="L3856" class="LineNr">3856 </span>  <span class="Delimiter">}</span>
<span id="L3857" class="LineNr">3857 </span>  <span class="PreProc">var</span> third-ah/eax: (addr handle <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> get rest, left
<span id="L3858" class="LineNr">3858 </span>  <span class="PreProc">var</span> third/eax: (addr <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> <a href='../120allocate.subx.html#L235'>lookup</a> *third-ah
<span id="L3859" class="LineNr">3859 </span>  <span class="Delimiter">{</span>
<span id="L3860" class="LineNr">3860 </span>    <span class="PreProc">var</span> third-type/eax: (addr int) <span class="Special">&lt;-</span> get third, <span class="PreProc">type</span>
<span id="L3861" class="LineNr">3861 </span>    compare *third-type, <span class="Constant">1</span>/number
<span id="L3862" class="LineNr">3862 </span>    <span class="PreProc">break-if-=</span>
<span id="L3863" class="LineNr">3863 </span>    <span class="Special"><a href='trace.mu.html#L197'>error</a></span> trace, <span class="Constant">&quot;third arg for 'img' is not a number (<a href='../500fake-screen.mu.html#L16'>screen</a> x coordinate of top left)&quot;</span>
<span id="L3864" class="LineNr">3864 </span>    <span class="PreProc">return</span>
<span id="L3865" class="LineNr">3865 </span>  <span class="Delimiter">}</span>
<span id="L3866" class="LineNr">3866 </span>  <span class="PreProc">var</span> third-value/eax: (addr float) <span class="Special">&lt;-</span> get third, number-data
<span id="L3867" class="LineNr">3867 </span>  <span class="PreProc">var</span> x/<span class="muRegEbx">ebx</span>: int <span class="Special">&lt;-</span> convert *third-value
<span id="L3868" class="LineNr">3868 </span>  <span class="muComment"># y = rest-&gt;right-&gt;left-&gt;value</span>
<span id="L3869" class="LineNr">3869 </span>  <span class="PreProc">var</span> rest-ah/eax: (addr handle <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> get rest, right
<span id="L3870" class="LineNr">3870 </span>  <span class="PreProc">var</span> _rest/eax: (addr <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> <a href='../120allocate.subx.html#L235'>lookup</a> *rest-ah
<span id="L3871" class="LineNr">3871 </span>  <span class="PreProc">var</span> rest/<span class="muRegEsi">esi</span>: (addr <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> copy _rest
<span id="L3872" class="LineNr">3872 </span>  <span class="Delimiter">{</span>
<span id="L3873" class="LineNr">3873 </span>    <span class="PreProc">var</span> rest-type/eax: (addr int) <span class="Special">&lt;-</span> get rest, <span class="PreProc">type</span>
<span id="L3874" class="LineNr">3874 </span>    compare *rest-type, <span class="Constant">0</span>/pair
<span id="L3875" class="LineNr">3875 </span>    <span class="PreProc">break-if-=</span>
<span id="L3876" class="LineNr">3876 </span>    <span class="Special"><a href='trace.mu.html#L197'>error</a></span> trace, <span class="Constant">&quot;'img' encountered non-pair&quot;</span>
<span id="L3877" class="LineNr">3877 </span>    <span class="PreProc">return</span>
<span id="L3878" class="LineNr">3878 </span>  <span class="Delimiter">}</span>
<span id="L3879" class="LineNr">3879 </span>  <span class="Delimiter">{</span>
<span id="L3880" class="LineNr">3880 </span>    <span class="PreProc">var</span> rest-nil?/eax: boolean <span class="Special">&lt;-</span> <a href='print.mu.html#L390'>nil?</a> rest
<span id="L3881" class="LineNr">3881 </span>    compare rest-nil?, <span class="Constant">0</span>/false
<span id="L3882" class="LineNr">3882 </span>    <span class="PreProc">break-if-=</span>
<span id="L3883" class="LineNr">3883 </span>    <span class="Special"><a href='trace.mu.html#L197'>error</a></span> trace, <span class="Constant">&quot;'img' needs 6 args but got 3&quot;</span>
<span id="L3884" class="LineNr">3884 </span>    <span class="PreProc">return</span>
<span id="L3885" class="LineNr">3885 </span>  <span class="Delimiter">}</span>
<span id="L3886" class="LineNr">3886 </span>  <span class="PreProc">var</span> fourth-ah/eax: (addr handle <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> get rest, left
<span id="L3887" class="LineNr">3887 </span>  <span class="PreProc">var</span> fourth/eax: (addr <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> <a href='../120allocate.subx.html#L235'>lookup</a> *fourth-ah
<span id="L3888" class="LineNr">3888 </span>  <span class="Delimiter">{</span>
<span id="L3889" class="LineNr">3889 </span>    <span class="PreProc">var</span> fourth-type/eax: (addr int) <span class="Special">&lt;-</span> get fourth, <span class="PreProc">type</span>
<span id="L3890" class="LineNr">3890 </span>    compare *fourth-type, <span class="Constant">1</span>/number
<span id="L3891" class="LineNr">3891 </span>    <span class="PreProc">break-if-=</span>
<span id="L3892" class="LineNr">3892 </span>    <span class="Special"><a href='trace.mu.html#L197'>error</a></span> trace, <span class="Constant">&quot;fourth arg for 'img' is not a number (<a href='../500fake-screen.mu.html#L16'>screen</a> x coordinate of end point)&quot;</span>
<span id="L3893" class="LineNr">3893 </span>    <span class="PreProc">return</span>
<span id="L3894" class="LineNr">3894 </span>  <span class="Delimiter">}</span>
<span id="L3895" class="LineNr">3895 </span>  <span class="PreProc">var</span> fourth-value/eax: (addr float) <span class="Special">&lt;-</span> get fourth, number-data
<span id="L3896" class="LineNr">3896 </span>  <span class="PreProc">var</span> y/<span class="muRegEcx">ecx</span>: int <span class="Special">&lt;-</span> convert *fourth-value
<span id="L3897" class="LineNr">3897 </span>  <span class="muComment"># w = rest-&gt;right-&gt;left-&gt;value</span>
<span id="L3898" class="LineNr">3898 </span>  <span class="PreProc">var</span> rest-ah/eax: (addr handle <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> get rest, right
<span id="L3899" class="LineNr">3899 </span>  <span class="PreProc">var</span> _rest/eax: (addr <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> <a href='../120allocate.subx.html#L235'>lookup</a> *rest-ah
<span id="L3900" class="LineNr">3900 </span>  rest <span class="Special">&lt;-</span> copy _rest
<span id="L3901" class="LineNr">3901 </span>  <span class="Delimiter">{</span>
<span id="L3902" class="LineNr">3902 </span>    <span class="PreProc">var</span> rest-type/eax: (addr int) <span class="Special">&lt;-</span> get rest, <span class="PreProc">type</span>
<span id="L3903" class="LineNr">3903 </span>    compare *rest-type, <span class="Constant">0</span>/pair
<span id="L3904" class="LineNr">3904 </span>    <span class="PreProc">break-if-=</span>
<span id="L3905" class="LineNr">3905 </span>    <span class="Special"><a href='trace.mu.html#L197'>error</a></span> trace, <span class="Constant">&quot;'img' encountered non-pair&quot;</span>
<span id="L3906" class="LineNr">3906 </span>    <span class="PreProc">return</span>
<span id="L3907" class="LineNr">3907 </span>  <span class="Delimiter">}</span>
<span id="L3908" class="LineNr">3908 </span>  <span class="Delimiter">{</span>
<span id="L3909" class="LineNr">3909 </span>    <span class="PreProc">var</span> rest-nil?/eax: boolean <span class="Special">&lt;-</span> <a href='print.mu.html#L390'>nil?</a> rest
<span id="L3910" class="LineNr">3910 </span>    compare rest-nil?, <span class="Constant">0</span>/false
<span id="L3911" class="LineNr">3911 </span>    <span class="PreProc">break-if-=</span>
<span id="L3912" class="LineNr">3912 </span>    <span class="Special"><a href='trace.mu.html#L197'>error</a></span> trace, <span class="Constant">&quot;'img' needs 6 args but got 4&quot;</span>
<span id="L3913" class="LineNr">3913 </span>    <span class="PreProc">return</span>
<span id="L3914" class="LineNr">3914 </span>  <span class="Delimiter">}</span>
<span id="L3915" class="LineNr">3915 </span>  <span class="PreProc">var</span> fifth-ah/eax: (addr handle <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> get rest, left
<span id="L3916" class="LineNr">3916 </span>  <span class="PreProc">var</span> fifth/eax: (addr <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> <a href='../120allocate.subx.html#L235'>lookup</a> *fifth-ah
<span id="L3917" class="LineNr">3917 </span>  <span class="Delimiter">{</span>
<span id="L3918" class="LineNr">3918 </span>    <span class="PreProc">var</span> fifth-type/eax: (addr int) <span class="Special">&lt;-</span> get fifth, <span class="PreProc">type</span>
<span id="L3919" class="LineNr">3919 </span>    compare *fifth-type, <span class="Constant">1</span>/number
<span id="L3920" class="LineNr">3920 </span>    <span class="PreProc">break-if-=</span>
<span id="L3921" class="LineNr">3921 </span>    <span class="Special"><a href='trace.mu.html#L197'>error</a></span> trace, <span class="Constant">&quot;fifth arg for 'img' is not a number (<a href='../500fake-screen.mu.html#L16'>screen</a> y coordinate of end point)&quot;</span>
<span id="L3922" class="LineNr">3922 </span>    <span class="PreProc">return</span>
<span id="L3923" class="LineNr">3923 </span>  <span class="Delimiter">}</span>
<span id="L3924" class="LineNr">3924 </span>  <span class="PreProc">var</span> fifth-value/eax: (addr float) <span class="Special">&lt;-</span> get fifth, number-data
<span id="L3925" class="LineNr">3925 </span>  <span class="PreProc">var</span> tmp/eax: int <span class="Special">&lt;-</span> convert *fifth-value
<span id="L3926" class="LineNr">3926 </span>  <span class="PreProc">var</span> w: int
<span id="L3927" class="LineNr">3927 </span>  copy-to w, tmp
<span id="L3928" class="LineNr">3928 </span>  <span class="muComment"># h = rest-&gt;right-&gt;left-&gt;value</span>
<span id="L3929" class="LineNr">3929 </span>  <span class="PreProc">var</span> rest-ah/eax: (addr handle <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> get rest, right
<span id="L3930" class="LineNr">3930 </span>  <span class="PreProc">var</span> _rest/eax: (addr <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> <a href='../120allocate.subx.html#L235'>lookup</a> *rest-ah
<span id="L3931" class="LineNr">3931 </span>  rest <span class="Special">&lt;-</span> copy _rest
<span id="L3932" class="LineNr">3932 </span>  <span class="Delimiter">{</span>
<span id="L3933" class="LineNr">3933 </span>    <span class="PreProc">var</span> rest-type/eax: (addr int) <span class="Special">&lt;-</span> get rest, <span class="PreProc">type</span>
<span id="L3934" class="LineNr">3934 </span>    compare *rest-type, <span class="Constant">0</span>/pair
<span id="L3935" class="LineNr">3935 </span>    <span class="PreProc">break-if-=</span>
<span id="L3936" class="LineNr">3936 </span>    <span class="Special"><a href='trace.mu.html#L197'>error</a></span> trace, <span class="Constant">&quot;'img' encountered non-pair&quot;</span>
<span id="L3937" class="LineNr">3937 </span>    <span class="PreProc">return</span>
<span id="L3938" class="LineNr">3938 </span>  <span class="Delimiter">}</span>
<span id="L3939" class="LineNr">3939 </span>  <span class="Delimiter">{</span>
<span id="L3940" class="LineNr">3940 </span>    <span class="PreProc">var</span> rest-nil?/eax: boolean <span class="Special">&lt;-</span> <a href='print.mu.html#L390'>nil?</a> rest
<span id="L3941" class="LineNr">3941 </span>    compare rest-nil?, <span class="Constant">0</span>/false
<span id="L3942" class="LineNr">3942 </span>    <span class="PreProc">break-if-=</span>
<span id="L3943" class="LineNr">3943 </span>    <span class="Special"><a href='trace.mu.html#L197'>error</a></span> trace, <span class="Constant">&quot;'img' needs 6 args but got 5&quot;</span>
<span id="L3944" class="LineNr">3944 </span>    <span class="PreProc">return</span>
<span id="L3945" class="LineNr">3945 </span>  <span class="Delimiter">}</span>
<span id="L3946" class="LineNr">3946 </span>  <span class="PreProc">var</span> sixth-ah/eax: (addr handle <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> get rest, left
<span id="L3947" class="LineNr">3947 </span>  <span class="PreProc">var</span> sixth/eax: (addr <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> <a href='../120allocate.subx.html#L235'>lookup</a> *sixth-ah
<span id="L3948" class="LineNr">3948 </span>  <span class="Delimiter">{</span>
<span id="L3949" class="LineNr">3949 </span>    <span class="PreProc">var</span> sixth-type/eax: (addr int) <span class="Special">&lt;-</span> get sixth, <span class="PreProc">type</span>
<span id="L3950" class="LineNr">3950 </span>    compare *sixth-type, <span class="Constant">1</span>/number
<span id="L3951" class="LineNr">3951 </span>    <span class="PreProc">break-if-=</span>
<span id="L3952" class="LineNr">3952 </span>    <span class="Special"><a href='trace.mu.html#L197'>error</a></span> trace, <span class="Constant">&quot;sixth arg for 'img' is not an int (height)&quot;</span>
<span id="L3953" class="LineNr">3953 </span>    <span class="PreProc">return</span>
<span id="L3954" class="LineNr">3954 </span>  <span class="Delimiter">}</span>
<span id="L3955" class="LineNr">3955 </span>  <span class="PreProc">var</span> sixth-value/eax: (addr float) <span class="Special">&lt;-</span> get sixth, number-data
<span id="L3956" class="LineNr">3956 </span>  <span class="PreProc">var</span> tmp/eax: int <span class="Special">&lt;-</span> convert *sixth-value
<span id="L3957" class="LineNr">3957 </span>  <span class="PreProc">var</span> h: int
<span id="L3958" class="LineNr">3958 </span>  copy-to h, tmp
<span id="L3959" class="LineNr">3959 </span>  <span class="muComment">#</span>
<span id="L3960" class="LineNr">3960 </span>  <span class="PreProc">var</span> img-cell-ah/eax: (addr handle <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> address img-h
<span id="L3961" class="LineNr">3961 </span>  <span class="PreProc">var</span> img-cell/eax: (addr <a href='cell.mu.html#L1'>cell</a>) <span class="Special">&lt;-</span> <a href='../120allocate.subx.html#L235'>lookup</a> *img-cell-ah
<span id="L3962" class="LineNr">3962 </span>  <span class="PreProc">var</span> img-ah/eax: (addr handle <a href='../511image.mu.html#L6'>image</a>) <span class="Special">&lt;-</span> get img-cell, image-data
<span id="L3963" class="LineNr">3963 </span>  <span class="PreProc">var</span> img/eax: (addr <a href='../511image.mu.html#L6'>image</a>) <span class="Special">&lt;-</span> <a href='../120allocate.subx.html#L235'>lookup</a> *img-ah
<span id="L3964" class="LineNr">3964 </span>  <a href='../511image.mu.html#L55'>render-image</a> <a href='../500fake-screen.mu.html#L16'>screen</a>, img, x y, w h
<span id="L3965" class="LineNr">3965 </span>  <span class="muComment"># return nothing</span>
<span id="L3966" class="LineNr">3966 </span><span class="Delimiter">}</span>
<span id="L3967" class="LineNr">3967 </span>
<span id="L3968" class="LineNr">3968 </span><span class="PreProc">fn</span> <span class="muFunction"><a href='primitives.mu.html#L3968'>apply-abort</a></span> _args-ah: (addr handle <a href='cell.mu.html#L1'>cell</a>), out: (addr handle <a href='cell.mu.html#L1'>cell</a>), trace: (addr trace) <span class="Delimiter">{</span>
<span id="L3969" class="LineNr">3969 </span>  <a href='../317abort.subx.html#L5'>abort</a> <span class="Constant">&quot;aa&quot;</span>
<span id="L3970" class="LineNr">3970 </span><span class="Delimiter">}</span>
</pre>
</body>
</html>
<!-- vim: set foldmethod=manual : -->