Raw File
YUL_SYSTEM_ASSEMBLER_PARA_PASS_1.argus
# Copyright:    Public domain.
# Filename:     YUL_SYSTEM_ASSEMBLER_PARA_PASS_1.mitigus
# Purpose:      Part of the source code for YUL (revision 9).
# Assembler:    TBD
# Contact:      Jim Lawton <jim.lawton@gmail.com>
# Website:      https://www.ibiblio.org/apollo/index.html
# Page scans:   https://archive.org/details/yulsystemsourcec00hugh
# Pages:        211-222
# Mod history:  2016-10-06 JL   Created.
#               2016-11-25 JL   Transcribed pages 211-214.
#               2016-11-26 JL   Transcribed pages 215-219.
#               2016-11-27 JL   Transcribed pages 220-222.
#               2018-01-03 JL   Fixed multiply-defined symbol OLDBINQ on p.216.

# Annotations:
#
#   B L A I R - S M I T H
#    Y U L   S Y S T E M
#
#       Listings in
#    MITIGUS  Format
#

# Note: Page numbers are scan page numbers rather than listing.


L      @YUL SYSTEM ASSEMBLER PARA PASS 1

# Page 211
#      @YUL SYSTEM ASSEMBLER PARA PASS 1                                         USER'S OWN PAGE NO.   1        PAGE  59

R2900   PARAPROGRAM RD1 -- PASS 1 -- GROUP B
R2901   ====================================

R2902              THIS PARAPROGRAM IS OPERATED BY GROUP B DURING PASS 1 AND READS SYPT, SYLT, AND BYPT RECORDS FROM
R2904   TAPE 1 (SYSTEM TAPE).  IT CLASSIFIES SYPT AND SYLT RECORDS INTO DELETE, SAVE, AND INPUT RECORDS.  SAVE RECORDS
R2906   ARE SIMPLY PASSED OVER UNTIL THE FIRST DELETE OR INPUT RECORD IS ENCOUNTERED.  THEREAFTER, SAVE RECORDS ARE
R2908   TRANSMITTED TO BE WRITTEN ON TAPE 3 BY A PROGRAM IN GROUP C.  IN A PROGRAM ASSEMBLY, ALL SYLTSAVES ARE TRANS-
R2910   MITTED.  BYPT RECORDS ARE CLASSIFIED INTO DELETE OR SAVE RECORDS, BYPTSAVES BEING TRANSMITTED TO BE WRITTEN ON
R2912   TAPE 4.  IN EACH FILE, THOSE RECORDS ARE DELETED WHOSE NAMES ARE THREADED FOR DELETION IN THE YUL FILE.  ALSO,
R2914   IN A PROGRAM ASSEMBLY, ANY EXISTING LOAD DECK (BYPT RECORD) FOR THE PROGRAM BEING ASSEMBLED IS DELETED.  THERE
R2916   ARE INPUT RECORDS FROM SYPT DURING A PROGRAM RE-ASSEMBLY, AND THERE ARE INPUT RECORDS FROM SYLT DURING A SUBROU-
R2918   TINE RE-ASSEMBLY OR WHENEVER SUBROUTINES ARE USED.  THE FINAL TASK OF RD1 IS TO POSITION TAPE 1 CORRECTLY FOR
R2920   WRITING DURING PASS 2.  SYLT RECORDS THAT ARE INPUT (EXCEPT BELONGING TO THE PRINCIPAL IN SUBROUTINE ASSEMBLY)
R2922   ARE ALSO SAVED, TO PERMIT ONE-SHOT MODIFICATION OF SUBROUTINES.

R2923   A "PARAPROGRAM" IS A SUBSIDIARY ROUTINE RUNNING IN A SIDE GROUP.  WE ARE INDEBTED AS USUAL TO JOHN SHAW FOR
R29232  JSOCTL



 2924              SETLOC,5     1056          B7

 29244             TS           L BANK 1      Z,X6          PASS 1 GPB
 29245             TS           L BANK 1      Z,X6          PASS 1 GPC          MINI-TRANSFER-VECTOR FOR SIDE GP STARTS.

 2925   BIT 6 P    OCT          01
 2926   BIT 25 P   OCT          -4000 0000
 2927   SPEC SGN P OCT          -10 0000
 2928   BIT 46     OCT          -4
 2929   ONE P      OCT          -1

 2930   D12 P      OCT          -17
 2931   C5T8 P     OCT          -7777 7777
 2932   CAC 3 P    OCT          -17 7777
 2933   THREE P    OCT          -3
 29335 *ONES P     DEC          GGGG GGGG GGGG
 29338  D4T8P      DEC          000G GGGG
 29339  OCT 400    OCT          -400
 2934   OCT 200    OCT          -200

# Page 212
#      @YUL SYSTEM ASSEMBLER PARA PASS 1                                         USER'S OWN PAGE NO.   2        PAGE  60

P29345  ALPHABETIC CONSTANTS, RESERVATIONS, AND ADDRESS CONSTANTS.



 2935   W END SYPT ALF          END SYPT
 2936   W END SYLT ALF          END SYLT
 2937   W END POPO ALF          END¢POPO

 2938   EOF BANER  DEC          -GGGG
 2939   WANTED     RESERVE      1
 2940   LIST NAME  RESERVE      1
 2941   LHS        RESERVE      3

 29419  END SYMBF  RESERVE      1
 2942   SAVE XSP   RESERVE      5
 2943   L DO DELET SPEC                                     DO DELETE
 2944              SPEC                                     DELETE Q
 2945   L WANT PRG SPEC                                     WANT PROG
 2946              OCT          -33757
 2947              OCT          -133770

 2948   L DO INPUT SPEC                                     DO INPUT
 2949   L DO SAVE  SPEC                                     DO SAVE
 2950   L DO INSAV SPEC                                     DO INPSAV

 2951   L SUBKNO Q SPEC                                     SUBKNOW Q
 2952   L GET SUBS SPEC                                     GET SUBS
 2953   L BANK 1   SPEC, B1                                 DAMN ZERO
 2954   L ENDTHR 1 SPEC,B7                                  7

 29544  L EORVF M2 CAC          ANAL SYMB     COMMON        EOR OR EOF -2

