|
|
DataMuseum.dkPresents historical artifacts from the history of: CR80 Hard and Floppy Disks |
This is an automatic "excavation" of a thematic subset of
See our Wiki for more about CR80 Hard and Floppy Disks Excavated with: AutoArchaeologist - Free & Open Source Software. |
top - metrics - download
Length: 98816 (0x18200)
Types: TextFile
Names: »EDMMOD«
└─⟦7c4388e5c⟧ Bits:30005071 8" CR80 Floppy CR80FD_0009 ( EDM SYS 1 PJ DEC 3,80 )
└─⟦193e12850⟧
└─⟦this⟧ »EDMMOD«
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»