DataMuseum.dk

Presents historical artifacts from the history of:

CR80 Hard and Floppy Disks

This is an automatic "excavation" of a thematic subset of
artifacts from Datamuseum.dk's BitArchive.

See our Wiki for more about CR80 Hard and Floppy Disks

Excavated with: AutoArchaeologist - Free & Open Source Software.


top - download

⟦374ad7f06⟧ TextFile

    Length: 98816 (0x18200)
    Types: TextFile
    Names: »EDMMOD«

Derivation

└─⟦7c4388e5c⟧ Bits:30005071 8" CR80 Floppy CR80FD_0009 ( EDM SYS 1 PJ DEC 3,80 )
    └─⟦193e12850⟧ 
        └─ ⟦this⟧ »EDMMOD« 

TextFile

LIST
;-----------------------------------------------------------------------
;
;  PROJECT:  NICS-TARE/CP
;
;  MODULE IDENTIFICATION:  NIC/290
;
;  CPS NAME:     ERROR DETECTION AND CORRECTION (EDC) SUBMODULE
;                EDC MAIN PROGRAM SECTION (EDM).
;
;  MERGE FILES: SEE LIST BELOW
;
;  MODULE FILES: EDMSOD,EDMMOD,EDMHOD,EDMNOD,EDMVOD
;
;  REFERENCES:   NIC/200/PSP/0006
;
;-----------------------------------------------------------------------
BEGIN MODULE EDMSYS
USE BASE
XDATE:=#0722
;-----------------------------------------------------------------------
;
;        MERGE FILE MESSAGES
;
;-----------------------------------------------------------------------
NOLIST
MESSAGE <:CALL XPDNOD:> ; 00000104 0 0016  LEVEL 2  NAMES:
USE BASE
  XGSTPR:= #0015
  XHSSIZ:= #FFFA
  XMBASE:= #0009
  XHEXSZ:= #FFFE
  XLICC:=  #0011
  XGSTP:=  #0015
  XHWRK0:= #FFF0
  XHWRK1:= #FFF1
  XBASE:=  #0008
  XHWRK2:= #FFF2
  XHPID:=  #FFFF
  XHWRK3:= #FFF3
  XHWRK4:= #FFF4
  XHWRK5:= #FFF5
  XHWRK6:= #FFF6
  XHWRK7:= #FFF7
  XTSWH:=  #0014
  XPCLNK:= #000E
  XHRPRG:= #FFFB
  XHTXSZ:= #FFFD
  XTIME:=  #000C
  XHSPCT:= #FFF9
  XR0:=    #0000
  XMASK:=  #000D
  XHOLTO:= #FFF9
  XR1:=    #0001
  XPRPC:=  #000B
  XR2:=    #0002
  XHPBSZ:= #FFFC
  XR3:=    #0003
  XLIRP:=  #0010
  XR4:=    #0004
  XPROG:=  #000A
  XR5:=    #0005
  XHWORK:= #FFF0
  XR6:=    #0006
  XR7:=    #0007
  XIDAD:=  #0012
  XHDATE:= #FFF2
  XHTEST:= #FFF8
  XLISP:=  #000F
  XHNAME:= #FFF0
  XTMRES:= #0013
USE #0
MESSAGE <:CALL SYSNOD:> ; 00000182 0 0288  LEVEL 1  NAMES:
  A=       #000C
USE BASE
  SYSMPI:= #2C70
  ECRLPN:= #01BC
  OCILPN:= #015C
  ICPLPN:= #0030
  SYSERR:= #14F0
  IDPLPN:= #00B4
  CRILPN:= #012C
  SYSSME:= #1F90
  TSTLPN:= #0174
  SYSTME:= #AB00
  SYSCPT:= #7000
  CDTLPN:= #01A4
  SYSESP:= #F000
  SYSMON:= #07F0
  SYSRTC:= #1400
  SYSSIM:= #8000
  EDTLPN:= #0270
  SYSESR:= #00C0
  LPDLPN:= #0138
  LOGLPN:= #01F8
  SYSMXI:= #25D0
  ODPLPN:= #00C0
  MQELPN:= #027C
  LPILPN:= #0144
  SYSDBA:= #1F90
  MPILPN:= #009C
  MQILPN:= #01E0
  SYSTCT:= #A580
  SYSESS:= #0200
  SYSLMT:= #0040
  SYSCDC:= #0081
  ERRLPN:= #003C
  TS2LPN:= #018C
  HXILPN:= #0234
  SYSOLT:= #1A40
  SYSEDC:= #5B80
  SYSCDE:= #7FFF
  SYSSXD:= #90F0
  SYSONT:= #69F0
  SYSTQM:= #1940
  SYSTIT:= #9BB0
  ESPLPN:= #0018
  MXCLPN:= #0084
  MPLLPN:= #0258
  SYSMXP:= #6FF0
  MONLPN:= #0000
  RTCLPN:= #006C
  SIMLPN:= #024C
  ESRLPN:= #0024
  MQOLPN:= #01EC
  HXLLPN:= #0228
  PWFLPN:= #0060
  MXILPN:= #0078
  SYSES1:= #F000
  SYSSMT:= #0010
  SYSTSM:= #8000
  SYSES2:= #F200
  DBALPN:= #00CC
  CSTLPN:= #01C8
  LTLLPN:= #0054
  TCTLPN:= #0264
  SYSOCD:= #8440
  SYSDME:= #8D40
  SYSSUP:= #8D50
  TSELPN:= #0114
  SYSEND:= #8D40
  SYSMCH:= #0E40
  OLTLPN:= #0168
  GSTLPN:= #01D4
  SYSCMI:= #2FC0
  SYSCRD:= #8640
  TSILPN:= #0108
  ONTLPN:= #0180
  ECFLPN:= #01B0
  TQMLPN:= #0048
  TITLPN:= #0240
  SYSICP:= #13C0
  SYSIDP:= #3600
  EDILPN:= #00D8
  SXILPN:= #021C
  MXRLPN:= #0090
  SYSTST:= #6EF0
  SYSCDT:= #7650
  SYTTBF:= #8D40
  SYSEDT:= #A300
  TSMLPN:= #00F0
  TMSLPN:= #00FC
  SYSESG:= #14A0
  SYSLPD:= #8A40
  SYSMCP:= #FFE0
  SYSLMH:= #07B0
  SYSOME:= #7650
  EDLLPN:= #00E4
  SXLLPN:= #0210
  SYSLOG:= #95D0
  SYSPME:= #AB00
  OCDLPN:= #0150
  SUPLPN:= #0204
  SYSODP:= #5540
  TMXLPN:= #0288
  MCHLPN:= #000C
  SYSHXD:= #9260
  CMILPN:= #00A8
  CRDLPN:= #0120
  PCFLPN:= #0198
USE #0
MESSAGE <:CALL MNNNOD:> ; 00000203 0 00A7  LEVEL 1  NAMES:
USE BASE
  DDLE:=   #006B
  RI:=     #0050
  OLTO:=   #006F
  GNBF:=   #0056
  INDQCX:= #0077
  RTI:=    #0054
  DECR:=   #00A6
  BDQCST:= #0088
  WA:=     #004D
  GNIB:=   #0057
  BEQCST:= #0087
  LTUTMO:= #00A4
  RWI:=    #0052
  TFRW:=   #0071
  INCH:=   #0074
  WPSLP:=  #007D
  ACDT:=   #008C
  WPSTLP:= #007D
  ICDQCB:= #0074
  PNPCDT:= #0095
  SOLT:=   #0049
  GSST:=   #0061
  DFTA:=   #006D
  DCDT:=   #008D
  LNFIQ:=  #0069
  XMIBUF:= #009D
  SRLT:=   #0048
  GNBN:=   #0056
  GNOB:=   #0058
  QDLE:=   #006A
  CKPCST:= #0086
  RNBF:=   #005C
  TODQB:=  #0076
  RSCOC:=  #0079
  GETCST:= #0084
  CHKLTU:= #00A2
  WL:=     #004C
  MNNCNT:= #0067
  OCDQCB:= #0075
  EDITST:= #00A0
  WWSTLP:= #0071
  RODCST:= #008B
  PRSCDT:= #0097
  PGPCST:= #0089
  CGICDT:= #009A
  GBSM:=   #005F
  GNSA:=   #005E
  INDQCB:= #0073
  PRGCST:= #0085
  PIPCST:= #008A
  GPB:=    #0042
  GNSC:=   #0059
  RBF:=    #0064
  LPERR:=  #0080
  GLET:=   #0045
  DMLP:=   #007F
  PBUF:=   #0068
  RFTA:=   #006C
  OTCH:=   #0075
  WSCOC:=  #007A
  LDRM:=   #0083
  RNBN:=   #005C
  TFRC:=   #0072
  WBSTOC:= #007F
  RL0CDT:= #0090
  GNIS:=   #005A
  WSCTOC:= #007A
  RL1CDT:= #0091
  EDOTST:= #00A1
  RFI:=    #0055
  LPER:=   #0080
  WDSTOC:= #007F
  CEOCDT:= #009B
  LNIQ:=   #0062
  PUTBUF:= #0068
  GBS:=    #005F
  LPB:=    #0042
  EDCTMI:= #009E
  SCH:=    #0043
  GBST:=   #0060
  WBF:=    #0066
  OEICDT:= #0098
  IPPQ:=   #0044
  OGICDT:= #0098
  CPP:=    #0041
  PRGLTU:= #00A3
  RBF1:=   #0065
  OLTF:=   #006F
  CRP:=    #0040
  RNSC:=   #005D
  RLET:=   #0046
  GNOS:=   #005B
  RLI:=    #0053
  WSCLP:=  #007C
  CLEAR:=  #0081
  RS0CDT:= #008E
  INQ:=    #0044
  LNOQ:=   #0063
  TFOP:=   #0070
  WDSLP:=  #007E
  RS1CDT:= #008F
  RCPU:=   #0051
  ERR:=    #006E
  WBSTLP:= #007E
  WPSOC:=  #007B
  WSCTLP:= #007C
  COPY:=   #0082
  PSELTU:= #009C
  WDSTLP:= #007E
  LDMRAM:= #0083
  PAPCDT:= #0094
  EDCTMO:= #009F
  TODQCB:= #0076
  EDCQMS:= #0092
  OEOCDT:= #0099
  INDQB:=  #0073
  RBSFOC:= #007D
  SLET:=   #0047
  SELT:=   #004A
  RSCFOC:= #0079
  PEPCDT:= #0096
  GNBA:=   #005E
  WBF1:=   #0067
  RHXP:=   #0078
  PGPCDT:= #0093
USE #0
MESSAGE <:CALL CCONOD:> ; 00000102 0 0000  LEVEL 1  NAMES:
USE BASE
  CCBCT2:= #0107
  CCECS1:= #0000
  CCSTCL:= #008C
  CCECS2:= #0001
  CCLEBC:= #0001
  CCECS3:= #0002
  CCECS4:= #0003
  CCECS5:= #0004
  CCECS6:= #0005
  CCLWDT:= #2500
  CCEDCM:= #0002
  CCHCPC:= #0005
  CCPRPT:= #030B
  CCLMBC:= #0008
  CCLNBC:= #0008
  CCHSBC:= #000A
  CCSWDT:= #1300
  CCHSCC:= #0005
  CCEMOC:= #0005
  CCCONF:= #0002
  CCHMOC:= #0007
  CCSPUR:= #0002
  CCCRRC:= #00FF
  CCLSBC:= #0008
  CCLSCC:= #0001
  CCSPAC:= #8C8C
  CCMNAL:= #006C
  CCPBCT:= #0015
  CCMNEL:= #0014
  CCHTMC:= #0003
  CCOLOC:= #0000
  CCIMCX:= #2400
  CCLPA:=  #0010
  CCHABC:= #0008
  CCUNCL:= #0005
  CCCPC2:= #0002
  CCMNLL:= #006C
  CCCPC3:= #0003
  CCMNML:= #0014
  CCPSPA:= #00FF
  CCMNNL:= #0014
  CCHEBC:= #0004
  CCBCT1:= #0015
USE #0
MESSAGE <:CALL ADANOD:> ; 00000065 0 0015  LEVEL 1  NAMES:
USE BASE
  ADMON:=  #0011
  ADOLTO:= #0010
  ADIPT:=  #0000
  ADTMSK:= #0007
  ADGST:=  #0005
  ADTLVL:= #0012
  ADICP:=  #0004
  ADCLK:=  #0013
  ADOTOD:= #0006
  ADCIVT:= #0008
  ADRCPU:= #0014
USE #0
MESSAGE <:CALL GDSNOD:> ; AU000079 0 0004  LEVEL 1  NAMES:
USE BASE
  PBORDN:= #0001
  PBLEL:=  #0007
  ICCNT:=  #0004
  PBFOL:=  #0003
  PBOPB:=  #000B
  PBPPB:=  #0008
  EBAS:=   #0008
  QCLQE:=  #0001
  PBFRL:=  #0002
  QCMQE:=  #0003
  FORDL:=  #0003
  DQCIBC:= #0003
  DQCISU:= #0008
  IDAT:=   #0005
  PBPRI:=  #0009
  PRCLPN:= #000A
  PBLOL:=  #0006
  PBEXPR:= #0002
  PBLGT:=  #000C
  IMCNT:=  #0003
  PBFWL:=  #0000
  PBLRL:=  #0005
  PBLPN:=  #000A
  PBNUSD:= #0003
  RCQE:=   #0002
  LORDL:=  #0006
  PRCSTA:= #0009
  DQCOBC:= #0006
  OBAS:=   #000B
  RFQE:=   #0000
  FEXPL:=  #0004
  ODAT:=   #0007
  PBIDLE:= #FFFF
  DQCCQE:= #0002
  CQE:=    #0002
  DQCFQE:= #0000
  FQE:=    #0000
  FWLNK:=  #0000
  RLQE:=   #0001
  LEXPL:=  #0007
  DQCIB:=  #0005
  PBRVL:=  #0001
  FROUL:=  #0002
  DQCLQE:= #0001
  PBROUT:= #0000
  LQE:=    #0001
  MQE:=    #0003
  DQCIBX:= #0004
  OCNT:=   #0006
  DQCOB:=  #0007
  PBFEL:=  #0004
  RVLNK:=  #0001
  LROUL:=  #0005
  QCCQE:=  #0002
  PRCBLL:= #000C
  QCFQE:=  #0000
USE #0
MESSAGE <:CALL LETNOD:> ; 00000125 0 0008  LEVEL 1  NAMES:
USE BASE
  MXICMI:= #0001
  CMIMXI:= #0001
  MXIIDP:= #0002
  IDPMXI:= #0001
  LTROUT:= #0000
  EDCCMI:= #0001
  CMIEDC:= #0001
  ODPRTC:= #0001
  RTCODP:= #0001
  EDCIDP:= #0001
  IDPEDC:= #0001
  MXIODP:= #0002
  ODPMXI:= #0002
  LTTYP:=  #0001
  LTMS1:=  #0004
  EDCODP:= #0001
  ODPEDC:= #0001
  LTORDN:= #0001
  LTMS2:=  #0005
  LTMS3:=  #0006
  LTMST0:= #0000
  LTMS4:=  #0007
  LTMST1:= #0001
  LTMST2:= #0002
  LTMST3:= #0003
  MXIRTC:= #0001
  RTCMXI:= #0001
  CMIIDP:= #0000
  IDPCMI:= #0000
  EDCRTC:= #0001
  RTCEDC:= #0001
  MPITSM:= #0002
  TSMMPI:= #0002
  LTLNK:=  #0000
  LTSND:=  #0003
  CMIODP:= #0001
  ODPCMI:= #0001
  LTEXPR:= #0002
  LTLGT:=  #0008
  CMIMPI:= #0002
  MPICMI:= #0002
  ODPIDP:= #0002
  IDPODP:= #0002
  LTRCV:=  #0002
  EDCTQM:= #0001
  TQMEDC:= #0001
  CMIRTC:= #0001
  RTCCMI:= #0001
USE #0
MESSAGE <:CALL PCFNOD:> ; 00000114 0 0252  LEVEL 1  NAMES:
  PCGSRL=  #0000
  PCGSRN=  #0017
  PCGSRS=  #0001
  PCTJTN=  #0010
USE BASE
  PCNMQE:= #0005
  PCFMQO:= #000F
  PCNMQI:= #000D
  PCSCCT:= #010A
  PCNCD1:= #0001
  PCNCD2:= #0002
  PCNOAT:= #008D
  PCNRTA:= #0014
  PCMCRS:= #0017
  PCSMQE:= #0006
  PCRSPA:= #0009
  PCMXAP:= #0012
  PCEIST:= #0092
  PCEMQT:= #0248
  PCNGSR:= #0000
  PCSMQI:= #000E
  PCNMQO:= #0010
  PCMSAT:= #0020
  PCCTJT:= #0040
  PCZERO:= #0019
  PCEOST:= #009C
  PCEIS0:= #0000
  PCEIS1:= #0001
  PCMCEF:= #0016
  PCNIST:= #0050
  PCSMQO:= #0011
  PCEOS0:= #0000
  PCEOS1:= #0001
  PCSCHA:= #00BA
  PCNOST:= #0088
  PCNIS0:= #0050
  PCEIAT:= #00A6
  PCPSWM:= #0008
  PCGSR1:= #0212
  PCEOS8:= #0008
  PCLIRA:= #000A
  PCEOS9:= #0009
  PCFMQE:= #0004
  PCMREF:= #0015
  PCFMQI:= #000C
  PCTOAA:= #0240
  PCOFA:=  #0007
  PCNOS0:= #0000
  PCNCCT:= #0112
  PCPBCT:= #0003
  PCLIC:=  #000B
  PCEOAT:= #00B0
  PCNOS4:= #0003
  PCMXAF:= #0013
  PCNOS5:= #0004
  PCFLGT:= #0252
USE #0
MESSAGE <:CALL CDTNOD:> ; 00000237 0 0010  LEVEL 1  NAMES:
  CDPSTC=  #001D
  CDIMCA=  #0013
  CDETYP=  #0019
  CDSTC=   #001C
  CDBID=   #0018
  CDMOX=   #0003
  CDPPEC=  #0021
  CDPEC=   #0020
  CDICCA=  #0012
USE BASE
  CDESIZ:= #001B
  CDISNR:= #D110
  CDNCT:=  #0001
  CDOSC:=  #0008
  CDIRPS:= #0007
  CDOSTA:= #0019
  CDPSTA:= #0004
  CDOCCA:= #0015
  CDTELT:= #001B
  CDIRPV:= #0009
  CDTNCT:= #FF0F
  CDIRXO:= #0004
  CDOCEB:= #000A
  CDOEST:= #0012
  CDIBLC:= #000F
  CDMOP:=  #0000
  CDIBNA:= #0000
  CDOSNM:= #182C
  CDOSCX:= #0003
  CDOLTO:= #0002
  CDOEBE:= #000F
  CDOONT:= #0005
  CDIOST:= #0008
  CDOIBD:= #0001
  CDOSNR:= #182C
  CDICBR:= #0005
  CDIAIM:= #1010
  CDIPSW:= #6000
  CDITXO:= #0003
  CDPRPT:= #000F
  CDETAB:= #000C
  CDIRXS:= #000A
  CDIAIR:= #9130
  CDCSEC:= #0005
  CDOBLC:= #0016
  CDSCHA:= #001A
  CDOBNA:= #0000
  CDIBDS:= #000D
  CDPPAC:= #0010
  CDOPBC:= #0017
  CDONEB:= #0018
  CDIBML:= #000C
  CDRPT:=  #0010
  CDOOBE:= #000D
  CDOSSR:= #183C
  CDOAIM:= #18E4
  CDIOAM:= #00C0
  CDIBUF:= #0008
  CDITXS:= #000B
  CDOPSW:= #6000
  CDISCH:= #0008
  CDIOAP:= #7835
  CDOAIR:= #1010
  CDPCA:=  #0003
  CDSPAC:= #000E
  CDIPER:= #0001
  CDOBDS:= #000E
  CDLIC:=  #0006
  CDIRGO:= #0006
  CDOBML:= #000C
  CDFLNK:= #0003
  CDIMSA:= #0007
  CDOFD:=  #000B
  CDMTCF:= #0002
  CDOEDS:= #000F
  CDOBUF:= #0014
  CDTYP:=  #0001
  CDISCM:= #0007
  CDLINK:= #0000
  CDPIC:=  #000D
  CDIOAT:= #02C0
  CDISEM:= #9010
  CDTIME:= #0002
  CDITME:= #000F
  CDODIS:= #0004
  CDIMCX:= #0009
  CDOPEN:= #0003
  CDBCT:=  #000B
  CDIHNT:= #0007
  CDISER:= #9110
  CDIINT:= #0004
  CDLCN:=  #0008
  CDOMSA:= #0013
  CDISC:=  #0000
  CDISTA:= #0011
  CDUSED:= #0005
  CDOSCM:= #0700
  CDISTC:= #000F
  CDOSEM:= #183C
  CDIBEB:= #000E
  CDIEST:= #0006
  CDISNM:= #5010
  CDISCX:= #0003
  CDIOSM:= #0008
  CDOSER:= #000B
  CDIOP:=  #7835
  CDICFE:= #0002
  CDOINT:= #0005
  CDZDIS:= #0004
  CDIOSP:= #7835
 
  CDMOM=   #0007-128*BASE-128*(PROG-1)
USE #0
MESSAGE <:CALL ECFNOD:> ; 00000283 0 00E0  LEVEL 1  NAMES:
  ECOCSZ=  #0013
