DSN1 * /--- FILE TYPE = E * /--- BLOCK ASO 00 000 86/05/28 14.31 ASO OVERLAY (PROCESS APPLICATION SIGON-ON.) ASO SPACE 5,11 ** ASO - APPLICATION SYSTEM SIGNON * * SIGN THIS TERMINAL INTO PLATO ORG //OVL+5 ASO SUBR LDN 0 CLEAR *BFI LOADED FLAG STM BODC LDD NI GET HIGHEST POSSIBLE CONNECTION SHN 4 STD T1 LDM IBUF+7,IP GET PLATO STATION NUMBER ADD SI ADD CB STD ST SBM NCB+20,T1 MJN ASO1 IF CONNECTION IN RANGE LDN TTBE T(D) TOO BIG RJM MES UJN ASOX EXIT * LOG USER IN TO PLATO * UPDATE PP TABLES * SEND NEXT KEY TO PLATO * SEND ACKNOWLEDGE TO CNP ASO1 LDN 0 STM TOD,ST CLEAR OUTPUT DELAY LDM IBUF+5,IP STM SDT,ST SET S(D) IN PP TABLE LDM IBUF+6,IP STM TDT,ST SET T(D) IN PP TABLE * SAVE TERMINAL TYPE LDD RA SHN 6 ADD TB ADD ST ADD ST CRD CM RJM DTT DETERMINE TERMINAL TYPE STM ASOA SAVE FOR LATER VERIFICATION SHN 4 STD CM LDN 0 STD CM+1 SHOW NO LOST KEYS LDD RA SHN 6 ADD TB ADD ST ADD ST CWD CM UPDATE CM TABLE LDM IBUF+3,IP FETCH TERMINAL TYPE RJM DTS DETERMINE TERMINAL SPEED RAM TDT,ST SET TERMINAL SPEED LDN 0#04 RJM PLM BUILD LOGIN MESSAGE LDD TH SET STATION IN USE STM TST,ST * /--- BLOCK ASO 00 000 86/05/28 14.33 * CONVERT NETWORK TERMINAL TYPE TO PLATO TYPE LDM ASOA GET TERMINAL TYPE STD T1 LDC //RTTA STD T2 RTT1 LDI T2 ZJN RTT4 IF TERMINAL TYPE NOT FOUND LMD T1 LPC 0#FE TERMINAL TYPE WITHOUT PARITY ZJN RTT2 IF TERMINAL FOUND AOD T2 UJN RTT1 CHECK NEXT TERMINAL TYPE RTT2 LJM ASOX VALID TYPE -- EXIT RTT4 LDN 0 STM TST,ST SHOW TERMINAL NOT ACTIVE LDN 0#0C RJM PLM REVALIDATE USER AT DPNC LJM ASOX EXIT ASOA BSS 1 TEMP TERMINAL TYPE * /--- BLOCK ASO 00 000 86/05/28 14.33 DTS SPACE 5,11 ** DTS - DETERMINE TERMINAL SPEED * * ENTRY - (A) = NETWORK TERMINAL TYPE * * EXIT - (A) = -1 IF UNRECOGNIZED TERMINAL * 0 IF 1200 BAUD * 4000 IF 300 BAUD DTS3 LDI T2 LPC 7400 DTS SUBR STD T1 LDC DTSA STD T2 DTS1 LDI T2 ZJN DTS2 IF END OF LIST LMD T1 LPC 377 ZJN DTS3 IF TERMINAL TYPE FOUND AOD T2 UJN DTS1 DTS2 BSS 0 * LCN 1 (A) = UNRECOGNIZED LDN 0 (A) = 120 CPS IST UJN DTSX EXIT * NETWORK TERMINAL TYPE CONVERSION TABLE * * 1/LS, 1/TX, 2/, 8/NT * * LS = LINE SPEED (0- 120 CPS, 1- 300 CPS) * TX = TEKTRONIX (0 = STANDARD (IST), 1 = TEKTRONIX) * USED WHEN SETTING TTYPE IN LOGIN MESSAGE. * NT = NETWORK TERMINAL TYPE DTSA VFD 1/1,3/0,8/0#3C 30 CPS IST VFD 1/0,3/0,8/0#3D 120 CPS IST VFD 1/1,1/1,2/0,8/0#3E 30 CPS TEKTRONIX VFD 1/0,1/1,2/0,8/0#3F 120 CPS TEKTRONIX VFD 1/1,3/0,8/0#03 30 CPS DEFAULT VFD 1/0,3/0,8/0#21 120 CPS DEFAULT VFD 1/1,3/0,8/0#2E 30 CPS NOS VFD 1/0,3/0,8/0#22 120 CPS NOS DATA 0 * /--- BLOCK ASO 00 000 86/05/28 14.34 DTT SPACE 5,11 ** DTT - DETERMINE TERMINAL TYPE * * A SIGN-ON MESSAGE IS INTERROGATED TO DETERMINE * THE ASCII TERMINAL TYPE * * THE TERMINAL TYPE IS SPECIFIED AFTER THE SYSTEM * NAME - * PLEASE SIGN ON -- PLD,T * * T - TERMINAL TYPE * * IF NO TYPE IS SPECFIED, ASCII IST IS ASSUMED * * EXIT - (A) = TERMINAL TYPE DTT2 LDM IBUF+1,T1 (A) = TERMINAL TYPE DTT SUBR LDD IP ADN 10 STD T1 SET POINTER TO FIRST CHARACTER LDD IP ADD PL ADN 2-1 STD T2 SET LWA TO SCAN (LWA-1 OF DATA) DTT1 LDM IBUF,T1 LMN A.COMMA SCN 1 CLEAR PARITY BIT ZJN DTT2 IF COMMA FOUND AOD T1 LMD T2 NJN DTT1 IF MORE TO SCAN LDC A.I SET TERMINAL TYPE TO ASCII IST UJN DTTX EXIT ERRNG OVLE-* OVERFLOW OF OVERLAY BUFFER QUAL * * /--- BLOCK ASP 00 000 86/05/28 14.35 ASP OVERLAY (COMPLETE PLATO APPLICATION SIGNON.) ASP SPACE 5,11 ** UPDATE PLATO ASCII CONNECTION TABLE ORG //OVL+5 ASP SUBR LDN 0 CLEAR *BFI* LOADED FLAG STM BODC * TEST FOR PLATO STATION IN USE. ERRNZ STBKL-27D STATION BANK LENGTH .NE. 27D * COMPUTE STATION BANK OFFSET (27 = 32-1-1-1-1-1). LDD ST SBD CB ADD SB STD T1 1 * STATION SHN 5 32 * STATION SBD T1 31 * STATION SBD T1 30 * STATION SBD T1 29 * STATION SBD T1 28 * STATION SBD T1 27 * STATION * COMPUTE ADDRESS OF *BANKADD* WORD ADM BANKADD ADM NSYSBNK+1 STD T2 SHN -14 ADM NSYSBNK STD T1 * READ THE *BANKADD* WORD FROM THE STATION BANK. LDN 1 STD T3 LDN CN RJM RECS * CHECK FOR THE PLATO STATION IN USE. LDD CN SHN 6 PJN ASO2 IF PLATO STATION SIGNED IN LDK TCAO ABORT ANY PENDING OUTPUT RJM STC UJN ASO4 CONTINUE LOGIN PROCESS * THE PLATO STATION IS IN USE. SEND AN *SSLKEY* * TO PLATO AND A LOGOUT TO THE NETWORK. ASO2 LDN PIUE PORT IN USE RJM MES ASO3 RJM SSL LOG OFF STATION LDN 0 STM TST,ST SHOW TERMINAL NOT ACTIVE LDN 0#0C RJM PLM REVALIDATE USER AT DPNC LJM ASPX EXIT * /--- BLOCK ASP 00 000 86/07/23 14.06 ASO4 BSS 0 LDN ZERL CRD CN LDM SDT,ST SET S(D) LPC 0#FF STD CN LDM TDT,ST SET T(D) LPC 0#FF STD CN+1 LDM IBUF+3,IP SET TERMINAL TYPE STD CN+2 LDM IBUF-2,IP SET FOB NUMBER SHN 10B * 256 ADM IBUF-1,IP STD CN+3 LDD ST WRITE CONNECTION INFO TO EM SBD CB ADD SB ADM ASCCON+1 STD T2 SHN -14 ADM ASCCON STD T1 LDN 1 STD T3 LDN CN RJM WECS LDN NXKY SEND NEXT KEY TO PLATO STD KY RJM SKY LJM ASPX EXIT ERRNG OVLE-* OVERFLOW OF OVERLAY BUFFER QUAL * * /--- BLOCK BFI 00 000 86/05/28 14.36 BFI OVERLAY (READ NEXT BLOCK FROM CIRCULAR BUFFER.) BFI SPACE 5,11 ** BFI - READ NEXT BLOCK FROM CIRCULAR BUFFER * * ENTRY - (T4) = MAXIMUM BLOCK SIZE ACCEPTABLE * (FI2) = CPU IN POINTER * (FO2) = PPU OUT POINTER * (FL2) = LIMIT POINTER * (FP2) = ECS ADDR OF IN/OUT POINTERS * (FB2) = ECS ADDRESS OF BUFFER * * EXIT - (A) = NON-ZERO IF DATA PRESENT * BUF = DATA BLOCK * * NO DATA PRESENT IS RETURNED IF * 1. BUFFER IS EMPTY * 2. DATA BLOCK WILL NOT FIT IN CURRENT 2550 BUFFER * 3. EM ERROR OCCURRED ORG //OVL+5 BFI SUBR LDN 1 SET *BFI* LOADED FLAG STM BODC LJM BFI0 * INCREMENT PPU CIRCULAR BUFFER POINTER BFI8 LDM NETC INCREMENT CIRCULAR BUFF POINTER RAD FO2 SBD FL2 CHECK FOR BUFFER WRAP-AROUND MJN BFI9 IF NO WRAPPING STD FO2 UPDATE *OUT* POINTER * WRITE *OUT* TO ECS BFI9 LDN ZERL CRD CN LDD FO2 STD CN+4 LDD FP2+1 ADN 1 COMPUTE ADDR OF *OUT* POINTER STD T2 SHN -14 ADD FP2 STD T1 LDN 1 STD T3 SET CM WORD COUNT LDN CN (A) = PP ADDRESS RJM WECS LDN 1 (A) = DATA READ BFI10 LJM BFIX EXIT * /--- BLOCK BFI 00 000 86/05/28 14.36 * CHECK IF DATA PRESENT BFI0 LDD FL2 CHECK IF BUFFER DEFINED ZJN BFI10 LDD FI2 CHECK IF DATA IN BUFFER SBD FO2 ZJN BFI10 IF BUFFER EMPTY LDD FI2 CHECK IN POINTER LEGAL SBD FL2 MJN BFI2 IF WITHIN RANGE BFI1 LDN DFPE DSN - FRAMAT POINTERS BAD BFI1.1 RJM MES SEND ERROR MSG BFI1.2 LDN 0 INDICATE NO DATA PASSED UJN BFI10 EXIT BFI2 LDD FO2 CHECK OUT POINTER LEGAL SBD FL2 PJN BFI1 IF OUT OF RANGE * SET UP FOR BLOCK TRANSFER * READ HEADER WORD FROM BUFFER LDD FB2+1 SET BUFFER ADDRESS ADD FO2 BIAS BY *OUT* STD T2 SHN -14 ADD FB2 STD T1 LDN 1 SET CM WORD COUNT STD T3 LDC BUF SET PP ADDRESS RJM RECS READ BLOCK HEADER NJN BFI1.2 -- IF ECS ERROR * UPDATE ECS ADDRESS AOD T2 SHN -14 RAD T1 * /--- BLOCK BFI 00 000 86/05/28 14.38 * CHECK IF CAN TRANSFER BLOCK IN ONE READ LDM NETC CHECK LENGTH LEGAL ZJN BFI1 IF EMPTY BLOCK SBD FL2 PJN BFI1 IF LARGER THAN BUFFER ADD FL2 SBN 1 ZJN BFI5 IF HEADER ALONE STD T3 SET NUMBER OF WORDS TO READ LDM NETP MESSAGE LTH IN PP BYTES SBN 32D MAX DSN MSG IS 31D NJN BFI3 -- IF NO ERROR LDN PMLE PLATO MSG LTH ERROR UJP BFI1.1 -- SEND MSG AND EXIT BFI3 BSS 0 * CHECK IF BLOCK WILL FIT IN 2550 BUFFER LDD T4 CHECK IF BLOCK TOO LONG SBN 4 ALLOW FOR HEADER SBM NETP MJN BFI4 IF BLOCK TOO BIG LDD T3 ADD FO2 SBD FL2 CHECK TRANSFER WITH *LIMIT* PJN BFI6 IF MUST SPLIT TRANSFER LDC BUF+5 (A) = PP ADDRESS RJM RECS READ THE BLOCK ZJN BFI5 IF NO ECS ERROR BFI4 LDN 0 (A) = 0, NO DATA LJM BFIX BFI5 LJM BFI8 UPDATE OUT POINTER * /--- BLOCK BFI 00 000 86/05/28 14.38 * READ BLOCK IN TWO SECTIONS BFI6 LDD FL2 COMPUTE LENGTH OF FIRST READ SBD FO2 SBN 1 DECREMENT FOR HEADER STD T3 ZJN BFI7.1 IF HEADER IS AT LIMIT LDC BUF+5 (A) = PP ADDRESS RJM RECS READ FIRST PART OF BLOCK BFI7 NJN BFI4 IF ECS ERROR LDD T3 BUMP PP ADDRESS SHN 2 COMPUTE NUMBER PPU WORDS READ ADD T3 BFI7.1 ADC BUF+5 COMPUTE PPU ADDRESS FOR READ STM BFIA LDD FB2+1 RESET BACK TO FIRST STD T2 LDD FB2 STD T1 LDM NETC SBN 1 ADJUST FOR HEADER WORD SBD T3 COMPUTE NUMBER WORDS REMAINING STD T3 LDC ** BFIA EQU *-1 RJM RECS NJN BFI7 IF ECS ERROR LJM BFI8 UPDATE POINTERS ERRNG OVLE-* OVERFLOW OF OVERLAY BUFFER QUAL * * /--- BLOCK CSS 00 000 82/04/22 13.41 CSS OVERLAY (CHANGE IN SWITCH STATUS OVERLAY.) CSS SPACE 5,11 ** CSS - CHANGE IN SWITCH STATUS * * UPDATE ALL TERMINALS CONNECTED TO THE SWITCH ORG //OVL+5 CSS SUBR LDN 0 STM BODC CLEAR *BFI* LOADED FLAG STM CSSC PRESET LOST USER COUNT LDD CB FETCH FIRST CONNECTION STD ST LDD NI SHN 4 STD T1 LDM NCB+20,T1 FETCH LAST CONNECTION STM CSSA LDC SLKY STD KY CSS1 LDM SDT,ST GET S(D) FOR THIS TERMINAL LMM IBUF+2,IP NJN CSS2 IF THIS TERMINAL NOT ON SWITCH LDM TST,ST ZJN CSS2 IF TERMINAL NOT ACTIVE * LOG OFF THIS TERMINAL AOM CSSC INCREMENT LOST USER COUNT LDN 0#08 RJM PLM LOGOUT USER FROM DPNC LDN 0 (A) = FORCED STORE STM TST,ST SHOW TERMINAL NOT ACTIVE RJM SPK STORE PLATO KEY * BUMP TO NEXT TERMINAL CSS2 AOD ST LMM CSSA NJN CSS1 IF MORE TERMINALS LDM CSSC ZJN CSS3 IF NO USERS LOST LDM NEST,NI SET EQUIPMENT NUMBER RJM C2D STM CSSB+1 LDM IBUF+2,IP SET SWITCH NUMBER RJM C2D STM CSSB+16D LDM IBUF+2,IP SHN -6 RJM C2D STM CSSB+15D LDM CSSC SET NUMBER OF LOST USERS RJM C2D STM CSSB+3 LDC CSSB RJM DFM SEND DAYFILE MESSAGE CSS3 BSS 0 LJM CSSX EXIT CSSA BSS 1 LAST CONNECTION CSSB DATA C*EQXX XX USERS LOST ON SWITCH XXXXB* CSSC BSS 1 ERRNG OVLE-* OVERFLOW OF OVERLAY BUFFER QUAL * * /--- BLOCK DSM 00 000 82/12/02 15.59 DSM OVERLAY (DISPLAY SYSTEM MESSAGE OVERLAY.) DSM SPACE 5,11 ** DSM - DISPLAY SYSTEM MESSAGE * * THE SYSTEM MESSAGE RECEIVED IS WRITTEN TO THE * ERROR LOG. ORG //OVL+5 DSM SUBR LDN 0 CLEAR *BFI* LOADED FLAG STM BODC LDD PL STD T3 SET LENGTH OF DATA TO CONVERT SBN 16D MJN DSM1 IF NOT TOO LONG LDN 16D STD T3 DSM1 LDD IP STD T4 (T4) = NEXT BYTE TO DUMP RAD T3 (T3) = LWA +1 TO DUMP LDC BUF+2 STD T5 (T5) = DISPLAY DATA POINTER LDC 2R S SET MESSAGE HEADER STM BUF LDC 2RM STM BUF+1 DSM2 LDM IBUF,T4 RJM C2X CONVERT TO HEX STI T5 AOD T5 BUMP OUTPUT POINTER AOD T4 BUMP INPUT POINTER SBD T3 MJN DSM2 IF MORE TO DUMP LDN 0 SET ZERO TERMINATOR STI T5 LDC BUF+ERLN SEND MESSAGE TO ERROR LOG RJM DFM LJM DSMX EXIT ERRNG OVLE-* OVERFLOW OF OVERLAY BUFFER QUAL * * /--- BLOCK CPR 00 000 86/05/28 14.37 CPR OVERLAY (PRESET FOR CCP ERROR MESSAGE) CPR SPACE 5,11 ** CPR - PRESET FOR CCP ERROR MESSAGE * * BUILD HEADER FOR ERROR LOG DAYFILE MESSAGE AND * DETERMINE CLASS OF MESSAGE ORG //OVL+5 CPR SUBR LDN 0 CLEAR *BFI* LOADED FLAG STM BODC LDC DSFE (A) = EST MNEMONIC FOR DSN 2550 STM BUF PLACE IT IN THE MESSAGE BUFFER LDC BUF+1 (A) = MESSAGE BUFFER POINTER STD PT * EST ORDINAL OF *FE* EQUIPMENT LDM NEST,NI (A) = EST ORDINAL OF THIS NPU RJM C2O CONVERT EST ORDINAL * *FE* CHANNEL LDC 2R,C RJM ST2 LDM NCH,NI (A) = CHANNEL OF THIS NPU RJM C2O * *FE* EQUIPMENT NUMBER LDC 2R-E RJM ST2 LDM NEQ (A) = NPU EQUIPMENT NUMBER SHN -3D POSITION IT FOR DAYFILE MSG SCN 77B ADC 2R0, RJM ST2 LDM IBUF+2,IP (A) = CONTROL CODE LMC 0#CE CE ERROR MESSAGE NJN CPR1 IF NOT $CE CONTROL CODE * PROCESS $CE (CE ERROR MESSAGE) CONTROL CODE EXECUTE CE1,= LDC /CE1/OVL RJM EXR UJN CPR2 CPR1 LDM IBUF+2,IP (A) = CONTROL CODE LMC 0#CD LINK/TRUNK STATISTICS NJN CPR2 IF NOT $CD CONTROL CODE * PROCESS $CD (LINK/TRUNK STATISTICS) CONTROL CODE EXECUTE CD1,= LDC /CD1/OVL RJM EXR CPR2 LJM CPRX EXIT * /--- BLOCK CPR 00 000 86/05/28 14.37 C2O SPACE 4,10 ** C2O - CONVERT AND STORE TWO OCTAL DIGITS. * * ENTRY (A) = BINARY VALUE LESS THAN 77B. * * EXIT TWO OCTAL DIGITS STORED AS DISPLAY CODE CHARACTERS. C2O SUBR ENTRY/EXIT STM C2OA SHN -3 LPN 7 ADN 1R0 RJM STX LDC 0 C2OA EQU *-1 LPN 7 ADN 1R0 RJM STX UJN C2OX RETURN ST2 SPACE 4,10 ** ST2 - STORE TWO TEXT CHARACTERS. * (DISPLAY CODES) INTO THE MESSAGE BUFFER. * * ENTRY (A) = TWO DISPLAY CHARACTERS. * * EXIT CHARACTERS STORED. ST2 SUBR ENTRY/EXIT STM ST2A SHN -6 RJM STX LDM ST2A RJM STX UJN ST2X RETURN ST2A CON 0 ERRNG OVLE-* OVERFLOW OF OVERLAY BUFFER QUAL * * /--- BLOCK CD1 00 000 82/12/02 16.03 CD1 OVERLAY (DISPLAY $CD LINK/STATISTICS MESSAGE - 1) CD1 SPACE 5,11 ** CD1 - CONVERT/DISPLAY $CD (LINK/STAT) MESSAGE - 1 * * CONVERT AND SEND $CD MESSAGE TO THE ERROR LOG. * PART 1. * * EXIT T7 = UPDATED POINTER INTO *IBUF* ORG //OVL+5 CD1 SUBR LDN 0 CLEAR *BFI* LOADED FLAG STM BODC LDD IP GET IBUF INDEX ADN 5 ADVANCE TO CODE STD T7 SAVE IN T7 LDM IBUF,T7 (A) = CODE NJN WEL3 IF CODE IS NOT ZERO AOD T7 (T7) POINTS TO MAJOR RECORD TYPE LDM IBUF,T7 (A) = MAJOR RECORD TYPE SBN 3 ZJN WEL4 IF TYPE IS $03 PJN WEL3 IF TYPE IS OUT OF RANGE ADN 1 ZJN WEL5 IF TYPE IS $02 WEL3 LDN NSBE NET STAT TYPE/CODE BAD LJM WEL31 WEL4 LDN 8D*2 SET TRUNK BYTE COUNT STM BYTECNT LDN 11D START MESSAGE OVERFLOW COUNTER STM MSGCNT LDC 2RTK TRUNK STATISTICS UJN WEL6 WEL5 LDN 11D START MESSAGE OVERFLOW COUNTER STM MSGCNT SHN 1 SET LINK BYTE COUNT STM BYTECNT LDC 2RLK WEL6 RJM ST2 LDD PL VERIFY PACKET LENGTH SBM BYTECNT WITH BYTE COUNT SBN 7 AND BY HEADER+1 (EQXX,CYY-EZ,) MJN WEL6.1 IF LENGTH OKAY LJM WEL30 PACKET IS TOO LONG WEL6.1 BSS 0 AOD T7 (T7) POINTS TO MINOR RECORD TYPE LDM IBUF,T7 (A) = MAJOR RECORD TYPE (LINK NUM) RJM SHX UJN WEL32 WEL30 LDN NMLE NET MSG LENGTH ERROR WEL31 RJM MES WEL32 EXECUTE CD2,= LDC /CD2/OVL RJM EXR * /--- BLOCK CD1 00 000 82/12/02 16.03 ST2 SPACE 4,10 ** ST2 - STORE TWO TEXT CHARACTERS. * (DISPLAY CODES) INTO THE MESSAGE BUFFER. * * ENTRY (A) = TWO DISPLAY CHARACTERS. * * EXIT CHARACTERS STORED. ST2 SUBR ENTRY/EXIT STM ST2A SHN -6 RJM STX LDM ST2A RJM STX UJN ST2X RETURN ST2A CON 0 SHX SPACE 4,10 ** SHX - STORE HEX CHARACTERS INTO THE MESSAGE BUFFER. * * ENTRY (A) = 2 HEXIDECIMAL DIGITS. * * EXIT CHARACTERS STORED AS DISPLAY CODES. * * USES T1. SHX SUBR ENTRY/EXIT STD T1 SAVE THE ORIGINAL SHN -4 LPN 17B SBN 10D PJN SHX2 IF ALPHA DIGIT ADN 1R0+9D SHX2 ADN 1 RJM STX LDD T1 LPN 17B SBN 10D PJN SHX4 IF ALPHA DIGIT ADN 1R0+9D SHX4 ADN 1 RJM STX UJN SHXX ERRNG OVLE-* OVERFLOW OF OVERLAY BUFFER QUAL * * /--- BLOCK CD2 00 000 82/12/02 16.04 CD2 OVERLAY (DISPLAY $CD LINK/STATISTICS MESSAGE - 2) CD2 SPACE 5,11 ** CD2 - CONVERT/DISPLAY $CD (LINK/STAT) MESSAGE - 2 * * CONVERT AND SEND $CD MESSAGE TO THE ERROR LOG. * PART 2. * * ENTRY T7 = POINTER INTO IBUF ORG //OVL+5 CD2 SUBR LDN 0 CLEAR *BFI* LOADED FLAG STM BODC WEL7 BSS 0 AOD T7 (T7) POINTS TO DATA BYTE LDM IBUF,T7 (A) = MAJOR RECORD TYPE RJM SHX SOM BYTECNT ZJN WEL8 IF END OF INPUT DATA SOM MSGCNT PJN WEL7 IF NO MESSAGE OVERFLOW RJM SND SEND PARTIAL MESSAGE. LDN 11D STM MSGCNT RESET THE OVERFLOW COUNTER LDM STXB+1 STM STXA LDC BUF+8D STD PT RESET POINTER FOR CONTINUATION UJN WEL7 WEL8 BSS 0 * OUTPUT THE USER COUNT LDD RA (A) = ADDRESS OF CP RA / 100B SHN 6 (A) = ADDRESS OF CP RA ADM UMTB OFFSET TO STATS ADD NI (A) = ADDR OF NPU USER STATS ADD NI (2 WDS/NPU) CRD CM * THE FOLLOWING CODE ASSUMES THAT A NPU WILL * SUPPORT NO MORE THAN 777B USERS. LDD CM (A) = USER STATS FOR THIS NPU SHN -6 (A) = UPPER PART OF STATS LPN 7B (A) = LIMITED TO 777B MAX ADC 2RU0 (A) SET UP FOR THE DAYFILE RJM ST2 OUTPUT THE UPPER PART LDD CM (A) = USER STATS FOR THIS NPU LPN 77B (A) = LOWER PART OF STATS RJM C2O CONVERT AND OUTPUT UPPER PART * COMPLETE THE MESSAGE LDN 1R. TERMINATE MESSAGE WITH A PERIOD RJM STX RJM SND SEND MESSAGE TO ERROR LOG LJM CEMX * /--- BLOCK CD2 00 000 82/12/02 16.06 SHX SPACE 4,10 ** SHX - STORE HEX CHARACTERS INTO THE MESSAGE BUFFER. * * ENTRY (A) = 2 HEXIDECIMAL DIGITS. * * EXIT CHARACTERS STORED AS DISPLAY CODES. * * USES T1. SHX SUBR ENTRY/EXIT STD T1 SAVE THE ORIGINAL SHN -4 LPN 17B SBN 10D PJN SHX2 IF ALPHA DIGIT ADN 1R0+9D SHX2 ADN 1 RJM STX LDD T1 LPN 17B SBN 10D PJN SHX4 IF ALPHA DIGIT ADN 1R0+9D SHX4 ADN 1 RJM STX UJN SHXX ST2 SPACE 4,10 ** ST2 - STORE TWO TEXT CHARACTERS. * (DISPLAY CODES) INTO THE MESSAGE BUFFER. * * ENTRY (A) = TWO DISPLAY CHARACTERS. * * EXIT CHARACTERS STORED. ST2 SUBR ENTRY/EXIT STM ST2A SHN -6 RJM STX LDM ST2A RJM STX UJN ST2X RETURN ST2A CON 0 SND SPACE 4,10 ** SND - SEND MESSAGE IN BUFFER TO THE ERROR LOG, SET TERMNATOR. * * ENTRY UNTERMINATED MESSAGE IN *BUF*. * * EXIT MESSAGE WRITTEN TO ERROR LOG. * * CALLS DFM. SND SUBR ENTRY/EXIT. LDN 0 RJM STX LDN 0 ADD EOM TRAILER STI PT LDC BUF+ERLN RJM DFM UJN SNDX RETURN C2O SPACE 4,10 ** C2O - CONVERT AND STORE TWO OCTAL DIGITS. * * ENTRY (A) = BINARY VALUE LESS THAN 77B. * * EXIT TWO OCTAL DIGITS STORED AS DISPLAY CODE CHARACTERS. C2O SUBR ENTRY/EXIT STM C2OA SHN -3 LPN 7 ADN 1R0 RJM STX LDC 0 C2OA EQU *-1 LPN 7 ADN 1R0 RJM STX UJN C2OX RETURN ERRNG OVLE-* OVERFLOW OF OVERLAY BUFFER QUAL * * /--- BLOCK CE1 00 000 86/05/28 14.40 CE1 OVERLAY (CONVERT $CE CE ERROR MESSAGES) CCE SPACE 5,11 ** CE1 - CONVERT/DISPLAY $CE (CE ERROR) MESSAGES * * CONVERT AND SEND $CE MESSAGE TO THE ERROR LOG. * PART 1. * * C E ERROR MESSAGE FORMATS. * * 12/$CE,12/MN,12/SC,12/$XX,12/DATA...12/DATA * * MN = MINUTES. * SC = SECONDS. * XX = 01 IF DATA IS POPULATION COUNTERS, * 04 IF DATA IS ERROR MESSAGE TEXT. * DATA = 8 BITS PER WORD - VARIABLE LENGTH. * * CE ERROR DETAIL AND COUNT MESSAGES. * * SD.FE00,C00,E0,CE,CD, --- * 01,ZZZ---ZZZ. * 04,MN,SC,ZZZ---ZZZ. * * CE = C E ERROR MESSAGE IDENTIFICATION. * MN = MINUTE WHEN NPU ERROR OCCURRED. * SC = SECOND WHEN NPU ERROR OCCURRED. * CD = CODE TO DIFFERENTIATE DETAILS AND COUNTS * 01 = COUNT MESSAGES, * 04 = DETAIL MESSAGES. * ZZZ = DATA. * COUNT MESSAGES * NN/M=$00, OR NN/M=$0000. * NN = ERROR CODE, * M = TRUNK NUMBER (0 IF NON-TRUNK), * $00 OR $0000 = HEXIDECIMAL COUNTS. * DETAIL MESSAGES * 00NNXXX---XXX; NN = ERROR CODE, XXX = SEE CCP 2.0 ERS. ORG //OVL+5 CE1 SUBR LDN 0 CLEAR *BFI* LOADED FLAG STM BODC LDD IP GET IBUF INDEX ADN 3 ADVANCE TO MINUTES STD T7 SAVE IN T7 LDM IBUF,T7 (A) = MINUTES STM WELA LDC 2RCE START THE MESSAGE BUFFER RJM ST2 LDN 1R, COMMA RJM STX AOD T7 (T7) POINTS TO SECONDS LDM IBUF,T7 (A) = SECONDS STM WELL SAVE THE SECONDS LDD PL GET PACKET LENGTH FOR LOOP COUNTER SBN 2 STM BYTECNT AOD T7 (T7) POINTS TO $04 BYTE LDM IBUF,T7 (A) = $04 BYTE LMN 01 NJN WEL10.1 IF DETAIL RECORD LJM WEL14 DATA IS COUNTERS * /--- BLOCK CE1 00 000 86/05/29 09.38 WEL10.1 LDD PL VERIFY PACKET LENGTH SBN 12D MJN WEL10.2 IF LENGTH OKAY LJM WEL30 PACKET IS TOO LONG WEL10.2 BSS 0 LDN 04 RJM SHX LDN 1R, COMMA RJM STX LDC 0 WELA EQU *-1 (MINUTES) RJM SHX STORE HEX MINUTES LDN 1R, RJM STX LDC 0 WELL EQU *-1 RJM SHX STORE HEX SECONDS LDN 1R, RJM STX WEL11 LDN 7 STM MSGCNT START MESSAGE OVERFLOW COUNTER WEL12 AOD T7 (T7) POINTS TOO NEXT DATA BYTE LDM IBUF,T7 (A) = NEXT DATA BYTE RJM SHX SOM BYTECNT MJN WEL13 AT END OF DATA SOM MSGCNT PJN WEL12 IF NO MESSAGE OVERFLOW RJM SND SEND PARTIAL MESSAGE LDC BUF+12D STD PT RESET POINTER FOR CONTINUATION LDM STXB+1 STM STXA UJN WEL11 WEL13 LDN 1R. TERMINATE THE MESSAGE WITH A PERIOD RJM STX RJM SND SEND MESSAGE TO THE ERROR LOG UJN WEL35 EXIT WEL14 LDN 01 SUBCODE = 1 FOR MESSAGE COUNTERS RJM SHX LDN 1R, COMMA RJM STX LDD PL VERIFY PACKET LENGTH ADC -120D PJN WEL30 PACKET IS TOO LONG UJN WEL36 EXIT WEL30 LDN NMLE NET MSG LENGTH ERROR RJM MES WEL35 LDN 0 INDICATE MESSAGE COMPLETE WEL36 ZJN WEL37 IF MESSAGE COMPLETE EXECUTE CE2,= LDC /CE2/OVL RJM EXR WEL37 LJM CEMX EXIT * /--- BLOCK CE1 00 000 86/05/29 09.39 SHX SPACE 4,10 ** SHX - STORE HEX CHARACTERS INTO THE MESSAGE BUFFER. * * ENTRY (A) = 2 HEXIDECIMAL DIGITS. * * EXIT CHARACTERS STORED AS DISPLAY CODES. * * USES T1. * * CALLS STX. SHX SUBR ENTRY/EXIT STD T1 SAVE THE ORIGINAL SHN -4 LPN 17B SBN 10D PJN SHX2 IF ALPHA DIGIT ADN 1R0+9D SHX2 ADN 1 RJM STX STORE FIRST DIGIT LDD T1 LPN 17B SBN 10D PJN SHX4 IF ALPHA DIGIT ADN 1R0+9D SHX4 ADN 1 RJM STX STORE SECOND DIGIT UJN SHXX ST2 SPACE 4,10 ** ST2 - STORE TWO TEXT CHARACTERS. * (DISPLAY CODES) INTO THE MESSAGE BUFFER. * * ENTRY (A) = TWO DISPLAY CHARACTERS. * * EXIT CHARACTERS STORED. * * CALLS STX. ST2 SUBR ENTRY/EXIT STD T0 SHN -6 RJM STX STORE FIRST CHARACTER LDD T0 RJM STX STORE SECOND CHARACTER UJN ST2X RETURN SND SPACE 4,10 ** SND - SEND MESSAGE IN BUFFER TO THE ERROR LOG, SET TERMNATOR. * * ENTRY UNTERMINATED MESSAGE IN *BUF*. * * EXIT MESSAGE WRITTEN TO ERROR LOG. * * CALLS DFM. SND SUBR ENTRY/EXIT. LDN 0 RJM STX LDN 0 ADD EOM TRAILER STI PT LDC BUF+ERLN RJM DFM UJN SNDX RETURN ERRNG OVLE-* OVERFLOW OF OVERLAY BUFFER QUAL * * /--- BLOCK CE2 00 000 86/05/29 09.49 CE2 OVERLAY (CONVERT $CE CE ERROR MESSAGE - 2) SPACE 5 ** CE2 CONVERT AND SEND $CE MESAGE TO THE ERROR LOG. * PART 2. * * CE ERROR SUMMARY DATA. * ORG //OVL+5 CE2 SUBR LDN 0 CLEAR *BFI* LOADED FLAG STM BODC * THE SUMMARY CODE DOES NOT FIT IN THE OVERLAY BUFFER SO * LEAVE IT OUT FOR NOW. LIST F CESUM IF -DEF,CESUMRY LJM CEMX CESUM ELSE AOD T7 (T7) POINTS TO FIRST IDENTIFIER LDM IBUF,T7 (A) = FIRST IDENTIFIER LMC 376B NJN WEL15 IF NOT MINUS ONE LDC 2R-1 RJM ST2 DISPLAY THE -1 IDENTIFIER LDC 2R/0 RJM ST2 STORE TRUNK NUMBER UJN WEL16 WEL15 LMC 376B RESTORE THE VALUE RJM COR WEL16 LDC 2R=$ SEPARATORS RJM ST2 AOD T7 (T7) POINTS TO COUNTER (UPPER 8 BITS) LDM IBUF,T7 (A) = COUNTER (UPPER 8 BITS) ZJN WEL17 IF VALUE IS ZERO RJM SHX * /--- BLOCK CE2 00 000 86/05/29 09.49 WEL17 AOD T7 (T7) POINTS TO COUNTER (LOWER 8 BITS) LDM IBUF,T7 (A) = COUNTER (LOWER 8 BITS) RJM SHX LDC -3 DECREMENT THE BYTE COUNT RAM MSGCNT MJN WEL18.2 IF END OF DATA LDN 1R, RJM STX AOD T7 (T7) POINTS TO IDENTIFIER LDM IBUF,T7 (A) = IDENTIFIER RJM COR LDC 2R=$ RJM ST2 AOD T7 (T7) POINTS TO COUNT (UPPER 8 BITS) LDM IBUF,T7 (A) = COUNT (UPPER 8 BITS) ZJN WEL18 IF ALL ZERO RJM SHX WEL18 AOD T7 (T7) POINTS TO COUNT (LOWER 8 BITS) LDM IBUF,T7 (A) = COUNT (LOWER 8 BITS) RJM SHX WEL18.2 LDN 1R. PERIOD RJM STX RJM SND SEND MESSAGE TO THE ERROR LOG LDM BYTECNT SHN 6 MJN WEL19 IF DATA ALL PROCESSED LDC -3 DECREMENT THE PACKET CHARACTER COUNT RAM BYTECNT MJN WEL19 IF END OF PACKET LDC BUF+9D STD PT RESET THE BUFFER POINTER LDM STXB+1 STM STXA RESET THE STORAGE CONTROL AOD T7 (T7) = ERROR MESSAGE IDENTIFIER LDM IBUF,T7 (A) = ERRORR MESSAGE IDENTIFIER RJM COR LJM WEL16 CONTINUE PROCESSING WEL19 LJM CEMX * /--- BLOCK CE2 00 000 86/05/29 09.48 SHX SPACE 4,10 ** SHX - STORE HEX CHARACTERS INTO THE MESSAGE BUFFER. * * ENTRY (A) = 2 HEXIDECIMAL DIGITS. * * EXIT CHARACTERS STORED AS DISPLAY CODES. * * USES T1. * * CALLS STX. SHX SUBR ENTRY/EXIT STD T1 SAVE THE ORIGINAL SHN -4 LPN 17B SBN 10D PJN SHX2 IF ALPHA DIGIT ADN 1R0+9D SHX2 ADN 1 RJM STX STORE FIRST DIGIT LDD T1 LPN 17B SBN 10D PJN SHX4 IF ALPHA DIGIT ADN 1R0+9D SHX4 ADN 1 RJM STX STORE SECOND DIGIT UJN SHXX ST2 SPACE 4,10 ** ST2 - STORE TWO TEXT CHARACTERS. * (DISPLAY CODES) INTO THE MESSAGE BUFFER. * * ENTRY (A) = TWO DISPLAY CHARACTERS. * * EXIT CHARACTERS STORED. * * CALLS STX. ST2 SUBR ENTRY/EXIT STM ST2A SHN -6 RJM STX STORE FIRST CHARACTER LDM ST2A RJM STX STORE SECOND CHARACTER UJN ST2X RETURN ST2A CON 0 SND SPACE 4,10 ** SND - SEND MESSAGE IN BUFFER TO THE ERROR LOG, SET TERMNATOR. * * ENTRY UNTERMINATED MESSAGE IN *BUF*. * * EXIT MESSAGE WRITTEN TO ERROR LOG. * * CALLS DFM. SND SUBR ENTRY/EXIT. LDN 0 RJM STX LDN 0 ADD EOM TRAILER STI PT LDC BUF+ERLN RJM DFM UJN SNDX RETURN * /--- BLOCK CE2 00 000 86/05/29 09.50 COR SPACE 4,10 ** COR - CONVERT ERROR ORDINAL INTO REAL ERROR CODE. * * ENTRY (A) = ERROR ORDINAL. * * EXIT DATA CONVERTED AND STORED INTO BUFFER. * * CALLS SHX, ST2. SPACE 2 COR SUBR ENTRY/EXIT STM CORA LDN 0 STM CORC INITIALIZE THE TRUNK NUMBER LDC 0 CORA EQU *-1 ERROR ORDINAL ZJN COR2 IF THE ERROR CODE IS ZERO SBN 32D MJN COR3 IF TRUNK MIGHT BE ZERO OR ONE COR1 STM CORB AOM CORC INCREMENT THE TRUNK NUMBER LDC 0 CORB EQU *-1 WORKING ORDINAL SBN 16D PJN COR1 IF ORDINAL IS STILL LARGER AOM CORC ADJUST THE TRUNK NUMBER LDM CORB COR2 RJM SHX STORE THE HEX ERROR CODE LDC 0 CORC EQU *-1 TRUNK NUMBER ADC 2R/0 RJM ST2 STORE THE TRUNK NUMBER LJM CORX RETURN COR3 ADN 32D-19D MJN COR5 IF ERROR SMALLER, MAY BE FOR TRUNK 1 ZJN COR4 IF ERROR IS $1C ADN 30D UJN COR2 STORE DATA INTO BUFFER COR4 LDN 28D UJN COR2 STORE DATA INTO BUFFER COR5 ADN 1 MJN COR6 IF NOT $18 ERROR LDN 24D UJN COR2 STORE DATA INTO BUFFER COR6 STM CORD ADN 1 ZJN COR7 IF ERROR = $11 ADN 16D ZJN COR7 IF ERROR = $01 LDN 1 STM CORC SET TRUNK = 1 COR7 LDC 0 CORD EQU *-1 ERROR CODE COMPLEMENT SHN 21-13 SHN 13-21 ENTEND THE SIGN ADN 19D RESTORE THE VALU LJM COR2 STORE DATA INTO BUFFER CESUM ENDIF LIST * ERRNG OVLE-* OVERFLOW OF OVERLAY BUFFER QUAL * * /--- BLOCK DIB 00 000 86/05/29 09.45 DIB OVERLAY (DUMP INPUT BLOCK TO ERROR LOG) DIB SPACE 5,11 ** DIB - DUMP INPUT BLOCK TO ERROR LOG. * * AN ERROR WAS ENCOUNTERED WHILE PROCESSING AN INPUT * BLOCK. PRINT THE CONTENTS OF IL, IP, PL AND THE * INPUT BLOCK. ORG //OVL+5 DIB SUBR LDN 0 CLEAR *BFI* LOADED FLAG STM BODC LDD IL CONVERT BLOCK LENGTH RJM C2D STM DIBA+3 LDD IL SHN -6 RJM C2D STM DIBA+2 LDD IP CONVERT PACKET POINTER RJM C2D STM DIBA+7 LDD IP SHN -6 RJM C2D STM DIBA+6 LDD PL CONVERT PACKET LENGTH RJM C2D STM DIBA+13 LDD PL SHN -6 RJM C2D STM DIBA+12 LDC DIBA+ERLN RJM DFM PRINT TO ERROR LOG LDD IL ZJN DIB2 EXIT IF ZERO LENGTH LDN 0 STD T7 COUNTER FOR INPUT BLOCK DIB1 LDM IBUF,T7 INPUT BLOCK WORD TO CONVERT RJM C2D STM DIBB+1 LDM IBUF,T7 SHN -6 RJM C2D STM DIBB LDC DIBB+ERLN RJM DFM PRINT WORD TO ERROR LOG AOD T7 INCREMENT BLOCK COUNTER LMD IL SUBTRACT BLOCK LENGTH NJN DIB1 IF MORE WORDS TO PRINT DIB2 LJM DIBX EXIT DIBA DATA C* IL=XXXX IP=XXXX PL=XXXX* DIBB DATA C*XXXX* ERRNG OVLE-* OVERFLOW OF OVERLAY BUFFER QUAL * * /--- BLOCK EM7 00 000 82/12/02 16.07 EM7 OVERLAY (EM ACCESS FOR 700 SERIES.) EM7 SPACE 5,11 ** EM7 - EM ACCESS FOR 700 SERIES. * * OVER-WRITE THE DDP READ/WRITE EM ROUTINES WITH * READ/WRITE EM VIA MONITOR FUNCTION ROUTINES FOR * THE 700 SERIES. ORG //OVL+5 EM7 SUBR LDN 0 CLEAR *BFI* LOADED FLAG STM BODC * COPY CPMTR ROUTINE TO REPLACE DDP ROUTINES LDN 0 STD T1 EM71 LDM RECF,T1 STM //RECSX,T1 AOD T1 LMC RECL NJN EM71 CONTINUE MOVE LDN 0 MOVE WRITE ROUTINE STD T1 EM72 LDM WECF,T1 STM //WECSX,T1 AOD T1 LMC WECL NJN EM72 CONTINUE MOVE * SET ADDRESS OF CM BUFFER LDD IR+4 SHN 6 .NOSV2 IFGE OSLEV,562D NOS V2 RAM .RECA LDD IR+4 BIAS FOR HEADERS SHN 1 .NOSV2 ENDIF RAM .RECA STM .RECB STM .WECA .NOSV2 IFGE OSLEV,562D NOS V2 UJP EM7X .NOSV2 ELSE NOS V1 UJN EM7X .NOSV2 ENDIF * /--- BLOCK /CMR/READE 00 000 86/05/29 10.31 RECS SPACE 5,11 ** RECS - READ ECS VIA MONITOR FUNCTION. * * ENTRY (A) = PPU MEMORY ADDRESS. * (T1) = UPPER PORTION OF ECS ADDRESS. * (T2) = LOWER PORTION OF ECS ADDRESS. * (T3) = NUMBER OF CM WORDS TO READ. * * EXIT (A) = 0, IF NO ERRORS. * = 1, IF ECS PARITY ERROR. * * THIS SUBROUTINE WILL OVERWRITE THE DDP ECS READ * SUBROUTINE, //RECS, IF THE DDP IS NOT * AVAILABLE. RECF EQU * LOC //RECSX RECS SUBR STM RECA SAVE PP ADDRESS .NOSV2 IFGE OSLEV,562D NOS V2 LDK ZERL ZERO WORD CRD CM .NOSV2 ENDIF LDD T1 STD CM+3 (CM+3) = UPPER PART OF EM ADDR. LDD T2 STD CM+4 (CM+4) = LOWER PART OF EM ADDR. .NOSV1 IFLT OSLEV,562D NOS V1 LDD MA CWD CM (MB) = 36/TRASH,24/EM ADDRESS .NOSV1 ENDIF LDD T3 GET NUMBER CPU WORDS TO READ .NOSV1 IFLT OSLEV,562D NOS V1 SBN 1 ADJUST WORD COUNT .NOSV1 ENDIF SHN 6 STD CM+1 SET NUMBER CPU WORDS TO READ LDD RA COMPUTE CM ADDRESS SHN 6 ADC EB ECS/CM BUFFER ADDRESS .RECA EQU *-1 * /--- BLOCK /CMR/READE 00 000 86/05/29 10.31 .NOSV2 IFGE OSLEV,562D NOS V2 SBN 1 BACK UP TO BUFFER HEADER CWD CM STD CM+2 SAVE HEADER ADDRESS SHN -12D LPN 77B ENSURE NO SIGN EXTENSION STD CM+1 LDD HN STORE REQUEST COUNT RAD CM+1 LDC /CPS/PELS*1000B STD CM+3 *ECSM* SUBFUNCTION *PELS* LDN 0 STD CM+4 .NOSV2 ELSE NOS V1 STD CM+2 SET LOWER PART OF CM ADDRESS SHN -14 RAD CM+1 SET UPPER PART OF CM ADDRESS LDC /CPS/RWEM*1000B STD CM+3 (CM+3) = SUBFUNCTION = *RWEM* LDN 0 STD CM+4 (CM+4) = R/W FLAG (READ) .NOSV2 ENDIF MONITOR ECSM READ ECS TO CM LDD RA READ DATA TO PP SHN 6 ADC EB CM/ECS BUFFER ADDRESS .RECB EQU *-1 CRM **,T3 RECA EQU *-1 LDD CM+1 CHECK IF ECS ERROR OCCURRED ZJN RECS1 (A)=0, NO ECS ERROR LDN DERE ECS READ ERROR RJM MES LDN 1 EXIT WITH (A) = 1 RECS1 LJM RECSX EXIT * CHECK THAT THIS SUBROUTINES LENGTH IS .LE. THE * DDP ECS READ SUBROUTINE LENGTH. RECL EQU *-RECSX LENGTH OF THIS SUBROUTINE ERRNG //RECL-RECL SUBROUTINE TOO LONG LOC *O * /--- BLOCK /CMR/WRITE 00 000 86/05/29 10.33 WECS SPACE 5,11 ** WECS - WRITE ECS VIA MONITOR FUNCTION. * * ENTRY (A) = PPU MEMORY ADDRESS. * (T1) = UPPER PORTION OF ECS ADDRESS. * (T2) = LOWER PORTION OF ECS ADDRESS. * (T3) = NUMBER OF CM WORDS TO WRITE. * * EXIT (A) = 0, IF NO ERRORS. * = 1, IF ECS PARITY ERROR. * * THIS SUBROUTINE WILL OVERWRITE THE DDP ECS WRITE * SUBROUTINE, //WECS, IF THE DDP IS NOT * AVAILABLE. WECF EQU * LOC //WECSX WECS SUBR STM WECA SAVE PP ADDRESS .NOSV2 IFGE OSLEV,562D NOS V2 LDK ZERL ZERO WORD CRD CM .NOSV2 ENDIF LDD T1 STD CM+3 (CM+3) = UPPER PART OF EM ADDR. LDD T2 STD CM+4 (CM+4) = LOWER PART OF EM ADDR. .NOSV1 IFLT OSLEV,562D NOS V1 LDD MA CWD CM (MB) = 36/TRASH,24/EM ADDRESS .NOSV1 ENDIF LDD T3 GET NUMBER CPU WORDS TO WRITE ZJN WECSX IF NO DATA .NOSV1 IFLT OSLEV,562D NOS V1 SBN 1 ADJUST WORD COUNT .NOSV1 ENDIF SHN 6 STD CM+1 SET NUMBER CPU WORDS TO WRITE LDD RA COMPUTE CM ADDRESS SHN 6 ADC EB CM/ECS BUFFER ADDRESS .WECA EQU *-1 CWM **,T3 WRITE THE DATA WECA EQU *-1 SBD T3 * /--- BLOCK /CMR/WRITE 00 000 86/05/29 10.33 .NOSV2 IFGE OSLEV,562D NOS V2 SBN 1 BACK UP TO BUFFER HEADER CWD CM .NOSV2 ENDIF STD CM+2 SHN -14 LPN 77 ENSURE NO SIGN EXTENSION .NOSV2 IFGE OSLEV,562D NOS V2 LMD HN SET REQUEST COUNT STM CM+1 LDC /CPS/PELS*1000B+1S8 WRITE EM VIA CM LIST .NOSV2 ELSE NOS V1 RAD CM+1 LDC /CPS/RWEM*1000B .NOSV2 ENDIF STD CM+3 (CM+3) = SUBFUNCTION = *RWEM* LDN 1 STD CM+4 (CM+4) = R/W FLAG (READ) MONITOR ECSM WRITE CM TO ECS LDD CM+1 CHECK IF ECS ERROR OCCURRED ZJN WECS1 (A)=0, NO ECS ERROR LDN DEWE ECS WRITE ERROR RJM MES LDN 1 EXIT WITH (A) =1 WECS1 LJM WECSX EXIT * CHECK THAT THIS SUBROUTINES LENGTH IS .LE. THE * DDP ECS WRITE SUBROUTINE LENGTH. WECL EQU *-WECSX LENGTH OF THIS SUBROUTINE ERRNG //WECL-WECL SUBROUTINE TOO LONG LOC *O ERRNG OVLE-* OVERFLOW OF OVERLAY BUFFER QUAL * * /--- BLOCK EM8 00 000 82/04/23 09.11 EM8 OVERLAY (EM ACCESS FOR 800 SERIES.) EM8 SPACE 5,11 ** EM8 - EM ACCESS ROUTINES FOR 800 SERIES. * * REWRITE THE DDP EM ACCESS ROUTINES WITH THE * READ/WRITE EM ROUTINES CONTAINED IN THIS OVERLAY * FOR 800 SERIES MACHINES. ORG //OVL+5 EM8 SUBR LDN 0 CLEAR *BFI* LOADED FLAG STM BODC * COPY CPMTR ROUTINE TO REPLACE DDP ROUTINES LDN 0 STD T1 EM81 LDM RECF,T1 STM //RECSX,T1 AOD T1 LMC RECL NJN EM81 CONTINUE MOVE LDN 0 MOVE WRITE ROUTINE STD T1 EM82 LDM WECF,T1 STM //WECSX,T1 AOD T1 LMC WECL NJN EM82 CONTINUE MOVE LJM EM8X RETURN * /--- BLOCK /UEM/READE 00 000 86/05/29 10.38 RECS SPACE 5,11 ** RECS - READ UEM VIA DIRECT ACCESS. * * ENTRY (A) = PPU MEMORY ADDRESS. * (T1) = UPPER PORTION OF ECS ADDRESS. * (T2) = LOWER PORTION OF ECS ADDRESS. * (T3) = NUMBER OF CM WORDS TO READ. * * EXIT (A) = 0, IF NO ERRORS. * = 1, IF ECS PARITY ERROR. * * THIS SUBROUTINE WILL OVERWRITE THE DDP ECS READ * SUBROUTINE, //RECS, ON 800-SERIES MAINFRAMES. RECF EQU * LOC //RECSX RECS SUBR * PLANT PP ADDRESS THE CM WORDS ARE TO BE READ INTO STM RCS20 PLANT PP MEMORY ADDRESS LDD T3 (A) = NUMBER OF PP WORDS ZJN RECSX IF NO WORDS TO BE READ SRD CM+2 SAVE CURRENT (R) * FORM PART OF EM ADDRESS IN (R) LDD T1 (A) = UPPER PART OF EM ADDRESS SHN -6 (A) = BITS 23 - 18 OF EM ADDR STD CM LDD T1 SHN 6 (A) = BITS 17 - 12 OF EM ADDR STD CM+1 LRD CM (R) = BITS 23 - 12 OF EM ADDR * FORM THE REST OF THE EM ADDRESS IN (A) LDD T2 (A) = LOWER PART OF EM ADDRESS LMC 400000B SET BIT TO USE (R) IN ADDR CALC * READ EM CRM **,T3 RCS20 EQU *-1 LOCATION TO PLANT PP ADDR INTO * DONE. LRD CM+2 RESTORE OLD (R) LDN 0 MARK NO ERROR OCCURRED LJM RECSX RETURN * CHECK THAT THIS SUBROUTINES LENGTH IS .LE. THE * DDP ECS READ SUBROUTINE LENGTH. RECL EQU *-RECSX LENGTH OF THIS SUBROUTINE ERRNG //RECL-RECL SUBROUTINE TOO LONG LOC *O * /--- BLOCK /UEM/WRITE 00 000 86/05/29 10.37 WECS SPACE 5,11 ** WECS - WRITE UEM VIA DIRECT ACCESS. * * ENTRY (A) = PPU MEMORY ADDRESS. * (T1) = UPPER PORTION OF ECS ADDRESS. * (T2) = LOWER PORTION OF ECS ADDRESS. * (T3) = NUMBER OF CM WORDS TO WRITE. * * EXIT (A) = 0, IF NO ERRORS. * = 1, IF ECS PARITY ERROR. * * THIS SUBROUTINE WILL OVERWRITE THE DDP ECS WRITE * SUBROUTINE, //WECS, ON 800-SERIES MAINFRAMES. WECF EQU * LOC //WECSX WECS SUBR * PLANT PP ADDRESS THE CM WORDS ARE TO BE * WRITTEN FROM STM WCS20 PLANT PP MEMORY ADDRESS LDD T3 (A) = NUMBER OF PP WORDS ZJN WECSX IF NO WORDS TO WRITE SRD CM+2 SAVE CURRENT (R) * FORM PART OF EM ADDRESS IN (R) LDD T1 (A) = UPPER PART OF EM ADDRESS SHN -6 (A) = BITS 23 - 18 OF EM ADDR STD CM LDD T1 SHN 6 (A) = BITS 17 - 12 OF EM ADDR STD CM+1 LRD CM (R) = BITS 23 - 12 OF EM ADDR * FORM THE REST OF THE EM ADDRESS IN (A) LDD T2 (A) = LOWER PART OF EM ADDRESS LMC 400000B SET BIT TO USE (R) IN ADDR CALC * WRITE EM CWM **,T3 WCS20 EQU *-1 LOCATION TO PLANT PP ADDR INTO * DONE. LRD CM+2 RESTORE OLD (R) LDN 0 MARK NO ERROR OCCURRED LJM WECSX RETURN * CHECK THAT THIS SUBROUTINES LENGTH IS .LE. THE * DDP ECS WRITE SUBROUTINE LENGTH. WECL EQU *-WECSX LENGTH OF THIS SUBROUTINE ERRNG //WECL-WECL SUBROUTINE TOO LONG LOC *O ERRNG OVLE-* OVERFLOW OF OVERLAY BUFFER QUAL * * /--- BLOCK GPS 00 000 87/02/10 12.05 GPS OVERLAY (GET PRIMARY SWITCH NUMBER.) GPS SPACE 5,11 ** GPS - GET PRIMARY SWITCH NUMBER * * GET PRIMARY SWITCH NUMBER, DATA AND TIME TO * WRITE INTO 2550. ORG //OVL+5 GPS SUBR LDN 0 CLEAR *BFI* LOADED FLAG STM BODC LDN ZERL CRM /PRESET/BUF,ON LDN NPUS/400 NPU PRESET ADDRESS STM /PRESET/BUF+2 LDC NPUS-NPUS/400*400 STM /PRESET/BUF+3 LDN 9D SET LENGTH STM /PRESET/BUF+5 * SET NUMBER OF TRUNKS LDM NEST,NI READ EST ENTRY .NOS22 IFGE OSLEV,594D NOS 2.2 SFA EST (A) = FWA OF EST ENTRY .NOS252 IFGE OSLEV,678D ADK EQAE .NOS252 ELSE ADK EQDE WORD OFFSET .NOS252 ENDIF .NOS22 ELSE NOS 2.1 OR PRIOR ADM ESTS .NOS22 ENDIF CRD CM LDD CM+2 LPN 77 NJN GPS1 IF TRUNKS DEFINED LDN 1 SET TO ONE TRUNK GPS1 STM /PRESET/BUF+7 LDN 1 STM /PRESET/BUF+10 LDN 9D YEAR - 19XX STM /PRESET/BUF+11 LDN DTEL CRD CM LDD CM LPN 77 SBN 33 STM /PRESET/BUF+12 YEAR UPPER LDD CM+1 SHN -6 SBN 33 STM /PRESET/BUF+13 YEAR LOWER * /--- BLOCK GPS 00 000 86/05/29 10.40 LDN PDTL CRD CM LDD CM+2 LPN 77 GET MONTH STM /PRESET/BUF+14 LDD CM+3 SHN 22-6 GET DAY STM /PRESET/BUF+15 SHN -14 GET HOURS STM /PRESET/BUF+16 LDD CM+4 SHN 22-6 GET MINUTES STM /PRESET/BUF+17 SHN -14 GET SECONDS STM /PRESET/BUF+20 LDD SN SET S(D) UPPER SHN -10 STM /PRESET/BUF+22 LDD SN SET S(D) LOWER LPC 377 STM /PRESET/BUF+23 LDM NDS,NI SET DPNC S(D) UPPER SHN -10 STM /PRESET/BUF+24 LDM NDS,NI SET DPNC S(D) LOWER LPC 377 STM /PRESET/BUF+25 LDN 0 CLEAR UNUSED LOCATIONS STM /PRESET/BUF+6 STM /PRESET/BUF+21 STM /PRESET/BUF+26 STM /PRESET/BUF+27 LJM GPSX EXIT ERRNG OVLE-* OVERFLOW OF OVERLAY BUFFER QUAL * * /--- BLOCK IDP 00 000 87/02/10 12.23 IDP OVERLAY (INITIALIZE ESM ACCESS.) IDP SPACE 5,11 ** IDP - INITIALIZE ESM ACCESS * * ASSIGN DDP IF AVAILABLE, ELSE SET UP CM TRANSFER * * EXIT - (A) = 0 IF DDP RESERVED * 1 IF NO DDP AND 700 SERIES * -1 IF NO DDP AND 800 SERIES ORG //OVL+5 IDP SUBR LDN 0 CLEAR *BFI* LOADED FLAG STM BODC * SEARCH THE EST FOR A DDP (TYPE *D4*). THE DIRECT * CELLS USED IN THIS LOOP ARE AS FOLLOWS - * * NOS 2.2 AND LATER - * (CN) = CURRENT EST ORDINAL * (CN+2) = LAST EST ORDINAL +1 * * NOS 2.1 AND PRIOR - * (CN) = CURRENT EST ENTRY ADDRESS * (CN+1) = LWA + 1 OF EST * (CN+2) = FWA OF EST LDN ESTP CRD CN .NOS22 IFGE OSLEV,594D NOS 2.2 LDN 0 .NOS22 ELSE NOS 2.1 OR PRIOR LDD CN SAVE BASE ADDRESS OF EST STD CN+2 (CN+2) = FWA OF EST SBN 1 .NOS22 ENDIF STD CN (CN) = ENTRY ORDINAL OR ADDRESS IDP1 AOD CN BUMP TO NEXT EST ENTRY .NOS22 IFGE OSLEV,594D NOS 2.2 SFA EST (A) = FWA OF EST ENTRY CRD CM LDD CN (A) = CURRENT EST ORDINAL SBD CN+2 .NOS22 ELSE NOS 2.1 OR PRIOR CRD CM SBD CN+1 .NOS22 ENDIF NJN IDP1.1 IF MORE ENTRIES TO CHECK LJM IDP3 NO DDP RESERVED IDP1.1 BSS 0 LDD CM+3 LMC DSDP NJN IDP1 IF EQUIPMENT TYPES DO NOT MATCH .NOS251 IFGE OSLEV,664D LDD CM LPN 3 NJP IDP1 IF DEVICE UNAVAILABLE .NOS251 ENDIF .NOSV2 IFGE OSLEV,562D NOS V2 .NOS22 IFGE OSLEV,594D NOS 2.2 SFA EST,CN (A) = FWA OF ENTRY ADK EQAE OFFSET TO ASSIGNMENT WORD .NOS22 ELSE NOS 2.1 LDD CN EST ENTRY ADD HN OFFSET TO EAT ENTRY .NOS22 ENDIF CRD CM LDD CM+4 EJT ORDINAL FOR THIS EQ STD T1 SAVE IT LDD CP GET THIS JOBS EJT ORDINAL ADN TFSW CRD CM LDD CM DSN EJT ORDINAL STD T2 SAVE IT * /--- BLOCK IDP 00 000 87/02/10 14.47 .NOS22 IFGE OSLEV,594D NOS 2.2 SFA EST,CN (A) = FWA OF ENTRY ADK EQDE EQUIPMENT DESCRIPTOR WORD .NOS22 ELSE NOS 2.1 LDD CN EST ENTRY .NOS22 ENDIF CRD CM RESTORE EST ENTRY IN CM LDD T1 SBD T2 ZJN IDP2 IF ALREADY ASSIGNED .NOSV2 ELSE NOS V1 LDD CM CHECK IF ALREADY ASSIGN TO CP LPN 77 SHN 7 LMD CP ZJN IDP2 IF ASSIGNED TO THIS CP .NOSV2 ENDIF .NOS22 IFGE OSLEV,594D NOS 2.2 LDD CN (A) = EST ORDINAL .NOS22 ELSE NOS 2.1 OR PRIOR LDD CN COMPUTE EST ORDINAL SBD CN+2 .NOS22 ENDIF STD CM+1 STM DPEQ .NOS242 IFGE OSLEV,642D LDN /CPS/REQS REQUEST ACTIVE EQUIPMENT .NOS242 ELSE LDN 0 REQUEST ACTIVE EQUIPMENT .NOS242 ENDIF STD CM+2 MONITOR REQM REQUEST ASSIGNMENT LDD CM+1 ZJN IDP2.2 IF NOT ASSIGNED .NOS22 IFGE OSLEV,594D NOS 2.2 SFA EST,CN (A) = FWA OF CURRENT ENTRY .NOS22 ELSE NOS 2.1 OR PRIOR LDD CN .NOS22 ENDIF CRD CM IDP2 MONITOR CCHM LDD CM+2 NJN IDP2.1 IF CHANNEL RESERVED .NOS22 IFGE OSLEV,594D NOS 2.2 SFA EST,CN (A) = FWA OF CURRENT ENTRY .NOS22 ELSE NOS 2.1 OR PRIOR LDD CN .NOS22 ENDIF CRD CM LDD CM+2 .NOS252 IFGE OSLEV,678D SHN 6 PJP IDP2.2 IF ALTERNATE ACCESS DISABLED SHN 21-6 .NOS252 ELSE ZJN IDP2.2 IF NO ALTERNATE CHANNELS .NOS252 ENDIF STD CM+1 MONITOR CCHM LDD CM+2 ZJN IDP2.2 IF CHANNEL NOT RESERVED IDP2.1 LJM IDP6 IF CHANNEL RESERVED IDP2.2 LJM IDP1 LOOP FOR NEXT ENTRY * /--- BLOCK IDP 00 000 87/02/24 10.10 * SET CM BUFFER ADDRESS BASED ON PP ORDINAL IDP3 STM DPEQ SHOW NO LOW SPEED PORT * DETERMINE IF 700 OR 800 SERIES .NOSV2 IFGE OSLEV,562D NOS V2 LDC MABL CRD CM LDD CM+1 SHN 21-13 PJN IDP4 IF 800 SERIES LDN 1 MARK FOR 700 SERIES UJN IDP5 IDP4 LCN 1 MARK FOR 800 SERIES IDP5 LJM IDPX RETURN .NOSV2 ELSE NOS V1 LDC CPUL CRD CM LDD CM+3 SHN 21-10 MJN IDP4 IF 800 SERIES LDN 1 MARK FOR 700 SERIES UJN IDP5 IDP4 LCN 1 MARK FOR 800 SERIES IDP5 LJM IDPX RETURN .NOSV2 ENDIF * SET DDP CHANNEL IDP6 LDC /PRESET/DPCH SET CHANNEL TABLE ADDRESS STD T2 LDD CM+1 (A) = CHANNEL NUMBER STM //DPCH RJM ICH SET CHANNEL NUMBERS .NOS252 IFGE OSLEV,678D LDK EXML CHECK EM TYPE CRD CM LDD CM+3 SHN 7 MJN IDP7 IF ESM MODE .NOS252 ELSE .NOSV2 IFGE OSLEV,562D NOS V2 LDN MEFL CHECK EM TYPE CRD CM LDD CM+2 LPN 7 (A) = EM TYPE CODE SBN 5 ESM MODE = 5 ZJN IDP7 IF ESM MODE .NOSV2 ELSE NOS V1 LDN CPUL CRD CM LDD CM+ESMW SHN 21-ESMB MJN IDP7 IF ESM MODE .NOSV2 ENDIF .NOS252 ENDIF LDC UJNI+2 NO-OP MODE SELECT STM //RECB STM //WECB IDP7 LDN 0 MARK DDP RESERVED LJM IDPX RETURN ERRNG OVLE-* OVERFLOW OF OVERLAY BUFFER QUAL * * /--- BLOCK KYO 00 000 86/05/29 10.45 KYO OVERLAY (KEY BUFFER OVERFLOW PROCESSING.) KYO SPACE 5,11 ** KYO - PROCESS KEY BUFFER OVERFLOW PROBLEMS * * THIS OVERLAY IS CALLED WHEN A KEY WILL BE DROPPED * BECAUSE THE OVERFLOW KEY BUFFER IS FULL * * EXIT - (A) = 0 IF KEY BUFFER SHOULD BE UPDATED ORG //OVL+5 KYO SUBR LDN 0 CLEAR *BFI* LOADED FLAG STM BODC * COUNT NUMBER OF KEYS LOST AOM SKYB+2 INCREMENT LOST KEY COUNT SHN -14 RAM SKYB+1 * CHECK FOR TOO MANY LOST FOR THIS USER AOM CMB+1 SBN 50 LOSE UP TO 50B KEYS PJN KYO2 IF TOO MANY LOST KEYS LDD KY ADC -ST1KY NJN KYO1 IF NOT A STOP1 KEY * EMPTY OVERFLOW BUFFER AND SET STOP1 KEY LDN 1 STD T2 LDD KY STM CMB+2 KYO1 LDN 0 (A) = UPDATE OVERFLOW BUFFER UJN KYOX * /--- BLOCK KYO 00 000 86/05/29 10.45 * LOG USER OFF, TOO MANY LOST KEYS IN A ROW KYO2 BSS 0 LDC SLKY SINGLE STATION LOGOFF KEY STD KY LDN 0 FORCE STORE OF KEY STM TST,ST SHOW TERMINAL NOT ACTIVE RJM SPK LDN 0#08 RJM PLM LOGOUT USER FROM DPNC LDD ST SBD CB ADD SB STD T7 SAVE STATION NUMBER RJM C2D STM KYOA+7 SET LOWER STATION NUMBER LDD T7 GET STATION NUMBER SHN -6 RJM C2D STM KYOA+6 SET UPPER STATION NUMBER LDM SDT,ST GET S(O) RJM C2D STM KYOA+16 SET LOWER S(O) LDM SDT,ST SHN -6 RJM C2D STM KYOA+15 SET UPPER S(O) LDM TDT,ST GET T(D) LPC 377 STD T7 RJM C2D STM KYOA+21 SET LOWER T(O) LDD T7 SHN -6 RJM C2D STM KYOA+20 SET UPPER T(O) * CHECK FOR INHIBIT ERROR MESSAGE - SW2 LDD RA SHN 6 CRD CN LDD CN+4 SHN 21-7 POSITION SW2 MJN KYO3 EXIT IF SW2 IS SET LDC KYOA RJM DFM KYO3 BSS 0 LDN 0 (A) = UPDATE OVERFLOW BUFFER STM CMB+1 CLEAR LOST KEY COUNT LJM KYOX EXIT KYOA DATA C*KEY PUMPING XXXXB, NETNUM XXXXB-XXXXB.* ERRNG OVLE-* OVERFLOW OF OVERLAY BUFFER QUAL * * /--- BLOCK LPG 00 000 82/12/06 16.09 LPG OVERLAY (LOAD PROGRAM INTO 2550.) LPG SPACE 5,11 ** LPG - LOAD PROGRAM INTO 2550 * * ENTRY - ((CB)) = LOAD FILE DISK ADDRESS ORG //OVL+5 LPG SUBR * SET DISK ADDRESS OF LOAD FILE LDI CB STD T5 LDM 1,CB STD T6 LDM 2,CB STD T7 LDC RTCL SET UP STATUS CLOCK CRD CM LDD CM+1 STM NSTS,NI LDN 0 CLEAR *BFI* LOADED FLAG STM BODC STD IP CLEAR BUFFER INDEX STD IL CLEAR WORD COUNT RJM CNP CLEAR 2550 LDC 20*5 PREFIX AND HEADER BYTE LENGTH RJM GTW SKIP PREFIX NJN LPG3 IF EOR * FORMAT DAYFILE MESSAGE LDM NEST,NI RJM C2D STM LPGB+1 LDN 10D-1 LENGTH OF BINARY DECK ID STD T1 LPG1 LDM /PRESET/BUF+50,T1 STM LPGB+7,T1 SOD T1 PJN LPG1 IF MORE TO MOVE LDC LPGB RJM DFM LPG2 LDN 0 STD IP BUFFER INDEX LDN 6 2550 FWA PACKET LENGTH RJM GTW NJN LPG5 IF EOR LDM /PRESET/BUF SHN 21-13 MJN LPG4 IF LEGAL CONTROL WORD LPG3 LDN NFFE LOAD FILE FORMAT ERROR LJM MXE ABORT LPG4 LDM /PRESET/BUF+5 SHN 1 ZJN LPG3 IF PACKET LENGTH IS ZERO RJM GTW GET PACKET NJN LPG3 IF EOR RJM /PRESET/WTB WRITE LOAD DATA AND VERIFY UJN LPG2 LPG5 LJM LPGX EXIT LPGB DATA C*EQXX LOADING- XXXXXXXXXXXXXXXXXXXX* CNP SPACE 5,11 ** CNP - MASTER CLEAR 2550 CNP SUBR LDC CLC RJM FNC CLEAR COUPLER LDC CNU RJM FNC CLEAR 2550 RJM STS CLEAR ANY LEFT OVER STATUS UJN CNPX * /--- BLOCK LPG 00 000 82/12/06 16.04 GTW SPACE 5,11 ** GTW - MOVE WORDS FROM DISK BUFFER TO 2550 BUFFER * * ENTRY - (A) = REQUESTED PP BYTE COUNT * (IL) = NUMBER OF BYTES LEFT IN DISK BUFFER * (IP) = STARTING ADDRESS IN 2550 BUFFER * * EXIT - (BUF) = REQUESTED DATA BYTES * (A) = 0 DATA READ GTW4 LDN 1 SET EOF/EOI FLAG GTW SUBR ZJN GTWX IF NO DATA REQUESTED STD PL SAVE BYTE COUNT LDD IL NJN GTW2 IF BYTES LEFT IN *BFDS* GTW1 RJM RDB FILL *BFDS* ZJN GTW4 IF EOF/EOI ENCOUNTERED LDD IL SET SIZE OF READ ZJN GTW1 IF EMPTY SECTOR STM GTWA GTW2 LDC 500 GTWA EQU *-1 SBD IL FIND STARTING TRANSFER POINT STD T2 GTW3 LDM /PRESET/BFDS+2,T2 STM /PRESET/BUF,IP AOD T2 AOD IP SOD IL SOD PL ZJN GTWX IF ALL BYTES TRANSFERRED LDD IL NJN GTW3 IF BYTES LEFT IN *BFDS* UJN GTW1 READ NEXT DISK SECTOR RDB SPACE 5,11 ** RDB - READ DISK BUFFER * * EXIT - (A) = 0 IF EOF/EOI ENCOUNTERED * (IL) = NUMBER OF PP BYTES READ RDB SUBR LDN 1 RDBA EQU *-1 ZJN RDBX IF EOR ON PREVIOUS SECTOR SETMS READSYS LDC /PRESET/BFDS RJM /PRESET/RNS READ NEXT SECTOR SHN 2 COUNT PP WORD COUNT ADD T1 STD IL ENDMS LDD T1 SHN -6 ADC LDNI STM RDBA SET EOR FLAG UJN RDBX EXIT ERRNG OVLE-* OVERFLOW OF OVERLAY BUFFER QUAL * * /--- BLOCK MXE 00 000 87/02/10 14.50 MXE OVERLAY (PROCESS 2550 CHANNEL ERRORS.) MXE SPACE 5,11 ** MXE - PROCESS 2550 CHANNEL ERRORS * * ENTRY - (T7) = ERROR CODE ORG //OVL+5 MXE SUBR LDN 0 CLEAR *BFI* LOADED FLAG STM BODC * ISSUE DAYFILE MESSAGE ABOUT ERROR LDD T7 RAM .MXEA RJM C2D STM MXEA+6 LDM NEST,NI RJM C2D STM MXEA+1 STM MXEB+1 LDC MXEA *EQXX ERROR XX.* RJM DFM LDN 0 STD OD CLEAR OUTPUT DELAY FLAG STD OL CLEAR OUTPUT LENGTH LDD IR+2 NJN MXE0.1 IF RELOAD CALL LDM INIC ZJN MXE0.1 IF INITIALIZATIONS COMPLETE LDN ILFE INITIAL LOADING FAILURE RJM MES LJM TER TERMINATE PROGRAM * LOG OFF ALL TERMINALS CONNECTED TO THIS 2550 MXE0.1 BSS 0 RJM LOT * CALL ANOTHER COPY OF DSN TO RE-LOAD THIS 2550 LDM NCH,NI DROP CHANNEL DCHAN LDD MA BUILD INPUT REGISTER CWD IR CRD CM LDM NEST,NI SET EST ORDINAL TO RE-LOAD STD CM+2 .NOS22 IFGE OSLEV,594D NOS 2.2 SFA EST (A) = FWA OF EST ENTRY ADK EQDE OFFSET TO DESCRIPTOR WORD .NOS22 ELSE NOS 2.1 OR PRIOR ADM ESTS READ EST ENTRY .NOS22 ENDIF CRD CN .NOS252 IFGE OSLEV,664D LDD CN LPN 3 NJP MXE1 IF UNAVAILABLE .NOS252 ELSE LDD CN+3 CHECK IF 2550 IS STILL ON SHN 6 MJN MXE1 IF TURNED OFF .NOS252 ENDIF LDN 0 .MXEA EQU *-1 2550 ERROR CODE SBN OPLE ZJN MXE2 IF OPERATOR REQUESTED LOAD * /--- BLOCK MXE 00 000 86/05/29 10.49 * CHECK IF RELOAD INHIBITED LDD RA READ SENSE SWITCHES SHN 6 CRD CN LDD CN+4 SHN 21-6 MJN MXE0 IF RELOADS INHIBITED (SSW1) AOM NREL,NI CHECK IF TOO MANY RE-LOADS SBN MXREL+1 MJN MXE2 IF NOT TOO MANY RE-LOADS * TURN 2550 OFF AFTER MAXIMUM RE-LOADS MXE0 LDD CM+2 STD CM+1 LDN 1 STD CM+2 MONITOR SEQM LDC MXEB *EQXX TURNED OFF.* RJM DFM LDD IR+2 ZJN MXE1 -- IF NOT RELOAD CALL LJM TER RELOAD CALL'; EXIT MXE1 LJM MXE7 MXE2 LDD SN SET S(D) STD CM+3 LDM NDS,NI SET DPNC S(D) STD CM+4 LDD MA CWD CM MXE5 LDN 1 SET PRIORITY PP REQUEST STD CM+1 MONITOR RPPM REQUEST PP LDD CM+1 ZJN MXE5 IF PP NOT LOADED * WAIT FOR PP TO LOAD 2550 AND DROP STD T7 MXE6 DELAY LDD T7 CRD CM LDD IR LMD CM NJN MXE7 IF PP HAS DROPPED LDD CM+1 LMD IR+1 SCN 77 NJN MXE7 IF PP HAS DROPPED RJM PSE PAUSE ZJN MXE6 IF NO ERROR FLAG LJM TER * CONTINUE 2550 RELOAD AFTER LOAD PP DROPPED MXE7 EXECUTE MXP,= LDC /MXP/OVL RJM EXR MXEA DATA C*EQXX ERROR XX.* MXEB DATA C*EQXX TURNED OFF.* ERRNG OVLE-* OVERFLOW OF OVERLAY BUFFER QUAL * * /--- BLOCK MXP 00 000 86/05/29 10.50 MXP OVERLAY (COMPLETE 2550 RELOAD.) MXP SPACE 5,11 ** COMPLETE 2550 RELOAD ORG //OVL+5 MXP SUBR LDN 0 CLEAR *BFI* LOADED FLAG STM BODC * CHECK IF 2550 IS STILL TURNED ON LDM NEST,NI .NOS22 IFGE OSLEV,594D NOS 2.2 SFA EST (A) = FWA OF EST ENTRY ADK EQDE OFFSET TO DESCRIPTOR WORD .NOS22 ELSE NOS 2.1 OR PRIOR ADM ESTS READ EST ENTRY .NOS22 ENDIF CRD CN LDD CN+3 CHECK IF 2550 IS STILL ON SHN 6 PJN MXP3 IF STILL ON * STOP PROCESSING THIS 2550 .NOSV2 IFGE OSLEV,562D NOS V2 LDM NEST,NI LOCATION IN EST TABLE .NOS22 IFGE OSLEV,594D NOS 2.2 SFA EST (A) = FWA OF EST ENTRY ADK EQAE CRD CN READ WORD *EQAE* OF EST ENTRY .NOS22 ELSE NOS 2.1 ADM ESTS LOCATION OF EST TABLE ADC 100 MOVE TO EAT TABLE CRD CN READ EAT ENTRY .NOS22 ENDIF LDD CP GET EJT ORDINAL ADN TFSW CRD CM LDD CM EJT ORDINAL SBD CN+4 EJT 2550 IS ASSIGNED TO NJN MXP2 IF 2550 NOT ASSIGNED HERE .NOSV2 ELSE NOS V1 LDD CN CHECK IF ALREADY DROPPED ZJN MXP2 IF NOT ASSIGNED TO ANY CP .NOSV2 ENDIF LDM NEST,NI RELEASE 2550 EQUIPMENT STD CM+1 MONITOR DEQM MXP2 LDN 0 STM NEST,NI SHOW THIS 2550 NOT ACTIVE * /--- BLOCK MXP 00 000 86/05/29 10.50 * CHECK IF THE CHANNEL SHOULD BE RESERVED AGAIN * CHECK ANY 2550 TO PROCESS MXP3 LDN 0 STD T1 (T1) = 2550 INDEX STD T2 (T2) = ACTIVE 2550 COUNT STD T3 (T3) = CHANNEL NEEDED FLAG LDC RTCL CRD CM MXP4 LDM NEST,T1 ZJN MXP5 IF INACTIVE 2550 AOD T2 COUNT ACTIVE 2550S LDD CM+1 RESET STATUS CLOCK STM NSTS,T1 LDM NCH,T1 LMM NCH,NI NJN MXP5 IF NOT ON THE DROPPED CHANNEL AOD T3 MARK CHANNEL NEEDED MXP5 AOD T1 LMM .SNPA NJN MXP4 IF MORE 2550S TO CHECK LDD T2 ZJN MXP7 IF NO 2550S TO PROCESS LDD T3 ZJN MXP6 IF CHANNEL NOT NEEDED LDM NCH,NI RCHAN RESERVE CHANNEL MXP6 RJM SNP LJM MAI1 ENTER MAIN LOOP OF DRIVER MXP7 LJM MAI9 DROP PP ERRNG OVLE-* OVERFLOW OF OVERLAY BUFFER QUAL * * /--- BLOCK OPC 00 000 87/02/10 15.14 OPC OVERLAY (PROCESS OPERATOR CFO COMMAND.) OPC SPACE 5,11 ** PROCESS OPERATOR CFO COMMAND ORG //OVL+5 OPC SUBR LDN 0 CLEAR *BFI* LOADED FLAG STM BODC * READ OPERATOR REQUEST LDD RA SHN 6 ADN CCDR CRD CM LDD CM LMC 2RRE CHECK FOR *RE* ZJN OPC2 IF RELOAD REQUEST OPC1 LDC OPCA RJM DFM LJM OPC9 SET CFO BIT AND EXIT * PROCESS *RELOAD* REQUEST OPC2 LDD CM+1 RJM DXB CONVERT EST ORDINAL MJN OPC1 IF INVALID NUMBER STD T4 (T4) = EST ORDINAL .NOS22 IFGE OSLEV,594D NOS 2.2 SFA EST (A) = FWA OF EST ENTRY ADK EQDE OFFSET TO DESCRIPTOR WORD .NOS22 ELSE NOS 2.1 OR PRIOR ADM ESTS .NOS22 ENDIF CRD CM LDD CM+3 LMC DSFE NJN OPC1 IF NOT *FE* EQUIPMENT * DETERMINE WHICH PP DRIVES THIS 2550 .NOS252 IFGE OSLEV,678D SFA EST,T4 ADK EQAE CRD CM .NOS252 ENDIF LDD CM+2 EXTRACT 2550 ORDINAL SHN -6 STD CM+2 LDD MA CWD IR CRD CN (CN+4) = PP ORDINAL OPC3 LCN MXNPU RAD CM+2 MJN OPC4 IF FOUND THE CORRECT PP AOD CN+4 UJN OPC3 OPC4 ADN MXNPU STD T5 (T5) = 2550 ORDINAL WITHIN PP .NOS252 IFGE OSLEV,678D SFA EST,T4 ADK EQDE CRD CM .NOS252 ENDIF LDD CM+1 LPN 77 STD T6 (T6) = CHANNEL LDD CM+4 LPC 7000 STD T7 (T7) = EQUIPMENT LDN 1 STD T3 (T3) = UP REQUEST * /--- BLOCK OPC 00 000 86/05/29 10.53 * CHECK IF THIS PP IS LOADED LDN PPUL CRD CM LDD CM+2 STD T1 (T1) = NUMBER OF PPS LDN PPCP CRD CM LDD CM+4 STD T2 (T2) = PP COMMUNICATION ADDRESS OPC5 LDD T2 CRD CM LDD CM LMD IR NJN OPC6 IF NOT *DSN* LDD CM+1 LMD IR+1 SCN 77 NJN OPC6 IF NOT *DSN* LDD CM+4 LMD CN+4 ZJN OPC8 IF PROPER DRIVER LOADED OPC6 LDN 10 RAD T2 SOD T1 NJN OPC5 IF MORE PPS * LOAD THIS PP OPC7 LDD MA CWD CN LDN 1 SET PRIORITY PP REQUEST STD CM+1 MONITOR RPPM LDD CM+1 NJN OPC9 IF PP ASSIGNED RJM PSE ZJN OPC7 LJM TER * /--- BLOCK OPC 00 000 86/05/29 10.52 * WRITE REQUEST TO DRIVER REQUESTS OPC8 LDD RA SHN 6 ADN DR ADD CN+4 CWD T3 * SET CFO BIT OPC9 LDD RA SHN 6 CRD CM LDN 4 STD CM+3 LDD RA SHN 6 CWD CM LJM OPCX EXIT OPCA DATA C* INVALID REQUEST.* DXB SPACE 5,11 ** DXB - CONVERT NUMBER FROM DISPLAY CODE * * ENTRY - (A) = CHARACTERS TO CONVERT * * EXIT - (A) = CONVERTED NUMBER (-1 IF ERROR) DXB1 LCN 1 DXB SUBR STD T1 LPN 77 SBN 1R0 MJN DXB1 IF ILLEGAL CHARACTER STD T0 SBN 10 PJN DXB1 IF ILLEGAL CHARACTER LDD T1 SHN -6 SBN 1R0 MJN DXB1 IF ILLEGAL CHARACTER SBN 10 PJN DXB1 IF ILLEGAL CHARACTER ADN 10 SHN 3 ADD T0 UJN DXBX EXIT ERRNG OVLE-* OVERFLOW OF OVERLAY BUFFER QUAL * * /--- BLOCK OPR 00 000 86/05/29 10.56 OPR OVERLAY (PROCESS MAIN DRIVER REQUEST.) OPR SPACE 5,11 ** PROCESS REQUEST FROM MAIN DRIVER * * REQUEST PARAMETERS * ------- ---------- * * 1 (RELOAD 2550) EST, ORDINAL, CHANNEL, EQUIP ORG //OVL+5 OPR SUBR LDN 0 CLEAR *BFI* LOADED FLAG STM BODC * READ AND CLEAR REQUEST BUFFER LDN ZERL CRD CM LDD RA SHN 6 ADN DR ADD PO CRD CN READ REQUEST CWD CM CLEAR REQUEST * DETERMINE REQUEST TYPE LDD CN SBN 1 NJN OPRX IF UNKNOWN REQUEST * RESERVE EQUIPMENT .NOSV2 IFLT OSLEV,562D IF NOS V1 LDD CN+1 CHECK IF ALREADY ASSIGNED TO CP ADM ESTS CRD CM LDD CM SHN 7 LMD CP .NOSV2 ELSE IF NOS V2 LDD CN+1 (A) = EST ORDINAL .NOS22 IFGE OSLEV,594D NOS 2.2 SFA EST (A) = FWA OF EST ENTRY ADK EQAE OFFSET TO ASSIGNMENT WORD .NOS22 ELSE NOS 2.1 ADM ESTS (A) = ADDRESS OF EST ENTRY ADD HN (A) = ADDRESS OF EAT ENTRY .NOS22 ENDIF CRD CM READ EAT ENTRY LDD CM+4 STD T1 LDD CP CHECK DSN,S EJT ORDINAL ADK TERW (A) = ADDR OF CP EJT ORDINAL CRD CM LDD T1 LMD CM .NOSV2 ENDIF ZJN OPR1 IF ASSIGNED TO THIS CP LDM NEST,CN+2 ZJN OPR0 IF 2550 ORDINAL IS OKAY LDC OPRA DUPLICATE 2550 ORDINALS RJM DFM LJM OPRX EXIT * /--- BLOCK OPR 00 000 86/05/29 10.55 OPR0 BSS 0 LDD CN+1 STD CM+1 .NOS242 IFGE OSLEV,642D LDN /CPS/REQS REQUEST ACTIVE EQUIPMENT .NOS242 ELSE LDN 0 REQUEST ACTIVE EQUIPMENT .NOS242 ENDIF STD CM+2 MONITOR REQM REQUEST ASSIGNMENT LDD CM+1 NJN OPR1 IF ASSIGNED LJM OPRX EXIT * BUILD TABLES FOR THIS 2550 OPR1 LDD CN+2 SHN 4 STD T1 LDD CN+1 STM NEST,CN+2 LDD CN+3 STM NCH,CN+2 LDD CN+4 STM NEQ,T1 LDN 0 STM NREL,CN+2 * CHECK IF CHANNEL ALREADY REQUEST .NOSV2 IFGE OSLEV,562D NOS V2 LDN CTALL STD T1 (T1) = LENGTH OF CHANNEL TABLE LDK CHTP (A) = CMR POINTER ADDRESS CRD CM LDD CM+2 SHN 14B ADD CM+3 (A) = FWA OF CHANNEL TABLE .NOSV2 ELSE NOS V1 LDN CTILL STD T1 LDC CTIL .NOSV2 ENDIF CRM BUF,T1 LDN PPCP CRD CM LDD IA SBD CM+4 SHN -3 LMM BUF,CN+3 .NOSV2 IFGE OSLEV,562D NOS V2 LPN 37 .NOSV2 ELSE NOS V1 LPN 77 .NOSV2 ENDIF ZJN OPR2 IF CHANNEL ALREADY ASSIGNED LDD CN+3 RCHAN * SET UP TO RE-LOAD THIS 2550 OPR2 LDD CN+2 LMD NI ZJN OPR3 IF SET TO PROPER 2550 RJM SNP SET UP NEXT 2550 UJN OPR2 * FORCE THIS 2550 TO BE RELOADED OPR3 LDN OPLE LJM MXE RE-LOAD 2550 OPRA DATA C*DUPLICATE 2550 ORDINALS.* ERRNG OVLE-* OVERFLOW OF OVERLAY BUFFER QUAL * * /--- BLOCK PSM 00 000 86/05/29 10.53 PSM OVERLAY (PROCESS SYSTEM MESSAGE.) PSM SPACE 5,11 ** PSM - PROCESS SYSTEM MESSAGE * * ENTRY - (IP) - POINTER TO START OF TERMINAL BLOCK * * EXIT - (IP) - INCREMENTED BY LENGTH OF DATA BLOCK ORG //OVL+5 PSM SUBR LDN 0 CLEAR *BFI* LOADED FLAG STM BODC LDM IBUF,IP SET SYSTEM MESSAGE NUMBER STD T4 LDC SYSB STD T5 LDM IBUF,IP CHECK FOR FB MESSAGE ADC -0#FB NJN SYS1 IF NOT A FB MESSAGE LDM IBUF+2,IP GET FB MESSAGE NUMBER STD T4 LDC SYSD SET TO FB TABLE STD T5 * SEARCH FOR THIS SYSTEM MESSAGE SYS1 LDI T5 ZJN SYS2 IF END OF TABLE LMD T4 ZJN SYS3 IF FOUND THIS SYSTEM MESSAGE LDN 2 RAD T5 UJN SYS1 CHECK NEXT ENTRY IN TABLE * SYSTEM MESSAGE NOT FOUND SYS2 LDD T4 STD ST ST CONTAINS BAD CODE LDN USME UNKNOWN SYSTEM MESSAGE RJM MES LDN 1 MARK AS UNKNOWN MESSAGE UJN SYS4 * JUMP TO PROCESSOR FOR THIS SYSTEM MESSAGE * * (IP) = POINTER TO TERMINAL BLOCK * (PL) = PACKET LENGTH SYS3 LDM 1,T5 STM /SYS/SYSA LDN 0 MARK AS ROUTINE PLANTED SYS4 BSS 0 LJM PSMX EXIT SYSB BSS 0 SYSTEM MESSAGE TABLE CON 0#CA,CSS CHANGE SWITCH STATUS CON 0#CD,DSM IST ERROR STATISTICS CON 0#DE,CEM 2550 CCP ERROR/STATISTIC MSG * DELETED ASU, APPLICATION SYSTEM UPDATE CON 0#E7,ASO APPLICATION SIGNON CON 0 END OF TABLE SYSD BSS 0 FB MESSAGE TABLE CON 0#91,SBG SIGN-ON TO BACKGROUND SYSTEM CON 0 END OF TABLE ERRNG OVLE-* OVERFLOW OF OVERLAY BUFFER QUAL * * /--- BLOCK RFE 00 000 87/02/10 15.16 RFE OVERLAY (RESERVE FRONT ENDS.) RFE SPACE 4,10 ** RFE - RESERVE FRONT END. * * RESERVE 2550S ASSIGNED TO THIS PP. ORG //OVL+5 RFE SUBR ENTRY / EXIT LDN 0 CLEAR *BFI* LOADED FLAG STM BODC LDN ESTP CRD CN .NOS22 IFGE OSLEV,594D NOS 2.2 LDN 0 STD CN+3 (CN+3) = CURRENT EST ORDINAL STD CN+4 (CN+4) = NO. OF 2550S ASSIGNED RFE1 AOD CN+3 ADVANCE TO NEXT EST ENTRY SBD CN+2 (CN+2) = LAST EST ORDINAL + 1 PJP RFE6 IF NO MORE ENTRIES SFA EST,CN+3 CRD CM READ EST ENTRY .NOS22 ELSE NOS 2.1 OR PRIOR LDD CN SAVE BASE ADDRESS OF EST STD CN+2 SBN 1 STD CN INITIALIZE LOOP LDN 0 STD CN+4 NUMBER OF 2550S ASSIGNED RFE1 AOD CN BUMP TO NEXT EST ENTRY CRD CM SBD CN+1 MJN RFE1.1 IF MORE ENTRIES LJM RFE6 .NOS22 ENDIF RFE1.1 LDD CM+3 LMC DSFE NJN RFE1 IF EQUIPMENT TYPES DO NOT MATCH * CHECK IF THIS ORDINAL SHOULD BE ASSIGNED TO PP LDN 0 STD NI .NOS252 IFGE OSLEV,678D SFA EST,CN+3 ADK EQAE CRD CM .NOS252 ENDIF RFE2 LDD CM+2 SHN -6 LMM NORD,NI ZJN RFE3 IF THIS PP SHOULD PROCESS AOD NI LMM .SNPA NJN RFE2 IF MORE 2550 TO CHECK RFE2.1 UJN RFE1 SEARCH FOR NEXT 2550 RFE3 LDM NEST,NI ZJN RFE4 IF ORDINAL NOT YET ASSIGNED LDC RFEB * DUPLICATE 2550 ORDINALS.* LJM RFE7 .NOS22 IFGE OSLEV,594D NOS 2.2 RFE4 LDD CN+3 (A) = EST ORDINAL .NOS22 ELSE NOS 2.1 OR PRIOR RFE4 LDD CN COMPUTE EST ORDINAL SBD CN+2 .NOS22 ENDIF STD CM+1 * /--- BLOCK RFE 00 000 87/02/10 15.19 .NOS242 IFGE OSLEV,642D LDN /CPS/REQS .NOS242 ELSE LDN 0 REQUEST ACTIVE EQUIPMENT .NOS242 ENDIF STD CM+2 ACTIVE EQUIPMENT ONLY MONITOR REQM REQUEST ASSIGNMENT LDD CM+1 ZJN RFE2.1 IF NOT ASSIGNED .NOS22 IFGE OSLEV,642D LDD CN+3 (A) = EST ORDINAL .NOS22 ENDIF STM NEST,NI SET EST ORDINAL AOD CN+4 COUNT 2550S ASSIGNED LDD NI SHN 4 STD T7 .NOS22 IFGE OSLEV,594D NOS 2.2 SFA EST,CN+3 (A) = CURRENT ENTRY FWA ADK EQDE .NOS22 ELSE NOS 2.1 OR PRIOR LDD CN .NOS22 ENDIF CRD CM RE-READ EST LDD CM+4 SAVE EQUIPMENT NUMBER LPC 7000 STM NEQ,T7 LDD CM+1 LPN 77 STD T2 STM NCH,NI LDN 0 SHOW NO RE-LOADS YET STM NREL,NI * CHECK IF CHANNEL ALREADY REQUEST .NOSV2 IFGE OSLEV,562D NOS V2 LDN CTALL STD T1 (T1) = LENGTH OF CHANNEL TABLE LDK CHTP (A) = CMR POINTER ADDRESS CRD CM LDD CM+2 SHN 14B ADD CM+3 (A) = FWA OF CHANNEL TABLE .NOSV2 ELSE NOS V1 LDN CTILL STD T1 LDC CTIL .NOSV2 ENDIF CRM BUF,T1 LDN PPCP CRD CM LDD IA SBD CM+4 SHN -3 LMM BUF,T2 .NOSV2 IFGE OSLEV,562D NOS V2 LPN 37 .NOSV2 ELSE NOS V1 LPN 77 .NOSV2 ENDIF ZJN RFE5 IF CHANNEL ALREADY ASSIGNED LDD T2 RCHAN RFE5 LJM RFE1 CHECK REST OF EST * /--- BLOCK RFE 00 000 82/05/10 11.16 * VERIFY SOME 2550S FOUND RFE6 LDD CN+4 NJN RFE8 IF SOME 2550S FOUND LDD PO (A) = PP ORDINAL RJM C2D STM RFEA+13 LDC RFEA *NO 2550S FOUND.* RFE7 RJM DFM LJM TER RFE8 LJM RFEX EXIT RFEA DATA C* NO 2550S FOUND FOR PPXX.* RFEB DATA C* DUPLICATE 2550 ORDINALS.* ERRNG OVLE-* OVERFLOW OF OVERLAY BUFFER QUAL * * /--- BLOCK RTT 00 000 82/04/21 12.22 RTT OVERLAY (RETURN PLATO TERMINAL TYPE.) RTT SPACE 5,11 ** RTT - RETURN TERMINAL TYPE * * THE TERMINAL TYPE IS SENT TO PLATO AS AN ECHO * KEY * * TERMINAL ECHO KEY = 3/TT, 4/12 (ASCII TYPE) * * TT - 0 = ASCII IST * 1 = CDC 750 * 2 = TEKTRONIX 4014 * 3 = DATASPEED 40 ORG //OVL+5 RTT SUBR LDN 0 CLEAR *BFI* LOADED FLAG STM BODC LDM TST,ST ZJN RTTX IF TERMINAL NOT ACTIVE * READ TERMINAL INFORMATION WORD * GET TERMINAL TYPE LDD RA SHN 6 ADD TB BIAS TO TERMINAL INFORMATION ADD ST ADD ST CRD CM LDD CM SHN -4 STD T1 (T1) = TERMINAL TYPE * CONVERT NETWORK TERMINAL TYPE TO PLATO TYPE LDC //RTTA START OF TERM TYPE TABLE STD T2 RTT1 LDI T2 ZJN RTT4 IF TERMINAL TYPE NOT FOUND LMD T1 LPC 0#FE TERMINAL TYPE WITHOUT PARITY ZJN RTT2 IF TERMINAL FOUND AOD T2 UJN RTT1 CHECK NEXT TERMINAL TYPE RTT2 LDI T2 FETCH PLATO TERMINAL TYPE SHN -10 POSITION PLATO TYPE LPN 7 SHN 4 ADC TTKY INCLUDE ECHO CODE SHN 1 STD KY LDN 0 FORCED STORE RJM SPK STORE PLATO KEY RTT3 LJM RTTX EXIT RTT4 RJM SSL RE-VALIDATE USER LDN 0 STM TST,ST SHOW TERMINAL NOT ACTIVE LDN 0#0C RJM PLM REVALIDATE USER AT DPNC UJN RTT3 EXIT ERRNG OVLE-* OVERFLOW OF OVERLAY BUFFER QUAL * * /--- BLOCK SSM 00 000 82/03/26 14.56 SSM OVERLAY (PROCESS SUPER SYSTEM MESSAGE.) SSM SPACE 5,11 ** SSM - PROCESS SUPER SYSTEM MESSAGE * * ALL ACTIVE TERMINALS ARE LOGGED OFF * A RESET COMPLETE IS SENT IF REQUEST RESET IS * RECEIVED ORG //OVL+5 SSM SUBR LDN 0 CLEAR *BFI* LOADED FLAG STM BODC LDM NEST,NI RJM C2D STM SSMA+1 STM SSMB+1 LDM IBUF ISSUE DAYFILE MESSAGE RJM C2X STM SSMA+13 LDM IBUF+2 RJM C2X STM SSMA+15 LDC SSMA * SUPER SYSTEM MSG XX.* RJM DFM RJM LOT SIGN ALL TERMINALS OFF PLATO * SEND RESET COMPLETE SSM1 LDC 0#FD STM OBUF LDN 2 STM OBUF+1 STD OL RJM FOB SEND SUPER SYSTEM MESSAGE LDC 0#80+1*10000B SET ENABLE ROUTING RJM SRM SEND ROUTING MESSAGE LDC SSMB * RESET COMPLETE.* RJM DFM LJM SSMX EXIT SSMA DATA C*EQXX SUPER SYSTEM MSG XX (XX).* SSMB DATA C*EQXX RESET COMPLETE.* ERRNG OVLE-* OVERFLOW OF OVERLAY BUFFER QUAL * * /--- BLOCK TER 00 000 86/05/29 11.00 TER OVERLAY (TERMINATION OVERLAY.) TER SPACE 5,11 ** TER - TERMINATION OVERLAY * * LOG OUT ALL TERMINALS * CLEAR 2550S * DROP EQUIPMENT AND CHANNELS * * ENTRY - (TERT) = 0 IF DISABLE ROUTING ORG //OVL+5 TER SUBR LDN 0 STM BODC CLEAR *BFI* LOADED FLAG STM MSD CLEAR MASS STORAGE DRIVER * SEND MESSAGE TO DISABLE ROUTING LCN 0 STD NI LDD IR+2 ZJN TER1 IF DRIVER COPY LJM TER4 RELOAD COPY'; NO DSN MSG OR EM TER1 RJM SNP SET UP NPU ZJN TER2 IF FULL CYCLE RJM LOT SIGN TERMINALS OFF PLATO LDM TERT NJN TER1 IF NO DISABLE ROUTING LDC 0#40+2*10000B DISABLE ROUTING CODE RJM SRM SEND ROUTING MESSAGE LDC CNU CLEAR 2550 RJM FNC UJN TER1 IF MORE NPUS * /--- BLOCK TER 00 000 86/05/29 11.01 * DROP LOW SPEED PORT CHANNEL TER2 LDM DPCH CHECK IF DDP CHANNEL ASSIGNED ZJN TER4 IF NO CHANNEL DCHAN LDM DPEQ RELEASE DDP EQUIPMENT ZJN TER4 IF THIS PP DID NOT RESERVE IT STD CM+1 MONITOR DEQM UJN TER4 TER3 LJM TER8 END OF DROP EQ/CH LOOP * RELEASE 2550 AND THEIR CHANNELS TER4 LDN 0 STD NI TER5 LMM .SNPA ZJN TER3 IF NO MORE 2550S LDM NEST,NI RELEASE 2550 EQUIPMENT .NOSV2 IFGE OSLEV,562D NOS V2 ZJP TER6 IF NO EQUIPMENT .NOSV2 ELSE NOS V1 ZJN TER6 IF NO EQUIPMENT .NOSV2 ENDIF .NOS22 IFGE OSLEV,594D NOS 2.2 SFA EST (A) = FWA OF EST ENTRY ADK EQAE READ EQUIPMENT ATTRIBUTE WORD CRD CN .NOS22 ELSE NOS 2.1 ADM ESTS LOCATION OF EST TABLE ADD HN (A) = ADDRESS OF EAT ENTRY CRD CN READ EAT ENTRY .NOS22 ENDIF LDD CP GET EJT ORDINAL ADN TFSW CRD CM LDD CM EJT ORDINAL SBD CN+4 EJT 2550 IS ASSIGNED TO NJP TER6 IF NOT ASSIGNED HERE LDM NEST,NI RELEASE 2550 EQUIPMENT STD CM+1 MONITOR DEQM * /--- BLOCK TER 00 000 86/05/29 11.01 * CHECK IF CHANNEL ALREADY DROPPED TER6 BSS 0 LDM NCH,NI STD T2 .NOSV2 IFGE OSLEV,562D NOS V2 LDN CTALL STD T1 (T1) = LENGTH OF CHANNEL TABLE LDK CHTP (A) = CMR POINTER ADDRESS CRD CM LDD CM+2 SHN 14B ADD CM+3 (A) = FWA OF CHANNEL TABLE .NOSV2 ELSE NOS V1 LDN CTILL STD T1 LDC CTIL .NOSV2 ENDIF CRM BUF,T1 LDN PPCP CRD CM LDD IA SBD CM+4 SHN -3 LMM BUF,T2 .NOSV2 IFGE OSLEV,562D NOS V2 LPN 37 .NOSV2 ELSE NOS V1 LPN 77 .NOSV2 ENDIF NJN TER7 IF CHANNEL NOT ASSIGNED TO PP LDD T2 DCHAN TER7 AOD NI CHECK FOR MORE 2550S LJM TER5 PROCESS NEXT 2550 * DISPLAY NUMBER OF KEYS LOST TER8 STD CM+1 SET NON-CM CONVERSION LDD MA CWM SKYB-2,ON MONITOR RDCM LDD MA CRM TERA,ON LDM TERA ZJN TER9 IF NO KEYS LOST LDC TERA RJM DFM TER9 MONITOR DPPM DROP PP LJM PPR IDLE TERA DATA C*XXXXXXXXXXK KEYS LOST.* ERRNG OVLE-* OVERFLOW OF OVERLAY BUFFER QUAL * * /--- BLOCK UMT 00 000 82/04/29 13.26 UMT OVERLAY (UPDATE MAXIMUM TERMINAL NUMBER IN USE.) UMT SPACE 5,11 ** UMT - UPDATE MAXIMUM TERMINAL NUMBER IN USE * * THE TERMINAL STATUS TABLE IS SEARCHED FOR THE * HIGHEST PLATO STATION NUMBER * * EXIT - (NMT) = UPDATED TO HIGHEST CONNECTION ORG //OVL+5 UMT SUBR LDN 0 CLEAR *BFI* LOADED FLAG STM BODC LDD NI SHN 4 STD T1 LDM NCB+20,T1 STD T3 SET TO MAXIMUM POSSIBLE NUMBER UMT1 LDM TST-1,T3 NJN UMT2 IF TERMINAL IN USE SOD T3 LMD CB NJN UMT1 IF MORE TERMINALS TO CHECK * COUNT NUMBER OF TERMINALS ACTIVE UMT2 LDD T3 SBD CB STM NMT,NI SET HIGHEST CONNECTION IN USE LDN 0 STD CM LDD CB STD T1 UMT3 LMD T3 ZJN UMT5 IF ALL TERMINALS CHECKED LDM TST,T1 ZJN UMT4 IF TERMINAL NOT ACTIVE AOD CM COUNT TERMINAL UMT4 AOD T1 BUMP TO NEXT TERMINAL UJN UMT3 * STORE FOR THIS NPU UMT5 BSS 0 LDD CM NUMBER OF TERMINALS FOR NPU STM NUSR,NI RJM UCS UPDATE CM STATISTICS * COUNT TOTAL CONNECTED TERMINALS LDN 0 STD T1 STD T2 UMT6 LDD RA SHN 5 ADD T1 SHN 1 ADK TS CRD CM LDD CM RAD T2 AOD T1 LMM UMTC NJN UMT6 IF MORE 2550S * UPDATE *B* DISPLAY MESSAGE LDD T2 RJM C2D CONVERT FOR MESSAGE STM UMTA+1 LDD T2 SHN -6 RJM C2D STM UMTA LDD CP ADN MS1W CWM UMTA,TR LJM UMTX EXIT UMTA DATA C*XXXX TERMINALS ACTIVE.* ERRNG OVLE-* QUAL * OVLC EQU OVI LAST OVERLAY TO BE CM RESIDENT * /--- BLOCK KEY 00 000 82/03/31 15.48 KEY OVERLAY (ASCII TO PLATO KEY TRANSLATION TABLE.) KEY SPACE 5,11 ** KEYS - CONVERSION FROM ASCII TO PLATO KEYS * * ALL CHARACTERS ARRIVE IN REVERSE BIT ORDER * THIS TABLE IS ORDERED IN THIS MANNER SPACE 5,11 ** KEY - MACRO TO CREATE KEY CONVERSION TABLE * *AA KEY PPP * * AA - HEX ASCII KEY VALUE * PPP- PLATO KEY VALUE * * TABLE ENTRY FORMAT * * 10/PLATO KEY VALUE, 1/0, 1/EXPECTED PARITY NOREF /KEY/KEYS,/KEY/.4 MACRO KEY,A,P .1 MICRO 1,1, A .3 MICRO 1,, A .5 MICRO 0#".3"+1,1, 0110100110010110100101100110100110010110011 ,01001011010011001011010010110011010010110100110010110011010011001011010 ,01011001101001 .2 MICRO 0#".1"+1,1, 084C2A6E195D3B7F .1 MICRO 2,1, A .3 MICRO 0#".1"+1,1, 084C2A6E195D3B7F .4 SET 0#".3"".2" .4 SET .4/2 ORG KEYS+.4 LOC .4 VFD 10/P,1/0,1/".5" ENDM ORG //KEYA KEY SUBR UJN KEYX EXIT KEYS BSSZ 200 * /--- BLOCK KEY 00 000 86/05/29 11.07 00 KEY 074 SQUARE1 01 KEY 032 STOP 02 KEY 030 BACK 03 KEY 033 COPY 04 KEY 021 SUB 05 KEY 061 SUB1 *06 ACK 07 KEY 022 ANS 08 KEY 023 ERASE 09 KEY 065 HELP1 0A KEY 014 TAB 0B KEY 025 HELP 0C KEY 035 LAB 0D KEY 026 NEXT 0E KEY 070 BACK1 0F KEY 075 LAB1 *10 DLE 11 KEY 072 STOP1 12 KEY 031 DATA 13 KEY 020 SUPER 14 KEY 062 TERM *15 NAK 16 KEY 073 COPY1 17 KEY 060 SUPER1 18 KEY 067 EDIT1 19 KEY 063 ERASE1 1A KEY 027 EDIT *1B ESC 1C KEY 054 CR 1D KEY 071 DATA1 1E KEY 066 NEXT1 1F KEY 140 SPACE1 (BKSP) 20 KEY 100 SPACE 21 KEY 176 '. 22 KEY 177 ', 23 KEY 056 '+ 24 KEY 044 $ 25 KEY 045 % 26 KEY 012 " 27 KEY 053 '# 28 KEY 051 ( 29 KEY 173 ) 2A KEY 050 * 2B KEY 016 + 2C KEY 137 , 2D KEY 017 - 2E KEY 136 . 2F KEY 135 / 30 KEY 000 0 31 KEY 001 1 32 KEY 002 2 33 KEY 003 3 34 KEY 004 4 35 KEY 005 5 36 KEY 006 6 37 KEY 007 7 38 KEY 010 8 39 KEY 011 9 3A KEY 174 '; 3B KEY 134 ; 3C KEY 040 < 3D KEY 133 = 3E KEY 041 > 3F KEY 175 '/ * /--- BLOCK KEY 00 000 86/05/29 11.07 40 KEY 052 '" 41 KEY 141 A (UC) 42 KEY 142 B (UC) 43 KEY 143 C (UC) 44 KEY 144 D (UC) 45 KEY 145 E (UC) 46 KEY 146 F (UC) 47 KEY 147 G (UC) 48 KEY 150 H (UC) 49 KEY 151 I (UC) 4A KEY 152 J (UC) 4B KEY 153 K (UC) 4C KEY 154 L (UC) 4D KEY 155 M (UC) 4E KEY 156 N (UC) 4F KEY 157 O (UC) 50 KEY 160 P (UC) 51 KEY 161 Q (UC) 52 KEY 162 R (UC) 53 KEY 163 S (UC) 54 KEY 164 T (UC) 55 KEY 165 U (UC) 56 KEY 166 V (UC) 57 KEY 167 W (UC) 58 KEY 170 X (UC) 59 KEY 171 Y (UC) 5A KEY 172 Z (UC) 5B KEY 042 [ 5C KEY 055 ASSIGN1 5D KEY 043 ] 5E KEY 015 _ 5F KEY 046 '6 60 KEY 013 # 61 KEY 101 A (LC) 62 KEY 102 B (LC) 63 KEY 103 C (LC) 64 KEY 104 D (LC) 65 KEY 105 E (LC) 66 KEY 106 F (LC) 67 KEY 107 G (LC) 68 KEY 110 H (LC) 69 KEY 111 I (LC) 6A KEY 112 J (LC) 6B KEY 113 K (LC) 6C KEY 114 L (LC) 6D KEY 115 M (LC) 6E KEY 116 N (LC) 6F KEY 117 O (LC) 70 KEY 120 P (LC) 71 KEY 121 Q (LC) 72 KEY 122 R (LC) 73 KEY 123 S (LC) 74 KEY 124 T (LC) 75 KEY 125 U (LC) 76 KEY 126 V (LC) 77 KEY 127 W (LC) 78 KEY 130 X (LC) 79 KEY 131 Y (LC) 7A KEY 132 Z (LC) 7B KEY 024 MICRO 7C KEY 047 '7 7D KEY 034 SQUARE 7E KEY 057 '- 7F KEY 064 FONT QUAL * * /--- BLOCK NKY 00 000 86/05/29 11.05 NKY OVERLAY (ASCII TO PLATO NEW KEY TRANSLATION TABLE.) NKY SPACE 5,11 ** NKY - CONVERSION FROM ASCII TO PLATO KEYS * * ALL CHARACTERS ARRIVE IN REVERSE BIT ORDER * THIS TABLE IS ORDERED IN THIS MANNER ORG //KEYA NKY SUBR UJN NKYX EXIT KEYS BSSZ 200 * /--- BLOCK NKY 00 000 86/05/29 11.06 * NUL 01 KEY 032 STOP 02 KEY 030 BACK 03 KEY 033 COPY 04 KEY 021 SUB 05 KEY 072 STOP1 *06 ACK 07 KEY 022 ANS 08 KEY 023 ERASE 09 KEY 014 TAB 0A KEY 065 HELP1 0B KEY 025 HELP 0C KEY 035 LAB 0D KEY 026 NEXT 0E KEY 070 BACK1 0F KEY 075 LAB1 *10 DLE * DC1 12 KEY 031 DATA * DC3 14 KEY 062 TERM *15 NAK 16 KEY 073 COPY1 17 KEY 020 SUPER 18 KEY 067 EDIT1 19 KEY 063 ERASE1 1A KEY 027 EDIT *1B ESC 1C KEY 054 CR 1D KEY 071 DATA1 1E KEY 066 NEXT1 1F KEY 140 SPACE1 (BKSP) 20 KEY 100 SPACE 21 KEY 176 '. 22 KEY 177 ', 23 KEY 056 '+ 24 KEY 044 $ 25 KEY 045 % 26 KEY 012 " 27 KEY 047 '7 28 KEY 051 ( 29 KEY 173 ) 2A KEY 050 * 2B KEY 016 + 2C KEY 137 , 2D KEY 017 - 2E KEY 136 . 2F KEY 135 / 30 KEY 000 0 31 KEY 001 1 32 KEY 002 2 33 KEY 003 3 34 KEY 004 4 35 KEY 005 5 36 KEY 006 6 37 KEY 007 7 38 KEY 010 8 39 KEY 011 9 3A KEY 174 '; 3B KEY 134 ; 3C KEY 040 < 3D KEY 133 = 3E KEY 041 > 3F KEY 175 '/ * /--- BLOCK NKY 00 000 86/05/29 11.06 40 KEY 052 '" 41 KEY 141 A (UC) 42 KEY 142 B (UC) 43 KEY 143 C (UC) 44 KEY 144 D (UC) 45 KEY 145 E (UC) 46 KEY 146 F (UC) 47 KEY 147 G (UC) 48 KEY 150 H (UC) 49 KEY 151 I (UC) 4A KEY 152 J (UC) 4B KEY 153 K (UC) 4C KEY 154 L (UC) 4D KEY 155 M (UC) 4E KEY 156 N (UC) 4F KEY 157 O (UC) 50 KEY 160 P (UC) 51 KEY 161 Q (UC) 52 KEY 162 R (UC) 53 KEY 163 S (UC) 54 KEY 164 T (UC) 55 KEY 165 U (UC) 56 KEY 166 V (UC) 57 KEY 167 W (UC) 58 KEY 170 X (UC) 59 KEY 171 Y (UC) 5A KEY 172 Z (UC) 5B KEY 042 [ 5C KEY 055 ASSIGN1 5D KEY 043 ] 5E KEY 015 _ 5F KEY 046 '6 60 KEY 013 # 61 KEY 101 A (LC) 62 KEY 102 B (LC) 63 KEY 103 C (LC) 64 KEY 104 D (LC) 65 KEY 105 E (LC) 66 KEY 106 F (LC) 67 KEY 107 G (LC) 68 KEY 110 H (LC) 69 KEY 111 I (LC) 6A KEY 112 J (LC) 6B KEY 113 K (LC) 6C KEY 114 L (LC) 6D KEY 115 M (LC) 6E KEY 116 N (LC) 6F KEY 117 O (LC) 70 KEY 120 P (LC) 71 KEY 121 Q (LC) 72 KEY 122 R (LC) 73 KEY 123 S (LC) 74 KEY 124 T (LC) 75 KEY 125 U (LC) 76 KEY 126 V (LC) 77 KEY 127 W (LC) 78 KEY 130 X (LC) 79 KEY 131 Y (LC) 7A KEY 132 Z (LC) 7B KEY 024 MICRO 7C KEY 053 ^'I 7D KEY 034 SQUARE 7E KEY 057 '- 7F KEY 064 FONT END