# Page 213
#      @YUL SYSTEM ASSEMBLER PARA PASS 1                                         USER'S OWN PAGE NO.   3        PAGE  61

P29545  ASSIGNMENTS AND EQUIVALENCES.



 29546  COMMON     ASSIGN       1,0

 2955   TAPCO NAM  ASSIGN       2,0
 2956   TAPRO NAM  ASSIGN       2,1

 2957   PROG NAME  ASSIGN       6,0
 2958   NEXT NAME  ASSIGN       6,1
 2959   SWITCH     ASSIGN       6,2

 2960   MID POINT  ASSIGN       6,40
 2961   L PROG FIL ASSIGN       6,44
 2962   INIT X5    ASSIGN       6,49

 2963   SORS NAME  ASSIGN       6,52
 2964   COMPUTER   ASSIGN       6,53
 29645  SEG OWNER  ASSIGN       6,54
 2965   SUBSTRAB   ASSIGN       6,55
 2966   TRACK LOG  ASSIGN       6,57
 2967   DISCALIM   ASSIGN       6,58
 2968   DISC ADDR  ASSIGN       6,59
 2969   REC COUNT  ASSIGN       6,60
 2970   ZERO       ASSIGN       6,62

 2971   BIT 32     ASSIGN       6,69
 2972   BIT 45 NOT ASSIGN       6,70
 2973   TWO        ASSIGN       6,71
 2974   NINE       ASSIGN       6,72

 2975   FREE NTRY  ASSIGN       6,73
 2976   FREE EXIT  ASSIGN       6,74
 2977   SAPO NTRY  ASSIGN       6,75
 2978   P1 MASKS   ASSIGN       6,76

 2979   END PARAS  ASSIGN       6,77
 2980   END YUL    ASSIGN       6,78
 2981   DISASTER   ASSIGN       6,81
 2982   GRAB FREE  ASSIGN       6,83
 2983   FREE INSV  ASSIGN       6,91
 2984   SET FREE   ASSIGN       6,95

 2985   L STOPPER  EQUALS       CAC3 P
 29851  L COMMON P EQUALS       L EORVF M2
 29852  L ANAL SYM EQUALS       L EORVF M2

# Page 214
#      @YUL SYSTEM ASSEMBLER PARA PASS 1                                         USER'S OWN PAGE NO.   4        PAGE  62

R2986   DECISION PROCESS UPON THE RECORD IN THE BUFFER WHOSE ADDRESS IS IN X2. SOME EXPLANATION IS CALLED FOR ABOUT THE
R2988   INDEXED SPECIAL REGISTER ADDRESSES ON THIS PAGE (3) AND PAGE 6.  THEY ARE IN PRACTICE INDEXED INDIRECT MEMORY
R2990   ADDRESSES, AND ARE RESPECTIVELY A 3-WAY AND A 2-WAY BRANCH.

R2991   IF THERE ARE NO DELETES AND THE TASK IS NOT A PROGRAM ASSEMBLY, THEN ALL OF SYPT CAN BE PASSED BY.  IN THIS CASE
R2993   X5 CONTAINS GB,R2 (WITH TAB BIT), SO THAT 5,Z,0 = N,R2 = DO DELETE.  THE ADDRESS 5,Z,1 IS NOT USED.

R2995   IF THERE ARE NO DELETES AND THE TASK IS A PROGRAM ASSEMBLY, THEN SYPT RECORDS MIGHT BE EXAMINED FOR WANTEDNESS.
R2997   HERE C(X5) = GB,R4, SO THAT 5,Z,0 = N,R4 = WANTPROG.  AGAIN, 5,Z,1 IS NOT USED.

R2999   IF THERE ARE DELETES AND THE TASK IS NOT A PROGRAM ASSEMBLY, THEN SYPT RECORDS MUST BE EXAMINED FOR DELETION
R3001   ONLY.  HERE C(X5) = -3B,R3, SO THAT 5,Z,0 = N,R3 = DELETEQ. THEN 5,Z,1 IS ACTIVE IF THE RECORD IS NOT DELETED
R3003   AND = N,R2 = DO DELETE OR DO SAVE.

R3004   IF THERE ARE DELETES AND THE TASK IS A PROGRAM ASSEMBLY, THEN SYPT RECORDS MUST BE EXAMINED FIRST FOR DELETION
R3006   AND SECOND FOR WANTEDNESS.  HERE C(X5) = +GB,R3, SO THAT 5,Z,0 = N,R3 = DELETEQ.  THEN 5,Z,1 IS ACTIVE IF THE
R3008   RECORD IS NOT DELETED AND = N,R4 = WANTPROG.

R3009   ANALOGOUS RULES GOVERN SYLT RECORDS IN SUBROUTINE REVISIONS, EXCEPT THAT IN SYLT, N,R2 = DO SAVE ALWAYS.

 3011   END FILE Q LA           N,X2          CAC 3 P       5,Z,0               BRANCH IF NOT END OF FILE.

 3013              TS           C,+1          END FILE Q +1 END SYPT

 3014              TS           GOT EOFRI     END FILE Q +1 END SYLT

 3015   GOT EOFRI  TS           L STOPPER     Z,X1          END BYPT

 3016   DELETE Q   TX           9             -             Z,X0                LOOK THROUGH ENTIRE DELETE LIST IF THERE
 3018              TS           TAPRO NAM     6             C,+2                ARE ANY DELETES WAITING.
 3020              SWS, B38T48  N,X0          0             Z,X0
 3021              NA           N,X0,1        TAPRO NAM     C,-1
 3022              NA           Z,X0          L END THR 1   REAL DELE -2        BRANCH IF MATCH ON NAME WAS REAL.
 3024              LA           N,X2          C5T8 P        5,Z,1               FOUND END OF DELETE LIST, SO GO TO INPUT
 3026              LA           LHS           C5T8 P        5,Z,1               OR SAVE RECORD IF COMPUTER NAME IS VOID
 3028              TX           Z,R2          -             Z,SC                OR OK, OTHERWISE ALWAYS SAVE IT.

 3030              LA           N,X2          C5T8 P        REAL DELE           ASSUME MATCH IF COMPUTER NAME IS VOID.
 3032              NA, C1T4     TAPCO NAM     0,0           DELETE Q +2         LOOK AT NEXT DELETE NAME IF WRONG COMP.

 3034   REAL DELE  TS           L DO DELET    Z,SC          SAVEMODE -1    C    SWITCH FROM PASS TO SAVE MODE IF NEEDED.

 3036   WANT PROG  NA           TAPRO NAM     WANTED        N,R2                BRANCH TO SAVE UNWANTED RECORD.
 3038              TS           -             -             SAVE MODE -1   C

 3039   VERSION Q  NA, B1T12R   SWITCH        7             DO INPUT            BRANCH IF RECORD IS NOT VERSION INPUT.
 3041              TS           -             -             DO INP SAV

