; UPDATE 16 21 APR 1972 CLEAN UP, 'NONE' IN UNDEF SYM LISTING, ; EDIT OF SYMBOL LISTING ; UPDATE 15 10 APR 1972 ADD BFUPADD BFUP, GET RID OF INIT, AND ; CLEAN UP ; UPDATE 14 23 MAR 1972 ERR #, SYMBOL LISTING, RLD BYTE COUNT ; UPDATE 13 22 MAR 1972 PACJING, FORMATS, SYMBOL LIST, BIANRY ; UPDATE 12 21 MAR 1972 RLDOUT,PHEAD,SPACE COM,.END,BINDEC ; UPDATE 11 19 MAR 1972 FIX BINDEC, PHEAD, AND B;***********************************************************************RAS ; R A S M *RAS ; *RAS ; PROGRAM IDENTIFICATION: ROS ASSEMBLER *RAS ; *RAS ; PROGRAM USAGE: THIS IS THE DEC-PAL11R ASSEMBLER WITH MODIFIED *RAS ; I/O TO PERMIT IS US  B MP C  ORATINRMTET ENRRCUE THE AV S ; R13,@R  B OV M  LLCA. PREXE THR FOE AREPPR;   0 R LR C: 01NTSY ERCTRAHA CAB TORK ANBL;     - ON NXTNEE THT ATEBYUR CONTISIPO; M ERXTNE , PC SR J  IT BRDFEDER MDT SE, ES Y ; R5,@RDFEDE # SBBI E OP N ; 01NTSY  E BN ? @ANR TONAMIER TIS;  F DECC#T3,@R  B MP C  ROZEA K ACST;  ) R6-(  R CL K ACSTE THN OEDAV SIS;     . PREXS ESDRADD RETEUNCOEN;     S R1,#TCCIMM  ; IS TERMINATOR AN # ?  BNE  SYNT11  ; NO  JSR PC, NEXTERM ; CALL FOR THE NEXT CHARACTER  BR  SYNT0A SYNT11: JSR PC, EXPE1 ; CALL EXPRESSION EVALUATION    ; ( ) , ; CR RETURN REQUESTED  BLE  SYNT05  ; EXPRESSION IS VOID  MOV  RESULT,@R6  ; STACK EXPRESSION'S RESULT  JSR PC, FLDEND ; DETERMINE FIELD TERMINATION ?  BLT  SYNT02  ; NOT THE FIELDS END    ; FIELD TERMINATOR IDENTIFIED AND FWRIT ; UPDATE 10 16 MAR 1972 FIX SPACE COMPRESS, ERROUT, BFWRIT, & BFREAD ; UPDATE 9 15 MAR 1972 CLEAN UP AND CONTROL WRD IN CREADER ; UPDATE 8 14 MAR 1972 ADD WORD TO I/O LISTS, ETC. ; UPDATE 7 13 MAR 1972 CLEAN UP ; UPDATE 6 7 MAR 1972 FIX UP STACK AND STKSIZ ; UPDATE 5 7 MAR 1972 ADDITION OF PST(WITH /45) TO RASM ; UPDATE 4 24 FEB 1972 FROM V03 TO V04 INCLUDES V2A UPDATE ; TO FIX UP '.LINES' AND CHANGE T E WITH ROS. OTHER THAN A *RAS ; FIXED SIZE FOR THE SYMBOL TABLE IT IS THE SAME. *RAS ; A COMPLET DISCUSSION OF ITS METHODS, INPUT, AND *RAS ; OUTPUT IS CONTAINED IN THE CURRENT DEC PAL11R *RAS ; USER'S GUIDE. IT SHOULD BE NOTED THAT RASM *RAS ; DOES NOT USE OVERLAYS, PERMITS ONLY A SINGLE *RAS ; SOURCE INPUT ELEMENT, AND PLACES ITS OUTPUT *RAS ; AGFLD ANS NTOU CLL AARLE C ;  R2  R CL S IT BERSTGIREX DEINL RANEGE;     3 ** 2 =IT BNTMEREEC-DTOAU;     4 ** 2 =IT BNTMERENC-ITOAU;     5 ** 2 =IT BENSER TORAPE O ;     *62*= T BIN EE SSSREDD A ;     *72*= T BIN EE SESESTHENAR P ;     H)IG(HE YT BERNTOU CESESTHENAR P ;     HE TOR FESLUVAE TH= 2 R ;     GEAN RONTIRATE ILDIE F ;  : 00NTSY RMTEAV SOFS ESDRAD= 3 R ; R3M,ERVTSA # OV M      ; NO PARENTHESES FOUND  JSR PC, RCHECK ; CALL CHECK FOR REGISTER EXPRESSION  BGE  SYPTCH  JMP  DIRMDR     ; REGISTER, THEREFORE     ; DIRECT MEMORY ADDRESSING SYPTCH:  BISB  RESULT,R2  ; EXPRESSION WAS TYPED AS     ; REGISTER, THEREFORE  JMP  REGMDR  ; REGISTER MODE ADDRESSING SYNT02:   ; PARENTHESES ENCOUNTERED  JSR PC, RCHECK ; CALL CHECK FOR REGISTER EXPRESSION  BLT  SYNT04  HE LINE ; NUMBER TO 8 CHARACTERS. ; UPDATE 3 6 FEB 1972 FROM V02 TO V03 ; UPDATE 1 3 FEB 1972 FROM V01 TO V02 ;***********************************************************************RAS ; R A S M *RAS ; *RAS ; PROGRAM IDENTIFICATION: ROS ASSEMBLER *RAS ;  IN A BFUP ELEMENT NAMED BY THE LAST .TITLE CARD *RAS ; PROCESSED. *RAS ; RASM IS A TASK WHICH OPERATES UNDER ROS/LEVE 2. *RAS ; TO USE RASM, 'AS' IS INPUT TO THE OPERATOR *RAS ; COMMUNICATION PROCESSOR. THIS WILL CAUSE RASM *RAS ; TO BE PLACED IN THE ROS QUEUE. WHEN IT IS *RAS ; DISPATCHED, IT WILL READ PTRISCUB SUFBB THE T =R4;  4 ,R#2  V MO 0 = R TEUNCOD ELFI;  T CNLD F RBCL 0 = D ANOM C ;  R5 @ LR C  SSREDD ANDMACO= 5 R ; R5D,ANOM#C  V MO S ERSTGIREE AV SLLCA; EGVRSA , PC SR J: 07BRSU X:TAYN SS IT BNTMEREEC-DNTMERENC I ;  30 0  = ECCDIN IT BNTMEREEC-DTOAU;   0 01  = ECODUT AT BIT ENEMCRINO-UT A ;  20 0  =C INTOAU IT BENSER TORAPE O ;  40 0  = ENSEOP IT BENSES ESDRAD;   0 10  =  N EE; EXPRESSION WAS NOT TYPED     ; AS REGISTER, THEREFORE     ; INDEX MODE ADDRESSING  INCB  RERROR  ; EXPRESSION WAS TYPED AS     ; REGISTER, THEREFORE A     ; PARENTHESIS MUST BE MISSING  JSR PC, PARSEP ; CALL PARENTHESES SEPARATOR  BGE  SYNT03  ; LEFT PARENTHESIS FOUND OR     ; A FIELD TERMINATOR  INCB  QERROR  ; RIGHT PARENTHESIS FOUND  BR  SYNT08  ; AVOID ACQUIRING THE      *RAS ; PROGRAM USAGE: THIS IS THE DEC-PAL11R ASSEMBLER WITH MODIFIED *RAS ; I/O TO PERMIT IS USE WITH ROS. OTHER THAN A *RAS ; FIXED SIZE FOR THE SYMBOL TABLE IT IS THE SAME. *RAS ; A COMPLET DISCUSSION OF ITS METHODS, INPUT, AND *RAS ; OUTPUT IS CONTAINED IN THE CURRENT DEC PAL11R *RAS ; USER'S GUIDE. IT SHOULD BE NOTED THAT RASM *RAS ; THE SOURCE PROGRAM *RAS ; FROM THE CARD READER, STORE THE IMAGES IN THE *RAS ; BFUP FILE AS ELEMENT 'RASRC', PROCESS THE *RAS ; SOURCE STATEMENTS USING 2 PASSES, PRODUCE A *RAS ; OBJECT MODULE IN THE BFUP FILM, DELETE 'RASRC', *RAS ; AND EXIT. IT MUST BE REQUEUED TO ASSEMBLE A *RAS ; SECOND PROGRAM. DURING PASS 2, A LISTING WILL *RAS ; AS IT BENSES SEHENTREPA;   0 20  =  N EEPS IT BNGSIESDRADD EREF D ;  10  =  D EREF DS NTMEGNSIAST ECIR DAXNTSY;    Y OREM MCTREDI;   7 6  = R7ND IE ATDIMEIM;   7 2  = R7NCAI ESOD MEDNTMELEMP IREWAFTSO;    X DEIN;   0 6  =E ODDMIN NTMEREEC-DTOAU;   0 4  =E ODCMDE NTMERENC-ITOAU;   0 2  =E ODCMIN ERSTGIRE;   0 0  =E ODGMRE ESOD MNGSIESDRADR TEPUOM C ;    !ITQUI , NDOU FRE A ;  ; REGISTER EXPRESSION SYNT03:   ; ADDRESS SEEN SUPPORTING INDEX MODE  CLR  @R6   ; STACK A ZERO IF REG. ADDR. SYNT04: CLR  R1   ; IGNORE THE SAVED TERMINATOR  BISB  #ASEEN,R2  ; SET ADDRESS SEEN FLAG  JSR PC, FLDEND ; DETERMINE FIELD TERMINATION  BLT  SYNT05  JMP  INDMDR  ; FIELD TERMINATED, SO     ; INDEX MODE ADDRESSING SYNT05:    ; PARENTHETICAL EXPRESSION PROCESSED  JSR PC, PARSEP ; CALL PARENTHE DOES NOT USE OVERLAYS, PERMITS ONLY A SINGLE *RAS ; SOURCE INPUT ELEMENT, AND PLACES ITS OUTPUT *RAS ; IN A BFUP ELEMENT NAMED BY THE LAST .TITLE CARD *RAS ; PROCESSED. *RAS ; RASM IS A TASK WHICH OPERATES UNDER ROS/LEVE 2. *RAS ; TO USE RASM, 'AS' IS INPUT TO THE OPERATOR *RAS ; COMMUNICATION PROCESSOR BE PRODUCED ON THE LINE PRINTER FOLLOWED BY *RAS ; A SYMBOL TABLE LISTING. *RAS ; *RAS ; PROGRAMER: 53 *RAS ; VERSION: 1 *RAS ; DATE: 15-MAR-72 *RAS ; CATALOGUE NUMBER:     DSELFIO TWN HA TREMOF I ;     NDOU FDSELFIO TW 0,>  ;    D UNFO LDIE FNE O0,=  ;    D UNFOS LDIE FO N, 0 <  ;    TSULES REDOD CONTIDION C  ;    NDMAOM CHE TTOD TECALOALS TEBY UTTPOU;    E ON N UTNP I ;    D.REEAPP AAS HLDIE FTSENMMCOE THT HA T ;   MESUASY MAE INUTROG INLLCAE TH, NGNIURET R ;   ONUP S.LDIE FCTJEOBD TEATRMFOR MDO TDSELFI ;   G INSSREDD AEDOD CCEURSOS TELANSRA TSES 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 PARENTHESIS FOUND  INCB  QERROR  ; RIGHT PARENTHESIS FOUND SYNT07:   ; CALL AUTO INC.;DEC. DETERMINATOR  ; OPEN SUBROUTINE AUTO INCREMENT;DECREMENT DETERMINATOR   ; THIS SUBROUTINE VERIFIES THAT THE SAVED   . THIS WILL CAUSE RASM *RAS ; TO BE PLACED IN THE ROS QUEUE. WHEN IT IS *RAS ; DISPATCHED, IT WILL READ THE SOURCE PROGRAM *RAS ; FROM THE CARD READER, STORE THE IMAGES IN THE *RAS ; BFUP FILE AS ELEMENT 'RASRC', PROCESS THE *RAS ; SOURCE STATEMENTS USING 2 PASSES, PRODUCE A *RAS ; OBJECT MODULE IN THE BFUP FILM, DELETE 'RASRC', *RAS ;  *RAS ; *RAS ;***********************************************************************RAS .TITLE RASM RAS ; RAS ; RASM INITIALIZATION PROGRAM - SET UP OF TASK TABLES. RAS ; THE PST MUST BE PLACED BETWEEN THE STACK AND RASM. RAS RASMPR = NPNETIOUBRSUS HI T ;   ISYSALANX TAYN SNETIOUBRSU;  AL P GEPA . . 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  R7NSBI EQB E BLTAD REDEORN IERGHHIL BOYM;S  10,#R0 ITB: R6NSBI R4NSBI BR  E.BLTAD REDEORN IEROW LOLMBSY; 3 ,RR4 OVM 6 SR; 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 EFFECTIVE    ;  TERMINATOR CODE    ; OUTPUT CONDITION CODED RESULTS    ;  ZERO, TERMINATOR NOT + OR -    ;  OTHERWISE, THE APPROPRIATE    ;  FLAGS HAVE BEEN SET AUTOID: MOV  AND EXIT. IT MUST BE REQUEUED TO ASSEMBLE A *RAS ; SECOND PROGRAM. DURING PASS 2, A LISTING WILL *RAS ; BE PRODUCED ON THE LINE PRINTER FOLLOWED BY *RAS ; A SYMBOL TABLE LISTING. *RAS ; *RAS ; PROGRAMER: 53 *RAS ; VERSION: 1 RIOR ; RASM'S PRIORITY RAS RASMNO = 20 ; RASM'S TASK NUMBER RAS .REF HEADER,TPRTY,TASKS,TSTAT; TASK TABLES RAS .DEF RASMIT ; INITIALIZATION ENTRY POINT FOR IPL. RAS RASMIT: MOV #RASMNO,R0 ; GET RASM'S TASK # RAS CMP R0,#TASMAX ; SEE IT TASK'S # TO LARGE FOR SYSTEM RAS BLE RASM10 ; OK INBO BL 2:SRIN B3 SRINBR B Y TRENF OSSREDD;A EXNDHI4,RV MO  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 OLEIPLTMUE URSS;A  R07,0000#1 ICB: R1NSBI NGTIES T  #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  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  ! *RAS ; DATE: 15-MAR-72 *RAS ; CATALOGUE NUMBER: *RAS ; *RAS ;***********************************************************************RAS .TITLE RASM RAS ; COMPUTER  PDP-11 ; CONFIGURATION ROS " RAS HALT ; BAD. RAS RASM10: CMP R0,TASKS ; SEE IF TASKS MUST BE UPDATED. RAS BLE RASM20 ; NO RAS MOV R0,TASKS ; YES-DO IT. RAS RASM20: MOVB #RASMPR,TPRTY(R0); SET RASM'S DEFAULT PRIORITY. RAS CLRB TSTAT(R0) ; CLEAR TASK'S STATUS. RAS ASL R0 UEINNTCO; 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 ; . EDERLT ARE AR4D AN3 R2,;R  IDCTCSD AN ; S AGFL TY,ITNTUA QTO0 3) ; ) SSREDD AERGHHI (EXNDHIO TEDERNT$ ; 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  RSLMOD  BEQ  AUTOX  MOVB  RSLMOD,RSL2MD  CMPB  #-15,SAVTERM  BEQ  AUTOY  INCB  AERROR AUTOY:  CLRB  RSLMOD AUTOX:    ; RETURN  JSR PC, FLDEND ; DETERMINE FIELD TERMINATION  BGE  SYNT0B %RAS ;   REQUIREMENTS ; EAE FOR '*' AND '/' RAS ; RAS ;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 ; STANDARD PROCESSOR WIDE REGISTER ASSIGNMENTS R0  =  %0 R1  =  %& ; SHIFT TASK # TO WORD INDEX. RAS MOV #RASM,HEADER(R0); SET HEADER ADDRESS IN TABLE RAS MOV #1,RASM ; MAKE SURE IT'S A 1 (QUEUABLE). RAS RTS PC ; RETURN TO IPL. RAS .PAGE RAS STACK = STKSIZ ; AREA FOR RASM STACK (BELOW SYM TAB). RAS SYMSIZ = 1000. ; # ENTRIES IN SYM TABLE (4WORDS/E EBE ; D ULHO SOLMBSYE ERWHS ESDRAD 2) ; 0 S DECON IOITNDCOD AN0 R) 1;  H:TCMAO NIF ; ;  E)YT(BD TISC CTOD IONTIEC SOLTRON C) 5;  E)YT(BS AGFL TTOS AGFLL BOYM S) 4;  TYTIANQUO TOLMBSYF OUEAL V) 3;  EXNDHIO TRYNT EOFS ESDRADR HEIG H) 2;  E)IVITOS(P0 N NOS DECON IOITNDCOD AN0 R) 1;  D:UNFOH TCMAF IUTTPOU; ;  R3N ILEAB TOLMBSY ; E THW LOBES ESDRADE RE FST 1HE T) 3;  R2N ILEAB TOLMBSYE TH ; F OSSREDD AR)HEIG(HG INRTTA SHE T) 2;  R1( ; THE FIELD HAS TERMINATED     ; ACTUAL MODE YET UNKNOWN  JSR PC, NEXTERM ; CALL FOR THE NEXT TERMINATOR  CLR  R0   ; R0 = 0  JSR PC, EXPE1 ; CALL EXPRESSION EVALUATION  BGT  SYNT08  ; EXPRESSION WAS NON-VOID  INCB  QERROR  ; EXPRESSION WAS VOID SYNT08: JSR PC, PARSEP ; CALL PARENTHESES SEPARATOR     ; THE FIELD HAS TERMINATED     ; ACTUAL MODE YET UNKNOWN  BLT  SYNT09  ; RIGHT  BG)1 R2  =  %2 R3  =  %3 R4  =  %4 R5  =  %5 R6  =  %6 SP = %6 ; PAL R7  =  %7 PC = %7 ; PAL ; PAL .PAGE PAL ; THE PST MUST BE PLACED BETWEEN THE STACK AND RASM. RAS RASMPR = PRIBKG *NTRY) RAS ; RAS ; RASM TASK HEADER RAS RASM: .WORD 1 ; THREAD WORD RAS .WORD START ; ENTRY POINT RAS .WORD 0 ; INITIALIZATION ENTRY POINT RAS .WORD 0 ; RUN UNTIL COMPLETION RAS .BYTE STACK N IOLMBSY) 40O ULOD(MD OR W  ;  2HE TOFS ESDRAD) EROW(LE AS BHE T) 1T PUIN; . LEAB;T  OLMBSYY TRENR PED OR W 4EDERRD;O  ANR VE OCHARSEY ARIN B AMSORRFPE; H RCEA SLEAB TOLMBSYY ARIN BNETIOUBRSU ; AL P GEPA . 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 Y:LAVR O. EDAYRLVE OBEO TRYNT EOLMBSYF I,T  SYNT18  ; LEFT  JSR PC, RFORCE  BISB  R0,R2  BR  SYNT15 SYNT18: INCB  QERROR SYNT09: JSR PC, RFORCE ; CALL FORCE REGISTER EXPRESSION  BISB  R0,R2  ; SAVE INDEX REGISTER  JSR PC, 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  JSR PC, EXPE2 ; CALL EXPRESSION EVA- ; RASM'S PRIORITY LEVEL = BACKGROUND RAS RASMNO = $RASNO ; RASM'S TASK NUMBER RAS BFILE = $BCHID ; RASM(S BATCH FILE ID RAS BTYPE = $BCHTP ; TYPE OF BATCH FILE RAS STACK = 200. ; AREA FOR RASM STACK (BELOW SYM TAB). RAS SYMSIZ = $RASIZ ; # ENTRIES IN UST (4 WORDS/ENTRY) RAS ; . ; STACK SIZE RAS .BYTE RASMPR ; PRIORITY - LOWEST RAS .WORD 0 ; TIMER VALUE RAS .IFNZ ARG ; RAS .WORD 0 ; TRANSMITED ARGUMENT RAS .ENDC ; RAS .BYTE 0 ; STATUS RYNTE: AYRLOV ;S ERSTGIREE ORSTRE; G REET,SPC SRJ: R2TEEN R3TEEN ISBH  S.RDWO4 S RDWAWNDO; 0 ,RR2 MPC E BLTAL BOYM SSTJUAD;+ 1)(R+,0)(R OVM: R3TEEN PCERUS4,RB SU  D.VEMOE BTOS ;I PCERUS,HR4 UBS T IIFY TRENC PERUS; 3 ERNTEO BL  TOS ERNTOI PNTMEREEC;D PCERUS,HR2 MPC . EDEDNET ENTMUSDJ ANO; 2 ERNTEQ BE  R.FENSRA TTOS RDWOF OO.;N  R20,RP CM  R2X,DEINHV MO  R.PT. EG REEFRT 1SD IEIFOD MVESA;P TOSR,UR1 OVM: R1TEEN S RA F.UFSTR ROERO DGO; 0LUATION    ; , ; CR RETURN REQUESTED  BLE  SYNT07  ; CHECK FOR AUTO MODES  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 SYNT0B:   ; DETERMINE ADDRESSING MODE FOR     ; FIELDS CONTAINING ANY     ; PARENTHESES     ; SEPARATE MAX. CASE FIRST 1 RAS .DEF RASHED ; GLOBL FOR INITIALIZATION RAS ; RASM TASK HEADER RAS RASHED: .WORD 1 ; THREAD WORD RAS .WORD START ; ENTRY POINT RAS .WORD 0 ; INITIALIZATION ENTRY POINT RAS .WORD 0 ; RUN UNTIL COMPLETION RAS .BYTE STACK ;2RAS .BYTE RASMNO ; TASK NUMBER RAS .WORD -1 ; FLAG FOR STACK OVERFLOW RAS .=.+STACK+STACK-2 ; RESERVE STACK SPACE RAS .=.+SYMSIZ+SYMSIZ+SYMSIZ+SYMSIZ ; RESERVE USER SYMBOL TABLE RAS ;THE PST IS BOUNDED BY THE INTERNAL GLOBAL ;SYMBOLS SYMTBB AND SYMTBT, WHERE THE ;FORMER IS THE HIGHEST ADDRESS OF THE ;PST AND THE LATTER IS THE ADDRESS OF ;THE 1ST WORD BELOW UTROER P JM S RA . DECOR ROER; ) SP-(9,RR#E V MO S RA . LLFUS ILEAB TOLMBSY- UEAL VNO; ) SP-( R CL 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 . RSTEISEG RVESA; G REAV,SPC SRJ: 06BRSU R:TEEN D.REUIEQ RNTMESTJUADE BLTAF IRYNTE: ERNT;E S.4  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  MOV  5 STACK SIZE RAS .BYTE RASMPR ; PRIORITY - LOWEST RAS .WORD 0 ; TIMER VALUE RAS .IFNZ ARG ; RAS .WORD 0 ; TRANSMITED ARGUMENT RAS .ENDC ; RAS .BYTE 0 ; STATUS RAS6THE PST. ;THE PST IS ORDERED (TO PERMIT BINARY ;SEARCHING) WITH THE SMALLEST SYMBOL (IN ;MOD40 PACKED NOTATION) HIGH IN CORE AND ;THE LARGEST SYMBOL (IN MOD40 PACKED NOTATION) ;LOW IN CORE. ;MOD40 CHARACTER REPRESENTATION ;A THRU Z : 1 THRU 26 RESPECTIVELY ; $ : 27 ; . : 28 ;0 THRU 9 : 30 THRU 39 RESPECTIVELY ;MOD40 PACKED NOTATION ;1ST PACKED TRIAD = CHAR1*40*40+CHAR2*40+CHAR3 ;2ND PACKED TRIAD = CHAR4*40*40+CHAR5*40+CHAR6 ; ;EACH ENTRY IS 4 WORDS WITHIETRENH 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;  LDOU WLEAB TOLMBSYD DEANXP EIF UTTPOU; S AGFL T  ;  LTSURE ; 3 M+SYMPF #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 ;*** DIRECT MEMORY ADDRESSING *** ;IF THE FRCABS SWITCH IS NON-0 ;AS A RESULT OFE .BYTE RASMNO ; TASK NUMBER RAS .WORD 0 ; STACK POINTER .WORD -1 ; FLAG FOR STACK OVERFLOW RAS .=.+STACK+STACK-2 ; RESERVE STACK SPACE RAS .=.+SYMSIZ+SYMSIZ+SYMSIZ+SYMSIZ ; RESERVE USER SYMBOL TABLE RAS .=.+SYMSIZ+SYMSIZ+SYMSIZ+SYMSIZ ; RAS ; G THE LOWEST WORD ;CONTAINING THE 1ST PACKED TRIAD, THE NEXT ;LOWEST CONTAINING THE 2ND PACKED TRIAD, THE ;NEXT LOWEST CONTAINING THE VALUE (WHICH FOR ;ASSEMBLER DIRECTIVES IS AN EXTERNAL GLOBAL ;TO BE LINKED TO THE APPROPRIATE PROCESSOR IN ;PAL-11R) AND THE HIGHEST WORD CONTAINING ;THE FLAGS IN THE LOW BYTE AND THE CONTROL ;SECTION ID (WHICH IS ALWAYS 0 FOR PST ;ENTRIES) IN THE HIGH BYTE. ; ;FLAGS:  ASMDIR=10 ;BIT 3 BEING ON IN THE FLAG   ;BYTE INDICATES THAT THI 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 ; AL P GEPA . . NETIOU RNGLIAL CITEX; 7 RS RT  RSTEISEG RET;S  EGTRSEC,PR JS  EGPRPOM RO FRNTURED ARSCDI; + 6)(R STT: 45BRSU G:REOP P. NETIOU RNGLIAL CITEXD AN;  RSTE`wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwDDDDDDDADD+B Cp@Q|@4dzp#$Dwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww ; CATALOG NUMBER 8 R1 IS USED AND NOT RESTORED ; HEADER = . MOV #TRNBUF+DATA,R0 ;GET DATA ADDRESS IN TRANSMIT  ,HP2<*,: wE@  X24"x(^;,` X ׭Y CI RAS ;THE PST IS BOUNDED BY THE INTERNAL GLOBAL ;SYMBOLS SYMTBB AND SYMTBT, WHERE THE ;FORMER IS THE HIGHEST ADDRESS OF THE ;PST AND THE LATTER IS THE ADDRESS OF ;THE 1ST WORD BELOW THE PST. ;THE PST IS ORDERED (TO PERMIT BINARY ;SEARCHING) WITH THE SMALLEST SYMBOL (IN ;MOD40 PACKED NOTATION) HIGH IN CORE AND ;THE LARGEST SYMBOL (IN MOD40 PACKED NOTATION) ;LOW IN CORE. ;MOD40 CHARACTER REPRESENTATION ;A THRU Z : 1 THRU 26 RESPECTIVELY ; $ : 27 ; . : 28 J THE CSI SWITCH ;/37 HAVING BEEN ENCOUNTERED ;FORCE @#A FOR A ; DIRMDR: 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 ;INTERNAL RELOCATION (CODE 1) BR IMPR2 IMMEXT:  MOV  #RLD2.5,RLDIR KS PST   ;ENTRY IS AN ASSEMBLER DIRECTIVE.  BYTFLG=1 ;BIT 0 BEING ON IN THE FLAG   ;BYTE INDICATES THAT THIS PST   ;ENTRY IS BYTE ENABLED. THIS   ;ALLOWS ONE ENTRY TO SATISIFY   ;SEARCHES FOR WORD AND BYTE   ;INSTRUCTIONS. E.G. THE ENTRY   ;'MOV', BECAUSE BIT 0 IS ON,   ;WILL SATISFY SEARCHES FOR   ;'MOV' OR 'MOVB' ; ;INSTRUCTION CLASS: ;BITS 4-7 OF THE FLAG BYTE DESIGNATE THE ;TYPE OF INSTRUCTION TO PROVIDE DISPATCH ;INFORMATION TO PAL-11R. SCLAS0=ISEG 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 ERSTGIREE ID W -ORSSCERO PLETILAVOA S IR0;   S ERSTGIRET SEE INUTROUB S ;  RNTURE;  7 R TS R  R5K ACST;  ) R62(,1R5  V MO S ESDRADN URET RHE TCKTA SM ;0 THRU 9 : 30 THRU 39 RESPECTIVELY ;MOD40 PACKED NOTATION ;1ST PACKED TRIAD = CHAR1*40*40+CHAR2*40+CHAR3 ;2ND PACKED TRIAD = CHAR4*40*40+CHAR5*40+CHAR6 ; ;EACH ENTRY IS 4 WORDS WITH THE LOWEST WORD ;CONTAINING THE 1ST PACKED TRIAD, THE NEXT ;LOWEST CONTAINING THE 2ND PACKED TRIAD, THE ;NEXT LOWEST CONTAINING THE VALUE (WHICH FOR ;ASSEMBLER DIRECTIVES IS AN EXTERNAL GLOBAL ;TO BE LINKED TO THE APPROPRIATE PROCESSOR IN ;PAL-11R) AND THE HIGHEST WORD CONTAINING ;THE FN ;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  JSR PC, INSERT  BR  INDXDR   ; *** DIRECT MEMORY ADDRESSING *** DIRMD1: BISB  #INDR7,@R5  TST  (R4)+  MOVB  R4,VARLTH CMPB #-1,RSLMOD  BEQ  DIRECB ;.GLOBL EXPRESSION BPL DIRECC  ;ANOTHER .CSECT  SUB O0  ;OPERATE GROUP SCLAS1=20  ;UNARY GROUP SCLAS2=40  ;BINARY GROUP SCLAS3=60  ;RTS SCLAS4=100  ;BRANCH GROUP SCLAS5=120  ;JSR SCLAS6=140  ;TRAP GROUP .PAGE ; ASSEMBLER DIRECTIVES ; ; .EVEN SYMTBT: .WORD 0  ;1ST REGISTER BELOW PST. ; .WORD 131247  ; .WORD .WORD 070440 .WORD WORD .WORD ASMDIR ; .WORD 131051  ; .TITLE .WORD 077345 .WORD TITLE .WORD ASMDIR ; .WORD 130725  ;.REF .WORD 022600 .WORD GLOBL .WORD ASM ; ) R6-(),R60( 1 OV M  R1K ACST;  ) R6-(1, R OV M  R2K ACST;  ) R6-(2, R OV M  R3K ACST;  ) R6-(3, R OV M  R4K ACST;  ) R6-(4, R OV M: 14BRSU G:REAV SR TEISEG RDEWI- R SOESOCPRE ILATOL V AIS0 R ;   RSTEISEG RVESAE INUTROUB S ;  L PA E AG.P RNTURED ANS ERSTGIRET SEL AL C ; G REOP P C,PR JS G INCKPAE ATERITRE, PENO;  0 40OD M LE B  ?6 M+SYMP T >R5S I ; QLAGS IN THE LOW BYTE AND THE CONTROL ;SECTION ID (WHICH IS ALWAYS 0 FOR PST ;ENTRIES) IN THE HIGH BYTE. ; ;FLAGS:  ASMDIR=10 ;BIT 3 BEING ON IN THE FLAG   ;BYTE INDICATES THAT THIS PST   ;ENTRY IS AN ASSEMBLER DIRECTIVE.  BYTFLG=1 ;BIT 0 BEING ON IN THE FLAG   ;BYTE INDICATES THAT THIS PST   ;ENTRY IS BYTE ENABLED. THIS   ;ALLOWS ONE ENTRY TO SATISIFY   ;SEARCHES FOR WORD AND BYTE   ;INSTRUCTIONS. E.G. THE ENTRY   ;'MOV', BECAUSE BIT 0 IS ON,R @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 JSR PC,RELREF  MOV  #4,R4 JSR PC,RLDFIL  BR  IMPR1 DIRECC: MOVB #RLD4.4,RLDIR ;.CSECT ADDITIVE DISPLACED RELOCATISDIR ; .WORD 130721  ; .RAD50 .WORD 017226 .WORD RAD50 .WORD ASMDIR ; .WORD 130601  ;.PAGE .WORD 026210 .WORD PAGE .WORD ASMDIR ; .WORD 130474  ;.NLIST .WORD 035514 .WORD NLIST .WORD ASMDIR ; .RAD50 /.LI/ ; .LIST .RAD50 /ST / .WORD LIST .WORD ASMDIR ; .WORD 130351  ;.LINES .WORD 054133 .WORD LINES .WORD ASMDIR ; .WORD 130351  ; .LIMIT 6 M+SYMP#T5, R MP C  +3R5= 5 R ; R53, # DD A  R4T ENEMCRIN;     D IATRT ANLTSURE= ) R4M(SYMP T ; )+R4,(R3  V MO 2:40OD MR TEACARCHT EX NSSCERO P ; 01D4MO  R B  LTSUREL IARTPAM+SU= M SU;  3 ,R)+R6 ( DD A  R3  L AS S IT B 2FTLEM SUT IFSH;   3 R SL A  LTSUREL IARTPAE AV S ; 6)(R,-R3  V MO 3 R SL A  R3  L AS S IT B 3FTLEM SUT IFSH;   3 R SL A  EDETPLOM CADRI TE,OP N ; 02D4MO  E BG U   ;WILL SATISFY SEARCHES FOR   ;'MOV' OR 'MOVB' ; ;INSTRUCTION CLASS: ;BITS 4-7 OF THE FLAG BYTE DESIGNATE THE ;TYPE OF INSTRUCTION TO PROVIDE DISPATCH ;INFORMATION TO PAL-11R. SCLAS0=0  ;OPERATE GROUP SCLAS1=20  ;UNARY GROUP SCLAS2=40  ;BINARY GROUP SCLAS3=60  ;RTS SCLAS4=100  ;BRANCH GROUP SCLAS5=120  ;JSR SCLAS6=140  ;TRAP GROUP .PAGE ; ASSEMBLER DIRECTIVES ; ; .EVEN SYMTBT: .WORD 0  ;1ST REGISTER BELOW PST. ; .WORD 131247  ; .WORD .WOVON BR DIRECD DIRECB:  MOVB  #RLD2.6,RLDIR ;.GLOBL EXPRESSION DIRECD: JSR PC,RELREF  MOV  @R6,R3  MOV  #10,R4  MOV  R2,TSTORE  MOV  GLBSY1,R1  ;.GLOBL OR .CSECT NAME MOV GLBSY2,R2 JSR PC,RLDFIL MOV TSTORE,R2 IMPR1:  INC  RLDFLG DIRECX:  MOVB  VARLTH,R4 DIREC0: MOV  @R6,TBBUF-2(R4)  ADD  #2,SIZE  BR  RETURN   ; *** REGISTER MODE *** REGMDR:; BISB  #REGMODE,@R5  BR  BUILD   ; *** AUTO-INCREMENT MODE *** IW.WORD 051274 .WORD LIMIT .WORD ASMDIR ; .WORD 130156  ; .IFZ .WORD 121200 .WORD IFZ .WORD ASMDIR ; .WORD 130156  ; .IFNZ .WORD 055620 .WORD IFNZ .WORD ASMDIR ; .WORD 130156  ; .IFNDF .WORD 054046 .WORD IFNDF .WORD ASMDIR ; .WORD 130156  ; .IFLE .WORD 045710 .WORD IFLE .WORD ASMDIR ; .WORD 130156  ; .IFL .WORD 045400 .WORD IFL .WORD ASMDIR ; .WORD 130156  ; .IFGE .WORD 026210 .WORD IFGE  ?5 R 0, IMPLIES ,    ;  = 0, IMPLIES ; CR    ;  < 0, IMPLIES OTHER FLDEND: SUBR18: g ;TRAP .WORD 062000 .WORD 104400 .WORD SCLAS6 ; .IFNZ $1145 .RAD50 /SXT/ ; SXT FOR /45 .WORD 0 .WORD 006700 .WORD SCLAS1 .ENDC ; .WORD 075131  ;SWAB .WORD 006200 .WORD 000300 .WORD SCLAS1 ; .WORD 075012  ;SUB .WORD 0 .WORD 160000 .WORD SCLAS2 ; .IFNZ $1145 .RAD50 /SPL/ ; SPL FOR /45 MVETIECFF;E     HE+TD2IATR2=ADRI;T     'BD TELEDEE THE ACPLRE;3 M+SYMP,TR5@D AD H:CHER SO ;N  HFRCSE EQB ? EDBLNA EMDTCBYS ;I  R5@T TS  ST PIND UNFOH TCMA; D UNFOT NOH TCMA; G CHERSQ BE  CHARSEY ARIN;B  CHSRIN,BPC SRJ E BLTAW LOBES ESDRADT 1S;3 ,ROPRTPE OVM E AS BLEAB;T R2T,BOERPV MO 3:CHER SE BLTAL BOYM SNTNEMAER PCHARSE; S ESDRAD) (0YMPSTM= 1 R ;  R1  C IN : 04D4MO HBRCSE , PC SR J  04D4MO  Q BE  ?0 = ) (0YMPSTMS I ;  R1 @ i.WORD 076710 .WORD BYTE .WORD ASMDIR ; .WORD 127473  ; .ASECT .WORD 017714 .WORD ASECT .WORD ASMDIR ; .WORD 127473  ; .ASCII .WORD 012061 .WORD ASCII .WORD ASMDIR .PAGE ; MACHINE INSTRUCTIONS ; ; .IFNZ $1145 .RAD50 /XOR/ ; XOR FOR /45 .WORD 0 .WORD 074000 .WORD SCLAS5 .ENDC ; .WORD 107761  ;WAIT .WORD 076400 .WORD 000001j 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: DEC  @R6   ; RETURN ZERO FLDEN1: TST  (R6)+  ; RETURN POSITIVE     ; SET THE CONDITION CODES  RTS k.WORD 0 .WORD 000230 .WORD SCLAS3 ; .RAD50 /SOB/ ; SOB FOR /45 .WORD 0 .WORD 077000 .WORD 0 ; NOT YET DEFINED .ENDC ; .WORD 073642  ;SEZ .WORD 0 .WORD 000264 .WORD SCLAS0 ; .WORD 073636  ;SEV .WORD 0 .WORD 000262 .WORD SCLAS0 ; .WORD 073626  ;SEN .WORD 0 .WORD 000270 .WORD SCLAS0 ; .TBTS : 40OD MS ESDRADY OREM MDD O  ;    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  ;    0 = ) (0YMPSTMF I  ;    SSREDD A0)M(SYMP T =R1 T PUIN;    6 ARCH+ 0 *4R5HA C +*20**4R4HA C =  ;   3 ARCH+ 0 *4R2HA C +*20**4R1HA C =EDCKPA;   R KEAC P40OD MNETIOUBRSUN PE O ; : H1RCSE NTTANSm .WORD SCLAS0 ; .WORD 100014  ;TST .WORD 0 .WORD 005700 .WORD SCLAS1+BYTFLG ; .WORD 077721  ;TRAP .WORD 062000 .WORD 104400 .WORD SCLAS6 ; .IFNZ $1145 .RAD50 /SXT/ ; SXT FOR /45 .WORD 0 .WORD 006700 .WORD SCLAS1 .ENDC ; .WORD 075131  ;SWAB .WORD 006200 .WORD 000300 .WORD SCLAS1 ; .WORD 075012  ;SUB .WORD 0 .WORD n R7  ; RETURN .PAGE PAL  ; 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 CONDITION CODED RESULTS    ;  ) NEGATIVE    ;  OTHERS ZERO  oWORD 073613  ;SEC .WORD 0 .WORD 000261 .WORD SCLAS0 ; .WORD 073473  ;SCC .WORD 0 .WORD 000277 .WORD SCLAS0 ; .WORD 073423  ;SBC .WORD 0 .WORD 005600 .WORD SCLAS1+BYTFLG ; .IFNZ $1145 .RAD50 /RTT/ ; RTT FOR /45 .WORD 0 .WORD 000006 .WORD SCLAS0 .ENDC ; .WORD 071663  ;RTS .WORD 0 .WORD 000200 .WORD SCLAS3 ; .WORD 071651 CO' 'B0 D4MO;     E IVCTFEEFE TH= D CMYT B ; 5 @R),R0N(COYT B OV M  *2R0= 0 R ;  R0  L AS . ARCHT AS LHE TUT ONKLA B ; ) R01(M-SYMP T RBCL D ANMMCOE YT B ALYALTIENOT PS,YE;    D LEABIS DNDMAOM CTEBY, PENO;  1 CHER S NE B  ?B' ' AR.HA CSTLAS I ; #2),R01(M-SYMP T PBCM D LEABIS DNDMAOM CTEBY, PENO;  1 CHER S LE B  ?S.ARCH3 N HA TREMOE ERTHE AR;  3 ,#R0  B MP C  EDBLSADID ANMMCOE YT BE,OP N ; H1RCSE  q160000 .WORD SCLAS2 ; .IFNZ $1145 .RAD50 /SPL/ ; SPL FOR /45 .WORD 0 .WORD 000230 .WORD SCLAS3 ; .RAD50 /SOB/ ; SOB FOR /45 .WORD 0 .WORD 077000 .WORD 0 ; NOT YET DEFINED .ENDC ; .WORD 073642  ;SEZ .WORD 0 .WORD 000264 .WORD SCLAS0 ; .WORD 073636  ;SEV .WORr  ;  ( 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  DECB  R2   ; DECREMENT PCOUNT BYTE  BR  PARSE1 PARSE0: INC  @R6   ; INCREMENTs ;RTI .WORD 0 .WORD 000002 .WORD SCLAS0 ; .WORD 071352  ;ROR .WORD 0 .WORD 006000 .WORD SCLAS1+BYTFLG ; .WORD 071344  ;ROL .WORD 0 .WORD 006100 .WORD SCLAS1+BYTFLG ; .WORD 070533  ;RESET .WORD 021140 .WORD 000005 .WORD SCLAS0 ; .WORD 054750  ;NOP .WORD 0 .WORD 000240 .WORD SCLAS0 ; .WORD 054117  ;NEG .WORD 0 .WORD 005400 .WORD SCLAS1+BYTFLG ; .IFNZ $1145 .RAD50 /MUL/E BG ? . RSHA C 6ANTHS ES LREHE TRE A ; #60, R PBCM T UNCO. ARCHS L'BOYM S =R0;  0 ,RARCHNT C VBMO 0:CHER SN IOATOGRRTEIND ANMMCOE YT B ;    ST UOFG INCHARSEE ATTINI I ; HERCSE  R B  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;  uD 0 .WORD 000262 .WORD SCLAS0 ; .WORD 073626  ;SEN .WORD 0 .WORD 000270 .WORD SCLAS0 ; .WORD 073613  ;SEC .WORD 0 .WORD 000261 .WORD SCLAS0 ; .WORD 073473  ;SCC .WORD 0 .WORD 000277 .WORD SCLAS0 ; .WORD 073423  ;SBC .WORD 0 .WORD 005600 .WORD SCLAS1+BYTFLG ; .IFNZ $1145 .RAD50 /RTT/ ; RTT FOR /45 .WORD 0 .WORD 000006 .WORD v STACKED ZERO  INCB  R2   ; INCREMENT PCOUNT BYTE PARSE1: SWAB  R2   ; RESTORE R2 FORMAT  BISB  #PSEEN,R2  ; SET PSEEN BIT PARSE2: TST  (R6)+  ; SET THE CONDITION CODES  RTS  R7  ; RETURN .PAGE PAL  ; SUBROUTINE REGISTER CHECK   ; THIS SUBROUTINE DETERMINES, FINALLY, IF   ; A VALUE IS TO BE TYPED AS REGISTER.   ; IF NOT, THE SUBROUTINE RETURNS   w ; MUL FOR /45 .WORD 0 .WORD 070000 .WORD SCLAS5 ; .RAD50 /MTP/ ; MTPI FOR /45 .RAD50 /I / .WORD 006600 .WORD SCLAS1 ; .RAD50 /MTP/ ; MTPD FOR /45 .RAD50 /D / .WORD 106600 .WORD SCLAS1 .ENDC ; .WORD 051656  ;MOV .WORD 0 .WORD 010000 R5D,CMYT#B  V MO S ESDRAD) (0YMPSTM= 1 R ; R1M,SYMP#T  V MO S ERSTGIREE AV SLLCA; EGVRSA , PC SR J: 04BRSU H:RCEA S0 = D TISCC  ;  0 =GSLATF   ; 0 = Y ITNTUAQ  ;  EDERNT EBED ULHO S    ; L BOYM SREWHY TREN    ;  OFS ESDRADT ESGHHI= X DEINH  ;  D:UNFOT NOF I  ;  EXND IPETYN IOCTRUNT I =SSLAIC   ; T PSN INDOU FIF   ; N IOCTSEL RONTCO= 2 SYLBG  ;  'SOLMBSYF OMENA0 D4MO= 1 SYLBG  ;  LEABATOCEL REDINEF DND AST UIND UNy SCLAS0 .ENDC ; .WORD 071663  ;RTS .WORD 0 .WORD 000200 .WORD SCLAS3 ; .WORD 071651  ;RTI .WORD 0 .WORD 000002 .WORD SCLAS0 ; .WORD 071352  ;ROR .WORD 0 .WORD 006000 .WORD SCLAS1+BYTFLG ; .WORD 071344  ;ROL .WORD 0 .WORD 006100 .WORD SCLAS1+BYTFLG ; .WORD 070533  ;RESET .WORD 021140 .WORD 000005 .WORD SCLAS0 ; .WORD 054750  ;NOP .WORD 0 .WORD 000240 .WORD SCLAS0 ; .WORD 054117z; IMMEDIATELY. IF THE VALUE IS TYPED AS   ; REGISTER, THEN INSURE THE VALUE IS   ; PROPERLY BOUNDED AND IF NOT, FORCE   ; REGISTER ZERO.    ; INPUT R0 CONTAINS REGISTER    ;  TYPING INFORMATION    ; OUTPUT CONDITION CODED RESULTS    ;  NOT NEGATIVE IMPLIES    ;  R0 CONTAINS A VALID    ;  REGISTER NAME    ;  NEGATIVE IMPLIES    ;   1) NOT TYPED AS REGISTER    ;  { .WORD SCLAS2+BYTFLG ; .IFNZ $1145 .RAD50 /MFP/ ; MFPI FOR /45 .RAD50 /I / .WORD 006500 .WORD SCLAS1 ; .RAD50 /MFP/ ; MFPD FOR /45 .RAD50 /D / .WORD 106500 .WORD SCLAS1 ; .RAD50 /MAR/ ; MARK FOR /45 .RAD50 /K / .WORD 006400 .WORD FOF I  ;  BLLO.GL NAERXT E =Y2BSGL   ; F OMENA0 D4MO= 1 SYLBG  ;  BLLO.GD NEFIDEUND ANT USN INDOU FIF   ; E YT BIDN IOCTSEL RONTCO= D TISCC  ;  TEBYG LA F =GSLATF   ; E LUVA= Y ITNTUAQ  ;  RYNT EOFS ESDRADT ESGHHI= X DEINH  ;  D:UNFOF I   ;  NDOU FOT N0 0<R  ;  ST UIND UNFO =0R0   ; T PSN INDOU F0 0>R  ;  ESOD CONTIDION CHE TTSSE0 R: UTTPOU  ; E BLTAL BOYM SP.EMT: UTNPI ;  ; . CHSRIN BNGZILITI UEDCHARSE; S ILYONT USE }  ;NEG .WORD 0 .WORD 005400 .WORD SCLAS1+BYTFLG ; .IFNZ $1145 .RAD50 /MUL/ ; MUL FOR /45 .WORD 0 .WORD 070000 .WORD SCLAS5 ; .RAD50 /MTP/ ; MTPI FOR /45 .RAD50 /I / .WORD 006600 .WORD SCLAS1 ; .RAD50 /MTP/ ; MTPD FOR /45 .RAD50 /D / .WORD ~ 2) INVALID REGISTER NAME    ;   WAS FOUND, RESULT    ;   SET TO ZERO, R0'S    ;   LOW BYTE EQUALS ZERO RCHECK: SUBR2A: CLR  R0  BISB  REGTYPE,R0  ; IS RESULT TYPED REGISTERS ?  BEQ  RCHE01  ; NOPE, RETURN NEGATIVE RFORCE: SUBR2B: MOV  RESULT,R0  ; R0 = RESULT  CMP  R0,#7  ; IS R0 > 7 ?  BGT  RCHE00  ; YES, FORCE REGISTER ZERO  TSTB  RSLMOD  BNE  RCHE00  TST  R0   ; SCLAS1 ; MUST TRICK ASSEMBLER INTO PROPER CODE .ENDC ; .WORD 040612  ;JSR .WORD 0 .WORD 004000 .WORD SCLAS5 ; .WORD 040230  ;JMP .WORD 0 .WORD 000100 .WORD SCLAS1 ; .WORD 035254  ;IOT .WORD 0 .WORD 000004 .WORD SCLAS0 ; .WORD 035163  ;INC .WORD 0 .WORD 005200 .WORD SCLAS1+BYTFLG ; .WORD 031064  ;HALT .WORD 076400 .WORD 0 .WORD SCLAS0 ; .WORD 020534  ;EMT .WORD 0 .WORD 104000 .TH, OLMBSYD KEAC PDYEALR;A  ANR FOH RCEA STOY TREND 2NE THN ;O  Y.ARSSCENEF IST UHE TENTHD ANT PS; E THG INCHARSET RSFI, LYALRMNOS ESOCPR, OLMBSYE YP TB' ' AOT NIF; AL P ; 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  T.USE THY ARSSCENEF I 106600 .WORD SCLAS1 .ENDC ; .WORD 051656  ;MOV .WORD 0 .WORD 010000 .WORD SCLAS2+BYTFLG ; .IFNZ $1145 .RAD50 /MFP/ ; MFPI FOR /45 .RAD50 /I / .WORD 006500 .WORD SCLAS1 ; .RAD50 /MFP/ ; MFPD FOR /45 .RAD50 /D / .WORD 106500 .WORD SCLAS1 ; .RAD50 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 PAL  ; SUBROUTINE NEXT TERMINATOR   ; THIS SUBROUTINE SIMPLY MOVEWORD SCLAS6 ; .IFNZ $1145 .RAD50 /DIV/ ; DIV FOR /45 .WORD 0 .WORD 071000 .WORD SCLAS5 .ENDC ; .WORD 014713  ;DEC .WORD 0 .WORD 005300 .WORD SCLAS1+BYTFLG ; .WORD 012445  ;COM .WORD 0 .WORD 005100 .WORD SCLAS1+BYTFLG ; .WORD 012412  ;CNZ .WORD 0 .WORD 000254 .WORD SCLAS0 ; .WORD 012330  ;CMP .WORD 0 .WORD 020000 .WORD ND 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 INUTROUB;S  EDOSCLE TH /MAR/ ; MARK FOR /45 .RAD50 /K / .WORD 006400 .WORD SCLAS1 ; MUST TRICK ASSEMBLER INTO PROPER CODE .ENDC ; .WORD 040612  ;JSR .WORD 0 .WORD 004000 .WORD SCLAS5 ; .WORD 040230  ;JMP .WORD 0 .WORD 000100 .WORD SCLAS1 ; .WORD 035254  ;IOT .WORD 0 .WORD 000004 .WORD SCLAS0 ; .WORD 035163  ;INC .WORD 0 .WORD 005200 .WORD SCLAS1+BYTFLG ; .WORD 03106S 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: JSR PC, CBTABS ; CALL CHECK FOR BLANKS AND TABS  JSR  R7,TERMIN ; CALL TERMINATOR IDENTIFICATION  RTS  R7  ; RETURN .PAGE PAL  ; SUBRSCLAS2+BYTFLG ; .WORD 012272  ;CLZ .WORD 0 .WORD 000244 .WORD SCLAS0 ; .WORD 012266  ;CLV .WORD 0 .WORD 000242 .WORD SCLAS0 ; .WORD 012262  ;CLR .WORD 0 .WORD 005000 .WORD SCLAS1+BYTFLG ; .WORD 012256  ;CLN .WORD 0 .WORD 000250 .WORD SCLAS0 ; .WORD 012243  ;CLC .WORD 0 .WORD 000241 .WORD SCLAS0 ; .WORD 011473  ;CCC .WORD 0 .WORD 000257 .WORD SCLAS0 ; .WORD 010003  ;BVS .WORD 0 .Y 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 ARE ALSBOYM;S  EW NASE OR4  ;HALT .WORD 076400 .WORD 0 .WORD SCLAS0 ; .WORD 020534  ;EMT .WORD 0 .WORD 104000 .WORD SCLAS6 ; .IFNZ $1145 .RAD50 /DIV/ ; DIV FOR /45 .WORD 0 .WORD 071000 .WORD SCLAS5 .ENDC ; .WORD 014713  ;DEC .WORD 0 .WORD 005300 .WORD SCLAS1+BYTFLG ; .WORD 012445  ;COM .WORD 0 .WORD 005100 .WORD SCLAS1+BYTFLG ; .WORD 012412  OUTINE 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 ENCOUNTERED POSSESSING   ;  MORE SIGNIFICANCE THEN THE REQUESTED   ;  TERMINATOR, THEN THE SUBROUTINE WILL RETURWORD 102400 .WORD SCLAS4 ; .WORD 007763  ;BVC .WORD 0 .WORD 102000 .WORD SCLAS4 ; .WORD 007520  ;BR .WORD 0 .WORD 000400 .WORD SCLAS4 ; .IFNZ $1145 .RAD50 /BPT/ ; BPT FOR /45 .WORD 0 .WORD 000003 .WORD SCLAS0 .ENDC ; .WORD 007414  ;BPL .WORD 0 .WORD 100000 .WORD SCLAS4 ; .WORD 007265  ;BNE .WORD 0 .WORD 001000 .WORD CINS RDWAWNDOS NDPAEX; D ANP TOSR UND AOPNTCOS ERNTOI PHE TBY; D DEUNBOS IT)US (LEAB TOLMBSYR SE UHE;T  D.XEFIS IND AOPRTPED ANT BOER;P  RSTEINPOE THY BEDNDOU BIS) ST(PE BLTA; L BOYM SNTNEMAER PHE T. NSIOCTSED REDEOR; O TWO NT IEDIDIV DISE BLTAL BOYM SHE;T  CHARSEE BLTAL BOYM SNETIOUBRSU ; AL P GEPA . R TEACARCHT EX NCKHE C ; 0 BT C BR 1 G+LATF B =AGFLBT;  G LATF B CBIN : T1CB RNTURE;  7 R |;CNZ .WORD 0 .WORD 000254 .WORD SCLAS0 ; .WORD 012330  ;CMP .WORD 0 .WORD 020000 .WORD SCLAS2+BYTFLG ; .WORD 012272  ;CLZ .WORD 0 .WORD 000244 .WORD SCLAS0 ; .WORD 012266  ;CLV .WORD 0 .WORD 000242 .WORD SCLAS0 ; .WORD 012262  ;CLR .WORD 0 .WORD 005000 .WORD SCLAS1+BYTFLG ; .WORD 012256  ;CLN .WORD 0 .WORD 000250 .WORD SCLAS0 ; .WORD 012243  ;CLC .WORD 0 .WORD 000241 .WORD SCLAS0 N.   ; 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 EXPRESSION    ; -1 = .GLOBL EXPRESSION    ; -2 = RELOCATABLE EXPRESSION,    ; NOT CURRENT .CSE SCLAS4 ; .WORD 007221  ;BMI .WORD 0 .WORD 100400 .WORD SCLAS4 ; .WORD 007164  ;BLT .WORD 0 .WORD 002400 .WORD SCLAS4 ; .WORD 007157  ;BLOS .WORD 073300 .WORD 101400 .WORD SCLAS4 ; .WORD 007157  ;BLO .WORD 0 .WORD 103400 .WORD SCLAS4 ; .WORD 007145  ;BLE .WORD 0 .WORD 003400 .WORD SCLAS4 ; .WORD 006774  ;BIT .WORD 0 .WORD 030000 .WORD SCLAS2+BYTFLG ; .WORD 006773  ;BIS .WORD 0 .TS R  AGFLBTP UM BS,YE;  T1CB  Q BE ? B TAA R TEACARCHS I ; TEBYUR@C1,01 # PBCM G LATF BMPBU, ES Y ; 1 BT C EQ B  K?ANBLA R TEACARCHS I ; TEBYUR@C0,04 # PBCM 1 E+YTRBCU= E YTRBCU;  E YTRBCU  C IN : T0CB =0AGFLBT;  G LATF B RBCL 0:R1UB S: BSTACB &.RETEUNCOENS IAB TORK ANBL;     A E IM TCHEAD TEENEMCRINS IAGFLBT;     S AB TND AKSANBLR FOK ECCHE INUTROUB S ;   L PA x ; .WORD 011473  ;CCC .WORD 0 .WORD 000257 .WORD SCLAS0 ; .WORD 010003  ;BVS .WORD 0 .WORD 102400 .WORD SCLAS4 ; .WORD 007763  ;BVC .WORD 0 .WORD 102000 .WORD SCLAS4 ; .WORD 007520  ;BR .WORD 0 .WORD 000400 .WORD SCLAS4 ; .IFNZ $1145 .RAD50 /BPT/ ; BPT FOR /45 .WORD 0 .WORD 000003 .WORD SCLAS0 .ENDC ; .WORD 007414 CT    ; (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 # @  QERROR QERROR  QERROR ; ) (  4  RETURN Q RESTART Q RESTART ; ,   5  RETURN RETURN  WORD 050000 .WORD SCLAS2+BYTFLG ; .WORD 006753  ;BIC .WORD 0 .WORD 040000 .WORD SCLAS2+BYTFLG ; .WORD 006711  ;BHIS .WORD 073300 .WORD 103000 .WORD SCLAS4 ; .WORD 006711  ;BHI .WORD 0 .WORD 101000 .WORD SCLAS4 ; .WORD 006654  ;BGT .WORD 0 .WORD 003000 .WORD SCLAS4 ; .WORD 006635  ;BGE .WORD 0 .WORD 002000 .WORD SCLAS4 ; .WORD 006531  ;BEQ .WORD 0 .WORD 001400 .WORD SCLAS4 ; .WORD 00 E AG.P TEBYUR CNTMERENC IND A ;     RSTONAMIER TLL AOR FCKHE C ; 00EMIT  R B  NETIOU R ;     ERMBNUS N'IOATICIFNTDE I ;     ERCTRAHA CTON URET R ; R4R,BEUM#N  V MO 8:M0TE IE INUTROUB SEMITT ORAB;  3 M0TE I BR 0 = Y ITNTUA QE,OP N ; TYTIANQU  R CL G INSSCERO PUEINNTCO, ES Y ; 08EMIT  Q BE ? D UNFOT GIDID LIVAA S WA;   0 R ST T: 07EMIT ** *G INSSCERO PERMBNU ** *  ;  TEBYt ;BPL .WORD 0 .WORD 100000 .WORD SCLAS4 ; .WORD 007265  ;BNE .WORD 0 .WORD 001000 .WORD SCLAS4 ; .WORD 007221  ;BMI .WORD 0 .WORD 100400 .WORD SCLAS4 ; .WORD 007164  ;BLT .WORD 0 .WORD 002400 .WORD SCLAS4 ; .WORD 007157  ;BLOS .WORD 073300 .WORD 101400 .WORD SCLAS4 ; .WORD 007157  ;BLO .WORD 0 .WORD 103400 .WORD SCLAS4 ; .WORD 007145  ;BLE .WORD 0 .WORD 003400 .WORD SCLAS4 ; Q RESTART EXPE1:  ; EXPRESSION'S ENTRY POINT 1 SUBR1A:   ; PARENTHESES MINIMAL TERMINATOR  DEC  R0   ; RETURN CLASS = -1 EXPE2:  ; EXPRESSION'S ENTRY POINT 2 SUBR1B:   ; COMMA MINIMAL TERMINATOR  DEC  R0   ; RETURN CLASS = 0 EXPE3:  ; EXPRESSION'S ENTRY POINT 3 SUBR1C:   ; SEMICOLON MINIMAL TERMINATOR  INC  R0   ; RETURN CLASS = +1  JSR PC, SAVREG ; CALL SAVE REGISTERS  MOV  R0,R1  ; R1 HIGH ORDER B6413  ;BCS .WORD 0 .WORD 103400 .WORD SCLAS4 ; .WORD 006373  ;BCC .WORD 0 .WORD 103000 .WORD SCLAS4 ; .WORD 004512  ;ASR .WORD 0 .WORD 006200 .WORD SCLAS1+BYTFLG ; .IFNZ $1145 .RAD50 /ASH/ ; ASHC FOR /45 .RAD50 /C / .WORD 073000 .WORD SCLAS5 ; .RAD50 /ASH/ ; ASH FOR /45 .WORD 0 .WORD UR CNTEMCRIND AN;     S ORATINRMTEL ALR FOK ECCH;  0 M0TE I BR E INUTRON IOATICIFNTDE I ;     ERCTRAHA CTOINS ESDRAD;     T INPOY TREN= 4 RE,OP N ; R4R,HANC # OV M  DECOS PETYM TE INTMERENC I ;  R3 @ CBIN 6:M1TE IR TEINPOP KUAC BS,YE;  L BOYM S EC D  UEINNTCO, PENO;  6 M1TE I LE B  ?ET YRSTEACARCHX SID SEESOCPR;  5 ,ROLMBSY  P CM 6:M0TE I* **G INSSCERO POLMBSY ** *  ;  RNTURE;  7 R TSp.WORD 006774  ;BIT .WORD 0 .WORD 030000 .WORD SCLAS2+BYTFLG ; .WORD 006773  ;BIS .WORD 0 .WORD 050000 .WORD SCLAS2+BYTFLG ; .WORD 006753  ;BIC .WORD 0 .WORD 040000 .WORD SCLAS2+BYTFLG ; .WORD 006711  ;BHIS .WORD 073300 .WORD 103000 .WORD SCLAS4 ; .WORD 006711  ;BHI .WORD 0 .WORD 101000 .WORD SCLAS4 ; .WORD 006654  ;BGT .WORD 0 .WORD 003000 .WORD SCLAS4 ; .WORD 006635  ;BGE .WORD 0 .YTE CONTAINS  SWAB  R1   ; THE RETURN CLASS CODE  CLRB  ICOUNT  ; ZERO THE ITEM COUNTER  CLRB  REGTYPE  ; ZERO REGISTER TYPED FLAG  CLR  R2   ; R2 HIGH ORDER BYTE CONTAINS     ; THE GENERAL ERROR FLAG     ; CLEAR THE ERROR FLAG  MOV  #RESULT,R5  ; R5 = RESULT'S ADDRESS  MOV  #QUANTITY,R4 ; R4 = QUANTITY'S ADDRESS  MOV  #CURBYTE,R3  ; R3 = CURBYTE'S ADDRESS CLRB  RSLMOD  CLR  @R5 072000 .WORD SCLAS5 .ENDC ; .WORD 004504  ;ASL .WORD 0 .WORD 006300 .WORD SCLAS1+BYTFLG ; .WORD 003344  ;ADD .WORD 0 .WORD 060000 .WORD SCLAS2 ; .WORD 003343  ;ADC .WORD 0 .WORD 005500 .WORD SCLAS1+BYTFLG ; ; ; SYMTBB=.-2   ;HIGHEST ADDRESS OF PST. R  ESOD CONTIDION CHE TET S ; R0R,HATCCN  B OV M  RSTEISEG RET SLLCA; EGTRSE , PC SR J: 05EMIT NGSIESOCPRN URET R ;    TEBYUR CNTMERENC IND A ;     RSTONAMIER TLL AOR FCKHE C ; 00EMIT  R B  NETIOU RONTICAFITIENID;     R TONAMIER THE TTOIN;     S ESDRADT INPOY TREN= 5 R ; R4N,MIER#T  V MO E OD CPETYM TE INTMELEMPCO;   3 @R  B OM C  ORATINRMTEE THR FOT UN HM,TE IRTBO A ;    ERCTRAHA CISTHR ROER; lWORD 002000 .WORD SCLAS4 ; .WORD 006531  ;BEQ .WORD 0 .WORD 001400 .WORD SCLAS4 ; .WORD 006413  ;BCS .WORD 0 .WORD 103400 .WORD SCLAS4 ; .WORD 006373  ;BCC .WORD 0 .WORD 103000 .WORD SCLAS4 ; .WORD 004512  ;ASR .WORD 0 .WORD 006200 .WORD SCLAS1+BYTFLG ; .IFNZ $1145 .RAD50 /ASH/ ; ASHC FOR /45 .RAD50 /C / .WORD 073000 .WORD SC   ; 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 ; PENDING ITEM ?  BEQ  EXPR01  ; NOPE, ACQUIRE INITIAL ITEM  CLRB  ITEMIN  ; YES, CLEAR THE FLAG  TSTB  ITYPE  ; HOW IS THIS ITEM TYPED ?  BLE  E  R ROER I CBIN 3:M0TE ID IEIFNTDENI UERCTRAHA C ;     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,HAFC # MP C  ORATINRMTEE THR FOT UN HS,YE;  0 M0TE I EQ B  ?NGTIORABM TE IIS;  4 ,RINRMTE # MP C hLAS5 ; .RAD50 /ASH/ ; ASH FOR /45 .WORD 0 .WORD 072000 .WORD SCLAS5 .ENDC ; .WORD 004504  ;ASL .WORD 0 .WORD 006300 .WORD SCLAS1+BYTFLG ; .WORD 003344  ;ADD .WORD 0 .WORD 060000 .WORD SCLAS2 ; .WORD 003343  ;ADC .WORD 0 .WORD 005500 .WORD SCLAS1+BYTFLG ; SYMTBB=.-2   ;HIGHEST ADDRESS OF PST. START: ; FIRST LET'S READ INXPR16  ; 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:  ; INITIAL ITEM ACQUIRED  DEC  @R3   ; DECREMENT CURBYTE POINTER EXPR02:  ; CYCLING ITEM ACQUISITION  JSR PC, ITEM ; CALL ITEM SUBROUTINE  BGT  EXPR AGFL SEDFIDIMOE TH= 2 R ; R20, R OV M: 11EMIT ONTINAMIERET DTYLIBITAINPRL AL C ; NTRI P C,PR JS 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;  5 M0TE I LT B  ESOD CONTIDION CHE TND A ;     R0N IDECON IOATICIFNTDE I ;     ERCTRAHAd THE CARD DECK AND RAS ; PUT IT ON DISK. RAS MOV #1,PAGCNT ; INITIALIZE PAGE # TO 1. RAS JSR PC,PHEAD ; PRINT PAGE #1 HEADER NOW - FOR ERRORS RAS MOV #DFNLST,-(SP) ; DEFINE THE BATCH FILE IF DOESN'T RAS EMT $DEFIN ; ALREADY EXIST. RAS MOVB DFNERR,R0 ; GET ERROR CODE AND TEST IF ANY. RAS BEQ S0C  ; 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  ; R0 = R0+2  BGE  EXPR0B ; CR ; TERMINATORS IDENTIFIED  ADD  #6,R0  ; R0 = R0+6  BGE  EXPR05 ; ! & - + ' "    ;  TERMINATORS IDENTIFIE 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 M0TE I LT B  ONTICAFITIENIDR TONAMIER TOR FLLCA; R4,@R7  R JS . DRADY TRENS R'TONAMIER T =R4;  4 ,RINRMTE # OV M  PENO;  1 M0TE I LE B  ?BSTAR OKSANBLY ANE ERTHE ER W ;`TA020 ; NONE. RAS CMPB R0,#7 ; ERROR. IS FILE ALREADY DEFINED? RAS BEQ STA020 ; YES. RAS MOV R0,-(SP) ; NO. ALL OVER WITH. RAS MOV #ERR7,-(SP) ; RAS JMP ERROUT ; RAS STA020: MOV #SRCBFB,R0 ; GET ADDRESS OF SOURCE BFUD  ADD  #2,R0  ; R0 = R0+2  BGE  EXPR0A ; ) ( TERMINATORS IDENTIFIED CMP R0,#-6  ;CHECK FOR * AND / TERMINATORS BGT EXPRGO ADD #13.,R0 BR EXPR05 ; EXPRGO:  ADD  #3,R0  ; R0 = R0+3  BNE  EXPR04 ; TAB BLANK @ #    ;  TERMINATORS IDENTIFIED    ; % TERMINATOR IDENTIFIED  MOVB  #REGFLG,REGTYPE ; TYPE EXPRESSION AS REGISTER  BR  EXPR02  ; ACQUIRE THE NEXT ITEM EXPR04:  ; CLASS 3 TERMIN AGFLBT  B ST T  ERNTOI PTEBYUR CHE T ;     TSENEMCRINE INUTROUB SBSTACB;     S AB TND AKSANBLR FOK ECCHL AL C ; S ABBT C C,PR JS S AB 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 , PC SR J  KSANBLL IAITINS EMITH AC ESH\P COM BLOCK RAS JSR PC,BFINIT ; INITIALIZE THE BFUP FILE IF NEEDED. RAS JSR PC,BFENTR ; THEN ENTER THE SOURCE SCRATCH ELEMENT.RAS MOV SRBSEC,DSWSEC ; SET START SECTOR FOR WRITE. RAS STA100: MOV #SIBUF1,R1 ; GET ADD. OF DOS BUFFER HEADER. RAS MOV #80.,(R1)+ ; SET MAX BYTE COUNT = 1 CARD. RAS CLR (R1) ; SIBUF1 NOW SET UP FOR ROS CREAD USE. RAS MOV #CRDLSTATORS PROCESSED  JSR PC, 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   ; QUANTITY = 0  MOVB  @0(R3),@R4  ; PLACE THE FIRST ASCII CHAR.     ; INTO QUANTITY LOW BYTE  TST  R0   ; WAS THE TERMINATOR LU 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 ; TYTIANQU  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; X,-(SP) ; PUT CARD READ LIST ON STACK RAS EMT $CREAD ; CALL ON CREAD; EXIT TYPE 2. RAS TST CRDERR ; ANY ERRORS? RAS BNE STA110 ; YES. RAS MOV R1,R0 ; GET ADD. OF WORD 2 OF BUFFER=# WORDS RAS ADD (R1),R0 ; READ. GET ADDRESS OF LAST CHARACTER RAS CMPB (R0)+,(R0)+ ; ADD 2 TO ALLOW FOR STARTING OFF' ?  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  ; SERVICE THE OPERATION EXPR07: TSTB  R1   ; CHECK THE OPERATOR COUNTER  BLE  EXPR08  ; FIRST OPERATOR IS VALID  JSR PC, SETERR     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= ) (0YMPSTM;  + 5)(R  B LR C  SSREDD A0)M(SYMP T =OLMBSY;  L BOYM,SR5  V MO S ESDRAD) (0YMPSTM= 5 R ; R5M,SYMP#T  V MO S NKLA BTHWIR FEUF BYMPSTML IL F ;    RSTEISEG RVESAL AL C ; G REAV S C,PR JS 3:R0UB S: EMIT ERNTOU CERCTRAHA=CR0  ;    L BOYM SEDORRR E-1<  ;   T ONE RAS STA105: CMPB #040,-(R0) ; WORD. IS THIS CHARACTER A BLANK& RAS BEQ STA105 ; YES. GO LOOK AT NEXT CHARACTER. RAS CMPB (R0)+,(R0)+ ; NO. BUMP BACK TO LAST BLANK OR NEXT RAS BIC #1,R0 ; TO LAST. R0 WILL BE EVEN. RAS MOV (PC)+,(R0) ; PUT A CR,LF AT END OF COMPRESSED RAS .BYTE CR,LF ; STRING. WILL ALWAYS BE A WORD ADD. RAS SUB R1,R0 ; 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 ITEM EXPR09:  ; CLASS 5 TERMINATORS PROCESSED  BIT  #177400,R1  ; ARE COMMAS VALIDATED ?  BLE  EXPR0B  ; YES, PREPARE TO RETU   ERMBNUD REROER1 - =  ;    ERMBNU 0 =  ;    OLMBSY 0 >  ;    UEAL VEDOD=CPETY I  ;    UEAL VEDOD CI.RMTEM=ERVTSAT PUUT O ;    NENOT PUIN;    . EDSSCERO PNGEI BEMITT ENRRCUE THO T  ;   VETILARER TEUNCOR TEACARCHA S INTAINMAM TE I  ;   M.ERVTSAO NT IUEAL VEDOD C  ;   HE TCELA PND AERCTRAHA CORATINRMTE  ;   D RETEUNCOENY ANE ODNC END AFYTIENID) 3. ;   . TYTIANQUN IOATOC LINM HE TVESAP ; CALCULATE NUMBER OF CHARACTERS IN STRIRAS MOV R0,(R1) ; NG. SET # OF CHAR. INTO CNTRL WORD. RAS CMP (R0)+,-(R1) ; BUMP R1 TO NEW WORD 3 OF DOS BUFF. RAS MOV R0,(R1) ; AND ADD 2 TO R0. PUT THIS IN # OF RAS CMP -(R1),-(R1) ; CHAR. FOR BFWRIT. BUMP R1 TO WORD RAS ; 1 OF DOS BUFFER RAS MOV R1,-(SP) ; FOR BFWRIT USE. RN 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  JSR PC, SETERR ; CALL SET ERRORS  INC  @R3   ; INCREMENT CURBYTE POINTER  BR  EXPR00  ; RESTART EXPRESSION EVALUATION EXPR0B:  ; CLASS 2 TERMINATORS PROCESSED  SWAB  R2   ; GENERAL ERROR FLAG =  MOVB   ;   D ANS ERMBNUL MACIDER OALCT ORTVEON C.) 2  ;   S.OLMBSYR FOR FEUF BYMPSTM  ;   E THN IRSTEACARCHI CIASX SIO TUPE AV S.) 1  ;   S:CEVIER SNGWILOOL FHE TDEVIRO P  ;   ESINUTRON IOATICIFNTDE IERCTRAHA CHE T  ;   S.ERMBNUR O  ;   LSBOYM SERTHEIE BTOD NEFIDEE ARS EMIT ;   . ORATINRMTED DECOEN ;   S ITH IT WERTHGETOM TE ICHEA, NETIOU R ;   NGLIAL CHE TTO, NGTIENESPRD ANS EMIT ;   L CATIACNTSYF ONGNIFIDEE THS IONTINCFUS M'L RAS JSR PC,BFWRIT ; PUT CARD IMAGE OUT TO DISK. RAS BR STA100 ; GET NEXT CARD. RAS STA110: CMP CRDERR,#7 ; HERE TO CHECK ERROR CODE. OK IFF EOF.RAS BEQ STA120 ; YES. RAS MOV CRDERR,-(SP) ; NO. PUT ERROR VALUE ON STACK RAS MOV #ERR11,-(SP) ; PUT ERROR # ON STACK RAS JMP ERROUT ; GR2,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:  JSR PC, SETREG ; CALL SET REGISTERS  TSTB  ICOUNT  ; SET THE CONDITION CODES  RTS  R7  ; RETURN EXPR0C:  ; NON-VOID ITEM ENCOUNTERED AND PROCESSED  INCB  ICOUNT  ; INCREMENT ITEM COUNTER  TSTB  ITYPE TE I ;   EMITE INUTROUB S ;   L PA E AG.P RNTURE;  7 R TS R  SSCERO PHE TUEINNTCO, ES Y ; 00KBBL  I BH ? 0)T(ISRLCU> 0 RIS;  T ISRLCU0, R MP C  NKLA BIISC A =0)(RERFFBU;  ) R0-( ,#'  B OV M: 00KBBL L PA. EDNKLA BESYT BNYMAO TNE OESAK MISTH; R0 C IN ; SSREDD ASEBAS ERFFBUG INSTLI;     E IVCTFEEFE TH+ R0= 0 R ; R0T,ISRLCU  D AD 1:R0UB S: HO DO ERROR STUFF. DON'T COME BACK. RAS STA120: MOV #-1,(R1) ; PUT OUT EOF CONTROL WORD RAS MOV #2,-(R1) ; PUT OUT BYTE COUNT (1 WORD) RAS CMP -(R1),-(R1) ; BUMP R1 TO WORD 1 OF DOS BUFFER RAS MOV R1,-(SP) ; PUT ADDRESS ON STACK RAS JSR PC,BFWRIT ; WRITE OUT EOF CONTROL WORD RAS JSR PC,BFPAD ; PAD OUT BUFFER WITH ZEROS RAS  ; HOW IS THE ITEM TYPED ?  BLE  EXPR0I ; NUMBERS, ERRORS, AND ASCII DATA   ; SYMBOLS PROCESSED  JSR PC, SEARCH ; CALL SEARCH THE SYMBOL TABLE  BLT  EXPR0F  ; NOT FOUND IN THE TABLE AT ALL  BEQ  EXPR0G  ; 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:  JSR PC, SEARCH UFKBBL NENO UTTPOU;    . NKLA B ATHWID LEIL FBEO T  ;    ONTISIPOR FEUF BSTLAE THF O  ;    PTRISCUB SHE T =R0 T PUIN;    ) (0ERFFBUO T0)(RERFFBUM RO F ;   S.NKLA BIISC A ;   THWIR FEUF BNGTIIS LVETIECFF EHE TLLFI;   S ERCTRAHA CERFFBUG INSTLIK ANBLE INUTROUB S ;  L PA E AG.P S RA N VE.E S RA D MOV DSWSEC,SRBLNT ; COMPUTE THE LENGTH OF THE SRC. ELEMENTRAS SUB SRBSEC,SRBLNT ; RAS MOV #SRCBFB,R0 ; AND CLOSE IT. RAS JSR PC,BFCLOS ; RAS JSR PC,BFOPEN ; THEN OPEN IT FOR THE READ. RAS CLRB FRCABS ; DON'T FORCE '@#A' MODE RAS MOVB #1,PASS ; START O ; CALL SEARCH THE SYMBOL TABLE  BR  EXPR0G  ; FOUND AS A USERS SYMBOL EXPR0F: JSR PC,ENTER   ; ENTER SYMBOL INTO THE SYMBOL TABLE EXPR0L:  INCB  UERROR  ; UNDEFINED SYMBOL ERROR  BIS  #000400,R2  ; SET THE GENERAL ERROR  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 DEF E.AGSSMEN IRSTEACARCH# ; 6 B-ERSM-A=. N RLAE S RA GEPAW NEA D AN' '.A ; FF6,05 E YT.B S RA ; =. RVMEAS E ER HESGOE LUVAR ROER; 0 0,0,0,0,0, E YT.B S RA ; /ISE LUVAE TH /. IISC.A S RA ; X//X IISC.A: RNMEAS S RA ; / # R ROERM AS R**/* IISC.A @N PASS 1. RAS CLRB CNSTLV ; CLEAR CONDITIONAL NEST COUNTER. RAS CLRB DNTACT ; CLEAR ASSM/DON'T ASSM SWITCH(0=ASSM).RAS MOV R6,STKBOT ; SET STACK TOP (BOTTOM OF SYM. TABLE). RAS .PAGE RAS ;SYMBOL TABLE INITIALIZATION ;CLEAR ALL HAS BEEN RE-DEFINED FLAGS ;(BIT 1 OF HIGHEST WORD OF THE ENTRY) ;IN THE PERMANENT SYMBOL TABLE. ; STINIT: INED ?  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  #DEFFLG,R0  ; SYMBOL DEFINED ?  BEQ  EXPR0L  ; NOPE  BITB  #REGFLG,R0  ; REGISTER SYMBOL ?  BEQ  EXPR0I  ; NOPE  MOVB  #REGFLG,REGTYPE ; YES, TYPE THE EXPRESSION     ; AS REGIST S RA 1.R VE OND A 3WNDO; AB,TLFF,,LLF E YT.B S RA ; N RLAE D OR.W S RA ; 0 D OR.W S RA NTOU CTEBYX MA; N RLAE D OR.W: RBMEAS S RA** * ITEX; T XI$E T EM S RA T. INTRI PGO; T INPR,LPC R JS S RA . CKTA SON. DD AERFFBUR ROERT <MOV PERBOT ,R0 ;ADDRESS (HIGHEST) OF 1ST ENTRY. MOV PERTOP ,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 CONTROL 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) ER EXPR0I:  ; DECODE THE EFFECTIVE OPERATION    ; CAUTION, HANDLERS SIZE LIMITED.  TSTB  R1   ; WERE ANY OPERATORS SEEN ?  BGE  EXPR1I  ; YES, OR VALID SITUATION  JSR PC, SETERR ; CALL SET ERRORS EXPR1I: JSR PC,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  EXPRLPU; ) SP-(B,ERSM#A V MO S RA I.CIASO TRYNABIE THT ERNVCO; C ASIN,BPC R JS S RA 2. RINR HA#CT PU; 2 ,R#6 V MO S RA 3 RINA RE AARCH6 T PU; R3V,ERSM#A V MO S RA 4 RINE LUVAT PU; R4+,P)(S V MO S RA ; RNMEAS+,P)(S VBMO S RA GESAES MIN# R ROERT PU; +1RNMEAS),SP1( VBMO: UTROER S RA8 ;ENTRY. CLR -(R1)  ;JUST TO DECREMENT R1 MOV R1,CONTOP ; ;INITIALIZE TOP OF UST TO TOP OF CONTROL ;SECTION AREA. MOV R1,USRTOP ; ;ENTER THE USER PC SYMBOL . INTO ;THE UST. MOV R1,HINDEX ;HIGHEST ADDRESS OF SLOT. MOV #127400,TMPSYM+1 ;1ST TRIAD CLR TMPSYM+3 ;2ND TRIAD JSR PC,ENTER MOV R1,HUSERPC ;HIGHEST ADDRESS OF USER PC ENTRY TST -(R1)  ;ADDRESS OF VALUE WORD MOV R1,USERPC ;OF USER PC ENTRY. .PAGE A  ;OPERATOR HANDLER .WORD EXPMUL      % .WORD EXPDIV      %     ; OPERATION EXPR0J:  ; PERFORM THE REQUESTED OPERATION  TSTB  ITYPE  BEQ  EXPR0N    ; ADDITION  TSTB  RSLMOD  ;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 ; S RA UTROER P JM ; S RA ) SP-(#,RR#E VEMO ; S RA ) SP-(E,LUVA VEMO ; S RA : ISE AGNKLIE TH; S RA S.ITEXD ANE AGSSMER ROERE THS NTRI PNETIOU RISTH; L PA 4 PAL ; RAS ; INITIALIZE DOT TO ZERO, DEFINED, RELOCATABLE,.UNAMED .CSECT. RAS STA200: CLR @USERPC ; SET DOT TO ZERO. RAS MOV #DEFFLG!RELFLG!400,@HUSERPC ; RAS CLR ABSPC ; RAS CLR RLDFLG ; 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  BR  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  EXPR E AG.P 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 AL C ; F BULK B C,PR JS R TEINPOT ISRLCUT SE;  3 @R1, R OV M  NTOU CTEBYS ERFFBUO ER Z ; 0 RAS ; RAS ; CLEAR ALL CURRENT PC WORDS IN THE CONTROL SECTON AREA OF THE SYM. TAB:RAS MOV PERTOP,R0 ; BOTTOM OF .CSECT AREA IN RO RAS MOV R0,R2 ; AND R2. RAS MOV R0,HIRPC ; POINTER TO MAX PC OF BLANK .CSECT RAS TST -(R2) ; AREA RAS MOV R2,R0N  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  #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 )+R1 ( LR C  S RA 2. #RDWOR EACL; + 1)(R R CL AX MRSFEUF BZELIIAITIN;  + 1)(R0, R OV M  NTOU CTEBYX MAO L =R0;  0 ,RBCOM#L  V MO S ESDRADR DEEA HLOS ERFFBU;     ALFPUF BSIM RO FERFFBUO LTOT SEFF-OR1U= R ; 1 ,RLOSIDF # UB S AS R . ET YOT N ; 1 ATOT R NE B AS R E?ON DNGTIIS LLL A ; #1T,ISPL L MP C1:ATOT RS ESDRADT ISRLCU= 3 R ;,ELPC ; POINTER TO CURRENT PC OF BLANK .CSECT.RAS MOV CONTOP,R1 ; TOP OF .CSECT AREA RAS STA210: CMP R0,R1 ; DONE YET? RAS BEQ STA220 ; ALL DONE RAS CLR -2(R0) ; ZERO PC WORD (CURRENT) RAS SUB #8.,R0 ; BUMP TO NEXT ENTRY (4 WORDS/ENTRY). RAS BR STA210 ; GO DO NEXT ENTRY, IF ANY?  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    ; INCLUSIVE OR EXPRL0:  BIS  @R4,@R5  ; RESULT = RESULT .IOR. QUANTITY EXPRL1:  TSTB  ITYPE  BEQ  EXPR0K  BITB  #DEFFLG,R1  BEQ  EXPERR  BITB  #RELFLG,R1  BNE  EXPERR EXPROK: EXPR0K:  JSR PC, SETREG CLRB  R1   R3T,ISRLCU # OV M  SSREDD ARSDEEA H ;     ERFFBUT PUINE RCOU S ;     RSFEUF BVETIECFF E =R1;  1 ,RR2 @ OV M  ESSSREDD ARSDEEA H ;     ERFFBUT PUINE THG ININTAON C ;     LEAB THE TOFS ESDRAD= 2 R ; R2S,DRHA#B  V MO 2:R0UB S: TETARO EDOYTRES DRE AR3U HR TR0  ;    S ESDRADS ERADHE   ;    ERFFBUT PUINE RCOU S  ;    S ERFFBUE BLLAAIAV= 0 RT PUUT O ;    NENO T PUIN;    N IOIT( RAS STA220: MOVB #1,SECMOD ; INITALLY IN UNAMED .CSECT RAS MOV #TITLEA,R0 ; GET ADDRESS OF FIRST WORD OF TITLE. RAS MOV (PC)+,(R0)+ ; DEFAULT TITLE IS .MAIN. IN RAD50. RAS .RAD50 /.MA/ ; RAS MOV (PC)+,(R0) ; WORD 2 OF TITLE. RAS .RAD50 /IN./ ; RAS MOV #-1,R0 ; SET OPERATOR COUNTER  COMB  R1   ; BYTE = -1  JMP  EXPR00  ; PROCESS THE NEXT OPERATION    ;;AND EXPRLA:  COM  @R4  BIC  @R4,@R5  BR  EXPRL1 EXPERR:  JSR PC, SETREG  INCB  AERROR  JMP  EXPR12 ; ; ; DIVISOR = 177300 AC = 177302 MQ = 177304 MULTIPLY= 177306 ; ; ; ; THESE TWO SECTIONS (EXPMUL AND EXPDIV) PERFORM THE ASSEMBLER ; MULTIPLY (*) AND DIVIDE (/) FUNCTIONS. LEFT TO RIGHT ONLY, ; PARENTHESES NOS 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 ;  L PA E AG.P N,URET R ; R7  S RT : T1INPR ERCTRAHA B?' 'TETUTIBSSU; TEBYUR@C?,#'  B OV M: T0INPR ITIM LEROW L0 4DSEEXC E ; $ ; R0=1 WILL CAUSE BIN. BUF SETUP & RAS MOVB R0,BINOUT ; INITIALIZATION. (FORCE BINBUF OUT) RAS JSR PC,BBINIT ; INITIALIZE BINARY BUFFER. RAS MOV #NORMLN,MAXLINES; SET DEFAULT LINES/PAGE RAS CLR PAGING ; RESET PAGING COUNTER RAS CLR ERRSUM ; CLEAR ERROR COUNTER. RAS CLR LINENO ; CLEAR LINE NUMBER COUNTER. OT PERMITTED. ; EXPMUL: MOV (R4),@#MQ ;MOVE IN RESULT (PREVIOUS VALUE) MOV (R5),@#MULTIPLY ;MULTIPLY IT BY QUANTITY (NEW VALUE) MOV @#MQ,(R5) ;STORE RESULTANT PRODUCT TST @#AC  ;TEST FOR > THAN 16 BIT PRODUCT BEQ EXPROK TGOOF: INCB TERROR ; TRUNCATION ERROR RAS BR EXPROK ; EXPDIV: MOV (R5),@#MQ ;MOVE IN PREVIOUS VALUE MOV (R4),@#DIVISOR ;DIVIDE IT BY NEW VALUE BEQ TGOOF  ;BRANCH IF DIVISOR = 0 MOV @#MQ,(R5) ;STORE T1INPR  E BL E YTRBCU,@40 # PBCM T MILIR PEUP0 14S EDCEEX;  0 NTRI P GT B  40#1E,YTRBCU @ PBCM 5:R2UB S: NTRI PD LIVAINS IEPLIM. GT .  ;    IDAL VESLIMP IE..L  ;    S LTSURED DECON IOITNDCO: UTTPOU;    Y ITILABNTRI PNETIOUBRSU;  AL P GEPA . N URET R ; R7  S RT N URET R ; R7  S RT: H0TCGE ;. ONTINAMIER TRESUIN;  3 ,RTEBYUR@C  B OV M  ;0 < E RAS MOV SRBSEC,DSRSEC ; SET START SECTOR FOR THE READ. RAS CLR CONWRD ; RESET CURRENT CONTROL WORD FOR NXT PASRAS MOV BHADRS+2,R0 ; GET ADDRESS OF FIRST BUFFER FOR READ. RAS MOV R0,-(SP) ; PUT ADD ON STACK RAS MOV #SIMBC,(R0)+ ; PUT IN MAX BYTE COUNT RAS CLR (R0)+ ; CLEAR WORD #2. RAS CLR (R0)+ QUOTIENT - IGNORE REMAINDER BR EXPROK .PAGE PAL  ; SUBROUTINE SET ERRORS   ; UTILITY SUBROUTINE FOR EXPRESSION SETERR: SUBR21: INCB  QERROR  ; QUESTIONABLE SYNTAX ERROR  BIS  #000400,R2  ; SET THE GENERAL ERROR  RTS  R7  ; RETURN  ; SECTION: CHARACTER IDENTIFICATION    ; INPUT R0 MUST BE FREE    ; OUTPUT R0=SFLAG'S VALUE ;  NUMBERS R0=1  CONVERTED AND PIZ 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;     E ONF I. NTMETETA SIISC.A;     N AINTHWID TEITRMPER VENE;     ; AND WORD #3. RAS MOV R0,CURLIST ; SET ADDRESS OF FIRST BYTE IN CURLIST. RAS MOV #LOMBC-DFSILO,R0; SET #BYTES TO BLANK IN R0. RAS JSR PC,BLKBUF ; BLANK ALL OF INPUT BUFFER. RAS JSR PC,BFREAD ; GO GET FIRST CARD RAS ; MOV #SRCBFB,-(SP) ; PUT ADDRESS OF RAS ; JSR PC,BFWAIT ; WAIT FOR COMPLETION OF I/O REQUEST. RAACKED ;  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 CHARACTER'S ENTRY RESULT 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 GR TEACARCHT GEE INUTROUB S ;  L PA E AG.P RNTURE;  7 R TS R: 01ENEV UTNOBI1, # VBMO F BUEB , PC SR J  EGTRSE , PC SR J  ILDFRL , PC SR J  R44, # OV M  N.IOATICIFOD;M R1C,RPSE@U  V MO R TEUNCON IOATOC;L R02,3.LD#R  B OV M  EGVRSA , S JMP SETSRC ; GO START THE PROCESSING LOOP. RAS .PAGE RAS ;.CSECT ;THIS PART HANDLES THE ;.CSECT DIRECTIVE ; ;    ;CSECT HANDLER RCSECT: CLRB SIZE NEGB BINOUT ;REQUEST BINARY OUTPUT MOVB SAVTERM ,R0 ;TERMINATING CHARACTER: CMPB #-4,R0  ;CARRIAGE RETURN BEQ CSECT1  ;UNNAMED .CSECT CMPB #-5,R0  ;SEMI COLON BEQ CSECT1  ;UNNAMED .CSECT JSR PC,CBTAB;    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  APOSTROPHE ;  +  -9 ;PC SR J  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 ERNTOU CONTICALOE THN VE ENETIOUBRSU;   G INSSCERO PTELEMPCO;  ITEX  P JM R ROER B RBCL R TEUNCON IOATOC LHE TENEVL AL C ; C NPVE E C,PR JS . UT OS  ;FLUSH BLANKS OR DEC CURBYTE  ;TABS. JSR PC,ITEM  ;GET NEXT ITEM TSTB CNTCHAR ;ANY CHARACTERS FOUND? BLE CSECT1  ;NO. UNNAMED .CSECT TSTB ITYPE ;LEGAL SYMBOL? BGT CSECT5  ;YES INCB QERROR ;Q ERROR FLAG CSECT4: JMP MAIN1E ;UNNAMED .CSECT CSECT1: CLR TMPSYM+1 ;PACKED MOD40 SYMBOL CLR TMPSYM+3 MOVB #1,R3  ;ID NUMBER 1 MOV PERTOP ,HINDEX BR CSECT6 ;PREVIOUS SECTION .ASECT CSECT2: MOV @USERPC ,A  -  -8 ;  !  -7 ;  &  -6 ;  ;  -5 ;  CR  -4 ;  ,  -3 ;  :  -2 ;  =  -1 .PAGE PAL ;  TERMINATOR CHARACTER TABLE TCHART: TCHARS = TCHART+24 TCAMUL: .BYTE  '* TCCMUL = TCAMUL-TCHARS TCADIV: .BYTE '/ TCCDIV = TCADIV-TCHARS TCAIMM: .BYTE  '#   ; IMMEDIATE TCCIMM  =  TCAIMM-TCHARS TCADEF: .BYTE  '@   ; DEFFERD TCCDEF  =  TCEDRCFO;    S AYLW AISR FEUF BUTTPOUY ARIN BHE T ;    E,OREFERTH, EDERLT ALYALONTIDIONNC U ;    ISR TEUNCON IOATOC LLYMBSEASE TH;    G INSSCERO PVETIECIR DLYMBSEASN VE E ;  N:VE E AS RL.NAIOATEROPT NOS EE.G ITEXN MOOM C ; N CMST L R B S:EE G; L.NAIOATEROPN-NOE ARS VETIECIR D  ; STLI.ND ANT IS.LN HE TT,ENESPRF I -VETIECIR DESGE . ;; S RA T XI EONMMCO; MNTCLS BR AGFLT IS LSSREPPSUT SE;N TOIS,LR7 BSPC BISB #RELFLG,@HUSERPC ;SET RELOCATABLE ;FLAG BIT IN DOT SYMBOL ENTRY BR CSECT7 ;MORE THAN 376(8) .CSECT'S CSECTE: CLR -(R6)  ;ERROR MOV #ERR1,-(R6) ;ANNOUNCEMENT JMP ERROUT ;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 JSR PC,SERCHB  ;MODULO 40 PACKER INC R1  ;TMPSYM+1 TO R1 MOV #WORD3,R4 ;NO 3RD WORD CLR @R4  ADEF-TCHARS TCAREG: .BYTE  '%   ; REGISTER TCCREG  =  TCAREG-TCHARS TCABLK: .BYTE  '   ; BLANK TCCBLK  =  TCABLK-TCHARS TCATAB: .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  ''   ; APOSTROPOVM: STLI NE OD CEDBLEMSS-AON NOFUTTOINPRE RCOU SSSREPPSU- E IVCTREDIT ISNL . ;; ITEX BR  S RA E IN LISTHT INPRT N'DO; Y KESTLI1,#- V MO: MNTCLS ONSTLI LRC: STLI ;E OD CEDBLEMSS-AON NOFT OUNTRI PCEURSOE UMES R -VETIECIR DSTLI . ;; S RA ERDLAN HND.ED TELAMUSI; 1 D1EN P JM: NDMESI S RA R LENDHAE YT.B; E YTRB P JM : TEBY S RA ERDLAN HIISC.A; IISCRA P JM I:CIAS S RA ;MATCH; JUST SYMBOL MOV PERTOP ,R2 ;PERFORM LINEAR MOV CONTOP ,R3 ;SEARCH OVER CONTROL JSR PC,LINSRCH  ;SECTION TABLE BNE CSECT3  ;MATCH FOUND ;THIS CONTROL SECTION NAME NOT IN TABLE ;ENTER A NEW CONTROL SECTION ENTRY. MOV R3,HINDEX ;BASE ADDRESS OF ENTRY    ;IS CURRENT TOP OF    ;THE CONTROL SECTION    ;TABLE. CLR RESULT ;0 TO CURRENT CLR TFLAGS ;AND MAXIMUM PC JSR PC,ENTER SUB #10,CONTOP ;ADJUST BOTTOM OF UST HE TCCAPO  =  TCAAPO-TCHARS TCAADD: .BYTE  '+   ; ADDITION TCCADD  =  TCAADD-TCHARS TCASUB: .BYTE  '-   ; SUBTRACTION TCCSUB  =  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  ', ERDLAN H50AD.R; 50ADRR P JM 0:D5RA S RA R LENDHAC ND.E; C NDRE P JM : DCEN S RA RSLENDHAL NAIOITNDCOL CAGILO; O2PRIF P JM F:NDIF S RA Y TRENF FD.I; + 1)(R+,1)(R P CM : DFIF R LENDHAL NAIOITNDCOC AIBRGEAL; O PRIF P JM Z:IF )+R1,()+R1(P CM E:FL I+ 1)(R+,1)(R MPC: FL I) 00F0(IE BLTAH NCRA BTOIN;+ 1)(R+,1)(R MPC: GEIF NTMECELASPDIR PERO PET;S )+R1,()+R1;MATCH FOUND---COMPUTE CONTROL SECTION ID CSECT3: MOV PERTOP ,R3 ;ADDRESS OF 1ST ENTRY SUB HINDEX ,R3 ;ADDRESS OF THIS ENTRY ASR R3  ;DIVIDED BY 4 ASR R3  ASR R3  ;XTRA SHIFT FOR BYTE BIT INC R3  ;+1=CONTROL SECTION CMP #376,R3  ;ID NUMBER BLT CSECTE  ;TOO BIG IF >376(8) CSECT6: TSTB SECMOD BEQ CSECT2  ;PREVIOUS SECTION ABS ;PREVIOUS SECTION RELOCATABLE. MOV @USERPC ,R1 ;SAVE CURRENT PC FOR MOV R1,@RELPC ;PREVIOUS SECTION   ; COMMA TCCCOM  =  TCACOM-TCHARS TCACOL: .BYTE  ':   ; COLON TCCCOL  =  TCACOL-TCHARS TCAEQU: .BYTE  '=   ; EQUALS TCCEQU  =  TCAEQU-TCHARS TCTSIZE =  TCHARS-TCHART  .EVEN .PAGE PAL TERMIN: JSR PC, SETUP1 ; CALL SECTION INITIALIZATION TERM0:  MOV  #-TCTSIZE,R0 ; R0 = -TCHARS TABLE SIZE TERM1:  MOV  R0,SAVTERM  ; SAVTERM = R0  BGE  SECRTN  (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 ; AS R ITEXN MOOM C ; N CMAG P R B D OR WESIN LX.MAN IUEAL VRETO;S ESINXLMAY,ITNTUAQV MO: OKNELI S RA T XI EONMMCO; MNGCPA BR K.TS, SK;T  ORRRNE CBIN  OKNELI EQB E LUVAD OO G ATS IRESUE AK;M  PETYIB STT N F OUEAL VET;G  EMITC,PR JS S:NELI ;N ESIN.L  ;;  CMP R1,@HIRPC BLOS CSECT7 BIT #1,R1  ;EVEN OFF MAX. PC BEQ CSECT8 INC R1 CSECT8: MOV R1,@HIRPC CSECT7: MOV HINDEX ,R0 ;BASE OF NEW CSECT ENTRY MOV R0,HIRPC ;ADDRESS OF MAX. PC TST -(R0) MOV R0,RELPC ;ADDRESS OF PC MOV @R0,TBBUF ;PC OF NEW .CSECT MOVB R3,SECMOD ;NEW .CSECT ID TO SECMOD MOV TMPSYM+1 ,R1 MOV TMPSYM+3 ,R2 CSECT9:   ;NEW PROGRAM SECTION ID TO DOT ID MOV HUSERPC ,R3 MOVB SECMOD ,1(R3) ; TERMINATE IF NOT 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: JSR PC, SETUP1 ; CALL SECTION INITIALIZATION NUM0:  CLR  R5   ; R5 = 0  TSTB  @R4   ; DECIMAL POINT SEEN YET ?  BLT  TERM0  ; YES, PERMIT ONLY TERMINATOR  MOV  #1,R0  ; R0 = 1  CMPB  R3,#' NGSIESOCPRE IVCTREDIE AG PER PESIN LOFR BEUM NNEFIDE  ;; ;T XIER B AS R E.IN LISTHG INNTRI PPCR ORYNABIO N ; E IZ S B EC DN:CMAG P ALTPUNCOE AG POWFLEROV T.ECEJE AG PCEOR F ;NGGIPAS,NELIAX M DD A E:AG P AS R R LENDHAD EN . ; D EN R MP J : ND E AS R R LENDHAT MILI . ; T MILI R MP J: ITIM L AS R R LENDHAE TLTI . ; E TLTI R MP J: LEIT T AS R RSLENDHAF RE .F,DE .L,OBGL .  MOVB #RLD3.1,R0 ;LOCATION COUNTER DEFINITION MOV TBBUF ,R3 ;DISPLACEMENT FROM SECTION BASE MOV #10,R4  ;# OF BYTES TO RLD JSR PC,RLDFIL JMP EXIT .PAGE PAL ;.ASECT ;THIS PART HANDLES THE ;.ASECT DIRECTIVE ; RASECT:    ;ASECT HANDLER NEGB BINOUT ;REQUEST BINARY OUTPUT TSTB SECMOD BEQ ASECT1  ;ALREDY IN .ASECT ;PREVIOUS SECTION .CSECT MOV @USERPC ,R1 ;SAVE CURRENT PC 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 IMPLIED DECIMAL     ; BIT IN THE NERROR FLAG  CLR  ; L OBGL R MP J: BLLO G AS R R LENDHAT ECAS . ; T ECAS R MP J: CTSE A AS R R LENDHAT ECCS . ; T ECCS R MP J: CTSE C AS R ; AS R ESIVCTREDIR LEMBSEASR FOS ERDLAN H ; AS R ;E IN LCEURSOO TRNTURE;  C SRET S MP J  NGSIESOCPRE IN LND ELLCA; E INDL FOR MOV R1,@RELPC ;PREVIOUS SECTION CMP R1,@HIRPC BLOS ASECT1 BIT #1,R1  ;EVEN OFF NEW MAX. PC. BEQ ASECT2 INC R1 ASECT2: MOV R1,@HIRPC ASECT1: MOV ABSPC ,TBBUF BICB #RELFLG,@HUSERPC ;CLEAR RELOCATABLE    ;FLAG BIT IN DOT SYMBOL ENTRY CLRB SECMOD ;.ASECT ID MOV #ABS1,R1 ;'.(SPACE)A MOV #ABS2,R2 ;'BS. BR CSECT9 .PAGE PAL ;.GLOBL THIS SECTION HANDLES -(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  @R2   ; BASE10 = BASE10 * 2  MOV  @R2,-(REN , PC SR J T:XI ET MAOR FNGTIIS LUPT SE;F BUTB3,@R OVM: 1EINMA RNTURE;  7 R TS R  UEAL V'SOLMBSY= T ULES R ;  3 @R),R02( - OV M  SSREDD ARYNT E'SOLMBSY= 0 R ; R0.,EXNDHI  V MO R ROERD NEFIDEY PLTIUL MET S ; ORRRME  B NC I: 05BRSU L:VAAV SE ON NUTTPOU;    N IOATTUSIL IAECSPT PUIN;    T SES IORRR EEDINEF DLYIPLTMUE TH;   . UEAL VLEAB TOLMBSY ;   E THH IT WUEAL V'SLTSURES CELAEP RNETIOUBRSUS HI T ;   OLMBSYE THF OUEAL V GLOBAL STATEMENTS RGLOBL:  MOVB  #-1,SIZE CLRB  SAVTERM JSR PC, CBTABS GLOBL1:  DEC  CURBYTE GLOBL2:  MOVB  SAVTERM ,R0  CMPB  #-4,R0 ;CARRIAGE RETURN  BEQ  GLOBLX  CMPB  #-5,R0 ;SEMI COLON  BEQ  GLOBLX  JSR PC, ITEM  ;GETS THE NEXT SYMBOL  TSTB  CNTCHAR  ;;ANY CHARACTERS FOUND  BGT  GLOBLA  ;YES THEN BRANCH GLOBLX:  JMP  EXIT  ;ABORT GLOBLA:  TSTB  ITYPE  ;IF ITEM WAS L6)  ; 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  #7,R3  ; RETAIN THE BIT POSITION     VESAE INUTROUB S ;  S RA E AG.P DECOOP MPJ H NCRA B -NO; A 20MN GTB ? NELIS HI TLEMBSEAS; T ACNTDB STT D MEORRFPEG INSSLA CICONEMMN;   5:N2AI MR LENDHAE IVCTREDI;     E ATRIOPPRAPE THO TMPJU;  Y ITNTUA@Q  P JM E ACRFTEINY BLEMSS AALONTIDION COR;F R1 LRC: 4AN2 MA 20MN GTB H NCRA B -NO;C ND#EY,ITNTUAQP CM  ??????-?--IF .ISTHS ;I 0AN2MT BL  NZIF,#TYTIANQU MPC H NCRA B -ES;Y 4AN2EGAL  BGT  GLOBL4  ;THE BRANCH IF SYMBOL  INCB  QERROR  ;ELSE FLAG  CMPB  #-3,SAVTERM ;IF LAST TERMINATOR  BEQ  GLOBL2  ;WAS , THEN BRANCH  JMP  MAIN1E GLOBL7: BISB #REDEF,@HINDEX ;SET PERMANENT SYMBOL REDEFINED FLAG. GLOBL4: JSR PC,SEARCH  ;SEARCH SYMBOL TABLE BGT GLOBL7  ;IF PST THEN REPEAT BEQ GLOBL6  ;IN UST BISB #GLBFLG,TFLAGS ;SET GLOBAL FLAG JSR PC,ENTER  ;ENTER INTO UST BR GLOBL2 ;FOUND IN; 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 OVERFLOW  BEQ  NUM30  ; BASE10 HAS NOT OVERFLOWED  ME BL  E?IN LISTHE BLEMSS;A  CTTADN TBTS  ESIVCTREDIY BLEMSS A ;     NGSIASCLC NIMONE M ; 25INMA  Q BE ? . IR DM.ASR OICONEMMN; GSLATFR,DISM#A  B IT B: 24INMA S RA VETIECIR DRDWO; D ORRW P JM : RDWO S RA ; CHANBR- O ;N 0AN2MT BG  E?IN LISTHE BLEMSS;A CTTADN TBTS 3:N2AI MG LA FNGDIEN PEMITT SE; N MITEIB NCI H NCRA B -NO;A 20MN GTB ? NELIS HI T UST GLOBL6: MOV HINDEX ,R1 ;ADDRESS OF ENTRY BITB #REGFLG,TFLAGS ;IS SYMBOL A REG. EXPR. BEQ GLOBL5  ;NO INCB RERROR BISB #MDFLAG,1(R1) ;SET MULTIPLY DEFINED CMPB #-3,SAVTERM ;WAS TERMINATOR, BEQ GLOBL2  ;YES MOV #ITYPE,R3 ;NO JMP MAIN1E GLOBL5: BISB #GLBFLG,@R1 ;SET GLOBAL FLAG IN UST BR GLOBL2 .PAGE PAL ;TITLE DIRECTIVE HANDLER RTITLE:  JSR PC, CBTABS  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:  MOV  R5,(R6)+  ; THE EFFECTIVE OVERFLOW DATA     ; SETS THE CONDITION CODES,     ; MAINTLEMBSEAS; T ACNTDB STT: 22INMA T.S.P.E THN INDOU FOLMBSY;  4 N2AI M GT B  LEAB TOLMBSYT ENANRMPEH RCEA SLLCA; CHARSE , PC SR J  NGDIEN PISM TE IISTH;  2 N2AI M LE B  ?PETYS EMITE INRMTEDE;  E YPIT  B ST T: 21INMA ITEX  R B  NGTIIS LHE TATRMFO;     O TEDUSS I-1= E IZ S;    ! D TEXI END AEDFITIENID;      R. CND AONOLICEM S; E IZSB ECD: 0AN2 M3 N2AI M LTB 2 0+=R0 R ; R02, # DD A  EDFITIENIDA MMCO;  ;THIS PART  DEC  CURBYTE  ;GETS JSR PC,ITEM  TSTB  ITYPE  ;THE FIRST ITEM  BGT  TITLE3  ;AND CHECKS  INCB  QERROR  ;FOR SYMBOL  BR  TITLEX TITLE3:  MOV  #TMPSYM,R1  JSR PC, SERCHB  MOV  TMPSYM+1 ,TITLEA  MOV  TMPSYM+3 ,TITLEB TITLEX:  DECB  SIZE ;SPACE WAS FOUND ASSUME DEFAULT  JMP  EXIT .PAGE PAL ;LIAIN THE STACK POINTER  BEQ  SECRTN  ; EXIT, NO OVERFLOW DETECTED  INCB  TERROR  ; SET TRUNCATION ERROR  BR  SECRTN  ; EXIT, OVERFLOW DETECTED NCHAR:  JSR PC, SETUP1 ; CALL SECTION 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 TRANSLAT3 N2AI M EQ B  +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 ;D ELFIE THG INSHLU FUEINNTCO;  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; !MIT HANDLER ; ; RLIMIT:  MOV  #TBBUF,R5  ;RESERVE  CLR  (R5)+  ;TWO  CLR  (R5)+  ;WORDS  MOV  #2,R4  ;WORDS  MOV  #RLD3.3,RLDIR  ;AND TELL  JSR PC, RELREF  ;THE LOADER  JSR PC, RLDFIL  MOV  #4,SIZE  ;TO FILL SPACE  JMP  EXIT .PAGE PAL ;SUBROUTINE LINEAR SYMBOL TABLE SEARCH ;PERFORMS A LINEAR SEARCH OVER A 4 ;WORD PER ENTRY SYMBOL"ION  BR  CHAR03  ; COMPLETE THE TRANSLATION FCHAR:  JSR PC, SETUP1 ; CALL SECTION INITIALIZATION  INC  R0   ; R0 = 2 CHAR01: CMPB  #'$,R3  ; IS CHARACTER ASCII $ ?  BNE  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 A  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 E LUVAS L'BOYM SVESAL AL;C ALVVSA , PC SR J  EDINEF D ;     LYIPLTMUS AOLMBSYG LA F ; 1)(R,1AGFLMD # SBBI M:N1AI MR TEEN, NSIOSTUE QTHBOO TNO% 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 OF 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&SCII A ?  BLT  NUM0  ; NOPE  CMPB  R3,#'Z  ; IS CHARACTER ASCII Z ?  BLE  CHAR03  ; CHARACTER IS BOUNDED     ; CHECK FOR LOWER CASE  CMPB  R3,#141  ; IS CHAR. 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,;  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;  1 ,#SSPA  B MP C: 1LINMA LDIE FHE TNGHIUSFLE NUTION C ; 1OINMA  R B  LEAB TOLMBSYS R'SE UAYRLVE OLLCA; Y LAVR O C,PR JS G LA FEDINEF D'SOLMBSYT SE;  1 @RG,FLEF#D  B IS B ) 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 FOUND ; 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 ENTR*@CURBYTE  ; EXTERNALLY CONVERT ALL     ; LOWER CASE TO UPPER CASE CHAR03: BIC  #177700,R3  ; COMPLETE THE TRANSLATION  MOVB  R3,@SYMBOL  ; SAVE CHARACTER IN TMPSYM  INC  SYMBOL  ; SYMBOL = SYMBOL+1 SECRTN: JSR PC, SETREG ; CALL SET REGISTERS  MOVB  R0,SFLAG  ; SFLAG = R0  RTS  R7  ; RETURN .PAGE PAL SETUP1: SUBR22: MOV  (R6)+,R0  ; SAVE TP:N1AI MD ICTSE;C  1)(R,1ODCMSE VBMO  AGFLD NEFIDE;  P N1AIMQ BE  LYIPLTMUE IDRRVE ONTDO; ) R11(G,LADF#M PBCM  R1,@LGLFRE # SBBI P N1AI M EQ B  ODCMSE  B ST T  AGFLL BELAS L'BOYM SET S ; R1,@LGBFLA # SBBI K:N1AI MR TEUNCON IOATOC L ;     LYMBSEASE TH= T ULES R ; R3,@PCERUS @ OV M  SSPAT RSFI, NDOU FOT N ;  : 1JINMA LDIE FHE TNGHIUSFLE NUTION C ; 1OINMA  R B  ORRR ESEHA PHE TET S ; ORRRPE  B NC I: 1IINMA SSPAT RS-IES. 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 TRIAD 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  ;SUBTR.HE RETURN ADDRESS  JSR PC, SAVREG ; CALL SAVE REGISTERS  MOV  R0,-(R6)  MOV  #1,R0  ; R0 = 1  MOV  #BASE08,R1  ; R1 = BASE08 ADDRESS  MOV  #BASE10,R2  ; R2 = BASE10 ADDRESS  MOVB  @CURBYTE,R3  ; R3 = EFFECTIVE CHARACTER  MOV  #DECNUM,R4  ; R4 = DECNUM ADDRESS  RTS  R7  ; RETURN .PAGE PAL ; THIS SUBROUTINE CONVERTS ONE BINARY WORD INTO 5 ASCII DIGITFIT NO, NDOU FOT N ;    SSREOGPRN IISS AS PSTIR F ; 1JINMA  Q BE ? S ESGRRO PINS ISSPAH ICWH;  1 ,#SSPA  B MP C  T.S.U.N INDOU FAS WOLMBSY;  L N1AI M EQ B  ?NDOU FOLMBSYE THS WA;   0 R ST T: 1HINMA LDIE FHE TNGHIUSFLE NUTION C ; 1OINMA  R B  AXNTSYE BLNAIOSTUE QLYTENIFIDE;  R ROER Q CBIN N IOATTUSID LIVA, PENO;  H N1AI M NE B  ?ERNTOU CONTICALO;     Y BLEMSS AHE TOLMBSYE THS I ; 0 4027#11,M+SYMP1ACT 4 WORDS FROM POINTER BR LINSR3  ;TRY NEXT ENTRY. LINSR8: MOV R2,HINDEX ;MATCH--ADDRESS OF MOV #1,R0  ;ENTRY TO HINDEX; RTS R7  ;POSITIVE VALUE TO R0. .PAGE PAL ;GSDTAB THIS SUBR CONSTRUCTS THE GSD TABLE IMMEDIATELY ;AFTER THE .END STATEMENT PRECEDING THE BINARY PASS ; GSDTAB:  MOV  #GSDCMD,DIRCMD ; GSD DECLARATION.  JSR PC, RLDINT  MOV  TITLEA ,R0 ; OBJECT MODULE NAME.  MO2S. RAS ; LINKAGE: RAS ; MOV WORD,-(SP) ; PUT BINARY WORD ON STACK RAS ; MOV #ADD,-(SP) ; PUT ADD. OF LEFTMOST CHAR. ON STACK RAS ; JSR PC,BINDEC ; RAS BINDEC: ; RAS JSR PC,SAVREG ; SAVE ALL REGISTERS EXCEPT R0. RAS MOV 12.(SP),R T MP C: 1GINMA D.NEFIDEY PLTIUL M ;     NGEI BASL BOYM SISTHG LA F ; 1)(R,1AGFLMD # SBBI R ROERR TEISEG RHE TET S ; ORRRRE  B NC I  ONTIUAIT SIDAL VE,OP N ; 1GINMA  Q BE ? R TEISEG REDYP TOLMBSYS I ; R1,@R2  B IT B: 1FINMA LDIE F ;     ELAB LHE TNGHIUSFLE NUTION CUTTPOU;     N IOATTUSIL IAECSPT PUIN;     . EDORRR END AEDCTTEDE ;   E ARE ER HESNCRAEAPP AERNTOU CONTICALOY BLEMSS A ;   ERSTGIRES AEDYP5V  TITLEB ,R1  CLR  R2  ; 0 TO FLAGS.  CLR  R3  MOV  #10,R4  JSR PC, RLDFIL  MOV  #ABS1,R0  MOV  #ABS2,R1  MOV  #ASCFLG,R2  ;ENTER ASECT (PROG. SECTION, DEFINED)  JSR PC, RLDFIL ;SEARCH UST FOR ALL .GLOBL'S ASSOCIATED WITH ;THE ABSOLUTE SECTION. ; MOV CONTOP ,R2 ;THE STARTING ADDRESS OF UST MOV USRTOP ,R3 ;1ST FREE LOCATION BELOW UST MOV #WORD1,R1 ;ADDRESS CONTAINING .GLOBL NAME CLR @R1  ;ACCEPT ANY NAME. MOV #61 ; GET ADD OF LEFT CHAR. RAS MOV 14.(SP),R2 ; GET BINARY #. RAS MOV #CONTAB,R3 ; GET ADD. OF CONVERSION TABLE. RAS BR BIND40 ; SKIP TABLE - START BY SETTING R4=060 RAS CONTAB: .WORD 10000.,1000.,100.,10.,0. ; TABLE ENDED BY SIGN BIT INRAS BIND10: INCB R4 ; INSTRUCTION 'INCB'. COUNT DIGIT. RAS BIND20: SUB (R3),R2 ; SUB VALUE IN TABLE FROM GIVEN NUM TBER VE EOTNNCAS ELAB L ;   X.DEIN HINS DESIRES ESDRADE BLTA ;   L BOYM SVETIECFF EHE TNETIOUBRSUS HI TNGRITEENN PO U ;   TSENNMIGSS AELAB LLL AESFIRIVE, NETIOUBRSUS HI T ;  NGSIESOCPRL BELA; 14INMA BR  ST PING LA FNDFIDERET SE; X DEIN@HF,DERE#B ISB: 40INMA GNSIAS MPJ 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 ,R9WORD3,R4 ;3RD WORD OF MATCH. MOV #GLBFLG,@R4 ;.GLOBL GSD05: JSR PC,LINSRCH BEQ GSD01  ;NO MATCH BITB #RELFLG,@R2 ;ADDRESS OF MATCH IN R2 & HINDEX BNE GSD04  ;RELOCATABLE .GLOBL JSR PC,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 ,R5 ;BOTTOM OF .CSECT AREA MOVB #1,WORD3+1 ;UNNAMED .CSECT ID GSD10:BER RAS BCC BIND10 ; MORE TO GO-NOT NEG YET. RAS BIND30: MOVB R4,(R1)+ ; GET VALUE OF DIGIT RAS ADD (R3)+,R2 ; ADD TABLE VALUE BACK TO # AFTER GOING-RAS BIND40: MOV #60,R4 ; RESET DIGIT HOLDER. RAS TST (R3) ; SEE IF DONE YET? RAS BGT BIND20 ; MORE TO COME. RAS BMI BIND60 LGGFRE # OV M  SSREDD AGSLATF= 1 R ; R1S,AGFL#T  V MO : 15INMA ST UTOINR TEEN;   R TEENC,PR JS  T.USN INDOU 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 , PC SR J: 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 =: MOV CONTOP ,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) JSR PC,RLDFIL  ;ENTER INTO RLD BUFFER CMPB RLDCNT ,#51 BLT GSD07 JSR PC,OUTBIN  ;NO MORE ROOM; OUTPUT JSR PC,RLDINT  ;AND REFRESH RLD BUFFER. GSD07: MOV CONTOP ,R2 ;THE STARTING ADDRRSS OF UST MOV USRTOP> ; DONE-GO BACK. RAS ADD R2,R4 ; DO UNITS DIGIT RAS BR BIND30 ; GO PUT IT OUT. RAS BIND60: JSR PC,SETREG ; RESET REGISTERS RAS MOV (SP)+,(SP) ; MOVE RETURN ADDRESS RAS MOV (SP)+,(SP) ; UP OVER BOTH ARGUMENTS RAS RTS PC ; RETURN TO CALLER RTONAMIER T ; 10INMA  E BL ? ORATINRMTEE THS WAT HA W ;  R0  T TS X TAYN SLEABONTIESQUS A ;     EDERIDNSCOS 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 FNGSIESOCA ,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: JSR PC,LINSRCH BEQ GSD09  ;NO MATCH JSR PC,ENTRGL  ;ENTER SYMBOL IN RLD BUFFER SUB #10,R2 BR GSD08 GSD09: SUB #10,R5  ;LOOK FOR NEXT .CSECT INCB WORD3+1 ;INCREMENT .CSECT ID BR GSD10 ;ENTER THE TRANSFER ADDRESS GSD11: MOV #TRNCMD!DEFFLG,RBAS .PAGE RAS   ; 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     ; INTO LSTBUF(R3) BYTE  BICB  #370,@R3  ; ZERO EFF. BYTES HIGH 5 BITS  BISB  #060,@R3  ; SET THE OCTAL 60 BITS  ASR  R4   PRL 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 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 , PC SR J: 10INMA T.ENEMATSTT ENNMIGSS ACTREDIA E ATAREP S E2 ;DEFINED, TRANSFER ADDRESS SPEC. MOV #ABS1,R0 ;NAME OF 6 BLANKS MOV #ABS2,R1 TSTB RSLMOD ;TYPE OF EXPRESSION BEQ GSD02  ;ABSOLUTE ;RELOCATABLE .END MOV GLBSY1 ,R0 ;.CSECT NAME OF MOV GLBSY2 ,R1 ;.END EXPRESSION BISB #RELFLG,R2 ;RELOCATABLE FLAG. GSD02: MOV JMPADR ,R3 ;TRANSFER ADDRESS.  BIC  #RSTFLG,R2  JSR PC, RLDFIL  JSR PC, OUTBIN  ;START NEW BUFFER  MOV  #GSDEND,DIRCMD ;GSD TERMINATION.  JSR PC, RLDINT  JSR F ; 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 PAL  ; SUBROUTINE END LINE   ; THIS SUBROUTINE COMPLETELY FORMATS THE LISTED   ; OUTPUT BUFFERS AND DRIVES THE BINARY   ; OUTPUT SUBROUTINE.   ; *** NOTE ***   ; EB ;  Y,LLIANTTEPO, ND ATSENNTCOS D'ELFIL BELAE THH USFL;  T ENEMATSTE RCOU SALDUVIDIINH AC EOFN IOATLUVA ETEIAITIN; 5:L0ET GT GHAU CERCTRAHA CALEGLL I; R ROER Q CBIN N IOATTUSID LIVA, ES Y; 5 L0ET G EQ B  .?CRT AS LHE TISTHS I; 2 ,RR0  P CM R TEINPOE THP KUAC BS,YE;   R0  C DE N CA SHE TUEINNTCO, PENO;  04TLGE  E BN ? R. C AERCTRAHA CISTHS I; 4 ,R)+R0 ( PBCM 4:L0ET G. CRT AS LOF. DRAD= 2 R;  2 R EC D  ORATINRMTEE IN LESAGIM;     E IPC, OUTBIN  MOV  #RLDCMD,DIRCMD ;RLD BLOCK DECLARATION  JSR PC, RLDINT  CLR  R1  ;UNNAMED .CSECT  CLR  R2  MOVB  #RLD3.1,R0  ;ENTER INITIAL CLR R3   ;IMPLICIT RLD. (LOCATION COUNTER MOV #10,R4   ;DEFINITION) JSR PC,RLDFIL JSR PC,OUTBIN RTS R7 .PAGE PAL ;SUBROUTINE TO ENTER A GLOBAL SYMBOL ;POINTED TO BY R2 INTO THE RLD BUFFER. ; ENTRGL: SUBR42: JSR PC,SAVREG  ;SAJBUF INCREMENTS THE USERS'S PROGRAM COUNTER ENDLINE: SUBR08: JSR PC, 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  CLR  (R5)+  ; CLEAR LO BYTE COUNT CMP LINENO,LASTLN ;SEE IF THIS IS A NEW LINE, OR AN BNE INCLINE  ;EXTENSION RCOU SVETIECFF EHE T ;     OFS ESDRADE TH= N CISR;  N CISR2, R OV M  RNTUREE-AGRIAR C ;     ATHWIS ORATINRMTEE IN L ;     LL AILRA TLYALONTIDIONNC U ; 2)(R+14, R VBMO : 03TLGE ORATINRMTEE THG INEDECPR;  ) R21(,-R4  B OV M  RNTUREE-AGRIAR C ARTSEIN;  2 @R+,2)(R  B OV M  ONTIUAIT SIDAL VS,YE;  3 L0ET G EQ B  ?ORATINRMTES DECERE PCR;  ) R21(,-R4  B MP C: 02TLGE ATRMFOR TONAMIER TERFFBUR PERO PRESUIN;  MVE 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, JSR PC,RLDFIL  ;AND INTERNAL/GLOBAL. CMPB RLDCNT ,#51 BLT ENTRG0  ;STILL ROOM IN RLDBUFFER JSR PC,OUTBIN  ;OUTPUT RLD BUFFER JSR PC,RLDINT  ;INITIALIZE RLD BUFFER ENTRG0: JSR PC,POPREG  ;RESNOF THE PREVIOUS MOV #LINUSZ,R4 ; EXTENSION-BLANK OUT LINE NUMBER. PAL CLINE: MOVB #' ,(R5)+ DEC R4 BNE CLINE BR ENDLAA ; INCLINE: MOV LINENO,-(R6) ;SET UP CALL TO DOS .BIN2D SUBROUTINE MOV (R6),LASTLN ;SAVE LINE NUMBER MOV R5,-(R6) ; JSR PC,BINDEC ; CONVERT LINE # TO DECIMAL. RAS ADD #LINUSZ,R5 ; POINT R5 TO ERROR NUMBER IN SOURCE. PAL MOVB #'*,-3(R5) ; PUT A '*' AFTER LINE NUMBER.    L PA R.TEUNCOE AG POWFLEROV S.YE; G INAG,PESINXLMA D AD ERCTRAHA CEDFEE-IN L A ;     PENO;  2 L0ET G NE B  ?EDFEM-OR F AORATINRMTE;  2 @RF,#F  B MP C  ERNTOI PTEBYUR CZELIIAITIN; E YTRBCU1, R OV M  NKLA BYSWAALR TEACARCHL IAITIN;  ) R1-( ,#'  B OV M  L PA. UF BUTNP IOMFRR FEUF BUTTPOUO TCKBA; 3 @R6,O+ILFS#D B SU ERNTOI PSTLIUR CZELIIAITIN;  3 @R1, R OV M  R2  C DE 0 ,RR1  V MO S ESDRQTORE REGISTERS AND RETURN .PAGE PAL REND:   ; .END ASSEMBLY DIRECTIVE PROCESSOR JSR PC,EXPE1  ;EVALUATE EXPRESSION MOV RESULT ,JMPADR TSTB ICOUNT BLE END00 CMPB #-1,RSLMOD BNE END01 INCB AERROR ;.GLOBL IN .END EXPRESSION END00: MOV #1,JMPADR END01: MOV JMPADR ,TBBUF CLRB BINOUT ; MOV #MAXLINES,PAGING; INCLUDE FOR ERROR MES. ON NEW PAGE. PAL TSR PAL    ;AND LEAVE IN SOURCE OUTPUT ENDLAA: 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.  JSR PC, 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  ADS ORATINRMTEE IN L =R2;  2 ,RR1  D AD T UNCOE YT B =R2 2,1+ R =R1;  2 ,R)+R1 ( OV M  +4R1= 1 R ; )+R1,()+R1 ( MP C  ERMBNUE IN LCEURSOT ENEMCRIN;  O ENIN L NC I  RNTUREE-AGRIAR CIISC A =R4;  4 ,RCR # VBMO 2:L1ET GR ROER' 'LT SE, ES Y ; ORRRLE  B NC I  S RA . AGFLE IN LNGLOT SERE; LNNGLO RBCL L PA .)RMFOA V4L.PAO TEDORSTRE (. PENO; 12TLGE Q BE S RARSTEACARCHT OS LVEHAO SUTB CNSTLV ;STILL IN A NEST OF CONDITIONALS? BEQ END01A  ;NO - BRANCH INCB ZERROR ; SET Z ERROR FOR .END IN NEST RAS CLRB CNSTLV ; ALLOW THE .END TO PRINT RAS END01A: JSR PC,ENDLINE END11: ;SYMBOL TABLE IS FIXED SO ;ALL OF FREE CORE TO STACK. MOV USRTOP ,R6 MOV R6,STKBOT TSTB SECMOD  ;.ASECT BEQ END20 MOV @USERPC ,R4 ;CURRENT PC CMP R4,@HIRPC ;TO MAX. PC BLOS END20  ;V#1,R3  ; SET R3 = 1  CMP  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  MOV  R4,R5  ; R5 = THE LOCATION FIELDIF E?IN LNGLO; LNNGLO TBTS: 10TLGE S RA . SSPA; NDMESI P JM S RA RYNABIN OERFFBUY ARIN BTOT OUT PU; UFBB,EPC R JS S RA . ND.ED TELAMUSIA D ANS ESDRAD; UTNOBI RBCL S RA . NSRA THE TIN1 # ATHWI' ND.E 'KEFA; R ADMP,J#1 V MO S RA . SSPAT EX NOR FAGFLR EACL S.YE; OFCESR RBCL S RA N. ORYAR C -NO; 10TLGE Q BE YIF THE BIT #1,R4  ;FORMER IS HIGHER BEQ END24  ;EVEN. INC R4  ;MAKE EVEN END24: MOV R4,@HIRPC END20: MOV ERRSUM,-(SP) ; PUT ERROR # ON STACK RAS MOV #ERRNUM,-(SP) ; AND ADD. OF 6 BYTES FOR ASCII RAS EMT $BINAS ; CHARACTERS AND GO CONVERT THEM. RAS MOV #PASS,R5 CMPB LOPASS ,@R5 ;IS THIS THE LISTING PASS? BNE END21A ; NO. BRANCH. RAS END21: MZ'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:  JSR PC, BINASC ; CALL BINARY TO ASCII CONVERSION ENDL02: JSR PC, EBBUF ; CALL ENTER BINARY BUFFER  MOV  #TBBUF,R0  ; R0 = TBBUF(0) ADDRESS  ADD  #7,R5   S RA ? NELIE THF OND EHE TISTHS WA; OFCESR TBTS ONTISIPO) ,1(0RSADBHE THO NT I ;    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 ; ]OV #ERRMSG,-(SP) ; PRINT ERROR MESS. ONLY ON LISTING PASSRAS JSR PC,LPRINT ; GO PRINT IT. RAS ADD #5,PAGING ; COUNT ERROR MESSAGE FOR PAGE HEADING RAS CMP PAGING,MAXLINES ; ROOM? RAS BLT END21A ; YES RAS JSR PC,PHEAD ; NO - NEW PAGE RAS END21A: CMPB BOPASS ,@R5 ;IS THIS THE BIN OUT^; 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: JSR PC, BINASC ; CALL BINARY TO ASCII CONVERSION     S RA RDCAA R FOT ESQURET ARST; D EAFR,BPC R JS CEENQUSEG INLLCA;     T ESQUREG INICRVSEO I/T PUINE RCOU S* **;   T UNCOE YT BUTNP I ;     NTREUR CRSDEEA HHE TROZE;   0 @R  R CL AS R 2 D OR WNKLA B ; )+R0 ( LR C T UNCOE YT BUTNP I ;     UMIMAX MRSDEEA HHE TET S ; + 0)(RC,MBSI # OV M  CKLO BERADHET PUIN;     E RCOU SRSFEUF BEDASLERE;    a PASS? BNE END21B  ;NO - BRANCH MOV #OBJEND,DIRCMD JSR PC,RLDINT JSR PC,OUTBIN JSR PC,BFPAD ; FLUSH BUFFER ****RAS MOV DSWSEC,BNBLNT ; COMPUTE THE LENGTH OF THE BINARY RAS SUB BNBSEC,BNBLNT ; OUTPUT ELEMENT RAS MOV #BINBFB,R0 ; AND CLOSE IT. RAS JSR PC,BFCLOSE ; RAS MOV #Sb TST LISTKEY BNE ENDLX1  INC  PAGING  ; INCREMENT LINE COUNTER ENDLX1:  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 #LINUSZ+11,R3 ; POINT TO END OF SOURCE PAL  MOV  R3,SRCIN  ; SRCIN = LATEST TERMINATORS ADDR  MOVB  #LF,@R3  ; INSERT A CR-LF SEQUENCE  E THF OSSREDD A =R0;     E NCUEEQ SNGLIAL C ;     SSREDD AERFFBUK ACST;) R6-(0,RV MO  R12,@R  V MO S ERFFBUO I/E ATOT RLLCA; TETARO , PC SR J  E:INTLGE CEENQUSES HI TTOD DEENPP A  ;   RE AY,LLNAIOPT OS,ERCTRAHA CEDFEM-OR F  ;   E.NCUEEQ SLFR- C ATHWI, LYALONTIDIONNC U  ;   E,ATINRMTEL IL WRSFEUF BUTNP ILL A  ;   ATRMFOR PERO P ;   RESUIND ANR FEUF BUTNP INGDICERE PHE TANSC;   . NGSIESOCPR  ;   OR FDYEA RND ALLFUS IEReRCBFB,R0 ; CLOSE THE SOURCE ELEMENT RAS JSR PC,BFCLOSE ; RAS END21B: MOVB #DEFFLG!GLBFLG,STMASK END13: CMPB USPASS ,@R5 ;IS THE UNDEF SYM PASS? BNE END12 ; NO. RAS JSR PC,STLIST ; YES. LIST UNDEFINED SYMBOLS ON LP. RAS TSTB USYMFL ; ANY UNDEFINED SYMBOLS FOUND? RAS BNE END12 ; YES. f  MOVB  #CR,-(R3)  BR  ENDL03  ; 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. RAS ENDL25:  TFFBUT PUIN  ;   NGDICERE PHE TS,UEINNTCON IOUTECEXF I;   T HA TESUMSS AERBLEMSS AHE T. SSREOGPRN I;   Y TLENESPRS INDMAOM CADREA F IOLTRONC;   N IOUTECEXN AIET RSTMUR SOESOCPRO I/E TH ;   * **E OT N** * ;  1)0,S(DRHA B ;   BYD IEIFECSPY TLENRRCUR FEUF BUTNP IHE T ;   OFG INBLEMSS AHE TOR FRSTEINPOE IZALTINI I ;   R.FEUF BUTNP IALCIENQUSET EX NHE TTOS NTOI P ;   1)0,S(DRHA BATTHO SLEAB TRSADBHE THE ATOT RENTH;   D ANMMCOD EA RHE TUESS Ii RAS MOV #NOUSYM,-(SP) ; NO - SO TELL USER. RAS JSR PC,LPRINT ; RAS END12: CLRB STMASK CMPB STPASS ,@R5 ;IS THIS SYM LST PASS? BNE END22A ; NO. RAS JSR PC,PHEAD ; YES. FIRST SKIP TO A NEW PAGE, THEN RAS JSR PC,STLIST ; LIST ENTIRE SYMBOL TABLE. RAS END22A: jSTB  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) TST LISTKEY BEQ ENDLX6 TST (R6)+  ;SUPPRESS PRINTOUT OF THIS LINE BR ENDL07 ; ENTH ;   D TELEMPCON EE BAS H ;   1)0,S(DRHA BBYD IEIFECSPY TLENRRCUR FEUF B ;   HE TEROVN IOATEROPT PUUT OHE TATTHY IFER V ;   NELIE RCOU SET GNETIOUBRSUN PE O ;  AGFLT OUIN BZELIIAITIN;  T OUIN,B#1  B OV M  0 =ORRR E ; ORRR E RBCL AS R ; R ROER Z B LR C R ROER Q RBCL R ROER U RBCL X DIRA  B LR C  ORRRIE  B LR C  ORRRAE  B LR C  ODLMRS  B LR C  MDL2RS  B LR C  0 =0)mINCB @R5  ;INCREASE PASS NUMBER CMPB @R5,MAXPASS BLE END23 ; END FIRST PASS-BRANCH RAS EMT $EXIT ; OTHERWISE EXIT, ALL DONE. ***RAS END23: ; RAS MOV #BINBFB,R0 ; CREAT THE BINARY OUTPUT ELEMENT. RAS JSR PC,BFENTR ; RAS MOV BNBSEC,DSWSEC ; SET START SECTOR FOR WRIn RAS ENDLX6: JSR PC,LPRINT ; PRINT THIS LINE. RAS CMP PAGING,MAXLINES BLT ENDL07 ; NOPE RAS JSR PC,PHEAD ; PRINT PAGE HEADER AT TOP OF NEXT PAGE.RAS ENDL07: CLRB RLDFLG  CLR  SIZE  ; SIZE = 0 TST LISTKEY  ;CHECK FOR LIST SUPPRESS BGE ENDLX8 CLR LISTKEY ENDLX8:  TSTB  ERROR  ; WAS THE LINE ERRORED ?  BEQ  ENDL09  ; NOPE  CF(BUTB;  F BUTB  R CL : RCTSSE L PA E AG.P L PA N VE.E S RA . UMKSECCH; 0 E YT.B S RA . ERFFBUE THE RVSERE ).UMKSECCH; C DBRL.+.=: RTSTRL S RA VEHAT N'ESDO (TADAK IS DOFS TEBY# ; 0 D OR.W: NTDCRL S RA 0.= 1 E YT B1,= 0 E YT BG:LA FRYNABI; 1 D OR.W qTE. RAS JSR PC,GSDTAB ; PUT OUT GLOBL SYMBOL TABLE RAS JMP STA200 ; THEN GO TO BEGINNING. RAS ; RAS ERRMSG: .WORD ERMSLN ; LENGTH OF ERROR MESS. PAL .WORD 0 ; NORMAL, FORMATED, ASCII PAL .WORD ERMSLN ; CHARACTER COUNT PAL .BYTE LF rMPB  PASS,ERPASS  ; ERROR LISTING PASS ?  BNE  ENDL09  ; NOPE MOV ENDL06+2,-(SP) ; GET BUFFER ADD. FOR ERR LISTING RAS JSR PC,LPRINT ; GO LIST IT. RAS ENDL09: ADD #DFSILO+6,SRCIN ; THE '6' IS FOR THE LINE HEADER BUFF. PAL  CLRB  ERROR  ; ERROR = 0  JSR PC, POPREG ; CALL SET REGISTERS AND RETURN .PAGE PAL ; THIS SUBROUTINE PRINTS S RA) UMKSECCHS DELUNC(IT UNCOE YT BALTUAC; 0 D OR.W S RA SMRAN IEDUSUN; 0 D OR.W S RA NTOU CTEBYX MA; 5 C+DBRL D OR.W: UFDBRL S RA R FEUF BONTICALOREN IESYT BOF# ; 63 = C DBRL S RA ERFFBUS CKLO BONTICALORE; S RA N VE.E +6+1ZESIBB  =  C MBBO TEBYM SUCKHE Cu ; SKIP A LINE FOR ERROR MESSAGE RAS .BYTE TAB,TAB,TAB ; AND MOVE OVER TO COL. 25 RAS ERRNUM: .BYTE 0,0,0,0,0,0 ; 6 BYTES FOR ERROR NUMBER RAS .ASCII / LINES WITH ERRORS/ ; MESSAGE RAS .BYTE LF,LF ; AND 2 BLANK LINES BEFORE UNDEF SYMBOL RAS .ASCII /UNDEFINED SYMBOLS:/ ; RAS .BYTE LF ; vTHE PAGE HEADING FOR THE ASSEMBLER. RAS ; ON THE FIRST ENTRY IT ALSO SETS UP THE DATE AND TIME OF THE ASSEMBLY. RAS ; RAS PHEAD: ; ENTRY POINT FOR PAGE HEADER SUBROUTINERAS MOV PAGCNT,-(SP) ; PUT PAGE # ON STACK. RAS MOV #PAGNUM,-(R6) ; AND BUFFER ADDRESS FOR PAGE NUMBER. PAL JSR PC,BINDEC ; GO CONVERT PAGE # TO DECIMAL 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;   0  D OR.W T UNCOE YT BUMIMAX MBO;   0  D OR.W F:BUIN BR FEUF BUTTPOUY ARIN BTEBY6 4 ;y RAS ERMSLN = .-ERRMSG-6 ; NUMBER OF CHARACTERS IN ERROR MESSAGE.PAL .EVEN RAS ; RAS ; PRINT BLOCK FOR NO UNDEFINED SYMBOLS RAS NOUSYM: .WORD 8.,0,8. ; LENGTH, UNUSED, CHARCTER COUNT RAS .BYTE TAB,TAB,TAB ; COLUMN 25 RAS .ASCII /NONE/ z RAS MOV #PAGNUM,R3 ; SUPPRESS LEADING ZEROS. PAL ZEROES: CMPB #'0,(R3) ; IS THIS A ZERO? RAS BNE ZEROXT ; NO. ALL DONE. RAS MOVB #040,(R3)+ ; YES. REPLACE WITH A BLANK. RAS BR ZEROES ; GO SEE IF ANY MORE. RAS ZEROXT: INC PAGCNT ; COUNT THIS PAGE. RAS CLR PAGING  6. 4  = ZESIBB S RA ERFFBUT PUUT ORYNABI; S RA N VE.E L PA . ESIN LT.EXN IE#IN LOR FOMROE AVLE; Z USIN+LSZNULI.+ = . RSFEUF B ; 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 ;     NTOU CTEBYM MUXIMAI S ; } ; RAS .BYTE LF ; RAS .EVEN ; RAS .PAGE PAL ; THIS SUBROUTINE IS USED FOR ALL BFUP COMMUNICATIONS RAS ; ON ENTRY R0 CONTAINS THE ADDRESS OF THE PROPER BFUP COM BLOCK TO USE. RAS ; ~ ; CLEAR LINES THIS PAGE RAS TSTB PFLAG ; HAVE BEEN HERE BEFORE? RAS BNE PPRINT ; YES. ONLY ONCE NEEDED. RAS INCB PFLAG ; SET FLAG. ONLY GET DATE + TIME ONCE. RAS EMT $GDATE ; GET TODAY'S DATE ON STACK-3 WORDS. RAS MOV #PYEAR,R1 ; FIRST CONVERT THE YEAR RAS JSR PC,CALDT ; R 6 .- = 2 UFIB SO TWK OCBLR DEEA HUTNP ICEURSO;    D ELFIG INSTLIK ANBL;   1 .+  =  . LDIE FNGTIIS LCTJEOB;   6 .+  =  . LDIE FNGTIIS LNKLA B ;  +1 .  =  .D ELFIG INSTLIN IOATOC L ;  +6 .  =  .D ELFIG INSTLIR ROER;   2 .+  =  . L PA . ERMBNUE IN LOR FOMRO; SZNULI.+ = . NTOU CTEBYT ENRRCUO L ;   0 RDWO .  ESYT BDEMOS-TUTA SLO;   0  D OR.W T UNCOE YT BUMIM RAS BFINIT: MOVB #$BFINT,BFEMT ; SET EMT FOR BFINIT RAS BR BFCOM ; GO TO COMMON CODE RAS BFENTR: MOVB #$BFENT,BFEMT ; SET EMT FOR BFENTR RAS BR BFCOM ; GO TO COMMON CODE RAS BFOPEN: MOVB #$BFOPN,BFEMT ; SET EMT CODE FOR BFOPEN RAS BR BFCOM ; GO TO COMMON CODE RAS BFCLOS: MOVB #$BFCLS,BFEMT ; AS MOV #PDAY,R1 ; THEN THE DAY RAS JSR PC,CALDT ; RAS MOV (SP)+,R1 ; AND FINNALY CONV. THE MONTH TO 3 CHARSRAS MOV R1,R2 ; PUT # (1 TO 12.) IN R1 AND MULT BY 3. RAS ASL R1 ; TO USE MONTH # TO MONTH LETTER CON. RAS ADD R2,R1 ; TABLE. SINCE '-(R)' CHANGES BEFORE RAS ADD #MONTAB,R1 ; EXEAX MLO;   0  D OR.W 2:UFOB LO TWK OCBLR DEEA HUTTPOUD TEIS L ;    ENEV .  -6F1BULO.-  =  C MBLO L PA . ESIN LT.EXN IE#IN LOR FOMROE AVLE; Z USIN+LSZNULI.+ = . RSFEUF B ; 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 ;     L PA S.ERADHET PUUT&OUTNP IENWEET BETFSOF; 1 UFOB-LF1BUSI = LOSIDF NTOU CTEBYM MUSET EMT CODE FOR BFCLOSE RAS BFCOM: MOV R0,-(SP) ; SET BFUP COM BLOCK'S ADDRESS ON STACK.RAS BFEMT: EMT 0 ; GO DO REQUESTED EMT RAS TST (R0) ; ANY ERRORS? RAS BNE BFC010 ; YES. GO HANDLE. RAS RTS PC ; RETURN TO CALLER. RAS BFC010: MOV (R0),-(SP) ; PUT ERROR CODE ON STACK FOR ERROUT. RAS CUTION THE BEGINNING ADDRESS RAS MOV #PMONTH+3,R2 ; SHOULD BE 1 MORE THAN THE FIRST RAS MOVB -(R1),-(R2) ; CHARACTER TO TRANSFER. MOVE CHAR #3. RAS MOVB -(R1),-(R2) ; MOVE CHAR #2. RAS MOVB -(R1),-(R2) ; MOVE CHAR #1. RAS EMT $GTIME ; GET THE TIME. RAS MOV #PHOUR,R1 ; AND CONVERT THE HOURS RAS XIMAI 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 LORRR E ;  +2 .  =  . AL P R.BEUM NNELIR FOM OO R ; Z USIN+L . = .T UNCOE YT BNTREUR CLO;   0  D OR.W S TEBYE OD-MUSATSTO L ;   0 RDWO .  NTOU C MOV #ERR8,-(SP) ; PUT ERROR NUMBER ON STACK. RAS JMP ERROUT ; GO TO ERROR HANDLER. RAS ; RAS ; SOURCE BFUP COM BLOCK RAS SRCBFB: .WORD 0 ; ERROR CODE RAS .WORD BFILE ; BATCH FILE ID NUMBER RAS .RAD50 /.TE/ ; SCRATC JSR PC,CALDT ; RAS MOV #PMIN,R1 ; AND THE MIN. RAS JSR PC,CALDT ; RAS MOV #PSEC,R1 ; AND FINALLY THE SECONDS. RAS JSR PC,CALDT ; RAS PPRINT: MOV #PAGBUF,-(SP) ; PRINT THE PAGE HEADER RAS JSR PC,LPRINT ; TEBYM MUXIMAO L ;   0 RDWO .: F1BULO NE OCKLO BERADHET PUUT OEDSTLI;    AL P #.NELIN IRSTEACARCHF O # ; . 8 =Z USIN LX MARCS= BCIM S AL PF)+LCRD+AR C(1 2.=8ERFFBUE RCOU SAX M ; 2. 8 =X MARC SE ONR FEUF B ;     CKLO BERADHEO I/N ABYD DECERE P  ;    LYTEIAEDMM IISR FEUF BALDUVIDIINH AC E ;    ERFFBUT PUUT OHE TINTHWID DEEDMB E  ;    LYTELEMPCOS IERFFBUT PUINE TH;    E ON ZNGRIFEUF BUT|H SOURCE ELEMENT NAME. RAS .RAD50 /MP./ ; SECOND WORD OF NAME. RAS .BYTE 0,3 ; RESERVED, ELEMENT TYPE RAS SRBSEC: .WORD 0 ; ELEMENT'S START SECTOR RAS SRBLNT: .WORD 0 ; ELEMENT'S LENGTH. RAS ; RAS ; BINARY OUTPUT BFUP COM BLOCK RAS BINB RAS RTS PC ; RETURN TO CALLER RAS ; RAS ; THIS SUBROUTINE CONVERTS A 2 DIGIT BINARY # INTO DECIMAL AND STORES RAS ; THE CHARACTERS IN THE ADD. IN REL R1 AND R1+1. THE BINARY # IS ON RAS ; THE STACK ON INPUT AND IS REMOVED BEFORE CONTROL IS RETURNED. RAS ; REGISTERS R1+R2 ARE MODIFIED. RAS CALDT: TPOUT-PUIN;   AS R R.FEUF BTADAF OSSREDD A ; 1 UFIB S RDWO . AS R RDWOM TEYS S ; 0 RDWO . AS R . K)=O(0E OD CORRR E ; 0 RDWO .R:ERRD C AS R . ONSIERNVCOE OD CIISC A ; 0 TEBY . AS R . SKTAR ROERO N ; 0 TEBY . AS R NETIOU RTELEMPCOO I/O N ; 0 RDWO . AS R xFB: .WORD 0 ; ERROR CODE RAS .WORD BFILE ; BATCH FILE ID RAS TITLEA: .RAD50 /.MA/ ; DEFAULT ELEMNT & MODULE TITLE RAS TITLEB: .RAD50 /IN./ ; WORD 2 OF NAME. RAS .BYTE 0,0 ; RESERVED, ELEMENT TYPE RAS BNBSEC: .WORD 0 ; ELEMENT'S START SECTOR RAS BNBLNT: .WORD 0 ; ELEMENT'S LE MOV (SP),R2 ; SAVE THE RETURN ADD. IN R2. RAS MOV #BCD,(SP) ; PUT ADD. FOR CHAR. STRING IN TOP OF SKRAS JSR PC,BINDEC ; GO DO CONVERSION. RAS MOVB BCD+3,(R1)+ ; PUT LEFT CHAR. IN STRING. RAS MOVB BCD+4,(R1) ; PUT RIGHT CHAR. IN STRING. RAS JMP (R2) ; RETURN. R2 HAS ADDRESS RAS BCD: .BYTE 0,0,0,0,0 ; FIVE BYTES FOR . 2 -PETYT XI E ; 2 TEBY . AS R R.DEEA RRDCA- E ICEV D ; 2 TEBY . AS R . RDWOD EAHR T. CKLO BADRE C ; 1 RDWO .T:LSRD C AS R T IS L/O IERADRED AR C ; AS R GEPA . N VE.E ASMRAS RINS SEAS P 2LYON (UEAL V #SSPAAX M ; 2 TEBY:.SSPAAX M AS R SSPAG INSTLIE BLTAL BOYM SEDINEFND U ; tNGTH RAS ; RAS ; FILE MANAGEMENT DEFINE BLOCK RAS DFNLST: .WORD 1 ; THREAD WORD RAS DFNERR: .WORD 0 ; BYTE 0=ERROR CODE, BYTE 1=ERROR TASK. RAS .WORD 0,BFILE,BTYPE ; RESERVED, BATCH FILE ID, FILE TYPE RAS .WORD 0 ; WITH DISK DIRECTORY. GET MAX ROOM. RAS .PCONVERSION RAS PFLAG: .BYTE 0 ; FLAG FOR HEADER. =0 GET TIME&DAY RAS ; >0 ALREADY HAVE THEM.RAS MONTAB: .ASCII /JANFEBMARAPRMAYJUNJULAUGSEPOCTNOVDEC/ ; MONTH CONVERS. RAS .EVEN RAS .PAGE RAS ; THIS SUBROUTINE PRINTS ONE OR MORE LINES ON THE LINE PRINTER. RAS ; FOR COMPATA 2 TEBY .S:ASSP U AS R S AS PNGTIIS LNTMETETA SORRR E ; 0 TEBY .S:ASRP E AS R SSPAG INSTLIE BLTAL BOYM S ; 2 TEBY .S:ASTP S AS R SSPAD ILBUY ARIN B ; 2 TEBY .S:ASOP B AS R S AS PNGTIIS L ; 2 TEBY .S:ASOP L AS R . ONS ISMRAS AS PNTREUR C ; 0 TEBY . S:AS P AS RT. IDOT N'DO= 0. ONE ACPLE AK TTON IOCT AOR FSSPA= #. ESCHITSWS AS P ; AS R pAGE RAS  ; 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: JSR PC,SAVREG BILITY AND EASE OF CONVERSION THE INPUT IS A STANDARD RAS ; DOS LINE BUFFER HEADER-DUMP MODE IS NOT PERMITTED. RAS ; REGISTER R0 IS DESTROYED. RAS LPRINT =. ; RAS MOV 2(SP),R0 ; GET ADDRESS OF BUFFER HEADER RAS MOV (SP)+,(SP) ; MOVE RETURN ADDRESS OVER IT. RAS TST (R0)+ ; BUMP R0 TO WORD 2. ; AS.RADREK IS DCEURSON OEDCTTEDEF EO1 F I ; 0 TEBY .F:EORC S AS.RRSHA CSTLOG-ON LOO TGEMA ICEURSO1 F I ; 0 TEBY .N:GLON LR TOCADIINB TAR ONKLA B ;   0 TEBY .: AGFLBT SSLA C'SONTIUCTRNS I ;   0 TEBY .: SSLAIC S RA D UNFOS OLMBSYD NEFIDEUNO N -=0; 0 E YT.B: FLYMUS SKMAG INSTLIE BLTAL BOYM S ;   0 TEBY .: SKMAST R.TEUNCOL BOYM S ;     'SUTTPOUD l ;SAVE REGISTERS MOV CONTOP ,R5 ;BOTTOM OF UST MOV USRTOP ,R4 ;TOP OF UST CLRB LCSECT  ;NOT CSECT'S STLST9: ADD #10,R5 ; NULLIFY SUBTRACT AT STLST1 RAS STLST0: JSR PC,ROTATE  ;CALL ROTATE I/O BUFFERS SUB #DFSILO-LINUSZ+2,R0 ; MOVE R0 TO BYTE 0 OF BUFFER RAS MOV R0,@R3  ;CURLIST=R0,SECOND DATA BYTE MOVB #-5,LISTSC ; SET FOR 6 SYMBOLS/LINE (ONLY ON LP) PAL MOVB STMASK,R0 ; GET SEARCH MA RAS MOV 2(R0),(R0) ; MOVE WORD 3 (BYTE COUNT) INTO WORD 2. RAS CLR 2(R0) ; CLEAR WORD 3 RAS LP010: CMP LPLIST,#1 ; IS THE LP I/O LIST FREE? RAS BNE LP010 ; WAIT UNTIL IT IS. RAS TST LPERR ; ANY ERROR ON LAST LINE RAS BEQ LP020 ; NO. RAS MOV #LPTEIS LLEAB TOLMBSY;   0  E YT.B C:TSIS LR TEUNCOM TE I'SONSIESPREX;   0  E YT.B T:UNCO IR TEUNCOR TEACARCHS M'TE I ;   0 TEBY .R:HATCCN ORATICND IUTTPOUY ARIN B ;   0 TEBY .: UTNOBI ORATICND INGDIEN PEMIT;   0  E YT.B N:MITE IG LA FUTTPOUS D' IR.HA C ;   0 TEBY . G:LASF ORATICND IPETYS M'TE I ;   0 TEBY . E:YPIT ENEV .  IDN IOCTSEL RONTCO ;  0 TEBY . D:TISC CS AGFLS E'BLTAL BOYM SRYRAPOEM T ;   0 TEhSK AND SET COND CODES FORRAS BEQ STLST1 ; BRANCH IF NOT UNDEFINED SYMBOL LISTINGRAS MOVB #-15.,LISTSC ; IF UNDEF SYM SET FOR 16 SYMBOLS/LINE RAS STLST1: SUB #10,R5  ;MOVE FLAG WORD POINTER. CMP R5,R4 BEQ STLST2  ;END OF TABLE. TSTB LCSECT BNE STLST4  ;.CSECT TABLE MOV R5,R2  ;FOR DECODE BITB R0,(R5) ; IGNORE DEFINED SYMBOLS (IN UNDEF SYM) RAS BNE STLST1  ;IF STMASK CONTAINS DEFFLG!GLBFLG INCB ERMS,-(SP) ; LINE PRINTER - ERROR MESSAGE ON TTY RAS EMT $TTYOT ; PRINT IT RAS EMT $EXIT ; EXIT RAS LP020: MOV R0,LPLDAT ; FREE. PUT ADD OF LINE BUFFER IN LIST.RAS MOV #LPLIST,-(SP) ; PUT LIST ADD. ON STACK RAS EMT $LPRNT ; GO PRINT LINE RAS MOV (R0)+,(R0) ; RESTORE DOS WORD 3 FROM ROSBY .: GSLATF 0 RDWO .  0 RDWO .  0 RDWO .  0 TEBY .: YMPSTM ERNTOU CLDIE FNGSIESDRAD ;  0 TEBY .: NTDCFL SSREDD ADD OBET US MYMPSTM;    N VE.E E BLTAL BOYM SRYRAPOEM T ;    0 RDWO .M:ERRTVA 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 BODLMRS ;  0 TEBY . D:2MSL R) ONTIEC SALRNTEEX (LEABATOCEL R2=;-    L BALO G1=d USYMFL ; SYMBOL FOUND - ONLY USED IN UNDEF PASSRAS ; CMP HUSERPC ,R5 ; ;BEQ STLST1  ;IGNORE USER'S PC BR DECODE STLST2:  JSR PC, STLLST ; CALL SYMBOL TABLE LISTED OUTPUT ;OUTPUT .CSECT TABLE TSTB STMASK ; SKIP IF UNDEFINED SYMBOL LISTING RAS BNE STLST3  ;EITHER NO .CSECT OR ALREADY DONE COMB STMASK  ;REVERSE SWITCH MOV PERTOP ,R5 ;BOTTOM OF .CSECT TABLE MOV CONTOP ,R4 ;TOP OF .CSECT TABLE COMB LCSECT  WORD 1 RAS ; NEEDED FOR LIST THAT DON'T CHANGE. RAS RTS PC ; RETURN TO CALLER RAS ; RAS ; LPLIST TABLE RAS LPLIST: .WORD 1 ; THREAD WORD RAS .BYTE 3 ; DEVICE NUMBER (LP) RAS .BYTE 1 ;-    ) 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 ;   0 TEBY . E:IZ SE AGIME RCOU SVETIECFF EHE TOF;     G INSSCERO PRETIEN` ;CSECT PROCESSING MOV #12,WORD4 ; CSECT #=0 TO GET UNAMED .CSECT RAS ; LABEL FLAG AND THE DEFINED FLAG RAS BR STLST9 ; RAS STLST3: CMP LPLIST,#1 ; HERE TO WAIT FOR COMPLETION OF LAST RAS BNE STLST3 ; LIST REQUEST. (LAST OF STLIST ROUTINE)RAS STLSTE:  JSR PC,POPREG  ; RETURN AFTER POPPING REGISTERS. STLST4: INCB WORD4+1  ;STAR ; EXIT TYPE RAS .WORD 0,0 ; NO I/O COMPLETE, ERROR TASK, OR PRIORYRAS LPERR: .WORD 0 ; STATUS (0=OK). RAS .WORD 0 ; SYSTEM WORD RAS LPLDAT: .WORD 0 ; ADDRESS OF LINE BUFFER RAS ; RAS ; TTY I/O LIST FOR LP ERROR-VERY BAD E 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  BTMTSY RDWO.: OPRTPE S)ESDRADT ESGHHI (ST POFM TOOT;B  BBMTSY RDWO.: OTRBPE T.ENEMAT\T WITH 002 MOV -6(R5),WORD1 MOV -4(R5),WORD2 MOV @R5,WORD3 ;SIZE OF .CSECT MOV #WORD4,R2 CLRB LISTSC  ;1 SYMBOL PER LINE.   ; DECODE A 2-WORD MOD40 PACKED SYMBOL TO   ; STANDARD ASCII ENCODED CHARACTERS DECODE: JSR PC,SAVREG  ; CALL SAVE REGISTERS MOV R2,R5 MOV (R3),R1 ; GET ADD OF NXT SYM.-R3=ADD OF CURLIST RAS SUB #6,R2  ;ADDRESS OF 1ST TRIAD MOV R1,-(SP) ; PUT ADD. OF 6 CHAR. SLOT ON STACK. RA RAS LPERMS: .WORD 1 ; THREAD WORD RAS .BYTE 0 ; DEVICE (TTY) RAS .BYTE 2 ; EXIT TYPE RAS .WORD 0,0,0,0,MES ; REST OF I/O LIST RAS MES: .WORD LPERLN,0 ; # CHARACTERS, SYSTEM RAS .ASCII / ** LP ERR-RASM ABORTED**/ ; RAS LPERLN =.-MES-4 ST;     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 C0  D OR.W : LGDFRL GERATO S ;   0 TEBY . T:CNEL RE IVCTREDID RL;   0 XS MOV R2,-(SP) ; PUT ADD. OF WORD 1 IN RAD50 ON STACK. RAS EMT $RADUN ; CONVERT RAD50 TO ASCII (6 CHARACTERS).RAS ADD #7,R1 ; BUMP CHARACTER POINTER TO NEXT FIELD. RAS    ; FORMAT THE LISTED OUPTUT TSTB LCSECT ; SKIP IF CONTROL SECTION LISTING RAS BNE DECOD9 ; NEVER A REG OR AN EQUATE RAS TSTB R0 ; IF THIS IS UNDEFINED SYMBOL LISTING RAS  ; MESSAGE LENGTH RAS .EVEN RAS .PAGE RAS   ; 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  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 AS P ANGRIDUD REROER;     S NELIE THL ALF OUM SHE T ;   0 RDWO .: UMRSERT BNE DECODD ; ONLY HAVE SYMBOL ITSELF. RAS  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  MOVPROVIDES DIRECT    ; SUPPORT EBBUF: SUBR09: JSR PC, SAVREG ; CALL SAVE REGISTERS  MOV  #TBBUF,R4  CLR  R0   ; REQUEST REGISTER SETUP  JSR PC, 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   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;     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 RPB  #'=,@R1  ; NO, DIRECT ASSIGNMENT DECOD9: CMPB (R1)+,(R1)+ ; ADD 2 TO R1 (ADD OF NEXT BYTE) ODD/EVNRAS MOV R1,R3  BITB  #DEFFLG,@R5  ; IS SYMBOL UNDEFINED ?  BNE  DECODA  ; NOPE MOVB #'*,-(SP) ; YUP. PUT '******' INTO ADDRESS RAS MOV #5,R2 ; AREA OF LISTING RAS DECODH: MOVB (SP),(R1)+ ; RAS DEC R2 ;    ; COUNTER = TBBUF(0,1)  CMP  @R2,#6  ; BUFFER CONTAIN ANYTHING?  BGT  EBBUF2  ; YES, OUTPUT THE BUFFER  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  EBB ;     INE INUTROUB SCHARSE;     E THY BEDUSS NTTANSCO;     R TEACARCH' 'B0 -4OD MOFE BLTA;  10.-  =  N COYT B. RDWOG LA/FIDS L'BOYM SOFS ESDRAD;   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: RMTEL RAS BGT DECODH ; RAS MOVB (SP)+,(R1)+ ; LAST '*' RAS MOV R3,R1 ; RESET R1. RAS  BR  DECODJ  ; CHECK AVAILABLE SPACE DECODA:  MOV  -2(R5),R4  ; R4 = EFFECTIVE VALUE  MOV  #6,R2  ; R2 = 6, ITERATIONS  ADD  R2,R3  ; R3 = R3+6  JSR PC, BINASC ; CALL FOR BINARY TO ASCIUF4  ; NOPE, PROCESSING COMPLETED EBBUFB: CMP #42,RLDCNT ; **** TEMP CHECK FOR SIZE **** RAS    ;IF RLDBUF IS FULL THEN OUTPUT  BLE  EBBUF2  CMP  R1,#MAXBBA-10  ; IS THE BINARY BUFFER FULL ?  BHIS  EBBUF2  TSTB  RLDFLG  BNE  EBBUF4  BR  EBBUF5    ; OUTPUT THE BINARY BUFFER EBBUF2: JSR PC,CHECKSUM ; GO COMPUTE CHECKSUM AND PLACE IN BUFF.RAS JMP EBBUF3 ; RETURN HERE IF NOT ON BINARY PASS.AV S N VE.E L BOYM SLEABATOCEL RUSIOEVPR;   F OIDT ECCS .INTAINMAO ;T     NETIOUBRSUN IOSSREXP EIND SE;U  0E YT.B C:SERG P AL P. ERADHEE AG PINS ERCTRAHA COFR BEUM N ; 6 F-BUAG-P . =N BLAG P AS R ; LFF, L TEBY . AS R ; /SS /I CIAS . C:SE P AS R ; :/MM /I CIAS . N:MI P AS R ; HI 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 JSR PC,BINASC  ;BINARY TO ASCII CONVERSION DECODI:  BITB  #GLBFLG,@R5  ;SUFFIX G  BEQ  DECODB  MOVB  #'G,7(R1) DECODB: ADD #14.,CURLIST ; 22 CHAR/SYMBOL IN FULL LISTING R RAS CMP #10,BINBUF+10 ; RETURN HERE IF ON BINARY PASS. IS THERAS BGE EBBUFF ; BUFF. READY (FULL) FOR OUTPUT? RAS MOV #BINBUF,-(SP) ; YES. PUT ADDRESS ON STACK AND CALL RAS JSR PC,BFWRIT ; ON BFWRIT TO BUFFERER IT FOR DISCIO. RAS EBBUFF: CMP #2,RLDCNT ; HOW ABOUT THE RELOCATION BUFFER? RAS BGE EBBUF3 ; IS IT READY FOR OUTPUT? RAS JSR PC,OUTBIN :/HH /I CIAS .: URHO P AS R ; AB T TEBY . AS R ; /YY /I CIAS .: ARYE P AS R ; / 19M-MM /I CIAS .H:NTMO P AS R ; -/DD /I CIAS . Y:DA P AS R ; AB T TEBY . AS R ; X/XXXX /I CIAS .M:NUAG P AS R DAS DECODD: ADD #8.,CURLIST ; ONLY 8/SYM IN UNDEF LISTING RAS JSR PC,SETREG ; OF CURLIST. RESTORE REG. FROM DECODE RAS  INCB  LISTSC  ; INCREMENT SYMBOL COUNTER  BGT  DECODC  ; LO BUFFER FULL, OUTPUT  JMP  STLST1  ; PROCESS THE NEXT SYMBOL DECODC:  JSR PC, STLLST ; CALL SYMBOL TABLE LISTED OUTPUT  JMP  STLST0 .PAGE PAL  ; SUBROUTINE SYMBO; YES. DO IT. RAS EBBUF3:  MOV  R5,R0  JSR PC, BBINIT ; CALL BINARY BUFFER INITIALIZATION  TSTB  BINOUT  ; GENERATE THE EOT ?  BEQ  EBBUF7 EBBUFC:  TSTB  RLDFLG  BNE  EBBUF4  BR  EBBUFA EBBUF7: ; RAS EBBUF4: TST  (R6)+  ; MAINTAIN THE STACK POINTER  JSR PC, POPREG ; CALL SET REGISTERS AND RETURN EBBUF5:  INC  @R5 EBBUF8:   ; BUFFER O ; /GEPA /I CIAS . AS R ; AB T TEBY . AS R ; / 1AV0 /I CIAS . AS R ; AB T TEBY . AS R E.IM TND AE,AT D#,E AG P ; / SMRA /I CIAS . AS RH IT WNELIL AL CHE TENTHD ANE AG PEW N ; B TAF, F TEBY .1:BCAG P AL P NTOU CTEBYL UACT A ; N BLAG@L TABLE LISTED OUTPUT STLLST: SUB #2,(R3) ; BACK OVER 2 BLANKS RAS MOVB #LF,@(R3) ; TERMINATE CHAR. STRING WITH A LF. RAS MOV BHADRS+2,R1 ; GET ADDRESS OF BUFFER HEADER. RAS SUB #DFSILO,R1 ; GET ADD. OF OUTPUT BUFFER HEADER. PAL MOV R1,-(SP) ; PUT BUFFER HEAD. ADD. ON STACK FOR LP.RAS CMP (R1)+,(R1)+ ; BUMP R1 TO ACTUAL BYTE COUNT AND THEN RAS SUNE 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 BYTE TO  ADD  (R6)+,@R3  ; THE BLOCKS CHECKSUM  BR  EBBUF1  ; CONTINUE ENTERING PROCESS .PAGE PAL ;THIS SUBR INITIALIZES THE RLD BUF P RDWO . AL P DEMOD ANS TUTA S ; 0 RDWO . AL P . GESAES MERADHEE AG POFH GTEN L ; N BLAG P RDWO .F:BUAG PR FEUF BGESAES MGEPA;  ENEV .  ONTICALORED CELASPDIE IVITDD ACTSE.C;  16  =4 4.LD RN IOATOCEL RVETIDIADT ECCS .; 5 1= .3D4RL ONTICALORED CELASPDIT ECCS .; 4 1= .2D4RL ONTICALORET ECCS .; 2 1= .1D4RL 11 =3 3.LD R0 1  = .2D3RL 7  = .1D3RL 6  = .6D2RL 5  = .5D2RL 4  = .4D2<B R1,(R3) ; COMPUTE THE # OF CHARS. IN THE BUFFER RAS MOV (R3),(R1) ; AND PLACE THE # IN THE ACTUAL BYTE CT.RAS JSR PC,LPRINT ; BYTE COUNT. THEN PRINT IT. RAS INC PAGING ; INCREMENT LINES ON THIS PAGE COUNTER. RAS CMP PAGING,MAXLINES ; IS THIS A FULL PAGE YET? RAS BLT STLLS1 ; NO. GO HOME. RAS JSR PC,PHEAD ; YES. PRINT HEADERFER HEADER RLDINT: MOV R1,-(SP) ; SAVE JUST R1. RAS MOV #RLDCNT,R1 ; GET ADDRESS OF FIRST WORD TO SET. RAS MOV #2,(R1)+ ; SET INITIAL BYTE COUNT. RAS MOV DIRCMD,(R1) ; PUT SPECIFIED CMD IN BLOCK. RAS MOV (SP)+,R1 ; RESTORE R1. RAS RTS PC ; RETURN TO CALLER. RAS .PAGE RL 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  =  D CMLD R3  =  R DIXT TB 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 S RA ; S RA R ROERD EACR; 1 4630 = 1 R1ER S RA 8 ON NEW PAGE. RAS STLLS1: RTS PC ; GO BACK TO CALLER. RAS .PAGE PAL ;ARITHMETIC CONDITIONAL ASSEMBLY PROCESSORS ; ;FORM --- .IF??? EXPRESSION ;.IFZ IF EQ 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 JSR PC,COND ;THE EXPRESSION TST RESULT ;TEST THE RESULT JMP IF000  PAL ;THIS SUBR PUTS THE RLD DIRECTIVE INTO THE RLD BUFFER.IT IS CALLED ;BY THE APPROPRIATE ADDRESSING MODE HANDLER.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 ; ; RLDFIL: SUBR33:  JSR PC, SAVREG  MOVB  RLDCNT,R5  ADD  T RIFW B -ORRR EIOSCDI; 1 0630 = 0 R1ER S RA L UL FLEAB TOLMBSY; 0 4634 = R9ER S RA ORRR EUPBF; 0 0634 = R8ER S RA E IL FCHAT BHE TNEFIDET NON CA; 0 4633 = R7ER S RA D EAFR B -ORRR EIOSCDI; 0 0633 = R6ER S RA ORRR EADREBF; 0 4632 = R5ER S RA ORRR EERNTRI PNELI; 0 06324 (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 BR IF010 BNE IF010     ;IFNZ IF020: INCB DNTACT ;CONDITION NOT SATISFIED TST LISTON ;LISTING SUPPRESSES? BEQ IF010  ;BRANCH IF NO INC LISTKEY ;INCREMENT .IF NESTED COUNTER ;INCREMENT DON'T 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)+  ;RLD BUFFER  SUB  #2,R4  BEQ  RLEX  MOV  R2,(R5)+  ;CHECK  SUB  #2,R4  BEQ  RLEX  ;IF SO RETURN  MOV  R3,(R5)+  ;TO RLEX: JSR PC,POPREG .PAGE PAL ;RLDBYT THIS HANDLES BYT RLD CMDS ; ; ; RLDBYT: SUBR37:  JSR PC = R4ER S RA T PUUT OONF EO; 0 4631 = R3ER S RA . LSNAIOITNDCOD TEES NNYMAO TO; 0 0631 = R2ER S RA . TSECCS .NYMAO TO; 0 4630 = R1ER S RA S DECOR ROER; S RA ; S RA E.IL FUPBFA K AC P -CKPABF; 43 = CKFP$B S RA . NTMELE EUPBF0ASSEMBLE COUNTER. IF010: MOVB #-1,SIZE ;LISTING FORMAT CONTROL JMP EXIT ;EXIT IFPRO2: MOV #2,R0  ;PRIME COND JSR PC,COND  ;NOT TO EVALUATE THE EXPR. MOV R0,R4  ;SETUP R4 FOR "OR" CONDITION CLR R2  ;FINAL RESULT GOES IN R2 IFDF00: MOV #IFDF25 ,-(R6) ;STACK THE "OR" OPERATOR IFDF05: JSR PC,ITEM  ;GET NEXT ITEM TSTB ITYPE  ;IS THIS AN OK SYMBOL? IFDF12: JSR PC,SEARCH  ;YES--SEARCH SYMBOL TABLE BGT IFDF12  ;FOUND IN P.S.T--IG, SAVREG  MOV  #RLD2.5,RLDIR  MOV  #2,R4  ;FILED COUNT  JSR PC, RELREF  MOV  GLBSY1,R1  MOV  GLBSY2,R2  MOV  RESULT,R3  BISB  #200,R0  ;BYTE OPERAND  MOV  #10,R4  JSR PC, RLDFIL  INCB  RLDFLG JSR PC,POPREG .PAGE PAL ;OUTBIN THIS SUBR OUTPUTS ON THE BINARY DEVICE ; THE CONTENTS OF THE RLD BUF ;; ; ; OUTBIN: JSR PC,SAVREG ; SAVE REA E ETEL D -LTDEBF; 42 = LTFD$B S RA . NTMELE EENOPN ASELO C -OSCLBF; 41 = LSFC$B S RA NTMELE EUPBFA N PEEO R -ENOPBF; 40 = PNFO$B S RAUPBFO NT INTMELE EEW N AERNT E -TRENBF; 37 = NTFE$B S RA E IL FUPBFA T NI I -ITINBF; 36 = NTFI$B S RA E.IL FOS R ANEFIDET ENEMAGAN MLEFI; 51 = INEF$D S RA INY TT; . 12 ,NORE BNE IFDF10  ;NOT FOUND IN U.S.T. IFDF15: BITB #DEFFLG,TFLAGS ;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 DEFINED CLR R2  ;LAST TERM="AND", SYMBOL UNDEFINED IFDF35: MOVB SAVTERM ,R0 ;GET THIS TERMINATOGISTERS R1-R5 RAS MOV #RLDCNT,R1 ; GET ADDRESS OF # BYTES IN BLOCK INTOR1RAS MOV R1,R4 ; & R4 (INCLUDES BINARY FLAG WORD OF 1) RAS ADD #4,(R1) ; COUNT FLAG WRD & BYTE COUNT WORD. RAS MOV (R1),R5 ; GET BYTE COUNT INTO R5. RAS ADD R5,R4 ; CONVERT R4 TO ADD. OF CHECKSUM. RAS CMPB -(R4),-(R4) ; MUST SUB 2 FOR CORRECT ADDRESS IN R4. RAS = INTY$T S RA T OUY TT; . 11 = OTTY$T S RA ERNTRI PNELI; . 21 = NTPR$L S RA R DEEA RRDCA; . 20 = ADRE$C S RA METIE THT GE; . 25 = METI$G S RA TEDAE THT GE; . 26 = TEDA$G S RA IOSCDI; . 19 = IOIS$D S RA (R 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  ;ERRORED SYMBOL OR ILLEGAL CLR R2  ;TERMINATOR (DEFAULT=UNDEFINED) IFDF50: TST R2  ;CHECK RESULT JMP IFDF55 (R1) IFDF55: BE BIC #1,R5 ; INSURE FULL WORD TRANSFERED. RAS TST (R5)+ ; ADD 2 TO R5 - COUNTS THE CHECKSUM RAS ; & AND, WITH BIC, ODD BYTE (IF ANY). RAS MOV R5,RLDBUF+4 ; AND STORE INTO BUFFER HEADER. RAS CLR R5 ; CLEAR R5 TO BUILD CHECKSUM IN. RAS OUTB10: MOVB (R1)+,R2 ; GET A BYTE AT A TIME TO ADD TO CHECK- RAS ADD R2,R5 ; SUM. ITEX; 4. = T XI$E S RA Y ARIN BTOI CIAS; . 15 = BNSC$A S RA I CIASO TRYNABI; . 14 = ASIN$B S RA 50AD RTOI CIAS; . 38 = PKAD$R S RA IISC ATO0 D5RA; . 39 = UNAD$R S RA S TEUAEQT EM; S RA $Q 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 ,-(R6) ;STACK "AND" OPERATOR BR IFDF05 .PAGE  RAS CMP R1,R4 ; HAS ENTIRE BLOCK BEEN DONE? RAS BLT OUTB10 ; NO. RAS COM R5 ; YES COMPLEMENT CHECKSUM - FLAG WORD RAS MOVB R5,(R4)+ ; OF 1 IS THUS CONSIDERED. STORE CHECK-RAS CLRB (R4) ; SUM. ALWAYS ROOM TO BLANK NEXT WRD RAS ; THIS WILL INSURE A FULL WORD TRANSFER RAS MOV ; 27 2  = LGTFRS 6  = NDJEOB 0020  =  R DIYM S2  =  D ENSD G0 40 1  = MDNCTR 50 4  = LGCFCS 10 4  = LGCFAS 1  = MDDCGS 61 3  = SZHFST 2476  =  2 BS A1 4027 1  = S1AB 0 =  2 EL R0  =  1 EL R AS R ; AS R K.ACSTM AS ROFE IZ S ; CKTA S =Z SITK SG LA FALOBGL;   0 10  =  G FLLB GG LA FLEABATOCEL R ;  40  =  G FLEL R3 T BI,  PAL ;.ENDC PROCESSOR RENDC: DECB CNSTLV ;DECREMENT NESTED LEVEL COUNTER BGE ENDC01 ;TOO MANY .ENDC'S? INCB QERROR ;YES - SET QUESTIONABLE SYNTAX CLRB CNSTLV ;AND CLEAR NEST LEVEL COUNTER ENDC01: TSTB DNTACT BEQ IF010 ;IN DON'T ASSEMBLE STATE? DECB DNTACT ;YES - DECREMENT THE COUNTER BNE IF010 TST LISTON ; DON'T PRINT THE '.ENDC' ONLY IF IN PAL BEQ IF010 ; .NLIST MODE. PAL #RLDBUF,-(SP) ; STACK ADDRESS OF BUFFER HEADER. RAS JSR PC,BFWRIT ; VIA BFWRIT WHICH BUFFERS TO DISCIO. RAS JSR PC,POPREG ; RESTORE REGISTERS AND RETURN TO CALLERRAS .PAGE PAL   ; 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 THEAGFLE 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  = 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 MOV #-1,LISTKEY BR IF010 ;EXIT .PAGE PAL ;CONDITIONALS FRONT END PROCESSOR (.IF...)  ;IF R0 = 0 ON ENTRY, THEN EVALUATE  ;THE EXPRESSION. AN ERRORED EXPRESSION  ;IS SET TO ZERO BY DEFAULT AS IS A NULL EXPR. COND: SUBR38: INCB CNSTLV ;INCREMENT NEST LEVEL BGT COND00  ;TOO DEEP?    ;NO - BRANCH CLR -(R6) MOV #ERR2,-(R6) JMP ERROUT COND00: TSTB DNTACT ;IN DON'T ASSEM     ; ASSEMBLY LOCATION COUNTER  MOV  #BOCSUM,R3  ; R3 = THE ADDRESS OF THE     ; 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     ; INITI D ;   0 TEBY .: UMCNDE 0 TEBY .  0 TEBY .  0 E YT.B 0 E YT.B Y.ARNDOU BENEVA ; 0 E YT.B E AV HSTMU- R FEUF BRYNABIY ARORMPTE; 0 E YT.B F:BUTB N VE.E 0D OR.W E:ORST TR TOCADIING INYP TERSTGIRE;0 RDWO.: YPGTRE RDWOE LUVAS OT DOFR DD;A 0D OR.W C:RPSE UC PONTIEC STELUSOAB;0 RDWO.: PCBS AN IOCTRUSTON CERMBNUL MACIDE;0 RDWO.: 10SEBA ONTIUCTRNSCOR BEUM NALCT;O 0D OR.W 8:E0AS B AS R BLE STATE? BEQ COND01 ;NO INCB DNTACT ;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 CHECK FOR ERRORS COND02: JSR PC,EXPE3 ;EXPRESSION EVALUATION TSTB ERROR ;WAS THERE AN ERROR? BNE COND03 ;YES TSTB ICOUNT ;IF EXPRESSION WAS NULL, THEN BNE COND04 ;RESULT = 0 BY DEFAULT COND03: CLR RESULT ;YES - RESULT = 0 BY DEFAULT COND0ALIZATION ALSO ?  BEQ  BBIN01  ; SETUP ONLY  MOV  #RLDCMD,DIRCMD  JSR PC, RLDINT    ; BINARY BUFFER INITIALIZATION  MOV  #BINBUF,R0  ; R0 = THE ADDRESS OF THE     ; BINARY BUFFERS HEADER  MOV  #BOMBC,(R0)+ ; SET THE MAX. BYTE COUNT CLR (R0)+ ; CLEAR WORD 2 RAS  MOV  #1,(R0)+  ; CURRENT BYTE COUNT = 1  MOV  #1,(R0)+  ; FIRST DATA WORD = 1  MOV  #10,(R0)+ GEPAS/NELI# T ULFADEN GEYS S ; E INNL $ =N MLOR N AL P . NSIOCTRUSTIND OR WTIUL M ; AL PBYD SE U. EDNTRI PNELIT AS LOF# E IN L ; 0 RDWO .N:TLAS L AL P . ETES RILNT UNTRI P'TON D+1 = ; ALTPSERE. NELIS HI TNTRI P'TON D-1 = ; AL P E IN LNTRI P 0 = ; AL P CHITSWT INPRE IN L ; 4: RTS R7 ;RETURN TO CALLER .PAGE PAL ;RAD50 HANDLER ; ; RRAD50:  MOV  #TMPSYM,SYMBOL JSR PC,EVENPC  INCB  RADIX  MOV  #3,CNTCHAR .PAGE PAL RASCII:   ;ASCII HANDLER ASCII2:  MOV  #SUBR11,R4  ; R4 = PROCESSORS ADDRESS  DEC  CURBYTE  ; DECREMENT CURBYTE POINTER  JSR PC, CBTABS   ; BLOCKS BYTE COUNT = 6  MOV  #TXTDIR,(R0)+  MOV  @R5,(R0)+  ; THIRD DATA WORD =     ; 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    0 RDWO:.EYTKIS LY BLEMSS-AON NSSREPPSU= 1 , ALSU UAST IS L =;0  0D OR.W N:TOIS LE AG PER PESIN LERMBNUM MUXIMA;0 7D OR.WS:NELIAX ME ATPD UOR FERMBNUE IN LERBLEMSS;A 0D OR.W : NONELI L)TAOC (ERNTOU CGEPAE IVATULUM;C 0D OR.W T:CNAG P) ESIN L2.(5E AG PNE;O    LODUMO, L)TAOC (ERNTOU CNELI;0 RDWO.: NGGIPA UEAL VVETITATIANQUS M'TE;I 0D OR.WY:ITNTUA QR TOLAMUCUACN IOSSREXP;E 0D OR.W T:ULES RK ACSTE OVABS ESDRADT 1S;0 RDWO.: OTKBST ST UOFP TO;0 RDWO.: OPRTUS LEAB TCTSE.CF O ; ON ENTERING CURBYTE POINTS TO THE ! ASCII0: JSR PC, PRINT ; CALL PRINTABILITY  BLE  ASCII1  ; CHARACTER IS PRINTABLE  INCB  IERROR  ; ILLEGAL CHARACTER  INC  CURBYTE  ; REJECT THIS CHARACTER  BR  ASCII0  ; TRY THE NEXT CHARACTER ASCII1: MOVB  @CURBYTE ,R3  ; R3 = VARIABLE TERMINATOR  CMPB  #40,R3  BEQ  ASCII3  BIS  #006400,R3  ; R3 = CAR-RET TERMINATOR  MOV  #SAVTERM,R2  ; R2 = EFF. ; FIRST AVAILABLE BUFFER BYTE  MOV  (R6)+,R0  ; R0 = THE MAXIMUM BINARY     ; BUFFERS ADDRESS  RTS  R7  ; RETURN .PAGE PAL ;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. RELREF: SUBR34:  MOVB  BINCNT,R0  SUB  #6,R0  ADD  R4,R0  MOVB  R0,OP;T 0D OR.W P:TOON C; ; AS R ENEV . 0  E YT.B : ORRR E: RRXEMA 0 TEBY .: ORRRUE EDNCREFEREL BOYM SEDINEFND U ;  'U  E YT.B 0  E YT.B R:ROER TR ROERN IOATNCRU T ;  'T  E YT.B 0  E YT.B R:ROER NR ROERR BEUM N ;  'N  E YT.B 0  E YT.B R:ROER IR ROERR TEACARCHL GALEIL;   I ' TEBY .  0 TEBY .: ORRRBE ORRR ENGDIUNBO;   B ' TEBY .  0 TEBY .: ORRR  VALUES ADDRESS  MOVB  R3,@R2  ; SAVTERM = INITIAL TERMINATOR  INC  CURBYTE  ; INCREMENT CURBYTE POINTER  CMPB  @CURBYTE ,R3 ASCII3: BEQ ASCII4 ; RAS  SWAB  R3  CMPB  @CURBYTE ,R3 BEQ ASCII4 ; RAS  SWAB  R3  MOV  #177000,R1  ; R1 = 177000  BR  BYTE1  ; COMPLETE INITIALIZATION RWORD:   ; WORD ASSEMBLY DIRRELCNT  MOV  RLDIR,R0  RTS  R7 .PAGE PAL  ; SUBROUTINE CHECKSUM FINALIZATION    ; BINARY BLOCKS BYTE COUNT 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)+ ; PUT ME ELAB LEDINEF DLYIPLTMU;   M ' TEBY .  0 TEBY .: ORRRDE EDNCREFEREN IOITINEF DLEUBDO;   D ' TEBY .  0 TEBY .: ORRRRE ORRR EERSTGIRE;   R ' TEBY .  S RA ; 0 E YT.B: ORRRZE S RA STNEL NAIOITNDCOA N IND.E; 'Z E YT.B 0 TEBY .: ORRRAE ORRR ENGSIESDRAD;   A ' TEBY .  0 TEBY .: ORRRQE AXNTSYE BLNAIOSTUE Q ;  'Q  E YT.B 0  E YT.B ECTIVE HANDLER  MOV  #177401,R1  ; R1 = -1/+1  JSR PC, EVENPC ; CALL EVEN THE LOCATION COUNTER  BR  BYTE0  ; COMPLETE INITIALIZATION ASCII4: JMP ASCIIX ; RAS .PAGE PAL RBYTE:   ; BYTE ASSEMBLY DIRECTIVE HANDLER  CLR  R1   ; R1 = 0 BYTE0:  MOV  #SUBR1B,R4  ; R4 = PROCESSORS ADDRESS  MOV  #0,R3  ; R3 = THE FOLLCHECKSUM INTO BUFFER. ALWAYS ROOMRAS CLRB (R1) ; TO BLANK NEXT BYTE. RAS  MOV  @R2,BINBUF+4 ; FINALIZE THE BINARY OUTPUT     ; HEADERS CURRENT BYTE COUNT ADD #2,BINBUF+4 ; INSURE FULL WORD TRANSFERED AFTER RAS BIC #1,BINBUF+4 ; COUNTING CHECKSUM. RAS  CMPB  PASS,BOPASS  ; IS THIS THE BO PASS ?  BNE  CHECK0   ; NO  ADD  #4,@R6  ; YES, R5 = R5+2 CHR:ROER PR ROERE ASPH;   P ' TEBY .  0 TEBY .: ORRRLE OWFLEROVR FEUF BNELIT PUIN;   L ' TEBY .  E)YT BGHHI (ORATICND IORRR E ;     E)YT BW LO (ERCTRAHA CIISC A ;     :ESRINT ERDWOE GLIN S ;     LEAB TORRR ELYMBSEAS;   B:TARR E AL P GEPA . R SOESOCPRC NIMONE MHE TITEX;  T XIEP JM  RDWOD ANMMCO= ) (0UFBB T ; UFBB,T)+R6 ( OV M: 3XINMA R3 @ CBOWING 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 .PAGE PAL  ; SUBROUTINE DATA ACQUISITION   ; THIS SUBROUTINE SUPPORTS THE DATA GATHERING   ; REQUIREMENTS OF THE THREE PRECEDING   ; ASSEMBLY DIRECTIVEECK0:  RTS  R7 ; RETURN .PAGE RAS ; THIS SUBROUTINE BUFFERS REQUESTS FOR BFUP ELEMENT WRITES BETWEEN RAS ; A SECTOR SIZED BUFFER FOR THE DISK AND THE VARIABLE LENGTH USER RAS ; I/O LINE BUFFER. IT IS ASSUMMED THAT THE ROS FILE HAS BEEN ALLOCATED RAS ; AND THAT THE NECESSARY BFUP ROUTINES USED TO OBTAIN THE CORRECT RAS ; RELATIVE SECTOR. RAS ; THE INPUT IN 2 E+IZ S =ZESI;   3 @R  B NC I: 3WINMA RDWOD ANOM CHE TTOIN;     S IT BNGSIESDRADE THE ACPL;  6 @R5,@R  S BI V:N3AI M0 = ) ,3(2UFBB T ;  +2UFBB T LR C: 3UINMA 0 =5)4,F(BUTB;  4 F+BUTB  R CL 4 = E IZ S ; R3,@#4  B OV M  ESOD MTEIAEDMM IWO TSE U ;     NDMAOM CLTAUEF DCTRUSTON C ; R5,@2727 # OV M  AXNTSYE BLNAIOSTUE Q ;  ORRRQE  B NC I  NDOU FDSELFIO TWT NO;     D RETEUNCOENS LDIE  HANDLERS.    ; INPUT INITIALIZED REGISTERS    ; OUTPUT COMPLETE HANDLER HANDLING    ;  RETURN IS TO SETSRC DATA:  MOV  #SAVTERM,R5  ; R5 = SAVTERM ADDRESS  JSR PC, DATERM ; CALL DATA TERMINATION  BNE  DAT00 ;NOT DATA TERMINATOR.  TSTB  ITEMIN  ; IS AN ITEM PENDING ?  BNE  DAT00  ; YES DAT0:  INCB  QERROR  ; NO, QUESTIONABLE SYNTAX  JMP  EXIT  ; EXIT VIA THE MAIN PROGRAM DAT00: BUFFER IS ASSUMMED TO BE IN STANDARD DOS FORMAT. RAS ; REGISTERS R1-R5 ARE USED AND RESTORED. RAS ; WHEN A DISK SECTOR SIZE BUFFER IS FULL, IT WILL BE OUTPUT USING EXIT RAS ; TYPE 2. UPON COMPLETION, THE ERROR STATUS WILL BE CHECKED. IF RAS ; NORMAL, ANY REMAINING CHARACTERS WILL BE TRANSFERED TO THE DISK RAS ; BUFFER AND CONTROL RETURNED TO THE CALLER. NO MODIFICATIONS TO RAS ; THE USER'S CHARACTER STRING WILL BE DONE. ONLY ONE FWO T ; 3VINMA  T BG R ZELYNA AAXNTSYL AL C ; X TAYN S C,PR JS D SEESOCPRS ICONEMMNY ARIN B ; : C2INMA L PA E AG.P C1INMA  R B  INEMIT  B NC I  C1INMA  E BL M TE I C,PR JS L N3AI M NE B  TEBYUR@C,,#'  B MP C  R6,@R4 @ IS B  R4 @ SR A  R4 @ SR A  ESYT B'SLTSUREP WA S ;  R4 @ ABSW E RCFO R C,PR JS R:N3AI M R ROER Q CBIN R N3AI M GT B  E2XP   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  ;YES (0 IN LOW ORDER BYTE)  BEQ  DATA00  ;ABSOLUTE EXPRESSION BLT DATB14  ;.GLOBL OR EXTERNAL    ;.CSECT EXPRESSION ;RELOCATABLE EXPRESSION CURRENT .CSECT JSR PC,SAVREG MOV #2,R4 MOV #RLD2.1,RLDIR USER MAY USE RAS ; BFWRIT AT ANY ONE TIME DUE TO ITS SINGLE DISK BUFFER. RAS ; THE ADDRESS OF THE USER'S BUFFER IS PASSED ON THE STACK. RAS ; RAS BFWRIT =. ; ENTRY POINT RAS JSR PC,SAVREG ; SAVE REGISTERS R1-R5 RAS MOV 12.(SP),R1 ; GET ADDRESS OF USER'S BUFFER HEADER. RAS CMP (R E C,PR JS 0 R LR C  NGSIESOCPRC NIMONE MSR J ; : 3QINMA L PA E AG.P RDWOD ANOM CHE T ;     NGTIUCTRNSCOE ETPLOM C ;     RDWOT ECBJ OXTNEE THR EACL;  U N3AI M BR S RDWO2 O TZESIE IZIMAX M ; R3,@#2  B OV M  DEMOE ATDIMEIMT ECIRND I ; R5,@37 # OV M  AXNTSYE BLNAIOSTUE Q ;  ORRRQE  B NC I: 3LINMA EDERNTOUNC ELDIE FNE O ; 3VINMA  Q BE R ZELYNA AAX;INTERNAL RELOCATION JSR PC,RELREF MOV RESULT ,R1 MOV #4,R4 BR DATB13 ;.GLOBL OR EXTERNAL .CSECT EXPRESSION DATB14: JSR PC,SAVREG MOV #RLD2.5,RLDIR ;GLOBL ADDITIVE RELOCATION CMPB #-1,RSLMOD BEQ DATB15  ;GLOBL EXPRESSION MOV #RLD4.3,RLDIR ;.CSECT ADDITIVE RELOCATION DATB15: MOV #2,R4 JSR PC,RELREF MOV RESULT ,R3 MOV #10,R4 MOV GLBSY1 ,R1 ;.GLOBL OR MOV GLBSY2 ,R2 ;.CSECT NAME DATB13:  JSR PC, RLDFIL  INCB 1)+,(R1)+ ; ADD 4 TO R1. NOW POINTS TO ACT BYTESRAS MOV (R1)+,R2 ; R2 HAS # BYTES TO TRANSFER RAS MOV R2,R4 ; SET ADD OF LAST BYTE TO TRANSFER RAS ADD R1,R4 ; INTO R4 (ACTUALLY LAST BYTE + 1). RAS MOV DSWBYT,R3 ; INITIALIZE THE CURRENT BUFFER BYTE PT.RAS BFW010: CMP R3,#DSWSIZ+DSWSIZ;BUFFER. ANY MORE ROOM (R3<128.). RAS BGE BFW040 ; NO. GO OUTPUT A BUFFER FUNTSYE THL AL C ; X TAYN S C,PR JS D SEESOCPRS ICONEMMNY ARUN;  1:NCAI M AL P GEPA . G INSSCERO PNDMACOE ETPLOM C ; 3WINMA  R B  RDWOD ANOM CHE TINTHWI;     D ELFIR TEISEG RHE TET S ; R6,@R4 @ SBBI H:N3AI ME RCFOR TEISEG RLLCA; CEORRF , PC SR J: 3GINMA AXNTSYE BLNAIOSTUE Q ;  ORRRQE  B NC I  EDITEXN IOSSREXP EIDVON-NO;  G N3AI M GT B  RNTUREL MANIMI; , ONSIESPREXL  RLDFLG  JSR PC, SETREG  BR  DATA00 DATB7:  MOVB  +1(R2),TERROR ; TERROR = HIGH ORDER BYTE  BEQ  DATA00  ; ZERO VALID VALUE  INCB  TERROR  ; TERROR = TERROR+1     ; NEGATIVE ONE VALID VALUE DATA00: SWAB @R6   ; RESTORE STACKED VALUE CMP #401,@R6 BNE DATB8 TSTB RSLMOD  ;.BYTE DIRECTIVE BEQ DATB8 CMPB #-1,RSLMOD BEQ DATB10   ;.GLOBL INCB AERROR BR DATB8 DATB10: JSR PC,RLDBYT LL. RAS BFW020: MOVB (R1)+,DSWBUF(R3); YES. TRANSFER THE BYTE RAS INC R3 ; COUNT IT. RAS CMP R1,R4 ; ANY MORE TO TRANSFER? RAS BLT BFW010 ; YES. RAS MOV R3,DSWBYT ; NO. FINISH UP AND RETURN. SAVE BYTE#RAS JSR PC,SETREG ; RESTOR REGISTERS R1-R4. RAS MOV (SP)+,(SAL C ; E3XP E C,PR JS 0 = 0 R ;  R0  R CL G INSSCERO PICONEMMNS RT;  F:N3AI M AL P GEPA . 5 E OD CCTJEOB;  CAINMA  R B  ONTICALOREE IVITDD AALOBGL;  YTDBRL , PC SR J B:NCAI MD OR WNDMACOE THD ILBU;  H N3AI M BR R ROERN IOATNCRU TTSSE;     E YT BERRD O;    H IG H'SLTSURE; R ROER,T +1LTSURE  B OV M: CAINMA ORRRAE  B NC I  BLLO.G;  CBINMA  Q BE  DATB8: MOV R3,R0   ; DIRECTIVE TERMINATED? DATA8: JSR PC,DATERM   ; CALL DATA TERMINATION BNE DATA1   ; NOPE DATB1: TSTB RADIX  ;RADIX HANDLING BEQ DATA0   ;NO THEN BRANCH DATB2: TST CNTCHAR BEQ DATB3 DATB5: CLRB @SYMBOL DEC CNTCHAR INCB SYMBOL BR DATB2 DATA0: MOV #SETSRC+2,R1  ; R1 = SETSRC ADDRESS TST @R6   ; ASCII DIRECTIVE? BLT DATA2   ; YES, EXIT.     ; THIS NO-OPED CODE INSURES BR DATA1 ASCIIX: DP) ; MOVE RETURN ADDRESS ON TOP OFF USER'S RAS RTS PC ; BUFFER ADDRESS AND RETURN. RAS BFW040: CLR R3 ; HERE FOR FULL DISK BUFFER. SET FULL RAS MOV #DSWLST,-(SP) ; BUFFER AVAILABLE, PUT DISCIO LIST ADD.RAS EMT $DISIO ; ON STACK AND CALL DISCIO, EXIT TYPE 2.RAS INC DSWSEC ; INCREMENT SECTOR COUNT RAS TST DSWERR ; ANY ERRORS? S RA ; T ARST ND.E S RA ; N VE.E S RA . ERFFBUE RVSERE;  ODLMRS1,#- PBCM  CAINMA  Q BE D MOSL R TBTS : 3CINMA 0 =LTSURE;   4 @R  R CL R ROERR TEISEG RET SS,YE;  R ROER R CBIN E OP N ; 3CINMA  Q BE ? R TEISEG REDYP TONSIESPREX;  E YPGTRE  T TS R TONAMIER TALIMIN M ;, ONSIESPREXL AL C ; E3XP E C,PR JS 0 = 0 R ;  R0  R CL G INSSCERO PICONEMMNP RA T ; : 3AINMA L PA E AG.P 1 =ZESIT SE; ECB SIZE INCB QERROR JMP EXIT     ; 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 ; JSR PC,CBTABS   ; CALL CHECK FOR BLANKS AND TABS ; CMPB #CR,@CURBYTE ; THIS CHARACTER A CAR-RET? ; BEQ DATA2   ; YES, VALID  RAS BEQ BFW020 ; NO - CONTINUE TRANSFER. RAS BFERR: MOV DSWERR,-(SP) ; YES - PUT ERROR VALUE RAS MOV #ERR10,-(SP) ; AND CODE ON STACK AND JUMP RAS JMP ERROUT ; TO ERROR HANDLER. RAS ; THIS SUBROUTINE PADS THE REMAINING BYTES OF THE DISC BUFFER WITH RAS ; ZEROS. THE FULL BUFFER IS THEN WRITTEN OUT AND CONTROL RETURNED TO RAS ; THE USER. Z SISR+DIZRSDS.+.=: UFRBDS S RA R FENSRA TTOS RDWO# ; IZRSDS D OR.W S RA. ERSFANTRT ARSTO TD.AD. EC SVETILARE; 0 D OR.W: ECRSDS S RA E USO CIIS DOR FEDRVSERE; 0 0,0, D OR.W S RA D EA=R 0 -ONTINCFU; 0 E YT.B S RA R TOEC SLEFID IEIFECSPE US; 0 E YT.B S RA IDE IL FUPBF; E ILBF D OR.W: ATRDDS S RA  W N3AI M BR R ROER' 'QT SE, NO;  R ROER Q CBIN T XI ES,YE;  W N3AI M EQ B  T?RER-CAR TONAMIER T ; -4,# RMTEAV S PBCM T XI ES,YE;  W N3AI M EQ B  ?ONOLICEM SORATINRMTE; 5 #- , M ERVTSA  B MP C  NGSIESOCPRR LAGUIN S   ;   TI RT,AL HT,AI WS,TERAPE ODECON IOITNDCO;  0:NCAI M AL P GEPA . G INSSCERO PNDMACOL NAFI;  H N3AI M BR R ROERG INSSREDD!CASE SO EXIT ; CMPB #';,@CURBYTE ; THIS CHARACTER A SEMICOLON? ; BEQ DATA2   ; YES, VALID CASE SO EXIT ; INCB QERROR  ; NEITHER, QUESTIONABLE SYNTAX ; COMB @R6   ; SET SIZE < 0 DATA1:  TSTB  RADIX  BEQ  DATB4 RADB4:  SWAB  R0  ; THIS PORTION  MOVB  @CURBYTE ,R3 ; CARRIES OUT  CMPB  R3,#'0 ; THE TRANSLATION  BLT  RAD01 ; AND PACKING  CMPB  R3,#'9 ; OF WORDS  BGT RAD01  ; AS SPECIFIED RAD00:  SUB  #22,R3 ;  B" RAS ; RAS BFPAD: MOV R0,-(SP) ; SAVE R0. RAS MOV DSWBYT,R0 ; GET # OF FIRST CHARACTER TO BLANK. RAS BEQ BFP030 ; FRESH BUFFER-DON'T NEED TO PAD. RAS BFP010: CMP R0,#DSWSIZ+DSWSIZ ; ANY ROOM LEFT& BGE BFP020 ; NO. ALL DONE. RAS CLRB S ESDRADR FEUF BTADA; ATRDDS D OR.W S RA D OR WEMSTSY; 0 D OR.W S RA USATSTR ROER; 0 D OR.W: RRREDS S RA . TYRIIOPRK IS DSTWELO; T1PRND E YT.B S RA K AS TORRR ENO; 0 E YT.B S RA E INUTROT XI ENO; 0 D OR.W S RA E YP TITEX; AE,OP N ; 31INMA  E BN ? 0 R =LTSURE;  0 ,RR4 @ MP C  R0N IGNSIS TEBYE ATAGOPPR;  0 ,RR4 @ VBMO D ODF IORRR ENGSIESDRAD;  1 N3AI M CS B  IT-B 1HTIG RLTSURET IFSH;   4 @R  R AS 2 T-ULES R =LTSURE;  4 @R2, # UB S  C. P'SERUST-ULES=RLTSURE; 4 @R , C RPSE@U  B SU 3:N3AI MR TEUNCO. OC LLYMBSEASF O ;      1 N3AI M NE B  ;  ODCMSE  B ST T R:NBAI M. CELA PKETA;  3 N3AI M BR T %R  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 RAD03:  BIC  #177700,R3  MOVB  R3,@SYMBOL  INC SYMBOL  BR  DAT& DSWBUF(R0) ; CLEAR THE BYTE. RAS INC R0 ; COUNT IT. RAS BR BFP010 ; REPEAT LOOP. RAS BFP020: CLR DSWBYT ; SET # OF NEXT BYTE. RAS MOV (SP)+,R0 ; RESTORE R0 RAS MOV #DSWLST,-(SP) ; PUT LIST ADD FOR DISCIO ON STACK. RAS EMT $DISIO ; WRITE IT OUT. 2 E YT.B S RA K)IS=D(1E OD CCEVIDE; 1 E YT.B S RA D OR WADRETH; 1 D OR.W: STRLDS S RA R TOEC SSKDIN IDSOR WOF# ; . 64 = IZRSDS S RA. D)EA ROT=N(0. ADRED OR WOLTRON CSTLA; 0 D OR.W: RDNWCO S RA. SE UTOR FEUF BSKDIN ITEBYT EX NOF# ; 0 D OR.W: YTRBDS S RA R FEUF BTADAD ANT IS LIOSCDI; S RA NOS OE DNGHINCRA B ; 31INMA  T BL L GALEILT HA T ; BRINMA  Q BE S RESUEN;  D MOSL R TBTS : 32INMA 3HINMA  R B  R4,@-1#B OVM R ROERG INSSREDD AET S ;  ORRRAE  B NC I: 31INMA EDERNTOUNC EONSIESPREXD OI V ;     NDOU FONSIESPREXD OI-VON N ; 32INMA  T BG R TONAMIER TALIMIN M ;     ONOLICEM SN,IOSSREXP ELLCA; 3 PEEX , PC SR J  0 =R0;   0 R LR C  NGSIESOCPRC NIMONE MCHANBRL NAIOITNDCO;  0:N3)B6 RADERR: INCB  QERROR  BR  DATB2 DATB6:  INCB  CURBYTE  MOV  CURBYTE ,R5  DEC  CNTCHAR  BNE  DATA8 DATB3:  MOV  #TMPSYM,R1  ;INITIALIZE ADDRESS JSR PC,SERCHB ; FOR CONVERSION  MOV  #TMPSYM+1,R2  MOV  #SETSRC+2,R1  MOV  #2,SIZE  BR  DATB9 DATB4:  MOV  @R6,SIZE DATB9:  MOV  @R2,TBBUF  CLRB  RADIX ASCIIY:  JSR PC, ENDLINE ; CALL END LINE DATA98: CMP LPLIST,#1 * RAS TST DSWERR ; ANY ERRORS? RAS BNE BFERR ; YES-GO HANDLE RAS INC DSWSEC ; NO. INCREMENT SECTOR ADD AND RETURN. RAS BFP030: RTS PC ; RETURN RAS ; DISCIO LIST AND DATA BUFFER RAS DSWBYT: .WORD 0 ; # OF NEXT BYTE IN DISK BUFFER. RAS DSWSIZ =64. F.UFSTR ROERO DGO; 90R0BF BR S RA K ACSTN ODECOR ROERT PU; ) SP-(6,RR#E V MO S RA CKTA SONE LUVAR ROERT PUR-ROER; P)(S,-RRREDS V MO: 10TSGE S RA RNTURE; PC S RT S RAR.FENSRA TXTNER FOO ER ZTEBYO TR3T SE; R3 R CL S RASSREDD AORCTSEE IVATEL RNTMERENC I. OK; ECRSDS C IN S RA E.ONT GO; 10TSGE AI M AL P GEPA . S ICONEMMN C,PR JS;  A N3AI M RDWO .: S6ASCL CSNIMONE M R JS;  Q N3AI M RDWO .: S5ASCL CSNIMONE M CHANBR;  0 N3AI M RDWO .: S4ASCL CSNIMONE M S RT;  F N3AI M RDWO .: S3ASCL CSNIMONE M RYNABI;  2 NCAI M RDWO .: S2ASCL CSNIMONE M Y ARUN;  1 NCAI M RDWO .: S1ASCL CSNIMONE M- ; IS ALL LISTING DONE? RAS BNE DATA98 ; WAIT HERE UNTIL IT IS. RAS DATB99: SUB #LINUSZ+6,CURLIST ; GET POINTER BACK TO OUT BUFF. RAS  INC  CURBYTE  ; INCREMENT CURBYTE POINTER DATA2:  TST  -(R1)  ; R1 = R1-2  RTS  R1  ; REITERATE SUBROUTINE .PAGE PAL ; DIRECT ASSIGNMENT STATEMENT PROCESSING  ; THIS SUBROUTINE RESOLVES THE . ; # WORDS IN DISK SECTOR. RAS DSWLST: .WORD 1 ; THREAD WORD RAS .BYTE 1 ; DEVICE CODE (DISK=1) RAS .BYTE 2 ; EXIT TYPE RAS .WORD 0 ; NO EXIT ROUTINE RAS .BYTE 0 ; NO ERROR TASK RAS .BYTE NDPRT1 ; LOWEST DISK PRIORITY. E BN S RA RSROERR FOK ECCH; RRREDS T TS S RA . 2PETYT XI-EIOSCDIE US; IOIS$D T EM S RA CKTA SONT IS L/O IIOSCDIT PU; ) SP-(T,LSSR#D V MO: ECTSGE S RA ; S RA . ERLLCAE THO TRNTURED AN, RSROERR FOK ECCH, SSREDD AORCTSEE TH; S RA T ENEMCRIN, LEFIP FU BHE TOMFRR TOEC S AADRED SE UISE INUTROUB SISTH; S RA E ATEROP;  0 NCAI M RDWO .: S0ASCL LEAB TMPJUG INSSLA CONTIRAPE O ; S:ASCLOP SSLA CONTIRAPE OCTLESE; 0)(R SSLAPC@O  P JM X DEINS ASCLP- O =R0; 0 ,R SSLAIC  B OV M  SSREDD A0)F(BUTB2= R ; R2F,BUTB # OV M  =0ZESI;   3 @R  B LR C  SSREDD AZESI= 3 R ; R3E,IZ#S  V MO S ESDRADT ULES=RR4;  4 ,RLTSURE # OV M  SSREDD A'SNDMACO= 5 R ; R5D,ANOM#C  V MO R TEUNCON IOATOC LHE TENEVL AL C ; 1FOLLOWING 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.   ; REGISTER 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  2 RAS DSWERR: .WORD 0 ; ERROR STATUS (0=OK). RAS .WORD 0 ; SYSTEM WORD RAS .WORD DSWDAT ; ADDRESS OF DATA BUFFER. RAS DSWDAT: .WORD BFILE ; BFUP FILE ID RAS .BYTE 0 ; USE SPECIFIED FILE SECTOR RAS .BYTE 3 ; FUNCTION - WRITE WITH WRITE CHECK RAS .WORD 0,0,0 ; S RA F.UFSTR ROERO DGO; UTROER P JM: 90R0BF S RA K.ACSTN ODECOR ROERT PU; ) SP-(5,RR#E V MO S RA . UEAL VORRR EINE IN LINS TEBY #VESA; P)(S,-R5 V MO: 80R0BF S RA . UPH ISIN FGO; 50R0BF BR S RA D.TEECET DNTMELE EOFF EOF IREHE; OFCESR CBIN: 70R0BF S RA . ERLLCAO TRNTURE; PC S RTC NPVE E C,PR JS E OD-COPS ICONEM MCKTA S ; ) R6-( , Y ITNTUA Q OV M E:ODPC O AL P GEPA . 7 RS RT : R0TEDA R05,@R PBCM 0 RB WA S  R0TEDA EQ B  R05,@R PBCM : 24BRSU M:ERAT DN IOATINRMTEA AT DNETIOUBRSU;  89INMA  R B E BLTAL BOYM S'SERUSY LAEROVL AL C ; AYRLOV , PC SR J: 1DINMA EDINEF DOLMBSYS HI TAGFL;  1 @RG,FLEF#D  B IS B: 1CINMA IDN IOCTSE. OGPR;) R11( , D MOECSB OVM 1 @RG,FLEL5 ; 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:  MOV  TMPSYM+1 ,-(R6) ; SAVE SYMBOLS FIRST TRIAD  MOV  TMPSYM+3 ,-(R6) ; SAVE SYMBOL'S SECOND TRIAD  MOV  HINDEX ,-(R6) ; SAVE SYMBOL'S ENTRY ADDRESS  MOV  6 ; RESERVED FOR DISCIO USE RAS DSWSEC: .WORD 0 ; RELATIVE SEC. ADD. TO START TRANSFER RAS .WORD DSWSIZ ; NUMBER OF WORDS TO TRANSFER RAS DSWBUF: .=.+DSWSIZ+DSWSIZ ; RESERVE ROOM FOR DISK BUFFER. RAS .EVEN ; RAS .PAGE RAS ; THIS SUBROUTINE TRANSFERS FROM THE DISK TO THE USER A SINGLE LINE. S RA D.ADT IS LOFP TON OD.ADN URET RMPBU; P)(S+,P)(S V MO S RA 5 -RR1E ORSTRE; G REET,SPC R JS S RA . ENTHR TOEC SUPK IC PLLWIR VE OIF; S RA L.AL CXTNER FOR TEINPOE YT BVESA; T BYSR,DR3 V MO S RA . ERNTOI PERFFBUK IS DTO2 D AD; + 3)(R T TS S RA. D)OR W AINS AYLW(AD OR WOLTRON CET GD;WRON,C3)(RUFRBDS V MO: 60R0BF S RA R TOEC S#R  B ISB 1CINMA  Q BE N IOSSREXP ECTSE.CL NAERXT EORL OBGL;.   87INMA LTB P EXL REN I IAM ;  ODLMRS  B ST T  AGFLD NEFIDES L'BOYM SARLE C ; R1,@LGFFDE # CBBI B:N1AI MR KEECCHR TEISEG RLLCA; CEORRF , PC SR J  PENO;  B N1AI M EQ B  ?ERSTGIRED PETYL BOYM SIS;  1 @R2, R TBBI A:N1AI MN IOATRMFOINS HI TERNT E ; 1CINMA  R B  UEAL V'SOLMBSYE AV SLLCA; ALVVSA , PC SR J  ONTIUAIT SIDAL VE,OP N ; 1AINMA  E BN 9@R1,-(R6)  ; SAVE SYMBOL'S FLAGS AND .CSECT ID  JSR PC, ITEM ; CALL ITEM  BLE  MAIN16  ; VOID ITEM ENCOUNTERED     ; NON-VOID ITEM ENCOUNTERED  INCB  ITEMIN  ; SET ITEM PENDING FLAG MAIN16: CLR  R0   ; R0 = 0  JSR PC, EXPE3 ; CALL EXPRESSION, MINIMAL TERMINATOR ;  BGT  MAIN17  ; NON-VOID EXPRESSION FOUND  INCB  QERROR  ; VOID EXPRESSION CONSIDERED     ; AS QUESTIONABLE SYNTAX  IN: RAS ; EACH LINE IS DELIMITED BY A CONTROL WORD CONTAINING THE # OF BYTES RAS ; IN THE RECORD AND THE EOF FLAG (SIGN BIT ON = EOF). LINES MAY RAS ; EXTEND ACROSS SECTOR BOUNDARIES. RAS ; IT IS ASSUMMED THAT ALL NECESSARY BFUP OPERATIONS HAVE BEEN DONE RAS ; TO SELECT THE SECTOR TO BEGIN THE TRANSFER AT. THE RELATIVE RAS ; SECTOR IS PLACED INTO 'DSRSEC' BEFORE CALLING BFREAD. RAS ; REGISTORS R1-R5 ARE USED AND R AET G. NO; C SEET,GPC R JS S RA S YE; 60R0BF T BL S RA ? RECON IRDWOL RONTCOT EX NZ;SISR+DIZRSDS,#R3 P CM: 50R0BF S RA D.TEAN WREMO; 30R0BF T BG S RA . GOO TFTLE# - E ER HSOAL; R5 C DE S RA . ITT UNCO; R3 C IN S RA E.YT B AERSFANTRY LLNAFI; )+R1,(3)(RUFRBDS VBMO: 40R0? D NEFIDE;     Y PLTIUL MOLMBSYS HI TIS; ) R11(G,LADF#M  B MP C  EDINEF DLYUL;F  9 N8AI M NE B  OT NONSIESPREX ;  ORRR E B ST T: 19INMA 1CINMA  R B T:N1AI MT ECCS .NTREUR COFC PX.MAE ATPD;U  PCIR@H , C RPSE@U  V MO T N1AI M OSBL C RPHI,@ PCERUS @ MP C  CTSE.CT ENRRCUF OPCE ATPD;U  PCEL@R , T ULES R OV M  CTSE.CN IONSIESPREXE BLTACALORET NO; 7 N8AI M LE B  ODLMRS  B ST T  ONTIEC SAMGRRO PTELUSOAB; =CB  UERROR MAIN17: BISB  REGTYP ,@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  ; NOPE  BISB  #MDFLAG,1(R6) ; YES, CONSIDERED AS A     ; MULTIPLY DEFINED SYMBOL  INCB  RERROR  ; REGISTER ERROR MAIN18: MOV  (R6)+,@R1  ; RES>ESTORED. RAS ; RAS BFREAD =. ; RAS JSR PC,SAVREG ; SAVE REGISTORS R1-R2. RAS MOV 12.(SP),R1 ; GET USERS BUFFER ADDRESS RAS MOV DSRBYT,R3 ; SET # OF NEXT BYTE TO TRANSFER. RAS MOV CONWRD,R5 ; SET CONTROL WORD INTO R5. RABF S RA R.TOEC SERTHNO AET G. NO; C SEET,GPC R JS S RA S.YE; 40R0BF T BL S RA E?OM CTOE OR MNY AZ;SISR+DIZRSDS,#R3 P CM: 30R0BF S RACHT RSFI1= RND AEDERSFANTRS TEBY# T SE; )+R1,(R5 V MO S RA T UNCOE YT BTOS NTOI POW NR1; + 1)(R T TS S RA . ORRR E. NO; 80R0BF T BG S RA R FEUF BINM OO RREHEC N1AI M EQ B  ODCMSE  B ST T  R1E ORSTRE; 1 ,RR5  V MO L FILD R C,PR JS 4 ,R#4  V MO 1 ,R LTSURE  V MO N IOATICIFOD MERNTOU CONTICALO; 0 ,R.2D3RL # VBMO 1 RVESA; 5 ,RR1  V MO : 1QINMA 89INMA  R B  ORRRQE  B NC I  1QINMA  Q BE . ET SBEN CA. EL RND AF.DEY NL;O1 @R1,G-FLEL-RLGFFDE#-  B IT B  UTTPOUY ARIN BSTUEEQ R ;  UTNOBI  B OM C: 88INMA 1EINMA  P JM : 89INMA ORRRAE  B NCI: 87INMA 88INMA  E BG TORE SYMBOL'S FLAGS AND ID  MOV  (R6)+,HINDEX ; RESTORE SYMBOL'S ENTRY ADDRESS  MOV  (R6)+,TMPSYM+3 ; RESTORE SYMBOL'S SECOND TRIAD  MOV  @R6,TMPSYM+1 ; RESTORE SYMBOL'S FIRST TRIAD  CMP  #127400,(R6)+ ; IS THIS SYMBOL DEFINING THE     ; ASSEMBLY LOCATION COUNTER ?  BNE  MAIN19  ; NOPE  TSTB  ERROR  ; WAS THE EXPRESSION TOTALLY EVALUATABLE?  BNE  MAIN87  ; BRANCH IF NOT.  TSTB  RSLMOD S BFR010: BMI BFR070 ; AT EOF (SIGN BIT SET). RAS BGT BFR020 ; HAS # OF BYTES TO TRANSFER. RAS JSR PC,GETSEC ; GET FIRST SECTOR. RAS MOV #2,R3 ; SET R3 TO BYTE #2 (ALWAYS). RAS MOV DSRBUF,R5 ; SET R5 TO CONTROL WORD. RAS BR BFR010 ; GO PROCESS THE CONTROL WORD. RAS BFR020: CMP R5,(R1)+ ; IS T