File SABR.CO

Directory of image this file is from
This file as a plain text file

/SABR.815
/SABR.V17
/DEC-08-A2D2-16
/COPYRIGHT 1969, DIGITAL EQUIPMENT CORP.,
/MAYNARD, MASS.
/
/NOTE: WHENEVER ABOVE VERSION NUMBER IS CHANGED
/BE SURE TO ALSO CHANGE VERSION NUMBER FOR TYPEOUT.
/THIS IS AT VERSN+13 (ABOUT P. 83)
/
/THERE ARE TWO BASIC PHASES OF OPERATION WITHIN
/SABR:(A) COLLECTION AND (B) ASSEMBLY. IN PASS 1
/SABR COLLECTS A FULL PAGE OF DATA AND THEN
/ASSEMBLES THE FULL PAGE. IN PASS2 COLLECTION
/AND ASSEMBLY ARE CARRIED OUT ON A LINE-
/BY-LINE BASIS RATHER THAN PAGE-BY-
/PAGE. FOLLOWING IS A DESCRIPTIVE FLOW CHART OF
/THE PRINCIPAL METHODS OF OPERATION USED IN
/THE PROGRAM DURING PASS1.
/(1) BEGINNING AT START THERE ARE TWO ROUTINES NECESSARY
/TO INTIALIZE THE ENTIRE PROGRAM. IOINIT CARRIES
/OUT THE DIALOG WITH THE USER TO DETERMINE WHICH
/I/O DEVICES WILL BE USED. INITA INTIALIZES ALL
/THE FLAGS AND TABLES WHICH ARE USED CONTINOUSLY
/THROUGHOUT THE PROGRAM.
/(2) THE DRIVER FOR THE FULL PAGE-BY-PAGE ASSEMBLER
/IS CONTAINED IN THE LOOP THAT RUNS FROM RSTRT
/TO RSTRT6-1. THIS LOOP OPERATES AS FOLLOWS.
/FIRST IT CALLS INILPT WHICH INITIALIZES ALL
/THOSE FLAGS AND TABLES WHICH MUST BE
/REFRESHED OR REBUILT FOR EACH PAGE OF CODE.
/THEN IT CALLS THE MAIN LINE-BY-LINE
/COLLECTION LOOP (WHICH IS DESCRIBED IN ITEM 3).
/WHEN A FULL PAGE OF CODE HAS BEEN COLLECTED
/THE DRIVER THEN CALLS L55 TO ASSEMBLE THE
/PAGE (SEE ITEM 8).
/(3) THE COLLECTION LOOP RUNS FROM RSTRT1 THROUGH
/THE CODE AT RSTRT6. THIS LOOP FIRST CALLS
/INCPT WHICH PREPARES FLAGS AND INCREMENTS
/TABLE POINTERS FOR EACH LINE OF CODE. IT
/THEN CALLS THE LINE DECODER DCIL (SEE
/ITEM 4) FOLLOWED BY SETCT, THE ROUTINE WHICH
/INCREMENTS THE PAGE COUNTERS AS REQUIRED
/FOR THE GIVEN LINE (SEE ITEM 6). THEN
/THE COLLECTIONS LOOP PROCEEDS TO INTERPRET
/THE DATA LEFT BY DCIL AND STORE IT, PROPERLY
/CODED, ON THE PAGE TABLE. IF THERE WAS
/A TAG ("LFS" FOR "LOCATION FIELD SYMBOL") IT
/IS NECESSARY TO CALL RECT FOR A PAGE RECOUNT.
/(SEE ITEM 7). THEN THE SIZE OF THE PAGE SO
/FAR COLLECTED IS TALLYED UP BY CPGES. IF
/IT IS STILL .LE. 200. EVERYTHING IS FINE AND WE
/RUN THROUGH THE LOOP AGAIN. IF NOT WE
/FIRST SAVE (USING PUSHIN)
/ALL THE KEY INFORMATION ABOUT THE LINE WHICH
/CAUSED THE OVERFLOW AND THEN EXIT FROM THE
/COLLECTION LOOP TO ASSEMBLE THE PAGE.
/(4) CERTAIN NOTES ABOUT DCIL MAY BE HELPFUL. THIS
/ROUTINE CONTROLS INPUT OF THE SOURCE. INDEV
/(SET BY IOINIT) POINTS TO THE PROPER INPUT
/ROUTINE, HSR OR ASR. THESE ROUTINES
/READ ONE CHARACTER AT A
/TIME FROM THE INPUT DEVICE. THE ROUTINE CALLED
/R DRAWS CHARACTERS ONE AT A TIME FROM THE
/INPUT BUFFER (DATA). WHEN THIS BUFFER IS
/EMPTY R REFILLS IT USING @INDEV. FETCH
/USES R TO EXTRACT ONE CHARACTER AT A TIME FROM
/THE INPUT BUFFER AND DOES SOME PRELIMINARY
/SCREENING. RLN USES FETCH TO READ A
/FULL LINE OF CODE INTO THE LINE BUFFER.