# Page 215
#      @YUL SYSTEM ASSEMBLER PARA PASS 1                                         USER'S OWN PAGE NO.   5        PAGE  63

P3042   PROCEDURE FOR THE END OF THE SYPT (SYMBOLIC YUL PROGRAM TAPE).

 3043   END SYPT   SSL, D12     Z,X5          0             C,-1                ENSURE WANTEDNESS CHECK DURING SYLT.

 3045              SM           Z,X5,2        Z,SC,1        -                   CHANGE GB,R2 TO GB,R4.
 3047              SM           Z,X5          SPEC SGN P    Z,X5                CHANGE -GB,R3 TO +GB,R3.
 3049              TS           N,X2          EOF BANER     SAVE MODE -1   C    HIDE END SYPT FROM WWT, GO TO SAVE MODE.
 3051              TS           L PROG FIL    Z,X4          FIND SUBS      C    POINT TO NAME OF 1ST POSSIBLE SUBRO.
 3053              NA, PROG SUB SWITCH        7             UNWASSL             TEST PROG/SUB BIT WHEN NO (OTHER) SUBS.
 3055              NA, PROG SUB SWITCH        ZERO          ITS A SUBR          TEST PROG/SUB BIT WHEN THERE ARE SUBROS.

 3057   ITS A PROG TX           L SUBKNO Q    -             Z,R4                SET UP WAIT FOR SUBROS OF THIS COMPUTER.
 3059              TS           N,X4          LIST NAME     UNWASSL +1          POINT TO FIRST SUBROUTINE OF COMPUTER.

 3061   ITS A SUBR SSL, ONE     SWITCH        46            UNWASSL             OMIT WANT QUESTION IF NOT MERGING.

 3063   UNWASSL    SSL, D12     Z,X5          0             UNWASSL -3     C

 3064              NA           NEXT NAME     W END SYPT    C,+2
 3065              NA           Z,S1          ZERO          DO ALT OP           MAYBE AWAIT DISC XFER HERE IF PROGRAM.
 3067              TS           N,X4          LIST NAME     DO SAVE

 3068   UNWANT     HA           Z,X5          SPEC SGN P    Z,X5                CHANGE +GB,R3 TO -GB,R3.
 3070              WD           Z,X5          TWO           Z,X5                CHANGE GB,R4 TO GB,R2.

 3072   FIND SUBS  SWS,THREAD10 4,1           0             Z,X4           C    SUBROUTINE TO FIND SUBROUTINE NAMES...
 3074              LA,BIT36R    4,1           ZERO          C,-1           C    SUBS FOR THIS MACH. ONLY ON THIS THREAD.
 3076              LA           Z,X4          L END THR 1   N,SC,1         C    BRANCH IF ONLY END OF LIST WAS FOUND.
 3078              TS           Z,SC,1        -             -                   EXIT SKIPPING WITH NAME FOUND VIA X4.

 3080   SUB CALL Q LA, ONE      4,1           ZERO          FIND SUBS      C

 3081   SUB KNOW Q NA           TAPRO NAM     LIST NAME     N,R2                BYPASS RECORDS UNTIL 1ST POSSIBLE SUBRO.
 3083              LA,KNEW SUBS SWITCH        ZERO          DO ALT OP           WAIT FOR SUBROS TO BE ACCOUNTED FOR.

 3085              TS           SUB CALL Q    FIND SUBS +1  FIND SUBS +1   C    LOOK FOR NAME OF 1ST CALLED SUBRO.
 3087              TS           Z,R2          Z,SC          UNWASSL        C    SAVE REST OF SYLT IF NONE.

 3089              NA           NEXT NAME     W END SYLT    C,+2
 3090              TX           N,X4          -             NEXT NAME           SPECIFY LOCATION OF TAPE BREAK.
 3092              TX           L GET SUBS    -             Z,R4                SET UP SEARCH FOR SLAVE SUBROUTINES.

 3094   SEE NEXT   NA           TAPRO NAM     N,X4          N,R2                SAVE IF NOT 1ST REC. OF NEXT WANTED.
 3096              SS           ZERO          ONE P         4,1                 REMOVE CALL BIT FROM SUBROUTINE NAME.
 3098              TS           N,X4          WANTED        FIND SUBS      C    SET NEXT AS WANTED AND SEEK NEXT SLAVE.
 3100              TX           WANT PROG     -             GET SUBS            CHECK WANT ONLY IF NO MORE SUBROS.

 3102   GET SUBS   NA           TAPRO NAM     WANTED        SEE NEXT            BRANCH IF NOT OF CURRENT SUBROUTINE.
 3104              TS           L DO INSAV    Z,SC          SAVEMODE -1    C    DO BOTH INPUT AND SAVE.

