Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

What's wrong with PAL10?

11 views
Skip to first unread message

Rich Alderson

unread,
Jul 2, 2009, 5:26:10 PM7/2/09
to
I've heard the complaint that PAL10 is lacking in features with respect to
later versions of PAL8, but that said features could be added back in to PAL10
by a competent PDP-10 programmer.

So. What's wrong with PAL10?

--
Rich Alderson "You get what anybody gets. You get a lifetime."
ne...@alderson.users.panix.com --Death, of the Endless

cjl

unread,
Jul 3, 2009, 5:29:37 AM7/3/09
to
On Jul 2, 5:26 pm, Rich Alderson <n...@alderson.users.panix.com>
wrote:

> I've heard the complaint that PAL10 is lacking in features with respect to
> later versions of PAL8, but that said features could be added back in to PAL10
> by a competent PDP-10 programmer.
>
> So.  What's wrong with PAL10?

I extracted out the relevant section of the Kermit-12 PAL source
code. In it you find the definition of the P?S/8 extensions, some,
but only a few, are also in PAL8. If anyone makes any changes to
PAL10,it would be strongly recommended to implement them there as
well.

The source code uses the notion of conditional assembly to avoid the
limitations of PAL8, which although not fatal, did somewhat interfere
with the development of the program. Most notably, the P?S/8 unique
feature of the conditional literal [using the \EXPR/ form to create
page zero literals only if defined elsewhere, as opposed to normal
page zero literals that always force the issue] is really useful when
developing meaningful PDP-8 code. By getting compatible with the P?S
PAL and PAL8 implementation of literals in general [one of the
weaknesses of PAL10] it should be fairly easy to add that into PAL10
as well.

[Note: Some features work only in PAL10 and P?S PAL, but not PAL8, and
obviously should not be changed!]

Additionally, there is a section pointing out the list of the fatal
incompatibilities in PAL10 that make it virtually worthless since it
cannot assemble many of the soure code files of both P?S/8 and OS/8.

________________________________________________________________________________________________

/ KERMIT-12 CAN BE ASSEMBLED BY EITHER OF TWO METHODS:


/ P?S/8 METHOD:

/ ASSUMING THE EXTENDED-LENGTH FILE KERM12 IS THE SOURCE FILE, THE
FOLLOWING
/ COMMAND WILL PRODUCE A FULLY ORNAMENTED LISTING:

/ .PAL KB1,KB2,KB3,KB4<KERM12(ACEJLMNPQSX8)

/ OPTION SWITCH BREAKDOWN:

/ /A ALL SYMBOLS IN SYMBOL PRINTOUT.

/ /C OPTIMIZE CORE DURING ASSEMBLY FOR MORE SYMBOLS, LESS BUFFERS.
/ THIS OPTION SHOULD BE DELETED IF MORE THAN 8K IS AVAILABLE FOR
/ ASSEMBLY.

/ /E FORGET LITERAL BOUNDARIES WHEN LEAVING THE CURRENT PAGE.

/ /J *DO NOT* TERMINATE TEXT STRINGS WITH EXTRA ZERO WORD.

/ /L PERFORM SECOND-PASS LISTING.

/ /M CHAIN TO MAP FOR BITMAP OUTPUT AT END OF ASSEMBLY.

/ /N ENABLE NEATNESS ADORNMENTS TO LISTING OUTPUT.

/ /P ENABLE PRINTER-ORIENTED (WIDE MODE) LISTING OUTPUT.

/ /Q ENABLE LITERALS ONLY, GENERATED LINKS ARE ERRORS.

/ /S ENABLE SYMBOL TABLE PRINTOUT.

/ /X ENABLE CROSS-REFERENCE OUTPUT AT END OF ASSEMBLY.

/ /8 ENABLE FULL SYMBOL TABLE INCLUDING LINC MODE CROSS ASSEMBLY.

