969957870711ff99de00f201516a3c4790f27d0e
[retro-software/dec/tops10/v4.5.git] / src / dlsint.mac
1 TITLE   DLSINT - INT. SERV. FOR DLS (DATA LINE SCANNER DC10)\r
2 SUBTTL  M.FREDRIKSEN/RCC TS  01 JUN 69 V005\r
3 XP      VDLSIT,005\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 EXTERN TYPX\r
9 \r
10 IFE FTTTYSER,<XP FULTWX,200000>\r
11 \r
12 IFN FTTTYSER,<XP FULTWX,4>\r
13 \r
14 ;ACCUMULATOR ASSIGNMENTS\r
15 \r
16         CHREC=TEM       ;AC FOR CHARACTER\r
17         DDB=DEVDAT      ;ADDRESS OF DEVICE DATA BLOCK\r
18         LINE=TAC1       ;SCANNER LINE NUMBER\r
19         HPOS=DAT        ;HORIZONTAL POSITION OF TTY.(0-71)\r
20 \r
21 ;BYTE POINTERS\r
22 \r
23 EXTERNAL PLASTC\r
24 \r
25 \r
26 DLS=240                 ;DC10 DEVICE NUMBER\r
27 ;BITS IN CHREC TO COMMUNCATE WITH DLS\r
28 \r
29 USDRLN=100              ;USE DIRECTED LINE NUMBER\r
30 TDSABL=400              ;TRANSMIT DISABLE\r
31 RCVBIT=400              ;RECEIVE BIT AFER DATAI DLS,CHREC\r
32 \f\r
33 ;DEVICE DEPENDENT PORTION OF INITIALIZATION CODE\r
34 ;CALL:  MOVEI   TAC,CHANNEL NUMER\r
35 ;       PUSHJ   PDP,SCNINI\r
36 \r
37 INTERNAL SCNINI\r
38 DLSINI:\r
39 SCNINI: CONO    DLS,40          ;INIT DLS COMPLETELY (I/O/RESET)\r
40         CONO    DLS,(TAC)       ;ASSIGN PI CHANNEL NUMBER\r
41         POPJ    PDP,\r
42 \r
43 ;SCANNER INTERRUPT SERVICE ROUTINE\r
44 \r
45 ENTRY DLSINT\r
46 \r
47 INTERNAL SCNINT\r
48 EXTERNAL SCNSAV,TCONLN,TTYTAB,XMTINT,TYPE,INUS2,RECINT\r
49 \r
50 DLSINT:\r
51 SCNINT: CONSO   DLS,30          ;ANY INTERRUPTS ON DLS\r
52         JRST SCNINT             ;NO\r
53         JSR SCNSAV\r
54         DATAI   DLS,CHREC       ;GET CHARACTER & LINE INFO\r
55         HLRZ    LINE,CHREC      ;PUT LINE NUMBER IN AC LINE\r
56         CAIL    LINE,TCONLN     ;ARE WE ENABLED FOR THIS LINE NUMBER?\r
57         JRST    SCNIN2          ;NO,TURN OFF TRANSMIT(IF ON) AND DISMISS\r
58         TRNE    CHREC,RCVBIT    ;WAS IT A RECEIVER INTERRUPT?\r
59         JRST    RECINT          ;YES, RECEIVER INT. HANDLER\r
60         DATAO   DLS,[EXP TDSABL]        ;CLEAR HARDWARE FLAG\r
61         JRST    XMTINT          ;GO PROCESS CHAR IN SCNSRF OR SCNSRH\r
62 \f\r
63 ;COMMON PARTS OF CTY AND SCANNER INTERRUPT SERVICE ROUTINES.\r
64 \r
65 EXTERNAL INJEST,DDBSRC\r
66 INTERNAL TCOMM\r
67 \r
68 TCOMM:\r
69         SKIPE DDB,TTYTAB(LINE)  ;DATA BLOCK ASSIGNED?\r
70         JRST INUSE              ;YES\r
71         PUSHJ PDP,DDBSRC        ;SEARCH FOR FREE TTY DEV. DATA BLOCK\r
72         JRST TYPX               ;NONE FOUND, TYPE X\r
73         MOVEI HPOS,0            ;ASSUME TTY IS AT BEGIN OF FORM\r
74         CAILE LINE,TCONLN       ;PSEUDO CONSOLE?\r
75         JRST INJEST             ;YES\r
76         CAIN    LINE,TCONLN     ;IS IT THE CTY ?\r
77         JRST INUS2              ;YES, ACCPT CHAR AND PROCESS\r
78         JRST TYPE               ;NO, ECHO CHAR ON FULL DUPLEX\r
79                                 ;BEFORE PROCESSING IT\r
80 \r
81                                 ;HERE IF LINE NUMBER TOO BIG\r
82 SCNIN2: DATAO   DLS,[EXP TDSABL]                ;SET TRANSMIT DISABLE BIT AND OUTPUT IT\r
83                                 ;(JUST INCASE, ELSE IT WILL INTERRUPT IMMEDIATLY AGAIN)\r
84         POPJ    PDP,            ;DISMISS INTERRUPT\r
85 \f\r
86 \r
87 ;COMMON TO RECEIVE AND TRANSMIT.\r
88 \r
89 INUSE: HRRZS  DDB       ;LINE DISABLED IF RH TTYTAB=-1\r
90         CAIN DDB,-1\r
91         POPJ PDP,\r
92         MOVE IOS,DEVIOS(DDB)    ;SETUP IOS\r
93         CAIL    LINE,TCONLN     ;CTY OR PTY ?\r
94         JRST INUS2              ;YES\r
95         TLNE IOS,FULTWX         ;IS THIS SELF ECHOEING FULL DUPLEX?\r
96         JRST INUS2              ;YES,(USER TYPED CONROL B)\r
97         HRL     CHREC,LINE      ;INSERT LINE NUMBER IN DATAO\r
98         TLO     CHREC,USDRLN\r
99         TRZ     CHREC,TDSABL\r
100         DATAO   DLS,CHREC\r
101         DPB CHREC,PLASTC\r
102         POPJ PDP,               ;DISMISS INTERRUPT\r
103 \r
104 ;ROUTINE TO OUTPUT A CHARACTER ON A LINE\r
105 ;CALLED FROM TYP OR TYPL IN SCNSER\r
106 \r
107 INTERNAL SCNTYP\r
108 \r
109 SCNTYP:\r
110 DLSTYP: HRL     CHREC,LINE      ;SET UP LINE NUMBER IN CHREC\r
111         TLO     CHREC,USDRLN            ;USE THAT AS DIRECTED LINE#\r
112         TRZ     CHREC,TDSABL            ;INSURE TRANSMISSION NOT DISABLED\r
113         DATAO   DLS,CHREC               ;OUT IT GOES\r
114         SKIPE   DDB\r
115         DPB CHREC,PLASTC        ;SAVE CHAR FOR FULL DUPLEX\r
116         POPJ PDP,\r
117 \r
118         LIT\r
119 \r
120 DLSEND: END\r