Difference between revisions of "Maxc Byte Lisp"
From Computer History Wiki
(Maxc additional PDP-10 instructions for Lisp.) |
m (New cat) |
||
(2 intermediate revisions by one other user not shown) | |||
Line 3: | Line 3: | ||
==Additional PDP-10 instructions== | ==Additional PDP-10 instructions== | ||
− | It's not entirely clear, but it seems to me most of these are used in addition to the normal PDP-10 instruction set. | + | It's not entirely clear, but it seems to me most of these are used in addition to the normal PDP-10 instruction set. These are defined in the microcode source file '''lisp.mc'''. |
{| class="wikitable" | {| class="wikitable" | ||
Line 46: | Line 46: | ||
| Reverse shallow-deep bindings in a frame | | Reverse shallow-deep bindings in a frame | ||
|} | |} | ||
+ | |||
+ | ==Byte Lisp instructions== | ||
+ | |||
+ | These instructions are 9 bits. They are defined in the microcode source files '''lispm1.mc''' and '''lispm2.mc''', which are for Maxc1 and Maxc2, respectively. | ||
+ | |||
+ | {| class="wikitable" | ||
+ | ! Opcode | ||
+ | ! Mnemonic | ||
+ | |- | ||
+ | | 601 | ||
+ | | SVARX | ||
+ | |- | ||
+ | | 603 | ||
+ | | LVARX | ||
+ | |- | ||
+ | | 605 | ||
+ | | XVARX | ||
+ | |- | ||
+ | | 607 | ||
+ | | ARG | ||
+ | |- | ||
+ | | 611 | ||
+ | | CONSTX | ||
+ | |- | ||
+ | | 613 | ||
+ | | SDSETX | ||
+ | |- | ||
+ | | 615 | ||
+ | | SSETX | ||
+ | |- | ||
+ | | 617 | ||
+ | | LDSETX | ||
+ | |- | ||
+ | | 621 | ||
+ | | LSETX | ||
+ | |- | ||
+ | | 623 | ||
+ | | XDSETX | ||
+ | |- | ||
+ | | 625 | ||
+ | | XSETX | ||
+ | |- | ||
+ | | 627 | ||
+ | | JUMPXX | ||
+ | |- | ||
+ | | 631 | ||
+ | | GETLIST | ||
+ | |- | ||
+ | | 633 | ||
+ | | ASSOC | ||
+ | |- | ||
+ | | 635 | ||
+ | | ITIMES2 | ||
+ | |- | ||
+ | | 637 | ||
+ | | IQUOT | ||
+ | |- | ||
+ | | 641 | ||
+ | | IREMN | ||
+ | |- | ||
+ | | 643 | ||
+ | | IOR2 | ||
+ | |- | ||
+ | | 645 | ||
+ | | IXOR2 | ||
+ | |- | ||
+ | | 647 | ||
+ | | BLSH | ||
+ | |- | ||
+ | | 651 | ||
+ | | BASH | ||
+ | |- | ||
+ | | 653 | ||
+ | | NTYP | ||
+ | |- | ||
+ | | 702 | ||
+ | | MINONE | ||
+ | |- | ||
+ | | 703 | ||
+ | | ZERO | ||
+ | |- | ||
+ | | 704 | ||
+ | | ONE | ||
+ | |- | ||
+ | | 705 | ||
+ | | TWO | ||
+ | |- | ||
+ | | 706 | ||
+ | | SIC | ||
+ | |- | ||
+ | | 707 | ||
+ | | NIL | ||
+ | |- | ||
+ | | 710 | ||
+ | | T | ||
+ | |- | ||
+ | | 711 | ||
+ | | COPY | ||
+ | |- | ||
+ | | 712 | ||
+ | | POP | ||
+ | |- | ||
+ | | 714 | ||
+ | | POP2 | ||
+ | |- | ||
+ | | 715 | ||
+ | | POP3 | ||
+ | |- | ||
+ | | 716 | ||
+ | | VAG | ||
+ | |- | ||
+ | | 717 | ||
+ | | IPLUS2 | ||
+ | |- | ||
+ | | 720 | ||
+ | | IDIF | ||
+ | |- | ||
+ | | 721 | ||
+ | | IAND2 | ||
+ | |- | ||
+ | | 722 | ||
+ | | ADD1 | ||
+ | |- | ||
+ | | 723 | ||
+ | | SUB1 | ||
+ | |- | ||
+ | | 725 | ||
+ | | DBIND | ||
+ | |- | ||
+ | | 726 | ||
+ | | BIND | ||
+ | |- | ||
+ | | 727 | ||
+ | | UNBIND | ||
+ | |- | ||
+ | | 730 | ||
+ | | RETURN | ||
+ | |- | ||
+ | | 731 | ||
+ | | XRETURN | ||
+ | |- | ||
+ | | 732 | ||
+ | | JUMP IF 0(PP) = NIL | ||
+ | |- | ||
+ | | 733 | ||
+ | | JUMP IF 0(PP) # NIL | ||
+ | |- | ||
+ | | 734 | ||
+ | | JUMP IF 0(PP) # -1(PP) | ||
+ | |- | ||
+ | | 735 | ||
+ | | JUMP IF 0(PP) = -1(PP) | ||
+ | |- | ||
+ | | 736 | ||
+ | | JUMP IF 0(PP) IS NOT AN ATOM | ||
+ | |- | ||
+ | | 737 | ||
+ | | JUMP IF 0(PP) IS AN ATOM | ||
+ | |- | ||
+ | | 740 | ||
+ | | JUMP IF 0(PP) IS NOT A LIST | ||
+ | |- | ||
+ | | 741 | ||
+ | | JUMP IF 0(PP) IS A LIST | ||
+ | |- | ||
+ | | 742 | ||
+ | | JNNUM | ||
+ | |- | ||
+ | | 743 | ||
+ | | JNUM (TYPE .E. FLOATT TO SMALLT) | ||
+ | |- | ||
+ | | 744 | ||
+ | | JNFIXP | ||
+ | |- | ||
+ | | 745 | ||
+ | | JFIXP (TYPE .E. FIXT TO SMALLT) | ||
+ | |- | ||
+ | | 746 | ||
+ | | JUMP IF 0(PP) IS NOT OF TYPE = NEXTBYTE | ||
+ | |- | ||
+ | | 747 | ||
+ | | JUMP IF 0(PP) IS OF TYPE = NEXTBYTE | ||
+ | |- | ||
+ | | 750 | ||
+ | | JUMP IF -1(PP) .NE. 0(PP) | ||
+ | |- | ||
+ | | 751 | ||
+ | | JUMP IF -1(PP) .E. 0(PP) | ||
+ | |- | ||
+ | | 752 | ||
+ | | JUMP IF -1(PP) .GE. 0(PP) | ||
+ | |- | ||
+ | | 753 | ||
+ | | JUMP IF -1(PP) .L. 0(PP) | ||
+ | |- | ||
+ | | 754 | ||
+ | | JUMP IF -1(PP) .G. 0(PP) | ||
+ | |- | ||
+ | | 755 | ||
+ | | JUMP IF -1(PP) .LE. 0(PP) | ||
+ | |- | ||
+ | | 756 | ||
+ | | JUMPX | ||
+ | |- | ||
+ | | 757 | ||
+ | | SWAP | ||
+ | |- | ||
+ | | 760 | ||
+ | | LAST | ||
+ | |- | ||
+ | | 761 | ||
+ | | FETCHFIELD | ||
+ | |- | ||
+ | | 762 | ||
+ | | REPLACEFIELD | ||
+ | |- | ||
+ | | 763 | ||
+ | | FRPLACD | ||
+ | |- | ||
+ | | 764 | ||
+ | | FRPLACA | ||
+ | |- | ||
+ | | 765 | ||
+ | | RPLACD | ||
+ | |- | ||
+ | | 766 | ||
+ | | RPLACA | ||
+ | |- | ||
+ | | 767 | ||
+ | | GETP | ||
+ | |- | ||
+ | | 770 | ||
+ | | CDDR | ||
+ | |- | ||
+ | | 771 | ||
+ | | CDAR | ||
+ | |- | ||
+ | | 772 | ||
+ | | CADR | ||
+ | |- | ||
+ | | 773 | ||
+ | | CAAR | ||
+ | |- | ||
+ | | 774 | ||
+ | | CDR | ||
+ | |- | ||
+ | | 775 | ||
+ | | CAR | ||
+ | |- | ||
+ | | 776 | ||
+ | | FMEMB | ||
+ | |} | ||
+ | |||
+ | [[Category: Language Implementations]] |
Latest revision as of 00:52, 22 May 2023
Notes about the Maxc Byte Lisp instructions, gleaned from microcode sources.
Additional PDP-10 instructions
It's not entirely clear, but it seems to me most of these are used in addition to the normal PDP-10 instruction set. These are defined in the microcode source file lisp.mc.
Opcode | Mnemonic | Description |
---|---|---|
107 | BLISP | |
114 | RETFR | Return from function |
115 | UPSHJ | Dispatching UUO call |
116 | LDT | Load type of pointer |
117 | BTLU | Bit table lookup |
120 | BFRET | Return to Byte Lisp function |
121 | CALLFN | Call Lisp function |
247 | CHASE | |
257 | REWIND | Reverse shallow-deep bindings in a frame |
Byte Lisp instructions
These instructions are 9 bits. They are defined in the microcode source files lispm1.mc and lispm2.mc, which are for Maxc1 and Maxc2, respectively.
Opcode | Mnemonic |
---|---|
601 | SVARX |
603 | LVARX |
605 | XVARX |
607 | ARG |
611 | CONSTX |
613 | SDSETX |
615 | SSETX |
617 | LDSETX |
621 | LSETX |
623 | XDSETX |
625 | XSETX |
627 | JUMPXX |
631 | GETLIST |
633 | ASSOC |
635 | ITIMES2 |
637 | IQUOT |
641 | IREMN |
643 | IOR2 |
645 | IXOR2 |
647 | BLSH |
651 | BASH |
653 | NTYP |
702 | MINONE |
703 | ZERO |
704 | ONE |
705 | TWO |
706 | SIC |
707 | NIL |
710 | T |
711 | COPY |
712 | POP |
714 | POP2 |
715 | POP3 |
716 | VAG |
717 | IPLUS2 |
720 | IDIF |
721 | IAND2 |
722 | ADD1 |
723 | SUB1 |
725 | DBIND |
726 | BIND |
727 | UNBIND |
730 | RETURN |
731 | XRETURN |
732 | JUMP IF 0(PP) = NIL |
733 | JUMP IF 0(PP) # NIL |
734 | JUMP IF 0(PP) # -1(PP) |
735 | JUMP IF 0(PP) = -1(PP) |
736 | JUMP IF 0(PP) IS NOT AN ATOM |
737 | JUMP IF 0(PP) IS AN ATOM |
740 | JUMP IF 0(PP) IS NOT A LIST |
741 | JUMP IF 0(PP) IS A LIST |
742 | JNNUM |
743 | JNUM (TYPE .E. FLOATT TO SMALLT) |
744 | JNFIXP |
745 | JFIXP (TYPE .E. FIXT TO SMALLT) |
746 | JUMP IF 0(PP) IS NOT OF TYPE = NEXTBYTE |
747 | JUMP IF 0(PP) IS OF TYPE = NEXTBYTE |
750 | JUMP IF -1(PP) .NE. 0(PP) |
751 | JUMP IF -1(PP) .E. 0(PP) |
752 | JUMP IF -1(PP) .GE. 0(PP) |
753 | JUMP IF -1(PP) .L. 0(PP) |
754 | JUMP IF -1(PP) .G. 0(PP) |
755 | JUMP IF -1(PP) .LE. 0(PP) |
756 | JUMPX |
757 | SWAP |
760 | LAST |
761 | FETCHFIELD |
762 | REPLACEFIELD |
763 | FRPLACD |
764 | FRPLACA |
765 | RPLACD |
766 | RPLACA |
767 | GETP |
770 | CDDR |
771 | CDAR |
772 | CADR |
773 | CAAR |
774 | CDR |
775 | CAR |
776 | FMEMB |