/ THE NUMBER OF BINARY FILES REQUIRED (KB1, KB2, KB3, ETC.) IS TO BE
DETERMINED
/ AT ASSEMBLY TIME, AS KERMIT-12 WILL TEND TO GROW LARGER AS FEATURES
ARE ADDED.

/ P?S/8 PAL IS THE PREFERRED METHOD OF ASSEMBLING K12MIT DURING
DEVELOPMENT DUE
/ TO SUPERIOR ERROR DIAGNOSTICS AND OVERALL SPEED. K12MIT COULD GROW
TO A SIZE
/ BEYOND THE CAPABILITIES OF OS/8 CREF. THIS LIMITATION CANNOT
APPLY TO THE
/ P?S/8 DEVELOPMENT ENVIRONMENT.

/ P?S/8 PAL CAN PRODUCE A LISTING OF K12MIT, BUT THE BINARY FILES
CREATED BY THE
/ ASSEMBLY MUST BE TRANSFERRED TO AN OS/8 ENVIRONMENT FOR USE, SINCE
K12MIT (AS
/ SPECIFICALLY WRITTEN) IS FOR THE OS/8 FAMILY OF SYSTEMS ONLY.

/ NOTE: P?S/8 IS *NOT* A DEC PRODUCT; IT IS SOLD COMMERCIALLY AND IS
AVAILABLE
/ FREE OF CHARGE (EXCEPT FOR MEDIA HANDLING CHARGES, ETC.) *ONLY* TO
QUALIFIED
/ INSTITUTIONS. CONTACT CJL FOR ADDITIONAL INFORMATION ON ACQUIRING P?
S/8.
/ OS/8 FAMILY OF SYSTEMS METHOD:

/ K12MIT.PA CAN BE ASSEMBLED WITH PAL8 VERSION B0 WHICH IS AVAILABLE
FROM DECUS
/ AS PART OF THE OS/278 RELEASE. PAL8 VERSION B0 WILL RUN ON ANY OS/
8 FAMILY
/ SYSTEM, AS IT HAS NO HARDWARE DEPENDENCIES BEYOND THE
ORIGINAL PDP-8
/ REQUIREMENT (NO BSW OR IAC ROTATE OR CAF OR R3L INSTRUCTIONS AS WAS
INTENDED).
/ THIS ALSO APPLIES TO CREF VERSION B0 WHICH IS REQUIRED WHEN A CROSS-
REFERENCE
/ IS REQUESTED. PAL8 VERSION B0 AND CREF VERSION B0 ARE AVAILABLE
AS PART OF
/ THE KERMIT-12 DISTRIBUTION AS K12PL8.ENC AND K12CRF.ENC
RESPECTIVELY. SEE THE
/ DOCUMENTATION OF K12DEC FOR INFORMATION ON PRODUCING PAL8.SV AND
CREF.SV FROM
/ THESE ENCODED FILES.

/ ASSUMING CCL IS ENABLED, THE FOLLOWING COMMAND WILL PRODUCE A BINARY
AND FULLY
/ ORNAMENTED LISTING:

/ .PAL
DEV:K12MIT.BN,DEV:K12MIT.LS,DEV:KSCR.TM<DEV:PARAM.PA,DEV:K12MIT.PA
(CEFMW)

/ DEV: IS THE APPLICABLE DEVICE WHERE THE FILES RESIDE. STANDARD
EXTENSIONS
/ ARE ASSUMED (.BN FOR BINARY, .LS FOR LISTING, .PA FOR PAL
SOURCE). THE
/ KSCR.TM TEMPORARY OUTPUT FILE SPECIFICATION IS OPTIONAL, BUT IS
DEFAULTED TO
/ SYS:CREFLS.TM IF NOT EXPLICITLY GIVEN. MANY SYSTEM DEVICES ARE
TOO SMALL TO
/ SUPPORT THIS TEMPORARY FILE, THUS THE FILE MAY BE DIRECTED
TO ANOTHER
/ AVAILABLE DEVICE WITH SUFFICIENT SPACE.

