.TITLE PAL11R ;VERSION 4A ; ;COPYRIGHT 1971, DIGITAL EQUIPMENT CORP., MAYNARD, MASS. 01754 ;THIS SOURCE OF THE ASSEMBLER CAN BE ;ASSEMBLED INTO TWO UNIQUE VERSIONS: ;1. IF THE SYMBOL "NOSEG" IS DEFINED, THE ; RESULTING OBJECT MODULE IS THE FULL ; ASSEMBLER. ; ************************************* ;2. IF THE SYMBOL "NOSEG" IS NOT DEFINED, ; THE RESULTING PACKAGE IS AN ASSEMBLER ; THAT UTILIZES CORE OVERLAYS FROM DISK ; TO CONSERVE ON SYMBOL TABLE SPACE. ; ;THE OVERLA O SD,TENAMIER TLDIE F ; DRDMIN P JM 5 T0YN S LT B ONTINAMIER TLDIE FNEMIERET D ; D ENLD F APTR G LA FENSES ESDRADT SE; 2 ,RENSE#A B IS B ORATINRMTED VESAE THE ORGN I ; R1 R CL 4:T0YN S. DRAD. EG RIFO ER Z ACKTA S ; R6 @ LR C DEMOX DEING INRTPOUP SENSES ESDRAD; 3:T0YN SN IOSSREXP EERSTGIRE; E THG INIRQUACD OIAV; 8 T0YN S BR D UNFOS SIHENTREPAT GHRI; R ROER Q CBIN R TONAMIER TLDIE F ; INDEX MODE ADDRESSING ; .PAGE .EOT ;END OF FILE #9 SYNT05: ; PARENTHETICAL EXPRESSION PROCESSED TRAP PARSEP ; CALL PARENTHESES SEPARATOR BNE SYNT06 ; A PARENTHESIS WAS FOUND SYNT15: INCB QERROR ; THE FIELD HAS TERMINATED ; BR IMMMDR ; IMMEDIATE ADDRESSING BR SYNT0B ; DETERMINE ADDRESSING SYNT06: BGT SYNT07 ; LEFT PAR Y VERSION OF THE ASSEMBLER IS SELF CONTAINED ;IN THAT IT IS ITS OWN OVERLAY BUILDER. ; ;WHEN THE SYMBOL "OVRBLD" IS DEFINED, THE ;RESULTING OBJECT MODULE IS THE BUILDER. ; ;WHEN THE SYMBOL "OVRBLD" IS NOT DEFINED, THE ;RESULTING OBJECT MODULE IS THE RESIDENT ASSEMBLER ; ;WHEN LINKED, THE BUILDER'S TOP SHOULD BE XXX474. ;EXECUTING THE BUILDER'S LOAD MODULE ;VIA THE MONITOR COMMAND RUN ;CAUSES THE CREATION OF THE ;CONTIGUOUS FILE OF OVERLAYS ;(PAL11R.OVR) ON DISK WITH LOGIN UIC. ; ;WHEN LINK A ; ORD UNFOS SIHENTREPAT EF L ; 03NTSY E BG R TORAPASES SEHENTREPAL AL C ; P SEAR P APTR G INSSMIE BSTMUS SIHENTREPA; A E OREFERTH, ERSTGIRE; S AEDYP TAS WONSIESPREX; R ROER R CBIN G INSSREDD ADEMOX DEIN; E OREFERTH, ERSTGIRES A ; EDYP TOT NAS WONSIESPREX; 4 T0YN S LT B ONSIESPREXR TEISEG ROR FCKHE CLLCA; CKHERC P RA T EDERNTOUNC EESESTHENAR P ; : 02NTSY NGSI ENTHESIS FOUND INCB QERROR ; RIGHT PARENTHESIS FOUND SYNT07: ; CALL AUTO INC.;DEC. DETERMINATOR ; OPEN SUBROUTINE AUTO INCREMENT;DECREMENT DETERMINATOR ; THIS SUBROUTINE VERIFIES THAT THE SAVED ; TERMINATOR CODE IS FOR EITHER A + OR A ; - CHARACTER. IF SO, THEN VERIFY THAT THIS ; IS THE SOLE ADDRESSING INDICATOR PRESENT. ; THEN APPROPRIATELY SET THE OPERATOR SEEN ; VARIABLE. ; INPUT R1 CONTAINS THE EFFECTIV ED WITH THE PERMANENT SYMBOL TABLE, THE ;RESIDENT ASSEMBLER'S TOP SHOULD ALSO BE XXX474. ;AT RUN TIME, THE RESIDENT ASSEMBLER ;REQUIRES THE OVERLAYS TO BE ON DISK ;WITH FILE NAME PAL11R.OVR AND LOGIN OR [1,1]UIC. ; .GLOBL SYMTBB,SYMTBT ;EXTERNAL REFERENCES .GLOBL ASCII,ASECT,BYTE,CSECT,END,EOT,EVEN ;ENTRY POINTS. .GLOBL GLOBL,LIMIT,RAD50,TITLE,WORD .GLOBL IFG,IFL,IFNZ,IFGE,ENDC .GLOBL IFLE,IFZ,IFDF,IFNDF ; COMPUTER PDP-11 ; CONFIGURATION DISK OPERATING SYSTEM ; REQESDRADE OD MERSTGIRE; R MDEG R MP J REFOREHE TR,TEISEG R ; ASD PETYS WAN IOSSREXP E ; R2T,ULES R SBBI : CHPTSY NGSIESDRADY OREM MCTREDI; E OREFERTH, ERSTGIRE; R MDIR D MP J CHPTSY GE B ONSIESPREXR TEISEG ROR FCKHE CLLCA; CKHERC P RA T NDOU FESESTHENAR PNO; D AND IEIFNTDE IORATINRMTED ELFI; ND EDSELFIE THT NO; 2 T0YN S LT B ?ONTINAMIER TLDIE FNEMIERET D ; D ENLD F E ; TERMINATOR CODE ; OUTPUT CONDITION CODED RESULTS ; ZERO, TERMINATOR NOT + OR - ; OTHERWISE, THE APPROPRIATE ; FLAGS HAVE BEEN SET AUTOID: MOV #AUTOINC,-(R6) ; STACK AUTO-INCREMENT CODE CMPB R1,#TCCADD ; IS R1 TERMINATOR A + ? BEQ AUTO0 ; YES MOV #AUTODEC,@R6 ; STACK AUTO-DECREMENT CODE CMPB R1,#TCCSUB ; IS R1 TERMINATOR A - ? BEQ UIREMENTS ; ; ; PROGRAM NAME PAL-11R ;VERSION VERSION LEVEL 4 ; PATCH LEVEL A ;DESCRIPTION SPECIFICATION DOCUMENTS #130-390-008-01 ; #130-390-011-00 AND -01 ; #130-390-012-00 AND -01 ; #130-390-014-00 ; #130-390-023-00 ; MULTI-PASS, RELOCATABLE, SYMBOLIC ASSEMBLER ; AUTHOR J. MURPHY ;DATE APRIL, 1971 ; COPYRIGHT 1971, DIGITAL EQUIPMENT CORP., ; MAYNARD, MASSACHUSETTS ; STANDARD PROCESSOR APTR T ULES R'SONSIESPREXK ACST; 6 @RT,ULES R OV M E AG.P ; IDVOS IONSIESPREX; 5 T0YN S LE B EDSTUEEQ RRNTURE R C ; , ) ( ; ONTIUAALEVN IOSSREXP ELLCA; 1 PEEX P RA T: 11NTSY 0ANTSY R B ERCTRAHA CXTNEE THR FOL AL C ; RMTEEX N APTR O N ; 11NTSY E BN ? #ANR TONAMIER TIS; M IMCC#T1, R PBCM R TONAMIER TNTREUR CHE TVESA; 1 ,RR3 @ VBMO AUTO0 ; YES CLR (R6)+ ; RESTORE THE STACK POINTER ; AND SET THE CONDITION CODES BR AUTO2 ; RETURN AUTO0: BITB #OPSEEN,R2 ; OPERATOR SEEN PREVIOUSLY ? BEQ AUTO1 ; NOPE INCB QERROR ; YES, QUESTIONABLE SYNTAX BICB #INCDEC,R2 ; CLEAR BOTH EXISTING CODES AUTO1: BISB #OPSEEN,R2 ; SET OPERATOR SEEN BIT BISB (R6)+,R2 ; SET APPROPRIATE CODE BIT AUTO2: TSTB RSLMOWIDE REGISTER ASSIGNMENTS R0 = %0 R1 = %1 R2 = %2 R3 = %3 R4 = %4 R5 = %5 R6 = %6 R7 = %7 .CSECT .IFDF NOSEG OVRBLD=1 ;PORTIONS OF BUILD SECTION ARE NEEDED. O01=0 ;SET ALL SYMBOLS USED O02=0 ;IN ADJUSTING ADDRESSES O03=0 ;TO WORK IN OVERLAY O04=0 ;ENVIRONMENT TO 0. O05=0 BEGO01=0 BEGO02=0 BEGO03=0 BEGO04=0 BEGO05=0 BEGOVR=0 .EN L AL CR.XP EHE TOR FREPARE P ; R0 R CL 1:T0YN SR TEACARCHB TAR ONKLA B ; N-NOT EX NHE TATE YTRBCUN IOITOS P ; RMTEEX N APTR T BID EREF DDR MET SS,YE; 5 @RD,EREF#D B IS B PENO; 1 T0YN S NE B ?@ N AORATINRMTES I ; EFCDTC,#R3 @ PBCM O ER Z ACKTA S ; 6)(R - LR C CKTA SHE TOND VESAS I ; R.XP ESSREDD AEDERNTOUNC E ; GSLA FND ATSUNCOL ALR EACL; 2 R LR C TSBIR TEISEG REXD BEQ AUTOX MOVB RSLMOD,RSL2MD CMPB #-15,SAVTERM BEQ AUTOY INCB AERROR AUTOY: CLRB RSLMOD AUTOX: ; RETURN TRAP FLDEND ; DETERMINE FIELD TERMINATION BGE SYNT0B ; THE FIELD HAS TERMINATED ; ACTUAL MODE YET UNKNOWN TRAP NEXTERM ; CALL FOR THE NEXT TERMINATOR CLR R0 ; R0 = 0 TRAP EXPE1 ; CALL EXPRESSION EVALUATION BGT SYNT08 ; EXPRESSION WAS NON-VOID DC ;***** OVERLAY PROCEDURES ***** ; ;THE NUMBER OF BYTES ALLOCATED FOR THE ;OVERLAY AREA OVRSIZ=2000 ;1024 DECIMAL BYTES ;THE NUMBER OF WORDS ALLOCATED FOR THE ;OVERLAY AREA OVRWRD=1000 ;512 DECIMAL WORDS ; ;IF THE SYMBOL "OVRBLD" IS DEFINED (VIA A ;PARAMETER ASSIGNMENT) THE RESULTING OBJECT ;MODULE WILL CONSIST OF: ; OVERLAY BUILDER ; OVERLAY #1 ; OVERLAY #2 ; . ; . ; . ; OVERLAY #N ; OVERLAY AREA ; RESIDENT PAL-11R ; ;THE RUN TIME TRANND IALEREN G ; *32*= T BIT ENEMCRDEO-UT A ; *42*= T BIT ENEMCRINO-UT A ; *52*= T BIN EE SORATEROP; 6 ** 2 =IT BENSES ESDRAD; 7 ** 2 =IT BENSES SEHENTREPA; ) GHHI (TEBYR TEUNCOS SEHENTREPA; E THR FOS UEAL VHE T =R2; E NGRAN IOATERITD ELFI; 0:T0YN SM ERVTSAF OSSREDD A =R3; 3 ,RRMTEAV#S V MO T IPCRBSSUF BUTBE TH= 4 R ; R42, # OV M 0 =ERNTOU CLDIE INCB QERROR ; EXPRESSION WAS VOID SYNT08: TRAP PARSEP ; CALL PARENTHESES SEPARATOR ; THE FIELD HAS TERMINATED ; ACTUAL MODE YET UNKNOWN BLT SYNT09 ; RIGHT BGT SYNT18 ; LEFT TRAP RFORCE BISB R0,R2 BR SYNT15 SYNT18: INCB QERROR SYNT09: TRAP RFORCE ; CALL FORCE REGISTER EXPRESSION BISB R0,RSFER ADDRESS WILL BE ;"STARTB" IN THE OVERLAY BUILDER ; ;"SYMTBB" AND "SYMTBT" WILL BE DEFINED IN ;THE OVERLAY BUILDER IN LIEU OF IN THE ;PERMANENT SYMBOL TABLE OBJECT MODULE ;WHICH WILL NOT BE LINKED FOR THE ;BUILD RUN. ; ;IF THE SYMBOL"OVRBLD" IS NOT DEFINED ;THE RESULTING OBJECT MODULE WILL ;CONSIST OF: ; OVERLAY AREA ; RESIDENT PAL-11R ; ;THE RUN TIME TRANSFER ADDRESS WILL ;BE "STARTA" IN RESIDENT PAL-11R ; ; F ; NTDCFL B LR C 0 =NDMACO; 5 @R R CL S ESDRADD ANOM C =R5; 5 ,RNDMACO # OV M RSTEISEG RVESAL AL C ; G REAV S APTR 7:R0UB S: AXNTSY; TSBIT ENEMCRDET-ENEMCRIN; 0 03 = C DENC IT BIT ENEMCRDEO-UT A ; 10 0 =C DETOAU IT BNTMERENC-ITOAU; 0 02 = NCOIUT AT BIN EE SORATEROP; 0 04 = N EEPS OT BIN EE SSSREDD A ; 00 1 = ENSE AT 2 ; SAVE INDEX REGISTER TRAP NEXTERM ; POSITION CURBYTE AT THE NEXT NON- ; BLANK OR TAB CHARACTER MOVB @R3,R1 ; SAVE THE CURRENT TERMINATOR SYNT0A: ; INSURE FIELD TERMINATOR CLR R0 ; R0 = 0 TRAP EXPE2 ; CALL EXPRESSION EVALUATION ; , ; CR RETURN REQUESTED BLE SYNT07 ; CHECK FOR AUTO MODES ! ; .IFDF OVRBLD .IFNDF NOSEG .TITLE PALOB SYMTBB=. ;IN LIEU OF LINKING SYMTBT=. ;WITH PERMANENT SYMBOL TABLE ; ;THE FOLLOWING TABLE CONTAINS THE ;STARTING CORE ADDRESS OF EACH OVERLAY ;IN THE ORDER OF ASCENDING LOCATIONS. ;A 0 WORD TERMINATES THE ENTRIES. ;AS NEW OVERLAYS ARE CREATED THEIR ;POINTERS MUST BE ADDED TO THE END ;OF THE TABLE AND THE OVERLAY ITSELF ;PUT IN THE SAME POSITION ;RELATIVE TO THE OTHER OVERLAYS. ; OVRTAB: .WORD BEGO01 BIN EE SESESTHENAR P ; 00 2 = ENSE PT BIG INSSREDD ARDFEDE; 0 1 = RDFEDE TSENNMIGSS ACTREDIX TAYN S ; RYMOMET ECIR D ; 67 = 7 DRIN TEIAEDMM I ; 27 = 7 CRIN AS DEMOD TEENEMPLIME ARTWOF S ; EXND I ; 60 = DEMOND IT ENEMCRDEO-UT A ; 40 = DEMOEC DT ENEMCRINO-UT A ; 20 = DEMONC IR TEISEG R ; 00 = DEMOEG RS DEMOG INSSREDD AERUTMPCO; ! T UI Q ID,UNFOE AR; $ MOV RESULT,@R6 ; STACK EXPRESSION'S RESULT CMPB R1,#TCCIMM ; WAS THE SAVED TERMINATOR ; AN # ? BEQ IMMMDR ; YES, IMMEDIATE ADDRESSING BR SYNT02 ; PROCESS AS INDEX MODE ; .PAGE SYNT0B: ; DETERMINE ADDRESSING MODE FOR ; FIELDS CONTAINING ANY ; PARENTHESES ; SEPARATE MAX. CA%;OVERLAY #1 .WORD BEGO02 ;OVERLAY #2 .WORD BEGO03 ;OVERLAY #3 .WORD BEGO04 ;OVERLAY #4 .WORD BEGO05 ;OVERLAY #5 .WORD 0 ; ;OVERLAY DEVICE OUTPUT TRAN BLOCK ; OVRTBO: .WORD 0 ;DEVICE BLOCK NUMBER OVROSA: .WORD 0 ;MEMORY START ADDRESS .WORD OVRWRD ;WORD COUNT OVRERR: .WORD 2 ;FUNCTION (WRITE) .WORD 0 ;NUMBER OF WORDS NOT TRAN'D. ; ;RESTART ADDRESS OF OVERLAY BUILDER --- ;RELEASE OVERLAY DEVICE IF STILL INIT'D. AGAIN: TST OVRLB ;IS S LDIE FWO TANTHE OR MIF; D UNFOS LDIE FWO T, 0 > ; NDOU FD ELFIE ON, 0 = ; NDOU FDSELFI NO 0,< ; S LTSURED DECON IOITNDCO ; D ANMMCOE THO TEDATOCLL AESYT BT PUUT O ; NENO T PUIN; . EDARPEAPS HAD ELFIS NTMEOM CHE TATTH ; E UMSS AAY MNETIOU RNGLIAL CHE TG,INRNTURE ; N PO U. DSELFIT ECBJ OEDTTMAOR FDR MTOS LDIE F ; NGSIESDRADD DECOE RCOU SESATSLANTRE INUT(SE FIRST BITB #ASEEN,R2 ; WAS AN ADDRESS SEEN ? BNE INDMDR ; YES, INDEX MODE ADDRESSING BITB #AUTOINC,R2 ; WAS A + OPERATOR SEEN ? BEQ SYNT0D JMP INCMDR ; YES, AUTO-INCREMENT MODE SYNT0D: BITB #AUTODEC,R2 ; WAS A - OPERATOR SEEN ? BEQ SYNT0E JMP DECMDR ; YES, AUTO-DECREMENT MODE SYNT0E: BITB #PSEEN,R2 ; WERE PARENTHESES SEEN ? BEQ IMMMDR ; NO, IMMEDIATE ADDRESSING ) DATA SET INIT'D BEQ STARTB ;NO MOV #OVRLB,-(R6) ;YES -- RELEASE IT EMT RLS ; ;STARTING ADDRESS OF OVERLAY BUILDER STARTB: MOV #OVRTAB,R6 ;INITIALIZE THE STACK START=STARTB ;SET UP TRANSFER ADRESS ;SET UP RESTART ADDRESS MOV #AGAIN,-(R6) MOV #2,-(R6) EMT 41 MOV #OVRLB,R1 ;LINK BLOCK CLR @R1 ;FOR ^C BEGIN MOV #OVRFB,R2 ;FILE BLOCK MOV #OVRTBO,R3 ;OUTPUT TRAN BLOCK ;.INIT OVERLAY DEVICE MOV R1,-(R6) ;LINK BLOCK EMT INCMD ;OBTAIN DEVROUB SISTH; S SILYNA AAXNTSYE INUTROUB S ; . LEAB TOFM TOOT;B R5NSBI BR EDCEEXD ULWOH RCEA;S R0 LRC 4 SRINBI BH T.MILIM TOOT BTHWIE ARMPCO; 3 ,RR4 MPC . SEBAW NE= S RDWO4 -RYNT EISTH; 2 ,RR4 OVM: R7NSBI Y.TRENE DLID MNDFIO TSTJUAD; 4 ,R10#B SU 7 SRINBQ BE LEAB TEDERRD OINR HEIG HOLMBSY; 0 #10,RT BI 6:SRIN B4 SRINBR B . LEAB, MOV #DEFERD,-(R6) ; STACK THE DEFERD MASK BITB @R6,@R5 ; HAS AN @-SIGN APPEARED ? BNE SYNT0C ; YES, USE INDEX ADDRESSING BISB (R6)+,@R5 ; NO, USE REGISTER DEFERRED BR REGMDR ; REGISTER MODE SYNT0C: BISB (R6)+,@R5 ; SET COMAND'S DEFERRED BIT CLR @R6 ; ZERO THE STACKED ADDRESS BR INDMDR ; INDEX MODE ; .PAGE ;***-ICE STATUS MOV R1,-(R6) ;LINK BLOCK EMT 13 CMP (R6)+,(R6)+ ;CORRECT STACK. ;PHYSICAL BLOCK SIZE MOV @R6,R4 ;(IN WORDS) OF OVERLAY DEVICE MOV #OVRWRD,-(R6) JSR R7,DIVIDE MOV (R6)+,R5 ;NUMBER OF PHYSICAL ;BLOCKS PER OVERLAY CLR -(R6) MOV #OVRTAB,R0 BLDR01: TST (R0)+ ;TOP OF STACK BEQ BLDR02 ;CONTAINS TOTAL ADD R5,@R6 ;NUMBER OF PHYSICAL BR BLDR01 ;BLOCKS REQUIRED. BLDR02: MOV #64.,-(R6) ;DIVIDE PHYSICAL BLOCK MOV TEDERRD OINR WELOL BOYM;S R34,RV MO R6NSBI LOB: R2NSBI R3NSBI BR RYNT EOFS ESDRAD;X DEIN,HR4 OVM D.UNFOE ATICND ITO0 N-NO; 0 RC IN IDT ECCS .ND AGSLA;F GSLATF4,@R OVM L BOYM SOFE LUVA;Y ITNTUA,Q4)(R-2 OVM S HETCMAD IATRD 2N; . CHAT MNO; 2 SRINBE BN 1)(R,24)(R-4 MPC S HETCMAD IATRT 1S; . CHAT MNO; 2 SRINBE BN CHAT MOR FSTTE;1 @R),R46(-P CM ETFSOF- E AS BLEAB;T R40,RB SU R42,RV MO ONTIGAPARO;P GNSIT ENEVPRD ANS RDWO4 F OLEIPLT0 DIRECT MEMORY ADDRESSING *** DIRMDR: ;IF THE FRCABS SWITCH IS NON-0 ;AS A RESULT OF THE CSI SWITCH ;/37 HAVING BEEN ENCOUNTERED ;FORCE @#A FOR A BITB #DEFERD,@R5 ;IS MODE @A BNE DIRMD1 ;YES --- NORMAL TSTB FRCABS ;FORCE @#A? BEQ DIRMD1 ;NO BISB #DEFERD,@R5 ;YES ; *** IMMEDIATE ADDRESSING *** IMMMDR: BISB #AINCR7,@R5 INDXDR: TST (R4)+ MOVB R4,VARLTH TSTB RSLMOD BEQ DIREC0 BLT IMMEXT MOVB #RLD2.1,RLDIR 1 R4,-(R6) ;SIZE BY 64(DECIMAL) JSR R7,DIVIDE ;QUOTIENT ON STACK. MOV (R6)+,R0 ;NUMBER OF 64'S IN ;PHYSICAL BLOCK MOV @R6,R4 ;TOTAL NUMBER OF ;PHYSICAL BLOCKS REQUIRED BLDR03: DEC R0 BEQ BLDR08 ;TOTAL NUMBER OF ADD R4,@R6 ;64 (DECIMAL) WORD BLOCKS BR BLDR03 ;REQUIRED ON TOP OF ;STACK ;DELETE FILE IF ALREADY EXISTING BLDR08: MOV #BLDR04,-4(R2) ;ERROR RETURN MOV R2,-(R6) ;FILE BLOCK MOV R1,-(R6) ;LINK BLOCK EMT DLT MUE URSS;A R07,0000#1 ICB: R1NSBI NGTIES TUEINNTCO; N URET;R R7 TSR S DECON IOITNDCOT SE; 0 RT TS 3:SRIN BS ESDRADY TRENE BLTAL BOYM;S EXNDHI3,RV MO IDCTCSD ANS AGFL TTO0 ; S AGFLTR CL TYTIANQUO T;0 TYTIANQU LRC: R5NSBI NDOU FCHAT MNO; 1 SRINBE BN 2.E/IZ SLEAB TNSAINTCO0 ;R R0 SRA: R4NSBI E.BLTAW LOBES ESDRADE RE FST;1 R03,RB SU USIN MSEBAE BLTA; 0 ,RR2 OVM: 39BRSU H:RCNSBI ;; D.RETEALE AR4 RND AR3, R2; D TISC CND A ; GSLATF, TYTIANQU4;INTERNAL RELOCATION (CODE 1) BR IMPR2 IMMEXT: MOV #RLD2.5,RLDIR ;GLB ADDITIVE RELOCATION (CODE 5) CMPB RSLMOD,#-2 BNE DIRECD MOV #RLD4.3,RLDIR ;.CSECT ADDITIVE RELOCATION BR DIRECD ; *** INDEX MODE *** INDMDR: BISB #INDMODE,@R5 MOVB RSL2MD,RSLMOD CLRB RSL2MD TRAP INSERT BR INDXDR ; *** DIRECT MEMORY ADDRESSING *** DIRMD1: BISB #INDR7,@R5 TST (R4)+ MOVB R4,VARLTH CMPB #-1,RSLMOD 5 BLDR04: CLR -4(R2) ;ERRORS TO MONITOR ;ALLOCATE THE NECESSARY SPACE FOR ONE ;CONTIGUOUS FILE. MOV R2,-(R6) ;FILE BLOCK MOV R1,-(R6) ;LINK BLOCK EMT 15 TST (R6)+ BLT BLDR09 ;SPACE AVAILABLE? CLR -(R6) ;NO. MOV #ERR9,-(R6) ;FATAL ERROR. BR BLDR10 ; ;DETERMINE THE PHYSICAL STARTING BLOCK ;OF THE CONTIGUOUS FILE AND PLACE IT ;IN THE 1ST WORD OF THE OUTPUT TRAN BLOCK. BLDR09: MOV R2,-(R6) ;FILE BLOCK CLR -(R6) MOV R1,-(R6) ;LINK BLOCK EMT 14O T 0) 3; S)ESDRADR HEIG(HX DEIN HTOD RETEENE B ; LDOUSHL BOYM SREHE WSSREDD A) 2; 0ESOD CONTIDION CND AR0 1) ; : CHAT MNOF I; ; ) TEBY (IDCTCSO TIDN IOCTSEL RONTCO 5) ; ) TEBY (GSLATFO TGSLA FOLMBSY 4) ; Y ITNTUA QTOL BOYM SOFE LUVA 3) ; X DEIN HTOY TRENF OSSREDD AERGHHI 2) ; ) VETISIPO ( 0ON NESOD CONTIDION CND AR0 1) ; : NDOU FCHAT MIFT PUUT;O ; 3 RINE BLTAL BOYM S ; HE TOWEL BSSREDD AEEFRT 1SE TH 3) ; 2 RINE BLTAL BOYM SHE T ; F BEQ DIRECB ;.GLOBL EXPRESSION BPL DIRECC ;ANOTHER .CSECT SUB @USERPC,@R6 SUB R4,@R6 TSTB RSLMOD ;BRANCH IF NOT BNE DIRECX ;PROCESSING TSTB SECMOD ;FOR ABS SYMBOL BEQ DIREC0 ;IF ABS SYMBOL FROM ABS SECTION ADD @USERPC,@R6 ;ABS SYMBOL FROM REL SECTION ADD R4,@R6 MOV #RLD2.3,RLDIR ;REL SECT PROCES,INIT RLD DIRECTIVE IMPR2: MOV @R6,R1 TRAP RELREF MOV #4,R4 TRAP RLDFIL BR E ;.LOOK MOV (R6)+,@R3 ;STARTING BLOCK. CMP (R6)+,(R6)+ ;CORRECT STACK ;THE ONE CONTIGUOUS FILE WILL CONTAIN ;N OVERLAYS WITH EACH BEGINNING AT THE ;START OF A PHYSICAL BLOCK ON THE DEVICE ; MOV #OVRTAB,R0 BLDR07: MOV (R0)+,OVROSA ;MEMORY START ADDRESS BEQ BLDR05 ;TRAN OUT AN OVERLAY. ; MOV R3,-(R6) ;TRAN BLOCK MOV R1,-(R6) ;LINK BLOCK EMT 10 ;WAIT FOR COMPLETION OF TRANSFER ; MOV R1,-(R6) ;LINK BLOCK EMT WTCMD ;CHECK FOR ERROR ON TRANSFER ; OFS ESDRAD) ERGHHI (NGTIARSTE TH 2) ; 1 RINL BOYM S0) 4LODUMO (RDWO ; 2 E THF OSSREDD AR)WELO (SEBAE TH 1) UTNP;I E.BLTA; L BOYM SRYNT EER PRDWO4 D REDEOR; N AEROVH RCEA SRYNABIA S RMFOER;P CHARSEE BLTAL BOYM SRYNABIE INUTROUB;S N URET;R R7 TSR ) R0-(1,M+SYMPTV MO T.LO SEDFICIPE;S 0)(R,-+3YMPSTM OVM N IRYNT;E 0)(R,-LTSURE OVM D OR W 4CELA;P R0,@GSLATF OVM 0 ,REXNDHI OVM: 40BRSU D.YE`wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww3333333333333333333333ADDB C4d4dy$Dwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww3333333333333333333333yB8a ͋,L w:B ` 5 &  E >w   f5eU@  [*   & * G &( 8L'4e Q$ BBB"   U@ U e  "U%Gef. U U Bb 0 * BIBIT #140000,OVRERR BEQ BLDR06 ;ERROR ON TRANSFER MOV OVRERR,-(R6) ;PUSH STATUS BYTE BIC #377,@R6 ;INTO LOW INFO BYTE SWAB @R6 ;AND CLEAR THE REST. MOV #ERR8,-(R6) ;ERROR CODE BLDR10: IOT EMT 60 ;RETURN TO MONITOR BLDR06: ADD R5,@R3 ;CHANGE BLOCK NUMBER ;IN TRAN BLOCK FOR BR BLDR07 ;NEXT OVERLAY TRANSFER ; ;ALL OVERLAYS HAVE BEEN TRAN'D OUT. ; BLDR05: MOV R1,-(R6) ;RELEJ IMPR1 DIRECC: MOVB #RLD4.4,RLDIR ;.CSECT ADDITIVE DISPLACED RELOCATION BR DIRECD DIRECB: MOVB #RLD2.6,RLDIR ;.GLOBL EXPRESSION DIRECD: TRAP RELREF MOV @R6,R3 MOV #10,R4 MOV R2,TSTORE MOV GLBSY1,R1 ;.GLOBL OR .CSECT NAME MOV GLBSY2,R2 TRAP RLDFIL MOV TSTORE,R2 IMPR1: INC RLDFLG DIRECX: MOVB VARLTH,R4 DIREC0: MOV @R6,TBBUF-2(R4) ADD #2,SIZE BR RETURN ; .PAGE LAEROVE BTOY TRENL BOYM SIFY TREN Y:LAVR;O RSTEISEG RRETOES;R EGTRSE APTR 2:ERNT E3 ERNTES HIB . DSOR W 4DSARNWOW;D R02,RP CM LEAB TOLMBSYT USDJ;A )+R1,()+R0(V MO 3:ERNT EC RPSE,UR4 UBS . EDOV MBEO TIS;C RPSEHU4,RB SU ITF IRYNT EPCR SE;U R3TEEN LOB O TRSTEINPOT ENEMCRDE;C RPSEHU2,RP CM D.DEEE NNTMESTJUADO ;N R2TEEN EQB . ERSFANTRO TDSOR WOF. NO; 2 ,RR0 MPC 2 ,REXNDHI OVM . TR PG.REE RE FST 1EDFIDIMOE AV;S OPRTUS1,RV MO 1:ERNT E+ 6)(R STT 1 4MASE THE EMT RLS ;DATA SET ; ;RETURN TO THE MONITOR EMT 60 ;***** OVERLAYS BEGIN HERE ***** ; ; OVERLAY #1 O01=BEGOVR-BEGO01 ;COMPUTE OFFSET FROM ;RUN TIME OVERLAY AREA BEGO01: ;JUMP TABLE TO ENTRY POINTS ;IN THIS OVERLAY. ; JMP RCSI ;ENTRY1 JMP SUBR43 ;ENTYR2 JMP RRSTRT ;ENTRY3 .ENDC ; ; ; RCSI: MOV #COLB,-(R6) ;INIT COMMAND OUTPUT DEVICE MOV @R6,R2 ;#COLB EMT INCMN ; *** REGISTER MODE *** REGMDR:; BISB #REGMODE,@R5 BR BUILD ; *** AUTO-INCREMENT MODE *** INCMDR: BISB #INCMODE,@R5 BR BUILD ; *** AUTO-DECREMENT MODE *** DECMDR: BISB #DECMODE,@R5 BUILD: TRAP INSERT ; .PAGE RETURN: MOV #SAVTERM,R3 TST (R6)+ ; RESTORE THE STACK POINTER BIT #177400,R2 ; PARENTHESES COUNTER ZEROT EM 6)(R,-02#1 OVM R TONIMOF OONTIUCTRES;D NTVERE PTON IOATEROPY MMDU ;T BOTK,SR4 UBS 4 ERNTEO BL OTKBST2,RP CM OTKBSTT USDJ ASOAL;+ 3)(R+,2)(R OVM: R4TEEN S.RDWO4 N OW;D R36,RV MO CKTA SVEMOK ACST; 6 ,RR4 UBS O NT IUN RLDOU WST;U R26,RV MO N.IOISLLCOO ;N R1TEEN ISBH CKTA STHWIN IOISLLCOR FOK ECCH;T BOTK,SR1 MPC . DSOR W 4BYR TEINPO; 1 ,RR4 UBS R TEISEG REEFRT 1SE ASREEC;D R10,RV MO SE UERAT LOR;F R40,#1 OVM 0 ,ROPRTUS OVM . RSTEISQD TSTB IDENT-O01 ;PRINT TITLE BEQ CSIOK2 ;ONCE ONLY. MOV #TITLBUF-BEGO01+BEGOVR,-(R6) ;PRINT TITLE MOV R2,-(R6) EMT WRCMD CSIOK2: MOV #TITLBF-BEGO01+BEGOVR,-(R6) MOV R2,-(R6) ;PRINT # EMT WRCMD CLR IDENT-O01 ;DON'T PRINT TITLE OR .INIT OVERLAY DEV. MOV R2,-(R6) EMT WTCMD MOV #CILB,-(R6) ;INIT COMMAND MOV @R6,R1 ;#CILB EMT INCMD ;INPUT DEVICE MOV #CIFB,-(R6) ;OPEN COMMAND MOV R1,-(R6) ;INPUT FILE EMT OPN ;SET UP COMMAND INPR ? BEQ RETUR0 ; YES, VALID COUNTER INCB QERROR ; NO, QUESTIONABLE SYNTAX RETUR0: INCB FLDCNT ; INCREMENT FIELD COUNTER TRAP FLDEND ; DETERMINE STATEMENT TERMINATOR BLE RETUR1 ; STATEMENT TERMINATED CMPB FLDCNT,#2 ; MORE THAN TWO FIELDS ? BLT RETUR2 ; NOPE INCB QERROR ; YES, QUESTIONABLE SYNTAX RETUR1: TRAP SETREG ; CALL SET REGISTERS DECB FLDCNT ; SET THE CONDIEG RVESA; G REAVSP RAT: 06BRSU D.REUIEQ RNTMESTJUADE BLTAF IRYNTE: ERNT;E S.IETRENH OT BATD YEROSTDES IR0; . DEMAS INTMESTJUADE BLTA ; L BOYM SNO. VEBO A3)P TEST PUUT;O VEBO AASE AMST PUIN; Y LAVR OAPTR; . EXNDHIN I ; S ESDRADE THT ANGTIARST ; D RETO SRYNT EOLMBSYW NE 3) ; P TOSR UTO) DSOR(W4 P-TOSR U) 2; S.RDWO4 S RDWAWNDOD TEUSADP TOSR U ; TOX DEIN HOMFRS OLMBSYL AL 1) ; . DSOR WURFON OW DEDOV MISK ACST ; K ACSTF OOMTTBOH IT WDELIOLC; UUT BUFFER MOV #SIBUF2,R0 MOV R0,-(R6) MOV #SRCMAX,(R0)+ ;72(10) DATA BYTES. CLR (R0)+ ;FORMATTED ASCII ;READ COMMAND STRING MOV R1,-(R6) EMT RDCMD ;WAIT FOR INPUT WITH CLOSE AND RELEASE TRAP CLEAN BITB #47,SIBUF2+3-O01 BEQ CSIOKJ ;TRANSFER ERROR? MOV SIBUF2+2-O01,-(R6) ;YES JMP ERRO3-O01 ;CALL COMMAND STRING INTERPRETER CSIOKJ: MOV #CMDBUF,-(R6) EMT 56 MOV (R6)+,R1 ;ADDR. OF DATA BYTE WHERE SCAN ENDED. BEQ CSIOK1 ;COMMAND SYNTACTICAVTION CODES RTS R7 ; RETURN RETUR2: ASL @R5 ; SHIFT COMAND SIX BITS LEFT ASL @R5 ASL @R5 ASL @R5 ASL @R5 ASL @R5 TRAP NEXTERM ; CALL FOR NEXT TERMINATOR CLRB RSLMOD CLR GLBSY1 CLR GLBSY2 JMP SYNT00 ; SUBROUTINE INSERT ; THIS SUBROUTINE INSERTS THE THREE BIT ; REGISTER FIELD FOUND IN R2 INTO THE ; COMMAND BEING BUILT. ; INPUT R2 CONTAINS A 3-BIT FIELD LDOU WLEAB TOLMBSYD DEANXP EIF UTTPOU; S AGFL T ; LTSURE ; 3 M+SYMP T ; +1YMPSTM ; N IRYNT ERDWO4 E TH 2) ; X DEIN HINT LO SHE TOF) SSREDD ASTHEIG(HS ESDRADE AS BHE T) 1T PUIN; R TEENP RA;T S:NTOI PRYNT E 2RE AREHE;T E.BLTAL BOYM S AINT LO SEDFICIPE;S ATOINY TRENL BOYM SRDWO4 A R TEENO TNETIOUBRSU ; E.INUTROG INLLCAT XI;E R7 TSR S ERSTGIRET SE; G REETSP RAT G REOP POMFRN URET RRDCAISYLLY CORRECT. CMPB (R1)+,(R1)+ ;INCREMENT BY TWO MOVB #13,@R1 ;VERTICAL TAB MOVB #77,-(R1) ;QUESTION MARK SUB R0,R1 ;PRINT COMMAND UP TO ;ERROR DATA BYTE FOLLOWED BY ? VT. MOV R1,@R0 MOV #SIBUF2,-(R6) MOV R2,-(R6) EMT WRCMD BR CSIOK2 ;PRINT # AGAIN. ;CLOSE AND RELEASE COMMAND ;OUTPUT DEVICE CSIOK1: MOV R2,R1 TRAP CLEAN CLR COFLAG-O01 ;FOR ^C BEGIN & RESTART CLRB FRCABS-Z ; OUTPUT NONE ;INSERT: SUBR20: MOVB R2,-(R6) ; STACK LOWER BYTE OF R2 BIC #177770,@R6 ; ONLY SAVE LOWER 3 BITS BISB (R6)+,@R5 ; SET COMMAND'S REG. BITS RTS R7 ; RETURN ; .PAGE ; SUBROUTINE FIELD END ; THIS SUBROUTINE SEPARATES TERMINATORS INTO ; THREE GROUPS. ; INPUT R3 = SAVTERM ADDRESS ; OUTPUT CONDITION CODED RESULTS ;D )+R6(T TS 5:R4UB S: EGPRPO ;. NETIOU RNGLIAL CITEXD AN; RSTEISEG ROP PTOE INUTROUB S; N URET R ; R5E ORSTRE; 5 R TS R R4E ORSTRE; 4 ,R)+R6 ( OV M R3E ORSTRE; 3 ,R)+R6 ( OV M R2E ORSTRE; 2 ,R)+R6 ( OV M R1E ORSTRE; 1 ,R)+R6 ( OV M SSREDD ARNTUREE THS VESA5 R ; R5+,6)(R V MO 6:R1UB S: EGTRSE ; R TEISEG RDEWI- R SOESOCPRE ILATOL V AIS0 R ; RSTEISEG RET SNETIOUBRSU; N URET R ; R7]O01 ;DON'T FORCE @#A FOR A MOVB #2,MAXPASS-O01 ;DEFAULT # OF PASSES. ;SOURCE INPUT ONE CLR CMDBUF-O01 ;INPUT FILE CLR SIFB2-O01 ;DEFAULT CLR SIFB2+2-O01 ;FILENAME. CLRB SICNT-O01 ;ONE INPUT. MOV #BLOCK4-BEGO01+BEGOVR,R1 ;CSI BLOCK ADDRESS TRAP CSICHK BEQ CSIOKD ;NUL FIELD BGT CSIOKA CLR R4 ;NOT PARAMETER FILE. CSIOKA: MOVB R4,PAPASS-O01 ;NON-0 INDICATES PAR. FILE. MOV R5,SITAP1-O01 ;# OF TAPES. MOV R5,SITAPE-O01 TST R3 BEQ CSIOKB^ ; > 0, IMPLIES , ; = 0, IMPLIES ; CR ; < 0, IMPLIES OTHER ;FLDEND: SUBR18: MOV #1,-(R6) ; STACK A ONE CMPB @R3,#TCCCOM ; IS THE TERMINATOR A, ? BEQ FLDEN1 ; YES CMPB @R3,#TCCSMC ; IS THE TERMINATOR A ; ? BEQ FLDEN0 ; YES CMPB @R3,#TCCCRE ; IS THE TERMINATOR A CR ? BEQ FLDEN0 ; YES DEC @R6 ; RETURN NEGATIVE FLDEN0: S RT 5 RCKTA S ; 6)(R125, R OV M SSREDD ARNTUREE THK ACST; 6)(R,-6)(R10 V MO 1 RCKTA S ; 6)(R,-R1 V MO 2 RCKTA S ; 6)(R,-R2 V MO 3 RCKTA S ; 6)(R,-R3 V MO 4 RCKTA S ; 6)(R,-R4 V MO 4:R1UB S: EGVRSA ; R TEISEG RDEWI- R SOESOCPRE ILATOL V AIS0 R ; RSTEISEG RVESAE INUTROUB S ; E AG.P ; RNTURED ANS ERSTGIRET SEL AL C ; G REOP P a ;ANOTHER INPUT FILE. CSIOKG: MOV SIFB1-O01,SIFB2-O01 ;FOR CSICHK DEFAULT MOV SIFB1+2-O01,SIFB2+2-O01 ;FILENAME BR CSIOKC ;SOURCE INPUT TWO CSIOKB: MOV #BLOCK5-BEGO01+BEGOVR,R1 TRAP CSICHK BEQ CSIOKG ;NULL FIELD TST R3 BNE CSIOKH ;TOO MANY INPUTS? CLR -(R6) ;YES MOV #ERR6,-(R6) JMP ERROUT-O01 CSIOKH: MOV R5,SITAP2-O01 ;# OF TAPES INCB SICNT-O01 ;TWO SOURCE FILES ;BINARY OUTPUT CSIOKC: MOV #2,CMDBUF-O01 ;GET OUTPUT SPEC. b DEC @R6 ; RETURN ZERO FLDEN1: TST (R6)+ ; RETURN POSITIVE ; SET THE CONDITION CODES RTS R7 ; RETURN ; .PAGE .EOT ;END OF FILE #10 ; SUBROUTINE PARENTHESIS SEPERATOR ; THIS SUBROUTINE SEPERATES RIGHT AND LEFT ; PARENTHESES FROM OTHER TERMINATORS. IT ALSO ; SETS THE PARENTHESIS SEEN FLAG BIT AND ; MAINTAINS THE PARENTHESIS COUNTER. ; INPUT R2 DEDICATED REGISTER ; OUTPUT APTR G INCKPAE ATERITRE, PENO; 0 40OD M LE B ?6 M+SYMP T >R5S I ; 6 M+SYMP#T5, R MP C +3R5= 5 R ; R53, # DD A R4T ENEMCRIN; ADRI TNTTAULES R =4)(RYMPSTM; + 4)(R3, R OV M: 02D4MO ERCTRAHA CXTNES ESOCPR; 1 40OD M BR T ULES RALTIAR+PUM S =UM S ; R3+,6)(R D AD 3 R SL A TSBI2 T EF LUM SFTHI S ; R3 L AS T ULES RALTIAR PVESA; ) R6-(3, R OV M R3 L AS 3 R SL A TSBI3 eMOV #BLOCK1-BEGO01+BEGOVR,R1 ;CSI BLOCK ADDRESS TRAP CSICHK BGE CSIOK3 ;>0=PASS SPECIFIED. MOV #2,R4 ;PASS 2 DEFAULT CSIOK3: MOVB R4,BOPASS-O01 ;0=NO BINARY TST R3 BEQ CSIOK4 ;MORE OUTPUT FILES. CLRB LOPASS-O01 ;NO MORE OUTPUT FILES. CSIOK6: CLRB STPASS-O01 ;ZEROING THEIR PASS BR CSIOK8 ;BYTE PROHIBITS OUTPUT ;1ST INPUT FIELD WAS NULL. CSIOKD: TST R3 BNE CSIOKE ;OK IF NO MORE INPUTS CSIOKF: CLR -(R6) MOV #ERR7,-(R6) ;INPUT FILE fCONDITION CODED RESULTS ; ) NEGATIVE ; OTHERS ZERO ; ( POSITIVE ;PARSEP: ; PLACE THE PCOUNT BYTE SUBR19: SWAB R2 ; INTO LOWER R2 CLR -(R6) ; STACK A ZERO CMPB @R3,#TCCLPA ; IS TERMINATOR A ( ? BEQ PARSE0 ; YES CMPB @R3,#TCCRPA ; IS TERMINATOR A ) ? BNE PARSE2 ; NOPE DEC @R6 ; DECREMENT STACKED ZERO DECBT EF LUM SFTHI S ; R3 L AS D TELEMPCOD IATR, PENO; 2 40OD M GE B ?5 R 7 ? BGT RCHE00EL BSSREDD AST;1 R3P,TOSRUV MO SEBAE BLTA;2 ,ROPNTCO OVM: HERCSE E.BLTAL BOYM SERUSH RCEA;S E.BLTAL BOYM;S ERUSE THH RCEA STOE ER HESOM COLTRON;C D,KEAC PDYEALR A+3YMPSTM, +1YMPSTMN IOLMBSY; E THH IT WCHARSEO TLLCAD ONEC S AON; . OLMBSYE ETPLOM CTHWI; ST U &ST PCHARSE--S-YE; H CHERSE BN D?LEABEND CMYT BIS; 5 @R STT: HGRCSE ST PIND UNFOT NOH TCMA; 7 RS RT R0 STT G REETSP RAT: HIRCSE X.DEINS ASCL;S ASCL,IR4 VBMO ONTIUCTRNS IVESA;4 ,R417717#C BIuONE MOV #MISS3-BEGO01+BEGOVR,SIFB1-4-O01 ;SET UP ERROR RETURN MISS4: MOV #SIFB1,-(R6) MOV @R6,SIFB-O01 ;PROCESS FILE ONE FIRST MOV R1,-(R6) EMT OPN CLR SIFB1-4-O01 ;LET MONITOR HANDLE ERRORS ;PROCESS FILE ONE FIRST MOV R1,SILB-O01 ;OBTAIN 1ST FREE ADDRESS ABOVE ;FULL MONITOR MOV #102,-(R6) EMT 41 ADD #STKSIZ,@R6 ;ADD STACK SIZE MOV (R6)+,R6 ;TO IT AND RESET MOV R6,STKBOT-O01 ;STACK POINTER AND BASE CLRB CNSTLV-O01 ;CLEAR CONDITIONAL ASv ; YES, FORCE REGISTER ZERO TSTB RSLMOD BNE RCHE00 TST R0 ; IS R0 < 0 ? BGE RCHE02 ; NOPE, RETURN NOT NEGATIVE RCHE00: INCB RERROR ; FORCE SET REGISTER ERROR CLR RESULT ; RESULT = 0 RTS R7 ; RETURN, CONDITION CODE 'Z' IS SET RCHE01: MOV #100000,R0 ; SET ONLY R0 SIGN BIT ; CONDITION CODES ARE SET RCHE02: RTS R7 ; RETURN ; .PAGE R4 SRA 4 RR AS R4 SRA 4 ,RGSLATF VBMO F:CHER SR TOCADIINE YT BET;S TYTIANQU0,0000#1 ISB O ;N H3RCSE EQB ? EDBLNA ETEBYC NIMONE;M GSLATFG,FLYT#B TBBI =0MDTCBY; 5 @R LRC . NTTANSCO0 D4MOE IVCTFEEF; E TH2+ADRI=TD2IATR; B 'EDETEL DHE TCELAEP;R +3YMPSTM5,@R DDA: HHRCSE NO; F CHERSQ BE D?LEABEND CMYT BIS; 5 @R STT T PSN INDOU FCHAT;M NDOU FOT NCHAT;M HGRCSE EQB H RCEA SRYNABI; H RCNSBI APTR LEAB TOWEL BSSREDD AST;1 R3P,TOERPV ySEMBLY COUNTERS CLRB DNTACT-O01 ;SYMBOL TABLE INITIALIZATION ;CLEAR ALL HAS BEEN RE-DEFINED FLAGS ;(BIT 1 OF HIGHEST WORD OF THE ENTRY) ;IN THE PERMANENT SYMBOL TABLE. ; STINIT: MOV PERBOT-O01,R0 ;ADDRESS (HIGHEST) OF 1ST ENTRY. MOV PERTOP-O01,R1 ;ADDRESS OF 1ST (LOWER) FREE REGISTER. STINI1: CMP R0,R1 BEQ STINI0 ;DONE WHEN MATCH. BIC #REDEF,@R0 ;CLEAR RE-DEFINED BIT. SUB #10,R0 ;DECREMENT POINTER BY 4 WORDS. BR STINI1 ;INITIALIZE THE 1ST CONTROz ; SUBROUTINE NEXT TERMINATOR ; THIS SUBROUTINE SIMPLY MOVES THE CURBYTE ; POINTER TO THE NEXT NON-BLANK OR ; NON-TAB CHARACTER. THEN THIS CHARACTER ; IS EXAMINED TO DETERMINE IF IT IS A ; TERMINATOR. SAVTERM REFLECTS THE RESULTS. ; INPUT NONE ; OUTPUT NONE ;NEXTERM: SUBR17: TRAP CBTABS ; CALL CHECK FOR BLANKS AND TABS JSR R7,TERMIN ; CALL TERMINATOR IDENTIFICATION RTS R7 MO SEBAE BLTA;2 ,ROTRBPE OVM: H3RCSE LEAB TOLMBSYT ENANRMPEH RCEA;S SSREDD A0)M(SYMP T =R1; 1 R NC I 4:40OD MB CHER S APTR 4 40OD M EQ B ? 0 =0)M(SYMP TIS; 1 @R B ST T 0:D4MO SSREDD ARYMOMED OD ; ANT ABET US M0)M(SYMP T ; ADRI TNDCOSE= ) ,4(3YMPSTM ; D IATR STIR F =2)1,M(SYMP T ; 0 +0)M(SYMP TT PUUT O ; NGKIAC PIDVO AENTH ; }L SECTION ENTRY: ;THE ENTRY IS 4 WORDS OF 0 (THE UNNAMED ;CONTROL SECTION). ;CONTOP=C(PERTOP)-4 (WORDS) STINI0: CLR @R1 ;CLEAR CLR -(R1) ;FOUR CLR -(R1) ;WORD CLR -(R1) ;ENTRY. CLR -(R1) ;JUST TO DECREMENT R1 MOV R1,CONTOP-O01 ; ;INITIALIZE TOP OF UST TO TOP OF CONTROL ;SECTION AREA. MOV R1,USRTOP-O01 ; ;ENTER THE USER PC SYMBOL . INTO ;THE UST. MOV R1,HINDEX-O01 ;HIGHEST ADDRESS OF SLOT. MOV #127400,TMPSYM+1-O01 ;1ST TRIAD ~ ; RETURN ; .PAGE ; SUBROUTINE EXPRESSION ; THIS SUBROUTINE EVALUATES AN EXPRESSION UNTIL ; THE RETURNING TERMINATOR HIERARCHY IS SATISFIED ; THE TERMINATOR HIERARCHY IS AS FOLLOWS: ; (FROM LEAST TO MOST IMPORTANT) ; PARENTHESES -1 ; COMMAS 0 ; SEMICOLONS AND CARRIAGE-RETURNS +1 ; IF A TERMINATOR IS ENCOU 0 =0)M(SYMP TIF ; S ESDRAD) (0YMPSTM= 1 R UTNP I ; R6HA C +405*ARCH+ 2 **404*ARCH= ; R3HA C +402*ARCH+ 2 **401*ARCH= D KEAC P ; ERCKPA0 D4MOE INUTROUB SENOP; 1:CHER ST ANSTON CB' '40OD M ; VETIECFF EHE T =MDTCBY; R5,@0)(RONTCBY V MO 2 0* R =R0; R0 L AS R.HA CSTLAE THT OUK ANBL; 0)CLR TMPSYM+3-O01 ;2ND TRIAD TRAP ENTER MOV R1,HUSERPC-O01 ;HIGHEST ADDRESS OF USER PC ENTRY TST -(R1) ;ADDRESS OF VALUE WORD MOV R1,USERPC-O01 ;OF USER PC ENTRY. JMP SETP5-O01 ; ;FILE STRUCTURE ERROR--INPUT FILE #2 MISS1: CLR SIFB2-4-O01 ;LET MONITOR HANDLE ERROR NEXT TIME CMP SIFB2+4-O01,BLOCK5+6 ;IS EXT PAL? BNE MISS2 ;BRANCH IF NOT-FORCE ERROR CLR SIFB2+4-O01 ;MAKE EXT NULL BR MISS2 ;TRY AGAIN ; ;FILE STRUCTURE ERROR--INPUT FILE #1 MINTERED POSSESSING ; MORE SIGNIFICANCE THEN THE REQUESTED ; TERMINATOR, THEN THE SUBROUTINE WILL RETURN. ; EXPRESSIONS ARE EVALUATED FROM LEFT TO RIGHT AND ; PARENTHETICAL GROUPING IS NOT PERMITTED. ; INPUT R0 MUST EQUAL ZERO ; OUTPUT CONDITION CODED RESULTS ARE ; RELATIVE TO THE ITEM COUNTER ; RSLMOD: ; +1 = RELOCATABLE EXPRESSION, ; CURRENT .CSECT ; 0 = ABSOLUTE EXPRE(R-1YMPSTM B LR C NDMAOM CTEBYA Y LLIANTTEPO, ES Y ; EDBLSADID ANMMCOE YT BE,OP N ; H1RCSE E BN ? ' 'BA . ARCHT AS LIS; 2 ,#0)(R-1YMPSTM B MP C EDBLSADID ANMMCOE YT BE,OP N ; H1RCSE E BL ? . RSHA C 3ANTHE OR MREHE TRE A ; #30, R PBCM EDBLSADID ANMMCOE YT BE,OP N ; H1RCSE E BG ? . RSHA C 6ANTHS ES LREHE TRE A ; #60, R PBCM T UNCO. ARCHS L'BOYM S =R0; SS3: CLR SIFB1-4-O01 ;LET MONITOR HANDLE ERROR NEXT TIME CMP SIFB1+4-O01,BLOCK4+6 ;IS EXT PAL? BNE MISS4 ;BRANCH IF NOT-FORCE ERROR CLR SIFB1+4-O01 ;MAKE EXT NULL BR MISS4 ;TRY AGAIN ;SUBROUTINE CSICHK: CALLS CSI2 (COMMAND STRING ;INTERPRETER PHASE II). ;ALL SWITCHES EXCEPT PASS [PA] ;AND TAPES [TA] AND FORCE @#A [37]ARE ILLEGAL.. ;IT WILL USE DEFAULT ;EXTENSION NAMES IF NONE SPECIFIED. ;IT WILLSSION ; -1 = .GLOBL EXPRESSION ; -2 = RELOCATABLE EXPRESSION, ; NOT CURRENT .CSECT ; (OR .ASECT) ; TERMINATOR TABLE ENTRY ORDER ; = : , CR ; ! & - + ' " ) ( TAB BLANK % @ # -1 ... -18 ; TERMINATOR ANALYSIS DIAGRAM ; TERMINATORS CLASS PAREN COMMAS CR ; -1 0 +1 ; ^ & - + ' " 1 PROCESS PROCESS PROCESS ; ; CR 2 RETURN RETURN RETURN ; : = TAB BLK # @ QE 0 ,RARCHNT C VBMO 0:CHER SN IOATOGRRTEIND ANMMCOE YT B ; ST UOFG INCHARSEE ATTINI I ; HERCSE BR R1T ENEMCRIN; 1 R NC I EDCKPAY ADREAL; T YED KEAC POT N ; H0RCSE E BN ? 0 =0)M(SYMP TIS; ? EDCKPAY ADREALL BOYM SIS; 1 @R B ST T 0 =MDTCBY; 5 @R R CL S ESDRADD CMYT B =R5; 5 ,RMDTCBY # OV M SSREDD UPDATE MAXPASS IF NECESSARY. ;IT WILL USE SOURCE FILENAME AS DEFAULT FOR ;OTHER DATA SETS. ; ;INPUT: ; R1=ADDRESS OF CSI BLOCK ; 1ST WORD : ADDR OF CMDBUF ; 2ND WORD : ADDR OF LINK BLOCK ; 3RD WORD : ADDR OF FILE BLOCK ; 4TH WORD : DEFAULT EXTENSION ; ; ;OUTPUT: ; R3 ; 0 STILL MORE OF SAME TYPE ; 1 NO MORE OF SAME TYPE ; ; R4 AND STATUS ; 00R0 ; S DECON IOITNDCOE THS ET SR0 T:PUUTO ; LEAB TOLMBSY. MPTE T:PUIN ; ; H.RCNSBIG xCK TST 6(R2) ;PHYSICAL DEVICE NAME BNE CSICH2 CSICH1: TST R4 ;RETURN RTS R7 CSICH2: MOV 4(R1),R5 ;ADDR OF FILE BLOCK TST 4(R5) BNE CSICH3 MOV 6(R1),4(R5) ;USE DEFAULT EXTENSION CSICH3: TST (R5) ;WAS FILENAME SPECIFIED BNE CSICH6 ;YES MOV SIFB2-O01,@R5 ;DEFAULT---USE INPUT MOV SIFB2+2-O01,2(R5) ;FILENAME CSICH6: MOV #1,R5 ;DEFAULT NO. OF TAPES DEC R4 ;R4<0 INDICATE ; R4 = QUANTITY'S ADDRESS MOV #CURBYTE,R3 ; R3 = CURBYTE'S ADDRESS CLRB RSLMOD CLR @R5 ; RESULT = 0 CLRB R1 ; ZERO THE OPERATOR COUNTER CLRB PRGSEC ;.CSECT ID OF PREVIOUS RELOCATABLE SYMBOL EXPR00: ; CYCLING OPERATOR-ITEM ACQUISITION CLRB R2 ; ZERO THE EFFECTIVE OPERATOR ; DEFAULT OPERATOR IS ADDITION TSTB ITEMIN ;INIZILUTD HERCEA;S ISY NL OST UHE TL,BOYM SEDCKPAY ADREAL; N AOR FCHARSEO TRYNT END 2HE TON; . RYSAESEC NIFT USE THN HE TND AST;P HE TNGHIRCEA SSTIR FY,LLMAOR NSSCERO PL,BOYM SPETY' 'BA T NOF ;I E OVAB. 1ASS ESOCPRN HE TOT NIF B.; . RNTURED ANY ITNTUA QINT BI ; R TOCADIINE YT BHE TET SENTH, ET SIF A.; . AGFLG INBLNA ETEBYS L'BOYM S ; HE TCKHE CENTH, ST PHE TIN ; D UNFOS IOLMBSYD TEIAEVBRABE THF I. ;2 tS NO PASS SWITCH ;CHECK FOR SWITCHES MOVB 4(R2),R1 ;MAXIMUM SWITCH WORDS. ADD #10,R2 ;POINT TO 1ST SWITCH CNTR. CSICHB: DEC R1 ;COMPENSATE FOR DEV.NAME & SWITCH CNTRS. BLE CSICH1 ;NO MORE SWITCHES SUB @R2,R1 ;DECREMENT MAX.CNTR BY SWITCH CNTR. CMP (R2),#1 BLT CSICH1 ;NO MORE SWITCHES CMP (R2)+,#2 BLT CSICHD ;SWITCHES WITHOUT VALUE BGT CSICH5 ;TOO MANY VALUES MOV (R2)+,-(R6) ;ADDRESS OF 1ST VALUE BYTE MOV #2,-(R6) ;DEC. ASCII TO BINA PENDING ITEM ? BEQ EXPR01 ; NOPE, ACQUIRE INITIAL ITEM CLRB ITEMIN ; YES, CLEAR THE FLAG TSTB ITYPE ; HOW IS THIS ITEM TYPED ? BLE EXPR16 ; NUMBERS, ERRORS, AND ASCII DATA ; SYMBOLS PROCESSED INCB ICOUNT ; INCREMENT THE ITEM COUNTER TSTB TMPSYM ; HAS THIS SYMBOL BEEN PACKED ? BEQ EXPR0G ; YES, PROCESS PENDING ITEM BR EXPR0C ; NO, PROCESS THE PENDING ITEM EXPR01 T.USE THY ARSSCENEF IND AST P ; E THH RCEA SSTIR F. OLMBSYL TATO ; E THR FOG INCHARSEE ATTINI IND A ; K ACEP RR,TEACARCH' 'BE THE ACPLRE ; N HE TD,UNFOT NOS IOLMBSYS HI TIF .);1 OLMBSYD TEIAEVBRAB; S HI TOR FST PHE TCHARSE; N HE TB' 'HE TUTHOIT WRSTEACARCHK AC;P S.URCC ONGSIESOCPRL IAECSP; N HE TB' ' AISR TEACARCHT AS LHE TIFD AN; S ERCTRAHA C 5OR4 S SEESSSPOL BOYM SHE TIF; : CELA PESAK TNGWILOOL FHE TL,BOYM;S AOR FCHARSEO TRYNT EST 1HE TON; ; H.RCNSBIE pRY EMT 42 ;STOPS ON NON-NUMERIC MOV (R6)+,@R6 ;CLEAN STACK MOV (R6)+,R0 ;SWITCH VALUE BLE CSICH5 ;VALUE LESS THAN 1, ERROR CMP @R2,#40520 BEQ CSICHC ;PASS SWITCH CMP @R2,#40524 BNE CSICH5 ;ILLEGAL SWITCH MOV R0,R5 ;TAPES SWITCH CSICHA: TST (R2)+ ;POINTS TO NEXT SWITCH CNTR. BR CSICHB CSICHC: CMP R0,#4 ;'PA BGE CSICH5 ;PASS .GT. 3, ERROR MOV R0,R4 CMPB MAXPASS-O01,R4 ;ADJUST MAXPASS BGE CSICHA ;IF NECESSARY MOVB: ; INITIAL ITEM ACQUIRED DEC @R3 ; DECREMENT CURBYTE POINTER EXPR02: ; CYCLING ITEM ACQUISITION TRAP ITEM ; CALL ITEM SUBROUTINE BGT EXPR0C ; NON-VOID ITEM ENCOUNTERED ; VOID ITEM ENCOUNTERED AND PROCESSED EXPR12: MOVB SAVTERM,R0 ; R0 = ENCODED TERMINATOR ADD #3,R0 ; R0 = R0+3 BGT EXPR04 ; = : TERMINATORS IDENTIFIED BEQ EXPR09 ; , TERMINATOR IDENTIFIED ADD #2,R0 INUTROUB;S EDOSCLE THY BEDRMFOER PUEIQCNTE; H RCEA SRYNABIE THG INIZILUT; D HERCEA SLYTERAPESEE ARS EAARO TWE TH; . ESYT BIDN IOCTSEL RONTCOD ANS AGFL; E THG ININTAON CSTHEIG HHE TND;A UEAL VHE TNGNIAINTCOT ESOW LXTNE; E TH, ADRI T40OD MND 2HE TNGNIAINTCO; T ESOW LXTNEE TH, ADRI T40OD MST;1 HE TNGNIAINTCOD OR WSTWELOE TH; H IT WDSOR W 4ISY TRENH AC E. ONTITANO; 0 D4MON IEDERRD OLYNGSIEACRINS OLMBSYE THH IT;W D ARNWOW DUEINNTCOD ANE OR CINH IG;H INEG BESBLTAH OT B. EDDD AREl R4,MAXPASS-O01 BR CSICHA CSICHD: CMP @R2,#33463 BNE CSICH5 ;ILLEGAL SWITCH INCB FRCABS-O01 BR CSICHA ;CALL CLEAN TO .CLOSE AND .RELEASE ALL ;.INIT'D DATA SETS: ;SOURCE INPUT FILE RRSTRT: MOV #SILB1,R1 ;ADDRESS OF LINK BLOCK TRAP CLEAN ;SECOND SOURCE INPUT FILE MOV #SILB2,R1 TRAP CLEAN ;BINARY OUTPUT FILE MOV #BOLB,R1 ;ADDRESS OF LINK BLOCK TST @R1 ;IS BINARY OUTPUT DATA ; R0 = R0+2 BGE EXPR0B ; CR ; TERMINATORS IDENTIFIED ADD #6,R0 ; R0 = R0+6 BGE EXPR05 ; ! & - + ' " ; TERMINATORS IDENTIFIED ADD #2,R0 ; R0 = R0+2 BGE EXPR0A ; ) ( TERMINATORS IDENTIFIED ADD #3,R0 ; R0 = R0+3 BNE EXPR04 ; TAB BLANK @ # ; TERMINATORS IDENTIFIED ; % TERMINATOR IDENTIFIED MOVB #REGFLG,REGTYPE ; TYPE EXPRESSION AS REGISTE ALSBOYM;S EW NASE OR CINS RDWAWNDOS NDPAEX; D ANP TOSR UND AOPNTCOS ERNTOI PHE TBY; EDNDOU BIS) ST(UE BLTAL BOYM SERUSE TH; . EDIX FISD ANP TOER PND AOTRBPE; S ERNTOI PHE TBYD DEUNBOS IT)PS (LEAB;T OLMBSYT ENANRMPEE TH S.ONTIEC SEDERRD;O WO TTOIND DEVIDIS ILEAB TOLMBSYE TH; H RCEA SLEAB TOLMBSYE INUTROUB;S 8 #LEFIF OND;E OT.E E AG.P ; ERCTRAHA CXTNEK ECCH; T0CB R B +1AGFLBT= G LATF BhBEQ SPECIAL ;SET INIT'D? MOV R1,-(R6) ;YES EMT CLS ;CLOSE FILE MOV #BOFB,-(R6) MOV R1,-(R6) ;DELETE FILE EMT DLT MOV R1,-(R6) ;RELEASE DATA SET EMT RLS ;LISTING OUTPUT FILE SPECIAL: MOV #LOLB,R1 ;ADDRESS OF LINK BLOCK TRAP CLEAN ;SYMBOL OUTPUT FILE MOV #SLLB,R1 ;ADDRESS OF LINK BLOCK TRAP CLEAN ;COMMAND OUTPUT FILE MOV #COLB,R1 ;ADDRESS OF LINK BLOCK TRAP CLEAN ;COMMAND INPUT FILE MOV #CILB,R1 ;ADDRESS OF LINK BLOCK TRAP R BR EXPR02 ; ACQUIRE THE NEXT ITEM ; .PAGE EXPR04: ; CLASS 3 TERMINATORS PROCESSED TRAP SETERR ; CALL SET ERRORS BR EXPR02 ; ACQUIRE THE NEXT ITEM EXPR05: ; CLASS 1 TERMINATORS PROCESSED (OPERATORS) DEC R0 ; R0 = R0-1 BGT EXPR07 ; SEPARATE OPERATORS ! & - + INC @R3 ; INCREMENT CURBYTE POINTER CLR @R4 ; QUAN ; AGFLBT B NC I 1:BT CN URET R ; R7 S RT G LATF BMPBU, ES Y ; 1 BT C EQ B ?AB T AERCTRAHA CIS; E YTRBCU,@11#0 B MP C AGFLBTP UM BS,YE; T1CB Q BE ? NKLA B AERCTRAHA CIS; E YTRBCU,@40#0 B MP C +1TEBYUR C =TEBYUR C ; TEBYUR C NC I 0:BT C0 G=LATF B ; AGFLBT B LR C: 10BRSU S:ABBT;C &.RETEUNCOENS IAB TORK ANBL; A E IM TCHEAD TEENEMCRINS IAGFLBT; S AB TND AKSANBLR FOK ECCHE INUTdCLEAN JMP STARTC-O01 .EVEN BLOCK1: .WORD CMDBUF ;BINARY OUTPUT .WORD BOLB ;LINK BLOCK .WORD BOFB ;FILE BLOCK .RAD50 /OBJ/ ;DEFAULT EXT. BLOCK2: .WORD CMDBUF ;LISTING OUTPUT .WORD LOLB .WORD LOFB .RAD50 /LST/ ;DEFAULT EXT BLOCK3: .WORD CMDBUF ;SYMBOL TABLE OUTPUT .WORD SLLB .WORD SLFB .RAD50 /SYM/ ;DEFAULT EXT BLOCK4: .WORD CMDBUF ;SOURCE INPUT ONE .WTITY = 0 MOVB @0(R3),@R4 ; PLACE THE FIRST ASCII CHAR. ; INTO QUANTITY LOW BYTE TST R0 ; WAS THE TERMINATOR ' ? BEQ EXPR06 ; YES, SERVICE THE OPERATION INC @R3 ; INCREMENT CURBYTE POINTER MOVB @0(R3),QUANTITY+1 ; PLACE THE SECOND ASCII CHAR. ; INTO QUANTITY HIGH BYTE EXPR06: INC @R3 ; INCREMENT CURBYTE POINTER EXPR16: CLRB ITYPE CLR R0 BR EXPR0C ; SEROUB S ; E AG.P ; TEBYUR CNTMERENC IND A ; RSTONAMIER TLL AOR FCKHE C ; 00EMIT R B E INUTRO; R BEUM N'SONTICAFITIENID; R TEACARCHO TRNTURE; 4 ,RERMBNU # OV M: 08EMIT NETIOUBRSUM TE IRTBO A ; 03EMIT R B 0 =TYTIANQU, PENO; Y ITNTUA Q LR C NGSIESOCPRE NUTION CS,YE; `ORD SILB1 .WORD SIFB1 .RAD50 /PAL/ ;DEFAULT EXT BLOCK5: .WORD CMDBUF ;SOURCE INPUT TWO .WORD SILB2 .WORD SIFB2 .RAD50 /PAL/ .EVEN TITLBUF: .WORD 20 ;MAX BC .WORD 0 ;FORMATTED ASCII .WORD 20 ;BC .BYTE CR,LF .ASCII /PAL11R V004A/ .BYTE 13 ;VERTICAL TAB .EVEN TITLBF: .WORD 5 ;MAX BC .WORD 0 ;FORMATTED ASCII .WORD 5 ;BC .BYTE CR,LF,LF,43,13 ;CR,LF,LF,#,VT .EVEN .IFNDF NOSEG ENDO01: SIZO01=ENDO01-BEGO01 RVICE THE OPERATION EXPR07: TSTB R1 ; CHECK THE OPERATOR COUNTER BLE EXPR08 ; FIRST OPERATOR IS VALID TRAP SETERR ; CALL SET ERRORS CLRB R2 ; ZERO THE EFFECTIVE OPERATOR EXPR08: CLRB R1 INCB R1 ; INCREMENT OPERATOR COUNTER DEC R0 ; ENCODE OPERATOR SUCH THAT ; ADDITION IS ENCODED AS ZERO BISB R0,R2 ; SET THE EFFECTIVE OPERATOR BR EXPR02 ; PROCESS THE NEXT IT 8 M0TE I EQ B ?NDOU FITIG DIDAL V AAS W ; R0 T TS 7:M0TE I* ** NGSIESOCPRR BEUMN* ** ; E YTRBCUT MNRENC IND A ; RSTONAMIER TLL AOR FCKHE C ; 00EMIT R B NETIOU RONTICAFITIENID; R TEACARCHO NT ISSREDD A ; NTOI PRYNT E =R4, PENO; 4 ,RARCH#N V MO E OD CESYP TEMITT ENEMCRIN; 3 @R B NC I: 16EMIT ERNTOI PUPCKBA, ES Y ; OLMBSY C DE E NUTION CE,OP N ; 16EMIT E BL ? T YES \; .EOT ;END OF FILE #1 ;***** OVERLAY #2 ***** O02=BEGOVR-BEGO02 ;COMPUTE OFFSET FROM ;RUN TIME BEGO02: ;JUMP TABLE TO ENTRY POINTS ;IN THIS OVERLAY. ; JMP RCSECT ;ENTRY1 JMP RASECT ;ENTRY2 JMP RGLOBL ;ENTRY3 JMP RTITLE ;ENTRY4 JMP RLIMIT ;ENTRY5 JMP SUBR41 ;ENTRY6 JMP SUBR35 ;ENTRY7 JMP SUBR42 ;ENTRY8 .ENDC ; ; ; ;.CSECT ;THIS PART HANDLES THE ;EM EXPR09: ; CLASS 5 TERMINATORS PROCESSED BIT #177400,R1 ; ARE COMMAS VALIDATED ? BLE EXPR0B ; YES, PREPARE TO RETURN ; NO EXPR0A: ; CLASS 4 TERMINATORS PROCESSED BIT #177400,R1 ; ARE PARENTHESES VALIDATED ? BLT EXPR0B ; YES, PREPARE TO RETURN ; NO, ABORT THE EXPRESSION CLR @R5 ; RESULT = 0 TRAP SETERR ; CALL SET ERRORS INC @R3 ; INCREMENT CURBYTEERCTRAHA CIX SEDSSCERO P ; R5L,BOYM S MP C: 06EMIT ** *NGSIESOCPRL BOYMS* ** ; N URET R ; R7 S RT S DECON IOITNDCOE THT SE; 0 ,RARCHNT C VBMO S ERSTGIRET SEL AL C ; G REET S APTR 5:M0TE IG INSSCERO PRNTURE; E YTRBCUT ENEMCRIND AN; S ORATINRMTEL ALR FOK ECCH; 0 M0TE I BR E INUTRON IOATICIFNTDE I ; ORATINRMTEE THO NT I ; SSREDD ANTOI PRYNT E =R5; 4 ,RINRMTE # OV M DECOE YP TX.CSECT DIRECTIVE ; ; ;CSECT HANDLER RCSECT: CLRB SIZE-O02 NEGB BINOUT-O02 ;REQUEST BINARY OUTPUT MOVB SAVTERM-O02,R0 ;TERMINATING CHARACTER: CMPB #-4,R0 ;CARRIAGE RETURN BEQ CSECT1 ;UNNAMED .CSECT CMPB #-5,R0 ;SEMI COLON BEQ CSECT1 ;UNNAMED .CSECT TRAP CBTABS ;FLUSH BLANKS OR DEC CURBYTE-O02 ;TABS. TRAP ITEM ;GET NEXT ITEM TSTB CNTCHAR-O02 ;ANY CHARACTERS FOUND? BLE CSECT1 ;NO. UNNAMED .CSECT TSTB ITYPE-O02 ;LEGAL SY POINTER BR EXPR00 ; RESTART EXPRESSION EVALUATION EXPR0B: ; CLASS 2 TERMINATORS PROCESSED SWAB R2 ; GENERAL ERROR FLAG = MOVB R2,ERROR ; R2 HIGH ORDER BYTE CMPB #1,RSLMOD BGE EXPR0R INCB AERROR EXPR0R: TSTB PRGSEC BEQ EXPR0P ;NO .CSECT CMPB PRGSEC,SECMOD BEQ EXPR0P ;CURRENT .CSECT MOVB #-2,RSLMOD ;NOT CURRENT. EXPR0P: TRAP SETREG ; CALL SET REGISTERS TSTB ICOUNT ; SET THE EMITT ENEMPLOM C ; R3 @ MBCO R TONAMIER THE TOR FNTHU, EMITT ORAB; R TEACARCHS HI TORRR E ; ORRRIE B NC I: 03EMIT EDFITIENIDUNR TEACARCH; NGSIESOCPRR BEUM N ; 07EMIT Q BE G INSSCERO POLMBSY; 6 M0TE I GT B NGSIESOCPRF OPETYT ECEL S ; R2 T TS 2:M0TE IT ENNDPEDEG LASFH NCRA B, ES Y ; R23,@R B OV M NTDEENEP DPETY ICHANBRE OP N ; 02EMIT Q BE ? G INSSCERO PERCTRAHA CSTIR F ; R4R,HAFCTMBOL? BGT CSECT5 ;YES INCB QERROR-O02 ;Q ERROR FLAG CSECT4: JMP MAIN1E-O02 ;UNNAMED .CSECT CSECT1: CLR TMPSYM+1-O02 ;PACKED MOD40 SYMBOL CLR TMPSYM+3-O02 MOVB #1,R3 ;ID NUMBER 1 MOV PERTOP-O02,HINDEX-O02 BR CSECT6 ;PREVIOUS SECTION .ASECT CSECT2: MOV @USERPC-O02,ABSPC-O02 BISB #RELFLG,@HUSERPC-O02 ;SET RELOCATABLE ;FLAG BIT IN DOT SYMBOL ENTRY BR CSECT7 ;MORE THAN 376(8) .CSECT'S CSECTE: CLR -(R6) ;ERROR MOV #ERR1,-(R6) ;ANNOUNCEMENCONDITION CODES RTS R7 ; RETURN ; .PAGE EXPR0C: ; NON-VOID ITEM ENCOUNTERED AND PROCESSED INCB ICOUNT ; INCREMENT ITEM COUNTER TSTB ITYPE ; HOW IS THE ITEM TYPED ? BLE EXPR0I ; NUMBERS, ERRORS, AND ASCII DATA ; SYMBOLS PROCESSED TRAP SEARCH ; CALL SEARCH THE SYMBOL TABLE BLT EXPR0F ; NOT FOUND IN THE TABLE AT ALL BEQ EXPR0G ; # MP C ORATINRMTEE THR FOT UN HS,YE; 0 M0TE I EQ B ?NGTIORABM TE IIS; 4 ,RINRMTE # MP C AGFL SEDFIDIMOE TH= 2 R ; R20, R OV M: 11EMIT ONTINAMIERET DTYLIBITAINPRL AL C ; NTRI P APTR R TEACARCHL GALEIL, NO; R ROER I CBIN S YE; 1 M1TE I GE B ?NDOU FERCTRAHA CIDAL V AAS W ; AGFL SUPET S1,0- R =R0; 0 R EC D ERNTOU CERCTRAHA CNTMERENC I ; ARCHNT C CBIN R TONAMIER T AISR TEACARCH; PT JMP ERROUT-O02 ;PACK THE CHARACTERS IN BYTES TMPSYM (0) TO TMPSYM (5) ;INTO PACKED MODULO 40 REPRESENTATION IN WORDS ;TMPSYM+1 AND TMPSYM+3 CSECT5: MOV #TMPSYM,R1 ;ADDRESS OF 1ST BYTE TRAP SERCHB ;MODULO 40 PACKER INC R1 ;TMPSYM+1 TO R1 MOV #WORD3,R4 ;NO 3RD WORD CLR @R4 ;MATCH; JUST SYMBOL MOV PERTOP-O02,R2 ;PERFORM LINEAR MOV CONTOP-O02,R3 ;SEARCH OVER CONTROL TRAP LINSRCH ;SECTION TABLE BNE CSECT3 ;MATCH FOUND ;THIS CONTROL SECTION FOUND AS A USER'S SYMBOL ; FOUND AS A PERMANENT SYMBOL BITB #REDEF,TFLAGS ;HAS PERMANENT SYMBOL BEEN REDEFINED? BNE EXPR0M ; YES MOVB #DEFFLG,TFLAGS ; MAKE LINE USER SYMBOL BR EXPR0I EXPR0M: TRAP SEARCH ; CALL SEARCH THE SYMBOL TABLE BR EXPR0G ; FOUND AS A USERS SYMBOL EXPR0F: TRAP ENTER ; ENTER SYMBOL INTO THE SYMBOL TABLE EXPR0L: INCB UERROR ; UNDEFINED SYMBOL ERROR BIS #000400,R2 ; SET THE GENERAL ERROR 5 M0TE I LT B ESOD CONTIDION CHE TND A ; R0N IDECON IOATICIFNTDE I ; ERCTRAHA CHE TRNTURE; S NETIOU RNSIOCTSES HI T ; ONTICAFITIENIDR TEACARCHR FOL AL C ; 4 @R7, R SR J: 01EMIT R.TONAMIER THE TAS; B TAR ONKLA BHE TERIDNSCO; E YTRBCUT ENEMCRDE; E YTRBCU C DE R TONAMIER T AISR TEACARCH; 5 LNAME NOT IN TABLE ;ENTER A NEW CONTROL SECTION ENTRY. MOV R3,HINDEX-O02 ;BASE ADDRESS OF ENTRY ;IS CURRENT TOP OF ;THE CONTROL SECTION ;TABLE. CLR RESULT-O02 ;0 TO CURRENT CLR TFLAGS-O02 ;AND MAXIMUM PC TRAP ENTER SUB #10,CONTOP-O02 ;ADJUST BOTTOM OF UST ;MATCH FOUND---COMPUTE CONTROL SECTION ID CSECT3: MOV PERTOP-O02,R3 ;ADDRESS OF 1ST ENTRY SUB HINDEX-O02,R3 ;ADDRESS OF THIS ENTRY ASR R3 ;DIVIDED BY 4 ASR R3 ASR R3 ;XT BR EXPR12 ; PROCESS THE NEXT OPERATOR ; CHECK THE TERMINATOR EXPR0G: ; CHECK SYMBOLS FLAGS MOVB TFLAGS+1,R0 ; R0 = MULTIPLY DEFINED BYTE CMPB #MDFLAG,R0 ; SYMBOL MULTIPLY DEFINED ? BNE EXPR0H ; NOPE INCB DERROR ; DOUBLY DEFINED ERROR BIS #000400,R2 ; SET THE GENERAL ERROR EXPR0H: MOVB TFLAGS,R0 ; R0=TEMPORARY FLAGS. BITB #GLBFLG,R0 BNE EXPR0I BITB M0TE I LT B N IOATICIFNTDE IORATINRMTER FOL AL C ; 4 @R7, R SR J R.DD ARYNT E'SORATINRMTE= 4 R ; R4N,MIER#T V MO E OP N ; 01EMIT E BL ? S AB TORS NKLA BNY AREHE TREWE; G LATF B TBTS R TEINPOE YTRBCUE TH; S NTMERENC INETIOUBRSUS ABBT C ; BSTAD ANS NKLA BOR FCKHE CLLCA; BSTACB P RA T S ABHRA SHIFT FOR BYTE BIT INC R3 ;+1=CONTROL SECTION CMP #376,R3 ;ID NUMBER BLT CSECTE ;TOO BIG IF >376(8) CSECT6: TSTB SECMOD-O02 BEQ CSECT2 ;PREVIOUS SECTION ABS ;PREVIOUS SECTION RELOCATABLE. MOV @USERPC-O02,R1 ;SAVE CURRENT PC FOR MOV R1,@RELPC-O02 ;PREVIOUS SECTION CMP R1,@HIRPC-O02 BLOS CSECT7 BIT #1,R1 ;EVEN OFF MAX. PC BEQ CSECT8 INC R1 CSECT8: MOV R1,@HIRPC-O02 CSECT7: MOV HINDEX-O02,R0 ;BASE OF NEW CSECT ENTRY MOV R0,HIRP #DEFFLG,R0 ; SYMBOL DEFINED ? BEQ EXPR0L ; NOPE BITB #REGFLG,R0 ; REGISTER SYMBOL ? BEQ EXPR0I ; NOPE MOVB #REGFLG,REGTYPE ; YES, TYPE THE EXPRESSION ; AS REGISTER ; .PAGE EXPR0I: ; DECODE THE EFFECTIVE OPERATION ; CAUTION, HANDLERS SIZE LIMITED. TSTB R1 ; WERE ANY OPERATORS SEEN ? BGE EXPR1I ; YES, OR TND A ; KSANBLD DEEDMB EOR FEMITH AC ECKHE C ; : 00EMIT ERCTRAHA CNE OERNTOI P ; TEBYUR CHE TUPCKBA; E YTRBCU C DE R TEINPOE YTRBCUE TH; S NTMERENC INETIOUBRSUS ABBT C ; BSTAD ANS NKLA BOR FCKHE CLLCA; BSTACB P RA T KSANBLL IAITINS EMITH AC ESHLU F ; GSLA FUMCNDET SERE; M NUEC D RBCL 0 = 0 E1AS B ; 10SEBA R CL 0 = 8 E0AS B ; 08SEBA R CL 0 = Y ITNTUA Q ; TYTIANDC-O02 ;ADDRESS OF MAX. PC TST -(R0) MOV R0,RELPC-O02 ;ADDRESS OF PC MOV @R0,TBBUF-O02 ;PC OF NEW .CSECT MOVB R3,SECMOD-O02 ;NEW .CSECT ID TO SECMOD MOV TMPSYM+1-O02,R1 MOV TMPSYM+3-O02,R2 CSECT9: ;NEW PROGRAM SECTION ID TO DOT ID MOV HUSERPC-O02,R3 MOVB SECMOD-O02,1(R3) MOVB #RLD3.1,R0 ;LOCATION COUNTER DEFINITION MOV TBBUF-O02,R3 ;DISPLACEMENT FROM SECTION BASE MOV #10,R4 ;# OF BYTES TO RLD TRAP RLDFIL JMP EXIT-O02 VALID SITUATION TRAP SETERR ; CALL SET ERRORS EXPR1I: TRAP SAVREG MOVB R2,R0 MOVB TFLAGS,R1 EXPR0T: ASL R0 JMP @EXJTAB(R0) EXJTAB: .WORD EXPR0J ;THIS ENABLES A .WORD EXPR0S ;JMP TO .WORD EXPRL0 ;THE APPROPRIATE .WORD EXPRLA ;OPERATOR HANDLER ; OPERATION EXPR0J: ; PERFORM THE REQUESTED OPERATION TSTB ITYPE BEQ EXPR0N ; ADDITION TSTB RSLMOD QU R CL E OD CERMBNUD LIVA= E YPIT; 3 @R B LR C SSREDD AESYP TEMIT= 3 R ; R3E,YPIT # OV M 0 =ARCHNT C ; ARCHNT C RBCL E INUTRON IOATICIFNTDE I ; ERCTRAHA CSTIR FHE TTOIN; S ESDRADT INPOY TREN= 4 R ; R4R,HAFC # OV M SSREDD A6)M(SYMP T =R5; K ANBL= ) (5M SYMP T ; )+R5 ( RBCL S NKLA B =4)3,M(SYMP T ; )+R5 ( LR C KSANBL= ) ,2(1YMPSTM; + 5)(R R CL K ANBL= ) (0YM@ ;.ASECT ;THIS PART HANDLES THE ;.ASECT DIRECTIVE ; RASECT: ;ASECT HANDLER NEGB BINOUT-O02 ;REQUEST BINARY OUTPUT TSTB SECMOD-O02 BEQ ASECT1 ;ALREDY IN .ASECT ;PREVIOUS SECTION .CSECT MOV @USERPC-O02,R1 ;SAVE CURRENT PC FOR MOV R1,@RELPC-O02 ;PREVIOUS SECTION CMP R1,@HIRPC-O02 BLOS ASECT1 BIT #1,R1 ;EVEN OFF NEW MAX. PC. BEQ ASECT2 INC R1 ASECT2: MOV R1,@HIRPC-O02 ASECT1: MOV ABSPC-O02,TBBU ;BRANCH IF BLT EXP2A BITB #RELFLG,R1 ;RSL IS GLB OR HF QTX IS RDL BNE EXP2C BITB #DEFFLG,R1 ;IF ABS THEN BR BNE EXPR0N BITB #GLBFLG,R1 BEQ EXPR0N TSTB RSLMOD ;IF GLB THEN IF RSL IS REL BNE EXPERR ;THEN ERRR MOVB #-1,RSLMOD ;ELSE SET GLB MOD BR EXPR0K EXP2C: TSTB PRGSEC ;PREVIOUS RELOCATABLE SYMBOL BNE EXP2D ;YES MOVB CSCTID,PRGSEC ;SAVE THIS ID BRPSTM; + 5)(R RBCL S ESDRAD) (0YMPSTM= L BOYM S ; OLMBSY5, R OV M SSREDD A0)M(SYMP T =R5; 5 ,RYMPSTM # OV M KSANBLH IT WERFFBUM SYMP TLLFI; S ERSTGIREE AV SLLCA; EGVRSA P RA T: 03BRSU M:TE;I ERNTOU CERCTRAHA=CR0 ; L BOYM SEDORRR E-1< ; R BEUM NEDORRR E-1= ; R BEUM N0 = ; L BOYM S0 > ; E LUVAD DECOE=YPIT ; E LUVAD DECO. MIER=T<F-O02 BICB #RELFLG,@HUSERPC-O02 ;CLEAR RELOCATABLE ;FLAG BIT IN DOT SYMBOL ENTRY CLRB SECMOD-O02 ;.ASECT ID MOV #ABS1,R1 ;'.(SPACE)A MOV #ABS2,R2 ;'BS. BR CSECT9 ;.GLOBL THIS SECTION HANDLES GLOBAL STATEMENTS RGLOBL: MOVB #-1,SIZE-O02 CLRB SAVTERM-O02 TRAP CBTABS GLOBL1: DEC CURBYTE-O02 GLOBL2: MOVB SAVTERM-O02,R0 CMPB #-4,R0 ;CARRIAGE RETURN BEQ GL EXP2B EXP2D: CMPB CSCTID,PRGSEC ;SAME .CSECT BNE EXPERR ;NO-A ERROR EXP2B: INCB RSLMOD BR EXPR0N EXP2A: BITB #RELFLG,R1 ;ERRR IF REL BNE EXPERR BITB #DEFFLG,R1 ;OR GLB BNE EXPR0N BITB #GLBFLG,R1 BNE EXPERR EXPR0N: ADD @R4,@R5 ; RESULT = RESULT+QUANTITY BR EXPR0K ; PROCESS THE NEXT OPERATOR ; SUBTRACTION EXPR0S: TSTB ITYPE BEQ EXP3N BITB #RMTEAV SUTTPOU; E ON NUTNP I ; D.SEESOCPRG INBEM TE INTREUR CHE TTO ; E IVATEL RERNTOU CERCTRAHA C ANSAINTAI MEMIT ; . RMTEAV STOINE LUVAD DECO ; E THE ACPLD ANR TEACARCHR TONAMIER T ; EDERNTOUNC ENY ADECOEND ANY IFNTDE I.) 3 ; Y.ITNTUA QONTICALON IEMTHE AV S ; ND ARSBEUM NALIMEC DORL TAOCT ERNVCO) 2. ; . LSBOYM SOR FERFFBUM SYMP T ; HE TINS ERCTRAHA CIISC AIX STOP UVESA) 1. ; : ESICRV8OBLX CMPB #-5,R0 ;SEMI COLON BEQ GLOBLX TRAP ITEM ;GETS THE NEXT SYMBOL TSTB CNTCHAR-O02 ;;ANY CHARACTERS FOUND BGT GLOBLA ;YES THEN BRANCH GLOBLX: JMP EXIT-O02 ;ABORT GLOBLA: TSTB ITYPE-O02 ;IF ITEM WAS LEGAL BGT GLOBL4 ;THE BRANCH IF SYMBOL INCB QERROR-O02 ;ELSE FLAG CMPB #-3,SAVTERM-O02 ;IF LAST TERMINATOR BEQ GLOBL2 ;WAS , THEN BRANCH JMP MAIN1E-O02 DEFFLG,R1 BNE EXP3A BITB #GLBFLG,R1 BNE EXPERR EXP3A: BITB #RELFLG,R1 BEQ EXP3N CMPB PRGSEC,CSCTID ;SAME .CSECT AS PREVIOUS SYMBOL. BNE EXPERR ;NO-AERROR TSTB RSLMOD BLE EXPERR DECB RSLMOD BNE EXP3N ;CLEAR PREVIOUS .CSCET ID CLRB PRGSEC ;IF EXPRESSION GOES ABSOLUTE. EXP3N: SUB @R4,@R5 ; RESULT = RESULT-QUANTITY BR EXPR0K ; PROCESS THE NEXT OPERATOR ; INCLUSEG INOWLLFOE THE IDOVPR ; S NETIOU RONTICAFITIENIDR TEACARCHE TH ; . RSBEUM NOR ; S OLMBSYR HEIT EBEO TEDINEF DRE AMSTE I ; R.TONAMIER TEDODNC E ; TS ITHWIR HEETOG TEMITH AC EE,INUTRO ; G INLLCAE THO TG,INNTSERE PND AMSTE I ; ALICCTTAYN SOFG ININEF DHE TISN IOCTUN F'SEMIT; M TE INETIOUBRSU; RNTURE; 7 RS RT ENOP;. PNOT EM CKLO BNKLI;) R6-(1,RV MO4 GLOBL7: BISB #REDEF,@HINDEX-O02 ;SET PERMANENT SYMBOL REDEFINED FLAG. GLOBL4: TRAP SEARCH ;SEARCH SYMBOL TABLE BGT GLOBL7 ;IF PST THEN REPEAT BEQ GLOBL6 ;IN UST BISB #GLBFLG,TFLAGS-O02 ;SET GLOBAL FLAG TRAP ENTER ;ENTER INTO UST BR GLOBL2 ;FOUND IN UST GLOBL6: MOV HINDEX-O02,R1 ;ADDRESS OF ENTRY BITB #REGFLG,TFLAGS-O02 ;IS SYMBOL A REG. EXPR. BEQ GLOBL5 ;NO INCB RERROR-O02 BISB #MDFLAG,1(R1) ;SET MULTIPLY DEFINED CMPB #-3,SAVTERM-O02SIVE OR EXPRL0: BIS @R4,@R5 ; RESULT = RESULT .IOR. QUANTITY EXPRL1: TSTB ITYPE BEQ EXPR0K BITB #DEFFLG,R1 BEQ EXPERR BITB #RELFLG,R1 BNE EXPERR EXPR0K: TRAP SETREG CLRB R1 ; SET OPERATOR COUNTER COMB R1 ; BYTE = -1 JMP EXPR00 ; PROCESS THE NEXT OPERATION ;;AND EXPRLA: COM @R4 BIC @R4,@R5 BR EXPRL1 EXPERR: TRAP SETREG INCB AERROR CKLO BLEFI;) R6-(3,RV MO RSROERE DLAN HORITON MET;L 3)(R-4 LRC: INNTCO N.KETAS WA" INNTCO;" RNTURER ROERE TH, STXI EOT NID DLEFIE THF ;I Y.LLMAOR NEDRNTURES WAL RONTCO ;D AND TELEDES WAT ID,TEISEXY ADREALE IL FHE TIF ;E ETEL;D LTDT EM CKLO BNKLI;) R6-(1,RV MO CKLO BLEFI;) R6-(3,RV MO ITIN;. MDNCIT EM CKLO BNKLI;) R6-(1,RV MO RNTURER ROERP UET;S 3)(R-4N,TION#C OVM: 47BRSU T:OUEL;D ;T OUEL DAPTR ;3 RTOK OCBLE IL FOFS ESDRAD ;1 RTOK OCBLK IN LOFS 0 ;WAS TERMINATOR, BEQ GLOBL2 ;YES MOV #ITYPE,R3 ;NO JMP MAIN1E-O02 GLOBL5: BISB #GLBFLG,@R1 ;SET GLOBAL FLAG IN UST BR GLOBL2 ;TITLE DIRECTIVE HANDLER RTITLE: TRAP CBTABS ;THIS PART DEC CURBYTE-O02 ;GETS TRAP ITEM TSTB ITYPE-O02 ;THE FIRST ITEM BGT TITLE3 ;AND CHECKS INCB QERROR-O02 ;FOR SYMBOL BR TITLEX TITLE3: MOV JMP EXPR12 ; .PAGE ; SUBROUTINE SET ERRORS ; UTILITY SUBROUTINE FOR EXPRESSION ;SETERR: SUBR21: INCB QERROR ; QUESTIONABLE SYNTAX ERROR BIS #000400,R2 ; SET THE GENERAL ERROR RTS R7 ; RETURN .EOT ;END OF FILE #11 ; SECTION: CHARACTER IDENTIFICATION ; INPUT R0 MUST BE FREE ; OUTPUT R0=SFLAG'S VALUE ; NUMBERS R0=1 CESDRAD ;: CEENQUSEG INLLCA ;; LEFIT PUUT OENOP.; NGTIISEXY ADREALF ILEFIT PUUT OTELEDE.; ET STADAT PUUT OITIN .TOE INUTROUB;S R7 TSR: N1EACL LSRT EM ET STADAE ASLERE;) R6-(1,RV MO LSCT EM LEFIE OSCL;) R6-(1,RV MO NO; N1EACL EQB D T'NI IET STADAS ;I R1@T TS 4:R4UB S: ANLE;C CKLO BNKLIF OSSREDD=AR1 ; : UTNP;I ;. EDASLERET SE ;A AT DHE TND AEDOSCLS ILEFIE TH, 'DITINN EE;B AS HET STADAD IEIFECSPF I-- -ANLE CNETIOUBRSU ; , #TMPSYM,R1 TRAP SERCHB MOV TMPSYM+1-O02,TITLEA-O02 MOV TMPSYM+3-O02,TITLEB-O02 TITLEX: DECB SIZE-O02 ;SPACE WAS FOUND ASSUME DEFAULT JMP EXIT-O02 ; INITIALIZATION ; ; ;LIMIT HANDLER ; ; RLIMIT: MOV #TBBUF,R5 ;RESERVE CLR (R5)+ ;TWO CLR (R5)+ ;WORDS MOV #2,R4 ;WORDS MOV #RLD3.3,RLDIR-O02 ;AND TELL TRAP ONVERTED AND PACKED ; SYMBOLS R0=2 OR 3 MOD40 AND SAVED ; NOT FOUND SITUATIONS: ; TERMIS R0<0 R0=SFLAG IS CODED ; FOUND SITUATIONS: ; TERMIS R0=0 CHARACTER WAS NOT A TERMI. ; R0 RETURNED VALUE INTERPRETATION ; NUMBERS R0< OR = 1 DEFAULTED TO TERMIS SEARCH ; SYMBOLS R0< OR = 1 DEFAULTED TO NUMBER SEARCH ; = 3 NTH CHARACTER'S ENTRY RESULT ; NOT (0-9) . DEFAULTS TO FCHAR ; = 2 NTH CHA GEPA . ;N URET R ; R7 S RT S ESOCPRE THE NUTION CS,YE; 0 B0LK B HI B ?) (0STLIUR C >R0S I ; STLIUR,CR0 P CM K ANBLI CIAS= ) R0R(FEUF B ; 0)(R,-' # VBMO 0:B0LK B0 R NC I SSREDD ASEBAS ERFFBUG INSTLI; E IVCTFEEFE TH+ R0= 0 R ; R0T,ISRLCU D AD 1:R0UB S: UFKBBL ;E ON NT PUUT O ; K.ANBLA H IT WEDLLFIE BTO ; N IOITOS PERFFBUT AS LHE TOF ; ( RELREF ;THE LOADER TRAP RLDFIL MOV #4,SIZE-O02 ;TO FILL SPACE JMP EXIT-O02 ;SUBROUTINE LINEAR SYMBOL TABLE SEARCH ;PERFORMS A LINEAR SEARCH OVER A 4 ;WORD PER ENTRY SYMBOL TABLE. ;INPUT 1) THE BASE ADDRESS OF THE 2 ; WORD (MODULO 40) SYMBOL IN R1 ; IF THE 1ST TRIAD IS 0 ; THE TWO WORD SYMBOL IS ; NOT INCLUDED IN THE ; MATCHING PROCESS ; 2) THE ADDRESS OFRACTER'S ENTRY RESULT ; DEFAULTS TO NUMBER ; 1ST CHARACTER'S ENTRY RESULT ; WAS (0-9) .DEFAULTS TO FCHAR ; = 1 NUMBER'S ENTRY RESULT ; DEFAULTS TO TERMINATOR SEARCH ; < 0 CHARACTER WAS A TERMINATOR ; = 0 CHARACTER NOT A TERMINATOR ; TERMINATORS ENCODED AS FOLLOWS: ; # -18 ; @ -17 ; % -16 ; BLANK -15 ; TAB -14 ; ( -13 ; ) -12 ; " -11 QUOTATION ; ' -10 T IPCRBSSUE TH= 0 R UTNP I ; 0)R(FEUF BTO) R0R(FEUF BOMFR ; . KSANBLI CIAS ; H IT WERFFBUG INSTLIE IVCTFEEFE THL IL F ; RSTEACARCHR FEUF BNGTIIS LNKLA BNETIOUBRSU; RNTURED ANS ERSTGIRET SEL AL C;G REOP P APTR G LA FCOR EACL; G LAOF C LR C 1:STOL CN IOETPLOM;C MDTCWT EM UTTPOUD ANMMCOR FOT AI;W 6)(R,-LBCO#V MO ;; MDRCWT EM UTTPOUD ANMMCOE ICRVSE;) R6-(B,OL#C $ THE 3RD WORD TO BE MATCHED ; IN R4. THE RIGHT BYTE IS ; THE FLAG BYTE. THE LEFT ; BYTE IS THE CONTROL SECTION ; ID BYTE. ; 0 VALUES SPECIFY THAT THE ; BYTE NOT BE INCLUDED IN THE ; MATCHING PROCESS. ONLY BITS IN ; THE FLAG BYTE THAT ARE ON WILL ; BE MATCHED IN THE SEARCH. ; 3) THE STARTING (HIGHER) ADDRESS OF ; THE SYMBOL TABLE IN R2 ; 4) THE 1ST FREE ADDRESS BELOW THE ; SYMBOL TABLE IN R3 ; ;OUTPUT ; IF MATCH FOUN APOSTROPHE ; + -9 ; - -8 ; ! -7 ; & -6 ; ; -5 ; CR -4 ; , -3 ; : -2 ; = -1 ; TERMINATOR CHARACTER TABLE TCHART: TCHARS = TCHART+22 TCAIMM: .BYTE '# ; IMMEDIATE TCCIMM = TCAIMM-TCHARS TCADEF: .BYTE '@ ; DEFFERD TCCDEF = TCADEF-TCHARS TCAREG: .BYTE '% ; REGISTER TCCREG = TCAREG-TCHARS TCABLK: .BYTE ' ; BLANK TCCBLK = TCABLK-TCHARS TCATAB: OVM . ERNTOI PCKTA SHE TRETOES R; . LFE THR TEAFL UL N AERFFBU; )+R6@( B LR C NTOU CTEBYT ENRRCUT ENEMCRIN; 0)(R - NC I TEBYA AT DSTIR F'SERFFBU; LOE THF OSSREDD AHE TDD A; 6 @R0, R DD A NT CTEBYT ENRRCUS O' LCKTA S; ) R6-(+,0)(R V MO 4 0+ R =R0; )+R0,()+R0 ( MP C SSREDD AERFFBUK ACST; 6)(R,-R0 OVM R DEEA HERFFBUN AIBT OS,YE; R00,#2 B SU E OP N ; 1 STOL C EQ B ?EDSTUEEQ RUTTPOUD ANMMCO; 0 ,RAGFL D ; 1) R0 AND CONDITION CODES NON 0 (POSITIVE) ; 2) ADDRESS OF ENTRY TO HINDEX (HIGHER ADDRESS) AND R2 ; IF NO MATCH ; 1) R0 AND CONDITION CODES 0 ; 2) R2 DESTROYED ;LINSRCH: SUBR41: LINSR3: CMP R2,R3 ;COMPARE TABLE LIMITS. BNE LINSR1 ;STILL MORE ENTRIES. CLR R0 ;NO MATCH. RTS R7 ;RETURN LINSR1: MOV @R1,R0 ;1ST TRIAD BEQ LINSR6 ;DON'T COMPARE IF 0 CMP R0,-6(R2) BNE LINSR4 ;NO MATCH; TRY NEXT ENTRY. CMP 2(R1),-4(R2) ;2ND TR .BYTE 011 ; TAB TCCTAB = TCATAB-TCHARS TCALPA: .BYTE '( ; LEFT PARENTHESIS TCCLPA = TCALPA-TCHARS TCARPA: .BYTE ') ; RIGHT PARENTHESIS TCCRPA = TCARPA-TCHARS TCAQUO: .BYTE '" ; QUOTATION TCCQUO = TCAQUO-TCHARS TCAAPO: .BYTE '' ; APOSTROPHE TCCAPO = TCAAPO-TCHARS TCAADD: .BYTE '+ ; ADDITION TCCADD = TCAADD-TCHARS TCASUB: .BYTE '- ; SUBTRACTION TCCSUB = CO OV M RSTEISEG RVESAL AL C;G REAV S APTR 7:R2UB S: STLICO; RNTURE; 7 R TS R DRADD KEACST= ) ,3(2RSADBH; +2RSADBH+,6)(R V MO ) ,3(2RSADBH= ) ,1(0RSADBH; ) R2-(2,@R V MO ) ,1(0RSADBHK ACST; ) R6-(+,2)(R V MO S SEESDRADR DEEA HERFFBUO I/E ATOT R ; SSREDD ARSDEEA HERFFBUI S ; RSFEUF BLEABILVA A =R0; 0 ,RR2 @ OV M ERFFBUG INSTLIK ANBLL ALIAD BNE LINSR4 ;NO MATCH; TRY NEXT ENTRY. LINSR6: MOVB @R4,R0 ;FLAG BYTE BICB (R2),R0 ;ALL BITS IN DST SHOULD BNE LINSR4 ;BE CLEARED IF MATCH MOVB 1(R4),R0 ;CONTROL SECTION ID BYTE BEQ LINSR8 CMPB R0,1(R2) BEQ LINSR8 LINSR4: SUB #10,R2 ;SUBTRACT 4 WORDS FROM POINTER BR LINSR3 ;TRY NEXT ENTRY. LINSR8: MOV R2,HINDEX-O02 ;MATCH--ADDRESS OF MOV #1,R0 ;ENTRY TO HINDEX; RTS R7 ;POSITIVE VALUE TO R0. ; TCASUB-TCHARS TCAEXC: .BYTE '! ; EXCLAMATION TCCEXC = TCAEXC-TCHARS TCAAND: .BYTE '& ; AND TCCAND = TCAAND-TCHARS TCASMC: .BYTE '; ; SEMICOLON TCCSMC = TCASMC-TCHARS TCACRE: .BYTE 015 ; CARRIAGE-RETURN TCCCRE = TCACRE-TCHARS TCACOM: .BYTE ', ; COMMA TCCCOM = TCACOM-TCHARS TCACOL: .BYTE ': ; C C ; F BULK B APTR R TEINPOT ISRLCUT SE; 3 @R1, R OV M NTOU CTEBYS ERFFBUO ER Z ; )+R1 ( LR C DEMOS ERFFBUE IZALTINI I ; )+R1,(DEMOLO # OV M AX MRSFEUF BZELIIAITIN; + 1)(R0, R OV M NTOU CTEBYX MAO L =R0; 0 ,RBCOM#L V MO S ESDRADR DEEA HLOS ERFFBU; E IVCTFEEF, 4.-2R1= 1 R ; R10,#2 B SU 2:ATOT R? D TEESQURET PUUT ONDMAOM C;T ISOL C APTR : T1TARO UTROER MPJ ) R6-(3,RR#E OVM E ICEV DUTTPOU; 6 @R ; ;GSDTAB THIS SUBR CONSTRUCTS THE GSD TABLE IMMEDIATELY ;AFTER THE .END STATEMENT PRECEDING THE BINARY PASS ; SUBR35: MOV #BOLB,R1 MOV #BOFB,R3 TRAP DELOUT ;.INIT, .DELETE, .OPEN, BINARY DATA SET. ; DUMP LEADER GSD999: MOV #20.,R0 ;SET COUNT GSD06: MOV #TRLBUF,-(R6) MOV R1,-(R6) EMT WRCMD DEC R0 ;DONE? BGE GSD06 MOV #GSDCMD,DIRCMD-O02 ; GSD DECLARATION. TRAP RLDINT MOV TITLEA-O02,R0 ; OBJECT MODOLON TCCCOL = TCACOL-TCHARS TCAEQU: .BYTE '= ; EQUALS TCCEQU = TCAEQU-TCHARS TCTSIZE = TCHARS-TCHART ; .PAGE .EVEN TERMIN: TRAP SETUP1 ; CALL SECTION INITIALIZATION TERM0: MOV #-TCTSIZE,R0 ; R0 = -TCHARS TABLE SIZE TERM1: MOV R0,SAVTERM ; SAVTERM = R0 BGE SECRTN ; TERMINATE IF NOT N ABSW OND EO;6 @R7,37#C BI 3:ROER 6)(R,-1)(R-1ATSTLO OVM S AGFLE THR EACL, ES Y;) R1T(TAOS,LOF#E B IC B UEINNTCO, PENO; T1TARO Q BE ? T PUUT OEDSTLIN OOF E;) R1T(TAOS,LOF#E B IT B CHANBR- O ;N T1TARO EQB ? SSREOGPRN INGHIYTANS WA;0 RT TS 4:ATOT RS ESGRRO PING INTHMESOT SE;0 RC IN ONTILEMPCOR FOT AI;W MDTCWT EM 6)(R,-LBSL#V MO CHANBR- O ;N T4TARO EQB ? SSREOGPRN INGTIIS LOLMBSYS ;I LBSL STT: T3TARO SSREOGPRN INGHIETOM SET;S R0 NCI N ULE NAME. MOV TITLEB-O02,R1 CLR R2 ; 0 TO FLAGS. CLR R3 MOV #10,R4 TRAP RLDFIL MOV #ABS1,R0 MOV #ABS2,R1 MOV #ASCFLG,R2 ;ENTER ASECT (PROG. SECTION, DEFINED) TRAP RLDFIL ;SEARCH UST FOR ALL .GLOBL'S ASSOCIATED WITH ;THE ABSOLUTE SECTION. ; MOV CONTOP-O02,R2 ;THE STARTING ADDRESS OF UST MOV USRTOP-O02,R3 ;1ST FREE LOCATION BELOW UST MOV #WORD1,R1 ;ADDRESS CONTAINING .GLOBL NAME CLR @R1 ;ACCEPT ANY NEGATIVE CMPB TCHARS(R0),R3 ; IS TCHARS(R0) = CHARACTER ? BEQ SECRTN ; YES, TERMINATOR IDENTIFIED INC R0 ; R0 = R0+1 BR TERM1 ; CONTINUE THE SEARCH ? ; .PAGE NUMBER: TRAP SETUP1 ; CALL SECTION INITIALIZATION NUM0: CLR R5 ; R5 = 0 TSTB @R4 ; DECIMAL POINT SEEN YET ? BLT TERM0 ; YES, PERMIT ONLY TERMIOETPLOM COR FITWA;D CMWT MTE ) R6-(B,OL#L OVM H NCRA B -NO;3 ATOTRQ BE S?ESGRRO PING INSTLIS ;I LBLO STT S ESGRRO PING INTHNOT SE;0 RR CL SSREDD ASTLIUR C =R3; 3 ,RSTLIUR#C V MO S ESDRADS ERADHE; R FEUF BUTNP ICEURSO; S ERFFBUE IVCTFEEF= 1 R ; R12,@R V MO S SEESDRADS ERADHE; R FEUF BUTNP IHE TNGNIAINTCO; E BLTAE THF OSSREDD A =R2; 2 ,RRSADBH # OV M: 02BRSU E:ATOT;R EDOYTRES DRE AAME. MOV #WORD3,R4 ;3RD WORD OF MATCH. MOV #GLBFLG,@R4 ;.GLOBL GSD05: TRAP LINSRCH BEQ GSD01 ;NO MATCH BITB #RELFLG,@R2 ;ADDRESS OF MATCH IN R2 & HINDEX BNE GSD04 ;RELOCATABLE .GLOBL TRAP ENTRGL ;ENTER SYMBOL IN RLD BUFFER GSD04: SUB #10,R2 ;HINDEX-4 WORDS. BR GSD05 ;CONTINUE LINEAR SEARCH. ;ENTER ALL RELOCATABLE PROGRAM SECTIONS ;AND ASSOCIATED .GLOBL SYMBOLS. GSD01: MOV PERTOP-O02,INATOR MOV #1,R0 ; R0 = 1 CMPB R3,#'0 ; IS CHARACTER AN ASCII 0 BLT NUM1 ; NOPE CMPB R3,#'9 ; IS CHARACTER AN ASCII 9 BLE NUM2 ; JUMP IF PROPERLY BOUNDED NUM1: CMPB #'.,R3 ; CHARACTER A DECIMAL POINT ? BNE TERM0 ; NO, DEFAULT TO TERMINATOR BISB #200,@R4 ; YES, SET DECNUM'S SIGN BIT ; DECIMAL POINT HAS BEEN SEEN BICB #10,NERROR ; CLEAR THE IMPLIEDR3U HR TR0 ; S ESDRADS ERADHE ; ERFFBUT PUINE RCOU S ; S ERFFBUE BLLAAIAV= 0 RT PUUT O ; NENO T PUIN; N IOITOS PLEABILVA AHE TTOINR FEUF BESATOT R ; KSANBLO TTADAS ERFFBUS HI TESIZALTINI I ; ERADHEO LRSFEUF BISTHS ZELIIAITIN ; Y ARSSCENEF IN,IOATINRMTEO LESFIRIVE ; : KSAS TNGWILOOL FHE TMSORRFPEE INUTROUB SISTH; S ERFFBUT PUUT/OUTNP ITETAROE INUTROUB S ; R5 ;BOTTOM OF .CSECT AREA MOVB #1,WORD3+1-O02 ;UNNAMED .CSECT ID GSD10: MOV CONTOP-O02,R3 ;TOP OF .CSECT AREA MOV #10,R4 CMP R5,R3 BEQ GSD11 ;DONE, NO MORE .CSECT'S MOV -6(R5),R0 ;1ST TRIAD MOV -4(R5),R1 ;2ND TRIAD MOV #CSCFLG,R2 ;RELOCATABLE, DEFINED PROG. SECTION MOV (R5),R3 ;MAXIMUM PC (SIZE) TRAP RLDFIL ;ENTER INTO RLD BUFFER CMPB RLDCNT-O02,#51 BLT GSD07 TRAP OUTBIN ;NO MORE ROOM; OUTPUT TRAP RLDINT ;AND REFRESH RLD BUFFER. DECIMAL ; BIT IN THE NERROR FLAG CLR -(R6) ; STACK A VOID OVERFLOW VALUE BR NUM3 ; COMPLETE NUMBER PROCESSING NUM2: BIC #177760,R3 ; CONVERT ASCII DIGIT TO BINARY MOV @R1,R5 ; R5 = BASE08'S CURRENT VALUE MOV @R2,-(R6) ; STACK BASE10'S VALUE BIC #017777,R5 ; DETECT BASE08'S OVERFLOW BIC #017777,@R6 ; DETECT BASE10'S OVERFLOW ASL @R1 ; BASE08 = BASE08 * 2 ASL , RNTURE; 7 R TS R 1:NTRI PR TEACARBH' '?E UTITSTUB S ; E YTRBCU,@'? # VBMO 0:NTRI PT MILIR WELO 40S EDCEEX; 1 NTRI P LE B TEBYUR@C0,#4 B MP C ITIM LERPP U40 1DSEEXC E ; T0INPR T BG 0 14,#TEBYUR@C B MP C: 25BRSU T:INPR ;D LIVAINS IEPLIM. GT . ; IDAL VESLIMP IE..L ; S LTSURED DECON IOITNDCO: UTTPOU; Y ITILABNTRI PNETIOUBRSU; N URET R ; R7 S RT N GSD07: MOV CONTOP-O02,R2 ;THE STARTING ADDRRSS OF UST MOV USRTOP-O02,R3 ;1ST FREE LOCATION BELOW UST MOV #WORD1,R1 ;ADDRESS CONTAINING SYMBOLIC NAME CLR @R1 ;ACCEPT ANY NAME MOV #WORD3,R4 ;.CSECT ID ALREADY SETUP MOVB #GLBFLG!RELFLG,@R4 ;RELOCATABLE .GLOBL GSD08: TRAP LINSRCH BEQ GSD09 ;NO MATCH TRAP ENTRGL ;ENTER SYMBOL IN RLD BUFFER SUB #10,R2 BR GSD08 GSD09: SUB #10,R5 ;LOOK FOR NEXT .CSECT INCB WORD3+1-O02 ;INCREMENT .CSECT ID BR  @R2 ; BASE10 = BASE10 * 2 MOV @R2,-(R6) ; STACK BASE10'S PARTIAL SUM ASL @R1 ; BASE08 = BASE08 * 4 ASL @R1 ADD R3,@R1 ; BASE08 = BASE08 + DIGIT ASL @R2 ; BASE10 = BASE10 * 4 ASL @R2 ADD (R6)+,@R2 ; BASE10 = BASE10 + PARTIAL ROR @R6 ; MAINTAIN BASE10'S OVERFLOW ADD R3,@R2 ; BASE10 = BASE10 + DIGIT ROR @R6 ; MAINTAIN BASE10'S OVERFLOW BIC URET R ; R7 S RT: H0TCGE ;. ONTINAMIER TRESUIN; 3 ,RTEBYUR@C B OV M ;0 < E IZ S ANGSI U ; RDWO . AASD REDESION C ; 6)(R,2770300 # OV M ;X TAYN SLEABONTIESQU, ES Y ; ORRRQE B NC I ;T XI ESOE AS CIDAL VO, N ; H0TCGE E BN ; ?ET-RAR C AERCTRAHA CISTH; TEBYUR@CR,#C B MP C ;. EDATINRMTES I ; VETIECIR DHE TND ADECO; R ROER' 'QA H IT WEDNTRI PIS; E IN LNKLA B AR,EAPP AESDO; GSD10 ;ENTER THE TRANSFER ADDRESS GSD11: MOV #TRNCMD!DEFFLG,R2 ;DEFINED, TRANSFER ADDRESS SPEC. MOV #ABS1,R0 ;NAME OF 6 BLANKS MOV #ABS2,R1 TSTB RSLMOD-O02;TYPE OF EXPRESSION BEQ GSD02 ;ABSOLUTE ;RELOCATABLE .END MOV GLBSY1-O02,R0 ;.CSECT NAME OF MOV GLBSY2-O02,R1 ;.END EXPRESSION BISB #RELFLG,R2 ;RELOCATABLE FLAG. GSD02: MOV JMPADR-O02,R3 ;TRANSFER ADDRESS. BIC #RSTFLG,R2 TRAP RLDFIL TRAP OUTBIN ;START NEW BUFFER MOV #GSDEN #7,R3 ; RETAIN THE BIT POSITION ; WHICH IMPLIES DECIMAL. BISB R3,NERROR ; SET THIS BIT INTO NERROR ; (IE., ASSUME DECIMAL NUMBERS ; ARE VIOLATIONS UNTIL THE ; DECIMAL POINT IS SEEN.) BISB R3,@R4 ; SET THIS BIT INTO DECNUM NUM3: MOVB @R4,-(R6) ; STACK THE DECNUM BYTE BIC #177617,@R6 ; OBTAIN CUMULATIVE OVERFLOW BIS (R6)+,@R6 ; MAINTAIN BASE10'S OVERFLO E ONF I. NTMETETA SIISC.A; N AINTHWID TEITRMPER VENE; S IERCTRAHA CET-RAR C AATTH; S RESUINE OD CEDOPO- NISTH; R TEACARCH. FF E =RMTEAV S ; 5 @RE,YTRBCU @ VBMO 1:R1UB S: ARCHET;G ERCTRAHA CET GNETIOUBRSU; #7E IL FOFD EN; T EO. ; RNTURE; 7 R TS R: 01ENEV UTNOBI1, # VBMO F BUEB P RA T EGTRSE P RA T ILDFRL P RA T D,DIRCMD-O02 ;GSD TERMINATION. TRAP RLDINT TRAP OUTBIN MOV #RLDCMD,DIRCMD-O02 ;RLD BLOCK DECLARATION TRAP RLDINT CLR R1 ;UNNAMED .CSECT CLR R2 MOVB #RLD3.1,R0 ;ENTER INITIAL CLR R3 ;IMPLICIT RLD. (LOCATION COUNTER MOV #10,R4 ;DEFINITION) TRAP RLDFIL TRAP OUTBIN RTS R7 ; ; ;SUBROUTINE TO ENTER A GLOBAL SYMBOL ;POINTED TO BY W BEQ NUM30 ; BASE10 HAS NOT OVERFLOWED BISB #160,@R4 ; MAINTAIN DECNUM'S OVERFLOW NUM30: BITB #210,@R4 ; OCTAL OR DECIMAL ? BEQ NUM4 ; OCTAL NUMBERS EXITED. ; DECIMAL NUMBERS PROCESSED MOV @R6,R5 ; R5 = BASE10'S OVERFLOW DATA MOV R2,R1 ; R1 = BASE10'S ADDRESS NUM4: MOV @R1,QUANTITY ; QUANTITY = EFFECTIVE VALUE NUM5: R44, # OV M N.IOATICIFOD;M R1C,RPSE@U V MO R TEUNCON IOATOC;L R02,3.LD#R B OV M EGVRSA P RA T UTTPOUY ARIN BSTUEEQ R ; UTNOBI B EG N ORRR ENGDIUNBOE THT SE; R ROER B CBIN F BUTB C IN . PCS R'SE UNTMERENC I, NO; C RPSE@U C IN T XI ES,YE; 1 N0VE E EQ B ?ENEVR TEUNCON IOATOC L ; PCERUS,@#1 T BI F BUTBC,RPSE@U V MO 6:R2UB S: PCENEV ; R TEUNCON IOATOC LHE TENEVE INUTROUB S ; NGSIESOCPRE ETPLOM C  R2 INTO THE RLD BUFFER. ; ;ENTRGL: SUBR42: TRAP SAVREG ;SAVE REGISTERS MOV R2,R5 ;ADDRESS OF ENTRY MOV -6(R5),R0 ;1ST TRIAD MOV -4(R5),R1 ;2ND TRIAD MOV -2(R5),R3 ;VALUE MOV #10,R4 ;BYTE COUNT MOV #SYMDIR,R2 ;SYMBOL DECLARATION BISB (R5),R2 ;SYMBOL'S FLAGS BIC #RSTFLG,R2 ;KEEP UNDEF/DEF, ABS/REL, TRAP RLDFIL ;AND INTERNAL/GLOBAL. CMPB RLDCNT-O02,#51 BLT ENTRG0 ;STILL ROOM IN RLDBUFFER TRAP OUTBIN ;OUTPUT RLD BUFFER TRAP RLDI MOV R5,(R6)+ ; THE EFFECTIVE OVERFLOW DATA ; SETS THE CONDITION CODES, ; MAINTAIN THE STACK POINTER BEQ SECRTN ; EXIT, NO OVERFLOW DETECTED INCB TERROR ; SET TRUNCATION ERROR BR SECRTN ; EXIT, OVERFLOW DETECTED ; .PAGE NCHAR: TRAP SETUP1 ; CALL SEC ; T XI E MP J ORRRBE B LR C ERNTOU CONTICALOE THN VE ELLCA; PCENEV P RA T T.OUD CEOR F ; YSWAALS IERFFBUT PUUT ORYNABIE TH; E,OREFERTH, EDERLT ALYALONTIDIONNC U ; ISR TEUNCON IOATOC LLYMBSEASE TH; G INSSCERO PVETIECIR DLYMBSEASN VE E ; N:VEE DCEN. 1 D1EN MPJ G SENO DFIF. C ND.E Y2TREN MPJ 3 #AYRLVE;O 3D OR.W RLNTCO APTR EGOSNF NDNT ;INITIALIZE RLD BUFFER ENTRG0: TRAP POPREG ;RESTORE REGISTERS AND RETURN .IFNDF NOSEG ENDO02: SIZO02=ENDO02-BEGO02 ; .EOT ;END OF FILE #2 ;***** OVERLAY #3 ***** O03=BEGOVR-BEGO03 ;COMPUTE OFFSET FROM ;RUN TIME OVERLAY AREA BEGO03: ;JUMP TABLE TO ENTRY POINTS ;IN THIS OVERLAY. ; JMP REND ;ENTRY1 JMP END11 ;ENTRY2 JMP SUBR12 ;ENTRY3 JMP SUBR15 ;ENTRY4 JMP IFPTION INITIALIZATION INC R0 ; R0 = 2 CMPB R3,#'0 ; IS CHARACTER ASCII 0 ? BLT CHAR01 ; NOPE CMPB R3,#'9 ; IS CHARACTER ASCII 9 ? BGT CHAR01 ; NOPE CHAR00: SUB #22,R3 ; BOUNDED, START TRANSLATION BR CHAR03 ; COMPLETE THE TRANSLATION FCHAR: TRAP SETUP1 ; CALL SECTION INITIALIZATION INC R0 ; R0 = 2 CHAR01: CMPB #'$,R3 ; IS CHARACTER ASCII $ ? BNE IF.: NDMESI VETIECIR DND.EE ATULIM;S ;C ND.E TEBYRP JM EGOSNF FD.I DCEN. 4 RYNTEP JM 4D OR.W RLNTCO APTR EGOSNF NDIF.: TEBY ERDLAN HVETIECIR DTEBY .OFN IORTPOT ENIDES;R ;C ND.E IISCRA MPJ G SENO DFIF. C ND.E Y2TREN MPJ 4 RDWO. L TRONCP RAT G SENO DFFN.I I:CIAS ERDLAN HVETIECIR DIISC.AF OONTIOR PNTDESIRE ;; DCEN. 0 D5RARP JM EGOSNF FD.I DCEN. 1 RYNTEP JM 4D OR.W #4Y LAEROVN ILLCA; L TRONCP RAT G SENO DFFN.I 0:D5RA ERRO ;ENTRY5 JMP IFPRO2 ;ENTRY6 JMP RENDC ;ENTRY7 JMP SUBR38 ;ENTRY8 .ENDC ; ; ; REND: ; .END ASSEMBLY DIRECTIVE PROCESSOR TRAP EXPE1 ;EVALUATE EXPRESSION MOV RESULT-O03,JMPADR-O03 ;INCREMENT TAPE COUNT IN ;CASE TAPE STILL IN READER MOV SILB-O03,R4 INC 14(R4) ;TAPE COUNT TSTB ERROR-O03 BNE END00 TSTB ICOUNT-O03 BLE END00 CMPB #-1,RSLMOD-O03 BNE END01 INCB AERROR-O03 ;.GLOBL IN .END EXPRESSION END00: MOV #1,JMPADR-O03 CHAR02 ; NOPE SUB #11,R3 ; YES, INITIATE TRANSLATION BR CHAR03 ; COMPLETE THE TRANSLATION CHAR02: CMPB #'.,R3 ; IS CHARACTER ASCII . ? BEQ CHAR00 ; YES, START TRANSLATION CMPB R3,#'A ; IS CHARACTER ASCII A ? BLT NUM0 ; NOPE CMPB R3,#'Z ; IS CHARACTER ASCII Z ? BLE CHAR03 ; CHARACTER IS BOUNDED ; CHECK FOR LOWER CASE CMPB R3,#141 ; IS CHARDLAN HVETIECIR D50AD.RF OONTIOR PNTDESIRE ;; DCEN. C NDRE MPJ G SENO DFIF. C ND.E Y7TREN MPJ 3 RDWO. L TRONCP RAT G SENO DFFN.I C:ND EC ND.E O2PRIF MPJ G SENO DFIF. C ND.E Y6TREN MPJ 3 RDWO. Y TRENF NDIF;. RLNTCO APTR EGOSNF NDIF.: DFFN IY TRENF FD.I;+ 1)(R+,1)(R MPC: DFIF DCEN. O PRIF MPJ G SENO DFIF. C ND.E Y5TREN MPJ 3 RDWO. L TRONCP RAT G SENO DFFN.I Z:IF )+R1,()+R1(P CM E:FL I+ 1)(R+,1)(R MPC: FL I) 00F0(IE BLTAH NC END01: MOV JMPADR-O03,TBBUF-O03 CLRB BINOUT-O03 MOVB #100,PAGING-O03 TSTB CNSTLV-O03 ;STILL IN A NEST OF CONDITIONALS? BEQ END01A ;NO - BRANCH INCB QERROR-O03 ;QUESTIONABLE SYNTAX END01A: TRAP ENDLINE END11: ;SYMBOL TABLE IS FIXED SO ;ALL OF FREE CORE TO STACK. MOV USRTOP-O03,R6 MOV R6,STKBOT-O03 TSTB SECMOD-O03 ;.ASECT BEQ END20 MOV @USERPC-O03,R4 ;CURRENT PC CMP R4,@HIRPC-O03 ;TO MAX. PC BLOS END20 ;IF THE BIT #1,R4 ;FORMER. LOWER CASE A ? BLT NUM0 ; CHARACTER NOT BOUNDED CMPB R3,#172 ; IS CHAR. LOWER CASE Z ? BGT NUM0 ; CHARACTER NOT BOUNDED BICB #040,R3 ; INTERNALLY CONVERT ALL ; LOWER CASE TO UPPER CASE. MOVB R3,@CURBYTE ; EXTERNALLY CONVERT ALL ; LOWER CASE TO UPPER CASE CHAR03: BIC #177700,R3 ; COMPLETE THE TRANSLATION MOVB R3,@SYMBOL ; SAVE CHARACTER IN TMPSYM INC SYMBRA BTOIN;+ 1)(R+,1)(R MPC: GEIF NTMECELASPDIR PERO PET;S )+R1,()+R1(P CM G:IF )+R1,()+R1(P CM Z:FN I; ;" INMA "EE-S--CEANTRENN O=01)(R;C ;R LENDHAS VETIECIR DALONTIDION COFN IORTPOT ENIDES;R ; DCEN. D ENRP JM EGOSNF FD.I DCEN. 1 RYNTEP JM 3D OR.W #3Y LAEROVN ILLCA; L TRONCP RAT G SENO DFFN.I D:EN ERDLAN HVETIECIR DND.EF OONTIOR PNTDESIRE ;; DCEN. T MILIRP JM EGOSNF FD.I DCEN.  IS HIGHER BEQ END24 ;EVEN. INC R4 ;MAKE EVEN END24: MOV R4,@HIRPC-O03 END20: MOV ERRSUM-O03,R4 MOV #ERRMSG+16-BEGO03+BEGOVR,R3 MOV #6,R2 TRAP BINASC ;CALL BIN TO ASCII CONVERTER MOV #PASS,R5 CMPB LOPASS-O03,@R5 ;IS THIS THE LISTING PASS? BEQ END21 ;YES - BRANCH CMPB BOPASS-O03,@R5 ;IS THE BIN OUT PASS? BEQ END21A ;YES - BRANCH BR END21B END21: MOV #LOLB,R1 ;.CLOSE AND .RELEASE ;ERROR COUNT TO LISTING DEVICE MOV #ERRMSG-BEGO03+OL ; SYMBOL = SYMBOL+1 SECRTN: TRAP SETREG ; CALL SET REGISTERS MOVB R0,SFLAG ; SFLAG = R0 RTS R7 ; RETURN ; .PAGE ;SETUP1: SUBR22: MOV (R6)+,R0 ; SAVE THE RETURN ADDRESS TRAP SAVREG ; CALL SAVE REGISTERS MOV R0,-(R6) MOV #1,R0 ; R0 = 1 MOV #BASE08,R1 ; R1 = BASE08 ADDRESS MOV #BASE10,R2 ; R2 5 RYNTEP JM 2 RDWO. L TRONCP RAT G SENO DFFN.I T:MILI ERDLAN HVETIECIR DITIM.LF OONTIOR PNTDESIRE ;; ITEX BR ZESI CBDE T:EO ERDLAN HVETIECIR DOT;E ;C ND.E LEITRT MPJ G SENO DFIF. C ND.E Y4TREN MPJ 2 RDWO. L TRONCP RAT G SENO DFFN.I E:TLTI ERDLAN HVETIECIR DLEIT.TF OONTIOR PNTDESIRE ;; DCEN. L OBGLRP JM EGOSNF FD.I DCEN. 3 RYNTEP JM 2D OR.W RLNTCO APTR EGOSNF NDIF.: BLLO GR LENDHAE IVCTREDIL OBGL .OFN IORTPOT ENIDES;R ;C ND.E!BEGOVR,-(R6) MOV R1,-(R6) EMT WRCMD TRAP CLEAN ;LISTING FILE. END21A: CMPB BOPASS-O03,@R5 ;IS THIS THE BIN OUT PASS? BNE END21B ;NO - BRANCH MOV #OBJEND,DIRCMD-O03 TRAP RLDINT TRAP OUTBIN MOV #20.,R4 ;DUMP TRAILER END25: MOV #TRLBUF,-(R6) MOV #BOLB,-(R6) MOV @R6,R1 ;FOR CLEAN EMT WRCMD DEC R4 BGE END25 ;.CLOSE AND .RELEASE TRAP CLEAN ;BINARY FILE. END21B: MOVB #DEFFLG!GLBFLG,STMASK-O03 MOV #COLB,R2 MOV R"= BASE10 ADDRESS MOVB @CURBYTE,R3 ; R3 = EFFECTIVE CHARACTER MOV #DECNUM,R4 ; R4 = DECNUM ADDRESS RTS R7 ; RETURN ; .PAGE ; SUBROUTINE BINARY TO ASCII CONVERTER ; INPUT R4 = BINARY NUMBER ; R3 = DESTINATION END ADDRESS ; R2 = ITERATION LENGTH ;BINASC: SUBR13: MOVB R4,-(R3) ; MOVE THE EFF. OCTAL DIGIT CTSERA MPJ G SENO DFIF. C ND.E Y2TREN MPJ 2 RDWO. L TRONCP RAT G SENO DFFN.I T:ECAS ERDLAN HVETIECIR DCTSE.AF OONTIOR PNTDESIRE ;; DCEN. T ECCSRP JM EGOSNF FD.I DCEN. T ITOL RONTCOE IV;G Y1TREN MPJ 2 RDWO. 2 #AYRLVE OINL AL;C RLNTCO APTR EGOSNF NDIF.: CTSE CR LENDHAE IVCTREDIT ECCS .OFN IORTPOT ENIDES;R ;E IN LCEURSOO TRNTURE; C SRET S MP J NGSIESOCPRE IN LND ELLCA; E INDLEN P RA T T:XI ET MAOR FNGTIIS LUPT SE;F BUTB3,@R%2,STLLS1+2 TST @R2 ;INIT BNE END13 ;COMMAND OUT IF MOV R2,-(R6) ;NOT ALREADY DONE. EMT INCMD ;.INIT END13: CMPB USPASS-O03,@R5 ;IS THE UNDEF SYM PASS? BEQ END02 ;YES - BRANCH END12: CLRB STMASK-O03 MOV #SLLB,R1 MOV R1,STLLS1+2 CMPB STPASS-O03,@R5 ;IS THIS SYM LST PASS? BNE END22 ;NO - BRANCH MOV #SLFB,R3 ;.INIT,.DELETE,.OPEN TRAP DELOUT ;SYMBOL TABLE DATA SET CLRB STPASS-O03 END02: TRAP STLIST ;LIST SYMBOLS MOV R2,-(R6) & ; INTO LSTBUF(R3) BYTE BICB #370,@R3 ; ZERO EFF. BYTES HIGH 5 BITS BISB #060,@R3 ; SET THE OCTAL 60 BITS ASR R4 ; SHIFT R4 RIGHT 3 BITS BIC #100000,R4 ; PREVENT SIGN PROPAGATION ASR R4 ASR R4 DEC R2 ; R2 = R2-1 BGT SUBR13 ; ITERATE THE PROCESS RTS R7 ; RETURN ; .PAGE .EOT ;END OF FILE #12 ; SUBROUTINE END LINE ; THIS SUBROUTINE COMPLETELY FORMATS T OVM: 1EINMA N URET R ; R7 S RT E LUVAS L'BOYM S =LTSURE; R3,@0)(R-2 V MO S ESDRADY TRENS L'BOYM S =R0; 0 ,RX.DEIN H OV M ORRR EEDINEF DLYIPLTMUT SE; ORRRME B NC I: 05BRSU L:VAAV;S NENOT PUUT O ; ONTIUAIT SALCIPE SUTNP I ; ET SISR ROERD NEFIDEY PLTIUL MHE T ; E.LUVAE BLTAL BOYM S ; HE TTHWIE LUVAS T'ULES RESACPLREE INUTROUB SISTH; L BOYM SHE);WAIT FOR UNDEFINED SYMBOLS EMT WTCMD BR END12 ;CLOSE AND END22: TRAP CLEAN ;RELEASE SYM. ;TABLE FILE. END22A: INCB @R5 ;INCREASE PASS NUMBER CMPB @R5,MAXPASS-O03 BGT END23 MOV SILB-O03,-(R6) ;CLOSE SOURCE EMT CLS ;INPUT MOV SITAP2-O03,SITAPE-O03 ;# OF TAPES TST SILB1-O03 ;ONE WAS BEQ END26 ;PARAMETER FILE MOV #SILB1,SILB-O03 ;BACK TO MOV #SIFB1,SIFB-O03 ;DATA SET ONE MOV SITAP1-O03,SITAPE-O03 ;# OF TAPES END26:*HE LISTED ; OUTPUT BUFFERS AND DRIVES THE BINARY ; OUTPUT SUBROUTINE. ; *** NOTE *** ; EBBUF INCREMENTS THE USERS'S PROGRAM COUNTER ;ENDLINE: SUBR08: TRAP SAVREG ; CALL SAVE REGISTERS MOV CURLIST,R5 ; R5 = THE CURRENT BUFFER'S ; OUTPUT HEADER ADDRESS MOV R5,ENDL06+2 ; PLACE THIS HEADER'S ADDRESS ; INTO LO CALLING SEQUENCE ENDL10: CMP (R5)+,(R5)+ ; R5 = R5+4 MOV R5,-(R6) ; STACK THIS ADDRESS TOFE LUVAE AV SNETIOUBRSU; DCEN. E ODPCOP JM EGOSNF FD.I DCEN. 1 RYNTEP JM 5D OR.W RLNTCO APTR EGOSNF NDIF. H NCRA B -NO; A 20MN GTB ? NELIS HI TLEMBSEAS; CTTADN TBTS EDRMFOER PNGSIASCLC NIMONE M ; : 25INMA ERDLAN HVETIECIR D ; TEIAPRROPP AHE TTOP UM J ; TYTIANQU @ MP J CEFAERNT ILYMBSEASL NAIOITNDCOR FO;1 RR CL A:24MN 0AN2MT BG CHANBR- O ;N DCEN,#TYTI- MOV #EOTBUF-BEGO03+BEGOVR,-(R6) ;PRINT MOV R2,-(R6) ;"END" EMT WRCMD MOV R2,-(R6) EMT WTCMD JMP SETPASS-O03 END23: MOV #ERRMSG-BEGO03+BEGOVR,-(R6) ;ERROR LINE COUNT MOV #COLB,-(R6) ;TO COMMAND OUTPUT DEVICE EMT WRCMD MOV #COLB,-(R6) EMT WTCMD JMP RESTART-O03 EOTBUF: .WORD 10 ;MESSAGE AT END .WORD 0 ;OF ALL PASSES .WORD 10 ;EXCEPT THE LAST .BYTE CR,LF .ASCII / END/ .BYTE CR,LF .EVEN . CLR (R5)+ ; CLEAR LO BYTE COUNT MOV R5,CURLIST ; CURLIST = EFF DATA(0) ADDR MOV R5,R4 ; R4 = THE ERROR FIELD'S TST (R4)+ ; TERMINAL ADDRESS MOV #17,R0 ; R0 = 23. TRAP BLKBUF ; CALL BLANK BUFFER CLR R3 ; R3 = 0 MOV #ERRTAB,R2 ; R2 = ERROR TABLE BASE ADDR. ENDL00: SWAB @R2 ; EFF ERROR COUNTER ZERO ? BEQ ENDL01 ; YES CLRB @R2 ; NO, CLEAR THE COUNTER MOV #1,R3 ; SET R3 = 1 ANQU MPC ? ??????--F-.IS HI TIS;A 20MN LTB Z FN#IY,ITNTUAQP CM CHANBR- S YE;A 24MN LEB ? NELIS HI TLEMBSEAS; T ACNTDB STT S VETIECIR DLYMBSEAS; G INSSLA CICONEMMN; 5 N2AI M EQ B ?R.DI. SM AORC NIMONE M ; S AGFL,TIRMDAS # TBBI 4:N2AI MC ND.E RDWORP JM EGOSNF FD.I DCEN. 3 RYNTEP JM 4D OR.W RLNTCO APTR EGOSNF NDIF.: RDWO ERDLAN HVETIECIR DRDWO .OFN IORTPOT ENIDES;R ;H NCRA B -NO;A 20MN GTB ? NELIS HI TLEMBSEAS;T ACNT1 ; SECTION SYMBOL TABLE LISTING ; GENERATE AN ALPHABETIZED LISTING OF THE ; USERS SYMBOL TABLE. ; 1) ENTIRE SYMBOL TABLE IF STMASK CONTAINS 0. ; THIS INCLUDES .CSECT TABLE. ; 2) UNDEFINED ENTRIES ONLY IF STMASK CONTAINS DEFFLG!GLBFLG ; LINEARLY SEARCH THE TABLE WHICH IS ORDERED. ;NOTE: ;ALL ENTRIES ARE ENCODED 16-BIT UNSIGNED, ;POSITIVE, INTEGERS. ;STLIST: SUBR12: TRAP SAVREG ;SAVE REGISTERS MOV CONTO2CMP R5,R4 ; EXCEEDED ERROR FIELD ? BHIS ENDL01 ; YES MOVB +1(R2),(R5)+ ; NO, BUFFER ASCII ERROR CODE ; INCREMENT ADDRESS POINTER ENDL01: SWAB (R2)+ ; REINSTATE ERROR TABLE WORD ; INCREMENT ADDRESS POINTER CMP R2,#MAXERR ; TABLE COMPLETELY EXAMINED ? BLO ENDL00 ; NOPE ADD R3,ERRSUM ; YES, ERRSUM = ERRSUM+R3 MOVB R3,ERROR ; ERROR = R3 ; .PAGE DB STT: 23INMA AGFLG INNDPEM TE IET;S INEMIT CBIN CHANBR- O ;N 0AN2MT BG E?IN LISTHE BLEMSS;A CTTADN TBTS 2:N2AI M. .T.S PHE TIND UNFOL BOYM S ; 24INMA T BG E BLTAL BOYM SNTNEMAER PCHARSEL AL C ; H RCEA S APTR G INNDPES IEMITS HI T ; 22INMA E BL ? E YP TMSTE INEMIERET D ; PETY I TBTS 1:N2AI MT XI E BR G INSTLIE THT MAOR F ; TOD SE UIS1 - =ZESI; !EDITEXD AND IEIFNTDE I; . CRD ANN LOCOMISE; ZESI5P-O03,R5 ;BOTTOM OF UST MOV USRTOP-O03,R4 ;TOP OF UST CLRB LCSECT-O03 ;NOT CSECT'S ADD #10,R5 ;NULLIFY SUBTRACT AT STLST1 STLST0: TRAP ROTATE ;CALL ROTATE I/O BUFFERS SUB #11,R0 ;R0=BHADRS(2,3)-17. MOV R0,@R3 ;CURLIST=R0,SECOND DATA BYTE MOVB #-2,LISTSC-O03 ;LIST SYMBOL COUNTER = -3 STLST1: SUB #10,R5 ;MOVE FLAG WORD POINTER. CMP R5,R4 BEQ STLST2 ;END OF TABLE. TSTB LCSECT-O03 BNE STLST4 ;.CSECT TABLE MOV R5,R2 ;FOR DECODE 6 MOV R4,R5 ; R5 = THE LOCATION FIELD'S ADD #6,R5 ; TERMINAL ADDRESS MOV @USERPC,R4 ; R4 = USER'S PC VALUE MOV R5,R3 ; R3 = BUFFERING ADDRESS MOV #6,R2 ; R2 = 6 ITERATIONS TSTB SIZE ; ANY OBJECT DATA PRESENT ? BEQ ENDL02 ; NOPE BGE ENDL12 INC PAGING BR ENDL05 ENDL12: TRAP BINASC ; CALL BINARY TO ASCII CONVERSION ENDL02: TRAP EBBUF ; CALL ENTER BINARY BUFFER MOV #TBBUF,R0 CBDE A:20MN 23INMA T BL +2R0 =R0; 0 ,R#2 D AD D IEIFNTDE IMAOM C ; 23INMA Q BE +1R0= 0 R ; R0 B NC I EREV N : =RSTONAMIER T ; EDSSCERO PMSTE IIDVO, NO; S YE; 1 N2AI M GT B ?NDOU FRSTEACARCHY ANE ER W ; ARCHNT C TBTS R EACLG LA FNGDIEN PEMIT; 0:N2AI M S SILYNA AAXNTSYL IAITIN ; GEPA . ;D ELFIE THG INSHLU FUEINNTCO9BITB STMASK-O03,@R5 ;IGNORE DEFINED SYMBOLS BNE STLST1 ;IF STMASK CONTAINS DEFFLG!GLBFLG ; CMP HUSERPC-O03,R5 ; ;BEQ STLST1 ;IGNORE USER'S PC BR DECODE STLST2: TRAP STLLST ; CALL SYMBOL TABLE LISTED OUTPUT ;OUTPUT .CSECT TABLE TSTB STMASK-O03 BNE STLST3 ;EITHER NO .CSECT OR ALREADY DONE COMB STMASK-O03 ;REVERSE SWITCH MOV PERTOP-O03,R5 ;BOTTOM OF .CSECT TABLE MOV CONTOP-O03,R4 ;TOP OF .CSECT TABLE COMB LCSECT-O03 ;CSECT PROCESSING : ; R0 = TBBUF(0) ADDRESS ADD #7,R5 ; R5 = THE OBJECT FIELD'S ENDL1A: MOV R5,R3 ENDL03: MOV #3,R2 ; R2 = 3 ITERATIONS MOVB (R0)+,R4 ; R4 = EFF OBJECT DATA BYTE BIC #400,R4 ; PREVENT SIGN PROPAGATION TSTB BYTFMT ; BYTE OR WORD FORMAT ? BNE ENDL04 ; BYTE ASL R2 ; R2 = 6 ITERATIONS DEC R0 ; DECREMENT R0 MOV (R0)+,R4 ; R4 = EFF OBJECT DATA WORD DECB SIZE ; SIZE = SIZE-1 ENDL04: TRAP ; 0 N1AI M MP J: 1OINMA ORRR ESEHA PE,OP N ; 1IINMA E BN ? . PCS R'SE U =UEAL V'SOLMBSY; PCERUS,@TYTIANQU P CM R ROERD NEFIDEY PLTIUL MS,YE; M N1AI M EQ B ?EDINEF DLYIPLTMUL BOYM SIS; ) R11(G,LADF#M B MP C ORRR ESEHA PE,OP N ; 1IINMA Q BE ? ET SDYEALR AAGFLL BELAS I ; R1,@LGBFLA # TBBI S AS PSTIR FOT ND,UNFO; N:N1AI ME BLTAL BOYM S'SERUSO NT I ; ONTIMAORNF IISTHR TEEN; K N1AI M BR= MOV #412,WORD4-O03 ;CSECT #1, LABEL FLAG, DEFINED BR STLST0 STLST3: TST SLLB-O03 ;SYMBOL LISTING DEVICE INITED YET? BEQ STLSTE ;NO - BRANCH MOV #SLLB,-(R6) ;WAIT FOR OUTPUT TERMINATION EMT WTCMD STLSTE: TRAP POPREG ; RETURN AFTER POPPING REGISTERS. ; .PAGE STLST4: INCB WORD4+1-O03 ;START WITH 002 MOV -6(R5),WORD1-O03 MOV -4(R5),WORD2-O03 MOV @R5,WORD3-O03 ;SIZE OF .CSECT MOV #WORD4,R2 CLRB LISTSC-O03 ;1 SYMBOL PER LINE. ; DECODE A >BINASC ; CALL BINARY TO ASCII CONVERSION INC PAGING ; INCREMENT LINE COUNTER DECB SIZE ; SIZE = SIZE-1 BLE ENDL05 ; OBJECT DATA PROCESSING DONE MOV SRCIN,R3 ; R3 = LAST TERMINATORS ADDRESS INC R3 ; AVOID THE FIRST CHARACTER MOVB #TAB,@R3 ; BUFFER(1) = TAB ADD #11,R3 ; R3 = R3+13. MOV R3,SRCIN ; SRCIN = LATEST TERMINATORS ADDR MOVB #LF,@R3 ; INSERT A CR-LF SEQUENCE MOVB #CR,-(R3) BR END E LUVAS L'BOYM SVESAL AL;C ALVVSA P RA T EDINEF D ; LYIPLTMUS AOLMBSYG LA F ; 1)(R,1AGFLMD # SBBI M:N1AI MR TEEN, NSIOSTUE QTHBOO TNO; J N1AI M NE B D?NEFIDE; 1)(R,1AGFLMD#B MPC Y PLTIUL MDYEALR AOLMBSYE THS I. ES YIFH NCRA;B 1MINMA NEB ? T SEY ADREALG LA FELAB LIS; R1,@LGBFLA # TBBI S AS PSTIR FD,UNFO; S AS PSTIR FHE TOT N ; 1NINMA T BG ? S ESGRRO PINS ISSPAH ICWH; #1S,AS P PBCM L:N1AI MD A2-WORD MOD40 PACKED SYMBOL TO ; STANDARD ASCII ENCODED CHARACTERS DECODE: TRAP SAVREG ; CALL SAVE REGISTERS MOV R2,R5 MOV CURLIST-O03,R1 ; R1 = CUR. LIST. BUF. ADDRESS SUB #6,R2 ;ADDRESS OF 1ST TRIAD MOV #2,R0 ;TWO TRIAD COUNTER. DECOD0: MOV (R2)+,-(R6) ;BINARY WORD MOV R1,-(R6) ;ADDRESS OF BYTE STRING MOV #1,-(R6) ;RAD50 CODE EMT 42 ADD #3,R1 ;MOVE BYTE STRING POINTER DEC R0 ;COUNTER FOR 2 PASSES BNE DECOD0 INC R1 BL03 ; OBJECT FIELD NO FORMATTED ENDL05: MOV SRCIN,R3 ; R3 = LAST TERMINATORS ADDRESS ENDL11: MOVB #CR,-(R3) INC R3 MOVB #LF,@R3 MOV ENDL06+2,SRCIN ; RESET TERMINATORS ADDR. SUB @R6,R3 ; CALCULATE EFF. BYTE COUNT DEC R3 MOV R3,@(R6)+ ; SET BUFFERS BYTE COUNT CMPB PASS,LOPASS ; LISTED OUTPUT PASS ? BNE ENDL07 ; NOPE TST LOLB ;LISTING DEVICE ALREADY INITED? BNE ENDL25 ;YES - BRANCH MOV #LOLB,R1 ELFIE THG INSHLU FUEINNTCO; O N1AI M BR E BLTAL BOYM S'SERUSY LAEROVL AL C ; AYRLOV P RA T AGFLD NEFIDES L'BOYM SET S ; R1,@LGFFDE # SBBI : 1PINMA IDT ECCS; ) R11(D,MOECSB OVM G LA FEDINEF;D 1PINMA EQB Y PLTIUL MDERIEROVT ON;D 1)(R,1AGFLMD#B MPC 1 @RG,FLEL#R B IS B 1PINMA Q BE D MOEC S TBTS G LA FELAB L'SOLMBSYT SE; 1 @RG,FLAB#L B IS B: 1KINMA ERNTOU CONTICALO; Y BLEMSS AHE T =LTSURE; 3 @RC,RPSE@U E ; FORMAT THE LISTED OUPTUT BITB #RELFLG,@R5 ;ENABLES A SUFIX OF R WITHTHE BEQ DECODF ;OUTPUT OF SYMBOL TABLE FOR MOVB #'R,10(R1) ;RELOCATABLE SYMBOLS BR DECOD8 DECODF: BITB #REGFLG,@R5 ; SYMBOL A REGISTER ? BEQ DECOD8 ; NOPE MOVB #'%,1(R1) ; YES, REGISTER DECOD8: BITB #LABFLG,@R5 ; IS THIS SYMBOL A LABEL ? BNE DECOD9 ; YES MOVB #'=,@R1 ; NO, DIRECT ASSIGF MOV #LOFB,R3 TRAP DELOUT ;.INIT, .DELETE, .OPEN LISTING DATA SET. ENDL25: TSTB RLDFLG BEQ ENDL06 ; THIS PORTION PUTS CMPB @R5,#CR ; AN APOSTROPHE BNE ENDL1C ; AS REQUIRED FOR TSTB (R5)+ ; INSTRUCTIONS TO BE MOVB (R5)+,@R5 ; MODIFIED DEC R5 MOVB -(R5),1(R5) MOV ENDL06+2,-(R6) ADD #4,@R6 INC @(R6)+ ENDL1C: MOVB #'',@R5 ENDL06: MOV #0,-(R6) ;I/O SERVICING MOV #LOLB,-(R6) EMT WR V MO S AS PSTIR FD,UNFOT NO; J:N1AI MD ELFIE THG INSHLU FUEINNTCO; O N1AI M BR R ROERE ASPHE THT SE; R ROER P CBIN I:N1AI MS AS PSTIR FOT ND,UNFOT NO; S ESGRRO PINS ISSPAT RSFI; J N1AI M EQ B ?SSREOGPRN IISS AS PCHHI W ; #1S,AS P PBCM . .T.S UIND UNFOS WAL BOYM S ; 1LINMA Q BE ? D UNFOL BOYM SHE TAS W ; R0 T TS H:N1AI MD ELFIE THG INSHLU FUEINNTCO; O N1AI M BR X TAYN SLEABONTIESQUY ELINMENT DECOD9: TST (R1)+ ; R1 = R1+2 MOV R1,R3 BITB #DEFFLG,@R5 ; IS SYMBOL UNDEFINED ? BNE DECODA ; NOPE BITB #GLBFLG,@R5 ;THIS PORTION ENABLES OUTPUT BEQ DECODH ;OF 0 IN CASE OF AN UNDEFINED MOVB #'G,7(R1) DECODH: MOV #"**,-(R6) ; YES, VALUE = ASTERISKS DECODG: MOV @R6,@R1 MOV @R6,2(R1) MOV (R6)+,4(R1) BR DECODJ ; CHECK AVAILABLE SPACE DECODA: MOV -2(R5JCMD CMP PAGING,#70 ; OVERFLOWING LINE COUNTER ? BLT ENDL07 ; NOPE MOV PAGCNT,R4 ; R4 = PAGE COUNTER VALUE MOV #PAGBUF+25,R3 ; R3 = BUFFERING ADDRESS MOV #3,R2 ; R2 = 3 ITERATIONS TRAP BINASC ; CALL BINARY TO ASCII CONVERSION INC PAGCNT ; INCREMENT PAGE COUNTER CLR PAGING ; CLEAR LINE COUNTER MOV #PAGBUF,-(R6) ;I/O SERVICING MOV #LOLB,-(R6) EMT ITINEF D ; ORRRQE B NC I ONTIUAIT SIDAL VE,OP N ; 1HINMA E BN ? R TEUNCON IOATOC L ; LYMBSEASE THL BOYM SHE TIS; 007412,#+1YMPSTM P CM G:N1AI M. EDINEF DLYIPLTMU; G INBES AOLMBSYS HI TAGFL; ) R11(G,LADF#M B IS B ORRR EERSTGIREE THT SE; R ROER R CBIN N IOATTUSID LIVA, PENO; G N1AI M EQ B ?ERSTGIRED PETYL BOYM SIS; 1 @R2, R TBBI F:N1AI M D ELFI; L BELAE THG INSHLU FUEINNTCOM),R4 ; R4 = EFFECTIVE VALUE MOV #6,R2 ; R2 = 6, ITERATIONS ADD R2,R3 ; R3 = R3+6 TRAP BINASC ; CALL FOR BINARY TO ASCII CONVERSION DECODJ: CLR R4 BISB 1(R5),R4 ;CONTROL SECTION ID. CMP R4,#1 ;DON'T OUTPUT .ASECT OR BLE DECODI ;UNNAMED .CSECT ID CMP R4,#MDFLAG ;DON'T OUTPUT BEQ DECODI ;MULDEF FLAG MOV #3,R2 ;3 DIGIT NUMBER ADD #13,R3 ;COLUMN AFTER RIGHTMOST DIGIT TRAP BINASC ;BINARY TO ASCII CONVERSINWRCMD ENDL07: CLRB RLDFLG CLR SIZE ; SIZE = 0 TSTB ERROR ; WAS THE LINE ERRORED ? BEQ ENDL09 ; NOPE CMPB PASS,ERPASS ; ERROR LISTING PASS ? BNE ENDL09 ; NOPE MOV BHADRS,COFLAG ; REQUEST COMMAND OUTPUT ; COFLAG = BHADRS(0,1) ENDL09: ADD #26,SRCIN CLRB ERROR ; ERROR = 0 TRAP POPREG ; CALL SET REGISTERS AND RETURN ; .PAGE T PUUT O ; ONTIUAIT SALCIPE SUTNP I ; D.REROERD AND TEECET D ; RE AREHES CEANARPEAPR TEUNCON IOATOC LLYMBSEAS; R TEISEG RASD PETYE BEREVT NOAN CLSBELA; X.DEIN HINS DESIRES ESDRADE BLTA ; L BOYM SVETIECFF EHE TNETIOUBRSUS HI TNGRITEENN PO U ; TSENNMIGSS AELAB LLL AESFIRIVE, NETIOUBRSUS HI T ; NGSIESOCPRL BELA; 4 N1AIMR B T PSN IAGFLD INEFED RET;S EXNDHI,@EFQON DECODI: BITB #GLBFLG,@R5 ;SUFFIX G BEQ DECODB MOVB #'G,7(R1) DECODB: TRAP SETREG ADD #26,CURLIST-O03 ; SYMBOL FIELD =22(10) CHARS. INCB LISTSC-O03 ; INCREMENT SYMBOL COUNTER BGT DECODC ; LO BUFFER FULL, OUTPUT JMP STLST1 ; PROCESS THE NEXT SYMBOL DECODC: TRAP STLLST ; CALL SYMBOL TABLE LISTED OUTPUT JMP STLST0 ; SUBROUTINE SYMBOL TABLE LISTED OUTPUT ;STLLST: SUBR15: MOV #CURLISTR ; SUBROUTINE ENTER BINARY BUFFER ; INPUT BINOUT BYTE FLAGS ; > 0, ENTER TBBUF DATA ; INTO BINBUF ; = 0, FORCE BINBUF OUT AND ; GENERATE BINARY EOT ; < 0, FORCE BINBUF OUT ; OUTPUT NONE ; BBINIT PROVIDES DIRECT ; SUPPORT ;EBBUF: SUBR09: TRAP SAVREG ; CALL SAVE REGISTERS MOV #TBBUF,R4 CLR R0 ED#R SBBI 0:N4AI MC ND.E GNSIAS MPJ G SENO DFIF. C ND.E Y7TREN MPJ 4 #AYRLVE;O 4D OR.W RLNTCO APTR NTMEGNSIAST ECIR;D EGOSNF NDIF. L BELAA S ASSCERO PS,YE; F N1AI M EQ B ?ONOL C AORATINRMTED VESAS WA; + 6)(R B ST T SSREDD ALTSURE= 3 R ; R3T,ULES#R V MO T ANSTON CAGFLR TEISEG R =R2; 2 ,RLGGFRE # OV M SSREDD AGSLATF= 1 R ; R1S,AGFL#T V MO : 15INMA ST UTOINR TEEN; R TEEN APTR T.USN INDOUU,R0 BIC #1,@R0 MOV #005015,@0(R0) ADD #2,@R0 CLR @0(R0) MOV BHADRS+2-O03,R1 SUB #20,R1 MOV R1,-(R6) ;STACK BUFFER ADDRESS CMP (R1)+,(R1)+ SUB R1,@R0 MOV @R0,@R1 STLLS1: MOV #0,-(R6) ;OUTPUT SYMBOL TABLE ;NOT RE-ENTRANT EMT WRCMD RTS R7 ; .PAGE ;ARITHMETIC CONDITIONAL ASSEMBLY PROCESSORS ; ;FORM --- .IF??? EXPRESSION ;.IFZ IF V ; REQUEST REGISTER SETUP TRAP BBINIT ; CALL BINARY BUFFER SETUP MOVB SIZE,-(R6) ; STACK OBJECT DATA SIZE TSTB BINOUT ; DETERMINE PROCESSING TYPE BGT EBBUF0 ; SIMPLE OBJECT DATA BUFFERING BEQ EBBUF2 ; OUTPUT THE BUFFER AND EOT MOV @R4,@R5 ; SET THE ASSEMBLY LOCATION ; COUNTER = TBBUF(0,1) CMP @R2,#6 ; BUFFER CONTAIN ANYTHING? BGT EBBUF2 ; YES, OUTPUT THE BUFFER F ; 15INMA EQB . ERTHUR F ; CHARSED ANG LA FEDINEF-DRET SEL BOYM SNTNEMAER P A ; ASD RETEUNCOENF I ; 40INMA T BG E BLTAL BOYM S'SERUSE THH RCEA SLLCA; CHARSE P RA T: 14INMA ORATINRMTES OLMBSYS HI TCKTA S ; 6)(R,-R0 V MO 3:N1AI MT ENNMIGSS ACTREDIS HI TRTBO A ; 1EINMA P JM N LOCOA S WAR TONAMIER T ; 10INMA E BL ? ORATINRMTEE THS WAT HA W ; R0 T TS X TAYN SLEABONTIESQUS A ; EDERYEQ 0 ;.IFG IF GT 0 ;.IFGE IF GE 0 ;.IFL IF LT 0 ;.IFLE IF LE 0 ;.IFNZ IF NE 0 IFPRO: CLR R0 ;PRIME COND TO EVALUATE TRAP COND ;THE EXPRESSION TST RESULT-O03 ;TEST THE RESULT JMP IF000-BEGO03+BEGOVR(R1) IF000: BNE IF020 ;IFZ BR IF010 BGT IF020 ;THE CONDITIONAL BRANCH IS ;IFLE BR IF010 ;TAKEN WHEN THE REQUESTED BGE IF020 ;CONDITION IS NOT SATISFIED ;IFL BR IF010 BLT IF020 ;IFGE BR IF010 BLE IF020 ;IFG Z BR EBBUF3 ; INITIALIZE THE BUFFER EBBUF0: NEGB @R6 ; NEGATE STACKED OBJECT DATA ; SIZE VALUE, USE THIS AS ; THE ITERATION INDEX. EBBUF1: TSTB RLDFLG BEQ EBBUFA TSTB @R6 BLT EBBUF5 BR EBBUFB EBBUFA: TSTB @R6 ; IS INDEX STILL NEGATIVE ? BGE EBBUF4 ; NOPE, PROCESSING COMPLETED EBBUFB: CMP #52,RLDCNT ;IF RLDBUF IS FULL THEN OUTPUT BLE EBBUF2 CMP IDNSCOS EMITR HEOTL AL; R ROER Q CBIN L BOYM SEDORRR-EUNN AAS WEMIT; 3 N1AI M GT B PETYS M'TE IHE TCKHE C ; PETY I TBTS 1:N1AI M. NGSIESOCPRR FOS ERSTGIREE THE IZALTINI I ; ND AERNTOU CONTICALOY BLEMSS AHE TFYTIENID ; , ORATINRMTEE THG INEDECPRL BOYM SHE TSSCERO P ; TSENNMIGSS ACTREDID ANS ELAB LOR FNGSIESOCPRL IAITIN; H NCRA B -NO;0 N1AIMT BG L?BELAS HI TE"BLEMSS"A;T ACNTDB STT: 06INMA LDIE FORATEROPS ESOCPR- O ;N 20INMA MPJ] BR IF010 BNE IF010 ;IFNZ IF020: INCB DNTACT-O03 ;CONDITION NOT SATISFIED ;INCREMENT DON'T ASSEMBLE COUNTER. IF010: MOVB #-1,SIZE-O03 ;LISTING FORMAT CONTROL JMP EXIT-O03 ;EXIT IFPRO2: MOV #2,R0 ;PRIME COND TRAP COND ;NOT TO EVALUATE THE EXPR. MOV R0,R4 ;SETUP R4 FOR "OR" CONDITION CLR R2 ;FINAL RESULT GOES IN R2 IFDF00: MOV #IFDF25-BEGO03+BEGOVR,-(R6) ;STACK THE "OR" OPERATOR IFDF05: TRAP ITEM ;GET NEXT ITEM TSTB ITYPE-O03 ;IS T^ R1,#MAXBBA-10 ; IS THE BINARY BUFFER FULL ? BHIS EBBUF2 TSTB RLDFLG BNE EBBUF4 BR EBBUF5 ; OUTPUT THE BINARY BUFFER EBBUF2: TRAP CHECKSUM ; CALL CHECKSUM FINALIZATION ; IS THIS THE BO PASS ? JMP EBBUF3 ; NOPE ; SERVICE THE BINARY OUTPUT REQUEST CMP #10,BINBUF+10 BGE EBBUFF ; YES, AVOID OUTPUT MOV #BINBUF,-(R6) MOV #BOLB,-(R6) ;OUTPUT BINARY BUFFER EMT WRCMD M H NCRA B -ES;Y 2)(-? :" "ORATINRMTES ;I 06INMA EQB: 04INMA ITEXO G -NO;A 20MN BR CHANBR- S YE;1 N1AIM LEB ? NELIS HI TLEMBSEAS; T ACNTDB STT H NCRA B -NO;4 N0AIME BL 1)(-? =" "ORATINRMTES ;I R02,#D AD ORATINRMTED DECOEN= ) R0C(;0 ,RRMTEAVSB OVM M TE ILLCA; EMIT P RA T: 10INMA T.ENEMATSTT ENNMIGSS ACTREDIA E ATAREP S ; Y,LLIANTTEPO, ND ATSENNTCOS D'ELFIL BELAE THH USFL; T ENEMATSTE RCOU SALDUVIDIINH AC EOFN IOATLUVA ETEIAITIN; aHIS AN OK SYMBOL? IFDF12: TRAP SEARCH ;YES--SEARCH SYMBOL TABLE BGT IFDF12 ;FOUND IN P.S.T--IGNORE BNE IFDF10 ;NOT FOUND IN U.S.T. IFDF15: BITB #DEFFLG,TFLAGS-O03 ;IS SYMBOL DEFINED? BNE IFDF20 ;YES--BRANCH IFDF10: ADD R4,@R6 ;NOT FOUND OR UNDEFINED IN U.S.T. IFDF20: JMP @(R6)+ ;PROCESS & HOUSEKEEP THE STACK IFDF25: BIS R4,R2 ;LAST TERM="OR", SYMBOL DEFINED BR IFDF35 ;LAST TERM="OR", SYMBOL UNDEFINED IFDF30: BR IFDF35 ;LAST TERM="AND", SYMBOL DbOV #TRLBUF,-(R6) MOV #BOLB,-(R6) EMT WRCMD MOV #BOLB,-(R6) ;WAIT FOR COMPLETION EMT WTCMD TRAP EOMCHK EBBUFF: CMP #2,RLDCNT BGE EBBUF3 TRAP OUTBIN EBBUF3: MOV R5,R0 TRAP BBINIT ; CALL BINARY BUFFER INITIALIZATION TSTB BINOUT ; GENERATE THE EOT ? BEQ EBBUF7 EBBUFC: TSTB RLDFLG BNE EBBUF4 BR EBBUFA EBBUF7: TRAP EOMCHK EBBU : 05TLGE HTUGCAR TEACARCHL GALEIL; ORRRQE B NC I ONTIUAIT SIDAL VS,YE; 05TLGE Q BE ? R. CSTLAE THS HI TIS; R20, R MP C ERNTOI PHE TUPCKBA, ES Y; 0 R EC D ANSCE THE NUTION CE,OP N; 4 L0ET G NE B .?CRA R TEACARCHS HI TIS; R4+,0)(R B MP C: 04TLGE R. CSTLAF OR.DD A =R2; R2 C DE R TONAMIER TNELIS GEMA I ; CEURSOE IVCTFEEFE TH; F OSSREDD AeEFINED CLR R2 ;LAST TERM="AND", SYMBOL UNDEFINED IFDF35: MOVB SAVTERM-O03,R0 ;GET THIS TERMINATOR ADD #4,R0 ;IS IT "CR"? BEQ IFDF50 ;YES--BRANCH INC R0 ;IS IT ";"? BEQ IFDF50 ;YES--BRANCH INC R0 ;IS IT "&"? BEQ IFDF60 ;YES--BRANCH INC R0 ;IS IT "!"? BEQ IFDF65 ;YES--BRANCH BR IFDF45 ;ERROR--ILLEGAL TERMINATOR IFDF40: TST (R6)+ ;REMOVE STACKED OPERATOR IFDF45: INCB QERROR-O03 ;ERRORED SYMBOL OR ILLEGAL CLR R2 ;TERMfF4: TST (R6)+ ; MAINTAIN THE STACK POINTER TRAP POPREG ; CALL SET REGISTERS AND RETURN EBBUF5: INC @R5 EBBUF8: ; BUFFER ONE OBJECT DATA BYTE INC @R2 ; INCREMENT BLOCKS BYTE COUNT ; LOCATION COUNTER INCB @R6 ; INCREMENT THE STACKED SIZE MOVB @R4,(R1)+ ; BUFFER THE OBJECT DATA BYTE MOVB (R4)+,-(R6) ; ADD THE OBJECT DATA HE T =INRC S ; INRC,SR2 V MO N URET-RGEIARRCA; A H IT WRSTONAMIER TNELI; L ALL AITRY LLNAIOITNDCOUN; ) R21(,+R4 B OV M 3:L0ET GR TONAMIER THE TNGDICERE P ; 2)(R-14, R VBMO N URET-RGEIARRCAA T ERNS I ; R2,@)+R2 ( VBMO N IOATTUSID LIVA, ES Y ; 03TLGE Q BE ? R TONAMIER TESEDECPRR C ; 2)(R-14, R PBCM 2:L0ET GT MAOR FORATINRMTER FEUF BEROPPRE URNS I ; ERNTOU CGEPAW LORFVE OS,YE; G INAG,PiINATOR (DEFAULT=UNDEFINED) IFDF50: TST R2 ;CHECK RESULT JMP IFDF55-BEGO03+BEGOVR(R1) IFDF55: BEQ IF010 ;.IFNDF SATISFIED BR IF020 ;.IFNDF NOT SATISFIED BEQ IF020 ;.IFDF NOT SATISFIED BR IF010 ;.IFDF SATISFIED ;OR OPERATOR ENCOUNTERED IFDF65: TST R1 ;PERFORM AND BEQ IFDF70 ;OPERATION IF .IFNDF BR IFDF00 ;AND OPERATOR ENCOUNTERED IFDF60: TST R1 ;PERFORM INCLUSIVE OR BEQ IFDF00 ;OPERATION IF .IFNDF IFDF70: MOV #IFDF30-BEGO03+BEGOVR,-(RjBYTE TO ADD (R6)+,@R3 ; THE BLOCKS CHECKSUM BR EBBUF1 ; CONTINUE ENTERING PROCESS ;RLDINT ;THIS SUBR INITIALIZES THE RLD BUFFER HEADER SUBR32: TRAP SAVREG MOV #RLDBUF,R1 MOV #RLDBC,(R1)+ ;MAX BYTE CNT MOV #1,(R1)+ ;BIN FORMAT MOV #2,(R1)+ MOV DIRCMD,(R1)+ TRAP POPREG ; ; ; ; ;RLD FILL ;RLDFIL ;THIS SUBR PUTS THE RLD DIRECTIVE INTO THE RLD BUFFER.IT IS CALLED ;BY THE APPROPRIATE ADDRESSING MODE H0.#6 D AD R TEACARCHD EE-FNELIA ; E UTITSTUB S ; R2,@LF # VBMO E OP N ; 02TLGE E BN ? D EE-FRMFOA R TONAMIER T ; R2,@FF # PBCM R TEINPOE YTRBCUE IZALTINI I ; TEBYUR,CR1 V MO K ANBLS AYLW AERCTRAHA CALTINI I ; 1)(R,-' # VBMO 3 @R6,#2 B SU R TEINPOT ISRLCUE IZALTINI I ; R3,@R1 V MO 2 R EC D R01, R OV M SSREDD ARSTONAMIER TNELI= 2 R ; R21, R DD A NTOU CTEBY= 2 R, +2R1= 1 R ; m6) ;STACK "AND" OPERATOR BR IFDF05 ;.ENDC PROCESSOR RENDC: DECB CNSTLV-O03 ;DECREMENT NESTED LEVEL COUNTER BGE ENDC01 ;TOO MANY .ENDC'S? INCB QERROR-O03 ;YES - SET QUESTIONABLE SYNTAX CLRB CNSTLV-O03 ;AND CLEAR NEST LEVEL COUNTER ENDC01: TSTB DNTACT-O03 BEQ IF010 ;IN DON'T ASSEMBLE STATE? DECB DNTACT-O03 ;YES - DECREMENT THE COUNTER BR IF010 ;EXIT ;CONDITIONALS FRONT END PROCESSOR (.IF...) ;IF R0 = 0 ON ENTRY, THEN EVALUATE ;THE EXPRESSION.nANDLER.THE CALLING REGISTERS ;ARE SAVED AND DULY RELEASED.THE REG MUST BE INITIALIZED AS FOLLOWS: ;CONTENTS OF R0 =RELREF/RLD COMMAND ; R1=GLB SYM OR CNSTNT ; R2 = '' ; R3 =CNSTNT ; R4 =COUNT OF NO. OF BYTES ABOVE ; ; SUBR33: TRAP SAVREG MOVB RLDCNT,R5 ADD R4,R5 MOVB R5,RLDCNT SUB R4,R5 ADD #RLSTRT,R5 MOV R0,(R5)+ ;FILL IN THE SUB #2,R4 BEQ RLEX MOV R1,(R5)+ ;RL R2+,1)(R V MO 4 1+ R =R1; + 1)(R+,1)(R P CM N URET-RGEIARRCAI CIAS= 4 R ; R4R,#C B OV M: 12TLGE ORRR EL' 'ET SS,YE; R ROER L CBIN E OP N ; 12TLGE Q BE ? N IOATNCRU TNELIG ON L ; 1)(R,3NELINGLO # TBBI : 06TLGE DCEN. G FLOFEP JM EGOSNF FD.I DCEN. 2 RYNTEP JM 5D OR.W RLNTCO APTR EGOSNF NDIF. E NUTION,CPENO; 6 L0ETGQ BE T?PUINN OOM!EOF;E 1)(R,3OF#E TBBI ONTISIPO) ,1(0RSADBHE THO NT I ; q AN ERRORED EXPRESSION ;IS SET TO ZERO BY DEFAULT AS IS A NULL EXPR. SUBR38: INCB CNSTLV-O03 ;INCREMENT NEST LEVEL BGT COND00 ;TOO DEEP? ;NO - BRANCH CLR -(R6) MOV #ERR2,-(R6) JMP ERROUT-O03 COND00: TSTB DNTACT-O03 ;IN DON'T ASSEMBLE STATE? BEQ COND01 ;NO INCB DNTACT-O03 ;YES - INCREASE COUNT TST (R6)+ ;HOUSEKEEP THE STACK JMP IF010 ;LISTING FORMAT CONTROL COND01: TST R0 ;IF C(R0)=0, THEN EVALUATE THE BNE COND04 ;EXPRESSION AND CHECKrD BUFFER SUB #2,R4 BEQ RLEX MOV R2,(R5)+ ;CHECK SUB #2,R4 BEQ RLEX ;IF SO RETURN MOV R3,(R5)+ ;TO RLEX: TRAP POPREG ;THE CALLING ADDR. ; SUBROUTINE OUTPUT END-OF-MEDIA CHECK ;EOMCHK: SUBR3B: BITB #EOF,BINBUF+3 BEQ EOMCH1 MOV BINBUF+2,@R6 ;EOD ANNOUNCEMENT JMP ERRO3 EOMCH1: RTS R7 ; ; ; EDATOT RENBES HA, SSREDD AERADHE; R FEUF BUTNP ICEURSOE IVCTFEEF; E TH, ERNTOI PERFFBUY ARIMPRE TH; G INSSCERO PALTINI IERFFBUT PUINE RCOU SNTREUR C ; ERFFBUT PUINE RCOU S ; USIOEVPRE THG INUS; G INSSCERO PADRES OUVIRE P ; HE TTOE IVATEL RREHE; T AI WEDLIMP IANS IREHE T ; MDDCR MTE ) R6-(B,ILSV MO CEENQUSEG INLLCA; T ESQUREG INICRVSEO I/T PUINE RCOU S* **; u FOR ERRORS COND02: TRAP EXPE3 ;EXPRESSION EVALUATION TSTB ERROR-O03 ;WAS THERE AN ERROR? BNE COND03 ;YES TSTB ICOUNT-O03 ;IF EXPRESSION WAS NULL, THEN BNE COND04 ;RESULT = 0 BY DEFAULT COND03: CLR RESULT-O03 ;YES - RESULT = 0 BY DEFAULT COND04: RTS R7 ;RETURN TO CALLER .EVEN ERRMSG: .WORD 23 ; PASS ERROR COUNT MESSAGE .WORD 0 ;FORMATTED ASCII .WORD 23 .BYTE CR,LF,' ,0 .WORD 0,0 .BYTE ' .ASCII /ERRORS/ v; ; ; ;RLDBYT THIS HANDLES BYT RLD CMDS ; ; ; SUBR37: TRAP SAVREG MOV #RLD2.5,RLDIR MOV #2,R4 ;FILED COUNT TRAP RELREF MOV GLBSY1,R1 MOV GLBSY2,R2 MOV RESULT,R3 BISB #200,R0 ;BYTE OPERAND MOV #10,R4 TRAP RLDFIL INCB RLDFLG TRAP POPREG ; ; ; ;OUTBIN THIS SUBR OUTPUTS ON THE BINARY DEVICE ; THE CONTENTS OF THE RLD BUF ;; ; ; SUBR36: MOV #RLDBUF,-(R T UNCOE YT BUTNP I ; NTREUR CRSDEEA HHE TROZE; 0 @R R CL S TEBYE OD MND AUSATST; T PUINS ERADHEE THT SE; + 0)(RE,ODIM#S V MO T UNCOE YT BUTNP I ; UMIMAX MRSDEEA HHE TET S ; + 0)(RC,MBSI # OV M CKLO BERADHET PUIN; E RCOU SRSFEUF BEDASLERE; E THF OSSREDD A =R0; CEENQUSEG INLLCA; S ESDRADR FEUF BCKTA;S 6)(R,-R0 OVM 1 ,RR2 @ OV M RSFEUF B/O ITEy .BYTE CR,LF,LF,0 .EVEN .IFNDF NOSEG ENDO03: SIZO03=ENDO03-BEGO03 ; .EOT ;END OF FILE #3 ;***** OVERLAY #4 ***** O04=BEGOVR-BEGO04 ;COMPUTE OFFSET FROM ;RUN TIME OVERLAY AREA BEGO04: ;JUMP TABLE TO ENTRY POINTS ;IN THIS OVERLAY. ; JMP RRAD50 ;ENTRY1 JMP RASCII ;ENTRY2 JMP RWORD ;ENTRY3 JMP RBYTE ;ENTRY4z6) ;OUTPUT RLD BUFFER MOV #BOLB,-(R6) EMT WRCMD ; ; MOV #BOLB,-(R6) ;WAIT FOR COMPLETION EMT WTCMD RTS R7 ; SUBROUTINE BINARY BUFFER INITIALIZATION ; INPUT R0 = 0, SIMPLY SET-UP ; OUTPUT SET-UP AND BINBUF ZEROED ;BBINIT: SUBR00: MOV USERPC,R5 ; R5 = THE ADDRESS OF THE ; ASSEMBLY LOCATION COUNTER MOV #BOCSUM,R3 ; R3 = THE ADDRESS OF THE TAROL AL C ; E ATOT R APTR : NELIET GE NCUEEQ SISTHO TEDNDPEAP ; E AR, LYALONTIOP, RSTEACARCHD EE-FRMFO ; . CEENQUSEF -LCRA H IT WY,LLNAIOITNDCOUN ; , TENAMIER TLLWIS ERFFBUT PUINL AL ; T MAOR FEROPPR ; E URNS IND AERFFBUT PUING INEDECPRE THN CA S ; G.INSSCEROP; R FOY ADRED ANL UL FISR FEUF BUTNPI; G INEDECPRE TH, ESNUTION CONTICUXE EIF ; ATTHS MESUASR LEMBSEASE TH S.ESGRRO PIN ; LYNTSERE PISD ANMMCOD EA R AIF} JMP RSETP2 ;ENTRY5 JMP RSETP4 ;ENTRY6 JMP ASSIGN ;ENTRY7 JMP SUBR24 ;ENTRY8 .ENDC ; ; ; ;RAD50 HANDLER ; ; RRAD50: MOV #TMPSYM,SYMBOL-O04 TRAP EVENPC INCB RADIX-O04 MOV #3,CNTCHAR-O04 ; .PAGE RASCII: ;ASCII HANDLER ASCII2: MOV #SUBR11,R4 ; R4 = PROCESSORS ADDRESS DEC CURBYTE-O04 ; DECREMENT CURBYTE POINTER TRAP CBTABS ; ON ENTERING CURBYTE POINTS TO THE ! ASCII0: TRAP~ ; BINARY OUTPUT'S CHECKSUM MOV #BINBUF+10,R2 ; R2 = THE ADDRESS OF THE ; BINARY BLOCKS BYTE COUNT MOV #BINBUF+6,R1 ; R1 = THE ADDRESS OF THE ; BUFFERS FIRST DATA BYTE MOV #MAXBBA,-(R6) ; STACK THE BINARY BUFFERS ; MAXIMUM ADDRESS TST R0 ; SETUP ONLY OR BUFFER ; INITIALIZATION ALSO ? BEQ BBIN01 ; SETUP ONLY MOV #RLDCMD,DIRCMD TRAP RLDINL RONTCO ; ONTICUXE EINTARET US MORSSCERO P/O IHE T ; ** *TENO* **; ) ,1(0RSADBH ; Y BEDFICIPE SLYNTREUR CERFFBUT PUINE TH ; F ONGLIMBSEASE THR FOS ERNTOI PZELIIAITIN; . ERFFBUT PUINL IANCUEEQ SXTNEE THO TTSINPO ; ) ,1(0RSADBHT HA TSOE BLTAS DRHA BHE TTETARON HE T ; NDMAOM CADREE THE SUISN HE T ; EDETPLOM CENBES HA ; ) ,1(0RSADBHY BEDFICIPE SLYNTREUR CERFFBU ; E THR VE OONTIRAPE OUTTPOUE THT HA TFYRIVE;  PRINT ; CALL PRINTABILITY BLE ASCII1 ; CHARACTER IS PRINTABLE INCB IERROR-O04 ; ILLEGAL CHARACTER INC CURBYTE-O04 ; REJECT THIS CHARACTER BR ASCII0 ; TRY THE NEXT CHARACTER ASCII1: MOVB @CURBYTE-O04,R3 ; R3 = VARIABLE TERMINATOR CMPB #40,R3 BEQ ASCII3 BIS #006400,R3 ; R3 = CAR-RET TERMINATOR MOV #SAVTERM,R2 ; R2 = EFF. VALUES ADDRESS MOVB R3,@R2 ; SAVTERM = INITT ; BINARY BUFFER INITIALIZATION MOV #BINBUF,R0 ; R0 = THE ADDRESS OF THE ; BINARY BUFFERS HEADER MOV #BOMBC,(R0)+ ; SET THE MAX. BYTE COUNT MOV #BOMODE,(R0)+ ; SET STATUS AND MODE BYTES MOV #1,(R0)+ ; CURRENT BYTE COUNT = 1 MOV #1,(R0)+ ; FIRST DATA WORD = 1 MOV #10,(R0)+ ; BLOCKS BYTE COUNT = 6 MOV #TXTDIR,(R0)+ MOV @R5,(R0)+ ; THIRD DATA WORD = E IN LCEURSOT GEE INUTROUB SENOP; G LA FUTNOBIE IZALTINI I ; UTNOBI1, # VBMO 0 = R ROER; R ROER B LR C ORRRQE B LR C ORRRUE B LR C IXAD R RBCL R ROER I RBCL R ROER A RBCL D MOSL R RBCL D 2MSL R RBCL 0 = ) (0UFBB T ; UFBB T LR C : RCTSSE DCEN. 4 TPSERP JM EGOSNF FD.I DCEN. 6 RYNTEP JM 4D OR.W RLNTCO APTR EGOSNF NDIF.: P4ETIAL TERMINATOR INC CURBYTE-O04 ; INCREMENT CURBYTE POINTER CMPB @CURBYTE-O04,R3 ASCII3: BEQ ASCIIX SWAB R3 CMPB @CURBYTE-O04,R3 BEQ ASCIIX SWAB R3 MOV #177000,R1 ; R1 = 177000 BR BYTE1 ; COMPLETE INITIALIZATION RWORD: ; WORD ASSEMBLY DIRECTIVE HANDLER MOV #177401,R1 ; R1 = -1/+1 TRAP EVENPC ; CALL EVEN THE LOCATION COUNTER BR BYTE0 ; COMPLETE INITIALIZATION RBYT ; BLOCKS LOAD ADDRESS BBIN00: CLRB (R0)+ ; ZERO THE BINARY BUFFER CMP R0,@R6 ; IS THE BUFFER CLEARED ? BLT BBIN00 ; NOPE, CONTINUE CLEARING MOVB 1(R5),@R3 ; CHECKSUM INITIALIZATION ADD @R5,@R3 ; ADD THE LOAD ADDRESS BYTES ADD #4,@R3 BBIN01: ADD @R2,R1 ; R1 = THE ADDRESS OF THE ; FIRST AVAILABLE BUFFER BYTE MOV (R6)+,R0 ; R0 = THE MAXIMUM BINARY ; BUFFERS ADDR S. LEFI; N OP MTE T PUIN;) R6-(B,ILSV MO CEURSON PE;O 6)(R,-FBSI OVM: P0ET SE NUTION CTOT INPOY TRENT EO;. DCEN. 2 TPSERP JM EGOSNF FD.I DCEN. 5 RYNTEP JM 4D OR.W #4Y LAEROVN ILLCA; L TRONCP RAT G SENO DFFN.I 2:TPSE S.AS PUTTPOUY ARIN;B ABDTGS APTR DCEN. 2 D OR.W #2Y LAEROVN ILLCA; L TRONCP RAT G SENO DFFN.I P2ET S NE B SSPAS,ASOP B PBCM 2 TPSE E BL . 1SSPAG INUR DRYNABIO ;N #1S,ASOPBB MPC: P5ET S E: ; BYTE ASSEMBLY DIRECTIVE HANDLER CLR R1 ; R1 = 0 BYTE0: MOV #SUBR1B,R4 ; R4 = PROCESSORS ADDRESS MOV #0,R3 ; R3 = THE FOLLOWING TWO . = .-2 ; ENCODED TERMINATORS: .BYTE TCCCRE,TCCSMC ; CAR-RET, SEMICOLON MOV #RESULT,R2 ; R2 = EFF. VALUES ADDRESS MOV R3,R0 BYTE1: ADD #000401,R1 ; R1 = R1 + +1/+1 DECB SIZE-O04 ; SUBROUTINE DATA ACQUISITION ; THIS SUBROUTINESS RTS R7 ; RETURN ;RELREF THIS SUBROUTINE CALCULATES THEVALUE OF THE REL REF FROM ;THE BASE OF THE TEXT BLOCK I.E. TEXT DIR IS 0.R4 IS EXPECTED TO ;CONTAIN THE FILED CNT,R0 THE CMND DIR AND REL REF. SUBR34: MOVB BINCNT,R0 SUB #6,R0 ADD R4,R0 MOVB R0,RELCNT MOV RLDIR,R0 RTS R7 ; ; .PAGE ; SUBROUTINE CHECKSUM FINALIZATION ; BINARY BLOCKS BYTE PNOT EM LEFIT PUIN;) R6-(B,ILSV MO CEURSON PE;O 6)(R,-FBSI OV MS:ASTPSE C ND.E SIRC MPJ G SENO DFIF. C ND.E 1) #AYRLVE(OT ITOL RONTCOE IV;G Y1TREN MPJ 1 RDWO. 1 #AYRLVE OINL AL;C RLNTCO APTR 1:N0RU AYRLVE OER PKSOCBLY ;B 02UNRR B # K OCBLE ASRENC I. RYNT;E R45,RD AD TO# K OCBLG INRTTA S. ES;Y )+R2,(R4 OVM ? YSLAEROVE OR;M 01UNR|E SUPPORTS THE DATA GATHERING ; REQUIREMENTS OF THE THREE PRECEDING ; ASSEMBLY DIRECTIVE HANDLERS. ; INPUT INITIALIZED REGISTERS ; OUTPUT COMPLETE HANDLER HANDLING ; RETURN IS TO SETSRC DATA: MOV #SAVTERM,R5 ; R5 = SAVTERM ADDRESS TRAP DATERM ; CALL DATA TERMINATION BNE DAT00 ;NOT DATA TERMINATOR. TSTB ITEMIN-O04 ; IS AN ITEM PENDING ? BNE DAT00 ; YES DAT0: INCB QERRCOUNT VALUE IS ; RESTRICTED TO BE AN UNSIGNED BYTE ; (8-BIT POSITIVE INTEGER) ;CHECKSUM: SUBR23: ADD @R2,@R3 ; SUM THE BLOCKS BYTE COUNT ; AND THE BLOCKS CHECKSUM NEG @R3 ; 2'S COMPLEMENT THE CHECKSUM MOVB @R3,@R1 ; BUFFER THE CHECKSUM MOV @R2,BINBUF+4 ; FINALIZE THE BINARY OUTPUT ; HEADERS CURRENT BYTE COUNT INC BINBUF+4 ; COUNT THE CHECKSUM BYTE CMPB PASS,T BL R32,#B SU 2:N0RU *2S AYRLVE OOFR BEUM;N R3+,2)(R OVM 2 ,RABNTRU#V MO ;. CYENIDES-RON NOR F 0TOT SET BIN IG S. RYNT;E ABNTRUE IVCTPEES RIRHE TINY LAEROVH AC;E OFR BEUM NCKLO BALICYSPHG INRTTA SCELA;P ;. CKTA SCTREOR;C )+R6,()+R6(P CM 3:N0RU ORRR EALAT;F PNOT EM CEOR FTOC ENOP .RMFOER;P 6)(R,-R1 OVM . NTSERE POT NVR.O1RL1PA;) R6-(B,RFOV#V MO 4:N0RU 05UNRR B ] ,1[1Y TR;D RISE,U01#4 OVM . NEDOL AL; 4 N0RU EQB 1 40,#IDERUS MPC K ACSTT ECRRCO;+ 6)(R+,6)xOR-O04 ; NO, QUESTIONABLE SYNTAX JMP EXIT-O04 ; EXIT VIA THE MAIN PROGRAM DAT00: JSR R1,@R7 ; ITERATION RANGE ;(R1=DAT00+2, OLD R1 TO STACK) CLR R0 ; R0 = 0 JSR R7,@R4 ; CALL THE EFFECTIVE PROCESSOR DATB0: SWAB @R6 ; WORD DIRECTIVE ? BNE DATB7 ;NO TSTB RSLMOD-O04 ;YES (0 IN LOW ORDER BYTE) BEQ DATA00 ;ABSOLUTE EXPRESSION BLT DATB14 ;.GLOBL OR EXTERNAL ;.CSECT EXPRESBOPASS ; IS THIS THE BO PASS ? BNE CHECK0 ; NO ADD #4,@R6 ; YES, R5 = R5+2 CHECK0: RTS R7 ; RETURN .END START ;END OF FILE #13 (R MPC ? STXI ELEFIS OE;D 03UNRE BN CKLO BNGTIARST;4 ,R)+R6(V MO OKLO;. 14 MTE K OCBLK IN;L 6)(R,-R1 OVM ) R6-( LRC K OCBLE IL;F 6)(R,-FBVR#O OVM: 05UN R. LEFIS OUGUTION CHE TOF ;K OCBLG INRTTA SALICYSPHE THE INRMTEDE ;; AYRLVE OER PKSOCBL;5 ,R)+R6(V MO DEVIDI7,RR JS ZESIY LAEROV;) R6-(D,WRVR#O OVM . AYRLVE OER PKSOCBLF OERMBNUE INRMTEDE ;O TZESIY LAEROVO NT IZESIK OCBLE IDIV;D CKTA SOFP TON OS)RDWO (ZESIK OCBLL CASIHY;P CKTA SCTREOR;C )+R6,()+R6(P CMtSION ;RELOCATABLE EXPRESSION CURRENT .CSECT TRAP SAVREG MOV #2,R4 MOV #RLD2.1,RLDIR-O04 ;INTERNAL RELOCATION TRAP RELREF MOV RESULT-O04,R1 MOV #4,R4 BR DATB13 ;.GLOBL OR EXTERNAL .CSECT EXPRESSION DATB14: TRAP SAVREG MOV #RLD2.5,RLDIR-O04 ;GLOBL ADDITIVE RELOCATION CMPB #-1,RSLMOD-O04 BEQ DATB15 ;GLOBL EXPRESSION MOV #RLD4.3,RLDIR-O04 ;.CSECT ADDITIVE RELOCATION DATB15: MOV #2,R4 TRAP RELREF MOV RESULT-O04,R3 MOV #10,R4 MOV GLBS 13 MTE K OCBLK IN;L 6)(R,-R1 OVM S TUTA SCEVIDEN AIBT;O MDNCIT EM CKLO BNKLI;) R6-(1,RV MO CEVIDEY LAEROVT NI.I ;K OCBLK IN;L R1B,RLOV#V MO NO; ? UPT SE; 1 N0RU EQB L ALS AYRLVE;O ITINNO TBTS ;* ****YSLAEROVR FOP UET*S**** ; G SENO DFFN.I 41 MTE ) R6-(1,#V MO 6)(R-R CL 6)(R,-34APTR# OVM 4 3ONTICALOP UET;S 41 MTE ) R6-(2,#V MO 6)(R,-RTTAES#R OVM S ESDRADT ARSTREP UET;S LBCO LRC B ILCR CL LBSL LRC B OLLR CL pY1-O04,R1 ;.GLOBL OR MOV GLBSY2-O04,R2 ;.CSECT NAME DATB13: TRAP RLDFIL INCB RLDFLG-O04 TRAP SETREG BR DATA00 DATB7: MOVB +1(R2),TERROR-O04 ; TERROR = HIGH ORDER BYTE BEQ DATA00 ; ZERO VALID VALUE INCB TERROR-O04 ; TERROR = TERROR+1 ; NEGATIVE ONE VALID VALUE DATA00: SWAB @R6 ; RESTORE STACKED VALUE CMP #401,@R6 BNE DATB8 TSTB RSLMOD-O04 ;.BYTE DIRECTIVE BEQ DATB8 CMPB #-1,RSLMO LBBO LRC 2 LBSI LRC 1 LBSI LRC N GIBEC ^OFE AS;C INS CKLO BNKLIL ALR EACL ;C ND.E TAARSTT=ARST EGOSNF FD.I DCEN. . SSREDD AERSFANTRP UET;S TAARSTT=ARST LDRBOV DFFN.I R6P,TOERPV MO C:RTTA S. ST PHE;T OWEL BSTJUO TCKTA SHE TZELIIAITIN ;C ND.E INEG B^CF ;I LBVROR CL EGOSNF NDIF. . ET STADAY LAEROV; E IZALTINI;I ITINNO7,37#B OVM : TAARST ..METIN GIBEC ^ND AMETID OA LATE ER HESOM COLTRON;C ; lD-O04 BEQ DATB10 ;.GLOBL INCB AERROR-O04 BR DATB8 DATB10: TRAP RLDBYT DATB8: MOV R3,R0 ; DIRECTIVE TERMINATED? DATA8: TRAP DATERM ; CALL DATA TERMINATION BNE DATA1 ; NOPE DATB1: TSTB RADIX-O04 ;RADIX HANDLING BEQ DATA0 ;NO THEN BRANCH DATB2: TST CNTCHAR-O04 BEQ DATB3 DATB5: CLRB @SYMBOL-O04 DEC CNTCHAR-O04 INCB SYMBOL-O04 BR DATB2 DATA0: MOV #SETSRC+2,R1 ; R1 = SETSRC ADDRESS TST @R6 ; ASCII DIRECTIVE? BLT DCEN. T TRRSRP JM EGOSNF FD.I DCEN. 1 #AYRLVE OY3TREN; 3 RYNTEP JM 1D OR.W #1Y LAEROVN ILLCA; L TRONCP RAT G SENO DFFN.I: RTTAES R. CEVIDET PUUT/OUTNP INDMAOM CHE TOND PETYS I ; NDMAOM CRTTAES RORITON MHE TENWHR O) ;B LYMBSEASN AOFD ENE TH A); T AREHES MECOL RONTCO ;. ESAGSSMER ROERT PUUT OTOE ER HESOM COLTRON;C OTI: UTROER NETIOUBRSUD TEESQUREO T ; h DATA2 ; YES, EXIT. ; THIS NO-OPED CODE INSURES BR DATA1 ASCIIX: DECB SIZE-O04 INCB QERROR-O04 JMP EXIT-O04 ; THAT ALL .ASCII STATEMENT'S ; TRAILING TERMINATOR IS ; FOLLOWED BY EITHER A CAR-RET ; OR A SEMICOLON. IF NOT, A ; BLANK LINE IS PRINTED WITH ; A'Q' ERROR CODE AND THE ; DIRECTIVE IS TERMINATED. ; BGE DATA1 ; NO, AVOID CHECK ; TRAP CBTABS ; CALL CHECK FOR BLANKS AND TABS ; X)DEINE(BLTA JRUTHP UM J ; R7+,6)(R @ OV M EXND ILEAB TMPJUE ATULLCCA; R6,@APTRE-BLTA#J D AD N IOCTRUSTIND PEAPTRK ACST; 6)(R,-)+R6@( V MO S TUTA SEDCKTA SOFP TON O ; R6,@#2 B SU S ESDRADN URET RHE TCKTA;S ) R62(6,@R V MO : 34APTR 34N IOATOC LOR FERDLAN HAPTR; ENEV . CEPA SERFFBUD RL ; 6 C+DBRL.+ = . 6 F+BULD R = RTSTRL +2 . d CMPB #CR,@CURBYTE-O04 ; THIS CHARACTER A CAR-RET? ; BEQ DATA2 ; YES, VALID CASE SO EXIT ; CMPB #';,@CURBYTE-O04 ; THIS CHARACTER A SEMICOLON? ; BEQ DATA2 ; YES, VALID CASE SO EXIT ; INCB QERROR-O04 ; NEITHER, QUESTIONABLE SYNTAX ; COMB @R6 ; SET SIZE < 0 DATA1: TSTB RADIX-O04 BEQ DATB4 RADB4: SWAB R0 ; THIS PORTION MOVB @CURBYTE-O04,R3 ; CARRIES OUT CMPB R3,#'0 ; THE TRANSLATION BLT RAD01 ; AND PACKING CMPB = NTDCRL 0 RDWO . F:BULD RN VE.E 3 =6 C DBRL +6+1ZESIBB = C MBBO TEBYM SUCKHE C AVEERES R ; 0 TEBY . SSREDD AERFFBUY ARIN BX.MA; A:BBAX MS TEBYA AT DZESIBBE RVSERE; E IZBS+B . = .S ESDRADD OA LKSOCBLY ARIN B ; 0 RDWO . NTOU CTEBYS CKLO BRYNABI; 0 D OR.W R IEIFNTDE IKSOCBLY ARIN B ; 0 RDWO . NTOU CTEBYT ENRRCUO B ; 0 RDWO . 10F+BUIN=BNTNCBI ESYT BDEMOS-TUTA SBO; `R3,#'9 ; OF WORDS BGT RAD01 ; AS SPECIFIED RAD00: SUB #22,R3 ; BR RAD03 RAD01: CMPB #'$,R3 BNE RAD02 SUB #11,R3 BR RAD03 RAD02: CMPB #'.,R3 BEQ RAD00 CMPB #' ,R3 BNE RAD06 CLR R3 BR RAD03 RAD06: CMPB R3,#'A BLT RADERR CMPB R3,#'Z BLE RAD03 CMPB R3,#141 BLT RADERR CMPB R3,#172 BGT RADERR BICB #40,R3 MOVB R3,@CURBYTE-O04 R0 D OR.W T UNCOE YT BUMIMAX MBO; 0 D OR.W F:BUIN BR DEEA HUTTPOUY ARIN B ; ENEV . ERFFBUT PUUT ORYNABIE YT B46; . 46 = E IZBS BS ERFFBU; 4 +1 . = .N IONSTEEXG INSTLIT ECBJ O ; 2 +1 . = .R FEUF BTADAR TEACARCH; X MARC+S . = .T UNCOE YT BNTREUR CSI; S TEBYE OD-MUSATSTI S ; SI COR F; 6 -1F2BUSI = UFDBCM NTOU CTEBYM MUXIMAI S ; -6 . = F2BUSI WO TCKLO BERADHET PUINE \AD03: BIC #177700,R3 MOVB R3,@SYMBOL-O04 INC SYMBOL-O04 BR DATB6 RADERR: INCB QERROR-O04 BR DATB2 DATB6: INCB CURBYTE-O04 MOV CURBYTE-O04,R5 DEC CNTCHAR-O04 BNE DATA8 DATB3: MOV #TMPSYM,R1 ;INITIALIZE ADDRESS TRAP SERCHB ;FOR CONVERSION MOV #TMPSYM+1,R2 MOV #SETSRC+2,R1 MOV #2,SIZE-O04 BR DATB9 DATB4: MOV @R6,SIZE-O04 DATB9: MOV @R2,TBBUF-O04 CLRB RADIX-ORCOU S ; LDIE FNGTIIS LNKLA B ; +1 . = .D ELFIG INSTLIT ECBJ O ; +6 . = .D ELFIG INSTLIK ANBL; 1 .+ = . LDIE FNGTIIS LONTICALO; 6 .+ = . LDIE FNGTIIS LORRR E ; +2 . = .T UNCOE YT BNTREUR CLO; 0 D OR.W S TEBYE OD-MUSATSTO L ; 0 RDWO . NTOU CTEBYM MUXIMAO L ; 0 RDWO .: F2BULO WO TCKLO BERADHET PUUT OEDSTLI; N VE.E 6 1-UFOB-L . = BCOM LS ERFFBU; X04 ASCIIY: TRAP ENDLINE ; CALL END LINE TRAP COLIST TST LOLB-O04 ;WAS LISTING DEVICE INITED YET? BEQ DATB99 ;NO - BRANCH MOV #LOLB,-(R6) ;WAIT TILL LISTING COMPLETES EMT WTCMD DATB99: SUB #6,CURLIST-O04 INC CURBYTE-O04 ; INCREMENT CURBYTE POINTER DATA2: TST -(R1) ; R1 = R1-2 RTS R1 ; REITERATE SUBROUTINE RSETP2: CLR @USERPC-O04 ; INIT 14.+ = . ONSIENXT ENGTIIS LCTJEOB; 2 +1 . = .R FEUF BTADAR TEACARCH; X MARC+S . = .T UNCOE YT BNTREUR CSI; S TEBYE OD-MUSATSTI S ; NTOU CTEBYM MUXIMAI S ; -6 . = F1BUSI NE OCKLO BERADHET PUINE RCOU S ; LDIE FNGTIIS LNKLA B ; +1 . = .D ELFIG INSTLIT ECBJ O ; +6 . = .D ELFIG INSTLIK ANBL; 1 .+ = . LDIE FNGTIIS LONTICALO; 6 .+ = . LDIE FNGTIIS LORTIALIZE DOT AT ZERO ;INITIALIZE DOT TO DEFINED, RELOCATABLE, UNNAMED .CSECT. MOV #DEFFLG!RELFLG!400,@HUSERPC-O04 CLR ABSPC-O04 CLR RLDFLG-O04 ;INITIALIZE ;CLEAR ALL CURRENT PC WORDS IN ;THE CONTROL SECTION AREA OF THE ;SYMBOL TABLES. MOV PERTOP-O04,R0 ;BOTTOM OF .CSECT AREA MOV R0,R2 MOV R2,HIRPC-O04 ;POINTER TO MAX PC OF TST -(R2) ;BLANK .CSECT MOV R2,RELPC-O04 ;POINTER TO CURRENT PC OF ;BLANK .CSECT MOV CONTOP-O04,R1 ;TOP OF .CSECTRR E ; +2 . = .T UNCOE YT BNTREUR CLO; 0 D OR.W S TEBYE OD-MUSATSTO L ; 0 RDWO . NTOU CTEBYM MUXIMAO L ; 0 RDWO .: F1BULO NE OCKLO BERADHET PUUT OEDSTLI; 0 D OR.W 0 D OR.W 0 D OR.W 0 D OR.W 0 RDWO . 12 D OR.W 3 D OR.W K AC PILRA;T 0 4 RDWO . F:BURL TX MARCS= BCIM SS TEBY2 7 =UMIMAX MCEURSO; 0 11 = X MARC SE ONR FEUF B ; CKLO BERADHEO I/N AP AREA SETP3: CMP R0,R1 BEQ SETP1 ;DONE CLR -2(R0) ;0-CURRENT PC WORD. SUB #10,R0 ;SIZE OF ENTRIES IF BR SETP3 ;4 WORDS. SETP1: MOVB #1,SECMOD-O04 ;UNNAMED .CSECT MOV #130411,TITLEA-O04 MOV #35214,TITLEB-O04 MOV #-1,R0 MOVB R0,BINOUT-O04 TRAP BBINIT ; CALL BINARY BUFFER INITIALIZATION MOV #1,PAGCNT-O04 ; INIT. PAGE COUNTER CLR PAGING-O04 ; INIT. LINE COUNTER CLR ERRSUM-O04 ; INIT. ERROBYD DECERE P ; LYTEIAEDMM IISR FEUF BALDUVIDIINH AC E ; ERFFBUT PUUT OHE TINTHWID DEEDMB E ; LYTELEMPCOS IERFFBUT PUINE TH; E ON ZNGRIFEUF BUTTPOUT-PUIN; ENEV . SSPAM MUXIMA; 0 E YT.B: SSPAAX MS AS PVETIECFF E ; 0 TEBY . S:AS PS AS P'SOLMBSYD NEFIDEUN; 0 TEBY .: SSPAUS ONTIOPS AS PNGTIIS LORRR E ; 0 TEBY .: SSPAER NSIOPTLR COUNTER JMP SETP4-O04 RSETP4: CLR SIBUF1+2-O04 CLR SIBUF2+2-O04 MOV BHADRS+2-O04,R0 MOV R0,-(R6) ;STACK BUFFER ADDRESS MOV #SIMBC,(R0)+ MOV #SIMODE,(R0)+ MOV R0,CURLIST-O04 MOV #LOMBC-26,R0 TRAP BLKBUF MOV SILB-O04,-(R6) ;GET SOURCE INPUT EMT RDCMD ; ; MOV SILB-O04,-(R6) ;WAIT FOR COMPLETION EMT WTCMD MOV BHADRS-O04,R0 SUB #16,R0 OLYMBSEAS; : NSIOPT OS ONTINCFUS AS PLYMBSEAS; S:SEASP #6E IL FOFD EN; OT.E UTTPOUR FON PE;O 47BRSU RDWO. O TORRI PLEFIT PUUT OTELEDE;E BLTA-J.= UTLODE DCEN. 6 R4UBSD OR.W ERADLOY LAEROV; E BLTA-J.= RLNTCO EGOSNF NDIF. 7 RTS RIA VITEX; 5 R4UBSD OR.W ND ARSTEISEG ROP;P LEABJT.- =G REOP PD T'NI.IF ;I 44BRSU RDWO. T SEA AT DSEEAEL.RD ANE OSCL;. LEABJT.- =N EACL DCEN.H MOV #100000,(R0)+ CLR (R0)+ JMP SETSRC-O04 ; DIRECT ASSIGNMENT STATEMENT PROCESSING ; THIS SUBROUTINE RESOLVES THE FOLLOWING THREE DIRECT ; ASSIGNMENT SITUATIONS: ; 1) USER'S SYMBOLIC ASSIGNMENTS ; 2) SYMBOLIC REGISTER ASSIGNMENTS ; 3) ASSEMBLY LOCATION COUNTER ASSIGNMENTS ; UPON ENTERING THIS SUBROUTINE THE EFFECTIVE SYMBOL ; TABLE ADDRESS RESIDES IN HINDEX. ; REGIS 3 R4UBSD OR.W EGOSNF FD.I DCEN. 1 #AYRLVE OY2TREN; 2 RYNTED OR.W EGOSNF NDIF. A AT DTEDALIVA, I2CSL AL;C LEABJT.- =K CHSI CC ND.E 42BRSU RDWO . EGOSNF FD.I C ND.E 2 #AYRLVE OY8TREN; 8 RYNTED OR.W G SENO DFFN.I R FEUF BLD RTOINL OBGL .ERNT;E LEABJT.- = GLTREN DCEN. 1 R4UBSD OR.W EGOSNF FD.I DCEN. 2 #AYRLVE OY6TREN; 6 RYNTED OR.W G SENO DFFN.I NETIOUBRSUH RCEA SARNELI;E BLTA-J.= CHSRIN L0 R4UBSD OR.W Y TRENL BOYM SAYRLVEDTER TYPING INFORMATION OBTAINED ON EITHER SIDE ; OF THE EQUIVALENCE CAUSES THE EFFECTIVE SYMBOL ; TO BE TYPED AS REGISTER. ; THE ASSEMBLY LOCATION COUNTER SYMBOL IS DETECTED ; BY IDENTIFYING THE CHAR13 PACKED WORD. ; IE. TMPSYM(1,2) = 127400 ; EXPRESSIONS DEFINING THE ASSEMBLY LOCATION ; COUNTER, UPON BEING ENCOUNTERED, MUST BE ; TOTALLY EVALUATABLE. ; INPUT SPECIAL SITUATION ; OUTPUT EXIT ASSIGN:;O LEABJT.- = AYRLOV 39BRSU RDWO . NETIOUBRSUH RCEA SRYNABI;E BLTA-J. =H RCNSBI DCEN. 8 R3UBSD OR.W EGOSNF FD.I DCEN . ) #3Y LAEROV (ORSSCERO PND ENTRO;F Y8TREN RDWO. G SENO DFFN.I LYMBSEASL NAIOITNDCO;E BLTA-J.= NDCO 37BRSU D OR.W E BLTA-J . = YTDBRL 36BRSU D OR.W E BLTA-J . = INTBOU DCEN . 35BRSU D OR.W G SENO F FD.I C ND.E 2 #AYRLVE OY7TREN; 7 RYNT E RDWO . EGOS N DFFN.I E BLTA-J . @ MOV TMPSYM+1-O04,-(R6) ; SAVE SYMBOLS FIRST TRIAD MOV TMPSYM+3-O04,-(R6) ; SAVE SYMBOL'S SECOND TRIAD MOV HINDEX-O04,-(R6) ; SAVE SYMBOL'S ENTRY ADDRESS MOV @R1,-(R6) ; SAVE SYMBOL'S FLAGS AND .CSECT ID TRAP ITEM ; CALL ITEM BLE MAIN16 ; VOID ITEM ENCOUNTERED ; NON-VOID ITEM ENCOUNTERED INCB ITEMIN-O04 ; SET ITEM PENDING FLAG MAIN16: CLR R0 ; R0 = 0 TRAP EXPE3 ; = ABDTGS 34BRSU D OR.W E BLTA-J . = EFLRRE 33BRSU D OR.W E BLTA-J . = ILDFRL 32BRSU RDWO. E BLTA-J . = NTDIRL 31BRSU D OR.W E BLTA-J . = HBRCSE 27BRSU D OR.W G INSTLIT PUUT ONDMAOM C ; LEABJT.- = T ISOL C6 R2UB S RDWO . ERNTOU CONTICALOE THN VE E ; LEABJT.- = C NPVE E5 R2UB S RDWO . TYLIBITAINPR; E BLTA-J . = NTRI PC ND.E 4 R2UB S RDWO . EGOS N DFIF . DCEN . #4Y LAEROV< CALL EXPRESSION, MINIMAL TERMINATOR ; BGT MAIN17 ; NON-VOID EXPRESSION FOUND INCB QERROR-O04 ; VOID EXPRESSION CONSIDERED ; AS QUESTIONABLE SYNTAX INCB UERROR-O04 MAIN17: BISB REGTYP-O04,@R6 ; COMBINE THE EXPRESSION'S REG. ; TYPE WITH THE SYMBOL'S FLAGS BITB R2,@R6 ; IS THE SYMBOL TYPED REGISTER ? BEQ MAIN18 ; NOPE BITB #LABFLG,@R6 ; YES, IS IT A LABEL ? BEQ MAIN18 ; 8 RYNT E RDWO . EGOS N DFFN.I N IOATINRMTEA AT D ; LEABJT.- = M ERAT D3 R2UB S RDWO . UMKSECCHH ISIN F ; LEABJT.- = M SUCKHE C2 R2UB S RDWO . ONTIZALIIAITIN. ID. ARCH; E BLTA-J . = P1TUSE 21BRSU D OR.W E OD CORRR EET S ; LEABJT.- = R ERET S0 R2UB S RDWO . LDIE FRTSEIN; E BLTA-J . = RTSEIN 19BRSU D OR.W R TORAPESES SIHENTREPA; E BLTA-J . = EPRSPA 18BRSU D OR.W K ECCHD END ELFI; 8 ; NOPE BISB #MDFLAG,1(R6) ; YES, CONSIDERED AS A ; MULTIPLY DEFINED SYMBOL INCB RERROR-O04 ; REGISTER ERROR MAIN18: MOV (R6)+,@R1 ; RESTORE SYMBOL'S FLAGS AND ID MOV (R6)+,HINDEX-O04 ; RESTORE SYMBOL'S ENTRY ADDRESS MOV (R6)+,TMPSYM+3-O04 ; RESTORE SYMBOL'S SECOND TRIAD MOV @R6,TMPSYM+1-O04 ; RESTORE SYMBOL'S FIRST TRIAD CMP #127400,(R6)+ ; IS THIS SYMBOL DEFINING THE E BLTA-J . = NDDEFL 17BRSU D OR.W R TONAMIER TXTNE; E BLTA-J . =M ERXTNE 3BBRSU D OR.W K ECCHA DIMEF--OND EUTTPOU; E BLTA-J . = HKMCEO 16BRSU D OR.W S ERSTGIRET SE; E BLTA-J . = EGTRSE DCEN . 15BRSU D OR.W G SENO F FD.I C ND.E 3 #AYRLVE OY4TREN; 4 RYNT E RDWO . EGOS N DFFN.I T PUUT OEDSTLIE BLTAL BOYM S ; LEABJT.- = T LSTL S4 R1UB S RDWO . RSTEISEG RVESA; E BLTA-J . 4 ; ASSEMBLY LOCATION COUNTER ? BNE MAIN19 ; NOPE TSTB ERROR-O04 ; WAS THE EXPRESSION TOTALLY EVALUATABLE? BNE MAIN87 ; BRANCH IF NOT. TSTB RSLMOD-O04 BGE MAIN88 MAIN87: INCB AERROR-O04 MAIN89: JMP MAIN1E-O04 MAIN88: COMB BINOUT-O04 ; REQUEST BINARY OUTPUT BITB #-DEFFLG-RELFLG-1,@R1 ;ONLY DEF. AND REL. CAN BE SET. BEQ MAIN1Q INCB QERROR-O04 BR MAIN89 MAIN1Q: MOV R1,R5 ;SAVE = EGVRSA 13BRSU D OR.W N IORSVEON CIISC ATOY ARIN B ; LEABJT.- = C ASIN BC ND.E 2 R1UB S RDWO . EGOS N DFIF . DCEN . #3Y LAEROV3 RYNT E ; Y3TREN D OR.W G SENO F NDIF . NGTIIS LLEAB TOLMBSY; E BLTA-J . = STLIST 11BRSU D OR.W R TEACARCHT GE; E BLTA-J . =R HATCGE 10BRSU D OR.W S AB TND AKSANBLK ECCH; E BLTA-J . = BSTACB 09BRSU D OR.W R FEUF BRYNABIR TEEN; E BLTA-J . = UFBB E8 R0UB0R1 MOVB #RLD3.2,R0 ;LOCATION COUNTER MODIFICATION MOV RESULT-O04,R1 MOV #4,R4 TRAP RLDFIL MOV R5,R1 ;RESTORE R1 TSTB SECMOD-O04 BEQ MAIN1C ;ABSOLUTE PROGRAM SECTION TSTB RSLMOD-O04 BLE MAIN87 ;NOT RELOCATABLE EXPRESSION IN .CSECT MOV RESULT-O04,@RELPC-O04 ;UPDATE PC OF CURRENT .CSECT CMP @USERPC-O04,@HIRPC-O04 BLOS MAIN1T MOV @USERPC-O04,@HIRPC-O04 ;UPDATE MAX. PC OF CURRENT .CSECT MAIN1T S RDWO . NGSIESOCPRE IN LOFD EN; E BLTA-J . =E INDLEN 07BRSU D OR.W S SILYNA AAXNTSY; LEABJT.- = X TAYN S6 R0UB S RDWO . LEAB TOLMBSYR TEEN; E BLTA-J . = ERNT EB R2UB S RDWO . UEAL VRSTEISEG RCEOR F ; LEABJT.- = E RCFO RA R2UB S RDWO . UEAL VRSTEISEG RCKHE C ; LEABJT.- = K ECCH R5 R0UB S RDWO . UEAL V'SOLMBSYE AV S ; LEABJT.- = L VAAV SC R1UB S RDWO . RYNT ERD3-S N'IOSSREXP E ; LE,: BR MAIN1C MAIN19: TSTB ERROR-O04 ;EXPRESSION NOT BNE MAIN89 ;FULLY DEFINED CMPB #MDFLAG,1(R1) ; IS THIS SYMBOL MULTIPLY ; DEFINED ? BNE MAIN1A ; NOPE, VALID SITUATION TRAP SAVVAL ; CALL SAVE SYMBOL'S VALUE BR MAIN1C ; ENTER THIS INFORMATION MAIN1A: BITB R2,@R1 ; IS SYMBOL TYPED REGISTER ? BEQ MAIN1B ; NOPE TRAP RFORCE ; CALL REGISTER CHECKER MAIN1BABJT.- = 3 PEEX 1BBRSU D OR.W Y TREND -N 2'SONSIESPREX; E BLTA-J . = E2XP EA R1UB S RDWO . RYNT EST1-S N'IOSSREXP E ; LEABJT.- = 1 PEEX 04BRSU D OR.W E BLTAL BOYM SCHARSE; E BLTA-J . = CHARSE 03BRSU D OR.W N IOITISQUACM TE I ; LEABJT.- = M TE I2 R0UB S RDWO . RSFEUF B/O ITETARO; E BLTA-J . = TETARO 01BRSU D OR.W R FEUF BNGTIIS LNKLA B ; LEABJT.- = F BULK B0 R0UB S RDWO . ONTIZALIIA(: BICB #DEFFLG,@R1 ; CLEAR SYMBOL'S DEFINED FLAG TSTB RSLMOD-O04 ;AM I IN REL EXP BLT MAIN87 ;.GLOBL OR EXTERNAL .CSECT EXPRESSION BEQ MAIN1C BISB #RELFLG,@R1 MOVB SECMOD-O04,1(R1) ;PROG. SECTION ID MAIN1C: BISB #DEFFLG,@R1 ; FLAG THIS SYMBOL DEFINED MAIN1D: TRAP OVRLAY ; CALL OVERLAY USER'S SYMBOL TABLE BR MAIN89 ; SUBROUTINE DATA TERMINATION ;DATERM: SUBR24: CMPB @R5,R0 BEQ DATER0 SWAB R0 ITINR FEUF BRYNABI; E BLTA-J . = ITINBB TSINPOY TRENE INUTROUB SOFE BLTAP UM J ; : LEABJT ENEV . E AG.P ; ORATICND IAB TORK ANBL; 0 E YT.B G:LATF BS ASCLS N'IOCTRUSTIN; 0 E YT.B S:ASCL IK AS MNGTIIS LLEAB TOLMBSY; 0 E YT.B K:ASTM S. ERNTOU COLMBSY; S T'PUUT OEDSTLIE BLTAL BOYM S ; 0 TEBY .: SCSTLI ERNTOU CEMITS N'IOSSREXP E ; 0 $ CMPB @R5,R0 DATER0: RTS R7 .IFNDF NOSEG ENDO04: SIZO04=ENDO04-BEGO04 .EOT ;END OF FILE #4 ;***** OVERLAY #5 ***** O05=BEGOVR-BEGO05 ;COMPUTE OFFSET FROM ;RUN TIME OVERLAY AREA BEGO05: ;JUMP TABLE TO ENTRY POINTS ;IN THIS OVERLAY. ; JMP OPCODE ;ENTRY1 JMP EOFFLG ;ENTRY2 .ENDC ; ; ; OPCODE: MO TEBY .: NTOUIC ERNTOU CERCTRAHA C'SEMIT; 0 E YT.B: ARCHNT CR TOCADIINT PUUT ORYNABI; 0 E YT.B T:OUIN BR TOCADIING INNDPEM TE I ; 0 TEBY .: INEMIT AGFLT PUUT O'SID. ARCH; 0 E YT.B : AGFL SR TOCADIINE YP T'SEMIT; 0 E YT.B : PETY IN VE.E D IONTIEC SOLTRON;C 0 E YT.B D:TISC CS AGFLS E'BLTAL BOYM SRYRAPOEM T ; 0 TEBY .: GSLATF 0 RDWO . 0 RDWO . 0 RDWO . V QUANTITY-O05,-(R6) ; STACK MEMONICS OP-CODE TRAP EVENPC ; CALL EVEN THE LOCATION COUNTER MOV #COMAND,R5 ; R5 = COMAND'S ADDRESS MOV #RESULT,R4 ; R4=RESULT ADDRESS MOV #SIZE,R3 ; R3 = SIZE ADDRESS CLRB @R3 ; SIZE=0 MOV #TBBUF,R2 ; R2=TBBUF(0) ADDRESS MOVB ICLASS-O05,R0 ; R0 = OP-CLASS INDEX JMP @OPCLASS-BEGO05+BEGOVR(R0) ; SELECT OPERATION CLASS OPCLASS: ; OPERATION CLAS 0 E YT.B M:SYMP TR TEUNCOD ELFIG INSSREDD;A 0 E YT.B T:CNLD FS ESDRADD ODE BSTMUM SYMP T ; ENEV . LEAB TOLMBSYY ARORMPTE; 0 D OR.W: RMTEAR VN VE.E E.ICEV;D AYRLVE OITIN; T N'DO0 F ;I 0E YT.B T:NIOI N" 1RL1PA "NTRI P - 0ON;N 773E YT.B T:ENID ENEV. H TCWI S'SCTSE.CT IS;L 0E YT.B T:ECCS LR TEUNCOE BLEMSS A'TON;D 0E YT.B T:ACNT DL VELET ES NLSNAIOITNDCO;0 TEBY.: LVSTCN 0 TEBY . H:LTAR VP KUAC BSING JUMP TABLE CLASS0: .WORD MAINC0-BEGO05+BEGOVR ; OPERATE MNEMONICS CLASS1: .WORD MAINC1-BEGO05+BEGOVR ; UNARY MNEMONICS CLASS2: .WORD MAINC2-BEGO05+BEGOVR ; BINARY MNEMONICS CLASS3: .WORD MAIN3F-BEGO05+BEGOVR ; RTS MNEMONICS CLASS4: .WORD MAIN30-BEGO05+BEGOVR ; BRANCH MNEMONICS CLASS5: .WORD MAIN3Q-BEGO05+BEGOVR ; JSR MNEMONICS CLASS6: .WORD MAIN3A-BEGO05+BEGOVR ; TRAP MNEMONICS ODLMRS ; 0 TEBY . D:2MSL R) ONTIEC SALRNTEEX (LEABATOCEL R2=;- L BALO G1=;- ) ONTIEC SNTREUR(CE BLTACALORE= ;1 E UTOLBS A0= ; ONSIESPREXF OPETYE THS TECADIINS HI;T 0 E YT.B : ODLMRS 'SCTSE.CD MENA= ) (876-3;2 T ECCS .EDAMNN U1= ; CTSE.A= ;0 : ISE ONN IOCTSET HA WINS TECADIINS HI;T 1 E YT.B : ODCMSE 0 TEBY . X:DIRA +1ZESIT=FMYT B ; 0 TEBY .: MTTFBY SSREDD AENEVE BSTMUE IZ S ; MAIN30: ; CONDITIONAL BRANCH MNEMONIC PROCESSING CLR R0 ; R0 = 0 TRAP EXPE3 ; CALL EXPRESSION, SEMICOLON ; MINIMAL TERMINATOR BGT MAIN32 ; NON-VOID EXPRESSION FOUND ; VOID EXPRESSION ENCOUNTERED MAIN31: INCB AERROR-O05 ; SET ADDRESSING ERROR MOVB #-1,@R4 BR MAIN3H MAIN32: TSTB RSLMOD-O05 ; ENSURES BEQ MAINBR ; 0 TEBY . E:IZ SE AGIME RCOU SVETIECFF EHE TOF; G INSSCERO PRETIENE THT OU; U HR TERFFBUT PUUT-OUTNP I ; VETIECFF EHE TTOS NTOI P ; LYALONTIDIONNC U1)0,S(DRHA B ; ESSSREDD AERADHER FEUF BUTNP I ; F2BUSI D OR.W E RCOU SOFE BLTAG INATOT R ; F1BUSI D OR.W S:DRHA BN VE.E 0 RDWO.: D4OR W0 RDWO.: D3OR W0 RDWO.: D2OR WH RCNSLIO TUTNP;I 0D OR.W 1:RDWO S)ESDRADT ESOW(LT PSF OOP;T THAT ILLEGAL BLT MAIN31 ; BRANCHING DOES NOT BR MAIN33 ; TAKE PLACE. MAINBR: TSTB SECMOD-O05 ; BNE MAIN31 ; OF ASSEMBLY LOC. COUNTER MAIN33: SUB @USERPC-O05,@R4 ; RESULT=RESULT-USER'S PC. SUB #2,@R4 ; RESULT = RESULT-2 ASR @R4 ; SHIFT RESULT RIGHT 1-BIT BCS MAIN31 ; ADDRESSING ERROR IF ODD MOVB @R4,R0 ; PROPAGATE BYTES SIGN IN R0 CMP @R4,R0 BTMTSY RDWO.: OPRTPE S)ESDRADT ESGHHI (ST POFM TOOT;B BBMTSY RDWO.: OTRBPE T.ENEMATST; E RCOU SNTSERE PHE TINTHWI; D SEESOCPRG INBE) ERCTRAHA(C; E YT BNTREUR CHE TATY TLECIR D ; TSINPOY TLANSTON CERNTOI PISTH; 0 D OR.W: TEBYUR CD OR WNDMAOM CNSIOCTRUSTINN A ; OF) DR(MS LDIE FNGSIESDRAD; L RANEGEE THF OONTIUCTRNSCO; E THN IEDUSD OR WTADA; 0 D OR.W D:ANOM ; RESULT = R0 ? BNE MAIN31 ; NOPE, ADDRESSING ERROR BR MAIN3H ; FINAL COMAND PROCESSING ; .PAGE MAINC0: ; CONDITION CODE OPERATES, WAIT, HALT, RTI ; SINGULAR PROCESSING CMPB SAVTERM-O05,#-5 ; TERMINATOR SEMICOLON ? BEQ MAIN3W ; YES, EXIT CMPB SAVTERM-O05,#-4 ; TERMINATOR CAR-RET? BEQ MAIN3W ; YES, EXIT I C0 D OR.W : LGDFRL GERATO S ; 0 TEBY . T:CNEL RE IVCTREDID RL; 0 E YT.B : IRLD R; 0 D OR.W : MDRCDI MENA; 0 D OR.W : Y2BSGL OLMBSYL BALO G ; 0 RDWO . 1:SYLB GE THS INTAON CCHHI WERNTOI P ; 0 RDWO .: OLMBSY RDWO. PC. AX MTOR TEINPO; 0 D OR.W : PCIR HD OR WPCO TERNTOI P ; 0 RDWO . C:LPRE RSTEINPOY TRENT ECCS .NTREURC; RDWOD /IAGFLS OT DOF. DRAD; 0 D OR.W: PCERUS HS NCB QERROR-O05 ; NO, SET 'Q' ERROR BR MAIN3W ; SET SIZE = 1 ; .PAGE MAIN3A: ; TRAP MNEMONIC PROCESSING CLR R0 ; R0 = 0 TRAP EXPE3 ; CALL EXPRESSION, ; MINIMAL TERMINATOR TST REGTYPE-O05 ; EXPRESSION TYPED REGISTER ? BEQ MAIN3C ; NOPE INCB RERROR-O05 ; YES, SET REGISTER ERROR CLR @R4 ; RESULT = 0 MAIN3C: TSTAS P ANGRIDUD REROER; S NELIE THL ALF OUM SHE T ; 0 RDWO .: UMRSER SSREDD AERADHES R'FEUF B ; UTNP ICEURSOE IVCTFEEFE TH; F OSSREDD AHE TNSAINTCO; D OR WISTH, ROZET NOF I ; AGFLT PUUT ONDMAOM C ; 0 RDWO .: AGFLCO R.FEUF B ; UTTPOUD TEIS LVETIECFF EHE T ; INE YT BLEABILVA ANTREUR C ; HE TATS NTOI PERNTOI PISTH; 0 D OR.W: STLIUR C. CHARSE; B RSLMOD-O05 BEQ MAINCA CMPB #-1,RSLMOD-O05 BEQ MAINCB ; .GLOBL INCB AERROR-O05 MAINCA: MOVB RESULT+1-O05,TERROR-O05 ; RESULT'S HIGH ; ORDER BYTE ; SETS TRUNCATION ERROR BR MAIN3H ; BUILD THE COMAND WORD MAINCB: TRAP RLDBYT ; GLOBAL ADDITIVE RELOCATION BR MAINCA ; OBJECT CODE 5 ; .PAGE MAIN3F: ; RTS MNEMONIC PROCESSING CL E BLTAL BOYM SHE TNGRIDU; T ANSTON CERCTRAHA CB' ' ; VETIECFF EHE TNSAIET R ; 0 RDWO .: MDTCBY ONTISIPO. ARCHH -T 5','B; 0 12 D OR.W N IOITOS PR.HA CTH4-, B' ' ; 0 20 6 RDWO . S.OLMBSYD LEABEN; E YT BHE TTON IOATEL R ; INE INUTROUB SCHARSE; E THY BEDUSS NTTANSCO; R TEACARCH' 'B0 -4OD MOFE BLTA; 10.- = N COYT B. RDWOG LA/FIDS L'BOYM SOFS ESDRR R0 ; R0 = 0 TRAP EXPE3 ; CALL EXPRESSION, ; MINIMAL RETURN BGT MAIN3G ; NON-VOID EXPRESSION EXITED INCB QERROR-O05 ; QUESTIONABLE SYNTAX MAIN3G: TRAP RFORCE ; CALL REGISTER FORCE MAIN3H: BISB @R4,@R6 ; SET THE REGISTER FIELD ; WITHIN THE COMAND WORD BR MAIN3W ; COMPLETE COMAND PROCESSING ; .PAGE MAINC1: ; UNARY MNEMONICS PROCESSED TRAP SYNTAX ; CALL THE SYNTAX ANALYZER AD; 0 D OR.W X:DEIN HK OCBLL NAMIER T'SUTTPOU; Y ARIN BHE TOR FSSREDD A ; MPJUE IVCTFEEFE THS INTARE; 0 D OR.W: DRPAJM 0 RDWO . N:CISR UMKSECCHT PUUT ORYNABI; E THG INCTRUSTON COR FEDUS; 0 D OR.W M:SUOC B0 D OR.W: RMTEAV S N VE.E L BOYM SLEABATOCEL RUSIOEVPR; F OIDT ECCS .INTAINMAO ;T NETIOUBRSUN IOSSREXP EIND SE;U 0E YT.B C:SERG P E NCUEEQ SLFF--LCR; LFF,,LCR E YT.B  BEQ MAIN3V ; ONE FIELD ENCOUNTERED MAIN3L: INCB QERROR-O05 ; QUESTIONABLE SYNTAX MOV #37,@R5 ; INDIRECT IMMEDIATE MODE MOVB #2,@R3 ; MAXIMIZE SIZE TO 2 WORDS BR MAIN3U ; CLEAR THE NEXT OBJECT WORD ; COMPLETE CONSTRUCTING ; THE COMAND WORD ; .PAGE MAIN3Q: ; JSR MNEMONIC PROCESSING CLR R0 TRAP E E AGSSME; / E AGP / IISC.A E NCUEEQ SFFR- C ; F ,FLFR, C TEBY . NTOU CTEBYL UACT A ; 2 2 RDWO . O)(LDEMO ) HIS(TUTA S ; 00 D OR.W T UNCOE YT BAX M ; 2 2 RDWO .: UFGBPA ERFFBUE AGSSMEE AG P ; N VE.E 4= ODPCLS 2= ODYCTT ONTICALORED CELASPDIE IVITDD ACTSE.C; 16 =4 4.LD RN IOATOCEL RVETIDIADT ECCS .; 5 1= .3D4RL ONTICALORED CELASPDIT ECCS . XPE2 BGT MAIN3R INCB QERROR-O05 MAIN3R: TRAP RFORCE SWAB @R4 ; SWAP RESULT'S BYTES ASR @R4 ASR @R4 BIS @R4,@R6 CMPB #',,@CURBYTE-O05 BNE MAIN3L TRAP ITEM BLE MAINC1 INCB ITEMIN-O05 BR MAINC1 ; .PAGE MAINC2: ; BINARY MNEMONICS PROCESSED TRAP SYNTAX ; CALL SYNTAX ANALYZER BGT MAIN3V ; TWO FIELDS EN; 4 1= .2D4RL ONTICALORET ECCS .; 2 1= .1D4RL 11 =3 3.LD R0 1 = .2D3RL 7 = .1D3RL 6 = .6D2RL 5 = .5D2RL 4 = .4D2RL ECSPR DEOA L; 3 = 3 2.LD RK IN LINN VEGIS A; 2 = 2 2.LD RS NDMAOM CLD R; 1 = 1 2.LD RO TEREF RSEHE T; 4 = MDDCRL 3 = IRTDTX 001= SKTMDL 1 =NELINGLO 40 3 = S7LASC 00 3 = S6LASC 40 2 = S5LASC 00 2 = S4LASC 40 1 = S3LASC 00 1 = S2LASC 40 = 1 ASCL S0 COUNTERED ; NOT TWO FIELDS FOUND INCB QERROR-O05 ; QUESTIONABLE SYNTAX MOV #2727,@R5 ; CONSTRUCT DEFAULT COMMAND ; USE TWO IMMEDIATE MODES MOVB #4,@R3 ; SIZE = 4 CLR TBBUF+4-O05 ; TBBUF(4,5) = 0 MAIN3U: CLR TBBUF+2-O05 ; TBBUF(2,3) = 0 MAIN3V: BIS @R5,@R6 ; PLACE THE ADDRESSING BITS ; INTO THE COMAND WORD MAIN3W: INCB @R3 ; SIZE = SIZE+2 INCB @= 0 ASCL SB TAL TAONIZOR HIISC A; 1 1 = AB TD EEEFIN LIISC A; 2 01 = F LN URET-RGEIARRCAI CIAS; 15 0 = CR EDFERMFOI CIAS; 14 0 = FF E.IL FUSUOIGNTCO; E ATOCLL ATOE IM TLDUI;B ATM OO RGHOUENT NO; 0 64=1R9ER ;) RSROER" "F (ESOD CGESAES MORRR;E ANTR .UTNP IONR ROER; E ICEV DORN RA.TT PUUT;O ONR ROERE ICEV DORD EO;7 20 2 =R8ER NGSIIS MLEFIT PUIN;6 20 2 =R7ER ESIL FUTNP INYMAO TO;5 20 2 =R6ER ESIL FUTTPOUY AN MOO;T 0422= 5 RRR3 MAIN3X: MOV (R6)+,TBBUF-O05 ; TBBUF(0) = COMMAND WORD JMP EXIT-O05 ; EXIT THE MNEMONIC PROCESSOR EOFFLG: ; END-OF-FILE OR END-OF-MEDIA FLAGS PROCESSED ;IS THIS THE EOD OF THE 1ST ;DATA SET OF TWO DATA SETS? TSTB SICNT-O05 ;NON 0 INDICATES TWO DATA SETS BEQ EOF1 ;ONLY ONE DATA SET CMP #SILB2,SILB-O05 BEQ EOF1 ;ALREADY ON 2ND DEC SITAPE-O05 ;LAST TAPE BNE EOF4 ;NO MOV SILB-O05,-(R6) ;CLOSE EMT CLS TSTB PAPASS-O05 BNE ES UEAL VCHITSWY AN MOO;T UEAL VCHITSWL GALEIL; S HETCWI SNYMAO TO; H TCWI SALEGLL;I 0322= 4 RR EE ITWR .OND EOT PUUT;O 0222= 3 RR ES ALONTIDION CEDSTNEY AN MOO;T 0122= 2 RR ES T'ECCS .NYMAO TO;0 20 2 =R1ER ;) RSROER" "S (ESOD CGESAES MORRR;E NDMAOM CSEEAEL;R 7= LS RD ANMMCOE ETEL;D 21 =T DL NDMAOM CSELO;C 17 =S CL NDMAOM CENOP;6 1= PN OD ANMMCOE IZALTINI I ; 6 = MDNC ID ANMMCOE ITWR; 2 = D CMWR NDMAOM CITWA; 1 = D CMWT  EOF2 CMPB MAXPASS-O05,PASS-O05 ;NOT PARAMETER FILE. BNE EOF3 ;PARAMETER FILE EOF2: MOV SILB-O05,-(R6) ;RELEASE DATA SET. EMT RLS EOF3: MOV #SILB2,SILB-O05 ;SWITCH TO 2ND MOV #SIFB2,SIFB-O05 ;DATA SET. MOV SITAP2-O05,SITAPE-O05 ;TAPE COUNT CMPB #1,PASS-O05 ;OPEN ALREADY BNE EOF5 ;DONE FOR 1ST PASS JMP SETP4-O05 EOF1: DEC SITAPE-O05 ;LAST TAPE BNE EOF4 ;NO ;SIMULATE .END INC ERRSUM-O05 ;DECLARE AS ERROR MOV #1,JMPADR-O05 ;FOR TRANNDMAOM CADRE; 4 = MDDC R7 22 = G FLST R6 = D ENBJ O0 00 2 = IRMDSY 2 = NDDEGS 0014 = D CMRN T0 45 = G FLSC C0 41 = G FLSC A1 = D CMSD G1 36 = Z FSTH SE OD MUTTPOUY ARIN B ; 3 = DEMOBO DEMOT PUINE RCOU S ; 0 = DEMOSI 2476 = 2 BS A1 4027 1 = S1AB 0 = 2 EL R0 = 1 EL R. ESSSPAT ENQUSEUB SIN; LEABILVA AISE OR CEEFR; OFL AL 1.S AS PNGRIDU; CKTA SOFE IZ SSFER ADDR. CLRB BINOUT-O05 ;ON BINARY. TRAP EBBUF JMP SIMEND-O05 EOF4: MOV SILB-O05,-(R6) ;CLOSE EMT CLS EOF5: JMP SETP0-O05 .IFNDF NOSEG ENDO05: SIZO05=ENDO05-BEGO05 ; .ENDC .EOT .ENDC .IFNDF NOSEG .CSECT ;BEGINNING OF OVERLAY AREA ;THE SIZE OF THE OVERLAY AREA IS DETERMINED ;BY THE SYMBOL "OVRSIZ" ; BEGOVR: ;THE BEGINNING REGISTERS OF EACH ;OVERLAY CONTAIN JMP'S TO THE ;ENTRY PUMIMAX M; . 00 2 = IZKSST SKMAE IL-FOFD-EN; 0 10 = F EO DEMOT PUUT OEDSTLI; 0 = E ODOM LT SEFF O'SUSATSTT PUUT OEDSTLI; 5 -1 = T TAOS LG LA FALOBGL; 0 10 = G FLLB GG LA FLEABATOCEL R ; 40 = G FLEL R3 T BI, AGFLE IVCTREDIY BLEMSS A ; 10 = R DISM A3 T BI, AGFLD NEFIDE; 0 1 = LGFFDE E.YT BCTSE.CN IG,LA FEDINEF DLEIPLTMU; 7 37 = G LADF M. EDINEFED ROLMBSYT ENANRMPE; 2 !OINTS OF THE OVERLAY ENTRY1=. ENTRY2=.+4 ENTRY3=.+10 ENTRY4=.+14 ENTRY5=.+20 ENTRY6=.+24 ENTRY7=.+30 ENTRY8=.+34 ENTRY9=.+40 .=.+OVRSIZ ;OVERLAY DEVICE LINK BLOCK ; .WORD 0 ;ERROR RETURN ADDRESS OVRLB: .WORD 0 ;LINK POINTER (DDB) .RAD50 /OVR/ ;LOGICAL DATA SET NAME .BYTE 1 ;DEVICE SPECIFIED .BYTE 0 ;UNIT NUMBER .RAD50 /DF/ ;DEVICE NAME ; ;OVERLAY DEVICE FILE BLOCK ; .WORD 0 ;ERROR RETURN ADDRESS .BYTE 13 ;HOW OPEN CODE (OPENC) .B = EFED R1 T BI, AGFLL BELA; 2 = G FLAB L0 T BI, AGFLR TEISEG R ; 1 = LGGFRE 0IT BG,LA FLEABENE YT B ; 1 = LGTFBY NSIOITINEF DIT BAGFLE BLTAL BOYM S ; #A @TOD CEOR F AIF0 N-NO; 0E YT.B S:ABRC FR TOCADIINR BEUM NALIMEC D ; 0 TEBY .: UMCNDE 0 TEBY . 0 TEBY . 0 TEBY . 0 TEBY . 0 TEBY . RYDAUNBON VE EBET US MUFBB T ; 0 TEBY . ERFFBUY ARIN BRYRAPOEM T ; : UFBB TN %YTE 0 ;ERROR RETURN CODE OVRFB: .RAD50 /PAL/ ;FILENAME AND EXTENSION .RAD50 /11R/ ;IN RADIX 50 .RAD50 /OVR/ ;NOTATION USERID: .WORD 0 ;USER ID CODE .BYTE 233 ;PROTECT CODE .BYTE 0 ; ;OVERLAY DEVICE INPUT TRAN BLOCK ; OVRTBI: .WORD 0 ;DEVICE BLOCK NUMBER .WORD BEGOVR ;MEMORY START ADDRESS .WORD OVRWRD ;WORD COUNT OVRIER: .WORD 4 ;FUNCTION (READ) .WORD 0 ;NUMBER OF WORDS NOT TRAN'D VE.E ; 0E YT.B 0E YT.B T:TCIP C0 RDWO. / IN/0 D5RA. K OCBLE IL;F D//0 D5RA. T PUIND ANMMCO;/ OM/C 50AD.R B:IF CD EA ROR FENOP;4 RDWO. 0 RDWO. ; 0E YT.B 0E YT.B T:TCLP S0 RDWO. / YM/S 50AD.R M/NA/0 D5RA. K OCBLE IL FUTTPOUL TBM SY;/ IL/F 50AD.R B:LF SE ITWRR FON PE;O 2D OR.W 0D OR.W ;0 TEBY. 0 TEBY.: CTPTLO 0 RDWO. / ST/L 50AD.R M/NA/0 D5RA. K OCBLE IL FUTTPOUG INSTLI;/ IL/F 50AD.R B:OF LE ITWRR FON PE;O 2D OR.W 0) ;SUBROUTINE TO DIVIDE THE TOP WORD OF ;THE STACK BY THE NEXT WORD. EXITS ;WITH THE QUOTIENT ON TOP OF THE ;STACK. THE QUOTIENT IS INCREMENTED BY ;ONE IF THERE IS A REMAINDER. ; CALLING SEQUENCE: ; MOV DIVISOR,-(R6) ; MOV DIVIDEND,-(R6) ; JSR R7,DIVIDE ; MOV (R6)+,QUOTIENT ;R0 IS DESTROYED DIVIDE: MOV #1,R0 ;QUOTIENT AT LEAST 1 DIVID1: SUB 4(R6),2(R6) ;SUBTRACT DIVISOR FROM DIVIDEND BLE DIVID2 ;DONE? INC R0 ;NO. BR DIVID1 DIVID2: MD OR.W ;0 TEBY. 0 TEBY.: CTPTBO 0D OR.W N/BI/0 D5RA. / AM/N 50AD.R CKLO BLEFIT OUN BI;/ IL/F 50AD.R B:OF BE ITWRR FON PE;O 2D OR.W 0D OR.W ;0 TEBY. 0 TEBY.: O2PRSI 0D OR.W L/PA/0 D5RA. / AM/N 50AD.R L/FI/0 D5RA.: B2IF SD EA ROR FENOP; 4D OR.W 0D OR.W ;0 TEBY. 0 TEBY.: O1PRSI 0D OR.W L/PA/0 D5RA. / AM/N 50AD.R CKLO BLEFIN IRC;S L/FI/0 D5RA.: B1IF SD EA ROR FENOP;4 RDWO. 0 RDWO. S CKLO BLEFI;N VE.E ;; -OV R0,4(R6) ;QUOTIENT MOV (R6)+,@R6 ;R7 RTS R7 ; ;THE FOLLOWING TABLE IN THE RESIDENT ;ASSEMBLER CONTAINS A ONE WORD ENTRY ;FOR EACH OF THE N OVERLAYS. THE ;1ST WORD OF THE TABLE CONTAINS N*2. ;AS NEW OVERLAYS ARE CREATED, ENTRIES ;MUST BE ADDED TO THE END OF THE TABLE. ;WHEN THE ASSEMBLER GETS CONTROL AT ;"STARTA", IT WILL PLACE THE STARTING ;PHYSICAL BLOCK NUMBER FOR EACH OVERLAY ;IN THE RESPECTIVE EN0D OR.W E:ORST TR TOCADIING INYP TERSTGIRE;0 RDWO.: YPGTRE RDWOE LUVAS OT DOFR DD;A 0D OR.W C:RPSE U0 RDWO.: SSPAST PCN IOCTSEE UTOLBS;A 0D OR.W C:SPAB P//L 50AD.R 6D OR.W D/SL/0 D5RA. P L =LTAUEF;D 0D OR.W B:LL SK OCBLK IN LNGTIIS LBL TYM;S 0D OR.W ;; N.AI.M; T ULFADER OLEIT.TM RO;F 0D OR.W B:LEIT TE ULOD MCTJEOBF OLEIT;T 0D OR.W A:LEIT TN IOCTRUSTON CERMBNUL MACIDE;0 RDWO.: 10SEBA 0D OR.W S:ASOP BN IOCTRUSTON CERMBNUL TAOC;0 RDWO.: 08SEBA1TRY. ;THE SIGN BIT (BIT 15) OF EACH ENTRY WILL ;INDICATE WHETHER OR NOT THE ASSOCIATED ;OVERLAY IS IN CORE: ; 1=RESIDENT ; 0=NOT RESIDENT ; RUNTAB: .WORD RUNEND-RUNTAB ;N*2 .WORD 0 ;OVERLAY #1 .WORD 0 ;OVERLAY #2 .WORD 0 ;OVERLAY #3 .WORD 0 ;OVERLAY #4 RUNEND: .WORD 0 ;OVERLAY #5 ; ;SUBROUTINE TO TRANSFER A REQUESTED ; OVERLAY FROM DISK TO THE OVERLAY AREA. ;CALLING SEQUENCE: ; TRAP CONTRL ; .WORD N ;WHERE N IS ; ;THE OVERLA P//P 50AD.R 6D OR.W D/BO/0 D5RA. P HS= T ULFADE;0 RDWO.: LBBO CKLO BNKLIT PUUT ORYNABI;0 RDWO. ; ;) ALCT(OR TEUNCOE AG PVETILAMUCU;0 RDWO.: NTGCPA S)NELI. 52 (GEPAE ON; O ULOD M),ALCT(OR TEUNCOE IN;L 0 RDWO.: NGGIPA UEAL VVETITATIANQUS M'TE;I 0D OR.WY:ITNTUA Q0 RDWO.: SSPALO ORATULUMCC AONSIESPREX;0 RDWO.: LTSURE P//L 50AD.R 6D OR.W D/LO/0 D5RA. P L =LTAUEF;D 0D OR.W B:OL LK OCBLK IN LUTTPOUG INSTLI;0 RDWO. ; ;. ESAP TOFR BEUM;N 5Y NUMBER ; ;IF THE REQUESTED OVERLAY IS ALREADY RESIDENT, ;CONTROL IS RETURNED IMMEDIATELY TO THE CALLER. ; ;IF THE REQUESTED OVERLAY IS NOT RESIDENT: ; 1. IT IS TRAN'D IN (.TRAN, .WAIT) ; 2. A CHECK IS MADE FOR ERRORS ; DURING TRANSFER ; 3. RUNTAB IS UPDATED TO REFLECT ; WHICH OVERLAY IS NOW RESIDENT ; 4. RETURN TO CALLER ; ;CONTRL: SUBR46: TRAP SAVREG ;SAVE REGISTERS 1 THRU 5 MOV @12(R6),R1 ;OVERLAY NUMBER TO R1 ASL R1 ;ADJUST TO WORD OFFSET MOV #RUN0D OR.W 2:APIT ST SEA AT DUTNP I;0 RDWO.: FBSI NTREUR CTOS ERNTOI P;0 RDWO.: LBSI F//D 50AD.R 4D OR.W 2/SI/0 D5RA. K OCBLK IN L;0 RDWO.: B2IL ST PUINM TEYS SNDCOSE; 0D OR.W ;; CKTA SVEBO ASSREDD AST;1 0D OR.W T:BOTK ST USF OOP;T 0D OR.W P:TOSR UE BLTAT ECCS .OFP TO;0 RDWO.: OPNTCO E.ONE IL FESAP TOFR BEUM;N 0D OR.W 1:APIT SE IL FERETAMAR PESATICND I-0ON N;0 RDWO.: SSPAPA LEFIT ENRRCUS PETAF OERMBNU;0 RDWO.: PETASI F//D 50AD.R 7D OR.W 1/9TAB,R2 ;BASE OF TABLE ADD R2,R1 ;ADDRESS OF REQUESTED ENTRY MOV @R1,OVRTBI ;SET UP TRAN BLOCK BLT CONTR1 ;OVERLAY ALREADY IN MOV #OVRTBI,-(R6) ;.TRAN IN MOV #OVRLB,-(R6) ;THE OVERLAY EMT 10 ;UPDATE RUNTAB MOV (R2)+,R3 ;N*2 CONTR3: SUB #2,R3 BLT CONTR4 ;MORE ENTRIES? BIC #100000,(R2)+ ;YES. CLEAR IN FLAG BR CONTR3 CONTR4: BIS #100000,@R1 ;SET NEW IN FLAG TRAP SETREG ;RESTORE REGISTERS MOV #OVRLB,-(R6) ;WAIT FOR EMT WTCMD ;CSI/0 D5RA. 0 RDWO.: B1IL SK OCBLK IN LUTNP IEMSTSY;0 RDWO. ; ;/ KB/0 D5RA. 1 RDWO. D/CO/0 D5RA. K OCBLK IN;L 0D OR.W B:OL CT PUUT ONDMAOM;C 0D OR.W ;; MENAL CASIHY;P B//K 50AD.R EDFICIPE SCEVIDE/ # ITUN; 1 RDWO. E AM NALICOGL; D/CI/0 D5RA. ) ITIN .ON (ERNTOI PDBD K OCBLK IN;L 0D OR.W B:IL CR FEUF BNO, RNTURER ROER UTNP INDMAOM;C 0D OR.W ENEV. ; KSOCBLK INL; ;; S.LEFIT PUIN2 S TECADIIN0 N NO; 0E YT=OMPLETION ;CHECK FOR ERROR ON TRANSFER BIT #140000,OVRIER BEQ CONTR2 ;ERROR ON TRANSFER MOV OVRIER,-(R6) ;PUSH STATUS BYTE BIC #377,@R6 ;INFO INTO LOW SWAB @R6 ;INFO BYTE AND MOV #ERR8,-(R6) ;CLEAR THE REST. JMP ERROUT CONTR1: TRAP SETREG ;RESTORE REGS. 1 THRU 5 CONTR2: ADD #2,@R6 ;INCREMENT PAST ARGUMENT RTS R7 ;RETURN TO CALLER .ENDC ERRTAB: ; ASSEMBLY ERROR TABLE .B T:CNSI 0 TEBY . R:ROER R:ERAX M0 E YT.B R:ROER UD CEENEREF ROLMBSYD NEFIDEUN; U ' TEBY . 0 TEBY .: ORRRTE ORRR EONTICAUNTR; T ' TEBY . 0 TEBY .: ORRRNE ORRR EERMBNU; N ' TEBY . 0 TEBY .: ORRRIE ORRR EERCTRAHA CALEGLL I ; 'I E YT.B 0 E YT.B R:ROER BR ROERG INNDOU B ; 'B E YT.B 0 E YT.B R:ROER ML BELAD NEFIDEY PLTIUL M ; 'M E YT.B 0 E YT.B R:ROER DD CEENEREF RONTINIFI ; SINGLE WORD ENTRIES : ; ASCII CHARACTER (LOW BYTE) ; ERROR INDICATOR (HIGH BYTE) .BYTE 'L ; INPUT LINE BUFFER OVERFLOW LERROR: .BYTE 0 .BYTE 'P ; PHASE ERROR PERROR: .BYTE 0 .BYTE 'Q ; QUESTIONABLE SYNTAX QERROR: .BYTE 0 .BYTE 'A ; ADDRESSING ERROR AERROR: .BYTE 0 .BYTE 'R ; REGISTER ERROR RERROR: .BYTE 0 .BYTE 'D ; DOUBLE DE