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