/ THE PARAM.PA FILE IS OPTIONAL AND USED TO PASS SHORT USER
PARAMETERS, ETC. TO
/ THE ASSEMBLY.

/ OPTION SWITCH BREAKDOWN:

/ /C CHAIN TO CREF.SV TO PRODUCE A CROSS-REFERENCED LISTING FILE.

/ /E GENERATED LINKS ARE ERRORS.

/ /F *DO NOT* TERMINATE TEXT STRINGS WITH EXTRA ZERO WORD.

/ /M USE MAMMOTH SYMBOL TABLE OPTION FOR CREF.

/ /W FORGET LITERAL BOUNDARIES WHEN LEAVING THE CURRENT PAGE.

/ LOADING INSTRUCTIONS:

/ .LOAD DEV:K12CLR,K12MIT.BN THIS LOADS THE BINARY CLEAR AND KERMIT
/ .SAVE DEV K12MIT.SV=1 THIS SAVES THE CORE IMAGE

/ THE JOB STATUS WORD (=1) INDICATED THAT K12MIT.SV LOADS INTO
10000-11777, BUT
/ SHOULD NOT BE SAVED/RESTORED WHEN THE USR IS LOADED OVER
THIS AREA OR
/ DISMISSED (THE USR IS ACTUALLY NEVER DISMISSED IN NORMAL K12MIT
OPERATION).
/ OTHER BITS MAY BE SET AT THE USER'S OPTION, BUT ARE
UNNECESSARY; THE BIT
/ INDICATED SERVES ONLY TO REDUCE SYSTEM OVERHEAD REGARDING THE
DISPOSITION OF
/ 10000-11777. THE BINARY FILE K12CLR.BN (CREATED BY ASSEMBLING
K12CLR.PA)
/ LOADS ZEROES INTO ALL OF MEMORY TO CREATE A "CLEAN" CORE IMAGE
FILE, WHICH
/ MAKES THE ENCODED BINARY FILE SMALLER DUE TO REPEAT COMPRESSION.
/ PASSING SHORT PARAMETER FILES.

/ WHEN INSERTING A SHORT USER MODIFICATION FILE IN THE INPUT STREAM
(PARAM.PAL)
/ THE FOLLOWING SHOULD BE NOTED:

/ ALWAYS PUT THE SHORT PARAMETER FILE (CONTAINING EQUATED
SYMBOLS SUCH AS
/ USER=1, ETC.) IN FRONT OF K12MIT.PAL.

/ IF TTY: IS USED FOR DIRECT TYPE-IN OF THESE PARAMETERS, THE
INFORMATION NEED
/ ONLY BE TYPED ENDING WITH <^Z> DURING PASS 1. SUBSEQUENT PASSES
REQUIRE THE
/ ENDING <^Z> ONLY. IF THIS METHOD IS USED, A LISTING WITHOUT THE
USER INPUT
/ WHICH DID THE CUSTOMIZING OF KERMIT-12 CAN BE CREATED. NOTE: IF
BINARY IS
/ GENERATED BY THE CONTENTS OF THE PARAMETER FILE (SUCH AS USE OF THE
LOCAL TEXT
/ MESSAGE, ETC.), THE INFORMATION MUST BE TYPED IN DURING PASS 2.
THE PASS 3
/ LISTING MAY CONTAIN THE INFORMATION IF SO DESIRED, REQUIRING A
REPETITION OF
/ THE INPUT. PASS 1 INPUT OF THE INFORMATION IS EFFECTIVELY
IGNORED, AS NO
/ DEFINITIONS ARE CREATED ('LCLMSG' IS DEFINED ELSEWHERE, ETC.).

/ EXPERIENCED PDP-8 USERS NEW TO PAL8 VERSION B0 TAKE SPECIAL NOTICE:

/ DUE TO HARDWARE LIMITATIONS OF THE DECMATES, THE KEYBOARD FLAG WILL
BE CLEARED
/ DURING PDP-8 PAL8 B0 OPERATION. THE KL8E TTY: HANDLER WILL NO
LONGER BE ABLE
/ TO BUFFER <^Z> DURING THE ASSEMBLY; YOU MUST WAIT UNTIL THE
HANDLER ACCESSES
/ THE KEYBOARD ON EACH PASS *THEN* PRESS <^Z> TO CONTINUE THE
ASSEMBLY.


/ CREATING A CUSTOM MESSAGE FROM THE PARAMETER FILE.

/ IF SO DESIRED, A CUSTOM LOCAL HEADER MESSAGE MAY BE ADDED BY
INSERTING THE
/ FOLLOWING INTO THE PARAMETER FILE:

/ BUFFLD= 10 /THESE PROBABLY
/ FILBUFF=2000 /WON'T CHANGE!

/ GENMSG= 0 /DON'T GENERATE STANDARD (NULL) MESSAGE
/ UMSG= 0 /DON'T GENERATE STANDARD (DUMMY) USER MESSAGE

/ FIELD BUFFLD%10 /FIELD FOR TEXT MESSAGE

/ *FILBUFFER /LOCAL MESSAGE LOADS THERE

/LCLMSG,TEXT "%^I^NSERT ^L^OCAL ^M^ESSAGE ^H^ERE!%"

/ ZBLOCK LCLMSG+40-. /ZERO REST OF MESSAGE AREA

/ TEXT IS IN UPPER/LOWER-CASE SIXBIT WITH '^' MEANING SHIFT CASE
(INITIALLY
/ LOWER-CASE) AND '%' MEANING <CR>, <LF>.
/ OTHER METHODS:

/ KERMIT-12 *CANNOT* BE ASSEMBLED BY PAL10 (LAST KNOWN VERSION
OF PDP-8
/ CROSS-ASSEMBLER FOR TOPS10 (142)) BECAUSE IT LACKS CERTAIN FEATURES:

/ DOES NOT SUPPORT 'RELOC' PSEUDO-OP.