R3106   PROCEDURE FOR THE END OF THE SYLT (SYMBOLIC YUL LIBRARY TAPE).

 3107   END SYLT   TS           INIT X5       Z,X5          SAVE MODE -1   C    RESTORE CRITERION FOR WANTEDNESS CHECK.
 3109              NA           Z,S1          ZERO          DO ALT OP           MAYBE AWAIT END OF DISC XFER IF SUBRO.
 3111              TS           Z,SC          Z,X4          DO INP SAV          SET UP BYPT PROCEDURE.

# Page 216
#      @YUL SYSTEM ASSEMBLER PARA PASS 1                                         USER'S OWN PAGE NO.   6        PAGE  64

P311202 PROCEDURE TO ADD THE OWNER'S SYMBOL TABLE TO A SEGMENT'S SYMBOL TABLE.

 311204            NA           TAPRO NAM     SEG OWNER     OLD BINQ            BRANCH IF NOT AUTHMEMO OF SEG'S OWNER.
 31121             TX           L EORVF M2    -             Z,AU1
 311213            NA           N,AU1         ZERO          C,-1                WAIT UNTIL PASS 1 IS DONE WITH SYM TAB.
 311219            TS           Z,SC          Z,R4          DO SAVE             SAVE AUTHMEMO AND PROCESS SYMTAB BELOW.

 311225            LA           TAPRO NAM +1  CAC3 P        OLD BINQ -1         BACK TO NORMAL WHEN A PARAGRAPH COMES.
 311231            TN           Z,X1          5             SAVE XSP
 311232*FLIP MXR   HA           Z,MXR         ONE P         Z,MXR          S
 311234            WA           Z,X2          THREE P       Z,X4                X4 POINTS TO 1ST SYMBOL IN RECORD.
 31124             WA           Z,X4          OCT 400       END SYMBF           END SYMBF POINTS TO FIRST ORTHOWORD.
 311246            SWE, CAC3    L COMMON P    16            Z,X1

 311249 SEG SYMBS  TX           N,X4,1        -             COMMON
 311252            SWE, CAC3    L ANAL SYM    32            Z,CSC          C    ANALYZE HISTORY OF SYMBOL.
 311258            LA           COMMON +2     CAC3 P        C,+3                BRANCH IF SYMBOL IS UNDEFINED.
 311264            SM           N,X2          D4T8 P        N,X2                OTHERWISE IT'S IN MISCELLANEOUS TROUBLE.
 31127             TS           Z,X4,1        -             C,+2
 311273            SS           N,X4,1        D4T8 P        N,X2                SUPPLY HEALTH AND DEFINITION FROM OWNER.
 311277*           LA           ONES P        N,X4          C,+2
 311279            NA           Z,X4          END SYMBF     SEG SYMBS

 311282            TN           SAVE XSP      5             Z,X1
 311285*           TS           L DO SAVE     Z,SC          FLIP MXR       C    SAVE EACH SYMBOL TABLE RECORD.
 311291            TS           Z,SC          Z,R4          DO SAVE             SAVE FIRST PARAGRAPH, CONTINUE BELOW.
 3113   OLD BINQ   NA           TAPRO NAM     PROG NAME     DO SAVE             SAVE LOAD DECK UNLESS OF PROG BEING REV.

R3115   DISPOSITIONS OF RECORDS FROM TAPE 1.  "SLEEP" MEANS "DO DISC (TRANSFERRED) INPUT IF NECESSARY, OTHERWISE SLEEP".

 3116   DO DELETE  LA           Z,X3          ZERO          RD NEXT             SIMPLY READ AGAIN IF NO REMOTE COMING.
 3118              TX           Z,X3          -             Z,X0                SWAP NEXT AND REMOTE BUFFERS.
 3120              TS           Z,X2          Z,X3          PHI TAPE
 3121              RF,1         3,0           -             DISASTER            READ A NEW REMOTE.
 3123              TS           Z,X0          Z,X2          RD REMOTE +2

 3126   DO INP SAV NA           N,R5          ZERO          DO ALT OP           GO TO SLEEP IF JOINT LIST IS FULL.
 3128              TX           Z,X2          -             N,R5,1              PUT BUFFER INTO JOINT STATUS.
 3130              SM           Z,R5          BIT 46        Z,R5                MODULATE JOINT LIST ENTRY POINTER.
 3132              TX           N,SC,1        -             REMOTE Q -1         CALL FOR SAVE AFTER INPUT.
 3134              TS           ZERO          REMOTE Q -1   DO SAVE

 3135   DO INPUT   NA           N,R6          ZERO          DO ALT OP           GO TO SLEEP IF INPUT LIST IS FULL.
 3137              TS           Z,X2          N,R6,1        MON WAKE       C    PUT BUFFER INTO INPUT LIST, WAKE PASS 1.
 3139              SWS, BIT46R  Z,SC,5        16            Z,R6                MODULATE INPUT LIST ENTRY POINTER, SKIP.

 3141              LA           N,R7          ZERO          C,+3                BRANCH IF SAPO LIST NOT FULL.
 3143              TS           Z,SC,1        -             DO ALT OP           OTHERWISE SLEEP UNTIL THERE'S A VACANCY.
 3145   DO SAVE    TS           SAPO NTRY     Z,R7          C,-2
 3146              TS           Z,X2          N,R7,1        -                   PUT SAVE BUFFER INTO SAPO STATUS.
 3148              SM           Z,R7          BIT 46        SAPO NTRY           MODULATE SAPO LIST ENTRY POINTER.
 3150              PR

# Page 217
#      @YUL SYSTEM ASSEMBLER PARA PASS 1                                         USER'S OWN PAGE NO.   7        PAGE  65

