Maxc Byte Lisp: Difference between revisions
From Computer History Wiki
Jump to navigationJump to search
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 |