USE BASE
  ECOTQI:= #0034
  ECGAKA:= #0010
  ECGSIZ:= #0090
  ECIRR:=  #0008
  ECONIX:= #0024
  ECGALA:= #0060
  ECOSSB:= #0023
  ECOSTA:= #00A0
  ECISIZ:= #0010
  ECOCCB:= #002F
  ECOADC:= #0005
  ECOEBA:= #00C0
  ECCALH:= #000D
  ECIALB:= #0018
  ECOPA1:= #0004
  ECORRP:= #0009
  ECOPA2:= #0005
  ECOXAT:= #0030
  ECIADM:= #0010
  ECOEAF:= #0000
  ECOSAZ:= #0020
  ECOASZ:= #0020
  ECIELA:= #0080
  ECGARB:= #0007
  ECCAQH:= #0007
  ECOTXD:= #0002
  ECINAF:= #0004
  ECGFLG:= #0006
  ECGCIM:= #000A
  ECIEND:= #0006
  ECOISW:= #0038
  ECIFLG:= #0010
  ECICQE:= #0008
  ECOLRX:= #0000
  ECOITX:= #0003
  ECIPAI:= #0011
  ECOSIZ:= #0020
  ECCIQH:= #0004
  ECGFQH:= #0000
  ECRSIZ:= #00E0
  ECCLCN:= #0002
  ECCFLK:= #0000
  ECOCLB:= #0026
  ECGDAT:= #0003
  ECOADM:= #001F
  ECISBC:= #0017
  ECISAD:= #0020
  ECGACW:= #0000
  ECGAKP:= #000F
  ECICLK:= #0019
  ECINAK:= #0002
  ECFLOC:= #003A
  ECISEB:= #0007
  ECOXLT:= #0031
  ECOLTX:= #0001
  ECOTQS:= #0000
  ECGCOM:= #000B
  ECOEBP:= #0006
  ECOAFP:= #002A
  ECOOSW:= #0039
  ECONTX:= #0025
  ECGRCL:= #0008
  ECGECX:= #0002
  ECIALR:= #0006
  ECISBI:= #0009
  ECOFLG:= #0020
  ECOTXO:= #000E
  ECCNQH:= #000A
  ECIFSI:= #0012
  ECCLNK:= #0000
  ECOCSC:= #0027
  ECINQI:= #0015
  ECOALO:= #0002
  ECOFSB:= #0022
  ECOAKP:= #0003
  ECCOFS:= #0000
  ECCRLK:= #0001
  ECICSL:= #0016
  ECOALP:= #0006
  ECOTEC:= #0033
  ECOTQ0:= #0034
  ECONKD:= #0004
  ECOTQ1:= #0036
  ECOLCP:= #0005
  ECGCMX:= #0001
  ECOEOM:= #0008
  ECGHMT:= #0009
  ECIQTB:= #000A
  ECISCQ:= #000B
  ECIEOS:= #0005
  ECOEMP:= #0001
  ECOLFP:= #002B
  ECIOFS:= #0010
  ECOLER:= #002E
  ECOOEP:= #0007
  ECORAQ:= #0008
  ECOPCQ:= #000C
  ECOARQ:= #0005
  ECGAK0:= #003F
  ECGUQH:= #0003
  ECGTHR:= #0000
  ECGAL0:= #001F
  ECCCST:= #0003
  ECIOPN:= #0001
  ECOS1S:= #0028
  ECGRDY:= #000F
  ECIEXP:= #0000
  ECOS2S:= #0029
  ECIITR:= #000C
  ECINXI:= #0014
  ECOSBM:= #000B
  ECOLCT:= #002D
  ECISTA:= #0040
  ECOATO:= #000A
  ECIOK:=  #0003
  ECIADC:= #0005
  ECOPAT:= #0003
  ECOPSB:= #0021
  ECOESM:= #0006
  ECONCT:= #000D
  ECIAP1:= #0002
  ECOLCW:= #0032
  ECIAP2:= #0005
  ECOSCQ:= #000D
  ECOFUL:= #0001
  ECOEOS:= #0007
  ECIAR1:= #0001
  ECOOFS:= #0020
  ECODTP:= #0002
  ECONKP:= #0004
  ECIEO1:= #0000
  ECIAR2:= #0004
  ECORCT:= #002C
  ECOLIT:= #0007
  ECONCX:= #0003
  ECIASZ:= #0020
  ECIEFA:= #0060
  ECIEO2:= #0003
  ECISSI:= #0013
  ECROFS:= #0000
  ECCSIZ:= #0010
  ECOQCW:= #0032
USE #0
MESSAGE <:CALL EOCNOD:> ; 00000195 0 0010  LEVEL 1  NAMES:
USE BASE
  EEC003:= #0002
  EEC021:= #000A
  EEC030:= #000C
  EEC004:= #0003
  EEC022:= #000A
  EEC031:= #000C
  EEC005:= #0003
  EEC014:= #0007
  EEC023:= #000A
  EEC032:= #000C
  EOCS12:= #0012
  EEC006:= #0004
  EEC015:= #0007
  EEC007:= #0004
  EEC025:= #000B
  EEC106:= #00C5
  EOCTSB:= #0007
  EEC008:= #0004
  EEC107:= #00C6
  EEC116:= #00CB
  EBBD1X:= #0003
  EEC009:= #0005
  EEC018:= #0008
  EEC108:= #00C7
  EEC117:= #00CC
  EBBD2X:= #0004
  EEC019:= #0009
  EEC118:= #00CC
  EOCTDT:= #0001
  EOCTNK:= #0004
  EBCNTX:= #0002
  BTNAK:=  #0046
  EEC10A:= #00C8
  EEC10B:= #00C9
  BTSETB:= #004B
  EEC10C:= #00CA
  EOCTRR:= #0006
  BTEOM:=  #0042
  EOCLCB:= #000E
  EOCEOB:= #000D
  EECECX:= #0008
  EBBIDX:= #0003
  EOCCRC:= #0064
  BTNAK2:= #0047
  BTEOS:=  #0043
  EOCTAC:= #0003
  EOCLCL:= #0005
  EOCTDC:= #0000
  EBUCFM:= #0700
  EOCATF:= #000E
  BTD:=    #0041
  EOCNCL:= #0005
  EECSRA:= #0001
  EOCLOC:= #0008
  EECSBR:= #0000
  EOARMB:= #0004
  EOCBDX:= #0007
  EECOUE:= #000E
  EOCRCL:= #0005
  BTACKL:= #0045
  EECURE:= #000F
  EBTYPX:= #0003
  EOCS1:=  #0001
  EOCS2:=  #0002
  BTNAKF:= #0048
  EOCS3:=  #0003
  EOCS4:=  #0004
  EBTABX:= #0003
  EOCS5:=  #0005
  EOCTAL:= #0005
  EOCSCL:= #0005
  BTRR:=   #004A
  EOCTLC:= #0002
  EOCLTF:= #000F
  BTACK:=  #0044
  BTLCB:=  #0049
  EOCHMT:= #05DC
  EEC001:= #0002
  EEC010:= #0006
  EEC002:= #0002
  EEC011:= #0006
  EEC020:= #0009
  EOCRTE:= #000A
USE #0
MESSAGE <:CALL EDCNOD:> ; 00001130 0 00E3  LEVEL 2  NAMES:
USE BASE
  ECFPTR:= #0042
  CDTPTA:= #004F
  COBUF:=  #006A
  COEBBC:= #006D
  COEBCC:= #006E
  EDMBAH:= #0020
  EDOBAH:= #0020
  MQEPTA:= #0050
  EDWORK:= #0054
  MQIPTA:= #0051
  CEEST:=  #005E
  PCFPTR:= #0044
  CITYPE:= #0064
  ECRPTR:= #0043
  LETPTA:= #0053
  CIEST:=  #0061
  EIBASE:= #0093
  CIBID:=  #0065
  LOOPCT:= #0016
  CDTPTR:= #0045
  MQOPTA:= #0052
  COEBRF:= #006B
  NMQEPT:= #005C
  EMBASE:= #0073
  CSTPTA:= #004B
  COEST:=  #0069
  COSMSK:= #0072
  NMQIPT:= #005F
  MQEPTR:= #0046
  EOBASE:= #00C3
  COEBBT:= #006F
  GSTPTA:= #004A
  MQIPTR:= #0047
  COBID:=  #006C
  CEFLG:=  #005D
  ECFPTA:= #004C
  EDIPRH:= #0380
  EDWRK0:= #0054
  CSCTYP:= #0017
  EDWRK1:= #0055
  EDWRK2:= #0056
  CIFLG:=  #0060
  CIBID1:= #0065
  EDWRK3:= #0057
  CIBID2:= #0066
  LETPTR:= #0049
  EDWRK4:= #0058
  EDWRK5:= #0059
  ECIITL:= #0019
  EDWRK6:= #005A
  EDWRK7:= #005B
  NMQOPT:= #0067
  CITAB:=  #0063
  CSCPLA:= #0018
  EDMPRH:= #0520
  MQOPTR:= #0048
  EDOPRH:= #0420
  CIBUF:=  #0062
  COFLG:=  #0068
  COEBPT:= #0070
  CSTPTR:= #0041
  PCFPTA:= #004E
  ECRPTA:= #004D
  EDIBAH:= #0030
  COEBPW:= #0071
  GSTPTR:= #0015
USE PROG
  EI1980:= #0012
  EI7290:= #0029
  EI1990:= #0013
  EMPROG:= #0050
  EOPROG:= #08F0
  EI19A0:= #0014
  EI19B0:= #0015
  EI19C0:= #0016
  EI19D0:= #0017
  EI19E0:= #0018
  EI19F0:= #0019
  EI19F1:= #001A
  EDCSYS:= #5B80
  EDISYS:= #6140
  EDMSYS:= #5C20
  EDOSYS:= #64C0
  ED0300:= #002B
  ED0500:= #0036
  EI1200:= #0000
  EI1600:= #0003
  EI4300:= #0020
  EI3500:= #001E
  EI1601:= #0004
  EI3410:= #001B
  EI1251:= #0001
  EI3600:= #001F
  EI1602:= #0005
  EI1800:= #0009
  EI3420:= #001C
  EI4410:= #0021
  EI7200:= #0028
  EI1603:= #0006
  EI1900:= #000A
  EI3430:= #001D
  EI1604:= #0007
  EI1910:= #000B
  EI5600:= #0023
  EI1920:= #000C
  EI4530:= #0008
  EI6420:= #0025
  EI5700:= #0024
  EI8400:= #002A
  EIPROG:= #0570
  EI1930:= #000D
  EI6520:= #0027
  EI1940:= #000E
  EI6440:= #0026
  EI1950:= #000F
  EI1960:= #0010
  EI1475:= #0002
  EI1970:= #0011
  EI4580:= #0022
USE #0
MESSAGE <:CALL EDINOD:> ; 00003318 0 00B4  LEVEL 2  NAMES:
USE PROG
  ED5100:= #07DE
  ED4300:= #05AC
  ED5200:= #07FA
  ED5300:= #0817
  ED4410:= #05D1
  ED5400:= #083D
  ED5500:= #088A
  ED5600:= #08AC
  ED5700:= #08B7
  ED4530:= #064B
  ED4580:= #068E
USE #0
MESSAGE <:CALL EDONOD:> ; 00003413 0 00D4  LEVEL 2  NAMES:
USE PROG
  ED7110:= #0ABB
  ED7200:= #0AD8
  ED7120:= #0ABE
  ED7040:= #09D3
  ED6420:= #095A
  ED7050:= #0A12
  ED7130:= #0AC6
  ED6440:= #097C
  ED6520:= #0988
  ED7060:= #0A25
  ED7070:= #0A43
  ED7080:= #0A78
  ED7140:= #0AC6
  ED7150:= #0AC6
  ED7160:= #0AC7
  ED7170:= #0AD1
  ED7190:= #0AD1
  ED7290:= #0B5C
  ED8400:= #0CA9
USE #0
MESSAGE <:CALL CSTNOD:> ; 00000744 0 0070  LEVEL 1  NAMES:
  CSTMAC=  #0043
  CSTPTS=  #005A
  CSTHMC=  #003D
  CSTOSX=  #0003
  CSTCSI=  #003A
  CSTCPR=  #0036
  CSTHMP=  #003C
  CSTELT=  #0070
  CSTCSO=  #003B
  CSTLAX=  #0008
  CSTBLX=  #0004
  CSTMSI=  #00FF
  CSTPAX=  #0008
  CSTCPX=  #0004
  CSTBRX=  #0004
  CSTCAC=  #0042
  CSTCTS=  #0037
  CSTSBX=  #0002
  CSTMSO=  #FF00
  CSTNSN=  #005B
  CSTTDX=  #0003
  CSTMOX=  #0004
  CSTISX=  #0003
  CSTEXX=  #0003
USE BASE
  CSTSTL:= #000A
  CSTMCA:= #0021
  CSTLAD:= #0008
  CSTCS3:= #003B
  CSTLTS:= #006B
  CSTTD1:= #006C
  CSTSNS:= #000B
  CSTCS4:= #003C
  CSTTLT:= #000D
  CSTSVL:= #002B
  CSTOSS:= #002C
  CSTSUM:= #0D18
  CSTCS5:= #003D
  CSTIHI:= #000C
  CSTBLE:= #004A
  CSTCOB:= #0025
  CSTMBE:= #000F
  CSTCS6:= #003E
  CSTFBL:= #004A
  CSTELC:= #0060
  CSTTPS:= #0013
  CSTDEL:= #000C
  CSTMP1:= #0035
  CSTVF1:= #0035
  CSTPAD:= #0000
  CSTCS7:= #003F
  CSTOSV:= #0000
  CSTOEB:= #0009
  CSTVF2:= #0036
  CSTXE1:= #003B
  CSTFLD:= #0004
  CSTIAL:= #000F
  CSTCBR:= #000E
  CSTVF3:= #0037
  CSTIT2:= #000A
  CSTPCD:= #000B
  CSTBRC:= #004C
  CSTLIB:= #004F
  CSTFOB:= #0051
  CSTPSW:= #000D
  CSTMCH:= #000E
  CSTHDL:= #0005
  CSTILC:= #0008
  CSTVXL:= #0009
  CSTVF4:= #0038
  CSTSYN:= #0008
  CSTMCI:= #0024
  CSTTXO:= #0003
  CSTCPF:= #0000
  CSTNIB:= #0050
  CSTHME:= #001E
  CSTECR:= #0030
  CSTIND:= #0033
  CSTIEM:= #000E
  CSTOXV:= #0006
  CSTICO:= #0006
  CSTCRF:= #000E
  CSTPCH:= #0040
  CSTBQH:= #004D
  CSTCIP:= #0023
  CSTIBQ:= #004E
  CSTREG:= #0000
  CSTBAS:= #0008
  CSTIHM:= #000B
  CSTIPF:= #000A
  CSTOIH:= #0008
  CSTEC:=  #0011
  CSTO0S:= #0002
  CSTTST:= #0002
  CSTNS1:= #0048
  CSTCCT:= #002E
  CSTBML:= #000F
  CSTNS2:= #0049
  CSTCDT:= #002F
  CSTO2S:= #0003
  CSTVTS:= #000F
  CSMSW1:= #005D
  CSTDUB:= #0063
  CSTTSW:= #0014
  CSTSTW:= #0016
  CSTSED:= #0002
  CSTV2M:= #000A
  CSTTCE:= #0001
  CSTALP:= #0001
  CSTLOB:= #0052
  CSMSW2:= #005E
  CSTOBL:= #006A
  CSTLOC:= #006D
  CSTISA:= #0000
  CSTNCM:= #0044
  CSTSTX:= #0064
  CSTMCO:= #0027
  CSTSEF:= #0004
  CSTSCH:= #0008
  CSTEMM:= #0001
  CSTNOB:= #0053
  CSTSHC:= #00B8
  CSTEXA:= #0003
  CSTDEV:= #0012
  CSTISC:= #0000
  CSTCON:= #0005
  CSTNOC:= #0041
  CSTDUF:= #0062
  CSTOEM:= #000E
  CSTDIS:= #0001
  CSTOCO:= #0007
  CSTSEI:= #0039
  CSTCOP:= #0026
  CSTIES:= #0000
  CSTOBQ:= #0051
  CSTPPC:= #000B
  CSTREL:= #0002
  CSTITE:= #0009
  CSTODP:= #0034
  CSTOHL:= #000F
  CSTISF:= #0007
  CSTFIS:= #0054
  CSTPPD:= #0000
  CSTIUE:= #0001
  CSTORC:= #0002
  CSTCQP:= #005F
  CSTEXG:= #0000
  CSTIPM:= #000A
  CSTIVF:= #0007
  CSTLIR:= #0010
  CSTPRE:= #001B
  CSTNPI:= #006F
  CSTRGO:= #0006
  CSTLAS:= #006B
  CSTPRG:= #000A
  CSTMBS:= #0009
  CSTCLS:= #0029
  CSTBLT:= #000C
  CSTOSA:= #000B
  CSTVAL:= #00B9
  CSTLNK:= #000E
  CSTSAP:= #001C
  CSTCSN:= #001D
  CSTCNS:= #0003
  CSTF1D:= #0001
  CSTOSC:= #0003
  CSTTDM:= #0009
  CSTMSF:= #0004
  CSTSNE:= #0005
  CSTNUC:= #0042
  CSTGSL:= #006D
  CSTOSE:= #0001
  CSTOES:= #000A
  CSTNMM:= #0000
  CSTPCT:= #0065
  CSTF4D:= #0005
  CSTXLD:= #000B
  CSTRCS:= #000A
  CSTOSF:= #0038
  CSTBRT:= #0008
  CSTLIS:= #0055
  CSTFOS:= #0057
  CSTESP:= #005A
  CSTCRS:= #0061
  CSTISM:= #000F
  CSTODV:= #0005
  CSTTPE:= #0000
  CSTNOM:= #0045
  CSTTIM:= #000C
  CSTIMT:= #0006
  CSTPAY:= #0003
  CSTNPM:= #0046
  CSTNIS:= #0056
  CSTINT:= #000C
  CSTVHM:= #000D
  CSTMOP:= #000C
  CSTIPS:= #001F
  CSTHMW:= #0000
  CSTNRM:= #0047
  CSTIXL:= #000C
  CSTOFX:= #0008
  CSTISQ:= #0054
  CSTPRM:= #0004
  CSTDRY:= #000C
  CSTTTA:= #0020
  CSTSTB:= #0006
  CSTBST:= #0066
  CSTSTC:= #002C
  CSTSDS:= #0003
  CSTSCT:= #005B
  CSTCSU:= #0008
  CSTSVC:= #005C
  CSTCQ0:= #0003
  CSTSUE:= #000D
  CSTLOS:= #0058
  CSTECC:= #0069
  CSTGST:= #0015
  CSTCHA:= #0028
  CSTDDD:= #0007
  CSTOMS:= #000C
  CSTOSM:= #000D
  CSTLTO:= #000E
  CSTEDC:= #0009
  CSMSH1:= #00BA
  CSTFL4:= #0005
  CSTVSF:= #0035
  CSTVTE:= #000B
  CSTDFC:= #0007
  CSTC6M:= #FF84
  CSTNOS:= #0059
  CSMSH2:= #00BB
  CSTCIB:= #0022
  CSTPSN:= #002D
  CSTIST:= #0006
  CSTITS:= #000D
  CSTOLV:= #0007
  CSTONT:= #0002
  CSMSH3:= #00BC
  CSTOPS:= #002A
  CSTV28:= #0008
  CSMSH4:= #00BD
  CSTEIB:= #0004
  CSTIDC:= #0002
  CSTOSQ:= #0057
  CSTIP1:= #0031
  CSTF4P:= #0008
  CSTNWO:= #000D
  CSTFIB:= #004E
  CSTIP2:= #0032
  CSTRPS:= #0007
  CSTNZM:= #0043
  CSTRSQ:= #0001
  CSTPPW:= #0038
  CSTLAA:= #000F
  CSTRPV:= #0009
  CSTEXZ:= #0006
  CSTBS1:= #0067
  CSTRXO:= #0004
  CSTCS1:= #0039
  CSTSKS:= #0006
  CSTBS2:= #0068
  CSTLAC:= #0000
  CSTCS2:= #003A
  CSTBBL:= #004B
 
  CSTSTM=  #00C0-128*BASE-128*(PROG-1)
  CSTLAM=  #FF00-128*BASE-128*(PROG-1)
  CSTBLM=  #F000-128*BASE-128*(PROG-1)
  CSTPAM=  #00FF-128*BASE-128*(PROG-1)
  CSTCPM=  #000F-128*BASE-128*(PROG-1)
  CSTBRM=  #0F00-128*BASE-128*(PROG-1)
  CSTMOM=  #F000-128*BASE-128*(PROG-1)
  CSTTMM=  #0E00-128*BASE-128*(PROG-1)