P3151              PROCEDURE AFTER DISPOSITION OF EACH BUFFER.

 3152   REMOTE Q   LA           Z,X3          ZERO          CH NEX BUF          GO FOR A BUFFER IF NO REMOTE.
 3154              TS           Z,X3          Z,X2          CH REM BUF          CHANGE REMOTE TO NEXT, GO FOR REMOTE.
 3156   CH NEX BUF TS           Z,SC          Z,CSC         GRAB FREE      C
 3157              TS           Z,AU1         Z,X2          C,+1           S    ACQUIRE A FREE BUFFER.
 3159   RD NEXT    TS           Z,X2          Z,X3          PHI TAPE            SET UP DOUBLE TRY FOR REMOTE.
 3161              RF,1         2,0           -             DISASTER

 3162   CH REM BUF LA           Z,S1          ZERO          GRAB REM -1         BRANCH IF NO DISC TRANSFER INPUT TO DO.
 3164              TS           Z,SC,5        -             DO ALT OP
 3165   REM BUF OK NA           N,R7          BIT 32        GRAB REM            BRANCH IF WE HAVE A BUFFER FOR REMOTE.
 3167              LA           Z,X3          ZERO          RD REMOTE +2        GIVE UP AFTER 2ND FAILURE AT REMOTE.
 3169              TS           ZERO          Z,X3          PHI TAPE
 3170              RF,1         -             -             DISASTER
 3171              TS           FREE EXIT     Z,R7          REM BUF OK          SECOND TRY FOR A REMOTE BUFFER.

 3173   GRAB REM   TS           N,R7          Z,X3          -                   GRAB NAME OF REMOTE BUFFER.
 3175              TS           BIT 32        N,R7,1        -                   PLANT BUSY FLAG IN FREE LIST.
 3177              EX           Z,R7          BIT 45 NOT    FREE EXIT           MODULATE FREE LIST EXIT POINTER.
 3179   RD REMOTE  TS           -             -             PHI TAPE
 3180              RF,1         3,0           -             DISASTER
 3181              NA, PROG SUB SWITCH        ZERO          SAVE MODE +2        ALWAYS CUT TAPE AT BEGINNING IN PROGRAM
 3183              TS           L DO SAVE     Z,R2          SAVE MODE +1        ASSEMBLY.  NOTE SEQUENCE MODE CALL HERE.
 3185              CC           N,X2          -             LHS
 3186              NA           LHS           ZERO          DISASTER
 3187              NA           LHS +1        ZERO          DISASTER            BRANCH IF INCOMING RECORD HAD BAD ORTHO.
 3189              WA           REC COUNT     ONE P         REC COUNT
 3190              NA, CAC3R    2,0           REC COUNT     DISASTER            BRANCH IF IT HAD BAD RECORD NUMBER.
 3192              LA           N,X2          C5T8 P        END FILE Q          IF NO COMPUTER NAME, SEE WHETHER EOF.
 3194              HA           N,X2          COMPUTER      LHS                 FORM LEFT-HALF ZERO IF NAMES MATCH.
 3196              LA           LHS           C5T8 P        5,Z,0               IF OK COMPUTER NAME, DO 3-WAY BRANCH.
 3198              NA           5,Z,0         N,R4          5,Z,0               OTHERWISE DO ANYTHING BUT INPUT.
 3200              TX           Z,R2          -             Z,SC                ...WHICH FOR WRONG COMPUTER BECOMES SAV.

R3202   CLOSED SUBROUTINE TO CHANGE FROM PASSOVER TO SAVE MODE FOR NOMINALLY SAVE RECORDS.

 3204              NA           Z,R2          L DO DELET    N,SC,1         C
 3205   SAVEMODE   TX           L DO SAVE     -             Z,R2           C    SAVES HEREAFTER ARE WRITTEN ON TAPE 3.
 3207              SWE, SPECMAG N,X2          0             MID POINT           RECORD NO. OF 1ST RECORD WRITTEN OVER.
 3209              TN           RD REMOTE +4  10            RD REMOTE +2        DO THAT TEST ON FIRST RECORD ONLY.
 3211              TS           -             -             RD REMOTE +2

# Page 218
#      @YUL SYSTEM ASSEMBLER PARA PASS 1                                         USER'S OWN PAGE NO.   8        PAGE  66

P3212   PROCEDURE AFTER BYPT IS READ, TO POSITION TAPE 1 AT THE FIRST RECORD THAT WAS INPUT OR DELETED.  THE RECORD
R3214   NUMBER KEPT IN MIDPOINT AND THAT OF THE EOFRI RECORD ARE USED TO DETERMINE THE OPTIMUM WAY OF POSITIONING, CON-
R3216   SIDERING ALL RECORDS TO HAVE EQUAL LENGTH AND THAT RECORDS ARE REWOUND OVER THREE TIMES AS FAST AS READ OVER.

R3218   IF BIT 11 OF SWITCH IS FOUND TO BE ON BEFORE OR DURING POSITIONING, EITHER THE TASK IS A REPRINT, OR A MERGING
R3220   ERROR HAS BEEN FOUND.  IN THESE CASES, YULPROGS WILL NOT BE WRITTEN ON, SO REWIND AND FORGET POSITIONING.

 3222   END BYPT   TS           -             -             PHI TAPE
 3223              RF,1         -             -             -
 3224              LA           Z,X3          ZERO          C,+2                BRANCH IF THERE IS NO REMOTE.
 3226              TS           Z,X3          Z,SH          SET FREE       C    FREE REMOTE EOFRI BUFFER.
 3228              TS           C,+1          REMOTE Q      DO INP SAV          TRANSMIT EOFRI RECORD.
 3230              TS           -             -             C,+1
 3231              WD           N,X2          MID POINT     Z,S3                FORM COUNT FOR BACKWARDS RUN.
 3233              LA           Z,X3          ZERO          C,+2                BRANCH IF THERE WAS NO REMOTE BUFFER.
 3235              WA           Z,S3          ONE P         Z,S3                INCLUDE 2ND EOFRI IN BACKSPACE COUNT.
 3237              WA           MID POINT     MID POINT     LHS

 3238   END P1 RB  SSL, ONE     SWITCH        37            C,+1                OMIT TEST IF BIT 11 IS ON.
 3240              LA           Z,S3          LHS           BK SPACE            BRANCH IF BACKSPACING IS BETTER.

 3242   END P1 RW  TS           MID POINT     Z,S3          PHI TAPE
 3243              RW,1         -             -             -
 3244              WA           Z,S3          ONE P         Z,S3                FORM COUNT FOR READING FORWARD.

 3246   END P1 RF  SSL, ONE     SWITCH        37            C,+1
 3247              TS           Z,SC,4        -             PHI TAPE

 3248              LA           MID POINT     Z,S3          C,+2
 3249              TS           -             -             END P1 RW           IF REWIND WAS NOT DONE, GO TO DO IT NOW.
 3251              NA           MID POINT     Z,S3          DEAD STOP -1        OTHERWISE NO-HUNT FROM BIT TEST TO STOP.
 3253              TS           -             -             END P1 RW

 3254              RF,1         1,0           -             DISASTER
 3255              NA           Z,S3,1        ONE P         END P1 RF

 3256   BK SPACE   TS           -             -             PHI TAPE
 3257              RB,1         1,0           -             DISASTER
 3258              NA           Z,S3,1        ZERO          END P1 RB           GO TO REWIND AND HALT IF BIT 11 IS ON.

 3260              TS           ZERO          Z,S3          PHI TAPE            PLAY SAFE ABOUT MOD3 CHECK BITS.
 3262              RB,1         -             -             DISASTER            FINAL DUMMY READ FOR POSITIONING.

 3264              SWS, CHAR1   ZERO          0             END PARAS



