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 23:52, 21 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 |