Added SRCCOM.MAC
[retro-software/dec/tops10/v4.5.git] / src / dcsint.mac
1 TITLE   DCSINT - INT. SERV. FOR DATA COMMUNICATION SYSTEM 630 - V402\r
2 SUBTTL  M. FREDRIKSEN/TH/CHW  TS  7 MAY 69\r
3 XP      VDCSIT,402\r
4                 ;PUT VERSION NUMBER IN GLOB LISTING AND LOADER STORAGE MAP\r
5 \r
6 ;MODULAR HARDWARE INTERFACE WITH EITHER SCNSER OR TTYSER\r
7 \r
8 EXTERNAL SCNON,SCNOFF,TYPX\r
9 \r
10 IFE FTTTYSER,<XP FULTWX,200000>\r
11 \r
12 IFN FTTTYSER,<XP FULTWX,4>\r
13 \f;ACCUMULATOR ASSIGNMENTS\r
14 \r
15         CHREC=TEM       ;AC FOR CHARACTER\r
16         DDB=DEVDAT      ;ADDRESS OF DEVICE DATA BLOCK\r
17         LINE=TAC1       ;SCANNER LINE NUMBER\r
18         HPOS=DAT        ;HORIZONTAL POSITION OF TTY.(0-71)\r
19 \r
20 ;BYTE POINTERS\r
21 \r
22 EXTERNAL PLASTC\r
23 \r
24 \f;DEVICE DEPENDENT PORTION OF INITIALIZATION CODE\r
25 ;CALL:  MOVEI   TAC,CHANNEL NUMBER\r
26 ;       PUSHJ   PDP,SCNINI\r
27 \r
28 INTERNAL SCNINI\r
29 \r
30 DCSINI:\r
31 SCNINI: MOVEI   TAC,100000\r
32         CONO DCSA,4010          ;RELEASE XMITTER, RECEIVER\r
33         CONSZ DCSA, 1000\r
34         CONO DCSA, 4000\r
35         CONSZ DCSA, 10\r
36         DATAI DCSB, TAC1\r
37         SOJG TAC,.-4\r
38         CONO    DCSA,FSNCHN     ;ASSIGN INTERRUPT CHANNELS\r
39         POPJ    PDP,\r
40 \r
41 ;SCANNER INTERRUPT SERVICE ROUTINE.\r
42 \r
43 ENTRY DCSINT\r
44 \r
45 INTERNAL SCNINT\r
46 EXTERNAL SCNSAV,TCONLN,TTYTAB,XMTINT,TYPE,INUS2,RECINT,FSNCHN\r
47 \r
48 DCSINT:\r
49 SCNINT: CONSO DCSA,1010\r
50         JRST SCNINT\r
51         JSR SCNSAV\r
52         CONSO DCSA,10           ;RECEIVER FLAG?\r
53         JRST SCNIN1             ;NO,XMITTER FLAG\r
54         CONI DCSB,LINE          ;SCANNER INPUT.\r
55         DATAI DCSB, CHREC\r
56         CAIL    LINE,TCONLN     ;ARE WE ENABLED FOR THIS LINE NUMBER?\r
57         POPJ    PDP,            ;NO, DISMISS INTERRUPT\r
58         JRST    RECINT          ;RECEIVER INT. HANDLER\r
59 \f;COMMON PARTS OF CTY AND SCANNER INTERRUPT SERVICE ROUTINES.\r
60 \r
61 EXTERNAL INJEST,DDBSRC\r
62 INTERNAL TCOMM\r
63 \r
64 TCOMM:\r
65         SKIPE DDB,TTYTAB(LINE)  ;DATA BLOCK ASSIGNED?\r
66         JRST INUSE              ;YES\r
67         PUSHJ PDP,DDBSRC        ;SEARCH FOR FREE TTY DEV. DATA BLOCK\r
68         JRST TYPX               ;NONE FOUND, TYPE X\r
69         MOVEI HPOS,0            ;ASSUME TTY IS AT BEGIN OF FORM\r
70         CAILE LINE,TCONLN       ;PSEUDO CONSOLE?\r
71         JRST INJEST             ;YES\r
72         CAIE LINE,TCONLN        ;IS IT CTY?\r
73         CONSO DCSA,700          ;NO, IS IT HALF DUPLEX?\r
74         JRST INUS2              ;YES, ACCEPT CHAR AND PROCESS\r
75         JRST TYPE               ;NO, ECHO CHAR ON FULL DUPLEX\r
76                                 ;BEFORE PROCESSING IT\r
77 \r
78 SCNIN1:\r
79         DATAI DCSA,LINE         ;GET LINE NO. FROM FULL DUPLEX.\r
80         MOVEI TAC,FSNCHN\r
81         CONO DCSA,4000(TAC)     ;RELEASE XMITTER SCANNER\r
82         JRST    XMTINT          ;IN SCNSER OR TTYSER\r
83 \f;COMMON TO RECEIVE AND TRANSMIT.\r
84 \r
85 INUSE: HRRZS  DDB       ;LINE DISABLED IF RH TTYTAB=-1\r
86         CAIN DDB,-1\r
87         POPJ PDP,\r
88         MOVE IOS,DEVIOS(DDB)    ;SETUP IOS\r
89         CAIGE   LINE,TCONLN     ;CTY OR PTY?\r
90         CONSO DCSA,700          ;NO, HALF DUPLEX?\r
91         JRST INUS2              ;YES\r
92         TLNE IOS,FULTWX         ;IS THIS SELF ECHOEING FULL DUPLEX?\r
93         JRST INUS2              ;YES,(USER TYPED CONROL B)\r
94         CONO DCSB,(LINE)        ;FULL DUPLEX SCANNER. ECHO CHAR.\r
95         DATAO DCSA,CHREC\r
96         DPB CHREC,PLASTC\r
97         POPJ PDP,               ;DISMISS INTERRUPT\r
98 \f;ROUTINE TO OUTPUT A CHARACTER ON A LINE\r
99 ;CALLED FROM TYP OR TYPL IN SCNSER\r
100 \r
101 INTERNAL SCNTYP\r
102 \r
103 SCNTYP:\r
104 DCSTYP: CONO PI,SCNOFF          ;TURN SCANNER PI OFF IN CASE AT USER LEVEL\r
105                                 ;SO NO INTERRUPTS BETWEEN CONO, AND DATAO\r
106         CONO DCSB,(LINE)        ;NO\r
107         DATAO DCSA,CHREC\r
108         CONO PI,SCNON           ;TURN SCANNER PI BACK ON\r
109         SKIPE   DDB\r
110         DPB CHREC,PLASTC        ;SAVE CHAR FOR FULL DUPLEX\r
111         POPJ PDP,\r
112 \r
113 \r
114 \f       END\r