R3265   FINAL INSTRUCTION FOR PARAPROGRAMS.

 3266   DEAD STOP  TS           Z,R0          Z,SC          MON WAKE       C    WAKE OTHERS AND GO BACK TO BED.

# Page 219
#      @YUL SYSTEM ASSEMBLER PARA PASS 1                                         USER'S OWN PAGE NO.   9        PAGE  67

P3268   PROCEDURE TO INPUT CARD IMAGES TO PASS 1 FROM A FILE ON THE DISC INSTEAD OF FROM TAPE.  THE FILE MUST HAVE BEEN
R3270   PUT ON THE DISC BY A TRANSFER TASK.  THE RESULT OF A "TRANSFERRED ASSEMBLY" IS A NEW PROGRAM OR SUBROUTINE.



R3272   CONSTANTS, RESERVATION, AND EQUIVALENCES.

 3273   130 IN A   PR           130
 3274   OCT 1000   OCT          -1000
 3275   8 BLOX     OCT          0000 0010
 3276   SNATRACK   DEC          -31

 3277   DF INC MSG ALF,3        DISC FILE INCOMPLETE (½)
 3278   END RUINS  ALF,5        ⌑999999Q   RUINS OF INCOMPLETE DISCFILE

 3279   DISC BUF 1 CAC                        XFR BEGIN     13288
 3280   DISC BUF 2 SPEC                                     13800
 3281   TRINDEX    RESERVE      15

 3282   L XFR BEGN EQUALS       DISC BUF 1



 3283   MOVE RECD  RT           N,AU1         -             N,S3                MOVE RECORD FROM DISCBUF2 TO DISCBUF 1.
 3285              NA           DISC ADDR     DISCALIM      READ DB2            BRANCH UNLESS JUST EXHAUSTED A TRACK.

 3287              DS           TRACK LOG     ONE P         TRACK LOG           DECREMENT LOG NO. FROM TRACK TO TRACK.
 3289   XFR BEGIN  SWS, C1T4    TRACK LOG     D,6,L         TRINDEX +2
 3290              TS           ZERO          DISC ADDR     DISCAP         C
 3291              OCT          -1                                              LOOKUP TRACK WITH KNOWN LOG NUMBER.
 3293              SPEC                                     TRINDEX
 3294              TS, B7T13    TRINDEX +6    DISC ADDR     C,-2
 3295   SET DTRAP  TS           DF INCOMP     DTRAP LOC     DTRAP LOC -1        SET UP CUSS FOR INCOMPLETE DISCFILE.
 3297              NA, C7T8     TRINDEX +3    SNATRACK      C,-1                GIVE UP QUICK IF FILE IS WRONG TYPE.
 3299              SWS, B7T13   DISC ADDR     0             DISCALIM

 3300   READ DB2   TX           DISC BUF 2    -             Z,X0
 3301              S, DISC READ 0,0           8             DISC ADDR           READ 512 WORDS FROM DISC.
 3303              WA           DISC ADDR     8 BLOX        DISC ADDR
 3304              TX           SAME 8K       -             C,+0                (SPECIAL INITIAL STATE).
 3306   DTRAP LOC  NA           N,R1          ZERO          DO ALT OP           DO TAPE OPS IF WAITING FOR DISC.
 3308              NA, C1T4     1,0           EOR           SAME 8K             BRANCH IF NOT END OF 8K-WORD SUPER-RECD.

 3310              HA           C,-1          130 IN A      C,-1                AUGMENT IS ALTERNATIVELY 0 AND 130.
 3312              LA, B22T25   C,-2          BIT 25 P      MOVE BAK 2          BRANCH IF END OF 8K BUT NOT END OF 16K.
 3314              TS           DISC BUF 2    Z,X1          SAME 8K +1          AFTER 16K, NO INPUT, THEN MOVE, READ.

# Page 220
#      @YUL SYSTEM ASSEMBLER PARA PASS 1                                         USER'S OWN PAGE NO.  10        PAGE  68

P3316   EACH 512-WORD RECORD FROM DISC HAS A COMPLETE 26-CARD INPUT RECORD AND PIECES OF ONE OR TWO MORE.

 3318   MOVE BAK 2 RT           1,132         -             1,130               SINCE TRANSFER HAD PUT 819 CARDS IN 8K.
 3320              TS           FREE EXIT     Z,R7          XFR INPUT           INPUT LAST 26 CARDS IN OLD 8K.
 3322              WD           DISC BUF 2    TWO           Z,AU1
 3323              SM           Z,X1,2        Z,SC,2        -

 3324   SAMKE 8K   TS           FREE EXIT     Z,R7          XFR INPUT           INPUT 26 CARDS (260 WORDS) TO PASS 1.
 3326              TX           DISC BUF 2    -             Z,AU1
 3327              WD           Z,X1          OCT 1000      Z,X1                BECAUSE RECORD IS MOVED BACK 512 WORDS.
 3329              TS           DISC BUF 1    Z,S3          MOVE RECD           CLEAR OUT DISC BUF 2 FOR NEW DISC READ.

