YUL_SYSTEM_ASSEMBLER_PARA_PASS_2.argus
# Copyright: Public domain.
# Filename: YUL_SYSTEM_ASSEMBLER_PARA_PASS_2.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: 332-334
# Mod history: 2016-10-06 JL Created.
# 2016-12-20 JL Transcribed pages 332-334.
# 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 2
# Page 332
# @YUL SYSTEM ASSEMBLER PARA PASS 2 USER'S OWN PAGE NO. 1 PAGE 68
R3300 ASSIGNMENTS, CONSTANTS, AND INITIALIZING FOR PASS 2 PARAPROGRAMS. WE ARE INDEBTED AS USUAL TO JOHN SHAW FOR
R33002 JSOCTL
3301 SETLOC, 2 1152 B7
3302 NEXT NAME ASSIGN 6,1
3303 SWITCH ASSIGN 6,2
3304 MID POINT ASSIGN 6,40
3305 E SYLT BAN ASSIGN 6,43
3306 COMPUTER ASSIGN 6,53
3307 ZERO ASSIGN 6,69
3308 BIT 45 NOT ASSIGN 6,70
3309 BIT 46 ASSIGN 6,71
3310 FREE EXIT ASSIGN 6,72
3311 SYPT NTRY ASSIGN 6,73
3312 L CUS LIST ASSIGN 6,74
3313 GENL MXR ASSIGN 6,75
3314 CONTINUE ASSIGN 6,76
3315 MAY MERGE ASSIGN 6,77
3316 END PARAS ASSIGN 6,78
3317 LYST SYPT ASSIGN 6,79
3318 DISASTER ASSIGN 6,80
3319 CSC SLEEP ASSIGN 6,82
3320 RELS OR RW ASSIGN 6,84
3321 GRAB FREE ASSIGN 6,86
3322 FREE NTRY OCT -133760
3323 W END SYLT ALF END SYLT
3324 L BANK 1 SPEC,B1 DAMN ZERO
3325 PASS 2 GPC TX L BANK 1 - Z,X6 INITIAL CODING FOR WR1 IN GROUP C.
3327 TS SYPT NTRY Z,R1 LD X1 C SET UP SYPT LIST ENTRY POINTER.
3329 SM MID POINT BIT 33 Z,X4 FORM RECORD COUNT FOR YULPROGS.
3331 TS GENL MXR Z,MXR WR1 BEGIN
3332 PASS2 GPB TX L BANK 1 - Z,X6 INITIAL CODING FOR RD3 IN GROUP B.
3334 LD X1 TX L CUS LIST - Z,X1 S
3335 HA GENL MXR ONE Z,MXR USE SAME S, INVERSE F AS GROUP A.
# Page 333
# @YUL SYSTEM ASSEMBLER PARA PASS 2 USER'S OWN PAGE NO. 2 PAGE 69
P3337 PARAPROGRAM RD3 -- PASS 2 -- GROUP B
R3338 ------------------------------------
R3339 THIS PARAPROGRAM OPERATES IN GROUP B DURING PASS 2 AND READS SYPTSAVES AND SYLTSAVES FROM TAPE 3.
R3341 TAPE 3 IS REWOUND OR RELEASED AFTER END SYLTS ARE READ. PASS 1 SETS NEXTNAME TO THE NAME OF THE PROGRAM WHOSE
R3343 FIRST RECORD MAY NOT BE DELIVERED TO WR1 UNTIL ALL OF THE MAIN PART OF THE PROGRAM BEING ASSEMBLED HAS BEEN
R3345 DELIVERED. MERJ WAIT IS A SLEEP ORDER IN PASS 2 USED IN SUBROUTINE ASSEMBLY TO PREVENT DELIVERY OF ANY MAIN
R3347 SYLT UNTIL ALL PRECEDING SYLTSAVES HAVE BEEN DELIVERED. CONTINUE IS CHANGED TO A PROCEED AS SOON AS ALL MAIN
R3349 SYPTS OR SYLTS HAVE BEEN DELIVERED TO WR1.
3350 CH NEX BUF TS Z,X2 Z,X3 GRAB FREE C
3351 TS Z,AU1 Z,X2 PHI TAPE
3352 RF,3 2,0 - DISASTER READ A SAVED SYPT OR SYLT RECORD.
3354 CH REM BUF TS FREE EXIT Z,R4 -
3355 SSL, ONE N,R4 16 C,+1 BRANCH IF THERE ARE NO MORE FREE BUFFERS
3357 TS N,R4 Z,X3 GRAB REMO
3358 LA Z,X3 ZERO CHECK EOF GIVE UP AFTER TWO FAILURES.
3360 TS ZERO Z,X3 PHI TAPE
3361 RF,3 - - DISASTER STALL FOR NEXT BUFFER.
3363 TS FREE EXIT Z,R4 CH REM BUF +1 TRY AGAIN.
3365 GRAB REMO TS Z,SC Z,AU2 GRAB FREE +5 C GRAB BUFFER FOR REMOTE RECORD.
3367 TS - - PHI TAPE
3368 RF,3 3,0 - DISASTER
3369 CHECK EOF NA 2,1 W END SYLT CHEK NEXT BRANCH IF NOT END OF SYPT OR SYLT.
3371 LA Z,X3 ZERO CHEK NEXT -3 BRANCH IF THERE IS NO REMOTE.
3373 TS - - PHI TAPE
3374 RF,3 - - DISASTER
3375 TS Z,X3 Z,SH FREE BUFF C FREE REMOTE BUFFER.
3377 TX DELIVER +3 - DELIVER +1
3378 SSL, ONE SWITCH 44 RELS OR RW C RELEASE OR REWIND TAPE 3, AS REQUIRED.
3380 RW,3 - - -
3381 CHEK NEXT NA 2,1 NEXT NAME DELIVER BRANCH IF WE MAY DELIVER SAVES NOW.
3383 LA N,X2 C5T8 C,+2 ASSUME AGREEMENT IF NO COMPUTER NAME.
3385 NA, C1T4 2,0 COMPUTER DELIVER BRANCH TO DELIVER IF WRONG COMPUTER NAME
3387 TS ZERO MAY MERGE MON WAKE C PERMIT DELIVERY OF MAIN SYLTS FROM YP2.
3389 TS EOR NEXT NAME C,+2 ENSURE DELIVERY AFTER THIS.
3391 TS - - MON SLEEP C
3392 LA CAC3 CONTINUE C,-1
3393 DELIVER TS Z,X2 Z,AU2 LYST SYPT C PUT BUFFER INTO SYPT STATUS.
3395 LA Z,X3 ZERO CH NEX BUF BRANCH IF THERE IS NO REMOTE.
3397 TS Z,X3 Z,X2 CH REM BUF REMOTE BUFFER BECOMES NEXT.
3399 TS, C1T4 ZERO END PARAS DEAD STOP (REPLACES DELIVER+1 AT END).
# Page 334
# @YUL SYSTEM ASSEMBLER PARA PASS 2 USER'S OWN PAGE NO. 3 PAGE 70
P3401 PARAPROGRAM WR1 -- PASS 2 -- GROUP C
R3402 ------------------------------------
R3403 THIS PARAPROGRAM OPERATES IN GROUP C DURING PASS 2 AND WRITES SYPTS AND SYLTS, WITH THEIR END-OF-FILE
R3405 RECORDS, ON TAPE 1. WR1 RE-BANNERS THE RECORDS IT WRITES, USING ITS Z,X4 WHICH MUST BE INITIALIZED FROM THE
R3407 MIDPOINT NUMBER KEPT IN PASS 1.
3408 NO SYP EOF TS Z,X2 Z,X3 CHEK SYPT LAST BECOMES REMOTE.
3410 TS - - MON SLEEP C SLEEP UNTIL SOMEONE PREPARES A RECORD.
3412 CHEK SYPT LA N,R1 ZERO WR1 REMOT BRANCH IF NO RECORDS READY.
3414 TX N,R1 - Z,X2
3415 TS ZERO N,R1,1 MON WAKE C REMOVE BUFFER FROM SYPT STATUS.
3417 SM Z,R1 BIT 46 Z,R1 MODULATE SYPT LIST EXIT POINTER.
3419 RT 2,6 - - FIND THE END-OF-RECORD WORD.
3421 WD Z,AU1 THREE Z,CSH BACK UP TO ORTHOWORD 1.
3423 SS Z,X4,1 SPEC MAG N,X2 INSERT NEW RECORD COUNT IN BANNER WORD.
3425 CC N,X2 - N,CSH CORRECT ORTHOWORD FOR NEW BANNER.
3427 NA, BIT11 SWITCH ZERO C,+3 NO WRITE IF REPRINT OR BAD MERGE.
3429 TS, CHAR8 ONE 0 PHI TAPE ENSURE THAT BACKUP IS MADE AT ENDJOB.
3431 WF,1 2,0 - DISASTER MAIN WRITE ORDER FOR WR1.
3433 LA Z,X3 ZERO C,+2 BRANCH IF THERE IS NO REMOTE.
3435 TS Z,X3 Z,SH FREE BUFF C FREE REMOTE BUFFER.
3437 NA 2,1 W END SYLT NO SYP EOF BRANCH IF THAT WAS NOT END SYLT.
3439 NA, BIT11 SWITCH ZERO C,+3 NO WRITE IF REPRINT OR BAD MERGE.
3441 TS - - PHI TAPE
3442 WF,1 - - DISASTER
3443 TS Z,X2 Z,SH FREE BUF C FREE END SYLT BUFFER.
3445 TX Z,X4 - ESYLT BAN SAVE SERIAL NUMBER FOR PASS 3.
3447 TS, C5T8 ZERO END PARAS DEAD STOP
3448 WR1 REMOT LA Z,X3 ZERO CHEK SYPT -1 GO TO SLEEP IF THERE IS NO REMOTE.
3450 NA, BIT11 SWITCH ZERO C,+3 NO WRITE IF REPRINT OR BAD MERGE.
3452 TS - - PHI TAPE
3453 WF,1 - - DISASTER STALL FOR REMOTE.
3455 TS Z,X3 Z,SH FREE BUFF C FREE REMOTE BUFFER.
3457 WR1 BEGIN TS ZERO Z,X3 CHEK SYPT TRY AGAIN AFTER STALLING.
R3459 SEQUENCE-TO-COSEQUENCE SUBROUTINE TO FREE THE BUFFER WHOSE NAME IS IN SH, AND WAKE UP ANY SLEEPERS.
3461 FREE BUFF TS FREE NTRY Z,R4 - C GET FREE LIST ENTRY POINTER.
3463 TS Z,SH N,R4,1 - C PUT BUFFER NAME INTO FREE LIST.
3465 EX Z,R4 BIT 45 NOT FREE NTRY C MODULATE FREE LIST ENTRY POINTER.
3467 TS Z,SC Z,CSC MON WAKE C WAKE SLEEPERS AND EXIT.
R3469 FINAL STOP FOR PARAPROGRAMS.
34695 DEAD STOP PR EXTRA HUNT FOR MONITOR PECULIARITY.
3470 TS Z,R0 Z,SC MON WAKE C