/ DOES NOT SUPPORT PAGE ZERO REDEFINE (CAUSES "Z" ERROR ON SOURCE
FILES WHICH
/ DON'T HAVE ERRORS WHEN ASSEMBLED BY EITHER P?S/8 PAL OR OS/8 PAL8).

/ INCORRECTLY HANDLES 'ZBLOCK' PSEUDO-OP (LEADS TO "Q" ERROR ON
SOURCE FILES
/ WHICH DON'T HAVE ERRORS WHEN ASSEMBLED BY EITHER P?S/8 PAL OR OS/8
PAL8).

/ DOES NOT SUPPORT LITERAL "FORGETTING" (P?S/8 PAL OPTION /E OR OS/8
PAL8 OPTION
/ /W) WHICH IS REQUIRED FOR DEFINING OVERLAY AREAS, ETC.

/ DOES NOT SUPPORT TEXT WITHOUT ZERO WORD FILL (P?S/8 PAL OPTION /J OR
OS/8 PAL8
/ OPTION /F FULFILLS THIS REQUIREMENT) WHICH IS REQUIRED FOR TEXT
MESSAGES.


/ P?S/8 PAL IS AN IMPROPER SUPERSET OF PAL10. PAL10 SUPPORTS MACRO-8
MODE AS AN
/ OPTION AND AUTOMATIC FIELD DUMP BITMAPS; ALL OTHER KNOWN PAL10
FEATURES EXIST
/ IN P?S/8 PAL INCLUDING THE SUPPORT OF THE AUTOMATIC FIELD
DUMP BITMAP
/ PSEUDO-OPS ('ENBITS' AND 'NOBITS').

/ OS/8 PAL8 (VERSION B0) IS A SUBSET OF P?S/8 PAL WHICH HAS SEVERAL
SYNTACTIC
/ QUIRKS (WHICH ARE AVOIDABLE, BUT NONETHELESS ARE INCOMPATIBLE WITH
BOTH P?S/8
/ PAL AND PAL10 IN CERTAIN MINOR WAYS); REGARDLESS, PAL8
LACKS THE
/ COMPATIBILITY PROBLEMS OF PAL10.

/ MAINTAINING SOURCE COMPATIBILITY.

/ KERMIT-12 SOURCE FILE CONVENTIONS DEMAND THE USE OF THE COMMON
SUBSET OF P?S/8
/ PAL AND OS/8 PAL8 (VERSION B0). CERTAIN FORMS OF STATEMENTS
SHOULD BE
/ AVOIDED:

/ TAD /NOT LEGAL IN PAL8
/ 0+TAD /NOT LEGAL IN PAL10, AND POSSIBLY WRONG IN PAL8
/ TAD (3)+1 /GENERATES SAME AS "TAD (3+1)" IN PAL8
/ -A!-B /UNARY OPERATOR HANDLED WRONG IN PAL8
/ I+N /NOT LEGAL IN PAL8
/ N+I /NOT LEGAL IN PAL8
/ I I /NOT LEGAL IN PAL8

/ THIS REQUIREMENT IS EASILY MET BY KERMIT-12 AS MOST OF THESE
CASES ARE
/ ESOTERIC QUIRKS AND NOT NEEDED FOR THIS ASSEMBLY.

/ THE RESTRICTIONS OF PAL10 (EVEN THOUGH IT HAS OTHER DESIRABLE
FEATURES, MOST
/ OF WHICH IT SHARES WITH P?S/8 PAL) ARE TOO SEVERE TO ALLOW USABLE
ASSEMBLY OF
/ THIS PROGRAM. BETTER CROSS-ASSEMBLERS MAY EXIST ELSEWHERE
WHICH ARE
/ SOURCE-COMPATIBLE WITH KERMIT-12.
/ USE OF P?S/8 LANGUAGE EXTENSIONS.

/ P?S/8 OFFERS SEVERAL USEFUL FEATURES OVER PAL8 (AND PAL10) WHICH MAY
BE USEFUL
/ FOR ASSEMBLY DEVELOPMENT OF KERMIT-12. THESE INCLUDE LANGUAGE
ELEMENTS SUCH
/ AS "TAD (3)+1" HANDLED CORRECTLY, OR PSEUDO-OPS SUCH AS "PAUSE EXPR"
WHERE THE
/ VALUE OF 'EXPR' WILL BE DISPLAYED ON THE SYSTEM CONSOLE DURING
THE ASSEMBLY
/ WHEN THAT POINT IN THE ASSEMBLY IS REACHED. TO ACCESS THESE
FEATURES AND
/ STILL PROVIDE COMPATIBILITY WITH PAL8 (VERSION B0), THE
FOLLOWING CODING
/ TECHNIQUE IS SUGGESTED:


/ IFNDEF PQS <PQS=0> /WILL BE 0 ON PAL8, PAL10


/ IFZERO PQS < /DO PAL8, ETC. STUFF HERE

/ FOO= (TABLE) /DEFINE POINTER TO ADDRESS OF TABLE

/ TAD FOO-1 /GET (POINTER TO ADDRESS OF TABLE)-1
/ DCA XR1 /SETUP AUTO-INDEX REGISTER

/ WISH WE HAD PAUSE AND ERROR PSEUDO-OPS IN PAL8.

/ > /END OF PAL8, ETC. VARIANT


/ IFNZRO PQS < /DO P?S/8 PAL STUFF HERE

/ TAD (TABLE)-1 /GET (POINTER TO ADDRESS OF TABLE)-1
/ DCA XR1 /SETUP AUTO-INDEX REGISTER

/ IFNDEF PASS <PASS=0>/DEFINE PASS VARIABLE

/ PASS= PASS+1 /BUMP EVERY ASSEMBLER PASS

/ PAUSE PASS /DISPLAY PASS NUMBER

/ IFNZRO .&4000 <

/ ERROR 1234 /DISPLAY ERROR MESSAGE IF THERE ARE PROBLEMS

/ >

/ > /END OF P?S/8 PAL VARIANT

_________________________________________________________________________________________


Nothing described here should be all that hard to correct within the
current PAL10; however, it wsa abandoned when I "arm-twisted" Richard
Lary to make PAL8 more reasonable. [He actually apologized to me for
believing [falsely] that it was better than it actually was back
then.] He did a quick-and-dirty [but highly effective] fix which is
essentially where it is now, and is largely dependend upon by many
PDP-8 programmers, including the bulk of OS/8 developers at the time.
[Richard Lary was no longer one of the regular of them at the time.]
Thus, it was not merely a point of convenience to avoid PAL10; it
simply lacks vital features heavily depended upon. My point is that
someone should implement not only all of the necessary shortcomings
being fixed, but spend a little extra effort to get the P?S PAL
extensions as well.

One point not documented clearly:

PAL8 supports TEXT and TEXTZ and the option to affect TEXT. It is
part of MACRO-10 to support SIXBIT as an alternative [and a different
6-bit encoding. P?S/8 supports both forms of both; PAL8 only has the
TEXT family, and does that one correctly. PAL10 must be upgraded to
support the option that both PAL8 and P?S PAL both have and it does
not, etc.

The basic problem stems from exactly what to do when the TEXT [and
SIXBIT if you implement the P?S PAL MACRO-10-like superset feature]
usage should the string be of an even length. To be useful, the
assembler must give you an option to suppress the "extra" generation
of a 12-bit word of 0000 after the string [does not apply if using
TEXTZ which must also be supported] should the string length be an
even number of characters. Realistic P?S PAL and OS/8 source files
use this both ways, but PAL10 doesn't have the choice offered by the
other two. [Due to the esoteric nature of SIXBIT, and also because it
is a six-character name already, I didn't attempt to implement
something like a SIXBTZ pseudo-op that would work sort-of like TEXTZ,
but certainly adding such would be welcome. I would welcome a
discussion as to what to name it; it has to be six characters maximum.
[SXBITZ ?]

An entirely different problem that could be implemented [as long as
someone is bothering to do anything]:

It would be really nice to have an assembler that handles upper and
lower-case properly; PAL8 is broken and P?S PAL is upper-case only. I
would recommend:

1) Force all upper-case output up to but not including a comment.

2) Force all uppper-case output on the entire input line.

The next three affect the print disposition of symbols, not the
associated source code elements themselves.

3) Force auto-capitalized otherwise lower case on only user symbols.

