; UPDATE 19 27 JUN 1972 ALL EXIT TYPES TO 2 AND ADD NO CHECKPOIN ; UPDATE 18 29 APR 1972 MINOR CLEANUP AND MAKE INTO AN OVERLAY TASK. ; UPDATE 17 26 APR 1972 CLEAN UO EXIT ON ERRORS. ; 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;***********************************************************************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 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 EEAS IT BENSES SEHENTREPA;   0 20  =  N EEPS IT BNGSIESDRADD EREF D ;  10  =  D EREF DS NTMEGNSIAST ECIR DAXNT @R5   ; COMAND = 0  CLRB  FLDCNT  ; FIELD COUNTER = 0  MOV  #2,R4  ; R4 = THE TBBUF SUBSCRIPT  MOV  #SAVTERM,R3  ; R3 = ADDRESS OF SAVTERM SYNT00:   ; FIELD ITERATION RANGE     ; R2 = THE VALUES FOR THE     ; PARENTHESES COUNTER BYTE (HIGH)     ; PARENTHESES SEEN BIT = 2**7     ; ADDRESS SEEN BIT = 2**6     ; OPERATOR SEEN BIT = 2**5     ; AUTO-INCREMENT BIT = 2**4     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 BFWRIT ; 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 S 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 ; SY;    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 ;     DSELFIO TWN HA TREMOF I ;     NDOU FDSELFIO TW 0,>  ;    D UNFO LDIE FNE O0,=  ; ; AUTO-DECREMENT BIT = 2**3     ; GENERAL INDEX REGISTER BITS  CLR  R2   ; CLEAR ALL COUNTS AND FLAGS     ; ENCOUNTERED ADDRESS EXPR.     ; IS SAVED ON THE STACK  CLR  -(R6)  ; STACK A ZERO  CMPB  @R3,#TCCDEF  ; IS TERMINATOR AN @ ?  BNE  SYNT01  ; NOPE  BISB  #DEFERD,@R5  ; YES, SET MDR DEFERD BIT  JSR PC, NEXTERM ; POSITION CURBYTE AT THE NEXT NON-     ; BLANK OR TAB CHARACTE TACK 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 THE 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  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    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 TNETIOUBRSUS HI T ;   ISYSALANX TAYN SNETIOUBRSU;  AL P GEPA . R SYNT01: CLR  R0   ; PREPARE FOR THE EXPR. CALL  MOVB  @R3,R1  ; SAVE THE CURRENT TERMINATOR  CMPB  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, FLD *RAS ; *RAS ; PROGRAM IDENTIFICATION: ROS ASSEMBLER *RAS ; *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 COMTHE 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 ; . 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 SRINBO 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 END ; DETERMINE FIELD TERMINATION ?  BLT  SYNT02  ; NOT THE FIELDS END    ; FIELD TERMINATOR IDENTIFIED AND     ; 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 PLET 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 ; IN A BFUP ELEMENT NAMED BY THE LAST .TITLE CARD *RAS ; PROCESSED.  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: 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 TUEINNTCO; N URET;R  R7 TSR S DECON IOITNDCOT SE; 0 RT TS 3:SRIN BS ESDRADY TRENE BLTAL BOYM;S EXNDHI3,RV MO  IDCTCSD  SYNT02:   ; PARENTHESES ENCOUNTERED  JSR PC, RCHECK ; CALL CHECK FOR REGISTER EXPRESSION  BLT  SYNT04  ; 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  *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 THE SOURCE PROGRAM *RAS ; FROM THE CARD READER, STORE THE IMAGES IN THE *RAS ; BFUP FILE A *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 = NPANS 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 EBE ; D ULHO SOLMBSYE ERWHS ESDRAD 2) ; 0 S DECON IOITNDCOD AN0 R) 1;  H:TCMAO NIF ; ;  E)YT(BD TISC CTOD IFIELD TERMINATOR  INCB  QERROR  ; RIGHT PARENTHESIS FOUND  BR  SYNT08  ; AVOID ACQUIRING THE     ; 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 S 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 ; BE PRODUCED ON THE LINE PRINTER FOLLOWED BY *RAS ; A SYMBOL TABLE LISTING. *RAS 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 ONTIEC 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;  R1N 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     ; INDEX MODE ADDRESSING SYNT05:    ; PARENTHETICAL EXPRESSION PROCESSED  JSR PC, PARSEP ; CALL PARENTHESES SEPARATOR  BNE  SYNT06  ; A PARENTHESIS WAS FOUND SYNT15: INCB  QERROR  ; THE FIELD HAS TERMINATED ;  BR  IMMMDR  ; IMMEDIATE ADDRESSING  BR  SYNT0B  ; DETERMINE ADDRESSING SYNT06: BGT  SYNT07  ; LEFT PARENTHESIS FOUND  INCB  QERROR  ; RIGHT PARENTHESIS FOUND SYNT07:   ; CALL AUTO INC.;DEC! ; *RAS ; PROGRAMER: 53 *RAS ; VERSION: 1 *RAS ; DATE: 15-MAR-72 *RAS ; CATALOGUE NUMBER: *RAS ; *RAS ;***************************************" 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 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 IRYNTE Y:LAVR;O RSTEISEG RRETOES;R  EGTRSEC,PR JS 2:ERNT E3 ERNTES HIB . DSOR W 4DSARNWOW;D  R02,RP CM  LEAB TOLMBSYT $. DETERMINATOR  ; OPEN SUBROUTINE AUTO INCREMENT;DECREMENT DETERMINATOR   ; THIS SUBROUTINE VERIFIES THAT THE SAVED   ; TERMINATOR CODE IS FOR EITHER A + OR A   ; - CHARACTER. IF SO, THEN VERIFY THAT THIS   ; IS THE SOLE ADDRESSING INDICATOR PRESENT.   ; THEN APPROPRIATELY SET THE OPERATOR SEEN   ; VARIABLE.    ; INPUT R1 CONTAINS THE EFFECTIVE    ;  TERMINATOR CODE    ; OUTPUT CONDITION CODED RESULTS    ;  %********************************RAS .TITLE RASM RAS ; COMPUTER  PDP-11 ; CONFIGURATION ROS RAS ;   REQUIREMENTS ; EAE FOR '*' AND '/' RAS ; RAS ;DESCRIPTION  SPECIFICATION DOCUMENTS #130-390-008-01 ;      #130-390-011-00 AND -01 ;      #13& ; 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/EUSDJ;A )+R1,()+R0(V MO 3:ERNT EC RPSE,UR4 UBS . EDOV MBEO TIS;C RPSEHU4,RB SU  ITF IRYNT EPCR SE;U  R3TEEN LOB O TRSTEINPOT ENEMCRDE;C RPSEHU2,RP CM  D.DEEE NNTMESTJUADO ;N  R2TEEN EQB . ERSFANTRO TDSOR WOF. NO; 2 ,RR0 MPC 2 ,REXNDHI OVM . TR PG.REE RE FST 1EDFIDIMOE AV;S OPRTUS1,RV MO 1:ERNT E AS R . FFTU SORRR EDOO G ; T OURR E MP J AS R E.OD CORRR E ; P)(S,-R9ER # OV M AS R L.UL FIS(ZERO, TERMINATOR NOT + OR -    ;  OTHERWISE, THE APPROPRIATE    ;  FLAGS HAVE BEEN SET AUTOID: MOV  #AUTOINC,-(R6) ; STACK AUTO-INCREMENT CODE  CMPB  R1,#TCCADD  ; IS R1 TERMINATOR A + ?  BEQ  AUTO0  ; YES  MOV  #AUTODEC,@R6 ; STACK AUTO-DECREMENT CODE  CMPB  R1,#TCCSUB  ; IS R1 TERMINATOR A - ?  BEQ  AUTO0  ; YES  CLR  (R6)+  ; RESTORE THE STACK POINTER     ; AND SET THE C)0-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  =  %1 R2  =  %2 R3  =  %3 R4  =  %4 R5  =  %5 R6  =  %6 SP = %6 ; PAL R7  =  %7 PC = %7 ; PAL ; *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 E BLTAL BOYM SE-LUVAO N ; P)(S - LR C . ONSILIOL CNO; 1 ERNTES HIB K ACSTH IT WONSILIOL COR FCKHE;C OTKBST1,RP CM  S.RDWO4 Y BERNTOI;P  R14,RB SU  ERSTGIREE RE FST 1SEEACRDE; 1 ,RR0 OVM E USR TELAR FO; 4 ,R10#V MO  R0P,TOSRUV MO  S.ERSTGIREE AV;S  EGVRSAC,PR JS 6:R0UB S: ERNT E. EDIRQURET ENTMUSDJ ALEAB TIFY TREN R:TEEN ;. ESRINT ETHBOT AEDOYTRES DIS0 ;R  E.AD MIST ENTMUSDJ ALEABT;  OLMBSYO NE.OVAB) 3EPST UTTPOU; E OVABS AMESA UTNP;I  AY,ONDITION CODES  BR  AUTO2 ; RETURN AUTO0:  BITB  #OPSEEN,R2  ; OPERATOR SEEN PREVIOUSLY ?  BEQ  AUTO1  ; NOPE  INCB  QERROR  ; YES, QUESTIONABLE SYNTAX  BICB  #INCDEC,R2  ; CLEAR BOTH EXISTING CODES AUTO1:  BISB  #OPSEEN,R2  ; SET OPERATOR SEEN BIT  BISB  (R6)+,R2  ; SET APPROPRIATE CODE BIT AUTO2:  TSTB  RSLMOD  BEQ  AUTOX  MOVB  RSLMOD,RSL2MD  CMPB  #-15,SAVTERM  BEQ  AUTOY  INCB  AE- PAL .PAGE PAL ; THE PST MUST BE PLACED BETWEEN THE STACK AND RASM. RAS RASMPR = PRIBKG ; 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 = . ; 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 RLOVP RA;T  X.DEIN HIN ;  SSREDD AHE TATG INRTTA S  ;  EDORSTY TRENL BOYM SEW N) 3;  OPRTUSO TS)RDWO (-4OPRTUS 2) ; . DSOR W 4DSARNWOW DEDSTDU AOPRTUS ; O TEXNDHIM RO FLSBOYM SLL A) 1;  S.RDWOR OU FWNDOD VEMOS ICKTAS;  CKTA SOFM TOOT BTHWIE IDLLCO ; D ULWOE BLTAL BOYM SEDNDPAEXF IT PUUT;O  GSLATF ; T ULES R  ; 3 M+SYMP T  ;  +1YMPSTM ; N IRYNT ERDWO4 E TH 2) ; X DEIN HINT LO SHE TOF) SSREDD ASTHEIG(HS ESDRADE AS BHE T) 1T PUIN;0RROR AUTOY:  CLRB  RSLMOD AUTOX:    ; RETURN  JSR PC, FLDEND ; DETERMINE FIELD TERMINATION  BGE  SYNT0B  ; 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 S1 200. ; AREA FOR RASM STACK (BELOW SYM TAB). RAS SYMSIZ = $RASIZ ; # ENTRIES IN UST (4 WORDS/ENTRY) RAS ; RAS .DEF RASHED ; GLOBL FOR INITIALIZATION RAS ; RASM TASK HEADER RAS RASHED: .WORD 1 ; THREAD WORD RAS .WORD START ; ENTRY POINT 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 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;  R7 TSR S ERSTGIRET SE; G REET,SPC SRJ G REOP POMFRN URET RRDCAIS;D  )+R6(T TS 5:R4UB S: EGPRPO E.INUTROG INLLCAT XI END A; S ERSTGIREP POO TNETIOUBRSU;  RNTURE;    5 RRETOES R ;  R5  S RT 4 RRETOES R ; R4+,6)(R  V MO 4EPARATOR     ; THE FIELD HAS TERMINATED     ; ACTUAL MODE YET UNKNOWN  BLT  SYNT09  ; RIGHT  BGT  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 CURREN5 RAS .WORD 0 ; INITIALIZATION ENTRY POINT RAS .WORD 0 ; RUN UNTIL COMPLETION RAS .BYTE STACK ; STACK SIZE RAS .BYTE RASMPR ; PRIORITY - LOWEST RAS .WORD 0 ; TIMER VALUE RAS .IFNZ ARG ; RAS .WORD 0 6THE 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 WITH3 RRETOES R ; R3+,6)(R  V MO 2 RRETOES R ; R2+,6)(R  V MO 1 RRETOES R ; R1+,6)(R  V MO S ESDRADN URET RHE TESAV SR5;  5 ,R)+R6 ( OV M: 16BRSU G:REET SR TEISEG RDEWI- R SOESOCPRE ILATOL V AIS0 R ;   RSTEISEG RET SNETIOUBRSU;  N URET R ; R7  S RT 5 RCKTA S ; 6)(R125, R OV M  SSREDD ARNTUREE THK ACST; 6)(R,-6)(R10  V MO 1 RCKTA S ; 6)(R,-R1  V MO 2 RCKTA S ; 6)(R,-R2  V MO 3 RCKTA S ; FT TERMINATOR SYNT0A:   ; INSURE FIELD TERMINATOR  CLR  R0   ; R0 = 0  JSR PC, EXPE2 ; CALL EXPRESSION EVALUATION    ; , ; 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:   ; DETERME ; TRANSMITED ARGUMENT RAS .ENDC ; RAS .BYTE $OVTYP ; CPU STATUS AND OVERLAY FILE TYPE RAS .BYTE RASMNO ; TASK NUMBER RAS .WORD 0 ; STACK POINTER .WORD 200 ; OVERLAY FILE ID NUMBER. RAS .=.+STACK+STACK-2 ; RESERVE STACK SPACE RAS .=.+SYMG 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 6)(R,-R3  V MO 4 RCKTA S ; 6)(R,-R4  V MO 4:R1UB S: EGVRSA ERSTGIREE ID W -ORSSCERO PLETILAVOA S IR0;   S ERSTGIREE AV SNETIOUBRSU;  AL P GEPA . N URET RND ARSTEISEG RET SLLCA; EGPRPO , PC SR J  NGKIAC PTERATEEI RE,OP N ; 00D4MO  E BL ? +6YMPSTM> 5 RIS; +6YMPSTM,#R5  P CM 3 5+ R =R5;  5 ,R#3  D AD 4 RNTMERENC I ;     ADRI TNTTAULES R =4)(RYMPSTM; `wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwDDDDDDDADD+B Cp@Q4dzp#$Dwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwa ͋,L w:B8 ` 5 &  E >w   f5eU@  [*   & * G &( 8L'4e Q$ BBB"   U@ U e  "U%Gef. U U Bb 0 * B.&0 M &0 & ISIZ+SYMSIZ+SYMSIZ+SYMSIZ ; RESERVE USER SYMBOL TABLE RAS .=.+SYMSIZ+SYMSIZ+SYMSIZ+SYMSIZ ; RAS ; 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 ;MJINE ADDRESSING MODE FOR     ; FIELDS CONTAINING ANY     ; PARENTHESES     ; SEPARATE MAX. CASE FIRST  BITB  #ASEEN,R2  ; WAS AN ADDRESS SEEN ?  BNE  INDMDR  ; YES, INDEX MODE ADDRESSING  BITB  #AUTOINC,R2  ; WAS A + OPERATOR SEEN ?  BEQ  SYNT0D  JMP  INCMDR  ; YES, AUTO-INCREMENT MODE SYNT0D:  BITB  #AUTODEC,R2  ; WAS A - OPERATOR SEEN ?  BEQ  SYNT0E  JMP  DECMDR  ; YES, AUTO-DECREMKS 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=  + 4)(R3, R OV M: 02D4MO ERCTRAHA CXTNES ESOCPR;  1 40OD M BR T ULES RALTIAR+PUM S =UM S ; R3+,6)(R  D AD 3 R SL A  TSBI2 T EF LUM SFTHI S ;  R3  L AS T ULES RALTIAR PVESA;  ) R6-(3, R OV M  R3  L AS 3 R SL A  TSBI3 T EF LUM SFTHI S ;  R3  L AS D TELEMPCOD IATR, PENO;  2 40OD M GE B  ?5 R 0, IMPLIES ,    ;  = 0, IMPLIES ; CR    ;  < 0, IMPLIES OTHER FLDEND: SUBR18: MOV  #1,-(R6)  ; STACK A ONE  CMPB  @R3,#TCCCOM  ; IS THE TERMINATOR A, ?  BEQ  FLDEN1  ; YES  CMPB  @R3,#TCCSMC  ; IS THE TERMINATOR A ; ?  BEQ  FLDEN0  ; YES  CMPB  @R3,#TCCCRE  ; IS THE TERMINATOR A CR ?  BEQ  FLDEN0  ; YES  DEC  @R6   ; RETURN NEGATIVE FLDEN0s ;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 YT BIDN IOCTSEL RONTCO= D TISCC  ;  TEBYG LA F =GSLATF   ; E LUVA= Y ITNTUAQ  ;  RYNT EOFS ESDRADT ESGHHI= X DEINH  ;  D:UNFOF I   ; D UNFOT NO <0R0   ; T USN INDOU F0 0=R  ;  ST PIND UNFO >0R0   ; S DECON IOITNDCOE THS ET SR0 T:PUUTO ;  LEAB TOLMBSY. MPTE T:PUIN  ; ;  H.RCNSBIG INIZILUTD HERCEA;S  ISY NL OST UHE TL,BOYM SEDCKPAY ADREAL; N AOR FCHARSEO TRYNT END 2HE TON; . RYSAESEC NIFT USE THN HE TND AST;P  HE TNGHIRCEA SSTIR Fu .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 ; .WORD 073613  ;SEC .WORD 0 .WORD 000261 .WORD SCLAS0 ; .WORD 073473  ;SCC .WORD 0 .WORD 000277 .WORD SCLAS0 ; .WORD 073423  ;SBC .WORv: DEC  @R6   ; RETURN ZERO FLDEN1: TST  (R6)+  ; RETURN POSITIVE     ; SET THE CONDITION CODES  RTS  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 DEDIw ; 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 Y,LLMAOR NSSCERO PL,BOYM SPETY' 'BA T NOF ;I  L PA ; VEBO A1.S ASSCERO PENTHT NOF I. ;B  N.URET RND ATYTIANQUN IIT B ;  ORATICND ITEBYE THT SEN HE TT,SEF I. ;A  G.LA FNGLIABENE YT B'SOLMBSY ; E THK ECCHN HE TT,PSE THN I ;  NDOU FISL BOYM SEDATVIREBB AHE TIF 2.; . ST UHE TRYSAESEC NIFD ANT PS ; HE TCHARSET RSFI L.BOYM SALOT T ;  HE TOR FNGHIRCEA STEIAITIND AN ; CKPARE, ERCTRAHA CB' 'HE TCELAyD 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  ;RTI .WORD 0 .WORD 000002 .WORD SCLAS0 ; .WORD 071352  ;ROR .WORD 0 .WORD 006000 .WORD SCLAS1+BYTFLG ; .WORD 071344  ;ROL .WORD 0 zCATED REGISTER    ; OUTPUT CONDITION CODED RESULTS    ;  ) NEGATIVE    ;  OTHERS ZERO    ;  ( POSITIVE PARSEP:    ; PLACE THE PCOUNT BYTE SUBR19: SWAB  R2   ; INTO LOWER R2  CLR  -(R6)  ; STACK A ZERO  CMPB  @R3,#TCCLPA  ; IS TERMINATOR A ( ?  BEQ  PARSE0  ; YES  CMPB  @R3,#TCCRPA  ; IS TERMINATOR A ) ?  BNE  PARSE2  ; NOPE  DEC  @R6   { .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 EP R ;  ENTH, NDOU FOT NISL BOYM SISTHF I) 1.; L BOYM SEDATVIREBB;A  ISTHR FOT PSE THH RCEA;S  ENTH' 'BE THT OUTHWIS ERCTRAHA CCKPA; . RSCUOCG INSSCERO PALCIPE;S  ENTH' 'BA S IERCTRAHA CSTLAE THF IND;A  RSTEACARCH5 R O 4ESSSSEOS POLMBSYE THF ;I  E:ACPLS KETAG INOWLLFOE TH, OLMBSY; A R FOH RCEA STOY TRENT 1SE THN ;O  ; . CHSRIN BNETIOUBRSU; D SELO CHE TBYD MEORRFPEE QUNIEC;T  CHARSEY ARIN BHE TNGZILITI;U  EDCHARSEY ELATEREP SRE AASRE AWO THE;T  S.TEBYD IONTIEC SOLTRON C} .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/ ; MUL FOR /45 .WORD 0 .WORD 070000 .WORD SCLAS5 ; .RAD50 /MTP/ ; MTPI FO~ ; DECREMENT STACKED ZERO  DECB  R2   ; DECREMENT PCOUNT BYTE  BR  PARSE1 PARSE0: INC  @R6   ; INCREMENT 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   ; T 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 .ND AGSLA;F  HE TNGNIAINTCOT ESGHHIE THD AN; E LUVAE THG ININTAON CSTWELOT EX;N  HE TD,IATR0 D4MOD 2NE THG ININTAON;C  STWELOT EX NHE TD,IATR0 D4MOT 1S; E THG ININTAON CRDWOT ESOW LHE;T  THWIS RDWO4 S IRYNT ECHEA N.IOATOT;N  40OD MIND REDEORY GLINASRENC ILSBOYM SHE TTHWI; RDWAWNDOE NUTION CND ARECON IGHHI; N GIBES LEAB TTHBO D.DEADE ARS OLMBSY; W NES ARECON IDSARNWOW DDSANXP;E  ND AOPRTUSD ANP TOON CRSTEINPOE THY ;B  EDNDOU BIS) ST(UE BLTAL BOYM SERUSE TH; . EDIX FISD ANP R /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 .WORD SCLAS2+BYTFLG ; .IFNZ $1145 .RAD50 /MFP/ ; MFPI FOR /45 .RAD50 /I / .WORD 006500 HIS SUBROUTINE DETERMINES, FINALLY, IF   ; A VALUE IS TO BE TYPED AS REGISTER.   ; IF NOT, THE SUBROUTINE RETURNS   ; 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 VAWORD 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 TOER PND AOTRBPE; S ERNTOI PHE TBYD DEUNBOS IT)PS (LEAB;T  OLMBSYT ENANRMPEE TH S.ONTIEC SEDERRD;O  WO TTOIND DEVIDIS ILEAB TOLMBSYE TH; H RCEA SLEAB TOLMBSYE INUTROUB;S L PA E AG.P ERCTRAHA CXTNEK ECCH;  T0CB  R B  +1AGFLBT= G LATF B ; AGFLBT  B NC I 1:BT CN URET R ; R7  S RT G LATF BMPBU, ES Y ; 1 BT C EQ B  ?AB T AERCTRAHA CIS; E YTRBCU,@11#0  B MP C  AGFLBTP UM BS,YE; .WORD SCLAS1 ; .RAD50 /MFP/ ; MFPD FOR /45 .RAD50 /D / .WORD 106500 .WORD SCLAS1 ; .RAD50 /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 .LID    ;  REGISTER NAME    ;  NEGATIVE IMPLIES    ;   1) NOT TYPED AS REGISTER    ;   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  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 ; .WORD 011473  ;CCC .WORD 0 .WORD 000257 .WORD SCLAS0 ; .WORD 010003  ;BVS .WORD 0 .  T1CB  Q BE ? NKLA B AERCTRAHA CIS; E YTRBCU,@40#0  B MP C  +1TEBYUR C =TEBYUR C ; TEBYUR C NC I 0:BT C0 G=LATF B ; AGFLBT  B LR C: 10BRSU S:ABBT C. E&ERNTOUNC EISB TAR ONKLA B ;     AMETIH AC EEDNTMERENC IISG LATF B ;     BSTAD ANS NKLA BOR FCKHE CNETIOUBRSU;   AL P GEPA . E YTRBCUT ENEMCRIND AN;     S ORATINRMTEL ALR FOK ECCH;  0 M0TE I BR 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 .WORD SCLAS6 ; .IFNZ $1145 .RAD50 /DIV/ ; DIV FOR /45 .WORD 0 .WORD 071000 .WORD ; IS R0 > 7 ?  BGT  RCHE00  ; YES, FORCE REGISTER ZERO  TSTB  RSLMOD  BNE  RCHE00  TST  R0   ; IS R0 < 0 ?  BGE  RCHE02  ; NOPE, RETURN NOT NEGATIVE RCHE00: INCB  RERROR ; FORCE  SET REGISTER ERROR  CLR  RESULT  ; RESULT = 0  RTS  R7  ; RETURN, CONDITION CODE 'Z' IS SET RCHE01: MOV  #100000,R0  ; SET ONLY R0 SIGN BIT     ; CONDITION CODES ARE SET RCHE02: RTS  R7  ; RETURN .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  ;BPL .WORD 0 .WORD 100000 .WORD SCLAS4 ; .WORD 007265  ;BNE .WORD 0 .WORD 001000 .WORDE INUTRO;     R BEUM N'SONTICAFITIENID;     R TEACARCHO TRNTURE;  4 ,RERMBNU # OV M: 08EMIT NETIOUBRSUM TE IRTBO A ; 03EMIT  R B  0 =TYTIANQU, PENO;  Y ITNTUA Q LR C  NGSIESOCPRE NUTION CS,YE;  8 M0TE I EQ B  ?NDOU FITIG DIDAL V AAS W ;  R0  T TS 7:M0TE I* ** NGSIESOCPRR BEUMN* **   ;  TEBYUR CNTEMCRIND AN;     S ORATINRMTEL ALR FOK ECCH;  0 M0TE I BR E INUTRON IOATICIFNTDE I ;   | 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 SCLAS2+BYTFLG ; .WORD 012272  ;CLZ .WORD 0 .WORD 000244 .WORD SCLAS0 ; .WORD 012266  ;CLV .WORD 0 .WORD 000242 .WORD SCLAS0 ; .WORD 0PAGE PAL  ; SUBROUTINE NEXT TERMINATOR   ; THIS SUBROUTINE SIMPLY MOVES THE CURBYTE   ; POINTER TO THE NEXT NON-BLANK OR   ; NON-TAB CHARACTER. THEN THIS CHARACTER   ; IS EXAMINED TO DETERMINE IF IT IS A   ; TERMINATOR. SAVTERM REFLECTS THE RESULTS.    ; INPUT NONE    ; OUTPUT NONE NEXTERM: SUBR17: JSR PC, CBTABS ; CALL CHECK FOR BLANKS AND TABS  JSR  R7,TERMIN ; CALL TERMIN 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 .  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 TS R  ESOD CONTIDION CHE TET S ; R0R,HATCCN  B OV M  RSTEISEG RET SLLCA; EGTRSE , PC SR J: 05EMIT NGSIESOCPRx12262  ;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 .WORD 102400 .WORD SCLAS4 ; .WORD 007763  ;BVC .WORD 0 .WORD 102000 .WORD SCLAS4 ; .WORD 007520  ;BR .WORD 0 .WORD 000400 .WORD SCLAS4ATOR IDENTIFICATION  RTS  R7  ; RETURN .PAGE PAL  ; SUBROUTINE EXPRESSION   ; THIS SUBROUTINE EVALUATES AN EXPRESSION UNTIL   ; THE RETURNING TERMINATOR HIERARCHY IS SATISFIED   ; THE TERMINATOR HIERARCHY IS AS FOLLOWS:   ;  (FROM LEAST TO MOST IMPORTANT)   ;  PARENTHESES     -1   ;  COMMAS     0   ;  SEMICOLONS AND CARRIAGE-RETURNS  +1   ; IF A TWORD 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 00N URET R ;    TEBYUR CNTMERENC IND A ;     RSTONAMIER TLL AOR FCKHE C ; 00EMIT  BR E INUTRON IOATICIFNTDE I ;     ORATINRMTEE THO NT I ;     SSREDD ANTOI PRYNT E =R5;  4 ,RINRMTE # OV M  DECOE YP TEMITT ENEMPLOM C ;  R3 @ MBCO R TONAMIER THE TOR FNTHU, EMITT ORAB;    R TEACARCHS HI TORRR E ; ORRRIE  B NC I: 03EMIT EDFITIENIDUNR TEACARCH;     G INSSCERO PERMBNU;  7 M0TE I EQ B  NGSIESt ; .RAD50 /BPT/ ; BPT FOR /45 .WORD 0 .WORD 000003 .WORD SCLAS0 ; .WORD 007414  ;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 101ERMINATOR IS ENCOUNTERED POSSESSING   ;  MORE SIGNIFICANCE THEN THE REQUESTED   ;  TERMINATOR, THEN THE SUBROUTINE WILL RETURN.   ; EXPRESSIONS ARE EVALUATED FROM LEFT TO RIGHT AND   ; PARENTHETICAL GROUPING IS NOT PERMITTED.    ; INPUT R0 MUST EQUAL ZERO    ; OUTPUT CONDITION CODED RESULTS ARE    ;  RELATIVE TO THE ITEM COUNTER    ; RSLMOD:    ; +1 = RELOCATABLE EXPRESSION,    ; CURRENT .CSECT    ; 6413  ;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 OCPRL BOYM S ; 06EMIT  T BG G INSSCERO POFE YP TCTLESE;   2 R ST T: 02EMIT NTDEENEP DAGFL SCHANBR S,YE;  2 ,RR3 @ VBMO T ENNDPEDEE YPITH NCRA BPENO;  2 M0TE I EQ B  ?NGSIESOCPRR TEACARCHT RSFI;  4 ,RARCH#F  P CM R TONAMIER THE TOR FNTHU, ES Y ; 00EMIT  Q BE ? G INRTBO AEMITS I ; R4N,MIER#T  P CM G LASFD IEIFOD MHE T =R2;  2 ,RR0  V MO 1:M1TE IN IOATINRMTEDEY ITILABNTRI PLLCA; T INPR , PC SR J  ERCTRAp400 .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 .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 0060 = ABSOLUTE EXPRESSION    ; -1 = .GLOBL EXPRESSION    ; -2 = RELOCATABLE EXPRESSION,    ; NOT CURRENT .CSECT    ; (OR .ASECT) ; TERMINATOR TABLE ENTRY ORDER ; = : , CR ; ! & - + ' " ) ( TAB BLANK % @ #  -1 ... -18 ;  TERMINATOR ANALYSIS DIAGRAM ; TERMINATORS CLASS  PAREN COMMAS  CR ;    -1  0  +1 ; ^ & - + ' " 1  PROCESS PROCESS PROCESS ; ; CR  2  RETURN RETURN  RETURN ; : = 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. HA CALEGLL IO, N ; ORRRIE  B NC I  ES Y ; 11EMIT  E BG ? D UNFOR TEACARCHD LIVAA S WA;     G LASFP TUSE, -1R0= 0 R ;  R0  C DE R TEUNCOR TEACARCHT ENEMCRIN;  R HATCCN  B NC I  ORATINRMTEA S IERCTRAHA C ; 05EMIT  T BL S DECON IOITNDCOE THD AN;     0 RINE OD CONTICAFITIENID;     R TEACARCHE THN URET R ;     ESINUTROS ONTIEC SISTH;     N IOATICIFNTDE IERCTRAHA COR FLLCA; R4,@R7  R JSl711  ;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 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 TAB BLK # @  QERROR QERROR  QERROR ; ) (  4  RETURN Q RESTART Q RESTART ; ,   5  RETURN RETURN  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 TERMINLOBL FCR ; OPENO ; INPUTS ; 2(R0)=NEGATIVE IF THIS IS DT ; WHEN CALLED BY COMMON OPEN PREPROCESSOR THE REGS ARE: ;  R0=ADR DDB ;  R1 POINTS TO THE FIRST ARGUMENT(NOW IN DDB+16)  FIB=R2 OPENO: 177400   ;COMMON CODE TO MOVE CODE    ; FLAG FOR SAM.....NON REENTRANT,0 FCR: ADD PC,R5  ; R5=177776 VIA SAM TST -(R5)  ; LOOK AT FIRST WRD OF CODE MOV (R6)+,R0 ; POP STACK INTO R0 MOV (R6)+,R1 ; POP STACK INTO R1.THIS LEAVES   1:M0TE I. ORATINRMTEE THS A ;     AB TORK ANBLE THR DESION C ;     TEBYUR CNTMEREEC D ; TEBYUR C EC D  ORATINRMTEA S IERCTRAHA C ; 05EMIT  T BL N IOATICIFNTDE IORATINRMTER FOL AL C ; 4 @R7, R SR J  R.DD ARYNT E'SORATINRMTE= 4 R ; R4N,MIER#T  V MO E OP N ; 01EMIT  LE B  ?BSTAR OKSANBLY ANE ERTHE ER W ; AGFLBT  B ST T  ERNTOI PTEBYUR CHE T ;     TSENEMCRINE INUTROUB SBSTACB;     S AB TND AKSh; .IFNZ $1145 .RAD50 /ASH/ ; ASHC FOR /45 .RAD50 /C / .WORD 073000 .WORD SCLAS5 ; .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 ; ATOR  INC  R0   ; RETURN CLASS = +1  JSR PC, SAVREG ; CALL SAVE REGISTERS  MOV  R0,R1  ; R1 HIGH ORDER BYTE 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  ; 6 WORDS ON STACK FOR LUKUP.    ; NEAT, HUH? TSTB @R5  ; IN SWAP BUFFER? BEQ OPNO  ; IF RESIDENT THEN SKIP MOV #20,-(R6) ; DISK RESIDENT. GET A BUFFER MOV @#GETBUF,R4 JSR R5,@R4 MOV (R6)+,R3 ; PUT ADR INTO R3 BEQ NOBUF  ; TOO BAD MOV R3,R4  ; LOOP TO DO THE MOVE MOV R5,R2 MOV (R2)+,(R3)+ INC @R4 BLE .-4 SUB R2,R3  ; FIRST WORD NOW EQ 1 ADD R3,PC  ; GO BABY CLR @R5 CLR -2(R5) ANBLR 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 ESHLU F ;    GSLA FUMCNDET SERE;  M NUEC D RBCL 0 = 0 E1AS B ; 10SEBA  R CL 0 = 8 E0AS B ; d .WORD 003343  ;ADC .WORD 0 .WORD 005500 .WORD SCLAS1+BYTFLG ; SYMTBB=.-2   ;HIGHEST ADDRESS OF PST. .PAGE RAS START: ; FIRST LET'S READ IN 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 #QUANTITY,R4 ; R4 = QUANTITY'S ADDRESS  MOV  #CURBYTE,R3  ; R3 = CURBYTE'S ADDRESS CLRB  RSLMOD  CLR  @R5   ; RESULT = 0  CLRB  R1   ; ZERO THE OPERATOR COUNTER  CLRB  PRGSEC  ;.CSECT ID OF PREVIOUS RELOCATABLE SYMBOL EXPR00:  ; CYCLING OPERATOR-ITEM ACQUISITION  CLRB  R2   ; ZERO THE EFFECTIVE OPERATOR     ; DEFAULT OPERATOR IS ADDITION  TSTB  ITEMIN ; PENDING ITEM ?  BEQ  EXPR01  ; NOPE,OPNO: MOV 2(R0),R4  ; SET R4 EQ DT INDICATOR CLRB R4   ; USE BOTTOM AS ERR FLG MOV FIBLNK(R0),FIB  ; SET R2 EQ ADR FIB EMT .LOOKUP   ; SEE IF FILE EXISTS MOV (R6)+,R5  ;SET R5 EQ RTN ARG FROM LUK     ; IF R5 EQ -1,THEN NO UIC    ; IF R5 EQ -2,THEN NO FILE    ; IF R5 EQ -3,THEN NO UFD.    ; OTHERWISE,THE FILE EXISTS MOV R6,R3  ; CHECK TO SEE IF FILE IS    ; NAMED 00.0 MOV (R3)+,-(R6) BIS (R3)+,@R6 BIS (R3 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;     K ANBL= ) (5M SYMP T ; )+R5 ( RBCL S NKLA B =4)3,M(SYMP T ; )+R5 ( LR C  KSANBL= ) ` 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 STA020 ; NONE. RAS CMPB R0,#7 ; ERROR. IS FILE ALREADY DEFINED? RAS BEQ STA020 ; YES. RAS MOV R0,-(SP) ; NO. ACQUIRE INITIAL ITEM  CLRB  ITEMIN  ; YES, CLEAR THE FLAG  TSTB  ITYPE  ; HOW IS THIS ITEM TYPED ?  BLE  EXPR16  ; NUMBERS, ERRORS, AND ASCII DATA     ; SYMBOLS PROCESSED  INCB  ICOUNT  ; INCREMENT THE ITEM COUNTER  TSTB  TMPSYM  ; HAS THIS SYMBOL BEEN PACKED ?  BEQ  EXPR0G  ; YES, PROCESS PENDING ITEM  BR  EXPR0C  ; NO, PROCESS THE PENDING ITEM EXPR01:  ; INITIAL ITEM ACQUIRED  DEC  @R3  )+,(R6)+ BEQ ERR15  ; ILLEGAL NAME MOV R0,R3  ; SET PTR AT DDB+2 TST (R3)+  ; (SET BY LOOKUP) INC R5  ; ARG EQ -1 OR ABOVE? BGT ERR2  ; IF SO FILE EXISTS ... BEQ ERR13  ; .... OR NO UIC INC R5  ; ARG EQ -2? BEQ SEMPTY  ; IF SO CHECK FOR MT SLOT INC R5  ; IF ARG EQ -3 ... BNE ERR2  ; THERE'S NO UFD SO ... BR ADDTWO  ; ... GO GET ONE SEMPTY: MOV (R3)+,R5  ; PICK UP BLK NUM OF     ; AN EMPTY SLOT.PUT THERE BY LUK BNE OP02   ,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<  ;    R BEUM NEDORRR E-1=  ;    R BEUM N0 =  ;    L BOYM S0 >  ;    E LUVAD DE\ALL OVER WITH. RAS MOV #ERR7,-(SP) ; RAS JMP ERROUT ; RAS STA020: MOV #SRCBFB,R0 ; GET ADDRESS OF SOURCE BFUP 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 STA ; DECREMENT CURBYTE POINTER EXPR02:  ; CYCLING ITEM ACQUISITION  JSR PC, ITEM ; CALL ITEM SUBROUTINE  BGT  EXPR0C  ; NON-VOID ITEM ENCOUNTERED   ; VOID ITEM ENCOUNTERED AND PROCESSED EXPR12: MOVB  SAVTERM,R0  ; R0 = ENCODED TERMINATOR  ADD  #3,R0  ; R0 = R0+3  BGT  EXPR04 ; = : TERMINATORS IDENTIFIED  BEQ  EXPR09 ; , TERMINATOR IDENTIFIED  ADD  #2,R0  ; R0 = R0+2  BGE  EXPR0B ; CR ; ; CONTINUE LATER IF ONE AVAIL.     ; ADD A BLOCK TO DIR THEN ADDONE:     ; N.B. R3 STILL POINTS TO BLK TST R4   ; IS THIS A DT? BMI ERR12   ; WHY ME GOD? MOV BUFADR(R0),-(R3) ; SET UP FOR LINK BELOW ADDTWO: EMT .GETMAP MOV @FIB,-(R6)  ; IF NO MAP ... BNE NOBUF   ; ... CAN'T GO ON EMT .BALLOC MOV R3,@R6  ; SAVE DDB PTR CLR R3   ; R3 MUST EQ 0 FOR WRITMAP EMT .WRITMAP  ; WRITE THE PBM MOV (R6)+,R3  ; RESTORE PTR MOV @FIB,@(R3)COE=YPIT  ;    E LUVAD DECO. MIER=TRMTEAV SUTTPOU;    E ON NUTNP I ;    D.SEESOCPRG INBEM TE INTREUR CHE TTO ;   E IVATEL RERNTOU CERCTRAHA C ANSAINTAI MEMIT ;   . RMTEAV STOINE LUVAD DECO  ;   E THE ACPLD ANR TEACARCHR TONAMIER T  ;   EDERNTOUNC ENY ADECOEND ANY IFNTDE I.) 3  ;   Y.ITNTUA QONTICALON IEMTHE AV S  ;   ND ARSBEUM NALIMEC DORL TAOCT ERNVCO) 2.  ;   S.OLMBSYR FOR FEUF BYMPSTM  ;   E THN IRSTEX100: 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 #CRDLST,-(SP) ; PUT CARD READ LIST ON STACK RAS EMT $NCHKPT ; (NO CHECKPOINT DURING I/O) RAS EMT $CREAD ; CALL ON CREAD; EXIT TYPE 2. RAS EMT $CHKPT ; ( CANTERMINATORS IDENTIFIED  ADD  #6,R0  ; R0 = R0+6  BGE  EXPR05 ; ! & - + ' "    ;  TERMINATORS IDENTIFIED  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 +  ; LINK UFD AS REQD JSR PC,OPNOWRIT1  ; WRITE OUT PREV BLK MOV @FIB,@R3  ; STORE BLK NO FOR LATER JSR PC,CLRBUF JSR PC,OPNOWRIT1  ; ... & CLEAR NEW BLOCK BR OP03   ; R3=ADR OF BUFF+2 ERR15: ADD #2,R4   ; ILLEGAL FILE NAME ERR13: INC R4   ; UNKNOWN UIC ERR12: INC R4   ; DT DIRECTORY FULL ERR11: ADD #7,R4   ; 2ND FILE ON DT UNIT ERR2: ADD #2,R4   ; FILE EXISTS ALREADY CMP (R1)+ACARCHI 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'TE I ;   EMITE INUTROUB S ;   L PA E AG.P RNTURET BE CHECKPOINTABLE AGAIN) 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 ONE RAS STA105: CMPB #040,-(R0) ; WORD. IS THIS CHARACTER A BLANK& RAS B MOVB  #REGFLG,REGTYPE ; TYPE EXPRESSION AS REGISTER  BR  EXPR02  ; ACQUIRE THE NEXT ITEM EXPR04:  ; CLASS 3 TERMINATORS 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,-(R6)  ; GET FILE BLOCK MOV @R1,R3   ; STORE ERROR CODE MOVB R4,-(R3) TSTB -(R3)   ; MOVE TO ERR RTN MOV #BADOPN,R5  ; BUT ALLOW FOR NONE CLRB 12(R0)   ; CLEAR OPEN SW. MOV @PC,-(R6)  ; RELEASE BUFFS FOR OPEN EMT .RLSFIB     ; IF NO BUFFER, THIS MAY     ; BE IN SWAP BUFFER, SO     ; CANNOT DO IT THIS WAY BR ERRGO NOBUF: MOV @R1,R3   ; SO IN THAT CASE .... MOV #NOBUFR,R5  ; USE LINK ERR RTN MOV @#S.RBUF,R4  ; FIRST RELEA;  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: UFKBBL NENO UTTPOU;    . NKLA B ATHWID LEIL FBEO T  ;    ONTISIPOR FEUF BSTLAE THF O  ; PEQ 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 ; CALCULATE NUMBER OF CHARACTERS IN STRIRAS MOV R0,(R1) ; NG. SET # OF CHA  @0(R3),@R4  ; PLACE THE FIRST ASCII CHAR.     ; INTO QUANTITY LOW BYTE  TST  R0   ; WAS THE TERMINATOR ' ?  BEQ  EXPR06  ; YES, SERVICE THE OPERATION  INC  @R3   ; INCREMENT CURBYTE POINTER  MOVB  @0(R3),QUANTITY+1 ; PLACE THE SECOND ASCII CHAR.     ; INTO QUANTITY HIGH BYTE EXPR06: INC  @R3   ; INCREMENT CURBYTE POINTER EXPR16:  CLRB  ITYPE  CLR  R0  BR  EXPR0C  ; SERVICE THE OPERATISE OPN BUFFS MOV 26(R0),-(R6)  ; ... FIB FIRST CLR 26(R0)   ; ... & ITS DDB PTR MOV #1,-(R6) JSR R5,@R4 MOV 6(R0),-(R6)  ; ... THEN DATA BUFFER CLR 6(R0) MOV -2(R0),R2  ; REQS SBS FROM DVR CLR -(R6) MOVB 4(R2),@R6 JSR R5,@R4 CLRB 12(R0)   ; ALSO CLEAR OPEN SW. ERRGO: ADD #14,R6   ; CLEAR GARBAGE MOV -(R3),14(R6)  ; SET ERROR RTN BNE OPNOEXIT DEVERR: MOV @R0,-(R6)  ; IF NONE CALL EDP MOV R5,-(R6)  ; WITH CALL AS EVIDENCE     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 E.AGSSMEN IRSTEACARCH# ; 6 B-ERSM-A=. N RLAE S RA GEPAW NEA D AN' '.A ; FF6,05LR. 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. RAS JSR PC,BFWRIT ; PUT CARD IMAGE OUT TO DISK. RAS BR ON EXPR07: TSTB  R1   ; CHECK THE OPERATOR COUNTER  BLE  EXPR08  ; FIRST OPERATOR IS VALID  JSR PC, SETERR ; CALL SET ERRORS  CLRB  R2   ; ZERO THE EFFECTIVE OPERATOR EXPR08: CLRB  R1  INCB  R1   ; INCREMENT OPERATOR COUNTER  DEC  R0   ; ENCODE OPERATOR SUCH THAT     ; ADDITION IS ENCODED AS ZERO  BISB  R0,R2  ; SET THE EFFECTIVE OPERATOR  BR  EXPR02  ; PROCESS THE NEXT ITEM EXPR09: IOT OP02: MOV R5,@R3   ; IF MT SLOT IN DIR ... MOV MINE2(R0),R3  ; SET POINTER TO IT JSR PC,OPNOREAD1  ; ... & GET BLOCK IN OP03: EMT .GETMAP   ; GET BIT MAP MOV @FIB,-(R6)  ; IF NOT IN ... BGT NOBUF   ; MAYBE NO BUFFER TST (R6)+   ; OR 2ND OUT OPEN ON DT BMI ERR11 EMT .BALLOC   ; OTHERWISE GET 1ST BLOCK MOV R3,R5   ; NOW SET UP DIRECTORY MOV (R6)+,(R5)+  ; FIRST FILE NAM 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 S RA 1.R VE OND A 3WNDO; AB,TLFF,,LLF E YT.B S RA ; H 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 ; GO DO ERROR STUFF. DON'T COME BACK. RAS STA120: MOV #-1,(R1) ; PUT OUT EOF CONTROL WOR  ; CLASS 5 TERMINATORS PROCESSED  BIT  #177400,R1  ; ARE COMMAS VALIDATED ?  BLE  EXPR0B  ; YES, PREPARE TO RETURN 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  E MOV (R6)+,(R5)+ MOV (R6)+,(R5)+  ; ... & EXTENSION MOV #103,@R6  ; GET DATE .... EMT .DATE MOV (R6)+,@R5  ; & STORE WITH OK TYPE BIC #170000,(R5)+ MOV #77,(R5)+  ; SHOW OPEN FOR OUTPUT MOV @FIB,(R5)+  ; STORE START BLOCK CLR (R5)+   ; EMPTY LENGTH & END CLR (R5)+ MOV (R6)+,@R5  ; STORE PROTECTION BNE .+6 MOV #233,@R5  ; OR ITS DEFAULT MOV @FIB,R4   ; SAVE START BLOCK MOV R3,R2   ; FINALISE FIB MOV #1,-(R6) EMT .SE 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 ; LSFC$B T EM S RA NTMELE ERYNABIE THD AN; ) SP-(B,BFIN#B V MO S RA ; LSFC$B T EM S RA DD 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 MOV DSWSEC,SRBLNT ; COMPUTE THE LENGTH OF THE SRC. ELEMENTRAS SUB SRBSE; RESTART EXPRESSION EVALUATION EXPR0B:  ; CLASS 2 TERMINATORS PROCESSED  SWAB  R2   ; GENERAL ERROR FLAG =  MOVB  R2,ERROR  ; R2 HIGH ORDER BYTE  CMPB  #1,RSLMOD  BGE  EXPR0R  INCB  AERROR EXPR0R: TSTB PRGSEC BEQ EXPR0P  ;NO .CSECT CMPB PRGSEC,SECMOD BEQ EXPR0P  ;CURRENT .CSECT MOVB #-2,RSLMOD ;NOT CURRENT. EXPR0P:  JSR PC, SETREG ; CALL SET REGISTERS  TSTB  ICOUNT  ; SET THE CONDITION CODES  RTS  R7  TUPFIB JSR PC,OPNOWRIT1  ; OUTPUT TO DEVICE MOV R4,BLOCK(R0)  ; SET START BLOCK IN DDB JSR PC,CLRBUF  ; REMOVE GARBAGE MOV R3,BUFPTR(R0)  ; SET BUFFER PTR BIS #200,STATUS(R0)  ; ... & OPEN SWITCH OPNOEXIT: MOV @#S.EXIT,R5  ; SET R5 TO THE ADR OF THE RRES CMP (R5)+,(R5)+ CLR @R0     ; CALL IN THE COMMON EXIT ROUTINE TSTB OPENO   ; CORE RESIDENT? BNE .+4   ; NOPE MOV R5,PC   NTMELE ECEURSOE THE OSCL; ) SP-(B,BFRC#S V MO S RA T. INTRI PGO; T INPR,LPC R JS S RA . CKTA SON. DD AERFFBUR ROERT PU; ) 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; @C,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 ON PASS 1. RAS CLRB CNSTLV ; CLEAR CONDITIONAL NEST COUNTE ; RETURN EXPR0C:  ; NON-VOID ITEM ENCOUNTERED AND PROCESSED  INCB  ICOUNT  ; INCREMENT ITEM COUNTER  TSTB  ITYPE  ; HOW IS THE ITEM TYPED ?  BLE  EXPR0I ; NUMBERS, ERRORS, AND ASCII DATA   ; SYMBOLS PROCESSED  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 ; YUP...GO TO RRES MOV PC,-(R6)  ; PUSH ABS ADR OF THE BUFFER ADD #OPENO-.,@R6 MOV #20,-(R6)  ; PUSH BUF SIZE MOV R5,-(R6)  ; FAKE A JSR TO RBUF MOV @#S.RBUF,PC  ; TO RTN TO S.XIT CLRBUF: MOV BUFADR(R0),R5  ; GET BUFF START MOV R5,R3   ; ... & HOLD IT MOV WC(R0),-(R6)  ; GET SIZE CLR (R5)+   ; ... & CLEAR INC @R6 BNE .-4 CMP (R6)+,(R3)+  ; SKIP LINK IN BUFF RTS PC ; R4+,P)(S V MO S RA ; RNMEAS+,P)(S VBMO S RA GESAES MIN# R ROERT PU; +1RNMEAS),SP1( VBMO: UTROER S RA ; S RA UTROER P JM ; S RA ) SP-(#,RR#E VEMO ; S RA ) SP-(E,LUVA VEMO ; S RA <R. 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: MOV PERBOT ,R0 ;ADDRESS (HIGHEST) OF 1ST ENTRY. MOV PERTOP ,R1 ;ADDRESS OF 1ST (LOWER)SYMBOL BEEN REDEFINED? BNE EXPR0M  ; YES MOVB #DEFFLG,TFLAGS ; MAKE LINE USER SYMBOL BR EXPR0I EXPR0M:  JSR PC, SEARCH ; 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: FILE STRUCTURES READ/WRITE SUBROUTINE OPNOWRIT1: MOV #OUT,R5  ;SET FOR WRITE BR .+6 OPNOREAD1: MOV #IN,R5  ;SET FOR READ MOV @#S.RSAV,-(R6) JSR R5,@(R6)+ ;SAVE REGISTERS MOV R0,-(R6) ;SAVE DDB ADDRESS MOV R6,R2  ;AND POINTER THERETO MOV @R0,-(R6) ;SAVE DDB CONTENT MOV R2,-(R6) ;FOR WAIT BELOW MOV #10,R1  ;FOR DRIVER CALL MOV R0,R3 ADD #12,R3 BIC #6,@R3 BIS 20(R6),(R3)+ ;ENTER FUNCTION IN DDB MOV PC,@R3  ;SET UP COMPLETION RETURN A : ISE AGNKLIE TH; S RA S.ITEXD ANE AGSSMER ROERE THS NTRI PNETIOU RISTH; L PA 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 ;   8 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)  ;ENTRY. CLR -(R1)  ;JUST TO DECREMENT R1 MOV R1,CONTOP ; ;INITIALIZE TOP OF  ; CHECK SYMBOLS FLAGS  MOVB  TFLAGS+1,R0  ; R0 = MULTIPLY DEFINED BYTE  CMPB  #MDFLAG,R0  ; SYMBOL MULTIPLY DEFINED ?  BNE  EXPR0H  ; NOPE  INCB  DERROR  ; DOUBLY DEFINED ERROR  BIS  #000400,R2  ; SET THE GENERAL ERROR EXPR0H:  MOVB  TFLAGS,R0  ; R0=TEMPORARY FLAGS.  BITB  #GLBFLG,R0  BNE  EXPR0I  BITB  #DEFFLG,R0  ; SYMBOL DEFINED ?  BEQ  EXPR0L  ; NOPE  BITB  #REGFLG,R0  ;DD #RETN-.,@R3 MOV @#S.CDB,-(R6) ;CALL DRIVER JSR PC,@(R6)+ EMT 1  ;WAIT FOR COMPLETION MOV (R6)+,@(R6)+ ;RESTORE (DDB)-DESTROYED AT RETN MOV @#S.RRES,-(R6) JSR R5,@(R6)+ ;RESTORE REGISTERS RTS PC RETN: MOV @R0,-(R6) ;DRIVER COMPLETION COMES HERE MOV #PARERR,-(R6) ;SET UP FOR PARITY ERROR TST STATUS(R0) ;IF THERE IS ONE, GO TO BMI OPNOREAD1+2 ;#IN=4=IOT TST (R6)+ MOV @#S.EXIT,R5 ;USE SAM RTN TO DEQUEUE DRVR JMP -12(R5)  ;CLEARS DDB, SO RE  RSFEUF BLEABILVA A =R0;  0 ,RR2 @ OV M  ERFFBUG INSTLIK ANBLL AL C ; F BULK B C,PR JS R TEINPOT ISRLCUT SE;  R3,@R1  V MO T UNCOE YT BRSFEUF BROZE;  + 1)(R  R CL AS R . #2D OR WARLE C ; )+R1 ( LR C X MAS ERFFBUE IZALTINI I ; )+R1,(R0  V MO T UNCOE YT BAX MLO= 0 R ; R0C,MBLO # OV M  SSREDD AERADHEO LRSFEUF B ;     L PAFFBUI SOMFRR FEUF BLOO TETFSOF1-=RRU; R1O,ILFS#D B SU4UST 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 PAL ; REGISTER SYMBOL ?  BEQ  EXPR0I  ; NOPE  MOVB  #REGFLG,REGTYPE ; YES, TYPE THE EXPRESSION     ; AS REGISTER 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) EXJTASTORE ABOVE CAT=.-OPENO .END S RA T.YET NO; T1TARO E BN S RA ? NEDOG INSTLIL AL; 1 ,#STLILP P CM: T1TARO SSREDD ASTLIUR C =R3;  3 ,RSTLIUR#C  V MO S ESDRADS ERADHE;     R FEUF BUTNP ICEURSO;     S ERFFBUE IVCTFEEF= 1 R ; R12,@R  V MO S SEESDRADS ERADHE;     R FEUF BUTNP IHE TNGNIAINTCO;     E BLTAE THF OSSREDD A =R2;  2 ,RRSADBH # OV M: 02BRSU E:ATOT RD YEROSTDE0 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 ; RAS ; RAS B:  .WORD  EXPR0J  ;THIS ENABLES A  .WORD  EXPR0S  ;JMP TO  .WORD  EXPRL0  ;THE APPROPRIATE  .WORD  EXPRLA  ;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  ;///////////////////////////////////////////// ; ;//////////////////////////////////////////// ; ; ; ; DISK FILE STRUCTURE PROGRAM ; V000A ; DIGITAL EQUIPMENT CORP. ; COPYRIGHT 1971 R0=%0 R1=%1 R2=%2 R3=%3 R4=%4 R5=%5 R6=%6 R7=%7 PC=%7 E AR3 RRUTH0 R  ;    SSREDD ARSDEEA H  ;    R FEUF BUTNP ICEURSO   ;    RSFEUF BLEABILVA A =R0 UTTPOU;    E ON N UTNP I ;    ONTISIPOE BLLAAIAVE THO NT IERFFBUS TETARO ;   S NKLA BTOA AT DRSFEUF BISTHS ZELIIAITIN ;   R DEEA HLOS ERFFBUS HI TESIZALTINI I ;   RYSAESEC NIF, ONTINAMIER TLOS IEIFER V ;   S:SKTAG INOWLLFOE THS RMFOER PNETIOUBRSUS HI T ;   RSFEUF BUTTPOUT/PUINE ATOT RNETIOUBRSU;  AL P , ; 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,RELPC ; POINTER TO CURRENT PC OF BLANK .CSECT.RAS MOV CONTOP,R1 ; TOP OF #DEFFLG,R1  ;IF ABS THEN BR  BNE  EXPR0N  BITB  #GLBFLG,R1  BEQ  EXPR0N  TSTB  RSLMOD  ;IF GLB THEN IF RSL IS REL  BNE  EXPERR  ;THEN ERRR  MOVB  #-1,RSLMOD  ;ELSE SET GLB MOD  BR  EXPR0K EXP2C:  TSTB  PRGSEC  ;PREVIOUS RELOCATABLE SYMBOL  BNE  EXP2D  ;YES  MOVB  CSCTID,PRGSEC ;SAVE THIS ID  BR  EXP2B EXP2D:  CMPB  CSCTID,PRGSEC ;SAME .CSECT  BNE  EXPERR  ;NO-A ERROR EXP2B:  INCB  RSLMOD MAPREG =R1 BLKREG =R2 FIB =R2 BIBREG=R0 DRVREG=R5 DATREG=R4 RTMP=R5 ADR=R4 OPNIFLG=4 OPNUFLG =1 OPNEFLG =3 OPNOFLG =2 OPNAFLG =5 OPNCFLG=13 LOGNAM=2 IN=4 OUT=2 EOF=40000 ; FIB ASSIGNMENTS NXTBLK =0 HOWOPEN =2 BEGEXT =4 TYPE =6 STRT =12 LENGTH =14 LAST =16 DIRITM =20 DIRBLK =22 IF =26 CBMPTR =30 FLINK =32 ; BIB ASSIGNMENTS UFDPTR =2 MYWORD =2 BLOCK =4 BUFADR =6 WC =10 GEPA . , RNTURE;  7 R TS R 1:NTRI PR TEACARBH' '?E UTITSTUB S ; E YTRBCU,@'? # VBMO 0:NTRI PT MILIR WELO 40S EDCEEX;  1 NTRI P LE B  TEBYUR@C0,#4  B MP C  ITIM LERPP U40 1DSEEXC E ; T0INPR  T BG 0 14,#TEBYUR@C  B MP C: 25BRSU T:INPR IDALNV IESLIMP IT..G  ;     IDAL VESLIMP IE..L  ;    S LTSURED DECON IOITNDCO: UTTPOU;    Y ITILABNTRI PNETIOUBRSU;  AL P (.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? RAS STA220: MOVB #1,SECMOD ; INITALLY IN UNAMED .CSECT RAS  BR  EXPR0N EXP2A:  BITB  #RELFLG,R1  ;ERRR IF REL  BNE  EXPERR  BITB  #DEFFLG,R1  ;OR GLB  BNE  EXPR0N  BITB  #GLBFLG,R1  BNE  EXPERR EXPR0N:  ADD  @R4,@R5  ; RESULT = RESULT+QUANTITY  BR  EXPR0K  ; PROCESS THE NEXT OPERATOR    ; SUBTRACTION EXPR0S:  TSTB  ITYPE  BEQ  EXP3N  BITB  #DEFFLG,R1  BNE  EXP3A  BITB  #GLBFLG,R1  BNE   EXPERR EXP3A: BITB  #RELFLG,R1  BEQ  EXP3N STATUS =12 UNIT =13 DEVNO =13 DUNRTN =14 BUFPTR =16 BC =20 CKSUM =22 MINE2 =22 DATPTR =24 FIBLNK =26 ; DRIVER ASSIGNMENTS SBS =4 DSKTFR =10 MFDPTR =16 BMPTR =20 ; OTHER ASSIGNMENTS S.EXIT=42 S.RSAV=44 S.RRES=46 S.CDB=50 S.CDQ=52 GETBUF=54 S.RBUF=56 DKDRVR=1540 DTDRVR=4100 DKFULL =1406 PARERR =1417 BADOPN =1412 NOBUFR =1407 ILFSOP =1423 DFMFD=1 DTMFD=100 GEPA . N URET R ; R7  S RT N URET R ; R7  TS R0:CHET;G N.IOATINRMTEE URNS I ; R3E,YTRBCU @ VBMO ; 0 THAN 16 BIT PRODUCT BEQ EXPROK TGOOF: INCB TERROR ; TRUNCATION ERROR RAS BR EXPROK ; EXPDIV: MOV (R5),@#M STATUS =12 UNIT =13 DEVNO =13 DUNRTN =14 BUFPTR =16 BC =20 CKSUM =22 MINE2 =22 DATPTR =24 FIBLNK =26 ; DRIVER ASSIGNMENTS SBS =4 DSKTFR =10 MFDPTR =16 BMPTR =20 ; OTHER ASSIGNMENTS S.EXIT=42 S.RSAV=44 S.RRES=46 S.CDB=50 S.CDQ=52 GETBUF=54 S.RBUF=56 DKDRVR=1540 DTDRVR=4100 DKFULL =1406 PARERR =1417 BADOPN =1412 NOBUFR =1407 ILFSOP =1424 DFMFD=1 DTMFD=100 BCKWRD =4000 C:NPVE ER TEUNCON IOATOC LHE TENEVE INUTROUB S ;   NGSIESOCPRE ETPLOM C ; T XI E MP J  ORRRBE  B LR C  ERNTOU CONTICALOE THN VE ELLCA; PCENEV , PC SR J  T.OUD CEOR F ;    YSWAALS IERFFBUT PUUT ORYNABIE TH;    , REFOREHE TD,RETEALY LLNAIOITNDCOUN;    S IERNTOU CONTICALOY BLEMSS AHE T ;    NGSIESOCPRE IVCTREDIY BLEMSS AENEV;   : ENEV S RA. ALONTIRAPE OOT NESGE . T XI EONMMCO; MNTCLS BR : ESGE ;. ALONTIRAPE-OON NRET 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. RAS JMP SETSRC ; GO START THE PROCESSING LOOP. RAS .PAGE Q ;MOVE IN PREVIOUS VALUE MOV (R4),@#DIVISOR ;DIVIDE IT BY NEW VALUE BEQ TGOOF  ;BRANCH IF DIVISOR = 0 MOV @#MQ,(R5) ;STORE 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: ; EMT ASSIGNMENTS .DATE =41 .INIT =6 .RLS =7 .ALLOC =15 .RENAM =20 .APPEND =22 .PROTECT =24 .DELETE =21 .GETMAP =50 .BALLOC =47 .GETCONTIG =51 .LOOKUP =46 .CKACSP =52 .DELNK =53 .DELCONTIG =54 .SETUPFIB =52 .RLSFIB =52 .APNDP2=55 .DIRECT=14 UIC=440 DAT=432 .TITLE PRO .GLOBL PRO ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; AESIVCTREDI ; T ISNL .ND ASTLI .ENTH, NTSERE PIF- E IVCTREDIS EE.G ; ; AS R ITEXN MOOM C ; N CMST L R B G LA FSTLIS ESPRUP SET;S ONSTLI7,RV MO T:ISNL DECOD LEMBSEASN-NOF TOOUNTRI PCEURSOS ESPRUP S -VETIECIR DSTLI.N ; ;T XIER B AS R NELIS HI TNTRI P'TON D ; EYTKIS,L-1 # OV MN:CMST LN TOISLR CL T:IS L; DECOD LEMBSEASN-NOF OUTTOINPRE RCOU SMESURE- E IVCTREDIT IS.L ; ; AS R R LENDHAD EN .EDATULIM S ;  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,CBTABS  ;FLUSH BLANKS OR DEC CURBYTE  ;TABS. JSR PC,ITEM  ;GET NEXT ITEM TSTB CNT CHARACTER IDENTIFICATION    ; INPUT R0 MUST BE FREE    ; OUTPUT R0=SFLAG'S VALUE ;  NUMBERS R0=1  CONVERTED AND PACKED ;  SYMBOLS R0=2 OR 3  MOD40 AND SAVED ; NOT FOUND SITUATIONS: ;  TERMIS R0<0  R0=SFLAG IS CODED ; FOUND SITUATIONS: ;  TERMIS R0=0  CHARACTER WAS NOT A TERMI. ; R0 RETURNED VALUE   INTERPRETATION ;  NUMBERS R0< OR = 1  DEFAULTED TO TERMIS SEARCH ;  SYMBOLS R0< OR = 1  DEFAULTED TO NUMBE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;; PROTECT ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; ROUTINE TO SET PROTECT BIT ; IN USER'S FILES ; ; CALLING SEQUENCE ; MOV #FILE,-(R6) ; MOV #DATASET,-(R6) ; EMT 11ND E MP JD:ENIM S AS R ERDLAN HTEBY . ; TEBY R MP J E:YT B AS R R LENDHAI CIAS . ; I CIAS R MP J: IISC A AS R R LENDHA0 D5RA . ; 0 D5RA R MP J: 50AD R AS R ERDLAN HDCEN . ; DCEN R MP J C:ND E AS R S ERDLAN HALONTIDION CALICOG L ; 2 ROFP I MP J: DFFN I AS R RYNT EDFIF . ; )+R1,()+R1 ( MP C F:FD I ERDLAN HALCHAR ;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 ,ABSPC BISB #RELFLG,@HUSERPC ;SET RELOCATABLE ;FLAG BIT IN DOT SYMBOL ENTRY BR CR SEARCH ;  = 3   NTH CHARACTER'S ENTRY RESULT ;    NOT (0-9) . DEFAULTS TO FCHAR ;  = 2   NTH CHARACTER'S ENTRY RESULT ;    DEFAULTS TO NUMBER ;    1ST CHARACTER'S ENTRY RESULT ;    WAS (0-9) .DEFAULTS TO FCHAR ;  = 1   NUMBER'S ENTRY RESULT ;    DEFAULTS TO TERMINATOR SEARCH ;  < 0   CHARACTER WAS A TERMINATOR ;  = 0   CHARACTER NOT A TERMINATOR ; TERMINATORS ENCODED AS FOLLOWS: ;  #  -18 ;  @  -17 ;  %  -16 +PROTECT ; ;FILE: FIL ; NAM ; EXT ; UIC ; ;ERROR RETURN: ; FILE DOESN'T EXIST ; CALLER IS NOT OWNER ; FILE IS OPEN PROTECT: 177400 ;COMMON CODE TO MOVE CODE ; FLAG FOR SAM.....NON REENTRANT,0 PRO: ADD PC,R5 ; R5=177776 VIA SAM TST -(R5) ; LOOK AT FIRST WRD OF CODE TSTB @R5 ; IN SWAP BUFFER? BEQ PROT1 ; IF RESIDENT THEN SKIP MOV #20,-(R6) ; DISK RESIDENT. GET A BUFFER MOV @#GETBUF,R4 JSR R5,@R4 MOV (R6)+,ONTIDION CICRAEBLG A ; ROFP I MP J : FZ I+ 1)(R+,1)(R MPC: LEIF )+R1,()+R1(P CM L:IF 0)00IF (LEAB TCHANBRO NT;I )+R1,()+R1(P CM E:FG IT ENEMACPLIS DEROPPRT SE;+ 1)(R+,1)(R MPC: FG I+ 1)(R+,1)(R MPC: NZIF ;; N"AI"ME SE--E-NCRANT EON0 )=R1C( ;; ERDLAN HESIVCTREDIL NAIOITNDCOF OONTIOR PNTDESIRE ;; S RA T XI EONMMCO; MNGCPA BR RDWOS NELI. AX MINE LUVAE ORST;S NELIAX,MTYTIANQU OV MK:EOIN L AS R ITEX SECT7 ;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  ;MATCH; JUST SYMBOL MOV PERTOP ,R2 ;PERFORM LINEAR MOV CONTOP ,R3 ;SEARCH OVER ;  BLANK  -15 ;  TAB  -14 ;  (  -13 ;  )  -12 ;  "  -11  QUOTATION ;  '  -10  APOSTROPHE ;  +  -9 ;  -  -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 = TCADIR3 ; PUT ADR INTO R3 BNE .+6 JMP PNOBUF ; TOO BAD MOV R3,R4 ; LOOP TO DO THE MOVE MOV R5,R2 MOV (R2)+,(R3)+ INC @R4 BLE .-4 SUB R2,R3 ; FIRST WORD NOW EQ 1 ADD R3,PC ; GO BABY CLR @R5 CLR -2(R5) PROT1: BIT #200,12(R0) ; CK DATASET BUSY BNE PRER14 ;TOO BAD ; GET A FIB AND A BUFFER MOV #1,-(R6) EMT .SETUPFIB TST FIBLNK(R0) ; GET ONE? BEQ PNOBUF MOV -2(R0),R5 ; IMMED EXIT IF NOT FS DEVICE TST 2(R5) N MOOM C ; N CMAG P R B . SK TK,TS; R ROERNB NCI K EOINLQ BE  UEAL VODGOA S ITE UR SKEMA; E YPIT TBTS  NOFE LUVAT GE; M TE,IPC SRJ: ESIN L; NS NELI.; ;G INSSCERO PVETIECIR DGEPAR PES NELIF OERMBNUE INEFD; ;; ITEX BR  S RA . NELIS HI TNGTIINPRC PORY ARIN BNO; ZESI CBDE: MNGCPA L PANTOU CGEPAW LORFVE O. CTJE EGEPAE RCFO; G INAG,PESINXLMA D AD : GEPA S RA ERDLAN HND.E; NDRE P JM D:EN S RA 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 ;MATCH FOUND---COMPUTE CONTROL SECTION ID CSECT3: MOV PERTOP ,R3 ;ADDRESS OF 1ST ENTRY V-TCHARS TCAIMM: .BYTE  '#   ; IMMEDIATE TCCIMM  =  TCAIMM-TCHARS TCADEF: .BYTE  '@   ; DEFFERD TCCDEF  =  TCADEF-TCHARS TCAREG: .BYTE  '%   ; REGISTER TCCREG  =  TCAREG-TCHARS TCABLK: .BYTE  '   ; BLANK TCCBLK  =  TCABLK-TCHARS TCATAB: .BYTE  011   ; TAB TCCTAB  =  TCATAB-TCHARS TCALPA: .BYTE  '(   ; LEFT PARENTHESIS TCCLPA  =  TCALPA-TCHARS TCARPA: .BYTE  ')   ; RIGHT PARENTHESIS TBPL PEXIT SUB #14,R6 ; MAKE ROOM FOR ARGS EMT .LOOKUP ; FILE EXIST? CMP @R6,#-3 BHIS PROER2 ;NO - ERROR MOV @R6,R5 ;FILE OPEN MOV 10(R5),-(R6) BIC #177700,(R6)+ BNE PROER14 ;YUP BIS #200,20(R5) ;SET PROTECT BIT ADD #14,R6 JSR PC,PROWRIT1 PEXIT: TST FIBLNK(R0) ; IS THERE A FIB? BEQ .+6 ; NO MOV @PC,-(R6) ; RLS FIB EMT .RLSFIB PEX05: CLR @R0 ; RLS DDB MOV @#S.RRES,R5 JSR R5,@R5 MOV (R6 ERDLAN HITIM.L; ITIMRL P JM T:MILI S RA ERDLAN HLEIT.T; LEITRT P JM E:TLTI S RA S ERDLAN HEF.R, EF.D, BLLO.G; BLLORG P JM L:OBGL S RA ERDLAN HCTSE.A; CTSERA P JM T:ECAS S RA ERDLAN HCTSE.C; CTSERC P JM T:ECCS S RA ; S RA S VETIEC 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 CMP R1,@HIRPC BLOS CSECT7 BIT #1,R1  ;EVEN OFF MAX. PC BEQ CSECT8 INC CCRPA  =  TCARPA-TCHARS TCAQUO: .BYTE  '"   ; QUOTATION TCCQUO  =  TCAQUO-TCHARS TCAAPO: .BYTE  ''   ; APOSTROPHE 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  ';   ;)+,2(R6) MOV (R6)+,2(R6) MOV @#S.RSAV,-(R6) JSR R5,@(R6)+ MOV @#S.EXIT,R5 ; SET R5 TO THE ADR OF THE RRES ; CALL IN THE COMMON EXIT ROUTINE CMP (R5)+,(R5)+ TSTB PROTECT ; CORE RESIDENT? BNE .+4 ; NOPE MOV R5,PC ; YUP...GO TO RRES MOV PC,-(R6) ; PUSH ABS ADR OF THE BUFFER ADD #PROTECT-.,@R6 MOV #20,-(R6) ; PUSH BUF SIZE MOV R5,-(R6) ; FAKE A JSR TO RBUF MOV @#S.RBUF,PC ; AND RETURN TO S.EXIT PROER2: MOV IR DERBLEMSS AOR FRSLENDHA; S RA ; NELIE RCOU STON URET R ; RCTSSE  P JM G INSSCERO PNELID ENL AL C ; NELIND E C,PR JS : ITEX ATRMFOG INSTLIP UET;S UFBB,TR3@V MO E:N1AI MN URET R ; R7  S RT E LUVAS L'BOYM S =LTSURE; R3,@0)(R-2  V MO S ESDRADY TRENS L'BOYM S =R0;  0 ,RX.DEIN H OV M  ORRR EEDINEF DLYIPLTMUT SE;  R ROER M CBIN 5:R0UB S: ALVVSA NENOT PUUT O ;    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) MOVB #RLD3.1,R0 ;LOCATION COUNTER DEFINITION MOV TBBUF ,R3 ;DISPLACEMENT FROM SEC  SEMICOLON TCCSMC  =  TCASMC-TCHARS TCACRE: .BYTE  015   ; CARRIAGE-RETURN TCCCRE  =  TCACRE-TCHARS TCACOM: .BYTE  ',   ; 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 INITIALIZ #2,R2 BR PER1Z PRER14: SUB #14,R6 ; DIDDLE STACK ; DATASET BUSY ERROR PROER14: MOV #14,R2 BR PER1Z PER1Z: TST (R1)+ MOV @R1,R5 MOVB R2,-(R5) TSTB -(R5) ADD #14,R6 MOV #ILFSOP,R3 ; SET R3 EQ ERROR CODE BR PER2Z PNOBUF: MOV @R1,R5 MOV #NOBUFR,R3 ; SET R3 EQ ERR CODE CLR R2 PER2Z: MOV -(R5),14(R6) BNE PEXIT ; EXIT IF NON-ZERO ADR MOV @R0,-(R6) ; OTHERWISE,CALL DIAG PRINT MOV R3,-(R6) IOT ;FILE STRUCTURESONTIUAIT SALCIPE SUTNP I ;    ET SISR ROERD NEFIDEY PLTIUL MHE T ;   E.LUVAE BLTAL BOYM S ;   HE TTHWIE LUVAS T'ULES RESACPLREE INUTROUB SISTH;   L BOYM SHE TOFE LUVAE AV SNETIOUBRSU;  AS R GEPA . E ODPCOP JM  CHANBR- O ;N  0AN2MT BG  E?IN LISTHE BLEMSS;A  CTTADN TBTS  EDRMFOER PNGSIASCLC NIMONE M ;  : 25INMA ERDLAN HVETIECIR D ;     TEIAPRROPP AHE TTOP UM J ; TYTIANQU @  TION 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 FOR MOV R1,@RELPC ;PREVIOUS SECTION CMP R1,@HIRPC BLOS ASECT1 BIT #1,RATION TERM0:  MOV  #-TCTSIZE,R0 ; R0 = -TCHARS TABLE SIZE TERM1:  MOV  R0,SAVTERM  ; SAVTERM = R0  BGE  SECRTN  ; 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 READ/WRITE SUBROUTINE PROWRIT1: MOV #OUT,R5 ;SET FOR WRITE BR .+6 PROREAD1: MOV #IN,R5 ;SET FOR READ MOV @#S.RSAV,-(R6) JSR R5,@(R6)+ ;SAVE REGISTERS MOV R0,-(R6) ;SAVE DDB ADDRESS MOV R6,R2 ;AND POINTER THERETO MOV @R0,-(R6) ;SAVE DDB CONTENT MOV R2,-(R6) ;FOR WAIT BELOW MOV #10,R1 ;FOR DRIVER CALL MOV R0,R3 ADD #12,R3 BIC #6,@R3 BIS 20(R6),(R3)+ ;ENTER FUNCTION IN DDB MOV PC,@R3 ;SET UP COMPLETION RETURN ADD #RETN-.,@R3 MP J  CEFAERNT ILYMBSEASL NAIOITNDCOR FO;1 RR CL A:24MN 0AN2MT BG  CHANBR- O ;N DCEN,#TYTIANQU MPC ? ??????--F-.IS HI TIS;A 20MN LTB Z FN#IY,ITNTUAQP CM  CHANBR- S YE;A 24MN LEB ? NELIS HI TLEMBSEAS; T ACNTDB STT S VETIECIR DLYMBSEAS;     G INSSLA CICONEMMN;  5 N2AI M EQ B  ?R.DI. SM AORC NIMONE M ; S AGFL,TIRMDAS # TBBI 4:N2AI M AS R E IVCTREDID OR W ; RDWO R MP J D:OR W AS R 1  ;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 GLOBAL STATEMENTS RGLOBL:  MOVB  #-1,SIZE CLRB  SAVTERM JSR PC, CB   ; DECIMAL POINT SEEN YET ?  BLT  TERM0  ; YES, PERMIT ONLY TERMINATOR  MOV  #1,R0  ; R0 = 1  CMPB  R3,#'0  ; IS CHARACTER AN ASCII 0  BLT  NUM1  ; NOPE  CMPB  R3,#'9  ; IS CHARACTER AN ASCII 9  BLE  NUM2  ; JUMP IF PROPERLY BOUNDED NUM1:  CMPB  #'.,R3  ; CHARACTER A DECIMAL POINT ?  BNE  TERM0  ; NO, DEFAULT TO TERMINATOR  BISB  #200,@R4  ; YES, SET DECNUM'S SIGN BIT      MOV @#S.CDB,-(R6) ;CALL DRIVER JSR PC,@(R6)+ EMT 1 ;WAIT FOR COMPLETION MOV (R6)+,@(R6)+ ;RESTORE (DDB)-DESTROYED AT RETN MOV @#S.RRES,-(R6) JSR R5,@(R6)+ ;RESTORE REGISTERS RTS PC RETN: MOV @R0,-(R6) ;DRIVER COMPLETION COMES HERE MOV #PARERR,-(R6) ;SET UP FOR PARITY ERROR TST STATUS(R0) ;IF THERE IS ONE, GO TO BMI PROREAD1+2 ;#IN=4=IOT TST (R6)+ MOV @#S.EXIT,R5 ;USE SAM RTN TO DEQUEUE DRVR JMP -12(R5) ;CLEARS DDB, SO RESTORE ABOVE ;H NCRA B -NO;A 20MN GTB ? NELIS HI TLEMBSEAS;T ACNTDB STT: 23INMA AGFLG INNDPEM TE IET;S  INEMIT CBIN  CHANBR- O ;N 0AN2MT BG  E?IN LISTHE BLEMSS;A  CTTADN TBTS 2:N2AI M. .T.S PHE TIND UNFOL BOYM S ; 24INMA  T BG E BLTAL BOYM SNTNEMAER PCHARSEL AL C ; H RCEA S C,PR JS G INNDPES IEMITS HI T ; 22INMA  E BL ? E YP TMSTE INEMIERET D ; PETY I TBTS 1:N2AI MT XI E BR G INSTLIE THT MAOR F ;     TOTABS 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 LEGAL  BGT  GLOBL4  ;THE BRANCH IF SYMBOL  INCB  QERROR  ;ELSE FLAG  ; DECIMAL POINT HAS BEEN SEEN  BICB  #10,NERROR  ; CLEAR THE IMPLIED DECIMAL     ; BIT IN THE NERROR FLAG  CLR  -(R6)  ; STACK A VOID OVERFLOW VALUE  BR  NUM3  ; COMPLETE NUMBER PROCESSING NUM2:  BIC  #177760,R3  ; CONVERT ASCII DIGIT TO BINARY  MOV  @R1,R5  ; R5 = BASE08'S CURRENT VALUE  MOV  @R2,-(R6)  ; STACK BASE10'S VALUE  BIC  #017777,R5  ; DETECT BASE08'S OVERFLOW  BIC  #017777,@R6  CAT =.-PROTECT .END ; END OF PRO D SE UIS1 - =ZESI;      !EDITEXD AND IEIFNTDE I;    . CRD ANN LOCOMISE;  ZESI CBDE A:20MN 23INMA  T BL  +2R0 =R0;  0 ,R#2  D AD D IEIFNTDE IMAOM C ; 23INMA  Q BE 1 0+ R =R0;   0 R CBIN R VENE: = S ORATINRMTE;     D SEESOCPRS EMITD OI VO, N ;    ES Y ; 21INMA  T BG ? D UNFOS ERCTRAHA CNY AREWE;  R HATCCN  B ST T  ARLE CAGFLG INNDPEM TE I ;   : 20INMA ISYSALANX TAYN SALTINI I; LDIE FHE T  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 UST GLOBL6: MOV HINDEX ,R1 ;ADDRESS OF ENTRY BITB #REGFLG,TFLAGS ;IS SYMBOL A  ; DETECT BASE10'S OVERFLOW  ASL  @R1   ; BASE08 = BASE08 * 2  ASL  @R2   ; BASE10 = BASE10 * 2  MOV  @R2,-(R6)  ; STACK BASE10'S PARTIAL SUM  ASL  @R1   ; BASE08 = BASE08 * 4  ASL  @R1  ADD  R3,@R1  ; BASE08 = BASE08 + DIGIT  ASL  @R2   ; BASE10 = BASE10 * 4  ASL  @R2  ADD  (R6)+,@R2  ; BASE10 = BASE10 + PARTIAL  ROR  @R6   ; MAINTAIN BASE10'S OVERFLOW  ADD  R3,@R2  ; UPDATE 3 6 FEB 1972 FROM V02 TO V03 ; UPDATE 1 3 FEB 1972 FROM V01 TO V02 .TITLE PAL11R  ;VERSION 4A ; ; ;WHEN LINKED WITH THE PERMANENT SYMBOL TABLE, THE ;RESIDENT ASSEMBLER'S TOP SHOULD ALSO BE XXX474. ;AT RUN TIME, THE RESIDENT ASSEMBLER ;REQUIRES THE OVERLAYS TO BE ON DISK ;WITH FILE NAME PAL11R.OVR AND LOGIN OR [1,1]UIC. ; .GLOBL SYMTBB,SYMTBT ;EXTERNAL REFERENCES .GLOBL ASCII,ASECT,BYTE,CSECT,END,EOT,EVEN ;ENTRY POINTS. .GLOBL GLOBL,LIMIT,RAD50,TITLE,WORD NGHIUSFLE NUTION C ; 10INMA  P JM O:N1AI MR ROERE ASPH, PENO;  I N1AI M NE B  ?C. P'SERUS= E LUVAS L'BOYM S ; C RPSE@UY,ITNTUA Q MP C  ORRR EEDINEF DLYIPLTMU, ES Y ; 1MINMA  Q BE ? D NEFIDEY PLTIUL MOLMBSYS I ; 1)(R,1AGFLMD # PBCM R ROERE ASPH, PENO;  I N1AI M EQ B  T?SEY ADREALG LA FELAB LIS;  1 @RG,FLAB#L  B IT B  SSPAT RSFIT NO, NDOU F ;  : 1NINMA LEAB TOLMBSYS R'SE UTOIN;     N IOATRMFOINS HI TERNT E ; 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  ;THIS PART  DEC  CURBYTE  ;GETS JSR PC,ITEM  TSTB  ITYP ; BASE10 = BASE10 + DIGIT  ROR  @R6   ; MAINTAIN BASE10'S OVERFLOW  BIC  #7,R3  ; RETAIN THE BIT POSITION     ; WHICH IMPLIES DECIMAL.  BISB  R3,NERROR  ; SET THIS BIT INTO NERROR     ; (IE., ASSUME DECIMAL NUMBERS     ; ARE VIOLATIONS UNTIL THE     ; DECIMAL POINT IS SEEN.)  BISB  R3,@R4  ; SET THIS BIT INTO DECNUM NUM3:  MOVB  @R4,-(R6)  ; STACK THE DECNUM BYTE  BIC  #177617,@R6   .GLOBL IFG,IFL,IFNZ,IFGE,ENDC .GLOBL IFLE,IFZ,IFDF,IFNDF .GLOBL LIST,NLIST,GEES ; COMPUTER  PDP-11 ; CONFIGURATION ROS RAS ;   REQUIREMENTS ;    ;    ; PROGRAM NAME  PAL-11R ;VERSION  VERSION LEVEL 4 ; PATCH LEVEL C RAS ;DESCRIPTION  SPECIFICATION DOCUMENTS #130-390-008-01 ;      #130-390-011-00 AND -01 ;      #130-390-012-00 AND -01 ;   1KINMA  R B  UEAL V'SOLMBSYE AV SLLCA ; L VAAV S C,PR JS D NEFIDE;     Y PLTIUL MASL BOYM SAGFL;  ) R11(G,LADF#M  B IS B: 1MINMA ERNT ES,ONTIESQUH OT BTOO N ; 1JINMA  E BN ? EDINEF D; ) R11(G,LADF#M PBCM  LYIPLTMUY ADREALL BOYM SHE TIS S.YEF ICHANBR; M N1AIME BN  ?ET SDYEALR AAGFLL BELAS I ;1 @RG,FLAB#L  B IT B  SSPAT RSFI, NDOU F ;    SSPAT RSFIE THT NO;  N N1AI M GT B  ?SSREOGPRN IISS AS PCHHI W ; #1S,AS P !E  ;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 ;LIMIT HANDLER ; ; RLIMIT:  MOV  #TBBUF,R5  ;RESERVE  CLR  (R5)+  ;TWO " ; OBTAIN CUMULATIVE OVERFLOW  BIS  (R6)+,@R6  ; MAINTAIN BASE10'S OVERFLOW  BEQ  NUM30  ; BASE10 HAS NOT OVERFLOWED  BISB  #160,@R4  ; MAINTAIN DECNUM'S OVERFLOW NUM30:  BITB  #210,@R4  ; OCTAL OR DECIMAL ?  BEQ  NUM4  ; OCTAL NUMBERS EXITED.     ; DECIMAL NUMBERS PROCESSED  MOV  @R6,R5  ; R5 = BASE10'S OVERFLOW DATA  MOV  R2,R1  ; R1 = BASE10'S ADDRESS NUM4:  MOV  @R1,QUANTITY ; QUANTIT#    #130-390-014-00 ;      #130-390-023-00 ;   MULTI-PASS, RELOCATABLE, SYMBOLIC ASSEMBLER ; STANDARD PROCESSOR WIDE REGISTER ASSIGNMENTS R0  =  %0 R1  =  %1 R2  =  %2 R3  =  %3 R4  =  %4 R5  =  %5 R6  =  %6 SP = %6 ; PAL R7  =  %7 PC = %6 ; PAL ; PAL PBCM L:N1AI MD ELFIE THG INSHLU FUEINNTCO;  O N1AI M BR E BLTAL BOYM S'SERUSY LAEROVL AL C ; AYRLOV , PC SR J  AGFLD NEFIDES L'BOYM SET S ; R1,@LGFFDE # SBBI : 1PINMA IDT ECCS; ) R11(D,MOECSB OVM G LA FEDINEF;D   1PINMA EQB Y PLTIUL MDERIEROVT ON;D  1)(R,1AGFLMD#B MPC 1 @RG,FLEL#R  B IS B  1PINMA  Q BE D MOEC S TBTS G LA FELAB L'SOLMBSYT SE;  1 @RG,FLAB#L  B IS B: 1KINMA ERNTOU CONTICALO;     Y BLEMSS AHE T =LTSURE; % 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 TABLE. ;INPUT 1) THE BASE ADDRESS OF THE 2 ;  WORD (MODULO 40) SYMBOL IN R1 &Y = EFFECTIVE VALUE NUM5:  MOV  R5,(R6)+  ; THE EFFECTIVE OVERFLOW DATA     ; SETS THE CONDITION CODES,     ; MAINTAIN THE STACK POINTER  BEQ  SECRTN  ; EXIT, NO OVERFLOW DETECTED  INCB  TERROR  ; SET TRUNCATION ERROR  BR  SECRTN  ; EXIT, OVERFLOW DETECTED NCHAR:  JSR PC, SETUP1 ; CALL SECTION INITIALIZATION  INC  R0   ; R0 = 2  CMPB  R3,#'0  ; IS CHARACTER ASCII 0 ?  BLT  CHAR01  ; ' .PAGE PAL ;SYMBOL TABLE INITIALIZATION ;CLEAR ALL HAS BEEN RE-DEFINED FLAGS ;(BIT 1 OF HIGHEST WORD OF THE ENTRY) ;IN THE PERMANENT SYMBOL TABLE. ; STINIT: MOV PERBOT ,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. B  3 @RC,RPSE@U  V MO S AS PSTIR FD,UNFOT NO;   J:N1AI MD ELFIE THG INSHLU FUEINNTCO;  O N1AI M BR R ROERE ASPHE THT SE;  R ROER P CBIN I:N1AI MS AS PSTIR FOT ND,UNFOT NO;    S ESGRRO PINS ISSPAT RSFI;  J N1AI M EQ B  ?SSREOGPRN IISS AS PCHHI W ; #1S,AS P PBCM . .T.S UIND UNFOS WAL BOYM S ; 1LINMA  Q BE ? D UNFOL BOYM SHE TAS W ;  R0  T TS H:N1AI MD ELFIE THG INSHLU FUEINNTCO;  O N1AI M BR X TA); 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 WILL ; BE MATCHED IN THE SEARCH. ; 3) THE STARTING (HIGHER) ADDRESS OF ;  *NOPE  CMPB  R3,#'9  ; IS CHARACTER ASCII 9 ?  BGT  CHAR01  ; NOPE CHAR00: SUB  #22,R3  ; BOUNDED, START TRANSLATION  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 CHAR+R 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)  ;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. YN SLEABONTIESQUY ELITINEF D ; ORRRQE  B NC I  ONTIUAIT SIDAL VE,OP N ; 1HINMA  E BN ? R TEUNCON IOATOC L ;     LYMBSEASE THL BOYM SHE TIS; 007412,#+1YMPSTM  P CM G:N1AI M. EDINEF DLYIPLTMU;     G INBES AOLMBSYS HI TAGFL; ) R11(G,LADF#M  B IS B  ORRR EERSTGIREE THT SE;  R ROER R CBIN N IOATTUSID LIVA, PENO;  G N1AI M EQ B  ?ERSTGIRED PETYL BOYM SIS;  1 @R2, R TBBI F:N1AI MD ELFI;     L BELAE TH-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 ENTRIES. CLR R0  ;NO MATCH. RTS R7  ;RETURN LINSR1: MOV @R1,R0  ;1ST TRIAD .02: CMPB  #'.,R3  ; IS CHARACTER ASCII . ?  BEQ  CHAR00  ; YES, START TRANSLATION  CMPB  R3,#'A  ; IS CHARACTER ASCII A ?  BLT  NUM0  ; NOPE  CMPB  R3,#'Z  ; IS CHARACTER ASCII Z ?  BLE  CHAR03  ; CHARACTER IS BOUNDED     ; CHECK FOR LOWER CASE  CMPB  R3,#141  ; IS CHAR. LOWER CASE A ?  BLT  NUM0  ; CHARACTER NOT BOUNDED  CMPB  R3,#172  ; IS CHAR. LOWER CASE Z ?  BGT  N/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. JMP SETP5 .PAGE PAL ;CALL CLEAN TO .CLOSE AND .RELEASE ALL ;.INIT'D DATA SETS: ;SOURCE INPUT FILE RRSTRT: MOV #SILB1,R1 ;ADDRESS OF LINK BLOCK JSR PC,CLEAN ;SECOND SOURCE INPUT FILE MOG INSHLU FUEINNTCOT PUUT O ;     ONTIUAIT SALCIPE SUTNP I ;     D.REROERD AND TEECET D ;   RE AREHES CEANARPEAPR TEUNCON IOATOC LLYMBSEAS;   R TEISEG RASD PETYE BEREVT NOAN CLSBELA;   . EXNDHIN IESIDES RSSREDD ALEAB T ;   OLMBSYE IVCTFEEFE THE INUTROUB SISTHG INERNT EONUP;   S NTMEGNSIASL BELAL ALS IEIFER VE,INUTROUB SISTH;  G INSSCERO PELAB L ;4 N1AIMR B T PSN IAGFLD INEFED RET;S  EXNDHI,@EFED#R SBBI 0:N4AI MN IGSSAP JM  ELAB L AASS ES1BEQ 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  ;SUBTRACT 4 WORDS FROM POINTER BR LINSR3  ;TRY NEXT ENTRY. LINSR8: MOV R2,HINDEX ;M2UM0  ; CHARACTER NOT BOUNDED  BICB  #040,R3  ; INTERNALLY CONVERT ALL     ; LOWER CASE TO UPPER CASE.  MOVB  R3,@CURBYTE  ; EXTERNALLY CONVERT ALL     ; LOWER CASE TO UPPER CASE CHAR03: BIC  #177700,R3  ; COMPLETE THE TRANSLATION  MOVB  R3,@SYMBOL  ; SAVE CHARACTER IN TMPSYM  INC  SYMBOL  ; SYMBOL = SYMBOL+1 SECRTN: JSR PC, SETREG ; CALL SET REGISTERS  MOVB  R0,SFLAG  ; SFLAG = R0  RTS 3V #SILB2,R1 JSR PC,CLEAN ;BINARY OUTPUT FILE MOV #BOLB,R1 ;ADDRESS OF LINK BLOCK TST @R1  ;IS BINARY OUTPUT DATA BEQ SPECIAL  ;SET INIT'D? MOV R1,-(R6) ;YES EMT CLS  ;CLOSE FILE MOV #BOFB,-(R6) MOV R1,-(R6) ;DELETE FILE EMT DLT MOV R1,-(R6) ;RELEASE DATA SET EMT RLS ;LISTING OUTPUT FILE SPECIAL: MOV #LOLB,R1 ;ADDRESS OF LINK BLOCK JSR PC,CLEAN ;SYMBOL OUTPUT FILE MOV #SLLB,R1 ;ADDRESS OF LINK BLOCK JSR PC,CLEAN ;COMMAND OUTOCPR, ES Y ; 1FINMA  Q BE ? N LOCOA R TONAMIER TEDAV SAS W ; )+R6 ( TBTS S ESDRADT ULES R =R3;  3 ,RLTSURE # OV M  NTTANSCOG LA FERSTGIRE= 2 R ; R2G,FLEG#R  V MO S ESDRADS AGFL T =R1;  1 ,RGSLATF # OV M 5:N1AI MT USO NT IERNT E ;  ERNT,EPC SRJ . ST UIND UNFO;   5 N1AIMQ BE  R.HERTFU;     H RCEA SND AAGFLD NEFIDEE- RET SOLMBSYT ENANRMPEA ;     S AEDERNTOUNC EIF;  0 N4AI M GT B  LEAB TOLMBSYS 5ATCH--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.  MOV  TITLEB ,R1  CLR  R2  ; 0 TO FLAGS.  CLR  R3  MOV  #10,R4 6 R7  ; RETURN .PAGE PAL SETUP1: SUBR22: MOV  (R6)+,R0  ; SAVE THE 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  7PUT FILE MOV #COLB,R1 ;ADDRESS OF LINK BLOCK JSR PC,CLEAN ;COMMAND INPUT FILE MOV #CILB,R1 ;ADDRESS OF LINK BLOCK JSR PC,CLEAN JMP STARTC .EVEN .PAGE PAL TITLBUF: .WORD 20 ;MAX BC .WORD 0  ;FORMATTED ASCII  .WORD 20 ;BC .BYTE CR,LF .ASCII /PAL11R V004C/ ; TITLE LINE FOR PAL PAL .BYTE 13  ;VERTICAL TAB .EVEN .PAGE R'SE UHE TCHARSEL AL C ; H RCEA S C,PR JS 4:N1AI MR TONAMIER TLSBOYM SISTHK ACST;  ) R6-(0, R OV M: 13INMA NTMEGNSIAST ECIR DISTHT ORAB;  E N1AI M MP J  ONOL C AAS WORATINRMTE;  0 N1AI M LE B  R?TONAMIER THE TAS WATWH;   0 R ST T  AXNTSYE BLNAIOSTUE QAS;     D REDESION CMSTE IERTH OLL A ; ORRRQE  B NC I  OLMBSYD REROERN- UANS WAM TE I ; 13INMA  T BG E YP T'SEMITE THK ECCH;  E YPIT  B ST T: 11INMA G.INSSCERO P9 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 #WORD3,R4 ;3RD WORD OF MATCH. MOV #GLBFLG,@R4 ;.GLOBL GSD05: JSR PC,LINSRCH BEQ: ; RETURN .PAGE PAL ; THIS SUBROUTINE CONVERTS ONE BINARY WORD INTO 5 ASCII DIGITS. 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: ; PAL ;.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,CBTABS  ;FLUSH BLANKS OR DEC CURBYTE  ;TABS. JSR PC,ITEM  ;GET NEXT ITEM TSTB CNTCHAR ;ANY CHARACTEROR FRSTEISEG RHE TZELIIAITIN ;   D ANR TEUNCON IOATOC LLYMBSEASE THY IFNTDE I ;   R,TONAMIER THE TNGDICERE POLMBSYE THS ESOCPR;   S NTMEGNSIAST ECIR DND ALSBELAR FOG INSSCERO PALTINI I ;  CHANBR- O ;N 10INMA GTB ? ELAB LISTH" LEMBSEAS;" CTTADN TBTS 6:N0AI MD ELFIR TORAPE OSSCERO P -NO;0 N2AIMP JM  CHANBR- S YE;  ) -2 ("?":R TONAMIER TIS;6 N0AIMQ BE 4:N0AI MT XI EGO- O ;N 0AN2MR B H NCRA B -ES;Y 11INMA E BL  E?IN LISTHE BLEMSS;A  CTTADN TBTS  CHANBR- O = 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: MOV CONTOP ,R3 ;TOP OF .CSECT AREA MOV #10,R4 CMP R5,R3 BEQ GSD11  ;> ; RAS JSR PC,SAVREG ; SAVE ALL REGISTERS EXCEPT R0. RAS MOV 12.(SP),R1 ; 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 IN?S 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 ,ABSPC BISB #RELFLG,@HUSERPC ;SET RELOCATABLE ;FLAG BIT IN DOT SYMBOL ENTRY BR CSECT7 ;MORE THAN 376(;N 04INMA LEB ) -1 ("?"=R TONAMIER TIS;0 ,R#2 DDA R TONAMIER TEDODNC E =0)(R;C R0M,ERVTSA VBMO  EMITL AL C ; M TE I C,PR JS 0:N1AI M. NTMETETA SNTMEGNSIAST ECIR D ATERAPASE ;  , LYALTIENOT PD,ANS NTTEON C'SLDIE FELAB LHE TSHLU F ;  NTMETETA SCEURSOL UAIDIVND ICHEAF OONTIUAALEVE ATTINI I ;: 05TLGE HTUGCAR TEACARCHL GALEIL;  ORRRQE  B NC I  ONTIUAIT SIDAL VS,YE;  05TLGE  Q BE ? R. CSTLAE THS HI TIS;  R20, R MP C  ERNTOI PHE TUPCKBA, ES Y;  0 R EC D  ADONE, 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 ,R3 ;1ST FREE LOCATION BELOW UST MOV #WORD1,R1 ;ADDRESS CONTAINING SYMBOLIC NAMEBRAS BIND10: INCB R4 ; INSTRUCTION 'INCB'. COUNT DIGIT. RAS BIND20: SUB (R3),R2 ; SUB VALUE IN TABLE FROM GIVEN NUMBER 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) ; SEC8) .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  ;MATCH; JUST SYMBOL MOV PERTOP ,R2 ;PERFORM LINEAR MOV CONTOP ,R3 ;SEARCH OVER CONTROL JSR PC,LINSRCHANSCE THE NUTION CE,OP N; 4 L0ET G NE B  .?CRA R TEACARCHS HI TIS;  R4+,0)(R  B MP C: 04TLGE R. CSTLAF OR.DD A =R2;   R2  C DE R TONAMIER TNELIS GEMA I ;     CEURSOE IVCTFEEFE TH;      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 ARTSEINE 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,R2 ;DEFINED, TRANSFER ADDRESS SPEC. MOV #ABS1,R0 ;NAME OF 6 BLANKS MOV #ABS2,R1 FE IF DONE YET? RAS BGT BIND20 ; MORE TO COME. RAS BMI BIND60 ; 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 G  ;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 ;MATCH FOUND---COMPUTE CONTROL SECTION ID CSECT3: MOV PERTOP ,R3 ;ADDRESS OF 1ST ENTRY SUB HINDEX ,R3 ;ADD;  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;    AL P . ERNTOU CGEPAW LORFVE O. ES Y ;NGGIPAS,NELIAX M DD A R TEACARCHD EE-FNELIA ;     E OP N ; 02TLGE  E BN ? D EE-FRMFOA R TONAMIER T ; R2,@FF # PBCM R TEINPOE YTRBCUE IZALTINI I ; TEBYUR,CR1  V MO K ANBLS AYLW AERCTRAHA CALTINI I ; 1)I 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 PC, OUTBIN  MOV  #RLDCMD,DIRCMD ;RLD BLOCK DECLARATION  JSR PC, RLDINTJ MOV (SP)+,(SP) ; UP OVER BOTH ARGUMENTS RAS RTS PC ; RETURN TO CALLER RAS .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     ; INTOKRESS 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 CMP R1,@HIRPC BLOS CSECT7 BIT #1,R1  ;EVEN OFF MAX. PC BEQ CSECT8 INC R1 CSECT8: MOV R1,@HIRP(R,-' # VBMO AL PF.BUT PUINM RO FERFFBUT PUUT OTOK AC B ; R3,@+6LOSIDF # UB S R TEINPOT ISRLCUE IZALTINI I ; R3,@R1  V MO 2 R EC D  R01, R OV M  SSREDD ARSTONAMIER TNELI= 2 R ; R21, R DD A  NTOU CTEBY= 2 R, +2R1= 1 R ; R2+,1)(R  V MO 4 1+ R =R1;  + 1)(R+,1)(R  P CM R BEUM NNELIE RCOU SNTMERENC I ; NONELI  C IN N URET-RGEIARRCAI CIAS= 4 R ; R4R,#C  B OV M: 12TLGE ORRR EL' 'ET SS,YE;  R ROER L M  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  ;SAVE REGISTERS MOV R2,R5  ;ADDRESS OF ENTRY MOV -6(R5),R0 ;1ST TRIAD MOV -4(RN LSTBUF(R3) BYTE  BICB  #370,@R3  ; ZERO EFF. BYTES HIGH 5 BITS  BISB  #060,@R3  ; SET THE OCTAL 60 BITS  ASR  R4   ; SHIFT R4 RIGHT 3 BITS  BIC  #100000,R4  ; PREVENT SIGN PROPAGATION  ASR  R4  ASR  R4  DEC  R2   ; R2 = R2-1  BGT  SUBR13  ; ITERATE THE PROCESS  RTS  R7  ; RETURN .PAGE PAL  ; SUBROUTINE END LINE   ; THIS SUBROUTOC 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) MOVB #RLD3.1,R0 ;LOCATION COUNTER DEFINITION MOV TBBUF ,R3 ;DISPLACEMENT FROM SECTION BASE MOV #10,R4  CBIN AS R G.LA FNELIG ON LETES R ; N GLON L B LR C AL P ) M.OR F4A.VAL PTOD RETOES(R E.OP N ; 2 L1ET G EQ B ASSRERCTRAHA CSTLOE AV HSOF I? NELIG ON L ; N GLON L B ST T0:L1ET G AS R S.AS P ; D ENIM S MP J AS R Y ARIN BONR FEUF BRYNABIO TUT OUT P ; F BUEBC, P SR J AS R D.EN .EDATULIM S AND ASSREDD A ; T OUIN B B LR C AS R S.ANTRE THN I#1A H IT WD'Q5),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  ;RESTORE REGISTERS AND RETURN .PAGE RINE COMPLETELY FORMATS THE LISTED   ; OUTPUT BUFFERS AND DRIVES THE BINARY   ; OUTPUT SUBROUTINE.   ; *** NOTE ***   ; EBBUF 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)  S;# 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 FOR MOV R1,@RELPC ;PREVIOUS SECTION CMP R1,@HIRPC BLOS ASECT1 BIT #1,R1  ;EVEN OFF NEW MAX. PC.EN'.E AK F ; DRPAJM1, # OV M AS R S.AS PXTNER FOG LA FARLE C. ES Y ; F EORC S B LR C AS R . ONY RRCA- O N ; 0 L1ET G EQ B AS R E?IN LHE TOFD ENE THS HI TAS W ; F EORC S B ST T N IOITOS P1)0,S(DRHA BHE TTOIN;    D TETARON EE BAS HS,ESDRADR DEEA H ;    ERFFBUT PUINE RCOU SVETIECFF E ;    HE TR,TEINPOR FEUF BRYMARI PHE T ;    NGSIESOCPRL IAITINR FEUF BUTNP ICEURSOT ENRRCU; U 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 TSTB CNSTLV ;STILL IN A NEST OF CONDITIONALS? BEQ END01A  ;NO - BRANCH V; STACK THIS ADDRESS  CLR  (R5)+  ; CLEAR LO BYTE COUNT CMP LINENO,LASTLN ;SEE IF THIS IS A NEW LINE, OR AN BNE INCLINE  ;EXTENSION OF 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. W 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 GLOBAL STATEMENTS RGLOBL:  MOVB  #-1,SIZE CLRB  SAVTERM JSR PC, CBTABS GLOBL1:  DEC  CUR  R FEUF BUTNP ICEURSO;     S OUVIRE PHE TNGSI U ;     NGSIESOCPRD EA RUSIOEVPR;     E THO TVETILAREE ER H ;     ITWAD IEPLIMN AISE ERTH;     AS R D AR C AOR FSTUEEQ RRTTA S ; ADREBFC, P SR J E NCUEEQ SNGLIAL C ;     STUEEQ RNGCIVIER S/O IUTNP ICEURSO ** * ;   NTOU CTEBYT PUIN;     T ENRRCUS ERADHEE THO ER Z ;  R0 @ LR C  S RA 2RDWOK ANBL; YINCB 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  ;IF THE BIT #1,R4  ;FORMER IS HIGHER BEQ END24  ;EVEN. INC R4  ;MAKE EVENZ RAS ADD #LINUSZ,R5 ; POINT R5 TO ERROR NUMBER IN SOURCE. PAL MOVB #'*,-3(R5) ; PUT A '*' AFTER LINE NUMBER. 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 B[BYTE 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 LEGAL  BGT  GLOBL4  ;THE BRANCH IF SYMBOL  INCB  QERROR  ;ELSE FLAG  CMPB  #-3,SAVTERM + 0)(R R CL NTOU CTEBYT PUIN;     M MUXIMAS ERADHEE THT SE; )+R0,(BCIM#S  V MO K OCBLR DEEA HUTNP I ;     CEURSOS ERFFBUD SEEAEL R ;     HE TOFS ESDRAD= 0 R ;     CEENQUSEG INLLCA;     S ESDRADR FEUF BCKTA;S 6)(R,-R0 OVM 1 ,RR2 @ OV M  RSFEUF B/O ITETAROL AL C ; E ATOT R C,PR JS : NELIET GE NCUEEQ SISTHO TEDNDPEAP ;   E AR, LYALONTIOP, RSTEACARCHD EE-FRMFO ;   . CEENQUSEF -LCRA H IT WY,LLNAIO] 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: MOV #ERRMSG,-(SP) ; PRINT ERROR MESS. ONLY ON LISTING PASSRAS JSR PC,LP^ASE ADDR. ENDL00: SWAB  @R2   ; EFF ERROR COUNTER ZERO ?  BEQ  ENDL01  ; YES  CLRB  @R2   ; NO, CLEAR THE COUNTER  MOV  #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  E_ ;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 UST GLOBL6: MOV HINDEX ,R1 ;ADDRESS OF ENTRY BITB #REGFLG,TFLAGS ;IS SYMBOL A REG. EXPR. BEQ GLOBL5 ITNDCOUN ;   , TENAMIER TLLWIS ERFFBUT PUINL AL ;   T MAOR FEROPPR ;   E URNS IND AERFFBUT PUING INEDECPRE THN CA S ;   G.INSSCEROP;   R FOY ADRED ANL UL FISR FEUF BUTNPI;   G INEDECPRE TH, ESNUTION CONTICUXE EIF  ;   ATTHS MESUASR LEMBSEASE TH S.ESGRRO PIN  ;   LYNTSERE PISD ANMMCOD EA R AIFL RONTCO  ;   ONTICUXE EINTARET US MORSSCERO P/O IHE T ;   ** *TENO* **;  ) ,1(0RSADBH ;   Y BEDFICIPE SLYNTREUR CERFFBUT PUINE TH ;   aRINT ; 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 PASS? BNE END21B  ;NO - BRANCH MOV #OBJEND,DIRCMD JSR PC,RLDINT JSRbNDL00  ; NOPE  ADD  R3,ERRSUM  ; YES, ERRSUM = ERRSUM+R3  MOVB  R3,ERROR  ; ERROR = R3  MOV  R4,R5  ; R5 = THE LOCATION FIELD'S  ADD  #6,R5  ; TERMINAL ADDRESS  MOV  @USERPC,R4  ; R4 = USER'S PC VALUE  MOV  R5,R3  ; R3 = BUFFERING ADDRESS  MOV  #6,R2  ; R2 = 6 ITERATIONS  TSTB  SIZE  ; ANY OBJECT DATA PRESENT ?  BEQ  ENDL02  ; NOPE  BGE  ENDL12  INC  PAGING  BR  ENDL05 ENDL12:  JSR PC, BINASC ; CALL BINARYc ;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  ;THIS PART  DEC  CURBYTE  ;GETS JSR PC,ITEM  TSTB  ITYPE  ;THE FIRST ITEM F ONGLIMBSEASE THR FOS ERNTOI PZELIIAITIN;   . ERFFBUT PUINL IANCUEEQ SXTNEE THO TTSINPO ;   ) ,1(0RSADBHT HA TSOE BLTAS DRHA BHE TTETARON HE T ;   NDMAOM CADREE THE SUISN HE T ;   EDETPLOM CENBES HA ;   ) ,1(0RSADBHY BEDFICIPE SLYNTREUR CERFFBU ;   E THR VE OONTIRAPE OUTTPOUE THT HA TFYRIVE;   E IN LCEURSOT GEE INUTROUB SENOP;  G LA FUTNOBIE IZALTINI I ; UTNOBI1, # VBMO 0 = R ROER;  R ROER  B LR C  S RA e 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 #SRCBFB,R0 ; CLOSE THE SOURCE ELEMENT RAS JSR PC,BFCLOSE f TO ASCII CONVERSION ENDL02: JSR PC, EBBUF ; CALL ENTER BINARY BUFFER  MOV  #TBBUF,R0  ; R0 = TBBUF(0) ADDRESS  ADD  #7,R5  ; R5 = THE OBJECT FIELD'S ENDL1A:  MOV  R5,R3 ENDL03: MOV  #3,R2  ; R2 = 3 ITERATIONS  MOVB  (R0)+,R4  ; R4 = EFF OBJECT DATA BYTE  BIC  #400,R4  ; PREVENT SIGN PROPAGATION  TSTB  BYTFMT  ; BYTE OR WORD FORMAT ?  BNE  ENDL04  ; BYTE  ASL  R2   ; R2 = 6 ITERATIONS  DEC  R0   ; DECREMENT R0  MOVg  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 ;LIMIT HANDLER ; ; RLIMIT:  MOV  #TBBUF,R5  ;RESERVE  CLR  (R5)+  ;TWO  CLR  (R5)+  ;WORDS ; ORRRZE RBCL ORRRQE  B LR C  ORRRUE  B LR C  IXAD R RBCL R ROER I RBCL R ROER A RBCL D MOSL R RBCL D 2MSL R RBCL 0 = ) (0UFBB T ; UFBB T LR C  C:SRET S AL P GEPA . AL P ENEV . AS R M.SUCKHE C ; 0 TEBY . AS R R.FEUF BHE TVEERES R. M)SUCKi ; 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. RAS MOV #NOUSYM,-(SP) ; NO - SO TELL USER.j  (R0)+,R4  ; R4 = EFF OBJECT DATA WORD  DECB  SIZE  ; SIZE = SIZE-1 ENDL04: JSR PC, BINASC ; CALL BINARY TO ASCII CONVERSION 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 ; POk  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 TABLE. ;INPUT 1) THE BASE ADDRESS OF THE 2 ;  WORD (MODULO 40) SYMBOL IN R1 ; IF THE 1ST TRIAD IS 0 ;HE C ; BCLD+R=. .T:TRLS R AS R E AV H'TSNOE(DA AT DSKDIF OESYT B # ; 0 RDWO .T:CNLD R AS R. 0 = 1TEBY, 1 = 0TEBY: AGFLY ARIN B ; 1 RDWO . AS RM)SUCKHE CESUDCLIN (NTOU CTEBYL UACT A ; 0 RDWO . AS R M AS RIND SENU U ; 0 RDWO . AS R T UNCOE YT BAX M ; +5BCLD R RDWO .F:BULD R AS R ERFFBUN IOATOCEL RINS TEBYF O # ; 3 6 = BCLD R ASm 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: INCB @R5  ;INCREASE PASS NUMBER CMPB @R5,MAXPASS BLE END23 nINT TO END OF SOURCE PAL  MOV  R3,SRCIN  ; SRCIN = LATEST TERMINATORS ADDR  MOVB  #LF,@R3  ; INSERT A CR-LF SEQUENCE  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 BYo 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 WILL ; BE MATCHED IN THE SEARCH. ; 3) THE STARTING (HIGHER) ADDRESS OF ;  THE SYMBOL TABLE IN R2 ; 4 R R FEUF BKSOCBLN IOATOCEL R ; AS R ENEV . 6 1+E+IZBS B  = BCOM BE YT BUMKSECCHA E RVSERE;   0  E YT.B S ESDRADR FEUF BRYNABI. AX M ;   : BAXBMA ESYT BTADAE IZBS BVEERES R ; ZESIBB.+  =  . SSREDD AADLOS CKLO BRYNABI;   0  D OR.W T UNCOE YT BKSOCBLY ARIN B ;   0 RDWO .  ERFITIENIDS CKLO BRYNABI;   0  D OR.W T UNCOE YT Bq ; 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 WRITE. RAS JSR PC,GSDTAB ; PUT OUT GLOBL SYMBOL TABLE rTE COUNT  CMPB  PASS,LOPASS  ; LISTED OUTPUT PASS ? BNE ENDL07 ; NOPE. RAS ENDL25:  TSTB  RLDFLG  BEQ  ENDL06  ; THIS PORTION PUTS  CMPB  @R5,#CR  ; AN APOSTROPHE  BNE  ENDL1C  ; AS REQUIRED FOR  TSTB  (R5)+  ; INSTRUCTIONS TO BE  MOVB  (R5)+,@R5  ; MODIFIED  DEC  R5  MOVB  -(R5),1(R5)  MOV  ENDL06+2,-(R6)  ADD  #4,@R6  INC  @(R6)+ ENDL1C:  MOVB  #'',@R5 ENDL06: Ms) 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 ENTRIES. CLR R0  ;NO MATCH. RTS R7  ;RETURN LINSR1: MOV @R1,R0  ;1ST TRIAD BEQ LINSR6  ;DON'T COMPARE NTREUR CBO;   0  D OR.W 0 +1UFNBBIT=CNIN BS TEBYE OD-MUSATSTO B ;   0 RDWO .  NTOU CTEBYM MUXIMAO B ;   0 RDWO .: UFNBBI ERFFBUT PUUT ORYNABIE YT B46;   . 46  =  E IZBS B AS R R FEUF BUTTPOUY ARIN B ; AS R ENEV . AL P S.NELI. XT EIN# NELIR FOM OO RVEEA L ;SZNULIZ+USIN+L . = .S ERFFBU;  14.+  =  . ONSIENXT ENGTIIS Lu 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 ; SKIP A LINE FOR ERROR MESSAGE RAS .BYTE TAB,TAB,TAB ; vOV #0,-(R6) TST LISTKEY BEQ ENDLX6 TST (R6)+  ;SUPPRESS PRINTOUT OF THIS LINE BR ENDL07 ; 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 LISTKEYwIF 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  ;SUBTRACT 4 WORDS FROM POINTER BR LINSR3  ;TRY NEXT ENTRY. LINSR8: MOV R2,HINDEX ;MATCH--ADDRESS OF MOV #1,R0CTJEOB;  12.+  =  . ERFFBUA AT DERCTRAHA C ; AXCMSR.+  =  . NTOU CTEBYT ENRRCUI S ;     ESYT BDEMOS-TUTA SSI;     T UNCOE YT BUMIMAX MSI; -6 . = F2BUSI WO TCKLO BERADHET PUINE RCOU S ;    LDIE FNGTIIS LNKLA B ;  +1 .  =  .D ELFIG INSTLIT ECBJ O ;  +6 .  =  .D ELFIG INSTLIK ANBL;   +1 .  =  .D ELFIG INSTLIN IOATOC L ;  +6 .  =  .D ELFIG INSTLIR ROER;   2 .+  =  . yAND 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 ; RAS ERMSLN = .-ERRMSG-6 ; NUMBER OF CHARACTERS IN ERROR MESSAGE.PAL z  ;CHECK FOR LIST SUPPRESS BGE ENDLX8 CLR LISTKEY ENDLX8:  TSTB  ERROR  ; WAS THE LINE ERRORED ?  BEQ  ENDL09  ; NOPE  CMPB  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,{  ;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 ; SUBR35: GSDTAB: MOV #BOLB,R1 MOV #BOFB,R3 JSR PC,DELOUT  ;.INIT, .DELETE, .OPEN, BINARY DATA SET. ; DUMP LEADER GSD999: MOV #20.,R0 ;SET COUNT GSD06: MOV #TRLBUF,-(R6) MOV R1,-(R6) EMT WRCMD DEC R0  ;DONE? BGE GSD06 L PA . ERMBNUE IN LOR FOMRO; SZNULI.+ = . NTOU CTEBYT ENRRCUO L ;   0 RDWO .  ESYT BDEMOS-TUTA SLO;   0  D OR.W T UNCOE YT BUMIMAX 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; } .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/ ; RAS .BYTE LF ; ~ POPREG ; CALL SET REGISTERS AND RETURN .PAGE PAL ; THIS SUBROUTINE PRINTS THE 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. R  MOV  #GSDCMD,DIRCMD ; GSD DECLARATION.  JSR PC, RLDINT  MOV  TITLEA ,R0 ; OBJECT MODULE NAME.  MOV  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  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 MUXIMAI S ;  -6 . = F1BUSI NE OCKLO BERADHET PUINE RCOU S ;    LDIE FNGTIIS LNKLA B ;  +1 .  =  .D ELFIG INSTLIT ECBJ O ;  +6 .  =  .D ELFIG INSTLIK ANBL;   1 .+  =  . LDIE FNGTIIS LONTICALO;   6 .+  =  . LDIE FNGTIIS LORRR E ;  +2 . 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 ; RAS BFINIT: MOVB #$BFINT,BFEMT ; SET EMT FOR BFINIT RAS AS MOV #PAGNUM,-(R6) ; AND BUFFER ADDRESS FOR PAGE NUMBER. PAL JSR PC,BINDEC ; GO CONVERT PAGE # TO DECIMAL 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  ,R3 ;1ST FREE LOCATION BELOW UST MOV #WORD1,R1 ;ADDRESS CONTAINING .GLOBL NAME CLR @R1  ;ACCEPT ANY NAME. MOV #WORD3,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  =  . 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 CTEBYM 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  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 ; SET EMT CODE FOR BFCLOSE RAS BFCOM: MOV R0,-(SP) ; SET BFUP COMSEE IF ANY MORE. RAS ZEROXT: INC PAGCNT ; COUNT THIS PAGE. RAS CLR PAGING ; 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 ASSOCIATED .GLOBL SYMBOLS. GSD01: MOV PERTOP ,R5 ;BOTTOM OF .CSECT AREA MOVB #1,WORD3+1 ;UNNAMED .CSECT ID GSD10: 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 ABYD DECERE P  ;    LYTEIAEDMM IISR FEUF BALDUVIDIINH AC E ;    ERFFBUT PUUT OHE TINTHWID DEEDMB E  ;    LYTELEMPCOS IERFFBUT PUINE TH;    E ON ZNGRIFEUF BUTTPOUT-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 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 MOV #ERR8,-(SP) ; PUT ERROR NUMBER ON STACK. RAS JM MOV #PYEAR,R1 ; FIRST CONVERT THE YEAR RAS JSR PC,CALDT ; RAS 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 MOROOM; OUTPUT JSR PC,RLDINT  ;AND REFRESH RLD BUFFER. GSD07: MOV CONTOP ,R2 ;THE STARTING ADDRRSS OF UST MOV USRTOP ,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 FO TEBY . AS R . SKTAR ROERO N ; 0 TEBY . AS R NETIOU RTELEMPCOO I/O N ; 0 RDWO . AS R . 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 |P 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/ ; SCRATCH SOURCE ELEMENT NAME. RAS .RAD50 /MP./ ; SECOND WORD OF NAMNTH # TO MONTH LETTER CON. RAS ADD R2,R1 ; TABLE. SINCE '-(R)' CHANGES BEFORE RAS ADD #MONTAB,R1 ; EXECUTION 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 R NEXT .CSECT INCB WORD3+1 ;INCREMENT .CSECT ID BR GSD10 ;ENTER THE TRANSFER ADDRESS GSD11: MOV #TRNCMD!DEFFLG,R2 ;DEFINED, TRANSFER ADDRESS SPEC. MOV #ABS1,R0 ;NAME OF 6 BLANKS MOV #ABS2,R1 TSTB RSLMOD ;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 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 ; 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 ; xE. 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 BINBFB: .WORD 0 ; ERROR CODE RAS .WORD  EMT $GTIME ; GET THE TIME. RAS MOV #PHOUR,R1 ; AND CONVERT THE HOURS RAS 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 ; , RLDFIL  JSR PC, OUTBIN  ;START NEW BUFFER  MOV  #GSDEND,DIRCMD ;GSD TERMINATION.  JSR PC, RLDINT  JSR PC, 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 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 ; 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 TEBYtBFILE ; 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 LENGTH RAS ;  RAS PPRINT: MOV #PAGBUF,-(SP) ; PRINT THE PAGE HEADER RAS JSR PC,LPRINT ; 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 O PAL ;SUBROUTINE TO ENTER A GLOBAL SYMBOL ;POINTED TO BY R2 INTO THE RLD BUFFER. ; ENTRGL: SUBR42: JSR PC,SAVREG  ;SAVE REGISTERS MOV R2,R5  ;ADDRESS OF ENTRY MOV -6(R5),R0 ;1ST TRIAD MOV -4(R5),R1 ;2ND TRIAD MOV -2(R5),R3 ;VALUE MOV #10,R4  ;BYTE COUNT MOV #SYMDIR,R2 ;SYMBOL DECLARATION BISB (R5),R2 ;SYMBOL'S FLAGS BIC #RSTFLG,R2 ;KEEP UNDEF/DEF, ABS/REL, JSR PC,RLDFIL  ;AND INTERNAL/GLOBAL. CMPB RLDCNT ,#51 BLT ENTRG0  ;STILL RO .: 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 TEIS LLEAB TOLMBSY;    0 TEBY .: SCSTLI ERNTOU CEMITS N'IOSSREXP E ;   0 TEBY .: NTOUIC ERNTOU CERCTRAHA C'SEMIT;   0  E YT.B: ARCHNT CR TOCADIINT PUUT ORYNABI;   0  E YT.B T:OUIN BR TOCADIING INNDPEM TE I ;   0 TEBY .: INEMIT AGFLT PUUT O'SID. ARCH; p 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 .PAGE RAS  ; SECTION SYMBOL TAN INPUT AND IS REMOVED BEFORE CONTROL IS RETURNED. RAS ; REGISTERS R1+R2 ARE MODIFIED. RAS CALDT: 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 STOM IN RLDBUFFER JSR PC,OUTBIN  ;OUTPUT RLD BUFFER JSR PC,RLDINT  ;INITIALIZE RLD BUFFER ENTRG0: JSR PC,POPREG  ;RESTORE REGISTERS AND RETURN .PAGE PAL REND:   ; .END ASSEMBLY DIRECTIVE PROCESSOR JSR PC,EXPE1  ;EVALUATE EXPRESSION MOV RESULT ,JMPADR ;INCREMENT TAPE COUNT IN ;CASE TAPE STILL IN READER MOV SILB ,R4 INC 14(R4) ;TAPE COUNT TSTB ERROR BNE END00 TSTB ICOUNT   0  E YT.B : AGFL SR TOCADIINE YP T'SEMIT;   0  E YT.B : PETY IN VE.E D IONTIEC SOLTRON;C  0  E YT.B : IDCTCS GSLA F'SLEAB TOLMBSYY ARORMPTE;   0  E YT.B S:AGFL T0  D OR.W 0  D OR.W 0  D OR.W 0  E YT.B M:SYMP TR TEUNCOD ELFIG INSSREDD;A  0 E YT.B T:CNLD FS ESDRADD ODE BSTMUM SYMP T ;   ENEV .  LEAB TOLMBSYY ARORMPTE;    0  D OR.W: RMTEAR VN VE.E  CHITSWS T'ECCS .STLI;0 TEBY.: CTSELC ERNTOU CLEMBSEASlBLE 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  ;SAVE REGISTERS MOV CONTOP ,R5 ;BOTTOM OF UST MOV USRTOP ,R4 ;TOP OF USTRING. RAS JMP (R2) ; RETURN. R2 HAS ADDRESS RAS BCD: .BYTE 0,0,0,0,0 ; FIVE BYTES FOR CONVERSION 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  BLE END00 CMPB #-1,RSLMOD BNE END01 INCB AERROR ;.GLOBL IN .END EXPRESSION END00: MOV #1,JMPADR END01: MOV JMPADR ,TBBUF CLRB BINOUT MOVB #100,PAGING TSTB CNSTLV ;STILL IN A NEST OF CONDITIONALS? BEQ END01A  ;NO - BRANCH INCB QERROR ;QUESTIONABLE SYNTAX 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 T N'DO;0 TEBY.: CTTADN ELEV LSTNES ALONTIDION;C 0E YT.B V:TLNS C0  E YT.B H:LTAR VP KUAC BODLMRS ;  0 TEBY . D:2MSL R) ONTIEC SALRNTEEX (LEABATOCEL R2=;-    L BALO G1=;-    ) ONTIEC SNTREUR(CE BLTACALORE= ;1    E UTOLBS A0= ;    ONSIESPREXF OPETYE THS TECADIINS HI;T  0  E YT.B : ODLMRS 'SCTSE.CD MENA= ) (876-3;2    T ECCS .EDAMNN U1= ;    CTSE.A= ;0    : ISE ONN IOCTSET HA WINS TECADIINS HI;T  1  E YT.B : ODCMSEh 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 MASK AND SET COND CODES FORRAS BEQ STLST1 ; BRANCH IF NOT UNDEFINED SY RAS ; THIS SUBROUTINE PRINTS ONE OR MORE LINES ON THE LINE PRINTER. RAS ; FOR COMPATABILITY 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 HEADEBEQ END20 MOV @USERPC ,R4 ;CURRENT PC CMP R4,@HIRPC ;TO MAX. PC BLOS END20  ;IF THE BIT #1,R4  ;FORMER IS HIGHER BEQ END24  ;EVEN. INC R4  ;MAKE EVEN END24: MOV R4,@HIRPC END20: MOV ERRSUM ,R4 MOV #ERRMSG+16 ,R3 MOV #6,R2 JSR PC,BINASC  ;CALL BIN TO ASCII CONVERTER MOV #PASS,R5 CMPB LOPASS ,@R5 ;IS THIS THE LISTING PASS? BEQ END21  ;YES - BRANCH CMPB BOPASS ,@R5 ;IS THE BIN OUT PASS? BEQ END21A 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 PRETIENE THT OU;     U HR TERFFBUT PUUT-OUTNP I ;     VETIECFF EHE TTOS NTOI P ;     LYALONTIDIONNC U1)0,S(DRHA B ;     ESSSREDD AERADHER FEUF BUTNP I ; F2BUSI  D OR.W E RCOU SOFE BLTAG INATOT R ; F1BUSI  D OR.W S:DRHA BN VE.E 0 RDWO.: D4OR W0 RDdMBOL 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 USYMFL ; SYMBOL FOUND - ONLY USED IN UNDEF PASSRAS ; CMP HUSERPC ,R5 R RAS MOV (SP)+,(SP) ; MOVE RETURN ADDRESS OVER IT. RAS TST (R0)+ ; BUMP R0 TO WORD 2. 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  ;YES - BRANCH BR END21B END21: MOV #LOLB,R1 ;.CLOSE AND .RELEASE ;ERROR COUNT TO LISTING DEVICE MOV #ERRMSG ,-(R6) MOV R1,-(R6) EMT WRCMD JSR PC,CLEAN  ;LISTING FILE. END21A: CMPB BOPASS ,@R5 ;IS THIS THE BIN OUT PASS? BNE END21B  ;NO - BRANCH MOV #OBJEND,DIRCMD JSR PC,RLDINT JSR PC,OUTBIN MOV #20.,R4  ;DUMP TRAILER END25: MOV #TRLBUF,-(R6) MOV #BOLB,-(R6) MOV @R6,R1  ;FOR CLEAN EMT WRCMD DEC R4 BGE ENWO.: 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.ENEMATST;     E RCOU SNTSERE PHE TINTHWI;     D SEESOCPRG INBE) ERCTRAHA(C;     E YT BNTREUR CHE TATY TLECIR D ;     TSINPOY TLANSTON CERNTOI PISTH;   0  D OR.W: TEBYUR CD OR WNDMAOM CNSIOCTRUSTINN A ;     OF) DR(MS LDIE FNGSIESDRAD;     `; ;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  ;CSECT PROCESSING MOV #12,WORD4 ; CSECT #=0 TO GET UNAMED .CSECT  ; ANY ERROR ON LAST LINE RAS BEQ LP020 ; NO. RAS MOV #LPERMS,-(SP) ; LINE PRINTER - ERROR MESSAGE ON TTY RAS EMT $NCHKPT ; (NO CHECKPOINT DURING I/O) RAS EMT $TTYOT ; PRINT IT RAS MOV #SRCBFB,-(SP) ; CLOSE ALL OPEN BFUP ELEMENTS. RAS EMT $BFCLS ; D25    ;.CLOSE AND .RELEASE JSR PC,CLEAN  ;BINARY FILE. END21B: MOVB #DEFFLG!GLBFLG,STMASK MOV #COLB,R2 MOV R2,STLLS1+2 TST @R2  ;INIT BNE END13  ;COMMAND OUT IF MOV R2,-(R6) ;NOT ALREADY DONE. EMT INCMD  ;.INIT END13: CMPB USPASS ,@R5 ;IS THE UNDEF SYM PASS? BEQ END02  ;YES - BRANCH END12: CLRB STMASK MOV #SLLB,R1 MOV R1,STLLS1+2 CMPB STPASS ,@R5 ;IS THIS SYM LST PASS? BNE END22  ;NO - BRANCH MOV #SLFB,R3 ;.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  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  RDWO . C:RPHI RDWOC PTOR TEINPO;   0  D OR.W : PC\ 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  ;START WITH 002 MOV -6(R5),WORD1 MOV -4(R5),WORD2 MOV @R5,WORD3 ;SIZE O RAS MOV #BINBFB,-(SP) ; RAS EMT $BFCLS ; 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 $NCHKPT ; (NO CHECKPOINT DURING I/O) RAS EMT $LPRNT INIT,.DELETE,.OPEN JSR PC,DELOUT  ;SYMBOL TABLE DATA SET CLRB STPASS END02: JSR PC,STLIST  ;LIST SYMBOLS MOV R2,-(R6) ;WAIT FOR UNDEFINED SYMBOLS EMT WTCMD BR END12    ;CLOSE AND END22: JSR PC,CLEAN  ;RELEASE SYM.    ;TABLE FILE. END22A: INCB @R5  ;INCREASE PASS NUMBER CMPB @R5,MAXPASS BGT END23 MOV SILB ,-(R6) ;CLOSE SOURCE EMT CLS  ;INPUT MOV SITAP2 ,SITAPE ;# OF TAPES TST SILB1  ;ONE WAS BEQ END26 EL RS ERNTOI PRYNT ECTSE.CT ENRRCU  ;D OR WIDG/LA FTSDOF OR.DD A ;   0 RDWO .C:RPSEHU SSPAA G INUR DEDORRR E ;     ESIN LHE TLL AOFM SUE TH;   0  D OR.W M:SURR E. ERFFBU;     T PUUT OEDSTLIE IVCTFEEFE TH;     N ITEBYE BLLAAIAVT ENRRCU;      HE TATS NTOI PERNTOI PISTH;   0  D OR.W: STLIUR C. CHARSE;     E BLTAL BOYM SHE TNGRIDU;      NTTANSCOR TEACARCH' 'B;     E IVCTFEEFE THS INTARE; XF .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. RAS MOV R2,-(SP) ; PUT ADD. OF WORD 1 IN RAD50 ON STACK. RAS E ; GO PRINT LINE RAS EMT $CHKPT ; ( CAN BE CHECKPOINTABLE AGAIN) RAS MOV (R0)+,(R0) ; RESTORE DOS WORD 3 FROM ROS WORD 1 RAS ; NEEDED FOR LIST THAT DON'T CHANGE. RAS RTS PC ; RETURN TO CALLER RAS ; RAS ; LPLIST TABLE R ;PARAMETER FILE MOV #SILB1,SILB ;BACK TO MOV #SIFB1,SIFB ;DATA SET ONE MOV SITAP1 ,SITAPE ;# OF TAPES END26: MOV #EOTBUF ,-(R6) ;PRINT MOV R2,-(R6)   ;"END" EMT WRCMD MOV R2,-(R6) EMT WTCMD JMP SETPASS END23: MOV #ERRMSG ,-(R6) ;ERROR LINE COUNT MOV #COLB,-(R6) ;TO COMMAND OUTPUT DEVICE EMT WRCMD MOV #COLB,-(R6) EMT WTCMD JMP RESTART EOTBUF: .WORD 10  ;MESSAGE AT END .WORD 0  ;   0  D OR.W D:CMYT BN IOITOS PR.HA CTH5-, B' ' ;  20 1 RDWO .  ONTISIPO. ARCHH -T 4','B;  0062  D OR.W . LSBOYM SEDBLNA E ;     TEBYE THO TONTILARE;     N INETIOUBRSUH RCEA S ;     HE TBYD SE UTSANSTON C ;     ERCTRAHA CB' '40D-MOF OLEAB T ; 0 -1 .  = ONTCBY D.OR WAGFLD/ I'SOLMBSYF OSSREDD A ;   0 RDWO .: EXNDHI CKLO BALINRMTES T'PUUT O ;     RYNABIE THR FOS ESDRAD;     P TMT $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 BNE DECODD ; ONLY HAVE SYMBOL ITSELF. RAS  BITB  AS LPLIST: .WORD 1 ; THREAD WORD RAS .BYTE 3 ; DEVICE NUMBER (LP) RAS .BYTE 2 ; 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 ; ADDOF ALL PASSES .WORD 10  ;EXCEPT THE LAST .BYTE CR,LF .ASCII / END/ .BYTE CR,LF .EVEN .PAGE PAL  ; 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 UM JVETIECFF EHE TNSAIET R ;   0 RDWO .R:ADMP J0 D OR.W : INRC SM SUCKHE CUTTPOUY ARIN B ;     HE TNGTIUCTRNSCOR FOD SE U ;   0 RDWO .: UMCSBO 0 RDWO .M:ERVTSA ENEV .  OLMBSYE BLTACALORES OUVIRE;P     OFD ICTSE.CN AINTAI MTO;   E INUTROUB SONSIESPREXN IEDUS; 0 TEBY.: ECGSPR L PA R.DEEA HGEPAN IRSTEACARCHF OERMBNU; -6UFGBPA.- = LNGBPA S RA ; F ,LLF E YT.B S RA P#RELFLG,@R5  ;ENABLES A SUFIX OF R WITHTHE  BEQ  DECODF  ;OUTPUT OF SYMBOL TABLE FOR  MOVB  #'R,10(R1)  ;RELOCATABLE SYMBOLS  BR  DECOD8 DECODF:  BITB  #REGFLG,@R5  ; SYMBOL A REGISTER ?  BEQ  DECOD8  ; NOPE  MOVB  #'%,1(R1)  ; YES, REGISTER DECOD8: BITB  #LABFLG,@R5  ; IS THIS SYMBOL A LABEL ?  BNE  DECOD9  ; YES  MOVB  #'=,@R1  ; NO, DIRECT ASSIGNMENT DECOD9: CMPB (R1)+,(R1)+ ; ADD 2 TO RRESS OF LINE BUFFER RAS ; RAS ; TTY I/O LIST FOR LP ERROR-VERY BAD 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 MORDERED. ;NOTE: ;ALL ENTRIES ARE ENCODED 16-BIT UNSIGNED, ;POSITIVE, INTEGERS. STLIST: SUBR12: JSR PC,SAVREG  ;SAVE REGISTERS MOV CONTOP ,R5 ;BOTTOM OF UST MOV USRTOP ,R4 ;TOP OF UST CLRB LCSECT  ;NOT CSECT'S ADD #10,R5  ;NULLIFY SUBTRACT AT STLST1 STLST0: JSR PC,ROTATE  ;CALL ROTATE I/O BUFFERS SUB #11,R0  ;R0=BHADRS(2,3)-17. MOV R0,@R3  ;CURLIST=R0,SECOND DATA BYTE MOVB #-4,LISTSC ; ALLOW 5 SYMBOLS/LINE RAS S ; / S /S IISC.A : ECPS S RA ; / M:/M IISC.A : INPM S RA ; / H:/H IISC.A R:OUPH S RA ; B TA E YT.B S RA ; / Y /Y IISC.A R:EAPY S RA ; 9/-1MM/M IISC.A: THONPM S RA ; L1 (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 ; RAS BGT DECODH ; ES: .WORD LPERLN,0 ; # CHARACTERS, SYSTEM RAS .ASCII / ** LP ERR-RASM ABORTED**/ ; RAS LPERLN =.-MES-4 ; MESSAGE LENGTH RAS .EVEN RAS .PAGE RAS   ; SUBROUTINE ENTER BINARY BUFFER    ; INPUT BINOUT BYTE FLAGS    ; > 0, ENTER TBBUF DATA   TLST1: 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 STMASK ,@R5 ;IGNORE DEFINED SYMBOLS BNE STLST1  ;IF STMASK CONTAINS DEFFLG!GLBFLG ; 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 BNE STLST3  ;EITHER NO .CSECT OR ALREAD / D-/D IISC.A : AYPD S RA ; B TA E YT.B S RA ; / XXXX/X IISC.A: UMGNPA S RA ; / E AG/P IISC.A S RA ; B TA E YT.B S RA ; A/01/V IISC.A S RA ; B TA E YT.B S RA H 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 ASCII CONVERSION DECODJ: CLR R4 BISB 1(R5),R4 ;CONTROL SECTION ID. CMP R4,#1  ;D ;  INTO BINBUF    ; = 0, FORCE BINBUF OUT AND    ;  GENERATE BINARY EOT    ; < 0, FORCE BINBUF OUT    ; OUTPUT NONE    ; BBINIT PROVIDES 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 PROCY DONE COMB STMASK  ;REVERSE SWITCH MOV PERTOP ,R5 ;BOTTOM OF .CSECT TABLE MOV CONTOP ,R4 ;TOP OF .CSECT TABLE COMB LCSECT  ;CSECT PROCESSING MOV #412,WORD4 ;CSECT #1, LABEL FLAG, DEFINED BR STLST0 STLST3: TST SLLB ;SYMBOL LISTING DEVICE INITED YET? BEQ STLSTE ;NO - BRANCH MOV #SLLB,-(R6) ;WAIT FOR OUTPUT TERMINATION EMT WTCMD STLSTE:  JSR PC,POPREG  ; RETURN AFTER POPPING REGISTERS. STLST4: INCB WORD4+1  ;START WITH 002 . METID AN, TEDA, #GEPA; M/AS/R IISC.A S RA THWIE IN LLLCAE THN HE TND AGEPAW NE; AB,TFF E YT.B: C1GBPA L PA T UNCOE YT BALTUAC; LNGBPA D OR.W L PA E OD MND AUSATST; 0 D OR.W L PA E.AGSSMER DEEA HGEPAF OTHNGLE; LNGBPA D OR.W: UFGBPA ERFFBUE AGSSMEE AG P ;   N VE.E N IOATOCEL REDACPLIS DVETIDIADT ECCS .; 6 1= .4D4RL ONTICALOREE IVITDD ACTSE.C;  15 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 RAS DECODD: ADD #8.,CURLIST ; ONLY 8/SYM IN UNDEF LISTING RAS ESSING TYPE  BGT  EBBUF0  ; SIMPLE OBJECT DATA BUFFERING  BEQ  EBBUF2  ; OUTPUT THE BUFFER AND EOT  MOV  @R4,@R5  ; SET THE ASSEMBLY LOCATION     ; COUNTER = TBBUF(0,1)  CMP  @R2,#6  ; BUFFER CONTAIN ANYTHING?  BGT  EBBUF2  ; YES, OUTPUT THE BUFFER  BR  EBBUF3  ; INITIALIZE THE BUFFER EBBUF0: NEGB  @R6   ; NEGATE STACKED OBJECT DATA     ; SIZE VALUE, USE THIS AS     ; THE ITERATI 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  CURLIST ,R1  ; R1 = CUR. LIST. BUF. ADDRESS SUB #6,R2  ;ADDRESS OF 1ST TRIAD MOV #2,R0  ;TWO TRIAD COUNTER. DECOD0: MOV (R2)+,-(R6) ;BINARY WORD MOV R1,-(R6) ; =3 4.LD RN IOATOCEL REDACPLIS DCTSE.C;  14  =2 4.LD RN IOATOCEL RCTSE.C;  12  =1 4.LD R1 1= .3D3RL 10  =  2 3.LD R7  =  1 3.LD R6  = 6 2.LD R5  = 5 2.LD R4  = 4 2.LD RC PE SERADLO;   3  = .3D2RL NKLIN IENIV GAS;   2  = .2D2RL DSANMMCOD RL;   1  = .1D2RL TOR FEREE ESTH;   4  = MDDCRL 3  = IRTDTX AB TALNTZORIHOI CIAS;   11  =  B TA EDFENELII CIAS;   12 0  = LF RNTUREE-AGRIAR CIISC A;  5 01  =  R CD EEMFOR FIISC@ 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 SYMBOL TABLE LISTED OUTPUT STLLST: MOVB #LF,@2(R3) ; TERMINATE CHARACTER STON INDEX. EBBUF1:  TSTB  RLDFLG  BEQ  EBBUFA  TSTB  @R6  BLT  EBBUF5  BR  EBBUFB EBBUFA: TSTB  @R6   ; IS INDEX STILL NEGATIVE ?  BGE  EBBUF4  ; NOPE, PROCESSING COMPLETED EBBUFB: CMP #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  EBBUF5ADDRESS OF BYTE STRING MOV #1,-(R6) ;RAD50 CODE EMT 42 ADD #3,R1  ;MOVE BYTE STRING POINTER DEC R0  ;COUNTER FOR 2 PASSES BNE DECOD0 INC R1    ; FORMAT THE LISTED OUPTUT  BITB  #RELFLG,@R5  ;ENABLES A SUFIX OF R WITHTHE  BEQ  DECODF  ;OUTPUT OF SYMBOL TABLE FOR  MOVB  #'R,10(R1)  ;RELOCATABLE SYMBOLS  BR  DECOD8 DECODF:  BITB  #REGFLG,@R5  ; SYMBOL A REGISTER ?  BEQ  DECOD8  ; NOPE  MOVB  #'%,1(R1) A;  4 01  =  F F AS R ; AS R ORRR EADRE C ; 6104 3 = 11RR E AS R ITWRBF- R ROERO CIIS D ; 6100 3 = 10RR E AS R LLFUE BLTAL BOYM S ; 6044 3 = 9 RR E AS R R ROERP FU B ; 6040 3 = 8 RR E AS R LEFIH TCBAE THE INEF DOT NAN C ; 6034 3 = 7 RR E AS R <RING WITH A LF. RAS ; BACK UP 2 CHAR. FOR WORD OF BLANKS 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 SUB R1,(R3) ; COMPUTE THE # OF CHARS. IN THE BUFFER RAS SUB #3,(    ; 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. 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 E ; YES, REGISTER DECOD8: BITB  #LABFLG,@R5  ; IS THIS SYMBOL A LABEL ?  BNE  DECOD9  ; YES  MOVB  #'=,@R1  ; NO, DIRECT ASSIGNMENT DECOD9: TST  (R1)+  ; R1 = R1+2 MOV R1,R3  BITB  #DEFFLG,@R5  ; IS SYMBOL UNDEFINED ?  BNE  DECODA  ; NOPE  BITB  #GLBFLG,@R5  ;THIS PORTION ENABLES OUTPUT  BEQ  DECODH  ;OF 0 IN CASE OF AN UNDEFINED  MOVB  #'G,7(R1) DECODH:  MOV  #"**,-(R6)  ; ADREBF- R ROERO CIIS D ; 6030 3 = 6 RR E AS R R ROERD EAFR B ; 6024 3 = 5 RR E AS R R ROERR TEINPRE IN L ; 6020 3 = 4 RR E AS R UTTPOUN OOF E ; 6014 3 = 3 RR E AS R S.ALONTIDION CEDSTNEY AN MOO T ; 6010 3 = 2 RR E AS R S.CTSE.CY AN MOO T ; 6004 3 = 1 RR E AS R 8R3) ; ADJUST CHARACTER COUNT RAS MOV (R3),(R1) ; AND PLACE THE # IN THE ACTUAL BYTE CT.RAS BGE STLLS2 ; IF BYTE COUNT IS NEG., MAKE IT ZERO. RAS CLR (R1) ; RAS STLLS2: JSR PC,LPRINT ; PRINT THE SYMBPL TABLE LISTING LINE. RAS INC PAGING ; INCREMENT LINES ON THIS PAGE COUNTER. RAS CMP PAGING,MAXLINES ; IS THIS A FULL PAGE YET? BBUFF: CMP #2,RLDCNT ; HOW ABOUT THE RELOCATION BUFFER? RAS BGE EBBUF3 ; IS IT READY FOR OUTPUT? RAS JSR PC,OUTBIN ; 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: ;  YES, VALUE = ASTERISKS DECODG:  MOV  @R6,@R1  MOV  @R6,2(R1)  MOV  (R6)+,4(R1)  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 ASCII CONVERSION DECODJ: CLR R4 BISB 1(R5),R4 ;CONTROL SECTION ID. CMP R4,#1  ;DON'T OUTPUT .ASECT OR BLE DECODI  ;UNNAMED .CSECT ID CMP R4,#MDFLAG ESOD CORRR E ; AS R ; AS R E BLTAINPOCKHE C ; 7 2 =T KPCH $ AS R NTOIKPECCHO N ; 0 3 =PTHKNC $ AS R . LEFIP FU B ACKPA- K ACFP B ; 3 4 =K PCBF $ AS R T.ENEMELP FU B ATELEDE- T ELFD B ; 2 4 =T DLBF $ AS R T.ENEMELN PE OANE OSCL- S LOFC B ; 1 4 =S CLBF $ AS R T ENEMELP FU4 RAS BLT STLLS1 ; NO. GO HOME. RAS JSR PC,PHEAD ; YES. PRINT HEADER 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  RAS EBBUF4: TST  (R6)+  ; MAINTAIN THE STACK POINTER  JSR PC, POPREG ; CALL SET REGISTERS AND RETURN EBBUF5:  INC  @R5 EBBUF8:   ; BUFFER ONE OBJECT DATA BYTE  INC  @R2   ; INCREMENT BLOCKS BYTE COUNT     ; LOCATION COUNTER  INCB  @R6   ; INCREMENT THE STACKED SIZE  MOVB  @R4,(R1)+  ; BUFFER THE OBJECT DATA BYTE  MOVB  (R4)+,-(R6)  ; ADD THE OBJECT DATA BYTE TO  ADD  (R6)+,@R3  ; ;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: JSR PC,SETREG  ADD  #26,CURLIST  ; SYMBOL FIELD =22(10) CHARS.  INCB  LISTSC  ; INCREMENT SYMBOL COUNTER  BGT  DECODC  ; LO BUFFER FULL, OUTPUT  JMP  STLST1  ; PROCESS THE B AENOPRE- N PEFO B ; 0 4 =N OPBF $ ASPRFU BTOINT ENEMELW NEA R TEEN- R NTFE B ; 7 3 =T ENBF $ AS R LEFIP FU B AITIN- T NIFI B ; 6 3 =T INBF $ AS R . LEFIS ROA E INEF DNTMEGENAMAE IL F ; 1 5 =N FIDE $ AS R N ITY T ; 2. 1 =N YITT $ AS R UT OTY T ; 1. 1 =T YOTT $ AS R R TEINPRE IN L ; 1. 2 0 IF NE 0 IFPRO: CLR R0 ;PRIME COND TO EVALUATE JSR PC,COND ;THE EXPRESSION TST RESULT ;TEST THE RESULT JMP IF000 (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 SATISTHE BLOCKS CHECKSUM  BR  EBBUF1  ; CONTINUE ENTERING PROCESS .PAGE PAL ;THIS SUBR INITIALIZES THE RLD BUFFER 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.  NEXT SYMBOL DECODC:  JSR PC, STLLST ; CALL SYMBOL TABLE LISTED OUTPUT  JMP  STLST0 .PAGE PAL  ; SUBROUTINE SYMBOL TABLE LISTED OUTPUT STLLST: SUBR15: MOV  #CURLIST,R0  BIC  #1,@R0  MOV  #005015,@0(R0)  ADD  #2,@R0  CLR  @0(R0)  MOV  BHADRS+2 ,R1  SUB  #26,R1 MOV R1,-(R6) ;STACK BUFFER ADDRESS  CMP  (R1)+,(R1)+  SUB  R1,@R0  MOV  @R0,@R1 STLLS1: MOV # =T RNLP $ AS R ERADRED AR C ; 0. 2 =D EACR $ AS R E IM THE TET G ; 5. 2 =E IMGT $ AS R E AT DHE TET G ; 6. 2 =E ATGD $ AS R O CIIS D ; 9. 1 =O SIDI $ AS R T XI E ; . 4 = ITEX $ AS R RYNABIO TIISC A ; 5. 1 =N CBAS $ AS R II,FIED TST LISTON ;LISTING SUPPRESSES? BEQ IF010  ;BRANCH IF NO INC LISTKEY ;INCREMENT .IF NESTED COUNTER ;INCREMENT DON'T ASSEMBLE 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  RAS MOV (SP)+,R1 ; RESTORE R1. RAS RTS PC ; RETURN TO CALLER. RAS .PAGE 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 O0,-(R6) ;OUTPUT SYMBOL TABLE    ;NOT RE-ENTRANT EMT WRCMD  RTS  R7 .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 (R1) IF000: BNESC ATOY ARIN B ; 4. 1 =S NABI $ AS R 0 D5RAO TIISC A ; 8. 3 =K DPRA $ AS R I CIASO T50AD R ; 9. 3 =N DURA $ AS R ESATQU EMT E ; AS R ;7 22  =  G FLST R6  =  D ENBJ O0 00 2  = IRMDSY 2  = NDDEGS 0014  =  D CMRN T0 45  =  G FLSC C0 41  =  G FLSC A1  =  D (NEXT ITEM TSTB ITYPE  ;IS THIS AN OK SYMBOL? IFDF12: JSR PC,SEARCH  ;YES--SEARCH SYMBOL TABLE BGT IFDF12  ;FOUND IN P.S.T--IGNORE BNE IFDF10  ;NOT FOUND IN U.S.T. IFDF15: BITB #DEFFLG,TFLAGS ;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 CNSTNT ; R2 = '' ; R3 =CNSTNT ; R4 =COUNT OF NO. OF BYTES ABOVE ; ; RLDFIL: SUBR33:  JSR PC, SAVREG  MOVB  RLDCNT,R5  ADD  R4,R5  MOVB  R5,RLDCNT  SUB  R4,R5  ADD  #RLSTRT,R5  MOV  R0,(R5)+  ;FILL IN THE  SUB  #2,R4  BEQ  RLEX  MOV  R1,(R5)+  ;RLD BUFFER  SUB  #2,R4  BEQ  RLEX  MOV  R2,(R5)+  ;CHECK  SUB  #2,R4  BEQ  RLEX  ;IF SO RETURN  MOV  R3,(R5 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 ASSEMBLE COUNTER.CMSD G1 36  =  Z FSTH S4 62 7  = S2AB 017412  =  1 BS A0  = L2RE 0  = L1RE S RA ; S RA . CKTA SSMRAF OZESI; K ACST = IZKSST AGFLL BALO G ;  00 1  = LGBFGL AGFLE BLTACALORE;   0 4  = LGLFRE 3IT BG,LA FVETIECIR DLYMBSEAS;   0 1  = IRMDAS 3IT BG,LA FEDINEF D ;  10  =  G FLEF D. TEBYT ECCS .IN, AGFLD NEFIDEE PLTIUL M ; $R IFDF35  ;LAST TERM="AND", SYMBOL DEFINED CLR R2  ;LAST TERM="AND", SYMBOL UNDEFINED IFDF35: MOVB SAVTERM ,R0 ;GET THIS TERMINATOR ADD #4,R0  ;IS IT "CR"? BEQ IFDF50  ;YES--BRANCH INC R0  ;IS IT ";"? BEQ IFDF50  ;YES--BRANCH INC R0  ;IS IT "&"? BEQ IFDF60  ;YES--BRANCH INC R0  ;IS IT "!"? BEQ IFDF65  ;YES--BRANCH BR IFDF45  ;ERROR--ILLEGAL TERMINATOR IFDF40: TST (R6)+  ;REMOVE STACKED OPERATOR IFDF45: INCB QERROR  ;ERROR)+  ;TO RLEX: JSR PC,POPREG .PAGE PAL ;RLDBYT THIS HANDLES BYT RLD CMDS ; ; ; RLDBYT: SUBR37:  JSR PC, 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  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--IGNORE BNE IFD 77 3  = AGFLMD D.NEFIDEREL BOYM SNTNEMAER P ;   2  = F DERE 1IT BG,LA FELAB L ;   2  = LGBFLA 0IT BG,LA FERSTGIRE;   1  =  G FLEG R0 T BI, AGFLE BLNA ETEBY;   1  =  G FLYT BS ONTINIFIDET BIG LA FLEAB TOLMBSY;    A @#O TEDRCFOA F I-0ON N;  0 TEBY.: BSCAFR ORATICND IERMBNUL MACIDE;   0  E YT.B M:NUEC D0  E YT.B 0  E YT.B 0 TEBY . 0 TEBY . . RYDAUNBON VE E A ; 0 TEBY . ED SYMBOL OR ILLEGAL CLR R2  ;TERMINATOR (DEFAULT=UNDEFINED) IFDF50: TST R2  ;CHECK RESULT JMP IFDF55 (R1) IFDF55: BEQ IF010  ;.IFNDF SATISFIED BR IF020  ;.IFNDF NOT SATISFIED BEQ IF020  ;.IFDF NOT SATISFIED BR IF010  ;.IFDF SATISFIED ;OR OPERATOR ENCOUNTERED IFDF65: TST R1  ;PERFORM AND BEQ IFDF70  ;OPERATION IF .IFNDF BR IFDF00 ;AND OPERATOR ENCOUNTERED IFDF60: TST R1  ;PERFORM INCLUSIVE OR BEQ IFDF00  ;OPERATION IF .IFNDF I PAL ;OUTBIN THIS SUBR OUTPUTS ON THE BINARY DEVICE ; THE CONTENTS OF THE RLD BUF ;; ; ; OUTBIN: JSR PC,SAVREG ; SAVE REGISTERS 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 INF10  ;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 TERMINATOR ADD #4,R0 VEHAT US M -ERFFBUY ARIN BRYRAPOEM T ; 0 TEBY .: UFBB T ENEV . 0 RDWO.: RETOTS ORATICND INGPITYR TEISEG;R 0D OR.W P:TYEG RD OR WUEAL VTSDOF ODRAD;0 RDWO.: PCERUS PCN IOCTSEE UTOLBS;A 0D OR.W C:SPAB ONTIUCTRNSCOR BEUM NALIMEC;D 0D OR.W 0:E1AS BN IOCTRUSTON CERMBNUL TAOC;0 RDWO.: 08SEBA S RA E AG/PESIN L #LTAUEF DENSGSY; NELI$N = LNRMNO L PA S.ONTIUCTRNS IRDWOI LTMU; L PAY BEDUS FDF70: MOV #IFDF30 ,-(R6) ;STACK "AND" OPERATOR BR IFDF05 .PAGE 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 TO R5. RAS ADD R5,R4 ; CONVERT R4 TO ADD. OF CHECKSUM. RAS CMPB -(R4),-(R4) ; MUST SUB 2 FOR CORRECT ADDRESS IN R4. RAS 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  ;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: BEQ IF010  ;.IFD.TEINPRE IN LSTLAF O #NELI; 0 D OR.W: LNSTLA L PA T.SEREL TIUNT INPRT N'DO1 =+ ; L PAETES RE.IN LISTHT INPRT N'DO1 =- ; L PA NELIT INPR0 = ; L PA H TCWI SNTRI PNELI; 0 D OR.WY:KESTLI LYMBSEASN-NOS ESPRUP S = 1L,UAUSS ASTLI= 0 ;0 RDWO .: ONSTLI GEPAR PES NELIR BEUM NUMIMAX;M 70 RDWO:.ESINXLMA TEDAUPR FOR BEUM TST LISTON ; DON'T PRINT THE '.ENDC' ONLY IF IN PAL BEQ IF010 ; .NLIST MODE. PAL 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 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. 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 CONSIDEREDNDF 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 PAL ;.ENDC NNELIR LEMBSEAS;0 RDWO . O:ENIN L) ALCT(OR TEUNCOE AG PVETILAMUCU;0 RDWO.: NTGCPA S)NELI. 52 (GEPAE ON;  O ULOD M),ALCT(OR TEUNCOE IN;L 0D OR.W G:INAG PE LUVAE IVATITNTUA Q'SEMIT;0 RDWO:.TYTIANQU ORATULUMCC AONSIESPREX;0 RDWO.: LTSURE CKTA SVEBO ASSREDD AST;1 0D OR.W T:BOTK ST USF OOP;T 0D OR.W P:TOSR UE BLTAT ECCS .OFP TO;0 RDWO.: OPNTCO ;; S RA N VE.E 0 TEBY . R:ROER R:ERAX M0  E YT.B R: BGT COND00  ;TOO DEEP?    ;NO - BRANCH CLR -(R6) MOV #ERR2,-(R6) JMP ERROUT COND00: TSTB DNTACT ;IN DON'T ASSEMBLE 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 T. STORE CHECK-RAS CLRB (R4) ; SUM. ALWAYS ROOM TO BLANK NEXT WRD RAS ; THIS WILL INSURE A FULL WORD TRANSFER RAS MOV #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 B 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 MOV #-1,LISTKEY BR IF010 ;EXIT .PAGE PAL ;CONDITIONALS FRONT END PROCESSOR (.IF...) ROER UD CEENEREF ROLMBSYD NEFIDEUN;   U ' TEBY .  0 TEBY .: ORRRTE ORRR EONTICAUNTR;   T ' TEBY .  0 TEBY .: ORRRNE ORRR EERMBNU;   N ' TEBY .  0 TEBY .: ORRRIE ORRR EERCTRAHA CALEGLL I ;  'I  E YT.B 0  E YT.B R:ROER BR ROERG INNDOU B ;  'B  E YT.B 0  E YT.B R:ROER ML BELAD NEFIDEY PLTIUL M ;  'M  E YT.B 0  E YT.B R:ROER DD CEENEREF RONTINIFIDEE BLOU D ;  'D  E YT.B 0  E YT.B R:ROERSTB ICOUNT ;IF EXPRESSION WAS NULL, THEN BNE COND04 ;RESULT = 0 BY DEFAULT COND03: CLR RESULT ;YES - RESULT = 0 BY DEFAULT COND04: 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 INARY BUFFER INITIALIZATION    ; INPUT R0 = 0, SIMPLY SET-UP    ; OUTPUT SET-UP AND BINBUF ZEROED BBINIT: SUBR00: MOV  USERPC,R5  ; R5 = THE ADDRESS OF THE     ; ASSEMBLY LOCATION COUNTER  MOV  #BOCSUM,R3  ; R3 = THE ADDRESS OF THE     ; 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     ;  ;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 ASSEMBLE STATE? BEQ COND01 ;NO INCB DNTACT ;YES - INCREASE COUNT TST (R6)+ ;HOUSEKEEP THE STACK JMP IF010 ;LISTING FORMAT CONTROL COND01: TST R0 ;IF RR ROERR TEISEG R ;  'R  E YT.B AS R ; 0 TEBY .R:ROER Z AS R T ES NALONTIDION C AIND EN . ; Z ' TEBY . 0  E YT.B R:ROER AR ROERG INSSREDD A ;  'A  E YT.B 0  E YT.B R:ROER QX TAYN SLEABONTIESQU;   'Q  E YT.B 0  E YT.B R:ROER PR ROERE ASPH;   P ' TEBY .  0 TEBY .: ORRRLE OWFLEROVR FEUF BNELIT PUIN;   L ' TEBY .  E)YT BGHHI (ORATICND IORRR  ASCII2:  MOV  #SUBR11,R4  ; R4 = PROCESSORS ADDRESS  DEC  CURBYTE  ; DECREMENT CURBYTE POINTER  JSR PC, CBTABS  ; 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 TEBUFFERS FIRST DATA BYTE  MOV  #MAXBBA,-(R6) ; STACK THE BINARY BUFFERS     ; MAXIMUM ADDRESS  TST  R0   ; SETUP ONLY OR BUFFER     ; INITIALIZATION ALSO ?  BEQ  BBIN01  ; SETUP ONLY  MOV  #RLDCMD,DIRCMD  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 ( 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 COND04: RTS R7 ;RETURN TO CALLER  .EVEN ERRMSG: .WORD  23  ; PASS ERROR COUNT MESSAGE  .WORD  0  ;FORMATTED ASCII  .WORD  23  .BYTE  CR,LF 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 @ CBIN 2 E+IZ S =ZESI;   3 @R  B NC I: 3WINMA RDWOD ANOM CHE TTOIN;      TSBIG INSSREDD AHE TCELA P ; R6,@R5 @ IS B: 3VINRMINATOR  CMPB  #40,R3  BEQ  ASCII3  BIS  #006400,R3  ; R3 = CAR-RET TERMINATOR  MOV  #SAVTERM,R2  ; R2 = EFF. 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 ; RR0)+ ; CLEAR WORD 2 RAS  MOV  #1,(R0)+  ; CURRENT BYTE COUNT = 1  MOV  #1,(R0)+  ; FIRST DATA WORD = 1  MOV  #10,(R0)+  ; BLOCKS BYTE COUNT = 6  MOV  #TXTDIR,(R0)+  MOV  @R5,(R0)+  ; THIRD DATA WORD =     ; BLOCKS LOAD ADDRESS BBIN00: CLRB  (R0)+  ; ZERO THE BINARY BUFFER  CMP  R0,@R6  ; IS THE BUFFER CLEARED ?  BLT  BBIN00  ; NOPE, CONTINUE CLEARING  MOVB  ,' ,0  .WORD  0,0  .BYTE  '  .ASCII /ERRORS/  .BYTE  CR,LF,LF,0 .EVEN .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  CURBYMA 0 =3)2,F(BUTB;  2 F+BUTB  R CL U:N3AI M0 = ) ,5(4UFBB T ;  +4UFBB T LR C  4 =ZESI;  3 @R4, # VBMO S DEMOE ATDIMEIMO TWE US;      NDMAOM CLTAUEF DCTRUSTON C ; R5,@2727 # OV M  AXNTSYE BLNAIOSTUE Q ;  ORRRQE  B NC I  NDOU FDSELFIO TWT NO;     D RETEUNCOENS LDIE FWO T ; 3VINMA  T BG R ZELYNA AAXNTSYL AL C ; X TAYN S C,PR JS  EDSSCERO PCSNIMONE MRYNABI;  2:NCAI M AL P AS  SWAB  R3  MOV  #177000,R1  ; R1 = 177000  BR  BYTE1  ; COMPLETE INITIALIZATION RWORD:   ; WORD ASSEMBLY DIRECTIVE 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 DIRECTI 1(R5),@R3  ; CHECKSUM INITIALIZATION  ADD  @R5,@R3  ; ADD THE LOAD ADDRESS BYTES  ADD  #4,@R3 BBIN01: ADD  @R2,R1  ; R1 = THE ADDRESS OF THE     ; FIRST AVAILABLE BUFFER BYTE  MOV  (R6)+,R0  ; R0 = THE MAXIMUM BINARY     ; BUFFERS ADDRESS  RTS  R7  ; RETURN .PAGE PAL ;RELREF THIS SUBROUTINE CALCULATES THEVALUE OF THE REL REF FROM ;THE BASE OF THE TEXTTE  ; DECREMENT CURBYTE POINTER  JSR PC, CBTABS  ; 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  ; GEPA . 1 NCAI M BR N MITE I CBIN 1 NCAI M LE B  EMIT , PC SR J  3LINMA  E BN E YTRBCU,@', # PBCM  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 E C,PR JS 0 R LR C  NGSIESOCPRC NIMONE MSR J ; : 3QINMA L PA E AG.P VE HANDLER  CLR  R1   ; R1 = 0 BYTE0:  MOV  #SUBR1B,R4  ; R4 = PROCESSORS ADDRESS  MOV  #0,R3  ; R3 = THE FOLLOWING TWO .  =  .-2   ; ENCODED TERMINATORS:  .BYTE  TCCCRE,TCCSMC ; CAR-RET, SEMICOLON  MOV  #RESULT,R2  ; R2 = EFF. VALUES ADDRESS  MOV  R3,R0 BYTE1:  ADD  #000401,R1  ; R1 = R1 + +1/+1  DECB  SIZE .PAGE PAL  ; SUBROUTINE  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,RELCNT  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: AS R ; RTTA S D EN . AS R ; ENEV . AS R R.FEUF BVEERES R ; IZRSDSZ+SISR+D=. .F:BUSR D AS R ERSFANTRO TDSOR W # ; Z SISR D RDWO . AS RR.FENSRA TRTTA STO. DD AC.SEE IVATELRDWOD 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 AAXNTSYE THL AL C ; X TAYN S C,PR JS D SEESOCPRS ICONEMMNY ARUN;  1:NCAI M AL P GEPA DATA ACQUISITION   ; THIS SUBROUTINE SUPPORTS THE DATA GATHERING   ; REQUIREMENTS OF THE THREE PRECEDING   ; ASSEMBLY DIRECTIVE HANDLERS.    ; INPUT INITIALIZED REGISTERS    ; OUTPUT COMPLETE HANDLER HANDLING    ;  RETURN IS TO SETSRC DATA:  MOV  #SAVTERM,R5  ; R5 = SAVTERM ADDRESS  JSR PC, DATERM ; CALL DATA TERMINATION  BNE  DAT00 ;NOT DATA TERMINATOR.  TSTB  ITEMIN  ; IS AN ITEM PENDING ?  BNE  ADD  @R2,@R3  ; SUM THE BLOCKS BYTE COUNT     ; AND THE BLOCKS CHECKSUM  NEG  @R3   ; 2'S COMPLEMENT THE CHECKSUM MOVB (R3),(R1)+ ; PUT CHECKSUM 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, R ; 0 RDWO .C:SESR D AS R SE UIOSCDIR FOD VEERES R ; ,0,0 0 RDWO . AS R ADRE0=- N IOCTUN F ; 0 TEBY . AS R ORCTSEE IL FEDFICIPE SSE U ; 0 TEBY . AS R D ILEFIP FU B ; LEFI B RDWO .T:DASR D AS R SSREDD AERFFBUA AT D ; T DASR D RDWO . AS R RDWOM TEYS S ; 0 RDWO . AS R . 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 AL C ; E3XP E C,PR JS 0 = 0 R ;  R0  R CL G INSSCERO PICONEMMNS RT;  F:N3AI M AL P  DAT00  ; YES DAT0:  INCB  QERROR  ; NO, QUESTIONABLE SYNTAX  JMP  EXIT  ; EXIT VIA THE MAIN PROGRAM DAT00:  JSR  R1,@R7 ; ITERATION RANGE    ;(R1=DAT00+2, OLD R1 TO STACK)  CLR  R0   ; R0 = 0  JSR  R7,@R4 ; CALL THE EFFECTIVE PROCESSOR DATB0:  SWAB  @R6   ; WORD DIRECTIVE ?  BNE  DATB7  ;NO  TSTB  RSLMOD  ;YES (0 IN LOW ORDER BYTE)  BEQ  DATA00  ;ABSOLUTE EXPRESSION BLT DATB14  BINBUF+4 ; COUNTING CHECKSUM. RAS  CMPB  PASS,BOPASS  ; IS THIS THE BO PASS ?  BNE  CHECK0   ; NO  ADD  #4,@R6  ; YES, R5 = R5+2 CHECK0:  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 S TUTA SORRR E ; 0 RDWO .R:ERSR D AS R Y.ITORRI PSKDIT ESOW L ; 1 RTDP N TEBY . AS R SKTAR ROERO N ; 0 TEBY . AS R NETIOU RITEXO N ; 0 RDWO . AS R PETYT XI E ; 2 TEBY . AS R ) SKDI1= (DECOE ICEV D ; 1 TEBY . AS R RDWOD EAHR T ; GEPA . 5 E OD CCTJEOB;  CAINMA  R B  ONTICALOREE IVITDD AALOBGL;  YTDBRL , PC SR J B:NCAI MD OR WNDMACOE THD ILBU;  3HINMA  R B  ORRR EONTICAUNTRS ET S ;     TEBYR DEOR;      GHHIS T'ULES R ; ORRRTE , 1 T+ULES R VBMO A:NCAI M R ROER A CBIN L OBGL .; B NCAI M EQ B  ODLMRS1,#- PBCM  CAINMA  Q BE D MOSL R TBTS : 3CINMA 0 =LTSURE;   4 @R  R CL R ROERR TEISEG RET SS,YE;  ;.GLOBL OR EXTERNAL    ;.CSECT EXPRESSION ;RELOCATABLE EXPRESSION CURRENT .CSECT JSR PC,SAVREG MOV #2,R4 MOV #RLD2.1,RLDIR ;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,RELREBEEN ALLOCATED RAS ; AND THAT THE NECESSARY BFUP ROUTINES USED TO OBTAIN THE CORRECT RAS ; RELATIVE SECTOR. RAS ; THE INPUT 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 REMAINI 1 RDWO .T:LSSR D AS R ORCTSEK IS DINS RDWOF O # ; 4. 6 =Z SISR D AS R).ADRET NO0= (D.EA RRDWOL RONTCOT AS L ; 0 RDWO .D:WRON C AS RE.USO TERFFBUK IS DINE YT BXTNEF O # ; 0 RDWO .T:BYSR D AS R ERFFBUA AT DND ASTLIO CIIS D ; AS R . FFTU SORRR EDOO G ; 0 09FR B R B AS R CKTA SONE OD CORRR EUT P ; P)(S,-R6ER # OV M AS R 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;  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,# RMF MOV RESULT ,R3 MOV #10,R4 MOV GLBSY1 ,R1 ;.GLOBL OR MOV GLBSY2 ,R2 ;.CSECT NAME DATB13:  JSR PC, RLDFIL  INCB  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 NG 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 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 K ACSTN OUEAL VORRR EUT-PORRR E ; ) SP-(R,ERSR D OV M0:S1ET G AS R N URET R ; C P TS R AS.RERSFANTRT EX NOR FROZEE YT BTO3 RET S ; 3 R LR C ASSRESDRADR TOEC SVETILARET ENEMCRIN K. O ; C SESR D NC I AS R . NE OOT G ; 0 S1ET G NE B AS R S ORRR EOR FCKHE C ; R ERSR D ST T AS R) INGA ALEABNTOIKPECCHE BAN C ( ; TEAV 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 AE,OP N ; 31INMA  E BN ? 0 R =LTSURE;  0 ,RR4 @ MP C  R0N IGNSIS TEBYE ATAGOPPR;  0 ,RR4 @ VBMO D ODF IORRR E  ;.BYTE DIRECTIVE BEQ DATB8 CMPB #-1,RSLMOD BEQ DATB10   ;.GLOBL INCB AERROR BR DATB8 DATB10: JSR PC,RLDBYT 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 = RAS JSR PC,SAVREG ; SAVE REGISTERS R1-R5 RAS MOV 12.(SP),R1 ; GET ADDRESS OF USER'S BUFFER HEADER. RAS CMP (R1)+,(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 T KPCH $ MT E AS R 2.E YP TITEXO-CIIS DSE U ; O SIDI $ MT E AS R ) /O INGRIDUT INPOCKHE CNO ( ; PTHKNC $ MT E AS R K ACSTN OSTLIO I/O CIIS DUT P ; P)(S,-STRLDS # OV MC:SEET G AS R ; AS R R.LEAL CHE TTON URET RND AS,ORRR EOR FCKHE CS,ESDRADR TOEC SHE T ; AS R NTMERENC IE,IL FUPBFE THM RO FORCTSEA D EA REDUSS INETIOUBRSUS HI T ; AS R NGSIESDRAD;  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 NOS OE DNGHINCRA B ; 31INMA  T BL L GALEILT HA T ; BRINMA  Q BE S RESUEN;  D MOSL R TBTS : 32INMA 3HINMA  R ! SETSRC ADDRESS TST @R6   ; ASCII DIRECTIVE? BLT DATA2   ; YES, EXIT.     ; THIS NO-OPED CODE INSURES BR DATA1 ASCIIX: DECB 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" ; 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 FULL. 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. ; AS R . FFTU SORRR EDOO G ; T OURR E MP J0:09FR B AS R . CKTA SONE OD CORRR EUT P ; P)(S,-R5ER # OV M AS R E.LUVAR ROERN INELIN IESYT#BE AV S ; ) SP-(5, R OV M0:08FR B AS R P. USHNIFIO G ; 0 05FR B R B AS R . EDCTTEDET ENEMELF OOF EIFE ER H ; F EORC S B NC I0:07FR B AS R R.LEAL CTON URET R ; C 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:N3AI M AL P GEPA . S ICONEMMN C,PR JS;  A N3AI M RDWO .: S6AS% ; JSR PC,CBTABS   ; CALL CHECK FOR BLANKS AND TABS ; CMPB #CR,@CURBYTE ; THIS CHARACTER A CAR-RET? ; BEQ DATA2   ; YES, VALID 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 ; TH& RAS MOV R3,DSWBYT ; NO. FINISH UP AND RETURN. SAVE BYTE#RAS JSR PC,SETREG ; RESTOR REGISTERS R1-R4. RAS MOV (SP)+,(SP) ; 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 $NCHKPT ; P TS R AS R. DD ASTLIF OOP TON. DD ARNTUREP UM B ; ) SP,()+SP ( OV M AS R R51- RRETOES R ; EGTRSEC, P SR J AS R N.HE TORCTSEP UCKPIL IL WEROVF I ; AS R . LLCAT EX NOR FERNTOI PTEBYE AV S ; YTRBDS3, R OV M AS R R.TEINPOR FEUF BSKDIO T 2DD A ; )+R3 ( ST T AS R).RDWOA N IYSWAAL (RDWOL RONTCOT GE; RDNWCO),R3F(BUSR D OV M0:06FR B AS R CL 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 ME ATEROP;  0 NCAI M RDWO .: S0ASCL LEAB TMPJUG INSSLA CONTIRAPE O ; S:ASCLOP SSLA CONTIRAPE OCTLESE; 0)(R )E TRANSLATION  BLT  RAD01 ; AND PACKING  CMPB  R3,#'9 ; OF WORDS  BGT RAD01  ; AS SPECIFIED RAD00:  SUB  #22,R3 ;  BR  RAD03 RAD01:  CMPB  #'$,R3  BNE  RAD02  SUB  #11,R3  BR  RAD03 RAD02:  CMPB  #'.,R3  BEQ  RAD00  CMPB  #' ,R3  BNE  RAD06  CLR  R3  BR  RAD03 RAD06:  CMPB  R3,#'A  BLT  RADERR  CMPB  R3,#'Z  BLE  RAD03  CMPB  R3,#141  BLT  RADERR  CMPB  R3,#172  BGT  * (NO CHECKPOINT DURING I/O) RAS EMT $DISIO ; ON STACK AND CALL DISCIO, EXIT TYPE 2.RAS EMT $CHKPT ; ( CAN BE CHECKPOINTABLE AGAIN) RAS INC DSWSEC ; INCREMENT SECTOR COUNT RAS TST DSWERR ; ANY ERRORS? RAS BEQ BFW020 ; NO - CONTINUE TRANSFER. RAS BFERR: MOV DSWERR,-(SP) ; YES - PUT ERROR VALUE RAS ORCTSEA T GE O. N ; ECTSGEC, P SR J AS R ES Y ; 0 06FR B LT B AS R E?OR CIND OR WOLTRON CXTNE; IZRSDSZ+SISR#D3, R MP C0:05FR B AS R . EDNTWAE OR M ; 0 03FR B GT B AS R O. GTOT EF L # -REHEO LS A ; 5 R EC D AS R T. INTOU C ; 3 R NC I AS R . TEBYA R FENSRA TLYALIN F+;1)(R),R3F(BUSR D B 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 ; C NPVE E C,PR JS E OD-COPS ICONEM MCKTA S ; ) R6-( , Y ITNTUA Q OV M E:ODPC O AL P - RADERR  BICB  #40,R3  MOVB  R3,@CURBYTE RAD03:  BIC  #177700,R3  MOVB  R3,@SYMBOL  INC SYMBOL  BR  DATB6 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. 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. RAS ; RAS BFPAD: MOV R0,-(SP) ; SAVE OV M0:04FR B AS R . ORCTSER HEOTANT GE O. N ; ECTSGEC, P SR J AS R . ES Y ; 0 04FR B LT B AS R ? MECOO TREMOY AN; IZRSDSZ+SISR#D3, R MP C0:03FR B ASHR CSTIR=FR1D AND REFENSRA TESYT B #ET S ; + 1)(R5, R OV M AS R NTOU CTEBYO TTSINPOW NO1 R ; )+R1 ( ST T AS R R.ROER O. N ; 0 08FR B GT B AS R ERFFBUN I 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,FLEL#R  B ISB  C N1AI M EQ B  ONSIESPREXT ECCS .ALRNTEEXR OBLLO.G;  7 N8AIMT BL  XP EEL RINI M ;A  D MOSL R TBTS G LA FED1  @R6,SIZE DATB9:  MOV  @R2,TBBUF  CLRB  RADIX ASCIIY:  JSR PC, ENDLINE ; CALL END LINE DATA98: CMP LPLIST,#1 ; 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 2R0. 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 DSWBUF(R0) ; CLEAR THE BYTE. RAS INC R0 ; COUNT IT. RAS BR BFP010 OMROE ERTHS I ; + 1)(R5, R MP C0:02FR B AS R . RDWOL RONTCOE THS ESOCPRO G ; 0 01FR B R B AS R D.OR WOLTRON CTO5 RET S ; R5F,BUSR D OV M AS R ).YSWAAL (#2E YT BTO3 RET S ; R32, # OV M AS R R.TOEC SSTIR FET G ; ECTSGEC, P SR J AS R R.FENSRA TTOS TEBYF O #AS H ; 0 02FR B GT B AS R . T)SET BIN IG(SF EOT A ; 0 07FR B MI B0:INEF D'SOLMBSYR EACL;  1 @RG,FLEF#D  B IC B: 1BINMA ERCKHE CERSTGIREL AL C ; E RCFO R C,PR JS E OP N ; 1BINMA  Q BE ? R TEISEG REDYP TOLMBSYS I ; R1,@R2  B IT B: 1AINMA ONTIMAORNF IISTHR TEEN;  1CINMA  R B  UEAL V'SOLMBSYE AV SLLCA; ALVVSA , PC SR J  ONTIUAIT SIDAL VE,OP N ; 1AINMA  E BN ? D NEFIDE;     Y PLTIUL MOLMBSYS HI TIS; ) R11(G,LADF#M  B MP C  EDINEF DLYUL;F  9 N8AI M NE B  OT NONSIESPREX ; 5 .PAGE PAL ; DIRECT ASSIGNMENT STATEMENT PROCESSING  ; THIS SUBROUTINE RESOLVES THE FOLLOWING THREE DIRECT  ; ASSIGNMENT SITUATIONS:  ; 1) USER'S SYMBOLIC ASSIGNMENTS  ; 2) SYMBOLIC REGISTER ASSIGNMENTS  ; 3) ASSEMBLY LOCATION COUNTER ASSIGNMENTS   ; UPON ENTERING THIS SUBROUTINE THE EFFECTIVE SYMBOL   ; TABLE ADDRESS RESIDES IN HINDEX.   ; REGISTER TYPING INFORMATION OBTAINED ON EITHER SIDE   ; 6 ; 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 $NCHKPT ; (NO CHECKPOINT DURING I/O) RAS EMT $DISIO ; WRITE IT OUT. RAS EMT $CHKPT ; ( CAN BE CHECKPOINTABLE A01FR B AS R 5. RTOIND OR WOLTRON CET S ; R5D,WRON C OV M AS R R.FENSRA TTOE YT BXTNEF O #ET S ; R3T,BYSR D OV M AS R S ESDRADR FEUF BRSSE UET G ; 1 ,RP)(S2. 1 OV M AS R 2.-RR1S ORSTGIREE AV S ; EGVRSAC, P SR J AS R ; . =D EAFR B AS R ; AS R  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; C 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 IOAT9 OF THE EQUIVALENCE CAUSES THE EFFECTIVE SYMBOL   ; TO BE TYPED AS REGISTER.   ; THE ASSEMBLY LOCATION COUNTER SYMBOL IS DETECTED   ; BY IDENTIFYING THE CHAR13 PACKED WORD.   ; IE. TMPSYM(1,2) = 127400   ; EXPRESSIONS DEFINING THE ASSEMBLY LOCATION   ; COUNTER, UPON BEING ENCOUNTERED, MUST BE   ; TOTALLY EVALUATABLE.     ; INPUT SPECIAL SITUATION     ; OUTPUT EXIT ASSIGN:  MOV  TMPSYM+1 ,-(R6) ; SAVE SYMBOLS FIRST T:GAIN) 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. . EDORSTRED AND SE URE AR51- RRSTOISEG R ; AS R D.EAFR BNGLIAL CREFOBE' ECRSDS 'TOIND CELA PISR TOEC S ; AS R E IVATEL RHE T. ATR FENSRA THE TINEG BTOR TOEC SHE TCTLESEO T ; AS R E ON DENBEE AV HNSIOATEROPP FU BRYSAESEC NLL AATTHD MEUMSS AIST I ; AS R . ESRIDAUNBOR TOEC SSSROACD ENXT E ; AS R Y MAS NELI ).OF E =ONT BIN IG(SG LA FOF EHE TND ARDCOREE THN I ; AS R S TEBYF O #HE TNGNIAINTCOD OR WOLTRON C ABYD TEMILIDES INELIH AC E ;ICIFOD 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 D MOSL R TBTS . OT NIFH NCRA B ; 87INMA  E BN ? LEABATLUVA ELYALOT TONSIESPREXE THS WA;  R ROER  B ST T  PENO; =RIAD  MOV  TMPSYM+3 ,-(R6) ; SAVE SYMBOL'S SECOND TRIAD  MOV  HINDEX ,-(R6) ; SAVE SYMBOL'S ENTRY ADDRESS  MOV  @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  MAI> ; # 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. AS R . NELIE GLIN S AERUSE THO TSKDIE THM RO FRSFENSRA TNETIOUBRSUS HI T ; AS R GEPA . AS R ; ENEV . AS R R.FEUF BSKDIR FOM OO RVEERES R ; IZWSDSZ+SISW+D=. .F:BUSW D AS R ERSFANTRO TDSOR WOFR BEUM N ; Z SISW D RDWO . AS RR FENSRA TRTTA STO. DD AC.SEE IVATEL R ; 0 RDWO .C:SESW D AS R SE UIOSCDIR FOD VEERES  9 N1AI M NE B  ?ERNTOU CONTICALOY BLEMSS A ;     HE TNGNIFIDEL BOYM SISTHS I ; )+R6,(007412 # MP C  ADRI TSTIR F'SOLMBSYE ORSTRE; +1YMPSTM6,@R  V MO D IATRD ONEC S'SOLMBSYE ORSTRE; +3YMPSTM+,6)(R  V MO S ESDRADY TRENS L'BOYM SRETOES R ; X DEIN,H)+R6 ( OV M  IDD ANS AGFLS L'BOYM SRETOES R ; R1,@)+R6 ( OV M: 18INMA ORRR EERSTGIRE;  R ROER R CBIN L BOYM SEDINEF DLYIPLTMU;     A S AEDERIDNSCON17  ; NON-VOID EXPRESSION FOUND  INCB  QERROR  ; VOID EXPRESSION CONSIDERED     ; AS QUESTIONABLE SYNTAX  INCB  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, 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 ; R  MOV  #-1,R0  MOVB  R0,BINOUT  JSR PC, BBINIT ; CALL BINARY BUFFER INITIALIZATION  MOV  #1,PAGCNT  ; INIT. PAGE COUNTER  CLR  PAGING  ; INIT. LINE COUNTER  CLR  ERRSUM  ; INIT. ERROR COUNTER CLR LINENO ;INITIALIZE ASSEMBLER LINE NUMBER JMP SETP4 RSETP4:  CLR  SIBUF1+2  CLR  SIBUF2+2  MOV  BHADRS+2 ,R0 MOV R0,-(R6) ;STACK BUFFER ADDRESS  MOV  #SIMBC,(R0)+  MOV