User Tools

Site Tools


cdc:nos2.source:opl.opl871:deck:sxkd.001

Deck SXKD Part 001

2 Modifications

Listing Sections

Source

Seq #  *Modification Id* Act 
----------------------------+
01825  M01S01296.sxkd    +++|#
01826  M01S01297.sxkd    +++|
01827  M01S01298.sxkd    +++|          I = PAR$FWD[PI];           # WORD OFFSET #
01828  M01S01299.sxkd    +++|          PFIELDI[0] = B<PAR$FBIT[PI],PAR$FLEN[PI]>PARAM$WD[I];
Line S01300 Modification History
M01 (Added by) sxkd
M02 (Updated by) sxkd2
Seq #  *Modification Id* Act 
----------------------------+
01829  M02S01300.sxkd2   ---|          PRESULT = PFIELDC[0];
01830  M01S00529.sxkd2   +++|#
01831  M01S00530.sxkd2   +++|*     CONVERT TO CHARACTER DISPLAY IF SPECIFIED.
01832  M01S00531.sxkd2   +++|#
01833  M01S00532.sxkd2   +++|
01834  M01S00533.sxkd2   +++|          IF PAR$CONV[PI] EQ ALF
01835  M01S00534.sxkd2   +++|          THEN
01836  M01S00535.sxkd2   +++|            BEGIN  # ALF #
01837  M01S00536.sxkd2   +++|            PRESULT = PFIELDC[0];
01838  M01S00537.sxkd2   +++|            BZFILL(PRESULT,TYPFILL"BFILL",10);  # BLANK FILL PARAM #
01839  M01S00538.sxkd2   +++|            END  # ALF #
01840  M01S01301.sxkd    +++|
01841  M01S01302.sxkd    +++|#
01842  M01S01303.sxkd    +++|*     CONVERT TO DECIMAL DISPLAY IF SPECIFIED.
01843  M01S01304.sxkd    +++|#
01844  M01S01305.sxkd    +++|
01845  M01S01306.sxkd    +++|          IF PAR$CONV[PI] EQ DEC
01846  M01S01307.sxkd    +++|          THEN
01847  M01S01308.sxkd    +++|            BEGIN
01848  M01S01309.sxkd    +++|            PRESULT = XCDD(PFIELDI[0]);
01849  M01S01310.sxkd    +++|            END
01850  M01S01311.sxkd    +++|
01851  M01S01312.sxkd    +++|#
01852  M01S01313.sxkd    +++|*     CONVERT TO OCTAL DISPLAY IF SPECIFIED.
01853  M01S01314.sxkd    +++|#
01854  M01S01315.sxkd    +++|
01855  M01S01316.sxkd    +++|          IF PAR$CONV[PI] EQ OCTL
01856  M01S01317.sxkd    +++|          THEN
01857  M01S01318.sxkd    +++|            BEGIN
01858  M01S01319.sxkd    +++|            PRESULT = XCOD(PFIELDI[0]);
01859  M01S01320.sxkd    +++|            END
01860  M01S01321.sxkd    +++|
01861  M01S01322.sxkd    +++|
01862  M01S01323.sxkd    +++|#
01863  M01S01324.sxkd    +++|*     MOVE PARAMETER VALUE INTO TEXT.
01864  M01S01325.sxkd    +++|#
01865  M01S01326.sxkd    +++|
01866  M01S01327.sxkd    +++|          C<TO,PAR$TSIZ[PI]>TCOPY =  ##
01867  M01S01328.sxkd    +++|            C<10-PAR$TSIZ[PI],PAR$TSIZ[PI]>PRESULT;
01868  M01S01329.sxkd    +++|          TO = TO + PAR$TSIZ[PI];
01869  M01S01330.sxkd    +++|
01870  M01S01331.sxkd    +++|          FR = FR + 3;               # ADVANCE PAST PARAMETER CODE #
01871  M01S01332.sxkd    +++|          TEST DUMMY;
01872  M01S01333.sxkd    +++|          END  # PROCESS PARAMETER #
01873  M01S01334.sxkd    +++|
01874  M01S01335.sxkd    +++|        END  # TRANSFER *K* DISPLAY TEXT #
01875  M01S01336.sxkd    +++|
01876  M01S01337.sxkd    +++|      TEXT = TCOPY;                  # RETURN NEW TEXT #
01877  M01S01338.sxkd    +++|
01878  M01S01339.sxkd    +++|      END  # KPFILL #
01879  M01S01340.sxkd    +++|
01880  M01S01341.sxkd    +++|    TERM
01881  M01S01342.sxkd    +++|PROC KPROC;
01882  M01S01343.sxkd    +++|
01883  M01S01344.sxkd    +++|# TITLE KPROC - *K* DISPLAY PROCESSOR.                                #
01884  M01S01345.sxkd    +++|
01885  M01S01346.sxkd    +++|      BEGIN  # KPROC #
01886  M01S01347.sxkd    +++|
01887  M01S01348.sxkd    +++|#
01888  M01S01349.sxkd    +++|**    KPROC - *K* DISPLAY PROCESSOR.
01889  M01S01350.sxkd    +++|*
01890  M01S01351.sxkd    +++|*     *KPROC* DETERMINES IF THERE IS ANY WORK TO DO FOR THE
01891  M01S01352.sxkd    +++|*     *K* DISPLAY AND IF SO, CALLS THE *K* DISPLAY OVERLAY.
01892  M01S01353.sxkd    +++|*     IT ALSO UPDATES THE *B* DISPLAY REQUEST-K MESSAGE
01893  M01S01354.sxkd    +++|*     AS NECESSARY.
01894  M01S01355.sxkd    +++|*
01895  M01S01356.sxkd    +++|*     PROC KPROC.
01896  M01S01357.sxkd    +++|*
01897  M01S01358.sxkd    +++|*     ENTRY     (KACTCOUNT)       - NUMBER OF REQUESTS CURRENTLY
01898  M01S01359.sxkd    +++|*                                   IN THE BODY OF THE LEFT SCREEN.
01899  M01S01360.sxkd    +++|*               (KLINKQ)          - HEAD OF K-QUEUE.
01900  M01S01361.sxkd    +++|*                                   = 0 IF EMPTY.
01901  M01S01362.sxkd    +++|*               (KNEWREQ)         - FLAG INDICATES NEW REQUESTS EXIST.
01902  M01S01363.sxkd    +++|*               (KREQCLEAR)       - FLAG TO INDICATE THE REQUEST-K
01903  M01S01364.sxkd    +++|*                                   MESSAGE IS NOT ON THE *B* DISPLAY.
01904  M01S01365.sxkd    +++|*               ARRAY KBINPUT     - KEYBOARD INPUT BUFFER.
01905  M01S01366.sxkd    +++|*               ARRAY KLEFTSCRN   - LEFT SCREEN BUFFER.
01906  M01S01367.sxkd    +++|*               (KL$COMP)   - COMPLETE FLAG IN LEFT SCREEN BUFFER.
01907  M01S01368.sxkd    +++|*                             = 0 IF *DSD* IS NOT PROCESSING *K*.
01908  M01S01369.sxkd    +++|*                             = 1 IF *DSD* IS PROCESSING *K*.
01909  M01S01370.sxkd    +++|*
01910  M01S01371.sxkd    +++|*     EXIT      (KREQCLEAR) - REQUEST-K FLAG.
01911  M01S01372.sxkd    +++|*               (KTIMER)    - COUNTER TO REFRESH REQUEST-K MESSAGE.
01912  M01S01373.sxkd    +++|*
01913  M01S01374.sxkd    +++|*     MESSAGES  * REQUEST *K* DISPLAY *.
01914  M01S01375.sxkd    +++|*
01915  M01S01376.sxkd    +++|*     NOTES     CALLS *K* DISPLAY OVERLAY ONLY IF THERE IS
01916  M01S01377.sxkd    +++|*               WORK TO PROCESS.
01917  M01S01378.sxkd    +++|*
01918  M01S01379.sxkd    +++|*               REFRESHES THE REQUEST-K MESSAGE ON THE *B* DISPLAY
01919  M01S01380.sxkd    +++|*               AS NECESSARY.
01920  M01S01381.sxkd    +++|*
01921  M01S01382.sxkd    +++|*               CLEARS THE REQUEST-K MESSAGE AS NECESSARY.
01922  M01S01383.sxkd    +++|*
01923  M01S01384.sxkd    +++|*               *DSD* SETS THE *KL$COMP* FLAG IN THE LEFT SCREEN
01924  M01S01385.sxkd    +++|*               BUFFER WHILE IT IS PROCESSING THE *K* DISPLAY.
01925  M01S01386.sxkd    +++|#
01926  M01S01387.sxkd    +++|
01927  M01S01388.sxkd    +++|#
01928  M01S01389.sxkd    +++|****  PROC KPROC - XREF LIST BEGIN.
01929  M01S01390.sxkd    +++|#
01930  M01S01391.sxkd    +++|
01931  M01S01392.sxkd    +++|      XREF
01932  M01S01393.sxkd    +++|        BEGIN
01933  M01S01394.sxkd    +++|        FUNC XCDD C(10);             # BINARY TO DISPLAY (DECIMAL) #
01934  M01S01395.sxkd    +++|        PROC SSOVL;                  # LOAD OVERLAY #
01935  M01S01396.sxkd    +++|        PROC MESSAGE;                # ISSUE *MESSAGE* MACRO #
01936  M01S01397.sxkd    +++|        PROC RTIME;                  # GET TIME SINCE LAST DEAD START #
01937  M01S01398.sxkd    +++|        END
01938  M01S01399.sxkd    +++|
01939  M01S01400.sxkd    +++|#
01940  M01S01401.sxkd    +++|****  PROC KPROC - XREF LIST END.
01941  M01S01402.sxkd    +++|#
01942  M01S01403.sxkd    +++|
01943  M01S01404.sxkd    +++|      DEF LISTCON    #0#;            # DO NOT LIST COMMON DECKS #
01944  M01S01405.sxkd    +++|*CALL COMBFAS
01945  M01S01406.sxkd    +++|*CALL COMXCTF
01946  M01S01407.sxkd    +++|*CALL COMXIPR
01947  M01S01408.sxkd    +++|*CALL COMBKDA
01948  M01S01409.sxkd    +++|*CALL COMBKDD
01949  M01S01410.sxkd    +++|*CALL COMXMSC
01950  M01S01411.sxkd    +++|*CALL COMBOVL
01951  M01S01412.sxkd    +++|
01952  M01S01413.sxkd    +++|                                               CONTROL EJECT;
01953  M01S01414.sxkd    +++|
01954  M01S01415.sxkd    +++|#
01955  M01S01416.sxkd    +++|*     DETERMINE IF THERE IS WORK TO DO.
01956  M01S01417.sxkd    +++|#
01957  M01S01418.sxkd    +++|      P<DISPOS>  = LOC(KL$LINE[LF$TITLE + 1]);
01958  M01S01419.sxkd    +++|      CH$10[0] = XCDD(RTRQ$CT);
01959  M01S01420.sxkd    +++|      DISPOS$RTRQ[0] = CH$04[0];
Line S01421 Modification History
M01 (Added by) sxkd
M02 (Updated by) sxkd2
Seq #  *Modification Id* Act 
----------------------------+
01960  M02S01421.sxkd2   ---|
Line S01422 Modification History
M01 (Added by) sxkd
M02 (Updated by) sxkd2
Seq #  *Modification Id* Act 
----------------------------+
01961  M02S01422.sxkd2   ---|      IF KB$CLEAR[0] NQ 0 OR (KACTCOUNT LS KORD AND KNEWREQ)
01962  M01S00539.sxkd2   +++|      IF KB$CLEAR[0] NQ 0            # CONSOLE INPUT #
01963  M01S00540.sxkd2   +++|        OR (KACTCOUNT LS KORD AND KNEWREQ) # NEW REQUEST #
01964  M01S00541.sxkd2   +++|        OR (KSMDISP AND KL$COMP[0])  # SM DISPLAY UP #
01965  M01S01423.sxkd    +++|      THEN
01966  M01S01424.sxkd    +++|        BEGIN
01967  M01S01425.sxkd    +++|        SSOVL(LKDISPLY,0);           # LOAD *KDISPLAY* OVERLAY #
01968  M01S01426.sxkd    +++|        END
01969  M01S01427.sxkd    +++|
01970  M01S01428.sxkd    +++|#
01971  M01S01429.sxkd    +++|*     CLEAR REQUEST-K IF NO ACTIVE DISPLAYS.
01972  M01S01430.sxkd    +++|#
01973  M01S01431.sxkd    +++|
Line S01432 Modification History
M01 (Added by) sxkd
M02 (Updated by) sxkd2
Seq #  *Modification Id* Act 
----------------------------+
01974  M02S01432.sxkd2   ---|      IF KACTCOUNT EQ 0 AND NOT KREQCLEAR
Line S01433 Modification History
M01 (Added by) sxkd
M02 (Updated by) sxkd2
Seq #  *Modification Id* Act 
----------------------------+
01975  M02S01433.sxkd2   ---|      THEN
01976  M01S00542.sxkd2   +++|      IF (KACTCOUNT EQ 0             # NO MESSAGES TO DISPLAY #
01977  M01S00543.sxkd2   +++|        OR KL$COMP[0])               # MESSAGES BEING DISPLAYED #
01978  M01S00544.sxkd2   +++|        AND NOT KREQCLEAR            # *REQUEST-K* MESSAGE UP #
01979  M01S00545.sxkd2   +++|      THEN                           # *REQUEST-K* NO LONGER NEEDED #
01980  M01S01434.sxkd    +++|        BEGIN
01981  M01S01435.sxkd    +++|        MESSAGE(BZEROES,LINE2);
01982  M01S01436.sxkd    +++|        KREQCLEAR = TRUE;            # FLAG IT IS CLEAR #
Line S01437 Modification History
M01 (Added by) sxkd
M02 (Updated by) sxkd2
Seq #  *Modification Id* Act 
----------------------------+
01983  M02S01437.sxkd2   ---|        KDIS$EXPIR = 0;
01984  M01S01438.sxkd    +++|        END
01985  M01S01439.sxkd    +++|
01986  M01S01440.sxkd    +++|#
01987  M01S01441.sxkd    +++|*     REFRESH REQUEST-K MESSAGE ON *B* DISPLAY IF THERE ARE
01988  M01S01442.sxkd    +++|*     REQUESTS TO PROCESS BUT THE *K* DISPLAY IS NOT ACTIVE.
01989  M01S01443.sxkd    +++|#
01990  M01S01444.sxkd    +++|
01991  M01S01445.sxkd    +++|      IF KACTCOUNT NQ 0
01992  M01S01446.sxkd    +++|      THEN
01993  M01S01447.sxkd    +++|        BEGIN  # REFRESH (REQUEST *K* DISPLAY) MESSAGE #
01994  M01S01448.sxkd    +++|        RTIME(RTIMESTAT[0]);
01995  M01S01449.sxkd    +++|        KDIS$EXPIR = RTIMSECS[0] + KDIS$INTV;
01996  M01S01450.sxkd    +++|        KTIMER = KTIMER - 1;
01997  M01S01451.sxkd    +++|        IF KTIMER LS 0
01998  M01S01452.sxkd    +++|        THEN                         # TIMER EXPIRED #
01999  M01S01453.sxkd    +++|          BEGIN
02000  M01S01454.sxkd    +++|          IF NOT KL$COMP[0]
02001  M01S01455.sxkd    +++|          THEN                       # *K* DISPLAY MUST NOT BE ACTIVE #
02002  M01S01456.sxkd    +++|            BEGIN
02003  M01S01457.sxkd    +++|            MESSAGE("$ REQUEST *K* DISPLAY ",LINE2);
02004  M01S01458.sxkd    +++|            KREQCLEAR = FALSE;
02005  M01S01459.sxkd    +++|            END
02006  M01S01460.sxkd    +++|
02007  M01S01461.sxkd    +++|          KTIMER = KRESET;           # RESET TIMER #
02008  M01S01462.sxkd    +++|          KL$COMP[0] = FALSE;        # SET TOGGLE OFF ( ON BY *DSD* ) #
02009  M01S01463.sxkd    +++|          END
02010  M01S01464.sxkd    +++|
02011  M01S01465.sxkd    +++|        END  # REFRESH (REQUEST *K* DISPLAY) MESSAGE #
02012  M01S01466.sxkd    +++|
02013  M01S00546.sxkd2   +++|      ELSE                           # DO NOT KEEP EXEC FROM IDLING #
02014  M01S00547.sxkd2   +++|        BEGIN  # IDLE #
02015  M01S00548.sxkd2   +++|        KDIS$EXPIR = 0;
02016  M01S00549.sxkd2   +++|        END  # IDLE #
02017  M01S00550.sxkd2   +++|
02018  M01S00551.sxkd2   +++|#
02019  M01S00552.sxkd2   +++|*     KEEP EXEC ACTIVE TO REFRESH THE SM DISPLAY
02020  M01S00553.sxkd2   +++|*     IF IT IS ON THE SCREEN.
02021  M01S00554.sxkd2   +++|#
02022  M01S00555.sxkd2   +++|
02023  M01S00556.sxkd2   +++|      IF KSMDISP AND KL$COMP[0]      # SM DISPLAY ON SCREEN #
02024  M01S00557.sxkd2   +++|      THEN                           # KEEP EXEC ACTIVE #
02025  M01S00558.sxkd2   +++|        BEGIN  # ACTIVE #
02026  M01S00559.sxkd2   +++|        RTIME(RTIMESTAT[0]);
02027  M01S00560.sxkd2   +++|        KSM$EXPIR = RTIMSECS[0] + KSM$INTV;
02028  M01S00561.sxkd2   +++|        KL$COMP[0] = FALSE;          # DONE PROCESSING SM DISPLAY #
02029  M01S00562.sxkd2   +++|        KTIMER = KRESET;             # RESET *DSD* TIMER #
02030  M01S00563.sxkd2   +++|        END  # ACTIVE #
02031  M01S00564.sxkd2   +++|
02032  M01S00565.sxkd2   +++|      ELSE                           # NOTHING UP TO REFRESH #
02033  M01S00566.sxkd2   +++|        BEGIN  # TIMEOUT #
02034  M01S00567.sxkd2   +++|        KTIMER = KTIMER - 1;         # TIMEOUT IN CASE *DSD* SLOW #
02035  M01S00568.sxkd2   +++|        IF KTIMER LS 0
02036  M01S00569.sxkd2   +++|        THEN                         # DSD NOT PROCESSING SM DISPLAY #
02037  M01S00570.sxkd2   +++|          BEGIN  # IDLE #
02038  M01S00571.sxkd2   +++|          KSM$EXPIR = 0;             # DO NOT FORCE EXEC ACTIVE #
02039  M01S00572.sxkd2   +++|          END  # IDLE #
02040  M01S00573.sxkd2   +++|
02041  M01S00574.sxkd2   +++|        END  # TIMEOUT #
02042  M01S00575.sxkd2   +++|
02043  M01S01467.sxkd    +++|      END  # KPROC #
02044  M01S01468.sxkd    +++|
02045  M01S01469.sxkd    +++|    TERM
02046  M01S01470.sxkd    +++|PROC KREQ((KWADDR),(RTYP));
02047  M01S01471.sxkd    +++|
02048  M01S01472.sxkd    +++|# TITLE KREQ - *K* DISPLAY REQUEST.                                   #
02049  M01S01473.sxkd    +++|
02050  M01S01474.sxkd    +++|      BEGIN  # KREQ #
02051  M01S01475.sxkd    +++|
02052  M01S01476.sxkd    +++|#
02053  M01S01477.sxkd    +++|**    KREQ - *K* DISPLAY REQUEST.
02054  M01S01478.sxkd    +++|*
02055  M01S01479.sxkd    +++|*     *KREQ* LINKS A NEW REQUEST TO THE *K* DISPLAY QUEUE
02056  M01S01480.sxkd    +++|*     OR DELINKS AN OLD REQUEST FROM THE *K* DISPLAY QUEUE.
02057  M01S01481.sxkd    +++|*
02058  M01S01482.sxkd    +++|*     PROC KREQ((KWADDR),(RTYP))
02059  M01S01483.sxkd    +++|*
02060  M01S01484.sxkd    +++|*     ENTRY     (KWADDR) - ADDRESS OF *KWORD* ARRAY.
02061  M01S01485.sxkd    +++|*               (RTYP)   - REQUEST TYPE.
02062  M01S01486.sxkd    +++|*                          = *KLINK* TO ADD THE REQUEST TO THE QUEUE.
02063  M01S01487.sxkd    +++|*                          = *KDELINK* TO DELINK THE REQUEST FROM
02064  M01S01488.sxkd    +++|*                            THE QUEUE.
02065  M01S01489.sxkd    +++|*               (KLINKQ) - THE HEAD OF THE K-QUEUE.
02066  M01S01490.sxkd    +++|*
02067  M01S01491.sxkd    +++|*     EXIT      THE *KWORD* HAS BEEN LINKED/DELINKED.
02068  M01S01492.sxkd    +++|*
02069  M01S01493.sxkd    +++|*               FOR A *KLINK*, THE REQUEST-K MESSAGE IS ISSUED AND
02070  M01S01494.sxkd    +++|*               (KREQCLEAR) = FALSE, REQUEST-K MESSAGE IS UP.
02071  M01S01495.sxkd    +++|*               (KNEWREQ) - IS SET TRUE IF A NEW REQUEST
02072  M01S01496.sxkd    +++|*                           WAS ADDED.
02073  M01S01497.sxkd    +++|*
02074  M01S01498.sxkd    +++|*               FOR A *KDELINK*, THE LEFT SCREEN AREA IS BLANKED
02075  M01S01499.sxkd    +++|*               IF THE *KWORD* ENTRY IS CURRENTLY ON THE SCREEN.
02076  M01S01500.sxkd    +++|*
02077  M01S01501.sxkd    +++|*     MESSAGES  * REQUEST *K* DISPLAY * (IF *KLINK* REQUEST).
02078  M01S01502.sxkd    +++|*
02079  M01S01503.sxkd    +++|*     NOTES     FOR *KLINK* PROCESSING -
02080  M01S01504.sxkd    +++|*                . SKIP THE REQUEST IF IT IS ALREADY IN QUEUE.
02081  M01S01505.sxkd    +++|*                . ADD TO END OF K-QUEUE.
02082  M01S01506.sxkd    +++|*                . ISSUE THE REQUEST-K MESSAGE.
02083  M01S01507.sxkd    +++|*
02084  M01S01508.sxkd    +++|*               FOR *KDELINK* PROCESSING -
02085  M01S01509.sxkd    +++|*                . SKIP THIS REQUEST IF IT IS NOT IN THE QUEUE.
02086  M01S01510.sxkd    +++|*                . CLEAR THE SCREEN LINES FOR THIS REQUEST IF IT IS
02087  M01S01511.sxkd    +++|*                  CURRENTLY ACTIVE ON THE LEFT SCREEN.
02088  M01S01512.sxkd    +++|*                . SET COMPLETE IN *KWORD* ARRAY.
02089  M01S01513.sxkd    +++|*                . DELINK THE REQUEST FROM THE QUEUE.
02090  M01S01514.sxkd    +++|#
02091  M01S01515.sxkd    +++|
02092  M01S01516.sxkd    +++|      ITEM KWADDR     I;             # ADDRESS OF *KWORD* ARRAY #
02093  M01S01517.sxkd    +++|      ITEM RTYP       I;             # REQUEST TYPE #
02094  M01S01518.sxkd    +++|
02095  M01S01519.sxkd    +++|#
02096  M01S01520.sxkd    +++|****  PROC KREQ - XREF LIST BEGIN.
02097  M01S01521.sxkd    +++|#
02098  M01S01522.sxkd    +++|
02099  M01S01523.sxkd    +++|      XREF
02100  M01S01524.sxkd    +++|        BEGIN
02101  M01S01525.sxkd    +++|        PROC KCLR;                   # CLEAR CURRENT ON *K* DISPLAY #
02102  M01S01526.sxkd    +++|        PROC MESSAGE;                # ISSUE *MESSAGE* MACRO #
02103  M01S01527.sxkd    +++|        END
02104  M01S01528.sxkd    +++|
02105  M01S01529.sxkd    +++|#
02106  M01S01530.sxkd    +++|****  PROC KREQ - XREF LIST END.
02107  M01S01531.sxkd    +++|#
02108  M01S01532.sxkd    +++|
02109  M01S01533.sxkd    +++|      DEF LISTCON    #0#;            # DO NOT LIST COMMON DECKS #
02110  M01S01534.sxkd    +++|*CALL COMBFAS
02111  M01S01535.sxkd    +++|*CALL COMBKDA
02112  M01S01536.sxkd    +++|*CALL COMBKDD
02113  M01S01537.sxkd    +++|*CALL COMXCTF
02114  M01S01538.sxkd    +++|
02115  M01S01539.sxkd    +++|      ITEM CURRKW     I;             # CURRENT *KWORD* ADDRESS #
02116  M01S01540.sxkd    +++|      ITEM ORD        I;             # AN ORDINAL #
02117  M01S01541.sxkd    +++|      ITEM PREVKW     I;             # PREVIOUS *KWORD* ADDRESS #
02118  M01S01542.sxkd    +++|
02119  M01S01543.sxkd    +++|
02120  M01S01544.sxkd    +++|                                               CONTROL EJECT;
02121  M01S01545.sxkd    +++|
02122  M01S01546.sxkd    +++|#
02123  M01S01547.sxkd    +++|*     SEARCH K-QUEUE UNTIL END (ZERO) OR A MATCH ON *KWADDR*.
02124  M01S01548.sxkd    +++|*     SETS - *PREVKW* = ADDRESS OF PREVIOUS *KWORD* IN QUEUE.
02125  M01S01549.sxkd    +++|*          - *CURRKW* = ADDRESS OF CURRENT *KWORD* OR ZERO(END).
02126  M01S01550.sxkd    +++|#
02127  M01S01551.sxkd    +++|
02128  M01S01552.sxkd    +++|      CURRKW = LOC(KLINKQ);          # START AT HEAD #
02129  M01S01553.sxkd    +++|      REPEAT WHILE CURRKW NQ 0 AND CURRKW NQ KWADDR
02130  M01S01554.sxkd    +++|      DO
02131  M01S01555.sxkd    +++|        BEGIN
02132  M01S01556.sxkd    +++|        PREVKW = CURRKW;             # SET PREVIOUS #
02133  M01S01557.sxkd    +++|        P<KWORD> = CURRKW;
02134  M01S01558.sxkd    +++|        CURRKW = KW$LINK[0];         # GET NEXT IN QUEUE #
02135  M01S01559.sxkd    +++|        END
02136  M01S01560.sxkd    +++|
02137  M01S01561.sxkd    +++|#
02138  M01S01562.sxkd    +++|*     PROCESS THE LINK REQUEST.
02139  M01S01563.sxkd    +++|#
02140  M01S01564.sxkd    +++|
02141  M01S01565.sxkd    +++|      IF RTYP EQ KLINK
02142  M01S01566.sxkd    +++|      THEN                           # LINK TO QUEUE #
02143  M01S01567.sxkd    +++|        BEGIN  # LINK #
02144  M01S01568.sxkd    +++|        IF CURRKW NQ 0
02145  M01S01569.sxkd    +++|        THEN                         # FOUND MATCH IN QUEUE #
02146  M01S01570.sxkd    +++|          BEGIN
02147  M01S01571.sxkd    +++|          RETURN;                    # IGNORE THIS REQUEST #
02148  M01S01572.sxkd    +++|          END
02149  M01S01573.sxkd    +++|
02150  M01S01574.sxkd    +++|#
02151  M01S01575.sxkd    +++|*     INITIALIZE *KWORD* ARRAY FIELDS.
02152  M01S01576.sxkd    +++|#
02153  M01S01577.sxkd    +++|
02154  M01S01578.sxkd    +++|        P<KWORD> = KWADDR;
02155  M01S01579.sxkd    +++|        KW$KCTL[0] = 0;              # CLEAR K-CONTROLLED AREA #
02156  M01S01580.sxkd    +++|        KW$LINK[0] = 0;              # SET LINK AT END #
02157  M01S01581.sxkd    +++|
02158  M01S01582.sxkd    +++|#
02159  M01S01583.sxkd    +++|*     LINK *KWORD* TO END OF QUEUE.
02160  M01S01584.sxkd    +++|#
02161  M01S01585.sxkd    +++|
02162  M01S01586.sxkd    +++|        P<KWORD> = PREVKW;
02163  M01S01587.sxkd    +++|        KW$LINK[0] = KWADDR;         # PREVIOUS POINTS TO NEW #
02164  M01S01588.sxkd    +++|        KNEWREQ = TRUE;
02165  M01S01589.sxkd    +++|
02166  M01S01590.sxkd    +++|#
02167  M01S01591.sxkd    +++|*     ISSUE THE REQUEST-K MESSAGE.
02168  M01S01592.sxkd    +++|#
02169  M01S01593.sxkd    +++|
02170  M01S01594.sxkd    +++|        MESSAGE("$ REQUEST *K* DISPLAY  ",LINE2);
02171  M01S01595.sxkd    +++|        KREQCLEAR = FALSE;
02172  M01S01596.sxkd    +++|        RETURN;                      # EXIT #
02173  M01S01597.sxkd    +++|        END  # LINK #
02174  M01S01598.sxkd    +++|
02175  M01S01599.sxkd    +++|
02176  M01S01600.sxkd    +++|
02177  M01S01601.sxkd    +++|#
02178  M01S01602.sxkd    +++|*     PROCESS THE DELINK REQUEST.
02179  M01S01603.sxkd    +++|#
02180  M01S01604.sxkd    +++|
02181  M01S01605.sxkd    +++|      IF RTYP EQ KDELINK
02182  M01S01606.sxkd    +++|      THEN                           # DELINK FROM QUEUE #
02183  M01S01607.sxkd    +++|        BEGIN  # DELINK #
02184  M01S01608.sxkd    +++|        IF CURRKW EQ 0
02185  M01S01609.sxkd    +++|        THEN                         # NO MATCH IN QUEUE #
02186  M01S01610.sxkd    +++|          BEGIN
02187  M01S01611.sxkd    +++|          RETURN;                    # IGNORE THIS REQUEST #
02188  M01S01612.sxkd    +++|          END
02189  M01S01613.sxkd    +++|
02190  M01S01614.sxkd    +++|#
02191  M01S01615.sxkd    +++|*     IF REQUEST IS CURRENTLY ACTIVE ON *K* DISPLAY, CLEAR IT.
02192  M01S01616.sxkd    +++|#
02193  M01S01617.sxkd    +++|
02194  M01S01618.sxkd    +++|        P<KWORD> = CURRKW;
02195  M01S01619.sxkd    +++|        IF KW$ACT[0]
02196  M01S01620.sxkd    +++|        THEN                         # CURRENTLY ON *K* #
02197  M01S01621.sxkd    +++|          BEGIN  # CLEAR K DISPLAY ENTRY #
02198  M01S01622.sxkd    +++|
02199  M01S01623.sxkd    +++|#
02200  M01S01624.sxkd    +++|*     LOOK FOR *KWORD* ENTRY IN *KCURRENT*.
02201  M01S01625.sxkd    +++|#
02202  M01S01626.sxkd    +++|
02203  M01S01627.sxkd    +++|          FOR ORD = 1 STEP 1 WHILE ORD LQ KORD
02204  M01S01628.sxkd    +++|          DO
02205  M01S01629.sxkd    +++|            BEGIN
02206  M01S01630.sxkd    +++|            IF KCUR$ADDR[ORD] EQ KWADDR
02207  M01S01631.sxkd    +++|            THEN                     # FOUND MATCH #
02208  M01S01632.sxkd    +++|              BEGIN
02209  M01S01633.sxkd    +++|              KCLR(ORD);             # CLEAR FROM *K* DISPLAY #
02210  M01S01634.sxkd    +++|              END
02211  M01S01635.sxkd    +++|
02212  M01S01636.sxkd    +++|            END
02213  M01S01637.sxkd    +++|
02214  M01S01638.sxkd    +++|          END  # CLEAR K DISPLAY ENTRY #
02215  M01S01639.sxkd    +++|
02216  M01S01640.sxkd    +++|#
02217  M01S01641.sxkd    +++|*     SET COMPLETE ON THIS REQUEST.
02218  M01S01642.sxkd    +++|#
02219  M01S01643.sxkd    +++|
02220  M01S01644.sxkd    +++|        P<KWORD> = KWADDR;
02221  M01S01645.sxkd    +++|        KW$COMP[0] = TRUE;
02222  M01S01646.sxkd    +++|        DRVRRECALL = TRUE;           # SET TO RECALL THE DRIVER #
02223  M01S01647.sxkd    +++|
02224  M01S01648.sxkd    +++|#
02225  M01S01649.sxkd    +++|*     DELINK IT FROM QUEUE.
02226  M01S01650.sxkd    +++|#
02227  M01S01651.sxkd    +++|
02228  M01S01652.sxkd    +++|        CURRKW = KW$LINK[0];         # NEXT IN QUEUE #
02229  M01S01653.sxkd    +++|        P<KWORD> = PREVKW;
02230  M01S01654.sxkd    +++|        KW$LINK[0] = CURRKW;         # LINK PREVIOUS TO NEXT #
02231  M01S01655.sxkd    +++|        RETURN;
02232  M01S01656.sxkd    +++|
02233  M01S01657.sxkd    +++|        END  # DELINK #
02234  M01S01658.sxkd    +++|
02235  M01S01659.sxkd    +++|      END  # KREQ #
02236  M01S01660.sxkd    +++|
02237  M01S01661.sxkd    +++|    TERM
02238  M01S00576.sxkd2   +++|PROC KSM(REJECT);
02239  M01S00577.sxkd2   +++|
02240  M01S00578.sxkd2   +++|# TITLE KSM - PROCESS *SMI* COMMAND.                               #
02241  M01S00579.sxkd2   +++|
02242  M01S00580.sxkd2   +++|      BEGIN  # KSM #
02243  M01S00581.sxkd2   +++|
02244  M01S00582.sxkd2   +++|#
02245  M01S00583.sxkd2   +++|**    KSM - PROCESS *SMI* COMMAND.
02246  M01S00584.sxkd2   +++|*
02247  M01S00585.sxkd2   +++|*     *KSM* PROCESSES BOTH FORMS OF THE *SM* OPERATOR COMMAND.
02248  M01S00586.sxkd2   +++|*     THE TWO FORMS OF THE COMMAND ARE:
02249  M01S00587.sxkd2   +++|*       1. *SMI*, WHERE *I* IS THE SM IDENTIFIER
02250  M01S00588.sxkd2   +++|*
02251  M01S00589.sxkd2   +++|*          THIS FORM OF THE COMMAND CAUSES INFORMATION FOR THE
02252  M01S00590.sxkd2   +++|*          SPECIFIED *SM* TO BE DISPLAYED.
02253  M01S00591.sxkd2   +++|*
02254  M01S00592.sxkd2   +++|*       2. *SMI,DRD=XX=N*
02255  M01S00593.sxkd2   +++|*            WHERE *I* IS THE *SM* IDENTIFIER
02256  M01S00594.sxkd2   +++|*                  *XX* IS THE LITERAL *ST* (STAGE) OR *DS* (DESTAGE)
02257  M01S00595.sxkd2   +++|*                  *N* IS MAXIMUM NUMBER OF DRDS (0, 1, OR 2)
02258  M01S00596.sxkd2   +++|*
02259  M01S00597.sxkd2   +++|*          THIS FORM OF THE COMMAND CAUSES THE MAXIMUM NUMBER OF
02260  M01S00598.sxkd2   +++|*          DRDS PERMITTED FOR STAGING (*ST*) OR DESTAGING (*DS*)
02261  M01S00599.sxkd2   +++|*          TO BE REDEFINED WITH THE SPECIFIED VALUE OF *N* (0, 1,
02262  M01S00600.sxkd2   +++|*          OR 2).
02263  M01S00601.sxkd2   +++|*
02264  M01S00602.sxkd2   +++|*     PROC KSM(REJECT).
02265  M01S00603.sxkd2   +++|*
02266  M01S00604.sxkd2   +++|*     ENTRY     ARRAY KBINPUT (DEFINED IN *COMBKDD*) CONTAINS THE
02267  M01S00605.sxkd2   +++|*               IMAGE OF THE *SMI* COMMAND.
02268  M01S00606.sxkd2   +++|*
02269  M01S00607.sxkd2   +++|*     EXIT      *SM* PORTION OF *K* DISPLAY HAS BEEN UPDATED.
02270  M01S00608.sxkd2   +++|*
02271  M01S00609.sxkd2   +++|*     MESSAGES
02272  M01S00610.sxkd2   +++|*
02273  M01S00611.sxkd2   +++|*
02274  M01S00612.sxkd2   +++|*
02275  M01S00613.sxkd2   +++|*
02276  M01S00614.sxkd2   +++|#
02277  M01S00615.sxkd2   +++|
02278  M01S00616.sxkd2   +++|
02279  M01S00617.sxkd2   +++|#
02280  M01S00618.sxkd2   +++|****  PROC KSM - XREF LIST BEGIN.
02281  M01S00619.sxkd2   +++|#
02282  M01S00620.sxkd2   +++|
02283  M01S00621.sxkd2   +++|      XREF
02284  M01S00622.sxkd2   +++|        BEGIN
02285  M01S00623.sxkd2   +++|        PROC KDSM;                   # PAINT *SM* PORTION OF K-DISPLAY #
02286  M01S00624.sxkd2   +++|        FUNC XDXB I;                 # CONVERT DISPLAY TO INTEGER #
02287  M01S00625.sxkd2   +++|        END
02288  M01S00626.sxkd2   +++|
02289  M01S00627.sxkd2   +++|#
02290  M01S00628.sxkd2   +++|****  PROC KSM - XREF LIST END.
02291  M01S00629.sxkd2   +++|#
02292  M01S00630.sxkd2   +++|
02293  M01S00631.sxkd2   +++|      DEF LISTCON    #0#;            # DO NOT LIST COMDECKS #
02294  M01S00632.sxkd2   +++|*CALL COMBFAS
02295  M01S00633.sxkd2   +++|*CALL COMBKDA
02296  M01S00634.sxkd2   +++|*CALL COMBKDD
02297  M01S00635.sxkd2   +++|*CALL COMBUDT
02298  M01S00636.sxkd2   +++|
02299  M01S00637.sxkd2   +++|      ITEM CHDRD   C(1);             # CHARACTER VALUE FOR DRDS #
02300  M01S00002.mse0011 +++|      ITEM FINDSM     B;             # STORAGE MODULE FOUND IN UDT #
02301  M01S00638.sxkd2   +++|      ITEM I          I;             # INTEGER VALUE FOR DRDS #
02302  M01S00639.sxkd2   +++|      ITEM NUMDRD     I;             # NUMBER OF DRDS FOR ST OR DS #
02303  M01S00640.sxkd2   +++|      ITEM REJECT     B;             # REJECT OPERATOR RESPONSE FLAG #
02304  M01S00641.sxkd2   +++|      ITEM TEMPSM  C(1);             # *SM* ID FROM INPUT COMMAND #
02305  M01S00642.sxkd2   +++|                                               CONTROL EJECT;
02306  M01S00643.sxkd2   +++|
02307  M01S00644.sxkd2   +++|#
02308  M01S00645.sxkd2   +++|*     CHECK FOR VALID *SM* COMMAND.
02309  M01S00646.sxkd2   +++|#
02310  M01S00647.sxkd2   +++|
02311  M01S00648.sxkd2   +++|      REJECT = FALSE;                # ASSUME VALID COMMAND #
02312  M01S00649.sxkd2   +++|      TEMPSM = C<2,1>KB$SCAN[0];
Line S00650 Modification History
M01 (Added by) sxkd2
M02 (Updated by) mse0011
Seq #  *Modification Id* Act 
----------------------------+
02313  M02S00650.mse0011 ---|      IF TEMPSM GR MAXSMUNIT         # SM ORDINAL LARGER THAN MAX #
02314  M01S00003.mse0011 +++|      FINDSM = FALSE;                # LOCATED SM IN UDT FLAG #
02315  M01S00004.mse0011 +++|      SLOWFOR I = 1 STEP 1 UNTIL MAXSMUNIT
02316  M01S00005.mse0011 +++|      DO
02317  M01S00006.mse0011 +++|        BEGIN  # CHECK FOR SM ID IN EACH UDT #
02318  M01S00007.mse0011 +++|        IF SM$ID[I] EQ TEMPSM
02319  M01S00008.mse0011 +++|        THEN
02320  M01S00009.mse0011 +++|          BEGIN  # SM LOCATED IN UDT #
02321  M01S00010.mse0011 +++|          FINDSM = TRUE;
02322  M01S00011.mse0011 +++|          KUDTIND = I;
02323  M01S00012.mse0011 +++|          TEST I;
02324  M01S00013.mse0011 +++|          END
02325  M01S00014.mse0011 +++|
02326  M01S00015.mse0011 +++|        END  # CHECK FOR SM ID IN EACH UDT #
02327  M01S00016.mse0011 +++|
02328  M01S00017.mse0011 +++|
02329  M01S00018.mse0011 +++|
02330  M01S00019.mse0011 +++|      IF NOT FINDSM                  # SM NOT DEFINED IN THE UDT #
02331  M01S00651.sxkd2   +++|        OR TEMPSM EQ 0               ##
02332  M01S00652.sxkd2   +++|        OR KACTCOUNT NQ 0            # MESSAGE(S) AWAITING "GO" #
02333  M01S00653.sxkd2   +++|        OR (C<3,1>KB$SCAN[0] NQ " "  # NOT VALID POST-CHARACTERS #
02334  M01S00654.sxkd2   +++|        AND C<3,1>KB$SCAN[0] NQ 0
02335  M01S00655.sxkd2   +++|        AND C<3,5>KB$SCAN[0] NQ ",DRD=")
02336  M01S00656.sxkd2   +++|      THEN
02337  M01S00657.sxkd2   +++|        BEGIN  # INVALID #
02338  M01S00658.sxkd2   +++|        REJECT = TRUE;
02339  M01S00659.sxkd2   +++|        RETURN;
02340  M01S00660.sxkd2   +++|        END    # INVALID #
02341  M01S00661.sxkd2   +++|
02342  M01S00662.sxkd2   +++|
02343  M01S00663.sxkd2   +++|
02344  M01S00664.sxkd2   +++|      IF C<3,5>KB$SCAN[0] EQ ",DRD="
02345  M01S00665.sxkd2   +++|      THEN
02346  M01S00666.sxkd2   +++|        BEGIN  # COMMAND FORM *SMI,DRD=.....* #
02347  M01S00667.sxkd2   +++|
02348  M01S00668.sxkd2   +++|#
02349  M01S00669.sxkd2   +++|*                COMMAND FORM IS   *SMI,DRD=ST=N*
02350  M01S00670.sxkd2   +++|*                             OR   *SMI,DRD=DS=N*
02351  M01S00671.sxkd2   +++|#
02352  M01S00672.sxkd2   +++|
02353  M01S00673.sxkd2   +++|
02354  M01S00674.sxkd2   +++|        CHDRD = C<11,1>KB$SCAN[0];    # NUMBER DRDS FOR ST OR DS #
02355  M01S00675.sxkd2   +++|        I = XDXB(CHDRD,0,NUMDRD);
02356  M01S00676.sxkd2   +++|
02357  M01S00677.sxkd2   +++|        IF NOT (I EQ 0  AND  NUMDRD GQ 0
02358  M01S00678.sxkd2   +++|                        AND  NUMDRD LQ MAX$SMDRD)
02359  M01S00679.sxkd2   +++|        THEN  # INVALID NUMBER OF DRDS SPECIFIED #
02360  M01S00680.sxkd2   +++|          BEGIN  # DO NOT ALTER *UDT* #
02361  M01S00681.sxkd2   +++|          REJECT = TRUE;
02362  M01S00682.sxkd2   +++|          RETURN;
02363  M01S00683.sxkd2   +++|          END
02364  M01S00684.sxkd2   +++|
02365  M01S00685.sxkd2   +++|#
02366  M01S00686.sxkd2   +++|*       COMMAND FORM  *SMI,DRD=ST=N* OR *SMI,DRD=DS=N* IS VALID.
02367  M01S00687.sxkd2   +++|#
02368  M01S00688.sxkd2   +++|
02369  M01S00689.sxkd2   +++|
02370  M01S00690.sxkd2   +++|        IF C<8,3>KB$SCAN[0] EQ "ST="
02371  M01S00691.sxkd2   +++|        THEN  # PARAMETER IS *ST* #
02372  M01S00692.sxkd2   +++|          BEGIN  # SET MAX DRDS FOR STAGING #
Line S00693 Modification History
M01 (Added by) sxkd2
M02 (Updated by) mse0011
Seq #  *Modification Id* Act 
----------------------------+
02373  M02S00693.mse0011 ---|          SM$STNUM[TEMPSM] = NUMDRD;
02374  M01S00020.mse0011 +++|          SM$STNUM[KUDTIND] = NUMDRD;
02375  M01S00694.sxkd2   +++|          END
02376  M01S00695.sxkd2   +++|
02377  M01S00696.sxkd2   +++|        ELSE
02378  M01S00697.sxkd2   +++|          BEGIN  # PARAM MUST BE *DS* #
02379  M01S00698.sxkd2   +++|          IF C<8,3>KB$SCAN[0] EQ "DS="
02380  M01S00699.sxkd2   +++|          THEN
02381  M01S00700.sxkd2   +++|            BEGIN   # SET MAX DRDS FOR DESTAGING #
Line S00701 Modification History
M01 (Added by) sxkd2
M02 (Updated by) mse0011
Seq #  *Modification Id* Act 
----------------------------+
02382  M02S00701.mse0011 ---|            SM$DSNUM[TEMPSM] = NUMDRD;
02383  M01S00021.mse0011 +++|            SM$DSNUM[KUDTIND] = NUMDRD;
02384  M01S00702.sxkd2   +++|            END
02385  M01S00703.sxkd2   +++|
02386  M01S00704.sxkd2   +++|          ELSE
02387  M01S00705.sxkd2   +++|            BEGIN   # ST/DS PARAMETER IS INVALID #
02388  M01S00706.sxkd2   +++|            REJECT = TRUE;
02389  M01S00707.sxkd2   +++|            RETURN;
02390  M01S00708.sxkd2   +++|            END
02391  M01S00709.sxkd2   +++|          END    # *DS* PARAM #
02392  M01S00710.sxkd2   +++|
02393  M01S00711.sxkd2   +++|        END    # COMMAND FORM *SMI,DRD=.....* #
02394  M01S00712.sxkd2   +++|
02395  M01S00713.sxkd2   +++|#
02396  M01S00714.sxkd2   +++|*     AT THIS POINT, THE COMMAND HAS BEEN VALIDATED WHETHER IT IS THE
02397  M01S00715.sxkd2   +++|*     *K.SMI* FORM OR THE *K.SMI,DRD.....* FORM.  IF THE LATTER FORM,
02398  M01S00716.sxkd2   +++|*     THE *UDT* HAS ALREADY BEEN UPDATED TO REFLECT THE NEW MAXIMUM
02399  M01S00717.sxkd2   +++|*     NUMBER OF DRD-S FOR STAGING (*ST*) OR DESTAGING (*DS*).  IT IS
02400  M01S00718.sxkd2   +++|*     NOW TIME TO REPAINT THE K-DISPLAY TO REFLECT THE *SM* SELECTED.
02401  M01S00719.sxkd2   +++|#
02402  M01S00720.sxkd2   +++|
02403  M01S00721.sxkd2   +++|      KSMID = TEMPSM;
02404  M01S00722.sxkd2   +++|        KDSM;          # DISPLAY *SM* INFORMATION #
02405  M01S00723.sxkd2   +++|      RETURN;
02406  M01S00724.sxkd2   +++|
02407  M01S00725.sxkd2   +++|      END # KSM #
02408  M01S00726.sxkd2   +++|
02409  M01S00727.sxkd2   +++|
02410  M01S00728.sxkd2   +++|
02411  M01S00729.sxkd2   +++|    TERM
cdc/nos2.source/opl.opl871/deck/sxkd.001.txt ยท Last modified: by 127.0.0.1