TITLE DLSINT - INT. SERV. FOR DLS (DATA LINE SCANNER DC10) SUBTTL M. FREDRIKSEN/RCC TS 01 JUN 69 V005 XP VDLSIT,005 ;PUT VERSION NUMBER IN GLOB LISTING AND LOADER STORAGE MAP ;MODULAR HARDWARE INTERFACE WITH EITHER SCNSER OR TTYSER EXTERNAL TYPX IFE FTTTYSER, IFN FTTTYSER, ;ACCUMULATOR ASSIGNMENTS CHREC=TEM ;AC FOR CHARACTER DDB=DEVDAT ;ADDRESS OF DEVICE DATA BLOCK LINE=TAC1 ;SCANNER LINE NUMBER HPOS=DAT ;HORIZONTAL POSITION OF TTY.(0-71) ;BYTE POINTERS EXTERNAL PLASTC DLS=240 ;DC10 DEVICE NUMBER ;BITS IN CHREC TO COMMUNICATE WITH DLS USDRLN=100 ;USE DIRECTED LINE NUMBER TDSABL=400 ;TRANSMIT DISABLE RCVBIT=400 ;RECEIVE BIT AFTER DATAI DLS,CHREC ;DEVICE DEPENDENT PORTION OF INITIALIZATION CODE ;CALL: MOVEI TAC,CHANNEL NUMER ; PUSHJ PDP,SCNINI INTERNAL SCNINI DLSINI: SCNINI: CONO DLS,40 ;INIT DLS COMPLETELY (I/O RESET) CONO DLS,(TAC) ;ASSIGN PI CHANNEL NUMBER POPJ PDP, ;SCANNER INTERRUPT SERVICE ROUTINE. ENTRY DLSINT INTERNAL SCNINT EXTERNAL SCNSAV,TCONLN,TTYTAB,XMTINT,TYPE,INUS2,RECINT DLSINT: SCNINT: CONSO DLS,30 ;ANY INTERRUPTS ON DLS? JRST SCNINT ;NO JSR SCNSAV DATAI DLS,CHREC ;GET CHARACTER & LINE INFO HLRZ LINE,CHREC ;PUT LINE NUMBER IN AC LINE CAIL LINE,TCONLN ;ARE WE ENABLED FOR THIS LINE NUMBER? JRST SCNIN2 ;NO,TURN OFF TRANSMIT(IF ON) AND DISMISS TRNE CHREC,RCVBIT ;WAS IT A RECEIVER INTERRUPT? JRST RECINT ;YES, RECEIVER INT. HANDLER DATAO DLS,[EXP TDSABL] ;CLEAR HARDWARE FLAG JRST XMTINT ;GO PROCESS CHAR IN SCNSRF OR SCNSRH ;COMMON PARTS OF CTY AND SCANNER INTERRUPT SERVICE ROUTINES. EXTERNAL INJEST,DDBSRC INTERNAL TCOMM TCOMM: SKIPE DDB,TTYTAB(LINE) ;DATA BLOCK ASSIGNED? JRST INUSE ;YES PUSHJ PDP,DDBSRC ;SEARCH FOR FREE TTY DEV. DATA BLOCK JRST TYPX ;NONE FOUND, TYPE X MOVEI HPOS,0 ;ASSUME TTY IS AT BEGIN OF FORM CAILE LINE,TCONLN ;PSEUDO CONSOLE? JRST INJEST ;YES CAIN LINE,TCONLN ;IS IT THE CTY ? JRST INUS2 ;YES, ACCEPT CHAR AND PROCESS JRST TYPE ;NO, ECHO CHAR ON FULL DUPLEX ;BEFORE PROCESSING IT ;HERE IF LINE NUMBER TOO BIG SCNIN2: DATAO DLS,[EXP TDSABL] ;SET TRANSMIT DISABLE BIT AND OUTPUT IT ;(JUST INCASE, ELSE IT WILL INTERRUPT IMMEDIATELY AGAIN) POPJ PDP, ;DISMISS INTERRUPT ;COMMON TO RECEIVE AND TRANSMIT. INUSE: HRRZS DDB ;LINE DISABLED IF RH TTYTAB=-1 CAIN DDB,-1 POPJ PDP, MOVE IOS,DEVIOS(DDB) ;SETUP IOS CAIL LINE,TCONLN ;CTY OR PTY ? JRST INUS2 ;YES TLNE IOS,FULTWX ;IS THIS SELF ECHOEING FULL DUPLEX? JRST INUS2 ;YES,(USER TYPED CONROL B) HRL CHREC,LINE ;INSERT LINE NUMBER IN DATAO TLO CHREC,USDRLN TRZ CHREC,TDSABL DATAO DLS,CHREC DPB CHREC,PLASTC POPJ PDP, ;DISMISS INTERRUPT ;ROUTINE TO OUTPUT A CHARACTER ON A LINE ;CALLED FROM TYP OR TYPL IN SCNSER INTERNAL SCNTYP SCNTYP: DLSTYP: HRL CHREC,LINE ;SET UP LINE NUMBER IN CHREC TLO CHREC,USDRLN ;USE THAT AS DIRECTED LINE# TRZ CHREC,TDSABL ;INSURE TRANSMISSION NOT DISABLED DATAO DLS,CHREC ;OUT IT GOES SKIPE DDB DPB CHREC,PLASTC ;SAVE CHAR FOR FULL DUPLEX POPJ PDP, LIT DLSEND: END