4) Force auto-capitalized otherwise lower case on only permanent
symbols.

5) Combination of 3) and 4).

6) Leave it alone; all case considerations are ignored in context and
cannot cause an error. Printout of the source in unmodified mixed-
case. A lot of newcomers to PAL8 find that PAL8 disappoints them when
they attempt to use this! But that's not a reason not to do it
correctly!

There is an obscure variant of PAL10 sometimes known as DIAL10. It
includes LINC mode assembly. There is no reason to leave out the
support as long as it defaults to PDP-8 mode without a switch option
to force it the other way. [P?S PAL supports it as an option to save
space in smaller machines and can be enabled to start up in either
assembly mode. This is equivalent to having the equivalent of a
phantom PMODE or LMODE pseudo-op in the source code. There are
special considerations of implementing the dual-mode assembly; P?S PAL
is exemplary, and is totally DIAL-compatible with regard to the LINC
assembly aspects. [Note: DIAL assembly does not support literals!]

A nuance of dual-mode assembly: The LINC architecture supports three
different specific values of a standard SKP instruction, and
additionally the permanent symbol is a different value in PMODE.
Clearly, you have to pick one of the three for the LINC section.
Thus, even though the LMODE SKP symbol is a permanent symbol, and
switching modes makes the SKP use the appropriate mode's definition,
it is necessary that should the mode be switched after the source code
redefines the instruction which is contained in the mode-specific
symbol swap list, it is necessary to allow the user's redefinition to
"stick" with respect to these dual-mode-sensitive symbol values:

LMODE

SKP=0756 /Use LINC-8 SKP, not PDP-12 SKP

PMODE

LMODE

/SKIP BETTER NOT DEFAULT BACK TO 0766!

Which is in theinternal table by default is not the problem, but it
should not be required of the user to re-fix the desired value as the
mode pseudo-op changes back and forth, etc. Most savvy user code
expected to define the "correct" one they need for the intended
hardware at the beginning of the code and it persists throughout the
assembly.

Sinc literals are supported, this makes for interesting code that DIAL
could never have:

LMODE

LDA; (3) /LOAD AC WITH 0003

Depending on the exact origin of the code:

LDA; (3)&1777

or

LDA; (3)&1777!2000

to access the LINC data field [LINC is a 1K machine with a 1K DF for
2K max at any moment, but can be extended to 32K on a LINC-8 or
PDP-12.

There was an old version of PAL8 hacked up to become PAL12.
Unfortunately, this is the pre-Richard Lary-fixed PAL8 base and is
quite incompatible with newer versions in the PDP-8 majority portion.

Another frill that should be considered:

Field settings can be defined normally up to field 7 for 32K. PAL8
and P?S/8 PAL can define more, so that 128K and 512K definitions can
be given. [Note: The actual code generated is unchanged.]

In any case, it would be nice if the assembler printout of user
symbols used the extended memory full definition of a symbol, and not
the 12-bit value as currently defined in all three assemblers. [It
could be a command line option to enable the extension.]

A P?S/8 nuance of relocated code printout:

In PAL8, a * is printed next to a code line's particulars if the line
is affected by relocation, at least in theory. However, there are two
holes in the PAL8 logic:

1) What if by cumulative RELOC usage, the code is actually no longer
really relocated?

2) What if the relocation was done by other than RELOC [such as
NOPUNCH; ENPUNCH sequences]?

