From 95475a353ea62853ae86a7223efdb831f5b97d51 Mon Sep 17 00:00:00 2001 From: cai Date: Mon, 28 May 2018 10:03:11 +0800 Subject: [PATCH] Proof WAITLIST (#274) (#330) Proof WAITLIST (#274) --- Comanche055/WAITLIST.agc | 130 ++++++++++++++++++++------------------- 1 file changed, 68 insertions(+), 62 deletions(-) diff --git a/Comanche055/WAITLIST.agc b/Comanche055/WAITLIST.agc index 72abde0..8a73bce 100644 --- a/Comanche055/WAITLIST.agc +++ b/Comanche055/WAITLIST.agc @@ -28,15 +28,15 @@ # Colossus 2A # Page 1221 -# PROGRAM DESCRIPTION DATE -- 10 OCTOBER 1966 -# MOD NO -- 2 LOG SECTION -- WAITLIST -# MOD BY -- MILLER (DTMAX INCREASED TO 162.5 SEC) ASSEMBLY -- SUNBURST REV 5 +# PROGRAM DESCRIPTION DATE - 10 OCTOBER 1966 +# MOD NO - 2 LOG SECTION - WAITLIST +# MOD BY - MILLER (DTMAX INCREASED TO 162.5 SEC) ASSEMBLY SUNBURST REV 5 # MOD 3 BY KERNAN (INHINT INSERTED AT WAITLIST) 2/28/68 SKIPPER REV 4 -# MOD 4 BY KERNAN (TWIDDLE IN 54) 3/28/68 SKIPPER REV 13. +# MOD 4BY KERNAN (TWIDDLE IN 54) 3/28/68 SKIPPER REV 13. # -# FUNCTIONAL DESCRIPTION -- -# PART OF A SECTION OF PROGRAMS -- WAITLIST, TASKOVER, T3RUPT, USED TO CALL A PROGRAM (CALLED A TASK), -# WHICH IS TO BEGIN IN C(A) CENTISECONDS. WAITLIST UPDATES TIME3, LST1, AND LST2. THE MEANING OF THESE LISTS +# FUNCTIONAL DESCRIPTION- +# PART OF A SECTION OF PROGRAMS,-WAITLIST, TASKOVER, T3RUPT, USED TO CALL A PROGRAM, (CALLED A TASK), +# WHICH IS TO BEGIN IN C(A) CENTISECONDS. WAITLIST UPDATES TIME3, LST1 AND LST2. THE MEANING OF THESE LISTS # FOLLOW. # # C(TIME3) = 16384 -(T1-T) CENTISECONDS, (T=PRESENT TIME, T1-TIME FOR TASK1) @@ -54,59 +54,68 @@ # C(LST2 +14) = 2CADR OF TASK8 # C(LST2 +16) = 2CADR OF TASK9 # -# WARNINGS -- +# WARNINGS- +# -------- # 1) 1 <= C(A) <= 16250D (1 CENTISECOND TO 162.5 SEC) # 2) 9 TASKS MAXIMUM # 3) TASKS CALLED UNDER INTERRUPT INHIBITED # 4) TASKS END BY TC TASKOVER # -# CALLING SEQUENCE -- +# CALLING SEQUENCE- +# # L-1 CA DELTAT (TIME IN CENTISECONDS TO TASK START) # L TC WAITLIST # L+1 2CADR DESIRED TASK # L+2 (MINOR OF 2CADR) # L+3 RELINT (RETURNS HERE) # -# TWIDDLE -- +# TWIDDLE- +# ------- # TWIDDLE IS FOR USE WHEN THE TASK BEING SET UP IS IN THE SAME EBANK AND FBANK AS THE USER. IN # SUCH CASES, IT IMPROVES UPON WAITLIST BY ELIMINATING THE NEED FOR THE BBCON HALF OF THE 2CADR, # Page 1222 -# SAVING A WORD. TWIDDLE IS LIKE WAITLIST IN EVERY RESPECT EXCEPT CALLING SEQUENCE, TO WIT, +# SAVING A WORD. TWIDDLE IS LIKE WAITLIST IN EVERY RESPECT EXCEPT CALLING SEQUENCE, TO WIT- +# # L-1 CA DELTAT # L TC TWIDDLE # L+1 ADRES DESIRED TASK # L+2 RELINT (RETURNS HERE) # -# NORMAL EXIT MODES -- -# AT L+3 OF CALLING SEQUENCE. +# NORMAL EXIT MODES- +# +# AT L+3 OF CALLING SEQUENCE +# +# ALARM OR ABORT EXIT MODES- # -# ALARM OR ABORT EXIT MODES -- # TC ABORT -# OCT 1203 (WAITLIST OVERFLOW -- TOO MANY TASKS) +# OCT 1203 (WAITLIST OVERFLOW - TOO MANY TASKS) # -# ERASABLE INITIALIZATION REQUIRED -- -# ACCOMPLISHED BY FRESH START -- LST2, ..., LST2 +16 = ENDTASK -# LST1, ..., LST1 +7 = NEG1/2 +# ERASABLE INITIALIZATION REQUIRED- +# +# ACCOMPLISHED BY FRESH START,-- LST2,..., LST2 +16 =ENDTASK +# LST1,..., LST1 +7 =NEG1/2 +# +# OUTPUT-- # -# OUTPUT -- # LST1 AND LST2 UPDATED WITH NEW TASK AND ASSOCIATED TIME. +# DEBRIS- +# CENTRALS- A,Q,L +# OTHER - WAITEXIT, WAITADR, WAITTEMP, WAITBANK +# DETAILED ANALYSIS OF TIMING- # -# DEBRIS -- -# CENTRALS -- A,Q,L -# OTHER -- WAITEXIT, WAITADR, WAITTEMP, WAITBANK -# -# DETAILED ANALYSIS OF TIMING -- # CONTROL WILL NOT BE RETURNED TO THE SPECIFIED ADDRESS (2CADR) IN EXACTLY DELTA T CENTISECONDS. -# THE APPROXIMATE TIME MAY BE CALCULATED AS FOLLOWS: +# THE APPROXIMATE TIME MAY BE CALCULATED AS FOLLOWS +# # LET T0 = THE TIME OF THE TC WAITLIST # LET TS = T0 +147U + COUNTER INCREMENTS (SET UP TIME) # LET X = TS -(100TS)/100 (VARIANCE FROM COUNTERS) # LET Y = LENGTH OF TIME OF INHIBIT INTERRUPT AFTER T3RUPT # LET Z = LENGTH OF TIME TO PROCESS TASKS WHICH ARE DUE THIS T3RUPT BUT DISPATCHED EARLIER. -# (Z=0, USUALLY). +# (Z=0, USUALLY) # LET DELTD = THE ACTUAL TIME TAKEN TO GIVE CONTROL TO 2CADR -# THEN DELTD = TS+DELTA T -X +Y +Z +1.05MS* +COUNTERS* -# *THE TIME TAKEN BY WAITLIST ITSELF AND THE COUNTER TICKING DURING THIS WAITLIST TIME. +# THEN DELTD = TS+DELTA T -X +Y +Z +1.05MS* +COUNTERS* +# *THE TIME TAKEN BY WAITLIST ITSELF AND THE COUNTER TICKING DURING THIS WAITLIST TIME. +# # IN SHORT, THE ACTUAL TIME TO RETURN CONTROL TO A 2CADR IS AUGMENTED BY THE TIME TO SET UP THE TASK'S # INTERRUPT, ALL COUNTERS TICKING, THE T3RUPT PROCESSING TIME, THE WAITLIST PROCESSING TIME AND THE POSSIBILITY # OF OTHER TASKS INHIBITING THE INTERRUPT. @@ -154,8 +163,7 @@ WAITBB BBCON WAIT2 # RETURN TO CALLER +2 AFTER WAITING DT SPECIFIED AT CALLER +1. FIXDELAY INDEX Q # BOTH ROUTINES MUST BE CALLED UNDER - # Was CAF --- RSB 2004. - CA 0 # WAITLIST CONTROL AND TERMINATE THE TASK + CAF 0 # WAITLIST CONTROL AND TERMINATE THE TASK INCR Q # IN WHICH THEY WERE CALLED. # RETURN TO CALLER +1 AFTER WAITING THE DT AS ARRIVING IN A. @@ -171,7 +179,7 @@ VARDELAY XCH Q # DT TO Q. TASK ADRES TO WAITADR. TS WAITEXIT # GO TO TASKOVER AFTER TASK ENTRY. TCF DLY2 -DELAYEX TCF TASKOVER -2 # RETURNS TO TASKOVER. +DELAYEX TCF TASKOVER -2 # RETURNS TO TASKOVER # Page 1225 # ENDTASK MUST ENTERED IN FIXED-FIXED SO IT IS DISTINGUISHABLE BY ITS ADRES ALONE. @@ -179,6 +187,7 @@ DELAYEX TCF TASKOVER -2 # RETURNS TO TASKOVER. EBANK= LST1 ENDTASK -2CADR SVCT3 + SVCT3 CCS FLAGWRD2 # DRIFT FLAG TCF TASKOVER TCF TASKOVER @@ -201,7 +210,7 @@ SVCT3 CCS FLAGWRD2 # DRIFT FLAG SVCT3X TC FIXDELAY # DELAY MAX OF 2 TIMES FOR IMU ZERO DEC 500 - TC SVCT3 + TC SVCT3 # CHECK DRIFT FLAG AGAIN # Page 1226 # BEGIN TASK INSERTION. @@ -225,7 +234,7 @@ WAIT2 TS WAITBANK # BBANK OF CALLING PROGRAM. AD OCT40201 AD Q # RESULT = TD - T1 + 1. - CCS A # TEST TD - T1 +1. + CCS A # TEST TD - T1 + 1 AD LST1 # IF TD - T1 POS, GO TO WTLST5 WITH TCF WTLST5 # C(A) = (TD - T1) + C(LST1) = TD-T2+1 @@ -327,7 +336,7 @@ WTLST5 CCS A # TEST TD - T2 + 1 OCT 7 +4 CCS A -WTABORT TC BAILOUT # NO ROOM IN THE INN +WTABORT TC BAILOUT # NO ROOM IN THE INN. OCT 1203 AD ONE @@ -337,7 +346,7 @@ WTABORT TC BAILOUT # NO ROOM IN THE INN OCT40201 OCT 40201 # Page 1230 -# THE ENTRY TC WTLST2 JUST PRECEDING OCT N IS FOR T LE TD LE T -1. +# THE ENTRY TO WTLST2 JUST PRECEDING OCT N IS FOR T LE TD LE T -1. # N N+1 # # (LE MEANS LESS THAN OR EQUAL TO). AT ENTRY, C(A) = -(TD - T + 1) @@ -349,10 +358,9 @@ OCT40201 OCT 40201 # THE ENTRY-(T - TD + 1) IS TO BE INSERTED IMMEDIATELY FOLLOWING. # N+1 -WTLST2 TS WAITTEMP # C(A) = -(TD - T + 1) +WTLST2 TS WAITTEMP # C(A) = -(TD - T + 1) INDEX Q - # Was CAF --- RSB 2004. - CA 0 + CAF 0 TS Q # INDEX VALUE INTO Q. CAF ONE @@ -383,7 +391,7 @@ T3RUPT2 CAF NEG1/2 # DISPATCH WAITLIST TASK. XCH LST1 +1 # INTERVAL 81.91 SEC FOR ENDTASK. XCH LST1 AD POSMAX # 2. SET T3 = 1.0 - T2 - T USING LIST 1. - ADS TIME3 # SO T3 WON'T TICK DURING UPDATE. + ADS TIME3 # SO T3 WONT TICK DURING UPDATE. TS RUPTAGN CS ZERO TS RUPTAGN # SETS RUPTAGN TO +1 ON OVERFLOW. @@ -431,42 +439,43 @@ NOQBRSM DXCH ARUPT # Page 1233 # LONGCALL -# PROGRAM DESCRIPTION DATE -- 17 MARCH 1967 -# PROGRAM WRITTEN BY W.H.VANDEVER LOG SECTION WAITLIST -# MOD BY -- R. MELANSON TO ADD DOCUMENTATION ASSEMBLY SUNDISK REV. 100 # -# FUNCTIONAL DESCRIPTION -- -# LONGCALL IS CALLED WITH THE DELTA TIME ARRIVING IN A,L SCALED AS TIME2,TIME1 WITH THE 2CADR OF THE TASK -# IMMEDIATELY FOLLOWING THE TC LONGCALL. FOR EXAMPLE, IT MIGHT BE DONE AS FOLLOWS WHERE TIMELOC IS THE NAME OF -# A DP REGISTER CONTAINING A DELTA TIME AND WHERE TASKTODO IS THE NAME OF THE LOCATION AT WHICH LONGCALL IS TO -# START. +# PROGRAM DESCRIPTION DATE- 17 MARCH 1967 +# PROGRAM WRITTEN BY W.H. VANDEVER LOG SECTION WAITLIST +# MOD BY- R. MELANSON TO ADD DOCUMENTATION ASSEMBLY SUNDISK REV. 100 # -# CALLING SEQUENCE -- +# FUNCTIONAL DESCRIPTION- +# LONGCALL IS CALLED WITH THE DELTA TIME ARRIVING IN A,L SCALED AS TIME2,TIME1 WITH THE 2CADR OF THE TASK +# IMMEDIATELY FOLLOWING THE TC LONGCALL. FOR EXAMPLE, IT MIGHT BE DONE AS FOLLOWS WHERE TIMELOC IS THE NAME OF +# A DP REGISTER CONTAINING A DELTA TIME AND WHERE TASKTODO IS THE NAME OF THE LOCATION AT WHICH LONGCALL IS TO +# START +# +# CALLING SEQUENCE- # EXTEND # DCA TIMELOC # TC LONGCALL # 2CADR TASKTODO # -# NORMAL EXIT MODE -- -# 1) TC WAITLIST -# 2) DTCB (TC L+3 OF CALLING ROUTINE 1ST PASS THRU LONGCYCL) -# 3) DTCB (TO TASKOVER ON SUBSEQUENT PASSES THRU LONGCYCL) +# NORMAL EXIT MODE- +# 1). TC WAITLIST +# 2). DTCB (TC L+3 OF CALLING ROUTINE 1ST PASS THRU LONGCYCL) +# 3). DTCB (TO TASKOVER ON SUBSEQUENT PASSES THRU LONGCYCL) # -# ALARM OR ABORT EXIT MODE -- +# ALARM OR ABORT EXIT MODE- # NONE # -# OUTPUT -- +# OUTPUT- # LONGTIME AND LONGTIME+1 = DELTA TIME # LONGEXIT AND LONGEXIT+1 = RETURN 2CADR # LONGCADR AND LONGCADR+1 = TASK 2CADR # A = SINGLE PRECISION TIME FOR WAITLIST # -# ERASABLE INITIALIZATION -- +# ERASABLE INITIALIZATION- # A = MOST SIGNIFICANT PART OF DELTA TIME # L = LEAST SIGNIFICANT PART OF DELTA TIME # Q = ADDRESS OF 2CADR TASK VALUE # -# DEBRIS -- +# DEBRIS- # A,Q,L # LONGCADR AND LONGCADR+1 # LONGEXIT AND LONGEXIT+1 @@ -484,7 +493,7 @@ LONGCALL DXCH LONGTIME # OBTAIN THE DELTA TIME DCA 0 DXCH LONGCADR - EXTEND # NO GO TO THE APPROPRIATE SWITCHED BANK + EXTEND # NOW GO TO THE APPROPRIATE SWITCHED BANK DCA LGCL2CDR # FOR THE REST OF LONGCALL DTCB @@ -502,7 +511,6 @@ LNGCALL2 LXCH LONGEXIT +1 # SAVE THE CORRECT BB FOR RETURN TS LONGEXIT # *** WAITLIST TASK LONGCYCL *** - LONGCYCL EXTEND # CAN WE SUCCESFULLY TAKE ABOUT 1.25 DCS DPBIT14 # MINUTES OFF OF LONGTIME DAS LONGTIME @@ -514,7 +522,7 @@ LONGCYCL EXTEND # CAN WE SUCCESFULLY TAKE ABOUT 1.25 # DO NOT SIGN CORRECT) AND THAT WE SUBTRAC- # TED BIT14 (1 OVER HALF THE POS. VALUE # REPRESENTABLE IN SINGLE WORD) - NOOP # CAN'T GET HERE ************* + NOOP # CAN'T GET HERE ********** TCF +1 CCS LONGTIME TCF MUCHTIME @@ -538,13 +546,11 @@ MUCHTIME CA BIT14 # WE HAVE OVER OUR ABOUT 1.25 MINUTES EBANK= LST1 2CADR LONGCYCL + TCF LONGRTRN # NOW EXIT PROPERLY # *** WAITLIST TASK GETCADR *** - GETCADR DXCH LONGCADR # GET THE LONGCALL THAT WE WISHED TO START DTCB # AND TRANSFER CONTROL TO IT TSKOVCDR GENADR TASKOVER - -