Directory of image this file is from
This file as a plain text file
.! PAL12 DOCUMENTATION .! CLYDE G. ROBY, JR. .! DEPARTMENT OF PHYSIOLOGY AND BIOPHYSICS .! WEST VIRGINIA UNIVERSITY MEDICAL CENTER .! MORGANTOWN, WEST VIRGINIA .! LATEST CHANGES, JUNE 1977 .FLAG CAPITALIZE " .FLAG FIRSTCAPITALIZE;.TR .HEADER BOTTOM NUMBER CENTER .CHAPTER "PAL12 .PG .T ^^ .M 1, 70 .B 5 .CM; PAL12: A BILINGUAL ASSEMBLER FOR THE PDP-12 .B 3 .CM; CLYDE G. ROBY, JR. .CM; AND .CM; DARRELL J. DUFFY .B 2 .CM; SMALL COMPUTER GROUP .CM; WEST VIRGINIA UNIVERSITY MEDICAL CENTER .CM; MORGANTOWN, WEST VIRGINIA 26506 \\ .B 10 .CM; ^CURRENT ^VERSION "PAL12 ^V6 .M 11, 70 .PG 0 .TS 5, 10, 50;.NF .CM; ^^TABLE OF CONTENTS\\ .B ^'INTRODUCTION 1 ASSEMBLERS 1 "PAL12 2 OPTIONS 3 MODES 4 .B LANGUAGE 6 EXPRESSION SYNTAX 6 MEMORY REFERENCE INSTRUCTIONS 7 SPECIAL SYMBOLS 8 LITERALS 9 PSEUDO OPS 10 MODE 10 ORIGIN 10 RADIX 11 OUTPUT 11 TEXT 11 PRINT MESSAGE 12 SYMBOLS 12 LISTING 13 "OS/8 DEVICE 13 FLOATING CONSTANT 14 CONDITIONAL ASSEMBLY 15 .B ERROR FORMAT 17 .B FIGURES 18 1. ASSEMBLY MODES 18 2. ADDRESSING 19 3. OPERATORS 20 4. RELOCATING CODE 22 5. TEXT EXAMPLES 23 6. CODING EXAMPLES 26 7. FLOATING CONSTANTS 27 8. CONDITIONAL ASSEMBLY 28 .B APPENDICES 31 A. LIST \OF PSEUDO OPS 31 B. ERROR MESSAGES AND PROBABLE CAUSE 32 \' .F .PG .M 11, 70 ^^INTRODUCTION TO ASSEMBLERS\\ .P THE USE OF AN ASSEMBLY PROGRAM HAS BECOME STANDARD PRACTICE IN THE PROGRAMMING OF DIGITAL COMPUTERS. USE OF AN ASSEMBLER PERMITS A PROGRAMMER TO CODE IN A MORE CONVENIENT LANGUAGE THAN BASIC MACHINE CODE. THE ADVANTAGES OF THIS PRACTICE ARE WIDELY RECOGNIZED: EASILY RECOGNIZED MNEMONIC CODES ARE USED INSTEAD OF NUMERIC CODES; INSTRUCTIONS OR DATA MAY BE REFERRED TO BY A SYMBOLIC NAME; DECIMAL DATA MAY BE INTERMIXED WITH OCTAL DATA; PROGRAMS MAY BE ALTERED WITHOUT EXTENSIVE CHANGES IN THE SOURCE LANGUAGE; AND DEBUGGING IS SIMPLIFIED. .P THE BASIC PROCESS PERFORMED BY AN ASSEMBLER IS THE SUBSTITUTION OF NUMERIC VALUES FOR SYMBOLS, ACCORDING TO ASSOCIATIONS FOUND IN THE SYMBOL TABLE. IN ADDITION, THE USER MAY REQUEST THAT THE ASSEMBLER ITSELF ASSIGN VALUES TO HIS OWN SYMBOLS AT ASSEMBLY TIME. THESE SYMBOLS MAY THEN BE REFERENCED BY NAME WHEN REFERRING TO SPECIFIC MEMORY LOCATIONS. .P THE ABILITY TO USE MNEMONIC NAMES TO REPRESENT MACHINE INSTRUCTIONS IS OF GREAT VALUE. THE NAME "DCA REMINDS THE USER OF THE ^DEPOSIT AND ^CLEAR ^ACCUMULATOR INSTRUCTION, WHILE THE NUMBER 3000 DOES NOT. CONSEQUENTLY, INSTRUCTIONS ARE EASIER TO REMEMBER WHEN MNEMONICS ARE USED. LIKEWISE, IT IS MUCH EASIER TO ASSOCIATE THE NAME "SUM WITH THE LOCATION IN MEMORY CONTAINING AN ACCUMULATED SUM THAN IT IS TO REMEMBER THAT LOCATION 2746 CONTAINS THE SUM. .P PROBABLY THE MOST IMPORTANT ADVANTAGE OF THE ASSEMBLER IS THAT THE UPDATING OF A PROGRAM BY ADDING OR REMOVING INSTRUCTIONS AND/OR DATA IS SIMPLIFIED, SINCE THE ASSIGNMENT OF ABSOLUTE NUMBERS TO SYMBOLIC LOCATIONS IS DONE BY THE ASSEMBLER. IN ADDITION TO THIS, THE ASSEMBLER WILL ACCEPT INSTRUCTIONS FOR PERFORMING OPERATIONS WHICH MAY OR MAY NOT RESULT IN THE GENERATION OF BINARY CODES. THESE ARE CALLED PSEUDO-OPERATIONS OR SIMPLY, PSEUDO-OPS. FOR EXAMPLE, THE PSEUDO-OP "DECIMAL TELLS THE ASSEMBLER THAT ALL NUMBERS WHICH FOLLOW IN THE SOURCE PROGRAM ARE TO BE TREATED AS DECIMAL INSTEAD OF OCTAL. THIS INSTRUCTION TO THE ASSEMBLER IS IMPORTANT TO THE ASSEMBLY PROCESS BUT DOES NOT GENERATE ANY BINARY OUTPUT. .PG ^^INTRODUCTION TO PAL12\\ .P "PAL12 IS A BILINGUAL ASSEMBLER FOR THE "PDP-12 SIMILIAR TO THE "DIAL ASSEMBLER OF "LAP6/DIAL AND "LAP6/DIAL-MS. AS AN ASSEMBLER, IT IS MORE LIKE THAT OF "PAL8 AND INDEED RUNS UNDER "OS/8. THE LARGEST SINGLE ADVANTAGE OF "PAL12 IS THAT IT WILL ASSEMBLE EITHER "PDP-8 CODE, OR "LINC CODE, OR ANY COMBINATION OF THE TWO, WITHOUT SWAPPING OR USING OVERLAYS. ADDITIONS TO "PAL12 INCLUDE NEW OPERATORS, NEW PSEUDO-OPS, AND NEW CONDITIONALS. .P "PAL12 WILL RUN ON ANY "OS/8 SYSTEM, WHETHER IT BE ON A "PDP-12 OR A "PDP-8. IT HAS BEEN RUNNING SUCCESSFULLY FOR OVER THREE YEARS ON A "PDP-12, A "PDP-8/I, AND A "LINC-8 AT THE ^'WEST VIRGINIA UNIVERSITY MEDICAL CENTER\'. .P "PAL12 OCCUPIES ALL OF FIELD 0 WITH TWO ONE-BLOCK BUFFERS IN FIELD 1.
THE PERMANENT SYMBOL TABLE RESIDES COMPLETELY IN FIELD 1 WITH ROOM FOR OVER 600 USER SYMBOLS IN 8^K OF MEMORY. FOR EACH ADDITIONAL FIELD OF MEMORY, NEARLY 1000 MORE USER SYMBOLS MAY BE DEFINED. THE SOURCE INPUT TO "PAL12 MAY BE PREPARED USING ANY OF ^^DEC\\_'S OR ^^DECUS\\_'S EDITORS WHICH RUN UNDER "OS/8. THERE IS VIRTUALLY NO LIMIT ON PROGRAM SIZE EXCEPT THAT IMPOSED BY THE LIMITS OF THE "I/O DEVICES OF A PARTICULAR INSTALLATION. .P "PAL12 IS LOADED FROM THE "OS/8 ^'KEYBOARD MONITOR\' BY: .TS 15, 23, 31, 39, 47, 55;.NF;.B 1 ".R#PAL12 * .F;.B 1 ^AT THIS TIME, THE USER MAY ENTER A COMMAND LINE TO THE "OS/8 ^COMMAND ^DECODER. THIS LINE MAY CONSIST OF AN OPTIONAL BINARY OUTPUT FILE, FOLLOWED BY AN OPTIONAL LISTING FILE, 0 TO 9 INPUT FILES, AND VARIOUS OPTIONS. A NULL OUTPUT FILE INDICATES NO OUTPUT OF THAT TYPE IS TO BE GENERATED. .P IF EXTENSIONS TO THE FILE NAME ARE OMITTED, THE FOLLOWING EXTENSIONS ARE ASSIGNED: .TS 10, 30;.NF;.B 1 ^^ FILE TYPE EXTENSION\\ .B ^INPUT .12 (^DEFAULT EXTENSION) ^BINARY OUTPUT ."BN (^ASSUMED EXTENSION) ^LISTING OUTPUT ."LS (^ASSUMED EXTENSION) .F .B 1 .PG "OPTIONS .P THE FOLLOWING OPTIONS MAY BE INCLUDED ANYWHERE IN THE COMMAND STRING. .TS 10, 30;.NF;.B 1 ^^OPTION EFFECT\\ .F .B 1 .M 21, 70 .I -8 /^S######^OMIT THE SYMBOL TABLE (ONLY IF LISTING OUTPUT). .I -8 /^N######^GENERATE SYMBOL TABLE, BUT NO LISTING (ONLY IF LISTING OUTPUT). .I -8 /^K######^RESTRICT "PAL12 TO 8^K; DEFAULT IS ALL OF MEMORY. .I -8 /^L######^LOAD THE "ABSLDR AFTER ASSEMBLY ("PAL12B.TM CREATED IF NO BINARY OUTPUT FILE GIVEN). .I -8 /^G######^LOAD THE "ABSLDR AFTER ASSEMBLY AND START THE PROGRAM ("PAL12B.TM CREATED IF NO BINARY OUTPUT FILE GIVEN). .I -8 /^T######"CR-LF INSTEAD OF ^FORM ^FEED (IF LISTING). .I -8 /^H######^NO PAGINATION (IF LISTING). .I -8 /^P######^THE "TEXT PSEUDO OP OUTPUTS A ZERO BYTE AT THE END (THE "PAL8 CONVENTION). .B 1 .M 11, 70 ^OF COURSE, IF /^L OR /^G IS GIVEN, THEN ANY SWITCHES APPLICABLE TO THE "ABSLDR CAN ALSO BE GIVEN. "PAL12 DOES NOT RECOGINZE THE /^D OPTION OF "PAL8 (GENERATE "DDT SYMBOL TABLE). .P "PAL12 ALLOTS ONLY TWO PAGES FOR HANDLERS. THESE MAY BE OCCUPIED BY TWO ONE-PAGE HANDLERS OR BY ONE TWO-PAGE HANDLER. IF THE SYSTEM DEVICE IS USED AS THE OUTPUT DEVICE THEN ANY OF THE INPUT DEVICES MAY BE TWO-PAGE HANDLERS. IF THE OUTPUT DEVICE IS A ONE-PAGE HANDLER, THE INPUT DEVICE MUST BE THE SYSTEM DEVICE OR A ONE-PAGE HANDLER. IF THE OUTPUT DEVICE IS A TWO-PAGE HANDLER, THEN THE INPUT DEVICE MUST BE THE SYSTEM DEVICE. IN MOST CASES THIS RESTRICTION IS NON-EXISTENT OR CAN BE CIRCUMVENTED BY COPYING THE INPUT FILES TO THE SYSTEM DEVICE. .P "PAL12 ASSEMBLES A SOURCE PROGRAM INTO A BINARY OUTPUT FILE IN TWO PASSES. DURING THE FIRST PASS OF THE ASSEMBLY, THE SYMBOLS WHICH THE USER HAS DEFINED ARE PLACED INTO THE SYMBOL TABLE. DURING THE SECOND PASS, THE BINARY EQUIVALENTS OF THE INPUT SOURCE PROGRAM ARE GENERATED AND SENT TO THE BINARY OUTPUT FILE. IF A LISTING OUTPUT FILE IS PRESENT, "PAL12 WILL MAKE A THIRD PASS OVER THE SOURCE PROGRAM AND WILL PRODUCE AN OCTAL-SYMBOLIC LISTING. .P DURING THE PROCESS OF AN ASSEMBLY BY "PAL12, TWO KEYBOARD CONTROL KEYS ARE RECOGNIZED. "CTRL/C CAUSES THE ASSEMBLY OR LISTING TO BE ABORTED AND A RETURN IS MADE TO THE "OS/8 ^KEYBOARD ^MONITOR. "CTRL/O STOPS THE PRINTING OF ERROR MESSAGES DURING THE FIRST PASS OF A LISTING AND DURING BOTH PASSES OF AN ASSEMBLY. .PG "MODES .P THE TWO ASSEMBLY MODES OF "PAL12 ARE "PDP-8 MODE, COMMONLY REFERRED TO AS "PMODE, AND "LINC MODE, COMMONLY REFERRED TO AS "LMODE. THE BASIC DIFFERENCES BETWEEN THE TWO OCCUR IN ADDITION AND SUBTRACTION, ORIGINS, AND SYMBOLIC ADDRESSES. .P DURING "PMODE ASSEMBLY, ALL ADDITIONS AND SUBTRACTIONS ARE TWO_'S COMPLEMENT OPERATIONS WHILE DURING "LMODE ASSEMBLY, THEY ARE ONE_'S COMPLEMENT OPERATIONS. FOR EXAMPLE, IN "PMODE, -1 IS EQUIVALENT TO 7777 AND 3000+6000 IS EQUIVALENT TO 1000(8).
IN "LMODE, -1 IS EQUIVALENT TO 7776 AND 3000+6000 IS EQUIVALENT TO 1001(8) BECAUSE OF END-AROUND CARRY IN ONE_'S COMPLEMENT ARITHMETIC. .P ORIGINS ENCOUNTERED IN "PMODE ARE TAKEN AS THEIR 12-BIT VALUES AND THE CURRENT LOCATION COUNTER IS RESET TO THIS VALUE. HOWEVER, IN "LMODE, ONLY THE LOW-ORDER 10 BITS OF THE ORIGIN IS USED TO CHANGE THE LOCATION COUNTER. THE LOCATION COUNTER IS NOT RESET OUTSIDE THE CURRENT SEGMENT (2000 WORDS OF MEMORY). IN THIS MANNER, A ^^LINC\\-TYPE ORIGIN MAY BE GIVEN. SEE ^FIGURE 1 FOR EXAMPLES OF ORIGIN SETTINGS. TO RESET THE LOCATION COUNTER TO AN ADDRESS OUTSIDE THE CURRENT "LINC SEGMENT, THE PSEUDO-OP "SEGMNT (EXPLAINED LATER IN MORE DETAIL) MUST EXPLICITLY BE USED. EFFECTIVELY, ORIGINS ARE TREATED SIMILIARLY TO SYMBOL ADDRESSES. .P ALL SYMBOLS IN THE SYMBOL TABLE ARE ACCESSABLE AT ALL TIMES, THUS THE CODING STATEMENTS: .TS 10, 18, 26, 34, 42;.NF;.B 1 ^^ PMODE TAD (RDC) DCA TPINST LMODE LINC IOB TSF JMP .-2\\ .F .B 1 WOULD NOT CAUSE AN UNDEFINED SYMBOL ERROR MESSAGE TO BE GENERATED. "PAL12 MAKES SOME VERY BASIC ASSUMPTIONS WHEN IT COMES TO SYMBOL DEFINITIONS. ALL SYMBOLS ARE HELD AS 12-BIT VALUES, REGARDLESS OF WHETHER THEY ARE DEFINED BY THE OCCURRENCE OF A COMMA OR AN EQUAL SIGN. IN "PMODE, AN ILLEGAL DEFINITION ("ID) ERROR OCCURS IF THE 12-BIT VALUE OF THE SYMBOL DOES NOT MATCH ON BOTH PASSES OF THE ASSEMBLY. IN "LMODE, THE "ID ERROR WILL RESULT IF THE VALUE DOES NOT MATCH IN THE LOWER 10 BITS OF THE ADDRESS ON BOTH PASSES. IN THIS MANNER, "LINC INDEX REGISTERS CAN HAVE THE SAME VALUE IN DIFFERENT SEGMENTS. .P THE VALUES OF SYMBOLS DEFINED BY AN EQUAL SIGN ARE NOT CHECKED AS THOSE DEFINED BY A COMMA. INSTEAD, THE ASSEMBLER SIMPLY REDEFINES THE SYMBOL TO THE NEW EVALUATED EXPRESSION. USED PROPERLY, A PROGRAMMER CAN THUS HAVE MULTIPLE LOCATION COUNTERS WITH SYMBOLS DEFINED BY AN EQUAL SIGN. HOWEVER, IF THE SYMBOL BEING REDEFINED IS A PERMANENT SYMBOL (ONE THAT IS ^^FIXTAB\\BED), THE VALUE MUST BE THE SAME. AN ^^_'RD\\_' ERROR MESSAGE IS PRINTED OUT IF THE VALUE IS DIFFERENT, BUT THE NEW VALUE IS TAKEN AS THE SYMBOL VALUE. .P SYMBOLIC ADDRESS CALCULATIONS ARE HANDLED DIFFERENTLY IN THE TWO MODES, ALSO. IN "PMODE, THE STANDARD PAGE-RELATIVE ADDRESS CALCULATION IS EMPLOYED AS WITH ^^DEC\\_'S OTHER ASSEMBLERS: "PAL-III, "PAL-D, "PAL8, AND "MACRO-8, NO MATTER WHETHER THE SYMBOL WAS DEFINED BY A COMMA OR AN EQUAL SIGN. HOWEVER, IN "LMODE, THE ADDRESS CALCULATION IS DONE DIFFERENTLY. FOR THE THREE "LMODE MEMORY REFERENCE INSTRUCTIONS ("ADD, "STC, AND "JMP), THE LOWER 10 BITS OF THE SYMBOL VALUE ARE USED WITH THE INSTRUCION. BUT FOR THE TWO-WORD MEMORY REFERENCE INSTRUCTIONS (WHERE THE BETA REGISTER VALUE IS ZERO), THE VALUE OF THE SYMBOL IS TRUNCATED TO THE LOWER 10 BITS ONLY IF IT WAS DEFINED BY A COMMA; OTHERWISE, ITS 12-BIT VALUE WILL BE USED (SEE ^FIGURE 2). .PG ^^EXPRESSION SYNTAX\\ .P EACH LINE OF CODING IS EVALUATED AS AN EXPRESSION UNLESS IT BEGINS WITH A MEMORY REFERENCE INSTRUCTION OR A PSEUDO-OP. AN EXPRESSION IS A COMBINATION OF PERMANENT SYMBOLS, USER SYMBOLS, AND NUMBERS SEPARATED FROM EACH OTHER BY OPERATORS; IT IS EVALUATED FROM LEFT TO RIGHT. THE LEGAL OPERATORS OF "PAL12 ARE: .B 1 .M 16, 70 .I -10 #1)#SPACE#^USED TO DELIMIT A PSEUDO-OP OR MEMORY REFERENCE INSTRUCTION FROM ITS EXPRESSION. ALSO IS EQUIVALENT TO ^^_'!\\_' DURING EVALUATION OF AN EXPRESSION. .B 1 .I -10 #2)##!####^THE LOGICAL ^INCLUSIVE ^OR OPERATOR. .B 1 .I -10 #3)##_&####^THE LOGICAL ^AND OPERATOR. .B 1 .I -10 #4)##+####^IN "LMODE, INDICATES ONE_'S COMPLEMENT ADDITION; IN "PMODE, INDICATES TWO_'S COMPLEMENT ADDITION. .B 1 .I -10 #5)##-####^IN "LMODE, INDICATES ONE_'S COMPLEMENT SUBTRACTION; IN "PMODE, INDICATES TWO_'S COMPLEMENT SUBTRACTION. .B 1 .I -10 #6)##_\####^ROTATE THE VALUE OF THE EXPRESSION ON THE LEFT THREE BITS CIRCULARLY TO THE RIGHT AND ADD THE TERM ON ITS RIGHT. THE ADDITION IS PERFORMED IN THE CURRENT ASSEMBLY MODE. .B 1 .I -10 #7)##_^####^THIS IS THE MULTIPLICATION OPERATOR. THE VALUE OF THE EXPRESSION ON THE LEFT IS ADDED TO ITSELF IN TWO_'S COMPLEMENT ARITHMETIC. THE TERM ON THE RIGHT IS TAKEN AS A 12-BIT UNSIGNED MULTIPLIER. .B 1 .I -10 #8)##__####^SHIFT THE VALUE OF THE EXPRESSION ON THE LEFT ARITHMETICALLY. IF THE TERM ON THE RIGHT IS POSITIVE, THE VALUE OF THE EXPRESSION IS SHIFTED LEFT WITH ZEROES INSERTED ON THE RIGHT. IF THE TERM IS NEGATIVE, THE VALUE OF THE EXPRESSION IS SHIFTED RIGHT WITH THE SIGN BIT PROPAGATED ON THE LEFT. .B 1 .I -10 #9)##%####^THE DIVIDE OPERATOR. THE 12-BIT VALUE OF THE EXPRESSION ON THE LEFT IS DIVIDED BY THE 12-BIT UNSIGNED INTEGER TERM ON THE RIGHT. .M 11, 70 .B 1 ^EXAMPLES OF THESE OPERATORS ARE SHOWN IN ^FIGURE 3. NOTE THAT SOME OF THE OPERATORS (_^, ^__, AND %) ACT THE SAME IN BOTH MODES OF ASSEMBLY, BUT MAY USE NEGATIVE TERMS. BE SURE THAT THESE TERMS ARE TWO_'S COMPLEMENT NUMBERS BY USING THEM IN "PMODE OR BY DEFINING THEM IN "PMODE. .PG ^^MEMORY REFERENCE INSTRUCTIONS\\ .P MANY OF THE INSTRUCTIONS USED ON THE "PDP-12, "PDP-8, OR "LINC-8 REQUIRE MEMORY OPERANDS. BECAUSE THEY REFER TO MEMORY FOR THEIR OPERANDS, THEY ARE CALLED ^'MEMORY REFERENCE INSTRUCTIONS\'. THERE ARE SIX "PMODE MEMORY REFERENCE INSTRUCTIONS (^^AND, TAD, ISZ, DCA, JMS,\\ AND "JMP) AND THREE "LMODE MEMORY REFERENCE INSTRUCTIONS ("ADD, "STC, AND "JMP). IF A MEMORY REFERENCE INSTRUCTION IS THE FIRST ELEMENT OF A CODING LINE, THEN "PAL12 USES THE REMAINING PART OF THE CODING LINE AS THE ADDRESS SPECIFICATION. .P IN "LMODE, THE ADDRESS SPECIFICATION IS SIMPLY THE VALUE OF THE EXPRESSION REMAINING ON THE LINE, TRUNCATED TO 10 BITS, AND ADDED TO THE VALUE OF THE MEMORY REFERENCE INSTRUCTION. IN "PMODE, THE ADDRESS SPECIFICATION CONSISTS OF TWO PARTS: THE PAGE-ZERO INDIRECT SPECIFICATION, AND THE RELATIVE PAGE ADDRESS SPECIFICATION. THE SYMBOLS ^^_'I\\_' AND ^^_'Z\\_' OR THEIR ABSENCE CONTROL THE SETTING OF THE INDIRECT BIT AND THE CURRENT PAGE BIT, RESPECTIVELY, OF THE INSTRUCTION. THE VALUE OF THE MEMORY ADDRESS EXPRESSION INDICATES THE RELATIVE PAGE ADDRESS IN THE LOWER SEVEN BITS OF THE INSTRUCION. IF THE ADDRESS IS NOT IN THE CURRENT PAGE, THEN THE INDIRECT BIT IS SET AND A LINK IS GENERATED FOR THE OFF-PAGE REFERENCE. INSTRUCTIONS FOR WHICH A LINK WAS GENERATED ARE MARKED WITH AN APOSTROPHE OR SINGLE QUOTE IN THE LISTING. .PG ^^SPECIAL SYMBOLS\\ .P THERE ARE EIGHT SPECIAL SYMBOLS WHICH CONFLICT IN VALUE BETWEEN "PMODE AND "LMODE: ^^NOP, HLT, SKP, STA, OPR, I, Z,\\ AND "JMP. BECAUSE THEY ARE SPECIAL, THEY ARE TREATED AS PSEUDO-OPS WHICH GENERATE THE APPROPRIATE CODE AND ARE THEN PASSED ON TO THE EXPRESSION EVALUATION ROUTINE. ^^_'I\\_' AND ^^_'Z\\_' ALSO HAVE SPECIAL DUTIES ASSIGNED TO THEM AS PREVIOUSLY EXPLAINED. FURTHERMORE, THE MEMORY REFERENCE INSTRUCTION ^^_'JMP\\_' IS TREATED ACCORDING TO THE CURRENT ASSEMBLY MODE. THESE EIGHT SYMBOLS CANNOT BE DELETED FROM THE SYMBOL TABLE, NOR CAN THEY BE REDEFINED. .PG ^^LITERALS\\ .P "PAL12 HAS KEPT THE USE OF LITERALS AND LITERAL EXPRESSIONS AS THIS IS ONE OF THE MAIN ADVANTAGES OF "PAL8. THERE IS BASICALLY ONE TYPE OF LITERAL; THE ADDRESS THE LITERAL REFERS TO ASSIGNS IT TO EITHER THE PAGE-ZERO LITERAL POOL OR THE CURRENT PAGE LITERAL POOL. LITERALS MAY BE FORCED TO THE PAGE-ZERO LITERAL POOL BY ENCLOSING IT WITH THE BRACKETS _'[_' AND _']_', OTHERWISE, THE LITERAL IS ASSIGNED TO THE CURRENT PAGE LITERAL POOL IF IT IS DELIMITED BY THE BRACKETS _'(_' AND _')_'. THE CLOSING BRACKET MAY BE OMITTED BUT IF PRESENT MUST AGREE WITH THE OPENING BRACKET. THE END OF A CODING STATEMENT AUTOMATICALLY CLOSES ALL UNMATCHED LITERAL BRACKETS. WHEN EITHER OF THESE TYPES OF LITERALS IS ENCOUNTERED, AN EXPRESSION IS EVALUATED, WHICH MAY ITSELF CONTAIN LITERALS. THE SPECIFIED LITERAL POOL IS SEARCHED FOR THE VALUE OF THE EXPRESSION.
IF IT ALREADY APPEARS IN THE POOL, THE RELATIVE ADDRESS IN THE POOL IS USED; OTHERWISE, IT IS ASSIGNED TO THE POOL AND THE NEW ASSIGNED ADDRESS IS USED IN THE EXPRESSION. "LMODE AND "PMODE LITERAL PROCESSING ARE THE SAME. THAT IS, THE LITERAL POOL STARTS AT THE HIGHEST ADDRESS IN THE "PAGE AND SUCCESSIVE LITERALS ARE ASSIGNED LOWER ADDRESSES. THE ONLY DIFFERENCE IS THAT IN "LMODE, LITERAL ADDRESSES ARE TRUNCATED TO 10 BITS. LITERAL POOLS ARE DUMPED IF THE CURRENT LOCATION COUNTER IS RESET OUTSIDE THE CURRENT PAGE OR FIELD. IF SUBSEQUENT ORIGINS ARE MADE BACK INTO THE PAGE, NEW LITERALS WILL BE ASSIGNED ADDRESSES BELOW THE OLD ONES; HOWEVER, ANY REFERENCES TO THE OLD LITERALS WILL GENERATE NEW COPIES OF THESE LITERALS. LITERALS MAY BE USED ANYWHERE WITHIN AN EXPRESSION AND MAY BE NESTED UP TO FIVE LEVELS. .P ERRORS MAY RESULT FROM OVERLAYING LITERAL POOLS WITH DATA OR INSTRUCTIONS IN EITHER ASSEMBLY MODE. .PG .CM; ^^PSEUDO-OPS\\ .P "PAL12 CONTAINS A LARGE REPETOIRE OF ASSEMBLER DIRECTIVES OR PSEUDO-OPS. AFTER LOOKING THROUGH MANY OTHER ASSEMBLERS FOR "DEC COMPUTERS (^^MACRO-10, MACRO-15, PAL-11, MACRO-8\\), MANY OF THE MORE USEFUL PSEUDO-OPS WERE INCORPORATED INTO THE "PAL12 ASSEMBLER. "APPENDIX ^A CONTAINS A LIST OF THE PSEUDO-OPS AVAILABLE IN "PAL12. .B 3 "PMODE AND "LMODE .P THE TWO MOST IMPORTANT PSEUDO-OPS WHICH THE ASSEMBLER MUST RECOGNIZE ARE "PMODE AND "LMODE TO DETERMINE THE CURRENT ASSEMBLY MODE. "PMODE, THE ASSUMED ASSEMBLY MODE, INDICATES TO PROCESS THE CODING STATEMENTS WHICH FOLLOW IN "PDP-8 MODE. ALL ADDITIONS AND SUBTRACTIONS ARE PERFORMED USING TWO_'S COMPLEMENT ARITHMETIC. ALL ORIGINS AND ADDRESS SYMBOLS ARE TAKEN AS 12-BIT VALUES. EXPRESSIONS INVOLVING MEMORY ADDRESSES ARE PROCESSED USING PAGE ADDRESS CALCULATIONS AND LINKS ARE GENERATED FOR OFFPAGE REFERENCES. "LMODE INDICATES TO PROCESS THE CODING STATEMENTS WHICH FOLLOW IN "LINC MODE. ALL ADDITIONS AND SUBTRACTIONS ARE PERFORMED USING ONE_'S COMPLEMENT ARITHMETIC. ALL ORIGINS AND ADDRESS SYMBOLS ARE TAKEN AS 10-BIT VALUES AND EXPRESSIONS INVOLVING MEMORY REFERENCE INSTRUCTIONS ARE PROCESSED USING SEGMENT ADDRESSES. .B 3 "PAGE, "FIELD, AND "SEGMNT .P THERE ARE THREE PSEUDO-OPS WHICH CONTROL THE SETTING OF THE CURRENT LOCATION COUNTER. THESE ARE "PAGE, "SEGMNT, AND "FIELD. "PAGE MAY BE OPTIONALLY FOLLOWED BY AN EXPRESSION. IF IT IS PRESENT, THE LOCATION COUNTER IS SET TO THE FIRST ADDRESS OF THE SPECIFIED PAGE. THE PREVIOUS PAGE LITERAL POOL IS DUMPED AT THIS TIME UNLESS IT WAS PAGE ZERO. THE EXPRESSION SHOULD BE IN THE RANGE 0 TO 37(8). IF NO EXPRESSION FOLLOWS "PAGE, THE LOCATION COUNTER IS SET TO THE FIRST ADDRESS OF THE NEXT PAGE IN THE SAME FIELD (PAGE ZERO FOLLOWS PAGE 37). THE PREVIOUS PAGE LITERALS ARE OUTPUT AT THIS TIME. .P THE "SEGMNT PSEUDO-OP CONTROLS THE SETTING OF THE LOCATION COUNTER IN REFERENCE TO "LINC DATA FIELDS (OR SEGMENTS). IF AN EXPRESSION FOLLOWS THE PSEUDO-OP, THE LOCATION COUNTER IS SET TO THE FIRST ADDRESS OF THE SPECIFIED SEGMENT. FOR EXAMPLE, "SEGMNT 3 IS EQUIVALENT TO SETTING THE LOCATION COUNTER TO 6000 AND THE FIELD TO 0; "SEGMNT 5 IS EQUIVALENT TO SETTING THE LOCATION COUNTER TO 2000 AND THE FIELD TO 1. IF THERE IS NO EXPRESSION AFTER THE "SEGMNT PSEUDO-OP, THE LOCATION COUNTER WILL BE RESET TO THE FIRST ADDRESS OF THE NEXT SEGMENT. THE CURRENT PAGE LITERAL POOL IS ALWAYS DUMPED WHEN THE SEGMENT CHANGES. THE PAGE-ZERO LITERAL POOL IS DUMPED ONLY IF A CHANGE OF FIELD OCCURS. .P THE "FIELD PSEUDO-OP IS THE STANDARD PSEUDO-OP USED BY "PAL-III, "PAL-D, AND "MACRO-8. THE CURRENT PAGE LITERAL POOL AND THE PAGE-ZERO LITERAL POOLS ARE DUMPED. THE LOCATION COUNTER IS RESET TO 0200 IN THE NEW FIELD. .B 3 "DECIMAL AND "OCTAL .P "PAL12 HAS TWO PSEUDO-OPS WHICH CONTROL HOW NUMERIC DATA IS TO BE INTERPRETED. "OCTAL AND "DECIMAL SET THE RADIX CONTROL OF THE ASSEMBLER TO OCTAL (BASE 8) OR DECIMAL (BASE 10) RESPECTIVELY. OCTAL RADIX IS INITIALLY ASSUMED. .B 3 "ENPUNCH AND "NOPUNCH .P SOMETIMES, IT IS CONVENIENT TO _"TRICK_" THE ASSEMBLER, ESPECIALLY REGARDING THE GENERATED BINARY OUTPUT. THE MOST OUTSTANDING EXAMPLE IS THE ASSEMBLING OF CODE AT ONE LOCATION IN MEMORY WHICH IS TO BE RELOCATED AND EXECUTED AT RUN TIME TO RUN AT ANOTHER LOCATION IN MEMORY. THE PSEUDO-OPS "NOPUNCH AND "ENPUNCH ALLOW THE PROGRAMMER TO DO THIS. AN EXAMPLE USAGE OF THESE PSEUDO-OPS CAN BE SEEN IN ^FIGURE 4.
"NOPUNCH INHIBITS THE GENERATED BINARY CODING FROM BEING SENT TO THE BINARY OUTPUT FILE. "ENPUNCH, WHICH IS INITIALLY ASSUMED, ENABLES THE BINARY CODING TO BE SENT TO THE BINARY OUTPUT FILE. .B 3 ^^TEXT, TEXTZ, SIXBIT, ASCII,\\ AND "ASCIIZ .P THERE ARE FIVE PSEUDO-OPS WHICH ALLOW REPRESENTATION OF CHARACTER STRINGS IN THE GENERATED BINARY OUTPUT: ^^TEXT, TEXTZ, SIXBIT, ASCII,\\ AND "ASCIIZ. "TEXT ALLOWS THE REPRESENTATION OF A STRING OF STRIPPED "ASCII CHARACTERS PACKED TWO TO A WORD. THE FIRST NON-SPACE, NON-TAB CHARACTER IS THE DELIMITER AND DOES NOT APPEAR IN THE BINARY OUTPUT. THE CHARACTERS, STRIPPED TO SIX BITS, ARE STORED TWO TO A WORD, LEFT-JUSTIFIED. IF THE LAST CHARACTER IS STORED IN THE LEFT HALF OF THE WORD, THE RIGHT HALF WILL BE 00; IF THE LAST CHARACTER IS STORED IN THE RIGHT HALF OF THE WORD, NO OTHER WORD IS ASSIGNED. NOTE THAT THIS IS "NOT THE WAY "PAL8 HANDLES ITS "TEXT PSEUDO-OP, BUT THE "LAP6/DIAL ASSEMBLER "DOES HANDLE THE "TEXT PSEUDO-OP IN THIS MANNER. BECAUSE OF THIS SEEMINGLY CONTRADICTORY USE OF THE PSEUDO-OP, "TEXTZ WAS IMPLEMENTED. "TEXTZ ACTS THE SAME AS THE "TEXT PSEUDO-OP DESCRIBED ABOVE, EXCEPT THAT A 00 CHARACTER IS ALWAYS ASSURED. THAT IS, IF THE LAST CHARACTER IS STORED IN THE LEFT HALF OF THE WORD, THE RIGHT HALF WILL BE 00; IF THE LAST CHARACTER IS STORED IN THE RIGHT HALF OF THE WORD, AN ADDITIONAL WORD CONTAINING 0000 IS ASSIGNED TO THE BINARY OUTPUT FILE. EXAMPLES IN ^FIGURE 5 SHOULD CLEAR UP ANY PROBLEMS. THE USER IS WARNED AT THIS TIME THAT THE "TEXT AND "TEXTZ PSEUDO-OPS DO NOT CROSS A LINE BOUNDARY AS DOES THE "TEXT PSEUDO-OP OF "DIAL. THIS MAY CAUSE SOME ^^IC\\ ERROR MESSAGES TO OCCUR IF THIS PRECAUTION IS NOT TAKEN. .P IT IS SOMETIMES MORE CONVENIENT TO STORE CHARACTERS IN A DIFFERENT WAY THAN THAT OF THE "TEXT AND "TEXTZ PSEUDO-OPS. THE "SIXBIT PSEUDO-OP ALLOWS REPRESENTATION OF "ASCII CHARACTERS, STRIPPED TO SIX BITS, AFTER 240(8) HAS BEEN SUBTRACTED FROM THEM, TO BE STORED TWO TO A WORD, LEFT-JUSTIFIED. FOR EXAMPLE, SPACE = 00, ^^_'A\\_' = 41, ETC. THE BEST REASON FOR THIS IS THAT IT IS EASIER TO PROGRAM A CONVERSION ROUTINE FROM "SIXBIT TO "ASCII THAN FROM "TEXT TO "ASCII. .P "ASCII AND "ASCIIZ ARE THE TWO PSEUDO-OPS IN "PAL12 WHICH ALLOW REPRESENTATION OF "ASCII 8-BIT CHARACTER STRINGS. THESE 8-BIT CHARACTER CODES ARE STORED RIGHT-JUSTIFIED IN SUCCESSIVE WORDS. "ASCIIZ ASSURES THAT THERE IS A ZERO WORD AT THE END OF THE CHARACTER STRING. FIGURE 5 SHOWS EXAMPLES OF THESE TWO PSEUDO-OPS. .B 3 "ZBLOCK .P THE "ZBLOCK PSEUDO-OP ALLOWS A BLOCK OF UP TO 4095(10) ZEROES TO BE ASSEMBLED IN MEMORY. THE EXPRESSION WHICH FOLLOWS THIS PSEUDO-OP IS THE NUMBER OF ZERO WORDS SENT TO THE BINARY OUTPUT FILE STARTING AT THE CURRENT LOCATION. NOTE THAT IT IS POSSIBLE TO OVERLAY THE CURRENT PAGE LITERAL POOL IF THE VALUE OF THE EXPRESSION IS TOO LARGE. .B 3 "PAUSE .P THE "PAUSE PSEUDO-OP IS INCLUDED IN "PAL12 FOR COMPATIBILITY WITH "PAL-III, "PAL-D, "MACRO-8, AND "PAL8. IT IS EFFECTIVELY IGNORED BY THE ASSEMBLER. .B 3 "PRINTX .P QUITE OFTEN, IT IS USEFUL TO BE ABLE TO PRINT MESSAGES DURING THE ASSEMBLY PROCESS. THESE MAY BE INFORMATIVE, SUCH AS INFORMING THE PROGRAMMER WHERE IN HIS SOURCE THE ASSEMBLER IS ASSEMBLING IN THE CASE OF LARGE PROGRAMS, OR THEY MAY BE WARNINGS, SUCH AS WARNING THE PROGRAMMER OF CERTAIN TABLE OVERLFOWS OR BOUNDARY CONDITIONS. "PAL12 ALLOWS THIS VIA THE PSEUDO-OP "PRINTX. ALL CHARACTERS AFTER THE PSEUDO-OP UP TO A TERMINATOR (SLASH, SEMICOLON, OR CARRIAGE RETURN) ARE SENT TO THE ERROR OUTPUT DEVICE DURING BOTH PASSES OF THE ASSEMBLY, UNLESS IT IS USED IN CONJUNCTION WITH THE CONDITIONAL ASSEMBLY PSEUDO-OPS.
.B 3 ^^FIXMRI, FIXTAB,\\ AND "EXPUNGE .P THREE PSEUDO-OPS EXIST IN "PAL12 WHICH MODIFY THE SYMBOL TABLE. ADDITIONAL MEMORY REFERENCE INSTRUCTIONS CAN BE APPENDED TO THE SYMBOL TABLE BY MEANS OF THE "FIXMRI PSEUDO-OP. THE FORMAT OF THIS PSEUDO-OP IS: ^^_'FIXMRI\\_', SPACES OR TABS, THE NAME OF THE NEW MEMORY REFERENCE INSTRUCTION, ^^_'=\\_', AND THE VALUE OF THE INSTRUCTION (WHICH MAY BE AN EXPRESSION). FOR EXAMPLE: .NF;.B 1 ^^ FIXMRI INC=2000 /ISZ WHEN NOT EXPECTED TO SKIP\\ .F .B 1 ^THE "FIXTAB PSEUDO-OP INFORMS "PAL12 THAT ALL SYMBOLS WHICH ARE CURRENTLY IN THE SYMBOL TABLE ARE TO BE MADE PERMANENT SYMBOLS AND ARE NOT TO BE PRINTED OUT IN THE SYMBOL TABLE LISTING. THE "EXPUNGE PSEUDO-OP DELETES ALL SYMBOLS FROM THE SYMBOL TABLE PERMANENTLY. THE ONLY EXCEPTIONS ARE THE PSEUDO-OPS AND THE EIGHT SPECIAL SYMBOLS: ^^NOP, HLT, SKP, STA, OPR, I, Z,\\ AND "JMP. "FIXTAB AND "EXPUNGE ARE PROCESSED DURING THE FIRST PASS OF THE ASSEMBLY AND ARE IGNORED DURING THE SECOND PASS. .B 3 ^^TITLE, SUBTTL, EJECT, XLIST,\\ AND "NOSYM .P THERE ARE MANY USEFUL PSEUDO-OPS IN "PAL12 WHICH MAKE THE OCTAL-SYMBOLIC LISTING OF A PROGRAM MORE ESTHETICALLY PLEASING TO THE EYE. "EJECT INFORMS THE ASSEMBLER TO SEND A FORM FEED TO THE LISTING OUTPUT FILE SO THAT A NEW PRINTED PAGE IS STARTED. A FORM FEED CHARACTER EFFECTS THE SAME THING. THE TITLE LINE OF A PROGRAM IS TAKEN FROM THE FIRST 32 CHARACTERS OF THE FIRST LINE OF THE SOURCE INPUT. SOMETIMES IT IS CONVENIENT TO CHANGE THE TITLE LINE, ESPECIALLY IN LARGE PROGRAMS. THE PSEUDO-OP "TITLE ALLOWS THE PROGRAMMER TO DO THIS AT HIS OWN DISCRETION. THE FIRST 32 CHARACTERS FOLLOWING THE PSEUDO-OP ARE TAKEN AS THE NEW TITLE LINE. A SUBTITLE LINE IS ALSO INCLUDED IN "PAL12. THE PSEUDO-OP "SUBTTL INDICATES TO ENTER A NEW SUBTITLE LINE, CONSISTING OF THE FIRST 56 CHARACTERS AFTER THE PSEUDO-OP. THE LINE CONTAINING ANY OF THESE PSEUDO-OPS ("EJECT, "TITLE, AND "SUBTTL) IS NOT PRINTED IN THE SOURCE LISTING. THE PSEUDO-OP "XLIST COMPLEMENTS A LISTING ON-OFF SWITCH INTERNAL TO "PAL12. INITIALLY, THIS SWITCH IS ON. "NOSYM DELETES THE PRINTING OF THE SYMBOL TABLE DURING A LISTING. .B 3 "DEVICE AND "FILENAME .P IN SPECIFYING ARGUMENTS TO THE "OS/8 ^'USER SERVICE ROUTINE\' ("USR), IT IS SOMETIMES NECESSARY TO INDICATE DEVICE NAMES OR FILE NAMES. IT IS FOR THIS PURPOSE THAT THE TWO PSEUDO-OPS "DEVICE AND "FILENAME HAVE REMAINED IN "PAL12. EACH OF THE PSEUDO-OPS, WHEN USED, MUST BE FOLLOWED BY A SINGLE SPACE OR TAB, AND A NAME. FOR THE "DEVICE PSEUDO-OP, THIS SHOULD BE A LEGAL "OS/8 FILE DEVICE NAME; TWO WORDS ARE GENERATED BY THE PSEUDO-OP. THE "FILENAME PSEUDO-OP TAKES A LEGAL "OS/8 FILE NAME WITH OPTIONAL EXTENSION; FOUR WORDS ARE GENERATED. THE NAME SHOULD BE FOLLOWED BY A SPACE, TAB, CARRIAGE RETURN, SEMICOLON, OR SLASH. EXAMPLES ARE GIVEN IN ^FIGURE 6. .B 3 .TP 9 ^^FLOATING-POINT CONSTANT PSEUDO-OP\\ .P NOT SINCE "MACRO-8 HAS ANY "PDP-8 ASSEMBLER ALLOWED FLOATING POINT CONSTANTS TO BE ASSEMBLED INTERMIXED WITH "PDP-8 CODE. "PAL12 ALLOWS REPRESENTATION OF FLOATING-POINT NUMBERS COMPATIBLE WITH ^^DEC\\_'S FLOATING-POINT PACKAGE. THESE CONSTANTS MAY BE POSITIVE OR NEGATIVE (TWO_'S COMPLEMENT ONLY) ACCORDING TO THEIR SIGN BUT MAY NOT BE COMBINED WITH OPERATORS. ALL DIGITS IN THE FLOATING-POINT NUMBER ARE ASSUMED TO BE DECIMAL; THE ASSEMBLER_'S CURRENT RADIX IS NOT ALTERED. .P ALL NUMBERS AFTER THE OCCURRENCE OF THE "FLTG PSEUDO-OP WILL BE TAKEN AS FLOATING-POINT CONSTANTS UNTIL THE OCCURRENCE OF AN ALPHABETIC CHARACTER OTHER THAN ^^_'E\\_'. COMMENTS ARE ALLOWED ON CODING LINES WITH FLOATING-POINT CONSTANTS OR ON LINES BY THEMSELVES. HOWEVER, SYMBOL DEFINITIONS ARE NOT ALLOWED AS THEY WILL STOP THE PROCESSING OF THE PSEUDO-OP. .P CONSTANTS ASSEMBLED AFTER THE "FLTG PSEUDO-OP WILL BE STORED IN THREE-WORD FLOATING-POINT NOTATION COMPATIBLE WITH ^^DEC\\_'S FLOATING-POINT PACKAGE. THE GENERAL INPUT FORMAT OF A FLOATING-POINT CONSTANT IS: ^^_'SDDD.DDDESDD\\_' WHERE ^^_'S\\_' IS EITHER ^^_'+\\_' OR ^^_'-\\_' AND THE ^D_'S ARE DECIMAL DIGITS. ANY CHARACTER WHICH IS NOT LEGALLY A PART OF THIS FORMAT TERMINATES INPUT OF A NUMBER. THE RANGE OF FLOATING-POINT NUMBERS ALLOWED BY THE "FLTG PSEUDO-OP IS + OR - 1^E615. NUMBERS OUTSIDE THIS RANGE PRODUCE AN ^^_'OV\\_' ERROR MESSAGE (^^OV\\ERFLOW). THE OUTPUT WHICH IS PRODUCED IS: .TS 10, 20;.NF;.B 1 "WORD1 ^EXPONENT "WORD2 ^HIGH ORDER PART OF MANTISSA "WORD3 ^LOW ORDER PART OF MANTISSA .F .B 1 ^FIGURE 7 SHOWS EXAMPLES OF THE "FLTG PSEUDO-OP. .PG ^^CONDITIONAL ASSEMBLY\\ .P A LARGE GROUP OF CONDITIONAL ASSEMBLY PSEUDO-OPS HAS BEEN INCLUDED IN "PAL12. THEY TEST VARIOUS CONDITIONS, SUCH AS THE VALUE OF AN EXPRESSION, THE CURRENT ASSEMBLY PASS, THE CURRENT ASSEMBLY MODE, OR WHETHER A SYMBOL IS DEFINED OR NOT. THEY ALL HAVE A COMMON FORMAT: .TS 10, 20, 30;.NF;.B 1 "IFPSEUDO ARGUMENT <STATEMENTS> .F .B 1 ^CERTAIN CONDITIONAL ASSEMBLY PSEUDO-OPS DO NOT REQUIRE AN ARGUMENT AND OTHERS REQUIRE THAT THE ARGUMENT BE A SYMBOL NAME OR AN EXPRESSION. IF THE CONDITION SPECIFIED BY THE PSEUDO-OP IS TRUE, THE CODING STATEMENTS WHICH ARE ENCLOSED IN ANGLE BRACKETS ARE ASSEMBLED. CONDITIONAL ASSEMBLY MAY BE NESTED TO ANY LEVEL. SINCE THE ENTIRE INPUT STREAM IS SCANNED FOR MATCHING BRACKETS WHEN THE CONDITIONAL TESTED IS FALSE, IT IS UNWISE TO HAVE THEM IN COMMENTS OR TEXT STRINGS AS THEY MAY TERMINATE THE CONDITION PREMATURELY. EXAMPLES OF CONDITIONAL ASSEMBLY ARE SHOWN IN ^FIGURE 8. FOR THE PSEUDO-OPS DESCRIBED BELOW, THE CODING STATEMENTS ENCLOSED IN BRACKETS ARE ASSEMBLED IF THE CONDITIONAL IS SATISFIED. .B 1 .NF;.B 1 "IF1 <CONDITIONAL CODING STATEMENTS> .F .B 1 ^THE CODING STATEMENTS WILL BE ASSEMBLED IF THE ASSEMBLER IS PROCESSING PASS 1. .B 1 .NF;.B 1 "IF2 <CONDITIONAL CODING STATEMENTS> .F .B 1 ^THE CODING STATEMENTS WILL BE ASSEMBLED IF THE ASSEMBLER IS PROCESSING PASS 2 (EITHER THE BINARY OUTPUT OR THE LISTING OUTPUT). .B 1 .NF;.B 1 "IFLMODE <CONDITIONAL CODING STATEMENTS> .F .B 1 ^THE CODING STATEMENTS WILL BE ASSEMBLED IF THE ASSEMBLER IS CURRENTLY PROCESSING IN "LINC MODE. .B 1 .NF;.B 1 "IFPMODE <CONDITIONAL CODING STATEMENTS> .F .B 1 ^THE CODING STATEMENTS WILL BE ASSEMBLED IF THE ASSEMBLER IS CURRENTLY PROCESSING IN "PDP-8 MODE. .B 1 .NF;.B 1 "IFDEF SYMBOL <CONDITIONAL CODING STATEMENTS> .F .B 1 ^IF THE SPECIFIED SYMBOL IS CURRENTLY IN THE SYMBOL TABLE, THE CODING STATEMENTS ENCLOSED IN THE BRACKETS WILL BE ASSEMBLED. .B 1 .NF;.B 1 "IFNDEF SYMBOL <CONDITIONAL CODING STATEMENTS> .F .B 1 ^IF THE SPECIFIED SYMBOL IS NOT DEFINED, I.E., DOES NOT APPEAR IN THE SYMBOL TABLE, THEN THE CODING STATEMENTS ENCLOSED IN THE BRACKETS WILL BE ASSEMBLED. .P FOR THE PSEUDO-OPS DESCRIBED BELOW, THE EXPRESSION IS EVALUATED IN THE CURRENT ASSEMBLY MODE. THE VALUE OF THE EXPRESSION IS COMPARED WITH ZERO AND THE CONDITIONAL CODE IS ASSEMBLED IF THE CONDITION IS SATISFIED. NOTE THAT 7777(8) AND 0000 ARE BOTH ZERO IN "LINC MODE. .B 1 .TS 10, 17, 31;.NF;.B 1 "IFZERO "IFE EXPRESSION <CONDITIONAL CODE> .F .B 1 ^IF THE VALUE OF THE EXPRESSION IS EQUAL TO ZERO, THE CONDITIONAL CODE IS ASSEMBLED. .B 1 .NF;.B 1 "IFNZRO "IFN EXPRESSION <CONDITIONAL CODE> .F .B 1 ^IF THE VALUE OF THE EXPRESSION IS NOT EQUAL TO ZERO, THEN THE CONDITIONAL CODE IS ASSEMBLED.
.B 1 .NF;.B 1 "IFL EXPRESSION <CONDITIONAL CODE> .F .B 1 ^THE CONDITIONAL CODE IS ASSEMBLED IF THE VALUE OF THE EXPRESSION IS LESS THAN ZERO. .B 1 .NF;.B 1 "IFLE EXPRESSION <CONDITIONAL CODE> .F .B 1 ^THE CONDITIONAL CODE IS ASSEMBLED IF THE VALUE OF THE EXPRESSION IS LESS THAN OR EQUAL TO ZERO. .B 1 .NF;.B 1 "IFG EXPRESSION <CONDITIONAL CODE> .F .B 1 ^IF THE VALUE OF THE EXPRESSION IS GREATER THAN ZERO, THEN THE CONDITIONAL CODE IS ASSEMBLED. .B 1 .NF;.B 1 "IFGE EXPRESSION <CONDITIONAL CODE> .F .B 1 ^IF THE VALUE OF THE EXPRESSION IS GREATER THAN OR EQUAL TO ZERO, THEN THE CONDITIONAL CODE IS ASSEMBLED. .PG "ERRORS .P "PAL12 HAS MANY MESSAGES WHICH IT CONVEYS TO THE USER IF IT DOES NOT LIKE SOMETHING ON A LINE OF CODING. ALL ERROR MESSAGES HAVE THE SAME BASIC FORMAT: .TS 10, 15, 35;.NF;.B 1 "EE +NNNN OR "EE ^^SSSSSS\\ OR "EE ^^SSSSSS\\+NNNN .F .B 1 WHERE _'"EE_' IS THE ERROR CODE, "_'SSSSSS_' IS THE LAST SYMBOL WHICH THE ASSEMBLER DEFINED WITH A COMMA, AND _'+NNNN_' IS EITHER THE LAST ORIGIN WHICH THE ASSEMBLER SAW, OR IS THE NUMBER OF LOCATIONS ASSEMBLED SINCE THE LAST SYMBOL WAS DEFINED (ONLY IF PRECEDED BY A SYMBOL NAME). THESE MAY HELP THE USER IN LOCATING THE ERRORS IN THE SOURCE PROGRAM. A LISTING OF ERROR MESSAGES AND THEIR PROBABLE CAUSES IS CONTAINED IN "APPENDIX "B. ^^ .NF;.B 1 .T FIGURE 1. .PG 18 PMODE /PDP-8 MODE ASSEMBLY 00200 *200 00200 7300 CLA CLL 03720 *3720 03720 7000 NOP LMODE /CHANGE TO LINC MODE ASSEMBLY 02200 *200 /ACTUALLY 2200 (200 IN SEGMENT 1) 02200 0011 CLR 03720 *3720 /ORG AT 3720 (1720 IN SEGMENT 1) 03720 0016 NOP 06000 SEGMNT 3 /RESETS ORG TO SEGMENT 3 (6000) 06200 *200 /ORG AT 6200 (0200 IN SEG. 3) 06200 0011 CLR 07720 *3720 /ORIGIN IS 7720 (1720 IN SEG. 3) 07720 0016 NOP .PG .T FIGURE 2. PMODE /PDP-8 MODE ASSEMBLY 04200 *4200 /SET ORIGIN TO 4200 04200 7300 AA, CLA CLL /AA HAS VALUE 4200 04201 1777_' TAD BANK3 /NOTICE THAT LINK IS GENERATED 04202 3776_' DCA CC /CC OUTSIDE CURRENT PAGE 04203 6141 LINC; LMODE /CHANGE TO LINC MODE ASSEMBLY 04204 1020 LDA I 04205 7777 YES /YES = 7777 04206 4217 STC SWITCH /SET THE SWITCH 04207 1000 LDA /GET AA 04210 0200 AA /NOTE 10 BIT ADDRESS 04211 0641 LDF 1 04212 1040 STA /SAVE IN BB 04213 2400 BB /NOTE: USES 12-BIT VALUE 04214 5600 STC CC /CC STILL IN CURRENT SEGMENT 04215 0641 LDF 1 /GET LINC DATA FIELD TO 1 04216 1520 SRO I 04217 0000 SWITCH, NO /CHANGE TO BANK 3 ? 04220 0643 LDF 3 /YES, SET LINC DATA FIELD TO 3 04221 0603 LIF 3 /SET LINC INSTR FIELD TO 3 04222 6020 JMP BANK3 /GO TO LOC IN SEGMENT 3 /NOTICE HOW INSTR. IS ASSEMBLED /REORG IN SAME SEGMENT 04376 5600 04377 6020 05600 *5600 /DUMPS CURRENT PAGE LITERALS 05600 0000 CC, 0 /DEFINE CC 06000 SEGMNT 3 /REORG TO LINC SEGMENT 3 06020 *20 /RESET ORIGIN WITHIN SEGMENT 06020 0011 BANK3, CLR /NOTE THAT CURRENT LOC CTR = 6020 2400 BB=2_\400 7777 YES=7777 0000 NO=0000 .PG .T FIGURE 3. PMODE /FIRST PDP-8 MODE OPERATORS 00400 *400 7776 A=-2 /DEFINE A, B, AND C 0007 B=7 0021 C=21 00400 0000 -0 /PDP-8 MODE (+0 = -0) 00401 0005 A+B /2_'S COMPLEMENT ADDITION 00402 7766 B-C /2_'S COMPLEMENT SUBTRACTION 00403 7770 A_^4 /MULTIPLICATION 00404 0050 A+B_^10 /(A+B)_^10 00405 0003 B%2 /DIVISION 00406 0004 C+A-B%2 /((C+A) - B) % 2 00407 0004 14%3 /DIVISION 00410 0000 14%A /DIVISION BY NEG. NO. 00411 0000 -14%A /NEG. DIV. BY NEG. 00412 7021 B_\C /B ROTATED RIGHT 3, + C 00413 5021 B-2_\C /(B-2) ROTATED RIGHT 3, + C 00414 7770 A__2 /-2 SHIFTED LEFT 2 BITS 00415 7744 -B__2 /-7 SHIFTED LEFT 2 BITS 00416 7776 -B__A /-7 SHIFTED RIGHT 2 BITS 00417 7776 -B__7776 /DITTO 00420 0027 B!C /LOGICAL INCLUSIVE OR 00421 0001 B_&C /LOGICAL AND 00422 0001 1+2_&5 /3_&5 = 1 00423 0007 1+2!5 /3!5 = 7 00424 1000 3000+6000 /2_'S COMPLEMENT WITH OVERFLOW 00425 1000 3_\6000 /EQUIVALENT 00426 0301 _"A /ASCII _"A_" 00427 7777 _"A-_"B /DIFFERENCE 00430 0100 _"A_^100 /_"A_" IN LEFT HALF 00431 0001 _"A_&77 /_"A_" IN RIGHT HALF .PG .T FIGURE 3. (CONTINUED) LMODE /NOW FOR LINC MODE 7775 A=-2 /REDEFINE A, B, AND C 0007 B=7 0021 C=21 00432 7777 -0 /LINC MODE (-0 = 7777) 00433 0005 A+B /1_'S COMPLEMENT ADDITION 00434 7765 B-C /1_'S COMPLEMENT SUBTRACTION 00435 7764 A_^4 /MULTIPLICATION ALWAYS 2_'S COMPL 00436 0050 A+B_^10 /DITTO 00437 0003 B%2 /DIV. ALWAYS 2_'S COMPL UNSIGNED 00440 0004 C+A-B%2 /((C+A) - B) % 2 00441 0004 14%3 /MORE DIVISION 00442 0000 14%A /DITTO 00443 0000 -14%A /DITTO 00444 7021 B_\C /B ROTATED RIGHT 3, + C 00445 5021 B-2_\C /(B-2) ROTATED RIGHT 3, + C 00446 7764 A__2 /A SHIFTED LEFT 2 BITS 00447 7740 -B__2 /-7 SHIFTED LEFT 2 BITS 00450 7777 -B__A /-7 SHIFTED RIGHT 3 BITS 00451 7776 -B__7776 /-7 SHIFTED RIGHT 2 BITS 00452 0027 B!C /LOGICAL INCLUSIVE OR 00453 0001 B_&C /LOGICAL AND 00454 0001 1+2_&5 /3_&5 = 1 00455 0007 1+2!5 /3!5 = 7 00456 1001 3000+6000 /1_'S COMPLEMENT WITH OVERFLOW 00457 1001 3_\6000 /DITTO (NOTE END-AROUND CARRY) 00460 0301 _"A /ASCII _"A_" 00461 7776 _"A-_"B /DIFFERENCE (1_'S COMPLEMENT) 00462 0100 _"A_^100 /_"A_" IN LEFT HALF 00463 0001 _"A_&77 /_"A_" IN RIGHT HALF .PG .T FIGURE 4. PMODE 00600 *600 /RE-ORG TO 600 00600 7300 LOOP1, CLA CLL /RUN-TIME LOOP TO MOVE 00601 1611 TAD I PTR1 /THE _"KBDLUP_" CODING FROM 00602 3612 DCA I PTR2 /WHERE IT IS LOADED (0614) 00603 2211 ISZ PTR1 /TO WHERE IT WILL BE 00604 2212 ISZ PTR2 /RUNNING (5400) 00605 2213 ISZ CTR 00606 5200 JMP LOOP1 00607 5610 JMP I .+1 00610 5400 5400 00611 0614 PTR1, CODING /_"FROM_" POINTER 00612 5400 PTR2, 5400 /_"TO_" POINTER 00613 7764 CTR, 5400-CODEND /NO. OF WORDS 0614 CODING=. NOPUNCH 05400 *5400 ENPUNCH 05400 6031 KBDLUP, KSF /EXAMPLE PROGRAM TO READ 05401 5200 JMP .-1 /A KEYBOARD CHARACTER AND 05402 6036 KRB /TO ECHO IT. ALSO CHECKS FOR 05403 6046 TLS /CARRIAGE RETURN AND HALTS. 05404 6041 TSF 05405 5204 JMP .-1 05406 1213 TAD M215 05407 7640 SZA CLA 05410 5200 JMP KBDLUP 05411 7402 HLT 05412 5200 JMP KBDLUP 05413 7563 M215, -215 5414 CODEND=. .PG .T FIGURE 5. 01000 *1000 01000 0102 TEXT _\ABC_\ 01001 0300 01002 0102 TEXTZ _\ABC_\ 01003 0300 01004 0102 TEXT _\ABCD_\ 01005 0304 01006 0102 TEXTZ _\ABCD_\ 01007 0304 01010 0000 01011 4142 SIXBIT _\ABC_\ 01012 4300 01013 4142 SIXBIT _\ABCD_\ 01014 4344 01015 1605 MSG1, TEXT _\NEXT BLOCK OUTPUT IS_\ 01016 3024 01017 4002 01020 1417 01021 0313 01022 4017 01023 2524 01024 2025 01025 2440 01026 1123 01027 3030 BLKNO, TEXTZ _\XXX, O.K.?_\ 01030 3054 01031 4017 01032 5613 01033 5677 01034 0000 01035 0301 ASCII _\ASCII CHARACTERS_\ 01036 0323 01037 0303 01040 0311 01041 0311 01042 0240 01043 0303 01044 0310 01045 0301 01046 0322 01047 0301 01050 0303 01051 0324 01052 0305 01053 0322 01054 0323 01055 0301 ASCIIZ _\ASCII CHARACTERS_\ 01056 0323 01057 0303 01060 0311 01061 0311 .PG .T FIGURE 5. (CONTINUED) 01062 0240 01063 0303 01064 0310 01065 0301 01066 0322 01067 0301 01070 0303 01071 0324 01072 0305 01073 0322 01074 0323 01075 0000 01076 0301 _"A;_"S;_"C;_"I;_"I;_" ;_"C;_"H;_"A;_"R;_"A;_"C;_"T;_"E;_"R;_"S;0 01077 0323 01100 0303 01101 0311 01102 0311 01103 0240 01104 0303 01105 0310 01106 0301 01107 0322 01110 0301 01111 0303 01112 0324 01113 0305 01114 0322 01115 0323 01116 0000 01117 4100 MESS6, SIXBIT _\A LINE OF SIXBIT CHARACTERS._\ 01120 5451 01121 5645 01122 0057 01123 4600 01124 6351 01125 7042 01126 5164 01127 0043 01130 5041 01131 6241 01132 4364 01133 4562 01134 6316 .PG LMODE 01135 1321 LDH I 1 /EXAMPLE SHOWING WAY TO TEST 01136 1420 SHD I /FOR HALFWORD CHARACTER 01137 0100 TEXT _\A_\ /USING _"TEXT_" PSEUDO-OP 01140 7155 JMP ACHAR 01141 1420 SHD I 01142 0200 _"B_^100 /USING ASCII CHAR TIMES 100 01143 7154 JMP BCHAR 01144 1420 SHD I /USING ASCII CHAR SHIFTED 01145 0300 _"C__6 /LEFT SIX BIT POSITIONS 01146 7153 JMP CCHAR 01147 1460 SAE I /USING ASCII CHAR MASKED 01150 0004 _"D_&77 /TO LOWER SIX BITS 01151 7156 JMP BADDIE 01152 0016 DCHAR, NOP 01153 0016 CCHAR, NOP 01154 0016 BCHAR, NOP 01155 0016 ACHAR, NOP 01156 0000 BADDIE, HLT .PG .T FIGURE 6. PMODE 01200 *1200 01200 6201 CDF 00 01201 6212 CIF 10 01202 4777 JMS I (7700) /CALL OS/8 USR 01203 0010 10 /LOCK IT IN MEMORY 01204 6212 CIF 10 01205 4776 JMS I (200) /LOAD DEVICE HANDLER 01206 0001 1 01207 0423 DEVICE DSK /FOR DEVICE DSK 01210 1300 1210 DEV=.-1 01211 6001 ENTRY, 6001 /2-PAGE, LOC 6000 01212 5227 JMP ERROR /IN CASE OF ERROR 01213 1210 TAD DEV 01214 6212 CIF 10 01215 4776 JMS I (200) /NOW LOOKUP A NAME 01216 0002 2 01217 1223 BLOCKN, NAMPTR /OVERLAID WITH BLOCK NO. 01220 0000 0 /OVERLAID WITH LENGTH 01221 5227 JMP ERROR /IN CASE OF ERROR 01222 7000 NOP 01223 1601 NAMPTR, FILENAME NAME.EX 01224 1505 01225 0000 01226 0530 01227 7402 ERROR, HLT 2000 FIXMRI INC=2000 /ISZ WHEN NOT EXPECTED TO SKIP 01230 0000 SUBR, 0 /THIS SUBROUTINE IS USED AS 01231 1630 TAD I SUBR /AN EXAMPLE TO SHOW HOW 01232 2230 INC SUBR /THE MEMORY REFERENCE INSTRUCTION 01233 3245 DCA SUBCTR /_"INC_" CAN BE USED. 01234 1643 LOOPS, TAD I PTRS1 01235 3644 DCA I PTRS2 01236 2243 INC PTRS1 01237 2244 INC PTRS2 01240 2245 ISZ SUBCTR 01241 5234 JMP LOOPS 01242 5630 JMP I SUBR 01243 0000 PTRS1, 0 01244 0000 PTRS2, 0 01245 0000 SUBCTR, 0 .PG .T FIGURE 7. 01246 0002 PI, FLTG 3.14159 /VALUE FOR PI 01247 3110 01250 3752 01251 0001 CONSTS, FLTG 1.5 01252 3000 01253 0000 01254 0002 FLTG 3.75 01255 3600 01256 0000 01257 0003 FLTG 7.125 01260 3440 01261 0000 / A GROUP OF FLOATING POINT NUMBERS 01262 0001 -1.0; -2.5 01263 6000 01264 0000 01265 0002 01266 5400 01267 0000 01270 0024 1000000 01271 3641 01272 1000 01273 0024 1E6 01274 3641 01275 1000 01276 0002 3.14159 3141.59E-3 01277 3110 01300 3752 01301 0002 01302 3110 01303 3752 / SOME STORAGE LOCATIONS 01304 0000 TEMPA, ZBLOCK 3 01307 0000 TEMPB, FLTG 0 01310 0000 01311 0000 01312 0000 TEMPC, FLTG 0.0 01313 0000 01314 0000 01315 0001 TEMPD, FLTG 1.0 /INITIALIZED 01316 2000 01317 0000 01376 0200 01377 7700 01400 PAGE .PG .T FIGURE 8. / SOME EXAMPLES OF CONDITIONAL ASSEMBLY IN BOTH MODES PMODE 0000 A=0 7777 B=7777 0002 C=2 IF1 <D=77> 01400 7000 D 7700 IF2 <D=7700> 01401 7700 D IFLMODE <PRINTX THIS IS LMODE > THIS IS PMODE IFPMODE <PRINTX THIS IS PMODE > 01402 0000 IFDEF A <0> 01403 0000 IFNDEF X <0> IFL A <A> 01404 0000 IFLE A <A> 01405 0000 IFE A <A> 01406 0000 IFGE A <A> IFG A <A> IFN A <A> 01407 7777 IFL B <B> 01410 7777 IFLE B <B> IFE B <B> IFGE B <B> IFG B <B> 01411 7777 IFN B <B> IFL C <C> IFLE C <C> IFE C <C> 01412 0002 IFGE C <C> 01413 0002 IFG C <C> 01414 0002 IFN C <C> 01415 7700 IFL D <D> 01416 7700 IFLE D <D> IFE D <D> IFGE D <D> IFG D <D> 01417 7700 IFN D <D> .PG .T FIGURE 8. (CONTINUED) LMODE 0000 A=0 7777 B=7777 0021 C=21 IF1 <D=70> 01420 7700 D 7000 IF2 <D=7000> 01421 7000 D THIS IS LMODE IFLMODE <PRINTX THIS IS LMODE > IFPMODE <PRINTX THIS IS PMODE > 01422 0000 IFDEF A <0> IFNDEF Y <0> IFL A <A> 01423 0000 IFLE A <A> 01424 0000 IFE A <A> 01425 0000 IFGE A <A> IFG A <A> IFN A <A> IFL B <A> 01426 7777 IFLE B <B> 01427 7777 IFE B <B> 01430 7777 IFGE B <B> IFG B <B> IFN B <B> IFL C <C> IFLE C <C> IFE C <C> 01431 0021 IFGE C <C> 01432 0021 IFG C <C> 01433 0021 IFN C <C> 01434 7000 IFL D <D> 01435 7000 IFLE D <D> IFE D <D> IFGE D <D> IFG D <D> 01436 7000 IFN D <D> .PG 01600 PAGE PMODE TABLE OVERFLOW IFGE .-1600 <PRINTX TABLE OVERFLOW > .T .PG .T ^^ APPENDIX A - PSEUDO-OPS AVAILABLE IN PAL12 \\ .TS 10, 30, 50;.NF;.UC ASCII IFG OCTAL ASCIIZ IFGE PAGE DECIMAL IFL PAUSE DEVICE IFLE PMODE EJECT IFLMODE PRINTX ENPUNCH IFN SEGMNT EXPUNGE IFNDEF SIXBIT FIELD IFNZRO SUBTTL FILENAME IFPMODE TEXT FIXMRI IFZERO TEXTZ FIXTAB IF1 TITLE FLTG IF2 XLIST IFDEF LMODE ZBLOCK IFE NOPUNCH NOSYM .LC .PG .T ^^ APPENDIX B - PAL12 ERROR MESSAGES AND PROBABLE CAUSES \\ .M 11,70 .I -5 ^B^E###^PUSH-DOWN LIST OVERFLOW .I -3 1)#^TOO MANY NESTED LITERALS ON CURRENT PAGE. .B .I -5 ^D^F###^DEVICE FULL .I -3 1)#^NO ROOM FOR BINARY OUTPUT OR LISTING ON SPECIFIED DEVICE. .B 1 .I -5 ^I^C###^ILLEGAL CHARACTER .I -3 1)#^FIRST CHARACTER OF "FIXMRI SYMBOL IS NOT ALPHABETIC. .I -3 2)#^CHARACTER AFTER "FIXMRI SYMBOL IS NOT ^^_'=\\_'. .I -3 3)#^ILLEGAL CHARACTER ON CODING LINE (SYNTAX ERROR). .I -3 4)#^UNMATCHED _'[_' WITH _']_', _'(_' WITH _')_', OR _'<_' WITH _'>_'. .I -3 5)#^THE DIGITS _'8_' OR _'9_' HAVE APPEARED IN AN OCTAL NUMBER. .I -3 6)#^CARRIAGE RETURN IMMEDIATELY FOLLOWS _". .I -3 7)#^CHARACTER AFTER THE EXPRESSION OF A CONDITIONAL IS NOT _'<_'. .I -3 8)#^THE FIRST CHARACTER OF THE SYMBOL AFTER "IFDEF OR "IFNDEF IS NOT ALPHABETIC. .B .I -5 ^I^D###^ILLEGAL DEFINITION .I -3 1)#^ATTEMPT TO REDEFINE A SYMBOL ENDED BY ^^_',\\_'. .B 1 .I -5 ^I^E###^ILLEGAL USE OF EQUAL SIGN .I -3 1)#^UNDEFINED SYMBOL ON RIGHT SIDE OF ^^_'=\\_'. .B 1 .I -5 ^I^I###^ILLEGAL INDIRECT .I -3 1)#^SYMBOL THAT IS INDIRECTLY REFERENCED IS NOT ON THE CURRENT PAGE. .B 1 .I -5 ^I^P###^ILLEGAL PSEUDO-OP .I -3 1)#^ILLEGAL USE OF A PSEUDO-OP AS AN OPERAND. .I -3 2)#^ILLEGAL USE OF A PSEUDO-OP IN A CONDITIONAL. .B 1 .I -5 ^I^Z###^ILLEGAL PAGE ZERO REFERENCE .I -3 1)#^SYMBOL REFERENCED WITH ^^_'Z\\_' IS NOT ON PAGE ZERO. .B 1 .I -5 ^O^V###^OVERFLOW IN FLOATING-POINT CONVERSION .I -3 1)#^THE FLOATING-POINT NUMBER AFTER THE "FLTG PSEUDO-OP IS LARGER IN MAGNITUDE THAN 1^E615. .B 1 .I -5 ^P^E###^CURRENT PAGE LITERAL POOL EXCEEDED .I -3 1)#^TOO MANY LITERALS IN CURRENT PAGE. .I -3 2)#^TOO MANY INSTRUCTIONS OR DATA LOCATION ON CURRENT PAGE. .B 1 .I -5 ^P^H###^PHASE ERROR .I -3 1)#^DOLLAR SIGN ($) MISSING FROM END OF SOURCE. .B 1 .I -5 ^R^D###^REDEFINITION ERROR .I -3 1)#^ATTEMPT TO REDEFINE A ^^FIXTAB\\BED SYMBOL. .B 1 .I -5 ^S^E###^SYMBOL TABLE OVERFLOW .I -3 1)#^USER HAS DEFINED TOO MANY SYMBOLS FOR AVAILABLE MEMORY. .B 1 .I -5 ^U^S###^UNDEFINED SYMBOL .I -3 1)#^UNDEFINED SYMBOL GIVEN IN ORIGIN STATEMENT. .I -3 2)#^UNDEFINED SYMBOL GIVEN AS OPERAND. .B 1 .I -5 ^Z^E###^PAGE ZERO LITERAL POOL EXCEEDED .I -3 1)#^TOO MANY LITERALS ON PAGE ZERO. .I -3 2)#^TOO MANY INSTRUCTIONS OR DATA LOCATIONS ON PAGE ZERO. .I -3 3)#^ATTEMPT TO USE 0000-0017 AS LITERAL POOL LOCATIONS.
.! END OF PAL12.RO