In P?S PAL, the * only prints if the code is actually relocated,
regardless of method. This is trivial to implement and is much
smarter than PAL8 which can be easily fooled by statements such as

RELOC .

Which is not actually a relocation at all!

Here is a limitation only of PAL8:

When there are multiple statements on the same line, OS/8 CREF numbers
the lines, not the statements. [This was instrumental in implementing
the FOCAL-8 "malware" which would be obvious in PAL10 or P?S PAL].

In PAL10, it ain't broke so don't fix it!

In OS/8 CREF, unassembled source code [conditionally assembly that
didn't assemble on purpose] becomes ludicrously part of the cross-
reference, such as the big block letters in the first page of the
Kermit-12 listing. I believe PAL10 does this correctly, but I am not
sure.

Something to make sure it doesn't fall through the cracks:

Any line, even with multiple statements on it: If any part of any of
the statements includes the XLIST pseudo-op, the entire line should
not be included in the listing file, regardless of otherwise the
overall printing-enablement mode:

XLIST 0;FOO=0;/THIS LINE WON'T PRINT

but perhaps before and certainly after will!

The following are from the DIAL FPP-12 assembler:

IFREF < >

and

IFNREF < >

The code within the brackets is assembled only if the symbol pre-
exists [or does not in the opposite case]. Most specifically, there
is no assembly error for unreferenced symbols which need not exist and
will not be added to the symbol table if not, etc.

The road map for P?S/8 includes adding in an 8-bit ASCII-oriented
character set within files of a preently only-partially-implemented
file structure. At the point all is added, all of the features
mentioned [including those lacking in P?S PAL] will become part of the
ultimate assembler for that generation of P?S/8. [Note: This
assembler will require 8K minimum; P?S PAL runs in 4K.] It would be
nice if PAL10 and this current vaporware were compatible. Perhaps
further down tne road, that code could be "grafted" into OS/8 as well.

cjl

ps: P?S/8 was originally developed with PAL10 until it was
"outgrown".

>
> --
> Rich Alderson                  "You get what anybody gets. You get a lifetime."

> n...@alderson.users.panix.com                           --Death, of the Endless

0 new messages