R3331   SUBROUTINE TO DELIVER 26 CARDS TO PASS 1 BY WAY OF THE INPUT LIST.

 3332   XFR INPUT  TS           Z,SH          Z,S3          -
 3333              NA           N,R7          BIT 32        GRAB XFER           BRANCH IF THERE IS A FREE BUFFER.

 3335   DO ALT OP  TS           Z,S1          Z,SC          C,+1           C
 3336              LA           Z,S1          ZERO          C,+2           C    BRANCH IF NOT DOING TRANSFERRED ASSY.
 3338              WD           Z,SH          ONE P         Z,S1           S    SET UP S1 FOR RETURN AND DO OTHER OP.
 3340              WD           Z,SH          ONE P         Z,SC           C
 3341              TS           Z,SC          Z,CSC         MON SLEEP      C

 3342   GRAB XFER  TS           N,R7          Z,S2          GRAB REM +1    C
 3343              TS           D12 P         Z,CSH         -              C    REMOVE BUFFER NAME FROM FREE LIST.
 3345   XF SET AU2 TN           ZERO          2             N,S2           S    CLEAR 1ST WORD OF 265-WORD BUFFER.
 3347              MT           N,X1,1        52            N,AU2,1             MOVE 260 WORDS.
 3349              LA           BIT 46        Z,CSH,3       C,-1
 3350              TX           END RUINS     -             N,AU2,1             SET UP SEARCH FOR "END OF" CARD.
 3352              TS           EOR           N,AU2         XF SET AU2     C    MAKE 264-WD BUFF LOOK LIKE ODD TAPE REC.
 3354              NA           N,AU2,10      END RUINS     C,+0
 3355              WD           Z,AU2,1       NINE          Z,AU1
 3356              NA           N,AU1         EOR           END DFILE           BRANCH IF FOUND THE "END OF" CARD.

 3358   DO X INPUT NA           N,R6          ZERO          DO ALT OP           SLEEP OR DO TAPE IF NO ROOM IN INPUTLST.
 3360              TS           Z,S2          N,R6,1        MON WAKE       C    PUT BUFFER IN INPUT STATUS, WAKE PASS 1.
 3362              SS           ZERO          BIT 46        Z,R6                MODULATE INPUT LIST ENTRY POINTER.
 3364              NA           Z,S3          Z,S1          N,S3                EXIT UNLESS JUST SENT LAST INPUT.

 3366              NA           N,R1          ZERO          DO ALT OP           SLEEP OR DO TAPE UNTIL DISC READ DONE.
 3368              TS           ZERO          Z,S1          N,S3                SHOW END OF DISC OPS, EXIT.

 3370   END DFILE  TX           EOR           -             N,AU2               SHORTEN BUFFER CONTAINING "END OF" CARD.
 3372              TS           Z,S1          Z,S3          DO X INPUT          SET FLAG AND DO LAST INPUT.

 3374   DF INCOMP  S, MON TYPER DF INC MSG    SPRA +24      C,+1                "DISCFILE INCOMPLETE (?)".
 3376              TN           END RUINS     5             N,X1
 3377              TN           TRINDEX       2             N,AU2               PHONY UP AN "END OF" CARD.
 3379              SWS, BIT 11  ONE P         11            SWITCH              CALL THIS ASSEMBLY A REJECT.
 3381              TS           END YUL +2    END YUL +1    SAME 8K             SET FLAG FOR END OF RD1.

# Page 221
#      @YUL SYSTEM ASSEMBLER PARA PASS 1                                         USER'S OWN PAGE NO.  11        PAGE  69

P3383   PARAPROGRAM WWT -- PASS 1 -- GROUP C
R3384   ====================================

R3385              THIS PARAPROGRAM IS OPERATED BY GROUP C DURING PASS 1 AND WRITES SYPT AND SYLT SAVE RECORDS ON TAPE 3
R3387   AND BYPT SAVE RECORDS ON TAPE 4, KEEPING THE ORIGINAL BANNERS.  WWT ALSO WRITES POPO RECORDS ON TAPE 2.  AT THE
R3389   END OF PASS 1, TAPES 2 AND 3 ARE REWOUND.



 3390              TS           -             -             MON SLEEP      C
 3391   CH SP LIST LA           N,R6          ZERO          C,-1                GO TO SLEEP IF SAPO LIST IS EMPTY.
 3393              TX           N,R6          -             Z,X2                RECEIVE NAME OF SAPO BUFFER.
 3395              TS           ZERO          N,R6,1        MON WAKE       C    PLANT VOID FLAG IN SAPO LIST.
 3397              SM           Z,R6          BIT 46        Z,R6                MODULATE SAPO LIST EXIT POINTER.
 3399              LA           N,X2          ZERO          WRIT POPO           BRANCH IF SAPO IS A POPO BUFFER.

 3401              TS           TRY PO REM    CH SP LIST    PHI TAPE            SET REMOTE SWITCH TO POPO.
 3403   WRITE SAV  WF,3         2,0           -             DISASTER
 3404              LA           Z,X3          ZERO          C,+2                BRANCH IF THERE IS NO SAVE REMOTE.
 3406              TS           Z,X3          Z,SH          FREE IN SV     C    FREE SAVE REMOTE.
 3408              LA, C5T8     2,0           EOF BANER     LAS2REM1            BRANCH IF NOT END SYLT OR END BYPT.

 3410              WA           WRITE SAV     BIT 6 P       WRITE SAV           CHANGE TAPE 3 TO TAPE 4.
 3412              TS           ZERO          Z,X3          PHI TAPE
 3413              WF,3         2,0           -             DISASTER            WRITE END-OF-FILE RECORD AGAIN.
 3415              WA           DUMMY SAV     BIT 6 P       DUMMY SAV
 3416              TS           WRITE SAV     C,-2          PHI TAPE
 3417              WF,3         -             -             DISASTER
 3418   FREE EOF   TS           Z,X2          Z,SH          FREE IN SV     C    FREE END-OF-FILE BUFFER.
 3420              TS           DUMMY SAV     C,-2          PHI TAPE
 3421              RW,3         -             -             -
 3422              TS           C,+1          FREE EOF +1   CH SP LIST          CHANGE POST-EOF ACTION AND LOOP.
 3424              TS           ZERO          W34 WAIT      WR2 WAIT            END OF W34 SECTION OF WWT.

 3426   SAV REMOT  LA           Z,X3          ZERO          CH SP LIST -1       GO TO SLEEP IF NEITHER TYPE OF REMOTE.
 3428              LA           Z,X3          ZERO          PO REMOT            BRANCH IF NO SAVE REMOTE.
 3430              TS           TRY PO REM    CH SP LIST    PHI TAPE            SET REMOTE SWITCHG TO POPO.
 3432   DUMMY SAV  WF,3         -             -             DISASTER
 3433              TS           Z,X3          Z,SH          FREE IN SV     C
 3434              TS           ZERO          Z,X3          CH SP LIST          FREE SAVE REMOTE & SHOW LACK THEROF.

 3436   TRY SA MEM LA           N,R6          ZERO          SAV REMOT +1        BRANCH IF SAPO LIST IS EMPTY.
 3438   LAS2REM1   TS           Z,X2          Z,X3          CH SP LIST

