ESMPP
* /--- FILE TYPE = E
* /--- BLOCK ESM 00 000 78/08/22 14.20
ESMPP
IDENT ESM,ESM CONTROL EXTENDED SEMI-CONTONDUCTOR MEMORY
PERIPH
BASE MIXED
SST WDS
LIST F
COMMENT CONTROL EXTENDED SEMI-CONDUCTOR MEMORY.
COMMENT COPYRIGHT CONTROL DATA CORP. 1978.
TITLE ESM - CONTROL EXTENDED SEMI-CONDUCTOR MEMORY
SPACE 5,11
*** ESM - CONTROL EXTENDED SEMI-CONDUCTOR MEMORY.
* R. S. EHRLICH. 78/01/20.
SPACE 5,11
*** ESM CONTROLS THE FUNCTIONS OF EXTENDED SEMI-CONDUCTOR MEMORY.
*
* THIS INVOLVES MANAGING THE RELOCATION MEMORY,
* THE ERROR LOGS, AND INITIALIZING THE FLAG
* REGISTERS.
SPACE 5,11
*** CALL.
*
*
*T 18/ *ESM*, 6/ CP, 6/AD, 24/ADDRESS
* AD - ADDRESS TYPE.
* 0 - PARAMETERS ARE AT *ADDRESS* IN CM.
* 1 - PARAMETERS ARE AT *ADDRESS* IN ESM.
* ADDRESS - ADDRESS WHERE FUNCTION CODES ARE
* STORED.
*
* ADDRESS WORD FORMAT -
*
* 48/PARAMETERS, 12/FUNCTION CODE
* BIT 0 SET UPON COMPLETION OF FUNCTION.
* DATA REQUIRED FOR FUNCTION OR ACQUIRED AS A
* RESULT OF THE FUNCTION IMMEDIATELY FOLLOWS
* THE FUNCTION WORD.
*
* ADDRESS WORD UPON FUNCTION COMPLETION
*
* 36/ , 12/ERROR CODE, 12/COMPLETION BIT
*
* ERROR CODE - 0 - COMPLETED SUCCESSFULLY
* 1 - CHANNEL ERROR
SPACE 5,11
*CALL COMPMAC
*CALL COMPCHI
*CALL COMSCPS
*CALL AIDTEXT
*CALL PLASESM
SPACE 5,12
.DCH IF -MAC,DCHAN SHOULD ONLY HAPPEN IF COMSOURCE
DCHAN MACRO
RJM DCH
ENDM
.DCH ENDIF
.RCH IF -MAC,RCHAN SHOULD ONLY HAPPEN IF COMSOURCE
RCHAN MACRO
RJM RCH
ENDM
.RCH ENDIF
SPACE 5,11
**** DIRECT LOCATION ASSIGNMENTS.
CN EQU 20 - 24 CM WORD STORAGE
RI EQU 25 REQUEST INDEX IN *FTAB*
ES EQU 26 EST ORDINAL OF SIDE-DOOR PORT
MS EQU 27 MAINT CHANNEL ON *DE* FLAG
CM1 EQU 30 - 34 CM WORD STORAGE
****
* /--- BLOCK ESM 00 000 79/10/01 21.04
TITLE MAIN PROGRAM.
ORG PPFW
ESM RJM PRS
LDN CN READ FUNCTION REQUEST
STD T1
LDD IR+3
STD T2
LDD IR+4
STD T3
LDC 1*10000+5
RJM RMEM
* CHECK FUNCTION REQUEST
LDD CN+4
SHN -1
STD T1
SBN MXNF/2
MJN ESM1 IF FUNCTION IN RANGE
LDC =C* ESM - ILLEGAL FUNCTION REQUEST.*
LJM ERR
ESM1 LDD T1
SHN 2
STD RI
LDM FTAB,RI GET ENTRY FROM TABLE
SHN 6
PJN ESM2 IF FUNCTION CODE
SHN -6
LMC 7777
STM ESMA
ESM2 LDN 0 SHOW NO ERROR YET
STD CN+3
RJM FNC
ESMA EQU *-1
* SET COMPLETE BIT / DROP PP
AOD CN+4
LDN CN
STD T1
LDD IR+3
STD T2
LDD IR+4
STD T3
LDC 1*10000+5
RJM WMEM
MONITOR DPPM
LJM PPR
* /--- BLOCK FTAB 00 000 79/10/22 21.28
FTAB SPACE 5,11
*** FTAB - FUNCTION CODE TABLE
*
*FNC FTAB A,B,C
*
* FNC - NAME OF FUNCTION
*
* A - FUNCTION CODE OR PROCESSING ROUTINE
* B - INPUT-OUTPUT FLAG
* C - NUMBER OF PP BYTES TO TRANSFER
** REQUEST TABLE FORMAT
*
* WORD 1 - FUNCTION CODE / PROCESSING ROUTINE
* WORD 2 - INPUT-OUTPUT FLAG
* WORD 3 - NUMBER OF PP BYTES
* WORD 4 - NUMBER OF CM WORDS
MACRO FTAB,N,A,B,C
.S IFC EQ,$A$$
N BSS 0
.2 SET N
.S ELSE
ORG .2+N*2
.E IFC NE,$B$$
LOC N
.D IF DEF,A
CON A
.D ELSE
CON -A
.D ENDIF
CON B
CON C
.1 SET C+4
.1 SET .1/5
CON .1
.E ENDIF
.S ENDIF
BSS 0
ENDM
IN EQU 0
OUT EQU 1
FTAB FTAB
RRMF FTAB 1004,IN,200 READ RELOCATION MEMORY
WRMF FTAB 1005,OUT,200 WRITE RELOCATION MEMORY
RELF FTAB 1010,IN,3+20*2+20*2+20 READ ERROR LOG
RSEF FTAB 1011,IN,0 RESET ERROR LOG
SPEF FTAB 1012,OUT,4 SET PROGRAMMABLE ERROR LOG CNTR
RSBF FTAB 1040,IN,4 READ STATUS BITS
SMAF FTAB 1204,OUT,1 SET MAXIMUM ADDRESS
RSPF FTAB REQ,0,0 REQUEST SIDE-DOOR PORT
REPF FTAB REL,0,0 RELEASE SIDE-DOOR PORT
SXPF FTAB SXP,0,0 SET RAX/FLX IN EXCHANGE PACKAGE
MXNF FTAB 0 END OF TABLE
* /--- BLOCK ERR 00 000 79/10/01 20.38
ERR SPACE 5,11
*** ERR - ISSUE ERROR MESSAGES.
*
* ENTRY - (A) - MESSAGE ADDRESS
ERR RJM DFM
MONITOR ABTM
LJM PPR DROP/EXIT PP
* /--- BLOCK FNC 00 000 79/10/22 21.26
FNC SPACE 5,11
*** FNC - ISSUE FUNCTION TO ESM.
*
* ENTRY -
*
* (RI) - INDEX INTO FTAB.
FNC0 AOD CN+3 SET ERROR
FNC SUBR
LDD MS
NJN FNC1.1 IF CHANNEL DEFINED ON *DE*
.NOSV2 IFLT OSLEV,562D IF NOS V1
LDM ESTS CHECK SIDE-DOOR PORT ASSIGNED
ADD ES
CRD CM READ EST ENTRY
LDD CM
LPN 37
SHN 7
LMD CP
.NOSV2 ELSE IF NOS V2
* CHECK IF SIDE-DOOR PORT ASSIGNED TO THIS CP
.NOS22 IFGE OSLEV,594D IF NOS 2.2
SFA EST,ES GET CM ADDRESS OF SP ENTRY
ADK EQAE ADD OFFSET FOR EQUIP ASSIGNMENT
.NOS22 ELSE
LDK ESTP (A) = CM WORD WITH EAT POINTER
CRD CM READ EST POINTER ENTRY
LDD CM+1 (A) = FWA OF EAT
ADD ES (A) = SIDE-DOOR PORT EAT ENTRY
.NOS22 ENDIF
CRD CM READ SIDE-DOOR PORT EAT ENTRY
LDD CP (A) = CP AREA FWA
ADK TERW (A) = ADDR OF CP EJT ORDINAL
CRD CM1 READ CP EJT ORDINAL
LDD CM+4 (A) = SIDE-DOOR PORT EJT ORD
LMD CM1 COMPARE WITH THIS CP EST ORD
.NOSV2 ENDIF
NJN FNC0 IF NOT ASSIGNED TO THIS CP
FNC1.1 BSS 0
CHTE *
LDN CH
RCHAN
LDM FTAB+1,RI CHECK FUNCTION TYPE
ZJN FNC1
LJM FNC4
* PROCESS INPUT TYPE FUNCTIONS
FNC1 LDM FTAB+2,RI
STD T1 SAVE PP BYTES TO TRANSFER
IJM FNC2,CH
DCN CH
FNC2 LDM FTAB,RI
FAN CH ISSUE FUNCTION TO ESM
ACN CH
LDD T1 CHECK IF ANY DATA TO TRANSFER
ZJN FNC3 IF NONE
IAM BFMS,CH INPUT DATA
ZJN FNC3 IF TRANSFER COMPLETE
LJM FNC6
FNC3 IJM FNC3.1,CH
DCN CH
CHTE *
FNC3.1 LDN CH
DCHAN
LDC BFMS WRITE DATA TO USER BUFFER
STD T1
LDD IR+4
ADN 1
STD T3
SHN -14
ADD IR+3
STD T2
LDM FTAB+3,RI
SHN 14
LMM FTAB+2,RI
ZJN FNC3.2 IF NO DATA TO TRANSFER
RJM WMEM
FNC3.2 LJM FNCX EXIT
* /--- BLOCK FNC 00 000 79/10/22 21.27
* PROCESS OUTPUT TYPE FUNCTIONS.
FNC4 LDC BFMS
STD T1
LDD IR+4
ADN 1
STD T3
SHN -14
ADD IR+3
STD T2
LDM FTAB+3,RI
SHN 14
LMM FTAB+2,RI
RJM RMEM
LDM FTAB+2,RI GET BYTES TO TRANSFER
STD T1
IJM FNC5,CH
DCN CH
FNC5 LDM FTAB,RI
FAN CH
ACN CH
LDD T1
OAM BFMS,CH
FJM *,CH
NJN FNC6 IF TRANSFER INCOMPLETE
IJM FNC7,CH
DCN CH
CHTE *
LDN CH
DCHAN
LJM FNCX EXIT
* PROCESS FUNCTION ERRORS
FNC6 DCN CH+40
CHTE *
FNC7 LDN CH
DCHAN
LDC =C* ESM - FUNCTION FAILED.*
RJM DFM
LJM FNC0
SPCH CHTB SIDE-DOOR PORT CHANNEL TABLE
* /--- BLOCK REQ/REL 00 000 79/10/04 10.04
REL SPACE 5,11
*** REL - RELEASE ASSIGNMENT OF SIDE-DOOR PORT
REL SUBR
LDD MS
NJN RELX MAINT CHANNEL ON *DE*
.NOSV2 IFLT OSLEV,562D IF NOS V1
LDM ESTS VERIFY ASSIGNED TO THIS CP
ADD ES
CRD CM READ EST ENTRY
LDD CM
LPN 37
SHN 7
LMD CP
.NOSV2 ELSE IF NOS V2
* CHECK IF SIDE-DOOR PORT ASSIGNED TO THIS CP
.NOS22 IFGE OSLEV,594D IF NOS 2.2
SFA EST,ES GET CM ADDRESS OF SP ENTRY
ADK EQAE ADD OFFSET FOR EQUIP ASSIGNMENT
.NOS22 ELSE
LDK ESTP (A) = CM WORD WITH EAT POINTER
CRD CM READ EST POINTER ENTRY
LDD CM+1 (A) = FWA OF EAT
ADD ES (A) = SIDE-DOOR PORT EAT ENTRY
.NOS22 ENDIF
CRD CM READ SIDE-DOOR PORT EAT ENTRY
LDD CP (A) = CP AREA FWA
ADK TERW (A) = ADDR OF CP EJT ORDINAL
CRD CM1 READ CP EJT ORDINAL
LDD CM+4 (A) = SIDE-DOOR PORT EJT ORD
LMD CM1 COMPARE WITH THIS CP EST ORD
.NOSV2 ENDIF
NJN REL2
LDD ES
STD CM+1
MONITOR DEQM
REL1 LJM RELX
REL2 AOD CN+3 SET ERROR RETURN
UJN REL1
REQ SPACE 5,11
*** REQ - ASSIGN SIDE-DOOR PORT TO CP.
REQ SUBR
.NOS242 IFGE OSLEV,642D
LDN REQS (A) = REQUEST ACTIVE EQUIPMENT
.NOS242 ELSE
LDN 0 (A) = REQUEST ACTIVE EQUIPMENT
.NOS242 ENDIF
STD CM+2
LDD ES
STD CM+1
MONITOR REQM
LDD CM+1 CHECK IF ASSIGNED
NJN REQX IF ASSIGNED
AOD CN+3 SET ERROR
UJN REQX
* /--- BLOCK SXP 00 000 79/10/08 20.15
SXP SPACE 5,11
*** SXP - SET EXCHANGE PACKAGE.
*
* THE EXCHANGE PACKAGE IS SET UP TO ALLOW
* ESM DATA TRANSFER BY THE CPU PROGRAM.
*
* FUNCTION WORD
* 24/ESM RAX, 24/ESM FLX, 12/FUNCTION SXP
SXP SUBR
LDD CP CHECK IF PROGRAM IN AUTO-RECALL
ADN STSW
CRD CM
LDD CM
.NOSV2 IFGE OSLEV,562D NOS V2
SHN -11B
SBN 6 AUTO RECALL = 6
ZJN SXP1 IF IN AUTO RECALL
.NOSV2 ELSE NOS V1
SHN 21-11
MJN SXP1 IF IN AUTO-RECALL
.NOSV2 ENDIF
LDC =C* ESM - AUTO-RECALL ERROR.*
LJM ERR
SXP1 LDD CN+1 CHECK IF RAX/FLX LOW 6 BITS = 0
LPN 77
NJN SXP2
LDD CN+3
LPN 77
ZJN SXP3
SXP2 LDC =C* ESM - ILLEGAL RAX/FLX.*
LJM ERR
SXP3 LDD CP READ RAX/FLX FROM EXCHANGE
ADN 4
CRD CM READ RAX
ADN 1
CRD CM1 READ FLX
LDD CN SET RAX
LPN 77
SHN 14
LMD CN+1
SHN -6
STD CM+1
LDD CN
SHN -6
STD CM
LDD CN+2 SET FLX
LPN 77
SHN 14
LMD CN+3
SHN -6
STD CM1+1
LDD CN+2
SHN -6
STD CM1
LDD CP RE-WRITE TO EXCHANGE PACKAGE
ADN 4
CWD CM
ADN 1
CWD CM1
LJM SXPX EXIT
* /--- BLOCK RMEM 00 000 79/10/04 10.13
RMEM SPACE 5,11
*** RMEM - READ TABLE FROM CM/ESM.
*
* READS DATA FROM CM/ESM INTO PP.
*
* ENTRY -
*
* (T1) - PP WORD TO READ INTO.
* (T2-T3) - ADDRESS TO READ FROM.
* (A) - NUMBER OF WORDS TO READ.
* 6/CM WORDS, 12/PP WORDS
*
* EXIT -
* DATA READ.
RMEM SUBR
LJM RME7 READ DATA FROM CM
RMEA EQU *-1
STM RMEB SAVE NUMBER OF WORDS TO READ
LDD T1
STM RMEC
CHTE *
LDN CH
RCHAN
IJM RME1,CH
DCN CH
RME1 FNC 5004,CH SELECT EXTENED ADDRESSING MODE
FNC 5001,CH READ DATA
ACN CH
LDN 2 OUTPUT ECS ADDRESS
OAM T2,CH
LDC ** NUMBER OF WORDS TO READ
RMEB EQU *-1
IAM **,CH
RMEC EQU *-1
NJN RME5 IF READ ERROR
RME2 IJM RME4,CH
EJM RME2,CH
DCN CH
CHTE *
LDN CH RELEASE DDP
DCHAN
RME3 LJM RMEMX RETURN
RME4 FNC 5010,CH
RME5 IJM RME6,CH
DCN CH
RME6 LDD CM+1 RELEASE CHANNEL
DCHAN
LDC =C* ESM - READ ESM ERROR.*
RJM DFM
UJN RME3 EXIT
* READ DATA FROM CM.
RME7 SHN -14 SAVE NUMBER OF WORDS TO READ
STD CM
LDD T1
STM RMED SAVE TRANSFER ADDRESS
LDD T2 CHECK IF ADDRESS WITHIN FL
LPN 37
SHN 14
LMD T3
ADD CM
SHN -6
SBD FL
MJN RME8 IF IN RANGE
LDC =C* ESM - CM ADDRESS OUTSIDE FL.*
LJM ERR
RME8 LDD T2
LPN 37
SHN 6
ADD RA
SHN 6
ADD T3
CRM **,CM
RMED EQU *-1
LJM RMEMX EXIT
* /--- BLOCK WMEM 00 000 79/10/04 10.16
WMEM SPACE 5,11
*** WMEM - WRITE DATA TO CM/ESM.
*
* ENTRY -
*
* (T1) - PP WORD TO WRITE FROM.
* (T2-T3) - ADDRESS TO WRITE TO.
* (A) - NUMBER OF WORDS TO WRITE.
* 6/CM WORDS, 12/PP WORDS
*
* EXIT -
* DATA WRITTEN.
WMEM SUBR
LJM WME8
WMEA EQU *-1
STM WMEB SAVE NUMBER OF WORDS TO WRITE
LDD T1
STM WMEC
CHTE *
LDN CH
RCHAN
IJM WME1,CH
DCN CH
WME1 FNC 5004,CH SELECT EXTENDED ADDRESSING MODE
FNC 5002,CH WRITE DATA
ACN CH
LDN 2 OUTPUT ECS ADDRESS
OAM T2,CH
LDC 0 NUMBER OF WORDS TO WRITE
WMEB EQU *-1
OAM 0,CH
WMEC EQU *-1
FJM *,CH
NJN WME6 IF WRITE ERROR
DCN CH GET DDP STATUS
WME2 FNC 5004,CH
ACN CH
IAN CH INPUT STATUS
DCN CH
LPN 11 CHECK WRITE/ABORT
NJN WME5
IJM WME3,CH
DCN CH
CHTE *
WME3 LDN CH RELEASE CHANNEL
DCHAN
WME4 LJM WMEMX RETURN
WME5 LPN 10
NJN WME2 IF WRITE IN PROGRESS
FNC 5010,CH
WME6 IJM WME7,CH
DCN CH
CHTE *
WME7 LDN CH RELEASE CHANNEL
DCHAN
LDC =C* ESM - WRITE ESM ERROR.*
RJM DFM
UJN WME4 EXIT
* WRITE DATA TO CM
WME8 SHN -14 SAVE NUMBER OF WORDS TO WRITE
STD CM
LDD T1 SAVE PP ADDRESS
STM WMED
LDD T2 VERIFY ADDRESS WITHIN FL
LPN 37
SHN 14
LMD T3
ADD CM
SHN -6
SBD FL
MJN WME9 IF IN RANGE
LDC =C* ESM - ADDRESS OUT OF RANGE.*
LJM ERR
WME9 LDD T2
LPN 37
SHN 6
ADD RA
SHN 6
ADD T3
CWM **,CM
WMED EQU *-1
LJM WMEMX EXIT
DPCH CHTB DDP CHANNEL TABLE
* /--- BLOCK PRS 00 000 87/02/10 11.29
PRS SPACE 5,11
*** PRS - PRESET PROGRAM.
*
* THE ADDRESSING MODE AND CHANNEL NUMBER OF THE
* SIDE-DOOR PORT IS INITIALIZED.
PRS5 LDC =C* ESM - ILLEGAL USER ACCESS.*
LJM ERR
PRS SUBR
RJM CUA GO CHECK USER ACCESS
NJN PRS5 ILLEGAL USER ACCESS CALL
* SEARCH FOR SIDE-DOOR PORT
LDC 2R"SP"
RJM EQN
PJN PRS2 IF *SP* FOUND
LDC 2RDE
RJM EQN
PJN PRS1 IF *DE* FOUND
PRS0 LDC =C* ESM - SIDE-DOOR PORT NOT FOUND.*
LJM ERR
PRS1 STD ES SAVE EST ORDINAL
.NOS252 IFGE OSLEV,678D
SFA EST
ADK EQAE
CRD CM
.NOS252 ENDIF
LDD CM+2
ZJN PRS0 IF NO *MC* DEFINED
STD CM+1 SAVE CHANNEL
LDD ES
PRS2 STD ES
LDD CM+1 CLEAR OTHER CHANNELS
LPN 77
STD CM+1
LDC SPCH
RJM ICH INSERT CHANNEL NUMBERS
*
* SET FLAG FOR CHECKING IF MAINTENANCE CHANNEL WAS
* DEFINED ON THE *DE* EST ENTRY. IF IT WAS, ESM
* SHOULD NOT TRY TO RESERVE THIS EQUIPMENT.
*
.NOSV2 IFLT OSLEV,562D IF NOS V1
LDM ESTS
ADD ES
.NOSV2 ELSE IF NOS V2
.NOS22 IFLT OSLEV,594D IF NOS 2.1
LDK ESTP (A) = CM WORD WITH EAT POINTER
CRD CM READ EST POINTER ENTRY
LDD CM (A) = FWA OF EST
ADD ES
.NOS22 ELSE IF NOS 2.2
SFA EST,ES GET CM ADDRESS OF EST ENTRY
ADK EQDE ADD OFFSET FOR EQUIP DEFINITION
.NOS22 ENDIF
.NOSV2 ENDIF
CRD CM READ EST ENTRY
LDD CM
SHN 7 MASK OFF MASS STORAGE FLAG
LPN 1
STD MS
* SET ADDRESSING MODE FOR TABLES
LDD IR+2 CHECK ADDRESSING TYPE
LPN 77
STD T1
SBN MXTY
MJN PRS3 IF VALID TYPE
LDC =C* ESM - ILLEGAL ADDRESS TYPE.*
LJM ERR
* /--- BLOCK PRS 00 000 87/02/10 11.25
PRS3 LDM ATY,T1
ZJN PRS4 IF NO PROCESSOR FOR THIS TYPE
STM PRSA
RJM **
PRSA EQU *-1
PRS4 LJM PRSX EXIT
ATY BSS 0
LOC 0
CON 0 TABLES IN CM
CON AEC TABLES IN ESM
MXTY BSS 0
LOC *O
AEC SPACE 5,11
*** AEC - INITIALIZE TO READ/WRITE TABLES FROM ESM
AEC SUBR
LDC RMEA+1 SET TO READ/WRITE FROM ESM
STM RMEA
LDC WMEA+1
STM WMEA
* SEARCH FOR DDP
LDD T7
STD CN
AES1 LDD CN
CRD CM
LDD CM+3
LMC 2R"DP"
ZJN AES2 IF DDP FOUND
AOD CN
LMD CN+1
NJN AES1 IF MORE TO SEARCH
LDC =C* ESM - DDP NOT FOUND.*
LJM ERR
AES2 LDD CM+1
LPN 77
STD CM+1
LDC DPCH
RJM ICH INSERT CHANNEL NUMBERS
LJM AECX
* /--- BLOCK ICH 00 000 79/10/04 10.32
ICH SPACE 5,11
** ICH - INSERT CHANNEL NUMBERS INTO I/O INSTRUCTIONS
*
* COMPCHI MUST BE CALLED TO RE-DEFINE INSTRUCTIONS.
*
* ENTRY -
*
* (A) - ADDRESS OF CHANNEL TABLE
* (CM+1) - CHANNEL NUMBER.
ICH SUBR
STD T2
ICH1 LDI T2
ZJN ICHX IF END OF TABLE
STD T1
LDI T1
SCN 37
LMD CM+1
STI T1 SET NEW CHANNEL NUMBER
AOD T2
UJN ICH1
* /--- BLOCK END 00 000 78/08/22 14.20
* COMMON DECK THAT MAY BE OVERLAYED.
*CALL COMPCUA
*CALL PLAPEQN
ERRNG 7770-* PP OVERFLOW
END