USE #0
MESSAGE <:CALL GSTNOD:> ; 00000389 0 04A0  LEVEL 1  NAMES:
USE BASE
  GST1SB:= #024B
  GSTSE0:= #0028
  GSTBBL:= #0001
  GSTSE1:= #0029
  GSTMCA:= #0043
  GSTNAB:= #008F
  GSTAMC:= #0008
  GSTNAC:= #000A
  GSTCMB:= #0010
  GSTSE2:= #002A
  GSTMST:= #0045
  GSTAOB:= #009B
  GSTSE3:= #002B
  GSTOCA:= #004D
  GSTTNS:= #0090
  GSTCMC:= #00AB
  GSTLTU:= #000C
  GSTNAE:= #000B
  GSTSE4:= #002C
  GSTFBL:= #0000
  GSTNCC:= #008D
  GSTLCE:= #0011
  GSTEBM:= #001B
  GSTECL:= #0188
  GSTF5:=  #024B
  GSTODB:= #0011
  GSTSE5:= #002D
  GSTEMC:= #0055
  GSTECM:= #0000
  GSTFCL:= #0057
  GSTNBE:= #0002
  GSTBEN:= #0010
  GSTLED:= #00F3
  GSTSE6:= #002E
  GSTCRA:= #004B
  GSTECN:= #0050
  GSTFCM:= #0058
  GSTMSX:= #00AA
  GSTPAE:= #0002
  GSTNEC:= #0015
  GSTMDE:= #001A
  GSTNBF:= #001F
  GSTCCP:= #0006
  GSTMED:= #00FF
  GSTIMA:= #0010
  GSTFLE:= #0017
  GSTOCE:= #0103
  GSTNAI:= #000C
  GSTDQC:= #0036
  GSTMUX:= #003F
  GSTEMF:= #0008
  GSTCPE:= #0006
  GSTUTQ:= #001C
  GSTCHM:= #0021
  GSTNEE:= #0014
  GSTPCF:= #0016
  GSTCPF:= #0014
  GSTOAI:= #0024
  GSTRP0:= #0002
  GSTMID:= #000C
  GSTREC:= #000F
  GSTILE:= #0001
  GSTIPA:= #000F
  GSTRP1:= #0003
  GSTCRE:= #0104
  GSTDQF:= #0033
  GSTIPB:= #0053
  GSTCRF:= #0016
  GSTRP2:= #0004
  GSTRP3:= #0005
  GSTIOE:= #000A
  GSTFPH:= #026C
  GSTTL1:= #0046
  GSTSST:= #00A7
  GSTSBC:= #00AE
  GSTIRE:= #0009
  GSTF10:= #0256
  GSTTL2:= #0047
  GSTASE:= #006C
  GSTTCC:= #008C
  GSTTCD:= #0015
  GSTCLM:= #003C
  GSTFD:=  #000B
  GSTLPA:= #004C
  GSTSED:= #00B2
  GSTMMD:= #0044
  GSTNMC:= #0054
  GSTLOC:= #00F3
  GSTNCM:= #0097
  GSTAIS:= #009E
  GSTLME:= #0005
  GSTF15:= #0261
  GSTMPB:= #0012
  GST25F:= #001F
  GSTCOM:= #0051
  GSTNCN:= #0000
  GSTMOC:= #0094
  GSTTSY:= #00A2
  GSTUXS:= #001D
  GSTSCH:= #0025
  GSTNEL:= #0173
  GSTMOD:= #000F
  GSTMPC:= #004F
  GSTBRL:= #0059
  GSTLOE:= #000D
  GSTMCP:= #0000
  GSTNPC:= #000D
  GSTDQL:= #0034
  GSTNMF:= #0008
  GSTNNE:= #0019
  GSTLPE:= #0105
  GSTCDY:= #019D
  GSTDQM:= #0037
  GSTILM:= #003E
  GSTMRC:= #0041
  GSTCMR:= #00AC
  GSTMOF:= #0026
  GSTMQE:= #001B
  GSTDQN:= #0035
  GSTIXA:= #004A
  GSTUID:= #001F
  GSTOCR:= #004E
  GSTPPE:= #0004
  GSTHWE:= #00F2
  GSTFQO:= #000B
  GSTMQI:= #0019
  GSTPRE:= #00A6
  GSTCC0:= #0021
  GSTASL:= #0106
  GSTCC1:= #0022
  GSTCC2:= #0023
  GSTBLT:= #0003
  GSTNAS:= #0091
  GSTMSB:= #00A8
  GSTSBM:= #0008
  GSTCC3:= #0024
  GSTAOS:= #009C
  GSTOC:=  #0008
  GSTNSC:= #0007
  GST25L:= #001E
  GSTCC4:= #0025
  GSTTMC:= #0039
  GSTTNB:= #008E
  GSTCC5:= #0026
  GSTTDM:= #0038
  GSTMLM:= #003A
  GSTCOS:= #0052
  GSTUCM:= #000E
  GSTLTE:= #0018
  GSTNSE:= #0008
  GSTCC6:= #0027
  GSTBQS:= #0003
  GSTAXM:= #0095
  GSTCR:=  #0009
  GSTMXB:= #000E
  GSTI1C:= #0030
  GSTOLM:= #003D
  GSTNMM:= #0097
  GSTSBR:= #00AF
  GSTOSE:= #0013
  GSTNSF:= #0020
  GSTLGT:= #04A0
  GSTFOS:= #0000
  GSTMLP:= #0042
  GSTTOE:= #0003
  GSTSOF:= #0022
  GSTPET:= #0048
  GSTNOM:= #0098
  GSTXCN:= #001E
  GSTEXL:= #000E
  GSTFPS:= #026F
  GSTI2E:= #0032
  GSTMRL:= #0041
  GSTNPM:= #0099
  GSTNON:= #000B
  GSTFPT:= #04A0
  GSTMRM:= #0001
  GSTFQT:= #0003
  GSTMQO:= #001A
  GSTNRM:= #009A
  GSTTRF:= #00A1
  GSTXFN:= #0106
  GSTHRS:= #00A3
  GSTPWF:= #000D
  GSTTHR:= #0092
  GSTPRM:= #0007
  GSTMRR:= #00A9
  GSTSBS:= #00AD
  GSTMC0:= #0003
  GSTTSB:= #0014
  GST52:=  #001D
  GST1CL:= #00AB
  GSTMC1:= #0004
  GSTDBB:= #0013
  GSTCST:= #0017
  GSTMC2:= #0005
  GSTCBD:= #0059
  GSTMC3:= #0006
  GST55:=  #0020
  GSTTLM:= #0040
  GSTLP:=  #000A
  GSTLOS:= #0001
  GSTMP:=  #008A
  GSTNSM:= #0097
  GSTNLT:= #0007
  GSTNSN:= #0009
  GSTAIB:= #009D
  GSTMSO:= #00A4
  GSTLTO:= #00FE
  GSTNOS:= #0002
  GSTSWE:= #00B0
  GSTECE:= #0014
  GSTECF:= #0018
  GSTXLM:= #003B
  GSTCSZ:= #008B
  GSTMPT:= #0093
  GSTGBE:= #0012
  GSTFEC:= #008C
  GSTIDB:= #000F
  GSTDIB:= #001C
  GSTI1N:= #002F
  GSTMSR:= #00A5
  GSTI2N:= #0031
  GSTNXM:= #0098
  GSTMXP:= #0049
  GSTGSZ:= #008A
  GSTNZM:= #0096
  GSTXPN:= #000C
  GSTIAI:= #0023
USE #0
MESSAGE <:CALL MQXNOD:> ; 00000244 0 0004  LEVEL 1  NAMES:
  MQIECT=  #0080
  MQIBIX=  #0008
  MQITYX=  #0008
  MQELAX=  #0008
  MQOECT=  #0080
  MQILAX=  #0008
  MQOLAX=  #0008
  MQEECT=  #0032
USE BASE
  MQOEND:= #0000
  MQEDIS:= #0004
  MQILOC:= #0004
  MQITXS:= #000B
  MQOSYN:= #0002
  MQOHLD:= #0007
  MQISCH:= #0008
  MQOFLG:= #0000
  MQEPER:= #0001
  MQERGO:= #0006
  MQIPER:= #0001
  MQOBDS:= #000E
  MQIRGO:= #0006
  MQOBML:= #000C
  MQOSP1:= #0003
  MQEELT:= #0004
  MQOLOC:= #0002
  MQIELT:= #0004
  MQODIS:= #0004
  MQESER:= #000B
  MQEINT:= #0004
  MQEEXP:= #000E
  MQIHNT:= #0007
  MQEMXI:= #0001
  MQIINT:= #0004
  MQERDY:= #0004
  MQESTA:= #0001
  MQEBAD:= #0002
  MQIMXI:= #0001
  MQESTC:= #000F
  MQIRDY:= #0004
  MQISTA:= #0001
  MQIBAD:= #0002
  MQISTB:= #0003
  MQISTC:= #000F
  MQOELT:= #0004
  MQEEDC:= #0003
  MQELTO:= #0002
  MQECFE:= #0002
  MQEONT:= #0005
  MQIEDC:= #0003
  MQEESZ:= #0004
  MQOSER:= #000B
  MQICFE:= #0002
  MQERPS:= #0007
  MQIBID:= #0000
  MQIESZ:= #0004
  MQOMXI:= #0001
  MQERPV:= #0009
  MQIRPS:= #0007
  MQORDY:= #0004
  MQOSTA:= #0001
  MQOBAD:= #0002
  MQELAD:= #0008
  MQIRPV:= #0009
  MQIRXO:= #0004
  MQILAD:= #0008
  MQIBNA:= #0000
  MQOEDC:= #0003
  MQOLTO:= #0002
  MQOEBE:= #000F
  MQEOBE:= #000D
  MQEEND:= #0000
  MQECBR:= #0005
  MQOONT:= #0005
  MQESYN:= #0002
  MQEHLD:= #0007
  MQOIBD:= #0001
  MQEFLG:= #0000
  MQETXO:= #0003
  MQOESZ:= #0004
  MQIEND:= #0000
  MQICBR:= #0005
  MQIBEP:= #000E
  MQETYP:= #0000
  MQERXS:= #000A
  MQISYN:= #0002
  MQIHLD:= #0007
  MQIFLG:= #0000
  MQITXO:= #0003
  MQIRXS:= #000A
  MQITYP:= #0008
  MQEBDS:= #000E
  MQOLAD:= #0008
  MQOBNA:= #0000
  MQEBML:= #000C
  MQIBDS:= #000D
  MQELOC:= #0002
  MQETXS:= #000B
  MQIBML:= #000C
  MQESCH:= #0008
  MQOOBE:= #000D
 
  MQOEFM=  #FFFE-128*BASE-128*(PROG-1)
  MQOLAM=  #FF00-128*BASE-128*(PROG-1)
  MQELGT=  #00C8+ 50*BASE+  0*(PROG-1)
  MQILGT=  #0200-128*BASE+  0*(PROG-1)
  MQOLGT=  #0200-128*BASE+  0*(PROG-1)
  MQEEFM=  #FFFE-128*BASE-128*(PROG-1)
  MQIEFM=  #FFFE-128*BASE-128*(PROG-1)
  MQIBIM=  #00FF-128*BASE-128*(PROG-1)
  MQITYM=  #FF00-128*BASE-128*(PROG-1)
  MQELAM=  #FF00-128*BASE-128*(PROG-1)
  MQILAM=  #FF00-128*BASE-128*(PROG-1)
USE #0
MESSAGE <:CALL BINNOD:> ; 00000086 0 0002  LEVEL 1  NAMES:
  BINCXO=  #0004
  BINTCX=  #0003
  BINSEX=  #0003
  BINETX=  #0002
  BINOSQ=  #0013
  BINWXO=  #0002
  BINEFX=  #0003
  BINLGT=  #0014
  BINCNX=  #0006
USE BASE
  BINTER:= #000D
  BINURE:= #0007
  BINEXO:= #0004
  BINSTA:= #0001
  BINTCS:= #000B
  BINEIB:= #0006
  BINCAP:= #0024
  BINSTP:= #000B
  BINMSX:= #0002
  BINECP:= #0020
  BINIFM:= #3800
  BINSEC:= #0008
  BINETC:= #0006
  BINLOC:= #0002
  BINLNK:= #0000
  BINCNT:= #0000
  BINHMS:= #000C
  BINIO:=  #000E
 
  BINIOI=  #4000-128*BASE-128*(PROG-1)
  BINCNM=  #003F-128*BASE-128*(PROG-1)
  BINIOM=  #C000-128*BASE-128*(PROG-1)
  BINIOO=  #8000-128*BASE-128*(PROG-1)
  BINTCM=  #3800-128*BASE-128*(PROG-1)
  BINSEM=  #0700-128*BASE-128*(PROG-1)
  BINETM=  #00C0-128*BASE-128*(PROG-1)
USE #0
MESSAGE <:CALL MSBNOD:> ; 00000135 0 0044  LEVEL 1  NAMES:
  MSLADM=  #FF00
  MSCACX=  #0008
  MSMCCM=  #00FF
  MSLADS=  #0008
  MSMCCS=  #0000
  MSSECM=  #0700
  MSLADX=  #0008
  MSMCCX=  #0008
  MSPREM=  #F000
  MSSECS=  #0008
  MSSECX=  #0003
  MSSEQM=  #00FF
  MSPRES=  #000C
  MSCACM=  #00FF
  MSPREX=  #0004
  MSSHD1=  #0076
  MSSHD2=  #0077
  MSSHD3=  #0078
  MSSEQS=  #0000
  MSSHD4=  #0079
  MSSEQX=  #0008
  MSCACS=  #0000
USE BASE
  MSITYP:= #0006
  MSBSEC:= #0008
  MSCHA:=  #0002
  MSOCAP:= #0080
  MSICSF:= #0003
  MSLAD:=  #007B
  MSIEOM:= #000E
  MSI0:=   #000F
  MSCW1:=  #003B
  MSMCC:=  #007A
  MSI1:=   #000E
  MSIVFF:= #0007
  MSCW2:=  #003C
  MSI2:=   #000D
  MSCW3:=  #003D
  MSI3:=   #000C
  MSCW4:=  #003E
  MSI4:=   #000B
  MSCW5:=  #003F
  MSI5:=   #000A
  MSI6:=   #0009
  MSI7:=   #0008
  MSI8:=   #0007
  MSIND:=  #003F
  MSI9:=   #0006
  MSILCT:= #0008
  MSWXO:=  #0002
  MSISPD:= #0004
  MSIEOS:= #0000
  MSIHMS:= #000B
  MSIOI:=  #4000
  MSIEXL:= #000C
  MSSEC:=  #007D
  MSI10:=  #0005
  MSITER:= #0009
  MSDLM:=  #000B
  MSI11:=  #0004
  MSIURE:= #0001
  MSLOC:=  #0044
  MS1CAP:= #0072
  MSI12:=  #0003
  MS2CAP:= #0076
  MSI13:=  #0002
  MSI14:=  #0001
  MSI15:=  #0000
  MSBSEX:= #0003
  MSIOM:=  #C000
  MSIOO:=  #8000
  MSPRE:=  #007D
  MSOSEQ:= #0042
  MSISOM:= #000F
  MSIFL4:= #0005
  MSITMP:= #0040
  MSLNK:=  #0000
  MSCNT:=  #0000
  MSLGT:=  #0044
  MSMSAX:= #0002
  MSCNX:=  #0008
  MSIO:=   #000E
  MSSEQ:=  #007C
  MSCXO:=  #0004
  MSUMI:=  #0040
  MSISTP:= #000D
  MSSTA:=  #0001
  MSISPU:= #000A
  MSIOCF:= #0002
USE #0
MESSAGE <:CALL COPNOD:> ; 00000124 0 0000  LEVEL 1  NAMES:
  CMCATV=  #00E0
  FS=      #001B
  CMCUD1=  #0080
  CMCCMC=  #0040
  CMCUD2=  #00A0
  CMCDMC=  #0000
  LS=      #001F
  CMCCME=  #00C0
  CMCDME=  #0020
  CMCCPE=  #0060
  XLT=     #00E0
  RCH=     #00F0
  CSA=     #0000
  WCH=     #0070
USE BASE
  FLASH:=  #0001
  OCSCPL:= #0001
  COSYN1:= #0016
  COSYN2:= #0069
  SECRET:= #0002
  OCSCPP:= #0001
  OCS1:=   #0001
  OCS2:=   #0002
  OCS3:=   #0003
  OCS4:=   #0004
  OCS5:=   #0005
  PRIORI:= #0004
  UNCLAS:= #0005
  COLF:=   #000A
  COSTCL:= #008C
  MAXMSC:= #001A
  COCR:=   #000D
  TOPSEC:= #0001
  COPCXS:= #000C
  OCS12:=  #0012
  COBIT7:= #0007
  READCR:= #00F0
  OCS13:=  #0013
  OCS14:=  #0014
  CONFID:= #0003
  OCS15:=  #0015
  COSUB:=  #001A
  UNPROC:= #0003
  OCS16:=  #0016
  IMMEDI:= #0003
  OCSCTS:= #0000
  ECBCNT:= #004C
  RESTRI:= #0004
  OCSCTX:= #0008
  WRITER:= #0070
  CONFCL:= #0002
  MONIT:=  #0002
  ROUTIN:= #0005
  NCBCNT:= #0003
  SPURIO:= #0002
  COSPAC:= #8C8C
  COPTL1:= #0001
  COPTL2:= #0020
  COPTL3:= #0020
  OCS5WC:= #0008
  COPTL4:= #0022
  COPTL5:= #00FC
  MAXCHN:= #00AE
  COMRLC:= #000C
  COPTL6:= #0100
USE #0
MESSAGE <:CALL DBPNOD:> ; 00000048 0 0000  LEVEL 1  NAMES:
  DATE=    #0401
USE #0
MESSAGE <:CALL DANNOD:> ; 00000062 0 0000  LEVEL 1  NAMES:
USE BASE
  DACR:=   #0014
  DASXDL:= #0034
  DAMXI:=  #0046
  DAALT1:= #0020
  DAOC1:=  #0005
  DALP:=   #0010
  DAMPS:=  #0018
  DAOC8:=  #0021
  DAMBC:=  #0000
  DAESCP:= #002B
  DACCPU:= #0000
  DAMRAM:= #000E
  DA3050:= #000F
  DASLT1:= #0010
  DAFD:=   #0008
  DACP1A:= #0040
  DACP2A:= #0080
  DAMCPU:= #0007
  DAMPI:=  #003C
  DASXDI:= #0038
  DAOC:=   #0005
  DAPROM:= #000F
USE #0
LIST
;-----------------------------------------------------------------------
;FF\f


;-----------------------------------------------------------------------
;
; RETURN LINKS (RL)/WORK.
;
;-----------------------------------------------------------------------
LOC=EMBASE
INTSTA: LOC=LOC+1                   ;   INT._DRIVEN_PROCESS STATE (IDLE/]1>!)
;-----------------------------------------------------------------------
;
; THE FOLLOWING ARE RETURN LINKS FOR VARIOUS ROUTINES
;
;-----------------------------------------------------------------------
RL1000: LOC=LOC+1                   ;
RL1050: LOC=LOC+1                   ;
RL1055: LOC=LOC+1                   ;
RL1060: LOC=LOC+1                   ;
RL1100: LOC=LOC+1                   ;
RL1220: LOC=LOC+1                   ;
RL1230: LOC=LOC+1                   ;
RL1250: LOC=LOC+1                   ;
RL1252: LOC=LOC+1                   ;
RL1260: LOC=LOC+1                   ;
RL1390: LOC=LOC+1                   ;
RL1400: LOC=LOC+1                   ;
RL1410: LOC=LOC+1                   ;
RL1460: LOC=LOC+1                   ;
RL1470: LOC=LOC+1                   ;
RL1510: LOC=LOC+1                   ;
RL1520: LOC=LOC+1                   ;
RL1540: LOC=LOC+1                   ;
RL1550: LOC=LOC+1                   ;
RL1560: LOC=LOC+1                   ;
RL1600: LOC=LOC+1                   ;
RL1650: LOC=LOC+1                   ;
RL3200: LOC=LOC+1                   ;
RL3210: LOC=LOC+1                   ;
RL3300: LOC=LOC+1                   ;
RL3310: LOC=LOC+1                   ;
RL3500: LOC=LOC+1                   ;
RL3600: LOC=LOC+1                   ;
RL3380: LOC=LOC+1                   ;
;-----------------------------------------------------------------------
;
; ASSIGNED CONSTANTS
;
;-----------------------------------------------------------------------
PCIDLE:=-1                          ;   PROCESS IDLE.
                                    ;
                                    ; BITS:
BIT7:=  7                           ;
                                    ; CAUSE CODES:
TIMEOUT:=3                          ;   TIMEOUT
;-----------------------------------------------------------------------
;FF\f


;-----------------------------------------------------------------------
;
; EDC MAIN PROGRAM SECTION.
;
;-----------------------------------------------------------------------
USE PROG
LOC=EMPROG
EI1650:ED1650                       ;
;-----------------------------------------------------------------------
; INITIALIZE THE INTERRUPT PROCESS (EDI)
;
; CALLED BY: ED2000
;
; CALLS: ED1050, ED1055, ED1060
;
; ENTRIES: ED1000
;
; RETURNS: LINK
;
; REGISTERS          ENTRY              EXIT
; R0,R1,R2,R3        -                  DESTROYED
; R4                 LINK               DESTROYED
; R5,R6,R7           -                  DESTROYED
;-----------------------------------------------------------------------
ED1000:                             ;
        MOV          R4  RL1000     ;
        JMP          S4  ED1050     ;   INITIALIZE PROCESS DESCRIPTOR
        JMP          S4  ED1055     ;   SET UP GENERAL AREA OF ECF
        JMP          S4  ED1060     ;   CREATE ECR'S
        MON   GLET                  ;   GET A LETTER
        JMPI         S4  EI1940    &;E  NO LETTER - REPORT ERROR
        MOV          R5  ECIITL     ;   SAVE LOCATION OF LETTER
        JMPI             RL1000     ;   RETURN
;-----------------------------------------------------------------------
;FF\f


;-----------------------------------------------------------------------
; INITIALIZE POINTERS IN THE PROCESS DESCRIPTOR
;
; CALLED BY: ED1000, ED1100
;
; CALLS: NONE
;
; ENTRIES: ED1050
;
; RETURNS: LINK
;
; REGISTERS          ENTRY              EXIT
; R0                 -                  DESTROYED
; R4                 LINK               DESTROYED
; R5                 -                  GSTP (REL)
; R7                 -                  DESTROYED
; R1, R2, R3, R6     -                  UNCHANGED
;-----------------------------------------------------------------------
ED1050:                             ;
        MOV          R4  RL1050     ;
        MOV   XBASE             R7  ;
        MOV   XGSTPR            R5  ;   INITIALIZE GST POINTERS
        MOV          R5  GSTPTA     ;
        SUB          R7         R5  ;
        MOV          R5  XGSTPR     ;
        MOV   GSTECF.X5         R0  ;   INITIALIZE ECF POINTERS
        MOV          R0  ECFPTA     ;
        SUB          R7         R0  ;
        MOV          R0  ECFPTR     ;
        MOV   GSTPCF.X5         R0  ;   INITIALIZE PCF POINTERS
        MOV          R0  PCFPTA     ;
        SUB          R7         R0  ;
        MOV          R0  PCFPTR     ;
        MOV   GSTMQE.X5         R0  ;   INITIALIZE MQE POINTERS
        MOV          R0  MQEPTA     ;
        SUB          R7         R0  ;
        MOV          R0  MQEPTR     ;
        MOV          R0  NMQEPT     ;
        MOV   GSTMQI.X5         R0  ;   INITIALIZE MQI POINTERS
        MOV          R0  MQIPTA     ;
        SUB          R7         R0  ;
        MOV          R0  MQIPTR     ;
        MOV          R0  NMQIPT     ;
        MOV   GSTMQO.X5         R0  ;   INITIALIZE MQO POINTERS
        MOV          R0  MQOPTA     ;
        SUB          R7         R0  ;
        MOV          R0  MQOPTR     ;
        MOV          R0  NMQOPT     ;
        JMPI             RL1050     ;   RETURN
;-----------------------------------------------------------------------
;FF\f


;-----------------------------------------------------------------------
; INITIALIZE GENERAL ECF AREA
;
; CALLED BY: ED1000
;
; CALLS: NONE
;
; ENTRIES: ED1055
;
; RETURNS: LINK
;
; REGISTERS          ENTRY              EXIT
; R0,R1,R3           -                  DESTROYED
; R2,R7              -                  UNCHANGED
; R4                 LINK               DESTROYED
; R5                 -                  GSTP (REL)
; R6                 -                  ECFP (REL)
;-----------------------------------------------------------------------
ED1055:                             ;
        MOV          R4  RL1055     ;
        MOV   ECFPTR            R6  ;
        MOVC  EOCHMT            R0  ;   PRESET HALTED MS TIMER.
        MOV          R0  ECGHMT.X6  ;
        MOVC  EOCRCL            R0  ;   PRESET RETRANSMISSION CONTER
        MOV          R0  ECGRCL.X6  ;
        MOVC  EOARMB            R0  ;
        MOV          R0 ECGARMB.X6  ;   SETUP ALLOWED MISSING BID RANGE
        MOD          R6             ;
        MOVC  ECGAKA            R4  ;
        MOVC  ECGAK0            X4  ;   PRESET ACK_ARRAY
        ADDC  ECGALA-ECGAKA     R4  ;
        MOVC  ECGAL0            X4  ;   PRESET ACKL_ARRAY
        MOV   XGSTPR            R5  ;
        MOV   GSTTCC.X5         R0  ;
        MOD          R0             ;   LOOKUP CST ENTRY ADDRESSES
        ADDC  GSTCDY-2          R5  ;   OF THE TWO HIGHEST LOGICAL
        MOVL  0.     X5         R01 ;   NUMBERED CST ENTRIES
        MOVL         R01 ECGCIM.X6  ;   SETUP TD&M CST ENTRY POINTERS
        JMPI             RL1055     ;   RETURN