# Page 222
#      @YUL SYSTEM ASSEMBLER PARA PASS 1                                         USER'S OWN PAGE NO.  12        PAGE  70

P3439   PROCEDURE IN PARAPROGRAM WWT TO DISPATCH A POPO BUFFER.

 3440   WRIT POPO  TS           TRY SA REM    CH SP LIST    PHI TAPE            SET REMOTE SWITCH TO SAVE.
 3442              WF,2         2,0           -             DISASTER
 3443              LA           Z,X4          ZERO          C,+2                BRANCH IF THERE IS NO POPO REMOTE.
 3445              TS           Z,X4          Z,SH          SET FREE       C    FREE POPO REMOTE.
 3447              NA           2,2           W END POPO    LAS2REM2            BRANCH IF NOT END OF TAPE.

 3449              TS           ZERO          Z,X4          PHI TAPE
 3450              WF,2         -             -             DISASTER
 3451              TS           Z,X2          Z,SH          SET FREE       C    FREE END POPO BUFFER.
 3453              TS           TRY SA REM    CH SP LIST    PHI TAPE            SET REMOTE SWITCH TO SAVE MODE.
 3455              RW,2         -             -             -
 3456              TS           WR2 WAIT +1   WR2 WAIT      W34 WAIT            END OF WR2 SECTION OF WWT.

 3458   PO REMOT   LA           Z,X4          ZERO          CH SP LIST -1       BRANCH IF NEITHER TYPE OF REMOTE.
 3460              LA           Z,X4          ZERO          SAV REMOT           BRANCH IF THERE IS NO POPO REMOTE.
 3462              TS           TRY SA REM    CH SP LIST    PHI TAPE            SET REMOTE SWITCH TO SAVE MODE.
 3464              WF,2         -             -             DISASTER
 3465              TS           Z,X4          Z,SH          SET FREE       C
 3466              TS           ZERO          Z,X4          CH SP LIST          FREE POPO REMOTE & SHOW LACK THEREOF.

 3468   TRY PO REM LA           N,R6          ZERO          PO REMOT +1         BRANCH IF SAPO LIST IS EMPTY.
 3470   LAS2REM2   TS           Z,X2          Z,X4          CH SP LIST          LAST POPO BECOMES POPO REMOTE.

 3472   W34 WAIT   TS           -             -             CH SP LIST
 3473   WR2 WAIT   TS           -             -             CH SP LIST
 3474              TS, CAC3R    ZERO          END PARAS     DEAD STOP



 34745 *PARA PACH  RESERVE      10



R3475   INITIALIZING SEQUENCES FOR PARAPROGRAMS.

 3477   PASS 1 GPB HA           P1 MASKS      ONE P         Z,MXR               SIDE GRPS USE SAME S, INVERSE F AS GP A.
 3479              TN           SUBSTRAB      2             TRINDEX             DISC FILE NAME OF TRANSFERRED INPUT.
 3481              EBA          Z,X7          BIT 46        Z,X1                PRETEND X1 IS LOOKING AT AN END-BUFFLAG.
 3483              TN           L DO DELET    5             Z,R2                LOAD ADDRESSES FOR INSTANT BRANCHING.
 3485              SSL, ONE     SWITCH        35            C,+1
 3486              TS           ZERO          Z,S1          C,+2                SHOW THAT THERE IS NO TRANSFERRED INPUT.
 3488              SWE, CAC3    L XFR BEGN    16            Z,S1                SHOW TAPE ROUTINES WHERE TO GO FOR DISC.
 3490              TX           INIT X5       -             Z,X5                SET X5 TO R2, +-R3, OR R4 OF GROUP B.
 3492              EBS          Z,X7          OCT 200       Z,R1
 3493              SWE, B38T48  DISC CHEK     24            C,+0                GET A ADDRESS OF ORDER IN XFER VECTOR.
 3495              EBA          Z,R1          C,-1          Z,R1
 3496              EBA          N,R1          THREE P       Z,R1                POINT TO DFLOK (DISC FILE LOCK) IN MON.
 3498              TS           SORS NAME     WANTED        CH NEX BUF          BEGIN READING TAPE 1.

 3501   PASS 1 GPC TS           SAPO NTRY     Z,R6          PASS1 GPB      C    LOAD BUFFER LIST ADDRESS AND MXR.
 3503              TS           ZERO          Z,X4          DUMMY SAV +2        INITIALIZE REMOTE SWITCH AND BEGIN.
back to top