Initial commit
[retro-software/dec/tops10/v1.19.git] / src / clkcss.mac
1 TITLE CLKCSS - SCHEDULING ALOGRITHM\r
2 SUBTTL      T. HASTING 6-29-65\r
3 ;SCHEDULING ALOGRITHM\r
4 ;CALL:\r
5 ;       PUSHJ PDP, NXTJOB\r
6 ;       EXIT                    ;RETURN HIGHEST PRIORITY USER IN AC ITEM\r
7 \r
8 ;NEXJOB ASSUMES NO ACS SET EXCEPT PDP AND THAT IS MAY USE\r
9 ;ANY OF THE OTHER ACS\r
10 ;EXECUTION REQUIRES ROUGHLY 37 CYCLES FOR NORMAL CASE\r
11 \r
12 INTERNAL NXTJOB, QUANTS\r
13 EXTERNAL IOCOMP,JOBN,JBTSTS,JOB\r
14 EXTERNAL MTAVAL,DCAVAL,DTAVAL,SCNOFF,SCNON\r
15 \r
16 T=TAC1    ;TEMPORARY AC\r
17 C=DEVDAT\r
18 P=DAT\r
19 \r
20 NXTJOB:   MOVE T, IOCOMP        ;NO. OF COMPLETED IO JOBS\r
21           MOVEM T, IOAVAL       ;MAKE SLOW IO LOOK LIKE FAST IO\r
22 \r
23 ;KEEP IO DEVICES BUSY\r
24           HRLZI P, -NUM         ;NO. OF IO DEVICES CATEGORIES TO CHECK\r
25 NXT0:     SKIPN @AVALTB(P)      ;NON-ZERO IF IO JUST BECOME AVAILABLE\r
26 NXT1:     AOBJN P, NXT0\r
27           JUMPG P, NXT4         ;FINISHED YET\r
28           SETZM @AVALTB(P)      ;IO DEVICE AVAIL. ACKNOWLEDGE FACT\r
29           MOVE T,WAITB(P)       ;GET APPROPRIATE JOB STATUS BIT\r
30           MOVE ITEM,JOBP(P)     ;SEARCH FOR WAITING JOB\r
31           AOS ITEM              ;LOOK AT EVERYONE ELSE FIRST\r
32 NXT2:     CAIL ITEM,JOBN        ;MODULO JOBN\r
33           MOVEI ITEM,1          ;SKIP NULL JOB\r
34           TSNN T,JBTSTS(ITEM)   ;IS WAIT BIT SET FOR THIS JOB?\r
35           JRST NXT3 ;NO. KEEP LOOKING\r
36           CONO PI,SCNOFF        ;YES, TURN SCANNER CHAN. OFF(CONTROL C)\r
37           HLRZ TAC,JBTSTS(ITEM)           ;IS JOB RUNABLE?\r
38           CAIN TAC,RUNABLE(T)\r
39           JRST NXT7             ;YES, CLEAR BIT. SET RUN TIME. RETURN\r
40           CONO PI,SCNON         ;NO. TURN SCANNER CHAN. ON. KEEP LOOKIN\r
41 NXT3:     CAME ITEM, JOBP(P)    ;HAVE ALL USERS BEEN LOOKED AT\r
42           AOJA ITEM, NXT2       ;NO. KEEP LOOKING\r
43           JRST NXT1             ;YES. SHOULD NOT HAPPEN\r
44 \f\r
45 ;NO JOBS WAITING TO USE IO DEVICES\r
46 ;HAS CURENT JOB USED ITS QUANTUM\r
47 \r
48 NXT4:     MOVEI C,JOBN          ;GET READY FOR POSSIBLE LOOP\r
49           SKIPA ITEM, JOB       ;CURRENTLY RUNNING JOB\r
50 \r
51 NXT6:     AOS ITEM              ;LOOK AT NEXT JOB\r
52           CAIL ITEM, JOBN       ;MODULO JOBN\r
53           MOVEI ITEM, 1         ;SKIP NULL JOB\r
54 \r
55 NXT5:     HLRZ T, JBTSTS(ITEM)           ;IS THIS JOB RUNNABLE\r
56           CAIN T, RUNABLE\r
57           JRST NXT9             ;YES,RETURN WITH ITEM SET\r
58 NXT5A:    SOJG C, NXT6          ;NO. LOOKED AT ALL JOBS YET?\r
59           SETZB ITEM,T          ;YES. INDICATE NULL JOB TO RUN\r
60           AOJA T,NXT8           ;SET TO RUN FOR ONE CLOCK TICK\r
61 \r
62 NXT7:     MOVEM ITEM, JOBP(P)   ;SAVE THIS JOB NO. FOR NEXT TIME\r
63           TRZ TAC,(T)           ;CLEAR WAIT BIT\r
64           HRLM TAC,JBTSTS(ITEM)           ;IN JOB STATUS WORD\r
65           TRNE T,IOWS           ;IS WAIT BIT IOWS?\r
66           SOS IOCOMP            ;YES, SUBTRACT REQUEST COUNT\r
67           CONO PI,SCNON         ;TURN SCANNER CHANNEL BACK ON\r
68           JRST NXT10            ;AND GO SET RUNNING TIME\r
69 \r
70 NXT9:     HRRZ T,JBTSTS(ITEM)   ;HAS TIME GONE TO ZERO FOR THIS JOB?\r
71           TRNE T,-1\r
72           POPJ PDP,             ;NO\r
73 NXT10:    MOVE T, QUANTS(P)     ;SET QUANTUM RUNNING TIME FOR THIS QUEU\r
74 NXT8:     HRRM T, JBTSTS(ITEM)\r
75           CAMN ITEM, JOB        ;IS THIS SAME AS OLD JOB?\r
76           JUMPN ITEM, NXT5A     ;AND NOT NULL JOB\r
77           POPJ PDP,\r
78 \f\r
79 ;FLAGS SET NON-ZERO WHEN IO DEVICES BECOME AVAILABLE\r
80 \r
81 AVALTB:   EXP MTAVAL            ;MAG TAPE\r
82           EXP DCAVAL            ;DATA CONTROL\r
83           EXP DTAVAL            ;DECTAPE\r
84           EXP IOAVAL            ;ALL OTHER DEVICES\r
85 NUM=.-AVALTB\r
86 \r
87 IOAVAL:   0                     ;FLAG = NO. OF IO COMPLETED JOBS\r
88 \r
89 ;BIT IN STATUS WORD MEANING JOB WAITING TO USE DEVICE\r
90 WAITB:    EXP MTW\r
91           EXP DCW\r
92           EXP DTW\r
93           EXP IOWS\r
94 \r
95 ;LAST JOB SCHEDULED FOR DEVICE\r
96 JOBP:     REPEAT NUM,\r
97 <         EXP 1\r
98 >\r
99 \r
100 ;QUANTUM TIMES FOR EACH QUEUE\r
101 \r
102 QUANTS:   EXP 4                 ;MAGTAPE QUEUE\r
103           EXP 4                 ;DATA CONTROL QUEUE\r
104           EXP 4                 ;DECTAPE QUEUE\r
105           EXP 6                 ;IOWAIT SATISFIED QUEUE\r
106           EXP QUANT1            ;STRAIGHT COMPUTATION QUEUE\r
107 \r
108 XP  QUANT1,^D15;        STRAIGHT COMPUTATION QUEUE\r
109 \r
110           END,\r