;-----------------------------------------------------------------------
;FF\f


;-----------------------------------------------------------------------
; CREATE ECR'S AT INITIALIZATION
;
; CALLED BY: ED1000
;
; CALLS: NONE
;
; ENTRIES: ED1060
;
; RETURNS: LINK
;
; REGISTERS          ENTRY              EXIT
; R0,R3              -                  DESTROYED
; R1,R2              -                  UNCHANGED
; R4                 LINK               DESTROYED
; R5                 -                  GSTP (REL)
; R6,R7              -                  DESTROYED
;-----------------------------------------------------------------------
ED1060:                             ;
        MOV          R4  RL1060     ;
        MOV   XGSTPR            R5  ;   GET RELATIVE GST POINTER
        MOV   ECFPTR            R6  ;   GET RELATIVE ECF POINTER
        ADDC  ECGSIZ-ECRSIZ     R6  ;   SET TO POINT AT 1ST ECR
                                    ;   AFTER ADDING AT ED1062
        MOV   GSTNSE.X5         R0  ;   NO. OF EDC CHANNELS (COUNTER)
        MOV          R0         R3  ;
ED1062:                             ;
        ADDC  ECRSIZ            R6  ;   INCREMENT TO NEXT ECR
        MOV          R6         R7  ;
        MOD   XBASE                 ;
        ADDC  ECRSIZ            R7  ;   GET LOC. OF FOLLOWING ECR
        MOV          R7  ECCLNK.X6  ;   SET LINK TO FOLLOWING ECR
        SOB          R0  ED1062     ;   CONTINUE TILL ECR LINKS DONE
        CLR              ECCLNK.X6  ;   SET LAST LINK TO ZERO
        ADD   XBASE             R6  ;   ABS. LOC. OF LAST ECR
        MOV   ECFPTR            R4  ;
        MOD   ECFPTA                ;
        MOVC  ECGSIZ            R7  ;   LOCATION OF 1ST ECR
        MOV   R7  ECGFQH+QCFQE. X4  ;   SET LOC. OF 1ST ECR IN QUEUE
        MOV   R6  ECGFQH+QCLQE. X4  ;   SET LOC. OF LAST ECR IN QUEUE
        MOV   R3  ECGFQH+QCCQE. X4  ;   SET NO. OF ECR'S IN QUEUE
        MOD   ECFPTA                ;
        MOVC  ECGUQH+QCFQE      R0  ;   SET UP QCB FOR USED ECR'S
        MOV   R0  ECGUQH+QCLQE. X4  ;
        JMPI             RL1060     ;   RETURN
;-----------------------------------------------------------------------
;FF\f


;-----------------------------------------------------------------------
; INITIALIZE LETTER DRIVEN PROCESS (EDL)
;
; CALLED BY: ED3000
;
; CALLS: ED1050, ED1920, ED1950
;
; ENTRIES: ED1100
;
; RETURNS: LINK
;
; REGISTERS          ENTRY              EXIT
; R0,R1,R2,R3        -                  DESTROYED
; R4                 LINK               DESTROYED
; R5,R6,R7           -                  DESTROYED
;-----------------------------------------------------------------------
ED1100:                             ;
        MOV          R4  RL1100     ;
        JMP          S4  ED1050     ;   INITIALIZE PROCESS DESCRIPTOR
                                    ;-----------------------------------
                                    ;   CONSTRUCT AND SEND A LETTER
                                    ;   TO RTC TO CAUSE PERIODIC
                                    ;   ACTIVATION OF THE LETTER PROCESS
                                    ;-----------------------------------
        MON   GLET                  ;   GET A LETTER
        JMPI         S4  EI1950    &;E  NO LETTER - REPORT ERROR
        MOV          R5  LETPTA     ;
        MOV          R5         R7  ;
        SUB   XBASE             R7  ;   REL. POINTER TO LETTER
        MOVC  EDCRTC            R0  ;   LETTER TYPE = EDCRTC
        MOVC  RTCLPN            R2  ;   RECEIVER  = RTC
        MOVC  EDLLPN            R3  ;   SENDER = EDL
        MOV          R0  LTTYP. X7  ;
        MOVL         R23 LTRCV. X7  ;
        MOVC  LTMST1            R0  ;     MSG_TYPE=LTMST1
        MOVC  EOCRTE            R1  ;   TIME BETWEEN LETTERS
        MOV          R0  LTMS1. X7  ;
        MOV          R1  LTMS4. X7  ;
        MON   SLET                  ;   SEND THE LETTER
        JMPI         S4  EI1920    &;E  REPORT LETTER SENDING ERROR
        JMPI             RL1100     ;   RETURN
;-----------------------------------------------------------------------
;FF\f


;-----------------------------------------------------------------------
; GET POINTERS TO CST, CDT, ECR, DEPENDING ON ENTRY
;
; CALLED BY: ED1500, ED1510, ED8600, ED8610
;
; CALLS: NONE
;
; ENTRIES: ED1200 GETS ALL POINTERS
;          ED1201 GETS CDT AND ECR ONLY
;
; RETURNS: LINK   - NO CDT OR NO ECR
;          LINK+1 - DONE
;
; REGISTERS          ENTRY              EXIT
; R0,R1,R2,R3,R5     -                  UNCHANGED
; R4                 LINK               DESTROYED
; R6                 LCN                ECRP (REL)
; R7                 (CSTP (REL))       CSTP (REL)
;-----------------------------------------------------------------------
ED1200:                             ;
        MOV   XGSTPR            R7  ;
        MOD          R6             ;
        MOV   GSTCDY.X7         R7  ;   GET CST ADDR. FOR GIVEN LCN
        MOV          R7  CSTPTA     ;   SAVE ABSOLUTE LOCATION
        SUB   XBASE             R7  ;
        MOV          R7  CSTPTR     ;   SAVE RELATIVE CST LOCATION
ED1201:                             ;
        MOV   CSTCDT.X7         R6  ;   GET CDT POINTER FROM CST
        IEQ          R6  0          ;   IF NO CDT EXISTS - THEN
        JMP              0.     X4  ;   RETURN TO LINK
        MOV          R6  CDTPTA     ;   SAVE ABSOLUTE CDT POINTER
        SUB   XBASE             R6  ;
        MOV          R6  CDTPTR     ;   SAVE RELATIVE CDT POINTER
        MOV   CSTECR.X7         R6  ;   GET ECR POINTER FROM CST
        IEQ          R6  0          ;   IF NO ECR EXISTS - THEN
        JMP              0.     X4  ;   RETURN TO LINK
        MOV          R6  ECRPTA     ;   SAVE ABSOLUTE ECR POINTER
        SUB   XBASE             R6  ;
        MOV          R6  ECRPTR     ;   SAVE RELATIVE ECR POINTER
        JMP              1.     X4  ;   RETURN TO LINK+1
;-----------------------------------------------------------------------
;FF\f


;----------------------------------------------------------------------
; ENABLE INTERRUPTS MOMENTARILY
;
; THIS SUBROUTINE IS ENTERRED FROM A VARIETY OF PLACES FOR THE
; PURPOSE OF OPENING A "WINDOW" FOR INTERRUPTS TO BE SERVICED.
;
; CALLED BY: ED2100, ED2200, ED2500, ED3340, ED3600
;
; CALLS: NONE
;
; ENTRIES: ED1210 - RESERVES CPU INTERRUPT BEFORE ENABLING INTERRUPTS
;          ED1212 - ENABLES INTERRUPTS ONLY
;
; RETURNS: LINK
;
; REGISTERS:         ENTRY              EXIT
; R0,R1,R5,R6        -                  UNCHANGED
; R2,R3,R7           -                  DESTROYED (ED1210 ENTRY ONLY)
; R4                 LINK               DESTROYED
;----------------------------------------------------------------------
ED1210:                             ;
        MON   RCPU                  ;   RESERVE CPU INTERRUPT
ED1212:                             ; ENABLE WITHOUT RESERVE
        LDM   2#100                 ;   INT. WINDOW
        LDM   2#111                 ;
        MODN         R4             ;   INTSTA<>IDLE
        CLR              INTSTA.X4  ;
        JMP              0.     X4  ;   RETURN
;-----------------------------------------------------------------------
;FF\f


