ESMCP * /--- FILE TYPE = E * /--- BLOCK IDENT 00 000 79/10/16 12.59 IDENT ESM,ESM CONTROL EXTENDED SEMI-CONDUCTOR MEMORY ABS SST MA,T1 TITLE ESM - CONTROL EXTENDED SEMI-CONDUCTOR MEMORY. ENTRY ESM ENTRY RFL= SYSCOM B1 COMMENT CONTROL EXTENDED SEMI-CONDUCTOR MEMORY COMMENT COPYRIGHT CONTROL DATA CORP. 1978. SPACE 5,11 *** ESM - CONTROL ESM. * * ESM CONTROLS ESM - EXTENDED SEMI-CONDUCTOR MEMORY. * * FUNCTIONS INCLUDE * * ERROR LOG MONITORING / DISPLAYING. * RELOCATION MEMORY MODIFICATION / LOADING. SPACE 5 * SINGLE / DOUBLE BITS ERRORS ARE WRITTEN TO * THE NOS ERROR LOG AND THE PLATO DATASET *S0ESMERR*. * * FORMAT OF PLATO DATASET * * RECORD 1 / WORD 1 - *S0ESMERR* * RECORD 1 / WORD 2 - CURRENT RECORD TO WRITE TO * RECORD 1 / WORD 3 - NEXT WORD CURRENT RECORD * * REST OF DATASET - *PMSGL* WORDS / ERROR MESSAGE * * 320 WORDS RECORDS REQUIRED SPACE 5,11 * *MACREF* BACKSTITCHED FROM HIGHER LEVEL NOS. PURGMAC MACREF MACREF MACRO N QUAL MACROS N SET * QUAL * ENDM *** ESM CONTROL CARD. * * ESM(F=LFN1,NK) * * LFN1- FILE WHERE ESM RELOCATION MEMORY STORED. * DEFAULT - ESMRM/UI=377777. * NK - DO NOT REQUEST *K* DISPLAY. * INITIALIZE RELOCATION MEMORY ONLY. * CLEAR ERROR LOG. * MONITOR ERROR LOG FOR PARITY ERRORS. * /--- BLOCK MACROS 00 000 80/09/19 11.02 SPACE 5,11 *CALL COMCMAC *CALL COMCDCM *CALL PLASMRC *CALL PLASESM **** ASSEMBLY CONSTANTS. BUFL EQU 301B BUFFER LENGTH ESML EQU 130 LENGTH OF RELOCATION FILE ERL EQU 64 LENGTH OF MEMORY ERROR LOG BLKLTH EQU 320 PLATO BLOCK LENGTH DSBLKS EQU 7 BLOCKS / PART RECX EQU 0 ECS BUFFER ADDRESS DSET MICRO 1,, S0ESMERR PLATO DATA SET NAME MSGL EQU 7 MESSAGE LENGTH IN ERROR LOG PMSGL EQU MSGL+2 MESSAGE LENGTH IN DATA SET EFL EQU BLKLTH ECS FIELD LENGTH **** MACROS SPACE 5,11 *** DSL - DEFINE DATA FOR DISPLAY. * * DSL X,Y,A * * X - X LINE NUMBER. * Y - Y CHARACTER POSITION. * A - DATA TO DISPLAY. NOREF B,C,D PURGMAC DSL DSL MACRO X,Y,A B MICRO 1,6,$A$ C MICRO 7,,$A$ D SET Y D+1 VFD 12/6000B+X*8,12/7756B-D*10,36/6H"B" DATA H$"C"$ ENDM ** DEFINE SINGLE WORD ESM TRANSFERS PURGDEF RXX RXX OPDEF I,J + VFD 9/014B,3/I,3/J,15/0 ENDM PURGDEF WXX WXX OPDEF I,J + VFD 9/015B,3/I,3/J,15/0 ENDM * /--- BLOCK MAIN 00 000 79/11/06 19.41 TITLE MAIN PROGRAM. ORG 120B ESM SB1 1 (B1) = 1 SA1 ACTR GET ARGUMENT COUNT SA4 ARGR GET FIRST ARGUMENT SB5 ARGS (B5) = ARGUMENT TABLE SB4 X1 RJ ARG PROCESS ARGUMENTS ZR X1,ESM2 IF NO ERRORS ESM1 MESSAGE (=C* ARGUMENT ERRORS.*) ABORT ESM2 SA1 ARGF CHECK IF *F* PARAMETER USED NG X1,ESM4 IF *F* PRESENT ESM3 BSS 0 GETPFP PFA SAVE PACKNAM, USERNUM, USERIND SETUI 377777B GET FILE FROM SYSTEM USER INDEX GET RF ESM4 SA1 KD CHECK IF *K* DISPLAY REQUESTED NZ X1,NKO IF *NK* PARAMETER PRESENT EQ PKD * TERMINATE PROGRAM * (B2) = 0 IF NORMAL TERMINATION * MESSAGE IF ABNORMAL CONDITION. ESM5 NZ B2,ESM7 IF NOT NORMAL TERMINATION SA1 KD CHECK IF *NK* OPTION NZ X1,MEL IF SO MONITOR ERROR LOG SA1 ARGF CHECK IF MUST RESET UI/PACKNAM NG X1,ESM6 IF *F* PRESENT SA3 PFA READ GET,SET/PFP 1ST PARM WORD MX6 -3 BX6 -X6+X3 OR IN SET OF 3 FLAG BITS SA6 A3 RESET 1ST PARAMETER WORD SETPFP A3 RESET PACKNAM, USERNUM, USERIND ESM6 ENDRUN TERMINATE PROGRAM ESM7 MESSAGE B2 ISSUE DAYFILE MESSAGE MOVE 2,B2,KERR MOVE MESSAGE SA1 KD CHECK IF IN *K* DISPLAY BX6 X6-X6 SA6 A1 ZR X1,PKD2 IF IN *K* DISPLAY MOVE KDL,CKD,LSA CLEAR LEFT SCREEN MOVE HLPL,HLPA,RSA EQ PKD1 REQUEST *K* DISPLAY * /--- BLOCK MEL 00 000 79/10/15 18.21 MEL TITLE MONITOR ERROR LOG *** MEL - MONITOR ERROR LOG. MEL RJ RSP SX0 ELR READ ERROR LOG RJ FNC SX0 REL RJ FNC RJ UEL * PROCESS DOUBLE BIT ERRORS SB5 15 SX5 B0 (X5) = COUNT LENGTH OF LOG MEL1 SA1 ERB1+B5 PL X1,MEL2 IF NO DATA IN THIS WORD SB2 ERB2 SEARCH FOR DOUBLE BIT ERROR SB3 ERL SX5 X5+B1 COUNT THIS ENTRY RJ STB SEARCH TABLE ZR X6,MEL2 IF FOUND SA2 FEMC RJ FEM FORMAT ERROR MESSAGE RJ WEM WRITE ERROR MESSAGE MEL2 SB5 B5-B1 GE B5,MEL1 IF MORE ENTRIES * PROCESS SINGLE BIT ERRORS SB5 15 MEL3 SA1 ERB1+16+B5 MX0 12 BX2 X0*X1 ZR X2,MEL4 IF NO DATA IN THIS WORD SB2 ERB3 SEARCH FOR SINGLE BIT ERROR SB3 ERL SX5 X5+100B COUNT THIS ENTRY RJ STB ZR X6,MEL4 IF FOUND SA2 FEMB RJ FEM FORMAT ERROR MESSAGE RJ WEM WRITE ERROR MESSAGE MEL4 SB5 B5-B1 GE B5,MEL3 IF MORE ENTRIES RJ CPF CLOSE PLATO FILE * CHECK IF TIME TO CLEAR ERROR LOG LX5 12 SX6 X5 SX6 X6-160000B PL X6,MEL5 IF OVER 14 DOUBLE ERRORS AX5 12+6 SX6 X5-15 NG X6,MEL6 IF UNDER 15 SINGLE ERRORS MEL5 RJ RSP SX0 CEL CLEAR ERROR LOG RJ FNC SX0 REL RJ FNC * ROLLOUT FOR A WHILE MEL6 RJ CPF CLOSE PLATO FILE IS NEEDED * IF OPERATOR ROLLIN, PROCESS *K* DISPLAY RTIME T1 ROLLOUT MELA SA5 T1 RTIME T1 SA1 T1 AX5 36 (X5) = SECONDS AT ROLLOUT AX1 36 (X1) = CURRENT SECONDS SA2 MELA (X2) = SECONDS TO ROLL OUT IX1 X1-X5 (X1) = SECONDS ACTUALLY ROLLED IX1 X2-X1 SX1 X1-2 NG X1,MEL IF TIMED ROLLIN SA1 =0LERRORS. DISPLAY ERROR LOG BX6 X1 SA6 KB EQ PKD PROCESS *K* DISPLAY MELA CON 5*60 ROLLOUT FOR 5 MINUTES * /--- BLOCK PKD 00 000 79/11/13 13.59 PKD TITLE PROCESS *K* DISPLAY ** PKD - PROCESS *K* DISPLAY. PKD MOVE KDL,CKD,LSA CLEAR LEFT SCREEN MOVE HLPL,HLPA,RSA REWIND RF READ EXISTING RELOCATION FILE READ RF READW RF,SMB,ESML NZ X1,PKD1 IF NOT ENOUGH DATA SA1 SMB CHECK HEADER WORD SA2 ESMH BX1 X1-X2 NZ X1,PKD1 IF IN ERROR RJ FKD FORMAT *K* DISPLAY PKD1 CONSOLE KR PKD2 SA5 KB CHECK IF ANY DATA TYPED IN NZ X5,PKD3 IF DATA RECALL EQ PKD2 PKD3 MOVE 5,KB,KDT MOVE INPUT TO DISPLAY SA1 =10H BX7 X1 SA7 KERR CLEAR ERROR FLAG SA7 A7+B1 SA5 KB SB7 ARGR UNPACK CONTROL CARD RJ UPC SX7 B6-B1 SAVE PARAMETER COUNT SA7 T1 BX7 X7-X7 CLEAR KEYBOARD BUFFER SB2 7 PKD4 SA7 KB+B2 SB2 B2-B1 GE B2,PKD4 ZR X6,PKD6 IF NO ERROR PKD5 SA5 =0HERROR. BX6 X5 SA6 KERR EQ PKD2 GET NEXT INPUT PKD6 SA1 ARGR GET FUNCTION CODE SA2 PKDA MX0 42 PKD7 BX6 X1-X2 BX6 X0*X6 ZR X6,PKD8 IF A MATCH SA2 A2+B1 NZ X2,PKD7 IF MORE ARGUMENTS EQ PKD5 PKD8 SB2 X2 GET PROCESSOR ADDDRESS JP B2 PROCESS FUNCTION * COMMON RETURN POINT FROM PROCESSORS PKDX SA5 =0HCOMPLETE. BX6 X5 SA6 KERR SET FUNCTION COMPLETE EQ PKD2 WAIT FOR NEXT COMMAND PKDA VFD 42/0LCLEAR,18/CLE VFD 42/0LCONFIG,18/CON VFD 42/0LEND,18/END VFD 42/0LERRORS,18/ERD VFD 42/0LFLAW,18/FLW VFD 42/0LGO,18/GO VFD 42/0LHELP,18/HLP VFD 42/0LINIT,18/INI VFD 42/0LLOAD,18/LOA VFD 42/0LMA,18/PMA VFD 42/0LPA,18/PPA VFD 42/0LRELOC,18/DRM VFD 42/0LSAVE,18/SAV VFD 42/0LSET,18/SET VFD 42/0LSTOP,18/STP VFD 42/0LZERO,18/ZER CON 0 * /--- BLOCK CLE 00 000 78/02/13 11.21 TITLE FUNCTION PROCESSORS. CLE SPACE 5,11 *** CLE - CLEAR ERROR LOG. CLE RJ RSP RESERVE SIDE-DOOR PORT SX0 CLEA SEND CLEAR FUNCTION RJ FNC SX0 REL RELEASE SIDE-DOOR PORT RJ FNC EQ PKDX CLEA CON RSEF RESET ERROR LOG * /--- BLOCK CONFIG 00 000 79/10/30 11.38 CONFIG SPACE 5,11 ** CON - CONFIGURE ESM. * * THE CHIP TYPE OF EACH BANK AS WELL AS THE * NUMBER OF BANKS IS DETERMINED. * * CONFIG. CON SA1 ESMH SET HEADER FOR FILE BX6 X1 SA6 SMB RJ RSP ASSIGN SIDE-DOOR PORT SX6 B0+ SET UP RELOCATION MEMORY (16M) SB2 128 CON1 SA6 SMB+2+X6 SX6 X6+B1 SB2 B2-B1 GT B2,CON1 STORE REST OF MEMORY BX7 X7-X7 CLEAR LAST ENTRY SA7 SMB+2+X6 RJ FRM FORMAT MEMORY SX0 RMB LOAD RELOCATION MEMORY RJ FNC SX6 177B SET MAXIMUM ADDRESS LX6 48 SX0 MA SA6 X0+B1 RJ FNC SX0 SXP SET UP EXCHANGE PACKAGE RJ FNC SX0 REL RELEASE SIDE-DOOR PORT RJ FNC BX0 X0-X0 SAVE WORD ZERO SA0 T1 SAVE ADDRESS ZERO IN (T1) + RE 1 RJ ECSPRTY * /--- BLOCK CONFIG 00 000 79/10/29 17.46 * WRITE ADDRESES TO ESM AND READ BACK SX0 B0 (X0) = ESM ADDRESS SB2 B0 (B2) = INDEX INTO MEMORY SX6 B1 (X6) = DATA TO WRITE SA1 CONA (X1) = 512K INCREMENT SA0 CONB (A0) = LOCATION TO READ/WRITE FROM/TO CON2 BX2 X0 (X2) = BEGINNING ADDRESS BX3 X6 (X3) = BEGINNING DATA SA6 A0 PREPARE TO WRITE (X6) TO (X0) + WE 1 EQ CON3 SX7 1000B IX0 X0+X7 IX6 X6+X7 SA6 A0 PREPARE TO WRITE (X6) TO (X0) + WE 1 EQ CON3 BX4 X6 (X4) = ENDING DATA WRITTEN BX0 X2 RESET X0 BX6 X3 RESET X6 * READ DATA WRITTEN TO ESM AND VERIFY + RE 1 EQ CON3 SA5 A0 BX7 X5 BX5 X7-X6 CHECK IF CORRECT DATA NZ X5,CON4 IF MISMATCH SX7 1000B IX0 X0+X7 IX6 X6+X7 + RE 1 EQ CON3 SA5 A0 BX7 X5 BX5 X7-X6 CHECK IF CORRECT DATA NZ X5,CON4 IF MISMATCH * SKIP TO NEXT BANK CON2.1 IX0 X2+X1 INCREMENT ADDRESSES BY 512K IX6 X3+X1 SB2 B2+4 INCREMENT RELOCATION MEMORY BX2 X0 CHECK IF DONE LX2 59-24 PL X2,CON2 CONTINUE CHECKING * END OF MEMORY REACHED SX6 B2-1 SET MAXIMUM ADDRESS SX7 B2-1 LX7 12 BX6 X6+X7 SA6 SMB+1 RJ FKD FORMAT *K* DISPLAY RJ LRM LOAD RELOCATION MEMORY SA0 T1 RE-WRITE WORD ZERO BX0 X0-X0 WE 1 + SX0 CXP CLEAR EXCHANGE PACKAGE RJ FNC EQ PKDX * /--- BLOCK CONFIG 00 000 79/10/29 17.24 * ESM ABORT SIGNAL * DELETE THIS 512K BANK CON3 SA4 SMB+2+B2+4 MOVE MEMORY UP FOUR WORDS CON3.1 BX7 X4 SA7 A4-4 ZR X4,CON3.2 IF END OF MEMORY SA4 A4+B1 EQ CON3.1 CON3.2 SA7 A7+B1 CLEAR NEXT FOUR WORDS SA7 A7+B1 SA7 A7+B1 SA7 A7+B1 SB2 B2-4 EQ CON2.1 CONTINUE UNTIL END OF MEMORY * DATA DID NOT MATCH ON READ CON4 BX6 X2-X0 CHECK IF AT BEGINNING OF BANK NZ X6,CON7 IF NOT AT BEGINNING BANK ZR X7,CON3 IF ZERO WORD READ BX6 X7-X4 CHECK IF HIGH ADDRESS READ NZ X6,CON7 IF NOT HIGH ADDRESS * FOUND A 16K BOARD * MOVE RELOCATION MEMORY UP TO ACCOUNT FOR IT SA4 SMB+2+B2 SET 16K CHIP BIT SX7 1S7 BX7 X7+X4 SA7 A4 SA4 A4+4 MOVE RELOCATION MEMORY UP 3 CON5 BX7 X4 SA7 A4-3 ZR X4,CON6 IF END OF MEMORY SA4 A4+B1 EQ CON5 CON6 SA7 A7+B1 CLEAR NEXT 3 WORDS SA7 A7+B1 SA7 A7+B1 SB2 B2-3 EQ CON2.1 * UNKNOWN ERROR ENCOUNTERED CON7 BX6 X6-X6 SA6 SMB+1 SA6 A6+B1 SA0 T1 RE-WRITE WORD ZERO BX0 X0-X0 WE 1 + SX0 CXP CLEAR EXCHANGE PACKAGE RJ FNC EQ PKD5 SEND ERROR MESSAGE CONA CON 512S10 512K CONB DATA 0 * /--- BLOCK DRM/END 00 000 79/11/12 20.14 DRM SPACE 5,11 *** DRM - DISPLAY RELOCATION MEMORY. * * RELOC. DRM RJ FKD FORMAT *K* DISPLAY EQ PKDX EXIT END SPACE 5,11 *** END - TERMINATE WITHOUT LOADING RELOCATION * MEMORY, BUT SAVE ON FILE * * END. END RJ SRM SAVE RELOCATION MEMORY EQ GO1 TERMINATE * /--- BLOCK ERD 00 000 79/10/22 20.49 ERD SPACE 5,11 *** ERD - DISPLAY ERROR LOG. ERD RJ RSP ASSIGN SIDE-DOOR PORT SX0 SBR STATUS BIT READ RJ FNC SX0 ELR ERROR LOG READ FUNCTION RJ FNC SX0 REL RELEASE SIDE-DOOR PORT RJ FNC RJ UEL UNPACK ERROR LOG MOVE KDL,CKD,LSA CLEAR LEFT SCREEN MOVE ERDL,ERDB,LSH MOVE HEADER LINE MOVE ERDL,ERDC,LSH+ERDL+16*MSGL MOVE HLPL,HLPA,RSA SET HELP TO RIGHT SCREEN * PROCESS DOUBLE BIT ERRORS SB6 B0 SB5 15 ERD1 SA1 ERB1+B5 PL X1,ERD2 IF NO DATA IN THIS WORD SA2 ERDD SX6 B6+28 COMPUTE Y = 7756B-10*(I+28) SX3 -10 IX6 X6*X3 SX6 X6+7756B LX6 36 BX2 X2+X6 SET Y AXIS RJ FEM FORMAT ERROR MESSAGE SX2 MSGL SX3 B6+16 IX3 X3*X2 MOVE MSGL,FEMA,LSH+2*ERDL+X3 SB6 B6+B1 ERD2 SB5 B5-B1 GE B5,ERD1 IF MORE ENTRIES * PROCESS SINGLE BIT ERRORS SB6 B0 SB5 15 MX0 12 ERD3 SA1 ERB1+16+B5 BX2 X0*X1 ZR X2,ERD4 IF NO DATA IN THIS WORD SA2 ERDA SX6 B6+10 COMPUTE Y = 7756B-10*(I+10) SX3 -10 IX6 X6*X3 SX6 X6+7756B LX6 36 BX2 X2+X6 SET Y AXIS RJ FEM FORMAT ERROR MESSAGE SX2 MSGL SX3 B6 IX3 X3*X2 MOVE MSGL,FEMA,LSH+ERDL+X3 SB6 B6+B1 MX0 12 ERD4 SB5 B5-B1 GE B5,ERD3 IF MORE ENTRIES EQ PKDX GET NEXT COMMAND ERDA VFD 12/6000B,12/0,12/6000B,12/6000B,12/6000B DATA C* 0 00 0 0 00 00 00-00 ,000* ERDB DSL 24,8,(SINGLE BIT ERRORS) DSL 0,,( BSU BANK SCAN CS BIT CABINET MODULE , CHIP) ERDL EQU *-ERDB D SET D+16 ERDC DSL 24,,(DOUBLE BIT ERRORS) DSL 0,,( BSU BANK SCAN CS ADDR CABINET MODULE , ) ERDD VFD 12/6000B,12/0,12/6000B,12/6000B,12/6000B DATA C* 0 00 0 0 00000 00 00-00 , * * /--- BLOCK FLW 00 000 78/08/30 12.39 FLW SPACE 5,11 *** FLW - FLAW / CLEAR FLAW IN ESM. * * FLAW,BSU,BANK. FLW SA1 T1 GET ARGUMENT COUNT SA5 ARGR+1 ZR X1,PKD5 IF NO PARAMETERS BX6 X6-X6 SX1 X1-1 ZR X1,FLW1 IF NO BSU ASSUME = 0 SB7 B0 MX0 42 BX5 X0*X5 RJ DXB CONVERT BSU NZ X4,PKD5 IF ERROR SX1 X6-2 PL X1,PKD5 IF TOO LARGE SA5 A5+B1 FLW1 SB6 X6 MX0 42 BX5 X0*X5 SB7 B0 RJ DXB CONVERT BANK NZ X4,PKD5 IF ERROR SX1 X6-16 PL X1,PKD5 IF TOO LARGE SX7 B6 MERGE BSU AND BANK LX7 4 BX6 X6+X7 (X6) = BSU /BANK TO FLAW LX6 2 POSITION TO RELOCATION SLOTS SA1 SMB+1 SEARCH FOR THIS BANK MX0 -12 AX1 12 BX1 -X0*X1 SB2 X1 (B2) = NUMBER PHYSICAL BANKS SX3 1S9 (X3) = FLAW BIT POSITION SX0 174B (X0) = MASK FOR BSU/BANK FLW2 SA1 A1+B1 GET NEXT RELOCATION ENTRY BX2 X0*X1 BX2 X2-X6 NZ X2,FLW3 IF THIS ENTRY IS NOT THIS BANK BX7 X3-X1 TOGGLE FLAW BIT SA7 A1 FLW3 SB2 B2-B1 GT B2,FLW2 PROCESS REST OF ENTRIES RJ SOR SORT RELOCATION MEMORY RJ FKD FORMAT *K* DISPLAY EQ PKDX GET NEXT COMMAND * /--- BLOCK GO/HLP/IN 00 000 79/10/10 11.17 GO SPACE 5,11 *** GO - LOAD AND SAVE RELOCATION MEMORY. * * GO. GO RJ LRM LOAD RELOCATIN MEMORY RJ SRM SAVE RELOCATION MEMORY GO1 MESSAGE (=C* ESM COMPLETE.*) SB2 B0 SET NORMAL TERMINATION EQ ESM5 HLP SPACE 5,11 *** HLP - DISPLAY HELP MESSAGES TO DESCRIBE COMMANDS * * HELP. HLP MOVE KDL,CKD,RSA CLEAR RIGHT SCREEN MOVE HLPL,HLPA,RSA SET UP HELP SCREEN SA1 =10HSEE RIGHT SA2 =10HSCREEN. BX6 X1 BX7 X2 SA6 KERR SA7 A6+B1 EQ PKD2 INI SPACE 5,11 *** INI - INITIALIZE RELOCATION MEMORY TABLE * * INIT. INI SA1 ESMH SB2 128 BX6 X1 SX7 B2 SA6 SMB SET HEADER WORD LX7 12 SET NUMBER OF PHYSICAL BANKS SA7 A6+B1 SET NUMBER OF BANKS BX7 X7-X7 INI1 SA7 A7+B1 SET NEXT RELOCATION ENTRY SB2 B2-B1 SX7 X7+B1 GE B2,INI1 IF MORE ENTRIES RJ FKD FORMAT K DISPLAY EQ PKDX GET NEXT COMMAND * /--- BLOCK LOA/NKO 00 000 79/10/10 11.17 LOA SPACE 5,11 *** LOA - LOAD RELOCATION MEMORY. * * LOAD. LOA RJ LRM LOAD MEMORY EQ PKDX GET NEXT COMMAND NKO SPACE 5,11 *** NKO - NO *K* DISPLAY OPTION. * * THE RELOCATION MEMORY FILE IS READ * AND STORE IN ESM RELOCATION MEMORY. NKO NORERUN REWIND RF READ RF READW RF,SMB,ESML READ RELOCATION MEMORY NZ X1,NKO1 IF NOT ENOUGH DATA SA1 SMB CHECK HEADER WORD SA2 ESMH BX1 X1-X2 ZR X1,NKO2 IF HEADER CHECKS NKO1 SB2 =C* FILE FORMAT ERROR.* EQ ESM5 NKO2 RJ LRM LOAD RELOCATION MEMORY * CLEAR ERROR LOG RJ RSP RESERVE SIDE-DOOR PORT SX0 CLEA SEND CLEAR FUNCTION RJ FNC SX0 REL RELEASE SIDE-DOOR PORT RJ FNC MESSAGE (=C* LOAD COMPLETE.*) EQ MEL MONITOR ERROR LOG * /--- BLOCK PMA/PPA/SA 00 000 78/02/13 11.22 PMA SPACE 5,11 *** PMA - PROCESS MAXIMUM ADDRESS * * MA,ADDRESS. PMA MX0 42 SA1 ARGR+1 BX5 X1*X0 SB7 B0 RJ DXB CONVERT NUMBER TO BINARY NZ X4,PKD5 IF ERROR SA2 SMB+1 CHECK IF GREATER THAN BANKS MX0 -12 BX1 X2 AX1 12 BX1 -X0*X1 IX1 X1-X6 NG X1,PKD5 IF GREATER THAN PHYSICAL BANKS BX1 X0*X2 BX6 X1+X6 SA6 A2 RJ FKD FORMAT *K* DISPLAY EQ PKDX COMPLETE PPA SPACE 5,11 *** PPA - PROCESS MAXIMUM PHYSICAL ADDRESS. * * PA,ADDRESS. PPA MX0 42 SA1 ARGR+1 BX5 X1*X0 SB7 B0 RJ DXB CONVERT NUMBER TO BINARY NZ X4,PKD5 IF ERROR SA1 SMB+1 CHECK IF GREATER THAN 127 MX0 -7 BX2 X0*X6 NZ X2,PKD5 IF TOO LARGE MX0 -12 LX1 -12 BX1 X0*X1 BX7 X6+X1 INSERT NEW MAX BANK LX7 12 BX1 -X0*X7 GET MAXIMUM LOGICAL ADDRESS IX2 X6-X1 PL X2,PPA1 IF LOGICAL .LE. PHYSICAL BX7 X0*X7 SET LOGICAL = PHYSICAL MAX BX7 X7+X6 PPA1 SA7 A1 RJ FKD FORMAT *K* DISPLAY EQ PKDX COMPLETE SAV SPACE 5,11 *** SAV - SAVE NEW COPY OF RELOCATION MEMORY * * SAVE. SAV RJ SRM SAVE RELOCATION MEMORY EQ PKDX EXIT * /--- BLOCK SET/STP 00 000 79/11/12 20.19 SET SPACE 5,11 *** SET - SET A LOGICAL ADDRESS TO A PHYSICAL ADDRESS * * SET,LA=LOGICAL ADDRESS,PA=PHYSICAL ADDRESS. SET SB5 SETA (B5) = ARGUMENT TABLE SA4 ARGR+1 (X4) = ARGUMENTS SA1 T1 BX6 X6-X6 SB4 X1 SA6 SETB CLEAR ARGUMENTS SA6 A6+B1 RJ ARG NZ X1,PKD5 IF ERROR SA5 SETB GET *LA* ZR X5,PKD5 SB7 B0 RJ DXB CONVERT TO BINARY NZ X4,PKD5 SB6 X6 SAVE VALUE SX6 X6-128 PL X6,PKD5 IF TOO LARGE SA5 A5+B1 GET *PA* ZR X5,PKD5 IF NONE SB7 B0 RJ DXB CONVERT TO BINARY SX1 X6-512 PL X1,PKD5 IF TOO LARGE SA6 SMB+2+B6 RJ FKD FORMAT*K* DISPLAY EQ PKDX SETA BSS 0 VFD 12/0LLA,18/=0,12/4000B,18/SETB VFD 12/0LPA,18/=0,12/4000B,18/SETC DATA 0 SETB CON 0 *LA* PARAMETER SETC CON 0 *PA* PARAMETER STP SPACE 5,11 *** STP - TERMINATE PROGRAM WITHOUT SAVING CHANGES. * * STOP. STP EQU GO1 * /--- BLOCK ZER 00 000 79/11/13 14.04 ZER SPACE 5,11 *** ZER - ZERO ESM. * * ZERO. * * WRITE ZEROS TO ALL OF ESM TO CLEAR PARITY ERRORS. ZER SX0 SXP SET UP EXCHANGE PACKAGE RJ FNC * ZERO 100B WORD CM BUFFER SA0 RECD SB4 100B-1 BX6 X6-X6 ZER1 SA6 A0+B4 SB4 B4-B1 GE B4,ZER1 IF MORE WORDS TO ZERO * COMPUTE LWA TO ZERO SA1 SMB+1 MX0 -12 BX1 -X0*X1 (X1) = MAXIMUM LOGICAL ADDRESS SA2 ZERA (X2) = 128K IX2 X1*X2 (X2) = LWA + 1 TO ZERO BX0 X0-X0 SX1 100B * ZERO ALL OF MEMORY ZER2 WE 100B EQ ZER3 IX0 X0+X1 BX6 X0-X2 NZ X6,ZER2 IF MORE TO ZERO SX0 CXP CLEAR EXCHANGE PACKAGE RJ FNC EQ PKDX EXIT * PROCESS WRITE ABORT ZER3 BX1 X0 RJ COD SA1 ZERB BX6 X1 BX7 X4 SA6 KERR SA7 A6+B1 SX0 CXP CLEAR EXCHANGE PACKAGE RJ FNC EQ PKD2 EXIT ZERA CON 128S10 128K ZERB DATA 10HABORT AT * /--- BLOCK CPF 00 000 79/10/15 19.16 TITLE SUBROUTINES. CPF SPACE 5,11 *** CPF - CLOSE PLATO FILE * * IF PLATO FILE IS ATTACHED, CLOSE FILE * AND RELEASE ECS. CPF SUBR SA1 WPFG CHECK IF FILE OPEN ZR X1,CPFX IF NOT OPEN NG X1,CPF1 IF ONLY ECS GOTTEN SB2 WPFE CLOSE FILE SA1 WPFH SET PLATO FILE NAME BX6 X1 SA6 B2+B1 SX0 B0 RJ MAS CPF1 SX6 B0 RELEASE ECS SB2 WPFA SA6 B2+B1 RJ MAS BX6 X6-X6 SHOW FILE CLOSED SA6 WPFG EQ CPFX EXIT * /--- BLOCK FEM 00 000 79/10/22 20.01 FEM SPACE 5,11 *** FEM - FORMAT ERROR MESSAGE * * FORMAT ERROR MESSAGE FOR THE ERROR LOG * * ENTRY - (X1) - ERROR * (A2) - MESSAGE SKELETON ADDRESS * * EXIT - (FEMA) - FORMATTED ERROR MESSAGE FEM SUBR BX0 X1 (X0) = ERROR LOG ENTRY BX6 X2 SAVE FIRST WORD OF MESSAGE SA6 FEMA SET ERROR TYPE SA2 A2+B1 NG X0,FEM3 IF DOUBLE BIT ERROR * /--- BLOCK FEM 00 000 79/10/22 20.02 * PROCESS SINGLE BIT ERROR MX6 -1 BX1 X0 AX1 12 GET BSU BX1 -X6*X1 LX1 18 IX6 X1+X2 SA6 A6+B1 BX1 X0 MX6 -4 AX1 5 GET BANK BX1 -X6*X1 SX1 X1+100B RJ COD SA2 A2+B1 MX7 -12 LX6 36 LX7 36 BX2 X2*X7 BX6 -X7*X6 BX6 X6+X2 MX1 -3 SET SCAN BX1 -X1*X0 IX6 X1+X6 SA6 A6+B1 SA2 A2+B1 BX1 X0 GET CHIP SELECT AX1 3 MX6 -2 BX1 -X6*X1 LX1 36 IX2 X1+X2 BX1 X0 GET SYNDRONE BITS MX6 -8 AX1 13 BX6 -X6*X1 SA3 FEMD+X6 CONVERT SYNDROME TO BIT MX6 -12 BX3 -X6*X3 BX2 X2*X6 BX6 X2+X3 SA6 A6+B1 SA2 A2+B1 BX1 X0 GET CABINET MX6 -4 AX1 5 BX6 -X6*X1 SA3 FEME+X6 BX1 X0 LX1 59-12 PL X1,FEM1 IF BSU 0 AX3 12 FEM1 MX6 -12 LX6 24 LX3 24 BX2 X6*X2 BX3 -X6*X3 BX6 X3+X2 SA6 A6+B1 SA2 A2+B1 BX1 X0 GET MODULE (BANK) AX1 5 MX6 -4 BX6 -X6*X1 SA3 FEMF+X6 MX6 -12 LX3 30 LX6 30 BX2 X6*X2 BX2 X3+X2 BX1 X0 GET MODULE (SCAN) MX6 -3 BX6 -X6*X1 SA3 FEMG+X6 MX6 -12 LX3 12 LX6 12 BX2 X6*X2 BX6 X2+X3 SA6 A6+B1 SA2 A2+B1 BX1 X0 AX1 13 GET CHIP (SYNDROME) MX6 -8 BX6 -X6*X1 SA3 FEMD+X6 MX6 -18 AX3 18 BX1 X0 LX1 59-4 PL X1,FEM2 IF CHIP SELECT 0 - 1 AX3 18 FEM2 LX6 24 LX3 24 BX2 X6*X2 BX3 -X6*X3 BX6 X2+X3 SA6 A6+B1 EQ FEM5 * /--- BLOCK FEM 00 000 79/10/22 20.40 * PROCESS DOUBLE BIT ERROR FEM3 MX6 -1 GET BSU BX1 X0 AX1 22 BX1 -X6*X1 LX1 18 IX6 X1+X2 SA6 A6+B1 BX1 X0 MX6 -4 GET BANK AX1 18 BX1 -X6*X1 SX1 X1+100B RJ COD SA2 A2+B1 MX7 -12 LX6 36 LX7 36 BX2 X2*X7 BX6 -X7*X6 BX6 X6+X2 MX1 -3 SET SCAN BX1 -X1*X0 IX6 X1+X6 SA6 A6+B1 BX1 X0 GET REST OF ADDRESS MX2 -13 AX1 3 BX1 -X2*X1 SX1 X1+100000B RJ COD SA2 A2+B1 MX3 30 BX6 -X3*X6 BX2 X2*X3 BX2 X2+X6 BX1 X0 GET CHIP SELECT AX1 16 MX3 -2 BX1 -X3*X1 LX1 36 IX6 X1+X2 SA6 A6+B1 SA2 A2+B1 BX1 X0 GET CABINET MX6 -4 AX1 18 BX6 -X6*X1 SA3 FEME+X6 BX1 X0 LX1 59-22 PL X1,FEM4 IF BSU 0 AX3 12 FEM4 MX6 -12 LX6 24 LX3 24 BX2 X6*X2 BX3 -X6*X3 BX6 X3+X2 SA6 A6+B1 SA2 A2+B1 BX1 X0 GET MODULE (BANK) AX1 5 MX6 -4 BX6 -X6*X1 SA3 FEMF+X6 MX6 -12 LX3 30 LX6 30 BX2 X6*X2 BX2 X3+X2 BX1 X0 GET MODULE (SCAN) MX6 -3 BX6 -X6*X1 SA3 FEMG+X6 MX6 -12 LX3 12 LX6 12 BX2 X6*X2 BX6 X2+X3 SA6 A6+B1 * /--- BLOCK FEM 00 000 79/10/31 12.39 * MOVE REST OF MESSAGE FEM5 MX1 -12 MOVE REST OF MESSAGE BX6 -X1*X6 ZR X6,FEMX IF END OF MESSAGE SA2 A2+B1 BX6 X2 SA6 A6+B1 MOVE NEXT WORD EQ FEM5 DATA 0 DATE DATA 0 CLOCK FEMA BSSZ MSGL MESSAGE BUFFER FEMB DATA C*ESM SNGL ERR,BSU0,BANK00,SCAN0,CS0,BIT00 CAB00,MODULE ,00-00,CHIP000.* FEMC DATA C*ESM DBLE ERR,BSU0,BANK00,SCAN0,CS0,00000 CAB00,MODULE ,00-00. * ** SYN - GENERATE SYNDROME TO BIT CONVERSION * * SYN BIT * * INDEXED BY SYNDROME BITS * * 6/0, 18/CHIP1, 18/CHIP2, 18/BIT NUMBER * * CHIP1 - CHIP LOCATION FOR CHIP SELECT 2 - 3 * CHIP2 - CHIP LOCATION FOR CHIP SELECT 0 - 1 NOREF .1,.2,.3,.4,.5 SYN MACRO B .1 IFC NE,$B$$ .2 SET B/4 .3 SET B-.2*4 .4 DECMIC .2,2 .5 DECMIC B,2 .6 MICRO .3+1,1, KHFD .7 MICRO .3+1,1, JGEC VFD 6/0,6/1R".6",12/2R".4",6/1R".7",12/2R".4",18/2R".5" .1 ELSE VFD 6/0,18/3R ,18/3R ,18/2RMB .1 ENDIF ENDM * /--- BLOCK FEM/SYN 00 000 79/10/19 14.01 FEMD BSS 0 SYNDROME TO BIT CONVERSION LOC 0 SYN SYN 64 SYN 65 SYN SYN 66 SYN SYN SYN 40 SYN 67 SYN SYN SYN 48 SYN SYN 56 SYN 32 SYN SYN 68 SYN SYN SYN SYN SYN SYN SYN SYN SYN SYN SYN SYN SYN SYN SYN SYN 69 SYN SYN SYN SYN SYN SYN SYN SYN SYN SYN SYN SYN SYN SYN SYN SYN SYN SYN SYN SYN SYN SYN SYN 43 SYN SYN SYN SYN 51 SYN SYN 59 SYN 35 SYN SYN 70 SYN SYN SYN SYN SYN SYN SYN SYN SYN SYN SYN SYN SYN SYN SYN SYN SYN SYN SYN SYN SYN SYN SYN 45 SYN SYN SYN SYN 53 SYN SYN 61 SYN 37 SYN SYN SYN SYN SYN SYN SYN SYN SYN 46 SYN SYN SYN SYN 54 SYN SYN 62 SYN 38 SYN SYN 24 SYN SYN SYN 27 SYN SYN 29 SYN 30 SYN SYN SYN 25 SYN 26 SYN SYN 28 SYN SYN SYN 31 * /--- BLOCK FEM/SYN 00 000 79/10/19 14.07 SYN 71 SYN SYN SYN SYN SYN SYN SYN SYN SYN SYN SYN SYN SYN SYN SYN SYN SYN SYN SYN SYN SYN SYN SYN 41 SYN SYN SYN SYN 49 SYN SYN 57 SYN 33 SYN SYN SYN SYN SYN SYN SYN SYN SYN 42 SYN SYN SYN SYN 50 SYN SYN 58 SYN 34 SYN SYN 16 SYN SYN SYN 19 SYN SYN 21 SYN 22 SYN SYN SYN 17 SYN 18 SYN SYN 20 SYN SYN SYN 23 SYN SYN SYN SYN SYN SYN SYN SYN 44 SYN SYN SYN SYN 52 SYN SYN 60 SYN 36 SYN SYN 08 SYN SYN SYN 11 SYN SYN 13 SYN 14 SYN SYN SYN 09 SYN 10 SYN SYN 12 SYN SYN SYN 15 SYN 00 SYN SYN SYN 03 SYN SYN 05 SYN 06 SYN SYN SYN 01 SYN 02 SYN SYN 04 SYN SYN SYN 07 SYN SYN SYN SYN SYN SYN SYN SYN 47 SYN SYN SYN SYN 55 SYN SYN 63 SYN 39 SYN LOC *O * /--- BLOCK FEM/CAB 00 000 79/10/22 20.13 FEME BSS 0 CABINET CONVERSION TABLE LOC 0 VFD 36/0,12/2RA2,12/2RA6 VFD 36/0,12/2RA2,12/2RA6 VFD 36/0,12/2RA2,12/2RA6 VFD 36/0,12/2RA2,12/2RA6 VFD 36/0,12/2RA1,12/2RA5 VFD 36/0,12/2RA1,12/2RA5 VFD 36/0,12/2RA1,12/2RA5 VFD 36/0,12/2RA1,12/2RA5 VFD 36/0,12/2RA1,12/2RA5 VFD 36/0,12/2RA1,12/2RA5 VFD 36/0,12/2RA3,12/2RA7 VFD 36/0,12/2RA3,12/2RA7 VFD 36/0,12/2RA3,12/2RA7 VFD 36/0,12/2RA3,12/2RA7 VFD 36/0,12/2RA3,12/2RA7 VFD 36/0,12/2RA3,12/2RA7 LOC *O FEMF BSS 0 MODULE (BANK) CONVERSION LOC 0 DATA 2RA1 DATA 2RA2 DATA 2RA5 DATA 2RA6 DATA 2RA1 DATA 2RA2 DATA 2RA3 DATA 2RA4 DATA 2RA5 DATA 2RA6 DATA 2RA1 DATA 2RA2 DATA 2RA3 DATA 2RA4 DATA 2RA5 DATA 2RA6 LOC *O FEMG BSS 0 MODULE (SCAN) CONVERSION LOC 0 DATA 2R04 DATA 2R12 DATA 2R05 DATA 2R13 DATA 2R06 DATA 2R14 DATA 2R07 DATA 2R15 LOC *O * /--- BLOCK FKD 00 000 78/08/30 08.37 FKD SPACE 5,11 *** FKD - FORMAT *K* DISPLAY * * THE RELOCATION MEMORY IS FORMATTED AS * DESCRIBED IN THE RELOCATION MEMORY FKD SUBR MOVE KDL,CKD,RSA CLEAR RIGHT SCREEN MOVE KDL,CKD,LSA CLEAR LEFT SCREEN MOVE RSA-RSH,RSH,LSH MOVE HEADER SA5 SMB+1 MX0 -12 BX1 -X0*X5 SB6 X1+1 (B6) = MAX LOGICAL ADDRESS + 1 RJ COD SA2 KMA MX0 30 BX2 X0*X2 LX6 12 BX6 -X0*X6 BX6 X6+X2 SA6 A2 SET IN DISPLAY AX5 12 BX1 -X0*X5 SB7 X1+1 (B7) = NUMBER OF BANKS RJ COD LX4 -12 BX6 X4 SA6 KPA SET IN DISPLAY SB5 B0 (B5) = INDEX INTO QUARDENT SA5 SMB+2 (X5) = RELOCATION ENTRY * /--- BLOCK FKD 00 000 79/10/31 12.51 FKD1 MX0 -5 SX1 B5 BX2 -X0*X1 AX1 5 SA3 FKDA+X1 BASE TO THIS QUADRANT SX4 7 DX4 X4*X2 INDEX INTO QUADRANT IX7 X3+X4 BX6 X6-X6 SET (A6) / TERMINATE DISPLAY SA6 X7 SX1 B5 (X1) = RELOCATION INDEX RJ COD LX6 36 SA1 =4R128K SET BANK TYPE LX5 59-7 PL X5,FKD2 IF 4K CHIPS SA1 =4R512K FKD2 MX0 -24 BX6 X0*X6 BX6 X6+X1 LX6 6 SA6 A6 SET ENTRY IN DISPLAY LX5 1+7-2 SET BANK NUMBER MX0 -4 BX1 -X0*X5 RJ COD LX6 18 SX1 1R0 SET BSU LX5 59-6+2 PL X5,FKD3 SX1 1R1 FKD3 LX1 -6 MX0 6 BX6 -X0*X6 BX6 X1+X6 LX6 -12 SA6 A6+B1 SET IN DISPLAY MX0 -2 LX5 6+1 BX1 -X0*X5 SET CHIP SELECT RJ COD LX6 -24-12 LX5 59-9 CHECK IF FLAWED SX1 2R PL X5,FKD4 SX1 2RF FKD4 GT B6,FKD5 IF ADDRESSABLE SX1 X1+1R*-1R FKD5 MX0 -12 BX6 X0*X6 BX6 X1+X6 LX6 12 SA6 A6+B1 STORE IN DISPLAY SA5 A5+B1 GET NEXT RELOCATION ENTRY SB5 B5+B1 SB6 B6-B1 SB7 B7-B1 GT B7,FKD1 IF MORE RELOCATION ENTRIES SB5 B5-64 CHECK IF RIGHT SCREEN IN USE GT B5,FKDX IF IN USE MOVE HLPL,HLPA,RSA MOVE HELP SCREEN EQ FKDX EXIT FKDA CON LSA+1 FIRST QUADRANT BASE CON LSA+4 SECOND CON RSA+1 THIRD QUADRANT BASE CON RSA+4 FOURTH QUADRANT BASE * /--- BLOCK FNC/FRM/LR 00 000 79/10/01 21.49 FNC SPACE 5,11 *** FNC - CALL *ESM* TO FUNCTION SIDE-DOOR PORT. * * ENTRY (X0) - FUNCTION WORD FNC SUBR SA1 X0 MX6 -1 BX6 X6*X1 SA6 A1 SYSTEM ESM,R,X0 SA1 X0 CHECK FOR ERROR MX0 -12 AX1 12 BX1 -X0*X1 ZR X1,FNCX IF COMPLETED OKAY SB2 =C*FUNCTION FAILED.* EQ ESM5 PROCESS ERROR FRM SPACE 5,11 ** FRM - FORM RELOCATION MEMORY * * ENTRY - * SMB+2 - SMB+129 - COPY OF RELOCATION MEMORY * ONE WORD PER WORD. NO PARITY. * * EXIT - * RMB+1 - RMB+32 - RELOCATION MEMORY IN 12 BIT * FORMAT WITH PARITY FRM SUBR SA1 SMB+2 LOAD FIRST WORD OF RELOCATION SB3 RMB+1 SB4 5 (B4) = BYTES LEFT IN WORD SB5 B1 (B5) = NUMBER OF WORDS STORED MX0 -8 SX3 B1 BX6 X6-X6 FRM1 BX1 -X0*X1 GET RELOCATION DATA CX2 X1 COMPUTE ODD PARITY BX2 X2*X3 BX2 X2-X3 LX2 8 BX1 X1+X2 BX6 X1+X6 MERGE INTO WORD SB4 B4-B1 NZ B4,FRM2 IF MORE BYTES IN WORD SA6 RMB+B5 SB5 B5+B1 SB4 B5-33B CHECK IF MORE WORDS TO STORE GE B4,FRMX IF COMPLETED SB4 5 BX6 X6-X6 FRM2 SA1 A1+B1 GET NEXT WORD LX6 12 EQ FRM1 LOOP LRM SPACE 5,11 *** LRM - LOAD RELOCATION MEMORY * * THE RELOCATION FILE IS LOADED INTO * ESM RELOCATION MEMORY LRM SUBR SA1 SMB+1 GET MAXIMUM LOGICAL ADDRESS LX1 48 SA6 MA+1 RJ FRM FORM RELOCATION MEMORY RJ RSP ASSIGN SIDE-DOOR PORT SX0 RMB LOAD RELOCATION MEMORY RJ FNC SX0 MA SET MAXIMUM ADDRESS SA1 SMB+1 LX1 48 MX6 12 BX6 X6*X1 SA6 X0+B1 RJ FNC SX0 REL RELEASE SIDE-DOOR PORT RJ FNC EQ LRMX EXIT * /--- BLOCK MAS/ROL/RS 00 000 80/07/01 16.17 MAS SPACE 5,11 ** MAS - CALL PP PROGRAM *MAS*. * * ENTRY - (B2) - ADDRESS OF REQUEST * (X0) - NO ABORT OPTION * 0 - ABORT * 100 - NO ABORT * * EXIT - (X6) - ERROR CODE MAS SUBR SA1 B2 CLEAR REQUEST ERRORS MX6 12 BX6 X6*X1 SA6 A1 SYSTEM MAS,R,B2,X0 SA1 B2 MX6 -11 AX1 12 BX6 -X6*X1 EQ MASX EXIT ROL SPACE 5,11 ** ROL - ROLLOUT FOR A WHILE * * ENTRY - (X1) = DAYFILE MESSAGE ADDRESS ROL SUBR MESSAGE X1,1 ROLLOUT ROLA MESSAGE =0,1 CLEAR *B* DISPLAY EQ ROLX ROLA VFD 36/0,12/0,12/60 ROLLOUT FOR 60 SECONDS RSP SPACE 5,11 ** RSP - ASSIGN SIDE-DOOR PORT. RSP SUBR SA1 REQ CLEAR OLD ERRORS MX6 -11 LX6 1 BX6 -X6*X1 SA6 A1 SYSTEM ESM,R,A6 ASSIGN SIDE-DOOR PORT SA1 REQ MX0 -12 AX1 12 BX1 -X0*X1 ZR X1,RSPX IF ASSIGNED SB2 =C*SIDE-DOOR PORT BUSY.* EQ ESM5 * /--- BLOCK SOR/SRM 00 000 78/08/22 15.15 SOR SPACE 5,11 *** SOR - SORT RELOCATION MEMORY * * THE RELOCATION MEMORY IS SORTED SO THAT * ALL FLAWED BANKS GO TO HIGH END OF RELOCATION * IN BSU/BANK ORDER SOR SUBR SA1 SMB+1 GET PHYSICAL BANKS MX0 -12 AX1 12 BX1 -X0*X1 SB2 B0 (B2) = BASE FOR SORT SB4 X1 (B4) = NUMBER PHYSICAL BANKS SB5 B4-B1 SX0 177B (X0) = BSU / BANK / CHIP MASK SX1 1S9 (X1) = FLAW MASK SOR1 BX6 X6-X6 CLEAR SWAP FLAG SA2 SMB+2+B2 (X2) = SORT ENTRY SOR2 SA3 SMB+3+B2 (X3) = SORT ENTRY + 1 BX4 X1*X2 SORT ON FLAW BIT BX5 X1*X3 IX4 X5-X4 NG X4,SOR3 SORT FLAWED ENTRY TO BOTTOM NZ X4,SOR4 IF FLAWED ENTRY ON BOTTOM BX4 X0*X2 SORT ON BSU / BANK BX5 X0*X3 IX4 X5-X4 PL X4,SOR4 IF IN CORRECT ORDER SOR3 BX6 X2 SWAP ENTRIES SA6 A3 BX7 X3 SA7 A3-B1 BX3 X2 SX6 B1 SET SWAP FLAG SOR4 SB2 B2+B1 BX2 X3 SET TO SORT NEXT ENTRY LT B2,B5,SOR2 IF MORE TO SORT SB5 B5-B1 SET SIZE OF SORT ONE LESS SB2 B0 LE B5,B1,SORX IF END OF SORT NZ X6,SOR1 RE-ENTER LOOP IF A SWAP OCCURED EQ SORX SRM SPACE 5,11 *** SRM - SAVE RELOCATION MEMORY * * THE RELOCATION MEMORY IS WRITTEN AND REPLACED * ON THE RELOCATION FILE. SRM SUBR REWIND RF,R WRITE TO RELOCATION FILE WRITEW RF,SMB,ESML WRITER RF SA1 ARGF CHECK IF *F* OPTION PRESENT NG X1,SRMX IF PRESENT EXIT REPLACE RF EQ SRMX EXIT * /--- BLOCK STB/UEL 00 000 79/10/08 20.59 STB SPACE 5,11 *** STB - SEARCH / UPDATE TABLE. * * ENTRY - (B2) - ADDRESS OF TABLE * (B3) - LENGTH OF TABLE * (X1) - ENTRY TO SEARCH FOR * * EXIT - (X6) = 0 IF ENTRY FOUND STB1 BX7 X1 SA7 A2 UPDATE ENTRY IN TABLE STB SUBR SB4 B0 MX0 -24 (X0) = MASK TO SEARCH ON STB2 SA2 B2+B4 BX6 X1-X2 BX6 -X0*X6 ZR X6,STB1 IF ENTRY FOUND SB4 B4+B1 LT B4,B3,STB2 CONTINUE SEARCH * INSERT ENTRY INTO THE TABLE SA2 B2-B1 LOAD POINTER TO NEXT WORD BX6 X1 SA6 B2+X2 PLACE ENTRY IN TABLE SX6 X2+B1 SB4 X6 NE B3,B4,STB3 IF NOT AT LIMIT SX6 B0 STB3 SA6 A2 UPDATE POINTER TO NEXT WORD SX6 B1 (X6) = ENTRY NOT FOUND EQ STBX EXIT UEL SPACE 5,11 ** UEL - UNPACK ERROR LOG * * UNPACKS THE ERROR LOG FROM ERB0 TO ERB1 UEL SUBR MX0 -12 SB6 B0 SB5 B1+B1 SA1 ERB0 LX1 36 UEL0 NZ B5,UEL1 IF MORE BYTES IN THIS WORD SA1 A1+B1 GET NEXT WORD SB5 5 UEL1 LX1 12 BX6 -X0*X1 LX6 12 SB5 B5-B1 NZ B5,UEL2 IF MORE BYTES IN THIS WORD SA1 A1+B1 SB5 5 UEL2 LX1 12 BX7 -X0*X1 BX6 X6+X7 MERGE TWO BYTES SA6 ERB1+B6 SB5 B5-B1 SB6 B6+B1 SB7 B6-32 LT B7,UEL0 * INSERT SINGLE BIT COUNTERS SB6 16 SA2 ERB1+16 UEL3 NZ B5,UEL4 IF MORE BYTES SA1 A1+B1 SB5 5 UEL4 LX1 12 BX6 -X0*X1 LX6 48 BX6 X2+X6 SA6 A2 SB5 B5-B1 SB6 B6-B1 SA2 A2+B1 GT B6,UEL3 IF MORE COUNTERS * MOVE DOUBLE BIT VALID TO HIGH BIT SB6 15 MX0 1 LX0 23-59 UEL5 SA1 ERB1+B6 BX6 X0*X1 ISOLATE VALID BIT BX1 -X0*X1 CLEAR VALID BIT LX6 59-23 BX6 X1+X6 SA6 A1 SB6 B6-B1 GE B6,UEL5 IF MORE WORDS EQ UELX * /--- BLOCK WEM 00 000 79/10/10 12.28 WEM SPACE 5,11 ** WEM - WRITE ERROR MESSAGE * * WRITE ERROR MESSAGE TO APPROPRIATE LOGS * * ENTRY - (FEMA) - ERROR MESSAGE WEM SUBR MESSAGE FEMA PLACE IN DAYFILE MESSAGE FEMA,4 PLACE IN ERRLOG DATE FEMA-2 SET DATE OF ERROR CLOCK FEMA-1 SET TIME OF ERROR SB6 FEMA-2 SET ADDRESS OF MESSAGE RJ WPF WRITE ERROR TO PLATO FILE EQ WEMX * /--- BLOCK WPF 00 000 79/11/06 19.32 WPF SPACE 5,11 *** WPF - WRITE ERROR TO PLATO FILE * * ECS TO GOTTEN, THE PLATO FILE OPENED, * END THE ERROR WRITTEN TO THE FILE * * ENTRY - (B6) - ADDRESS OF ERROR MESSAGE WPF SUBR SA1 WPFG CHECK IF FILE OPEN NG X1,WPF3 IF ONLY ECS GOTTEN NZ X1,WPF5 IF FILE OPEN WPF1 SB2 WPFA REQUEST ECS SX6 EFL SET AMOUNT OF ECS NEEDED SA6 B2+B1 SX0 100B (X0) - NO ABORT RJ MAS CALL *MAS* ZR X6,WPF3 IF ECS GOTTEN SX1 X6-77B CHECK FOR MASTOR NOT ACTIVE ZR X1,WPFX IF MASTOR NOT AROUND SX1 X6-2 NZ X1,WPFX IF NOT ECS NOT AVIALABLE SX1 =C* WAITING FOR ECS.* RJ ROL EQ WPF1 RE-TRY THE REQUEST WPF3 SX6 -1 SHOW ECS GOTTEN SA6 WPFG SX0 B0 SB2 WPFB OPEN PLATO FILE SA1 WPFH SET PLATO FILE NAME BX6 X1 SA6 B2+B1 RJ MAS ZR X6,WPF5 IF FILE OPENED SX6 X6-4 ZR X6,WPF4 IF FILE BUSY SX6 X6-6+4 NZ X6,WPFX IF NOT FILE TABLE FULL WPF4 SX1 =C* WAITING FOR PLATO FILE.* RJ ROL EQ WPF3 TRY AGAIN WPF5 SX6 B1 SHOW FILE OPEN SA6 WPFG * READ RECORD ONE OF FILE SB2 WPFC SA1 WPFH SET PLATO FILE NAME BX6 X1 SA6 B2+B1 SX6 B1 SA6 B2+2 RJ MAS NZ X6,WPF8 IF ERROR SA0 RECD READ RECORD FROM ECS SX0 RECX RE BLKLTH RJ ECSPRTY SA1 A0 SA2 WPFF CHECK HEADER BX2 X1-X2 ZR X2,WPF6 IF HEADER OKAY WPF5.1 MESSAGE (=C* PLATO FILE HEADER BAD.*) EQ WPFX * /--- BLOCK WPF 00 000 79/11/06 19.33 * READ NEXT RECORD TO STORE MESSAGE WPF6 SA1 A1+B1 READ NEXT RECORD TO STORE SA3 A1+B1 NEXT WORD IN RECORD SX2 X1-2 NG X2,WPF5.1 IF NEXT RECORD NUMBER TOO SMALL SX6 X3-BLKLTH+PMSGL NG X6,WPF7 IF NEXT MESSAGE FITS SX1 X1+B1 BUMP TO NEXT RECORD SX3 B0 * CHECK IF NEW RECORD IN BOUNDS OF FILE SA2 WPFB+1 MX6 -6 AX2 24 BX2 -X6*X2 (X2) = NUMBER OF PARTS IN FILE SX6 DSBLKS (X6) = BLOCKS / PART IX6 X2*X6 IX2 X1-X6 NG X2,WPF7 IF WITHIN RANGE SX1 B1+B1 RESET BACK TO FIRST RECORD WPF7 SX7 X3+PMSGL BUMP TO NEXT MESSAGE SLOT BX6 X1 SA6 WPFC+2 SA6 WPFD+2 SA6 A1 UPDATE POINTER RECORD SA7 A3 UPDATE POINTER WORD SB2 WPFC SA1 WPFH SET PLATO FILE NAME BX6 X1 SA6 B2+B1 SX0 B0 RJ MAS NZ X6,WPF8 IF ERROR SA0 RECB SX0 RECX RE BLKLTH RJ ECSPRTY * MOVE ERROR MESSAGE TO RECORD MOVE PMSGL,B6,RECB+X3 WE BLKLTH RJ ECSPRTY SB2 WPFD WRITE RECORD SA1 WPFH SET PLATO FILE NAME BX6 X1 SA6 B2+B1 SX0 B0 RJ MAS NZ X6,WPF9 IF ERROR SA0 RECD RE-WRITE POINTER RECORD SX0 RECX WE BLKLTH RJ ECSPRTY SB2 WPFD SA1 WPFH SET PLATO FILE NAME BX6 X1 SA6 B2+B1 SX6 B1 SX0 B0 SA6 B2+2 RJ MAS NZ X6,WPF9 IF ERROR EQ WPFX EXIT WPF8 MESSAGE (=C* PLATO FILE READ ERROR.*) EQ WPFX WPF9 MESSAGE (=C* PLATO FILE WRITE ERROR.*) EQ WPFX * /--- BLOCK WPF 00 000 79/10/15 18.35 WPFA VFD 12/MS.ECS,48/0 BSSZ MS.MDIM-1 WPFB VFD 12/MS.OPF,48/0 VFD 60/0 FILE NAME VFD 60/0LWRITE BSSZ MS.MDIM-3 WPFC VFD 12/MS.RPF,48/0 VFD 60/0 FILE NAME VFD 60/0 BLOCK NUMBER VFD 60/0 ECS ADDRESS BSSZ MS.MDIM-4 WPFD VFD 12/MS.WPF,48/0 VFD 60/0 FILE NAME VFD 60/0 BLOCK NUMBER VFD 60/0 ECS ADDRESS BSSZ MS.MDIM-4 WPFE VFD 12/MS.CPF,48/0 VFD 60/0 FILE NAME BSSZ MS.MDIM-2 WPFF VFD 60/0LESMERRS RECORD HEADER WPFG CON 0 FLAG TO SHOW ECS / FILE OPEN WPFH DATA 0L"DSET" PLATO FILE NAME * /--- BLOCK COM 00 000 78/08/29 11.26 SPACE 5,11 ** COMMON DECKS. *CALL COMCARG *CALL COMCCIO *CALL COMCCOD *CALL COMCCPM *CALL COMCDXB *CALL COMCMVE *CALL COMCPFM *CALL COMCRDH *CALL COMCRDW *CALL COMCSFN *CALL COMCSYS *CALL COMCUPC *CALL COMCWTW *CALL ECSPRTY * /--- BLOCK KDISP 00 000 79/11/12 19.58 TITLE DATA STORAGE. KDISP SPACE 5,11 *** KDISP - BUFFERS FOR *K* DISPLAY. KR VFD 24/KB,18/RS,18/LS KB BSSZ 8 LS VFD 10/0,1/0,1/0,48/0 DSL 21,5,(ESM CONFIGURATION) DSL 4,7,(MAX LOGICAL ADDRESS) KMA EQU *-1 DATA H*MAX PHYSICAL ADDRESS* KPA DATA 10H LSH DSL 0,9,( RM TYPE BSU BANK CS ) DATA H*FA RM TYPE BSU BANK CS FA* LSA BSS 0 DUP 35,1 DATA 70H DSL 0,44,( ) KERR DATA 20H DSL 0,45,( ) KDT DATA 50H RS VFD 10/0,1/0,1/0,48/0 RSH DSL 0,9,( RM TYPE BSU BANK CS ) DATA H*FA RM TYPE BSU BANK CS FA* RSA BSS 0 DUP 35,1 DATA 70H DATA 0 END DISPLAY * BLANK FORMATTED SCREEN CKD BSS 0 D SET 7756B-11*10 DUP 35,3 VFD 12/6000B,12/6000B,12/6000B,12/6000B,12/D DATA 60H D SET D-10 KDL EQU *-CKD * /--- BLOCK KDISP 00 000 79/11/12 20.04 * HELP SCREEN HLPA BSS 0 DSL 0,11,(THE FOLLOWING COMMANDS ARE AVAILABLE) D SET D+1 DSL 0,,(CLEAR. CLEAR ERROR LOGS.) DSL 0,,(CONFIG. DETERMINE ESM CONFIGURATION.) DSL 0,,(END. SAVE RELOCATION MEMORY,) DSL 0,,( TERMINATE PROGRAM.) DSL 0,,( DO NOT LOAD RELOCATION MEMORY.) DSL 0,,(ERRORS. DISPLAY ERROR LOGS.) DSL 0,,(FLAW,BSU,BANK.) DSL 0,,(FLAW,BANK.) DSL 0,,( TOGGLE THE FLAW STATUS OF PHYSICAL) DSL 0,,( BANK. THIS SORTS THE RELOCATION MEMORY) DSL 0,,( IN BANK ORDER AND PLACES FLAWED ) DSL 0,,( ENTRIES AT THE HIGH END.) DSL 0,,(GO. SAVE AND LOAD RELOCATION MEMORY,) DSL 0,,( TERMINATE PROGRAM.) DSL 0,,(HELP. DISPLAY THIS SCREEN.) DSL 0,,(INIT. INITIALIZE RELOCATION MEMORY TO 16M WORDS.) DSL 0,,(LOAD. LOAD RELOCATION MEMORY.) DSL 0,,(MA,ADDR. SET *ADDR* AS HIGHEST LOGICAL ENTRY DSL 0,,( IN USE IN RELOCATION MEMORY.) DSL 0,,(PA,ADDR. SET *ADDR* AS HIGHEST PHYSICAL ENTRY) DSL 0,,( IN USE IN RELOCATION MEMORY.) DSL 0,,(RELOC. DISPLAY RELOCATION MEMORY.) DSL 0,,(SAVE. WRITE RELOCATION MEMORY TO FILE.) DSL 0,,(STOP. TERMINATE PROGRAM.) DSL 0,,(SET,LA=ADDR,PA=ADDR.) DSL 0,,( SET RELOCATION ENTRY *LA* TO *PA*.) DSL 0,,(ZERO. WRITE ZEROES TO ALL OF ESM.) D SET D+1 SKIP A LINE DSL 0,,(* - NOT ADDRESSABLE, F - FLAWED.) DSL 0,,(IF THE *NK* OPTION IS CHOSEN, THE *GO* DSL 0,,(COMMAND IS EXECUTED.) HLPL EQU *-HLPA ERRPL HLPL-KDL HELP SCREEN TOO LARGE * /--- BLOCK DATA 00 000 79/10/30 11.39 SPACE 5,11 RF BSS 0 ESMRM FILEB BUF1,BUFL,EPR KD DATA 0 *K* DISPLAY OPTION T1 DATA 0 TEMPORARY ESMH CON 0LESM+ESML HEADER ON RELOCATION FILE PFA VFD 42/0,18/0 FAMILY NAME, 0 PNA VFD 42/0,18/0 PACK NAME, 0 UNA VFD 42/0,18/0 USER NUMBER, USER INDEX ARGS BSS 0 ARGUMENT TABLE FOR *COMCARG* ARGF VFD 12/0LF,18/RF,12/0,18/RF VFD 12/0LNK,18/=-1,12/0,18/KD CON 0 SXP VFD 24/0,24/77777700B,12/SXPF CXP VFD 24/0,24/0,12/SXPF SMB BSSZ 1 RELOCATION MEMORY BUFFER HDR PLM BSSZ 1 36/,12/MAX PHYS BANK,12/MAX LOG RLM BSSZ ESML RELOCATION MEMORY (CM) CEL CON RSEF CLEAR ERROR LOG MA CON SMAF LOAD MAXIMUM ADDRESS DATA 0 RMB CON WRMF WRITE RELOCATION MEMORY BSSZ 32 REQ CON RSPF REQUEST SIDE-DOOR PORT REL CON REPF RELEASE SIDE-DOOR PORT SBR CON RSBF READ STATUS BITS DATA 0 * ERROR LOG BUFFERS ELR CON RELF READ ERROR LOG ERB0 BSSZ 17 ACTUAL ERROR LOG * UNPACKED ERROR LOG * * FIRST 16 WORDS - DOUBLE BIT ERRORS * 1/VALID BIT, 35/0, 24/ADDRESS * * SECOND 16 WORDS - SINGLE BIT ERRORS * 12/COUNTER, 24/0, 24/ADDRESS ERB1 BSSZ 32 UNPACKED ERROR LOG CON 0 NUMBER OF ENTRIES IN TABLE ERB2 BSSZ ERL DOUBLE BIT ERROR LOG CON 0 NUMBER OF ENTRIES IN TABLE ERB3 BSSZ ERL SINGLE BIT ERROR LOG USE // BUF1 BSS BUFL RECD BSS BLKLTH PLATO RECORD BUFFER RECB BSS BLKLTH PLATO RECORD BUFFER RFL= EQU *+10B USE * END ESM