Trailing-Edge
-
PDP-10 Archives
-
BB-M081Z-SM
-
monitor-sources/rsxsrv.mac
There are 19 other files named rsxsrv.mac in the archive. Click here to see a list.
; Edit= 9148 to RSXSRV.MAC on 21-Feb-90 by GSCOTT
;Update copyright date.
; Edit= 9116 to RSXSRV.MAC on 18-Jul-89 by GSCOTT
;After a TTYSTP don't attempt to shut off the line if it is the CTY.
; Edit= 8933 to RSXSRV.MAC on 23-Aug-88 by LOMARTIRE
;Improve BUG. documentation
; UPD ID= 8640, RIP:<7.MONITOR>RSXSRV.MAC.5, 11-Feb-88 20:16:52 by RASPUZZI
;TCO 7.1223 - Put back the ! that ended a comment. It got ripped out by
; previous edit.
; UPD ID= 8609, RIP:<7.MONITOR>RSXSRV.MAC.4, 11-Feb-88 17:18:50 by GSCOTT
;TCO 7.1218 - Update copyright date.
; UPD ID= 8442, RIP:<7.MONITOR>RSXSRV.MAC.3, 4-Feb-88 16:22:48 by GSCOTT
;TCO 7.1210 - We don't want a dump of TTYSTP, set it normally not dumpable.
; *** Edit 7435 to RSXSRV.MAC by GSCOTT on 3-Apr-87, for SPR #21488
; Enable control of DTR on RSX20F lines by MTOPR functions .MOHUP and .MOUHU
; and raise and lower DTR when a TTY is opened and closed if it's not CTRLTT
; *** Edit 7342 to RSXSRV.MAC by RASPUZZI on 28-Jul-86, for SPR #20938
; Get rid of a race condition between TTYSRV and RSXSRV by putting the XON/XOFF
; logic in TTCH7 (TTYSRV) after chars have been moved from TTBBUF to their
; individual line buffers.
; *** Edit 7310 to RSXSRV.MAC by RASPUZZI on 2-Jun-86
; Prevent SKDPF1 BUGHLTs by making TTNTM1, TTSNTF & FENTM resident routines
; *** Edit 7195 to RSXSRV.MAC by JROSSELL on 15-Nov-85
; Do not allocate space when setting line speed for an unprileged user from a
; remote or autobaud terminal
; UPD ID= 2177, SNARK:<6.1.MONITOR>RSXSRV.MAC.5, 5-Jun-85 10:58:25 by MCCOLLUM
;TCO 6.1.1406 - Update copyright notice.
; UPD ID= 1930, SNARK:<6.1.MONITOR>RSXSRV.MAC.4, 7-May-85 22:09:41 by MCCOLLUM
;TCO 6.1.1238 - Fix BUG. documentation
; UPD ID= 957, SNARK:<6.1.MONITOR>RSXSRV.MAC.3, 5-Nov-84 19:17:03 by PRATT
;TCO 6.1.1032 - Make TTYSRV compile independently:
; Create RSXSRV.MAC and move FE code to it from TTPHDV
; Duplicate the TTPHDV edit history here and in NRTSRV.MAC
; Make many symbols global for TTYSRV
; UPD ID= 941, SNARK:<6.1.MONITOR>TTPHDV.MAC.22, 1-Nov-84 14:49:14 by PRATT
;Merge m60: edit 4900
; UPD ID= 4900, SNARK:<6.MONITOR>TTPHDV.MAC.91, 8-Oct-84 05:07:38 by TBOYLE
;TCO 6.2238 - handle speed setting properly.
; UPD ID= 930, SNARK:<6.1.MONITOR>TTPHDV.MAC.20, 28-Oct-84 11:12:08 by PRATT
;TCO 6.1.1022 - Add support code for NTINF jsys:
; Add field NRRID for remote host ID
; Do a read connect info to get the remote host ID just before accepting
; UPD ID= 713, SNARK:<6.1.MONITOR>TTPHDV.MAC.18, 26-Jul-84 08:31:11 by MCINTEE
;Add CTERM - NRT support
; UPD ID= 578, SNARK:<6.1.MONITOR>TTPHDV.MAC.17, 29-May-84 14:57:05 by MCINTEE
;Fix another of previous
; UPD ID= 575, SNARK:<6.1.MONITOR>TTPHDV.MAC.16, 29-May-84 13:19:03 by MCINTEE
;Fix detach/attach bug in NRT (TNUKIL)
; UPD ID= 545, SNARK:<6.1.MONITOR>TTPHDV.MAC.15, 23-May-84 07:49:45 by MCINTEE
;Merge from M60:
; UPD ID= 4178, SNARK:<6.MONITOR>TTPHDV.MAC.89, 7-May-84 13:32:27 by LOMARTIRE
;More TCO 6.2047 - Fix all possible cases of PI 6 NOSKED/OKSKED from TTYDED
; UPD ID= 381, SNARK:<6.1.MONITOR>TTPHDV.MAC.14, 12-Mar-84 14:58:09 by MCINTEE
;Fix logout bug in NRT.
; UPD ID= 332, SNARK:<6.1.MONITOR>TTPHDV.MAC.13, 13-Feb-84 14:35:32 by MCINTEE
;Make NRTSOF get more buffers
; UPD ID= 293, SNARK:<6.1.MONITOR>TTPHDV.MAC.12, 16-Jan-84 08:33:37 by MCINTEE
;Merge from M60:
; UPD ID= 3397, SNARK:<6.MONITOR>TTPHDV.MAC.88, 3-Jan-84 10:38:46 by PRATT
;TCO 6.1796 - Create TTNTM1, sets/clears TTNTS in fe only.
; UPD ID= 286, SNARK:<6.1.MONITOR>TTPHDV.MAC.11, 5-Jan-84 17:33:38 by NICHOLS
;Fix previous edit, it should give up (RET), not go to MCSRV2 or MCSRV5
; UPD ID= 282, SNARK:<6.1.MONITOR>TTPHDV.MAC.10, 27-Dec-83 23:23:52 by GROSSMAN
;Fix bug in MCSRV when NRTUNB fails, go to MCSRV2, not MCSRV5.
; UPD ID= 218, SNARK:<6.1.MONITOR>TTPHDV.MAC.9, 17-Oct-83 15:48:54 by MCINTEE
;Change IBFRCC to IBRFC1
; UPD ID= 197, SNARK:<6.1.MONITOR>TTPHDV.MAC.8, 25-Aug-83 07:55:07 by MCINTEE
;TCO 6.1784 - In TTSETH, fix logic that sets TTNPM
; UPD ID= 191, SNARK:<6.1.MONITOR>TTPHDV.MAC.7, 5-Aug-83 12:29:25 by MCINTEE
;Yet another NRT bug fix. Add a SETZRO TTOTP in NETUSER release code.
; UPD ID= 189, SNARK:<6.1.MONITOR>TTPHDV.MAC.6, 4-Aug-83 09:46:46 by MCINTEE
;TCO 6.1718 - Fix code so LOCAL AUTOBAUD lines don't get the REMOTE bit set
; when the speed is recieved from the FE
; UPD ID= 187, SNARK:<6.1.MONITOR>TTPHDV.MAC.5, 2-Aug-83 15:52:22 by MCINTEE
;More TCO 6.1426 - remove an extra SETZRO TTPRM
;TCO 6.1600 - Allow LOCAL lines to be set as autobaud
; UPD ID= 104, SNARK:<6.1.MONITOR>TTPHDV.MAC.8, 18-Apr-83 13:12:19 by PAETZOLD
;TCO 6.1557 - TCP Merge
; UPD ID= 94, SNARK:<6.1.MONITOR>TTPHDV.MAC.7, 28-Mar-83 14:03:38 by MCINTEE
;Do the previous edit in a cleaner manner
; UPD ID= 93, SNARK:<6.1.MONITOR>TTPHDV.MAC.6, 28-Mar-83 12:35:46 by MCINTEE
;Fix bug in NRT that causes an occasional NSKDIS bughlt.
; UPD ID= 2039, SNARK:<6.MONITOR>TTPHDV.MAC.83, 20-Mar-83 12:46:39 by HALL
;TCO 6.1502 - Allow resident free space in extended section
; Use one-word global byte pointers to point to sendall buffer and
; I/O buffers, which must be in section 0 for the DTE.
; Convert one-word global to one-word local before handing to DTESRV
; Change handling of end of I/O buffers, and definition of WRPMSK,
; to reflect use of one-word globals
; In FNDEND, use ADJBP to decrement byte pointer instead of previous hack
; UPD ID= 1985, SNARK:<6.MONITOR>TTPHDV.MAC.82, 14-Mar-83 08:48:34 by HALL
;TCO 6.1502 - Allow resident free space in extended section
; Add EA.ENT to TTDTRM
; UPD ID= 1970, SNARK:<6.MONITOR>TTPHDV.MAC.81, 10-Mar-83 19:11:06 by HALL
;TCO 6.1502 - Allow resident free space in extended section
; Add EA.ENT to TTYINT,TTSPST,TTYDON,TTYDLU,TTYHGU,TTYSLA,IDCTY,
; DTESTO,DFNDL1
; UPD ID= 1945, SNARK:<6.MONITOR>TTPHDV.MAC.80, 9-Mar-83 10:16:58 by HALL
;TCO 6.1502 - Allow resident free space in extended section
; Change call to ASGRSB to set RS%SE0
; UPD ID= 4, SNARK:<6.1.MONITOR>TTPHDV.MAC.2, 2-Feb-83 07:38:59 by MCINTEE
;TCO 6.1485 - Fix TCO 6.1480, put TT%XFF in dynamic storage block.
; UPD ID= 1714, SNARK:<6.MONITOR>TTPHDV.MAC.78, 28-Jan-83 10:56:17 by MURPHY
;More 6.1390 - Add dummy symbol if no FE code.
; UPD ID= 1711, SNARK:<6.MONITOR>TTPHDV.MAC.77, 27-Jan-83 22:58:02 by WEAVER
;TCO 6.1480 - Only send XOFF/XON status to front-end if TTXFF (XOFF FORCE)
;is set.
; UPD ID= 1572, SNARK:<6.MONITOR>TTPHDV.MAC.76, 27-Dec-82 08:30:12 by GRANT
;TCO 6.1426 - When closing an NVT connection, don't undo TTPRM if the line
; is an MCB TTY or the CTY
; UPD ID= 1533, SNARK:<6.MONITOR>TTPHDV.MAC.75, 14-Dec-82 09:55:48 by MURPHY
;TCO 5.1.1114 - Index needed at SNDXN2+8L to fix XOFF/XON for incoming chars.
; UPD ID= 1489, SNARK:<6.MONITOR>TTPHDV.MAC.74, 30-Nov-82 11:45:34 by WEAVER
;TCO 6.1393 - Use Break Through Write to send XONs and XOFFs to a line
; UPD ID= 1485, SNARK:<6.MONITOR>TTPHDV.MAC.73, 29-Nov-82 13:36:14 by MURPHY
;TCO 6.1390 - Shut off 20F line if more than 2 noise characters in 1 second.
; UPD ID= 1332, SNARK:<6.MONITOR>TTPHDV.MAC.72, 13-Oct-82 07:04:19 by GRANT
;More of previous edit - fix bug in TNTCLS's debugging code
; UPD ID= 1312, SNARK:<6.MONITOR>TTPHDV.MAC.71, 9-Oct-82 10:28:22 by GRANT
;TCO 5.1.1089 - Rewrite TNTCLS, save link IDs rather than LL block addresses
; UPD ID= 1086, SNARK:<6.MONITOR>TTPHDV.MAC.70, 16-Aug-82 14:31:44 by MURPHY
;TCO 6.1202 - Pass proper arg to TTCBF9 at TINET3.
; UPD ID= 994, SNARK:<6.MONITOR>TTPHDV.MAC.69, 18-Jul-82 13:52:18 by MURPHY
;TCO 5.1.1048 - Add TTCLSH to clear "set host" state when closing LL.
; UPD ID= 991, SNARK:<6.MONITOR>TTPHDV.MAC.68, 18-Jul-82 13:30:31 by MURPHY
;TCO 5.1.1047 - Put NOSKED before call to TNTCLS to interlock ULLCZQ.
; UPD ID= 990, SNARK:<6.MONITOR>TTPHDV.MAC.67, 18-Jul-82 13:28:02 by MURPHY
;TCO 5.1.1046 - Check TTNUS before call to TNUREC.
; UPD ID= 970, SNARK:<6.MONITOR>TTPHDV.MAC.66, 30-Jun-82 08:55:45 by GRANT
;TCO 5.1.1038 - Remove CALL SQIACK in DECnet NVT processor
; UPD ID= 328, SNARK:<6.MONITOR>TTPHDV.MAC.58, 19-Jan-82 15:23:21 by MURPHY
;TCO 5.1688 - report TTYSTP only once per line
; UPD ID= 851, SNARK:<6.MONITOR>TTPHDV.MAC.65, 6-Jun-82 13:29:44 by MURPHY
;TCO 6.1147 - Move bugdefs from BUGS.MAC to here and put them in-line.
; UPD ID= 819, SNARK:<6.MONITOR>TTPHDV.MAC.64, 3-Jun-82 07:42:18 by GRANT
;TCO 6.1154 - Fix failure return from CALL SNDCHK in MCSTRO.
;Change comment in CHKLLT.
; UPD ID= 800, SNARK:<6.MONITOR>TTPHDV.MAC.63, 1-Jun-82 08:31:46 by GRANT
;TCO 6.1148 - Remove code which breaks DECnet connection when a character is
;received on a line on which there is no job
; UPD ID= 771, SNARK:<6.MONITOR>TTPHDV.MAC.62, 19-May-82 17:20:19 by MILLER
;TCO 6.1066 AGAIN. Make RSP output work in secondary protocol
; UPD ID= 505, SNARK:<6.MONITOR>TTPHDV.MAC.61, 16-Mar-82 07:01:10 by MILLER
; UPD ID= 476, SNARK:<6.MONITOR>TTPHDV.MAC.60, 13-Mar-82 14:49:59 by MILLER
;TCO 6.1066 AGAIN. Add some of the RSP support code
; UPD ID= 458, SNARK:<6.MONITOR>TTPHDV.MAC.59, 11-Mar-82 11:47:06 by MILLER
;TCO 6.1066. Make MCSRV internal
; UPD ID= 328, SNARK:<6.MONITOR>TTPHDV.MAC.58, 19-Jan-82 15:23:21 by MURPHY
;TCO 5.1688 - report TTYSTP only once per line
; UPD ID= 150, SNARK:<6.MONITOR>TTPHDV.MAC.57, 21-Oct-81 12:14:07 by GRANT
;TCO 5.1594 - Move code from MCTYI2 and MCTYI3 into NSPSRV
; UPD ID= 193, SNARK:<5.MONITOR>TTPHDV.MAC.56, 17-Sep-81 13:19:49 by GRANT
;Reinstate the UPD ID=153 edit. Also, it should say TCO 5.1490 no 5.1409
; UPD ID= 172, SNARK:<5.MONITOR>TTPHDV.MAC.55, 14-Sep-81 13:44:20 by GRANT
;Temporarily undo previous edit
; UPD ID= 153, SNARK:<5.MONITOR>TTPHDV.MAC.54, 8-Sep-81 17:31:11 by GRANT
;Needed for TCO 5.1490 - Remove segment number handling in MCTYI3
; UPD ID= 172, SNARK:<5.MONITOR>TTPHDV.MAC.55, 14-Sep-81 13:44:20 by GRANT
;Temporarily undo previous edit
; UPD ID= 153, SNARK:<5.MONITOR>TTPHDV.MAC.54, 8-Sep-81 17:31:11 by GRANT
;Needed for TCO 5.1409 - Remove segment number handling in MCTYI3
;Minor changes needed for handling LLOMSG queue in MCTYI3 and MCTYI2
; UPD ID= 138, SNARK:<5.MONITOR>TTPHDV.MAC.53, 2-Sep-81 16:38:01 by GRANT
;Eliminate cause of OKSKBG BUGHLT - in TNHCLS, NOSKED before calling TTCOB5
; UPD ID= 2307, SNARK:<5.MONITOR>TTPHDV.MAC.52, 8-Jul-81 11:20:59 by MURPHY
;CALL REQNS INSTEAD OF TNUSND FROM TTCHI
; UPD ID= 2295, SNARK:<5.MONITOR>TTPHDV.MAC.51, 6-Jul-81 13:50:54 by MURPHY
;DEBUG CODE TO RECORD DEAD LINKS
;PROCESS ALL INPUT IN TINET BEFORE QUITTING
; UPD ID= 2269, SNARK:<5.MONITOR>TTPHDV.MAC.50, 29-Jun-81 17:48:31 by MURPHY
;ANTX01
; UPD ID= 2190, SNARK:<5.MONITOR>TTPHDV.MAC.49, 11-Jun-81 15:59:54 by MURPHY
;CHANGE TQNx TO TMNx REFLECTING CHANGE IN MACSYM
;DITTO
; UPD ID= 1867, SNARK:<5.MONITOR>TTPHDV.MAC.45, 21-Apr-81 23:41:55 by MURPHY
;DITTO
; UPD ID= 1865, SNARK:<5.MONITOR>TTPHDV.MAC.44, 21-Apr-81 18:29:43 by MURPHY
;DITTO
; UPD ID= 1830, SNARK:<5.MONITOR>TTPHDV.MAC.43, 17-Apr-81 14:19:33 by MURPHY
;MAKE LINE SHUTOFF FOR 5 SECONDS INSTEAD OF 3
;REVISE SENDALL LOGIC
;REVISE STARTUP LOGIC
; UPD ID= 1752, SNARK:<5.MONITOR>TTPHDV.MAC.42, 20-Mar-81 13:32:21 by MURPHY
;Ditto
; UPD ID= 1745, SNARK:<5.MONITOR>TTPHDV.MAC.41, 19-Mar-81 23:11:04 by MURPHY
;Fix problems with line shut-off and XOFF/XON logic.
; UPD ID= 1663, SNARK:<5.MONITOR>TTPHDV.MAC.40, 11-Mar-81 16:30:30 by MURPHY
;Fix up some failures of DTEQ which were not handled
; UPD ID= 1554, SNARK:<5.MONITOR>TTPHDV.MAC.39, 11-Feb-81 17:33:25 by MURPHY
;MAKE SURE LINE GETS RESTARTED AFTER STOP BECAUSE INBFR OR TTBBUF FULL
; UPD ID= 1550, SNARK:<5.MONITOR>TTPHDV.MAC.38, 10-Feb-81 17:57:41 by MURPHY
;FIX XOFF DURING SYSTEM STARTUP PROBLEM
;CHANGE NAMES TO BLSUB., BLCAL.
;DITTO
; UPD ID= 1477, SNARK:<5.MONITOR>TTPHDV.MAC.35, 22-Jan-81 12:24:13 by MURPHY
;FIX TTQAD PROBLEMS
; UPD ID= 1377, SNARK:<5.MONITOR>TTPHDV.MAC.34, 22-Dec-80 18:25:37 by MURPHY
;<5.MONITOR>TTPHDV.MAC.33, 17-Dec-80 18:10:33, EDIT BY MURPHY
;TNUREC
; UPD ID= 1361, SNARK:<5.MONITOR>TTPHDV.MAC.32, 17-Dec-80 15:46:27 by MURPHY
;CHKLLT
;<5.MONITOR>TTPHDV.MAC.31, 12-Dec-80 11:11:34, EDIT BY MURPHY
;<5.MONITOR>TTPHDV.MAC.30, 12-Dec-80 10:34:51, EDIT BY MURPHY
;<5.MONITOR>TTPHDV.MAC.29, 12-Dec-80 10:23:26, EDIT BY MURPHY
;FLOW CONTROL
;<5.MONITOR>TTPHDV.MAC.28, 9-Dec-80 15:16:03, EDIT BY MURPHY
;CKMCOU
;<5.MONITOR>TTPHDV.MAC.27, 5-Dec-80 16:49:34, EDIT BY MURPHY
;VARIOUS MCB FIXES AND ENHANCEMENTS
;<5.MONITOR>TTPHDV.MAC.25, 24-Nov-80 16:46:49, EDIT BY MURPHY
;Requeue line if SQILS or SQIACK fails
;<5.MONITOR>TTPHDV.MAC.24, 21-Nov-80 18:29:16, EDIT BY MURPHY
;FLUSH LINK IF INPUT AND NO JOB
; UPD ID= 1301, SNARK:<5.MONITOR>TTPHDV.MAC.23, 19-Nov-80 17:05:35 by MURPHY
;LOCAL XON,XOFF OPTION FOR NVTS
; UPD ID= 1290, SNARK:<5.MONITOR>TTPHDV.MAC.22, 18-Nov-80 16:45:45 by MURPHY
;<5.MONITOR>TTPHDV.MAC.21, 31-Oct-80 17:37:34, EDIT BY MURPHY
;<5.MONITOR>TTPHDV.MAC.20, 30-Oct-80 22:59:18, EDIT BY MURPHY
;<5.MONITOR>TTPHDV.MAC.19, 21-Oct-80 12:10:07, EDIT BY MURPHY
;<5.MONITOR>TTPHDV.MAC.18, 20-Oct-80 17:12:52, EDIT BY MURPHY
;<5.MONITOR>TTPHDV.MAC.17, 20-Oct-80 14:40:25, EDIT BY MURPHY
;<5.MONITOR>TTPHDV.MAC.16, 7-Oct-80 15:27:36, EDIT BY MURPHY
;<5.MONITOR>TTPHDV.MAC.15, 6-Oct-80 11:32:21, EDIT BY MURPHY
; UPD ID= 1126, SNARK:<5.MONITOR>TTPHDV.MAC.14, 5-Oct-80 15:02:40 by MURPHY
;DITTO
;<5.MONITOR>TTPHDV.MAC.13, 3-Oct-80 14:04:57, EDIT BY MURPHY
; UPD ID= 1120, SNARK:<5.MONITOR>TTPHDV.MAC.12, 3-Oct-80 12:21:22 by MURPHY
;DITTO
; UPD ID= 1113, SNARK:<5.MONITOR>TTPHDV.MAC.11, 3-Oct-80 01:00:51 by MURPHY
;NVT IMPROVEMENTS
; UPD ID= 1077, SNARK:<5.MONITOR>TTPHDV.MAC.10, 1-Oct-80 10:37:44 by MURPHY
;RELEVANT END STATEMENTS FOR STKVAR, ETC.
; UPD ID= 1063, SNARK:<5.MONITOR>TTPHDV.MAC.9, 30-Sep-80 10:16:58 by MURPHY
;DITTO
; UPD ID= 1057, SNARK:<5.MONITOR>TTPHDV.MAC.8, 26-Sep-80 12:13:03 by MURPHY
;MCB FIXES
; UPD ID= 944, SNARK:<5.MONITOR>TTPHDV.MAC.7, 20-Aug-80 20:09:15 by MURPHY
;MCB FIXES
; UPD ID= 925, SNARK:<5.MONITOR>TTPHDV.MAC.6, 20-Aug-80 10:21:12 by MURPHY
;INCLUDE MCB DEVICE
; UPD ID= 699, SNARK:<5.MONITOR>TTPHDV.MAC.5, 25-Jun-80 17:23:34 by MURPHY
;REMOVE TTDBEF REDUNDANT SUBROUTINE
;MERGE TTFEDV AND TTDZDV FILES INTO TTPHDV
;CHANGE DEVICE VECTORING
; UPD ID= 645, SNARK:<5.MONITOR>TTFEDV.MAC.4, 16-Jun-80 12:09:09 by MURPHY
;CLEAN UP VECTOR COMMENTS
; UPD ID= 443, SNARK:<5.MONITOR>TTFEDV.MAC.3, 15-Apr-80 09:41:02 by KONEN
;TCO 4.1.1143 -- Check for XOFF before storing character in big buff.
; UPD ID= 405, SNARK:<5.MONITOR>TTFEDV.MAC.2, 3-Apr-80 16:06:55 by HALL
;CHANGES TO WRITE-PROTECT THE RESIDENT MONITOR:
; CHANGE ALL REFERENCES TO TT1LIN TO EXPECT A TABLE
;<4.1.MONITOR>TTFEDV.MAC.52, 16-Nov-79 11:29:17, EDIT BY MILLER
;ASGALL NOW SKIPS
;<4.MONITOR>TTFEDV.MAC.51, 1-Nov-79 17:15:09, EDIT BY MILLER
;Previous edit lines deleted
; COPYRIGHT (c) DIGITAL EQUIPMENT CORPORATION 1976, 1990.
; ALL RIGHTS RESERVED.
;
; THIS SOFTWARE IS FURNISHED UNDER A LICENSE AND MAY BE USED AND COPIED
; ONLY IN ACCORDANCE WITH THE TERMS OF SUCH LICENSE AND WITH THE
; INCLUSION OF THE ABOVE COPYRIGHT NOTICE. THIS SOFTWARE OR ANY OTHER
; COPIES THEREOF MAY NOT BE PROVIDED OR OTHERWISE MADE AVAILABLE TO ANY
; OTHER PERSON. NO TITLE TO AND OWNERSHIP OF THE SOFTWARE IS HEREBY
; TRANSFERRED.
;
; THE INFORMATION IN THIS SOFTWARE IS SUBJECT TO CHANGE WITHOUT NOTICE
; AND SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL EQUIPMENT
; CORPORATION.
;
; DIGITAL ASSUMES NO RESPONSIBILITY FOR THE USE OR RELIABILITY OF ITS
; SOFTWARE ON EQUIPMENT THAT IS NOT SUPPLIED BY DIGITAL.
SEARCH TTYDEF,PROLOG
TTITLE (RSXSRV,RSXSRV,< - Front End Terminal Support>)
RESCD
SUBTTL FRONT-END DEPENDENT CODE
;THIS MODULE IS NECESSARY TO SUPPORT THE KL10 -DTE20 INTERFACE
;FOR TTYSRV. IT DOES ALL THE DEVICE SPECIFIC FUNCTIONS AND
;PROCESSES DATA TO AND FROM THE FRONT END.
MAXABC==TTBSIZ/2 ;MAX ENTRIES ALLOWED IN BIGBUF FOR THIS
; LINE WHEN LINE IS SHUT OFF
;(CAN'T BE IN TTYDEF BECAUSE TTBSIZ IS DEFINED
; IN STG)
;DEFINITIONS FOR TTDEV FOR FE TYPE LINES
;DEFINITIONS FOR TT.FE LINE TYPE
DEFSTR TTFCT,TTDEV,27,8 ;NUMBER BYTES IN FRONT END
DEFSTR TTFMC,TTDEV,35,8 ;MAX BYTES IN FRONT END
SPCLIN==4 ;HIGHEST SPECIAL LINE NUMBER
RS TOTFCT,1 ;TOTAL BYTES IN FE
RS MAXFCT,1 ;TOTAL CAPACITY OF FE
COMMENT ! ;FOR INFO ONLY, ACTUAL DEFS IN PROKL
;THE FRONT END FUNCTION CODES
.DFLCI==1 ;LINE COUNT IS
.DFHSD==:3 ;HERE IS STRING DATA
.DFHLC==:4 ;HERE ARE LINE CHARACTERS
.DFRDS==:5 ;REQUEST DEVICE STATUS
.DFSDO==:6 ;SPECIAL DEVICE OPERATION
.DFLPC==1 ;LOAD PAGE COUNTER
.DFSTS==:7 ;HERE IS DEVICE STATUS
.DFESD==:10 ;ERROR ON DEVICE
.DFRTD==:11 ;REQUEST TIME OF DAY
.DFHTD==:12 ;HERE IS TIME OF DAY
.DFFDO==:13 ;FLUSH OUTPUT (SENT TO 11 ONLY)
.DFSTA==:14 ;SEND TO ALL (SENT TO 11 ONLY)
.DFLDU==:15 ;A LINE DIALED UP (FROM 11 ONLY)
.DFLHU==:16 ;A LINE HUNG UP OR LOGGED OUT
.DFLBE==:17 ;LINE BUFFER BECAME EMPTY
.DFXOF==:20 ;XOF COMMAND TO THE FE
.DFXON==:21 ;XON COMMAND TO THE FE
.DFSPD==:22 ;SET TTY LINE SPEED
.DFHLA==:23 ;HERE IS LINE ALLOCATION
.DFHRW==:24 ;HERE IS -11 RELOAD WORD
.DFACK==:25 ;GO ACK ALL DEVICES AND UNITS
.DFTOL==:26 ;TURN OFF/ON LINE
.DFTLO==:0 ;TURN IT OFF
.DFTOO==:1 ;TURN IT ON
.DFEDR==:27 ;ENABLE/DISABLE DATASETS
.DFLTR==:30 ;LOAD TRANSLATION RAM
.DFLVF==:31 ;LOAD VFU
.DFMSG==:32 ;SUPPRESS SYSTEM MESSAGES TO TTY
.DFKLS==:33 ;SEND KLINIK DATA TO THE -11
.DFXEN==:34 ;ENABLE XON (SENT TO 11 ONLY)
.DFBKW==:35 ;BREAK-THROUGH WRITE
.DFDBN==:36 ;DEBUG MODE ON
.DFDBF==:37 ;DEBUG MODE OFF
! ;[7.1223] End of COMMENT
RESCD
; CLEAR OUTPUT BUFFER ROUTINE
TTCOB4::STKVAR <TTCBSV>
MOVEM B,TTCBSV ;SAVE ADDRESS OF DYNAMIC DATA
DYNST ;GET LINE NUMBER
MOVE D,B ;GET COPY OF LINE NUMBER
MOVS C,B ;LINE NUMBER
MOVEI B,.FEDLS ;GET DEVICE CODE
MOVE A,MSTRDT ;MASTER DTE, NO POST
CALL FIXARG ;GET PROPER ARGS
EXCH D,TTCBSV ;GET BACK DYNAMIC DATA
TMNE TTOTP,(D) ;OUTPUT IN PROGRESS?
JRST [ EXCH D,TTCBSV ;YES. GET BACK ORIGINAL ARGUMENT
CALL DTEFLO ;YES, FLUSH DTE REQUESTS
JRST TTCBF5]
EXCH D,TTCBSV ;GET BACK ORIGINAL ARGUMENT
TTCBF5: MOVS D,C ;LINE NUMBER AS ARG
SETZ C,
HRLI B,.DFFDO ;FLUSH FUNCTION
CALL DTEQI ;QUEUE IT UP
MOVE B,TTCBSV ;GET BACK DYNAMIC DATA
RET
ENDSV. ;END STKVAR
SWAPCD
; SET TERMINAL SPEED
TTSSP2::TRVAR <LINENO>
MOVEM T2,LINENO ;SAVE LINE NUMBER
SKIPN FEFLG ;IN PRIMARY PROTOCOL?
RET ;NO. IGNORE IT THEN
ACVAR <W1,SSBFR>
UMOVE W1,2 ;GET FLAGS
MOVX D,SC%OPR!SC%WHL ;[7195]SEE IF PRIVILEGED
TDNN D,CAPENB ;[7195]PRIVILEGED?
TXNN W1,MO%RMT!MO%AUT ;[7195]NO, REMOTE OR AUTOBAUD?
SKIPA ;[7195]PRIV'D OR NOT SETTING REMOTE/AUTOBAUD
ITERR (CAPX1) ;[7195]NOT PRIV'D, USER CAN NOT DO THIS
NOINT ;PREVENT INTS
BLCAL. ASGRSB,<[4],[.RESP3],[RS%SE0!.RESTP]> ;GET A 4-WORD BLOCK
ITERR () ;SHOULDN'T HAPPEN
MOVEM A,SSBFR ;SAVE ADR OF BLOCK
MOVE C,A
HRLI C,(POINT 16,0) ;MAKE BYTE PTR
UMOVE D,C ;GET USER'S ARGS
HLRZ A,D ;GET INPUT SPEED
;THE LAW OF SPEED SETTING:
; (1) IF MO%AUT=0 AND A LINE IS NOT REMOTE NOR AUTOBAUD, THEN SET TTSPWD
; AND ALSO SET SAVED SPEED IF ANY. THE SAVED SPEED IS ACTUALLY ONLY
; USED WHEN THE LINE IS GOING MO%RMT.
; (2) IN THE OTHER CASES, IF MO%AUT=0 THEN SET TTSPWD ONLY IF THERE IS
; A DYNAMIC DATA BLOCK. THIS COVERS THE CASE OF PRESERVING LINE
; SPEED WHEN A LINE IS REMOTE ONLY AND LEAVING SPEED ALONE IF
; A LINE IS AUTOSPEED AND NO DYNAMIC DATA EXISTS. WE SET THE SPEED
; IN THE FRONT-END IN THE REMOTE CASE.
; (3) OTHER CASES ARE MO%AUT=1, SPEEDS ARE IGNORED IN THIS CASE.
TXNE W1,MO%AUT ;IS MO%AUT ZERO?
IFSKP.
TMNE TT%AUT+TT%FEM,TTSTAT(B) ;YES, IS LINE NOT REMOTE NOR AUTO?
IFSKP.
MOVEM D,TTSPWD(B) ;YES, SET SPEED
CALL STADYN ;(T2/T2) IS THERE DYNAMIC DATA?
ANSKP. ;IF NOT, PROCEED WITH SPEED SETTING
MOVEM D,TTSVPD(B) ;YES, SET SAVED SPEED
ENDIF.
;HERE FOR OTHER CASES WHERE MO%AUT=0
MOVE B,LINENO ;GET LINENO BACK
CALL STADY ;IS THERE DYNAMIC DATA
ANSKP. ;NO, DON'T CHANGE SPEED OF AUTOSPEED LINE
MOVE B,LINENO ;GET LINENO BACK
MOVEM D,TTSPWD(B) ;SET SPEED
ENDIF.
MOVE B,LINENO ;GET LINENO BACK
CALL TTEXFA ;SET XON/XOFF STATE
IDPB A,C ;STORE INPUT
IDPB D,C ;STORE OUTPUT SPEED
MOVEI D,0(D)
MOVEI A,1 ;ASSUME ONE STOP BIT
CAIG D,^D110 ;LESS THAN OR EQUAL TO 110 BAUD?
MOVEI A,2 ;YES. USE 2 STOP BITS THEN
TXNE W1,MO%RMT ;WANT REMOTE?
JRST [ TRO A,(1B2) ;[7195]SET HIGH ORDER BIT
SETONE TTFEM,(B) ;SAY IS REMOTE
JRST .+1] ;GO SET SPEED ANYWAY
TXNE W1,MO%AUT ;WANT "AUTO" SPEED?
JRST [ SETONE TTAUT,(B) ;[7195]SET INDICATOR
TRO A,(1B3) ;SET BIT IN MESSAGE TO FE
JRST TTSSP5] ;AND PROCEED
TTSSP5: IDPB A,C ;STORE THIS
MOVE C,SSBFR ;REFRESH PTR
HRLI C,(POINT 8,0)
MOVE F,SSBFR ;PASS BUFFER ADDRESS FOR INTERRUPT
BLCAL. TTDTEQ,<[SSPINT],[.DFSPD],[6],C>
OKINT ;ALLOW INTS AGAIN
RET ;AND DONE
ENDAV. ;END ACVAR
;HERE AT INTERRUPT LEVEL AFTER MSG SENT TO FE
; A/ UNIQUE CODE - ADR OF RESIDENT BFR
RESCD
SSPINT: CALL RELRES
RET
SWAPCD
; SET/RETURN DEVICE NON-TERMINAL STATUS
TTSNT1::SKIPN FEFLG ;IN PRIMARY PROTOCOL?
RET ;NO. IGNORE IT THEN
STOR C,TTNTS,(B) ;SAVE NEW VALUE
BLCAL. TTDTEQ,<[0],[.DFMSG],[0],C>
RET ;AND DONE
RESCD ;[7310] Make routine TTNTM1: resident
;TELL 20F TO ALLOW OR NOT ALLOW SENDALLS, BUT DON'T SAVE TTNTS
TTNTM1::SKIPN FEFLG ;IN PRIMARY PROTOCOL?
RET ;NO. IGNORE IT THEN
BLCAL. TTDTEQ,<[0],[.DFMSG],[0],C>
RET ;AND DONE
;ENABLE/DISABLE XOFF RECOGNITION IN THE FRONT-END
TTEXFA: SAVET ;SAVE REGISTERS
CALL STADYN
RET ;NOT IMPORTANT
JRST TTEXZ
TTEXF:: SKIPN FEFLG ;CHECK FOR PRIMARY PROTOCOL
RET ;NO. IGNORE IT THEN
SAVET ;SAVE TEMPS
TTEXZ: SETZ T4,0 ;ASSUME CLEAR
TMNE TT%PGM,TTFLGS(T2)
SETO T4,0 ;SET
DYNST ;GET STATIC TTY NUMBER
SKIPG TTACTL(T2) ;NORMALLY ACTIVE LINE?
SETZ T4, ;NO, DISABLE FE XOFF
BLCAL. TTDTEQ,<[0],[.DFXEN],[0],T4>
RET
SWAPCD
;TTMSG...
;CODE TO DO A SEND ALL FOR KL DTE20 CONFIGURATIONS
;TTMSSN FOR SINGLE LINE, TTMSAL FOR ALL LINES
; A/ BYTE PTR TO STRING
; B/ LINE NUMBER
; C/ COUNT OF BYTES IN STRING
TTMSAL::SASUBR <MSBP,MSLN,MSCT>
SKIPN FEFLG ;USING PRIMARY PROTOCOL?
JRST [ CAME B,CTYLNO ;CTY?
RET ;NO, FORGET IT
RETSKP] ;DO IT
SETOB B,MSLN ;NOTE ALL LINES
HRLI B,.DFSTA ;ASSUME SEND ALL
MOVSI A,DECSAL ;INTERRUPT LOCATION
HRR A,MSTRDT
HRRI B,.FEDLS ;THE LINE SCANNER
CALL FIXARG ;GO CHECK FOR CTY,ETC.
HRR C,MSCT ;THE COUNT
MOVE D,MSBP ;THE POINTER
TXO C,DTBYTM ;FORCE BYTE MODE SEND
AOS SALCNT ;INCREMENT SENDALL COUNT
CALL DTEQI ;GO SCHEDULE THE REQUEST
RETSKP
ENDSA.
;ROUTINE TO DO SENDALL FOR SINGLE LINE
; T2/ LINE NUMBER
; RETURN +1: DON'T DO THE LINE
; +2: OK TO DO, T2/ LINE NUMBER
TTMSSN::SKIPN FEFLG ;PRIMARY PROTOCOL?
CAMN T2,CTYLNO ;OR CTY?
RETSKP ;YES, OK TO DO
RET ;SKIP IT
RESCD
;TELL FE TO RESUME SENDING TO TERMINAL
TTXON1::SKIPN FEFLG ;IN PRIMARY PROTOCOL?
RET ;NO .SKIP THE MESSAGE THEN
JE TTXFF,(B),R ;IF NOT FORCING STATUS TO FE, RETURN
SETZRO TTXFF,(B) ;CLEAR THE BIT
MOVEI A,.DFXON ;FE XON FUNCTION
SAVEAC <B>
DYNST ;GET LINE NUMBER
CALLRET SNDFNC ;TELL FE TO RESTART
;FRONT END LINE. TELL FRONT END TO STOP SENDING TO TERMINAL
TTCHI3::SAVET ;SAVE TEMPS
JE TTXFF,(B),R ;IF NOT FORCING STATUS TO FE, RETURN
SETZRO TTXFF,(B) ;CLEAR THE BIT
DYNST ;GET STAT ADDRESS
MOVEI A,.DFXOF ;TELL FE TO STOP
CALLRET SNDFNC ;DO IT
;ROUTINE TO SEND XOFF OR XON TO THE FRONT END
;ACCEPTS: A/ FUNCTION TO SEND
; B/ LINE NUMBER
;RETURNS: +1 /COULD NOT SEND REQUEST
; +2/ REQUEST SENT
SNDFNC: SAVEAC <B>
MOVSI C,0(B) ;PUT LINE NUMBER IN CORRECT PLACE
MOVSI B,0(A) ;FUNCTION CODE
HRRI B,.FEDLS ;ASSUME DLS
CALL FIXARG ;GO FIX UP THE ARGS
HLRZ D,C ;LINE NUMBER AS DATUM
SETZM C ;DIRECT
MOVE A,MSTRDT ;TO THE MASTER -11
CALLRET DTEQI ;QUEUE TO DTE
;SEND XOFF TO DISCOURAGE FURTHER INPUT FROM TERMINAL
SNDXO2::CONSZ PI,1B<^D20+DLSCHN> ;AT DTE PI LEVEL?
JRST SNDXO1 ;YES. GO TO IT
NOSKD1 ;PREVENT SCHEDULER INTERRUPTS
CHNOFF DLSCHN ;AND DTE INTERRUPTS
SNDXO1: SAVET
SKIPG TTACTL(B) ;LINE ACTIVE?
JRST SNDXO3 ;NO, SEND NOTHING
JN TTFXO,(B),SNDXO3 ;DO NOTHING IF PREVIOUS XOFF SENT
SETONE TTFXO,(B) ;SAY X-ON NEEDED
MOVEI D,XOFFC ;THE CHARACTER
SKIPGE CHITAB(D) ;PARITY NEEDED?
TXO D,200 ;YES. APPLY IT
MOVE A,MSTRDT ;SEND TO THE MASTER
MOVSI C,0(B) ;LINE NUMBER
MOVE B,[.DFBKW,,.FEDLS]
CALL FIXARG ;FIX UP THE ARGS
CALL DTEQI ;GO SEND IT
SNDXO3: CONSZ PI,1B<^D20+DLSCHN> ;AT DTE PI LEVEL?
RET ;YES. ALL DONE THEN
CHNON DLSCHN ;RESTORE THE CHANNEL
OKSKD1 ;AND THE SCHEDULER
RET ;AND DONE
;SEND XON ONLY IF LINE IS MARKED AS NEEDING
;ONE, AND IT HAS NOT STORED TOO MANY CHARACTERS IN EITHER ITS
;INPUT BUFFER OR TTBBUF.
;
;Edit [7342] Notice:
; This routine no longer has the intelligence to do XON
; depending on certain conditions. It will ALWAYS send
; an XON and will only get called from TTYSRV if the line
; has almost no characters in the TTBBUF. This is to
; eliminate a race condition between TTCH7 and RSXSRV when
; a line is doing high speed input.
SNDXN2::JE TTFXO,(T2),R ;[7342] IF NOT WAITING, RETURN
JN TTSHU,(T2),R ;[7342] DO NOTHING IF LINE TURNED OFF
SAVET ;BE TRANSPARENT
SKIPG TTACTL(T2) ;[7342] Is this an active line?
RET ;[7342] No, then leave.
STKVAR <SNDXSV>
MOVEM T2,SNDXSV ;[7342] SAVE THE LINE NUMBER
CONSO PI,77000 ;SKIP NOSKED IF NOT AT PI LEVEL 7
NOSKD1 ;PREVENT SCHEDULER INTERRUPTION
CHNOFF DLSCHN ;AND DTE INTERRUPTS
MOVE T2,SNDXSV ;[7342] TURN IT ON IF NOT ACTIVE.
MOVE T1,MSTRDT ;[7342] TO THE MASTER
MOVEI T4,XONC ;[7342] THE CHARACTER
SKIPGE CHITAB(T4) ;[7342] PARITY NEEDED?
TXO T4,200 ;[7342] YES. APPLY IT
MOVSI T3,0(T2) ;[7342]
MOVE T2,[.DFBKW,,.FEDLS]
CALL FIXARG
CALL DTEQI ;GO SEND THE BYTE
MOVE T2,SNDXSV ;[7342] GET LINE NUMBER
SETZRO TTFXO,(T2) ;[7342] NO X-ON NEEDED NOW
MOVE T2,SNDXSV ;[7342] Restore line number
CHNON DLSCHN ;RESTORE DTE
CONSO PI,77000 ;SKIP OKSKED IF NOT AT PI LEVEL 7
OKSKD1 ;AND THE SHCEDULER
RET ;AND DONE
ENDSV. ;END STKVAR
; TTUHU and TTHU2: routines to hangup or unhangup lines
;
; Call: T2/ line number to hangup
; CALL TTHU2 or TTUHU
; Returns: +1 always
TTUHU:: SAVET ;[7435] Save the temps
MOVS T3,T2 ;[7435] Swap TTY to left half
MOVE T2,[.DFLDU,,.FEDLS] ;[7435] Load the unhangup function code
JRST TTHU21 ;[7435] Join code below
TTHU2:: SAVET ;[7435] Save the temps
MOVS T3,T2 ;[7435] Swap TTY number to left half
MOVE T2,[.DFLHU,,.FEDLS] ;[7435] Load function code to hang up
TTHU21: MOVE T1,MSTRDT ;[7435] Master -11
CALL FIXARG ;[7435] (T2,T3/T2,T3) Get proper device/line
HLRZ D,C
SETZ C,
CALL DTEQI ;REQUEST THE HANGUP
RET ;AND DONE
;CHECK INPUT RATE OF LINE
;LIMIT ITS STORAGE IN TTBBUF
BIGST2::LOAD C,TTFBB,(B) ;GET COUNT OF CHARACTERS IN TTBBUF
AOS C ;INCREASE IT
CAIL C,MAXABC ;BEYOND BAD GUY CUTOFF?
JRST STPLNF ;STOP LINE
CAIG C,2 ;CHECK FOR 2 IN BUFFER
JRST BIGST4 ;NO NOT THIS TIME
SKIPG TTACTL(T2) ;YES CHECK TO SEE IF ACTIVE
JRST STPLNF ;NO SHUT LINE DOWN IT IS ANOYING ME
BIGST4: STOR C,TTFBB,(B) ;UPDATE COUNT OF CHARACTERS IN TTBBUF
CAIGE C,MAXBBC ;MANY CHARS FOR THIS LINE?
RETSKP ;NO, CONTINUE
MOVE C,TTBIGC ;YES, BIGBUF GETTING FULL TOO?
CAIL C,MAXABC-^D20
CALL SNDXO2 ;YES, SEND XOF
RETSKP
;TELL FE TO STOP ACCEPTING INPUT ON LINE, I.E. BY SETTING INPUT
;SPEED TO 0.
STPLNF: JN TTSHU,(B),R ;DO NOTHING IF LINE ALREADY OFF
SAVEAC <T2>
IFQE. TTWSO,(B) ;LINE HAS BEEN SHUT OFF BEFORE?
SETONE TTWSO,(B) ;NO, REPORT IT VIA BUGINF
BUG.(INF,TTYSTP,RSXSRV,HARD,<Line has been shut off because of excessive input rate>,<<T2,LINE>>,<
Cause: A terminal line on RSX20F console front end is generating input at an
excessive rate. It is being shut off for 5 seconds by having its input
speed set to zero. The high input rate can result from a noisy
terminal line which has a high input baud rate. If an EIA line, it may
be too long and so picks up electrical noise.
Action: The terminal line number specified in the additional data should be
checked. This problem can usually prevented by eliminating the noise
or reducing the input speed. If all connections to the terminal line
are tight and the line speed has not been changed recently, the front
end hardware should be checked by Field Service.
Data: LINE - Line being shut off
>,,<DB%NND>) ;[9116][7.1210]
ENDIF.
CAMN B,CTYLNO ;[9116] Is this the CTY?
RET ;[9116] Don't shut it off (may be a DH11 line)
SETONE TTSHU,(B) ;NOTE LINE SHUT OFF
MOVEI C,TTTOBL ;C/THE ROUTINE TO CALL
MOVEI A,^D5000 ;5 SECONDS
CALL TTQAD ;GO Q IT UP AND LOSE DATUM
MOVSI C,0(B) ;THE LINE
MOVE B,[.DFTOL,,.FEDLS]
MOVE A,MSTRDT ;TO THE MASTER
MOVEI D,.DFTLO ;TURN IT OFF
CALL FIXARG
CALL DTEQI ;OUTPUT IT
RET
;NOISY LINE CHECK IN TTCHI. CALLED WHEN CHARACTER TAKEN FROM BIGBUF
;FOR INACTIVE LINE THAT WILL ECHO BELL.
; T2/ LINE NUMBER
TTCHNL::JN TTSHU,(T2),R ;DONE IF LINE ALREADY SHUT OFF
LOAD T1,TTNOI,(T2) ;SEE IF NOISY LINE--NOISE CHARACTER COUNT
CAIL T1,3 ;ALREADY SAW 3?
RET ;YES, ENOUGH ALREADY.
ADDI T1,1 ;BUMP NOISE COUNT
STOR T1,TTNOI,(T2)
CAIE T1,1 ;FIRST ONE?
RET ;NO
MOVEI T1,^D1000 ;YES, QUEUE A CHECK FOR ONE SECOND
MOVEI T3,CKNOIS
CALL TTQAD
RET
;CHECK OF POSSIBLY NOISY LINE AFTER 1 SECOND
; T2/ LINE NUMBER
CKNOIS::LOAD T1,TTNOI,(T2) ;SEE HOW MANY IN LAST SECOND
CAILE T1,2 ;MORE THAN 2?
CALL STPLNF ;YES, SHUT OFF LINE
SETZRO TTNOI,(T2) ;CLEAR COUNT, START FRESH
RET
;THIS CODE IS USED TO START UP A LINE TRANSFER VIA THE DTE20.
TTFES1: CALL TTSND ;GET ONE OUTPUT CHAR
RET ;BUFFER EMPTY
SKIPE FEFLG ;USING PRIMARY PROTOCOL?
IFSKP.
CALL [SAVEAC <B> ;NO
DYNST ;GET LINE NUMBER
CALLRET DTECHO] ;OUTPUT VIA SECONDARY
RET
SETONE TTOTP,(B) ;INDICATE LINE IS ACTIVE
RET ;AND DONE
ENDIF.
MOVE D,A ;THE CHARACTER
SETONE TTOTP,(B) ;SAY LINE IS ACTIVE
INCR TTFCT,(B) ;INCREASE COUNT OF BYTES IN -11
AOS TOTFCT ;MAINTAIN TOTAL OF ALL LINES
PUSH P,B ;SAVE ADDRESS OF DYNAMIC DATA
DYNST ;GET LINE NUMBER
SETONE TTFPK,(B) ;SAY WAITING FOR TO -11 DONE
MOVSI C,0(B) ;LINE NUMBER
MOVE B,[.DFHLC,,.FEDLS] ;ARGS
CALL FIXARG ;GET PROPER ARGS
PUSH P,F
SETZ F, ;JUST IN CASE
CALL DTSNGL ;GO DO A SINGLE REQUEST
JRST [ POP P,F ;FAILED. RESTORE FLAGS
POP P,B ;RESTORE ADDRESS OF DYNAMIC DATA
DECR TTFCT,(B) ;DECREMENT BYTES IN -11
SOS TOTFCT
CALL BAKTTO ;BACKUP TTY OUTPUT
JRST INTRST] ;GO SCHEDULE RETRY
POP P,F ;RESTORE FLAGS
POP P,B ;ADDRESS OF DYNAMIC BLOCK
RET ;AND DONE
;TTTOBL - ROUTINE CALLED FROM SCHEDULER TO TURN ON LINE AGAIN
;ACCEPTS:
; T2/ INTERNAL LINE NUMBER
TTTOBL::JE TTSHU,(B),R ;IF ALREADY RESTARTED, DO NOTHING
SETZRO TTSHU,(B)
BLCAL. TTDTEQ,<[0],[.DFTOL],[0],[.DFTOO]>
;TURN ON LINE
CALLRET SNDXN2 ;ASSUME AN X-ON IS NEEDED
; ENABLE/DISABLE TTY'S
FEDABL::SETZ C,0 ;SET LINE # (ALL)
MOVE A,MSTRDT ;GET ID OF MASTER
MOVE B,[.DFEDR,,.FEDH1] ;ENABLE/DISABLE DATASETS
CALL DTEQI
RET
SUBTTL FRONT-END TERMINAL HANDLING
RESCD ;MUST BE RESIDENT
;THIS ROUTINE IS CALLED FROM THE DTE20 INTERRUPT ROUITNE TO COMPLETE
;A TTY OUTPUT REQUEST. INPUT IS:
; A/ UNIQUE CODE (SEE BELOW)
; B/UNIT NUMBER
; C/DEVICE CODE
;UNIQUE CODE IS
; (0,,COUNT)
;WHERE COUNT IS THE NUMBER OF CHARACTERS SENT TO THE 11 IN SOME CALL TO
; DTEQ THAT SPECIFIED TTYINT AS ITS RETURN ADDRESS
; IF COUNT IS 0, THIS WAS A SINGLE CHARACTER (DTSNGL WAS CALLED)
; AND BUFFER COUNTS HAVE ALREADY BEEN UPDATED
; IF COUNT IS NON-ZERO, THIS WAS MULTIPLE CHARACTERS, AND THE BUFFER
; COUNT MUST BE UPDATED
;AT THIS POINT, THE CHARACTERS HAVE BEEN SENT TO THE 11 BUT NOT ACKNOWLEDGED
TTYINT::EA.ENT
PUSH P,A ;SAVE UNIQUE CODE
MOVE A,C ;MOVE DEVICE TO A
CALL GETLIN ;GET PROPER CODE
JRST [ POP P,A ;RESTORE CODE
RET] ;AND GIVE UP
SETZRO TTFPK,(B) ;CLEAR WAITING FOR -11
POP P,A ;GET BACK UNIQUE CODE
CALL STADY ;GET ADDRESS OF DYNAMIC DATA
RET ;RETURN IF BECOMING ACTIVE OR INACTIVE
JUMPE A,TTYIN3 ;HAVE A COUNT?
;MULTIPLE CHARACTERS WERE SENT. UPDATE COUNT OF CHARACTERS IN OUTPUT
;BUFFER
MOVEI C,0(A) ;NUMBER OF CHARACTERS SENT
SUB C,TTOCT(B) ;COMPUTE NEW COUNT OF CHARACTERS IN BUFFER
SKIPG C ;IF COUNT WENT NEGATIVE, DON'T STORE IT
MOVNM C,TTOCT(B) ;STORE NEW COUNT
OPSTRM <ADDM A,>,TTFCT,(B) ;UPDATE FE CHAR COUNT
ADDM A,TOTFCT ;UPDATE TOTAL
CALL CHKWRN ;SEE IF FORK WAKEUP NEEDED
JRST TTYIN3 ;SEE IF MORE OUTPUT
;TTYINT..
;CALLED FROM SCHEDULER PERIODIC TASK PROCESSOR TO START OUTPUT FOR A LINE
; T2/ DYNAMIC PTR
; RETURN +1 ALWAYS
FESTRO::CHNOFF DLSCHN ;AVOID INTERRUPTS
SKIPE FEFLG ;PRIMARY PROTOCOL RUNNING?
IFSKP.
CALL TTFES1 ;NO, HANDLED BY 1-CHAR CASE
ELSE.
CALL TTYIN3 ;DO THE WORK
ENDIF.
CHNON DLSCHN
RETSKP ;NOTE NOTHING ELSE TO BE DONE
;CHARACTERS ARE IN OUTPUT BUFFER. CALL TTSND IF THERE IS ONLY ONE.
;OTHERWISE CALL DTEQ TO SEND THEM ALL
TTYIN3: STKVAR <TTYVR1,TTYVR2> ;GET SOME SAVE CELLS
CALL GETFMC ;GET LINE MAX ALLOCATION
LOAD D,TTFCT,(B) ;GET COUNT OF CHARS IN FE
CAML D,A ;ROOM FOR MORE?
JRST [ SETONE TTOTP,(B) ;SAY LINE IS WAITING FOR UNBLOCK
RET] ;AND GO DISMISS THIS INTERRUPT
JN <TTFLO,TTSAL,TTHPO,TTSFG,TTRXF>,(T2),[ ;ANY SPECIAL FLAGS?
CALLRET TTFES1] ;YES, HANDLED BY THE 1-CHAR CASE
SKIPN C,TTOCT(B) ;ANY OUTPUT CHARACTERS?
CALLRET TTFES1 ;NO
MOVE C,TTOOUT(B) ;GET POINTER
TDNN C,WRPMSK ;AT LAST WORD IN THIS BUFFER?
JRST [ LDB A,[POINT 6,C,5] ;LOOK AT P,S FIELD OF BYTE POINTER
CAIE A,73 ;POINTING TO LAST BYTE?
JRST .+1 ;NO.
HRRZ A,C ;YES. GET ADDRESS OF CURRENT WORD
HRR C,1-TTSIZ(A) ;POINT TO NEXT BUFFER IN CHAIN
JRST .+1]
MOVE A,TTOCT(B) ;GET OUTPUT COUNT
CALL CNTSET ;GO ADJUST COUNT
MOVEM C,TTYVR1 ;SAVE STARTING BYTE POINTER
CALL FNDEND ;GO GET CHARACTERS
MOVE D,TTYVR1 ;GET BACK ORIGINAL BYTE POINTER
TRNN A,777776 ;AT LEAST TWO?
CALLRET TTFES1 ;NO. GO DO SINGLE CHARACTER
SETONE TTOTP,(B) ;MAKE SURE THIS IS ON
MOVEM C,TTOOUT(B) ;NEW OUTPUT POINTER
SETZ F, ;OUTPUT BUFFER
HRR F,A ;GET COUNT OF BYTES FOUND
MOVSI A,TTYINT ;IT'S TTY
HRR A,MSTRDT ;TO THE MASTER
MOVEM B,TTYVR2 ;SAVE ADDRESS OF DYNAMIC DATA
DYNST ;GET LINE NUMBER
SETONE TTFPK,(B) ;WAITING FRO TO -11 DONE
MOVS C,B ;LINE NUMBER
HRR C,F ;COUNT
MOVE B,[.DFHSD,,.FEDLS] ;STRING DATA
CALL FIXARG ;FIX UP THE ARGS
CALL DTEQBP
CALL DTEQ ;QUEUE THE REQUEST
JRST RSCHED ;GO DO RESCHEDULE
RET ;GO DISMISS THE INTERRUPT
;DTEQ FAILED. RESTORE COUNTS AND ARRANGE FOR SCHEDULER TO RESTART OUTPUT
RSCHED: MOVE B,TTYVR2 ;ADDRSS OF DYNAMIC DATA
MOVE D,TTYVR1 ;GET ORIGINAL BYTE POINTER
MOVEM D,TTOOUT(B) ;RESTORE OUTPUT BYTE POINTER
INTRST: DYNST ;B/ LINE NUMBER
SETZRO <TTOTP,TTFPK>,(B) ;NOT WAITING FOR PACKET
MOVEI A,^D100 ;TRY AGAIN IN 100 MS.
MOVEI C,TTSN10 ;START UP AS SINGLE CHARACTER
CALLRET TTQAD ;GO DO IT
ENDSV. ;END STKVAR
;CNTSET - ROUTINE TO FIGURE OUT MAX COUNT ALLOWED IN STRING DATA FUNCTION
;INPUT: A/ TTY BUFFER COUNT
; B/ ADDRESS OF DYNAMIC DATA
;RETURNS +1 ALWAYS WITH: A/-MAX COUNT,,0
CNTSET: SASUBR <CA,CB>
CALL GETFMC ;GET MAX ALLOC FOR THIS LINE
LOAD D,TTFCT,(B) ;CURRENT FRONT END COUNT
SUB A,D ;COUNT ALLOWED TO SEND
CAMLE A,CA ;CAN DO ALL?
MOVE A,CA ;YES
MOVN A,A ;FOR AOBJN
HRLZM A,CA ;TO LH AND RETURN IT
RET ;AND DONE
;GET MAX FE ALLOC FOR LINE. DEPENDS ON SPEED OF LINE
; B/ DYN PTR
; RETURNS +1 ALWAYS,
; A/ MAX BYTE COUNT
GETFMC: SAVEAC <C>
LOAD A,TTFMC,(B) ;GET NOMINAL MAX
STALOD C,TTOSP,(B) ;GET LINE SPEED
CAIE C,-1 ;UNKNOWN?
CAIGE C,^D1200 ;OR LESS THAN 1200?
JRST [ ASH A,-2 ;YES, 1/4 ALLOC
RET]
CAIL C,^D9600 ;FAST?
IMULI A,2 ;YES, DOUBLE ALLOC
RET ;OTHERWISE, NORMAL ALLOC
;FNDEND - FIND END OF MESSAGE TO SEND TO TERMINAL
;ACCEPTS:
; T1/ AOBJN POINTER TO STEP THROUGH OUTPUT BUFFER
; T3/ POINTER FOR REMOVING CHARACTERS FROM OUTPUT BUFFER
; CALL FNDEND
;RETURNS +1: ALWAYS,
; T1/ UPDATED AOBJN PTR, RH CONTAINS NUMBER CHARS TO DO
; T3/ UPDATED POINTER TO OUTPUT BUFFER
FNDEND: TDNN C,WRPMSK ;TO THE NEXT?
JRST [ LDB D,[POINT 6,C,5]
CAIN D,73
RET
JRST .+1]
ILDB D,C ;GET NEXT BYTE
TRNE D,TTOESC ;ESCAPE CHARACTER?
JRST [ MOVNI D,1
ADJBP D,C
MOVEM D,C
RET]
; JRST [ ADD C,[^D9B5] ;DECREMENT BYTE POINTER
; TLNE C,(40B5) ;WENT INTO PREVIOUS WORD?
; SUB C,[44B5+1] ;YES. CORRECT IT
; RET] ;AND RETURN
AOBJN A,FNDEND ;NO. GET MORE
RET ;ALL EXHAUSTED
;ROUTINE TO SET SPEED OF LINE FROM VALUES SENT BY -11
;ACCEPTS:
; A/ DEVICE CODE
; B/ UNIT NUMBER
; C/ REMOTE INDICATOR
; D/ INPUT,,OUTPUT
TTSPST::EA.ENT
CALL GETLIN ;GET INTERNAL LINE NUMBER
RET ;INVALID
TRNN C,(1B2) ;IS IT REMOTE?
JRST TTSPS0 ;NO, CHECK AUTO
SETONE TTFEM,(B) ;YES, INDICATE REMOTE
TTSPS0: TRNN C,(1B3) ;IS IT AUTO?
JRST TTSPS1 ;NO.
SETONE TTAUT,(B) ;YES. SET INDICATOR
TTSPS1: MOVEM D,TTSPWD(B) ;STORE IT
RET ;AND DONE
;ROUTINE TO HANDLE SIGNAL FROM A FE THAT ITS LINE BUFFER FOR
;A GIVEN LINE IS EMPTY. ACCEPTS:
; A/ DEVICE CODE
; B/LINE NUMBER
TTYDON::EA.ENT
JUMPL B,DONALL ;IF NEG HE WANTS TO ACK THEM ALL
CALL GETLIN
RET ;ILLEGAL LINE
JN TTFPK,(B),R ;IF TO -11 DONE PENDING, GO AWAY
CALL STADY ;GET ADDRESS OF DYNAMIC DATA
RET ;GONE
LOAD C,TTFCT,(B) ;GET COUNT OUTSTANDING
MOVN C,C
ADDM C,TOTFCT ;REDUCE FE TOTAL
SETZRO TTFCT,(B) ;CLEAR COUNT OF BYTES IN -11
JE TTOTP,(B),R ;IS THIS LINE WAITING FOR THIS INT?
CALLRET TTYIN3 ;YES, CONTINUE OUTPUT TO THE LINE
;HERE WHEN FRONT END IS ACKING ALL UNITS
DONALL: STKVAR <SAVEE>
MOVSI C,NTTFE ;NUMBER OF FRONT END LINES
MOVNS C ;MAKE AOBJN POINTER
DONAL1: MOVEM C,SAVEE ;SAVE AOBJN POINTER
MOVEI B,0(C) ;B/LINE NUMBER
MOVEI A,.FEDLS ;ALL LINES ARE DLS
CALL TTYDON ;GO ACK THIS GUY
MOVE C,SAVEE
AOBJN C,DONAL1 ;DO ALL LINES
MOVE B,CTYLNO ;GET CTY LINE NUMBER
LOAD C,TTSTY,(B) ;GET LINE TYPE
CAIE C,TT.FE ;FRONT END LINE?
RET ;NO. DON'T ACK IT
SKIPGE B,CTYUNT ;B/UNIT NUMBER FOR CTY
RET ;NOT SET UP YET
MOVEI A,.FEDLS ;A/ DEVICE .FEDLS
CALLRET TTYDON ;GO ACK THE LINE
ENDSV. ;END STKVAR
;ROUTINE TO HANDLE A DIAL UP SIGNAL FROM THE FE
; A/DEVICE CODE
; B/LINE NUMBER
TTYDLU::EA.ENT
CALL GETLIN ;GET PROPER LINE NUMBER
RET ;ILLEGAL LINE
MOVSI A,0(B) ;LINE NUMBER TO LH
HRRI A,DLSCXF+CARONB ;INDICATE CARRIER ON
CALLRET BIGSTO ;PUT IT IN BUFFER
;ROUTINE TO HANDLE HANG UP SIGNAL FROM FE
; A/DEVICE CODE
; B/LINE NUMBER
TTYHGU::EA.ENT
CALL GETLIN ;GET LINE NUMBER
RET ;ILLEAGAL LINE
MOVSI A,0(B) ;TO LH
HRRI A,DLSCXF ;CARRIER TRANSITION
CALLRET BIGSTO ;STORE IT
;DEFINE THE PROTOCOL TRANSFER VECTOR
TTYDTV::0 ;NO STRING DATA
TTYDON ;ACK
0 ;NO STATUS
TTYSLA ;SET LINE ALLOCATION
R ;NO ERROR REPORTING
TTDTRM ;DETACH REMOTES ON RELOAD
;THIS ROUTINE IS CALLED FROM THE DTE INTERRUPT ROUTINE TO SET
;THE LINE ALLOCATION FOR A TTY LINE. ACCEPTS:
; 1/ DEVICE CODE
; 2/ ALLOCATION
; 3/ LINE NUMBER
TTYSLA::EA.ENT
EXCH B,C ;GET ARGS IN PROPER PLACES
CALL GETLIN ;GET INTERNAL LINE NUMBER
RET ;ILLEGAL LINE
STOR C,TSFMC,(B) ;STORE NEW ALLOCATION
RET ;AND DONE
;IDCTY - IDENTIFY THE CTY
;ACCEPTS:
; T2/ UNIT NUMBER FOR THE CTY AS KNOWN BY THE FRONT END
; CALL IDCTY
;RETURNS +1: ALWAYS
;CALLED FROM DTE SERVICE WHEN THE FRONT END SENDS OVER THE UNIT NUMBER
;WITHIN THE .FEDLS DEVICE THAT IT KNOWS AS THE CTY. STORES:
;CTYUNT/ THE UNIT NUMBER
;CTYINT/ THE INTERNAL EQUIVALENT OF THAT (INTERNAL LINE NUMBER)
;THE CTY SHOULD ALWAYS BE ADDRESSED INTERNALLY BY CTYLNO, WHICH IS
;SET UP BY TTINIT. CTYINT WILL CONTAIN THE INTERNAL
;EQUIVALENT OF THE LINE ON WHICH THE CTY IS PHYSICALLY LOCATED FOR THIS
;MONITOR LOAD. ADDRESSING THE LINE BY THIS NUMBER IS AN ERROR.
;IF CTYINT=CTYLNO, CTYINT IS SET TO -1 SO THAT NO LINE NUMBER WILL
;EVER MATCH IT
IDCTY:: EA.ENT
SAVET
PUSH P,T2 ;SAVE UNIT NUMBER
SETOM CTYUNT ;INDICATE CTY NOT KNOWN FOR GETLIN
MOVEI T1,.FEDLS ;T1/DEVICE
CALL GETLIN ;GET THE INTERNAL EQUIVALENT
RET ;NOT A FRONT END LINE
CAME T2,CTYLNO ;IS THIS ITS VALID INTERNAL LINE NUMBER?
MOVEM T2,CTYINT ;NO. SAVE THIS AS ITS ALIAS
POP P,CTYUNT ;SET UNIT NUMBER FOR CTY
RET
;GETLIN - ROUTINE TO CONVERT DEVICE/LINE TO INTERNAL LINE NUMBER
;ACCEPTS:
; A/DEVICE CODE (ONLY .FECTY OR .FEDLS)
; B/LINE NUMBER
;RETURNS +1: FAILURE
; +2: SUCCESS,
; T2/INTERNAL LINE NUMBER
;DOES NOT CLOBBER ANY REGISTERS EXCEPT B
GETLIN: CAIN A,.FECTY ;THE CTY?
JRST [ MOVE B,CTYLNO ;YES. USE INTERNAL NUMBER OF CTY
RETSKP] ;AND RETURN WITH GOOD LINE
;THE DEVICE MUST BE .FEDLS
CAMN B,CTYUNT ;THE UNIT NUMBER FOR THE CTY?
JRST [ MOVE B,CTYLNO ;YES. GET INTERNAL LINE NUMBER FOR CTY
RETSKP]
CAIL B,NTTFE ;IS THE UNIT NUMBER WITHIN THE NUMBER
; OF FRONT END LINES THAT WE KNOW ABOUT?
RET ;NO. CAN'T BE A FRONT END LINE
JUMPE B,GETLN1 ;IF THE DL11, SKIP BIAS
SUBI B,SPCLIN ;BIAS THE LINE
SKIPG B ;NOW A GOOD T/S LINE NUMBER?
ADDI B,NTTFE-1 ;NO. WAS A SPECIAL. TRANSLATE THE LINE #
GETLN1: ADD B,TT1LIN+TT.FE ;YES. ADD NUMBER OF FIRST F.E. LINE
RETSKP ;RETURN SUCCESS
;FIXARG - ROUTINE TO DETERMINE PROPER DEVICE/LINE NUMBER FOR LINE ON RSX20F
;FRONT END
;ACCEPTS: RH B/ DEVICE (ONLY .FEDLS)
; LH C/ INTERNAL LINE NUMBER
; CALL FIXARG
;RETURNS +1: ALWAYS,
; RH B/ DEVICE AS KNOWN BY THE FRONT END
; LH C/ UNIT AS KNOWN BY FRONT END
;CALLED IN PREPARATION FOR CALLING DTE SERVICE. LINE IS ASSUMED TO
;BE ON THE FRONT END
;NOTE: IF CALLED WITH -1, RETURNS IMMEDIATELY. THIS IS BECAUSE OF A
;FRONT-END BUG THAT REQUIRES RECEIVING -1 ON A SENDALL
FIXARG: ACVAR <W1> ;GET SOME WORK REGISTERS
JUMPL C,R ;IF UNIT .LE. 0, NO CHANGE
HLRZ W1,C ;GET INTERNAL LINE NUMBER
CAMN W1,CTYLNO ;THE CTY?
JRST [ HRRI B,.FECTY ;YES. USE THE CTY
HRLI C,0 ;AND UNIT 0
RET]
SUB W1,TT1LIN+TT.FE ;GET LINE NUMBER WITHIN TYPE
JUMPE W1,FIXAR1 ;IF THE DL11, ALL DONE
ADDI W1,SPCLIN ;NOT. BIAS THE LINE NUMBER
CAILE W1,NTTFE-1 ;A VALID T/S LINE?
SUBI W1,NTTFE-1 ;NO. ONE OF THE SPECIALS THEN
FIXAR1: HRL C,W1 ;RETURN IT IN LH OF C
RET ;AND DONE
ENDAV. ;END ACVAR
;LOCAL ROUTINE TO SIMPLIFY CALLS TO DTEQ - USES "BLISS" CALLING SEQUENCE
; T2/ LINE NUMBER
; CALL <AA,AB,AC,AD>
; WHERE: (SEE DTESRV FOR FURTHER DETAILS)
; AA - DRIVER INT LOC (ASSUME MASTER DTE)
; AB - DTE FUNCTION (ASSUME .FEDLS)
; AC - 0 ,, BYTE CNT (LH FILLED IN WITH LINE NUMBER)
; AD - DATUM
;RETURN +1: ALWAYS
; ALL ACS PRESERVED
TTDTEQ: BLSUB. <AA,AB,AC,AD>
SAVET
HRLZ C,B
HRLZ B,AB
HRRI B,.FEDLS
CALL FIXARG ;CONVERT LINE NUMBER
HRLZ A,AA
HRR A,MSTRDT
HRR C,AC
MOVE D,AD
CALLRET DTEQI ;USE NON-SKIP VERSION OF DTEQ
ENDBS.
;Convert byte pointer before calling DTEQ.
; CALL DTEQBP
;ACCEPTS USUAL ARGUMENTS FOR DTEQ, WITH BYTE POINTER IN T4
;RETURNS +1: ALWAYS
; T4/ CONVERTED BYTE POINTER
;ASSUMES BYTE POINTER IS ONE-WORD GLOBAL TO SECTION 0, WITH 9-BIT BYTE SIZE
DTEQBP: ACVAR <W1>
LDB W1,[POINT 6,T4,5] ;GET P,S FIELD
SUBI W1,67 ;NORMALIZE TO LOWEST VALUE
CAILE W1,4 ;CAN'T BE MORE THAN 4
MOVEI W1,4 ;SO FORCE IT
HRL T4,OWG9(W1) ;MAKE A ONE-WORD LOCAL OUT OF IT
RET
ENDAV. ;END ACVAR
RSI OWG9,<441100,331100,221100,111100,001100>
;DTESTO - ROUTINE TO STORE A CHARACTER IN TTBBUF. CALLED AT INTERRUPT LEVEL
;FROM DTE SERVICE. DATA IS ALWAYS A CHARACTER AT THIS POINT.
;ACCEPTS:
; T1/CHARACTER IN 8 BITS
; T2/(0,, PHYSICAL LINE NUMBER)
; T3/DEVICE TYPE
;RETURNS +1: ALWAYS
DTESTO::EA.ENT
EXCH C,A ;TYPE TO A, CHAR TO C
CALL GETLIN ;GET INTERNAL LINE NUMBER FOR THIS LINE
RET ;LINE NOT ON FRONT END
MOVE A,C ;RESTORE CHARACTER
CALLRET TTIDON ;GO STORE CHARACTER
;DEVICE DEPENDENT CODE FOR SOBE
;SKIP IF FE BUFFER NOT EMPTY
TTSBEF::JN TTFCT,(T2),RSKP ;LOCAL RETURN SKIP IF NON-EMPTY
RET ;EMPTY
;DEVICE DEPENDENT CODE FOR INIALIZING DYNAMIC STORAGE
TTSETF::LOAD T3,TSFMC,(T2) ;GET FRONT END CHARACTER LIMIT FROM DYNAMIC
STOR T3,TTFMC,(T1) ; AND COPY TO DYNAMIC
CAIN T4,MSGLEN ;IS THIS A MESSAGE-LENGTH BLOCK?
RET ;YES. NO MORE INITIALIZATION
MOVE T3,TTSPWD(T2) ;GET SPEED WORD
MOVEM T3,TTSVPD(T1) ;SAVE IN SAVED SPEED WORD
RET
;ROUTINE CALLED FROM PROTOCOL HANDLER TO DETACH ALL REMOTE JOBS FOR
;A GIVEN DTE. ACCEPTS:
; A/ DTE NUMBER (NOT USED)
;RETURNS +1 ALWAYS
SWAPCD ;IS SWAPPABLE
TTDTRM: EA.ENT
CAME A,MSTRDT ;IS THIS FOR THE MASTER DTE?
RET ;NO. DON'T DO ANYTHING THEN
SAVET ;SAVE ALL TEMP REGISTERS
MOVSI B,NTTFE ;NUMBER OF FE LINES
MOVNS B ;SET UP AOBJN POINTER
HRR B,TT1LIN+TT.FE ;START WITH FIRST LINE AND LOOP THROUGH ALL
TTDTR1: TMNE TTFEM,(B) ;IS THIS LINE REMOTE?
CALL TTJBDT ;YES. DETACH IT THEN
AOBJN B,TTDTR1 ; DO ALL LINES
MOVEI A,.SFRMT ;SEE IF REMOTE LOGINS NOW ALLOWED
TMON ;GET VALUE
XCT [ CALL DTRMDS ;NOW DISALLOWED
CALL DTRMEN](B) ;NOW ALLOWED
RET ;AND DONE
;ROUTINE TO DEFINE THE DL11W PSEUDO-CTY'S.
;PRIMARY PROTOCOL MUST BE RUNNING
DFNDL1::EA.ENT
ACVAR <W1> ;GET A WORK REG
STKVAR <<DFNDLS,2>,<DFNDS1,1>> ;A STRING
MOVE T2,[ASCII /TTY/] ;GET BASE STRING
MOVEM T2,DFNDLS ;SAVE IT
MOVE T2,[ASCIZ /DL0/] ;GET DEFINITION STRING
MOVEM T2,DFNDS1 ;SAVE IT
MOVE W1,[-<SPCLIN-1>,,SPCLIN-2] ;THE LINES TO DO
DFNDLL: HRRZ T2,W1 ;GET LINE NUMBER
MOVEI T1,.FEDLS ;FOR THE DLS DEVICE
CALL GETLIN ;GET ITS INTERNAL NUMBER
JRST DFNDLE ;?
SETONE TTIGI,(T2) ;SET IGNORE
MOVEI T1,DFNDLS ;GET ADDRESS OF BYTE ARRAY
HRLI T1,(<POINT 7,0,20>) ;MAKE IT A STRING POINTER
MOVEI T3,10 ;GET AN OCTAL NUMBER
NOUT ;PUT LINE NUMBER IN STRING
JFCL
MOVEI T3,":" ;GET TERMINATOR
IDPB T3,T1 ;STORE COLON
SETZM T3 ;GET A NULL
IDPB T3,T1 ;TIE OFF STRING
MOVX T1,<BYTE (7)0,0,1>
ADDM T1,DFNDS1 ;CHANGE LOGICAL NAME STRING
MOVEI T1,.TTDES(T2) ;GET DEVICE DESIGNATOR IN T1
MOVEI T2,.MOSNT ;SET NON-TERMINAL STATUS
MOVEI T3,.MOSMN ;SUPPRESS SYSTEM MESSAGES
MTOPR ;DO IT
ERJMP .+1 ;PROCEED IF IT FAILS
MOVX T1,.CLNSY ;CREATE SYSTEM LOGICAL NAME
HRROI T2,DFNDS1 ;THE LOGICAL NAME
HRROI T3,DFNDLS ;THE DEFINITION
CRLNM ;DO IT
DFNDLE: BUG.(INF,DLDEF,RSXSRV,HARD,<Logical name define failed for FE CTY>,,<
Cause: A CRLNM was performed to define the logical names for the FE but it
failed.
Action: If this BUG persists, make it dumpable and submit an SPR with the
dump and a copy of MONITR.EXE. If possible, include any known
method for reproducing the problem and/or the state of the system
at the time the BUG was observed.
>)
AOBJN W1,DFNDLL ;DO THEM ALL
RET ;AND DOND
ENDSV. ;END STKVAR
ENDAV. ;END ACVAR
TNXEND
END