IDENT 1TS,STM PERIPH BASE MIXED SST *COMMENT 1TS - INTERNAL STIMULATION DRIVER. COMMENT COPYRIGHT CONTROL DATA SYSTEMS INC. 1992. TITLE 1TS - INTERNAL STIMULATION DRIVER. SPACE 4,10 *** 1TS - INTERNAL STIMULATION DRIVER. * G. R. MANSFIELD. 72/08/10. * R. A. JAPS. 77/12/05. SPACE 4,10 *** *1TS* IS A STIMULATION DRIVER WHICH IS CALLED BY *STIMULA* * TO STIMULATE LOW SPEED INTERACTIVE TERMINALS FOR *IAF*. SPACE 4,10 *** INPUT REGISTER FORMAT. * *T IR 18/ *1TS* ,24/ 0 ,18/ADDR * * ADDR ADDRESS OF CONTROL TABLE ENTRY FOR STIMULATION. * ADDR IS ZERO FOR STIMULATION INITIALIZATION. * * REFER TO *STIMULA* FOR TABLE FORMATS. SPACE 4,10 *** DAYFILE MESSAGES. * * * IAF ABORT.* * STIMULATION WAS ABORTED BECAUSE *IAF* WAS NOT * COMMUNICATING WITH THE STIMULATOR. * * * OUT OF SYNCH.* * THE STIMULATION WAS ABORTED BECAUSE *1TS* WAS OUT OF * SYNCH WITH *IAF*. * * * LOST STIMOUT DATA.* * *1TS* WAS NOT ABLE TO RECOVER ALL OUTPUT BECAUSE THE * CM BUFFERS WERE FULL. * * *XXXXXX.XXX SEC. 1TS CYCLE TIME.* * INFORMATIVE MESSAGE STATING THE MAXIMUM CYCLE TIME * FOR *1TS*. * * * INVALID OPTIONAL THINK TIME.* * STIMULATION WAS ABORTED BECAUSE OF AN INVALID OPTIONAL * THINK TIME SPECIFICATION IN THE SCRIPTS. CORRECT * SCRIPTS AND RETRY. * * * ERROR IN SPECIAL ACCOUNT NUMBER.* * STIMULATION WAS ABORTED BECAUSE AN ERROR IN THE * SCRIPTS WAS ENCOUNTERED WHILE PROCESSING THE SPECIAL * ACCOUNT NUMBER FLAGS. * * * STIMULATION INITIATED.* * INFORMATIVE MESSAGE STATING THAT THE STIMULATION HAS * STARTED. * * * IAF NOT ACTIVE.* * STIMULATION WAS ABORTED BECAUSE *IAF* WAS NOT AT * CONTROL POINT 1. BRING UP *IAF* AND RETRY. * * * MEMORY REQUEST ERROR.* * AN INTERNAL ERROR INDICATING THAT *STIMULA* HAS NOT * REQUESTED ENOUGH FL FOR THE STIMULATION. * * * INPUT REQUESTED PAST END OF SCRIPT - NNNN.* * AN INPUT REQUEST WAS RECEIVED EVEN THOUGH END OF * SCRIPT HAD BEEN REACHED ON TERMINAL *NNNN*. THIS * IS A FATAL ERROR. SPACE 4,10 *** INSTALLATION NOTES. * * THE STIMULATION DRIVER INTERFACES WITH *STIMULA*. * *1TS* IS A STIMULATION DRIVER THAT COMMUNICATES * WITH *1TN* VIA CHANNEL (INTERNAL STIMUALTION). * * ************** * * * * * 1TS * * * * * ************** * I * CHANNEL I * I * ************** * * * * * 1TN * * * * * ************** SPACE 4 ** COMMON DECKS. *CALL COMSACC *CALL COMSPIM *CALL COMPMAC *CALL COMPCHI *CALL COMSREM *CALL COMSSCD *CALL COMSSSD LIST X *CALL COMSSTM LIST -X TITLE DIRECT CELLS AND ASSEMBLY CONSTANTS. DIRECT SPACE 4,10 **** DIRECT LOCATION ASSIGNMENTS. DP EQU 20 - 24 DATA POINTER TT EQU DP+2 THINK TIME RT EQU DP+3 DATA RATE CK EQU DP+4 CLOCK OC EQU 25 OUTPUT CHARACTER IC EQU 26 INPUT CHARACTER AT EQU 30 ACTIVE TERMINAL COUNT LS EQU 31 LAST SECOND COUNT MT EQU 32 1TS MAX CYCLE TIME LM EQU 33 LAST MILLISECOND COUNT MC EQU 34 MILLISECOND COUNT NT EQU 35 NUMBER OF TERMINALS TC EQU 36 TERMINAL COUNT LC EQU 37 NUMBER OF TERMINALS TO LOGIN OT EQU 40 OUTPUT TERMINAL NUMBER IT EQU 41 INPUT TERMINAL NUMBER TW EQU 42 - 47 WORD TWO OF *TTER* ENTRY LI EQU TW+0 LINE SPEED IS EQU TW+1 INPUT SPEED LD EQU TW+2 LOGOUT DELAY TI EQU TW+3 INITIAL THINK TIME TO EQU TW+4 OPTIONAL THINK TIME SC EQU 47 SECOND COUNT IN EQU 60 - 64 IN POINTER **** SPACE 4,10 ** ASSEMBLY CONSTANTS. CH EQU 15 STIMULATOR CHANNEL TITLE MACRO DEFINITIONS. RETURN SPACE 4 ** RETURN - RETURN TO MANAGER TO ADVANCE TERMINAL PROCESSING. * * RETURN EXIT,ADDR * * ENTRY *EXIT* = MANAGER EXIT NUMBER. * *ADDR* = MANAGER RETURN ADDRESS. * IF *ADDR* IS NULL, RETURN TO NEXT PROGRAM ADDRESS. PURGMAC RETURN RETURN MACRO N,A LDC A *+4 LJM N STT ENDM TTADD SPACE 4 ** TTADD - GENERATE TERMINAL TABLE ADDRESS. * * TTADD TER,W * * ENTRY *TER* = DIRECT LOCATION CONTAINING TERMINAL NUMBER. * W = 0, ADDRESS OF FIRST WORD OF ENTRY. * = 1, ADDRESS OF SECOND WORD OF ENTRY. * = 2, ADDRESS OF THIRD WORD OF ENTRY. * = 3, ADDRESS OF FOURTH WORD OF ENTRY. * = 4, ADDRESS OF FIFTH WORD OF ENTRY. * * EXIT (A) = DESIRED ADDRESS. TTADD MACRO T,W LOCAL L LDD RA SHN 6 ADD T QUAL L ADC ** QUAL * IFC EQ,$W$0$ TTE0 RMT CON L TTE0 RMT ENDIF IFC EQ,$W$1$ TTE1 RMT CON L TTE1 RMT ENDIF IFC EQ,$W$2$ TTE2 RMT CON L TTE2 RMT ENDIF IFC EQ,$W$3$ TTE3 RMT CON L TTE3 RMT ENDIF IFC EQ,$W$4$ TTE4 RMT CON L TTE4 RMT ENDIF ENDM TITLE MAIN PROGRAM. STM SPACE 4 ** STM - MAIN PROGRAM. ORG PPFW STM RJM PRS PRESET PROGRAM ACN CH * UPDATE CLOCKS. STM1 LDC RTCL READ REAL TIME CLOCK CRD CM LDD CM+4 SET ELAPSED MILLISECOND COUNT SBM STMD PJN STM2 IF CLOCK NOT RECYCLED ADC 10000B IF CLOCK RECYCLED STM2 STD MC SET MILLISECOND COUNT SINCE LAST CYCLE SBD MT CHECK CYCLE TIME MJN STM4 IF MAXIMUM NOT EXCEEDED RAD MT SET NEW MAXIMUM STM4 LDD MC RAD LM ADD LAST MILLISECOND SBK 1000D PJN STM5 IF SECOND ELAPSED LDN 0 UJN STM6 TOGGLE SECOND STATUS STM5 STD LM SAVE LAST MILLISECOND AOD LS UPDATE LAST SECOND LDN 1 STM6 STD SC SET SECOND COUNT STATUS LDD CM+4 CURRENT TIME STM STMD LDD NT SET TERMINAL COUNT STD TC LDD MA STORE CLOCK CWD AT LDN 2 SET ON LINE CONTROL STM LCIC * CHECK FOR END OF STIMULATION. STM7 PAUSE LDD CM+1 STM STMF SAVE ERROR STATUS RJM SAA SET ABSOLUTE ADDRESSES LDC ** STMF EQU *-1 (ERROR STATUS) NJN STM11 IF ERROR FLAG SET LDN 0 * LDN 1 (INTERNAL ERROR ENCOUNTERED) STMA EQU *-1 NJN STM11 IF INTERNAL ERROR ENCOUNTERED IJM STM10,CH IF DRIVER ABORTED FJM STM8,CH IF DRIVER READY LDN 77 DELAY SBN 1 NJN *-1 IF DELAY NOT EXPIRED UJN STM7 RETRY STM8 IAN CH+40 INPUT SYNC CODE LPC 7777 TRUNCATE TO 12 BITS LMC 7777 CHECK FOR SYNC CODE NJN STM9 IF NOT SYNC CODE RJM SSL ENTER STIMULATOR SERVICE LOOP LDD AT CHECK ACTIVE TERMINAL COUNT ZJN STM11 IF NONE ACTIVE LJM STM1 LOOP * PROCESS OUT OF SYNC CONDITION. STM9 LDC MSGB SET MESSAGE ADDRESS UJN STM12 TERMINATE STIMULATION RUN * PROCESS *IAF* ABORT. STM10 LDC MSGA * IAF ABORTED.* UJN STM12 TERMINATE STIMULATION RUN * PROCESS END OF STIMULATION. STM11 RJM TDR TERMINATE DRIVER LDC 0 * LDC MSGE * INVALID OPTIONAL THINK TIME.* * LDC MSGB * OUT OF SYNCH.* * LDC MSGF * ERROR IN SPECIAL ACCOUNT NUMBER.* * LDC MSGG * INPUT REQUESTED PAST END OF SCRIPT...* STMB EQU *-1 ZJN STM13 IF NO ERROR MESSAGE * TERMINATE STIMULATION RUN. * * ENTRY (A) = MESSAGE ADDRESS. STM12 RJM DFM STM13 LDN ZERL CONVERT MAXIMUM CYCLE TIME CRD CM LDD MT ZJN STM14 IF NO TIME ACCUMULATED STD CM+4 LDD MA CWD CM MONITOR RDCM REQUEST DATA CONVERSION LDD MA SET UP MESSAGE CRM MSGD,ON *XXXXXX.XXX SEC. 1TS CYCLE TIME.* LDC MSGD RJM DFM STM14 RJM ESD END STIMOUT DATA LDD IR+3 SET CONTROL TABLE ENTRY COMPLETE SHN 6 ADD RA SHN 6 ADD IR+4 CRD CM LDC 4000 STD CM LDC 0 STMC EQU *-1 (TOTAL TIMES IN REGULATION) STD CM+1 LDD IR+3 SHN 6 ADD RA SHN 6 ADD IR+4 CWD CM UJN DPP DROP PPU STMD CON 0 PREVIOUS TIME DPP SPACE 4 ** DPP - DROP PPU. DPP MONITOR DPPM DROP PPU LJM PPR EXIT TO PP RESIDENT SPACE 4,10 ** STIMULATION COMPLETION MESSAGES. MSGA DATA C* IAF ABORT.* MSGB DATA C* OUT OF SYNCH.* MSGC DATA C* LOST STIMOUT DATA.* MSGD DATA C*XXXXXX.XXX SEC. 1TS CYCLE TIME.* MSGE DATA C* INVALID OPTIONAL THINK TIME.* MSGF DATA C* ERROR IN SPECIAL ACCOUNT NUMBER.* MSGG DATA H* INPUT REQUESTED PAST END OF SCRIPT -* MSGH DATA C*NNNN.* SPACE 4,10 ** COMMON DECKS. *CALL COMPC2D TITLE TERMINATION ROUTINES. TDR SPACE 4,15 ** TDR - TERMINATE DRIVER. * * ENTRY STIMULATION ENDED. * (NT) = NUMBER OF TERMINALS. * * EXIT ALL TERMINALS SET OFF LINE. * TO *STM10*, IF OUT OF SYNCH OR *1TN* NOT RESPONDING. * * USES T1 - T4. * * MACROS PAUSE, TTADD. TDR SUBR ENTRY/EXIT LDN 20 STD T4 LDN 0 STD T3 TDR1 IJM STM10,CH IF DRIVER ABORTED PAUSE EJM TDR1,CH WAIT FOR DRIVER IAN CH+40 INPUT SYNC CODE LPC 7777 TRUNCATE TO 12 BITS LMC 7777 ZJN TDR2 IF IN SYNCH LJM STM10 IF DRIVER ABORTED TDR2 STD T1 STD T2 CLEAR ACTIVE COUNT TDR3 TTADD T1,0 READ TERMINAL TABLE ENTRY CRD DP LDD DP CHECK STATUS SHN 21-13 MJN TDR5 IF OFF LINE LDD T2 NJN TDR6 IF ONE ALREADY PROCESSED AOD T3 SBN 20 NJN TDR4 DELAY LOG OFF STD T3 LDC 4000 SET OFF LINE STD DP TTADD T1,0 CWD DP TDR4 LDD TH SET TERMINAL LOGGED OFF STD T2 UJN TDR6 OUTPUT CHARACTER TDR5 LDN 0 SET OFF LINE TDR6 OAN CH+40 FJM *,CH IAN CH+40 ACCEPT DRIVER INPUT AOD T1 ADVANCE TERMINAL NUMBER LMD NT NJP TDR3 IF MORE TERMINALS LDD T2 ZJN TDR8 IF NO TERMINALS LOGGED OFF TDR7 LJM TDR1 LOOP TDR8 SOD T4 NJN TDR7 IF FINAL PASS INCOMPLETE DCN CH+40 LJM TDRX RETURN ESD SPACE 4,15 ** ESD - END STIMOUT DATA. * * ENTRY STIMULATION COMPLETE. * (NT) = NUMBER OF TERMINALS. * * EXIT DATA WORD IN *TTER* FLUSHED TO FET BUFFER. * * USES T1, T7, CM - CM+4. * * CALLS SDW. * * MACROS TTADD. ESD SUBR ENTRY/EXIT LDN 1 (NO OUTPUT RECOVERY) * LDN 0 (OUTPUT RECOVERY) ESDA EQU *-1 NJN ESDX IF NO OUTPUT RECOVERY STD T1 ZERO DUMMY CHARACTER STD T7 TERMINAL NUMBER ESD1 TTADD T7,3 READ TERMINAL TABLE ENTRY CRD CM LDD CM ZJN ESD2 IF NO ENTRY IN DATA WORD RJM SDW STORE DATA WORD ESD2 AOD T7 ADVANCE TERMINAL NUMBER LMD NT NJN ESD1 IF MORE TERMINALS UJN ESDX RETURN TITLE STIMULATOR SERVICE. OFL SPACE 4,10 * RETURNS FOR TERMINAL IDLE AND OFF LINE. OFL STM TOCA,OT SET ENTRY ADDRESS OFL1 LDN 0 SET OFF LINE STATUS STD OC UJN STT1 STORE TERMINAL TABLE ENTRY OFL2 LDN 0 SET OFF LINE STATUS STD OC UJN NOP RETURN FOR NO OPERATION ONL SPACE 4,10 * RETURNS FOR TERMINAL IDLE AND ON LINE. ONL STM TOCA,OT SET ENTRY ADDRESS ONL1 LDD TH SET ON LINE STATUS STD OC UJN STT1 STORE TERMINAL TABLE ENTRY ONL2 LDD TH SET ON LINE STATUS ONL3 STD OC UJN NOP RETURN FOR NO OPERATION STT SPACE 4,10 * RETURNS FOR STORE TERMINAL TABLE ENTRY. STT STM TOCA,OT SET ENTRY ADDRESS STT1 TTADD OT,0 STORE TERMINAL TABLE ENTRY CWD DP * UJN NOP RETURN FOR NO OPERATION NOP SPACE 4,10 * RETURN FOR NO OPERATION. NOP AOD OT ADVANCE OUTPUT TERMINAL LMD NT NJN SSL4 IF LIMIT NOT REACHED STD OT * UJN SSL4 PROCESS NEXT TERMINAL SSL SPACE 4,10 ** SSL - STIMULATOR SERVICE LOOP. * * ENTRY (NT) = NUMBER OF TERMINALS BEING STIMULATED. * (TC) = TERMINAL COUNT. * * EXIT ALL TERMINALS SERVICED. * * USES IC, IT, TC, T1. * * CALLS RTC. * * NOTES UPLINE DATA PROCESSORS RETURN TO THE SERVICE * LOOP AT *SSL4*. * * *SSL* IS RESPONSIBLE FOR SENDING AND RECEIVING * DATA FROM THE STIMULATOR CHANNEL. SSL4 IAN CH+40 INPUT CHARACTER STD IC SOD TC DECREMENT TERMINAL COUNT NJN SSL1 IF NOT END OF TERMINALS * UJN SSLX SSL SUBR ENTRY/EXIT SSL1 LDD OC OUTPUT CHARACTER OAN CH+40 FJM *,CH LDD IC CHECK PREVIOUS INPUT CHARACTER SHN 6 PJN SSL2 IF NO INPUT DATA RJM RTC READ TERMINAL CHARACTER SSL2 AOD IT ADVANCE INPUT TERMINAL LMD NT NJN SSL3 IF LIMIT NOT REACHED STD IT SSL3 LDM TOCA,OT STD T1 LJM 0,T1 ENTER OUTPUT ROUTINE TITLE UPLINE DATA PROCESSING ROUTINES. LGI SPACE 4,20 ** LGI - PROCESS LOGIN. * * ENTRY (LC) = LOGIN COUNT. * (SC) = SECOND COUNT. * (OT) = OUTPUT TERMINAL. * (LCIC) = ON LINE CONTROL. * * EXIT TERMINAL SET ON LINE. * * USES LC, OC, CM - CM+4, DP - DP+4. * * MACROS RETURN, TTADD. * * NOTES *LGI* IS RESPONSIBLE FOR THE RATE AT WHICH * TERMINALS ARE BROUGHT ON LINE. LGI LDD LC CHECK LOGIN COUNT NJN LGI1 IF LOGIN ALLOWED LJM OFL2 SET OFF LINE STATUS LGI1 TTADD OT,0 READ TERMINAL TABLE ENTRY CRD DP SOD LC DECREMENT LOGIN COUNT RETURN OFL LGIA LDD SC CHECK SECOND COUNT NJN LGI2 IF SECOND ELAPSED LJM OFL2 SET OFF LINE STATUS LGI2 TTADD OT,0 READ TERMINAL TABLE ENTRY CRD DP SOD CK DECREMENT CLOCK ZJN LGI3 IF START TIME REACHED MJN LGI3 IF START TIME REACHED LJM OFL1 SET OFF LINE STATUS LGI3 AOD LC ADJUST LOGIN COUNT LDD DP CLEAR OFF LINE LPN 77 KEEP UPPER 6 BITS OF SCRIPT ADDRESS STD DP RETURN OFL LGIB LDM LCIC CHECK ON LINE CONTROL NJN LGI4 IF OKAY TO BRING ON LINE LJM OFL2 SET OFF LINE STATUS LGI4 SOM LCIC DECREMENT ON LINE CONTROL TTADD OT,0 CRD DP RETURN ONL LGI5 LDC 5000 SEND LEGAL CHARACTER LJM ONL3 SET ON LINE STATUS LCIC CON 0 ON LINE CONTROL LGID CON 0 NUMBER OF ACTIVE TERMINALS REJ SPACE 4,10 ** REJ - REJECT CHARACTER. * * EXIT (OC) = 1400. * * USES OC, DP - DP+4. * * MACROS RETURN, TTADD. REJ BSS 0 ENTRY TTADD OT,0 READ TERMINAL TABLE ENTRY CRD DP LDD CK CHECK CLOCK SBD MC MJN REJ1 IF CHARACTER DELAY ELAPSED STD CK LDC 1400 SET OUTPUT CHARACTER REJECT STD OC LJM STT1 UPDATE TERMINAL STATUS REJ1 ADD RT RESET CLOCK PJN REJ2 LDD RT REJ2 STD CK RETURN ONL,ONL2 TTD SPACE 4,15 ** TTD - THINK TIME DELAY. * * ENTRY (OT) = OUTPUT TERMINAL NUMBER. * * EXIT THINK TIME DELAY EXPIRED. * INPUT SPEED SET FOR UPLINE DATA. * TO *WTC*. * * USES DP - DP+4, TW - TW+4. * * MACROS RETURN, TTADD. * * NOTES *TTD* IS RESPONSIBLE FOR GENERATING AND * PROCESSING A THINK TIME DELAY BEFORE SENDING * UPLINE DATA. TTD BSS 0 ENTRY TTADD OT,0 READ TERMINAL TABLE ENTRY CRD DP LDD TT SET THINK TIME LPC 177 STD CK IAN. 14 SELECT RANDOM INCREMENT TTDA LPN ** RAD CK ZJN TTD2 IF NO DELAY AOD CK RETURN ONL LDD SC CHECK SECOND COUNT NJN TTD1 IF SECOND ELAPSED LJM ONL2 RETURN ON LINE STATUS TTD1 TTADD OT,0 READ TERMINAL TABLE ENTRY CRD DP SOD CK DECREMENT CLOCK ZJN TTD2 IF THINK TIME ELAPSED LJM ONL1 RETURN ON LINE STATUS TTD2 TTADD OT,1 READ TERMINAL TABLE ENTRY CRD TW LDD IS SET INPUT SPEED STD CK STD RT RETURN ONL,WTC WTC SPACE 4,25 ** WTC - WRITE CHARACTER. * * ENTRY INPUT SPEED SET IN *TTER*. * (OT) = OUTPUT TERMINAL. * (MC) = MILLESECOND TIME CLOCK. * * EXIT (OC) = OUTPUT CHARACTER. * TO *STT1* IF CHARACTER TO OUTPUT. * TO *OTT1* TO PROCESS OPTIONAL THINK TIME. * TO *ONL1* IF OPTIONAL THINK TIME PROCESSED. * * USES T0 - T6, DP - DP+4, TW - TW+4. * * CALLS GNT, OTT, SAN, SDC. * * MACROS TTADD. * * NOTES *WTC* IS RESPONSIBLE FOR THE FOLLOWING - * 1. PROCESSING INPUT SPEED FOR UPLINE DATA. * 2. GETTING THE NEXT CHARACTER OF UPLINE DATA * FROM THE SESSION SCRIPT IN CM. * 3. PROCESS ANY SPECIAL CHARACTERS RELATED TO * TASKS, OPTIONAL THINK TIME, OR DYNAMIC * USER NUMBERS. WTC BSS 0 ENTRY TTADD OT,0 READ TERMINAL TABLE ENTRY CRD DP * CHECK IF INPUT THINK TIME EXPIRED. LDD CK CHECK CLOCK SBD MC MJN WTC1 IF CHARACTER DELAY ELAPSED STD CK LJM ONL1 RETURN ON LINE STATUS WTC1 ADD RT SET NEW RATE PJN WTC2 LDD RT WTC2 STD CK * SAVE CURRENT SCRIPT ADDRESS FOR POSSIBLE LINE * REGULATION PROCESSING. LDD DP SHN 21-11 PJN WTC3 IF NOT BEGINNING OF LINE TTADD OT,4 SAVE CURRENT ADDRESS OF SCRIPT CRD T1 LDD DP STD T1 LDD DP+1 STD T1+1 LDN 0 STD T1+2 TTADD OT,4 CWD T1 * GET NEXT CHARACTER FROM SCRIPT SESSION. WTC3 LDD DP SET BYTE NUMBER SHN 14 LPN 7 STD T5 LDD DP LPN 77 SHN 6 ADD RA SHN 6 ADD DP+1 CRD T0 LDD HN ADVANCE BYTE RAD DP SHN -6 LPN 7 LMN 5 NJN WTC4 IF NOT END OF WORD AOD DP+1 ADVANCE WORD SHN -14 ADD DP LPC 1077 RESET BYTE STD DP WTC4 TTADD OT,0 CWD DP TTADD OT,1 CRD TW * CHECK CHARACTERS FOR SPECIAL PROCESSING. LDI T5 CHECK FOR SPECIAL CHARACTER SHN -11 ZJN WTC7 IF NOT SPECIAL CHARACTER LDN 0 CLEAR INDEX STD T6 WTC5 LDM TSCH,T6 CHECK FOR SPECIAL CHARACTER ZJN WTC7 IF END OF TABLE LMI T5 ZJN WTC6 IF SPECIAL CHARACTER LDN 2 ADVANCE TABLE INDEX RAD T6 UJN WTC5 LOOP WTC6 LDM TSCH+1,T6 GET PROCESSOR ADDRESS STD T6 LJM 0,T6 PROCESS SPECIAL CHARACTER WTC7 LDD TO ZJN WTC8 IF NOT IN OPTIONAL THINK TIME MODE LJM OTT1 PROCESS OPTIONAL THINK TIME WTC8 LDI T5 SET CHARACTER LMD TH STORE OUTPUT CHARACTER STD OC LDD DP CLEAR FIRST OUTPUT FLAG LPC 6777 STD DP LDD TO CHECK OPTIONAL THINK TIME ENTRY ZJN WTC9 IF NOT OPTIONAL THINK TIME ENTRY LDC ONL1&STT1 WTC9 LMC STT1 STM WTCA LDD OT SET TERMINAL NUMBER STD T7 LDD OC STORE DATA CHARACTER LPC 377 RJM SDC LJM * * LJM STT1 (NO OPTIONAL THINK TIME) * LJM ONL1 (OPTIONAL THINK TIME PRESENT) WTCA EQU *-1 TSCH SPACE 4,10 ** TSCH - TABLE OF SPECIAL CHARACTERS. * *T 12/ CHAR *T, 12/ ADDR * * CHAR SPECIAL CHARACTER (ASCII) * ADDR ADDRESS OF PROCESSOR TSCH BSS 0 CON .ELCR,EOL END OF LINE CON .ELXO,EOL END NOF LINE CON .ESC,EOL ESCAPE CON .ETX,EOL END OF TEXT CON .AUTO,WTC7 SOURCE LINE INPUT CON .BTSK,SNT BEGIN TASK CON .ETSK,PET END TASK CON .SACN,SAN DYNAMIC LOGIN CON .OPTT,OTT OPTIONAL THINK TIME CON .ESCR,EOS END OF SCRIPT CON .ESXO,EOS END OF SCRIPT CON 0,0 END OF TABLE EOL SPACE 4,20 ** EOL - PROCESS END OF LINE. * * ENTRY (OT) = OUTPUT TERMINAL NUMBER. * (TO) = OPTIONAL THINK TIME. * (DP - DP+4) = TERMINAL STATUS. * * EXIT TERMINAL STATUS UPDATED IN *TTER*. * (OC) = OUTPUT CHARACTER. * TO *STT1* IF NO ERROR. * TO *ONL1* IF ERROR ENCOUNTERED. * * USES CK, DP, RT, TO, TT, CM - CM+4. * * CALLS ETM, SDC. * * MACROS TTADD. EOL BSS 0 ENTRY LDD TO NJN EOL1 IF OPTIONAL THINK TIME LJM EOL5 IF NORMAL PROCESSING EOL1 LMC 6000 CHECK FLAG FOR \\ ZJN EOL3 IF RESET TO INITIAL THINK TIME LDD TO CHECK OPTIONAL THINK TIME LPC 1777 STD T6 ADC -200 PJN EOL4 IF ENTRY TOO LARGE EOL2 LDD TT CURRENT RC,TT VALUES IN TERMINAL TABLE LPC 7600 KEEP RC VALUE ADD T6 INSERT NEW TT VALUE STD TT STD RT STD CK LDN 0 STD TO CLEAR OPTIONAL THINK TIME TTADD OT,1 CWD TW LJM ONL1 RETURN ON LINE EOL3 LDD TI SET INITIAL THINK TIME STD T6 UJN EOL2 INSERT THINK TIME EOL4 LDC MSGE SET INTERNAL ERROR STATUS STM STMB LDC LDNI+1 STM STMA LJM ONL1 RETURN ON LINE * PROCESS END OF LINE (CARRIAGE RETURN, ECS, ETX). EOL5 BSS 0 ENTRY LDC ONL2 SET ON LINE STM TOCA,OT LDD LI RESET LINE SPEED FOR OUTPUT STD RT LDI T5 STORE OUTPUT CHARACTER LPC 377 LMC 5000 STD OC TTADD OT,2 CRD CM LDD CM+4 ZJN EOL6 IF NOT SOURCE LINE INPUT LDC TTD SET THINK TIME DELAY PROCESSOR STM TOCA,OT LDD DP SET FIRST OUTPUT CHARACTER ENCOUNTERED LPC 6777 LMC 1000 STD DP EOL6 LDD CM+2 CLEAR USER NUMBER FLAG LPN 77 STD CM+2 LDN 0 STD CK STD CM+4 CLEAR SOURCE LINE INPUT FLAG TTADD OT,2 CWD CM LDD OT SET TERMINAL NUMBER STD T7 LDD OC STORE DATA CHARACTER LPC 377 RJM SDC RJM ETM ENTER TIME LJM STT1 RETURN TERMINAL STATUS EOS SPACE 4,20 ** EOS - PROCESS END OF SCRIPT. * * ENTRY (DP - DP+4) = TERMINAL STATUS. * (RBUF - RBUF+4) = *RA+0* WORD. * * EXIT TERMINAL STATUS AND SCRIPT ADDRESS UPDATED. * TO *EOL5* IF LAST SESSION. * TO *EOL* IF NEW SESSION TO BE STIMULATED. * * USES T6, T7, CM - CM+4, DP - DP+4. EOS BSS 0 ENTRY LDD DP+2 LPC 7600 NJN EOS1 REPEAT COUNT PRESENT LDD DP SET END OF SESSION LPN 77 LMC 6000 STD DP LJM EOL5 PROCESS END OF LINE EOS1 LDM RBUF CHECK LOOP FLAG SHN 21-13 PJN EOS2 IF NEXT RECORD TO BE USED LJM EOS5 IF REPEAT ON SESSION RECORD * LOOP ON FILE - SET ADDRESS OF NEXT SESSION RECORD. EOS2 LDN 0 STD T7 LDD DP SHN -6 ZJN EOS3 IF THE 1ST BYTE OF A NEW WORD AOD T7 EOS3 AOD T7 LDD DP LPN 77 SHN 14 ADD DP+1 ADD T7 STD DP+1 SHN -14 STD DP SBM RBUF SHN 14 ADD DP+1 SBM RBUF+1 ZJN EOS4 IF LAST SESSION - LOOP TO FIRST SESSION LJM EOS9 IF SESSION TO CONTINUE TO NEXT SCRIPT EOS4 LDM RBUF+3 SET FWA OF FIRST SCRIPT STD DP+1 LDM RBUF+2 LJM EOS8 DECREMENT REPEAT COUNT * LOOP ON SESSION - SET ADDRESS OF CURRENT SESSION RECORD. EOS5 LDD DP SHN -6 ZJN EOS6 IF THE FIRST BYTE OF A NEW WORD LDN 1 EOS6 STD T6 ADDRESS OF NEXT SESSION RECORD LDD DP LPN 77 STD DP SHN 6 ADD RA SHN 6 ADD DP+1 ADD T6 FORM POINTER TO START OF CURRENT RECORD CRD CM LDD DP+1 BACK UP POINTER TO START OF RECORD SBD CM+4 ADD T6 STD DP+1 PJN EOS7 IF POSITIVE ADC 10000B IF NEGATIVE, ADD THE CARRY STD DP+1 SOD DP DECREMENT DUE TO THE CARRY EOS7 LDD DP SBD CM+3 EOS8 STD DP * DECREMENT REPEAT COUNT. EOS9 LDD DP+2 CHECK FOR UNLIMITED REPEAT COUNT LPC 7600 MASK REPEAT COUNT LMC 7600 ZJN EOS10 IF RC=31 (MAXIMUM, DO NOT DECREMENT) LDC -200 DECREMENT REPEAT COUNT BY 1 RAD DP+2 EOS10 LJM EOL PROCESS END OF LINE PET SPACE 4,20 ** PET - PROCESS END OF TASK. * * ENTRY (OT) = OUTPUT TERMINAL NUMBER. * * EXIT SCRIPT ADDRESS RESET IN *TTER*. * TASK COMPLETION COUNTER ADVANCED. * * USES CM - CM+4, DP - DP+4, T0 - T0+4. * * MACROS TTADD. * * NOTES IF NO TASK ENTRY ADDRESS IS PRESENT IN *TTER*, THEN * THE SPECIAL CHARACTER, *.ETSK*, WILL BE PROCESSED AS * A CHARACTER OF DATA. * * *END OF TASK* PROCESSING WILL RESET THE DYNAMIC * LOGIN FIELD IN *TTER*. PET BSS 0 ENTRY TTADD OT,2 READ THIRD WORD OF *TTER* ENTRY CRD CM LDD CM+2 READ SECOND WORD OF *TASK* ENTRY LPN 77 STD CM+2 ADD CM+3 NJN PET1 IF TASK ENTRY ADDRESS PRESENT LJM WTC7 NO SPECIAL PROCESSING REQUIRED PET1 LDD CM+2 SHN 6 ADD RA SHN 6 ADD CM+3 ADN 1 CRD T0 AOD T3 INCREMENT TASK COMPLETED COUNTER LDD CM+2 WRITE SECOND WORD OF *TASK* ENTRY SHN 6 ADD RA SHN 6 ADD CM+3 ADN 1 CWD T0 TTADD OT,0 READ TERMINAL STATUS CRD DP LDD DP SET OLD SCRIPT ADDRESS LMD CM LPC 7000 LMD CM STD DP LDD CM+1 STD DP+1 TTADD OT,0 SET SCRIPT ADDRESS CWD DP REPLACE *TTER* WITH OLD SCRIPT ADDR LDD CM+2 CLEAR TASK ENTRY ADDRESS SCN 77 STD CM+2 LDN 0 STD CM+3 TTADD OT,2 CWD CM LJM WTC3 PROCESS NEXT CHARACTER SNT SPACE 4,20 ** SNT - SET NEXT TASK. * * ENTRY (OT) = OUTPUT TERMINAL NUMBER. * * EXIT NEXT BEST TASK SET IN *TTER*. * TO *WTC3*. * * USES T6, T7, CM - CM+4, DP - DP+4. * * MACROS TTADD. SNT BSS 0 ENTRY TTADD OT,0 READ TERMINAL STATUS CRD CM TTADD OT,2 READ TASK ADDRESS CRD DP LDD CM SAVE CURRENT SCRIPT ADDRESS LPC 777 STD DP LDD CM+1 STD DP+1 LDD RA GET NEXT BEST TASK SHN 6 ADN RANT CRD CM LDD CM+3 SHN 14 ADD CM+4 NJN GNT1 IF TASK SET LDD RA ADVANCE NO TASK COUNTER SHN 6 ADN RASC CRD CM AOD CM+4 LDD RA GET DEFAULT TASK ADDRESS SHN 6 ADN RASC CWD CM ADN RATK SET DEFAULT TASK CRD CM STM GNTA SET DEFAULT TASK FLAG LDD CM+3 SHN 14 ADD CM+4 LOAD ADDRESS OF TASK TABLE NJN GNT1 IF TASK TABLE EXISTS LJM WTC7 CONTINUE CHARACTER PROCESSING GNT1 LDD CM+4 SAVE FWA OF TASK STD T7 LDD CM+3 GET FWA OF TASK TEXT LPN 77 STD T6 SHN 6 ADD RA SHN 6 ADD CM+4 CRD CM ADN 1 CRD T0 READ SECOND WORD OF TASK ENTRY LDD DP+2 LPC 7700 ADD T6 STD DP+2 LDD T7 STD DP+3 TTADD OT,2 SAVE OLD SCRIPT ADDRESS CWD DP TTADD OT,0 READ TERMINAL STATUS CRD DP LDD DP SET TASK ADDRESS LPC 7000 ADD CM+3 STD DP LDD CM+4 STD DP+1 TTADD OT,0 CWD DP LDC ** GNTA EQU *-1 (DEFAULT TASK FLAG) NJN GNT2 IF DEFAULT TASK SELECTED LDN ZERL CLEAR TASK ADDRESS CRD CM LDD RA SHN 6 ADN RANT CWD CM GNT2 AOD T4 INCREMENT *TASK CALLED* LDD T6 UPDATE SECOND WORD OF *TASK* ENTRY SHN 6 ADD RA SHN 6 ADD T7 ADN 1 CWD T0 LDN 0 CLEAR DEFAULT TASK FLAG STM GNTA LJM WTC3 PROCESS NEXT CHARACTER OTT SPACE 4,10 ** OTT - OPTIONAL THINK TIME. * * ENTRY ((T5)) = OUTPUT CHARACTER. * (TO) = OPTIONAL THINK TIME. * * EXIT (TO) = OPTIONAL THINK TIME. * TO *WTC3*. * * USES TO, T6. * * MACROS TTADD. * * NOTE OPTIONAL THINK TIME IS SET INTO *TTER* WHEN * END OF LINE IS PROCESSED. OTT BSS 0 ENTRY LDD TO ZJN OTT4 IF NOT RESET REQUEST LDC 6000 SET FLAG TO RESET INITIAL THINK TIME STD TO UJN OTT5 UPDATE *TTER* OTT1 BSS 0 ENTRY LDN 0 STD T6 OTT2 LDM TANV,T6 GET ASCII NUMBER FROM TABLE ZJN OTT5 IF END OF TABLE - IGNORE CHARACTER LMI T5 ZJN OTT3 IF MATCH AOD T6 UJN OTT2 UPDATE *TTER* OTT3 LDD TO SET OPTIONAL THINK TIME LPC 777 SHN 3 LMD T6 OTT4 LMC 4000B SET FLAG (IN CASE OF LEADING 0 CHARS) STD TO UJN OTT5 OTT5 TTADD OT,1 CWD TW REPLACE *TTER-1* ENTRY LJM WTC3 PROCESS NEXT CHARACTER TANV SPACE 4,10 ** TANV - TABLE OF ASCII NUMERIC VALUES. TANV BSS 0 LOC 0 CON .ZER 0 CON .ONE 1 CON .TWO 2 CON .THR 3 CON .FOR 4 CON .FIV 5 CON .SIX 6 CON .SEV 7 CON 0 END OF TABLE LOC *O SAN SPACE 4,10 ** SAN - SET ACCOUNT NUMBER. * * ENTRY ((T5)) = OUTPUT CHARACTER. * (OT) = OUTPUT TERMINAL. * * EXIT ((T5)) = NEXT OUTPUT CHARACTER. * ACCOUNT FLAG IN *TTER* UPDATED. * TO *WTC3*. * * USES T5, T6, CM - CM+4. * * MACROS TTADD. SAN BSS 0 ENTRY LDM SDWA SET TERMINAL NUMBER ADD OT STD T6 TTADD OT,2 READ TERMINAL TABLE ENTRY CRD CM LDD CM+2 GET ACCOUNT NUMBER POINTER SHN 14 LPN 7 NJN SAN1 IF FIRST CHARACTER PROCESSED LDD T6 SET FIRST CHARACTER OF TERMINAL NUMBER SHN 14 UJN SAN3 REPLACE SPECIAL CHARACTER SAN1 SBN 1 NJN SAN2 IF SECOND CHARACTER PROCESSED LDD T6 SET SECOND CHARACTER OF TERMINAL NUMBER SHN 17 UJN SAN3 REPLACE SPECIAL CHARACTER SAN2 SBN 1 NJN SAN4 IF THIRD CHARACTER PROCESSED - FLAG ERROR LDD T6 SET THIRD CHARACTER OF TERMINAL NUMBER SAN3 LPC 7 ISOLATE LOWER 3-BITS STD T6 LDM TANV,T6 CONVERT NUMBER TO ASCII CHARACTER STI T5 SAVE OUTPUT CHARACTER LDD CM+2 ADC 100 INCREMENT ACCOUNT NUMBER POINTER BY 1 STD CM+2 TTADD OT,2 WRITE TERMINAL TABLE ENTRY CWD CM LJM WTC7 PROCESS NEXT CHARACTER SAN4 LDC MSGF SET INTERNAL ERROR STATUS STM STM12 LDC LDNI+1 STM STMA LJM WTC3 PROCESS NEXT CHARACTER TITLE DOWNLINE DATA PROCESSING ROUTINES. RTC SPACE 4,25 ** RTC - READ TERMINAL CHARACTER. * * ENTRY (IC) = INPUT CHARACTER. * * EXIT TO *HNU* IF (IC) = 6000. * TO *INI* IF (IC) = 6400. * * USES T7, DP - DP+4. * * CALLS ETM, SDC. RTC SUBR ENTRY/EXIT LDD IC LPC 6777 LMC 1000 LMC 7000 ZJN RTCX IF PHONE LINE ENABLE LMC .IISE&7000 NJN RTC1 IF NOT HANG UP LJM HNU HANG UP RTC1 LMC .IISI&.IISE NJN RTC2 IF NOT BEGIN INPUT LJM INI INITIATE INPUT RTC2 LDM TOCA,IT CHECK ROUTINE LMC LGI5 ZJN RTCX RETURN IF LOGIN IN PROCESS LDC REJ SET REJECT RTC3 STM TOCA,IT RTC4 LDD IT SET TERMINAL NUMBER STD T7 TTADD IT,0 CRD DP LDD DP SHN 21-11 MJN RTC5 IF NOT POSSIBLY THE SECOND CHARACTER LDD IC CHARACTER LPC 4376 LMC 4024 ZJN RTC6 IF ECHO *LF* - DO NOT PUT OUT TIME LMC 4032&4024 ZJN RTC6 IF *CR* SENT LMC 4000&4032 ZJN RTC5 IF NULL CHARACTER SENT FOR CARRIAGE DELAY LMC 4376&4000 ZJN RTC5 IF DELETE CHARACTER SENT IN TAPE MODE LDC 1000 RAD DP TTADD IT,0 CWD DP SET FIRST CHARACTER FLAG RJM ETM ENTER TIME RTC5 LDD IC STORE DATA CHARACTER LPC 377 RJM SDC RTC6 LJM RTCX RETURN HNU SPACE 4,25 ** HNU - HANG UP. * * ENTRY (IT) = INPUT TERMINAL. * (NT) = NUMBER OF TERMINALS. * (AT) = ACTIVE TERMINAL COUNT. * * EXIT IF REPEAT COUNT NOT PRESENT, TERMINAL SET OFF LINE * (AT) = ACTIVE TERMINAL COUNT. * (LC) = LOGIN CONTROL. * * USES AT, DP - DP+4, TW - TW+4. * * MACROS TTADD. * * NOTES IF A REPEAT COUNT IS PRESENT, *HNU* WILL * INITIALIZE THE *TTER* ENTRY FOR THE NEXT SESSION * TO BE PROCESSED. THIS INCLUDES SETTING THE THINK * TIME, AND LOGIN DELAY. *PSO* HAS ALREADY SET * THE SESSION ADDRESS IN *TTER*. * IF NO REPEAT COUNT IS PRESENT, THE TERMINAL IS * SET OFF LINE. HNU BSS 0 ENTRY TTADD IT,0 READ TERMINAL TABLE ENTRY CRD DP LDD DP SET OFF LINE LPC 3777 LMC 4000 STD DP TTADD IT,1 CRD TW LDD TT REPLACE INITIAL THINK TIME LPC 7600 ADD TI STD TT TTADD IT,0 CWD DP LDD DP CHECK SESSION STATUS SHN 21-12 MJN HNU1 IF END OF SESSIONS LDD LD STD CK SET *LOGOUT DELAY* AS *LOGIN DELAY* TTADD IT,0 CWD DP REPLACE TERMINAL TABLE ENTRY TTADD IT,2 CLEAR LINE FEED CRD CM LDD CM LPC 3777 STD CM TTADD IT,2 CWD CM LDC LGI SET LOGIN STM TOCA,IT LJM RTCX RETURN HNU1 SOD AT DECREMENT ACTIVE TERMINAL COUNT LDC OFL2 SET OFF LINE LJM RTC3 RETURN INI SPACE 4,25 ** INI - INITIATE INPUT. * * ENTRY UPLINE DATA TO BE INITIATED. * (IT) = INPUT TERMINAL. * * EXIT OUTPUT PROCESSOR SET IN *TOCA*. * INPUT TYPING SPEED SET IF LOGIN IN PROCESS. * * USES DP - DP+4. * * CALLS HNU. * * MACROS TTADD. INI BSS 0 ENTRY TTADD IT,0 CRD DP LDD DP SHN -12 LMN 3 ZJP INI2 IF END OF SCRIPT HAS BEEN REACHED LDM TOCA,IT LMC LGI5 NJN INI1 IF LOGIN NOT IN PROCESS TTADD IT,1 CRD TW LDD IS SET INPUT TYPING SPEED FOR DATA RATE STD RT STD CK TTADD IT,0 CWD DP LDC WTC SET WRITE CHARACTER STM TOCA,IT LJM RTCX INI1 LDC TTD SET THINK TIME STM TOCA,IT LJM RTCX RETURN INI2 LDC MSGG SET INTERNAL ERROR STATUS STM STMB LDC LDNI+1 STM STMA LDD IT SET TERMINAL NUMBER IN MESSAGE SHN -6 RJM C2D CONVERT DIGITS STM MSGH LDD IT RJM C2D CONVERT DIGITS STM MSGH+1 LJM HNU HANG UP PHONE TITLE COMMON SUBROUTINES. ETM SPACE 4,10 ** ETM - ENTER TIME. * * ENTRY (LS) = LAST SECOND CLOCK. * (LM) = LAST MILLESECOND CLOCK. * * EXIT TIME STAMP SET ON DATA. * * CALLS SDC. ETM SUBR ENTRY/EXIT LDD LS ENTER LAST SECOND CLOCK LPC 1777 LMC 6000 SET TIME FLAG FOR *DEMUX* RJM SDC STORE TIME BYTE LDD LM ENTER MILLISECONDS LPC 1777 LMC 4000 SET TIME FLAG RJM SDC STORE MS TIME BYTE UJN ETMX RETURN SAA SPACE 4,10 ** SAA - SET ABSOLUTE ADDRESSES. * * EXIT ABSOLUTE ADDRESSES SET IN *SDW*. * * USES T1 - T2, CM - CM+4. SAA SUBR ENTRY/EXIT LDC ** SAAA EQU *-1 (FET ADDRESS) SHN 6 LMC ** (FET ADDRESS) SAAB EQU *-1 ZJN SAAX IF NO OUTPUT RECOVERED ADD RA SET IN POINTER ADDRESS SHN 6 ADN 2 STD T2 STM .INA+1 SHN -14 STD T1 ADC LDCI STM .INA LDD T1 SHN 14 LMD T2 CRD IN READ IN * PSN (AFTER FIRST ENTRY) SAAC EQU *-1 SBN 1 CRD CM READ FIRST LDD CM+3 LPN 37 SHN 14 ADD CM+4 SBN 1 ADJUST FOR IN ADVANCEMENT STM .FT1+1 SHN -14 ADC LDCI STM .FT1 LDD T1 READ LIMIT SHN 14 LMD T2 ADN 2 CRD CM LDD CM+3 LPN 37 SHN 6 ADD RA SHN 6 ADD CM+4 SBN 1 STM .LM1+1 SHN -14 ADC LMCI STM .LM1 LDD RA SET RA SHN 6 STM .RA1+1 SHN -14 ADC ADCI STM .RA1 LDC PSNI DISABLE READ OF IN STM SAAC LJM SAAX RETURN SDC SPACE 4,20 ** SDC - STORE DATA CHARACTER. * * ENTRY (A) = CHARACTER. * (T7) = TERMINAL NUMBER. * * EXIT DATA WORD IN *TTER* UPDATED WITH CHARACTER. * * USES T1, CM - CM+4. * * CALLS SDW. * * NOTES *SDC* USES THE DATA WORD (FOURTH WORD OF * THE *TTER* ENTRY) AS A TEMPORARY BUFFER FOR * OUTPUT. ONCE THIS WORD IS FULL, *SDC* IS CALLED * TO ENTER IT INTO THE OUTPUT BUFFER. SDC SUBR ENTRY/EXIT STD T1 SAVE CHARACTER LDN 1 (NO OUTPUT RECOVERY) * LDN 0 (OUTPUT RECOVERY) SDCA EQU *-1 NJN SDCX IF NO OUTPUT RECOVERY TTADD T7,3 READ TERMINAL TABLE ENTRY CRD CM AOD CM LMN 4 ZJN SDC1 IF END OF WORD PACK LDD T1 STM CM,CM TTADD T7,3 WRITE TERMINAL TABLE ENTRY CWD CM LDD T1 NJN SDC2 IF NOT END OF SESSION SDC1 RJM SDW SDC2 UJN SDCX RETURN SDW SPACE 4,20 ** SDW - STORE DATA WORD. * * ENTRY (T7) = TERMINAL NUMBER. * (T1) = CHARACTER. * (IN - IN+4) = ADDRESS TO IN POINTER. * * EXIT DATA WORD WRITTEN TO FET BUFFER. * IN POINTER UPDATED IN FET. * * USES IN+3, IN+4, CM - CM+4. * * CALLS DFM. SDW SUBR ENTRY/EXIT LDD T7 ENTER TERMINAL NUMBER ADC ** SDWA EQU *-1 (TERMINAL BIAS) STD CM LDD T1 ENTER CHARACTER STD CM+4 LDD IN+3 STORE DATA WORD SHN 14 ADD IN+4 .RA1 ADC ** CWD CM .LM1 LMC ** CHECK IN NJN SDW1 IF IN .NE LIMIT-1 .FT1 LDC ** RESET IN = FIRST STD IN+4 SHN -14 STD IN+3 SDW1 AOD IN+4 ADVANCE IN SHN -14 ZJN SDW2 AOD IN+3 SDW2 BSS 0 .INA LDC ** UPDATE IN CWD IN ADN 1 CRD CM READ OUT LDD IN+3 SBD CM+3 IN-OUT SHN 14 ADD IN+4 SBD CM+4 NJN SDW3 IF IN IS NOT EQUAL TO OUT LDC MSGC OVERFLOW MESSAGE RJM DFM SDW3 LDN ZERL CRD CM TTADD T7,3 CLEAR DATA WORD ENTRY CWD CM CLEAR ACCUMULATOR WORD LJM SDWX RETURN TITLE INITIALIZATION. PRS SPACE 4,20 ** PRS - PRESET PROGRAM. PRS3 LDN 0 CLEAR TERMINAL NUMBER STD T1 LDD NT SET ACTIVE TERMINAL COUNT STD AT PRS4 LDC LGI ENTRY ADDRESS = LOGIN STM TOCA,T1 TTADD T1,0 CRD CM LDD CM CHECK DISABLED STATUS SHN 21-12 PJN PRS5 IF TERMINAL ACTIVE SOD AT DECREMENT ACTIVE TERMINAL COUNT LDC OFL2 SET ENTRY ADDRESS OFF LINE STM TOCA,T1 PRS5 AOD T1 ADVANCE TERMINAL NUMBER LMD NT NJN PRS4 IF NOT END OF TABLE LDC RTCL READ REAL TIME CLOCK CRD CM LDD CM+4 SET LAST MILLISECOND COUNT STM STMD SET PREVIOUS TIME LDD RA READ *RA* SHN 6 CRM RBUF,ON * UJN PRSX RETURN PRS SUBR ENTRY/EXIT PAUSE NE LDK NCPL CHECK *STIMULA* CONTROL POINT CRD CM LDD CM+1 SHN 7 LMD CP ZJN PRS0 IF *STIMULA* AT LAST CONTROL POINT LDC =C+ *STM* MUST BE AT LAST CP.+ LJM ABT ABORT PRS0 RJM CTS CHECK *IAF* STATUS LDD IR+3 LPN 37 STD IR+3 ADD IR+4 NJN PRS1 IF STIMULATION TO BE INITIATIED RJM ICT INITIALIZE CONTROL TABLE LJM DPP DROP PPU PRS1 RJM ISC INITIALIZE STIMULATOR CHANNELS LDD RA READ CONTROL WORD SHN 6 ADN RACW CRD CM LDD CM SET NUMBER OF *TTER* ENTRIES STM SADA LDD CM+1 SET ACTIVATE COUNT STD LC LDD CM+2 SET THINK TIME INCREMENT MASK LPN 77 RAM TTDA LDD CM+4 SAVE REQUIRED FL STM SCPA LDD IR+3 READ CONTROL TABLE ENTRY LPN 37 SHN 6 ADD RA SHN 6 ADD IR+4 CRD TW RJM SCP START CENTRAL PROGRAM RJM IOR INITIALIZE OUTPUT RECOVERY LDD TW+3 SET BASE TERMINAL TABLE ADDRESS LPN 37 STD T3 LDD TW+4 STD T4 RJM SAD SET TERMINAL TABLE ADDRESSES LDN 0 CLEAR OUTPUT CHARACTER STD OC STD IC CLEAR INPUT CHARACTER STD MT MAXIMUM CYCLE TIME STD LM LAST MILLISECOND CLOCK STD LS LAST SECOND CLOCK LDD NT INPUT TERMINAL = N-1 SBN 1 STD IT ZJN PRS2 IF ONLY ONE TERMINAL LDN 1 PRS2 STD OT SET OUTPUT TERMINAL NUMBER LJM PRS3 INITIALIZE *TOCA* TOCA SPACE 4,10 ** TOCA - TABLE OF OUTPUT CONTROL ADDRESSES. * * ENTRY 1 WORD. * * ADDRESS OF CURRENT OUTPUT ROUTINE. USE // RBUF EQU 6000 *RA* BUFFER TOCA EQU RBUF+5 OUTPUT PROCESSOR BUFFER IBUF EQU TOCA+100 INPUT BUFFER OBUF EQU IBUF+100 OUTPUT BUFFER TBUF EQU OBUF+100 TRACE BUFFER ERRNG 7776-TBUF-100*5 BUFFER OVERFLOW ERRNG TOCA-PRSX-2 OVERFLOW INTO BUFFER ABT SPACE 4,10 ** ABT - ABORT JOB. * * ENTRY (A) = ERROR MESSAGE. ABT RJM DFM ISSUE DAYFILE MESSAGE MONITOR ABTM ABORT JOB LJM PPR EXIT TO PP RESIDENT CTS SPACE 4,15 ** CTS - CHECK *IAF* STATUS. * * ENTRY NONE. * * EXIT (NT) = NUMBER OF TERMINALS. * (DP) = STIMULATOR CHANNEL. * TO *ABT* IF *IAF* NOT ACTIVE. * * USES T1, T2, CM - CM+4. * * MACROS SFA. CTS5 LDC =C* IAF NOT ACTIVE.* LJM ABT CTS SUBR ENTRY/EXIT LDN PPUL SET PPU COUNT CRD CM LDD CM+2 STD T1 LMN 10D ZJN CTS1 IF ONLY 10 PPUS LDN 20D STD T1 SET 20 PPUS CTS1 LDN PPCP SET START OF PPU COMMUNICATIONS AREA CRD CM LDD CM+4 STD T2 CTS2 SOD T1 DECREMENT PPU COUNT ZJN CTS5 IF END OF PPU LDN 10 ADVANCE INPUT REGISTER ADDRESS RAD T2 CRD CM READ INPUT REGISTER LDD CM+1 CHECK NAME SCN 77 SHN 6 LMD CM LMC 3RN1T NJN CTS2 IF NOT *1TN* CTS3 SFA EST,CM+2 READ STIMULATOR EST ENTRY ADK EQDE CRD CM LDD CM+1 SET CHANNEL NUMBER LPN 37 STD DP LDD CM+4 SET PORT COUNT LPC 777 NJN CTS4 IF PORTS SPECIFIED LDD TH SET DEFAULT PORT COUNT CTS4 STD NT LJM CTSX RETURN ICT SPACE 4,20 ** ICT - INTIALIZE CONTROL TABLE. * * ENTRY (NT) = NUMBER OF TERMINALS. * * EXIT CONTROL TABLE BUILT STARTING AT (RA+5). * * USES CM - CM+4, T1 - T5. ICT SUBR ENTRY/EXIT LDN ZERL RETURN NUMBER OF TERMINALS CRD CM CRD T1 LDD NT STD CM+1 LDD RA SHN 6 ADN TCWD CWD CM ADN 1 SET END OF TABLE CWD T1 LDN 1 SET NUMBER OF *TCWD* ENTRIES STD T1+4 LDD RA SHN 6 ADN RAPP CWD T1 UJN ICTX RETURN IOR SPACE 4,10 ** IOR - INITIALIZE OUTPUT RECOVERY. * * ENTRY (TW - TW+4) = CONTROL TABLE ENTRY. * * EXIT FET ADDRESS SET IN *SAA* * * USES T1, T2. IOR SUBR ENTRY/EXIT LDD TW+3 SET ADDRESS OF IN SCN 77 STM SAAA SHN 6 LMD TW+2 STM SAAB ZJN IORX IF NO OUTPUT RECOVERED LDC IORA SET MODIFICATION TABLE STD T1 IOR1 LDI T1 SET ADDRESS ZJN IOR2 IF END OF TABLE STD T2 AOD T1 LDI T1 STI T2 AOD T1 UJN IOR1 LOOP TO END OF TABLE IOR2 LDD TW SET TERMINAL BIAS LPC 3777 STM SDWA LJM IORX RETURN IORA BSS 0 CON SDCA LDN 0 CON ESDA LDN 0 CON 0 END OF TABLE ISC SPACE 4,20 ** ISC - INITIALIZE STIMULATOR CHANNELS. * * ENTRY (DP) = CHANNEL NUMBER. * * EXIT CHANNEL INSTRUCTIONS MODIFIED. * * USES T1, T2. * * MACROS CHTL. ISC SUBR ENTRY/EXIT LDC TCHS SET FWA OF CHANNEL TABLE STD T1 ISC1 LDI T1 STD T2 LDD DP CHTL * SBN CH ZJN ISCX RETURN IF ALL INSTRUCTIONS MODIFIED RAI T2 MODIFY INSTRUCTION AOD T1 UJN ISC1 LOOP FOR ALL INSTRUCTIONS TCHS CHTB RQS SPACE 4,20 ** RQS - REQUEST STORAGE. * * ENTRY (A) = STORAGE REQUEST. * * EXIT STIMULATOR FIELD LENGTH ADJUSTED. * TO *ABT* IF ERROR. * * USES T1, T2, CM - CM+4. * * MACROS MONITOR, PAUSE. RQS3 LDC =C*MEMORY REQUEST ERROR.* LJM ABT RQS SUBR ENTRY/EXIT STD T1 SAVE REQUEST LDD IR+3 CHECK OUTPUT RECOVERY SCN 77 ADD IR+2 ZJN RQS1 IF NOT SET LDD NT RQS1 ADD NT COMPUTE LAST WORD TO BE WRITTEN ADD NT ADD NT STD T2 LDD IR+3 LPN 37 SHN 14 ADD IR+4 ADD T2 ADN 77 SHN -6 SBD T1 ZJN RQS2 IF ENOUGH ROOM PJN RQS3 IF NOT ENOUGH ROOM FOR WRITES RQS2 LDD T1 REQUEST STORAGE STD CM+1 LDN 0 SET CM REQUEST STD CM+2 MONITOR RSTM LDD FL CHECK FIELD LENGTH LMD T1 NJN RQS2 IF REQUEST REJECTED LJM RQSX RETURN SCP SPACE 4,20 ** SCP - START CENTRAL PROGRAM. * * ENTRY (SCPA) = FL REQUIRED FOR STIMULATION. * (TW - TW+4) = CONTROL WORD FROM *TCWD*. * * EXIT FL SET. * CPU PROGRAM STARTED IF OUTPUT TO BE RECOVERED. * REMAINING COPIES OF STIMULATION DRIVER CALLED. * TO *DPP* IF ERROR FLAG SET AT CONTROL POINT. * * USES CM - CM+4, T1 - T1+4. * * CALLS DFM, RQS. * * MACROS CHTE, MONITOR, PAUSE. * * NOTES *SCP* IS RESPONSIBLE FOR STARTING THE CPU * IF OUTPUT IS TO BE RECOVERED. SCP SUBR ENTRY/EXIT LDD IR+3 SHN 14 LMD IR+4 LMN TCWD NJN SCPX IF NOT FIRST COPY OF *1TS* LDN 0 STD CM+1 MONITOR DCPM CLEAR CPU STATUS LDC * (REQUIRED FL) SCPA EQU *-1 RJM RQS REQUEST STORAGE LDC =C* STIMULATION INITIATED.* RJM DFM * START CPU IF OUTPUT IS TO BE RECOVERED. LDD TW+3 SCN 77 ADD TW+2 ZJN SCP1 IF CENTRAL PROGRAM NOT NEEDED LDD CP READ EXCHANGE PACKAGE CRD CM LDC STMO SET (P) STD CM+1 SHN -14 STD CM LDD CP CWD CM MONITOR RCPM REQUEST CPU SCP1 LJM SCPX RETURN SAD SPACE 4,10 ** SAD - SET ADDRESSES. * * ENTRY (T3 - T4) = BASE ADDRESS FOR *TTER*. * * EXIT TABLE ADDRESS SET. * * USES T1, T2, T3, T4, T5. SAD SUBR ENTRY/EXIT LDC SADB STD T1 SAD1 LDI T1 SET NEXT TABLE ADDRESS ZJN SADX IF NO MORE TABLES STD T2 SAD2 LDI T2 NJN SAD3 IF NOT END OF TABLE LDC * (NUMBER OF *TTER* ENTRIES) SADA EQU *-1 RAD T4 SHN -14 RAD T3 AOD T1 UJN SAD1 PROCESS NEXT TABLE SAD3 STD T5 LDD T3 SET TABLE ENTRY ADDRESS RAI T5 LDD T4 RAM 1,T5 AOD T2 UJN SAD2 LOOP SADB BSS 0 CON TTE0 *TTER* WORD 0 ADDRESS CON TTE1 *TTER* WORD 1 ADDRESSES CON TTE2 *TTER* WORD 2 ADDRESSES CON TTE3 *TTER* WORD 3 ADDRESSES CON TTE4 *TTER* WORD 4 ADDRESSES CON 0 END OF TABLE SPACE 4,10 ** INITIALIZATION TABLES. TTE0 BSS 0 TTE0 HERE CON 0 TTE1 BSS 0 TTE1 HERE CON 0 TTE2 BSS 0 TTE2 HERE CON 0 TTE3 BSS 0 TTE3 HERE CON 0 TTE4 BSS 0 TTE4 HERE CON 0 SPACE 4 END