/L65 READS ONE CHARACTER AT A TIME FROM /THE LINE BUFFER. GTSYM READS THE LINE /ITEM-BY-ITEM. IF THE ITEM IS A SYMBOL, GTSYM /CALLS SRSYM TO LOOK UP THE ITEM IN THE /MAIN SYMBOL TABLE OR ENTER IT IF IT IS NOT /ALREADY THERE(SEE ITEM 5). /**IMPORTANT** /WHEN A SYMBOL HAS BEEN PLACED ON THE SYMBOL /TABLE THE ADDRESS OF THE FIRST WORD OF THE /ENTRY IS RETURNED AT "SYMBOL." THIS ADDRESS /IS UNIQUE FOR EACH SYMBOL AND IN THE /RANGE 2000-7575. THIS NUMBER IS USED /THROUGHOUT THE PROGRAM AS THE IDENTIFIER FOR /THIS SYMBOL. ** DCIL CONSIDERS EACH ITEM /OF THE LINE AND ACTS APPROPRIATELY. FOR /STANDARD INSTRUCTIONS A STRING OF KEY DATA ABOUT /THE LINE IS LEFT. IF THE LINE IS A PSUEDO-OP /DCIL WILL IMMEDIATELY CALL THE APPROPRIATE PSUEDO-OP /HANDLER TO TAKE ALL NECESSARY ACTION. MOST /OF THE PSUEDO-OP HANDLERS RETURN TO THE /BEGINNING OF DCIL WHERE THE NEXT LINE CAN BE /PROCESSED AS IF NOTHING UNUSUAL HAPPENED. THE /EXCEPTIONS TO THIS ARE THOSE PSUEDO-OPS WHICH /CAUSE A PREMATURE PAGE ASSEMBLY. /THE ROUTINE SKIPL IS ACTUALLY A SMALL PART OF /DCIL. IT HAS TWO PURPOSES. ONE, IT WATCHES /FOR LINES WHICH SHOULD BE IGNORED BECAUSE THE /FORTR PSUEDO-OP IS IN EFFECT. SECONDLY IT /MUST WATCH FOR SEMI-COLONS SO THAT /IF ONE IS ENCOUNTERED(OUTSIDE A COMMENT) /THE REMAINDER OF THE LINE CAN BE SAVED FOR /PROCESSING AS THE "NEXT" LINE. /(5)ONLY TWO MAIN ROUTINES SRSYM AND /OBSYM, TOGETHER WITH THEIR SUBSIDIARYS RUSVL AND SUSVL /MAY DIRECTLY CONTACT THE MAIN SYMBOL TABLE. /THESE ROUTINES COMMUNICATE WITH THE REST OF /THE PROGRAM THROUGH FOUR IMPORTANT /CELLS IN PAGE 0: /USE CONTAINS THE CODE WORD FOR THE SYMBOL ENTRY. /VAL CONTAINS THE VALUE OF THE SYMBOL. /SYMBOL CONTAINS THE ADDRESS OF THE FIRST WORD OF THE /ENTRY(NAMELY THE CODE WORD). /VALPTR CONTAINS THE ADDRESS OF THE VALUE WORD /OF THE ENTRY. /SRSYM, AFTER LOCATING A GIVEN SYMBOL IN THE TABLE /(OR ENTERING IT IF NECESSARY) /CALLS SUSVL TO FILL THE FOUR CELLS WITH THE /PROPER INFORMATION ABOUT THE SYMBOL.
/OBSYM USES A SYMBOL IDENTIFIER TO GET /THE FOUR ESSENTIAL BITS OF INFORMATION, AGAIN /CALLING SUSVL TO DO THE WORK. HOWEVER /BEFORE EITHER SRSYM OR OBSYM DO ANYTHING /THEY BOTH MAKE USE OF RUSVL. RUSVL IS A /VERY IMPORTANT ROUTINE. HERE IS HOW IT WORKS. /LET US SUPPOSE THAT THE PROGRAM HAS OBTAINED /USE, VAL, SYMBOL AND VALPTR FOR A GIVEN /SYMBOL(USING SRSYM OR OBSYM). FURTHER, LET /US SUPPOSE THAT THE PROGRAM WISHES TO /MODIFY BOTH OR EITHER OF THE CODE AND VALUE /WORDS FOR THIS SYMBOL IN THE SYMBOL TABLE. /THE PROGRAM DOES NOT DIRECTLY ACCESS THESE /WORDS IN THE SYMBOL TABLE. INSTEAD THE /PROGRAM MERELY MAKES THE DESIRED MODIFICATIONS /TO USE AND VAL. NOW SYMBOL AND VALPTR /ARE THE POINTERS FOR STORING THIS NEW INFORMATION /BACK IN THE TABLE. IT IS VERY IMPORTANT THAT /NO PART OF THE PROGRAM EXCEPT SRSYM AND OBSYM /EVER MODIFY SYMBOL OR VALPTR, AND BEFORE /EITHER OF THESE MODIFY THEM THEY ALWAYS CALL /RUSVL. RUSVL TAKES USE AND VAL /INCLUDING ANY MODIFICATIONS THAT HAVE BEEN /MADE TO THEM AND STORE THESE WORDS BACK /IN THE TABLE USING THE STILL UNCHANGED POINTERS /SYMBOL AND VALPTR. IN THIS WAY MODIFICATIONS /TO THE SYMBOL TABLE ARE MADE IN TWO STAGES. /THE FIRST STAGE CONSISTS OF A SIMPLE REFERENCE /TO ONE OF TWO PAGE 0 LOCATIONS, AND THE /SECOND STAGE IS TAKEN CARE OF AUTOMATICALLY /DURING FURTHER OPERATION OF THE PROGRAM. /(6)SETCT AND CPGES DEAL WITH FIVE SEPARATE PAGE /COUNTERS. THE SUM OF THESE IS THE NUMBER /OF WORDS OF CORE NECESSARY TO ASSEMBLE THE CURRENT /COLLECTED DATA. PTSZE (PAGE TABLE SIZE) IS THE /NUMBER OF ITEMS - CONSTANTS,ADDRESS PARAMETERS /AND INSTRUCTIONS - WHICH HAVE BEEN SO FAR /COLLECTED. LTSZE IS THE NUMBER OF DISTINCT LITERALS /WHEN ARE REQUIRED ON THE CURRENT PAGE. PGEESC /WILL BE EITHER 2 OR 4. IT IS /2 IF THE LAST COLLECTED INSTRUCTION WAS NOT A /SKIP INSTRUCTION, 4 OTHERWISE. THESE ARE THE /NUMBER OF WORDS REQUIRED FOR THE PAGE /ESCAPE. THIS ITEM IS IGNORED WHEN THE AUTO- /MATIC PAGING SWITCH IS NON-ZERO. OPSCTR /IS THE NUMBER OF POINTERS TO OFF-PAGE SYMBOLS /WHICH ARE REQUIRED ON THE CURRENT PAGE.
/THIS ITEM IS DETERMINED BY USE OF THE /PAGE SYMBOL TABLE. TWO TYPES OF SYMBOLS /ARE STORED ON THIS TABLE: TAGS(LFS'S) ON THE /CURRENT PAGE AND SYMBOLS WHICH ARE REFERENCED /BY MEMORY REFERENCE INSTRUCTIONS(AFS'S) ON THE /CURRENT PAGE. IN THIS TABLE SABR KEEPS TRACK OF /WHETHER THE SYMBOL IS ON-PAGE(I.E. IF IT OCCURS AS /A TAG ON THE PAGE) AND WHETHER IT HAS BEEN /REFERENCED EITHER SIMPLY OR WITH A NUMBER SIGN /(MEANING <SYM>+1). IF THE SYMBOL IS OFF-PAGE /AND HAS BEEN REFERENCED ON THE PAGE, ONE POINTER /IS REQUIRED ON THE ASSEMBLED PAGE FOR /EACH TYPE OF REFERENCE USED (SIMPLE OR #). /IN ADDITION CERTAIN INFORMATION REGARDING OBACTR /IS KEPT IN THE P.S.T. OBACTR KEEPS COUNT OF /THE NUMBER OF EXTRA INSTRUCTIONS WHICH MUST /BE GENERATED ON THE CURRENT PAGE. THESE /INCLUDE CDF'S TO CURRENT BANK (CODE05 6201'S), /CDF 00'S FOR REFERENCE TO COMMON, /(*) /JMS CDFSK/SKP PAIRS FOR CDF CUR'S FOLLOWING /SKIP INSTRUCTIONS, AND JMS CDZSK/SKP PAIRS FOR /CDF 00'S FOLLOWING SKIP INSTRUCTIONS. SUCH /CDF'S ARE NEEDED FOR OFF-PAGE REFERENCES WHENEVER /THE BANK REFERENCED IS NOT THE SAME AS PREVIOUSLY /(0 INSTEAD OF CURRENT=1 OR VICE-VERSA) OR WHEN /THE BANK IS UNKNOWN (=-1) AS AFTER A TAG, /AT THE START OF A PAGE, OR FOR ALL JMS'S. /OBACTR ALSO KEEPS COUNT OF EXTRA INSTRUCTIONS /NEEDED TO GENERATE OFF-PAGE INDIRECT REFERENCES. /FOR THESE EITHER 2 OR 4 EXTRA INSTRUCTIONS /ARE NEEDED DEPENDING ON WHETHER OR NOT THE /PREVIOUS INSTRUCTION WAS A SKIP INSTRUCTION. /IN THE PST AN UP-TO-DATE RECORD IS KEPT OF THE /NUMBER OF INCREMENTS TO OBACTR SPECIFICALLY /DUE TO EACH OFF-PAGE SYMBOL. IN VIEW /OF THE RECOUNT PROCEDURE DESCRIBED IN ITEM 7 /IT WOULD SEEM THAT THIS INFORMATION IS REDUNDANT /AND UNNECESSARY. HOWEVER, DURING THE DEBUGGING /STAGE OF THE PROGRAM WITH PASS 2 INCLUDED /I ENCOUNTERED SEVERAL SITUATIONS, WHICH I FIND /VERY DIFFICULT TO DESCRIBE, WHERE MORE IMMEDIATE /INFORMATION ABOUT OBACTR WAS NEEDED. I /AM NOT EVEN COMPLETELY SURE I UNDERSTAND WHY. /OBACTR MUST BE WATCHED CLOSELY. AT 6652 IN THE /PROGRAM THERE IS SOME CODE TO ASSIST IN /DEBUGGING THE PROGRAM IF PROBLEMS ARISE WITH /THE PAGE COUNT. /WHENEVER A NEW TAG IS ENCOUNTERED ON A /PAGE, SETCT USES CPLFS TO REDUCE /BOTH OPSCTR AND OBACTR APPROPRIATELY /SINCE WHAT PREVIOUSLY WERE OFF-PAGE REFERENCES /MAY NOW HAVE BECOME ON-PAGE REFERENCES.
/(7) WHENEVER A TAG IS ENCOUNTERED ON A GIVEN /PAGE RECT IS CALLED TO GO THROUGH THE /ENTIRE CURRENT PAGE TABLE AND RECOUNT /THE PAGE. IT DOES THIS BY CALLING SETCT /AGAIN, ONCE FOR EACH ITEM ON THE PAGE TABLE. /THE ONLY THING REALLY ACCOMPLISHED HERE /IS THAT OBACTR IS RESET. OPSCTR IS /UNCHANGED AS WELL AS THE OTHER PAGE COUNTERS. /THE NEED TO RECOUNT OBACTR IS SHOWN /BY THE FOLLOWING EXAMPLE: / A, TAD B / TAD C / B, 0 / <PAGE FILLS UP> / C, 0 /NOW BECAUSE BANK IS UNKNOWN AFTER "A," /AND B IS UNDEFINED AS YET, "TAD B" /REQUIRES A CDF CUR. HENCE INCREMENT OBACTR. /"TAD C" IS OFF PAGE TOO, BUT REQUIRES NO /CDF SINCE IT IS IN THE SAME BANK. /HOWEVER WHEN B IS DEFINED ON PAGE, THE /CDF IT CAUSED IS NO LONGER NECESSARY, /BUT NOW THE "TAD C" REQUIRES A CDF. /(8) THE ROUTINE L55 CAUSES EACH PAGE TO BE ASSEMBLED. /DURING PASS 1 THERE ARE TWO SUB-PHASES TO THE ASSEMBLY. /FOR THE MOST PART BOTH PHASES RUN THROUGH THE /ENTIRE PAGE OF COLLECTED CODE USING THE /SAME ASSEMBLY ROUTINES. THE DIFFERENCE IS /THAT DURING PHASE 1 (ACTR=0) /ACTUAL OUTPUT IS SUPPRESSED. THE KEY /PURPOSE OF PHASE 1 IS TO DEFINE ALL THE /TAGS THAT OCCUR ON THE PAGE. CLEARLY THE /TAGS COULD NOT BE DEFINED DURING COLLECTION /BECAUSE AT THAT POINT WE WERE NOT SURE /WHAT SYMBOLS EVEN WERE ON PAGE, AND THUS /NOT SURE HOW MANY EXTRA INSTRUCTIONS /WOULD BE NECESSARY. THUS SUB-PHASE 1 OF THE /ASSEMBLY IS REQUIRED SO THAT IN THE /SECOND PHASE OF THE ASSEMBLY ON-PAGE /FORWARD REFERENCES CAN BE RESOLVED. HENCE /L55 CALLS THE ASSEMBLY ROUTINE ASMBL /TWICE FOR EACH PAGE OF CODE. /(9)AFTER INITIALIZING THE VARIOUS PAGE TABLE POINTERS /ASMBL GOES INTO A LOOP WHEREIN THE /LINE-BY-LINE ASSEMBLY ROUTINE ASM02 IS /CALLED ONCE FOR EACH ITEM ON THE PAGE TABLE. /ASM02 IS A HUGE ROUTINE OCCUPYING ABOUT /THREE FULL PAGES OF CODE. ASM02 FIRST
/EXAMINES THE CODED DATA PERTAINING TO THE GIVEN /ITEM ON THE PAGE TABLE TO DETERMINE WHAT /TYPE OF INSTRUCTION IS TO BE ASSEMBLED AND /WHAT THE CURRENT BANK AND SKIP SETTINGS /ARE. THEN DEPENDING ON THIS ANALYSIS THE ROUTINE /TRANFERS TO THE PROPER SUBSECTION OF ITSELF /FOR HANDLING THIS TYPE OF INSTRUCTION. THERE /ARE A DOZEN OR MORE CASES WHICH MUST /BE DEALT WITH. THEN THE ROUTINE MOVES /TO ONE OF ITS VARIOUS EXIT STRINGS /TO COMPLETE THE ACTION AND SET THE BANK AND /SKIP CONDITIONS FOR THE NEXT LINE. AFTER ALL /ITEMS ON THE PAGE TABLE HAVE BEEN ASSEMBLED /IN THIS WAY ASMBL THEN CALLS THE ROUTINE /A2. A2 PRODUCES (IN PHASE 2) THE PAGE ESCAPE AND /THEN OUTPUTS THE ENTIRE LITERAL TABLE WITH /ALL THE OFF-PAGE POINTERS INTERMINGLED. /(10) SPECIAL CONSIDERATION SHOULD BE GIVEN TO OFF- /PAGE FORWARD REFERENCES SINCE THEY WILL REMAIN /UNRESOLVED WHEN THE CURRENT PAGE HAS BEEN /ASSEMBLED. DURING ASSEMBLY WHEN /A REFERENCE TO AN OFF-PAGE, OR AN AS YET /UNDEFINED SYMBOL IS ENCOUNTERED THE SYMBOL'S /IDENTIFIER IS STORED ON THE LITERAL/OFF-PAGE POINTER /TABLE. THEN WHEN A2 IS OUTPUTTING THE /LITERAL TABLE ANY STILL UNDEFINED SYMBOLS ARE /DEALT WITH AS FOLLOWS. THE SYMBOL'S INDENTIFIER /TOGETHER WITH THE LOCATION RESERVED IN THE CURRENT /PAGE FOR ITS VALUE ARE STORED ON THE OCCURRENCE /TABLE. THE LOCATION WHERE THE POINTER MUST BE /STORED IN THE CURRENT PAGE IS MERELY LEFT /BLANK AT THIS TIME. THEN LATER ON WHEN THIS SYMBOL IS /ENCOUNTERED AS A TAG THE ROUTINE LFSCK /WHICH PROCESSES TAGS DURING ASSEMBLY WILL /REMOVE THE ITEM FROM THE OCCURRENCE TABLE AND /OUTPUT IT PRECEEDING THE POINTER BY AN ORIGIN /TO THE CORRECT LOCATION. /(11) DURING PASS2 (THE LISTING PASS) MOST OF /THE SAME CODE IS USED TO PRODUCE THE /ASSEMBLY LISTING. HOWEVER THE TIMING IS /DIFFERENT. NOW THE COLLECTION-ASSEMBLY /ALTERATION IS CARRIED OUT ON A LINE-BY-LINE /BASIS RATHER THAN ON A PAGE-BY-PAGE BASIS. /(HOWEVER ALL THE PAGE TABLES AND COUNTERS MUST /STILL BE MAINTAINED JUST AS IN PASS1.) THE /PASS2 OPERATION DIFFERS FROM PASS1 IN THE
/FOLLOWING RESPECTS. EACH TIME A LINE HAS /BEEN COLLECTED AND ITS DATA ENTERED INTO THE /PAGE TABLE IN THE NORMAL FIRST PASS WAY, /A CALL IS ISSUED TO THE LINE-BY-LINE /ASSEMBLY ROUTINE ASM02. SINCE ALL SYMBOLS /ARE NOW DEFINED THERE WILL BE NO UNRESOLVED /FORWARD REFERENCES ON OR OFF-PAGE. ASM02 ACTS /DURING PASS2 EXACTLY AS IT DOES DURING PASS1 /WITH ONE BIG EXCEPTION: THE BINARY OUTPUT ROUTINE /OUTBN IN SUPPRESSED AND IN ITS PLACE IS /SUBSTITUTED THE LISTING ROUTINE WRITE. /WHEN THE PAGE COUNTERS INDICATE THAT THE PAGE /IS FULL THE DRIVER ROUTINE WILL CALL L55 AS /USUAL. HOWEVER IN PASS2 THE TWO CALLS /TO ASMBL ARE BY-PASSED AND INSTEAD A SINGLE /CALL TO A2 IS ISSUED SO AS TO GET THE /LISTING TO THE PAGE ESCAPE, THE LITERALS AND /THE OFF-PAGE POINTERS. /(12) THE REASON FOR HAVING SEPARATE LITERAL TABLES FOR THE /COLLECTION AND THE ASSEMBLY PHASES OF /THE PROGRAM IS THAT DURING PASS2 BOTH /PHASES OF THE PROGRAM ARE OPERATING SIMUTANEOUSLY /AND BOTH ARE BUILDING LITERAL TABLES IN A /DIFFERENT WAY. /(13) THE PAGE ESCAPE TABLE, PEBSE, IS NECESSARY /IS THAT DURING PASS2 LOCATIONS /CANNOT BE ASSIGNED FOR LITERALS AND OFF-PAGE /POINTERS UNLESS THE FINAL PAGE ESCAPE /FOR THE PAGE IS KNOWN. HENCE THESE NUMBERS /ARE SAVED DURING PASS1. /(14) THE PAGE OP TABLE IS ACTUALLY A PART OF /THE PAGE TABLE. /(15) EXTERNAL SYMBOLS ARISE IN TWO WAYS: /FROM ENTRY STATEMENTS AND FROM CALL STATEMENTS. /THEY ARE ENTERED IN THE E.S.T. IN ORDER OF /APPEARANCE IN THE PROGRAM AND NUMBERED /ACCORDINGLY. THESE ARE THE NUMBERS WHICH THE /LOADER REFERS TO AS "LOCAL EXTERNAL NUMBERS." /(16) EQUIVALENCING OF TAGS /IS TREATED AS A PSEUDO-OP AND IS /HANDLED BY THE ROUTINE PBSS2. (INCIDENTALLY /SOME OF THE ODD NAMES IN THE SOURCE WERE /PASSED ON TO ME FROM THE ORIGINAL ICS /PROGRAM. I DID NOT CHANGE THEM MERELY BECAUSE /THEY MADE NO SENSE.) THE OPERATION IS THIS: /ALL EXTRA TAGS TO BE DEFINED AT A GIVEN LOCATION ARE /ENTERED AS A GROUP IN THE EQUIVALENCE TABLE, /AND A CODE BIT IS SET ON THE PAGE TABLE TO /INDICATE THAT SUCH A GROUP IS TO BE DEFINED /WHEN THE LOCATION HAS BEEN DETERMINED DURING /ASSEMBLY. ANUMCK DOES THE WORK OF DEFINITION.
/(*) /V03 CHANGE NOTICE: / AS OF V03 THE SABR SYSTEM HAS / BEEN CHANGED SUCH THAT COMMON / WILL RESIDE IN FIELD 1 INSTEAD / OF FIELD 0. / THE ONLY CHANGES REQUIRED TO SABR / ITSELF ARE AS FOLLOWS / (1) HICOM=177 INSTEAD OF 777; / (2) PARG & ASMBL MUST NOW OUTPUT 6211'S / INSTEAD OF 6201'S FOR CDF'S TO COMMON. / NOTE: / THE COMMENTS HAVE NOT BEEN CHANGED TO / REFLECT THIS CHANGE. / ALSO, BANK = 0 IS STILL THE CONDITION / FOR REFERENCES TO COMMON. (BANK=1 / STILL MEANS BANK KNOWN TO BE CURRENT / AND BANK = -1 STILL MEANS BANK UNKNOWN.)



Feel free to contact me, David Gesswein djg@pdp8online.com with any questions, comments on the web site, or if you have related equipment, documentation, software etc. you are willing to part with.  I am interested in anything PDP-8 related, computers, peripherals used with them, DEC or third party, or documentation. 

PDP-8 Home Page   PDP-8 Site Map   PDP-8 Site Search