Initial commit
[retro-software/dec/tops10/v1.19.git] / src / s.mac
1         XLIST\r
2 \r
3 DEFINE  XP(A,B)               ;SYSTEM PARAMETER\r
4         <A=B\r
5         INTERNAL A\r
6 >\r
7 ,ACCUMULATORS\r
8         XP IOS,0;             IO STATUS WORD\r
9         XP TAC,1;             TEMPORARY\r
10         XP TAC1,2;                      TEMPORARY\r
11         XP PDP,3;             C(LH)=NUMBER OF LOCATIONS LEFT IN PD LIST\r
12 ,                             C(RH)=PUSHDOWN POINTER\r
13 REPEAT 0,<      XP SUB,10             RETURN (PC) FOR ONE LEVEL SUBROUTINES\r
14 >\r
15         XP TEM,10\r
16         XP ITEM,4;            BYTE OR WORD POINTER.  ITEM COUNT\r
17         XP DAT,5;             DATA OR TEMPORARY\r
18         XP DEVDAT,6;          C(LH)=UNUSED.\r
19 ,                             C(RH)=ADDRESS OF DEVICE DATA BLOCK\r
20         XP JBUF,DAT;          ADDRESS OF JOB BUFFER AREA=JBFADR\r
21         XP PROG,7;            C(LH)=UNUSED\r
22 ,                             C(RH)=ADDRES OF USER'S PROGRAM AREA\r
23         XP JDAT,11;           C(RH)=ADDRESS OF JOB DATA\r
24 ,ONLY 0 TO 10 NORMALLY REQUIRED\r
25 ,FOR INTERRUPT SERVICE\r
26         XP BUFPNT,12;   C(JBFADR 18-35)\r
27         XP BUFWRD,13;   BIT 0=IOUSE\r
28 ,                       BITS 1-17=BUFFER SIZE\r
29 ,                       BITS 18-35=NEXT BUFFER ADDRESS\r
30         XP UUO,14;      LAST UUO PROCESSED\r
31         XP AC1,15       ;TEMPORARY ACS(MORE TEMPORARY\r
32         XP AC2,16       ;THEN TAC,TAC1)\r
33         XP AC3,17       ;\r
34 \f, DEVICE DATA BLOCK NAMES\r
35         XP DEVNAM,0;    NAME IN SIX BIT ASCII\r
36 ,                       C(LH)=DEVICE MNEMONIC\r
37 ,                       C(RH)=DEVICE NUMBER, LEFT JUSTIFIED\r
38         XP DEVCHR,1;    CHARACTERISTIC\r
39 ,                       BITS 0-8=JOB NUMBER\r
40 ,                            ZERO VALUE IMPLIES NOT ASSIGNED\r
41 ,                       BITS 9-11=PRIORITY CHANNEL FOR DEVICE\r
42         XP PICHN,100    ;RIGHTMOST BIT OF PI CHAN. FIELD\r
43 ,                       BIT 12=UNUSED\r
44 ,                       BIT 13=IORET. 0 IF DEVICE HAS A SHORT\r
45 ,                           DISPATCH TABLE.  1 IF LONG\r
46         XP IORET,20     ;FOR RETRIEVABLE DEVICES.\r
47                 ;SHORT DISPATCH TABLE =0. LONG = 1\r
48 ,                       BITS 14-17=JOB DEVICE CHANNEL NUMBER\r
49 ,                       BITS 18-23=DEVICE NUMBER, BINARY\r
50 ,                       BITS 24-35=BUFFER SIZE\r
51         XP DEVIOS,2;    STATUS WORD.  SEE BELOW\r
52         XP DEVSER,3;    C(LH)=NEXT DEVICE DATA BLOCK\r
53 ,                       C(RH)=DEVICE SERVICE DISPATCH TABLE\r
54 ,    DEVICE SERVICE DISPATCH TABLE ASSIGNMENTS\r
55         XP DRL,0;                   XXXDSP   :  RELEASE\r
56         XP DCL,1;                   XXXDSP +1:  CLOSE\r
57         ;IMMEDIATE ADDRESS PART OF CLOSE UUO\r
58                 XP CLSOUT,1     ;INHIBIT CLOSING OUTPUT\r
59                 XP CLSIN,2      ;INHIBIT CLOSING INPUT\r
60         XP DOU,2;                   XXDSP +2:  OUTPUT\r
61         XP DIN,3;                   XXXDSP +3:  INPUT;SHORT DISPATCH TABLE\r
62         XP DEN,4;                   XXXDSP +4:  ENTER\r
63         XP DLK,5;                   XXXDSP +5:  LOOKUP\r
64         XP DDO,6;                   XXXDSP +6:  DMPO\r
65         XP DDI,7;                   XXXDSP +7:  DMPI\r
66         XP DSO,10;          XXXDSP+10:  SETO\r
67         XP DSI,11;          XXXDSP+11:  SETI\r
68         XP DGF,12;          XXXDSP+12:  GETF;LOGN DISPATCH TABLE\r
69         XP DEVMOD,4     ;BITS 6-11=LEFT HALF OF IMAGE MODE BYTE POINTER\r
70                         ;BIT 35-J=1 IF MODE J IS LEGAL FOR THIS DEVICE\r
71                         ;BIT 18 DEVICE ASSIGNED BY CONSOLE COMMAND\r
72                         ;BIT 19 DEVICE ASSGINED BY PROGRAM (INIT)\r
73 ;IRGHT HALT OF DEVICE MODE WORD\r
74         XP ASSCON,400000        ;ASSIGNED BY CONSOLE COMMAND ASSIGN\r
75         XP ASSPRG,200000        ;ASSIGNED BY PROGRAM(INIT UUO)\r
76 ;LEFT HALF DEVICE CHARACTERISTICS(DEVCHR UUO)\r
77         XP DVOUT,1      ;OUTPUT DEVICE\r
78         XP DVIN,2       ;INPUT DEVICE\r
79         XP DVDIR,4      ;HAS A DIRECTORY\r
80         XP DVTTY,10     ;IS A TTY\r
81         XP DVMTA,20     ;IS A MAG TAPE(REWIND)\r
82         XP DVAVAL,40    ;1 IF DEVICE IS AVAILABLE TO THIS JOB\r
83                         ;SET BY DEVCHR UUO\r
84         XP TTYUSE,10000 ;TTY DDB IN USE FLAG\r
85         XP TTYATC,20000 ;TTY ATTACHED TO JOB IF 1\r
86         XP DVLPT,40000  ;IS A LPT (CARRIAGE CONTROL IN FORTRAN)\r
87         XP DVCDR,100000 ;IS A CARD READER(TRAILING SPACES FOR MACRO)\r
88         XP DVDIRIN,400000       ;DIRECTORY IN CORE IF 1\r
89 \r
90         XP DEVLOG,5;    LOGICAL NAME FOR JOB DEVICE\r
91         XP DEVBUF,6;    C(LH)=OUTPUT BUFFER AREA DDRESS\r
92 ,                       C(RH)=INPUT BUFFER AREA ADDRESS (JBFADR)\r
93         XP DEVIAD,7;    C(LH)=PROG IN INDEX FIELD\r
94         XP DEVADR,DEVIAD\r
95 ,                       C(RH)=CURRENT INPUT BUFFER ADDRESS\r
96         XP DEVOAD,10;   C(LH)=PROG IN INDEX FIELD\r
97         XP DEVPTR,DEVOAD\r
98 ,                       C(RH)=CURRENT OUTPUT BUFFER ADDRESS\r
99         XP DEVCTR,11;\r
100 \f, I/O STATUS WORD ASSIGNMENTS\r
101 ,DATA MODES;  BITS 32-35\r
102         XP A,0;         ASCII\r
103         XP AL,1;                ASCII LINE\r
104         XP I,10;                IMAGE\r
105         XP IB,13;       IMAGE BINARY\r
106         XP B,14;                BINARY\r
107         XP DR,16                ;DUMP BY RECORDS\r
108         XP D,17         ;DUMP ACROSS RECORDS\r
109 , STATUS BITS\r
110 ,RIGHT HALF (USER)\r
111         XP IOWC,20;     DON'T COMPUTE WORD COUNT\r
112         XP IOCON,40;    CONTINUOUS (CONT=0)\r
113         XP IORDEL,100;  READ AND DELETE\r
114         XP IONRCK,100;  READ WITH NO. REREAD CHECK\r
115         XP IODEND,20000;        DATA END ENCOUNTERED\r
116         XP IODERR,200000;       DEVICE ERROR\r
117         XP IODTER,100000;       DATA ERROR\r
118         XP IOIMPM,400000;       IMPROPER MODE REQUESTED\r
119         XP IOBKTL,40000;        BLOCK TOO LARGE\r
120         XP IOACT,10000; DEVICE ACTIVE\r
121 , LEFT HALFF (SYSTEM)\r
122         XP IOW,1;               I/O WAIT\r
123         XP IOBEG,2;     VIRGIN DEVICE\r
124         XP IODISC,400000;       DISCONNECT REQUEST\r
125         XP IOFST,4;     NEXT ITEM WILL BE THE FIRST ITEM OF A BUFFER\r
126         XP IOSTRT,10;   IO READY TO START\r
127         XP IO,20;               OUT=1, IN=0\r
128         XP IOEND,40;    SERVICE ROUTINE HAS TRANSMITTED LAST DATA\r
129 \r
130 \r
131 ;LEFT HALF USRJDA (JOB DEVICE ASSIGNMENTS) UUO'S FOR THIS CHANNEL SINCE LAST INIT\r
132         XP INITB,400000;        INIT\r
133         XP IBUFB,200000;        INIT WITH INPUT BUFFER SPECIFIED\r
134         XP OBUFB,100000;        INIT WITH OUTPUT BUFFER SPECIFIED\r
135         XP LOOKB,40000; LOOKUP\r
136         XP ENTRB,20000; ENTER\r
137         XP INPB,10000;  INPUT\r
138         XP OUTPB,4000;  OUTPUT\r
139         XP CLOSB,2000;  CLOSE\r
140                                 ;RELEASE CLEARS THEM ALL\r
141 ;CLOSE UUO BITS\r
142         XP CLSOUT,1     ;INHIBIT CLOSING OUTPUT\r
143         XP CLSIN,2      ;INHIBIT CLOSING INPUT\r
144 \f, JOB BUFFER AREA HEADER\r
145         XP JBFADR,0;    BIT 0=1 IF THIS BUFFER RING HAS NEVER BEEN\r
146 ,                           REFERENCED FROM THE USER'S PROGRAM BY\r
147 ,                           AN INPUT OR OUTPUT COMMAND. \r
148 ,                       BITS 1-17=UNUSED\r
149 ,                       BITS 18-35=CURENT BUFFER ADDRESS\r
150         XP JBFPTR,1;    BYTE POINTER TO NEXT BYTE -1\r
151         XP JBFCTR,2;    POSITIVE ITEM COUNT\r
152 , JOB BUFFER HEADER             BIT 0=IOUSE\r
153         XP IOUSE,400000;            1 IF BUFFER IS FULL (OR BEING EMPTIED)\r
154 ,                       BITS 1-17=BUFFER SIZE\r
155 ,                       BITS 18-35=NEXT BUFFER ADDRESS\r
156 \f,SYSTEM PARAMETERS\r
157         XP USRMOD,10000;        USER MODE BIT IN APR FLAGS, PC WORD\r
158         XP IODONE,400000;\r
159 ,JOB STATUS WORD (JBTSTS)\r
160         XP IOWS,400000; IO WAIT SATISFIED\r
161         XP RUN,200000;  READY TO RUN OR IS RUNNING\r
162         XP JIOW,100000; JOB IN IO-WAIT STATE\r
163         XP DTW,40000;   DECTAPE CONTROL WAIT\r
164         XP DCW,20000;   DATA CONTROL WAIT\r
165         XP MTW,10000;   MAG TAPE CONTROL WIAT\r
166         XP JNA,4000;    JOB NUMBER ASSIGNED\r
167         XP JERR,2000;   JOB ERROR(ILLEGAL MEM. ETC.)\r
168 \r
169         XP RUNABLE,RUN+JNA;     STATUS BIT PATTERN FOR A JOB TO STAY RUNABLE\r
170 \f;SPECIAL ABSOLUTE LOCATIONS IN LOWER MEMORY\r
171 ;THESE ARE INTENDED TO BE EXAMINED AND CHANGED BY\r
172 ;USING THE DATA SWITCHES BEFORE SYSTEM IS STARTED AFTER BEING LOADED\r
173 ;ONLY TODAY AND BOOTIM NEED BE SET\r
174 ;ALL OTHERS ARE ASSEMBLED IN AND SHOULD BE SET ONLY IF A CHANGE IS DESIRED\r
175 \r
176 XP DDTMEM,37    ;MEMORY SIZE FOR SYSTEM DDT AND SYSMAK ONLY\r
177 XP DDTSYM,36    ;SYSTEM DDT SYMBOL TABLE POINTER (USED TO BE 77)\r
178 , SYSTEM MACROS\r
179 DEFINE  ADRCHK (A)\r
180 <       EXTERNAL ADRCK\r
181 DEFINE  ADRCHK (B)\r
182         <PUSHJ PDP,ADRCK\r
183         HRRZ TAC,B>\r
184         PUSHJ PDP,ADRCK\r
185         HRRZ TAC,A>\r
186 \r
187 \r
188        LIST\r
189 \f\r