AXR$ . DEFINE SOME REGISTERS R0 EQU 0100 TEST EQU 0 P PROC 1,2 P$RINT* NAME Z FORM 12,6,18 LA A0,(Z P(1,3),P(1,2),P(1,1)) ER PRINT$ END P PROC *1 . PRINT DIRECT OR ALTERNATE PR$INT* NAME 0 . Z FORM 12,6,18 . DO P(1)>0 , L A0,(Z P(1,3),P(1,2),P(1,1)) LMJ X8,PRIN$T END . P PROC 1,2 AP$RINT* NAME Z FORM 12,6,18 LA A0,(Z P(1,3),P(1,2),P(1,1)) ER APRINT$ END P PROC *1 . ASCII PRINT APR$INT* NAME 0 . Z FORM 12,6,18 . DO P(1)>0 , L A0,(Z P(1,3),P(1,2),P(1,1)) LMJ X8,APRIN$T END . P PROC *1 . CALL FD/ASCII PRINT ROUTINE U$PRNT* NAME 0 . Z FORM 12,6,18 . DO P(1)>0 , L A0,(Z P(1,3),P(1,2),P(1,1)) LMJ X8,UPRNT END . . THE FOLLOWING EQUS ARE FOR THE BMTC INSTRUCTION BCS$ EQU 000 . STOP TERMINATE THE INSTRUCTION BCM$ EQU 0100 . MOVE MOVE N CHARACTERS BCSK$ EQU 0200 . SKIP IN SOURCE BCMNT$ EQU 0300 . MOVE WITHOUT TRANSLATION BCIN$ EQU 0400 . INSERT N CHARACTERS BCCM$ EQU 0500 . COMPARE AND MOVE BCSD$ EQU 0600 . SKIP IN DESTINATION BCSE$ EQU 0700 . SCAN EQUAL BMTCF FORM 6,4,4,4,1,1,16 . THE NEXT TWO ARE FORMS FOR THE BIML INSTRUCTION BMLFRMX FORM 6,12,18 . FOR INDEX REGISTERS BMLFRM FORM 14,4,1,17 . FOR DESCRIPTOR WORDS . THE FOLLOWING ARE THE TWO FORMS FOR THE EDDE INSTRUCTION EDDEFRM1 FORM 2,5,5,2,4,2,16 EDDEFRM2 FORM 11,1,2,4,2,16 . THE FOLLOWING EQUS ARE FOR THE EDDE INSTRUCTION EDSE$ EQU 0 . STOP EDITING EDSS$ EQU 1 . SET SGNIFICANCE EDCS$ EQU 2 . CLEAR SIGNIFICANCE EDDF$ EQU 3 . DEFINE FILE CHARACTER EDEFZ$ EQU 4 . ENABLE FILL IF SOURCE ZERO EDEI$ EQU 5 . ENABLE INSERTION EDMFF$ EQU 7 . MOVE FIRST FORTRAN DIGIT EDMCU$ EQU 010 . MOVE CHARACTER UNCONDITIONALY EDIZS$ EQU 011 . MOVE DIGIT INCLUDE ZONE SIGN EDIZP$ EQU 012 . MOVE DIGIT INCLUDE ZONE SIGN IF POSITI EDIZM$ EQU 013 . MOVE DIGIT INCLUDE ZONE SIGN IF NEGATI EDMCCS$ EQU 014 . MOVE CHARACTER CONDITIONED BY SIGNIFIC EDMCCG$ EQU 015 . MOVE CHARACTER CONDITIONED BY SIGN EDMCCZ$ EQU 016 . MOVE CHARACTER CONDITIONED BY ZERO EDMCCO$ EQU 017 . MOVE CHARACTER CONDITIONED BY OVERFLOW EDSS$ EQU 020 . SKIP IF SIGNIFICANCE EDSN$ EQU 021 . SKIP IF NEGATIVE EDSZ$ EQU 022 . SKIP IF ZERO EDSO$ EQU 023 . SKIP IF OVERFLOW EDEIS$ EQU 024 . ENABLE INSERTION AS FUNCTION OF SIGNIF EDEIG$ EQU 025 . ENABLE INSERTION AS FUNCTION OF SIGN EDEIZ$ EQU 026 . ENABLE INSERTION AS FUNCTION OF ZERO EDEIO$ EQU 027 . ENABLE INSERTION AS FUNCTION OF OVERFL EDMD$ EQU 040 . MOVE DIGITS EDCSS$ EQU 060 . MOVE DIGITS CHECK FOR SIGNIFICANCE EDMCBS$ EQU 0120 . MOVE CHARACTERS CONDITIONED BY SIGNIFI EDMCR$ EQU 0140 . MOVE CHARACTERS REPEATING . LINLNG EQU 132 . NUMBER OF CHARACTERS IN PRINT LINE $(2) . FORCE CODE TO DEBANK BEG$SNPX . FIRST LOCATION FIRST PART OF SNOOPY . LEAVEX . LMJ X2,SNEXTI ER EXIT$ . ABOVE THREE LINES REFERENCED AS ER MUST BE LOW MEMORY TOFFS . DO TEST ,TOFF* NOP 0 DO 1-TEST ,TOFF$* NOP 0 J *TOFFS START . USED TO IDENTIFY CODE WITHIN SNOOPY AT CONTINGENCY TONS . TONZ$* NOP . ENTRY POINT TZ TSW . TEST IF SNOOPY ALREADY ACTIVE J TONZ$ . IMMEDIATE RETURN IF ACTIVE S A0,SAVEA0 SRSFORM FORM 2,7,2,7,2,7,2,7 L A0,(SRSFORM 0,16,0,64,0,00,0,0) . X0 TO 037 / R0 TO R15 SRS A0,REGSAVE+0100 . SAVE R-REGISTERS L A0,(SRSFORM 0,32,0,0,0,0,0,0) SRS A0,REGSAVE . SAVE X AND A REGISTERS L A0,SAVEA0 S A0,REGSAVE+12 . MOVE TO PLACE WITH REST OF REGISTERS L,U X1,HMX . USED FOR BIASING HIGH MEMORY SLJ MIDMP 'TEST' +0700002,0 J TONU . . MUST BE ADDRESSED IN U FIELD CONTM . REGSAVE RES 0160 . USED TO SAVE REGISTERS B0 TO 037 / R0 JXA . JZA . SNOTM . RES 0160 . THE ABOVE AREA IS USED TO SAVE ALL THE REGISTERS BELONGING TO SNOOPY . WHEN ALL THE USRS REGISTERS HAVE TO BE VISIBLE FOR EXEC FUNCTIONS . SUCH AS FORKING AND ALSO THE LRS AND SRS REGISTERS MOVES USW1 RES 1 . SWITCHES WHICH MUST BE ADRESSABLE TSW EQUF USW1,,S1 SAVEA0 RES 1 NSOD$ +0 . SAVE DESCRIPTOR BITS ALTFIL +0 'DW ' JTAB . + 'W @0 ' + 'H2 @1 ' + 'H1 @2 ' + 'XH2@3 ' + 'XH1@4 ' + 'T3 @5 ' + 'T2 @6 ' + 'T1 @7 ' + 'S6 @8 ' + 'S5 @9 ' + 'S4 @10' + 'S3 @11' + 'S2 @12' + 'S1 @13' + 'U @14' + 'XU @15' + ' @16' + ' @17' + ' @18' + ' @19' JTAB1 . + 'XXX@@@' + 'H2 @@@' + 'H1 @@@' + 'XH2@@@' + 'Q2 @@@' + 'Q4 @@@' + 'Q3 @@@' + 'Q1 @@@' + 'S6 @@@' + 'S5 @@@' + 'S4 @@@' + 'S3 @@@' + 'S2 @@@' + 'S1 @@@' + 'U @@@' + 'XU @@@' QTAB EQU $-4 + 18-18,18 Q2 = 4 + 0-0,0 Q4 = 5 + 27-9,9 Q3 = 6 + 9-27,27 Q1 = 7 ARG1 EQUF CONTM+A0,X7 XRG1 EQUF CONTM,X7 RRG1 EQUF CONTM+R0,X7 MSKR EQUF CONTM+R2 ARG2 EQUF CONTM+A0+1,X7 ARG3 EQUF CONTM+A0+2,X7 RFUDX1 EQUF X11+1 . RFUDX2 EQUF X0 . RFUDX3 EQUF JTAB-X0,A0 . RFUDA1 EQUF A15+4+1 . RFUDA2 EQUF A0 . RFUDA3 EQUF JTAB-A0,A0 . RFUDR1 EQUF R15+1 . RFUDR2 EQUF R0 . RFUDR3 EQUF JTAB-R0,A0 . COTAB . CARRY OVERFLOW + 0 CLEAR CLEAR + 0 + 1*/34 CLEAR SET + 1*/34 + 0 SET CLEAR + -0 + -1*/34 SET SET + -1*/34 BIT . I DO 36 , +1*/(I-1) . MSK . ASSORTED AND SUNDRY MASKS I$ 077,017,0,0,0,0 FJ I$ 0,017,0,0,0,0 J I$ 0,0,0,017,0,0 X I$ 0,0,0,017,3,0177777 XHIU I$ 077,0,017,017,3,0177777 FAXHIU I$ 0,0,017,0,0,0 A I$ 0,07,017,0,0,0 JA FOR JGD M1 I$ 077,017,017,017,3,0177777 M2 I$ 077,017,0,017,3,0177777 BTMSK I$ 0,0,017,017,0,0 AX . SPECIAL BITS IN F-DESCRIPTOR WORD . ADINS EQU BIT+0 INSTRUCTION IS ADDRESSED SHIFT EQU BIT+1 SHIFT INSTRUCTION G10I8 EQU BIT+2 . LEGAL ON 1110, IOPR ON 1108 MINJ EQU BIT+3 . J-DESIGNATOR USED AS MINOR FCTN CODE MINA EQU BIT+4 . A-DESIGNATOR USED AS MINOR FCTN CODE TSI EQU BIT+5 . INSTRUCTION IS TEST & SET CLASS REPEAT EQU BIT+6 REPEAT INSTRUCTION JGDI EQU BIT+7 JGD EXR EQU BIT+8 EXECUTE REMOTE DWORD EQU BIT+9 TWO WORD OPERAND LODE EQU BIT+10 USES INITIAL CONTENTS OF CORE STOR EQU BIT+11 CHANGES CONTENTS OF CORE JDES EQU BIT+12 USES A J-DESIGNATOR CAROV EQU BIT+13 CARRY AND OVERFLOW DESIGNATORS AFFECTED GILOP EQU BIT+14 ILLEGAL UNDER GUARD MODE QWINS EQU BIT+15 . USED BY LAQW AND SAQE BBINS EQU BIT+16 . USED BY 37 FUNCTION CODE BIT INSTRUCTI . . SPECIAL BITS IN EDIT DESCRIPTOR WORD . FLD EQU BIT+11 TAKES AN A-DESIGNATOR AFLD EQU BIT+1 USES A-REGISTER AFLD2 EQU BIT+2 USES 2 A-RESTERS JFLD EQU BIT+3 TAKES A J-DESGNATOR RFLD EQU BIT+4 USES AN R-REGISTER RPET EQU BIT+5 REPEAT INSTRUCTION MKS EQU BIT+6 MASK INSTRUCTION XFLD EQU BIT+7 USES AN X-REGISTER BCH EQU BIT+8 BRANCH INSTRUCTION AFLD3 EQU BIT REMSVC RES 2 . USED TO SAVE A0 / A1 AT CONTINGENCY ERRADR RES 1 . USED TO SAVE CONTINGENCY ADDRESS COREB +0 +0 RES 3 . LEAVE SPACE FOR EDIT INSTRUCTIONS COREBA +0 +0 RES 3 . LEAVE SPACE FOR EDIT INSTRUCTIONS GDMERR . + 'PRIV ' . + 'STLIM ' . + 'CREG ' . + 'ILOK ' . + 0 . + 'E-BIT ' . + 'TBLNG ' . AFLTMS . 'IFOF' . CONTINGENCY 3 'IFUF' . CONTINGENCY 4 'IDOF' . CONTINGENCY 5 'IRST' . CONTINGENCY 6 + 0 . 'RBK' . CONTINGENCY 010 ERERR + 'IO ' . MNEMONIC TABLE FOR ER ERRORS + 'SYMB ' . + 'ERR$ ' . + 'ER ' . + 'CONS ' . + 'COM2 ' . + 'COMM ' . + 'REP ' . TLEBD TLE A8,A0 . TLE A12,A0 . . . TG,U A11,0,A0 . TGBS TG,U A7,0,A0 . TG,U A11,0,A0 . . . TW,U A12,0,A0 . TWBD TW,U A8,0,A0 . TEST A0 WITHIN BD LIMITS TW,U A12,0,A0 . . . TW,U A10,0,A0 . TWBI TW,U A6,0,A0 . TW,U A10,0,A0 . . . LIL DL A6,A4 . LOAD I-BANK LIMITS DL A10,A4 . . LDL DL A8,A4 . LOAD D-BANK LIMITS DL A12,A4 . . BDIS +0D BDID +0,BDI$ . SNOOPY'S DBANK . MID05 S,S6 A4,0,*A1 S,S5 A4,0,A1 S,S4 A4,0,A1 S,S3 A4,0,A1 S,S2 A4,0,A1 S,S1 A4,0,A1 . WINHIC SZ WINHMI . SZ WINHUI . WINHDC SZ WINHMD . SZ WINHUD . WINHIS SP1 WINHMI . SP1 WINHUI . WINHDS SP1 WINHMD . SP1 WINHUD . MCORTST TG A0,A3 TG A3,A0 . TSTX11 TNZ,U 0,X11 TZ,U 0,X11 BBMCEXA . NOP . 0 TERMINATE A A4,A3 . 1 MOVE N CHARACTERS NOP . 2 SKIP IN SOURCE A A4,A3 . 3 MOVE WITHOUT TRANSLATE A A4,A3 . 4 INSERT A A4,A3 . 5 COMPARE AND MOVE A A4,A3 . 6 SKIP IN DESTINATION NOP . 7 SCAN EQUAL BBMCEXB . NOP . 0 TERMINATE NOP . 1 MOVE N CHARACTERS NOP . 2 SKIP IN SOURCE NOP . 3 MOVE WITHOUT TRANSLATION BN A1,A3 . 4 INSERT BN A1,R4 . 5 COMPARE AND MOVE NOP . 6 SKIP IN DESTINATION BN A1,R4 . 7 SCAN EQUAL MSCLOD . SZ A4 . FOR FIXED PACKET SIZE FCTNS L,H1 A4,3,A0 . DBACK$ (SHIFT DOWN--T1 IS VAL) LMJ A2,MSASIZ . MSALL$ SIZE COMPUTATION DMZZRR . THIS SECTION DUMPS REGISERS SLJ MIDMP9 'REG ' +0700000,0 J 0,X8 END$SNPX . LAST LOCATION FIRST PART OF SNOOPY . $(6) . THIS SET OF DBANK DOES NOT HAVE TO BE UNDER 200000 BEG$SNPY . FIRST LOCATION SECOND PART OF SNOOPY HIGHMEMORY . HMX . ILBJSNPH . ILBJSNP EQUF ILBJSNPH-HMX,X1 SLJ MIDMP9 'ILBJ' +0700000,0 J ILBJSNPR TONUH . TONU EQUF TONUH-HMX,X1 L,U A14,1 SZ SW1 SZ SW2 SZ SW3 . CLEAR OUT SOME SWITCHES SZ ADDRSW SZ EDSW1 SZ EDSW2 SZ ICOUNT SZ ICOUNTP SZ OLDELT SZ X10 . INITIALIZE PSR SZ RELLIM+1 . CLEAR RELATIVE LIMITS JNC TONUA SP1 CARRY TONUAH . TONUA EQUF TONUAH-HMX,X1 JNO TONUB SP1 OVFL TONUBH . TONUB EQUF TONUBH-HMX,X1 L,U A0,MCTPKT . POINT TO MCT READ PACKET ER MCT$ . READ SYSTEM LEVEL AND HARDWARE TYPE DL A0,MCTSYS . GET HARDWARE TYPE DSL A0,6 SSL A1,24 . TE,U A1,+'90' . J NOT90 . THIS PROGRAM ONLY WORKS ON A 90 SZ CTGPKT L A0,(LPCT,PCTH) ER PCT$ L A0,PTYPE . GET PROGRAM TYPE TNE,U A0,4 . 4 IMPLIES DEMAND SP1 REMOTE . LX,H2 X2,START . LA A0,0,X2 . SA,H2 A0,INSLK+1 . TEST TO TEST FOR TRACING LOOP TN,5 (-0) . IF NEGATIVE IN THIRD WORD MODE SP1 QW SPD A1 S A1,NSOD$ OR,U A1,1*/3 . FORCE QUARTER WORD LOGIC LPD 0,A2 TNZ QW . SET QWSIM TO SIMULATE THIRD WORD SP1 QWSIM . IF NOT IN QUARTER WORD . L,U A0,BDT . READ IN BANK DESCRIPTOR TABLE . L A1,BDP . GET PCT REL ADDR OF BDT . LXI,U A1,1 . READ JUST THE FIRST WORD . ER PCT$ . READ WORD 0 OF BDT FROM PCT L,U A0,500 S A0,BDT LXI,U A0,1*/17 . SPECIAL BANK$ ER ER BANK$ . RETRIEVE ACTIVE BDIS DS A0,BDIS . SAVE ACTIVE BANKS DS A0,A2 . MOVE THEM TO ANOTHER REGISTER PAIR SZ A4 . ZERO THE WRITE INHIBIT WORD L,U R1,3 . COMPUTE 4 LIMITS PAIRS LX X2,(-2,A12) . SET UP STORE POINTER P1LIM4H . P1LIM4 EQUF P1LIM4H-HMX,X1 L,U A0,0,A3 . GET NEXT BDI SZ A1 . ZERO THE BITS REGISTER IN CASE A0=0 JZ A0,P1LIM5 . JUMP IF NO BDI DEFINED LXI,U A0,1*/17+1 . SET UP FOR SPECIAL BANK$ CALL ER BANK$ . GET STORAGE LIMITS AND OTHER BITS P1LIM5H . P1LIM5 EQUF P1LIM5H-HMX,X1 TEP A1,BIT+13 . TEST THE WRITE-INHIBIT BIT A,U A4,1 . SET--NOTE IT IN WRITE INHIBIT WORD SSC A4,6 . SHIFT THE WRITE INHIBIT WORD TO NEXT POS L,U A1,0,A0 . LOWER HALF OF A0 TO A1 (LOWER LIMIT) SSL A0,18 . UPPER LIMIT TO LOWER HALF OF A0 AN,U A1,1 . SUBTRACT 1 FOR TW USAGE A,U A0,0777 . COMPUTE TRUE UPPER BOUND TP A1 . DOES THE BANK EXIST? DSL A0,72 . NO--CLEAR THE REGISTERS DSC A0,36 . SWITCH UPPER AND LOWER LIMITS DS A0,0,*X2 . STORE THEM DSC A2,18 . GET NEXT BDI JGD R1,P1LIM4 . AND REPEAT S A4,WINH . SZ D18 . CLEAR D18 TNZ A11 . IS UTILITY PSR OPEN? TZ A13 . SP1 D18 . YES--SET D18 FLAG L,U X10,0 . UTILITY PSR SWITCH L X2,INSLK A,U X2,1 . SET FIRST ADDRESS TO TRACE TZ,H2 TONS LX,H2 X2,TONS . ADDRESS TO START TRACE SZ,H2 TONS . CLEAR ONE TIME FLAG SZ X3 . ZERO X3 IN CASE IMMEDIATE TOFF$ COMMAN L,U A0,0,X2 . GET P-REGISTER ER BANK$ . DETERMINE BANK ADDRESS IN A0 IS IN TEP A0,BIT+19 . ODD IMPLIES UTILITY BANK L,U X10,1 TZ CCALL . IN CONTINGENCY TRAP MODE SZ CONWRD . YES IGNORE PCT CONTINGENCY VALUE L,H1 A0,CONWRD . GET BITS OR,U A0,05377 . SET THOSE NEEDED TO STOP EMODE L,U A0,CTNG . USE SNOOPY C-MODE HANDLER ER IALL$ LMJ X8,DASH . PUT OUT A FEW DASHES LMJ X8,BLANK . BLANK OUTPUT IMAGE L,U X9,LINE . INITIALIZE OUTPUT POINTER ER DATE$ . GET DATE AND TIME DSC A0,36 L,U R1,222 . NUMBER OF BITS IN OUTPUT L,U X5,SGNLNE . LOCATION OF SOURCE LINE DS A0,2,X5 . SAVE DATE AND TIME L,U X6,SGNCMD . LOCATIN OF COMMMAND STRING BMTC 6,X5 L,U A0,LINLNG LMJ X8,EO1 . EDIT OCTAL LINE LENGTH P$RINT LINE,22,1 . PRINT IT L A0,(0100+LQMSG,QMSG) TZ QW ER PRINT$ START1H . START1 EQUF START1H-HMX,X1 LMJ X8,BLANK L,U X9,LINE L,U A0,STARTADD . 'STARTING ADDRESS' L,U A2,17 LMJ X8,EF2 L,U A0,0,X2 . GET CURRENT VALUE OF P-REGISTER LMJ X8,ECAD . EDIT VALUE OF ADDRESS P$RINT LINE,22,1 LMJ X8,STARTX . LMJ X8,DUMP . DUMP REGISTERS / BANKS/ SEGS LMJ X8,DASH SZ INCR TNZ CCALL . TEST FOR CONTINGENCY MODE J INSLK . NO CONTINGENCY LMJ X8,CONTZ TZ CTNG TZ REMOTE . NON ZERO IMPLIES DEMAND J INSLK . START TRACING L,S3 A1,CTNG . GET CONTINGENCY TYPE L,U A0,0570 . LOAD NON FATAL CONTINGENCY TEST PATTER TOP A0,BIT,A1 . TEST FOR FATALITY J LEAVE . FATAL EXIT$ TERMINATION J SNEXIT . NON FATAL QUIT NORMALLY STARTXH . STARTX EQUF STARTXH-HMX,X1 S X8,STARTZ . SAVE RETURN POINT L A4,('MAIN ') L X11,(2,0) LMJ X8,STARTL . EDIT A PAIR OF BANKS DJZ A10,STARTXQ . JUMP IF NO MAIN UTIL BANK J STARTXP STARTXQH . STARTXQ EQUF STARTXQH-HMX,X1 DJZ A12,STARTXX . EXIT, NO UTILITY BANKS STARTXPH . STARTXP EQUF STARTXPH-HMX,X1 LXM,U X11,4 L A4,('UTIL ') LMJ X8,STARTL . EDIT A PAIR OF BANKS STARTXXH . STARTXX EQUF STARTXXH-HMX,X1 LMJ X8,BLANK L,U X9,LINE L,H1 A0,BDIS . BDI NUMBER OF MAIN IBANK L,U A1,6 LMJ X8,EO2 . EDIT SIX DIGITS L,U A0,24 BN X9,A0 L,H2 A0,BDIS . BDI NUMBER OF MAIN DBANK L,U A1,6 LMJ X8,EO2 L,U A0,24 BN X9,A0 L,H1 A0,BDIS+1 . NUMBER OF BDI ON UTIL IBANK L,U A1,6 LMJ X8,EO2 L,U A0,24 BN X9,A0 L,H2 A0,BDIS+1 . BDI NUMBER ON UTIL DBANK L,U A1,6 LMJ X8,EO2 PR$INT LINE,22,1 L X8,STARTZ J 0,X8 . THE NEXT SECTION EDITS A PAIR OF BANK LIMITS STARTLH . STARTL EQUF STARTLH-HMX,X1 S X8,STARTLZ . SAVE RETURN POINT L,U R2,1 . NUMBER OF LINES TO PRINT LMJ X8,BLANK L,U X9,LINE L A0,A4 EX TSTX11,X10 . TEST MAIN OR UTIL PAIR ACTIVE A,U A0,('*'-' ')*/6 . PUT * AFTER NAME OF ACTIVE BANK L,U A1,6 LMJ X8,EF1 . INSERT CONTENTS OF A0 IN LINE L A0,('IBANK:') . IBANK LIMITS STRTL1H . STRTL1 EQUF STRTL1H-HMX,X1 L,U A1,6 LMJ X8,EF1 . INSERT CONTENTS OF A0 L A0,A6,X11 . GET REGISTER PAIR WITH STORAGE LIMITS A,U A0,1 . ADD 1 TO GET TRUE LOWER LIMIT L,U A1,6 . EDIT SIX DIGITS LMJ X8,EO2 L,U A0,'-' LMJ X8,IC1 . INSERT ONE CHARACTER L A0,A7,*X11 . GET UPPER LIMIT FROM REG PAIR L,U A1,6 LMJ X8,EO2 . EDIT UPPER LIMIT JGD R2,STRTL2 PR$INT LINE,22,1 . DONE PRINT LINE L X8,STARTLZ . RESTORE RETURN POINT J 0,X8 STRTL2H . STRTL2 EQUF STRTL2H-HMX,X1 L,U A0,18 . SKIP THREE COLUMNS BN X9,A0 L A0,('DBANK:') J STRTL1 SNEXTIH . SNEXTI EQUF SNEXTIH-HMX,X1 SNEXITH . SNEXIT EQUF SNEXITH-HMX,X1 SX,H2 X2,EXIT . SET PROGRAM COUINTER IN RETURN ADDRESS LA,U A0,0,X2 L A1,('TOFF$ '-TEST*(('$'-' ')*/6)) TNE,U A0,TOFFS+1 SA A1,USYM TNZ NOUT . TEST NO EIDT FLAG J SARTRE LMJ X8,BLANK L,U X9,LINE LMJ X8,RELINS . RELATIVIZE ADDRESS JUST IN CASE LMJ X8,EDIT . FORCE OUT LAST INSTRUCTION SZ NOUT SARTREH . SARTRE EQUF SARTREH-HMX,X1 LMJ X8,DASH LMJ X8,BLANK L,U X9,LINE P$RINT EXMSG,LEXMSG,1 . PRINT TERMINATION SEQUENCE LMJ X8,ICNT . EDIT NUMBER OF TRACED INSTRUCTIONS LMJ X8,DUMP LMJ X8,DASH REMEXTH . REMEXT EQUF REMEXTH-HMX,X1 L A1,(05377,CTGPKT) TZ CCALL . IS CONTINGENCY TRAP MODE IN USE S A1,CONWRD . YES -- USE SAVED VALUE INSTEAD L A0,CONWRD . GET USER CONTINGENCY L,H1 A1,CONWRD LXI,U A0,0 ER IALL$ SZ CTNG SEGEXTH . L A0,NSOD$ LPD 0,A0 . RESET AS ON ENTRANCE LA,U A0,0 TZ CARRY LA,U A0,4 TZ OVFL AA,U A0,2 LA A1,COTAB,A0 AA A1,COTAB+1,A0 L A0,(SRSFORM 0,16,0,64,0,0,0,0) LRS A0,REGSAVE+0100 . RESTORE R REGISTERS L A0,(SRSFORM 0,032,0,0,0,0,0,0) LRS A0,REGSAVE . RESTORE X AND A REGISTERS EXITH . EXIT EQUF EXITH-HMX,X1 J $-$ . SAVE RETURN ADDRESS ER EXIT$ JZPCONTH . JZPCONT EQUF JZPCONTH-HMX,X1 SLJ MIDMP9 'JZPCON' 0700002,CTNGH LMJ X8,CONT J LEAVEX J INSLK CTNGH . CTNG EQUF CTNGH-HMX,X1 +0D . SAVE SPACE FOR CONTINGENCY INFO DS A0,REMSVC . SAVE IN ADDRTESSABLE MEMORY SLJ MIDMP 'CTNG ' +0700002,CTNGH L,S3 A0,CTNG . GET TYPE OF CONTINGENCY TE,U A0,1 TNE,U A0,2 J CTNG6 . IGDM OR IOPR INSIDE SNOOPY TE,U A0,010 . IS IN IINT J CTNG2 . NO L,S1 A0,CTNG . GET ETYPE TE,U A0,2 IS IT RBK J CTNG2 . SP1 REMBRK CTNG1H . CTNG1 EQUF CTNG1H-HMX,X1 L,U A0,0,X2 . CURRENT VALUE OF SNOOPY P-REGISTER AN,U A0,1 S A0,ERRADR . SAVE LOCATION IN ERROR L,H2 A0,CTNG AU,U A0,1 . COMPUTE RE-ENTRY ADDRESS TE,U A0,CTNG3 S,H2 A1,CTNG3 DL A0,REMSVC . RESTORE REGISTERS AT CONTINGENCY POINT ER CEND$ . RELEASE CONTINGENCY MODE CTNG3H . CTNG3 EQUF CTNG3H-HMX,X1 J $-$ CTNG2H . CTNG2 EQUF CTNG2H-HMX,X1 SP1 CONTINGF . SET CONTINGENCY FLAG TE,U A0,6 . IS IT RESTART J CTNG2A . NO SZ *CRELAD$-1 . YES -- CLEAR CLREALD AND CABSAD$ TABLE J CTNG1 CTNG2AH . CTNG2A EQUF CTNG2AH-HMX,X1 TG,U A0,7 . ARITHMETIC FAULT J CTNG2B . NO DSL A3,72 . YES SIULATE STANDARD ACTION J CTNG1 CTNG2BH . CTNG2B EQUF CTNG2BH-HMX,X1 L,H2 A0,CTNG . GET CONTINGENCY ADDRESS TG,U A0,START . WAS IT FROM COMMAND MODE J CTNG1 , NO USER MADE THE ERROR L,H1 A0,CTNG TE,U A0,020212 . CHECK FOR SECOND ABN RETURN FROM READ$ TNE,U A0,020112 . CHECK FOR EOF ON READ$ J CTNG4 AND,U A0,0770077 . MASK OFF ERROR CODE BIT TE,U A1,040012 . SEE IF IT IS ER ERROR J CTNG4 . IT IS NOT L,S2 A0,CTNG . GET ERROR CODE TG,U A0,040 TG,U A0,045 J CTNG4 J CTNG5 CTNG4H CTNG4 EQUF CTNG4H-HMX,X1 PR$INT NOTREC,LNOTRC,1 CTNG7H CTNG7 EQUF CTNG7H-HMX,X1 J LEAVEJ CTNG5H . CTNG5 EQUF CTNG5H-HMX,X1 PR$INT CSFERM,2,1 SZ CONTINGF . CLEAR CONTINGENCY MODE J LEAVEJ CTNG6H . CTNG6 EQUF CTNG6H-HMX,X1 ER EXIT$ . QUIT ASND DO NOT MUDDY WATERS J CTNG6A . NO CTNG6AH . CTNG6A EQUF CTNG6AH-HMX,X1 L,U A0,SNAPK ER SNAP$ J CTNG7 . . THE FOLLOWING IS A ROUGH OUTLINE OF GLOBAL ASSIGNMENTS TO REGISTERS . X0 NOT USED . X1 USED TO BASE HIGH MEMORY . X2 P-REGISTER . X3 USED TO INDEX BY OP CODES . X4 USED AS JAZZ INDEX . X4 . X5 SOURCE INDEX WHILE EDITING . X6 TRANSLATION INDEX WHILE EDITING . X7 COMMAND STRING INDEX WHILE EDITING . X7 ALSO A DESIGNATOR . X8 USED TO CALL ROUTINES AS LMJ INSTEAD OF SLJ . X9 DESTINATION INDEX WHILE EDITING . X10 D12 . X11 SCRATCH . A0 . A1 . A2 . A3 . A4 . A5 . A6 IBANK LOWER LIMIT . A7 IBANK UPPER LIMIT . A8 DBANK LOWER LIMIT . A9 DBANK UPPER LIMIT . A10 MAIN PSR IBANK LLIM-1 . A11 MAIN PSR DBANK ULIM . A12 UTIL PSR IBANK LLIM-1 . A13 UTIL PSR DBANK ULIM . A14 NOT DEFINED . A15 REPEAT COUNT . R0 NOT USED . R1 HARDWARE REPEAT COUNT . R2 MASK REGISTER . R3 NOT USED . R4 NOT USED . R5 . . R6 . NOT USED . R7 INCREMENTED INDEX REGISTER . . . THE BASIC INTERPRETER STARTS HERE INSTRH . INSTR EQUF INSTRH-HMX,X1 TOP A5,REPEAT . REPEAT INSTRUCTION J INSLK . NO TZ A15 . YES, TERMINATE IF REPEAT COUNT IS ZERO TZ SKIP J INSTRA SP1 ERPT LR,U R8,ILOKLM . INITIALIZE LOCKOUT COUNTER TZ REMBRK J INSTRAJ TNZ CONTINGF J ADDR0 . NO INTERRUPT INSTRAJH . INSTRAJ EQUF INSTRAJH-HMX,X1 AN,U X2,1 . REDUCE P TO CAPTURE INTERRUPT J INSTRA . TRANSFER TO HIGH CODE SECTION LEAVEJH . LEAVEJ EQUF LEAVEJH-HMX,X1 SP1 NOUT . SET NO EDIT FLAG LEAVEH LEAVE EQUF LEAVEH-HMX,X1 LMJ X2,SNEXIT . TERMINATION SEQUENCE TO ER EXIT$ . GIVE CONTROL BACK TO EXEC . . INSTRAH . INSTRA EQUF INSTRAH-HMX,X1 TNZ BBNR1 . A BIT INSTRUCTION THAT DOES NOT USE R1 SA A15,RPTC . SAVE FINAL REPEAT COUNT IN R1 INSLKH . INSLK EQUF INSLKH-HMX,X1 L A0,X2 . X2 IS P REGISTER TE,U A0,$-$ TNE,U A0,TOFFS+1 J SNEXTI TE,U A0,START+1 . DID THE USER DO ANOTHER SLJ SNOOPY J NOSNOP . NO KEEP GOING L,H2 A0,START . GET USER RETURN ADDRESS . A,U A0,1 . MOVE PAST PARAMETER WORD L X2,A0 . RESET P TO THE SLJ ADDR + 2 NOSNOPH . NOSNOP EQUF NOSNOPH-HMX,X1 . TE,U A0,COUNTS+1 . DID THE USER DO AN SLJ TCNT$ . J NOCOUNT . NO KEEP GOING . L,H2 A0,COUNTS . GET USERS RETURN ADDRESS . INC COUNT . INCREMENT COUNT FIELD . NOP . ZERO RESULT COMES HERE . A,U A0,3 . BOOST LOCATION COUNTER BY 3 . L X2,A0 . RESET SNOOPY'S P REGISTER NOCOUNTH . NOCOUNT EQUF NOCOUNTH-HMX,X1 INSLKAH . INSLKA EQUF INSLKAH-HMX,X1 SZ TRAP TNZ CONTINGF J INSLKAJ1 J JZPCONT INSLKAJ1H . INSLKAJ1 EQUF INSLKAJ1H-HMX,X1 L A0,ICOUNT . NUMBER OF INSTRUCTIONS AND A0,ICFREQ . AND OFF A FEW BITS TNE A1,ICFREQ . TST FOR MULTIPLE OF VALUE LMJ X8,ICNT . GO PRINT NUMBER OF INSTRUCTIONS LR,U R8,ILOKLM . INITIALIZE LOCKOUT COUNTER L A0,X2 INSLKRH . INSLKR EQUF INSLKRH-HMX,X1 LMJ X8,AFUDJ L A2,0,A1 . A2 IS CURRENT INSTRUCTION BEING EXECUT LMJ X8,OPINDX . DETERMINE OP CODE INDEX LX X3,A3 . X3 = OP-CODE INDEX A,U A3,FTAB1 . ACCOUNT FOR HIGH MEMORY L A5,0,A3 . GET F DESCRIPTOR BITS SZ ADDRSW . RESET ADDRESSING SWITCHES SZ BBFLG . INITIALIZE BIT FLAGS SZ BBFLG2 . INITIALIZE EDIT FLAGS SZ BBFLG3 . INITIALIZE MORE BIT FLAGS ADDR0H . ADDR0 EQUF ADDR0H-HMX,X1 TZ BBRPT . IF REPEATING BIT OR BYTE SKIP TO ADDRE J ADDREXY TZ INCR . WRITE BACK INDEX SR R7,*INCR SZ INCR . CLEAR THE INCREMENT FLAG TNZ BTFJ . NON ZERO FOR REPEATED INSTRUCTIONS LMJ X8,EDITOR . DO A PRE-EDIT ON THE INSTRUCTION TNZ BTFJ INC ICOUNT . ONLY COUNT ONCE FOR BT AND SLJ NOP . ZERO RESULT COMES HERE JGD R8,ADDR0J . COUNT NUMBER OF CYCLES THAT INTERRUPTS J GDMVIL . ARE PREVENTED ..... TOO MANY ADDR0JH . ADDR0J EQUF ADDR0JH-HMX,X1 AND,U A2,1*/16-1 L A0,A3 . A0 = U-FIELD TOP A5,JDES . PARTIAL WORD DESIGNATOR J ADDR1 . NO AND A2,MSK+1 . YES, IT IS AN M OR XM TG A3,(I$ 0,U,0,0,0,0) SP1 MEDIAT . YES MAKE A NOTE ADDR1H . ADDR1 EQUF ADDR1H-HMX,X1 AND A2,MSK+2 . MASK OUT X-FIELD JNZ A3,ADDR2 . X = 0 TNZ MEDIAT . YES, IS THE J FACTOR U OR XU J ADDR3 . NO L,U A0,0,A2 . YES, A0 = HIU J XQT . AND QUIT ADDR2H . ADDR2 EQUF ADDR2H-HMX,X1 SSL A3,18 . A3 = X L A1,INDEX . CURRENT VALUE OF INDEX AH A0,A1 . MODIFY U LA,U A0,0,A0 NOP A0,0,*A1 . INCREMENT INDEX TOP,U A2,0,*0 . INCREMENTATION J ADDR3 . NO TEP A5,REPEAT . IS THIS A REPEAT MODE INSTRUCTION TZ RPTC . YES .. TEST FOR ZERO REPEAT COUNT J ADDR2J . OK TO INCREMENT X -REGISTER J ADDR3 . OMIT INCREMENTATION IF R1 = 0 ADDR2JH . ADDR2J EQUF ADDR2JH-HMX,X1 LR R7,A1 . YES, R7 HAS UPDATED VALUE OF INDEX LA,U A1,CONTM,A3 . A1 = INDEX LOCATION S A1,INCR . STORE IT ADDR3H . ADDR3 EQUF ADDR3H-HMX,X1 SA A0,EFFAD TEP A5,BBINS . TEST FOR BIT INSTRUCTION LMJ X8,BBINPKT TOP A5,ADINS . RELATIVE ADDRESSING TEP,U A2,*0 . JUMP EXECUTE OR INDIRECT J ADDR4 TNZ MEDIAT . NON ZERO IF IMMEDIATE J FACTOR TEP A5,SHIFT OR SHIFT J ADDREX . YES, NO RELATIVE ADDRESSING TLE,U A0,0200 . ICR ???? J ADDREX . YES ADDR4H . ADDR4 EQUF ADDR4H-HMX,X1 SZ AUTSW . INDICATE AUTO-SWITCH HAS NOT OCCURRED L A4,A2 . GET CURRENT INSTRUCTION SSL A4,26 . EXTRACT F AN J FIELD TE,U A4,0177 I IF LBJ TEST AFTER BANK IS LOADED TNE,U A4,0173 . IF LIJ TEST AFTER BANK IS LOADED J ADDREX L,U A3,BEG$SNPX . FIRST LOCATION FIRST PART OF SNOOPY L,U A4,END$SNPX . LAST LOCATION FIRST PART OF SNOOPY TW A3,A0 J ADDR3Y . CAN NOT STORE INTO FIRST PART OF SNOOP TE,U A0,TOFF$ TNE,U A0,TONZ$ . TWO VALID LOCATIONS TO STORE INTO SNO J ADDR3Y J ADDR8 . CAN POTENTIALLY DESTROY SNOOPY ADDR3YH . ADDR3Y EQUF ADDR3YH-HMX,X1 L,U A3,BEG$SNPY . FIRST LOCATION SECOND PART OF SNOOPY L,U A4,END$SNPY-1 . LAST LOCATION SECOND PART OF SNOOPY TW A3,A0 J ADDR3V . CAN NOT STORE INTO SNOOPY TE,U A0,TOFF$ TNE,U A0,TONZ$ . TWO VALID LOCATIONS TO STORE IN SNOOO J ADDR3V J ADDR8 . CAN POTENTIALLY DESTROY SNOOPY ADDR3VH . ADDR3V EQUF ADDR3VH-HMX,X1 EX TGBS,X10 . IS A0 < BS? J ADDR5 . NO USE BI EX TWBD,X10 J ADDR7 . TEST ALTERNATE PSR TNZ WINHMD . IS MAIN D-BANK WRITE PROTECTED J ADDREX . NO J ADDR8 ADDR5H . ADDR5 EQUF ADDR5H-HMX,X1 EX TWBI,X10 . I-BANK LIMITS VIOLATED J ADDR7 . TEST ALTERNATE PSR TNZ WINHMI . IS MAIN D-BANK WRITE PROTECTED J ADDREX . NO J ADDR8 . TEST FOR ATTEMPT TO WRITE ADDR7H . ADDR7 EQUF ADDR7H-HMX,X1 TZ X10 . IF STILL EXECUTING INSTRUCTIONS ON MAI J ADDR7X . TEST IF BOTH UTIL BANKS ARE FOR DATA TW A10,A0 J ADDR7Y . GO TEST UTIL D BANK TNZ WINHUI J ADDREX J ADDR8 ADDR7YH . ADDR7Y EQUF ADDR7YH-HMX,X1 TW A12,A0 J ADDR7X TNZ WINHUD J ADDREX J ADDR8 ADDR7XH . ADDR7X EQUF ADDR7XH-HMX,X1 TZ D18 . IS D18 SET J ADDR7J . YES ALLOW AUTO SWITCH SP1 LOK . NO STORAGE LIMITS VIOLATION J ADDREX . CONTINUE ADDR7JH . ADDR7J EQUF ADDR7JH-HMX,X1 SP1 AUTSW . THIS IS AUTO-SWITCH CONDITION EX TGBS-1,X10 . COMPARE TO BS J ADDR9 . USE BI EX TWBD-1,X10 . TEST AGAINST BD LIMITS SP1 LOK . STORAGE VIOLATION TNZ WINHUD . WRITE PROTECTED J ADDREX . NO OK TO PROCEED ADDR8H . ADDR8 EQUF ADDR8H-HMX,X1 TOP A5,STOR . DOES THE INSTRUCTION STORE J ADDREX . NO TEP A5,REPEAT . BT IS A REPEAT THAT STORES TZ BTFJ . IS THIS LOAD CYCLE OF BT J ADDR8J . NO PERFORM CHECK FOR WRITE INHIBIT J ADDREX . BYPASS CHECK FOR WRITE INHIBIT ADDR8JH . ADDR8J EQUF ADDR8JH-HMX,X1 TOP,U A2,*0 . INDIRECT ADDRESSING SP1 LOK . NO .. WRITE IS ON THIS CYCLE J ADDREX ADDR9H . ADDR9 EQUF ADDR9H-HMX,X1 EX TWBI-1,X10 . TEST AGAINST BI LIMITS SP1 LOK . VIOLATION TNZ WINHUI . WRITE PROTECTED J ADDREX . NO J ADDR8 . YES -- CHECK FURTHER . ADDREXYH . ADDREXY EQUF ADDREXYH-HMX,X1 L,U A0,0,X4 . TEST IF JAZZ TABLE MIGHT OVERFOW AN,U A0,JAZZ TLE,U A0,75 J ADDREX LMJ X11,EDITOR . EDIT WHAT THERE IS L X4,(1,JAZZ) . CODE SHOULD FALL THRU TO ADDREX ADDREXH . ADDREX EQUF ADDREXH-HMX,X1 TOP,U A2,*0 . TEST INDIRECT BIT J XQT . NO TNZ LOK . YES, INDIRECT ADDRESSING J ADDR6 . LOCKOUT IS NOT VIOLATED J GDMVSL . YOU LOSE ADDR6H . ADDR6 EQUF ADDR6H-HMX,X1 LR R2,MSK+3 . PREPARE MASK LX X11,KLUDGE LX X4,(1,JAZZ) LR,U R1,3 TZ KLUDGE BT X4,,*X11 SZ KLUDGE LMJ X8,AFUDJ MLU A2,0,A1 . MASK IN XHIU FROM CORE L A2,A3 AND,U A2,1*/16-1 . A0 = NEW U-FIELD L A0,A3 SP1 EIND TP BRKIC . SEE IF SKIP COUNT ACTIVE J ADDR0 . AND AWAY WE GO ! INC BRKIC . INCREMENT SKIP COUNT NOP . . ZERO RESULT COMES HERE J ADDR0 . BACK TO COMPUTE NEW ADDRESS XQTH . XQT EQUF XQTH-HMX,X1 TOP A5,EXR . IS THIS AN EXECUTE REMOTE J XQTA SP1 EEX TZ LOK J GDMVSL L A4,BRKIC . BUMP SKIP COUNT BY 1 JN A4,INSLKR . JUMP IF NOT ACTIVE A,U A4,1 . AVOID SPURIOS STOPS IN RLIB S A4,BRKIC J INSLKR XQTAH . XQTA EQUF XQTAH-HMX,X1 TNZ RIP LX,U X2,1,X2 . ADVANCE P REGISTER BY ONE TOP A5,REPEAT . REPEAT INSTRUCTION J NRPTJ . NO TEP A5,BBINS J BBSRP . GO SET UP REPEAT COUNT FOR BIT INSTRUC TZ BTFJ J NRPTJ TZ RIP . REPEAT IN PROGRESS J NRPT . YES LA A15,RPTC . NO, SET UP REPEAT JZ A15,INSLK . QUICK EXIT IF R1 = 0 INITIALLY SP1 RIP . REPEAT IN PROGRESS SWITCH NRPTA . NRPT EQUF NRPTA-HMX,X1 AN,U A15,1 . REDUCE REPEAT COUNT BY ONE S A15,EDLPCT . SAVE CURRENT VALUE FOR EDITING LR,U R1,1 . FUDGE UP R1 NRPTJH . NRPTJ EQUF NRPTJH-HMX,X1 TOP A5,LODE . DO WE REFERENCE THE OPERAND IN CORE TEP A5,STOR J NRPTK J XQT6 . NO NRPTKH . NRPTK EQUF NRPTKH-HMX,X1 TZ LOK J GDMVSL TNZ BTFJ LX X11,(1,COREB) . YES START FUDGING LR,U R5,0 TEP A5,DWORD . IS THIS A TWO WORD OPERAND LR,U R5,1 . YES, FUDGE SOME MORE TZ BBDC . IF A DIGIT COUNT GET NUMBER OF CELLS L R5,BBNUSR . FROM BBNUSR XQTOJH . XQTOJ EQUF XQTOJH-HMX,X1 L,U A1,0,X11 AN,U A1,COREB S A1,TAB XQTOH . XQTO EQUF XQTOH-HMX,X1 TZ MEDIAT . J = M OR XM J XQT2J . YES TLE,U A0,0200 . IS AN ICR REFERENCED J XQT3 . YES LMJ X8,AFUDJ TOP A5,LODE . NO TRANSFER IF LODE RESET J XQT5K TEP A5,QWINS . TET FOR LAQW J XQTOQ TOP A5,JDES . PARTIAL WORDS ALLOWED J XQT5J . NO XQT1H . XQT1 EQUF XQT1H-HMX,X1 TZ QWSIM . TEST FOR SIMULATION BEING REQUIRED TZ QW . IN QUARTER WORD MODE J XQT2 . YES . TOP A2,BIT+29 . TOP A2,BIT+28 . J XQT2 . NOT A QUARTER WORD TRANSFER AND A2,MSK+1 . PERFORM QUARTER WORD PARTIAL SSL A3,26 TNE,U A3,4 J XQT14 TNE,U A3,5 J XQT15 TNE,U A3,6 J XQT16 TE,U A3,7 J XQT2 . NOT A THIRD WORD J FACTOR L A4,0,A1 SSA A4,24 J XQT5 XQT15H . XQT15 EQUF XQT15H-HMX,X1 L A4,0,A1 LSSL A4,24 SSA A4,24 J XQT5 XQT14H . XQT14 EQUF XQT14H-HMX,X1 L A4,0,A1 SSA A4,18 J XQT5 XQT16H . XQT16 EQUF XQT16H-HMX,X1 L A4,0,A1 LSSL A4,12 SSA A4,24 J XQT5 . LX X6,QTAB,A3 . LA A3,0,A1 . SSL A3,0,X6 . AND,U A3,0777 . J XQT5 XQTOQH . XQTOQ EQUF XQTOQH-HMX,X1 AND A2,MSK+2 SSL A3,18 . EXTRACT INDEX FIELD LXI,H1 A1,CONTM,A3 . GET BYTE INDEX FROM USER INDEX LAQW A4,0,A1 L A3,(L A3,COREB) S A3,DUMMY J XQT5 XQT2JH . XQT2J EQUF XQT2JH-HMX,X1 AU,U A0,0 XQT2H . XQT2 EQUF XQT2H-HMX,X1 LR R2,MSK+4 . PERFORM REGULAR PARTIAL WORD TRANSFER MLU A2,XQT2Y SA A3,XQT2Y XQT2YH . XQT2Y EQUF XQT2YH-HMX,X1 LA,$-$ A4,0,A1 J XQT5 XQT3H . XQT3 EQUF XQT3H-HMX,X1 TZ TRAP LMJ X8,RFUDJ TEP A5,STOR . REGISTER PROTECT IGDM ONLY FOR STORE TLE,U A0,040 . CHECK ICR LIMITS J XQT4 TG,U A0,0101 TG,U A0,0120 J GDMVCR . GUARD MODE VIOLATION XQT4H . XQT4 EQUF XQT4H-HMX,1 SZ LOK . CLEAR LOCKOUT TLE,U A0,0121 . IF EXEC REGISTER USE HARDWARE COY J XQT4J L A1,A0 . ICR ADDRESS TO ACCESS J XQT4K XQT4JH . XQT4J EQUF XQT4JH-HMX,X1 AU,U A0,CONTM XQT4KH . XQT4K EQUF XQT4KH-HMX,X1 AA A1,BIT+29 XQT5JH . XQT5J EQUF XQT5JH-HMX,X1 AA A1,BIT+35 XQT5KH . XQT5K EQUF XQT5KH-HMX,X1 L A4,0,A1 XQT5H . XQT5 EQUF XQT5H-HMX,X1 SA A4,0,X11 . SAVE IN CORE AREA COREB SA A1,5,*X11 . SAVE ADDRESS COREBA TZ R5 LA,U A0,1,A0 . COMPUTE ADDRESS OF SECOND OPERAND JGD R5,XQTOJ . LOOP FOR TWO WORD OPERAND XQT6H . XQT6 EQUF XQT6H-HMX,X1 L,U X6,FTAB1 . POINT TO HIGH MEMORY A X6,X3 LX,S1 X6,0,X6 LR R2,MSK,X6 L,U A3,FTAB2 . POINT TO HIGH MEMORY A A3,X3 MLU A2,0,A3 TOP A5,STOR TOP A5,QWINS . SKIP FLOR LAQW / SAQW S A3,DUMMY AND A2,MSK+5 . GET A DESIGNATOR TEP A5,JGDI . JA DESIGNATOR FOR JGD AND A2,MSK+6 SSL A3,22 LX X7,A3 . X7 = A OR JA DESIGNATOR L,U X6,FTAB1 A X6,X3 LX,S2 X6,0,X6 . X6 IS A-FIELD ACTION INDEX TEP A5,GILOP J GDMVPR S X11,SAVEX11 L,U X11,AACT A X11,X6 TEP A5,BBINS . TEST FOR BIT INSTRUCTION LMJ X8,BBREGLD S A5,SAVEA5F . SAVE STATUS BITS EX 0,X11 . EXECUTE A FIELD ACTION ENTRY TZ INCR . NONZERO IMPLIES INCREMENTATION SR R7,*INCR . STORE BACK INCREMENTED INDEX SZ INCR DUMMYH . DUMMY EQUF DUMMYH-HMX,X1 + $-$ . CONSTRUCTED INSTRUCTION GOES HERE DUMMYJH . ER'S JOIN HERE DUMMYJ EQUF DUMMYJH-HMX,X1 J XQT7 . NORMAL RETURN SKIPRH . SKIPR EQUF SKIPRH-HMX,X1 L A5,SAVEA5F . RESTORE STATUS BITS SP1 ESKIP . SKIP RETURN, INCREMENT P LX,U X2,1,X2 . SKIP RETURN, INCREMENT P TEP A5,REPEAT . REPEAT INSTRUCTION SP1 SKIP . YES, SET UP SKIP TERMINATION J XQT7 JUMPRH . JUMPR EQUF JUMPRH-HMX,X1 SP1 EJUMP TZ LOK J GDMVSL . SOMETHING TO WORRY ABOUT NOJHTH . NOJHT EQUF NOJHTH-HMX,X1 LX,U X2,0,A0 . CHANGE P-REGISTER ANU,U A14,0,X10 . INVERT X10 TZ AUTSW . DID AUTO-SWITCH OCCUR L X10,A15 . YES CHANGE X10 TO NEW SETTING OF D12 XQT7H . XQT7 EQUF XQT7H-HMX,X1 S A5,SAVEA5V . THREE REGISTER INSTRUCTIONS USE A5 L X11,SAVEX11 L A5,SAVEA5F TOP A5,CAROV . CARRY % OVERFLOW TOGGLES AFFECTED J XQT8 . NO SZ CARRY SZ OVFL JNO XQT7J SP1 OVFL XQT7JH . XQT7J EQUF XQT7JH-HMX,X1 JNC XQT7K SP1 CARRY XQT7KH . XQT7K EQUF XQT7KH-HMX,X1 XQT8H . XQT8 EQUF XQT8H-HMX,X1 . SLJ MIDMP9 . 'OVFL' . +1,SW1H . SLJ MIDMP9 . 'A5' . +0700001,SAVEA5FH TEP A5,BBINS . TEST FOR BIT INSTRUCTION LMJ X8,BBREGST L,U X8,AACT1 A X8,X6 TLEM,U X6,RA3-AACT+1 . IS A5 GARBAGE TLEM,U X6,RA3-AACT TOP A5,STOR . NO SHOULD WE STORE THE REGISTERS EX 0,X8 . RESTORE REGISTERS TZ A15 J XQT8J TEP A5,BBINS J BBSRP5 XQT8JH . XQT8J EQUF XQT8JH-HMX,X1 TNZ MEDIAT . FORGET RESTORE IF MEDIAT TOP A5,STOR . OR CORE NOT AFFECTED J INSTR TEP A5,TSI . IS THIS TEST & SET CLASS INSTRUCTION J INSTR . YES, DON'T PERFORM STORE SEQUENCE LX X11,(1,COREB) LR R5,TAB XQT9H . XQT9 EQUF XQT9H-HMX,X1 LA A4,0,X11 . LOAD DATA WORD COREB LA A1,5,*X11 . LOAD CORE ADDRESS COREBA TEP A5,QWINS . CATCH A SAQW HERE J XQT9Q JN A1,XQT10 . NO PARTIAL WORDS TOP A5,JDES . ARE J DESIGNATORS J XQT10 . NO, BYPASS PARTIAL WORD STORE TZ QWSIM . TEST FOR SIMULATION TZ QW . IN QUARTER WORD MODE J XQT11 . YES . TOP A2,BIT+29 . TOP A2,BIT+28 . J XQT11 . NOT A QUARTER WORD TRANSFER AND A2,MSK+1 . PERFORM QUARTER WORD STORE SSL A3,26 TNE,U A3,4 J XQT94 TNE,U A3,5 J XQT95 TNE,U A3,6 J XQT96 TE,U A3,7 J XQT11 L A3,0,A1 LR,U R2,07777 SSC A3,24 MLU A3,A4 SSC A4,12 J XQT10 XQT95H . XQT95 EQUF XQT95H-HMX,X1 L A3,0,A1 LR,U R2,07777 MLU A3,A4 J XQT10 XQT94H . XQT94 EQUF XQT94H-HMX,X1 L A3,0,A1 LR,U R2,0777777 SSC A3,18 MLU A3,A4 SSC A4,18 J XQT10 XQT96H . XQT96 EQUF XQT96H-HMX,X1 L A3,0,A1 LR,U R2,07777 SSC A3,12 MLU A3,A4 SSC A4,24 J XQT10 . . LX X6,QTAB,A3 . L A3,0,A1 . LR,U R2,0777 . SSC A3,0,*X6 . MLU A3,A4 . SSC A4,0,X6 XQT10H. . XQT10 EQUF XQT10H-HMX,X1 TEP A5,REPEAT TNZ R5 SA A4,0,A1 J XQT12 XQT11H . XQT11 EQUF XQT11H-HMX,X1 LR R2,MSK+4 . PERFORM REGULAR PARTIAL WORD STORE MLU A2,XQT11A SA A3,XQT11A . CONSTRUCT A STORE INSTRUCTION TEP A5,REPEAT TNZ R5 XQT11AH . XQT11A EQUF XQT11AH-HMX,X1 SA,$-$ A4,0,A1 . PERFORM STORE XQT12H . XQT12 EQUF XQT12H-HMX,X1 JGD R5,XQT9 J INSTR . EXECUTE NEXT INSTRUCTION . XQT9QH . XQT9Q EQUF XQT9QH-HMX,X1 AND A2,MSK+2 SSL A3,18 SSL A4,27 . STORED IN POSITION 2 AT DUMMY LXI,H1 A1,CONTM,A3 . GET BYTE INDEX FROM USER REGISTER SAQW A4,0,A1 J INSTR . RETURN FOR NEXT INSTRUCTION RRA2H . RRA2 EQUF RRA2H-HMX,X1 LA A3,ARG1 LA A4,ARG2 J 0,X8 RRRA2H . RRRA2 EQUF RRRA2H-HMX,X1 SA A3,ARG1 SA A4,ARG2 J 0,X8 RRMA1H . RRMA1 EQUF RRMA1H-HMX,X1 L A3,ARG1 LR R2,MSKR J 0,X8 RRMA2H . RRMA2 EQUF RRMA2H-HMX,1 L A3,ARG1 L A4,ARG2 L R2,MSKR J 0,X8 RRA3H . RRA3 EQUF RRA3H-HMX,X1 L A3,ARG1 L A4,ARG2 L A5,ARG3 J 0,X8 RRRA3H . RRRA3 EQUF RRRA3H-HMX,X1 SA A3,ARG1 SA A4,ARG2 L A0,SAVEA5V . USERS A5 FOR THREE REGISTER INSTRUCTIO S A0,ARG3 J 0,X8 . RRBBH . RRBB EQUF RRBBH-HMX,X1 L A3,BBSF . GET SUB FUNCTION TE,U A3,015 TNE,U A3,016 J RRBBL J 0,X8 RRBBLH . RRBBL EQUF RRBBLH-HMX,X1 L A3,ARG1 J 0,X8 RRBB2H . RRBB2 EQUF RRBB2H-HMX,X1 J 0,X8 RRBTH . RRBT EQUF RRBTH-HMX,X1 TZ BTFJ J RRBT2 SP1 BTFJ . SHOW BLOCK TRANSFER IN PROGRESS LX,U X9,0 RRBT1H . RRBT1 EQUF RRBT1H-HMX,X1 AND A2,BTMSK ANA A2,A3 DSL A3,22 TNZ A4 DSL A3,4 SSL A4,32 SSC A3,4 DSC A3,50 AA A2,A4 L X11,SAVEX11 TZ BTFJ J ADDR0 J 0,X8 RRBT2H . RRBT2 EQUF RRBT2H-HMX,X1 SZ BTFJ SP1 TAB LA,U A0,1 L,U R1,1 . SET REPEAT COUNTER TO 1 L,U X9,0 J RRBT1 RRR1H . RRR1 EQUF RRR1H-HMX,X1 LA A3,RRG1 TZ,U 0,X7 J 0,X8 TEP A5,LODE . GUARD MODE ONLY FOR LOADING R0 J GDMVCR J 0,X8 . STORING R0 IS O.K. RRJGDH . RRJGD EQUF RRJGDH-HMX,X1 LA A3,CONTM,X7 LA,U A15,0,X7 TLE,U A15,R1 TLE,U A15,040 TG,U A15,0120 J GDMVCR J 0,X8 ILMJH . ILMJ EQUF ILMJH-HMX,X1 LXM,U A3,0,X2 JN A2,JUMPR DS A0,JZA . SAVE SOME REGISTERS DS A2,JZA+2 DS A4,JZA+4 S R1,JZA+6 S X1,JZA+7 S R2,JZA+18 S X2,JZA+19 S X3,JZA+20 S X4,JZA+21 S X5,JZA+22 S X6,JZA+23 S X7,JZA+24 S X8,JZA+25 S X9,JZA+26 S X10,JZA+27 LXI,U A0,1*/17 . SPECIAL BANK$ ER ER BANK$ . RETRIEVE ACTIVE BDIS DS A0,JZA+8 . SAVE BDIS DS A0,BDIS . GIVE SNOOPY THE HARDWARE VALUES DS A0,A2 . MOVE THEM TO ANOTHER REGISTER PAIR SZ A4 . ZERO THE WRITE INHIBIT WORD L,U R1,3 . COMPUTE 4 LIMITS PAIRS LX X9,(-2,JZA+16) . SET UP STORE POINTER JZLIM4H . JZLIM4 EQUF JZLIM4H-HMX,X1 L,U A0,0,A3 . GET NEXT BDI SZ A1 . ZERO THE BITS REGISTER IN CASE A0=0 JZ A0,JZLIM5 . JUMP IF NO BDI DEFINED LXI,U A0,1*/17+1 . SET UP FOR SPECIAL BANK$ CALL ER BANK$ . GET STORAGE LIMITS AND OTHER BITS JZLIM5H . JZLIM5 EQUF JZLIM5H-HMX,X1 TEP A1,BIT+13 . TEST THE WRITE-INHIBIT BIT A,U A4,1 . SET--NOTE IT IN WRITE INHIBIT WORD SSC A4,6 . SHIFT THE WRITE INHIBIT WORD TO NEXT P L,U A1,0,A0 . LOWER HALF OF A0 TO A1 (LOWER LIMIT) SSL A0,18 . UPPER LIMIT TO LOWER HALF OF A0 AN,U A1,1 . SUBTRACT 1 FOR TW USAGE A,U A0,0777 . COMPUTE TRUE UPPER BOUND TP A1 . DOES THE BANK EXIST DSL A0,72 . NO CLEAR THE REGISTERS DSC A0,36 . SWITCH UPPER AND LOWER LIMITS DS A0,0,*X9 . STORE THEM DSC A2,18 . GET NEXT BDI JGD R1,JZLIM4 . SPD A2 . TEP,U A2,020 . NON ZERO IMPLIES UTILITY PSR ACTIVE . S A2,D12BIT L X1,JZA+7 LMJ X8,STARTX . DS A6,JZA+10 . DS A8,JZA+12 . DS A10,JZA+14 . DS A12,JZA+16 DL A6,JZA+10 DL A8,JZA+12 DL A10,JZA+14 DL A12,JZA+16 . LMJ X8,STARTX DL A0,JZA DL A2,JZA+2 DL A4,JZA+4 L R1,JZA+6 L X1,JZA+7 L R2,JZA+18 L X2,JZA+19 L X3,JZA+20 L X4,JZA+21 L X5,JZA+22 L X6,JZA+23 L X7,JZA+24 L X8,JZA+25 L X9,JZA+26 L X10,JZA+27 J JUMPR ISLJH . ISLJ EQUF ISLJH-HMX,X1 TZ BTFJ J ISLJ1 LA,U A3,0,X2 SA,H2 A3,COREB TZ,S2 COREBA SA A3,COREB SP1 BTFJ . INDICATE A MULTI CYCLE INSTRUCTION LX X11,(1,COREB) L A0,EFFAD L A5,(FS M1 'A') J ADDR3 ISLJ1H . ISLJ1 EQUF ISLJ1H-HMX,X1 LA A5,(FS M1 'L','S') S A5,SAVEA5F AH A0,(0,1) J JUMPR ILIJH . ILIJ EQUF ILIJH-HMX,X1 AND A3,(07777,0) . MASK BDI TO A4 SSL A4,18 . SHIFT BDI DOWN . TG,H2 A4,BDT . IS BDI IN RANGE FOR TABLE . JP A3,GDMVTL . TABLE VIOLATION UNLESS COMMON SZ RELLIM+1 . CLEAR RELATIVE LIMITS TO CALL CRELAD$ L,U A1,0,X2 TW A10,A1 J ILIJQ J ILIJJ ILIJQH . ILIJQ EQUF ILIJQH-HMX,X1 TW A12,A1 J ILIJK J ILIJJ ILIJKH . ILIJK EQUF ILIJKH-HMX,X1 J ILIJ1 . YES ILIJXH . ILIJX EQUF ILIJXH-HMX,X1 SZ LOK . CLEAR LOK FOR NEW TEST EX TGBS,X10 . COMPARE ADDRESS TO BS J ILIJM1 . SMALLER EX TWBD,X10 . IN RANGE FOR D-BANK SP1 LOK . NO, SET LOCKOUT FLAG J ILIJM2 ILIJM1H . ILIJM1 EQUF ILIJM1H-HMX,X1 EX TWBI,X10 . IN RANGE FOR I-BANK SP1 LOK . NO, SET LOCKOUT FLAG ILIJM2H . ILIJM2 EQUF ILIJM2H-HMX,X1 AND A3,(0607777,0777777) L A3,A4 LBJ A3,ILIJM2J . SWITCH BANKS ILIJM2JH . ILIJM2J EQUF ILIJM2JH-HMX,X1 LXI,H1 A3,BDIS,X10 . SET TO BDI OF REPLACED BANK TZ X10 A A3,(0100000,0) S,H1 A1,BDIS,X10 . SAVE NEW BDI IN TABLE SZ RELLIM+1 EX TWBD,X10 . TEST IF IN CONTROL BANK J ILMJ . LMJ CODE WILL FINISH UP SZ LOK SZ X10 J ILMJ . LMJ CODE WILL FINISH UP ILIJJH . ILIJJ EQUF ILIJJH-HMX,X1 A A3,(0100000,0) . FORCE TO UTILITY BIT J ILBJ . AND TREAT AS AN IBJ ILIJ1H . ILIJ1 EQUF ILIJ1H-HMX,X1 JN A3,ILIJ2 . TLE,U A4,4 TNE,U A4,1 . CHECK FOR BDIS< 4 EXCEPT FOR 1 J ILIJ2 . OK TO PROCEED J ILIJX . EVENTUAL ER 70 WILL OCCUR ILIJ2H . ILIJ2 EQUF ILIJ2H-HMX,X1 L A15,A5 . SAVE A5 L R4,A0 . SAVE A0 L A0,A3 . GET BDI SSL A0,18 LXI,U A0,1*/17+1 ER BANK$ . DETERMINE STORAGE LIMITS AND BITS TEP A1,BIT+11 . TEST FOR GUARANTEED ENTRY COMMON BANK J GTDERR . YES, CAN NOT CONTINUE TRACE EX WINHIC,X10 . CLEAR WRITE INHIBIT TEP A1,BIT+13 . IS WRITE INHIBIT SET EX WINHIS,X10 . YES, SET WRITE INHIBIT FLAG AH A0,(0777,-1) . COMPUTE STORAGE LIMIT L,XU A4,0,A0 SSL A0,18 L,XU A5,0,A0 EX LIL,X10 L A5,A15 . RESTORE A5 L A0,R4 . RESTORE A0 L A1,A3 SSL A1,18 J ILIJX . LET COMMON CODE FINISH UP ILDJH . ILDJ EQUF ILDJH-HMX,X1 AND A3,(07777,0) . MASK BDI TO A4 SSL A4,18 . SHIFT DOWN . TG,H2 A4,BDT . IS BDI IN RANGE FOR TABLE . JP A3,GDMVTL . NO, TABLE LENGTH VIOLATIN UNLESS COMMO L,H2 A1,BDIS,X10 . GET CURRENT D-BANK BDI TNE A1,BDID . IS IT SNOOPY'S D-BANK J NOBANK . YES, TRACE ENDS SZ RELLIM+1 . CLEAR RELATIVE LIMITS TO CALL CRELAD$ J ILDJ1 ILDJXH . ILDJX EQUF ILDJXH-HMX,X1 SZ LOK . CLEAR LOK FOR NEW TEST EX TGBS,X10 . COMPARE ADDRESS TO BS J ILDJM1 . SMALLER EX TWBD,X10 . IN RANGE FOR D-BANK SP1 LOK . NO, SET LOCKOUT FLAG J ILDJM2 ILDJM1H . ILDJM1 EQUF ILDJM1H-HMX,X1 EX TWBI,X10 . IN RANGE FOR I-BANK SP1 LOK . NO, SET LOCKOUT FLAG ILDJM2H . ILDJM2 EQUF ILDJM2H-HMX,X1 AND A3,(0407777,0777777) L A3,A4 A A3,(0200000,0) . ADD IN DBANK BIT LBJ A3,ILDJM2J . SWITCH BANKS ILDJM2JH . ILDJM2J EQUF ILDJM2JH-HMX,X1 LXI,H2 A3,BDIS,X10 TZ A10 A A3,(0100000,0) S,H2 A1,BDIS,X10 . SAVE NEW BDI IN TABLE J ILMJ . LMJ CODE WILL FINISH UP ILDJ1H . ILDJ1 EQUF ILDJ1H-HMX,X1 JN A3,ILDJ2 TLE,U A4,4 TNE,U A4,1 J ILDJ2 . OK TO PROCEED J ILDJX . EVENTUAL ER 070 WILL OCCUR ILDJ2H . ILDJ2 EQUF ILDJ2H-HMX,X1 L A15,A5 . SAVE A5 L R4,A0 . SAVE A0 L A0,A3 . GET BDI SSL A0,18 LXI,U A0,1*/17+1 ER BANK$ . DETERMINE STORAGE LIMITS AND BITS TEP A1,BIT+11 . TEST FOR GUARANTEED ENTRY COMMON BANK J GTDERR . YES, CANNOT CONTINUE TRACE EX WINHDC,X10 . CLEAR WRITE INHIBIT TEP A1,BIT+13 . IS WRITE INHIBIT SET EX WINHDS,X10 . YES, SET WRITE INHIBIT FLAG AH A0,(0777,-1) . COMPUTE STORAGE LIMITS L,XU A4,0,A0 SSL A0,18 L,XU A5,0,A0 EX LDL,X10 L A0,R4 L A5,A15 . RESTORE A5 L A1,A3 SSL A1,18 J ILDJX . LET COMMON CODE FINISH UP ILBJH . ILBJ EQUF ILBJH-HMX,X1 AND A3,BIT+33 . GET MAIN/UTILITY BIT L A1,A4 . MOVE TO A1 FOR INDEXING AND A3,(07777,0) . MASK BDI TO A4 SSL A4,18 . TG,H2 A4,BDT . IS BDI IN RANGE FOR TABLE . JP A3,GDMVTL . NO, TABLE LENGTH VIOLATION SSL A1,33 TEP A3,BIT+34 . TEST I/D BANK BIT J ILBJD . DBANK J ILBJBK ILBJDH . ILBJD EQUF ILBJDH-HMX,X1 L,H2 A15,BDIS,A1 . GET CURRENT DBANK BDI TE A15,BDID . IS IT SNOOPY'S DBANK J ILBJBK TE,H2 A15,BDIS . SAME BANK ON MAIN AND UTIITY J NOBANK TE,U A1,1 . ALL RIGHT TO DEACTIVATE UTILTY BA J NOBANK ILBJBKH . ILBJBK EQUF ILBJBKH-HMX,X1 SZ RELLIM+1 . CLEAR RELATIVE LIMITS TO FORCE CRELAD$ JN A3,ILBJ2 JZ A4,ILBJ2 . BDI ZERO DEACTIVATES A BANK TLE,U A4,4 TNE,U A4,1 . BDIS>4 EXCEPT 1 ARE ILLEGAL J ILBJ2 . OK TO PROCEED J ILBJX . EVENTUAL ER 070 ERROR WILL OCCUR ILBJ2H . ILBJ2 EQUF ILBJ2H-HMX,X1 L X9,A1 . WE STILL NEED THIS BIT L A15,A5 . SAVE A5 L R4,A0 . SAVE A0 L A0,A3 . GET BDI SSL A0,18 AND,U A0,07777 . TEST FOR ZERO BDI JZ A1,ILBJZP LXI,U A0,1*/17+1 ER BANK$ . DETERMINE STORAGE LIMITS AND BITS ILBJZAH . ILBJZA EQUF ILBJZAH-HMX,X1 TEP A1,BIT+11 . TEST FOR GUARANTEED ENTRY COMMON BANK J GTDERR . YES CAN NOT CONTINUE TRACE TEP A3,BIT+34 . TEST I/D BANK BIT J ILBJ2D . DBANK EX WINHIC,X9 . CLEAR WRITE INHIBIT TEP A1,BIT+13 . IS WRITE INHIBIT SET FOR NEW BANK EX WINHIS,X9 . YES, SET WRITE INHIBIT FLAG J ILBJ3 ILBJZPH . ILBJZP EQUF ILBJZPH-HMX,X1 TOP A3,(0100000,0) . TEST UTILITY BIT J ILBJX SZ A0 SZ A1 J ILBJZA ILBJ2DH . ILBJ2D EQUF ILBJ2DH-HMX,X1 EX WINHDC,X9 . CLEAR WRITE INHIBIT TEP A1,BIT+13 . IS WRITE INHIBIT SET FOR NEW BANK EX WINHDS,X9 . YES, SET WRITE INHIBIT FLAG ILBJ3H . ILBJ3 EQUF ILBJ3H-HMX,X1 L,U A4,0,A0 SSL A0,18 AN,U A4,1 . CORRECT SO TW WILL WORK L,U A5,0,A0 A,U A5,0777 TP A4 . DOES BANK REALLY EXIST DSL A4,72 . NOT REALLY TOP A3,BIT+34 . TEST FOR IBANK EX LIL,X9 TEP A3,BIT+34 . TEST FOR DBANK EX LDL,X9 L A0,A3 L A5,A15 SSL A0,18 AND,U A0,0477777 . CLEAR THE I/D AND M/U BITS . J ILBJSNP . GO GET SNAPSHOT ILBJSNPRH . RETURN FROM SNAP ILBJSNPR EQUF ILBJSNPRH-HMX,X1 SZ X10 SZ D18 TW A4,R4 . IF CODE DOES NOT TRANSFER TO LOADED J ILBJ3J . BANK DO NOT CHANGE D18 SZ D18 . CLEAR D18 TZ X9 . NONZERO LOADS UTILITY PSR SP1 D18 . YES SET D18 FLAG TZ X9 L,U X10,1 ILBJ3JH . ILBJ3J EQUF ILBJ3JH-HMX,X1 L A0,R4 . RESTORE A0 ILBJXH . ILBJX EQUF ILBJXH-HMX,X1 SZ LOK SZ AUTSW TNE,U A0,0,X2 . Test for LBJ $+1 J ILBj5 EX TGBS,X10 . A0 < BS J ILBJ4I . YES TRY BI EX TWBD,X10 . TEST DBANK STORAGE LIMITS J ILBJ4A . OUT OF RANGE -- TRY ALTERNATE PSR J ILBJ5 . STORAGE LIMITS OK ILBJ4IH . ILBJ4I EQUF ILBJ4IH-HMX,X1 EX TWBI,X10 . TEST IBANK STORAGE LIMITS J ILBJ4A . OUT OF RANGE--TRY ALTERNATE PSR J ILBJ5 . STORAGE LIMITS OK ILBJ4AH . ILBJ4A EQUF ILBJ4AH-HMX,X1 TZ D18 . IS D18 SET (ALLOW AUTO SWITCH) J ILBJ4B . YES--BOTH PSRS AVAILABLE SP1 LOK J ILBJ5 ILBJ4BH . ILBJ4B EQUF ILBJ4BH-HMX,X1 SP1 AUTSW . INDICATE AUTO SWITCH TO OCCUR EX TGBS-1,X10 . A0 < BS ALTERNATE ? J ILBJ4AI . YES--TRY BI ALTERNATE EX TWBD-1,X10 . TEST ALTERNATE DBANK STORAGE LIMITS SP1 LOK . GUARD MODE VIOLATION J ILBJ5 ILBJ4AIH . ILBJ4AI EQUF ILBJ4AIH-HMX,X1 EX TWBI-1,X10 . TEST ALTERNATE IBANK STORAGE LIMITS SP1 LOK ILBJ5H . ILBJ5 EQUF ILBJ5H-HMX,X1 AND A3,(07777,0) . EXTRACT BDI TNZ A4 SZ LOK . NO IGDM FROM DEACTIVATING BANK TNZ A4 SZ X10 TZ A4 J ILBJACK ILBJACKH . ILBJACK EQUF ILBJACKH-HMX,X1 LBJ A3,ILBJACQ . MUST BE AT ILBJ5 FOR CTNG6 CODE ILBJACQH . ILBJACQ EQUF ILBJACQH-HMX,X1 TOP A3,BIT+34 S,H1 A1,BDIS,X9 . PUT INTO BDIS TABLE TEP A3,BIT+34 S,H2 A1,BDIS,X9 SZ RELLIM+1 J ILMJ . LMJ CODE WILL FINISH UP ILPDH . ILPD EQUF ILPDH-HMX,X1 SZ QW . CLEAR QUARTER-WORD MODE FLAG SZ QWSIM . zero out third wordn TOP A0,BIT+3 . IS QUARTER WORD MODE REQUESTED SP1 QWSIM tep a0,BIT+3 SP1 Qw .set quarter word mode . LPD 0,A0 . SET THE PSR BITS S A0,NSOD$ . SAVE TO RESTORE WHEN CONTROL RETURNS R OR,U A0,010 . FORCE QUARTER WORD LPD 0,A1 J 0,X8 . BACK TO MAIN CODE ISPDH . ISPD EQUF ISPDH-HMX,X1 SPD A3 . GET BITS . L R2,BIT+4 . SET UP ONE-BIT MASK . MLU A3,BIT+3,X10 . SET BIT 4 ID X1=1, OTHERWISE CLEAR . S,H2 A4,COREB . STORE BITS and,u a3,027 . All but quarter word bit l a3,a4 l,U A4,0 TZ QW . See if snoopy is emulating quarter wo l,U a4,1 lssl a4,3 OR A3,A4 s,H2 a4,coreb J 0,X8 . TSJZPH . TSJZP EQUF TSJZPH-HMX,X1 L A3,COREBA . GET ADDRESS OF TEST AND SET TS 0,A3 J 0,X8 . TSSJZPH . TSSJZP EQUF TSSJZPH-HMX,X1 L A3,COREBA . GET ADDRESS OF TSS TSS 0,A3 J 0,X8 . TCSJZPH . TCSJZP EQUF TCSJZPH-HMX,X1 L A3,COREBA . GET ADDRESS FOR TCS TCS 0,A3 J 0,X8 . . LRSQH . LRSQ EQUF LRSQH-HMX,X1 . NOW SAVE FOR A BIT ALL OF SNOOPY'S REGISTERS S A0,SAVEA0 L A0,(SRSFORM 0,16,0,64,0,0,0,0) SRS A0,SNOTM+0100 . SAVE SNOOPY R REGISTERS L A0,(SRSFORM 0,32,0,0,0,0,0,0) SRS A0,SNOTM . SAVE X AND A REGISTERS L A0,SAVEA0 . NOW SAVE SNOOPYS A0 S A0,SNOTM+12 S A2,USRLRS . CONTAINS USER LRS INSTRUCTION LMJ X8,DUMPX . EDIT USER X REGISTERS LMJ X8,DUMPA . EDIT USER A REGISTERS LMJ X8,DUMPR . EDIT USER R REGISTERS . NEXT ALL USERS REGISTERS ARE RELOADED FROM SNOOPY STORAGE L A0,(SRSFORM 0,16,0,64,0,0,0,0) LRS A0,REGSAVE+0100 . RESTORE R REGISTERS L A0,(SRSFORM 0,32,0,0,0,0,0,0) LRS A0,REGSAVE . RESTORE A AND X REGISTERS USRLRSH . USRLRS EQUF USRLRSH-HMX,X1 LRS A0,SNOTM . NOW RESTORE USER REGISTERS TO SNOOPY STORAGE S A0,SAVEA0 L A0,(SRSFORM 0,16,0,64,0,0,0,0) SRS A0,REGSAVE+0100 . SAVE R REGISTERS L A0,(SRSFORM 0,32,0,0,0,0,0,0) SRS A0,REGSAVE L A0,SAVEA0 S A0,REGSAVE+12 . NOW RESTORE SNOOPY'S REGISTERS FROM TEMPROARY REGISTER L A0,(SRSFORM 0,16,0,64,0,0,0,0) LRS A0,SNOTM+0100 L A0,(SRSFORM 0,32,0,0,0,0,0,0) LRS A0,SNOTM LMJ X8,DUMPX . DUMP NEW X REGISTERS LMJ X8,DUMPA . DUMP NEW A REGISTERS LMJ X8,DUMPR . DUMP NEW R REGISTERS J INSTR . GO GET NEXT INSTRUCTION SRSQH . SRSQ EQUF SRSQH-HMX,X1 . THIS SECTION PROCESSES THE SRS INSTRUCTION S A0,SAVEA0 . SAVE SNOOPY'S REGSTER FOR A BIT S A2,SRSIST SAVE USERS SRS INSTRUCTIONS L A0,EFFAD . GET CORE LOCATION WHERE REGISTERS WILL DS A1,ESAVE S A3,ESAVE+2 . BE SAVED SO THAT THE AREA CAN BE DISPLAYED BEFORE BEING ALTERED S,H2 A0,SRSDUMP AND A2,MSK+5 . EXTRACT A FIELD SSL A3,18 L A0,CONTM+A0,A3 . GET REGISTER DEFINING SRS SZ A1 SSL A0,9 AND,U A0,0777 . EXTRACT COUNT FIELD SSL A0,18 A A0,A1 . TOTAL COUNT OF SRS INSTRUCTION S,H1 A0,SRSDUMP L A1,SRSDUMP S A1,GADUMP LMJ X8,DUMPG . EDIT AREA WHERE REGISTERS WIL BE SAVED . NOW SAVE SNOOPYS REGISTERS FOR A BIT DL A1,ESAVE L A3,ESAVE+2 L A0,(SRSFORM 0,16,0,64,0,0,0,0) SRS A0,SNOTM+0100 . SAVE REGISTERS L A0,(SRSFORM 0,32,0,0,0,0,0,0) SRS A0,SNOTM . SAVE X AND A REGISTERS L A0,SAVEA0 S A0,SNOTM+A0 . NOW RESTORE USERS REGISTERS L A0,(SRSFORM 0,16,0,64,0,0,0,0) LRS A0,REGSAVE+0100 . RESTORE R REGISTERS L A0,(SRSFORM 0,32,0,0,0,0,0,0) LRS A0,REGSAVE . RESTORE A AND X REGISTERS SRSISTH . SRSIST EQUF SRSISTH-HMX,X1 . ACTUAL USER SRS INSTRUCTION STORED HERE SRS A0,SNOTM . NOW RESTORE SNOOPYS REGISTERS L A0,(SRSFORM 0,16,0,64,0,0,0,0) LRS A0,SNOTM+0100 . RESTORE R REGISTERS L A0,(SRSFORM 0,32,0,0,0,0,0,0) LRS A0,SNOTM . RESTORE A AND X REGISTERS L A1,SRSDUMP S A1,GADUMP LMJ X8,DUMPG J INSTR . GO DO NEXT INSTRUCTION . BBREGLDH . BBREGLD EQUF BBREGLDH-HMX,X1 . THIS SECTION LOADS THE REGISTERS FOR THE BIT AND EDIT INSTUCTIONS . IT ALSO STORES THE CURRENT CONTENTS INTO THE JAZZ TABLE S X6,SAVEX6 S X7,SAVEX7 . SAVE SNOOPY'S REGISTERS L A0,BBSF . GET SUB FUNCTION OF BIT FUNCTIN TNE,U A0,015 J BBLBDE . BYTE TO DECIMAL TNE,U A0,016 J BBLBDE . DECIMAL TO BYTE LDCONXH . LDCONX EQUF LDCONXH-HMX,X1 L,U A0,0 . INDEX REGISTER FOR CONTROL JZ A0,LDTRX . NOT USED ON ALL INSTRUCTIONS L A1,(-1,'X@@') A,H2 A1,JTAB,A0 S A1,0,*X4 . SAVE NAME OF REGISTER L X6,CONTM,A0 . GET CURRENT VALUE OF CONTROL REGISTER L,U A1,0,X6 TRA A1 LMJ A0,GDMVSLT L,H2 A0,LDCONX . RESTORE A0 IF LMJ OCCURRED S X6,0,*X4 L,U A1,CONTM,A0 S A1,0,*X4 . LDTRXH . LDTRX EQUF LDTRXH-HMX,X1 L,U A0,0 . INDEX REGISTER USED FOR TRANSLATION JZ A0,LDINX . NOT USED IN ALL INSTRUCTIONS L A1,(-1,'X@@') A,H2 A1,JTAB,A0 . GET NAME OF REGISTER S A1,0,*X4 . SAVE NAME OF REGISTER L X7,CONTM,A0 . GET CURRENT VALUE OF REGISTER L,U A1,0,X7 TRA A1 LMJ A0,GDMVSLT L,H2 A0,LDTRX . RESTORE A0 IF LMJ OCCURRED S X7,0,*X4 L,U A1,CONTM,A0 . GET LOCATION OF REGISTER S A1,0,*X4 . LDINXH . LDINX EQUF LDINXH-HMX,X1 L,U A0,0 . INDEX REGISTER FOR INPUT JZ A0,LDOUX LX X5,CONTM,A0 L,U A1,0,X5 TRA A1 LMJ A0,GDMVSLT L,H2 A0,LDINX . RESTORE A0 IF LMJ OCCURRED TNZ BBSO . IF ZERO SAVE FIRST VALUE S X5,SAVESO L A1,(-1,'X@@') A,H2 A1,JTAB,A0 S A1,0,*X4 S X5,0,*X4 . SAVE INITIAL CONTENTS L,U A1,CONTM,A0 . GET LOCATION OF REGISTER S A1,0,*X4 . LDOUXH . LDOUX EQUF LDOUXH-HMX,X1 L,U A0,0 . REGISTER USED FOR DESTINATION L A1,(-1,'X@@') A,H2 A1,JTAB,A0 S A1,0,*X4 . SAVE NAME OF REGISTER LX X9,CONTM,A0 . GET CURRENT VALUE OF REGISTER L,U A1,0,X9 TRA A1 LMJ A0,GDMVSLT L,H2 A0,LDOUX . RESTORE A0 IF LMJ TOOK PLACE TNZ BBSO S X9,SAVEDS . SAVE ORIGINAL VALUE OF DESTINATION SP1 BBSO . PREVENT FURTHER SAVES S X9,0,*X4 . SAVE VALUE OF REGISTER L,U A1,CONTM,A0 . LOCATION OF REGISTER S A1,0,*X4 TNZ,H2 LDCONX J BBREGL4 S X6,0,X4 . LOCATION TO EDIT SZ,H1 0,*X4 L A1,0,X6 . INITIAL VALUE TO EIDT S A1,0,*X4 S X6,0,X4 SZ,H1 0,*X4 BBREGL4H . BBREGL4 EQUF BBREGL4H-HMX,X1 TNZ,H2 LDTRX J BBREGL5 S X7,0,X4 SZ,H1 0,*X4 L A1,0,X7 . INITIAL VALUE TO EDIT S A1,0,*X4 S X7,0,X4 SZ,H1 0,*X4 BBREGL5H . BBREGL5 EQUF BBREGL5H-HMX,X1 TNZ,H2 LDINX J BBREGL6 L A3,X5 L R2,BBDISLG . NUMBER OF WORDS TO DISPLAY BBREGL5AH . BBREGL5A EQUF BBREGL5AH-HMX,X1 S A3,0,X4 SZ,H1 0,*X4 L A1,0,A3 . INITIAL VALUE FOR PRINTING S A1,0,*X4 S A3,0,X4 SZ,H1 0,*X4 A,U A3,1 JGD R2,BBREGL5A BBREGL6H . BBREGL6 EQUF BBREGL6H-HMX,X1 TNZ,H2 LDOUX J 0,X8 L A3,X9 L R2,BBDISLG BBREGL6AH . BBREGL6A EQUF BBREGL6AH-HMX,X1 S A3,0,X4 SZ,H1 0,*X4 L A1,0,A3 S A1,0,*X4 . SAVE INITIAL VALUE FOR EDITING S A3,0,X4 SZ,H1 0,*X4 A,U A3,1 JGD R2,BBREGL6A L A0,BBSF TE,U A0,017 . SHOULD FALL THRU TO BBLBDE J 0,X8 . RETURN TO PROGRAM FLOW L,U A0,1,X9 . EDIT THREE LOCATION POINTED AT BY X9 S A0,0,*X4 L A1,0,A0 S A1,0,*X4 S A0,0,*X4 A,U A0,1 . ADVANCE TO THIRD WORD IN OUTPUT STRING S A0,0,*X4 L A1,0,A0 S A1,0,*X4 S A0,0,*X4 L,U A0,1,X6 . ALSO THROW OUT THREE WORDS OF CONTROL S A0,0,*X4 L A1,0,A0 S A1,0,*X4 S A0,0,*X4 A,U A0,1 ADVANCE TO THIRD WORD OF CONTROL STRING S A0,0,*X4 L A1,0,A0 S A1,0,*X4 S A0,0,*X4 L,U A0,017 . RESTORE CONTENTS OF A0 BBLBDEH . BBLBDE EQUF BBLBDEH-HMX,X1 S A7,SAVEA7 S A8,SAVEA8 . SAVE SNOOPY REGISTERS S A9,SAVEA9 . S A10,SAVEA10 TNE,U A0,017 . EDDE J BBLBDEC . NOW ME MODIFY A3 TO POINT AT A7 L A0,A3 AND A0,(0777414,0777777) . EVERYTHING BUT A-FIELD A A1,(0160,0) . ADD A 7 INTO A-REGISTER FIELD S A1,A3 BBLBDECH . BBLBDEC EQUF BBLBDECH-HMX,X1 L A7,BBNREG . NUMBER OF REGISTERS INVOLVED AN,U A7,1 . CORRECT FOR JGD L A0,BBFREG . FIRST A-REGISTER IN CHAIN BBLBDEAH . BBLBDEA EQUF BBLBDEAH-HMX,X1 L A1,(-1,'A@@') A,H2 A1,JTAB,A0 S A1,0,*X4 L A1,CONTM+A0,A0 . GET CURRENT VALUE OF REGISTER S A1,0,*X4 L,U A1,CONTM+A0,A0 . LOCATION OF REGISTER S A1,0,*X4 A,U A0,1 . ADVANCE TO NEXT HIGER REGISTER JGD A7,BBLBDEA L A0,BBSF . GET SUB FUNCTION CODE TE,U A0,017 TNE,U A0,016 J BBLDEB L A0,SAVEA0 . RESTORE A0 J 0,X8 BBLDEBH . BBLDEB EQUF BBLDEBH-HMX,X1 L A1,BBNREG . GET NUMBER OF REGISTER L A0,BBFREG . FIRST REGISTER IN STRING L A7,CONTM+A0,A0 A,U A0,1 AN,U A1,1 JZ A1,BBLDEBA . NO MORE REGISTERS TO LOAD L A8,CONTM+A0,A0 A,U A0,1 AN,U A0,1 JZ A1,BBLDEBA . NO MORE REGISTERS TO LOAD L A9,CONTM+A0,A0 BBLDEBAH . BBLDEBA EQUF BBLDEBAH-HMX,X1 L A0,SAVEA0 J 0,X8 . BBREGSTH . BBREGST EQUF BBREGSTH-HMX,X1 L A3,BBSF . GET SUB FUNCTION OF BIT INSTRUCTION TNE,U A3,015 J BBSBDE . BDE TNE,U A3,016 J BBSDEB . DEB STCONXH . STCONX EQUF STCONXH-HMX,X1 L,U A0,0 . INDEX USED FOR CONTROL TZ A0 . DOES NOT EXIST ON ALL INSTRUCTIONS S X6,CONTM,A0 STTRXH . STTRX EQUF STTRXH-HMX,X1 L,U A0,0 . INDEX USED FOR TRANSLATION TZ A0 . NOT USED ON ALL INSTRUCTIONS S X7,CONTM,A0 STINXH . STINX EQUF STINXH-HMX,X1 L,U A0,0 TE,U A3,010 . BIM TNE,U A3,011 . BIC A,U X5,1 . ADVANCE WORD COUNTER TZ A0 S X5,CONTM,A0 STOUXH . STOUX EQUF STOUXH-HMX,X1 L,U A0,0 TE,U A3,010 . BIM TNE,U A3,011 . BIC A,U X9,1 . ADVANCE WORD COUNTER TZ A0 S X9,CONTM,A0 L X6,SAVEX6 L X7,SAVEX7 TE,U A3,011 . BIC TNE,U A3,013 . BICL J STOUXBI TE,U A3,017 . EDDE FALLS THRU TO BBSBDF J 0,X8 . BBSBDEH . BBSBDE EQUF BBSBDEH-HMX,X1 L A0,BBFREG . FIRST REGISTER IN STRING L A1,BBNREG S A7,CONTM+A0,A0 A,U A0,1 AN,U A1,1 JZ A1,BBSBDEA . RESTORE SNOOPY REGISTERS S A8,CONTM+A0,A0 A,U A0,1 AN,U A1,1 JZ A1,BBSBDEA . RESTORE SNOOPY REGISTERS S A9,CONTM+A0,A0 BBSBDEAH . BBSBDEA EQUF BBSBDEAH-HMX,X1 BBSDEBH . BBSDEB EQUF BBSDEBH-HMX,X1 L A7,SAVEA7 L A8,SAVEA8 L A9,SAVEA9 L A10,SAVEA10 J 0,X8 . STOUXBIH . STOUXBI EQUF STOUXBIH-HMX,X1 TZ CARRY . IF STRINGS ARE EQUAL CONTINUE SEARCHIN J STOUXB2 TZ OVFL J 0,X8 STOUXB2H . STOUXB2 EQUF STOUXB2H-HMX,X1 SZ A15 . PREVENT FURTHER ITERATIONS J 0,X8 . BBINPKTH . BBINPKT EQUF BBINPKTH-HMX,X1 . THIS SECTION INITIALIZES THE PACKET USED BY THE BIT INSTRUCTIONS TZ BBRPT . IF ZERO INIITIALIZE INSTRUCTION J 0,X8 . RETURN S A0,SAVEA0 AND A2,MSK+1 . ISOLATE J FACTOR SSL A3,26 S A3,BBSF . SAVE BIT INSTRUCTION SUBFUNCTION TNE,U A3,010 . BIM SP1 BBNR1 TNE,U A3,011 . BIC SP1 BBNR1 SZ BBSO . WHEN ZERO SAVE ORIGINAL VALUE OF SOURC TE,U A3,015 . BDE TNE,U A3,016 . BED J NOBBPKT . NO PACKET WITH ABOVE TWO INSTRUCTIONS L A0,EFFAD . EFFEECTIVE ADDRESS OF INSTRUCTION DL A0,0,A0 . GET USERS PACKET DS A0,BBPKT . SAVE PACKET FOR MODIFICATION TE,U A3,017 . EDDE IS NOT A REPEAT INSTRUCTION SP1 RIP . SET REPEAT IN PROGRES L,H2 A0,EFFAD S A0,0,*X4 . SET UP FIRST PACKET WORD FOR EDITING L A1,0,A0 . CURRENT VALUE OF FIRST WORD S A1,0,*X4 S A0,0,*X4 . LOCATION OF FIRST WORD A,U A0,1 . POINT AT SECOND WORD OF PACKET S A0,0,*X4 L A1,0,A0 S A1,0,*X4 S A0,0,*X4 . SZ,H2 LDCONX . INITIALIZE CONTROL INDEX SZ,H2 STCONX SZ,H2 LDTRX . INITIALIZE TRANSLATE INDEX SZ,H2 STTRX SZ,H2 STINX SZ,H2 LDINX . L A0,BBPKT SSC A0,18 . ISOLATE DESTINATION FIELD AND,U A0,017 TE,U A3,017 . EDDE S,H2 A1,LDOUX TE,U A3,017 . EDDE S,H2 A1,STOUX TNE,U A3,017 S,H2 A1,LDCONX TNE,U A3,017 S,H2 A1,STCONX AND A0,(0777777,0777760) . INSTRUCTION EXCEPT DESTINATION FIELD TE,U A3,017 A,U A1,9 . FORCE X9 AS DESTINATION INDEX TNE,U A3,017 . EDDE A,U A1,6 . CONTROL FIELD FOR EDDE SSC A1,18 S A1,BBPKT TE,U A3,012 . BMTC HAS TWO EXTRA FIELDS J NOCONXX . NO CONTROL FIELD L A0,BBPKT SSC A0,22 . EXTRACT CONTROL FIELD AND,U A0,017 S,H2 A1,LDCONX S,H2 A1,STCONX JZ A1,NOCONXX AND A0,(0777777,0777760) . ALL BUT CONTROL FIELD A,U A1,X6 . FORCE USE OF X6 SSC A1,14 S A1,BBPKT NOCONXXH . NOCONXX EQUF NOCONXXH-HMX,X1 . L A0,BBPKT+1 SSC A0,18 . GET SOURCE FIELD AND,U A0,017 TE,U A3,017 . EDDE S,H2 A1,LDINX TE,U A3,017 . EDDE S,H2 A1,STINX TNE,U A3,017 . DESTINATION FIELD FOR EDDE S,H2 A1,LDOUX TNE,U A3,017 . S,H2 A1,STOUX AND A0,(0777777,0777760) . ALL BUT SOURCE FIELD TE,U A3,017 A,U A1,X5 . FORCE USE OF X5 TNE,U A3,017 A,U A1,X9 . DESTINATION FIELD FOR EDDE SSC A1,18 S A1,BBPKT+1 TNE,U A3,017 J BBINED . FINISH INITIALIZING EDDE INSTRUCTION TE,U A3,012 . BMTC HAS A TRANSLATE FIELD J NOTRAX L A0,BBPKT+1 SSC A0,22 . EXTRACT TRANSLATE FIELD AND,U A0,017 S,H2 A1,LDTRX S,H2 A1,STTRX JZ A1,NOTRAX AND A0,(0777777,0777760) A,U A1,X7 . FORCE X7 FOR TRANSLATE SSC A1,14 S A1,BBPKT+1 NOTRAXH . NOTRAX EQUF NOTRAXH-HMX,X1 L A0,SAVEA0 J 0,X8 . NOBBPKTH . PROCESS BDE AND BED HERE NOBBPKT EQUF NOBBPKTH-HMX,X1 AND A2,MSK+5 . EXTRACT A FIELD SSL A3,22 L A0,CONTM+A0,A3 AND,U A0,037 . GET FIVE BITS FOR DC FIELD S A1,BBDC . SAVE DIGIT COUNT FIELD SSC A0,11 AND,U A0,3 S A1,BBNREG . SAVE NUMBER OF REGISTERS SSC A0,6 AND,U A0,1 . EXTRACT CF BIT S A1,BBCFM . SAVE CHARACTER FORMAT FIELD SSC A0,5 AND,U A0,017 . EXTRACT STARTING REGISTER NUMBER S A1,BBFREG L A0,BBDC . GET DIGIT COUNT DSL A0,36 . SET UP FOR DIVIDE TZ BBCFM . ZERO IMPLIES ASCII DI,U A0,4 . NIN 4 BIT GROUPS PER WORD TNZ BBCFM . NONZERO IMPLIES EXTERNAL COMP 3 DATA DI,U A0,9 . FOUR NINE BIT GROUPS PER WORD TZ A1 A,U A0,1 . ADD ONE TO REMAINDER FOR WORD COUNT AN,U A0,1 . ADJUST FOR LATER JGD S A0,BBNUSR . NUMBER OF U FIELD CELLS . A0 NOW CONTAINS NUMBER OF WORDS OF NON-REGISTER TO EDIT L A0,SAVEA0 . RESTORE A0 J 0,X8 . BBINEDH . BBINED EQUF BBINEDH-HMX,X1 L A0,BBPKT SSL A0,24 . GET DIGIT COUNT FIELD AND,U A0,037 S A1,BBDC . SAVE DIGIT COUNT FIELD SSL A0,10 . GET NUMBER OF REGISTERS FIELD S A0,BBNREG L A0,BBDC . NUMBER OF DIGITS A,U A0,3 . APPROXIMATES NUMBER OF INSERTED CHARA DSL A0,36 DI,U A0,9 TZ A1 A,U A0,1 CORRECT FOR REMAINDER AN,U A0,1 . CORRECT FOR JGD S A0,BBNUSR . NUMBER OF DESTINATION CELLS SZ BBDC . PREVENT LOAD AT NRPTK AND A2,MSK+5 , EXTRACT A-FIELD SSL A3,22 S A3,BBFREG . SAVE STARTING REGISTER NUMBER L A0,SAVEA0 . RESTORE A0 J 0,X8 . BBSRPH . BBSRP EQUF BBSRPH-HMX,X1 L A3,BBSF . GET BIT SUBFUNCTION TG,U A3,015 . 015,016 AND 017 ARE NOT REPEAT INSTRUC J XQT6 TZ BBRPT . IF ZERO BIT REPEAT HAS NOT STARTED J BBSRP2 L A15,RPTC . GET VALUE OF REPEAT COUNT TE,U A3,011 TNE,U A3,010 . BIM J BBSRPS . SET UP SHORT FORM BBSRP3H . BBSRP3 EQUF BBSRP3H-HMX,X1 JZ A15,BBSRP6 . SKIP INSTRUCTION IF BIT COUNT ZERO SP1 BBRPT . SHOW THAT BIT INSTRUCTION IN PROCESS BBSRP2H . BBSRP2 EQUF BBSRP2H-HMX,X1 L A0,A15 . GET CURRENT BIT COUNT JZ A15,BBSRP5 . GO TO NEXT INSTRUCTION IF COUNT IS ZER S A15,EDLPCT . SAVE CURRENT VALUE FOR EDITING TNE,U A3,012 . BMTC J BBSRP2B TG,U A0,37 L,U A0,36 . BIT COUNT FOR THIS SECTION BBSRP2RH . BBSRP2R EQUF BBSRP2RH-HMX,X1 L R1,A0 AN A15,A0 TE,U A3,011 . BIC TNE,U A3,010 . BIM J BBSRP4 J XQT6 BBSRP4H . BBSRP4 EQUF BBSRP4H-HMX,X1 L A1,BBPKT+1 . BIT COUNT IS IN UPER 14 BITS LSSL A1,14 SSL A1,14 SSC A1,22 A A1,A0 . ADD BIT COUNT FOR THIS SECTION SSC A1,14 S A1,BBPKT+1 J XQT6 . BBSRPSH . BBSRPS EQUF BBSRPSH-HMX,X1 L A15,BBPKT+1 . GET SHORT FORM OF BIT COUNT LSSL A15,3 . REMOVE UPPER 3 BITS SSL A15,25 J BBSRP3 . BBSRP5H . BBSRP5 EQUF BBSRP5H-HMX,X1 L A3,BBSF . SUB FUNCTION CODE TNE,U A3,015 . BED J XQT8J TNE,U A3,016 . DEB J XQT8J LX,U X2,1,X2 . ADVANCE P REGISTER SINCE RIP TE,U A3,010 TNE,U A3,011 J BBSRP5A J INSLK BBSRP5AH . BBSRP5A EQUF BBSRP5AH-HMX,X1 L A0,LDINX L A1,SAVESO . ORIGINAL VALUE OF SOURCE INDEX S A1,CONTM,A0 . RESTORE ORIGINAL VALUE L A0,LDOUX L A1,SAVEDS . ORIGINAL VALUE OF DESTINATION S A1,CONTM,A0 J INSLK . BBSRP6H . BBSRP6 EQUF BBSRP6H-HMX,X1 LX,U X2,1,X2 ADVANCE P COUNTER J INSLK . BBSRP2BH . BBSRP2B EQUF BBSRP2BH-HMX,X1 . AT THIS POINT THE CONTROL STRING FOR THE BMTC INSTRUCTION . IS INTERPRETED SO THAT R1 CAN BE SET TO A BIT COUNT THAT . WILL NOT INTERRUP IN THE MIDST OF AN EDITING FUNCTION L,H2 A1,LDCONX . USER CONTROL REGISTER L A1,CONTM,A1 . CURRENT VALUE OF CONTROL REGISTER DS A2,R3 . SAVE TWO REGISTERS SZ A4 . USED TO COUNT TOTAL CHARACTERS L,U R2,3 . LOOK AT FOUR CONTROL GROUPS BBSRP2CH . BBSRP2C EQUF BBSRP2CH-HMX,X1 L,U X9,BMTCFC . FUNCTION CONTROL CHARACTER L,U R1,9 BIML 1,X9 L,U A2,BMTCFC L A2,0,A2 SZ A3 DSL A2,33 . SEPARATE FUNCTION AND COUNT SSL A3,30 . SHIFT COUNT TO LOWER S BITS L,U R4,9 EX BBMCEXA,A2 . ACCUMULATE CHRACTER COUNT MSI,U A3,9 . CONVERT NUMBER OF CHARACTERS TO BITS EX BBMCEXB,A2 . ADVANCE IN FUNCTION STRING JGD R2,BBSRP2C L A1,BBPKT LSSL A1,6 SSL A1,32 . EXTRACT DESTINATION CHARACTER SIZE MSI A1,A4 . BITS REQUIRED FOR THIS GROUP AU,U A1,1 TG A0,A2 L A0,A1 DSL A1,36 DI,U A1,36 TNZ A2 . TEST FOR A REMAINDER A,U A1,1 . NUMBER OF WORDS OF OUTPUT TO DISPLAY S A1,BBDISLG . SAVE DISPLAY LENGTH J BBSRP2R EDITORH . EDITOR EQUF EDITORH-HMX,X1 S X8,EDITORQ TZ NOUT LMJ X8,EDIT . FORCE OUT LAST LINE L,H1 A0,EDSW1 SZ NOUT SZ,H2 EDSW2 . INITIALIZE SWITCHES S A0,EDSW1 S A2,SAVEIN . SAVE CURRENT INSTRUCTION S X3,SAVEFI . INDEX INTO INSTRUCTION TABLES S X2,SAVEP . SAVE INSTRUCTION COUNTER L X4,(1,JAZZ) DS A2,ESAVE DS A4,ESAVE+2 LMJ X8,BLANK . ERASE LINE L,U X9,LINE LMJ X8,RELINS . RELATIVISE ADDRESS L,U A2,0,X4 DL A2,ESAVE DL A4,ESAVE+2 . AND A2,MSK+5 TEP A5,JGDI AND A2,MSK+6 SSL A3,22 LX X7,A3 L,U A3,ETAB A A3,X3 L A3,0,A3 TEP A5,JGDI . TEST FOR JGD INSTRUCTION J EDITOJ . USE SPECIAL CODE FOR JGD AND A3,(EDS 0 'X','A','R') JZ A4,EDIT4 J EDIT1 EDITOJH . EDITOJ EQUF EDITOJH-HMX,X1 LA,U A0,0,X7 TLE,U A0,RFUDX1 TLE,U A0,RFUDX2 J EDIT01 LA A0,RFUDX3 AA A0,('X@@') J EDIT03 EDIT01H . EDIT01 EQUF EDIT01H-HMX,X1 TLE,U A0,RFUDA1 TLE,U A0,RFUDA2 J EDIT02 LA A0,RFUDA3 AA A0,('A@@') J EDIT03 EDIT02H . EDIT02 EQUF EDIT02H-HMX,X1 TLE,U A0,RFUDR1 TLE,U A0,RFUDR2 J EDIT03 L A0,RFUDR3 AA A0,('R@@') EDIT03H . EDIT03 EQUF EDIT03H-HMX,X1 SA A0,0,*X4 . PLACE IN JAZZ TABLE LA A4,CONTM,X7 SA A4,0,*X4 . ADD VALUE INTO JAZZ TABLE LA,U A4,CONTM,X7 SA A4,0,*X4 J EDIT4 EDIT1H . EDIT1 EQUF EDIT1H-HMX,X1 TOP A3,AFLD J EDIT3 LX,U X11,0 TEP A3,AFLD2 LX,U X11,1 TEP A3,AFLD3 LX,U X11,2 EDIT2H . EDIT2 EQUF EDIT2H-HMX,X1 L A4,JTAB,X7 AA A4,('A@@') . NAME OF REGISTER SA A4,0,*X4 LA A4,ARG1 . VALUE OF OPERAND (MEMORY LOCATION) SA A4,0,*X4 LA,U A4,ARG1 . LOCATION OF OPERAND SA A4,0,*X4 AX,U X7,1 JGD X11,EDIT2 . LOOP FOR MULTIPLE A REGISTERS J EDIT4 EDIT3H . EDIT3 EQUF EDIT3H-HMX,X1 LA A4,JTAB,X7 TOP A3,XFLD J EDIT3A AA A4,('X@@') TLEM,U X7,A0 J EDIT3A L A4,('A@@') A A4,JTAB-A0,X7 EDIT3AH . EDIT3A EQUF EDIT3AH-HMX,X1 TEP A3,RFLD AA A4,('R@@') SA A4,0,*X4 TEP A3,XFLD LA A4,XRG1 TEP A3,RFLD LA A4,RRG1 SA A4,0,*X4 TEP A3,XFLD LA,U A4,XRG1 TEP A3,RFLD LA,U A4,RRG1 SA A4,0,*X4 EDIT4H . EDIT4 EQUF EDIT4H-HMX,X1 AND A2,MSK+2 JZ A3,EDIT5 SX X4,KLUDGE SSL A3,18 LX X7,A3 LA A4,('X@@') TLEM,U X7,A0 J EDIT4A L A4,('A@@') AA A4,JTAB-A0,X7 J EDIT4B EDIT4AH . EDIT4A EQUF EDIT4AH-HMX,X1 AA A4,JTAB,X7 EDIT4BH . EDIT4B EQUF EDIT4BH-HMX,X1 SA A4,0,*X4 LA A4,XRG1 SA A4,0,*X4 LA,U A4,XRG1 SA A4,0,*X4 EDIT5H . EDIT5 EQUF EDIT5H-HMX,X1 TOP A5,REPEAT J EDIT6 LA A4,(1,'R1 ') SA A4,0,*X4 LA A4,EDLPCT SA A4,0,*X4 LA,U A4,EDLPCT SA A4,0,*X4 EDIT6H . EDIT6 EQUF EDIT6H-HMX,X1 L,U X8,ETAB A X8,X3 L A4,0,X8 TOP A4,MKS J EDIT7 LA A4,(1,'R2 ') SA A4,0,*X4 LA A4,MSKR SA A4,0,*X4 LA,U A4,MSKR SA A4,0,*X4 EDIT7H . EDIT7 EQUF EDIT7H-HMX,X1 SP1 NOUT SP1 TRAP L X8,EDITORQ J 0,X8 . RETURN TO CALLING PROGRAM EDITH . EDIT EQUF EDITH-HMX,X1 . PRINT THE RESULT OF JUST TRACED INSTRUCTION S X8,EDITQ . SAVE RETURN ADDRESS DS A2,ESAVE DS A4,ESAVE+2 S A15,ESAVE+4 LMJ X8,BLANK . BLANK THE LINE IMAGE L,U X9,LINE . INITIALIZE DESTINATION INDEX INC ICOUNTP . INCREMENT NUMBER OF PRINTED INSTRUCTIO NOP . CODE COMES HERE IF ICOUNTP IS ZERO L A0,(' ') TZ EEX1 L A0,(' EX: ') TZ EIND1 L A0,('IND: ') TZ ERPT1 L A0,('REP: ') L,U A1,6 LMJ X8,EF1 . INSERT CHARACTERS IN A0 L A0,RELPR . EDIT THE P REGISTER LA,U A1,6 LMJ X8,EO2 . CONVERT TO OCTAL L,U A0,12 . NUMBER OF BITS IN 2 COLUMNS BN X9,A0 . SKIP TWO COLUMNS L,U A0,' ' TZ ESKIP L,U A0,'S' TZ EJUMP L,U A0,'J' LMJ X8,IC1 L,U A0,18 BN X9,A0 . SKIP THREE COLUMNS L X11,SAVEFI . X11 IS FUNCTION INDEX A,U X11,ETAB L A15,0,X11 . DESCRIPTOR FOR INSTRUCTION L,U A1,4 L A0,A15 SSL A0,12 . RIGHT JUSTIFY CHARACTER STRING LMJ X8,EF4 . INSERT CHARACTERS IN A0 L A4,SAVEIN . COPY OF INSTRUCTION TOP A15,JFLD . DO WE HAVE A J-DESIGATOR J EDT1 AND A4,MSK+1 JZ A5,EDT1 . DO NOT BOTHER IF ZERO LA,U A0,',' . INSERT CHARACTER IN A0 LMJ X8,IC1 SSL A5,26 L A1,A5 L A0,JTAB,A1 . MNENOMIC FOR J-FACTOR TZ QW L A0,JTAB1,A1 SSL A0,18 . RIGHT JUSTIFY THREE CHARACTERS L,U A1,3 LMJ X8,EF4 . INSERT 3 CHARACTERS IN A0 EDT1H . EDT1 EQUF EDT1H-HMX,X1 L,U X9,LINE+4 . SET TO COLUMN 24 L,U A0,24 . NUMBER OF BITS IN FOUR COLUMNS BN X9,A0 . SET TO COLUMN 28 EDT1AH . EDT1A EQUF EDT1AH-HMX,X1 TEP A15,FLD . DO WE TAKE AN A-FIELD J EDT1AJ . YES L,U A0,ETAB+JGDX TNE A15,0,A0 J EJGD . EDIT AS JGD J EDT2 . NO A FIELD EDT1AJH . EDT1AJ EQUF EDT1AJH-HMX,X1 LA,U A0,0 TEP A15,AFLD . A REGISTER L A0,('A@@') . YES TEP A15,XFLD . X REGISTER L A0,('X@@') . YES TEP A15,RFLD . R REGISTER L A0,('R@@') . YES AND A4,MSK+5 . GET VALUE IN A FIELD SSL A5,22 L A2,A5 TNE A0,('X@@') TLE,U A2,A0 J EDT1AY L A0,('A@@') AN,U A2,A0 . SUBTRACT 12 ... VALUE OF A0 EDT1AYH . EDT1AY EQUF EDT1AYH-HMX,X1 AA,H2 A0,JTAB,A2 LA,U A1,3 LMJ X8,EF4 . INSERT CHARACTERS IN A0 J EDT2A EJGDH . EJGD EQUF EJGDH-HMX,X1 AND A4,MSK+6 L A0,A5 SSL A0,22 TLE,U A0,RFUDX1 TLE,U A0,RFUDX2 J EJGD1 L A0,RFUDX3 AA A0,('X@@') J EJGD3 EJGD1H . EJGD1 EQUF EJGD1H-HMX,X1 TLE,U A0,RFUDA1 TLE,U A0,RFUDA2 J EJGD2 L A0,RFUDA3 AA A0,('A@@') J EJGD3 EJGD2H . EJGD2 EQUF EJGD2H-HMX,X1 TLE,U A0,RFUDR1 TLE,U A0,RFUDR2 J EJGD4 LA A0,RFUDR3 AA A0,('R@@') EJGD3H . EJGD3 EQUF EJGD3H-HMX,X1 LA,U A1,3 LMJ X8,EF4 . EDIT CONTENTS OF A0 TZ,U 0 EJGD4H . EJGD4 EQUF EJGD4H-HMX,X1 LMJ X8,EO1 EDT2AH . EDT2A EQUF EDT2AH-HMX,X1 LA,U A0,',' LMJ X8,IC1 . INSERT ONE CHARACTER EDT2H . EDT2 EQUF EDT2H-HMX,X1 TNZ USYM J EDT21 L A0,USYM SZ USYM L,U A1,ETAB+ERX TE A15,0,A1 J EDT321 AND,U A0,077 . EXTRACT LAST CHARACTER L A2,A1 . SAVE TEST FOR DOLLAR SIGN EDT2VH . EDT2V EQUF EDT2VH-HMX,X1 AND A0,(0770000,0) JNZ A1,EDT2U LSSC A0,6 J EDT2V EDT2UH . EDT2U EQUF EDT2UH-HMX,X1 TNE,U A2,'$' . IS IS A DOLLAR SIGN J EDT321 L,U A1,6 . NUMBER OF CHARACTERS TO EDIT LMJ X8,EF1 L,U A0,'$' . FORCE OUT A DOLLAR LMJ X8,IC1 . INSERT SINGLE CHARACTER J EDT4 EDT21H . EDT21 EQUF EDT21H-HMX,X1 . USYM WAS ZERO L A2,SAVEFI . COPY OF BITS REPRESENTING INSTRUCTION A,U A2,FTAB1 L A2,0,A2 TOP A2,JDES J EDT22 . NO J FACTOR AND A4,(I$ 0,-0,0,-0,0,0) TE A5,(I$ 0,U,0,0,0,0) TNE A5,(I$ 0,XU,0,0,0,0) J EDT35 EDT22H . EDT22 EQUF EDT22H-HMX,X1 TOP,U A4,*0 . INDIRECT ADDRESSING J EDT3 . NO LA,U A0,'*' . YES. THROW IN AN ASTERISK LMJ X8,IC1 . INSERT THE '*' EDT3H . EDT3 EQUF EDT3H-HMX,X1 AND,U A4,1*/16-1 L A0,A5 . BINARY VALUE OF U FIELD L A1,SAVEFI L A2,A1 A,U A2,FTAB1 . ALLOW TABLE TO BE IN HIGH MEMORY L A2,0,A2 TOP A2,ADINS TEP A2,SHIFT J EDT34 AND A4,(I$ 0,0,0,-0,-0,0) TNZ A5 TNE,U A1,0112 J EDT34 TEP A2,JDES AND A4,(I$ 0,-0,0,0,0,0) TG A5,(I$ 0,U,0,0,0,0) J EDT34 TLE,U A0,RFUDX1 TLE,U A0,RFUDX2 J EDT31 LA,H2 A1,RFUDX3 AA A1,('X@@') J EDT33 EDT31H . EDT31 EQUF EDT31H-HMX,X1 TLE,U A0,RFUDA1 TLE,U A0,RFUDA2 J EDT32 LA,H2 A1,RFUDA3 AA A1,('A@@') J EDT33 EDT32H . EDT32 EQUF EDT32H-HMX,X1 TLE,U A0,RFUDR1 TLE,U A0,RFUDR2 J EDT34 LA,H2 A1,RFUDR3 AA A1,('R@@') EDT33H . EDT33 EQUF EDT33H-HMX,X1 DSC A0,18 LA,U A1,3 EDT321H . EDT321 EQUF EDT321H-HMX,X1 L,U A1,6 . NUMBER OF CHARACTERS TO INSERT LMJ X8,EF1 . INSERT CHARACTER IN A0 J EDT4 EDT34H . EDT34 EQUF EDT34H-HMX,X1 AND A4,(I$ 0,0,0,-0,2,0) TOP,U A4,*0 TOP A15,FLD J EDT34Y TNZ,U 0,A0 TNZ A5 EDT34YH . EDT34Y EQUF EDT34YH-HMX,X1 LMJ X8,ECORE JZ A5,EDT4 . IF THE X-FIELD IS ZERO AND THE H-BIT O LA,U A0,',' LMJ X8,IC1 LA,U A0,'*' TEP,U A4,0,*0 LMJ X8,IC1 LA,U A0,'X' TG A5,(A0,0) LA,U A0,'A' L A3,A0 . SAVE FOR FUTURE TEST TE,U A0,'A' TE,U A5,,*0 LMJ X8,IC1 . EDIT THE X FIELD INTO DECIMAL L A0,A5 SSL A5,18 TNE,U A3,'A' AN,U A5,A0 . SUBTRACT VALUE OF A0 L A0,A5 L,H2 A0,JTAB,A0 L,U A1,2 . INSERT RIGHT TWO CHARACTERS IN A0 LMJ X8,EF1 . INSERT CONTENTS OF A0 J EDT4 EDT35H . EDT35 EQUF EDT35H-HMX,X1 LA,H2 A2,SAVEIN TEP A4,BIT+26 LA,XH2 A2,SAVEIN LA,U A0,'-' TP A2 LMJ X8,IC1 . INSERT MINUS SIGN LMA A0,A2 LMJ X8,EO1 EDT4H . EDT4 EQUF EDT4H-HMX,X1 L,U X9,LINE+6 . RESET TO COLUMN 37 L,U A0,30 . SKIP THREE COLUMNS BN X9,A0 . SET TO COLUMN 42 LA A5,X4 . JAZZ INDEX AN,U A5,1 . REMEMBER END OF TABLE LX X4,(1,JAZZ) . RESET TO START OF TABLE EDT5H . EDT5 EQUF EDT5H-HMX,X1 TLE A5,X4 J EDTOUT L A0,0,X4 LA,U A1,0,X4 AN,U A1,JAZZ . COMPUTE RELATIVE POSITION IN TABLE DSL A1,36 DI,U A1,3 LR,U R1,0,A1 L A1,(3,JAZZ) SE A0,0,*A1 J EDT5J AX,U X4,3 . SKIP TO NEXT THREE WORD GROUP J EDT5 EDT5JH . EDT5J EQUF EDT5JH-HMX,X1 L,U A0,12 . NUMBER OF BITS IN 2 COLUMNS BN X9,A0 . SKIP 2 COLUMNS L,H2 A0,0,X4 . EDIT IDENTIFIER L,U A1,3 TZ,H1 0,X4 . IS IT A NAME LMJ X8,EF4 L,U A1,6 . EDIT SIX DIGITS OF ADDRESS TNZ,H1 0,*X4 LMJ X8,EO2 L,U A0,'=' LMJ X8,IC1 . INSERT EQUALS SIGN LMJ X8,TSTLNE . PRINT IF NOT AT LEAST 12 COLUMNS L A4,0,*X4 . GET INITIAL VALUE L A0,A4 LM A1,A4 TG,U A1,01000 J EDT5K L,U A0,'-' TP A4 LMJ X8,IC1 L A0,A4 TP A4 LN A0,A0 EDT5KH . EDT5K EQUF EDT5KH-HMX,X1 LMJ X8,EO1 . EDIT AS OCTAL NUMBER L A3,0,*X4 TNE A4,0,A3 J EDT5 . NO LOOP LA,U A0,'/' LMJ X8,IC1 L,U A0,0,X4 AN,U A0,1 . GET LAST VALUE OF X8 L A0,0,A0 . GET ADDRESS OF VALUE L A4,0,A0 . GET VALUE OF VALUE L A0,A4 LM A1,A4 TG,U A1,01000 J EDT5M L,U A0,'-' TP A4 LMJ X8,IC1 L A0,A4 TP A4 LN A0,A4 EDT5MH EDT5M EQUF EDT5MH-HMX,X1 L,U A2,12 LMJ X8,EO1 . CONVERT VALUE TO OCTAL LMJ X8,TSTLNE . TEST FOR SPACE ON LINE J EDT5 EDTOUTH . EDTOUT EQUF EDTOUTH-HMX,X1 PR$INT LINE,22,1 . PRINT THE LINE DL A2,ESAVE DL A4,ESAVE+2 L A15,ESAVE+4 L X8,EDITQ . RESTORE RETURN ADDRESS J 0,X8 TSTLNEH . TSTLNE EQUF TSTLNEH-HMX,X1 L A0,X9 L,U A1,108 . TEST FOR ADDING 18 COLUMNS BN A0,A1 L,U A0,0,A0 . REMOVE BIT ADDRESS IN INCREMENT FIELD TLE,U A0,LINE+22 J 0,X8 L R2,X8 . SAVE EXIT PR$INT LINE,22,1 . PRINT PARTIAL LINE LMJ X8,BLANK L,U X9,LINE L X8,R2 . RESTORE EXIT J 0,X8 DASHH . DASH EQUF DASHH-HMX,X1 L A2,X8 . SAVE EXIT L,U A0,('- - - ') LA A1,(1,LINE) LR,U R1,22 TZ REMOTE L,U R1,5 BT A1,,*A0 L A0,(0126,LINE) TZ REMOTE LXI,U A0,0105 PR$INT J 0,A2 BLANKH . BLANK EQUF BLANKH-HMX,X1 L,U R1,864 . 24 WORDS OF 36 BITS EACH L,U X9,LINE L,U X5,(050505050505) BIML ABLANKP J 0,X8 . ABLANKH . ABLANK EQUF ABLANKH-HMX,X1 L,U R1,864 . 24 WORDS OF 36 BITS EACH L,U X9,LINE L,U X5,(040040040040) BIML ABLANKP J 0,X8 ABLANKPH . ABLANKP EQUF ABLANKPH-HMX,X1 BMLFRM 0,X9,0,0 BMLFRM 0,X5,0,0 ECOREH . ECORE EQUF ECOREH-HMX,X1 S X8,ECOREX8 . SAVE RETURN POINT TNZ,H1 SYMLOC . J ECORE3 . NO SYMBOL TABLE LA,H2 A1,SYMLOC AH A1,(3,-3) LR,H1 R1,SYMLOC ECORE1H . ECORE1 EQUF ECORE1H-HMX,X1 JGD R1,ECORE2 L,H1 A2,2,A1 . GET POSSIBLE BITS FIELD TEP A2,BIT+1 . IS BIT 1 SET TNZ,H1 3,A1 . YES--IS SIZE < 0 ? J ECORE3 . NO L,H1 R1,3,A1 . LOAD NUMBER OF ENTRIES L,H2 A1,3,A1 . LOAD ADDRESS OF TABLE AH A1,(3,-3) J ECORE1 . START OVER ECORE3H . ECORE3 EQUF ECORE3H-HMX,X1 LMJ X8,EO1 L X8,ECOREX8 . RESTORE EXIT J 0,X8 . RETURN TO CALLED ECORE2H . ECORE2 EQUF ECORE2H-HMX,X1 TLE,H1 A0,3,*A1 TLE,H2 A0,0,A1 J ECORE1 ANA,H2 A0,2,A1 SA A0,R1 TEP,H1 A14,2,A1 . IS 12-CHAR BIT SET J ECORE5 . YES SPECIAL EDIT L A0,1,A1 LA,U A2,6 LMJ X8,EF1 ECORE4H . ECORE4 EQUF ECORE4H-HMX,X1 LMA A0,R1 L X8,ECOREX8 . RESTORE RETURN POINT JZ A0,0,X8 L,U A3,'+' TP R1 L,U A3,'-' LMJ X8,IC1 . INSERT ONE CHARACTER J ECORE3 . EDIT OFFSET IN OCTAL ECORE5H . ECORE5 EQUF ECORE5H-HMX,X1 L,H2 A2,1,A1 . GET ADDRESS OF LONG LABEL L,U A0,0,A2 . ADDRESS OF STRING TO INSERT L,U A2,12 . EDIT 12 CHARACTERS LMJ X8,EF2 J ECORE4 . EDIT OFFSET, IF ANY . ICNTH . ICNT EQUF ICNTH-HMX,X1 S X8,ICNTX . SAVE RETURN POINT LMJ X8,ABLANK IDE A4,ICOUNT . CONVERT INSTRUCTION COUNT TO DECIMAL L,U X9,LINE L,U A0,ICNMSG1 . ' INSTRUCTION COUNT@' L,U A2,25 . MAX LENGTH MESSAGE LMJ X8,EF5 L,U X7,ICNTPK . CONTROL STRONG FOR EDDE EDDE A4,2,X7 . EDIT DECIMAL NUMBER OF INSTRUCTIONS L,U A0,72 . 72 BITS IS 8 COLUMNS BN X9,A0 . SKIP WIDTH OF NUMBER . SLJ MIDMP9 . 'ONE' . +0700020,LINE IDE A4,ICOUNTP . CONVERT INSTRUCTIONS PRINTED L,U A0,ICNMSG2 . ' PRINTED:@' L,U A2,10 LMJ X8,EF5 . SLJ MIDMP9 . 'TWO' . +0700020,LINE L,U X7,ICNTPK . EDIT DECIMAL NUMBER OF INSTRUCTIONS EDDE A4,2,X7 . INTO MESAGE . SLJ MIDMP9 . 'THRE' . +0700020,LINE APR$INT LINE,12,1 AP$RINT LINE,12,1 . FORCE TO SCREEN L X8,ICNTX J 0,X8 . RETURN TO CALLER PRIN$TH . PRIN$T EQUF PRIN$TH-HMX,X1 TZ ALTFIL+1 . SEE IF THERE IS AN ALTERNATE FILE J PR$T1 . THERE IS ER PRINT$ . PRINT DIRECTLY J 0,X8 . RETURN TO CALLER PR$T1H . PR$T1 EQUF PR$T1H-HMX,X1 S A0,ALTFIL . STORE DESCRIPTOR IN PKT TZ ECHO . IS ECHO FLAG SET? ER PRINT$ . YES--PRINT BOTH PLACES L,U A0,ALTFIL . ER PRNTA$ . J 0,X8 . RETURN TO CALLER . APRIN$TH . APRIN$T EQUF APRIN$TH-HMX,X1 TZ ALTFIL+1 . IS AN ALTERNATE FILE IN USE? J APR$T1 . YES ER APRINT$ . DO A DIRECT PRINT J 0,X8 . RETURN TO CALLER APR$T1H . APR$T1 EQUF APR$T1H-HMX,X1 S A0,ALTFIL . STORE THE PRINT PARAM TZ ECHO . IS ECHO SET? ER APRINT$ . YES--PRINT TWICE L,U A0,ALTFIL . ER APRNTA$ . J 0,X8 . RETURN TO CALLER . UPRNTH . UPRNT EQUF UPRNTH-HMX,X1 L A3,USYM . GET THE ER SYMBOL IF ANY JZ A3,UPRNTF . DO FIELDATA PRINT IF NO SYMBOL UPRNTFJH . UPRNTFJ EQUF UPRNTFJH-HMX,X1 LSSC A3,6 . SHIFT CHARACTER TO LOWER A3 AND,U A3,077 . MASK IT INTO A4 JZ A4,UPRNTFJ . REPEAT IF LEADING ZEROS FOUND TE,U A4,'A' . CHECK FOR LEADING A J UPRNTF . NO 'A' -- FIELDATA ER J APRIN$T . WILL RETURN TO CALLER OF UPRNT UPRNTFH . UPRNTF EQUF UPRNTFH-HMX,X1 J PRIN$T . WILL RETURN TO CALLER OF UPRINT . . DUMP A BLOCK OF USER CORE . THIS SECTION USED TO EDIT CONTENTS OF BUFFERS / PACKETS . AND SUCH THAT ARE REFERENCED BY INSTRUCTIONS AND ERS DUMPGH . DUMPG EQUF DUMPGH-HMX,X1 S X8,DUMPXX . SAVE RETURN POINT S X4,DUMP4 . SAVE X4 DUMPGAH . DUMPGA EQUF DUMPGAH-HMX,X1 LMJ X8,BLANK L,U X9,LINE L,H1 A4,GADUMP . REMAINING COUNT JZ A4,DUMPGX TG,U A4,7 . ALLOW 6 COLUMNS L,U A4,6 L,H2 A0,GADUMP . STARTING ADDRESS THIS LINE AU A0,A4 . NEXT STARTING ADDRESS S,H2 A1,GADUMP L,H1 A1,GADUMP AN A1,A4 . DECREMENT COUNT S,H1 A1,GADUMP AN,U A4,1 . DECREMENT FOR JGD LXM,U X4,0,A0 . FIRST ADDRESS ON LNE LXI,U X4,1 L,U A1,6 . EDIT 6 COLUMNS OF ADDRESS LMJ X8,EO2 L,U A0,30 BN X9,A0 . SKIP FIVE COLUMNS DUMPGBH . DUMPGB EQUF DUMPGBH-HMX,X1 L A0,0,*X4 L,U A1,12 LMJ X8,EO2 . EDIT 12 OCTAL DIGITS L,U A0,12 BN X9,A0 . SKIP 2 COLUMNS JGD A4,DUMPGB PR$INT LINE,22,1 J DUMPGA DUMPGXH . DUMPGX EQUF DUMPGXH-HMX,X1 L X4,DUMP4 . RESTORE JAZZ REGISTER L X8,DUMPXX . RESTORE RETURN POINT J 0,X8 . RETURN TO CALLER . . DUMP SIMULATED REGISTERS AND TOGGLE STATUS . DUMPH . DUMP EQUF DUMPH-HMX,X1 S X8,DUMPXX . SAVE RETURN POINT PR$INT DMSG1,LDMSG1,1 LMJ X8,DUMPB LMJ X8,DUMPS LMJ X8,DMPTOG . DUMP CARRY AND OVERFLOW TOGGLE PR$INT DMSG3,LDMSG3,1 LX X11,(1,DUMPT) LR,U R3,LDUMPT-1 DUMP1H . DUMP1 EQUF DUMP1H-HMX,X1 LMJ X8,BLANK L,U X9,LINE L,S1 A0,0,X11 . IDENTIFICATION FOR LINE LMJ X8,IC1 . INSERT ONE CHARACTER L,S2 A0,0,X11 TZ REMOTE . REMOTE AN,U A0,2 . SHORTEN LINE MSI,U A0,6 BN X9,A0 . SKIP BY NUMBER OF BITS IN A0 LR,S3 R2,0,X11 LX,H2 X4,0,*X11 . LOCATION OF REGISTERS LXI,U X4,1 DUMP2H . DUMP2 EQUF DUMP2H-HMX,X1 JGD R2,DUMP3 TZ REMBRK J DUMP2X PR$INT LINE,22,1 JGD R3,DUMP1 DUMP2XH . DUMP2X EQUF DUMP2XH-HMX,X1 L X8,DUMPXX . RESTORE RETURN POINT J 0,X8 DUMP3H . DUMP3 EQUF DUMP3H-HMX,X1 L A0,0,*X4 L,U A1,12 LMJ X8,EO2 . EDIT 12 OCTAL DIGITS L,U A0,12 . NUMBER OF BITS IN 2 COLUNS BN X9,A0 . SKIP 2 COLUMNS J DUMP2 DMPTOGH . DMPTOG EQUF DMPTOGH-HMX,X1 L A2,X8 . SAVE RETURN POINT L A0,('SET ') TNZ CARRY L A0,('CLEAR ') SA A0,DMSG21 L A0,('SET ') TNZ OVFL L A0,('CLEAR ') S A0,DMSG22 PR$INT DMSG2,LDMSG2 J 0,A2 . RETURN TO USER . . DUMP THE X REGISTERS DUMPXH . DUMPX EQUF DUMPXH-HMX,X1 LX X11,(1,DUMPTX) LR,U R3,2 S X8,DUMPXX . SAVE RETURN POINR J DUMP1 . DUMP THE A REGISTERS DUMPAH . DUMPA EQUF DUMPAH-HMX,X1 LX X11,(1,DUMPTA) LR,U R3,3 S X8,DUMPXX J DUMP1 . . DUMP THE R REGISTERS DUMPRH . DUMPR EQUF DUMPRH-HMX,X1 LX X11,(1,DUMPTR) LR,U R3,1 S X8,DUMPXX J DUMP1 . DUMPBXH . DUMPBX EQUF DUMPBXH-HMX,X1 DUMPSXH . DUMPSX EQUF DUMPSXH-HMX,X1 S X8,DUMPSZ . SAVE RETURN POINT L R4,A0 . SAVE BANK/SEGMENT INDEX LMJ X11,0,X11 . CALL ROUTINE J DMPBS1 . EDIT IN OCTAL IF ERROR DS A0,EF2ZZ . SAVE CHARACTER STRING L,U A2,12 . NUMBER OF CHARACTERS TO INSERT L,U A0,EF2ZZ LMJ X8,EF3 L X8,DUMPSZ . RESTORE RETURN POINT J 0,X8 DMPBS1H . DMPBS1 EQUF DMPBS1H-HMX,X1 L A0,R4 . RETRIEVE BANK SEGMENT INDEX LMJ X8,EO1 . EDIT AS VARIABLE LENGTH OCTAL L X8,DUMPSZ . RETRIEVE EXIT J 0,X8 . RETURN . DMPWIH . DMPWI EQUF DMPWIH-HMX,X1 . THIS SECTION ADDS * TO BANKS THAT ARE WRITE PROTECTED L,U A0,'*' TZ A1 LMJ X8,IC1 . INSERT ONE CHARACTER L,U A0,',' LMJ X8,IC1 J 0,X11 . . THE NEXT SECTION DUMPS ACTIVE BANKS DUMPBH . DUMPB EQUF DUMPBH-HMX,X1 S X8,DUMPBY LMJ X8,BLANK L,U X9,LINE . INITIALIZE DESTINATION ROUTINE L,U A0,ACTBNK . 'ACTIVE BANKS:@ ' L,U A2,12 LMJ B8,EF2 L,U A0,12 . NUMBER OF COLUMNS TO SKIP BN X9,A0 . SKIP TWO COLUMNS L,U X11,CBN$ . SET UP TO CALL FOR BANK NAME L,H1 A0,BDIS . MAIN BANK TZ A0 LMJ X8,DUMPBX L A1,WINHMI TZ,H1 BDIS LMJ X11,DMPWI L,U X11,CBN$ L,H2 A0,BDIS . MAIN BANK TZ A0 LMJ X8,DUMPBX L A1,WINHMD TZ,H2 BDIS LMJ X11,DMPWI L,U X11,CBN$ L,H1 A0,BDIS+1 . UTILITY INDEX TZ A0 LMJ X8,DUMPBX L A1,WINHUI TZ,H1 BDIS+1 LMJ X11,DMPWI L,U X11,CBN$ L,H2 A0,BDIS+1 . UTILITY DBANK TZ A0 LMJ X8,DUMPBX L A1,WINHUD TZ,H2 BDIS+2 LMJ X11,DMPWI PR$INT LINE,22,1 L X8,DUMPBY . RESTORE RETURN POINT J 0,X8 . RETURN TO USER . . THE NEXT SECTION DUMPS THE ACTIVE SEGMENT NAMES DUMPSH . DUMPS EQUF DUMPSH-HMX,X1 S X8,DUMPBY . SAVE RETURN POINT S X4,RELSTR . SAVE REGISTR TO USE IN SEGMENT SEARCH LMJ X8,BLANK L,U X9,LINE L,U A0,ACTSEG . ACTIVE SEGS:@ L,U A2,12 LMJ X8,EF2 . INSERT CHARACTES TO @ L,U A0,18 . SKIP 3 COLUMNS BN X9,A0 . SKIP 3 COLUMNS TZ,U SLT$ . TEST IF ANY SEGMENTED J DUMPS1 L,U X11,CSN$ SZ A0 . ZERO A0 FOR MAIN SEGMENT LMJ X8,DUMPSX J DUMPS4 . PRINT AND QUIT DUMPS1H . DUMPS1 EQUF DUMPS1H-HMX,X1 SZ X4 . START AT 0 DUMPS2H . DUMPS2 EQUF DUMPS2H-HMX,X1 L A0,X4 SSL A0,2 L,U X11,CSN$ LMJ X8,DUMPSX TNZ REMBRK . CHECK FOR BREAK KEYIN IN CASE OF LOOP TNZ,H2 SLT$,X4 . MORE SEGS J DUMPS4 . NO -- PRINT AND QUIT L,U A0,'*' LMJ X8,IC1 . INSERT ONE CHARACTER L,U A0,',' . INSERT A COMMA LMJ X8,IC1 L A0,X9 . TEST FOR FULL LINES L,U A1,78 . BITS IN 13 COLUMNS BN A0,A1 . SKIP 13 COLUMNS L,U A0,0,A0 TLE,U A0,22+LINE J DUMPS3 PR$INT LINE,2,1 LMJ X8,BLANK L,U X9,LINE . INITIALIZE DESTINATION INDEX L,U A0,90 . BITS IN 15 COLUMNS BN X9,A0 . SKIP 15 COLUMNS DUMPS3H . DUMPS3 EQUF DUMPS3H-HMX,X1 L,H2 X4,SLT$,X4 . LINK TO ACTIVE SEGMENT J DUMPS2 DUMPS4H . DUMPS4 EQUF DUMPS4H-HMX,X1 PR$INT LINE,22,1 L X4,RELSTR . RESTORE X4 L X8,DUMPBY . RESTORE RETURN POINT J 0,X8 . . OP-CODE INDEX CALCULATOR . INSTRUCTION IS IN A2 (MAY NOT BE ALTERED) . RETURN INDEX IN A3 (MAY USE A0-A1) . OPINDXH . OPINDX EQUF OPINDXH-HMX,X1 AND A2,MSK+0 . GET F AND J FIELDS SSL A3,26 .SHIFT DOWN TLE,U A3,071*/4 . SEE IF J FLD IS FCTN CODE SSL A3,4 . J FLD IS PARTIAL WORD TG,U A3,071*/4 . TEST AGAIN ANA,U A3,071*/4-071 . ADJUST INDEX OPINDTH . OPINDT EQUF OPINDTH-HMX,X1 L,U A1,FTAB2 A A1,A3 TZ,S1 0,A1 . TEST FOR EXTENDED OP-CODE J 0,X8 . RETURN L A0,A3 . MOVE INDEX TO A0 TZ,S2 0,A1 . TEST FOR A-DESIGNATOR AS MINOR FCT J OPINDA . YES AND A2,MSK+1 . NO--MASK J-FIELD TO A3 SSL A3,26 . SHIFT DOWN A,U A0,FTAB2 A,H2 A3,0,A0 . ADD INDEX TO J-FIELD J OPINDT . REPEAT IN CASE A-DES USED ALSO OPINDAH . OPINDA EQUF OPINDAH-HMX,X1 AND A2,MSK+5 . MASK A-FIELD TO A3 SSL A3,22 . SHIFT DOWN A,U A0,FTAB2 TG,S2 A3,0,A0 . IS A-FIELD IN RANGE L,S2 A3,0,A0 . NO--THIS IS IOPR, AVOID FULL FANOUT A,H2 A3,0,A0 . ADD INDEX TO A-FIELD J OPINDT . REPEAT MAIN TEST . . PACKET DUMPING ROUTINE . DPKTAH . DPKTA EQUF DPKTAH-HMX,X1 SA A0,PCONW TW,H2 A6,PCONW . CHECK PACKET FOR STORAGE LIMITS TNW,H2 A8,PCONW J DPKTAJ . OK J 0,X8 . RETURN TO USER DPKTAJH . DPKTAJ EQUF DPKTAJH-HMX,X1 LXI,U A0,1 LA A1,(1,PKTS) LR,S2 R1,PCONW . SLJ MIDMP9 . 'TAJ' . +0700001,PCONWH BT A1,,*A0 J 0,X8 . RETURN TO USER DPKTBH . DPKTB EQUF DPKTBH-HMX,X1 S X8,DUMPSZ . SAVE RETURN POINT S X4,RELSTR . S X3,RELSTR+1 . FREE UP TWO INDEX REGISTERS S X6,SAVEX6 S X7,SAVEX7 TW,H2 A6,PCONW . CHECK PACKET FOR STORAGE LIMITS TNW,H2 A8,PCONW J DPKTBJ J DPKTXT . EXIT SEQUENCE DPKTBJH . DPKTBJ EQUF DPKTBJH-HMX,X1 LMJ X8,BLANK L,U X9,LINE L,U A0,PPACK . ' PACKET:@ ' L,U A2,12 . MAX NUMBER OF CHARACTERS LMJ X8,EF2 . INSERT CHARACTERS UPTO @ L X3,(1,PKTS) . INSERT UPTO @ L,H2 X4,PCONW LXI,U X4,1 LR,S2 R3,PCONW L,H2 A0,PCONW A,S1 A0,PCONW L R2,A0 . USED TO TEST FIRST WORD . SLJ MIDMP9 . 'R2' . +0700020,0146524 J DPKTB2 DPKTB1H . DPKTB1 EQUF DPKTB1H-HMX,X1 JGD R3,DPKTB2J DPKTXTH . DPKTXT EQUF DPKTXTH-HMX,X1 L X8,DUMPSZ L X4,RELSTR L X3,RELSTR+1 L X6,SAVEX6 L X7,SAVEX7 J 0,X8 DPKTB2JH DPKTB2J EQUF DPKTB2JH-HMX,X1 LMJ X8,BLANK . CLEAR IMAGE AREA L,U X9,LINE . INITIALIZE DESTINATION INDEX DPKTB2H . DPKTB2 EQUF DPKTB2H-HMX,X1 L,U A0,72 . SKIP 12 COLUMNS BN X9,A0 LA,U A0,0,X4 LA,U A1,6 TE A0,R2 . TEST FOR FIRST WORD OF PACKET J DPKTB3 LMJ X8,EO2 . EDIT 6 DIGITS OF ADDRESS L,U A0,24 BN X9,A0 L,U A0,0,X3 . ADDRESS OF STRING TO EDIT L,U A2,12 LMJ X8,EF2 . EDIT FIRST TWO WORDS AS CHARACTERS L,U A2,12 L,U A0,FILENM . ' (FILE NAME) ' LMJ X8,EF2 . EDIT 'FILE NAME ' AX,U X3,2 AX,U X4,2 JGD R3,DPKTB4 J DPKTXT DPKTB3H . DPKTB3 EQUF DPKTB3H-HMX,X1 LMJ X8,EO2 . EDIT ENTIRE WORD AS OCTAL L,U A0,36 BN X9,A0 . SKIP 6 COLUMNS L A0,0,X3 . CURRENT WORD OF PACKET TO EDIT L,U A1,12 . MAXIMUM NUMBR OF DIGITS LMJ X8,EO2 L A0,0,*X4 TNE A0,0,*X3 J DPKTB5 L A1,A0 . SAVE A0 THRU IC1 L,U A0,'/' LMJ X8,IC1 . INSERT SINGLE CHARACTER L A0,A1 . RESTORE A1 L,U A1,12 LMJ X8,EO2 . EDIT WHOLE WORD AS OCTAL DPKTB5H . DPKTB5 EQUF DPKTB5H-HMX,X1 TNZ SUBFCT IS THERE A SUBFCTN NAME J DPKTB4 . NO PRINT AND CONTINUE L,U A0,0,X4 . LOAD ADDRESS AN,U A0,1 . SUBTRACT TO GET JUST ONE EDITED TE,H2 A0,SUBFCA . IS IT RIGHT ONE J DPKTB4 . NO PRINT AND CONTINUE L,U A0,FUNCP . ' FUNCTION:@ ' L,U A2,12 LMJ X8,EF2 . EDIT UP TO 12 CHARACTERS L,U A0,SUBFCA L,U A2,12 LMJ X8,EF2 . EDIT SUB FUNCTION NAME SZ SUBFCA . MAKE SURE IT IS ONLY DONE ONCE DPKTB4H . DPKTB4 EQUF DPKTB4H-HMX,X1 PR$INT LINE,22,1 J DPKTB1 . . . EXECUTIVE CALL HANDLERS . ERFH . ERF EQUF ERFH-HMX,X1 L,H1 A0,0,A1 TLE,U A0,04000 . IS THIS A USER ER TLE,U A0,02000 . NO THIS IS A TIP ER J ERFJ . NON-TIP ER J ERTIP . PROCESS TIP ER ERFJH . ERFJ EQUF ERFJH-HMX,X1 SA,H2 A0,ERF1 LMJ X8,JAZZA0 LMJ X8,JAZZA1 L,H2 A3,ERF1 TE,U A3,0120 . A TRMRG$ CAN ONLY BE DONE FROM COMMON ERF1H . ERF1 EQUF ERF1H-HMX,X1 ER $-$ DS A0,CONTM+A0 J DUMMY+1 ERTIPH . ERTIP EQUF ERTIPH-HMX,X1 S,H2 A0,TIPER . STORE ER INDEX L A15,A5 . SAVE A5 CONTENTS L X7,(1,A0) L X9,(-1,'A0 ') L,U R10,1 . PROCESS A REGS AND R REGS L,U R11,5 . LOAD UP 6 A REGISTERS ERTIP1H . ERTIP1 EQUF ERTIP1H-HMX,X1 L X10,CONTM,X7 . GET REGISTER CONTENTS L,U X11,CONTM,X7 . GET REGISTER ADDRESS S X9,0,*X4 . STORE NAME S X10,0,*X4 . STORE CONTENTS S X11,0,*X4 . STORE ADDRESS S X10,0,*X7 . STORE INTO REGISTER A,U X9,0100 . INCREMENT NAME JGD R11,ERTIP1 . COUNT DOWN LXM,U X7,R1 . POINT TO R-REGISTERS LXM,U X9,'R1 ' L,U R11,2 . PROCESS THREE R REGISTERS ERTIP2H . ERTIP2 EQUF ERTIP2H-HMX,X1 L X10,CONTM,X7 . GET REGISTER CONTENTS L,U X11,CONTM,X7 . GET REGISTER ADDRESS S X9,0,*X4 . STORE NAME S X10,0,*X4 . STORE CONTENTS S X11,0,*X4 . STORE ADDRESS S X10,0,*X7 . STORE INTO REGISTER A,U X9,0100 . INCREMENT NAME JGD X9,ERTIP2 TIPERH . TIPER EQUF TIPERH-HMX,X1 ER 0 J TIPNSK . NON-SKIP CASE SP1 ESKIP . TIP ERS CAN RETURN TO ER LOCN + 2 L,U X2,1,X2 . INCREMENT P REGISTER TIPNSKH . TIPNSK EQUF TIPNSKH-HMX,X1 S R1,CONTM+R1 S R2,CONTM+R2 S R3,CONTM+R3 DS A0,CONTM+A0 . PUT THE A REGISTERS BACK DS A2,CONTM+A2 DS A4,CONTM+A4 L A5,A15 . RECOVER A5 J DUMMYJ . FINISH UP . CLIST$H . CODE FALLS THRU TO ERFA0H . ERFA0H . ERFA0 EQUF ERFA0H-HMX,X1 L,H1 A0,0,A1 S,H2 A0,ERFA0E LMJ X8,JAZZA0 ERFA0EH ERFA0E EQUF ERFA0EH-HMX,X1 ER $-$ SA A0,CONTM+A0 J DUMMYJ ERFA1H . ERFA1 EQUF ERFA1H-HMX,X1 L,H1 A0,0,A1 S,H2 A0,ERFA1E LMJ X8,JAZZA1 ERFA1EH . ERFA1E EQUF ERFA1EH-HMX,X1 ER $-$ SA A1,CONTM+A1 J DUMMYJ . SORRYH . SORRY EQUF SORRYH-HMX,X1 LA A0,(0100+LSMSG,SMSGH) PR$INT J LEAVE SMSGH . SMSG EQUF SMSGH-HMX,X1 'SORRY - THIS ER CANNOT BE SIMULATED ' LSMSG EQU $-SMSGH PRINTH . PRINT EQUF PRINTH-HMX,X1 S,H2 A3,PRTER . STORE THE ER INDEX FOR FD OR ASCII LMJ X8,JAZZA0 LMJ X8,DASH L A0,CONTM+A0 L R2,(-0,0,0) MLU A0,(1*/24) L A0,A1 PRTERH . PRTER EQUF PRTERH-HMX,X1 ER PRINT$ TZ ALTFIL+1 . SEE IF WE ARE IN ALT MODE U$PRNT LMJ X8,DASH J DUMMY+1 READH . READ EQUF READH-HMX,X1 S,H2 A3,READER . STORE ER INDEX LMJ X8,JAZZA0 LXI,U A0,READE READERH . READER EQUF READERH-HMX,X1 ER READ$ LXI,U X11,0100,A0 LXM,H2 X11,CONTM+A0 SA A0,CONTM+A0 LMJ X8,DASH L A0,X11 L A1,CONTM+A0 . GET STATUS BITS TOP A1,BIT+31 . DO NOT PRINT IF ITS INFOR U$PRNT LMJ X8,DASH J DUMMYJ READEH . READE EQUF READEH-HMX,X1 LA,H1 A1,CONTM+A0 S,H2 A1,READE1 SA A0,CONTM+A0 READE1H . READE1 EQUF READE1H-HMX,X1 LA,U A0,$-$ J JUMPR . PUNCHH . PUNCH EQUF PUNCHH-HMX,X1 S,H2 A3,PNCHER . STORE ER INDEX LMJ X8,JAZZA0 LMJ X8,DASH LA A0,CONTM+A0 U$PRNT LMJ X8,DASH PUNCH1H . PUNCH1 EQUF PUNCH1H-HMX,X1 L A0,CONTM+A0 PNCHERH . PNCHER EQUF PNCHERH-HMX,X1 ER PUNCH$ SA A0,CONTM+A0 J DUMMYJ . CONTRH CONTR EQUF CONTRH-HMX,X1 LA,H1 A0,0,A1 SA,H2 A0,CONTRE LMJ X8,JAZZA0 LMJ X8,DASH LA A0,CONTM+A0 AA A0,BIT+24 U$PRNT LMJ X8,DASH CONTRIH . CONTRI EQUF CONTRIH-HMX,X1 LA A0,CONTM+A0 CONTREH . CONTRE EQUF CONTREH-HMX,X1 ER $-$ SA A0,CONTM+A0 J DUMMYJ . PRNTAH . PRNTA EQUF PRNTAH-HMX,X1 S,H2 A3,PRNTAE . STORE ER INDEX LMJ X8,JAZZA0 LMJ X8,DASH LA,H2 A0,CONTM+A0 LXI,U A0,010300 LMJ X8,DPKTA LMJ X8,DPKTB LA,H2 A0,PCONW LXI,S3 A0,0,A0 LXM,H2 A0,0,A0 AA A0,BIT+25 U$PRNT LMJ X8,DASH PRNTA1H . PRNTA1 EQUF PRNTAH-HMX,X1 LA A0,CONTM+A0 PRNTAEH . PRNTAE EQUF PRNTAEH-HMX,X1 ER PRNTA$ SA A0,CONTM+A0 J DUMMYJ READAH . READA EQUF READAH-HMX,X1 S,H2 A3,READAE . STORE ER INDEX LMJ X8,JAZZA0 LMJ X8,DASH L A0,CONTM+A0 LXI,U A0,010300 LMJ X8,DPKTA LMJ X8,DPKTB READA1H . READA1 EQUF READA1H-HMX,X1 LA A0,CONTM+A0 L,H1 A1,0,A0 S,H2 A1,READA3 LA,U A1,READA2 S,H1 A1,0,A0 READAEH . READAE EQUF READAEH-HMX,X1 ER READ$ L,H2 A1,CONTM+A0 S A0,CONTM+A0 LA,H2 A0,READA3 SA,H1 A0,0,A1 LXI,H2 A0,CONTM+A0 LXM,H2 A0,0,A1 AA A0,BIT+25 U$PRNT LMJ X8,DASH J DUMMYJ READA2H . READA2 EQUF READA2H-HMX,X1 LA,H2 A1,CONTM+A0 S A0,CONTM+A0 LA,H2 A0,READA3 SA,H1 A0,0,A1 READA3H . READA3 EQUF READA3H-HMX,X1 LA,U A0,$-$ J JUMPR . PNCHAH . PNCHA EQUF PNCHAH-HMX,X1 S,H2 A3,PNCHAE . STORE ER INDEX LMJ X8,JAZZA0 LMJ X8,DASH LA,H2 A0,CONTM+A0 LXI,U A0,010300 LMJ X8,DPKTA LMJ X8,DPKTB LA,H2 A0,PCONW LXI,S3 A0,0,A0 LXM,H2 A0,0,A0 AA A0,BIT+25 U$PRNT LMJ X8,DASH PNCHAIH . PNCHAI EQUF PNCHAIH-HMX,X1 LA A0,CONTM+A0 PNCHAEH . PNCHAE EQUF PNCHAEH-HMX,X1 ER PNCHA$ SA A0,CONTM+A0 J DUMMYJ . CSFH . CSF EQUF CSFH-HMX,X1 S,H2 A3,CSF1 . STORE ER INDEX (FOR WHEN ACSF$ EXISTS) LMJ X8,JAZZA0 LMJ X8,DASH LA A0,CONTM+A0 AA A0,(0100,0) TNZ,H1 CONTM+A0 LXI,U A0,0100+14 U$PRNT LMJ X8,DASH LA A0,CONTM+A0 CSF1H . CSF1 EQUF CSF1H-HMX,X1 ER CSF$ SA A0,CONTM+A0 J DUMMYJ WAITH . WAIT EQUF WAITH-HMX,X1 LA A0,SAVEP AN,U A0,1 L A0,0,A0 AND A0,(017,0) SSL A1,18 TZ A1 LA,H2 A1,CONTM,A1 . AH A0,A1 SA,H2 A0,WAITA WAITAH . WAITA EQUF WAITAH-HMX,X1 TP $-$,A1 ER WAIT$ J DUMMYJ . PFPH . PFP EQUF PFPH-HMX,X1 LA,H1 A0,0,A1 SA,H2 A0,PFP1 L A1,(1,PFPTAB-1) L,U R1,LPFPTB SE,H2 A0,1,*A1 NOP LM A0,CONTM+A0 LXI,H1 A0,0,A1 LMJ X8,DPKTA LMJ X8,JAZZA0 LMJ X8,JAZZA1 LA A2,CONTM+A2 LA A4,(-1,'A2 ') SA A4,0,*X4 S A2,0,*X4 LA,U A4,CONTM+A2 SA A4,0,*X4 PFP1H . PFP1 EQUF PFP1H-HMX,X1 ER $-$ DS A0,CONTM+A0 SA A2,CONTM+A2 LMJ X8,DPKTB J DUMMYJ . TREADH . TREAD EQUF TREADH-HMX,X1 S,H2 A3,TREADE . STORE ER INDE (FOR WHEN ATREAD$ EXISTS LMJ X8,JAZZA0 LMJ X8,DASH LA A0,CONTM+A0 LXI,U A0,030200 LMJ X8,DPKTA LMJ X8,DPKTB TREAD1H . TREAD1 EQUF TREAD1H-HMX,X1 LA A0,CONTM+A0 L A0,0,A0 . GET PRINT PART OF PACKET U$PRNT L A0,CONTM+A0 LA,H1 A1,1,A0 SA,H2 A1,TREAD3 . STORE DL A0,0,A0 . GET USER TREAD$ PACKET LXI,U A1,TREAD2 . PUT IN SNOOPY'S EOF ADDRESS DS A0,RELSV . PUT OUR TREAD$ PACKET IN RELSV L,U A0,RELSV . USE LOCAL TREAD$ PKT IN CASE WRITE PRO TREADEH . TREADE EQUF TREADEH-HMX,X1 ER TREAD$ LA,H2 A1,CONTM+A0 SA A0,CONTM+A0 LXI,H2 A0,CONTM+A0 LXM,H2 A0,1,A1 AA A0,BIT+25 L A1,CONTM+A0 . GET STATUS BITS TEP A1,BIT+31 . TEST FOR INFOR J TREAD4 . INFOR--SKIP PRINTING U$PRNT TREAD4H . TREAD4 EQUF TREAD4H-HMX,X1 LMJ X8,DASH J DUMMYJ TREAD2H . TREAD2 EQUF TREAD2H-HMX,X1 LA,H2 A1,CONTM+A0 . EOF HAS OCCURRED SA A0,CONTM+A0 LA,H2 A0,TREAD3 SA,H1 A0,1,A1 LMJ X8,DASH TREAD3H . TREAD3 EQUF TREAD3H-HMX,X1 LA,U A0,$-$ J JUMPR . SWAITH . SWAIT EQUF SWAITH-HMX,X1 ER SWAIT$ J DUMMYJ . IALLH . IALL EQUF IALLH-HMX,X1 LMJ X8,JAZZA0 TZ,S3 CONTM+A0 . PROGRAM CONTINGENCY J DUMMYJ JZ A0,IALLA . JUMP IF CONTINGENCY IS BEING DROPPED TNZ,H1 CONTM+A0 . CHECK FOR NEW FORMAT J IALL2 . A1 HAS THE BITS IALLAH . IALLA EQUF IALLAH-HMX,X1 . S,H2 A0,CONWRD . SAVE TO DO AT END . SSL A0,24 . SHIFT BITS DOWN . S,H1 A0,CONWRD S A0,CONWRD J IALL3 . JUMP TO COMMON CODE IALL2H . IALL2 EQUF IALL2H-HMX,X1 LMJ X8,JAZZA1 S,H2 A0,CONWRD . STORE ADDRESS S,H1 A1,CONWRD . STORE BITS L A0,A1 . GET BITS IALL3H . IALL3 EQUF IALL3H-HMX,X1 OR,U A0,05377 . SET ANTI-EMODE BITS L,U A0,CTNG . USE SNOOPY C-MODE HANDLER ER IALL$ J DUMMYJ . IOERH . IOER EQUF IOERH-HMX,X1 LA,H1 A0,0,A1 SA,H2 A0,IOERE LMJ X8,JAZZA0 LXI,U A0,0600 . DUMP SIX WORD PACKET L,S2 A1,3,A0 . GET I/O FUNCTION SSL A1,3 TNE,U A1,3 . IS IT A SEARCH FUNCTION LXI,U A0,01000 . YES--DUMP EIGHT WORD PACKET LMJ X8,DPKTA L A0,CONTM+A0 IOEREH . IOERE EQUF IOEREH-HMX,X1 ER $-$ SA A0,CONTM+A0 LMJ X8,DPKTB J DUMMYJ . INFO$H FACILTH . FACILT EQUF FACILTH-HMX,X1 S,H2 A3,FACILE . STORE ER INDEX LMJ X8,JAZZA0 LXI,U A0,01100 . DUMP NINE WORD PACKET TNE,U A3,FACIT$ . IS IT A FACIT$ REQUEST LXI,U A0,01200 . YES DUMP TEN WORD PACKET TNE,U A3,FITEM$ . IS IT A FITEM$ REQUEST LXI,U A0,01500 . YES--DUMP 13 WORD PACKET . SLJ MIDMP9 . 'DPA' . +0700020,0146524 . SLJ MIDMP9 . 'DPAA' . +020,DPKTAH LMJ X8,DPKTA L A0,CONTM+A0 FACILEH . FACILE EQUF FACILEH-HMX,X1 ER $-$ S A0,CONTM+A0 . SLJ MIDMP9 . 'FAC' . +0700020,0146524 . SLJ MIDMP9 . 'FACA' . +020,DPKTAH TNE,U A3,FITEM$ . IS IT FITEM$ REQUEST J FACILI . YES FACILXH . FACILX EQUF FACILXH-HMX,X1 LMJ X8,DPKTB . SLJ MIDMP9 . 'TWO' . +0700010,0146524 J DUMMYJ FACILIH . FACILI EQUF FACILIH-HMX,X1 L,U R1,9 . SHORT PKT DUMP TZ 2,A0 . TEST FOR NO EXT FILE NAME TNZ,S1 6,A0 . TEST FOR ZERO EQUIPMENT TYPE J FACILS . STORE LENGTH OF PKT AND EXIT L,S1 A4,6,A0 . GET EQUIPMENT TYPE TG,U A4,040 . TEST FOR NON-MAGNETIC STRG J FACILS . STORE LENGTH OF PKT AND EXIT L,U R1,13 . LONG PACKET DUMP TLE,U A4,020 . TEST FOR TAPE (TAPE<020) J FACILS . STORE AND EXIT TE,U A4,035 . TEST FOR DISC TYPES TNE,U A4,036 . F14 AND F40 J FACILS . THEY TAKE LONG DUMP TOO L,U R1,13 . LONG PKT DMP TLE,U A4,020 . TEST FOR TAPE (TAPE<020) J FACILS . STORE AND EXIT TE,U A4,035 . TEST FOR DISC TYPES TNE,U A4,036 . F14 AND F40 J FACILS . THEY TAKE LONG DUMP TOO L,U R1,10 . OTHERWISE WE HAVE FASTRAND OR WORD DRU FACILSH . FACILS EQUF FACILSH-HMX,X1 S,S2 R1,PCONW . MODIFY PACKET CONTROL WORD J FACILX . DUMP PACKET AND EXIT . . LCOREXH . LCOREX EQUF LCOREXH-HMX,X1 L,U X7,1 . X7 = 1 FOR LCORE$ ER J MLCORE . USE COMMON CODE MCOREH . MCORE EQUF MCOREH-HMX,X1 SZ X7 . X7 = 0 FOR MCORE$ ER MLCOREH . MLCORE EQUF MLCOREH-HMX,X1 L,H1 A0,CONTM+A0 L,H1 A4,CONTM+A0 . GET BDI, IF ANY AND,U A0,0777 . SEPARATE OUT BDI FROM OTHER BITS S,H2 A3,ERFA0E . STORE ER INDEX L,H2 A0,CONTM+A0 . LOAD NEW STORAGE LIMIT JNZ A1,MCOREBD . JUMP IF BDI SPECIFIED SZ X9 . ASSUME IBANK EX TLEBD,X10 . IS IT REALLY DBANK L,U X9,2 . YES TZ X9 LXI,H2 A0,BDIS . BDI OF MAIN DBANK TNZ X9 LXI,H1 A0,BDIS . BDI OF MAIN IBANK TZ X10 . MAIN PSR ACTIVE A,U X9,4 . NO POINT TO UTILITY LIMITS REGISTERS J MCORF . DONT NEED TO CHECK BDIS EX TLEBD,X10 . TEST FOR DBANK MCORE L,H2 A4,BDIS,X10 . GET ACTIVE PSR DBANK BDI MCOREBDH . MCOREBD EQUF MCOREBDH-HMX,X1 SZ X9 TNE,H1 A4,BDIS . MAIN PSR IBANK BDI J MCORF . YES L,U X9,2 TNE,H2 A4,BDIS . MAIN PSR DBANK BDI J MCORF . YES L,U X9,4 TNE,H1 A4,BDIS+1 . UTILITY PSR IBANK BDI J MCORF . YES L,U X9,6 TNE,H2 A4,BDIS+1 . UTILITY PSR DBANK BDI J MCORF . YES J ERFA0E-1 . NOT AN ACTIVE BANK MCORFH . MCORF EQUF MCORFH-HMX,X1 L A3,A7,X9 . GET UPPER STORAGE LIMIT FOR BANK OR,U A0,0777 . COMPUTE NEW UPPER STORAGE LIMIT EX MCORTST,X7 . IS IT LARGER/SMALLER FOR MCORE/LCORE S A1,A7,X9 . NO CHANGE THE LIMIT J ERFA0E . NOW DO THE ER ITSELF . LOADH . LOAD EQUF LOADH-HMX,X1 LMJ X8,JAZZA0 LMJ X8,JAZZA1 SZ RELLIM+1 . ZERO RELATIVE LIMITS LA A2,CONTM+A2 L,U A4,0,X4 LA,U A4,0,A0 . GET SEGMENT INDEX TNE,U A4,0400000 . LOAD OF MAIN SEGMENT J MAINLD . YES L A4,(-1,'A2 ') S A4,0,*X4 S A2,0,*X4 L,U A4,CONTM+A2 S A4,0,*X4 LXI,U X8,0 . LMJ X8,DMZZRR JZ A1,LOAD1 SA,H2 A1,LOAD3 LXM,U A1,LOAD2 LOAD1H . LOAD1 EQUF LOAD1H-HMX,X1 ER LOAD$ DS A0,CONTM+A0 SA A2,CONTM+A2 J DUMMYJ LOAD2H . LOAD2 EQUF LOAD2H-HMX,X1 LXM,H2 A1,LOAD3 DS A0,CONTM+A0 S A2,CONTM+A2 LOAD3H . LOAD3 EQUF LOAD3H-HMX,X1 LA,U A0,$-$ LXI,U X8,1 . LMJ X8,DMZZRR J JUMPR MAINLDH . MAINLD EQUF MAINLDH-HMX,X1 P$RINT MSEG,LMSEG,1 ANX,U X2,1 . BACK PROGRAM COUNTER UP BY 2 J SNEXIT . PSRH . PSR EQUF PSRH-HMX,X1 LA A0,CONTM+A0 JNB A0,ERF SSL A0,17 SZ QW . CLEAR QUARTER WORD MODE JNB A0,ERF . WAS QUARTER WORD MODE TO BE SET SP1 QW . SET QUARTER WORD MODE J ERF . FORKSH . FORKS EQUF FORKSH-HMX,X1 LA,H1 A0,0,A1 S,H2 A0,FORKER . SAVE ER INDEX LMJ X8,JAZZA0 LMJ X8,JAZZA1 S A0,SAVEA0 L A0,(SRSFORM 0,16,0,64,0,0,0,0) . SAVE R REGISTERS SRS A0,SNOTM+0100 . SAVE R-REGISTERS L A0,(SRSFORM 0,32,0,0,0,0,0,0) SRS A0,SNOTM L A0,SAVEA0 S A0,REGSAVE+12 . MOVE A0 TO ITS PLACE IN TABLE LA,U A0,0 TZ CARRY L,U A0,4 TZ OVFL AA,U A0,2 LA A1,COTAB,A0 AA A1,COTAB+1,A0 . SET CARRY & OVERFLOW INDICATORS RIGHT . THE NEXT SECTION RESTORES ALL USER REGISTERS SO THEY WILL . BE AVAILABLE FOR INITIALIZING ASA FOR NEW TASK L A0,(SRSFORM 0,16,0,64,0,0,0,0) LRS A0,REGSAVE+0100 . RESTORE R REGISTERS L A0,(SRSFORM 0,032,0,0,0,0,0,0) LRS A0,REGSAVE . RESTORE X AND A REGISTERS FORKERH . FORKER EQUF FORKERH-HMX,X1 ER $-$ S A0,SAVEA0 L A0,(SRSFORM 0,16,0,64,0,0,0,0) . X0 TO 037 / R0 TO R15 SRS A0,REGSAVE+0100 . SAVE R-REGISTERS L A0,(SRSFORM 0,32,0,0,0,0,0,0) SRS A0,REGSAVE L A0,SAVEA0 S A0,REGSAVE+12 . MOVE TO PLACE WITH REST OF REGISTERS . THE NEXT SECTION RESTORES THE REGISTERS USED BY SNOOPY L A0,(SRSFORM 0,16,0,64,0,0,0,0) LRS A0,SNOTM+0100 . RESTORE R REGISTERS L A0,(SRSFORM 0,32,0,0,0,0,0,0) LRS A0,SNOTM J DUMMYJ MSCONH . MSCON EQUF MSCONH-HMX,X1 LMJ X8,JAZZA0 . PUT A0 IN JAZZ TABLE L A1,(2,MSCTAB-2) . PREPARE TO SEARCH SUBFCN TABLE L,S6 A2,0,A0 . GET MSCON$ SUB-FUNCTION L,U R1,LMSCTB . LOAD LENGTH OF SUBFCN TABLE SE,S6 A2,2,*A1 . SEARCH THE TABLE NOP A0 . THERES A DUMMY ENTRY AT END L,S4 A2,0,A1 . GET INDEX FOR ADJUSTING PKT SIZE EX MSCLOD,A2 . LOAD VARIABLE PART OF PKT SIZE TNE,U A2,1 . TEST FOR T1 LOAD SSL A4,6 . IT WAS, AND WE MIGHT BE IN QUARTER MOD LSSL A4,6 . MOVE OVER FOR ADDITION TO PCON A,H1 A4,0,A1 . ADD BASE PORTION OF PKT CONTROL WORD L A2,1,A1 . LOAD NAME OF SUBFCN S A0,SUBFCA . STORE ADDRESS OF SUBFCTN WD IN PKT S A2,SUBFCT . STORE NAME OF SUBFCTN LXI A0,A4 . BUILD PKT CONTROL WORD LMJ X8,DPKTA . SAVE PACKET TO DUMP LATER L A0,CONTM+A0 . RELOAD A0 FROM SIMULATED A0 ER MSCON$ . SO THE ER (AT LAST!) S A0,CONTM+A0 . SAVE RESULT IN SIMULATED A0 LMJ X8,DPKTB . DUMP THE PACKET SZ SUBFCT . CLEAR THE NAME IN CASE PARTIAL PRINT J DUMMYJ . RETURN TO MAIN LOOP . SNAPH . SNAP EQUF SNAPH-HMX,X1 LMJ X8,JAZZA0 L A1,0,A0 . MOVE PACKET TO SNOOP'S PACKET L A4,1,A0 L A2,2,A0 S A1,SNAPPK S A2,SNAPPK+2 S A2,CONTM+A0 JPS A4,SNAPA . TEST BITS FOR X A R REGISTER DUMP LMJ X8,DUMPX . DUMP X REGISTERS SNAPAH . SNAPA EQUF SNAPAH-HMX,X1 JPS A4,SNAPB . LMJ X8,DUMPA . DUMP A REGISTERS SNAPBH SNAPB EQUF SNAPBH-HMX,X1 JPS A4,SNAPC . LMJ X8,DUMPR . DUMP R REGISTERS SNAPCH . SNAPC EQUF SNAPCH-HMX,X1 SSL A4,3 . SHIFT BACK IN PLACE S A4,SNAPPK+1 . STORE IN PACKET WITHOUT BITS L,U A0,SNAPPK ER SNAP$ . DO THE ER J DUMMYJ . BACK TO MAIN LOOP MSASIZH . MSASIZ EQUF MSASIZH-HMX,X1 TZ,S3 0,A0 . IS FLAG SET? L,U A4,2 . YES--PACKET IS TWO WORDS LONGER J 0,A2 . RETURN . . CRTNH . CRTN EQUF CRTNH-HMX,X1 L A0,CONWRD . GET USER CONTINGENCY WORD L,H2 A0,0,A0 . POINT TO USER CONTINGENCY PACKET . A0 NOW HAS RETURN ADDRESS WITHIN IT L A4,A0 . SAVE IT TEMPORARILY ER BANK$ . TEST STORAGE LIMITS TNZ A0 . TEST FOR IN RANGE SP1 LOK . INVALID ADDRESS -- SET FOR VIOLATION L A0,A4 , RESTORE TARGET ADDRESS J JUMPR . DO THE JUMP . CTSAQH . CTSAQ EQUF CTSAQH-HMX,X1 S,H2 A3,CTSAQE . STORE THE ER INDEX L A3,SAVEP . RETRIEVE ADDRESS OF THE ER AN,U A3,1 . BACK UP TO THE INST BEFORE THE ER L,H1 A0,0,A3 . GET H1 OF THE INSTRUCTION AND,XU A0,-017 A,U A1,014 . FORCE A0 AS AN INDEX S,H1 A1,CTSAQI AND,U A0,017 . MASK THE X FIELD TO A1 TZ A1 . IS THE X FIELD ZERO L,H2 A0,CONTM,A1 . VALUE OF INDEX L,H2 A1,0,A3 . U FIELD OF ER S,H2 A1,CTSAQI CTSAQIH . CTSAQI EQUF CTSAQIH-HMX,X1 +0 . A TZ OR NOP GOES HERE CTSAQEH . CTSAQE EQUF CTSAQEH-HMX,X1 ER $-$ . DO THE ER J DUMMYJ . . . SUBROUTINES TO SET UP JAZZ TABLE FOR A0,A1 . JAZZA0H . JAZZA0 EQUF JAZZA0H-HMX,X1 L A0,CONTM+A0 . GET CONTEDNTS OF SIMLATE A0 L A4,(-1,'A0 ') . GET REGISTER MARKER S A4,0,*X4 . STORE INTO JAZZ TABLE S A0,0,*X4 . SAVE CURRENT VALUE L,U A4,CONTM+A0 . LOAD ADDRESS OF SIMULATED A0 S A4,0,*X4 . STORE INTO JAZZ TABLE J 0,X8 . RETURN . JAZZA1H . JAZZA1 EQUF JAZZA1H-HMX,X1 L A1,CONTM+A1 . GET CONTENTS OF SIMULATED A1 L A4,(-1,'A1 ') . GET REGISTER MARKER S A4,0,*X4 . STORE INTO JAZZ TABLE S A1,0,*X4 . STORE INTO JAZZ TABLE L,U A4,CONTM+A1 . LOAD ADDRESS OF SIMULATED A1 S A4,0,*X4 . STORE INTO JAZZ TABLE J 0,X8 . RETURN . EO2H . EO2 EQUF EO2H-HMX,X1 . THIS SECTION EDITS A FIXED NUMBER OF OCTAL DIGITS . THE BINARY NUMBER IS IN A0 AND THE NUMBER OF DIGITS IS IN A1 MSI,U A1,3 L,U A2,36 AN A2,A1 LSSL A0,0,A2 . LEFT JUSTIFY BINARY NUMBER L A1,A2 A,U A1,OCTCTD J EO1A EO1H . CONVERT ONE BINARY WORD TO OCTAL AND SUPPRESS LEADING ZEROES EO1 EQUF EO1H-HMX,X1 L,U A1,0 . INITIALIZE TN A0 LSC A0,A0 . NORMALIZE NUMBER / CONT LEADING ZEROES A,U A1,OCTCTD . TRANSLATION PARAMETERS L,Q1 A2,0,A1 . NUMBER TO RIGHT SHIFT SSL A0,0,A2 . ADJUST TO OCTAL BOUNDARY EO1AH . ENTRY POINT FOR FIXED LENGTH OCTAL EO1A EQUF EO1AH-HMX,X1 L,Q2 R1,0,A1 . DESTINATION LENGTH IN BITS L,U X5,EO1TB . SOURDE INCEX S A0,0,X5 . BINARY NUMBER TO CONVERT L,U X7,EO1TR . TRANSLATE INDEX L,Q3 A2,0,A1 A,U A2,BCM$ . MOVE FUNCTION L,U X6,EO1CMD . COMMAND INDEX S,Q1 A2,0,X6 . NUMBER OF ELEMENTS IN SOURCE BMTC 1,X5 . POINT AT TWO WORD PACKET J 0,X8 CRELADH . CRELAD EQUF CRELADH-HMX,X1 S A0,RELSTR . SAVE ABSOLUTE ADDRESS LMJ X11,CRELAD$ . COMPUTE RELATIVE ADDRESS . CRELAD$ CONVERTS AN ABSOLUTE ADDRESS IN A0 INTO A RELATIVE . ADDRESS PLACED IN A0. THE ELEMENT NAME IS PLACED IN A2 AND A3 . THE LOCATION COUNTER NUMBER IS PLACED IN A1 J CRELAD1 CRELAD2H . CRELAD2 EQUF CRELAD2H-HMX,X1 J 0,X8 . RETURN CRELAD1H . CRELAD1 EQUF CRELAD1H-HMX,X1 L A0,RELSTR L,U A1,0 . SET LOCATION COUNTER NUMBER TO ZERO DL A2,('*ABSOLUTE ') J CRELAD2 . RELINSH . RELATIVISE ADDRESS RELINS EQUF RELINSH-HMX,X1 S X8,RELINSX . SAVE RETURN POINT L A0,SAVEP . GET P-REGISTER L,U A1,0,X4 DL A1,RELLIM . LIMITS OF CURRENT PROGRAM TNW A1,A0 . TEST CURRENT P-REGISTER J RELIN2 . CURRENT ELEMENT IS STIL RIGHT SZ A1 . INITIALIZE BANK NUMBER TNW A12,A0 . TEST UTILITY DBANK L,H2 A1,BDIS+1 TNW A10,A0 . TEST UTILITY PSR L,H1 A1,BDIS+1 TNW A8,A0 . TEST MAIN DBANK L,H2 A1,BDIS TNW A6,A0 . TEST MAIN IBANK L,H1 A1,BDIS LXI,U A0,0,A1 . HOPEFULLY BDI OF TARGET ADDRESS S R3,ESAVE+8 LMJ X8,CRELAD . FIN DELEMENT TO MATCH ADDRESS L R3,ESAVE+8 . R3 MUST NOT BE CHANGED DS A4,RELLIM . SAVE LIMITS FOR THIS ELEMENT S A0,RELPR . SAVE VALUE OF ADDRESS SZ SAMELT . ASSUME ELT NAME CHANGES DTE A2,OLDELT J RELIN1 . DIFFERENT ELEMENT TNE A1,OLDLC J RELINSXT . SAME LOC CTR SP1 SAMELT . ELT NAME SAME -- DIFFERENT LC RELIN1H . RELIN1 EQUF RELIN1H-HMX,X1 DS A2,OLDELT S A1,OLDLC RELIN3H . RELIN3 EQUF RELIN3H-HMX,X1 L,U A0,0,X4 L,U A0,OLDELT L,U A2,12 LMJ X8,EF3 . EDIT UPTO 12 CHARACTERS L,U A0,',$(' . EDIT CONTENTS OF A0 L,U A1,3 LMJ X8,EF1 L A0,OLDLC LMJ X8,EO1 . EDIT LOCATION COUNTER AS OCTAL L,U A0,')' LMJ X8,IC1 . INSERT SINGLE CHARACTER J RELIN4 RELIN2H . RELIN2 EQUF RELIN2H-HMX,X1 AN,U A0,1,A1 . RELATIVIZE S A0,RELPR . SAVE RELATIVE P-REGISTER RELINSXTH . RELINSXT EQUF RELINSXTH-HMX,X1 L X8,RELINSX . RESTORE RETURN POINT J 0,X8 . RETURN TO CALLER RELIN4H . RELIN4 EQUF RELIN4H-HMX,X1 DL A0,OLDELT . GET ELEMENT NAME DTE A0,('SNOOPY ') J RELIN4J J RELIN8A . DO NOT TREAT SNOOPY AS RLIB$ ELT RELIN4JH . RELIN4J EQUF RELIN4JH-HMX,X1 L A1,EDESC$ . GET ELEMENT DESCRIPTOR . TZ RLIBX . IS RLIB TABLE IN EXCEPTION MODE J RELIN8 . YES -- DONT TEST FOR RLIB ELEMENT N TEP A1,BIT+34 . CHECK RLIB$ ELEMENT BIT J RELIN4A . ENETERING RLIB$ J RELIN8 RELIN4AH . RELIN4A EQUF RELIN4AH-HMX,X1 TZ RLIB$T J RELIN7 . RLIB$ TRACE IS NOT SUPPRESSED TZ WASRLB . WAS IN RLIB$ J RELIN6 J RELIN5 . OK TO PRINT J RELIN6 RELIN5H RELIN5 EQUF RELIN5H-HMX,X1 L,U A0,RLIBELT . ' (RLIB$ ELT)' L,U A2,12 LMJ X8,EF1 RELIN6H . RELIN6 EQUF RELIN6H-HMX,X1 TZ WASRLB . ARE WE IN RLIB$ J RELINP . YES, DONE RELIN7H RELIN7 EQUF RELIN7H-HMX,X1 SP1 WASRLB . SET IN CASE NOT SET BEFORE J RELINSXT . RETURN TO CALLER RELIN8H . RELIN8 EQUF RELIN8H-HMX,X1 RELIN8AH . RELIN8A EQUF RELIN8AH-HMX,X1 TNZ WASRLB . WERE WE IN RLIB$ BEFORE J RELINP NO DONE SZ WASRLB TZ RLIB$T . IS RLIB$ TRACING SUPPRESSED J RELINP SZ USYM . CLEAR ANY SYMBOL HANGING AROUND RELINPH . RELINP EQUF RELINPH-HMX,X1 L A0,X9 AN,U A0,LINE JZ A0,RELINP1 . BUFFER IS EMPTY PR$INT LINE,22,1 RELINP1H . RELINP1 EQUF RELINP1H-HMX,X1 LMJ X8,BLANK J RELINSXT . IC1H . IC1 EQUF IC1H-HMX,X1 . THIS INSERTS ONE CHARACTER RIGHT JUSTIFIED IN A0 INTO CURRENT STRING L X5,(BMLFRMX 30,0,IC1ST) S A0,0,X5 . CHARACTER TO INSERT L,U R1,6 . NUMBER OF BITS TO INSERT BIML IC1PX J 0,X8 IC1PXH . IC1PX EQUF IC1PXH-HMX,X1 BMLFRM 0,X9,0,0 BMLFRM 0,X5,1,0 . EF1H . EF1 EQUF EF1H-HMX,X1 . THIS SECTION INSERTS A CHARACTER STRING CONTAINED IN A0 INTO . THE CURRENT STRING L,U A2,36 L R1,A1 . SAVE NUMBER OF CHARACTERS MSI,U A1,6 . NUMBER OF BITS TO INSERT AN,U A2,0,A1 LSSL A0,0,A2 L A2,R1 . RESTORE CHARACTER COUNT S A0,EF1SV L,U A0,EF1SV . . ABOVE CODE FALLS THRU TO EF2 DO NOT INSERT ANYTHING EF2H . THIS SECTION INSERTS CHARACTERS INTO THE CURRENT STRING UNTIL EF2 EQUF EF2H-HMX,X1 . A @ SIGN IS ENCOUNTERED . ON ENTRY A0 HAS LOCATION OF STRING TO INSERT . AND A2 HAS LENGTH OF INPUT STRING IN CHAARACTERS AU,U A2,BCCM$ . BIT MOVE AND COMPARE FUNCTION MSI,U A2,6 . NUMBER OF CHARACTERS TO NUMBER OF BITS L R1,A2 L,U X6,EF1CMD . COMMAND INDEX SAQW A3,0,X6 . STORE FIRST COMMAND IN STRING L,U X5,0,A0 . ADDRESS OF LEFT JUSTFIED STRING BMTC 1,X6 . LOCATION OF TWO WORD DESCRIPTORS J 0,X8 EF4H . EF4 EQUF EF4H-HMX,X1 . THIS SECTION INSERTS A CHARACTER STRING CONTAINED IN A0 INTO . THE CURRENT STRING L,U A2,36 L R1,A1 . SAVE NUMBER OF CHARACTERS MSI,U A1,6 . NUMBER OF BITS TO INSERT AN,U A2,0,A1 LSSL A0,0,A2 L A2,R1 . RESTORE CHARACTER COUNT S A0,EF1SV L,U A0,EF1SV . . ABOVE CODE FALLS THRU TO EF3 DO NOT INSERT ANYTHING EF3H . THIS SECTION INSERTS CHARACTERS INTO THE CURRENT STRING EF3 EQUF EF3H-HMX,X1 . UNTIL A BLANK IS ENCOUNTERED . ON ENTRY A0 HAS LOCATION OF STRING TO INSERT . AND A2 HAS LENGTH OF STRING IN CHARACTERS AU,U A2,BCCM$ . BIT MOVE AND COMPARE FUNCTION MSI,U A2,6 L R1,A2 . NUMBER OF BITS TO MOVE L,U X6,EF3CMD . POINTS TO COMMAND STRING SAQW A3,0,X6 . STORE FIRST COMMAND IN STRING L,U X5,0,A0 . SET SOURCE INDEX TO STRING BMTC 1,X6 J 0,X8 . EF5H . THIS SECTION INSERTS CHARACTERS INTO THE CURRENT STRING UNTIL EF5 EQUF EF5H-HMX,X1 . A @ SIGN IS ENCOUNTERED . ON ENTRY A0 HAS LOCATION OF STRING TO INSERT . AND A2 HAS LENGTH OF INPUT STRING IN CHAARACTERS AU,U A2,BCCM$ . BIT MOVE AND COMPARE FUNCTION MSI,U A2,9 . NUMBER OF CHARACTERS TO NUMBER OF BITS L R1,A2 L,U X6,EF1CMDA . COMMAND INDEX SAQW A3,0,X6 . STORE FIRST COMMAND IN STRING L,U X5,0,A0 . ADDRESS OF LEFT JUSTFIED STRING BMTC 1,X6 . LOCATION OF TWO WORD DESCRIPTORS J 0,X8 . . THE FOLLOWING SECTION EDITS AN ADDRESS AS A REGISTER OR OFFSET . PLUS A LOCATION COUNTER ECADH . ECAD EQUF ECADH-HMX,X1 S X8,ECADX . SAVE RETURN ADDRESS L A4,A0 . SAVE ADDRESS TO EDIT L,U A1,6 . NUMBER OF DIGITS TO EDIT LMJ X8,EO2 . EDIT SIX CHARACTERS L,U A0,'=' LMJ X8,IC1 . INSERT ONE CHARACTER L A0,A4 . RETRIEVE ADDRESS TLE,U A0,0200 J ECAD2 . TRY TO EDIT AS REGISTER ECAD1H . ECAD1 EQUF ECAD1H-HMX,X1 LMJ X8,CRELAD . RELATIVISE ADDRESS DS A2,REMSV+2 . SAVE NAME OF ELEMENT S A1,REMSV+4 . LOCATION COUNTER NUMBER L,U A1,6 LMJ X8,EO1 . EDIT STARTING ADDRESS IN OCTAL L,U A0,',$(' L,U A1,3 LMJ X8,EF1 . INSERT UPTO SIX CHARACTERS L A0,REMSV+4 . LOCATION COUNTER NUMBER LMJ X8,EO1 . EDIT LOCATION COUNTER NUMBER L,U A0,'),' L,U A1,2 LMJ X8,EF1 . INSERT UP TO BLANK L,U A0,REMSV+2 L,U A2,12 LMJ X8,EF3 . INSERT UPTO BLANK ECADXTH . ECADXT EQUF ECADXTH-HMX,X1 L X8,ECADX . RETURN POINT J 0,X8 ECAD2H . ECAD2 EQUF ECAD2H-HMX,X1 TLE,U A0,RFUDX1 TLE,U A0,RFUDX2 J ECAD4 L,H2 A0,RFUDX3 A,U A0,'X@@' ECAD3H . ECAD3 EQUF ECAD3H-HMX,X1 L,U A2,6 LMJ X8,EF1 J ECADXT ECAD4H . ECAD4 EQUF ECAD4H-HMX,X1 TLE,U A0,RFUDA1 TLE,U A0,RFUDA2 J ECAD5 L,H2 A0,RFUDA3 A,U A0,'A@@' J ECAD3 ECAD5H . ECAD5 EQUF ECAD5H-HMX,X1 TLE,U A0,RFUDR1 TLE,U A0,RFUDR2 J ECAD1 . NOT A REGISTER NAME L,H2 A0,RFUDR3 A,U A0,'R@@' J ECAD3 . CONTH . CONT EQUF CONTH-HMX,X1 S X8,CONTX . SAVE RETURN POINT SZ CONTINGF . CLEAR CONTINGENCY FLAG LMJ X8,CONTZ TZ CMODE . ARE WE ALREADY IN CONTINGENCY MODE J CONT0 . YES, GIVE MESSAGE AND SIMULATE STANDAR L A0,CONWRD . GET USER PGM CONTG WORD L,S1 A1,CONWRD . TOP A0,BIT+17,A1 . TEST USER BITS J CONTT . USER DOES NOT EXPECT IT L,H1 A1,CTNG . MOVE TO USER AREA S,H1 A1,0,A0 L A1,CTNG+1 . MOVE TO USER AREA S A1,1,A0 L,U A1,0,X2 . GET NEXT P-REGISTER VALUE AN,U A1,1 . REDUCE FOR INTERRRUPT LOCATION S,H2 A1,0,A0 . MOVE TO USER CONTINGENCY PACKET L,U X2,2,A0 . SET P TO USER CONTINGENCY START SP1 CMODE PR$INT ECMOD,LECMOD,1 J CONTY CONT0H . CONT0 EQUF CONT0H-HMX,X1 PR$INT CINC,LCINC,1 CONTTH . CONTT EQUF CONTTH-HMX,X1 L,S3 A1,CTNG . GET CONTINGENCY TYPE L,U A0,0570 TOP A0,BIT,A1 J CONTXX TE,U A1,010 . TEST FOR IINT J CONTY . NOT IINT L,S1 A0,CTNG . GET ERROR TYPE TE,U A0,2 J CONTTI PR$INT NORBK,LNORBK,1 J CONTY CONTTIH . CONTTI EQUF CONTTIH-HMX,X1 L,U A0,NOICOM ER COM$ . RESPOND CONTYH . CONTY EQUF CONTYH-HMX,X1 L X8,CONTX . RESTORE RETURN POINT J 1,X8 CONTZH . CONTZ EQUF CONTZH-HMX,X1 S X8,CONTZX . SAVE RETURN POINT L,S3 A1,CTNG . GET CONTINGENCY TYPE JZ A1,0,X8 . QUIT IF ZERO CONT1H . CONT1 EQUF CONT1H-HMX,X1 TE,U A1,1 . ILLEGAL OPERATION J CONT2 LMJ X8,BLANK L A0,('IOPR ') L,U A1,6 LMJ X8,EF1 J CONT5A CONTXXH . CONTXX EQUF CONTXXH-HMX,X1 SP1 NOUT SZ USYM . SZ REMPRT . MAY NOT NEEDED CONTXTH . CONTXT EQUF CONTXTH-HMX,X1 L X8,CONTZX . RESTORE RETUN POINT J 0,X8 CONT2H . CONT2 EQUF CONT2H-HMX,X1 TE,U A1,2 . GUARD MODE J CONT3 . NO -- MUST BE IINT LMJ X8,BLANK L A0,('IGDM ') L,U A1,6 LMJ X8,EF1 L,S2 A2,CTNG L A0,GDMERR-1,A2 L,U A1,6 LMJ X8,EF1 J CONT5B . CONT3H . CONT3 EQUF CONT3H-HMX,X1 TE,U A1,010 . IS IT INIT J CONT5 . NO L,S1 A0,CTNG . GET ERROR TYPE SZ CONTINGF TE,U A0,2 . RBK J CONT4 . NO MUST BE II KEYIN ONSITE TZ CCALL J CONT6A . TREAT AS OTHERS CONTZQQH . EXIT POINT FOR CONTZ CONTZQQ EQUF CONTZQQH-HMX,X1 J CONTXT CONT4H . CONT4 EQUF CONT4H-HMX,X1 L A2,('II ') J CONT6B CONT5H . CONT5 EQUF CONT5H-HMX,X1 TE,U A1,7 . ABORT J CONT6 . NO LMJ X8,BLANK . CLEAR LINE L,U X9,LINE . SET DESTINATION INDEX L A0,('ABORT') CONT5AH . CONT5A EQUF CONT5AH-HMX,X1 LMJ X8,EF1 CONT5BH . CONT5B EQUF CONT5BH-HMX,X1 L,H2 A0,ERRADR . GET LAST ERROR ADDRESS LMJ X8,ECAD . EDIT CONTINGENCY ADDRESS PR$INT LINE,22,1 J CONTXT CONT6H . CONT6 EQUF CONT6H-HMX,X1 TG,U A1,7 . HARMLESS CONTINGENCY J CONT7 . NO CONT6AH . CONT6A EQUF CONT6AH-HMX,X1 L A2,AFLTMS-3,A1 . GET CONTINGENCY MNEMONIC CONT6BH CONT6B EQUF CONT6BH-HMX,X1 LMJ X8,BLANK L A0,A2 LMJ X8,EF1 L,H2 A0,ERRADR LMJ X8,ECAD . RELATIVIZE ERROR ADDRESS PR$INT LINE,22,1 SZ CMODE . CLEAR CONTINGENCY MODE J CONTXT CONT7H . CONT7 EQUF CONT7H-HMX,X1 TE,U A1,012 . ER ERROR J CONT8 . NO LMJ X8,BLANK . CLEAR IMAGE L,U X9,LINE . SET DESTINATION INDEX L,S1 A1,CTNG . GET E-TYPE L A0,ERERR-1,A1 L,U A1,6 . NUMBER OF CHARACTERS TO INSERT LMJ X8,EF1 . INSERT CHARACTERS IN A0 L,U A0,6 BN X9,A0 . SKIP A COLUMN / INSERT A BLANK L,S2 A0,CTNG . GET ERROR CODE DSL A0,3 LSSL A0,3 LDSL A0,9 A,U A0,'00 ' L,U A1,3 LMJ X8,EF1 . INSERT CONTENTS OF A0 L,U A0,' ' LMJ X8,IC1 . INSERT CONTENTS OF A0 ... BLANK L,U A0,0,X2 . CURRENT VALUE OF P-REGISTER AN,U A0,1 LMJ X8,ECAD . RELATIVIZE ADDRESS L,S1 A0,CTNG TE,U A0,1 TNE,U A0,5 J CONT7J . TAKES PACKET PRINTOUT J CONT7A CONT7JH . CONT7J EQUF CONT7JH-HMX,X1 L A0,(' PKT:') L,U A2,6 LMJ X8,EF1 . INSERT CONTENTS OF A0 L,H2 A0,CTNG+1 . ADDRESS OF CONTINGENCY L,U A2,6 LMJ X8,EO2 . CONVERT ADDRESS TO OCTAL L,S1 A0,CTNG . GET ERR TYPE AGAIN TE,U A0,1 . IS IT I/O J CONT7A . NO L,S2 A0,CTNG . GET ERROR CODE TNE,U A0,023 . IS IT BAD PACKET POINTER J CONT7A . YES, DO NOT PRINT THE PACKET L,U A0,' ' LMJ X8,IC1 . INSERT CHARACTER IN A0 L,U A0,' ' LMJ X8,IC1 . INSERT CHARACTER IN A0 L,U A0,FILENM . 'FILENAME:@' L,U A2,12 . NUMBER OF CHARACTERS IN MESSAGE LMJ X8,EF2 . INSERT STRING WHOSE ADDRESS IS IN A0 L,H2 A0,CTNG+1 . GET PACKET ADDRESS L,U A2,12 LMJ X8,EF2 . EDIT INTERNAL NAME CONT7AH . CONT7A EQUF CONT7AH-HMX,X1 PR$INT LINE,22,1 J CONTXT CONT8H . CONT8 EQUF CONT8H-HMX,X1 LMJ X8,BLANK . CLEAR IMAGE L,U X9,LINE L A0,('BRKPT ') J CONT5A . . CTGPKTH . CTGPKT EQUF CTGPKTH-HMX,X1 + 0D . DS A0,REMSV . SAVE REGS DS A2,REMSV+2 . DL A0,CTGPKT . MOVE CONTINGENCY INFO DS A0,CTNG . S,H2 A0,ERRADR . L,S3 A3,CTGPKT . GET CTYPE TE,U A3,6 . IS IT RESTART? J CTGPK1 . NO SZ *CRELAD$-1 . FORCE RE-INITIALIZATION CTGPK1H . CTGPK1 EQUF CTGPK1H-HMX,X1 L,U A0,1,A0 . BYPASS THE BAD INSTRUCTION ALREADY XQT'D S,H2 A0,TONS . STORE ENTRY ADDRESS NOEDJSH . NOEDJS EQUF NOEDJSH-HMX,X1 DL A0,REMSV . RESTORE REGISTERS DL A2,REMSV+2 . ER CEND$ . LEAVE CONTINGENCY MODE J TONS+1 . BEGIN SNOOPY . AFUDJH . AFUDJ EQUF AFUDJH-HMX,X1 L A1,A0 TZ TRAP J CFUDJ TLE,U A1,LLCORE AA,U A1,LCORE J 0,X8 CFUDJH . CFUDJ EQUF CFUDJH-HMX,X1 SA A1,0,*X4 . SPECIAL FUDGE FOR AFUDJ TLE,U A1,LLCORE A,U A1,LCORE LX X7,0,A1 SX X7,0,*X4 S A1,0,*X4 J 0,X8 RFUDJH . RFUDJ EQUF RFUDJH-HMX,X1 TLE,U A0,RFUDX1 TLE,U A0,RFUDX2 J RFUDJ1 L A1,('X@@') AA A1,RFUDX3 J RFUDJ4 RFUDJ1H . RFUDJ1 EQUF RFUDJ1H-HMX,X1 TLE,U A0,RFUDA1 TLE,U A0,RFUDA2 J RFUDJ2 LA A1,('A@@') AA A1,RFUDA3 J RFUDJ4 RFUDJ2H . RFUDJ2 EQUF RFUDJ2H-HMX,X1 TLE,U A0,RFUDR1 TLE,U A0,RFUDR2 J RFUDJ3 L A1,('R@@') AA A1,RFUDR3 J RFUDJ4 RFUDJ3H . RFUDJ3 EQUF RFUDJ3H-HMX,X1 AU,U A0,CONTM RFUDJ4H . RFUDJ4 EQUF RFUDJ4H-HMX,X1 SA A1,0,*X4 LX X7,CONTM,A0 SX X7,0,*X4 AU,U A0,CONTM S A1,0,*X4 J 0,X8 . NOT90H . NOT90 EQUF NOT90H-HMX,X1 L A0,(7,NOT90M) ER PRINT$ ER EXIT$ NOT90M ' THIS VERSION OF SNOOPY MUST BE ON A 90' . ILOPH . ILOP EQUF ILOPH-HMX,X1 L,U A0,1 . SIMULATE ILOP INTERRUPT SZ A1 . NO STATUS BITS J GDMVCH . USE COMMON CODE GDMVPRH . GDMVPR EQUF GDMVPRH-HMX,X1 L,U A0,0102 . PRIVILEGED INSTUCTION VIOLATRION L,U A1,4 J GDMVCH . GO TO COMMON CODE GDMVSLTH . GDMVSLT EQUF GDMVSLTH-HMX,X1 JZ A1,GDMVSL . ADDRESS TRULY DOES NOT EXIST J 0,A0 . CONTINUE GDMVSLH . GDMVSL EQUF GDMVSLH-HMX,X1 S A1,R10 L,U A0,0202 . STORAGE LIMITS/WRITE PROTECT VIOLATION L,U A1,010 J GDMVCH GDMVCRH . GDMVCR EQUF GDMVCRH-HMX,X1 L,U A0,0302 . CONTROL REGISTER VIOLATION L,U A1,020 J GDMVCH GDMVILH . GDMVIL EQUF GDMVILH-HMX,X1 L,U A0,0402 . INTERRUPT LOCKOUT VIOLATION L,U A1,040 J GDMVCH GDMVEBH . GDMVEB EQUF GDMVEBH-HMX,X1 L,U A0,0602 . E-BIT VIOLATION J GDMVTLA GDMVTLH . GDMVTL EQUF GDMVTLH-HMX,X1 L,U A0,0702 . TABLE LENGTH VIOLATION GDMVTLAH . GDMVTLA EQUF GDMVTLAH-HMX,X1 L,U A1,02 . FALL THRU TO GDMVCM DO NOT INSERT CODE HERE GDMVCHH . GDMVCH EQUF GDMVCHH-HMX,X1 S,H1 A0,CTNG . STORE ERROR CODE AND CONT TYPE S,H2 X2,CTNG . STORE ERR ADDR (CURRENT SIMULATED P) S,H1 A1,CTNG+1 . STORE STATUS BITS, IF ANY S,H2 X2,ERRADR . SAVE ERROR ADDRESS SP1 CONTINGF . INDICATE CONTINGENCY HAS OCCURRED L A0,(010,SNODEC) ER PRINT$ J INSTR . BACK TO MAIN LOOP . GTDERRH . GTDERR EQUF GTDERRH-HMX,X1 P$RINT GTDCBK,LGTDCB,1 . J COMER1 . IERH . IER EQUF IERH-HMX,X1 AND A2,(017,-0) L,U A0,LASTER S,H1 A3,0,A0 . RESET NUMBER OF ER'S SZ LOK . CLEAR VIOLATION FLAG TNZ CMODE J IER2 PR$INT LCMOD,LLCMOD,1 IER1H . IER1 EQUF IER1H-HMX,X1 SZ CMODE IER2H . IER2 EQUF IER2H-HMX,X1 LR,U R1,LERTAB L A1,(2,ERTAB-2) LA,U A0,0242 SE,H1 A3,2,*A1 NOP 0 . SHOULD NEVER NEVER GET HERE L A0,1,A1 SA A0,USYM LA,H2 A0,,A1 J 0,A0 COMERRH . COMERR EQUF COMERRH-HMX,X1 PR$INT COMBNK,LCOMBK,1 COMER1H . COMER1 EQUF COMER1H-HMX,X1 AN,U X2,1 . REDUCE P REGISTER BY ONE J SNEXIT . GIVE UP NOBANKH . NOBANK EQUF NOBANKH-HMX,X1 PR$INT NOBNK,LNOBNK,1 J COMER1 GDTERRH . GDTERR EQUF GDTERRH-HMX,X1 PR$INT GTDCBK,LGTDCB,1 J COMER1 . IJOH . IJO EQUF IJOH-HMX,X1 TNZ OVFL J 0,X8 J JUMPR IJNOH . IJNO EQUF IJNOH-HMX,X1 TZ OVFL J 0,X8 J JUMPR IJCH . IJC EQUF IJCH-HMX,X1 TNZ CARRY J 0,X8 J JUMPR IJNCH . IJNC EQUF IJNCH-HMX,X1 TZ CARRY J 0,X8 J JUMPR . . COMPUTE RELATIVE ADDRESS . ON ENTRY, A0 = ABSOLUTE ADDRESS . CALLING SEQUENCE: . LMJ X11,CRELAD$ . . . ON ERROR RETURN, A0 AND A1 CONTAIN SOME SORT OF STATUS INFORMATION IN BINARY . A2-A3 CONTAIN 'INPUT ERROR', AND A4-A5 = 0 . ON NORMAL RETURN, A0 = RELATIVE ADDRESS, A1 = LOCATION COUNTER, . A2-A3 = ELEMENT NAME (LJSF) . A4-A5 CONTAIN 0 IF ABSOLUTE, OTHERWISE A4 = LOC CTR LOWER LIM - 1 . AND A5 = LOC CTR UPPER LIMIT. . THUS, TW A4,X SKIPS IF X IS IN SAME ELT AND LOC CTR RANGE . (ASSUMING NO SEGMENTS WERE LOADED) AS THE ADDRESS USED ON LAST . CALL TO CRELAD$. HENCE, A CALL TO CRELAD$ MAY BE SAVED BY USING . SAME A1, A2, A3, AND COMPUTING A0 AS X-A4-1. . EU EQU 0110 . FILE NAME OF PF FOR PROGRAM EV EQU 0111 . SECOND WORD OF FILE NAME EX EQU 0112 . SECTOR ADDRESS OF FILE HEADER TABLE . LBUFF EQU 224 . BUFFER LENGTH . ENAMEH . ENAME EQUF ENAMEH-HMX,X1 RES 2 . TEMP STORAGE FOR ELT NAME DURING BIGELT FHTH . FHT EQUF FHTH-HMX,X1 RES 28 . STORAGE FOR FILE HEADER TABLE AFHTH . AFHT EQUF AFHTH-HMX,X1 RES 1 . ADDRESS OF FHT (WORDS) SNTH . SNT EQUF SNTH-HMX,X1 RES 4 . ROOM FOR SEG NAME TABLE ENTRY ASNTH . ASNT EQUF ASNTH-HMX,X1 + 0 . ADDRESS OF SNT (WORDS) SNTBASEH . SNTBASE EQUF SNTBASEH-HMX,X1 + 0 . ADDRESS OF DIAG TABLES (WORDS) ELTBASEH . ELTBASE EQUF ELTBASEH-HMX,X1 + 0 . ADDRESS OF ELEMENT TABLES (WORDS) AELTH . AELT EQUF AELTH-HMX,X1 + 0 . ADDRESS OF ELEMENT TABLE FOR SNT PARAMH . PARAM EQUF PARAMH-HMX,X1 + 0 . STORAGE FOR A0 PARAMETER RETURNH . RETURN EQUF RETURNH-HMX,X1 + 0 . ADIAG EQU FHT+7 . ADDRESS OF DIAG TBLS (SECTOR REL AFHT) LDIAG EQUF FHT+8,0,H1 . LENGTH OF DIAGNOSTIC TABLES (WORDS) LSNT EQUF FHT+8,0,H2 . LENGTH OF SNT (WORDS) NRSEGS EQUF FHT+6,0,H1 . NUMBER OF SEGMENTS FOR P0 MAP . . FOLLOWING DEFINITIONS FOR P1 COLLECTOR . P1SENT EQU 0444444 . VALUE IN H1 OF FHT+0 FOR P1 ABS ELTS P1ADIAG EQU FHT+020 . SECTOR ADDRESS OF P1 DIAGNOSTIC TBLS LWBPTR EQUF FHT+021,0,H1 . WALKBACK PTR TABLE LENGTH (WORDS) LWBTXT EQUF FHT+030,0,H2 . WALKBACK TEXT TABLE LENGTH (WORDS) P1LSNT EQUF FHT+027,0,H1 . P1 SEGMENT NAME TBL LENGTH (WORDS) LENT EQUF FHT+027,0,H2 . ELEMENT NAME TBL LENGTH (WORDS) LBNT EQUF FHT+026,0,H2 . BANK NAME TBL LENGTH (WORDS) LLCT EQUF FHT+026,0,H1 . LOCATION COUNTER TBL LENGTH (WORDS) LEPNT EQUF FHT+030,0,H1 . ENTRY POINT NAME TABLE LENGTH (WORDS) LABSV EQUF FHT+031,0,H1 . ABSOLUTE VALUE NAME TBL LENGTH (WORDS) . . ENTBASEH . ENTBASE EQUF ENTBASEH-HMX,X1 + 0 . SNTBASE + P1LSNT (WORDS) BNTBASEH . BNTBASE EQUF BNTBASEH-HMX,X1 + 0 . ENTBASE + LENT LCTBASEH . LCTBASE EQUF LCTBASEH-HMX,X1 + 0 . BNTBASE + LBNT EPNTBASEH . EPNTBASE EQUF EPNTBASEH-HMX,X1 + 0 . LCTBASE + LLCT ABSVBASEH . ABSVBASE EQUF ABSVBASEH-HMX,X1 + 0 . EPNTBASE + LEPNT . . BDIH . BDI EQUF BDIH-HMX,X1 + 0 . STORE COMPUTED BDI HERE . READTH . READT EQUF READTH-HMX,X1 + 0D . TEMP STRG FOR READ LLIMH . LLIM EQUF LLIMH-HMX,X1 + 0 . LOWEST ADDRESS IN BUFF ULIMH . ULIM EQUF ULIMH-HMX,X1 + 0 . HIGHEST ADDRESS IN BUFF RBASEH . RBASE EQUF RBASEH-HMX,X1 + 0 . BASE FOR RELATIVE ADDRESSING . BUFFH . BUFF EQUF BUFFH-HMX,X1 RES LBUFF . INPUT BUFFER . RPKTH . RPKT EQUF RPKTH-HMX,X1 + 0D . READ PACKET + 0 . + R$,0,0 . + LBUFF,BUFFH . FADDRH . FADDR EQUF FADDRH-HMX,X1 + 0 . FASTRAND ADDRESS EDESC$H . EDESC$ EQUF EDESC$H-HMX,X1 + 0 . ELEMENT DESCRIPTOR /. READCLH . READCL EQUF READCLH-HMX,X1 A A0,RBASE . ADD READ BASE TO GET TRUE ADDRESS READ1H . READ1 EQUF READ1H-HMX,X1 TLE A0,ULIM . SEE IF ADDRESS IS IN CORE TLE A0,LLIM . J READ2 . NOT IN CORE AU A1,A0 . COMPUTE LARGEST ADDRESS NEEDED IN A2 AN,U A2,1 . BY ADDING LENGTH - 1 TG A2,ULIM . INCORE? J READ2 . NO AN A0,LLIM . A0 = ADDRESS RELATIVE TO BUFFER START A,U A0,BUFF . A0 = CORE ADDRESS J 0,X11 . EXIT READ2H . READ2 EQUF READ2H-HMX,X1 DS A0,READT . SAVE A0-A1 DSL A0,36 . SET UP DIVIDE DI,U A0,28 . A0 = SECTOR ADDRESS TNE A0,FADDR . SAME AS LAST TIME? J READ3 . YES--ERROR IN BLOCK SIZE S A0,FADDR . STORE ADDRESS INTO PACKET MI,U A0,28 . A1 = FIRST ADDRESS READ (WORD) L,U A0,RPKT . LOAD PACKET ADDRESS ER IOW$ . READ AND WAIT AU,H2 A1,RPKT+3 . A2 = HIGHEST ADDR IN CORE + 1 DS A1,LLIM . STORE LIMITS L,S1 A0,RPKT+3 . GET STATUS TE,U A0,5 . IGNORE READ FROM UNASSIGNED AREA JNZ A0,READ4 . JUMP IF I/O ERROR DL A0,READT . RELOAD A0-A1 J READ1 . TRY AGAIN READ3H . READ3 EQUF READ3H-HMX,X1 L A0,READT . RELOAD A0 L,H2 A1,RPKT+3 . RETURN NUMBER OF WORDS AVAILABLE A A1,LLIM . LESS DISTANCE FROM START OF BUFFER AN A1,A0 . TZ A1 . CHECK FOR NO WORDS AVAILABLE JP A1,READ1 . OR NEGATIVE L,U A0,5 . I/O STATUS WAS 5 READ4H . READ4 EQUF READ4H-HMX,X1 DL A2,('INPUT ERROR ') DSL A4,72 . ERASE A4-A5 L A1,FADDR . LOAD ERROR ADDRESS ON FASTRAND SZ EDESC$ . ZERO ELEMENT DESCRIPTOR L X11,RETURN . RESTORE X11 J 0,X11 . ERROR RETURN + 0,RPKT . MUST BE AT CRELAD$-1 . TO ALLOW FOR RESTART RE-INITIALIZATION CRELAD$H . CRELAD$ EQUF CRELAD$H-HMX,X1 LMJ A3,INIT . INTIALIZE THE TABLES J P1 . THIS IS A P1 COLLECTOR ABSOLUTE ELEMENT ABSH . ABS EQUF ABSH-HMX,X1 L,H2 A0,PARAM . RELOAD PARAMETER SZ A1 . ADDRESS IS ABSOLUTE DL A2,('*ABSOLUTE* ') DSL A4,72 . ERASE A4-A5 SZ EDESC$ . ZERO ELEMENT DESCRIPTOR L X11,RETURN . RESTORE X11 J 1,X11 . GIVE NORMAL RETURN FOUNDXH . FOUNDX EQUF FOUNDXH-HMX,X1 L,H2 A0,PARAM . GET PARAM AN A0,A4 . RELATIVIZE AN,U A0,1 . ALLOW FOR SUBTRACTED 1 L X11,RETURN . RESTORE X11 J 1,X11 . NORMAL RETURN . FASEGH . FASEG EQUF FASEGH-HMX,X1 L,U A0,0 . SET TO 0 FOR START OF SLT$ (MAIN SEG) L,XU A1,-1 . A1 = -1 FOR ADD UPPER NXTSEGH . NXTSEG EQUF NXTSEGH-HMX,X1 AU,H2 A1,SLT$+1,A0 . A2 = LOW I-BANK - 1 L,H1 A3,SLT$+1,A0 . A3 = HIGH I-BANK TNW,H2 A2,PARAM . TEST PARAM FOR IN RANGE J GETSNT . THIS IS CORRECT SEGMENT AU,H2 A1,SLT$+2,A0 . REPEAT SAME FOR D-BANK L,H1 A3,SLT$+2,A0 . TNW,H2 A2,PARAM . J GETSNT . L,H2 A0,SLT$,A0 . GET LINK TO NEXT ACTIVE SEGMENT JNZ A0,NXTSEG . JUMP IF MORE SEGS IN CHAIN L,H2 A0,PARAM . PARAM IS NOT IN AN ACTIVE SEGMENT J ABS . TREAT AS ABSOLUTE GETSNTH . . GETSNT EQUF GETSNTH-HMX,X1 J GOTSEG . BACK TO P1 CODE . . . INITIALIZATION ROUTINE . INITH . INIT EQUF INITH-HMX,X1 S A0,PARAM . SAVE PARAMETER S X11,RETURN . SAVE X11 LXI,U A0,0 . ZERO H1 (=BDI) IN CASE OF IMMEDIATE RTRN TZ RPKT . INITIAL ENTRY? J 0,A3 . NO--TABLES ARE SET UP, SO RETURN L A0,(LBUFF,BUFFH) . LOAD ACCESS WORD ER PCT$ . READ PCT DL A0,BUFF+EU . GET FILE NAME DS A0,RPKT . STORE IN PACKET FOR I/O L A0,BUFF+EX . GET ADDR OF FHT LXI,S3 A0,BUFF+EX . ENSURE THAT UPPER 12 BITS ARE ZERO INIT1H . INIT1 EQUF INIT1H-HMX,X1 SZ RBASE . RESET POINTERS AND INDICATORS 00243 SZ LLIM . TO INDICATE THAT NOTHING HAS 00243 SZ ULIM . BEEN READ IN YET. 00243 MSI,U A0,28 . CONVERT FROM SECTORS TO WORDS S A0,AFHT . STORE ADDRESS L,U A1,28 . READ 28 WORDS LMJ X11,READCL . CALL READ ROUTINE LXI,U A0,1 . SET UP FOR L A1,(1,FHTH) . BLOCK TRANSFER L,U R1,28 . MOVE 28 WORDS BT A1,0,*A0 . MOVE TO FHT STORAGE J P1INIT . THIS IS A P1 COLLECTOR ABSOLUTE ELEMENT . . P PROC 1 . TABLE ADDRESS CALCULATION PROC CALC* NAME 0 . DO P(1)>1 , L A1,P(1,2) . LOAD LENGTH OF SOME TABLE IF GIVEN LMJ A3,ADJUST . ADD AND ADJUST TO SECTOR BOUNDARY S A0,P(1,1) . STORE IN TABLE START ADDR END . . ADJUSTH . ADJUST EQUF ADJUSTH-HMX,X1 A A0,A1 . INCREMENT CURRENT ADDRESS DSA A1,36 . PREPARE TO DIVIDE DI,U A1,28 . COMPUTE NR OF SECTORS PLUS SLOP AN A0,A2 . SUBTRACT REMAINDER FROM CURRENT ADDR TZ A2 . WAS IT WHOLE NUMBER OF SECTORS? A,U A0,28 . NO--ADJUST TO SECTOR BOUNDARY J 0,A3 . RETURN TO STORE THE VALUE COMPUTED . . P1INITH . P1INIT EQUF P1INITH-HMX,X1 L A0,P1ADIAG . GET SECTOR ADDR OF DIAG TBLS REL FHT MSI,U A0,28 . CONVERT TO WORD A A0,AFHT . ADD FHT START S A3,R3 . SAVE RETURN POINT CALC SNTBASE,LWBTXT . CALCULATE SNT BASE ADDRESS CALC ENTBASE,P1LSNT . CALCULATE ENT BASE ADDRESS CALC BNTBASE,LENT . CALCULATE BNT BASE ADDRESS CALC LCTBASE,LBNT . CALCULATE LCT BASE ADDRESS CALC EPNTBASE,LLCT . CALCULATE EPNT BASE ADDRESS CALC ABSVBASE,LEPNT . CALCULATE ABSV BASE ADDRESS L A3,R3 . RELOAD RETURN POINT L,H2 A0,PARAM . RELOAD PARAMETER J 0,A3 . DONE . . . P1H . P1 EQUF P1H-HMX,X1 TNZ LBNT . TEST FOR NO TABLES J ABS . NO DIAG TABLES--EVERYTHING IS ABSOLUTE L,H1 A0,PARAM . GET SPECIFIED BDI, IF ANY JNZ A0,INPBDI . JUMP IF NON-ZERO--USE INPUT BDI L,H2 A0,PARAM . GET ADDRESS ER BANK$ . COMPUTE BDI FOR ADDRESS GIVEN JZ A0,ABS . OUT OF RANGE INPBDIH . INPBDI EQUF INPBDIH-HMX,X1 TP,XU 0,A0 . CHECK FOR COMMON BANK J ABS . CAN'T DO IT FOR EXEC BANKS LSSL A0,24 . GET RID OF MISCELLANEOUS BITS SSL A0,24 . SHIFT BACK GOTBDIH . GOTBDI EQUF GOTBDIH-HMX,X1 S A0,BDI . SAVE THE COMPUTED BDI SZ A0 . START WITH THE ZERO SEGMENT INDEX TNZ,U SLT$ . IS THE PROGRAM SEGMENTED? J GOTSEG . NO--SEGMENT ZERO IS THE RIGHT NUMBER TNZ,S2 SLT$ . IS SLT$ IN OLD FORMAT? J FASEG . YES--USE EXISTING CODE L,XU A2,-1 . LOAD -1 FOR ADD UPPER NXTACTH . NXTACT EQUF NXTACTH-HMX,X1 L A1,A0 . A1 USED AS EXTENSION ENTRY POINTER NXTEXTH . NXTEXT EQUF NXTEXTH-HMX,X1 L,H1 A3,SLT$+2,A1 . GET BDI FOR THIS EXTENSION ENTRY SSL A3,6 . GET T1 WHEN NOT IN THIRD-WORD MODE TNE A3,BDI . CHECK FOR REQUESTED BDI J BDIOK . CORRECT BDI TG A3,BDI . CHECK FOR TOO HIGH--ENTRIES IN ASCENDING J NXTLNK . NO SUCH BDI FOR THIS SEGMENT L,H2 A1,SLT$+2,A1 . GET NEXT EXTENSION ENTRY JNZ A1,NXTEXT . EXAMINE NEXT EXTENSION ENTRY NXTLNKH . NXTLNK EQUF NXTLNKH-HMX,X1 L,H2 A0,SLT$,A0 . GET LINK TO NEXT ACTIVE SEGMENT JNZ A0,NXTACT . EXAMINE NEXT ACTIVE SEGMENT (IF ANY) J GOTSEG . MAY BE IN MAIN SEGMENT--SEARCH LCT BDIOKH . BDIOK EQUF BDIOKH-HMX,X1 AU,H2 A2,SLT$+1,A1 . COMPUTE BANK LOW ADDRESS L,H1 A4,SLT$+1,A1 . LOAD BANK HIGH ADDRESS TW,H2 A3,PARAM . IS PARAMETER IN RANGE? J NXTLNK . NO--TRY NEXT SEGMENT GOTSEGH . GOTSEG EQUF GOTSEGH-HMX,X1 L A3,A0 . SAVE SEGMENT INDEX L A0,BNTBASE . GET BNT ADDRESS S A0,RBASE . SET UP TO READ BNT L A0,BDI . GET BDI AN,U A0,4 . TABLE STARTS WITH BDI 4 JN A0,ABS . TEST FOR INVALID BDI MSI,U A0,3 . THREE-WORD ENTRIES IN BNT TG A0,LBNT . TEST AGAINST TABLE LENGTH J NOFIND . OUT OF RANGE L,U A1,3 . READ THREE WORDS LMJ X11,READCL . CALL READ ROUTINE L,H2 R1,2,A0 . GET NR OF LCT ENTRIES L,H1 R2,2,A0 . GET LCT START FOR THIS BANK JGD R1,GOTSEGA . DECREMENT ENTRY COUNT FOR LATER JGD GOTSEGAH . GOTSEGA EQUF GOTSEGAH-HMX,X1 L A0,LCTBASE . GET LCT START ADDRESS S A0,RBASE . PREPARE TO READ LCT NXT50H . NXT50 EQUF NXT50H-HMX,X1 L A0,R2 . GET READ ADDRESS L,U A1,150 . SEARCH 50 ENRIES PER READ CALL AU A1,A0 . COMPUTE NEXT LCT ADDRESS S A2,R2 . SAVE IT IN R2 LMJ X11,READCL . READ 150 WORDS FROM LCT L,U R3,49 . COUNT 50 ENTRIES AN,U A0,3 . BACK UP ONE ENTRY LXI,U A0,3 . SET UP INDEX INCREMENT NXTENTH . NXTENT EQUF NXTENTH-HMX,X1 TE,H1 A3,3,*A0 . IS THE SEGMENT INDEX CORRECT? J DCRENT . NO--TRY NEXT L A2,1,A0 . GET DESCRIPTOR BITS TEP A2,(1*/33) . IS THIS LC FOR A COMMON BLOCK J DCRENT . YES--BYPASS IT TEP A2,(1*/30) . IS THIS INFO-10 INFORMATION? J DCRENT . YES--BYPASS IT L,H2 A4,2,A0 . GET LC START ADDRESS AN,U A4,1 . SUBTRACT 1 FOR TNW AU,H1 A4,2,A0 . ADD LC LENGTH TNW,H2 A4,PARAM . TEST FOR PARAMETER IN RANGE J P1FIND . FOUND IT DCRENTH . DCRENT EQUF DCRENTH-HMX,X1 JGD R1,DCRENTA . COUNT DOWN NUMBER OF ENTRIES J NOFIND . NO FIND DCRENTAH . DCRENTA EQUF DCRENTAH-HMX,X1 JGD R3,NXTENT . COUNT DOWN IN-CORE ITEMS J NXT50 . READ MORE ENTRIES NOFINDH . NOFIND EQUF NOFINDH-HMX,X1 L,H2 A0,PARAM . RELOAD PARAMETER J ABS . TREAT AS ABSOLUTE P1FINDH . P1FIND EQUF P1FINDH-HMX,X1 S A2,EDESC$ . SAVE THE DESCRIPTOR WORD L A2,ENTBASE . GET ENT BASE ADDRESS S A2,RBASE . READ FROM THERE L,H2 A0,0,A0 . GET ENT LINK FOR THIS LC L,U A1,2 . NEED JUST TWO WORDS LMJ X11,READCL . READ THEM DL A2,0,A0 . GET ELEMENT NAME L A1,EDESC$ . THIRD-WORD LOAD IN UNKNOWN MODE LSSL A1,12 . ZAP T1 SSL A1,24 . GET L.C. NUMBER J FOUNDX . LET EXISTING CODE COMPUTE OFFSET AND RTN . . . ROUTINE TO COMPUTE BANK NAME, GIVEN BDI . CALLED BY LMJ X11,CBN$ . RETURNS +1 IF ERROR WITH A0=0 FOR BAD BDI (EXEC BANK, ETC.) . OR A0>0 FOR I/O ERROR (SAME AS CRELAD$) . RETURNS +2 NORMALLY WITH A0-A1 CONTAINING FIELDATA . BANK NAME . CBN$H . CBN$ EQUF CBN$H-HMX,X1 LMJ A3,INIT . INITIALIZE IF NECESSARY TNE,U A0,1 . CHECK FOR PCT BDI J CBNPCT . SIMULATE TABLE ENTRY FOR PCTBD$ TP,XU 0,A0 . TEST FOR COMMON BANK J CBNERR . CAN'T DO IT FOR EXEC BANKS AN,U A0,4 . TABLE STARTS WITH BDI 4 JN A0,CBNERR . JUMP IF OUT OF RANGE MSI,U A0,3 . THREE-WORD ENTRIES TG A0,LBNT . TEST AGAINST TABLE LENGTH J CBNERR . OUT OF RANGE L A1,BNTBASE . GET BNT ADDRESS CBNCSNH . CBNCSN EQUF CBNCSNH-HMX,X1 S A1,RBASE . READ FROM THERE L,U A1,2 . NEED TWO WORDS LMJ X11,READCL . CALL READ ROUTINE DL A0,0,A0 . LOAD THE BANK OR SEGMENT NAME L X11,RETURN . RESTORE X11 J 1,X11 . THAT'S ALL THERE IS TO IT CBNCOMH . CBNCOM EQUF CBNCOMH-HMX,X1 L A1,(' ') . L X11,RETURN . RESTORE X11 J 1,X11 . CBNPCTH . CBNPCT EQUF CBNPCTH-HMX,X1 L A0,('PCTBD$') . J CBNCOM . ENTER COMMON CODE CBNERRH . CBNERR EQUF CBNERRH-HMX,X1 CSNERRH . CSNERR EQUF CSNERRH-HMX,X1 SZ A0 . CLEAR A0 FOR OUT-OF-RANGE ERRORS L X11,RETURN . RESTORE X11 J 0,X11 . EXIT . . . COMPUTE SEGMENT NAME . BEHAVIOR IS SIMILAR TO CBN$ . CSN$H . CSN$ EQUF CSN$H-HMX,X1 LMJ A3,INIT . INITIALIZE IF NECESSARY JN A0,CSNERR . LSSL A0,2 . MULTIPLY BY FOUR TG A0,P1LSNT . CHECK FOR IN RANGE J CSNERR . OUT OF RANGE CSNCOMH . CSNCOM EQUF CSNCOMH-HMX,X1 L A1,SNTBASE . GET SNTBASE ADDRESS J CBNCSN . GO TO COMMON CODE . . THIS ROUTINE IS A SMALL CONCISE ROUTINE TO DUMP AREAS OF MEMORY . IN ADDITION THE CONTENTS OF THE REGISTERS WHEN MIDMP IS CALLED . CAN BE DUMPED . THE CALL IS AS FOLLOWS . SLJ MIDMP9 . 'LABEL' . +RNNNNN,LOC . THE '4' BIT IN R CAUSES THE X REGISTERS TO BE DUMPED . THE '2' BIT IN R CAUSES THE A REGISTERS TO BE DUMPED . THE '1' BIT IN R CAUSES THE R REGISTERS TO BE DUMPED WDS EQU 4 LENTHB EQU 11 MIDMP9H . +0 MIDMP EQUF MIDMP9H-HMX,X1 SRSFORM FORM 2,7,2,7,2,7,2,7 S A0,SAVEA0 . SAVE A0 L A0,(SRSFORM 0,16,0,64,0,0,0,0) SRS A0,SNOTM+32 . SAVE THE R REGISTERS L A0,(SRSFORM 0,32,0,0,0,0,0,0) SRS A0,SNOTM . SAVE THE A AND X REGISTERS L A0,SAVEA0 S A0,SNOTM+12 . MOVE A0 TO CORRECT PLACE LMJ X8,CLEAR . CLEAR THE LINE IMAGE L A0,MIDMP L A0,0,A0 . IDENTIFING LABEL S A0,BF . SET INTO FIRST WORD OF LINE BUFFER L A1,(1,BFH+1) . INITIALIZE BUFFER COUNTER L,U A2,5 . SET TO MOVE 6 CHARACTERS L,U R2,5 L,H2 A5,MIDMP . GET CALLING ADDRESS LSSC A5,18 . LEFT JUSTIFY L,U X7,MI9A J OCTAL+1 . OUTPUT 6 CHARACTER ADDRESS MI9AH . MI9A EQUF MI9AH-HMX,X1 LMJ X7,PRNT L,H2 A2,MIDMP . PREPARE TO GET SECOND ARGUMENT L A8,1,A2 SSL A8,33 TOP,U A8,4 . TEST TO DUMP X REGISTERS J TESTA LMJ X8,CLEAR . CLEAR THE LINE IMAGE L A0,(0202,XREGH) LMJ X8,PRIN$T L A0,(1,SNOTM) . LOCATION OF X REGISTERS L,U A3,11 . NUMBER OF X REGISTERS L,U A2,0 . LOCATION TO EDIT LMJ X9,GROUP TESTAH . TESTA EQUF TESTAH-HMX,X1 TOP,U A8,2 . TEST TO DUMP A REGISTERS J TESTR LMJ X8,CLEAR L A0,(0202,AREGH) LMJ X8,PRIN$T L A0,(1,SNOTM+12) . LOCATION OF A REGISTERS L,U A3,19 . NUMBER OF A REGISTERS L,U A2,12 . LOCATION TO EDIT LMJ X9,GROUP TESTRH . TESTR EQUF TESTRH-HMX,X1 TOP,U A8,1 J REGULAR LMJ X8,CLEAR L A0,(0202,RREGH) LMJ X8,PRIN$T L A0,(1,CONTM+32) . START OF R REGISTERS L,U A3,14 . NUMBER OF R REGISTERS L,U A2,64 LMJ X9,GROUP REGULARH REGULAR EQUF REGULARH-HMX,X1 L,H2 A2,MIDMP . PREPARE TO GET SECOND ARGUMENT L,H2 A0,1,A2 . LOCATION TO DUMP L A3,1,A2 LSSL A3,3 . THROW AWAY REGISTER BITS SSL A3,21 AN,U A3,1 . CORRECT FOR JGD LXI,U A0,1 A,U A2,2 . FIX UP RETURN ADDRESS S,H2 A2,MIDMP JN A3,MID02 . SKIP TO EXIT NOTHING TO DO L A2,A0 . LOCATION TO EDIT AND TO PRINT ARE THE LMJ X9,GROUP MID02H . RESTORE REGISTERS AND RETURN MID02 EQUF MID02H-HMX,X1 L A0,(SRSFORM 0,16,0,64,0,0,0,0) LRS A0,SNOTM+32 . RESTORE R REGISTERS L A0,(SRSFORM 0,32,0,0,0,0,0,0) LRS A0,SNOTM . RESTORE A AND X REGISTERS L,H2 X8,MIDMP . ALLOW RETURNS TO HIGH MEMORY J 0,X8 GROUPH . GROUP EQUF GROUPH-HMX,X1 . THIS SECTION CALLED VIA AN LMJ X9,GROUP L A1,(1,BFH+1) . INITIALIZE BUFFER COUNTER S A2,A7 . SAVE LOCATION TO EDIT L,U A2,5 . INITIALIZE CHARACTER COUNTER MID01H . MID01 EQUF MID01H-HMX,X1 . TEST IF READY TO OUTPUT LINE LMJ X10,TESTMID L A5,0,*A0 . GET WORD TO DUMP LMJ X7,OCTAL . CONVERT IT TO OCTAL JGD A3,MID01 . ARE WE D0NE TZ FIRST . TEST FOR PARTIAL LINE TO PRINT LMJ X7,PRNT J 0,X9 . TESTMIDH . TESTMID EQUF TESTMIDH-HMX,X1 L A6,A0 . SAVE LOCATION OF DATA TZ FIRST . ARE WE AT BEGINNING OF A LINE J TEST01 TEST04H . TEST04 EQUF TEST04H-HMX,X1 LMJ X8,CLEAR . SET LINE IMAGE TO BLANKS L A1,(1,BFH) L,U A2,5 . SET FOR SIX CHARACTERS L,U X7,TEST01 L A5,A7 . LOCATION TO EDIT A,U A7,4 . BUMB ADDRESS TO NEXT LINE L,U R2,5 . PRINT 6 DIGITS OF LOCATION LSSL A5,18 J OCTAL+1 TEST01H . TEST01 EQUF TEST01H-HMX,X1 L A0,FIRST . HAS LINE BEEN FILLED WITH WDS TG,U A0,WDS . NUMBERS PLUS ADDRESS J TEST02 A,U A0,1 S A0,FIRST . COUNT NEXT ENTRY IN LINE L A0,A6 . RESTORE A0 FROM SCRATCH AREA J 0,X10 TEST02H . TEST02 EQUF TEST02H-HMX,X1 SZ FIRST . RESET NUMBER OF WRDS IN BUFFER COUNTER LMJ X7,PRNT J TEST04 . OCTALH . OCTAL EQUF OCTALH-HMX,X1 . L,U R2,11 . GET READY TO SEND 12 CHARACTERS L,U A4,5 . FIRST SEND 2 BLANKS LMJ X6,DSPAT OCTO2H . OCTO2 EQUF OCTO2H-HMX,X1 SZ A4 . A5 CONTAINS WORD TO EDIT INTO BF LDSL A4,3 . GET LEADING CHARACTER A,U A4,060 . CONVERT NUMBER TO FIELDATA LMJ X6,DSPAT JGD R2,OCTO2 . HAVE ALL CHARACTERS BEEN SENT J 0,X7 . DSPATH . DSPAT EQUF DSPATH-HMX,X1 EX MID05,A2 . REG A4 TO LINE BUFFER JGD A2,0,X6 L,U A2,5 . MOVE TO NEXT WORD IN LINE BUFFER J 0,X6 PRNTH . PRNT EQUF PRNTH-HMX,X1 L A0,(0113,BFH) LMJ X8,PRIN$T SZ FIRST J 0,X7 . CLEARH . CLEAR EQUF CLEARH-HMX,X1 L,U R1,LENTHB L A0,(1,BFH) L,U A1,(' ') BT A0,0,*A1 . CLEAR LINE IMAGE TO BLANKS J 0,X8 . RETURN TO USER FIRSTH . +0 FIRST EQUF FIRSTH-HMX,X1 XREGH . XREG EQUF XREGH-HMX,X1 ' X-REGISTERS' AREGH . AREG EQUF AREGH-HMX,X1 ' A-REGISTERS ' RREGH . RREG EQUF RREGH-HMX,X1 ' R-REGISTERS' BFH . BF EQUF BFH-HMX,X1 RES LENTHB . LINE BUFFER JAZZ RES 100 . USED TO STORE EDITING PARAMETERS SW1H RES 1 SW1 EQUF SW1H-HMX,X1 CARRY EQUF SW1,,S1 OVFL EQUF SW1,,S2 QW EQUF SW1,,S3 SW2H RES 1 SW2 EQUF SW2H-HMX,X1 D18 EQUF SW2,0,S1 . PSR AUTO-SWITCH ENABLE BIT SAMELT EQUF SW2,0,S3 . FLAG TO INDICATE SAME ELT, DIFLC AUTSW EQUF SW2,0,S5 SW3H RES 1 SW3 EQUF SW3H-HMX,X1 QWSIM EQUF SW3,0,S1 . JGDX EQU 070 . OPCODE INDEX FOR JGD INSTRUCTION ERX EQU ((+(ER 0))*/(-26)**01777)-(071*/4-071) ADDRSWH +0,0,0,0,0,0 . ADDRESSING SWITCHES ADDRSW EQUF ADDRSWH-HMX,X1 TAB EQUF ADDRSW,,S1 CORE REFERENCE COUNT LOK EQUF ADDRSW,,S2 STORAGE LIMITS VIOLATION SWITCH MEDIAT EQUF ADDRSW,,S3 J = M OR XM SWITCH RIP EQUF ADDRSW,,S4 REPEAT IN PROGRESS SWITCH SKIP EQUF ADDRSW,,S5 SKIP CONDITION MET SWITCH BTFJ EQUF ADDRSW,,S6 SW3 EQUF SW3H-HMX,X1 FLAGXH RES 1 FLAGX EQUF FLAGXH-HMX,X1 REMOTE EQUF FLAGX,,S1 CCALL EQUF FLAGX,,S2 . CONTINGENCY CALL REMBRK EQUF FLAGX,,S3 CONTINGF EQUF FLAGX,,S4 . SET WHILE PROCESSING A CONTINGENCY EDSW1X RES 1 EDSW1 EQUF EDSW1X-HMX,X1 ERPT EQUF EDSW1,,S1 ERPT1 EQUF EDSW1,,S4 EEX EQUF EDSW1,,S2 EEX1 EQUF EDSW1,,S5 EIND EQUF EDSW1,,S3 EIND1 EQUF EDSW1,,S6 EDSW2X RES 2 EDSW2 EQUF EDSW2X-HMX,X1 NOUT EQUF EDSW2,,S1 . RE-EDIT FLAG TRAP EQUF EDSW2,,S3 ESKIP EQUF EDSW2,,S4 EJUMP EQUF EDSW2,,S5 FLAGYH RES 1 FLAGY EQUF FLAGYH-HMX,X1 WASRLB EQUF FLAGY,,S1 . WAS IN RLIB$ FLAG RLIB$T EQUF FLAGY,,S2 . RLIB$ TRACE MODE (1=TRACE, 0=DONT) ECHO EQUF FLAGY,,S3 . ALT PRINT ECHO CMODE EQUF FLAGY,,S4 . SET WHILE PROCESSING A CONTINGENCY BBFLGH +0 BBFLG EQUF BBFLGH-HMX,X1 . FLAG WORD FOR BIT INSTRUCTIONS BBSF EQUF BBFLG,,S1 . SUB FUNCTION (J-FACTOR) FOR BIT INS BBRPT EQUF BBFLG,,S2 . NON ZERO WHEN BIT INS INITIALIZED BBSO EQUF BBFLG,,S3 . ZERO TO SAVE ORIGINAL VALUES BBNR1 EQUF BBFLG,,S4 . A REPEAT INST THAT DOES NOT USE R1 BBCFM EQUF BBFLG,,S5 . CHARATER FORMAT FIELD BBFLG2H +0 . SECOND WORD OF FLAGS FOR BIT INSTRUCTIONS BBFLG2 EQUF BBFLG2H-HMX,X1 BBNREG EQUF BBFLG2,,S1 . NUMBER OF REGISTERS FOR EDIT INS BBNUSR EQUF BBFLG2,,S2 . NUMBER OF CORE LOCATIONS TO EDIT BBFREG EQUF BBFLG2,,Q3 . FIRST A REGISTER FOR EDIT INSTRUCTIONS BBDC EQUF BBFLG2,,Q4 . DIGIT COUNT WITH A INSTRUCTIONS BBFLG3H +0 . THIRD WORD OF FLAGS FOR BIT INSTRUCTIONS BBFLG3 EQUF BBFLG3H-HMX,X1 BBDISLG EQUF BBFLG3,,Q1 WINHH +0,0,0,0,0,0 . WRITE INHIBIT BITS (S5,S6 UNUSED) WINH EQUF WINHH-HMX,X1 WINHMI EQUF WINH,,S1 . MAIN IBANK WINHMD EQUF WINH,,S2 . MAIN DBANK WINHUI EQUF WINH,,S3 . UTILITY IBANK WINHUD EQUF WINH,,S4 . UTILITY DBANK MCTLNG EQU 4 MCTBEG EQU 016 . OFFSET FROM START OF MCT MCTSYSH RES MCTLNG MCTPKT +3,MCTSYSH +MCTLNG,MCTBEG MCTSYS EQUF MCTSYSH-HMX,X1 LPCT EQU 0131 . THE FOLLOWING IS USED TO GENERATE PRNT IMAGES LINE RES 24 PCTH RES LPCT PCT EQUF PCTH-HMX,X1 CONWRD EQUF 06+PCT PTYPE EQUF PCT+030,0,S2 BDP EQUF PCT+0106,0,H2 LBDT EQU 030 BDTH RES LBDT . RESERVE SPSCE FOR BDT (BANK DESCRIPTOR) BDT EQUF BDTH-HMX,X1 GADUMPH +0 GADUMP EQUF GADUMPH-HMX,X1 INCRX RES 1 . USED WHEN INCREMET BIT IS ON INDEX INCR EQUF INCRX-HMX,X1 ICOUNTX RES 1 . COUNTS INSTRUCTIONS SINCE LAST PRINTING ICOUNT EQUF ICOUNTX-HMX,X1 ICFREQH +1*/10-1 ICFREQ EQUF ICFREQH-HMX,X1 ICOUNTPH RES 1 . NUMBER OF PRINTED INSTRUCTIONS ICOUNTP EQUF ICOUNTPH-HMX,X1 USYMX RES 1 . U FIELD SYMBOL USYM EQUF USYMX-HMX,X1 RELINSXH RES 1 RELINSX EQUF RELINSXH-HMX,X1 . SAVES EXIT FOR RELINS PKTS RES 64 . USED FOR PACKET STORAGE RELSTRH RES 2 RELSTR EQUF RELSTRH-HMX,X1 OLDELTH RES 2 OLDELT EQUF OLDELTH-HMX,X1 OLDLCH RES 1 OLDLC EQUF OLDLCH-HMX,X1 RELPRH RES 1 RELPR EQUF RELPRH-HMX,X1 RELLIMH RES 2 RELLIM EQUF RELLIMH-HMX,X1 RELSVH RES 3 . USED IN TREAD CODE RELSV EQUF RELSVH-HMX,X1 PCONWH RES 1 PCONW EQUF PCONWH-HMX,X1 . PACKET CONTROL WORD SNAPPKH RES 3 . PACKET FOR SNAP$ ER SIMULATION SNAPPK EQUF SNAPPKH-HMX,X1 SRSDUMPH +0 SRSDUMP EQUF SRSDUMPH-HMX,X1 SUBFCAH +0 SUBFCA EQUF SUBFCAH-HMX,X1 . ADDRESS OF SUBFUNCTION WORD SUBFCTH +0 SUBFCT EQUF SUBFCTH-HMX,X1 . SUBFUNCTION MNEMONIC (MSCON$, ETC) SYMLOCH +0 . PRESERVES SYMBOL TABLE MECHANISM SYMLOC EQUF SYMLOCH-HMX,X1 . CONTXH +0 CONTX EQUF CONTXH-HMX,X1 . SAVES EXIT FOR CONT CONTZXH +0 . CONTZX EQUF CONTZXH-HMX,X1 . SAVES EXIT FOR CONTZ . THE FOLLOWING TABLE IS USED TO SAVE PARAMETRS FOR OCTAL . CONVERSION. . H1 IS THE VALUE OF THE VALUE TO SHIFT RIGHT AFTER NORMALIZING . H2 IS THE NUMBER OF BITS TO TRANSLATE OCTCTD . +0,72,12,0 . 0 +1,72,12,0 . 1 +2,72,12,0 . 2 +0,66,11,0 . 3 +1,66,11,0 . 4 +2,66,11,0 . 5 +0,60,10,0 . 6 +1,60,10,0 . 7 +2,60,10,0 . 8 +0,54,9,0 . 9 +1,54,9,0 . 10 +2,54,9,0 . 11 +0,48,8,0 . 12 +1,48,8,0 . 13 +2,48,8,0 . 14 +0,42,7,0 . 15 +1,42,7,0 . 16 +2,42,7,0 . 17 +0,36,6,0 . 18 +1,36,6,0 . 19 +2,36,6,0 . 20 +0,30,5,0 . 21 +1,30,5,0 . 22 +2,30,5,0 . 23 +0,24,4,0 . 24 +1,24,4,0 . 25 +2,24,4,0 . 26 +0,18,3,0 . 27 +1,18,3,0 . 28 +2,18,3,0 . 29 +0,12,2,0 . 30 +1,12,2,0 . 31 +2,12,2,0 . 32 +0,6,1,0 . 33 +1,6,1,0 . 34 +2,6,1,0 . 35 . THE FOLLOWING ARE THE TABLES AND FUNCTION CODES . TO DO AN OCTAL EDIT WITH THE BMTC INSTRUCTION IC1ST RES 1 . CHARACTER FOR IC1 SAVED HERE EO1TB +0 . BINARY NUMBER TO EDIT GOES HERE EF1SV EQUF EO1TB-HMX,X1 . USED BY EF1 BMTCF +0,6,X6,X9,0,0,0 . DESCRIPTOR WORD 1 BMTCF +0,3,X7,X5,1,0,0 . DESCRIPTOR WORD 2 ASCII EO1TR '0123' . FIRST FOUR ENTRIES OF TRANSLATION TABLE '4567' . SECOND FOUR ENTRIES OF TRANSLATION TABLE FIELDATA EO1CMD +0 . COMMAND STRING STORED IN Q1 ICNTPK +EDCS$,EDDF$, 040, EDCSS$+5 +0, +0, +0, +0 EDDEFRM1 2,12,5,0,X7,0,0 EDDEFRM2 0,1,0,X9,0,0 SGNLNE 'SNOOPY 90J LINE= ' BMTCF 0,6,X6,X9,0,0,0 BMTCF 0,6,0,X5,1,0,0 SGNCMD . +BCMNT$+12, +BCMNT$+2, +BCIN$+1, +':' +BCMNT$+2, +BCIN$+1, +':', +BCMNT$+2 +BCIN$+2, +' ', +' ', +BCMNT$+2 +BCIN$+1, +'/', +BCMNT$+2, BCIN$+1 +'/', +BCMNT$+2, BCMNT$+7, +0 . . THE FOLLOWING THREE WORDS ARE FOR THE ROUTINE EF1 EF1CMD +0,0,0,0 . BIT MOVE AND COMPARE WITH @ SIGN BMTCF +0,6,X6,X9,0,0,0 BMTCF +0,6,0,X5,1,0,0 EF1CMDA +0,0100,0,0 . BIT MOVE AND COMPARE WITH @ SIGN BMTCF +0,9,X6,X9,0,0,0 BMTCF +0,9,0,X5,1,0,0 . THE FOLLOWING WORD IS SPECIAL FOR THE ROUTINE EF3 EF3CMD +0,05,0,0 . BIT MOVE AND COMPARE WITH BLANK BMTCF +0,6,X6,X9,0,0,0 BMTCF +0,6,0,X5,1,0,0 BMTCFC +0 . USED IN INTERPRETING BMTC CONTROL STRING BMLFRM 0,X9,0,0 BMLFRM 0,A1,0,0 EF2ZZH RES 2 EF2ZZ EQUF EF2ZZH-HMX,X1 . SAVES TWO WORD VASLUE FOR EF2 ESAVEH RES 9 ESAVE EQUF ESAVEH-HMX,X1 . USED IN EDIT SECTION EDITQH +0 EDITQ EQUF EDITQH-HMX,X1 . SAVES EXIT FOR EDIT EDITORQH +0 EDITORQ EQUF EDITORQH-HMX,X1 . SAVES EXIT FOR EDITOR ECOREX8H RES 1 . SAVES EXIT FOR ECORE ECOREX8 EQUF ECOREX8H-HMX,X1 BBPKTH RES 2 . USED TO BUILD PACKETS FOR BIT INSTRUCT BBPKT EQUF BBPKTH-HMX,X1 SAVEFIH +0 . SAVES FUNCTION INDEX SAVEFI EQUF SAVEFIH-HMX,X1 SAVEINH +0 . SAVES CURRENT INSTRUCTION SAVEIN EQUF SAVEINH-HMX,X1 SAVEPH +0 . SAVES INSTRUCTIO COUNTER SAVEP EQUF SAVEPH-HMX,X1 SAVEX6H +0 . SAVES X6 THRU BIT REGISTER LOADING SAVEX6 EQUF SAVEX6H-HMX,X1 SAVEX7H +0 . SAVES X7 THRU BIT REGISTER LOADING SAVEX7 EQUF SAVEX7H-HMX,X1 SAVEX11H +0 . SAVE X11 THRU DUMMY SAVEX11 EQUF SAVEX11H-HMX,X1 SAVEA7H +0 . SAVE SNOOPY REGISTER FOR EDIT INS SAVEA7 EQUF SAVEA7H-HMX,X1 SAVEA8H +0 . SAVE SNOOPY REGISTER FOR EDIT INS SAVEA8 EQUF SAVEA8H-HMX,X1 SAVEA9H +0 . SAVE SNOOPY REGISTER FOR EDIT INSTRUCTION SAVEA9 EQUF SAVEA9H-HMX,X1 SAVEA10H +0 . SAVE SNOOPY REGISTER FOR EDIT INSTRUCTION SAVEA10 EQUF SAVEA10H-HMX,X1 SAVEA5FH +0 . SAVE FLAG BITS THRU DUMMY SAVEA5F EQUF SAVEA5FH-HMX,X1 SAVEA5VH +0 . SAVE A5 TILL IT CAN BE SAVED SAVEA5V EQUF SAVEA5VH-HMX,X1 SAVESOH +0 . SAVE ORIGINAL VALUE OF SOURCE SAVESO EQUF SAVESOH-HMX,X1 SAVEDSH +0 . SAVE ORIGINAL VALUE OF DESTINATION SAVEDS EQUF SAVEDSH-HMX,X1 EFFADH +0 . SAVES EFFECTIVE ADDRESS EFFAD EQUF EFFADH-HMX,X1 BRKICH -1 BRKIC EQUF BRKICH-HMX,X1 ECADXH +0 . SAVES EXIT FOR ECAD ECADX EQUF ECADXH-HMX,X1 EDLPCTH +0 . CONTAINS CURRENT VALUE OF LOOP COUNT EDLPCT EQUF EDLPCTH-HMX,X1 REMSVH RES 5 REMSV EQUF REMSVH-HMX,X1 . USED AS A SCRATCH AREA ICNTXH RES 1 . SAVE RETURN POINT FOR ICNT LLCORE EQU 0 . LENGTH OF LOW CORE LCOREH RES LLCORE LCORE EQUF LCOREH-HMX,X1 . SIMULATED LOW CORE ICNTX EQUF ICNTXH-HMX,X1 ASCII ICNMSG1 ' INSTRUCTION CYCLE COUNT:@ ' ICNMSG2 ', PRINTED@' FIELDATA SNODEC ' SNOOPY DETECTED CONTINGENCY IN USER CODE ' PPACK ' PACKET:@' FUNCP ' FUNCTION:@' KLUDGEH +0 KLUDGE EQUF KLUDGEH-HMX,X1 . SAVES INDEX INTO JAZZ QMSG 'QUARTER-WORD MODE ' LQMSG EQU $-QMSG EXMSG '*** LEAVE TRACE MODE ***' LEXMSG EQU $-EXMSG ICMSG 'INSTRUCTION CYCLE COUNT: ' LICMSG EQU $-ICMSG ECMOD 'ENTER CONTINGENCY MODE' . LECMOD EQU $-ECMOD . NOTON 'EXIT$ TERMINATION--TON$ NOT POSSIBLE' CINC 'CONTINGENCY IN CONTINGENCY ROUTINE--STANDARD ACTION TAKEN' LCINC EQU $-CINC . NOTREC 'INVALID COMMAND:' . NOTRCC ' ' . LNOTRC EQU $-NOTREC . LCMOD 'LEAVE CONTINGENCY MODE' . LLCMOD EQU $-LCMOD . MSEG 'RELOAD OF MAIN SEGMENT--TRACE ENDS' LMSEG EQU $-MSEG . GTDCBK ' GUARANTEED ENTRY ' COMBNK 'COMMON BANK CANNOT BE TRACED' LCOMBK EQU $-COMBNK . LGTDCB EQU $-GTDCBK . NOBNK 'LIJ/LDJ DEACTIVATES SNOOPY''S BANK' LNOBNK EQU $-NOBNK . STARTADD 'STARTING ADDRESS @' ACTBNK 'ACTIVE BANKS:@ ' RLIBELT ' (RLIB$ ELT) ' ACTSEG 'ACTIVE SEGS: @' FILENM 'FILENAME: @' STARTZH +0 STARTLZH +0 STARTZ EQUF STARTZH-HMX,X1 . SAVES EXIT FOR STARTX STARTLZ EQUF STARTLZH-HMX,X1 . SAVES EXIT FOR STARTL DMSG1 'DUMP OF PROGRAM STATUS' LDMSG1 EQU $-DMSG1 DMSG2 ' CARRY TOGGLE: ' DMSG21H RES 1 DMSG21 EQUF DMSG21H-HMX,X1 ' OVERFLOW TOGGLE: ' DMSG22H RES 1 DMSG22 EQUF DMSG22H-HMX,X1 LDMSG2 EQU $-DMSG2 DMSG3 'REGISTER CONTENTS' LDMSG3 EQU $-DMSG3 DMPF FORM 6,6,6,18 DUMPT DMPF 'X',6+14,7,CONTM+X1 DMPF ' ',6,4,CONTM+X8 DMPF ' ',,,0 DMPF 'A',6,8,CONTM+A0 DMPF ' ',6,8,CONTM+A8 DMPF ' ',6,4,CONTM+A15+1 DMPF ' ',,,0 DMPF 'R',6+14,7,CONTM+R1 DMPF ' ',6,8,CONTM+R8 DMPF ' ',,,0 LDUMPT EQU $-DUMPT DUMPTA EQU DUMPT+3 . DUMPTX EQU DUMPT+0 . DUMPTR EQU DUMPT+7 . DUMPXXH RES 1 DUMPXX EQUF DUMPXXH-HMX,X1 . SAVES EXIT FOR DUMP DUMP4H RES 1 DUMP4 EQUF DUMP4H-HMX,X1 DUMPSZH RES 1 DUMPSZ EQUF DUMPSZH-HMX,X1 . SAVES EXIT FOR COMMON PART . BANK AND SEGMENT DUMP DUMPBYH RES 1 DUMPBY EQUF DUMPBYH-HMX,X1 CSFERM 'CSF$ ERROR' . NOIMS 'SNOOPY--II NOT ACTIVE' . NORBK 'NO CONTINGENCY POINT EXISTS FOR RBK' LNORBK EQU $-NORBK . LNOIMS EQU 6*($-NOIMS) . CHARACTER COUNT NOICOM + 0 . SNAPK + 'CTNGCY' . SNAP PACKET + 0700002,CTNG . . . DEFINED ER'S ERTAB . + EXIT$,LEAVEX + 'EXIT$' + ERR$,ERFA0H + 'ERR$' + ABORT$,ERFA0H + 'ABORT$' + READ$,READH + 'READ$' + PRINT$,PRINTH + 'PRINT$' + CSF$,CSFH + 'CSF$' + OPT$,ERFA0H + 'OPT$' + TWAIT$,ERFA1H + 'TWAIT$' + DATE$,ERFH + 'DATE$' + TDATE$,ERFA0H + 'TDATE$' + TIME$,ERFA0H + 'TIME$' + COND$,ERFA0H + 'COND$' + SETC$,ERFA0H + 'SETC$' + PUNCH$,PUNCHH + 'PUNCH$' + PRTCN$,CONTRH + 'PRTCN$' + PCHCN$,CONTRH + 'PCHCN$' + PRTCA$,CONTRH + 'PRTCA$' + PCHCA$,CONTRH + 'PCHCA$' + PRNTA$,PRNTAH + 'PRNTA$' + READA$,READAH + 'READA$' + PNCHA$,PNCHAH + 'PNCHA$' + IO$,IOERH + 'IO$' + IOW$,IOERH + 'IOW$' + WAIT$,WAITH + 'WAIT$' + PFS$,PFPH + 'PFS$' + PFI$,PFPH + 'PFI$' + PFWL$,PFPH + 'PFWL$' + PFUWL$,PFPH + 'PFUWL$' + PFD$,PFPH + 'PFD$' + TREAD$,TREADH . + 'TREAD$' . + SWAIT$,SWAITH . + 'SWAIT$' . + IALL$,IALLH . + 'IALL$' . + FACIL$,FACILTH . + 'FACIL$' . + FACIT$,FACILTH . + 'FACIT$' . + MCORE$,MCOREH . + 'MCORE$' . + LCORE$,LCOREXH . + 'LCORE$' . + PSR$,PSRH . + 'PSR$' . + LOAD$,LOADH . + 'LOAD$' . + SNAP$,SNAPH . + 'SNAP$' . + FORK$,FORKSH . + 'FORK$' . + TFORK$,FORKSH . + 'TFORK$' . + AREAD$,READH . + 'AREAD$' . + APRINT$,PRINTH . + 'APRINT' . $ SUPPLIED BY SPECIAL CODE + APUNCH$,PUNCHH . + 'APUNCH' . + APRTCN$,CONTRH . + 'APRTCN' . + APCHCN$,CONTRH . + 'APCHCN' . + APRTCA$,CONTRH . + 'APRTCA' . + APCHCA$,CONTRH . + 'APCHCA' . + AREADA$,READAH . + 'AREADA' . + APRNTA$,PRNTAH . + 'APRNTA' . + APNCHA$,PNCHAH . + 'APNCHA' . + FITEM$,FACILTH . + 'FITEM$' . + MSCON$,MSCONH . + 'MSCON$' . + ACSF$,CSFH . + 'ACSF$ ' . + ATREAD$,TREADH . + 'ATREAD' . + CRTN$,CRTNH + 'CRTN$' . + CTS$,CTSAQH . + 'CTS$' . + CTSA$,CTSAQH . + 'CTSA$' . + CTSQ$,CTSAQH . + 'CTSQ$' . +INFO$,INFO$H 'INFO$' +CLIST$,CLIST$H 'CLIST$' LASTER + $-$,ERFH SPECIAL FUDGE + 0 . LERTAB EQU ($-ERTAB)/2 NUMBER OF ENTRIES . PFPTAB + 01400,PFI$ . + 01400,PFS$ . + 01000,PFD$ . + 0200,PFUWL$ . + 0200,PFWL$ . LPFPTB EQU $-PFPTAB . MSCTAB . + 010500,DGET$ . + 'DGET$' . + 010600,DGETP$ . + 'DGETP$' . + 010500,DREAD$ . + 'DREAD$' . + 010400,DBITS$ . + 'DBITS$' . + 010700,010000+DBACK$ . VARIABLE PACKET SIZE + 'DBACK$' . + 010500,DLAPS$ . + 'DLAPS$' . + 010400,DUNLD$ . + 'DUNLD$' . + 010400,DCYC$ . + 'DCYC$' . + 010700,DKEY$ . + 'DKEY$' . + 010500,DBB$ . + 'DBB$' . + 011200,DREG$ . + 'DREG$' . + 060300,2*/12+MSALL$ . NO FILE NAME + 'MSALL$' . LMSCTB EQU ($-MSCTAB)/2 . LENGTH OF TABLE + 060500,0 . DUMMY ENTRY--DUMPS FIVE WORDS FOR NEW ON + 0 . OBVIOUSLY NO MNEMONIC . P PROC 2,1 EDS* NAME A('F') EQU FLD A('A') EQU AFLD A('2') EQU AFLD2 A('J') EQU JFLD A('R') EQU RFLD A('P') EQU RPET A('M') EQU MKS A('X') EQU XFLD A('B') EQU BCH A('3') EQU AFLD3 B(0) EQU 0 I DO P(2) ,B(0) EQU B(0)+1*/(A(P(2,I))-BIT) F FORM 24,12 F P(1,1),B(0) END F66618 FORM 6,6,6,18 . P PROC 1,1 . FANOUT* NAME 0 . F66618 0,P(1,2),P(1,3),P(1,1)-FTAB2 END . FTAB2 . . J ILOP 00 ILOP SA A3,COREB 01 SA SNA A3,COREB 02 SNA SMA A3,COREB 03 SMA SA A3,COREB 04 SR FANOUT I05,20 . 05XX FANOUT BY A DESIGNATOR SX A3,COREB 06 SX FANOUT I07 . 07XX FANOUT BY J-DESIGNATOR LA A3,COREB 10 LA LNA A3,COREB 11 LNA LMA A3,COREB 12 LMA LNMA A3,COREB 13 LNMA AA A3,COREB 14 AA ANA A3,COREB 15 ANA AMA A3,COREB 16 AMA ANMA A3,COREB 17 ANMA AU A3,COREB 20 AU ANU A3,COREB 21 ANU BT A0,COREB,X9 22 BT LA A3,COREB 23 LR AX A3,COREB 24 AX ANX A3,COREB 25 ANX LXM A3,COREB 26 LXM LX A3,COREB 27 LX MI A3,COREB 30 MI MSI A3,COREB 31 MSI MF A3,COREB 32 MF J ILOP 33 ILOP DI A3,COREB 34 DI DSF A3,COREB 35 DSF DF A3,COREB 36 DF FANOUT I37 . 37XX FANOUT BY J DESIGNATOR OR A3,COREB 40 OR XOR A3,COREB 41 XOR AND A3,COREB 42 AND MLU A3,COREB 43 MLU TEP A3,COREB 44 TEP TOP A3,COREB 45 TOP LXI A3,COREB 46 LXI TLEM A3,COREB 47 TLEM TZ COREB 50 TZ TNZ COREB 51 TNZ TE A3,COREB 52 TE TNE A3,COREB 53 TNE TLE A3,COREB 54 TLE TG A3,COREB 55 TG TW A3,COREB 56 TW TNW A3,COREB 57 TNW TP COREB 60 TP TN COREB 61 TN SE A3,COREB 62 SE SNE A3,COREB 63 SNE SLE A3,COREB 64 SLE SG A3,COREB 65 SG SW A3,COREB 66 SW SNW A3,COREB 67 SNW JGD A3,JUMPR 70 JGD MSE A3,COREB 7100 MSE MSNE A3,COREB 7101 MSNE MSLE A3,COREB 7102 MSLE MSG A3,COREB 7103 MSG MSW A3,COREB 7104 MSW MSNW A3,COREB 7105 MSNW MASL A3,COREB 7106 MASL MASG A3,COREB 7107 MASG DA A3,COREB 7110 DA DAN A3,COREB 7111 DAN DS A3,COREB 7112 DS DL A3,COREB 7113 DL DLN A3,COREB 7114 DLN DLM A3,COREB 7115 DLM DJZ A3,JUMPR 7116 DJZ DTE A3,COREB 7117 DTE J ILOP 7200 ILOP J ISLJ 7201 SLJ JPS A3,JUMPR 7202 JPS JNS A3,JUMPR 7203 JNS AH A3,COREB 7204 AH ANH A3,COREB 7205 ANH AT A3,COREB 7206 AT ANT A3,COREB 7207 ANT EX A0 7200 EX J IER 7211 ER BN A3,COREB . 7212 BIT NORMALIZE J ILOP . 7213 NOT DEFINED BBN A3,COREB . 7214 BYTE TO BIT NORMALIZE TRA A3,COREB . 7215 TEST RELATIVE ADDRESS J SRSQ . 7216 STORE REGISTER SET J LRSQ . 7217 RESTORE REGISTER SET SSC A3,,A0 7300 SSC DSC A3,,A0 7301 DSC SSL A3,,A0 7302 SSL DSL A3,,A0 7303 DSL SSA A3,,A0 7304 SSA DSA A3,,A0 7305 DSA LSC A3,COREB 7306 LSC DLSC A3,COREB 7307 DLSC LSSC A3,,A0 7310 LSSC LDSC A3,,A0 7311 LDSC LSSL A3,,A0 7312 LSSA LDSL A3,,A0 7313 LDSA NOP 0 . 7314 NO OPERATION FANOUT I7315 J ILOP . 7316 NOT DEFINED FANOUT I7317,3 . 7317XX FANOUT BY A-DESIGNATOR JZ A3,JUMPR 7400 JZ JNZ A3,JUMPR 7401 JNZ JP A3,JUMPR 7402 JP JN A3,JUMPR 7403 JN JK 0,JUMPR 7404 JK OR J HJ JUMPR 7405 HJ NOP A0,0 7406 NOP AAIJ JUMPR 7407 AAIJ JNB A3,JUMPR 7410 JNB JB A3,JUMPR 7411 JB JMGI A3,JUMPR 7412 JMGI J ILMJ 7413 LMJ FANOUT I7414,4 . 7414XX FANOUT BY A-DESIGNATOR FANOUT I7415,4 . 7415XX FANOUT BY A-DESIGNATOR LMJ X8,IJC . 7416 JC LMJ X8,IJNC . 7417 JNC . LBU JJJJ . 7500 LOAD BASE REGISTER NOP . LBU REQUIRES A PP = 0 . LBUI JJJJ . 7501 LOAD BASE REGISTER USER INDIRECT NOP . LBUI REQUIRES A PP = 0 . SBU JJJJ . 7502 STORE BASE USER NOP . SBU REQUIRES A PP = 0 . LBE JJJJ . 7503 LOAD BASE REGISTER EXEC /0 NOP . LBE REQUIRES A PP = 0 . LBE0 JJJJ . 7504 LOAD BASE REGISTER EXEC /0 WORD 0 NOP . LBE0 REQUIES A PP = 0 . LBE1 JJJJ . 7505 LOAD BASE REGISTER EXEC /0 WORD 1 NOP . LBE1 REQUIRES A PP = 0 . LBU0 JJJJ . 7506 LOAD BASE REGISTER USER WORD 0 NOP . LBU0 REQUIRES A PP = 0 . LBU1 JJJJ . 7507 LOAD BASE REGISTER USER WORD 1 NOP . LBU1 REQUIRES A PP= 0 . TVA JJJJ . 7510TEST VIRTUAL ADDRESS NOP . TVA REQUIRES A PP= 0 . TVAE JJJJ . 7511 TEST VIRTUAL ADDRESS IN ENVIRONME NOP . TVAE REQUIRES A PP = 1 J ILOP NOT DEFINED . LXLM JJJJ . 7513 LOAD X REGISTER LONG MODIFIER NOP . LXLM REQUIRES A PP = 0 . LBN JJJJ . 7514 LOAD BANK NAME NOP . LBN REQUIRES A PP = 0 . CR JJJJ . 7515 CONDITIONAL REPLACE NOP . CR REQUIRES A PP = 0 J ILOP . 7516 NOT DEFINED J ILOP . 7517 READ MASTER DAYCLOCK FA A3,COREB 7600 FAN A3,COREB 7601 FM A3,COREB 7602 FD A3,COREB 7603 LUF A3,COREB 7604 LCF A3,COREB 7605 MCDU A3,COREB 7606 CDU A3,COREB 7607 DFA A3,COREB 7610 DFAN A3,COREB 7611 DFM A3,COREB 7612 DFD A3,COREB 7613 DFU A3,COREB 7614 DFP A3,COREB 7615 DFP FEL A3,COREB 7616 FCL A3,COREB 7617 I DO 020 , J ILOP 7700-7717 ILOP I05 . SZ COREB . STORE ZERO SNZ COREB . STORE NEGATIVE ZERO SP1 COREB . STORE POSITIVE 1 SN1 COREB . STORE NEGATIVE 1 SFS COREB . STORE FIELDATA SPACES SFZ COREB . STORE FIELDATA ZEROES SAS COREB . STORE ASCII SPACES SAZ COREB . STORE ASCII ZEROES INC COREB . INCREASE OPERAND BY ONE DEC COREB . DECREASE OPERAND BY ONE INC2 COREB . INCREASE OPERAND BY TWO DEC2 COREB . DECREASE OPERAND BY TWO ENZ COREB . ELIMINATE NEGATIVE ZERO . ADD1 COREB . ADD ONE TO STORAGE NOP . ADD1 ONLY AVAILABLE WITH PP=0 . SUB1 COREB . SUBTRACT ONE FROM STORAGE NOP . SUB1 ONLY AVAILABLE WITH PP=0 J ILOP . NOT DEFINED I07 . ADE A3,COREB . 0700 ADD DECIMAL DADE A3,COREB . 0701 DOUBLE ADD DECIMAL SDE A3,COREB . 0702 SUBTRACT DECIMAL DSDE A3,COREB . 0703 DOUBLE SUBTRACT DECIMAL LAQW A3,COREB . 0704 LOAD A QUARTER WORD SAQW A3,COREB . 0705 STORE A QUARTER WORD DEI A3,COREB .0706 DECIMAL TO INTEGER DDEI A3,COREB . 0707 DOUBE DECIMAL TO INTEGER IDE A3,COREB . 0710 INTEGER TO DECIMAL DIDE A3,COREB . 0711 DOUBLE INTEGER TO DECIMAL J ILDJ . 0712 LDJ J ILIJ . 0713 LIJ LMJ X8,ILPD 0714 LPD LMJ X8,ISPD J ILOP . UNDEFINED OP CODE J ILBJ . 0717 LBJ I37 J ILOP . 37 00 LOAD REAL DAYCLOCK J ILOP . 3701 READ REAL DAYCLOCK J ILOP . 3702 LOAD REAL COMPARATOR J ILOP . 3703 NOT DEFINED J ILOP . 3704 SELECT MASTER DAYCLOCK J ILOP . 3705 READ SYSTEM STATUS J ILOP . 3706 SELECT LOAD PATH 0 J ILOP . 3707 NOT DEFINED BIM BBPKT . 3710 BIT MOVE BIC BBPKT . 3711 BIT COMPARE BMTC BBPKT . 3712 BIT MOVE WITH TRANSLATION AND CON BICL BBPKT . 3713 BIT COMPARE LONG BIML BBPKT . 3714 BIT MOVE LONG BDE A3,COREB . 3715 BDE BYTE TO DECIMAL DEB A3,COREB . 3716 DEB DECIMAL TO BYTE EDDE A7,BBPKT . 3717 EDIT DECIMAL I7315 . J ILOP . 731500 DIAGNOSTIC 4 J ILOP . 731501 DIAGNOSTIC 5 J ILOP . 731502 LOAD PREAKPOINT REGISTER . ACEL JJJJ . 731503 ACCELERATE USER REGISTER SET NOP . ACEL ONLY AVAILABLE WITH PP=2 . DCEL JJJJ . 731504 DECELERATE USER REGISTER SET NOP . DCEL ONLY AVAILABLE WITH PP=2 J ILOP . 731505 STORE PROCESSOR ID J ILOP . 731506 RESET AUTO-RECOVERY TIMER J ILOP . 731507 SEND J ILOP . 731510 ACK J ILOP . 731511 TPSA TEST PREVIOUS SEND AKNOWL J ILOP . 731512 NOT DEFINED J ILOP . 731513 NOT DEFINED . LD JJJJ . 731514 LOAD DESIGNTOR REGISTER NOP . LD ONLY AVAILABLE WITH PP=0 . SD JJJJ . 731515 STORE DESIGNATOR REGISTER NOP . SD ONLY AVAILABLE WITH PP = 1 . UR JJJJ . 731516 USER RETURN NOP . UR IS ONLY AVAILABLE WITH PP = 0 J ILOP . 731517 SIGNAL CONDITION I7317 . LMJ X8,TSJZP . 731700 TS LMJ X8,TSSJZP . 731701 TSS LMJ X8,TCSJZP . 731702 TSS . DO 13 , J ILOP . 7317XX ILOP I7414 . LMJ X8,IJO . 741400 JO JFU JUMPR . 741401 JFU JFO JUMPR . 741402 JFO JDF JUMPR . 741403 JDF DO 3 , J ILOP . 7414XX ILOP J ILOP . 741407 PAIJ DO 8 , J ILOP . 7414 10 TO 17 NOT DEFINED I7415 . LMJ X8,IJNO . 741500 JNO JNFU JUMPR . 741501 JNFU JNFO JUMPR . 741502 JNFO JNDF JUMPR . 741503 JNDF DO 12 , J ILOP . 7415XX ILOP . . . . P PROC 2,1 FS* NAME Q('A') EQU ADINS Q('SH') EQU SHIFT Q('R') EQU REPEAT Q('JG') EQU JGDI Q('EX') EQU EXR Q('D') EQU DWORD Q('L') EQU LODE Q('S') EQU STOR Q('J') EQU JDES Q('C') EQU CAROV Q('G') EQU GILOP Q('10') EQU G10I8 . Q('MJ') EQU MINJ . Q('MA') EQU MINA . Q('TS') EQU TSI . Q('QW') EQU QWINS . LAQW AND QAQW INSTRUCTIONS Q('BB') EQU BBINS . BIT AND BYTE 37 TYPE INSTRUCTIONS A(0) EQU 0 I DO P(2) ,A(0) EQU A(0)+1*/(Q(P(2,I))-BIT) Z FORM 6,6,24 DO P(1)=1 , Z P(1,1)-MSK,,A(0) DO P(1)=2 , Z P(1,1)-MSK,P(1,2)-AACT,A(0) END FTAB1 . OP-CODE DESCRIPTOR TABLE . FS M1 . 00 ILOP FS M1,RA1 'S','J' 01 SA FS M1,RA1 'S','J' 02 SNA FS M1,RA1 'S','J' 03 SMA FS M1,RR1 'S','J' 04 SR FS M1 . SEE F05 BELOW FS M1,RX1 'S','J' 06 SX FS M1 . 07 ILOP FS M1,RA1 'L','J' 10 LA FS M1,RA1 'L','J' 11 LNA FS M1,RA1 'L','J' 12 LMA FS M1,RA1 'L','J' 13 LNMA FS M1,RA1 'L','J','C' 14 AA FS M1,RA1 'L','J','C' 15 ANA FS M1,RA1 'L','J','C' 16 AMA FS M1,RA1 'L','J','C' 17 ANMA FS M1,RA2 'L','J','C' 20 AV FS M1,RA2 'L','J','C' 21 ANU FS M1,RBT 'J','R','L','S' 22 BT FS M1,RR1 'L','J' 23 LR FS M1,RX1 'L','J','C' 24 AX FS M1,RX1 'L','J','C' 25 ANX FS M1,RX1 'L','J' 26 LXM FS M1,RX1 'L','J' 27 LX FS M1,RA2 'L','J' 30 MI FS M1,RA1 'L','J' 31 MSI FS M1,RA2 'L','J' 32 MF FS M1 . 33 ILOP FS M1,RA2 'L','J' 34 DI FS M1,RA2 'L','J' 35 DSF FS M1,RA2 'L','J' 36 DF FS M1 . 37 SEE M37 BELOW FS M1,RA2 'L','J' 40 OR FS M1,RA2 'L','J' 41 XOR FS M1,RA2 'L','J' 42 AND FS M1,RMA2 'L','J' 43 MLU FS M1,RA1 'J','L' 44 TEP FS M1,RA1 'J','L' 45 TOP FS M1,RX1 'L','J' 46 LXI FS M1,RX1 'J','L' 47 TLEM FS M1 'J','L' 50 TZ FS M1 'J','L' 51 TNZ FS M1,RA1 'J','L' 52 TE FS M1,RA1 'J','L' 53 TNE FS M1,RA1 'J','L' 54 TLE FS M1,RA1 'J','L' 55 TG FS M1,RA2 'J','L' 56 TW FS M1,RA2 'J','L' 57 TNW FS M1 'J','L' 60 TP FS M1 'J','L' 61 TN FS M1,RA1 'J','R','L' 62 SE FS M1,RA1 'J','R','L' 63 SNE FS M1,RA1 'J','R','L' 64 SLE FS M1,RA1 'J','R','L' 65 SG FS M1,RA2 'J','R','L' 66 SW FS M1,RA2 'J','R','L' 67 SNW FS M1,RJGD 'JG','A' 70 JGD FS M1,RMA1 'R','L' 7100 MSE FS M1,RMA1 'R','L' 7101 MSNE FS M1,RMA1 'R','L' 7102 MSLE FS M1,RMA1 'R','L' 7103 MSG FS M1,RMA2 'R','L' 7104 MSW FS M1,RMA2 'R','L' 7105 MSNW FS M1,RMA1 'R','L' 7106 MASL FS M1,RMA1 'R','L' 7107 MSSG FS M1,RA2 'D','L','C' 7110 DA FS M1,RA2 'D','L','C' 7111 DAN FS M1,RA2 'D','S','L' 7112 DS FS M1,RA2 'D','L' 7113 DL FS M1,RA2 'D','L' 7114 DLN FS M1,RA2 'D','L' 7115 DLM FS M1,RA2 'A' 7116 DJZ FS M1,RA2 'D','L' 7117 DTE FS M1 . 7200 ILOP FS M1 'L','S' 7201 SLJ FS M1,RA1 'A' 7202 JPS FS M1,RA1 'A' 7203 JNS FS M1,RA1 'L' 7204 AH FS M1,RA1 'L' 7205 ANH FS M1,RA1 'L' 7206 AT FS M1,RA1 'L' 7207 ANT FS M1 'A','EX' 7210 EX FS M1 'A' 7211 ER FS M1,RX1 'L' 'C' . 7212 BN BIT NORMALIZE FS M1 . 7213 UNDEFINED FS M1,RX1 'L' 'C' . 7214 BYTE TO BIT NOMALIZRE FS M1,RX1 'A' . 7215 TEST RELATIVE ADDRESS FS M1,RA1 'S' . 7216 STORE REGISTER SET FS M1,RA1 'L' . 7217 LOAD REGISTER SET FS M1,RA1 'SH' 7300 SSC FS M1,RA2 'SH' 7301 DSC FS M1,RA1 'SH' 7302 SSL FS M1,RA2 'SH' 7303 DSL FS M1,RA1 'SH' 7304 SSA FS M1,RA2 'SH' 7305 DSA FS M1,RA2 'L' 7306 LSC FS M1,RA3 'L','D' 7307 DLSC FS M1,RA1 'SH' 7310 LSSC FS M1,RA2 'SH' 7311 LDSC FS M1,RA1 'SH' 7312 LSSL FS M1,RA2 'SH' 7313 LDSL FS M1 'G' 7314 NO OP FS M1 . 7315 SEE F7315 BELOW FS M1 . 7316 UNDEFINED FS M1 . 7317 SEE F7317 BELOW FS M1,RA1 'A' 7400 JZ FS M1,RA1 'A' 7401 JNZ FS M1,RA1 'A' 7402 JP FS M1,RA1 'A' 7403 JN FS M2 'A' 7404 JK OR J FS M1 'A' 7405 HKJ OR HJ FS M1 'A' 7406 NOP FS M1 'A' 7407 AAIJ FS M1,RA1 'A' 7410 JNB FS M1,RA1 'A' 7411 JB FS M1,RX1 'A' 7412 JMGI FS M1,RX1 'A' 7413 LMJ FS M1 . 7414 SEE F7414 BELOW FS M1 . 7415 SE F7415 BEELOW FS M1 'A' 7416 JC FS M1 'A' 7417 JNC FS M1 'G','L' 7500 LIC FS M1 'G','L' 7501 LICM FS M1 'G','A' 7502 JIC FS M1 'G' 7503 DIC FS M1 'G','L' 7504 LOC FS M1 'G','L' 7505 LOCM FS M1 'G','A' 7506 JOC FS M1 'G' 7507 DOC FS M1 'G','L' 7510 LFC FS M1 'G','L' 7511 LFCM FS M1 'G','A' 7512 JFC FS M1 'G' 7513 ILOP FS M1 'G' 7514 AACI FS M1 'G' 7515 PACI FS M1 'G' 7516 ILOP FS M1 'G' 7517 ILOP FS M1,RA2 'L' 7600 FA FS M1,RA2 'L' 7601 FAN FS M1,RA2 'L' 7602 FM FS M1,RA2 'L' 7603 FD FS M1,RA2 'L' 7604 LOF FS M1,RA2 'L' 7605 LCF FS M1,RA2 'L' 7606 MCDU FS M1,RA2 'L' 7607 CDU FS M1,RA2 'L','D' 7610 DFA FS M1,RA2 'L','D' 7611 DFAN FS M1,RA2 'L','D' 7612 DFM FS M1,RA2 'L','D' 7613 DFD FS M1,RA3 'L','D' 7614 DFU FS M1,RA3 'L','D' 7615 DLCF FS M1,RA2 'L' 7616 FEL FS M1,RA1 'L','D' 7617 FCL I DO 020 , FS M1 'A' 7700-7717 ILOP F05 FS M1 'S', 'J', 'MA' . 0500 SZ FS M1 'S', 'J', 'MA' . 0501 SNZ FS M1 'S', 'J', 'MA' . 0502 SP1 FS M1 'S', 'J', 'MA' . 0503 SN1 FS M1 'S', 'J', 'MA' . 0504 SFS FS M1 'S', 'J', 'MA' . 0505 SFZ FS M1 'S', 'J', 'MA' . 0506 SAS FS M1 'S', 'J', 'MA' . 0507 SAZ FS M1 'S', 'L', 'J' , 'C', 'MA' . 0510 INC FS M1 'S', 'L', 'J', 'C', 'MA' . 0511 DEC FS M1 'S', 'L', 'J', 'C' . 0512 INC2 FS M1 'S', 'L', 'J', 'C' . 0513 DEC2 FS M1 'S', 'L', 'J' . 0514 ENZ FS M1 'S', 'L', 'J', 'C' . 0515 ADD1 FS M1 'S', 'L', 'J', 'C' . 0516 SUB1 FS M1 . ILL OP . 05 0517 ILL OP F07 . FS M1,RA1 'L','C' . 0700 ADE ADD DECIMAL FS M1,RA2 'L','C','D' . 0701 DADE DOUBLE ADD DECIMAL FS M1,RA1 'L','C' . 0702 SDE SUBTRACT DECIMAL FS M1,RA2 'L','D','C' . 0703 DSDE DOUBLE SUBTRACT DECIMAL FS M1,RA1 'L','QW' . 0704 LOAD A QUARTER WORD FS M1,RA1 'S','QW' . 0705 SAQW STORE A QUARTER WORD FS M1,RA1 'L' . 0706 DEI DECIMAL TO INTEGER FS M1,RA2 'D','L' . 0707 DDEI DOUBLE DECIMAL TO INTEGER FS M1,RA2 'L' . 0710 IDE INTEGER TO DECIMAL FS M1,RA3 'L','D' . 0711 DIDE DOUBLE INTEGER TO DECIMAL FS M1,RX1 'A','MJ' . 0712 LDJ FS M1,RX1 'A','MJ' . 0713 LIJ FS M1 'MJ','SH' . 0714 LPD FS M1 'MJ','S' . 0715 SPD FS M1 . 0716 IS UNDEFINED FS M1,RX1 'A','MJ' . 0717 LBJ F37 . FS M1 . 3700 LOAD REAL DAYCLOCK FS M1 . 3701 READ REAL DAYCLOCK FS M1 . 3702 LOAD REAL COMPARATOR FS M1 . 3703 UNDEFINED FS M1 . 3704 SELECT DAYCLOCK MASTER FS M1 . 3705 READ SYSTEM STATUS FS M1 . 3706 SLPO FS M1 . 3707 UNDEFINED FS M1,RBB 'D', 'R','BB' . 3710 BIM BIT MOVE FS M1,RBB 'D','R','BB','C' . 3711 BIC BIT COMPARE FS M1,RBB 'D','C','R','BB' . 3712 BMTC BITMOVE WITH TRANSLATI FS M1,RBB 'D','R','BB','C' . 3713 BCIL BIT COMPARE LONG FS M1,RBB 'D','R','BB' . 3714 BIML BIT MOVE LONG FS M1,RBB 'BB','L' . 3715 BDE BYTE TO DECIMAL FS M1,RBB 'BB','S' . 3716 DEB DECIMAL TO BYTE FS M1,RBB 'BB','S' . 3717 EDDE DECIMAL F7315 . FS M1 . 731500 DIAGNOSTIC 5 FS M1 . 731501 DIAGNOSTIC 6 FS M1 . 731502 LOAD BREAKPOINT REGISTER FS M1 . 731503 ACEL ACELERATE USER SET FS M1 . 731504 DCEL DECELERATE USER SET FS M1 . 731505 SPID STORE PROCESSOR ID FS M1 . 731506 RAT RESET AUTO RECOVERY TIMER FS M1 . 731507 SEND FS M1 . 731510 ACK FS M1 . 731511 TPSA FS M1 . 731512 NOT DEFINED FS M1 . 731513 NOT DEFINED FS M1 . 731514 LD FS M1 . 731515 SD FS M1 . 731516 UR FS M1 . 731517 SIGNAL CONDITION F7317 . FS M1 'L','MA','S','TS' . 731700 TS FS M1 'L','MA','S','TS' . 731701 TSS FS M1 'L','MA','S','TS' . 731702 TCS DO 13 , FS M1 . 7317XX ILOP F7414 . FS M1 'A','MA' . 741400 JO FS M1 'A','MA' . 741401 JFU FS M1 'A','MA' . 741402 JFO FS M1 'A','MA' . 741403 JDF DO 12 , FS M1 . 7414XX ILOP F7415 . FS M1 'A','MA' . 741500 JNO FS M1 'A','MA' . 741501 JNFU FS M1 'A','MA' . 741502 JNFO FS M1 'A','MA' . 741503 JNDF DO 12 , FS M1 . 7415XX ILOP . . . P PROC 2,1 EDS* NAME A('F') EQU FLD A('A') EQU AFLD A('2') EQU AFLD2 A('J') EQU JFLD A('R') EQU RFLD A('P') EQU RPET A('M') EQU MKS A('X') EQU XFLD A('B') EQU BCH A('3') EQU AFLD3 B(0) EQU 0 I DO P(2) ,B(0) EQU B(0)+1*/(A(P(2,I))-BIT) F FORM 24,12 F P(1,1),B(0) END . ETAB . INSTRUCTION TABLE FOR EDITOR . EDS '00 ' 'F','J' 00 ILOP EDS 'SA ' 'F','A','J' 01 SA EDS 'SNA ' 'F','A','J' 02 SNA EDS 'SMA ' 'F','J','A' 03 SMA EDS 'SR ' 'F','R','J' 04 SR EDS 'SZ ' 'J' 05 SZ EDS 'SX ' 'F','X','J' 06 SX EDS '07 ' 'F','J' 07 ILOP EDS 'LA ' 'F','A','J' 10 LA EDS 'LNA ' 'F','A','J' 11 LNA EDS 'LMA ' 'F','A','J' 12 LMA EDS 'LNMA' 'F','A','J' 13 LNMA EDS 'AA ' 'F','A','J' 14 AA EDS 'ANA ' 'F','A','J' 15 ANA EDS 'AMA ' 'F','A','J' 16 AMA EDS 'ANMA' 'F','A','J' 17 ANMA EDS 'AU ' 'F','A','2','J' 20 AV EDS 'ANU ' 'F','A','2','J' 21 ANU EDS 'BT ' 'F','X','P','J' 22 BT EDS 'LR ' 'F','R','J' 23 LR EDS 'AX ' 'F','X','J' 24 AX EDS 'ANX ' 'F','X','J' 25 ANX EDS 'LXM ' 'F','X','J' 26 LXM EDS 'LX ' 'F','X','J' 27 LX EDS 'MI ' 'F','A','2','J' 30 MI EDS 'MSI ' 'F','A','J' 31 MSI EDS 'MF ' 'F','A','2','J' 32 MF EDS '33 ' 'F','J' 33 ILOP EDS 'DI ' 'F','A','2','J' 34 DI EDS 'DSF ' 'F','A','2','J' 35 DSF EDS 'DF ' 'F','A','2','J' 36 DF EDS '37 ' 'F','J' 37 SEE 37 FANOUT EDS 'OR ' 'F','A','2','J' 40 OR EDS 'XOR ' 'F','A','2','J' 41 XOR EDS 'AND ' 'F','A','2','J' 42 AND EDS 'MLU ' 'F','A','2','J','M' 43 MLU EDS 'TEP ' 'F','A','J','B' 44 TEP EDS 'TOP ' 'F','A','J','B' 45 TOP EDS 'LXI ' 'F','X','J' 46 LXI EDS 'TLEM' 'F','X','J','B' 47 TLEM EDS 'TZ ' 'J','B' 50 TZ EDS 'TNZ ' 'J','B' 51 TNZ EDS 'TE ' 'F','A','J','B' 52 TE EDS 'TNE ' 'F','A','J','B' 53 TNE EDS 'TLE ' 'F','A','J','B' 54 TLE EDS 'TG ' 'F','A','J','B' 55 TG EDS 'TW ' 'F','A','2','J','B' 56 TW EDS 'TNW ' 'F','A','2','J','B' 57 TNW EDS 'TP ' 'J','B' 60 TP EDS 'TN ' 'J','B' 61 TN EDS 'SE ' 'F','A','J','P','B' 62 SE EDS 'SNE ' 'F','A','J','P','B' 63 SNE EDS 'SLE ' 'F','A','J','P','B' 64 SLE EDS 'SG ' 'F','A','J','P','B' 65 SG EDS 'SW ' 'F','A','2','J','P','B' 66 SW EDS 'SNW ' 'F','A','2','J','P','B' 67 SNW EDS 'JGD ' 'B' 70 JGD EDS 'MSE ' 'F','A','M','P','B' 7100 MSE EDS 'MSNE' 'F','A','M','P','B' 7101 MSNE EDS 'MSLE' 'F','A','M','P','B' 7102 MSLE EDS 'MSG ' 'F','A','M','P','B' 7103 MSG EDS 'MSW ' 'F','A','2','M','P','B' 7104 MSW EDS 'MSNW' 'F','A','2','M','P','B' 7105 MSNW EDS 'MASL' 'F','A','M','P','B' 7106 MASL EDS 'MASG' 'F','A','M','P','B' 7107 MASG EDS 'DA ' 'F','A','2' 7110 DA EDS 'DAN ' 'F','A','2' 7111 DAN EDS 'DS ' 'F','A','2' 7112 DS EDS 'DL ' 'F','A','2' 7113 DL EDS 'DLN ' 'F','A','2' 7114 DLN EDS 'DLM ' 'F','A','2' 7115 DLM EDS 'DJZ ' 'F','A','2','B' 7116 DJZ EDS 'DTE ' 'F','A','2','B' 7117 DTE EDS '7200' 'F' 7200 ILOP EDS 'SLJ ' 'B' 7201 SLJ EDS 'JPS ' 'F','A','B' 7202 JPS EDS 'JNS ' 'F','A','B' 7203 JNS EDS 'AH ' 'F','A' 7204 AH EDS 'ANH ' 'F','A' 7205 ANH EDS 'AT ' 'F','A' 7206 AT EDS 'ANT ' 'F','A' 7207 ANT EDS 'EX ' 'B' 7210 EX EDS 'ER ' 'B' 7211 ER EDS 'BN ' 'F', 'X' . 7212 BIT NORMALIZE EDS 'ILOP' . 7213 NOT DEFINED EDS 'BBN ' 'F', 'X' . 7214 BYTE TO BIT NORMALIZE EDS 'TRA ' 'X','F','B' . 7215 TEST RELATIVE ADDRESS EDS 'SRS ' 'F','A' . 7216 STORE REGISTER SET EDS 'LRS ' 'F','A' . 7217 LOAD REGISTER SET EDS 'SSC ' 'F','A' 7300 SSC EDS 'DSC ' 'F','A','2' 7301 DSC EDS 'SSL ' 'F','A' 7302 SSL EDS 'DSL ' 'F','A','2' 7303 DSL EDS 'SSA ' 'F','A' 7304 SSA EDS 'DSA ' 'F','A','2' 7305 DSA EDS 'LSC ' 'F','A','2' 7306 LSC EDS 'DLSC' 'F','A','3' 7307 DLSC EDS 'LSSC' 'F','A' 7310 LSSC EDS 'LDSC' 'F','A','2' 7311 LDSC EDS 'LSSL' 'F','A' 7312 LSSL EDS 'LDSL' 'F','A','2' 7313 LDSL EDS 'NOP ' . 7314 EXECUTIVE DIAGNOSTICS EDS 'SIL ' 'F' 7315 SIL EDS 'LCR ' . 7316 LCR EDS 'TS ' . 7317 TS EDS 'JZ ' 'F','A','B' 7400 JZ EDS 'JNZ ' 'F','A','B' 7401 JNZ EDS 'JP ' 'F','A','B' 7402 JP EDS 'JN ' 'F','A','B' 7403 JN EDS 'J ' 'B' 7404 J OR JK EDS 'HJ ' 'F','B' 7405 HJ OR HKJ EDS 'NOP ' 'F' 7406 NOP EDS 'AAIJ' 'B' 7407 AAIJ EDS 'JNB ' 'F','A','B' 7410 JNB EDS 'JB ' 'F','A','B' 7411 JB EDS 'JMGI' 'F','X','B' 7412 JMGI EDS 'LMJ ' 'F','X','B' 7413 LMJ EDS 'JO ' 'B' 7414 JO EDS 'JNO ' 'B' 7415 JNO EDS 'JC ' 'B' 7416 JC EDS 'JNC ' 'B' 7417 JNC EDS 'LBU ' . 7500 LOAD BASE USER EDS 'LBU1' . 7501 LOAD BASE REGISTER USER INDIRECT EDS 'SBU ' . 7502 STORE BASE USER EDS 'LBE ' . 7503 LOAD BASE REGISTER EXECUTIVE EDS 'LBE0' . 7504 LOAD BASE REGISTER EXECUTIVE 0 EDS 'LBE1' . 7505 LOAD BASE REGISTER EXECUTIVE 1 EDS 'LBU0' . 7506 LOAD BASE REGISTER USER 0 EDS 'LBU1' . LOAD BASE REGISTER USER 1 EDS 'TVA ' . 7510 TEST VIRTUAL ADDRESS EDS 'TVAE' . 7511 TEST VIRTUAL ADDRESS ALTERNATE EDS 'ILOP' . 7512 UNDEFINED EDS 'LXLM' . 7514 LOAD X REGISTER LONG MODIFIER EDS 'LBN ' . 7514 LOAD BANK NAME EDS 'CR ' . 7515 CONDITIONAL REPLACE EDS '7516' 'F' 7516 ILOP EDS 'RMD ' . 7517 READ MASTER DAYCLOCK EDS 'FA ' 'F','A','2' 7600 FA EDS 'FAN ' 'F','A','2' 7601 FAN EDS 'FM ' 'F','A','2' 7602 FM EDS 'FD ' 'F','A','2' 7603 FD EDS 'LUF ' 'F','A','2' 7604 LUF EDS 'LCF ' 'F','A','2' 7605 LCF EDS 'MCDU' 'F','A','2' 7606 MCDU EDS 'CDU ' 'F','A','2' 7607 CDU EDS 'DFA ' 'F','A','2' 7610 DFA EDS 'DFAN' 'F','A','2' 7611 DFAN EDS 'DFM ' 'F','A','2' 7612 DFM EDS 'DFD ' 'F','A','2' 7613 DFD EDS 'DFU ' 'F','A','3' 7614 DFU EDS 'DFP ' 'F','A','3' 7615 DFP EDS 'FEL ' 'F','A','2' 7616 FEL EDS 'FCL ' 'F','A' 7617 FCL I DO 020 , EDS '7700'+64*((I-1)/8)+I-1-8*((I-1)/8) 'F' E05 . EDS 'SZ ' 'J' . 0500 SZ EDS 'SNZ ' 'J' . 0501 SNZ EDS 'SP1 ' 'J' . 0502 SP1 EDS 'SN1 ' 'J' . 0503 SN1 EDS 'SFS ' 'J' . 0504 SFS EDS 'SFZ ' 'J' . 0505 SFZ EDS 'SAS ' 'J' . 0506 SAS EDS 'SAZ ' 'J' . 0507 SAZ EDS 'INC ' 'J', 'B' . 0510 INC EDS 'DEC ' 'J', 'B' . 0511 DEC EDS 'INC2' 'J', 'B' . 0512 EDS 'DEC2' 'J', 'B' . 0513 EDS 'ENZ ' 'J', 'B' . 0514 EDS 'ADD1' 'J', 'B' . 0515 EDS 'SUB1' 'J', 'B' . 0516 EDS 'ILOP' . 0517 E07 . EDS 'ADE ' 'F','A' . 0700 ADE DECIMAL ADD EDS 'DADE' 'F','A','2' . 0701 DOUBLE ADD DECIMAL EDS 'SDE ' 'F','A' . 0702 SUBTRACT DECIMAL EDS 'DSDE' 'F','A','2' . 0703 DOUBLE SUBTRACT DECIMAL EDS 'LAQW' 'F', 'A' . 0704 LOAD A QUARTER WORD EDS 'SAQW' 'F', 'A' . 0705 STORE A QUARTER WORD EDS 'DEI ' 'F','A' . 0706 DECIMAL TO INTEGER EDS 'DDEI' 'F','A','2' . 0707 DOUBLE DECIMAL TO INTEGER EDS 'IDE ' 'F','A','2' . 0710 INTEGER TO DECIMAL EDS 'DIDE' 'F','A','3' . 0711 DOUBLE INTEGER TO DECIMAL EDS 'LDJ ' 'F','X','B' . 0712 LDJ EDS 'LIJ ' 'F','X','B' . 0713 LIJ EDS 'LPD ' . 0714 LPD EDS 'SPD ' . 0715 SPD EDS 'ILOP' . 0716 NOT DEFINED EDS 'LBJ ' 'F','X','B' . 0717 LBJ E37 . EDS 'LRD ' . LOAD REAL DAYCLOCK EDS 'RRD ' . READ REAL DAYCLOCK EDS 'LRC ' . LOAD REAL COMPARATOR EDS 'ILOP' . NOT DEFINED EDS 'SMD ' . 3704 SELECT MASTER DAYCLOCK EDS 'RSS ' . 3705 READ SYSTEM STATUS EDS 'SLPO' . 3706 SELECT LOAD PATH EDS 'ILOP' . 3707 UNDEFINED EDS 'BIM ' 'P' . 3710 BIT MOVE EDS 'BIC ' 'P' . 3711 BIT COMPARE EDS 'BMTC' 'P' . 3712 BIT MOVE WITH TRANSLATION EDS 'BICL' 'P' . 3713 BIT MOVE LONG EDS 'BIML' . 3714 BIT MOVE LONG EDS 'BDE ' 'F','A' . 3715 BYTE TO DECIMAL EDS 'DEB ' 'F','A' . 3716 DECIMAL TO BYTE EDS 'EDDE' 'F','A','3' . 3717 EDIT DECIMAL E7315 EDS 'DIA5' . 731500 DIAGNOSTIC 5 EDS 'DIAG' . 731501 DIAGNOSTIC 6 EDS 'LBRX' . 731502 LOAD BREAKOUT REGISTER EDS 'ACEL' . 731503 ACCELERATE USER REGISTER SET EDS 'DCEL' . 731504 DECELERATE USER REGISTER SET EDS 'SPID' . 731505 STORE PROCESSOR ID EDS 'RAT ' . 731506 RESET AUTO RECOVERY TIMER EDS 'SEND' . 731507 SEND EDS 'ACK ' . 731510 ACKNOWLEDGE EDS 'TPSA' . 731511 TPSA EDS 'ILOP' . 731512 NOT DEFINED EDS 'ILOP' . 731513 NOT DEFINED EDS 'LD ' . 731514 LOAD DESIGNATOR REGISTER EDS 'SD ' . 731515 STORE DESIGNATOR REGISTER EDS 'UR ' . 731516 USER RETURN EDS 'SGNL' . 731517 SIGNAL CONDITION E7317 . EDS 'TS ' . 731700 TS EDS 'TSS ' 'B' . 731701 TSS EDS 'TCS ' 'B' . 731702 TCS DO 13 , +0 E7414 . EDS 'JO ' 'B' . 741400 JO EDS 'JFU ' 'B' . 741401 JFU EDS 'JFO ' 'B' . 741402 JFO EDS 'JDF ' 'B' . 741403 JDF DO 12 , +0 E7415 . EDS 'JNO ' 'B' . 741400 JNO EDS 'JNFU' 'B' . 741401 JNFU EDS 'JNFO' 'B' . 741402 JNFO EDS 'JNDF' 'B' . 741403 JNDF DO 12 , +0 LETAB EQU $-ETAB . ETAB LENGTH+SPECIAL TABLE FOR CHANGE COM ILOKLM EQU 10 . ALLOW 10 EX-IND CYCLES ONLY INDEX EQUF CONTM,A3 RPTC EQUF CONTM+R1 AACT NOP A0,0 RA1 LA A3,ARG1 RX1 LA A3,XRG1 RR1 LMJ X8,RRR1 RA2 LMJ X8,RRA2 RMA1 LMJ X8,RRMA1 RMA2 LMJ X8,RRMA2 RBT LMJ X8,RRBT RBB LMJ X8,RRBB . PROCESS BIT INSTRUCTIONS RA3 LMJ X8,RRA3 RJGD LMJ X8,RRJGD AACT1 NOP A0,0 SA A3,ARG1 SA A3,XRG1 SA A3,RRG1 LMJ X8,RRRA2 SA A3,ARG1 LMJ X8,RRRA2 NOP A0,0 LMJ X8,RRBB2 LMJ X8,RRRA3 S A3,CONTM,X7 END$SNPY . LAST LOCATION SECOND PART OF SNOOPY END