Minor re-org of PDP-10 tests
This commit is contained in:
parent
a42a261cca
commit
5fa958dfea
11 changed files with 186 additions and 166 deletions
47
apps/pdp10/tests/macro10/README.md
Normal file
47
apps/pdp10/tests/macro10/README.md
Normal file
|
|
@ -0,0 +1,47 @@
|
|||
---
|
||||
layout: page
|
||||
title: PDPjs MACRO-10 Mini-Assembler Tests
|
||||
permalink: /apps/pdp10/tests/macro10/
|
||||
machines:
|
||||
- id: testka10
|
||||
type: pdp10
|
||||
config: /devices/pdp10/machine/ka10/test/debugger/machine.xml
|
||||
debugger: true
|
||||
commands: a 100 /apps/pdp10/tests/macro10/TEXT.MAC
|
||||
---
|
||||
|
||||
PDPjs MACRO-10 Mini-Assembler Tests
|
||||
-----------------------------------
|
||||
|
||||
The PDP-10 machine below automatically loads and assembles [TEXT.MAC](TEXT.MAC.txt), one of the
|
||||
first tests of the built-in PDPjs MACRO-10 Mini-Assembler.
|
||||
|
||||
[TEXT.MAC](TEXT.MAC.txt) is a copy of the file listed on p. 7-9 of the
|
||||
[MACRO-10 Assembler Programmer's Reference Manual (June 1972)](/pubs/dec/pdp10/). It's a simple test
|
||||
of nested macro definitions, recursion, expressions using shift operators and character constants,
|
||||
and pseudo-ops **IRPC**, **IFE**, **IFN**, and **EXP**. It generates 4 words of data.
|
||||
|
||||
{% include machine.html id="testka10" %}
|
||||
|
||||
After the machine executes the following command:
|
||||
|
||||
a 100 /apps/pdp10/tests/macro10/TEXT.MAC
|
||||
|
||||
the following results should appear:
|
||||
|
||||
starting PCjs MACRO-10 Mini-Assembler...
|
||||
loading TEXT.MAC
|
||||
4 words loaded at 000100-000103
|
||||
00=000000000000 01=000000000000 02=000000000000 03=000000000000
|
||||
04=000000000000 05=000000000000 06=000000000000 07=000000000000
|
||||
10=000000000000 11=000000000000 12=000000000000 13=000000000000
|
||||
14=000000000000 15=000000000000 16=000000000000 17=000000000000
|
||||
PC=000100 RA=00000000 EA=000000 C0=0 C1=0 OV=0 ND=0 PD=0
|
||||
000100: 014101 102103 UUO 2,102103(1)
|
||||
|
||||
and if you dump the first 4 words with the command `db 100 l4`:
|
||||
|
||||
000100: 014101 102103 003 004 011 004 041 ....!
|
||||
000101: 104105 106107 021 004 051 014 043 ..).#
|
||||
000102: 110111 112113 022 004 111 024 045 ..I.%
|
||||
000103: 114000 000000 023 000 000 000 000 .....
|
||||
53
apps/pdp10/tests/macro10/TEXT.MAC.txt
Normal file
53
apps/pdp10/tests/macro10/TEXT.MAC.txt
Normal file
|
|
@ -0,0 +1,53 @@
|
|||
; From the MACR0-10 ASSEMBLER PROGRAMMER'S REFERENCE MANUAL (June 1972):
|
||||
;
|
||||
; Example 4 (Figure 7-4) shows nested macros which use IRPC. The desired operation
|
||||
; is to take an ASCII text string and store the characters four per word, left-justified,
|
||||
; with the character count stored in the first nine bits of the first word.
|
||||
;
|
||||
; The TEXT macro counts the string characters and invokes the CODE macro to store the
|
||||
; characters four per word. The CODE macro invokes a SHIFT macro which left-justifies the
|
||||
; last word if it is not already left-justified. The first part of the example shows the
|
||||
; normal listing, then SALL is set to show what code the macros are generating.
|
||||
;
|
||||
; The original listing encoded two of the lines as follows:
|
||||
;
|
||||
; IFN ZZ,<DEFINE SHIFT ;;REMAINDER LEFT
|
||||
; IFE ZZ&777B8,> ;;IF NOT LEFT JUSTIFIED
|
||||
;
|
||||
; The April 1978 MACRO-10 manual says that a macro body "must be enclosed in angle brackets",
|
||||
; so the DEFINE looks wrong, and the IFE contains only a closing angle bracket, which also seems
|
||||
; wrong. Perhaps what's shown above is a side-effect of some MACRO-10 listing generation bug
|
||||
; and not an accurate reflection of the original code. In any event, after making two small
|
||||
; modifications below, macro10.js is able to assemble the code fine.
|
||||
;
|
||||
; This example also begs the question: did MACRO-10 optimize tail recursion? Because without
|
||||
; it, if the SHIFT macro required many iterations (for example, if "ZZ==ZZ_9" was replaced with
|
||||
; "ZZ==ZZ+9"), wouldn't MACRO-10 blow its stack? I've noted this in macro10.js as well.
|
||||
;
|
||||
TITLE STORE TEXT CHARACTER BY CHARACTER
|
||||
SUBTTL %1 5-APR-72
|
||||
|
||||
DEFINE TEXT (C)<
|
||||
N==0 ;;INITIAL CONDITION
|
||||
IRPC C,<N==N+1> ;;COUNT CHARACTERS
|
||||
CODE (N,C) ;;CALL MACRO TO STORE TEXT
|
||||
> ;END OF TEXT MACRO
|
||||
|
||||
DEFINE CODE (N,C)<
|
||||
ZZ==N ;;INITIAL CONDITION
|
||||
IRPC C,<
|
||||
IFN ZZ&777B8,<
|
||||
EXP ZZ ;;WORD FULL
|
||||
ZZ==0> ;;START AGAIN WITH 0
|
||||
ZZ==ZZ_9+"C"> ;;END OF IRPC
|
||||
IFN ZZ,<DEFINE SHIFT< ;;REMAINDER LEFT
|
||||
IFE ZZ&777B8,< ;;IF NOT LEFT JUSTIFIED
|
||||
ZZ==ZZ_9 ;;MOVE LEFT 9 BITS
|
||||
SHIFT> ;;RECURSE
|
||||
> ;;END OF DEFINE
|
||||
SHIFT ;;START MOVING LEFT
|
||||
EXP ZZ> ;;END OF IFN ZZ
|
||||
> ;END OF CODE MACRO
|
||||
|
||||
TEXT (ABCDEFGHIJKL)
|
||||
END
|
||||
Loading…
Reference in a new issue