;-----------------------------------------------------------------------
; ALLOCATE AN ECR
;
; AN EMPTY ECR IS ALLOCATED, I.E. REMOVED FROM THE LIST OF EMPTIES
; AND ADDED TO THE LIST OF THOSE IN USE. VARIOUS DATA WITHIN THE ECR
; AND ITS ASSOCIATED CST ARE INITIALIZED.
;
; CALLED BY: ED3350
;
; CALLS: NONE
;
; ENTRIES: ED1220
;
; RETURNS: LINK   - NO ECR IN LIST OF EMPTIES
;          LINK+1 - DONE
;
; REGISTERS          ENTRY              EXIT
; R0,R1,R2,R3        -                  DESTROYED
; R4                 LINK               DESTROYED
; R5                 -                  DESTROYED
; R6                 -                  ECRP (REL)
; R7                 -                  CSTP (REL)
;-----------------------------------------------------------------------
ED1220:                             ;
        MOV          R4  RL1220     ;
                                    ; 1. GET AN ECR
        MOD   ECFPTA                ;
        MOVC  ECGFQH            R4  ;   PREPARE TO GET AN ECR FROM
        MOVC  1                 R3  ;   THE EMPTY LIST
        MON   LNOQ                  ;   DEQUEUE AN ECR FROM EMPTY LIST
        JMPI             RL1220    &;E  NO ECR - RETURN TO LINK
        SUB   XBASE             R6  ;
        MOV          R5  ECRPTA     ;   STORE ABSOLUTE ECR ADDRESS
        MOV          R6  ECRPTR     ;   STORE RELATIVE ECR ADDRESS
        MOD   ECFPTA                ;
        MOVC  ECGUQH            R4  ;
        MON   QDLE                  ;   QUEUE ECR ON THE USED LIST
        MOV   CSTPTA            R0  ;
        MOV   CSTPTR            R7  ;
        MOV   ECRPTA            R1  ;
        MOV          R0  ECCCST.X6  ;   SET POINTER TO CST IN ECR
        MOV          R1  CSTECR.X7  ;   SET POINTER TO ECR IN CST
                                    ;
                                    ; 2. INITIALIZE ECR COMMON SECTION
        MOV   CSTCS1.X7         R0  ;
                                        IF CSTLAD NE 0 THEN
        SRL          R0  CSTLAD         FI
        XTR          R0  CSTLAX     ;
        MOV          R0  ECCLCN.X6  ;   SAVE LCN IN ECR
        MOVC  ECCIQH            R0  ;
        JMP          S4  ED1224     ;   INITIALIZE INPUT BIN QUEUE
        MOVC  ECCAQH            R0  ;
        JMP          S4  ED1224     ;   INITIALIZE ACK QUEUE
        MOVC  ECCNQH            R0  ;
        JMP          S4  ED1224     ;   INITIALIZE NAK QUEUE
        MOVC  ECCALQH           R0  ;
        JMP          S4  ED1224     ;   INITIALIZE ACKL QUEUE
                                    ;
                                    ; 3. INITIALIZE ECR INPUT SECTION
        MOVC  1<ECISCQ          R0  ;
        MOV          R0  ECIFLG.X6  ;   SET SETBD COMMAND REQUIRED
                                    ;   (ALL OTHER ECIFLG'S CLEAR)
        MOVC  ECISAD            R0  ;
        MOV          R0  ECISBC.X6  ;   SETUP_INPUT_ARRAY_DIMENTION
                                    ;
                                    ; 4. INITIALIZE ECR OUTPUT SECTION
        MOVC  1<ECOSCQ          R0  ;
        MOV          R0  ECOFLG.X6  ;   SET SETBD COMMAND REQUIRED
                                    ;   (ALL OTHER ECOFLG'S CLEAR)
        MOV   RL1220            R4  ;
        JMP              1.     X4  ;   RETURN TO LINK+1
;-----------------------------------------------------------------------
                                    ;   LOCAL SUBROUTINE USED TO
                                    ;   INITIALIZE QUEUES.
                                    ;        R0 = QCB LOCATION
                                    ;        R6 = ECRPTR
                                    ;-----------------------------------
ED1224:                             ;
        MOVC  0                 R3  ;
        MOV          R6         R5  ;
        ADD          R0         R5  ;
        ADD   ECRPTA            R0  ;
        MOV          R3  QCFQE. X5  ;   SET 1ST QUEUE ELEMENT TO ZERO
        MOV          R0  QCLQE. X5  ;   LST QUEUE ELE. = ADDR. OF 1ST
        MOV          R3  QCCQE. X5  ;   SET ELEMENT COUNT TO ZERO
        JMP              0.     X4  ;     RETURN
;-----------------------------------------------------------------------
;FF\f


;-----------------------------------------------------------------------
; OPEN THE OUTPUT AREA OF AN ECR
;
; THE OUTPUT SECTION OF AN ECR IS PREPARED FOR THE START OF OUTPUT.
; THE OUTPUT AREA AND STATUS ARRAYS ARE CLEARED AND VARIOUS FLAGS
; AND POINTERS ARE INITIALIZED.
;
; CALLED BY: ED3360
;
; CALLS: NONE
;
; ENTRIES: ED1240
;
; RETURNS: LINK
;
; REGISTERS:         ENTRY          EXIT
; R0                 BID            DEST
; R1,R2,R5,R7        -              UNCH
; R3                 -              DEST
; R4                 LINK           UNCH
; R6                 ECRP(REL)      UNCH
;----------------------------------------------------------------------
ED1240:                             ;
        MOV          R0  EDWRK0     ;
        MOD   ECRPTA                ;
        MOVC  ECOOFS            R0  ;   ABS. LOC. OF ECR OUTPUT AREA
        MOVC  ECOCSZ            R3  ;   CLEAR OUTPUT PART OF ECR
        MON   CLEAR                 ;
        MOD   ECRPTA                ;
        MOVC  ECOSTA            R0  ;   ABS. LOC. OF OUTPUT STAT ARRAY
        MOVC  2*ECOASZ          R3  ;
        MON   CLEAR                 ;   CLEAR ENTIRE ARRAY
        MOV   EDWRK0            R0  ;
        XTR          R0  EOCBDX     ;   MAKE SURE BID IS MODULO 128
        MOV          R0  ECOPSB.X6  ;   INITIALIZE PREV. SEGMENT BID
        MOV          R0  ECOFSB.X6  ;   INITIALIZE 1ST SEGMENT BID
        MOV          R0  ECOSSB.X6  ;   INITIALIZE 2ND SEGMENT BID
        ADDC  1                 R0  ;
        MOV          R0  ECONIX.X6  ;   INITIALIZE NXT ARRAY INDEX
        MOV          R0  ECONTX.X6  ;   INITIALIZE NXT TO XMIT BID
                                    ;-----------------------------------
                                    ;   INITIALIZE OUTPUT FLAGS TO SHOW:
                                    ;        SETBD MODE
                                    ;        OUTPUT PROCESSING REQ'D
                                    ;        ACK TIMEOUT
                                    ;        ACKL TIMEOUT
                                    ;-----------------------------------
        MOVC  1<ECOSBM+1<ECOATO%    ;
            +1<ECOALTO+1<ECOPCQ R0  ;
        MOV          R0  ECOFLG.X6  ;
        JMP              0.     X4  ;   RETURN
;-----------------------------------------------------------------------
;FF\f


;-----------------------------------------------------------------------
; RELEASE DATA FROM QUEUES
;
; THIS SUBROUTINE HAS TWO ENTRIES. ED1251 RELEASES ALL DATA CONNECTED
; WITH ACK, NAK AND ACKL QUEUES. ED1250 DOES THE SAME AS ED1251 BUT IN
; ADDITION RELEASES DATA FROM THE INPUT BIN QUEUE.
;
; CALLED BY: ED3330,ED5300
;
; CALLS: NONE
;
; ENTRIES: ED1250 - RELEASE  DATA FROM ALL QUEUES
;          ED1251 - RELEASE ALL INPUT GENERATED OUTPUT
;
; RETURNS: LINK
;
; REGISTERS          ENTRY              EXIT
; R0,R1,R2,R3        -                  DESTROYED
; R4                 LINK               DESTROYED
; R5,R6,R7           -                  DESTROYED
;-----------------------------------------------------------------------
ED1250:                             ;
        MOV          R4  RL1250     ;
        MOVC  ECCIQH            R4  ;
        JMP          S6  ED1252     ;   RELEASE INPUT BIN QUEUE
        JMP              LOC+2      ;
ED1251:                             ;   BEGIN RELEASE OF OUTPUT DATA
        MOV          R4  RL1250     ;
        MOVC  ECCAQH            R4  ;
        JMP          S6  ED1252     ;   RELEASE ACK QUEUE
        MOVC  ECCNQH            R4  ;
        JMP          S6  ED1252     ;   RELEASE NAK QUEUE
        MOVC  ECCALQH           R4  ;
        JMP          S6  ED1252     ;   RELEASE ACKL QUEUE
        JMPI             RL1250     ;   RETURN
;-----------------------------------------------------------------------
                                    ;   LOCAL SUBROUTINE PERFORMS THE
                                    ;   ACTUAL RELEASE.
                                    ;-----------------------------------
ED1252:                             ;
        MOV          R6  RL1252     ;
        MOVC  255               R3  ;
        ADD   ECRPTA            R4  ;
        MON   LNOQ                  ;   DEQUEUE ALL BINS
        NOP                         ;
        MON   RNBN                  ;   RELEASE ALL BINS
        JMPI             RL1252     ;     RETURN
;-----------------------------------------------------------------------
;FF\f


;-----------------------------------------------------------------------
; RELEASE OUTPUT DATA
;
; THIS ROUTINE IS USED TO RELEASE ALL OUTPUT DATA FOR A GIVEN ECR.
;
; CALLED BY: ED3340, ED3360, ED3600
;
; CALLS: ED6520
;
;ENTRIES: ED1260
;
; RETURNS: LINK
;
; REGISTERS:         ENTRY          EXIT
; R0,R1,R2,R3,R5,R7  -              DESTROYED
; R4                 LINK           DESTROYED
; R6                 ECRP (REL)     ECRP (REL)
;-----------------------------------------------------------------------
ED1260:                             ;
        MOV          R4  RL1260     ;
        MOVC  0                 R0  ;
        MOVC  ECOSAZ            R1  ;   R1 = ARRAY SIZE = 32
        JMPI         S4  EI6520     ;   CLEAN OUT STATUS ARRAY
        MOV   ECOQCW.X6         R0  ;   GET QUEUE CONTROL WORD
        IBN          R0  ECOLTX     ;   IF BLOCK IS NOT AN LCB OR
        IBN          R0  ECOLIT     ;   IF THE LCB IS IN TRANSMISSION
        JMP              ED1262     ;   THEN GO RELEASE DATA
        MOVC  NT%                   ;
        (1<ECOLCP+1<ECOLTX)     R0  ;
        AND          R0  ECOQCW.X6  ;   CLEAR ALL BUT LCB BITS INECOQCW
        MOVC  1                 R3  ;
        MOV   ECOLER.X6         R5  ;
        MON   RNBN                  ;   RELEASE LCB BLOCK
ED1262:                             ;
        MOV   CSTPTR            R6  ;
        MON   RODCST                ;   RELEASE OUTPUT DATA FROM CST
        MOV   ECRPTR            R6  ;   BEGIN DISCARD MQO'S IN PROGRESS
        MOVC  EOCTDC            R0  ;     I.E.
        MOV          R0 ECOTQI0.X6  ;   SET QUEUE TYPES TO "DISCARD"
        MOV          R0 ECOTQI1.X6  ;
        JMPI             RL1260     ;   RETURN
;-----------------------------------------------------------------------
;FF\f


;----------------------------------------------------------------------
; GET AN MQE ENTRY
;
; THIS SUBROUTINE IS CALLED TO ACCESS AN MQE ENTRY WHICH IS READY
; TO BE PROCESSED. THE FLAG AND STATUS WORDS ARE MOVED TO LOCAL
; STORAGE AND MQE TABLE BOOKKEEPING IS DONE.
;
; CALLED BY: ED2090
;
; CALLS: ED19F1
;
; ENTRIES: ED1390
;
; RETURNS: LINK   - NON-EDC MQE
;          LINK+1 - EDC MQE
;          LINK+2 - MQE TABLE EMPTY
;
; REGISTERS:         ENTRY          EXIT
; R0,R1,R2,R6        -              DESTROYED
;R3,R5,R7            -              UNCHANGED
; R4                 LINK           DESTROYED
;----------------------------------------------------------------------
ED1390:                             ;
        MOV          R4  RL1390     ;
        MOV   NMQEPT            R6  ;   GET NXT MQE RELATIVE ADDRESS
        MOVL  MQEFLG.X6         R01 ;   GET MQE FLAGS AND STATUS
        MOVC  NT(1<MQEEND)      R2  ;
        AND          R0         R2  ;   MASK OUT "MQE'S END" FLAG
        IEQ          R2  0          ;   IF REMAINING FLAGS = ZERO - THEN
        JMP              2.     X4  ;   TAKE "EMPTY" EXIT
        IBZ          R0  MQEEDC     ;   IF NOT AN EDC MQE - THEN
        JMP              ED1392     ;   GO NOTIFY MXI
        ADDC  1                 R4  ;   SET UP "EDC MQE" EXIT
        IBZ          X6  MQERDY     ;   IF MQE NOT READY TO PROCESS
        JMPI         S4  EI19F1     ;E  REPORT AN ERROR
        RELS         X6  MQERDY     ;   CLEAR "READY TO PROCESS" FLAG
        MOV          R0  CEFLG      ;   MOVE FLAGS AND STATUS TO
        MOV          R1  CEEST      ;   LOCAL STORAGE
        JMP              ED1394     ;
ED1392:                             ;
        MOVC  DAMXI             R0  ;
        INT          R0             ;   *** TRIGGER MXI ***
ED1394:                             ;
        IBZP         X6  MQEHLD     ;   IF MXI HAS NOT SEEN THIS MQE
        SETS         X6  MQEHLD     ;   SET "HANDLED ONCE" FLAG
        JMP              ED1396     ;
        MOVC  1<MQEEND          R0  ;   CLEAR THE MQE - DONE WITH IT
        AND          R0  MQEFLG.X6  ;
ED1396:                             ;
        IBZP         X6  MQEEND     ;   IF NOT END OF MQE'S - THEN
         ADDC MQEESZ            R6  ;   SET UP FOR NEXT MQE
        JMP              LOC+2      ;   ELSE
        MOV   MQEPTR            R6  ;   USE START OF MQE'S AS NEXT
        MOV          R6  NMQEPT     ;
        JMP              0.     X4  ;   RETURN LINK+0/1
;-----------------------------------------------------------------------
;FF\f


;-----------------------------------------------------------------------
; GET AN MQI ENTRY
;
; THIS SUBROUTINE IS CALLED TO ACCESS THE NEXT MQI TABLE ENTRY WHICH
; IS READY TO BE PROCESSED. MQI ENTRY CONTENTS ARE MOVED TO LOCAL
; STORAGE AND MQI TABLE BOOKKEEPING IS DONE.
;
; CALLED BY: ED2100
;
; CALLS: ED19F1
;
; ENTRIES: ED1400
;
; RETURNS: LIN5   - MQI TABLE EMPTY
;          LINK+1 - NON-EDC MQI
;          LINK+2 - DONE
;
; REGISTERS          ENTRY              EXIT
; R0,R2              -                  DESTROYED
; R1,R3,R5,R6        -                  UNCHANGED
; R4                 LINK               DESTROYED
; R7                 -                  DESTROYED
;-----------------------------------------------------------------------
ED1400:                             ;
        MOV          R4  RL1400     ;
        MOV   NMQIPT            R4  ;   GET NEXT MQI RELATIVE ADDRESS
        MOVL  MQIFLG.X4         R01 ;   GET FLAG AND STATUS WORDS
        MOVC  NT 1<MQIEND       R2  ;
        AND          R0         R2  ;   MASK OUT "END OF MQI'S" FLAG
        IEQ          R2  0          ;   IF OTHER FLAG BITS = ZERO THEN
        JMPI             RL1400     ;   TAKE THE EMPTY RETURN
        MOVC  RL1400            R7  ;
        IBZP         R0  MQIEDC     ;   IF A NON-EDC MQI - THEN
        INC              0.     X7  ;   SET FOR NON-EDC MQI RETURN
        JMP              ED1401     ;   GO DO BOOKKEEPING
        IBZ          X4  MQIRDY     ;   IF MQI NOT READY TO PROCESS
        JMPI         S4  EI19F1     ;E  REPORT AN ERROR
        RELS         X4  MQIRDY     ;   CLEAR "READY TO PROCESS" FLAG
        MOVC  CIFLG             R5  ;
        MODC  MQIESZ                ;   MOVE MQI CONTENTS TO
        MOVM         X4         X5  ;   LOCAL STORAGE
        INC              0.     X7  ;   SET UP FOR "DONE" RETURN
        INC              0.     X7  ;
ED1401:                             ;
        MOV   NMQIPT            R4  ;
        IBN          X4  MQIHLD     ;   IF MXI HAS SEEN THE MQI THEN
        JMP              ED1403     ;   GO CLEAN OUT THE MQI
        SETS         X4  MQIHLD     ;   SET "HANDLED ONCE" FLAG
        IBNP         R0  MQISYN     ;   IF SYNCH NON-EDC CHANNEL - THEN
        IBZ          R0  MQIEDC     ;
        JMP              ED1402     ;   GO TRIGGER MXI
        MOVC  1<MQIBML+1<MQISTC R2  ;
        AND          R2         R1  ;
        INE          R1  0          ;   IF NO STUCK TAPE OR BIN MISLNK
        IBN          R0  MQIEDC     ;   OR MQI IS EDC - THEN
        JMP              ED1404     ;   GO SET UP FOR NEXT MQI
ED1402:                             ;
        MOVC  DAMXI             R0  ;   *** TRIGGER MXI ***
        INT          R0             ;
        JMP              ED1404     ;
ED1403:                             ;
        MOVC  1<MQIEND          R0  ;   CLEAR FLAGS EXCEPT "END OF MQI"
        AND          R0  MQIFLG.X4  ;
ED1404:                             ;
        IBZP         X4  MQIEND     ;   IF NOT END OF MQI TABLE
        ADDC  MQIESZ            R4 &;   SET UP FOR NEXT MQI
        JMP              LOC+2     &;   ELSE
        MOV   MQIPTR            R4 &;   USE MQI TABLE START ADDRESS
        MOV          R4  NMQIPT     ;
        JMPI             RL1400     ;   RETURN(1/2)
;-----------------------------------------------------------------------
;FF\f


;-----------------------------------------------------------------------
; GET AN MQO ENTRY
;
; CALLED BY: ED2200
;
; CALLS: ED19F1
;
; ENTRIES: ED1410
;
; RETURNS: LINK   - MQO TABLE EMPTY
;          LINK+1 - NON-EDC MQO
;          LINK+2 - DONE
;
; REGISTERS          ENTRY              EXIT
; R0,R2              -                  DESTROYED
; R1,R3,R5,R6        -                  UNCHANGED
; R4                 LINK               DESTROYED
; R7                 -                  DESTROYED
;-----------------------------------------------------------------------
ED1410:                             ;
        MOV          R4  RL1410     ;
        MOV   NMQOPT            R4  ;   GET NEXT MQO RELATIVE ADDRESS
        MOVL  MQOFLG.X4         R01 ;   GET FLAG AND STATUS WORDS
        MOVC  NT 1<MQOEND       R2  ;
        AND          R0         R2  ;   MASK OUT "END OF MQO'S" FLAG
        IEQ          R2  0          ;   IF OTHER FLAG BITS = ZERO - THEN
        JMPI             RL1410     ;   TAKE "EMPTY" RETURN
        MOVC  RL1410            R7  ;
        IBZP         R0  MQOEDC     ;   IF NON-EDC MQO - THEN
        INC              0.     X7  ;   SET UP "NON-EDC MQO" RETURN
        JMP              ED1411     ;   AND GO DO BOOKKEEPING
        IBZ          X4  MQORDY     ;   IF MQO NOT READY TO PROCESS
        JMPI         S4  EI19F1     ;E  THEN REPORT AN ERROR
        RELS         X4  MQORDY     ;   CLEAR "READY TO PROCESS" FLAG
        MOVC  COFLG             R5  ;
        MODC  MQOESZ                ;
        MOVM         X4         X5  ;   MOVE MQO TO LOCAL STORAGE
        INC              0.     X7  ;   SET UP "DONE" RETURN
        INC              0.     X7  ;
ED1411:                             ;
        MOV   NMQOPT            R4  ;
        IBN          X4  MQOHLD     ;   IF MXI HAS SEEN THIS MQO - THEN
        JMP              ED1413     ;   GO CLEAN IT OUT
        SETS         X4  MQOHLD     ;   SET "HANDLED ONCE" FLAG
        IBNP         R0  MQOSYN     ;   IF A SYNCH NON-EDC CHANNEL THEN
        IBZ          R0  MQOEDC     ;
        JMP              ED1412     ;   GO TRIGGER MXI
        MOVC  1<MQOBML+1<MQOSER R2  ;
        AND          R2         R1  ;
        INE          R1  0          ;   IF NO SEC. OR BIN LINK. ERRORS
        IBN          R0  MQOEDC     ;   OR IT IS AN EDC MQO
        JMP              ED1414     ;   THEN GO SET U- NE0T M-O ADDRESS
ED1412:                             ;
        MOVC  DAMXI             R0  ;   *** TRIGGER MXI ***
        INT          R0             ;
        JMP              ED1414     ;
ED1413:                             ;
        MOVC  1<MQOEND          R0  ;   CLEAR FLAGS EXCEPT "END OF MQO"
        AND          R0  MQOFLG.X4  ;
ED1414:                             ;
        IBZP         X4  MQOEND     ;   IF NOT END OF MQO TABLE - THEN
        ADDC  MQOESZ            R4 &;   SET UP FOR NEXT MQO
        JMP              LOC+2     &;   ELSE
        MOV   MQOPTR            R4 &;   USE MQO START AS NEXT ADDRESS
        MOV          R4  NMQOPT     ;
        JMPI             RL1410     ;   RETURN(1/2)
;-----------------------------------------------------------------------
;FF\f


;-----------------------------------------------------------------------
; UPDATE CSTVF1
;
; THIS SUBROUTINE UPDATES CSTVF1 FROM STATUS BITS IN AN MQI.
;        SETS "STATUS CHANGE"
;        SETS "TRANSMIT OVERRUN"
;        SETS "RECEIVE OVERRUN/INTERRUPT"
; IF "STATUS CHANGE" IS ON, THEN SEND AND RECEIVE STATUS ARE ADDED
; TO CSTVF1. IF THERE IS A MUX LINKAGE ERROR, CSTBML IS SET AND THE
; ERROR IS REPORTED.
;
; CALLED BY: ED1510
;
; CALLS: ED19C0
;
; ENTRIES: ED1450
;
; RETURNS: LINK
;
; REGISTERS          ENTRY              EXIT
; R0                 -                  DESTROYED
; R1,R2,R5,R6        -                  UNCHANGED
; R3                 -                  BIN STATUS WORD
; R4                 LINK               DESTROYED
; R7                 CSTP (REL)         CSTP (REL)
;-----------------------------------------------------------------------
ED1450:                             ;
        MOV   CIEST             R3  ;   GET STATUS
        MOVC  1<CSTSCH+%            ;
              1<CSTTXO+1<CSTRXO R0  ;
        AND          R3         R0  ;   UNPACK 3 FLAGS SHOWN ABOVE
        IOR          R0  CSTVF1.X7  ;   PUT THEM IN CSTVF1
        ADDC  CSTVF1            R7  ;
        IBN          R0  CSTSCH     ;   IF STATUS CHANGE IS ON - THEN
        MODC  1<CSTRCS+1<CSTSNS     ;   ADD SEND AND RECEIVE STATUS
        PUT          R3         X7  ;   TO CSTVF1
        IBNP         R3  CDIBML     ;   IF  A BIN LINKAGE ERROR
        SETS         X7  CSTBML     ;   THEN SET FLAG IN CSTVF1
        JMPI         S4  EI19C0     ;E  AND REPORT THE ERROR
        ADDC  -CSTVF1           R7  ;   RESTORE R7
        JMP              0.     X4  ;   RETURN
;-----------------------------------------------------------------------
;FF\f


;-----------------------------------------------------------------------
; UPDATE STATUS IN A BIN
;
; THIS SUBROUTINE CHECKS FOR A HALTED MESSAGE (VIA ED1470), STUCK TAPE
; OR INPUT OVERRUN. CORRESPONDING FLAGS ARE SET IN THE BIN STATUS WORD.
; IF ANY OF THE ABOVE ERRORS ARE FOUND THEN THE TERMINATION ERROR FLAG
; IS SET IN LOCAL STATUS (CIEST).
;
; CALLED BY: ED1510
;
; CALLS: ED1470
;
; ENTRIES: ED1460
;
; RETURNS: LINK   - BIN EMPTY
;          LINK+1 - BIN NOT EMPTY OR HALTED MESSAGE OR STUCK TAPE
;
; REGISTERS          ENTRY              EXIT
; R0,R1              -                  DESTROYED
; R2                 -                  BIN STATUS FLAGS
; R3                 -                  DESTROYED
; R4                 LINK               DESTROYED
; R5                 -                  BUFP (ABS)
; R6                 -                  CSTP (REL)
; R7                 -                  DESTROYED
;-----------------------------------------------------------------------
ED1460:                             ;
        MOV          R4  RL1460     ;
        MOV   CIBUF             R5  ;   GET BIN ADDRESS
        MOV   CSTPTR            R6  ;
        JMP          S4  ED1470     ;   CHECK HALTED MS
        MODC  1<BINHMS             &;   HALTED MESSAGE DETECTED
        MOVC  0                 R2  ;
        MOV          R0  EDWRK0     ;   SAVE CHAR. COUNT FROM ED1470
        MOV   CIEST             R3  ;
        IBN          R3  CDISTC     ;   IF STUCK TAPE DETECTED - THEN
        SETS         R2  BINSTP     ;   SET STUCK TAPE FLAG
        IBNP         R3  CDIINT     ;   IF OVERRUN DETECTED - THEN
        SETS         R2  BINSTP     ;   SET STUCK TAPE AND
        SETS         R2  BINHMS     ;   HALTED MESSAGE FLAGS
        MOV   CIBUF             R5  ;   GET BIN ADDRESS
        MOVC  BINSTA            R0  ;   GET STATUS POSITION IN A BIN
        MOVC  BINIFM            R1  ;   GET BIT MASK
        MON   PBUF                  ;   PUT STATUS FLAGS IN THE BIN
        MOV   EDWRK0            R0  ;
        MOV   RL1460            R4  ;
        AND          R2         R1  ;
        JON          R1  ED1464     ;   IF ERRORS FOUND GO SET TERM ERR
        IEQ          R0  0          ;   IF CHAR_COUNT=0 THEN
        JMP              0.     X4  ;   TAKE EMPTY BIN RETURN
        JMP              1.     X4  ;     RETURN(1)
ED1464:                             ;
        MOVC  CIEST             R7  ;
        SETS         X7  CDITME     ;   SET TERMINATION ERROR
        JMP              1.     X4  ;     RETURN(1)
;-----------------------------------------------------------------------
;FF\f


;-----------------------------------------------------------------------
; CHECK FOR A HALTED MESSAGE (ED1470). OR
; RESET HALTED MESSAGE TIMER (ED1475)
;
; IF THE CHARACTER COUNT IS NON ZERO IT IMPLIES THAT THE MESSAGE IS
; NOT HALTED. IF THE COUNT IS ZERO THE TIME SINCE LAST FULL BIN IS
; CALCULATED. IF TIME CALCULATED IS LESS THAN THE HALTED MESSAGE TIME
; NO HALTED MESSAGE CAN BE ASSUMED.
; OTHERWISE THE HALTED MESSAGE EXIT IS TAKEN    .
;
; CALLED BY: ED1460, ED5100, ED5200, ED5300
;
; CALLS: NONE
;
; ENTRIES: ED1470 - CHECK FOR HALTED MESSAGE
;
;          ED1475 - RESET HALTED MESSAGE TIMER
;
; REGISTERS:         ENTRY          EXIT
; R0                 -              COUNT
; R1                 -              DEST
; R2                 -              DEST
; R3                 -              DEST
; R4                 LINK           LINK
; R5                 BUFP(ABS)      BUFP(ABS)
; R7                 -              DEST
;-----------------------------------------------------------------------
ED1470:                             ;
        MOV          R4  RL1470     ;
        MON   GBSM                  ;   GET PAGE OF BIN
        MOV   XBASE             R1  ;
        SVS          R2             ;   SAVE CURRENT PAGE
        LDS          R3             ;   SET FOR BIN PAGE
        MODN         R1             ;
        MOV   BINSTA.X5         R0  ;   GET STATUS WORD FROM BIN
        LDS          R2             ;   RESTORE CURRENT PAGE
        XTR          R0  BINCNX     ;   UNPACK CHARACTER COUNT
        MOV   RL1470            R4  ;
        INE          R0  0          ;   IF CHARACTER COUNT IS NON ZERO
        JMP              1.     X4  ;   TAKE MESSAGE OK RETURN
        MODN  XBASE                 ;
        MOV   ADCLK             R3  ;
        MOV   ECRPTR            R7  ;
        MOV   ECICLK.X7         R1  ;       CALCULATE  TIME ELAPSED
        SUB          R1         R3  ;       SINCE PREVIOUS DATA BUFFER.
        MOD   ECFPTR                ;
        MOV   ECGHMT            R1  ;
        ILO          R3         R1  ;       IF TIME<HALTED MS  THEN
        JMP              1.     X4  ;       TAKE "OK" RETURN
ED1475:                             ;
        MODN  XBASE                 ;
        MOV   ADCLK             R1  ;
        MOD   ECRPTR                ;
        MOV          R1  ECICLK     ;   RESET HALTED MESSAGE TIMER
        JMP              0.     X4  ;   RETURN TO LINK
;-----------------------------------------------------------------------
;FF\f


;-----------------------------------------------------------------------
; PROCESS STATUS FROM AN MQI
;
; THIS ROUTINE CHECK VALIDITY OF THE INPUT.
;       IF THERE IS NO ECR OR IF THE CHANNEL IS NOT OPEN OR IF THE
;       BIN IS EMPTY, THE INPUT BIN IS RELEASED (IF IT ISN'T THE DUMMY).
;       WE SHOULD NEVER SEE THE DUMMY.
;       THE ROUTINE UPDATES CSTVF1 VIA ED1450.
;       THE ROUTINE WILL IGNORE A DUMMY BIN ON AN OPEN CHANNEL.
;       A NEW BIN IS GIVEN TO THE MUX VIA MONITOR CALL XMIBUF.
;       BIN STATUS IS UPDATED FROM THE MQI VIA ED1460.
;
; CALLED BY: ED1550
;
; CALLS: ED1450, ED1460, ED1970, ED1200
;
; ENTRIES: ED1510
;
; RETURNS: LINK   - NO BIN
;          LINK+1 - DISCONNECTED BIN RELEASED
;          LINK+2 - DISCONNECTED BIN IS READY TO PROCESS.
;
; REGISTERS          ENTRY              EXIT
; R0,R1,R2           -                  DESTROYED
; R3                 -                  DESTROYED
; R4                 LINK               DESTROYED
; R5                 -                  DESTROYED
; R6                 LCN                DESTROYED
; R7                 -                  DESTROYED
;-----------------------------------------------------------------------
ED1510:                             ;
        MOV          R4  RL1510     ;
        JMP          S4  ED1200     ;   GET POINTERS TO CST, CDT AND ECR
        JMP              ED1512     ;   NO ECR - GO RELEASE BIN
        MOV   CSTCS2.X7         R0  ;
        IBZ          R0  CSTICO     ;   IF CHANNEL NOT OPEN - THEN
        JMP              ED1512     ;   GO RELEASE THE BIN
        JMP          S4  ED1450     ;   UPDATE CSTVF1
                                    ;   SETS R3 = BIN STATUS ON EXIT
        MOV   CIBUF             R5  ;   GET BIN ADDRESS
        MOD   GSTPTR                ;
        MOV   GSTDIB            R4  ;   GET DUMMY BIN ADDRESS
        INE          R4         R5  ;   IF BIN IS THE DUMMY OR
        IBZ          R3  CDIBDS     ;   BIN NOT RELEASED BY MXP - THEN
        JMPI             RL1510     ;   TAKE "NO BIN" RETURN
        MON   XMIBUF                ;   EXCHANGE MUX INPUT BINS
        JMP              ED1514    &;   NO FREE BIN TO GIVE MUX
        JMP              ED1516    &;   BIN SWITCHING ERROR
        JMP          S4  ED1460     ;   UPDATE BIN STATUS
        JMP              ED1512    &;   GO RELEASE EMPTY BIN
        MOV   RL1510            R4  ;
        JMP              2.     X4  ;   BIN "READY" RETURN
ED1512:                             ;
        MOV   CIEST             R3  ;   GET MQI STATUS
        MOV   CIBUF             R5  ;   GET BIN LOCATION
        MOD   GSTPTR                ;
        MOV   GSTDIB            R4  ;   GET DUMMY BIN LOCATION
        INE          R4         R5  ;   IF BIN IS THE DUMMY OR
        IBZ          R3  CDIBDS     ;   BIN NOT RELEASED BY MXP - THEN
        JMPI             RL1510     ;   TAKE "NO BIN" RETURN
        MOVC  1                 R3  ;
        MOV          R5         R6  ;
        MON   RNBN                  ;   RELEASE THE BIN
        MOV   RL1510            R4  ;
        JMP              1.     X4  ;   TAKE "BIN RELEASED" RETURN
ED1514:                             ;
        MOV   CSTPTR            R6  ;
        MOVC  1<CSTLAC          R0  ;   SET FLAG TO TELL MP THAT
        IOR          R0  CSTVF1.X6  ;   THERE ARE NO FREE BINS
        JMPI             RL1510     ;   TAKE "NO BIN" RETURN
ED1516:                             ;
        JMP          S4  ED1970     ;E  REPORT BIN SWITCH ERROR
        JMPI             RL1510     ;   TAKE "NO BIN" RETURN
;-----------------------------------------------------------------------
;FF\f


;-----------------------------------------------------------------------
; PROCESS STATUS FROM AN MQO
;
; THIS ROUTINE CHECKS FOR A SECURITY OR BUFFER MISLINKAGE ERROR.
; IF EITHER ERROR IS FOUND AN ERROR BIT IS SET IN CSTVF1 AND THE
; ERROR IS REPORTED (ED19C0).
;
; CALLED BY: ED1560
;
; CALLS: ED19C0, ED19D0
;
; ENTRIES: ED1520
;
; RETURNS: LINK   - BLOCK INCOMPLETE
;          LINK+1 - BLOCK COMPLETE
;
; REGISTERS          ENTRY              EXIT
; R0                 -                  DESTROYED
; R1,R2,R5,R6        -                  UNCHANGED
; R3                 -                  DESTROYED
; R4                 LINK               DESTROYED
; R7                 -                  DESTROYED
;-----------------------------------------------------------------------
ED1520:                             ;
        MOV          R4  RL1520     ;
        MOV   COEST             R3  ;   GET STATUS FROM MQO
        MOVC  1<CDOSER+1<CDOBML R0  ;   CHK FOR SECURITY/MISLINK ERROR
        AND          R3         R0  ;
        JON          R0  ED1522     ;   JUMP TO PROCESS ERROR IF FOUND
        MOVC  1<CDOEDS          R0  ;
        AND          R0         R3  ;
        INE          R0         R3  ;   IF BLOCK DISCONNECTED BY MXP
        JMP              ED1524     ;   THEN GO FLAG THE ERROR
        JMP              1.     X4  ;   "BLOCK COMPLETE" RETURN
ED1522:                             ;
        MOV   CSTPTR            R7  ;
        MOVC  1<CSTMBE          R0  ;
        IOR          R0  CSTVF1.X7  ;   SET ERROR  IN CSTVF1
        JMP          S4  ED19C0     ;E  REPORT THE ERROR
ED1524:                             ;
        JMP          S4  ED19D0     ;E  REPORT BLK DISCONNECT ERROR
        JMPI             RL1520     ;
;-----------------------------------------------------------------------
;FF\f


;----------------------------------------------------------------------
; PROCESS AN MQE
;
; FOR AN INPUT OR OUTPUT MQE FOR WHICH THERE HAS BEEN AN INTERRUPT,
; ONLY AN LTU TIMEOUT CHECK IS MADE.  FOR AN OUTPUT MQE WITH AN
; INTERRUPT, TRANSMISSION STATUS IS UPDATED BEFORE THE LTU TIMEOUT
; CHECK IS MADE.
;
; CALLED BY: ED2090
;
; CALLS: ED1200
;
; ENTRIES: ED1540
;
; RETURNS: LINK
;
; REGISTERS:         ENTRY          EXIT
; R0,R2,R3,R5        -              UNCHANGED
; R1,R4,R6,R7        -              DESTROYED
;----------------------------------------------------------------------
ED1540:                             ;
        MOV          R4  RL1540     ;
        MOV   CEEST             R1  ;   GET STATUS FROM MQE
        IBN          R1  MQETYP     ;   IF AN INPUT MQE OR
        IBZ          R1  MQEONT     ;   NO OUTPUT INTERRUPT - THEN
        JMP              ED1544     ;   GO CHECK LTU TIMEOUT
        MOV   CEFLG             R6  ;   GET FLAG BITS FROM MQE
        SWP          R6             ;
        XTR          R6  MQELAX     ;   UNPACK LCN
        JMP          S4  ED1200     ;   GET CST, CDT, ECR POINTERS
        NOP                         ;
        ADDC  ECOFLG            R6  ;   OUTPUT FLAG LOCATION IN ECR
        IBNP         R1  MQEDIS     ;   IF OUTPUT DISABLED - THEN
        SETS         X6  ECOTXO     ;   SET XMIT STATUS OFF
        JMP              LOC+2      ;
        RELS         X6  ECOTXO     ;   SET XMIT STATUS ON
ED1544:                             ;
        MOV   CSTPTR            R6  ;
        IBN          R1  MQELTO     ;   IF LTU TIMEOUT
        MON   LTUTMO                ;   THEN PROCESS IT
        JMPI             RL1540     ;   RETURN
;-----------------------------------------------------------------------
;FF\f


;-----------------------------------------------------------------------
; PROCESS AN MQI
;
; PROCESSES MQI STATUS VIA ED1510. IF A BIN DOESN'T EXIST, NO FURTHER
; WORK IS DONE. IF A BIN EXISTS IT IS QUEUED TO THE ECR'S INPUT QUEUE.
; IF A TERMINATION ERROR IS FOUND (IN ED1510) IT IS PROCESSED BY ED5700.
; IF AN END OF EDC BLOCK IS FOUND THEN THE TYPE AND BID ARE
; STORED LOCALLY.
;
; CALLED BY: ED2100
;
; CALLS: ED1510, ED5700
;
; ENTRIES: ED1550
;
; RETURNS: LINK   - EDC BLOCK INCOMPLETE
;          LINK+1 - EDC BLOCK COMPLETE (END OF BLOCK FOUND)
;
; REGISTERS          ENTRY              EXIT
; R0,R1,R2,R3        -                  DESTROYED
; R4                 LINK               DESTROYED
; R5,R6,R7           -                  DESTROYED
;-----------------------------------------------------------------------
ED1550:                             ;
        MOV          R4  RL1550     ;
        MOV   CIFLG             R6  ;   GET FLAGS FROM MQI
        SWP          R6             ;
        XTR          R6  MQILAX     ;   UNPACK LCN
        JMP          S4  ED1510     ;   PROCESS MQI STATUS
        JMPI             RL1550    &;   NO BIN - "INCOMPLETE" RETURN
        JMP              ED1551    &;   BIN RELEASED - SKIP QUEUEING
        MOVC  1                 R3  ;
        MOD   ECRPTA                ;
        MOVC  ECCIQH            R4  ;   ADD THE INPUT BIN TO
        MOV   CIBUF             R5  ;   THE INPUT BIN QUEUE WHICH
        MOV          R5         R6  ;   COLLECTS BINS INTO
        MON   LNIQ                  ;   EDC BLOCKS
ED1551:                             ;
        MOV   CIEST             R0  ;
        IBN          R0  CDITME     ;   IF A TERM. ERROR WAS FOUND THEN
        JMP              ED1554     ;   GO PROCESS IT
        IBZ          R0  CDIBEB     ;   IF NOT END OF EDC BLOCK - THEN
        JMPI             RL1550     ;   TAKE "BLOCK INCOMPLETE" RETURN
        MOV   CITAB             R0  ;   GET TYPE AND BID OF BLOCK
        MOV          R0         R1  ;
        SWP          R0             ;
        XTR          R0  8          ;
        XTR          R1  8          ;   TYPE AND BID UNPACKED
        MOV          R0  CITYPE     ;   SAVE TYPE LOCALLY
        MOV          R1  CIBID      ;   SAVE BID LOCALLY
        MOV   RL1550            R4  ;
        JMP              1.     X4  ;   TAKE "BLOCK COMPLETE" RETURN
ED1554:                             ;
        JMPI         S4  EI5700     ;   GO PROCESS TERMINATION ERROR
        JMPI             RL1550     ;   TAKE "BLOCK INCOMPLETE" RETURN
;-----------------------------------------------------------------------
;FF\f


;-----------------------------------------------------------------------
; PROCESS AN MQO
;
; THIS SUBROUTINE IS CALLED TO PROCESS MQO'S. IT IS USED MAINLY
; AS AN ENTRY TO THE STATUS PROCESSING ROUTINE (ED1520).
;
; CALLED BY: ED2200
;
; CALLS: ED1200, ED1520, ED1980
;
; ENTRIES: ED1560
;
; RETURNS: LINK   - NO ECR OR BLOCK DISCONNECTED BY MXP
;          LINK+1 - DONE
;
; REGISTERS          ENTRY              EXIT
; R0,R3,R7           -                  DESTROYED
; R1,R2,R5           -                  UNCHANGED
; R4                 LINK               DESTROYED
; R6                 -                  ECRP (REL)
;-----------------------------------------------------------------------
ED1560:                             ;
        MOV          R4  RL1560     ;
        MOV   COFLG             R6  ;   GET FLAGS FROM MQO
        SWP          R6             ;
        XTR          R6  MQOLAX     ;   UNPACK LCN
        JMP          S4  ED1200     ;   GET CST, CDT, ECR POINTERS
        JMP              ED1562     ;   NO ECR - GO REPORT ERROR
        JMP          S4  ED1520     ;   PROCESS MQO STATUS
        JMPI             RL1560    &;   TAKE "BLOCK DISCONNECTED" RETURN
        MOV   RL1560            R4  ;
        JMP              1.     X4  ;   TAKE "DONE" RETURN
ED1562:                             ;
        JMP          S4  ED1980     ;E  REPORT "NO ECR" ERROR
        JMPI             RL1560     ;
;-----------------------------------------------------------------------
;FF\f


;-----------------------------------------------------------------------
; ACTIVATE A TRANSMISSION QUEUE
;
; THE ENTRY CHOSEN DETERMINES THE QUEUE TO BE ACTIVATED.
;
; CALLED BY: ED4100, ED4200, ED4910, ED4920, ED4930, ED4950, ED5400
;            ED7060, ED7070, ED7080
;
; CALLS: NONE
;
; ENTRIES: ED1600 - DATA QUEUE
;          ED1601 - ACK  QUEUE
;          ED1602 - NAK  QUEUE
;          ED1603 - ACKL QUEUE
;          ED1604 - LCB  QUEUE
; RETURNS: LINK
;
; REGISTERS          ENTRY              EXIT
; R0                 -                  DESTROYED
; R1,R2,R3,R5,R7     -                  UNCHANGED
; R4                 LINK               LINK
; R6                 ECRP (REL)         ECRP (REL)
;-----------------------------------------------------------------------
ED1600: MODC  1<ECODTP-1<ECOAKP     ;
ED1601: MODC  1<ECOAKP-1<ECONKP     ;
ED1602: MODC  1<ECONKP-1<ECOALP     ;
ED1603: MODC  1<ECOALP-1<ECOLCP     ;
ED1604: MOVC  1<ECOLCP          R0  ;
        IOR          R0  ECOQCW.X6  ;   SET REQUIRED BIT IN THE
                                    ;   OUTPUT QUEUE CONTROL WORD
        IBZ          R0  ECODTP     ;
        IBN          R0  ECOLCP     ;   FOR DATA OR LCB ALSO SET ECOOEP
        MODC  1<ECOOEP              ;   SET OUTPUT FLAGS TO TRIGGER
        MOVC  1<ECOEBP+1<ECOPCQ R0  ;   PROPER PROCESSING
        IOR          R0  ECOFLG.X6  ;
        JMP              0.     X4  ;   RETURN
;-----------------------------------------------------------------------
;FF\f


;-----------------------------------------------------------------------
; PROCESS AN EDC MQO
;
; THIS ROUTINE DOES FINAL PROCESSING OF AN EDC BLOCK FOR WHICH AN MQO
; HAS BEEN RECEIVED.
;
; CALLED BY: ED2200, ED3340
;
; CALLS: ED7110, ED7120, ED7130, ED7140, ED7150, ED7160, ED7170, ED7190
;          THE ABOVE ARE ALL CALLED VIA A TABLE (ED0500) IN EDC.
;
; ENTRIES: ED1650
;
; RETURNS: LINK
;
; REGISTERS:         ENTRY          EXIT
; R0,R1,R2,R5,R7     -              DESTROYED
; R3                 EBR(MQO)       DESTROYED
; R4                 LINK           DESTROYED
; R6                 ECRP (REL)     DESTROYED
;-----------------------------------------------------------------------
ED1650:                             ;
        MOV          R4  RL1650     ;
        IOZ              ECOOSW.X6  ;
        MOVL ECOTQI0.X6         R01 ;   GET PROPER XMIT QUEUE DATA
        ION              ECOOSW.X6  ;
        MOVL ECOTQI1.X6         R01 ;
        INV              ECOOSW.X6  ;   SWITCH TRANSMIT QUEUES
        DEC              ECOTEC.X6  ;   REDUCE EDC BLOCK XMIT COUNT
        MOVC  1<ECOPCQ          R2  ;
        IOR          R2  ECOFLG.X6  ;   SET "PROCESSING REQ'D" FLAG
        MOD          R0             ;   USE XMIT QUEUE I.D. TO GET TO
        JMPI         S4  ED0500     ;   PROCESSING PGM (VIA ED0500)
        JMPI             RL1650     ;   RETURN
;-----------------------------------------------------------------------
;FF\f


;-----------------------------------------------------------------------
; REPORT ERRORS VIA CSTVF4
;
; CALLED BY: ED2100, ED4400, ED7086 THRU ED7098, ED7380
;
; CALLS: NONE
;
; ENTRIES: ED1800
;
; RETURNS: LINK   - UNRECOVERABLE ERROR
;          LINK+1 - RECOVERABLE ERROR
;
; REGISTERS          ENTRY              EXIT
; R0                 ERROR CODE         ERROR CODE (SHIFTED)
; R1,R2,R3,R5        -                  UNCHANGED
; R4                 LINK               LINK
; R6                 -                  DESTROYED
; R7                 -                  CSTP (REL)
;-----------------------------------------------------------------------
ED1800:                             ;
        MOV   CSTPTR            R7  ;   GET RELATIVE CST POINTER
        SLL          R0  EECECX     ;   POSITION ERROR CODE
        ADDC  CSTVF4            R7  ;
        MOD8  #FF                   ;   TO STORE ERROR CODE
        PUT          R0         X7  ;
        MOV   CSTPTR            R7  ;   SET R7 FOR EXIT
                                    ;
        IBZ          R0  EECURE     ;   IF ERROR IS RECOVERABLE - THEN
        JMP              1.     X4  ;   TAKE "RECOVERABLE" RETURN
        MOV   ECRPTR            R6  ;
ED1804:                             ;
        MOVC  1<ECOSCQ+1<ECOATO+%   ;   SET "SETBD REQ'D" PLUS BOTH
              1<ECOALTO         R0  ;   "TIME-OUTS OCCURRED" IN
        IOR          R0  ECOFLG.X6  ;   THE OUTPUT FLAG
        JMP              0.     X4  ;   TAKE "UNRECOVERABLE" RETURN
;-----------------------------------------------------------------------
;FF\f


;-----------------------------------------------------------------------
; GROSS ERROR HANDLING
;
; THIS ROUTINE IS ENTERRED FOR ERRORS WHICH QUESTION THE INTEGRITY
; OF THE SOFTWARE. THE ERROR REPORTED DEPENDS ON THE PARTICULAR
; ENTRY POINT. ALL ERRORS ARE REPORTED VIA MON ERR. CURRENT DESIGN
; OF MON ERR DOES NOT INCLUDE A RETURN TO THE CALLER. IT IS A SYSTEM
; HALT. THEREFORE THIS ROUTINE DOES NOT RETURN DESPITE THE CODING.
;
; CALLED BY: NUMEROUS ROUTINES AND SUBROUTINES
;
; CALLS: NONE
;
; ENTRIES: SHOWN BELOW IN CODE
;
; RETURNS: NONE
;
; REGISTERS: SINCE THIS ROUTINE HAS NO ENTRY PARAMETERS AND DOES NOT
;            RETURN, REGISTER CONTENTS ARE UNIMPORTANT.
;-----------------------------------------------------------------------
ED1900: MODC  GSTCPF - GSTCPE       ;   ERROR0 (GENERAL CP ERROR)
ED1910: MODC  GSTCPE - GSTLME       ;   ERROR1 (CREATE PROCESS):
ED1920: MODC  GSTLME - GSTUXS       ;   ERROR2 (LETTER MECHANISM):
ED1930: MODC  GSTUXS - GSTLTE       ;   ERROR3 (UNEXPECTED SENDER):
ED1940: MODC  GSTLTE - GSTNLT       ;   ERROR4 (LETTER TYPE ERROR):
ED1950: MODC  GSTNLT - GSTNBF       ;   ERROR5 (NO LETTER):
ED1960: MODC  GSTNBF - GSTNNE       ;   ERROR6 (NO BUFFER):
ED1970: MODC  GSTNNE - GSTNEC       ;   ERROR7 (NO NEXT BUFFER):
ED1980: MODC  GSTNEC - GSTCPF       ;   ERROR8 (NO ECR FOUND):
ED1990: MODC  GSTCPF - GSTCRF       ;   ERROR9 (GENERAL CP FAULT):
ED19A0: MODC  GSTCRF - GSTFLE       ;   ERRORA (CDT RESERVATION FAULT):
ED19B0: MODC  GSTFLE - GSTOSE       ;   ERRORB (FIFO LPN ERROR):
ED19C0: MODC  GSTOSE - GSTMDE       ;   ERRORC (MUX OUTPUT SECURITY):
ED19D0: MODC  GSTMDE - GSTEBM       ;   ERRORD (MUX BUF DISC ERROR):
ED19E0: MODC  GSTEBM - GSTUTQ       ;   ERRORE (EB-BIN MISMATCH):
ED19F0: MODC  GSTUTQ - GSTMOF       ;   ERRORF (UNDEFINED TX QUEUE):
ED19F1: MOVC  GSTMOF            R0  ;   ERRORF1(MMQ OVERFLOW):
        MOV          R0  XLICC      ;     XLICC:=CAUSE
        MOV          R4  XLIRP      ;     XLIRP:=RETURN
        MON   ERR                   ;E    CALL ONLINE ERROR PROCESSING
        JMP              0.     X4  ;   NOT EXECUTED
;----------------------------------------------------------------------
;FF\f


;-----------------------------------------------------------------------
;
; INTERRUPT DRIVEN MAIN PROGRAM INITIALIZATION
;
;-----------------------------------------------------------------------
ED2000:                             ;
        JMP          S4  ED1000     ;   INITIALIZE INTERRUPT PROCESS
        MOVC  EDILPN            R3  ;
        MOV   XBASE             R4  ;   GET BASE OF INTERRUPT PROCESS
        MON   CRP                   ;   CREATE INTERRUPT PROCESS
        JMP          S4  ED1910    &;E  CREATION ERROR - REPORT
        MON   RCPU                  ;   RESERVE_CPU_INTERRUPT
        MON   RTI                   ;   RETURN TO INITIATOR (DBA)
;-----------------------------------------------------------------------
                                    ;   THE FIRST INTERRUPT WILL START
                                    ;   THE PROGRAM HERE.
                                    ;-----------------------------------
        MOVC  PBEXPR            R0  ;
        MON   INQ                   ;   LINK PROCESS INTO EXPRESS QUEUE
        JMPI         S4  EI1990     ;E  REPORT QUEUE LINKAGE ERROR
;-----------------------------------------------------------------------
;
; START INTERRUPT_SERVICE HERE.
;
; THIS IS THE MAIN LINE OF CODE USED BY THE INTERRUPT PROCESS. ALL
; INTERRUPT RELATED ACTIVITIES ARE CONTROLLED FROM HERE.
;
;-----------------------------------------------------------------------
ED2050:                             ;
        MOVC  PCIDLE            R0  ;
        MOV          R0  INTSTA     ;   SET "IDLE" FLAG TO "IDLE"
                                    ;   IF ANY WORK IS DONE THIS FLAG
                                    ;   WILL BE CLEARED. WHEN THE PROC-
                                    ;   CESSING LOOP IS COMPLETE THE
                                    ;   FLAG IS TESTED. IF IT'S ZERO
                                    ;   THE CYCLE WILL BE RESTARTED
                                    ;   HERE. THIS CAUSES THE PROCESS
                                    ;   TO RUN TILL THERE IS ABSOLUTELY
                                    ;   NO MORE WORK TO DO.
;----------------------------------------------------------------------
;
; BEGIN MQE SERVICE
;
; ALL AVAILABLE MQE'S ARE SCANNED FOR SERVICE UNTIL THEY ARE EXHAUSTED.
; ONLY THEN ARE MQI'S (ED2100) ADDRESSED.
;
;-----------------------------------------------------------------------
ED2090:                             ;
        JMP          S4  ED1390     ;   GET AN MQE
        JMP              ED2090     ;   X0: NON_EDC_MQE
        JMP          S4  ED1540 &   ;   X1: EDC_MQE
        JMP              ED2100     ;   X2: END MQE_SERVICE
;-----------------------------------------------------------------------
;
; BEGIN MQI SERVICE
;
; ALL AVAILABLE MQI'S ARE SCANNED FOR SERVICE UNTIL THEY ARE EXHAUSTED.
; ONLY THEN ARE MQO'S (ED2200) ADDRESSED.
;
;-----------------------------------------------------------------------
ED2100:                             ;
        JMP          S4  ED1400     ;   GET AN MQI
        JMP              ED2190    &;     X0: NO MQI'S
        JMP              ED2100    &;     X1: GOTO_REPEAT (NON-EDC MQI)
                                    ;     X2: EDC MQI FOUND
        JMP          S4  ED1550     ;   INITIAL MQI PROCESSING
        JMP              ED2100    &;     X0: REPEAT BLOCK INCOMPLETE
                                    ;     X1: EDC BLOCK COMPLETE
;-----------------------------------------------------------------------
                                    ;   WHEN WE GET HERE A COMPLETE EDC
                                    ;   BLOCK HAS BEEN RECEIVED
                                    ;-----------------------------------
        MOV   ECRPTR            R6  ;   THIS CODE PREPARES FOR ENTRY TO
        MOV   ECCIQH.X6         R1  ;   MON EDITST. EDITST IS THE
        MOV   CIEST             R3  ;   HOOK USED BY THE TEST DRIVE
        MOV   CIBID             R4  ;   SYSTEM TO ALTER EDC INPUTS.
        MOV   CITYPE            R5  ;   THE DATA IN REGISTERS ARE
        MOV   CSTPTR            R6  ;   PROVIDED TO THE TDS FOR POSSIBLE
        MON   EDITST                ;TC MODIFICATION.
        JMP              ED2150    &;   TDS SAYS DISCARD THE BLOCK
        MOV          R3  CIEST      ;   RESTORE DATA POSSIBLY
        MOV          R4  CIBID      ;   MODIFIED BY THE TDS.
        MOV          R5  CITYPE     ;
        MOV   CSTCS7.X6         R0  ;
        IBNP         R0  CSTEMM     ;   IF EDC MONITORING IS ON - THEN
        MON   EDCTMI                ;TM TAKE CARE OF INPUT MONITORING
        JMPI         S4  EI1960    &;E  REPORT MONITORING ERROR
        MOV   CITYPE            R0  ;   GET BLOCK TYPE
        IBN          R0  BIT7       ;   IF TYPE PARITY ERROR - THEN
        JMP              ED2130     ;   REPORT PARITY ERROR
        ADDC  -<:A:>            R0  ;
        IHS   R0     <:K:>-<:A:>+1  ;   IF TYPE IS UNDEFINED - THEN
        JMP              ED2140     ;   REPORT RANGE ERROR
        MOV   ECRPTR            R6  ;
        MOD          R0             ;   USE TYPE TO INDEX PROPER
        JMPI         S4  ED0300     ;   PROCESSING ROUTINE
        JMP          S4  ED1210     ;I  OPEN INTERRUPT WINDOW
        JMP              ED2100     ;   GET NEXT MQI
                                    ;-----------------------------------
                                    ;   PARITY AND RANGE ERRORS ARE
                                    ;   REPORTED AND THE BLOCK IS
                                    ;   DISCARDED.
                                    ;-----------------------------------
ED2130:                             ;
        MODC  EEC030-EEC031         ;   TYPE PARITY ERROR
ED2140:                             ;
        MOVC  EEC031            R0  ;   TYPE RANGE ERROR
        JMP          S4  ED1800     ;E  REPORT THE ERROR
        NOP                         ;
ED2150:                             ;   READY TO RELEASE THE EDC BLOCK
        MOVC  1000              R3  ;
        MOD   ECRPTA                ;
        MOVC  ECCIQH            R4  ;
        MON   LNOQ                  ;   DEQUEUE BLOCK FROM INPUT BIN QUE
        NOP                         ;
        MON   RNBN                  ;   RELEASE BLOCK TO FREE BIN POOL
        JMP              ED2100     ;   GET NEXT MQI
ED2190:                             ; END MQI_SERVICE.
;-----------------------------------------------------------------------
;FF\f


;-----------------------------------------------------------------------
;
; BEGIN MQO SERVICE
;
; ALL AVAILABLE MQO'S ARE SCANNED FOR SERVICE UNTIL THEY ARE EXHAUSTED.
; ONLY THEN ARE PROCESSING REQUESTS (ED2500) ADDRESSED.
;
;-----------------------------------------------------------------------
ED2200:                             ;
        JMP          S4  ED1410     ;   GET AN MQO
        JMP              ED2290    &;     X0: GOTO END_MQO_SERVICE
        JMP              ED2200    &;     X1: GOTO REPEAT (NON-EDC MQO)
                                    ;     X2: EDC MQO FOUND
        JMP          S4  ED1560     ;   MQO STATUS PROCESSING
        JMP              ED2200    &;       X0: MQO N.G. - GET NEXT ONE
                                    ;       X1: STATUS OK
        MOV   ECRPTR            R6  ;   GET ECR POINTER
        MOV   COBUF             R3  ;   GET EDC BLOCK POINTER
        JMP          S4  ED1650     ;   FINAL MQO PROCESSING
        JMP          S4  ED1210     ;I  OPEN INTERRUPT WINDOW
        JMP              ED2200     ;   GET NEXT MQO
ED2290:                             ;
;-----------------------------------------------------------------------
;
; PROCESS REQUEST HANDLING
;
; IN ORDER TO REDUCE THE TIME REQUIRED TO CYCLE THE MQO TABLE, SOME
; PROCESSING IS PUT OFF UNTIL NOW. EACH ECR IS CHECKED TO SEE IF
; ADDITIONAL PROCESSING WAS REQUESTED WHEN THE MQO'S WERE BEING CHECKED.
;
;-----------------------------------------------------------------------
ED2500:                             ;
        MOV   ECFPTR            R5  ;
        MOV   ECGUQH+QCFQE.X5   R6  ;   GET ADDRESS OF 1ST USED ECR
        MOV   ECGUQH+QCCQE.X5   R0  ;   GET NUMBER OF USED ECR'S
        IEQ          R0  0          ;   IF NO USED ECR'S - THEN
        JMP          ED2590         ;   THERE IS NO WORK TO DO
ED2502:                             ;
        MOV          R0  LOOPCT     ;   SAVE LOOP COUNT
        SUB   XBASE             R6  ;   RELATIVIZE ECR ADDRESS
        MOV   ECOFLG.X6         R0  ;   GET THE ECR'S OUTPUT FLAGS
        IBZ          R0  ECOPCQ     ;   IF NO PROCESSING NEEDED - THEN
        JMP              ED2504     ;   GO GET NEXT ECR
        MOVC  NT(1<ECOPCQ)      R0  ;
        AND          R0  ECOFLG.X6  ;   CLEAR "PROCESSING REQ'D" FLAG
        MOV   ECCLCN.X6         R6  ;   GET ECR'S LCN
        JMP          S4  ED1200     ;   GET CST, CDT POINTERS
        JMPI         S4  EI1980     ;   POINTER MISSING - REPORT ERROR
        JMPI         S4  EI7290     ;   DO REQUIRED PROCESSING
        JMP          S4  ED1210     ;I  OPEN INTERRUPT WINDOW
        JMP              ED2500     ;   RESTART PROCESSING LOOP. THIS
                                    ;   MAKES SURE THAT ALL PROCESSING
                                    ;   IS DONE WHEN THE ROUTINE EXITS.
                                    ;----------------------------------
ED2504:                             ;
        MOV   ECCFLK.X6         R6  ;   GET NEXT ECR IN THE CHAIN
        MOV   LOOPCT            R0  ;
        SOB          R0  ED2502     ;   DECREMENT LOOP CTR AND CONTINUE
                                    ;   WHILE PROCESSING REQUIRED.
ED2590:                             ;
        MOV   INTSTA            R0  ;
        INE          R0  PCIDLE     ;   IF ANY WORK WAS DONE - THEN
        JMP              ED2050     ;   GO CHECK ONE MORE TIME
;-----------------------------------------------------------------------
;
; RESERVE CPU INTERRUPT
;
; AT THE COMPLETION OF THE PROCESSING CYCLE THE CPU INTERRUPT IS
; RESERVED TO ENABLE THE NEXT CYCLE. EDC RETURNS FROM INTERRUPT AND
; WAITS FOR THE NEXT CPU INTERRUPT TO START A NEW CYCLE.
;
;-----------------------------------------------------------------------
ED2900:                             ;
        LDM   2#111                 ;   DISABLE_INTERRUPTS
        MON   RCPU                  ;   RESERVE_CPU_INTERRUPT
        MON   RFI                   ;   RETURN_FROM_INTERRUPT
        JMPI         S4  EI1990     ;E  REPORT INVALID PROCESS I.D. ERR
        JMP              ED2050     ;   NEW INTERRUPT STARTS HERE
;-----------------------------------------------------------------------
;
; LOCAL INTERRUPT SERVICE.
;
;-----------------------------------------------------------------------
ED2990:                             ;
        MOV   XLIRP             R4  ;
        MON   ERR                  &;E   CALL ONLINE ERROR PROCESSING
;-----------------------------------------------------------------------
;FF\f


;-----------------------------------------------------------------------
;
; THIS IS THE MAIN LINE CODE USED BY THE LETTER DRIVEN PROCESS. ALL
; LETTER RELATED PROCESSING IS CONTROLLED FROM HERE.
;
;-----------------------------------------------------------------------
;
; LETTER DRIVEN MAIN PROGRAM INITIALIZATION
;
;-----------------------------------------------------------------------
ED3000:                             ;
        JMP          S4  ED1100     ;   INIT. LETTER PROCESS BASE AREA
        MOVC  EDLLPN            R3  ;   PROCESS NO. FOR EDL
        MOV   XBASE             R4  ;   GET ABS. BASE OF EDL
        MON   CRP                   ;   CREATE EDL PROCESS
        JMP          S4  ED1910    &;E  REPORT CREATION ERROR
        MON   RTI                   ;   RETURN FROM INITIALIZATION
;-----------------------------------------------------------------------
;
; WAIT FOR A LETTER HERE
;
;-----------------------------------------------------------------------
ED3100:                             ;
        MON   WL                    ;   WAIT HERE
        MOV          R5  LETPTA     ;   SAVE ABS. ADDRESS OF LETTER
        MOV          R7  LETPTR     ;   SAVE REL. ADDRESS OF LETTER
        MOV   LTRCV. X7         R0  ;   GET LETTER SENDER - MONITOR PUTS
                                    ;   SENDER IN RECEIVER POSITION
        MOV   LETPTR            R7  ;
        IEQP         R0  RTCLPN     ;   IF SENDER  = REAL TIME CLOCK
        JMP          S4  ED3200     ;   THEN PROCESS RTC LETTER
        JMP              ED3110     ;
        IEQP         R0  CMILPN     ;   IF SENDER IS CMI - THEN
        JMP          S4  ED3300     ;   PROCESS CMI LETTER
        JMP              ED3110     ;
        IEQP         R0  TQMLPN     ;   IF SENDER = TIME QUEUE MONITOR
        JMPI         S4  EI3500     ;   PROCESS TQM LETTER
        JMP              ED3110     ;
        IEQP         R0  ODPLPN     ;   IF SENDER IS ODP - THEN
        JMPI         S4  EI3600     ;   PROCESS ODP LETTER
        JMP              ED3110     ;
        JMP          S4  ED1930     ;   REPORT UNEXPECTED SENDER
ED3110:                             ;     RETURN FROM LETTER PROCESSOR
        JMP              ED3100     ;   GO WAIT FOR NEXT LETTER
;-----------------------------------------------------------------------
;FF\f


;-----------------------------------------------------------------------
; PROCESS_RTC_LETTER
;
; THIS ROUTINE PROCESSES LETTERS FROM THE REAL TIME CLOCK EVERY 100 MS.
; IT CONTROLLS THE THROTTLING STATE AND MAKES SURE THAT THE INTERRUPT
; PROCESS (EDI) IS ACTIVATED AT LEAST EVERY 100 MS.
;
; CALLED BY: ED3100
;
; CALLS: ED4300, ED1920, ED1940
;
; ENTRIES: ED3200
;
; RETURNS: LINK
;
; REGISTERS          ENTRY              EXIT
; R0,R1,R2,R3,R5,R6  -                  DESTROYED
; R4                 LINK               DESTROYED
; R7                 LETP (REL)         DESTROYED
;-----------------------------------------------------------------------
ED3200:                             ;
        MOV          R4  RL3200     ;
        MOV   LTMS1. X7         R4  ;   GET MESSAGE TYPE
        INE          R4  LTMST1     ;   IF MESSAGE TYPE NOT 1 - THEN
        JMP              ED3208     ;   IT'S AN ERROR
        MON   GSST                  ;   GET NO. OF VACANT SECTORS IN R0
        MOV   ECFPTR            R4  ;   GET POINTERS TO ECF AND GST
        MOV   XGSTPR            R5  ;
        MOV   ECGFLG.X4         R1  ;   GET GLOBAL ECF FLAGS
        IBN          R1  ECGTHR     ;   IF THROTTLING IS ON - THEN
        JMP              ED3202     ;   GO CHECK ITS STATUS
                                    ;----------------------------------
                                    ;   THROTTLING IS NOT ON
                                    ;----------------------------------
        MOV   GSTTL1.X5         R2  ;   GET LOWER THROTTLING LIMIT
        SLT          R0         R2  ;   IF NO. VACANT SECTORS > LIMIT
        JMP              ED3204     ;   THEN ALL OK - SEND LETTER TO RTC
        SETS         R1  ECGTHR     ;   SET THROTTLING FLAG ON
        MOVC  CCBCT2            R2  ;   GET 10 SEC. BUFFER CONN. TIME
        MOVC  TRUE              R3  ;   FOR GST THROTTLING FLAG
        JMP              ED3203     ;
                                    ;-----------------------------------
                                    ;   THROTTLING IS ON
                                    ;-----------------------------------
ED3202:                             ;
        MOV   GSTTL2.X5         R2  ;   GET UPPER THROTTLING LIMIT
        ILT          R0          R2 ;   IF NO. VACANT SECTORS < LIMIT
        JMP              ED3204     ;   THEN LEAVE THROTTLING ALONE
        MOVC  ECGTHR             R2 ;
        CLRS         R1         R2  ;   CLEAR ECF THROTTLING FLAG
        MOVC  CCBCT1            R2  ;   GET .8 SEC. CONNECT TIME
        MOVC  FALSE             R3  ;   FOR GST THROTTLING FLAG
ED3203:                             ;
        MOV          R1  ECGFLG.X4  ;   STORE ECF THROTTLING FLAG
        MOV          R3  GSTTHR.X5  ;   STORE GST THROTTLING FLAG
        MOD   GSTPCF.X5             ;
        MODN  XBASE                 ;
        MOV          R2  PCPBCT     ;   SET CONNECT TIME FOR MXP
        JMPI         S4  EI4300     ;       PROCESS_MP_ACK
ED3204:                             ;
        MOV   LETPTA            R5  ;
        MOVC  EOCRTE            R0  ;   GET 100 MS TIME TILL NEXT LETTER
        MODN  XBASE                 ;
        MOV          R0  LTMS4. X5  ;   PUT 100 MS TIME IN RTC LETTER
        MON   SLET                  ;   SEND LETTER TO RTC
        JMP          S4  ED1920    &;E  REPORT LETTER HANDLING ERROR
        CPU                         ;  ***  TRIGGER EDI PROCESS ***
        JMPI             RL3200     ;     RETURN
ED3208:                             ;
        JMP          S4  ED1940     ;E  REPORT MESSAGE TYPE ERROR
        JMPI             RL3200     ;     RETURN
;-----------------------------------------------------------------------
;FF\f


;-----------------------------------------------------------------------
; PROCESS_CMI_LETTER
;
; THIS ROUTINE PROCESSES LETTERS FROM CMI WHICH RELATE TO COMMANDS
; RECEIVED FROM THE MP.
;
; CALLED BY: ED3100
;
; CALLS: ED3310, ED3320, ED3330, ED3340, ED3350, ED3360, ED3370,
;        ED3380, ED4300, ED1920, ED3430, ED3410, ED1201, ED6420
;
; ENTRIES: ED3300
;
; RETURNS: LINK
;
; REGISTERS          ENTRY              EXIT
; R0,R1,R2,R3,R5,R6  -                  DESTROYED
; R4                 LINK               DESTROYED
; R7                 LETP               DESTROYED
;-----------------------------------------------------------------------
ED3300:                             ;
        MOV          R4  RL3300     ;
        MOVL  LTMS1. X7         R01 ;   GET MESS. TYPE AND SUB-COM. LOC.
        MOV          R1         R5  ;
        INE          R0  LTMST1     ;   IF MESSAGE TYPE NOT 1 - THEN
        JMP              ED3306     ;   GO CHECK FOR 2
        SUB   XBASE             R5  ;   RELATIVIZE SUB-COMMAND LOC.
        MOVL  OCSCTS.X5         R01 ;   R0 = SC TYPE, R1 = PAD/LAD
        XTR          R0  OCSCTX     ;
        MOV          R0  CSCTYP     ;   UNPACK AND STORE TYPE
        MOV          R1  CSCPLA     ;   STORE PAD AND LAD
        SWP          R1             ;
        XTR          R1  CSTLAX     ;   UNPACK LAD (LCN)
        MON   GETCST                ;   GET CST LOC. FOR THE LCN
        JMPI         S4  EI3430    &;V  REPORT ERROR FINDING CST
        MOV          R4  CSTPTA     ;   SAVE CST LOC.
        MOV          R6  CSTPTR     ;
        MOV   CSCTYP            R0  ;   GET SUBCOMMAND TYPE
        IEQP         R0  OCS5       ;   IF TYPE IS 5 - THEN
        JMP          S4  ED3350     ;   GO DO CHANNEL SETUP
        JMP              ED3303     ;   AND RETURN LETTER TO CMI
        MOV   CSTCS6.X6         R0  ;
        MOVC  1<CSTTST+%            ;   UNPACK TEST, SYNCH AND EDC FLAGS
              1<CSTSYN+1<CSTEDC R3  ;
        AND          R0         R3  ;
        INE   R3 1<CSTSYN+1<CSTEDC  ;   IF LCN IN TEST OR NOT SYNCH EDC
        JMPI         S4  EI3410     ;V  THEN REPORT A VIOLATION
        MOV          R6         R7  ;
        JMP          S4  ED1201     ;   GET CDT AND ECR POINTERS
        JMPI         S4  EI3410     ;E  NO POINTERS - REPORT VIOLATION
        MOV   CSCTYP            R0  ;
        INEP         R0  OCS1       ;   IF SC TYPE = 1 OR 2 - THEN
        INE          R0  OCS2       ;
        JMP              ED3301     ;
        JMP          S4  ED3310     ;   OPEN INPUT AND
        JMP          S4  ED3320     ;   OPEN OUTPUT
        JMP              ED3303     ;   GO RETURN LETTER TO CMI
ED3301:                             ;
        INEP         R0  OCS3       ;   IF SC TYPE = 3 OR 4 - THEN
        INE          R0  OCS4       ;
        JMP              ED3302     ;
        JMP          S4  ED3330     ;   CLOSE INPUT AND
        JMP          S4  ED3340     ;   CLOSE OUTPUT
        JMPI         S4  EI6420     ;   DEACTIVATE ACK TIME OUT
        JMPI         S4  EI6440     ;   DEACTIVATE ACKL TIME OUT
        JMP              ED3303     ;   RETURN LETTER TO CMI
ED3302:                             ;
        IEQP         R0  OCS12      ;   IF SC TYPE = 12 - THEN
        JMP          S4  ED3360     ;   GENERATE A SETBD
        JMP              ED3303     ;   AND RETURN LETTER TO CMI
        INE          R0  OCS13      ;   TEST FOR START /STOP OF
        IEQP         R0  OCS14      ;   NORMAL MONITORING
        JMP          S4  ED3370     ;   GO PROCESS NORMAL MONITORING
        JMP              ED3303     ;   AND RETURN CMI LETTER
        INE          R0  OCS15      ;   TEST FOR START/STOP OF
        IEQP         R0  OCS16      ;   EDC MONITORING
        JMP          S4  ED3380     ;   GO PROCESS EDC MONITORING
        JMP              ED3303     ;   AND RETURN CMI LETTER
        JMPI         S4  EI3410     ;   BAD SC TYPE - REPORT VIOLATION
ED3303:                             ;
        MOVC  0                 R0  ;   SET COMMAND COMPLETE CODE
                                    ;-----------------------------------
                                    ;   THIS ROUTINE IS
                                    ;   ENTERED FROM ED3400 ALSO
                                    ;-----------------------------------
ED3304:                             ;
        MOV   LETPTA            R5  ;
        MODN  XBASE                 ;
        MOV          R0  LTMS4. X5  ;   STORE COMPLETION CODE IN LETTER
        MON   SLET                  ;   SEND LETTER BACK TO CMI
        JMPI         S4  EI1920    &;E  REPORT LETTER HANDLING ERROR
        JMPI             RL3300     ;       RETURN
;-----------------------------------------------------------------------
ED3306:                             ;
        INE          R0  LTMST2     ;   IF MSG TYPE NOT = 2 - THEN
        JMP              ED3308     ;   GO REPORT THE ERROR
        MOV   LETPTR            R7  ;
        CLR              LTMS4. X7  ;
        JMPI         S4  EI4300     ;   PROCESS MP ACKS
        JMPI             RL3300     ;
ED3308:                             ;
        JMP          S4  ED1940     ;E  REPORT BAD LETTER TYPE
        JMPI             RL3300     ;     RETURN
;-----------------------------------------------------------------------
;FF\f


;-----------------------------------------------------------------------
; SUB-COMMAND_HANDLING_PROCEDURES.
;
; CALLED BY: ED3300
;
; CALLS: ED1240, ED1250, ED1260, ED1210, ED1650, ED3410
;
; ENTRIES: ED3310 - OPEN INPUT
;          ED3320 - OPEN OUTPUT
;          ED3330 - CLOSE INPUT
;          ED3340 - CLOSE OUTPUT
;          ED3350 - SET UP CHANNEL
;          ED3360 - SETBD HANDLING
;          ED3370 - START/STOP NORMAL MONITORING
;          ED3380 - START/STOP EDC MONITORING
;
; RETURNS: LINK   - COMPLETE
;          ED3410 - VIOLATION DETECTED
;
; REGISTERS          ENTRY              EXIT
; R0                 SC_TYPE            SC_TYPE
; R1,R2,R3,R5,R6,R7  -                  DESTROYED
; R4                 LINK               DESTROYED
;-----------------------------------------------------------------------
                                    ;
ED3310:                             ; BEGIN OPEN_INPUT
                                    ;----------------------------------
        MOV          R4  RL3310     ;
        MOV   CSTPTR            R6  ;
        MOV   CSTCS2.X6         R0  ;
        IBZ          R0  CSTCSU     ;   IF CHANNEL NOT SET UP - THEN
        JMP          S4  ED3410     ;V  REPORT VIOLATION
        IBN          R0  CSTICO     ;   IF CHANNEL ALREADY OPEN - THEN
        JMP              0.     X4  ;   EXIT - DONE
        MON   OEICDT                ;   OPEN_EDC_INPUT_CDT
        JMP          S4  ED3410     ;V  CDT OPENING ERROR - VIOLATION
        MOV   CSTPTR            R6  ;
        MON   PIPCST                ;   PRESET_IDP_CST_PARAMETERS
        MOVC  1<CSTICO          R0  ;
        IOR          R0  CSTCS2.X6  ;   SET "INPUT CHANNEL OPEN" FLAG
        MON   BEQCST                ;   PUT CHANNEL IN BAUD RATE QUEUE
        JMPI             RL3310     ;
;-----------------------------------------------------------------------
ED3320:                             ; BEGIN OPEN_OUTPUT
                                    ;----------------------------------
        MOV          R4  RL3310     ;
        MOV   CSTPTR            R6  ;
        MOV   CSTCS2.X6         R0  ;
        IBZ          R0  CSTCSU     ;   IF CHANNEL NOT SET UP - THEN
        JMP          S4  ED3410     ;V  REPORT A VIOLATION
        IBN          R0  CSTOCO     ;   IF CHANNEL ALREADY OPEN - THEN
        JMP              0.     X4  ;   EXIT - DONE
        MON   OEOCDT                ;   OPEN_EDC_OUTPUT_CDT(CDTP)
        JMP          S4  ED3410    &;V  CDT OPEN ERROR - VIOLATION
        MOV   CSTPTR            R6  ;
        MOVC  1<CSTOCO          R0  ;
        IOR          R0  CSTCS2.X6  ;   SET OUTPUT CHANNEL OPEN
        MOV   ECRPTR            R6  ;
        MOVC  1<ECOSCQ+1<ECOALTO+%  ;   SET "SETBD REQ'D", "ACK TIMEOUT"
              1<ECOATO          R0  ;   "ACKL TIMEOUT"
        MOV          R0  ECOFLG.X6  ;   IN ECR'S OUTPUT FLAG
        CPU                         ;   ***TRIGGER INTERRUPT PROCESS***
        JMPI             RL3310     ;   RETURN
;-----------------------------------------------------------------------
ED3330:                             ; BEGIN CLOSE_INPUT
                                    ;----------------------------------
        MOV          R4  RL3310     ;
        MOV   CSTPTR            R6  ;
        MOV   CSTCS2.X6         R0  ;
        IBZ          R0  CSTICO     ;   IF CHANNEL ALREADY CLOSED - THEN
        JMP              0.     X4  ;   EXIT - DONE
        MOVC  NT 1<CSTICO       R0  ;
        AND          R0  CSTCS2.X6  ;   SET CHANNEL CLOSED FOR INPUT
        MON   CGICDT                ;   CLOSE_GENERAL_INPUT_CDT
        NOP                         ;
        MOV   CSTPTR            R6  ;
        MON   BDQCST                ;   REMOVE CST FROM BAUD RATE QUEUE
        MOV   ECRPTR            R6  ;
        JMP          S4  ED1250     ;   RELEASE_ECC_INPUT_DATA.
                                    ;
        JMPI         S4  EI5600     ;   RELEASE_ECI_DATA.
                                    ;
        JMPI             RL3310     ;   RETURN
;-----------------------------------------------------------------------
ED3340:                             ; BEGIN CLOSE_OUTPUT
                                    ;----------------------------------
        MOV          R4  RL3310     ;
        MOV   CSTPTR            R6  ;
        MOV   CSTCS2.X6         R0  ;
        IBZ          R0  CSTOCO     ;   IF CHANNEL ALREADY CLOSED - THEN
        JMP              0.     X4  ;   EXIT - DONE
        MOVC  NT 1<CSTOCO       R0  ;
        AND          R0  CSTCS2.X6  ;   SET OUTPUT CHANNEL CLOSED
        MOV   ECRPTR            R6  ;
        JMP          S4  ED1260     ;   RELEASE_OUTPUT_DATA.
ED3342:                             ;   UNTIL CTD_CLOSED DO
        MOV   CSTPTR            R6  ;
        MON   CEOCDT                ;       CLOSE_GENERAL_OUTPUT_CDT.
        JMPI         S4  EI19A0     ;E      X0: RESERVATION ERROR.
        JMP              ED3344     ;       X1: EB RETREIVED FROM CDT
                                    ;           AND CDT NOT CLOSED.
                                    ;           GOTO SIM_MQO.
                                    ;           (R3:=EB_REF.)
        JMP              ED3346     ;       X2: CDT CLOSED,AWAIT_OUT-
                                    ;           STANDING MQO'S.
ED3344:                             ;
        MOV   ECRPTR            R6  ;       BEGIN SIM_MQO.
        MOV   ECOTEC.X6         R0  ;   GET OUTPUT BLOCK COUNT
        ILT          R0  2          ;   IF < 2 OUTSTANDING BLOCKS THEN
        JMP              ED3345     ;   GO HANDLE 0 OR 1 PSEUDO MQO'S
        INV              ECOISW.X6  ;         SIM THE LAST MQO,I.E.
        INV              ECOOSW.X6  ;         SWITCH OOSW/OISW
ED3345:                             ;
        JMPI         S4  EI1650     ;   PROCESS THE EDC BLOCK
        JMP              ED3342     ;   GO TRY CLOSING AGAIN
ED3346:                             ;
        MON   RODCST                ;   RELEASE_OUTPUT_DATA_CST.
        JMP          S4  ED1251     ;   RELEASE_ECC_OUTPUT_DATA.
        MOV   ECRPTR            R6  ;
ED3348:                             ;   WAIT TILL ALL MQO'S REC'D
        IOZ              ECOTEC.X6  ;   IF NO OUTSTANDING BLOCKS - THEN
        JMP              ED3349     ;   EXIT
        CPU                         ;   ***TRIGGER INTERRUPT PROCESS***
        JMP          S4  ED1212     ;   OPEN INTERRUPT WINDOW
        JMP              ED3348     ;   KEEP WAITING
ED3349:                             ;
        JMPI             RL3310     ;   RETURN
;-----------------------------------------------------------------------
ED3350:                             ; BEGIN SETUP_CHANNEL
                                    ;----------------------------------
        MOV          R4  RL3310     ;   SAVE RETURN LINK
        MOV   CSTPTR            R6  ;   GET CST POINTER
        MON   PRGCST                ;   PROGRAM CST
        JMP   &      S4  ED3430     ;V  OPEN CST RETURN
        MON   DECR                  ;   DEALLOCATE ECR
        JMP   &      S4  ED3410     ;E  OPEN/BAD RETURN
        NOP                         ;   NONE WAS ALLOCATED
        MON   DCDT                  ;   DEALLOCATE POSSIBLE CDT
        JMP   &      S4  ED3410     ;E  OPEN CDT RETURN
        NOP                         ;   NO ONE ALLOCATED
        MON   CKPCST                ;   CHECK PROGRAMMING
        JMP   &      S4  ED3430     ;V  WRONG CONTENTS RETURN
        MON   PGPCST                ;   PRESET CST PARAMETERS
        MOV   CSTCS1.X6         R3  ;
                                        IF CSTPAD NE 0 THEN
        SRL          R3  CSTPAD         FI
        XTR          R3  CSTPAX     ;   GET PAD(CS1)
ED3352: SIO          R0         R3  ;   CHECK, THAT LTU EXISTS
        MON   CHKLTU                ;   CHECK LTU TYPE
        JMP   &      S4  ED3430     ;V  WRONG TYPE
        MON   PRGLTU                ;   PROGRAM LTU
ED3354:                             ; NO LTU RETURN - CONTINUE:
        MON   ACDT                  ;   ALLOCATE CDT
        JMP   &      S4  ED3410     ;E  GOT AN OPEN ONE
        JMP   &      S4  ED3430     ;V  NONE AVAILABLE
        MON   PGPCDT                ;   PRESET GENERAL CDT PARAMETERS
        JMP   &      S4  ED3410     ;E  NOT RESERVABLE
        MON   PEPCDT                ;   PRESET SYNC EDC CDT
        JMP   &      S4  ED3410     ;E  NOT RESERVABLE
        JMP          S4  ED1220     ;   ALLOCATE ECR
        JMP   &      S4  ED3430     ;V  NONE AVAILABLE
        MOV          R6         R0  ;
        ADDC  CSTCS2            R0  ;
        SETS         X0  CSTCSU     ;   DECLARE CHANNEL SETUP
        JMPI             RL3310     ;   RETURN
;----------------------------------------------------------------------
ED3360:                             ; BEGIN SETB_SC_HANDLING.
                                    ;----------------------------------
        MOV          R4  RL3310     ;
        MOV   CSTPTR            R6  ;
        MOV   CSTCS2.X6         R3  ;
        MOVC  1<CSTICO+1<CSTOCO R0  ;
        AND          R0         R3  ;
        INE          R0         R3  ;   IF CHANNEL NOT OPEN - THEN
        JMP          S4  ED3430     ;   REPORT A VIOLATION
        MOV   ECRPTR            R6  ;
        JMP          S4  ED1260     ;   RELEASE_OUTPUT_DATA
        JMPI         S4  EI6420     ;   DEACTIVATE ACK TIMEOUT
        JMPI         S4  EI6440     ;   DEACTIVATE ACKL TIMEOUT
        MOV   ECONIX.X6         R0  ;
        JMP          S4  ED1240     ;   PREPARE ECR OUTPUT AREA
        MOD   CSTPTR                ;
        MOVC  CSTVF4            R7  ;   GET CSTVF4 LOCATION
        SETS         X7  EECSRA     ;   SET SETBD COMMAND IN PROGRESS
        CPU                         ;   ***TRIGGER INTERRUPT PROCESS***
        JMPI             RL3310     ;   RETURN
;-----------------------------------------------------------------------
                                    ;
ED3370:                             ; BEGIN START/STOP NORMAL MONITORING
                                    ;-----------------------------------
        MOV   CSTPTR            R6  ;
        ADDC  CSTCS7            R6  ;
        MOVC  CSTNMM            R2  ;
        CLRS         X6         R2  ;   CLEAR CSTNMM (STOP) BUT
        IEQ          R0  OCS13      ;   IF ITS START
        SETS         X6  CSTNMM     ;   THEN TURN CSTNMM ON
        JMP                     X4  ;   RETURN
;-----------------------------------------------------------------------
                                    ;
ED3380:                             ; BEGIN START/STOP EDC MONITORING
                                    ;-----------------------------------
        MOV   CSTPTR            R6  ;
        ADDC  CSTCS7            R6  ;
        SETS         X6  CSTEMM     ;   SET CSTEMM (START)
        INE          R0  OCS16      ;   IF SC NOT STOP - THEN
        JMP                     X4  ;   RETURN FROM START
        MOV          R4  RL3380     ;   SAVE RETURN LINK
                                    ;-----------------------------------
                                    ;   PROCESS STOP EDC MONITORING
                                    ;-----------------------------------
        MOVC  CSTEMM            R2  ;
        CLRS         X6         R2  ;   CLEAR CSTEMM (STOP)
        MOV   XGSTPR            R6  ;
        MOV   GSTECF.X6         R6  ;
        SUB   XBASE             R6  ;   REL. LOCATION OF ECF IN R6
        MOV   ECGCIM.X6         R5  ;   REL. LOC. OF CST THAT
        SUB   XBASE             R5  ;   IS USED FOR INPUT MONITORING
        MOV   CSTIP2.X5         R7  ;
        SBZ          R7  CSTISA     ;   IF A SECTOR IS ALLOCATED THEN
        JMP          S4  ED3383     ;   QUEUE IT FOR THE MP
        MOV   XGSTPR            R6  ;
        MOV   GSTECF.X6         R6  ;
        SUB   XBASE             R6  ;   REL. LOCATION OF ECF IN R6
        MOV   ECGCOM.X6         R5  ;   REL. LOCATION OF CST THAT
        SUB   XBASE             R5  ;   IS USED FOR OUTPUT MONITORING
        MOV   CSTIP2.X5         R7  ;
        SBZ          R7  CSTISA     ;   IF A SECTOR IS ALLOCATED THEN
        JMP          S4  ED3383     ;   QUEUE IT FOR THE MP
        JMPI             RL3380     ;   RETURN
ED3383:                             ;
        SVS          R3             ;   SAVE PSW
        LDM   2#111                 ;   DISABLE INTERRUPTS
        MOV          R5  XHWRK6     ;   PUT CSTPTR IN EDCQMS WORK AREA
        MON   EDCQMS                ;   QUEUE THE MESSAGE SECTOR
        LDS          R3             ;   RESTORE PSW
        JMP                     X4  ;   RETURN
;-----------------------------------------------------------------------
;FF\f


;-----------------------------------------------------------------------
; SUBCOMMAND ERROR HANDLING
;
; CALLED BY: ED3310, ED3320, ED3350, ED3360
;
; CALLS: NONE
;
; ENTRIES: ED3410 - CP ERROR
;          ED3420 - SUBCOMMAND ERROR
;          ED3430 - ATTEMPTED VIOLATION
;
; RETURNS: ED3304 - SUBCOMMAND COMPLETION
;
; REGISTERS          ENTRY              EXIT
; R0                 -                  CMC
; R1                 -                  DESTROYED
; R2,R3,R7           -                  UNCHANGED
; R4                 LINK               DESTROYED
; R5                 -                  GSTP (REL)
; R6                 -                  CSTP (REL)
;-----------------------------------------------------------------------
ED3410: MODC  CMCCPE-CMCCME         ;   CP ERROR
ED3420: MODC  CMCCME-CMCATV         ;   SUBCOMMAND ERROR
ED3430: MOVC  CMCATV            R0  ;   ATTEMPTED VIOLATION
        MOVC  1<CSTSUE          R1  ;
        MOV   CSTPTR            R6  ;
        IOR          R1  CSTVF1.X6  ;   SET ERROR BITS IN CSTVF1
        MOV   XGSTPR            R5  ;
        MOV          R4  GSTSBR.X5  ;   SAVE ERROR DETECTION ADDR IN GST
        JMP              ED3304     ;   GOTO SC_COMPLETION.
;-----------------------------------------------------------------------
;FF\f


;-----------------------------------------------------------------------
; PROCESS_TQM_LETTERS
;
; TIME QUEUE MONITOR LETTERS ARE RECEIVED WHEN TIMEOUTS EXPIRE.  THE
; TIMEOUTS IN QUESTION ARE THE ACK AND ACKL TIMEOUTS.
;
; CALLED BY: ED3100
;
; CALLS: ED1200, ED1604
;
; ENTRIES: ED3500
;
; RETURNS: DONE
;
; REGISTERS          ENTRY              EXIT
; R0,R1,R2,R3,R5,R6  -                  DESTROYED
; R4                 LINK               DESTROYED
; R7                 LETP (REL)         DESTROYED
;-----------------------------------------------------------------------
ED3500:                             ;
        MOV          R4  RL3500     ;
        MOV          R7  LETPTR     ;   SAVE POINTER TO TQM LETTER
        MOV   LETPTR            R7  ;
        MOV   LTMS1. X7         R4  ;
        INE          R4  LTMST0     ;   IF MSG TYPE IS NOT 0 - THEN
        JMP              ED3506     ;   GO RELEASE THE LETTER
        MOV   LTMS4. X7         R6  ;   GET LCN AND FLAGS
        MOV          R6         R3  ;
        XTR          R6  CSTLAX     ;   UNPACK LCN
        JMPI         S4  EI1200     ;   GET CST, CDT AND ECR FOR LCN
        JMP              ED3506    &;   NO ECR - GO RELEASE LETTER
        MOV   ECOFLG.X6         R0  ;   GET OUTPUT FLAGS FOR THE LCN
        SETS         R0  ECOPCQ     ;   SET "PROCESSING REQ'D" FLAG
        IBZ          R3  EOCLTF     ;   IF ACKL TIMEOUT NOT ON - THEN
        JMP              ED3502     ;   GO CHECK ACK TIMEOUT
        IONP             ECOXLT.X6  ;   IF ACKL CTR NOT ZERO THEN
        DEC              ECOXLT.X6  ;   DECREMENT IT AND
        JMP              ED3506     ;   EXIT
        IBZ          R0  ECOPALT    ;   IF NO PENDING ACKL TIMEOUT THEN
        JMP              ED3506     ;   EXIT
        MOVC  ECOPALT           R1  ;
        CLRS         R0         R1  ;   CLEAR PENDING ACKL TIMEOUT
        MOV   ECOLCT.X6         R1  ;   GET LCB COUNT
        ILT          R1  EOCLCL     ;   IF LCB COUNT < LCB LIMIT - THEN
        JMP              ED3501     ;   GO SET TIMEOUT
        MOVC  EEC10C            R0  ;
        JMPI         S4  EI1800     ;   REPORT LCB COUNT EXCESS
        NOP                         ;
        JMP              ED3506     ;   EXIT
ED3501:                             ;
        SETS         R0  ECOALTO    ;   SET "ACKL TIMEOUT" FLAG
        MOV          R0  ECOFLG.X6  ;
        JMPI         S4  EI1604     ;   ACTIVATE LCB OUTPUT QUEUE
        JMP              ED3504     ;   GO TRIGGER INTERRUPT PROCESS
ED3502:                             ;
        IBZ          R3  EOCATF     ;   IF ACK TIMEOUT NOT ON - THEN
        JMP              ED3506     ;   EXIT
        IONP             ECOXAT.X6  ;   IF ACK COUNTER NON ZER - THEN
        DEC              ECOXAT.X6  ;   DECREMENT IT AND
        JMP              ED3506     ;   EXIT
        IBZP         R0  ECOPAT1    ;   IF NO PENDING ACK TIMEOUTS THEN
        IBZ          R0  ECOPAT2    ;
        JMP              ED3506     ;   EXIT
        SETS         R0  ECOATO     ;   SET ACK TIMEOUT ON
        MOVC  NT%                   ;
        (1<ECOPAT1+1<ECOPAT2)   R1  ;   CLEAR PENDING ACK TIMEOUT FLAGS
        AND          R1         R0  ;
        MOV          R0  ECOFLG.X6  ;
ED3504:                             ;
        CPU                         ;I  ***TRIGGER INTERRUPT PROCESS***
ED3506:                             ;
        MOV   LETPTA            R5  ;
        MON   RLET                  ;   RELEASE THE LETTER
        JMPI             RL3500     ;   RETURN
;-----------------------------------------------------------------------
;FF\f


;-----------------------------------------------------------------------
; PROCESS_ODP_LETTERS
;
; THIS ROUTINE PROCESSES LETTERS FROM ODP WHICH DEAL WITH
; PRE-EMPTION, INITIATION OF OUTPUT OR CHANNEL CLOSING.
;
; CALLED BY: ED3100
;
; CALLS: ED1200, ED1212, ED1260, ED7200, ED3330, ED6420, ED6440,
;        ED1980, ED1920
;
; ENTRIES: ED3600
;
; RETURNS: LINK
;
; REGISTERS          ENTRY              EXIT
; R0,R1,R2,R3,R5,R6  -                  DESTROYED
; R4                 LINK               DESTROYED
; R7                 LETP (REL)         DESTROYED
;-----------------------------------------------------------------------
ED3600:                             ;
        MOV          R4  RL3600     ;
        MOV          R7  LETPTR     ;
        MOV   LETPTR            R7  ;
        MOV   LTMS1. X7         R4  ;
        INE          R4  LTMST1     ;   IF MSG TYPE IS NOT 1 - THEN
        JMP              ED3610     ;   GO CHECK PRE-EMPTION
        MOV   ECFPTR            R5  ;
        MOV   ECGUQH.X5         R6  ;   GET TOP OF USED ECR QUEUE
        MOV   ECGUQH+%              ;
              QCCQE. X5         R0  ;   GET NO. OF USED ECR'S
        IEQ          R0  0          ;   IF NO ECR'S THEN
        JMP              ED3606     ;   EXIT
ED3602:                             ;
        MOV          R0  LOOPCT     ;   CYCLE USED ECR'S
        MOV          R6  ECRPTA     ;
        SUB   XBASE             R6  ;
        MOV   ECCCST.X6         R7  ;   GET ABS. CST PTR FROM ECR
        MOV          R7  CSTPTA     ;
        SUB   XBASE             R7  ;   RELATIVIZE CST POINTER
        IOZ        QCCQE+CSTOBQ.X7  ;   IF OUTPUT BIN QUEUE EMPTY - THEN
        JMP              ED3604     ;   GO CHECK NEXT CHANNEL
        MOD          R6             ;
        MOVC  ECOFLG            R5  ;   GET ADDRESS OF OUTPUT FLAGS
        RELS         X5  ECOEMP     ;   SET OUTPUT BIN QUEUE NOT EMPTY
        MOV          R6  ECRPTR     ;   SAVE POINTERS
        MOV          R7  CSTPTR     ;
        IBZP         X5  ECOSCQ     ;   IF NOT IN SETBD MODE - THEN
        JMPI         S4  EI7200     ;   GO DO SOME OUTPUT
        JMP              ED3604     ;   THEN GET NEXT CHANNEL
        MOV   CSTPTR            R6  ;
        MON   RODCST                ;   RELEASE CST OUTPUT DATA
        MOV   ECRPTR            R6  ;
ED3604:                             ;
        CPU                         ;   ***TRIGGER INTERRUPT PROCESS***
        JMP          S4  ED1212     ;I  OPEN INTERRUPT WINDOW
        MOV   ECCFLK.X6         R6  ;   GET LINK TO NEXT ECR
        MOV   LOOPCT            R0  ;
        SOB          R0  ED3602     ;   PROCESS NEXT ECR UNLESS DONE
ED3606:                             ;     CLEAR_FLAG:
        MOV   LETPTA            R5  ;
        MODN  XBASE                 ;
        CLR              LTMS4. X5  ;
        JMPI             RL3600     ;   RETURN
;-----------------------------------------------------------------------
                                    ;   PRE-EMPTION
ED3610:                             ;-----------------------------------
        INE          R4  LTMST2     ;   IF MSG TYPE NOT 2 - THEN
        JMP              ED3620     ;   GO CHECK CHANNEL CLOSING
        MOV   LTMS3. X7         R6  ;
        SWP          R6             ;
        XTR          R6  CSTLAX     ;   UNPACK LCN
        JMPI         S4  EI1200     ;   GET CST, CDT, ECR POINTERS
        JMPI         S4  EI1980    &;E  NO ECR - REPORT ERROR
        MOV   CSTPTR            R6  ;
        CLR              CSTNOC.X6  ;   CLEAR O/P CHAR. COUNT
        MOV   ECRPTR            R6  ;
        JMP          S4  ED1260     ;   RELEASE OUTPUT DATA
        MOVC  1<ECOSCQ+1<ECOATO+%   ;
              1<ECOALTO         R0  ;
        IOR          R0  ECOFLG.X6  ;   SET FLAGS AS IF JUST OPENED
        MOV   LETPTR            R7  ;
        MOVC  CMILPN            R0  ;
        MOV          R0  LTRCV. X7  ;   LETTER RECEIVER = CMI
        CLR              LTMS4. X7  ;
        MOV   LETPTA            R5  ;
        MON   SLET                  ;   SEND LETTER TO CMI
        JMPI         S4  EI1920    &;E  REPORT LETTER HANDLING ERROR
        JMPI             RL3600     ;   RETURN
;-----------------------------------------------------------------------
                                    ;   REQUEST TO CLOSE CHANNEL
ED3620:                             ;-----------------------------------
        INE          R4  LTMST3     ;   IF MSG TYPE NOT 3 - THEN
        JMP              ED3630     ;   REPORT MESSAGE TYPE ERROR
        MOV   LTMS3. X7         R6  ;
        SWP          R6             ;
        XTR          R6  CSTLAX     ;   UNPACK LCN
        JMPI         S4  EI1200     ;   GET CST, CDT, ECR POINTERS
        JMP              ED3624     ;   NO ECR - RETURN
        JMP          S4  ED3330     ;   CLOSE INPUT
        JMP          S4  ED3340     ;   CLOSE OUTPUT
        JMPI         S4  EI6420     ;   DEACTIVATE ACK TIMEOUT
        JMPI         S4  EI6440     ;   DEACTIVATE ACKL TIMEOUT
ED3624:                             ;
        MOV   LETPTA            R5  ;
        MON   SLET                  ;   RETURN THE LETTER
        JMPI         S4  EI1920     ;E  REPORT LETTER HANDLING ERROR
        JMPI             RL3600     ;   RETURN
ED3630:                             ;
        JMPI         S4  EI1940    &;E  REPORT LETTER TYPE ERROR
        MOV   LETPTA            R5  ;
        MON   RLET                  ;   RELEASE LETTER
        JMPI             RL3600     ;   RETURN
;-----------------------------------------------------------------------
;FF\f


;-----------------------------------------------------------------------
;
; LOCAL INTERRUPT SERVICE
;
; THE ONLY LEGAL ENTRY TO THIS ROUTINE IS AS A RESULT OF AN LTU
; TIMEOUT WHEN STATUS IS READ DURING PROCESSING OF A SETUP SUBCOMMAND
;
;-----------------------------------------------------------------------
ED3990:                             ;
        MOV   XLIRP             R4  ;   GET RETURN ADDRESS
        MOV   XLICC             R0  ;   GET INTERRUPT CAUSE
        SNE          R4  ED3352     ;   IF NOT TIMEOUT ON SIO INSTR.
        INE          R0  TIMEOUT    ;   ADDR.  THEN
        MON   ERR                   ;   CALL MON ERR ELSE
        SVS                     R7  ;
        MOVC  NT #1800          R3  ;   CLEAR LOCAL INTERRUPT AND
        AND          R3         R7  ;   TIMEOUT BITS
        LDS                     R7  ;   IN PSW
        MOVC  0                 R3  ;
        MOV          R3  XLICC      ;   CLEAR LOCAL INTERRUPT CAUSE
        JMP              ED3354     ;   SKIP LTU PROGRAMMING
;-----------------------------------------------------------------------
;
; EXTERNAL NAMES.
;
;-----------------------------------------------------------------------
BEGIN
        EXTERNAL ED1251,ED1475,ED1200
        EXTERNAL ED1600,ED1601,ED1602,ED1603,ED1604,ED1800
        EXTERNAL ED1900,ED1910,ED1920,ED1930,ED1940,ED1950,ED1960,ED1970
        EXTERNAL ED1980,ED1990,ED19A0,ED19B0,ED19C0,ED19D0,ED19E0,ED19F0
        EXTERNAL ED2000,ED2990,ED3000,ED3990
        EXTERNAL ED19F1,ED3410,ED3420,ED3430,ED3500,ED3600
NAMES
END
;-----------------------------------------------------------------------
;
; END OF EDC MAIN PROGRAM SECTION.
;
;-----------------------------------------------------------------------
END
«eof»