DataMuseum.dk

Presents historical artifacts from the history of:

CR80 Hard and Floppy Disks

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

See our Wiki for more about CR80 Hard and Floppy Disks

Excavated with: AutoArchaeologist - Free & Open Source Software.


top - download

⟦35b5368c2⟧ TextFile

    Length: 78336 (0x13200)
    Types: TextFile
    Names: »EDIMOD«

Derivation

└─⟦31861d049⟧ Bits:30005074 8" CR80 Floppy CR80FD_0012 ( EDI SYS 1 PJ DEC 3, 80 )
    └─⟦46bca6409⟧ 
        └─ ⟦this⟧ »EDIMOD« 

TextFile

LIST
;----------------------------------------------------------------------
; PROJECT:    NICS_TARE/CP
;
;  MODULE IDENTIFICATION:NIC/291
; DISK IDENTIFICATION:   CR/D/0943
;
; CPS NAME:          ERROR DETECTION AN CORRECTION (EDC) SUBMODULE
;                    EDC INPUT PROGRAM SECTION (EDI).
; CPS VERSION:       0100
;
; MERGE FILES:       SEE LIST BELOW
;
; MODULE FILES:      EDISOD,EDIMOD,EDIHOD,EDIVOD,EDINOD.
;
; REFERENCES:        NIC/200/PSP/0006
;
;----------------------------------------------------------------------
BEGIN MODULE EDISYS
USE BASE
XDATE:=#0722
;----------------------------------------------------------------------
;
;      MERGE FILE MESSAGES
;
;----------------------------------------------------------------------
NOLIST
; 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 <:MERGE EOCNOD:>
; 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 <:MERGE EDONOD:>
; 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 <:MERGE EDCNOD:>
; 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 <:MERGE XPDNOD:>
; 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 <:MERGE SYSNOD:>
; 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 <:MERGE CSTNOD:>
; 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 <:MERGE BINNOD:>
MESSAGE <:MERGE 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
; 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 <:MERGE GDSNOD:>
; 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 <:MERGE COPNOD:>
; 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 <:MERGE MNNNOD:>
; 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 <:MERGE ECFNOD:>
MESSAGE <:MERGE 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 <:MERGE 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
LIST
;-----------------------------------------------------------------------
;FF\f


LOC=EIBASE
;----------------------------------------------------------------------
;
;       SPECIAL CONSTANTS.
;
;----------------------------------------------------------------------
;                                   ;   THE FOLLOWING CONSTANTS ARE
;                                   ;   USED AS INPUT PARAMETERS TO THE
;                                   ;   VALIDATION ROUTINE (ED4510)
;                                   ;-----------------------------------
TSTBID:=0                           ;
TSTCRC:=1                           ;   PARAMETERS FOR ED4510
TSTSPN:=2                           ;
;                                   ;-----------------------------------
ALLBIT:=#0                          ;   ZERO
BIDPE:=7                            ;   PARITY ERROR BIT NO. IN THE BID
;----------------------------------------------------------------------
;
;       EDC INPUT PROCEDURE RETURN LINK'S.
;
;----------------------------------------------------------------------
RL4000: LOC=LOC+1
RL4100: LOC=LOC+1
RL4200: LOC=LOC+1
RL4300: LOC=LOC+1
RL4540: LOC=LOC+1
RL4550: LOC=LOC+1
RL4560: LOC=LOC+1
RL4570: LOC=LOC+1
RL4580: LOC=LOC+1
RL4600: LOC=LOC+1
RL4610: LOC=LOC+1
RL4620: LOC=LOC+1
RL4700: LOC=LOC+1
RL4750: LOC=LOC+1
RL4800: LOC=LOC+1
RL4900: LOC=LOC+1
RL4910: LOC=LOC+1
RL4920: LOC=LOC+1
RL4930: LOC=LOC+1
RL4940: LOC=LOC+1
RL4950: LOC=LOC+1
RL4960: LOC=LOC+1
RL4970: LOC=LOC+1
;-----------------------------------------------------------------------
                                    ;   THE FOLLOWING SHARE SPACE
                                    ;-----------------------------------
RL5000:
RL5100:
RL5200:
RL5300:
RL5400:
RL5500:
RL5600:
RL5700:
RLMAIN: LOC=LOC+1
;-----------------------------------------------------------------------
;FF\f


;----------------------------------------------------------------------
;
;       EDC INPUT WORK AREA
;
;----------------------------------------------------------------------
ECISLX: LOC=LOC+1                   ;   INDEX TO IDP_SCHEDULE_QUEUE
                                    ;   THIS PARAMETER IS NOT
                                    ;   INITIALIZED AS THE BACKGROUND
                                    ;   VALUE (ZERO) IS SUFFICIENT.
                                    ;-----------------------------------
ISVR0:  LOC=LOC+1                   ;   THESE LOCATIONS ARE USED FOR
ISVR1:  LOC=LOC+1                   ;   TEMPORARY REGISTER STORAGE.
ISVR2:  LOC=LOC+1                   ;
ISVR3:  LOC=LOC+1                   ;
ISVR4:  LOC=LOC+1                   ;
ISVR5:  LOC=LOC+1                   ;
ISVR6:  LOC=LOC+1                   ;
ISVR7:  LOC=LOC+1                   ;
;----------------------------------------------------------------------
;FF\f


USE PROG
LOC=EIPROG
;----------------------------------------------------------------------
;
;       EDC INPUT SECTION PROGRAM AREA.
;
;----------------------------------------------------------------------
;
; DISPATCH ACKL
;
; WHEN THE MP RELEASES AN LCB THIS ROUTINE IS CALLED TO CONSTRUCT AN
; ACKL. AN UNEXPECTED REQUEST FOR AN ACKL IS DETECTED AND REPORTED.
; AN UNEXPECTED REQUEST IS SENSED WHEN NO LCB HAS BEEN RECEIVED.
;
; ENTRIES: ED4100
;
; RETURNS: LINK
;
; CALLS: ED4500, ED1603
;
; CALLED BY: ED4300
;
; REGISTERS:         ENTRY           EXIT
;       R0             -             DEST
;       R1             -             DEST
;       R3             -             DEST
;       R4           LINK            DEST
;       R5         PTR.TO ACKL-ARRAY UNCH
;       R6          ECRPTR           UNCH
;       R7             -             DEST
;----------------------------------------------------------------------
ED4100:                             ;
        MOV          R4  RL4100     ;
        MOD          R6             ;
        MOVC  ECIFLG            R7  ;
        IBZ          X7  ECIALR     ;   IF UNEXPECTED MP ACKL THEN
        JMP          S4  ED4404     ;R  REPORT AN ERROR
        RELS         X7  ECIALR     ;   CLEAR "ACKL REQ'D" FLAG
                                    ;-----------------------------------
                                    ;   SET UP TO GENERATE AN ACKL
                                    ;-----------------------------------
        MOVC  BTACKL            R0  ;   BLOCK TYPE = ACKL
        MOV   ECIALB.X6         R1  ;   BID = LCB BID
        MOD          R6             ;   QUEUE = ACKL QUEUE
        MOVC  ECCALQH           R3  ;
        IBN          X7  ECISCQ     ;   IF A SETBD WAS RECEIVED THEN
        JMP              ED4102     ;   FORGET THE WHOLE THING
        JMP          S4  ED4500     ;   CREATE THE ACKL BLOCK
        JMP              ED4102     ;   NO BIN AVAILABLE FOR ACKL
        MOV          R5  ISVR5      ;
        JMPI         S4  EI1603     ;           SCHEDULE_ACKL_QUEUE
        MOV   ISVR5             R5  ;
ED4102:                             ;
        JMPI             RL4100     ;
;----------------------------------------------------------------------
;FF\f


;----------------------------------------------------------------------
;
; DISPATCH ACK
;
; WHEN THE MP RELEASES A SEGMENT OR MESSAGE THIS ROUTINE IS CALLED TO
; CONSTRUCT AND SEND AN ACK.
;
; AN UNEXPECTED MP REQUEST FOR AN ACK IS DETECTED WHEN
;        A. TWO ACKS ARE CURRENTLY WAITING TO BE SENT.
;        B. THERE ARE NO SEGMENTS OR MESSAGES PENDING TO THE MP.
;        C. ONE ACK IS WAITING TO BE SENT AND ANOTHER IS NOT REQUIRED.
;
; IF ECIRR IS FOUND TO BE SET THEN THE LAST BLOCK RECEIVED WAS AN RR
; WHICH FOLLOWED A SETBD AND WE ARE IN A RECOVERY MODE. IN THIS CASE
; WE CANCEL REQUESTS FOR ACKS UNTIL NO DATA IS LEFT. ONLY THEN IS THE
; ACK RESPONSE TO THE RR GENERATED.
; IF THE LAST BLOCK RECEIVED WAS A SETBD THEN THE REQUEST FOR ACK IS
; IGNORED.
;
; ENTRIES: ED4200
;
; RETURNS: LINK
;
; CALLS: ED4500, ED1601
;
; CALLED BY: ED4300
;
; REGISTERS:         ENTRY           EXIT
;       R0             -             DEST
;       R1             -             DEST
;       R3             -             DEST
;       R4           LINK            DEST
;       R5        PTR.TO ACK-ARRAY   UNCH
;       R6         ECRPTR           ECRPTR
;       R7             -             DEST
;----------------------------------------------------------------------
ED4200:                             ;
        MOV          R4  RL4200     ;
        MOD          R6             ;
        MOVC  ECIFLG            R7  ;
        IBZ          X7  ECIAP2     ;
        IBZ          X7  ECIAR1     ;
        JMP          S4  ED4402     ;R  REPORT UNEXPECTED ACK REQUEST
        IBNP         X7  ECIAP1     ;
        IBZ          X7  ECIAR2     ;
        JMP          S4  ED4402     ;R  REPORT UNEXPECTED ACK REQUEST
        IBZP         X7  ECISETB    ;   IF  LAST BLOCK WAS NOT SETBD
        IBZ          X7  ECIRR      ;   OR RR (NO RECOVERY) THEN
        JMP              ED4202     ;   GO PROCESS ACK REQUEST
        IBZ          X7  ECIAR2     ;   RELEASE THE LAST "ACK REQ'D"
        RELS         X7  ECIAR1     ;
        RELS         X7  ECIAR2     ;
        IBZ          X7  ECISETB    ;   IF LAST BLOCK WAS SETBD OR
        IBN          X7  ECIAR1     ;   RECOV. ON WITH DATA REMAINING
        JMP              ED4206     ;   THEN EXIT
        RELS         X7  ECIRR      ;   END RECOVERY AND
        JMP              ED4204     ;          GOTO QUEUE ACK
                                    ;
ED4202:                             ;
        IBN          X7  ECIAP1     ;   SET PROPER FLAG TO INDICATE
        SETS         X7  ECIAP2     ;   ANOTHER ACK IS BEING SENT
        SETS         X7  ECIAP1     ;
        IBN          X7  ECIAP2     ;   PREPARE TO ACK OLDEST BID
        MODC  ECISSI-ECIFSI         ;
        MODC  ECIFSI-ECIPAI         ;
ED4204:                             ;
        MOV   ECIPAI.X6         R1  ;   PREPARE FOR ACK BLOCK BUILDING
        MOVC  BTACK             R0  ;
        MOD          R6             ;
        MOVC  ECCAQH            R3  ;
        IBN          X7  ECISCQ     ;   IF SETBD REQ'D THEN
        JMP              ED4206     ;   SKIP THE ACK
        MOV   XGSTPR            R4  ;   TO ACCESS MP THROTTLING FLAG
        ADDC  GSTMPT            R4  ;
        SEQ          X4  FALSE      ;   SKIP IF MP THROTTLING IS OFF
        JMP              ED4206     ;   NO ACK IF MP THROTTLING IS ON
        JMP          S4  ED4500     ;   CREATE THE ACK BLOCK
        JMP              ED4206     ;   NO BIN AVAILABLE FOR ACK
        MOV          R5  ISVR5      ;
        JMPI         S4  EI1601     ;           SCHEDULE_ACK_QUEUE
        MOV   ISVR5             R5  ;
ED4206:                             ;
        JMPI             RL4200     ;
;----------------------------------------------------------------------
;FF\f


;----------------------------------------------------------------------
;
; MP ACK REQUEST HANDLING
;
; WHEN THE MP RELEASES AN LCB, EOS OR EOM THEN THIS ROUTINE IS CALLED
; TO SUPERVISE THE SENDING OF A PROPER ACKNOWLEDGMENT.
;
; ENTRIES: ED4300
;
; RETURNS: LINK
;
; CALLS: ED1200, ED4100, ED4200
;
; CALLED BY: ED3200, ED3300
;
; REGISTERS:         ENTRY           EXIT
;       R0             _             DEST
;       R1             -             DEST
;       R3             -             DEST
;       R4           LINK            DEST
;       R5             _             DEST
;       R6             _             DEST
;       R7             _             DEST
;----------------------------------------------------------------------
ED4300:                             ;
        MOV          R4  RL4300     ;
ED4302:                             ;
        MOD  ECFPTR                 ;
        MOVC ECGFLG             R7  ;
        MOD  ECFPTR                 ;
        MOVC ECGALA             R5  ;   SET TO ACCESS PENDING ACK TABLE
        IBNP         X5  ECGAKP     ;   IF AN ACKL IS PENDING
        RELS         X5  ECGAKP     ;   THEN CLEAR ACK PENDING FLAG
        JMP              ED4304     ;   AND GO PROCESS IT
        ADDC  ECGAKA-ECGALA     R5  ;   SET TO ACCESS PENDING ACK TABLE
        IBZ          X7  ECGTHR     ;   IF THROTTLING IS ON
        IBZ          X5  ECGAKP     ;   OR NO ACK IS PENDING
        JMP              ED4308     ;   THEN WE'RE DONE - EXIT
        RELS         X5  ECGAKP     ;   CLEAR PENDING FLAG
ED4304:                             ;   PROCESS PENDING ACK OR ACKL
        MOD   ECGECX.X5             ;   GET OFFSET TO EDC PORTION AND
        MOD          R5             ;   AD ADDRESS OF ARRAY START
        MOVC  ECGDAT            R4  ;   TO GET ADDR. OF 1ST DATA WORD
        IBZ          X4  ECGRDY     ;   IF NOT READY WE'RE DONE
        JMP              ED4302     ;   SO GO CHECK OTHER ARRAY
        RELS         X4  ECGRDY     ;   TURN OFF RDY FLAG IN DATA WORD
        MOV          X4         R6  ;   GET THE DATA WORD
        XTR          R6  7          ;   UNPACK LCN
        INC   ECGECX.X5             ;   INCREMENT ARRAY INDEX
        AND          X5  ECGECX.X5  ;   THIS IS AN "AND" WITH ECGACW
                                    ;   WHICH RESETS THE INDEX TO THE
                                    ;   BEGINNING OF THE ACK/L ARRAY BLK
        JMPI         S4  EI1200     ;   GET ECR CORRESPONDING TO LCN
        JMPI         S4  EI1980     ;UE NO ECR - REPORT ERROR
        MOD   ECFPTR                ;
        IEQ          R5  ECGAKA     ;   IF WORKING ON PENDING ACK
        MODC  ED4200-ED4100         ;   SEND THE ACK
                                    ;         ELSE
        JMP          S4  ED4100     ;   SEND AN ACKL
ED4306:                             ;
        JMP              ED4304     ;
ED4308:                             ;
        JMPI             RL4300     ;   RETURN
;----------------------------------------------------------------------
;FF\f


;----------------------------------------------------------------------
;
; ERROR REPORT ROUTINE
;
; CALLS: ED1800
;
; CALLED BY ED4200, ED4100, ED4510
;
; RETURNS: NONE
;
; REGISTERS:         ENTRY          EXIT
;       R0             -            DEST
;       R4           LINK           UNCH
;----------------------------------------------------------------------
ED4400:                             ;   SPARE
                                    ;
ED4402:                             ;   UNEXPECTED ACK
        MODC  EEC019-EEC020         ;
ED4404:                             ;   UNEXPECTED ACKL
        MODC  EEC020-EEC030         ;
ED4406:                             ;   EB_PARITY ERROR
        MODC  EEC030-EEC001         ;
ED4408:                             ;   EB FRAMMING_ERROR
        MODC  EEC001-EEC021         ;
ED4410:                             ;   BID_SPAN_ERROR
        MODC  EEC021                ;
        MOVC  0                 R0  ;
        MOV          R7  ISVR7      ;
        MOVC  ISVR7             R7  ;
        STC   6                     ;   SAVE REGISTERS
        JMPI         S4  EI1800     ;   CALL REPORT_ERROR(ERROR_CODE)
        JMP              ED4490     ;     RET1: UNRECV.ERROR GOTO CLEAR
        MOVC  ISVR0             R7  ;
        UNS   7                     ;   RESET REGISTERS
        JMP                     X4  ;   RETURN TO LINK
                                    ;
ED4490:                             ; UNRECV_ERROR.
        MOVC  1                 R1  ;
        MOVC  ECISAD            R2  ;
        JMP          S4  ED4550     ;   CALL CLEAR_UP(ALL_ARRAY'S)
        NOP                         ;
        JMPI             RLMAIN     ;   RETURN TO MAIN_LINE
;----------------------------------------------------------------------
;FF\f


;----------------------------------------------------------------------
;
; CREATE EDC BLOCK
;
; THIS ROUTINE IS USED TO BUILD  BLOCKS REQUIRED FOR PROTOCOL.
; IT BUILDS ACKS AND NAKS FOR OUTPUT AND ABNORMAL TERMINATION BLOCKS
; FOR INPUT.
;
; ENTRIES: ED4500 - CREATE OUTBOUND BLOCK
;          ED4502 - CREATE INBOUND BLOCK
;
; RETURNS: LINK+0  NO BINS
;          LINK+1  COMPLETE
;
; CALLED BY: ED4910, ED4920, ED4930, ED4950, ED5300, ED5400
;
; CALLS: MONITOR CALLS ONLY
;
; REGISTERS:         ENTRY          EXIT
;       R0      (E1) TYPE           UNCH
;       R1      (E1) BID1           UNCH
;       R2      (E1) BID2           UNCH
;       R3          QCB-REL         UNCH
;       R4           LINK           UNCH
;       R7             -            DEST
;----------------------------------------------------------------------
ED4500:                             ; ENTRY1: CREATE OUTBOUND EDC BLOCK
        MOVC  ISVR7             R7  ;   SAVE REGISTERS.
        STC   6                     ;
        MOV          R7  ISVR7      ;
        MOVC  1                 R3  ;
        MON   GNOB                  ;   GET AN OUTPUT BIN
        JMP              ED4506     ;   NO BINS
        MOV   ISVR0             R0  ;     R0:=TYPE
        MOV   ISVR1             R1  ;     R1:=BID1
        MOV   ISVR2             R2  ;     R2:=BID2
        XTR          R1  7          ;
        XTR          R2  7          ;
        SLL          R1  8          ;
        IOR          R0         R1  ;   R1 = BID1 IN UPPER, TYPE IN LWR
        SUB   XBASE             R5  ;
        MOD   CSTPTR                ;     READ OUTBOUND SECURITY CODE
        MOV   CSTCS2            R7  ;
        SRL          R7  CSTOSC     ;
        XTR          R7  3          ;
        SLL          R7  BINSEC     ;     POS. TO BINSEC FIELD
        SVS                     R4  ;
        LDS                     R3  ;   BEGIN BLOCK MAKEUP
        IEQP         R0  BTNAK2     ;   IF TYPE = NAK2 - 2 BIDS NEEDED
        MOV   R2       BINWXO+2.X5  ;   SET CHAR. COUNT = 5
        MODC  1                     ;     ELSE
        ADDC  4                 R7  ;   SET CHAR. COUNT = 4
        IOR          R7  BINSTA.X5  ;
        IEQ          R0  BTNAK2     ;   IF TYPE = NAK2 THEN
        MODC  1                     ;        C1:=5
        MOVC  4                 R2  ;     ELSE
        MOV          R2  BINWXO.X5  ;        C1:=4
        MOV   R1       BINWXO+1.X5  ;   STORE BID1 AND TYPE
        LDS                     R4  ;
        ADD   XBASE             R5  ;
        JMP              ED4504     ;   GO QUEUE EDC BLOCK
;-----------------------------------------------------------------------
ED4502:                             ; ENTRY2: CREATE INBOUND EDC BLOCK
        MOVC  ISVR7             R7  ;   SAVE REGISTERS.
        STC   6                     ;
        MOV          R7  ISVR7      ;
        MOVC  1                 R3  ;
        MON   GNIB                  ;   GET INBOUND BIN
        JMP              ED4506     ;   NO BINS
        SVS                     R2  ;
        MOD   CSTPTR                ;
        MOV   CSTCS2            R7  ;     READ INBOUND SECURITY CODE
        MODC  CSTISC                ;
        SRL          R7  0          ;
        XTR          R7  3          ;
        SLL          R7  BINSEC     ;     POS. TO BINSEC FIELD
        SUB   XBASE             R5  ;
        LDS                     R3  ;
        ADDC  1<BINEIB+1<BINURE R7  ;   TYPE:=ABNORMAL TERMINATION.
        IOR          R7  BINSTA.X5  ;
        LDS                     R2  ;
        ADD   XBASE             R5  ;
;-----------------------------------------------------------------------
ED4504:                             ; QUEUE INBOUND/OUTBOUND EB
        MOV   ISVR3             R4  ;
        ADD   XBASE             R4  ;   R4:= ABS PTR TO REQ'D QCB
        MOVC  1                 R3  ;
        MON   LNIQ                  ;
        MOV   ISVR7             R7  ;   RESET REGISTERS.
        UNS   6                     ;
        JMP              1.     X4  ;   RETURN TO LINK
;-----------------------------------------------------------------------
ED4506:                             ;   NO BINS FOR THE BLOCK
        MOV   CSTPTR            R4  ;   SET "NO BUFFER" FLAG IN CSTVF1
        MOVC  1<CSTLAC          R5  ;
        IOR          R5  CSTVF1.X4  ;
        MOV   ISVR7             R7  ;   SET UP TO EXIT
        UNS   6                     ;
        JMP                     X4  ;
;----------------------------------------------------------------------
;FF\f


;----------------------------------------------------------------------
;
; VALIDATE BID, CRC OR SPAN
;
; THIS ROUTINE TESTS BID PARITY, CRC VALIDITY OR SPAN, DEPENDING
; ON FLAGS IN R0.
;
;ENTRY: ED4510
;
; RETURNS: LINK   - ERROR RETURN
;          LINK+1 - TESTED ITEM OK
;
; CALLED BY: ED4800, ED5100, ED5200, ED5300, ED5400, ED5500
;
; CALLS: ED4406, ED4408, ED4410
;
; REGISTERS:         ENTRY          EXIT
;       R0       TEST-REQUEST       DEST
;       R4           LINK           DEST
;       R6          ECRPTR          UNCH
;       R7             -            DEST
;----------------------------------------------------------------------
ED4510:                             ;
        MOV          R4         R7  ;
        IBZ          R0  TSTBID     ;   IF BID PARITY NOT REQUESTED
        JMP              ED4512     ;   GO CHECK FOR CRC REQUEST
        MOV   CIBID             R4  ;   GET CURRENT BID FROM BIN
        IBNP         R4  BIDPE      ;   IF BID PARITY ERROR THEN
        JMP          S4  ED4406     ;R  REPORT PARITY ERROR AND
        JMP                     X7  ;   ERROR RETURN
ED4512:                             ;
        IBZ          R0  TSTCRC     ;   IF CRC NOT TO BE TESTED THEN
        JMP              ED4514     ;   GO CHECK FOR SPAN REQUEST
        MOV   CIEST             R4  ;
        IBNP         R4  MQICFE     ;   IF A CRC ERROR EXISTS
        JMP          S4  ED4408     ;R  REPORT THE ERROR
        JMP                     X7  ;   AND ERROR RETURN
ED4514:                             ;
        IBZ          R0  TSTSPAN    ;   IF SPAN NOT TO BE TESTED THEN
        JMP              ED4516     ;   GO TO OK RETURN
        MOV   CIBID             R4  ;   GET CURRENT BID
        MOV   ECIPAI.X6         R0  ;   GET PREVIOUSLY ACK'D BID
        SUB          R0         R4  ;
        ADDC  -1                R4  ;   THIS SUBTRACTION IS USED TO
        XTR          R4  7          ;   HANDLE BID WRAPAROUND
        ADDC  -1                R4  ;
        MODC  ECICSL                ;
        IGEP         R4         X6  ;   IF DIFFERENCE IN BIDS TOO BIG
        JMP          S4  ED4410     ;R  REPORT AN ERROR
        JMP                     X7  ;   ERROR RETURN
ED4516:                             ;
        JMP              1.     X7  ;   TEST SUCCESSFUL
;----------------------------------------------------------------------
;FF\f


;----------------------------------------------------------------------
;
; FIND STATUS ADDRESS
;
; THIS SUBROUTINE FINDS THE RELATIVE ADDRESS, IN THE STATUS ARRAY,
; FOR A GIVEN BID (IN R7).
;
; ENTRIES: ED4520
;
; RETURNS: LINK
;
; CALLED BY: ED5400, ED4910, ED4610, ED4550, ED4540, ED4560
;
; CALLS: NONE
;
; REGISTERS:         ENTRY          EXIT
;       R4           LINK           LINK
;       R7           IDENT.       ISTA(I).PTR.
;----------------------------------------------------------------------
ED4520:                             ;
        XTR          R7  ECIADC     ;   GET BID MODULO 32
        MOD          R7             ;
        MOD   ECRPTR                ;
        MOVC  ECISTA            R7  ;
        JMP                     X4  ;   RETURN TO LINK
;----------------------------------------------------------------------

;----------------------------------------------------------------------
;
; THIS ROUTINE IS GIVEN TWO BIDS. IT DETERMINES IF THE OLDER (R1) IS
; LESS THAN OR EQUAL TO THE NEWER (R2). IN ADDITION THE DIFFERENCE
; MUST BE LESS THAN THE LIMIT IMPOSED BY THE STATUS TABLE SIZE.
; ON EXIT THE DIFFERENCE IS INCREMENTED TO BE USED AS AN INDEX BY
; THE CALLER.
;
; CALLED BY: ED4560, ED4550
;
; CALLS: NONE
;
; ENTRIES: ED4530
;
; RETURNS: LINK      ERROR
;          LINK+1    OK
;
; REGISTERS:         ENTRY          EXIT
;       R1         IDENT1           UNCH
;       R2         IDENT2           COUNT
;       R4           LINK           UNCH
;----------------------------------------------------------------------
ED4530:                             ;
        SUB          R1         R2  ;
        XTR          R2  7          ;
        IGE          R2  ECISAD     ;   IF (R1 NOT PREVIOUS TO R2) THEN
        JMP                     X4  ;   TAKE ERROR RETURN
        ADDC  1                 R2  ;       R2 =IDENT2+1-IDENT1
        JMP              1.     X4  ;       RETURN TO LINK+1
;----------------------------------------------------------------------
;FF\f


;----------------------------------------------------------------------
;
; SET ECIOPN FOR THOSE BIDS WHICH ARE ACCEPTABLE
;
; THIS SUBROUTINE SETS THE STATUS ARRAY ENTRIES FOR ALLOWABLE BIDS
; TO "OPEN". IT ALSO SETS THE "EXPECTED" FLAG IN THE ARRAY ENTRY
; FOR THE NEXT EXPECTED BID. THE NAKF FLAG IS CLEARED FOR THE NEXT
; BLOCK TO BE QUEUED TO IDP.
;
; CALLED BY: ED4930, ED4950, ED4750, ED4700
;
; CALLS: ED4520
;
; ENTRIES: ED4540
;
; RETURNS: LINK
;
; REGISTERS:         ENTRY           EXIT
;       R0             -             DEST
;       R1             -             DES
;       R2             -             DES
;       R4           LINK            DES
;       R6         PTR TO ECR        UNCH
;       R7             -             DEST
;----------------------------------------------------------------------
ED4540:                             ;
        MOV          R4  RL4540     ;
        MOD   ECFPTR                ;
        MOV   ECGARMB           R0  ;   GET ALLOWED RANGE OF MISSNG BIDS
        MOV   ECINXI.X6         R1  ;   GET NEXT EXPECTED BID
        ADDC  -1                R1  ;
        ADDC  1                 R0  ;   ARMB+1
        MOVC  1<ECIOPN          R2  ;
ED4542:                             ;
        MOV          R1         R7  ;
        ADD          R0         R7  ;
        JMP          S4  ED4520     ;   GET STATUS ARRAY ENTRY LOC.
        IOR          R2  0.     X7  ;   SET ARRAY ENTRY "OPEN"
        SOB          R0  ED4542     ;
        SETS         X7  ECIEXP     ;   SET NEXT EXPECTED BID "EXPECTED"
        MOV   ECINQI.X6         R7  ;   GET NEXT BID FOR IDP
        JMP          S4  ED4520     ;   GET ITS STATUS ARRAY LOC.
        RELS         X7  ECINAKF    ;   RELEASE ITS NAKF FLAG
        JMPI             RL4540     ;
;----------------------------------------------------------------------
;FF\f


;----------------------------------------------------------------------
;
; CLEAR UP
;
; CLEARS OUT THE STATUS ARRAY FOR ALL BIDS BETWEEN AND INCLUDING THE
; TWO GIVEN IN R1 AND R2.
;
; CALLED BY: ED4750, ED4800
;
; CALLS: ED4520, ED4530
;
;
; ENTRIES: ED4550
;
; RETURNS:    LINK   NOT_DONE.
;             LINK+1 DONE.
;
; REGISTERS:         ENTRY           EXIT
;       R0             -            DEST
;       R1          IDENT1           DEST
;       R2          IDENT2           DEST
;       R4           LINK            DEST
;       R6          ECRPTR           UNCH
;       R7             -             DEST
;----------------------------------------------------------------------
ED4550:                             ;
        MOV          R4  RL4550     ;
        JMP          S4  ED4530     ;   IF BID1 NOT PREVIOUS TO BID2
        JMPI             RL4550     ;   THEN LOOP BELOW WON'T WORK
ED4552:                             ;
        MOV          R1         R7  ;
        JMP          S4  ED4520     ;   GET STATUS ARRAY LOC. FOR BID
        IBZ          X7  ECIEND     ;
        IBZ          X7  ECIOK      ;
        JMP              ED4554     ;   JUMP IF BLOCK IN ARRAY
        SVP              ED4554     ;   DEVICE TO SAVE REGISTERS ONLY
        MOV   ECIEFA-ECISTA.X7  R5  ;   RELEASE BLOCK STORED IN ARRAY
        MOVC  100               R3  ;
        MON   RNBN                  ;   RELEASE ALL BINS IN THE BLOCK
        MOV   XBASE             R0  ;
        LDN          R0             ;   RESTORE REGISTERS
ED4554:                             ;
        CLR   ECISTA-ECISTA.    X7  ;   CLEAR ALL ELEMENTS IN THE
        CLR   ECIEFA-ECISTA.    X7  ;   STATUS ARRAY
        CLR   ECIELA-ECISTA.    X7  ;
        ADDC  1                 R1  ;   SET UP FOR NEXT BID
        SOB          R2  ED4552     ;   FALL THRU AND EXIT IF DONE
        MOV   RL4550            R4  ;
;----------------------------------------------------------------------
;FF\f


;----------------------------------------------------------------------
;
; CLEAR STATUS
;
; THIS SUBROUTINE CLEARS AN AREA OF THE STATUS, IN THE STATUS ARRAY,
; DETERMINED BY A BIT MASK. IT DOES THIS FOR EACH BID BETWEEN AND
; INCLUDING THE LAST ACK'D SEGMENT AND THE NEXT TO BE ACK'D.
;
; CALLED BY: ED4700
;
; CALLS: ED4520, ED4520
;
; ENTRIES: ED4560
;
; RETURNS: LINK
;
; REGISTERS:         ENTRY           EXIT
;       R0          BITMASK          UNCH
;       R1          IDENT1           DEST
;       R2          IDENTZ           DEST
;       R4           LINK            DEST
;       R6          ECRPTR           UNCH
;       R7             -             DEST
;----------------------------------------------------------------------
ED4560:                             ;
        MOV          R4  RL4560     ;
        JMP          S4  ED4530     ;   IS LAST ACK'D BID < NEXT ONE
        JMPI         S4  EI1900     ;UE NO - REPORT ERROR
ED4562:                             ;
        MOV          R1         R7  ;
        JMP          S4  ED4520     ;   GET ADDRESS OF STATUS ENTRY
        AND          R0         X7  ;   UPDATE STATUS
        ADDC  1                 R1  ;
        SOB          R2  ED4562     ;
        JMPI             RL4560     ;
;----------------------------------------------------------------------
;FF\f


;----------------------------------------------------------------------
;
; SET EDC BLOCK STATUS
;
; UPDATES STATUS WORD IN A BIN BY OR'ING THE CONTENTS OF R0 INTO
; THE STATUS WORD.
;
; CALLED BY: ED4600, ED5500, ED5700
;
; CALLS:      NONE
;
; ENTRIES:    ED4570
;
; RETURNS:    LINK
;
; REGISTERS:         ENTRY          EXIT
;       R0           MASK           UNCH
;       R3             -            DEST
;       R4           LINK           DEST
;       R5           BUFF           UNCH
;       R7             -            DEST
;----------------------------------------------------------------------
ED4570:                             ;
        MOV          R4  RL4570     ;
        MON   GBSM                  ;   GET BIN PAGE
        SUB   XBASE             R5  ;
        SVS          R4             ;
        LDS          R3             ;
        IOR          R0  BINSTA.X5  ;   UPDATE BINSTA
        LDS          R4             ;
        ADD   XBASE             R5  ;   RESET BUFF_REF
        JMPI             RL4570     ;   RETURN TO LINK
;----------------------------------------------------------------------
;FF\f


;----------------------------------------------------------------------
; ACTIVATE IDP
;
; THIS ROUTINE IS CALLED WHEN A COMPLETE EDC BLOCK IS TO BE SENT TO IDP.
; IT SENDS A LETTER TO IDP TO NOTIFY THAT SUBMODULE THAT THERE IS WORK
; TO DO ON THE CHANNEL.
;
; CALLED BY: ED4610, ED5300, ED5500, ED5700
;
; CALLS: ED1920
;
; ENTRIES:    ED4580
;
; RETURNS:    LINK
;
; REGISTERS:         ENTRY          EXIT
;       R0             -            DEST
;       R4           LINK           DEST
;       R5             -            DEST
;       R6             -          ECRPTR
;       R7             -            DEST
;----------------------------------------------------------------------
ED4580:                             ;
        MOV          R4  RL4580     ;   SAVE LINK
        LDM   2#111                 ;   DISABLE INTERRUPTS
        MOV   CSTPTR            R5  ;
        MOV   GSTPTR            R6  ;
        ION              CSTDEV.X5  ;   IF CHAN. IN SCHED. LIST THEN
        JMP              ED4584     ;   GO NOTIFY IDP - OTHERWISE
        MOV          R5  CSTDEV.X5  ;       INDICATE CHAN. INCLUDED
        MOVC  ECISLX            R4  ;       GET REL SCHED_LIST_INDEX
                                    ;   **** ECISLX IS LOCAL TO EDI****
        MOD          X4             ;
        MOV   GSTECL.X6         R0  ;
        IEQ          R0  -1         ;       IF LAST ENTRY  THEN
        CLR              0.     X4  ;         RESET ECISLX TO START
        MOV   CSTBAS.X5         R0  ;
        MOD          X4             ;
        MOV          R0  GSTECL.X6  ;   PUT PROCESS BASE OF CST IN
                                    ;   A GSTECL ENTRY. THIS ALLOWS IDP
                                    ;   TO FIND BASES OF CST'S TO
                                    ;   PROCESS.
        INC              0.     X4  ;   INCREMENT GSTECL INDEX
ED4584:                             ;
        ION              GSTIPB.X6  ;   IF IDP NOT IDLE THEN
        JMP              ED4586     ;   SKIP SENDING LETTER
        MOV          R6  GSTIPB.X6  ;   SET IDP BUSY
        MOV   ECIITL            R5  ;   GET EDC-IDP LETTER ADDRESS
                                    ;   ****ECIITL IS LOCAL TO EDC****
        MOV          R5         R7  ;
        SUB   XBASE             R7  ;   GET POINTER TO IDP LETTER
        MOVC  EDCIDP            R0  ;   GET TYPE (DEFINED IN LET)
        MOV          R0  LTTYP. X7  ;
        MOVC  IDPLPN            R0  ;
        MOV          R0  LTRCV. X7  ;   SET RECEIVER
        MOVC  EDILPN            R0  ;
        MOV          R0  LTSND. X7  ;   SET SENDER
        MON   SLET                  ;       SEND LETTER TO IDP
        JMPI         S4  EI1920     ;E  LETTER HANDLING ERROR
ED4586:                             ;
        MOV   ECRPTR            R6  ;
        JMPI             RL4580     ;   RETURN TO LINK
;----------------------------------------------------------------------
;FF\f


;----------------------------------------------------------------------
;
; INSERT EDC BLOCK IN CYCLIC ARRAY
;
; THIS SUBROUTINE REMOVES A COMPLETED EDC BLOCK FROM THE INPUT
; COLLECTION QUEUE (ECCIQH). IT THEN MOVES THE BLOCK TO THE CYCLIC
; STATUS ARRAY (ECIEFA, ECIELA, ECISTA). THE INDEX TO EACH OF THE
; THREE TABLES IS THE SAME AND IS THE BID MODULO 32. THE NUMBER
; OF BINS IN THE BLOCK  IS OR'D INTO ECISTA. THE END OF BLOCK FLAG
; IS SET IN THE LAST BIN VIA ED4570.
;
; CALLED BY: ED5100, ED5200
;
; CALLS: ED4570
;
; ENTRIES: ED4600
;
; RETURNS: LINK
;
; REGISTERS:         ENTRY          EXIT
;       R0             -            DEST
;       R1             -            DEST
;       R2             -            DEST
;       R3             -            DEST
;       R4           LINK           DEST
;       R5             -            DEST
;       R6           ECRPTR         UNCHA
;       R7             -            DEST
;----------------------------------------------------------------------
ED4600:                             ;
        MOV          R4  RL4600     ;
        MOD   ECRPTA                ;
        MOVC  ECCIQH            R4  ;   GET BLOCK FROM INPUT QUEUE
        MOVC  100               R3  ;
        MON   LNOQ                  ;   R3 = NUMBER OF ELEMENTS
        NOP                         ;   R5 = 1ST QUEUE ENTRY ADDRESS
        MOV          R6         R4  ;   R6 = LST QUEUE ENTRY ADDRESS
        MOV   ECRPTR            R6  ;
        MOV   CIBID             R7  ;   CALCULATE STATUS ARRAY INDEX
        XTR          R7  ECIADC     ;
        ADD          R6         R7  ;   SAVE ELEMENTS IN PROPER TABLES
        MOV          R5  ECIEFA.X7  ;      ECIEFA = 1ST QUEUE ENTRY ADDR
        MOV          R4  ECIELA.X7  ;      ECIELA = LST QUEUE ENTRY ADDR
        SLL          R3  ECICQE     ;      ECISTA = NO. OF BINS
        MODC  ECISTA                ;
        IOR          R3         X7  ;
        MOV          R4         R5  ;
        MOVC  1<BINEIB          R0  ;   SET EOB_INDICATOR IN LAST BIN
        JMP          S4  ED4570     ;
        JMPI             RL4600     ;
;----------------------------------------------------------------------
;FF\f


;----------------------------------------------------------------------
;
; DISPATCH DATA TO IDP
;
; THIS ROUTINE REMOVES EDC BLOCKS FROM THE CYCLIC STATUS ARRAY
; (ECISTA ETC.) AND QUEUES THEM FOR PROCESSING BY IDP. IT ALSO
; ACTIVATES IDP VIA ED4580.
;
; CALLED BY: ED5100, ED5200
;
; CALLS: ED4520, ED4580
;
; ENTRIES: ED4610
;
; RETURN: LINK
;
; REGISTERS:         ENTRY          EXIT
;       R0             -            DEST
;       R1             -            DEST
;       R2             -            DEST
;       R3             -            DEST
;       R4           LINK           DEST
;       R5             -            DEST
;       R6         ECRPTR           UNCH
;       R7             -            DEST
;----------------------------------------------------------------------
ED4610:                             ;
        MOV          R4  RL4610     ;
ED4612:                             ;
        MOV   ECINQI.X6         R7  ;   GET NEXT BID TO QUEUE
        JMP          S4  ED4520     ;   GET ITS STATUS ARRAY ADDRESS
        MOD          R6             ;
        MOVC  ECIFLG            R5  ;
        IBN          X7  ECIOK      ;   IF BLOCK IS NOT OK OR
        IBN          X7  ECIEND     ;   IF END PROCESSING IS DONE
        JMP              ED4616     ;   THEN EXIT
                                    ;   AT THIS POINT THE BLOCK IS OK
                                    ;   BUT END PROCESSING IS NOT DONE
        INC              ECINQI.X6  ;   UPDATE NEXT BID TO QUEUE
        IBN          X5  ECIAR2     ;   IF WE HAVE 2 SEGMENTS AT THE MP
        JMPI         S4  EI1900     ;UE THIS WOULD BE 3 - ERROR
        RELS         X5  ECISBI     ;   CLEAR EOS/EOM LST QUEUED FLAG
        IBZ          X7  ECIEOS     ;   IF NOT AN EOS
        JMP              ED4614     ;   THEN SKIP EOS PROCESSING
        SETS         X5  ECISBI     ;   SET EOS/EOM LAST QUEUED
        IBN          X5  ECIAR1     ;   SET PROPER MP ACK REQ'D FLAG
        SETS         X5  ECIAR2     ;
        SETS         X5  ECIAR1     ;
ED4614:                             ;
        RELS         X5  ECIQTB     ;   CLEAR "TERM. BLOCK QUEUED" FLAG
        SETS         X5  ECIITR     ;   SET "SCHEDUL IDP" FLAG
        SETS         X7  ECIEND     ;   SET "END PROCESSING DONE" FLAG
        ADDC  -ECISTA           R7  ;   FETCH THE BLOCK FROM THE
        MOV   ECISTA.X7         R3  ;   CYCLIC ARRAYS
        SRL          R3  ECICQE     ;   GET BIN COUNT
        MOV   ECIEFA.X7         R5  ;   GET ADDR. OF 1ST BIN
        MOV   ECIELA.X7         R6  ;   GET ADDR. OF LST BIN
        MOD   CSTPTA                ;
        MOVC  CSTFIB            R4  ;   PUT THE BLOCK IN INPUT BIN QUEUE
        MON   LNIQ                  ;
        MOV   ECRPTR            R6  ;       RESET R6
        JMP              ED4612     ;
ED4616:                             ;
        IBNP         X5  ECIITR     ;   IF "SCHEDULE IDP" FLAG IS ON
        RELS         X5  ECIITR     ;   THEN CLEAR IT AND
        JMPI         S4  EI4580     ;   SCHEDULE IDP
        MOV   ECRPTR            R6  ;   RESET R6
        JMPI             RL4610     ;
;----------------------------------------------------------------------
;FF\f


;----------------------------------------------------------------------
;
; DISCARD AN EDC BLOCK
;
; THE CURRENT EDC BLOCK IS DISCARDED, I.E. REMOVED FROM THE INPUT
; BIN QUEUE AND RELEASED TO THE FREE BIN POOL.
;
; CALLED BY: ED5100, ED5200, ED5300, ED5400, ED5500, ED4970
;
; CALLS: NONE
;
; ENTRY: ED4620
;
; RETURNS: LINK
;
; REGISTERS:         ENTRY           EXIT
;       R0-R5          -             DEST.
;       R6           ECRPTR         UNCHA.
;       R7             -             DEST
;-----------------------------------------------------------------------
ED4620:                             ;
        MOV          R4  RL4620     ;
        MOVC  1000              R3  ;
        MOD   ECRPTA                ;   LINK ALL BINS OUT
        MOVC  ECCIQH            R4  ;
        MON   LNOQ                  ;   AND  RELEASE BINS.
        NOP                         ;
        MON   RNBN                  ;
        MOV   ECRPTR            R6  ;   REESTABLISH R6
        JMPI             RL4620     ;
;----------------------------------------------------------------------
;FF\f


;----------------------------------------------------------------------
;
; SET SPAN OF ACCEPTABLE BIDS
;
; THIS SUBROUTINE COMPUTES THE EXPECTED RANGE OF BIDS WHICH ARE
; ACCEPTABLE SINCE THE LAST SEGMENT WAS ACK'D. THE PARAMETER
; CALCULATED (ECICSL) IS USED IN THE SPAN CHECKING SUBROUTINE (ED4510).
; IF THERE ARE NO SEGMENTS CURRENTLY WAITING THEN THE SPAN IS SET FOR
; TWO SEGMENTS OR 2*(MAX SEGMENT LENGTH IN BLOCKS) - 1.
; IF THERE IS 1 EOS WAITING THE SPAN IS SET TO THE NUMBER OF BLOCKS
; IN THE SEGMENT PLUS THE MAXIMUM SEGMENT LENGTH.
; IF THERE ARE 2 SEGMENTS WAITING THE SPAN IS SET TO INCLUDE ONLY
; THE 2 SEGMENTS.
;
; CALLED BY: ED4800, ED4700, ED5300
;
; CALLS: NONE
;
; ENTRIES: ED4630
;
; RETURNS: LINK
;
; REGISTERS:         ENTRY           EXIT
;       R0             -             DEST
;       R1             -             DEST
;       R4           LINK            DEST
;       R6          ECRPTR           UNCH
;----------------------------------------------------------------------
ED4630:                             ;
        MOD          R6             ;
        MOVC  ECIFLG            R5  ;   GET INPUT FLAG WORD ADDRESS
        IBN          X5  ECIEOS1    ;   IF 1 EOS HAS BEEN REC'D THEN
        JMP              ED4632     ;   GO CHECK FOR 2
        MOV   ECISBC.X6         R1  ;   GET MAX # BLOCKS PER SEGMENT
        SLL          R1  1          ;   SETS SPAN TO 2*(MAX BLK CT)-1
        ADDC  -1                R1  ;
        JMP              ED4634     ;
ED4632:                             ;
        IBN          X5  ECIEOS2    ;   IF 2 SEGMENTS ARE IN THEN
        MODC  ECISSI-ECIFSI         ;   GET 2ND BID
        MOV   ECIFSI.X6         R1  ;
        MOV   ECIPAI.X6         R0  ;   GET LAST ACK'D BID
        SUB          R0         R1  ;   COMPUTE (# BLKS IN LST SEG) -1
        ADDC  -1                R1  ;   TAKING INTO ACCOUNT BID
        XTR          R1  ECIADC     ;   WRAPAROUND
        IBN          X5  ECIEOS2    ;   IF WE'RE ON 2 SEGMENTS THEN
        JMP              ED4634     ;   GO SET SPAN
        MOV   ECISBC.X6         R0  ;   GET MAX # BLKS PER SEGMENT
        ILT          R1         R0  ;   IF LAST SEGMENT HAD FEWER
                                    ;   BLOCKS THAN ALLOWED THEN
        ADD          R0         R1  ;   ADD ACTUAL BLK COUNT
ED4634:                             ;
        MOV          R1  ECICSL.X6  ;   SET THE SPAN
        JMP                     X4  ;
;----------------------------------------------------------------------
;FF\f


;----------------------------------------------------------------------
;
; ACK BOOK-KEEPING
;
; THIS SUBROUTINE CLEARS UP STATUS, INTHE STATUS ARRAY, FOR ALL
; BLOCKS THAT HAVE BEEN ACK'D. IT THEN UPDATES FLAGS AND POINTERS
; FOR BLOCKS STILL WAITING TO BE ACK'D.
;
; CALLED BY: ED5100, ED5200, ED5400
;
; CALLS: ED4560, ED4630, ED4540
;
; ENTRIES: ED4700
;
; RETURNS: LINK
;
; REGISTERES:        ENTRY           EXIT
;       R0             -             DEST
;       R1             -             DES
;       R2             -             DES
;       R4           LINK            DEST
;       R5          IFLG-PTR         UNCH
;       R6           ECRPTR          UNCH
;       R7             -             DEST
;----------------------------------------------------------------------
ED4700:                             ;
        MOV          R4  RL4700     ;
ED4702:                             ;
        MOVC  ALLBIT            R0  ;   ALLBIT = 0
        MOV   ECIPAI.X6         R1  ;   GET LAST ACK'D BID
        ADDC  1                 R1  ;
        MOV   ECIFSI.X6         R2  ;   GET BID OF 1ST SEG WAITING ACK
        IBZ          X5  ECISETB    ;   IF LAST BLOCK WAS A SETBD
        JMP          S4  ED4560     ;   THEN CLEAR STATUS ARRAY
        MOV          X5         R0  ;   GET INPUT FLAG WORD
        MOVC  1<(ECIAP2+1)-1    R1  ;         CHANGE 2ND SEGMENT
        AND          R1         R0  ;         FLAGS TO 1'ST SEGMENT
        SRL          R0 (ECIAP2+1)/2;         FLAGS IN ECIFLG,AND
        MOD          R1             ;         CLEAR 2ND SEGMENT
        PUT          R0         X5  ;         FLAGS.
        MOV   ECIFSI.X6         R0  ;   MAKE NEXT SEG TO BE ACK'D
                                    ;   LAST SEGMENT ACK'D
        MOV   ECISSI.X6         R1  ;   MAKE 2ND SEG TO BE ACK'D
                                    ;   NEXT TO BE ACK'D
        MOV          R0  ECIPAI.X6  ;
        MOV          R1  ECIFSI.X6  ;
                                    ;   ECISSI IS NOT CLEARED BECAUSE
                                    ;   IT IS NOT NECESSARY DUE TO
                                    ;   FLAG SETTINGS ABOVE
        JMP          S4  ED4630     ;   SET SPAN OF ACCEPTABLE BIDS
        JMP          S4  ED4540     ;   SET STATUS ARRAY ELEMENTS
                                    ;   OPEN FOR EXPECTED BIDS
        IBN          X5  ECIAP1     ;   IF THERE IS STILL AN ACK PENDING
        JMP              ED4702     ;   REPEAT THE PROCESS
        JMPI             RL4700     ;
;----------------------------------------------------------------------
;FF\f


;----------------------------------------------------------------------
;
; RE-SYNCHRONIZE AFTER SETBD
;
; THIS SUBROUTINE INITIALIZES BID POINTERS AS A RESULT OF A SETBD
; BLOCK RECEPTION. IT ALSO CLEARS OUT THE STATUS ARRAY AS REQUIRED.
;
; CALLED BY: ED5300
;
; CALLS: ED4540, ED4550
;
; ENTRIES: ED4750
;
; RETURNS:  LINK
;
; REGISTERS:         ENTRY          EXIT
;       R0           BID            DEST
;       R1             -            DEST
;       R2             -            DEST
;       R4           LINK           DEST
;       R6          ECRPTR         ECRPTR
;       R7             -            DEST
;----------------------------------------------------------------------
ED4750:                             ;
        MOV          R4  RL4750     ;
        MOV          R0  ECIPAI.X6  ;   PREVIOUSLY ACK'D BID
        MOV          R0  ECIFSI.X6  ;   1ST BID WAITING MP ACK
        MOV          R0  ECISSI.X6  ;   2ND BID WAITING MP ACK
        ADDC  1                 R0  ;
        MOV          R0  ECINXI.X6  ;   NEXT BID EXPECTED
        MOV          R0  ECINQI.X6  ;   NEXT BID TO QUEUE TO IDP
        MOV   ECINXI.X6         R1  ;
        MOV   ECIPAI.X6         R2  ;
        ADDC  ECISAD            R2  ;
        JMP          S4  ED4550     ;   CLEAR OUT THE STATUS ARRAY
        JMPI         S4  EI1900     ;UE REPORT STATUS  ARRAY CLEAR ERROR
        JMP          S4  ED4540     ;   SET STATUS ARRAY ELEMENTS OPEN
                                    ;   FOR EXPECTED BIDS
        JMPI             RL4750     ;
;----------------------------------------------------------------------
;FF\f


;----------------------------------------------------------------------
;
; PROCESS RECEIPT OF A NEW END OF SEGMENT
;
; THE ROUTINE DOES THE FOLLOWING:
;
;       SETS THE EOS BIT (ECIEOS) IN THE STATYS ARRAY FOR THE BLOCK.
;       SETS ECIEOS1 OR ECIEOS2 TO INDICATE 1 OR 2 EOS'S RECEIVED.
;       IF 2 EOS'S, THEY ARE SET IN PROPER ORDER, I.E. LOWER BID
;       IN EOSFSI AND HIGHER BID IN EOSSSI.
;       RESETS THE SPAN OF ACCEPTABLE BIDS DUE TO RECEIPT OF AN EOS.
;       TESTS TO SEE IF THE 2ND SEGMENT LIMIT HAS BEEN VIOLATED AS A
;       RESULT OF THE NEWLY CALCULATED SPAN.
;
; CALLED BY: ED5200
;
; CALLS: ED4630, ED4550, ED4510, ED4520
;
; ENTRIES: ED4800
;
; RETURNS: LINK
;
; REGISTERS:         ENTRY          EXIT
;       R0             -            DEST
;       R1             -            DEST
;       R2             -            DEST
;       R4           LINK           DEST
;       R5             -            DEST
;       R6         ECRPTR           UNCH
;       R7             -            DEST
;----------------------------------------------------------------------
ED4800:                             ;
        MOV          R4  RL4800     ;
        MOD          R6             ;
        MOVC  ECIFLG            R5  ;
        MOV   CIBID             R0  ;
        MOV          R0         R7  ;
        JMP          S4  ED4520     ;   GET STATUS ARRAY LOC FOR THS BID
        SETS         X7  ECIEOS     ;   SET EOS BIT IN STATUS ARRAY
        IBZ          X5  ECIEOS1    ;   IF NO EOS'S THEN
        JMP              ED4802     ;   MAKE ENTRIES FOR ONE
        SETS         X5  ECIEOS2    ;   SET 2 EOS'S PRESENT
        MOV          R0         R1  ;       IF SEGMENTS RECEIVED
        MOV   ECIFSI.X6         R2  ;          IN CORRECT ORDER
        SUB          R2         R1  ;          I.E.
        XTR          R1  EOCBDX     ;          FIRST SEGMENT
        SHS          R1  ECISAD+1   ;          PREVIOUS TO 2ND, THEN
        MOV          R0  ECISSI.X6  ;          PUT BID IN 2ND POSITION
        SHS          R1  ECISAD+1   ;
        JMP              ED4804     ;       ELSE
        MOV   ECIFSI.X6         R1  ;          SWITCH THE TWO BIDS
        MOV          R1  ECISSI.X6  ;
        MOV          R0  ECIFSI.X6  ;
        JMP              ED4804     ;
ED4802:                             ;
        MOV          R0  ECIFSI.X6  ;   SET BID AS 1ST ONE
        SETS         X5  ECIEOS1    ;   SET ONE EOS PRESENT
ED4804:                             ;
        JMP          S4  ED4630     ;   RESET SPAN OF ACCEPTABLE BIDS
        MOV   ECINXI.X6         R0  ;   TEST THAT 2ND SEGMENT LIMIT
        ADDC  -1                R0  ;   HAS NOT BEEN VIOLATED. I.E.
                                    ;   MAKE SURE THAT THE LAST BLOCK
                                    ;   RECEIVED IS WITHIN THE NEW SPAN.
                                    ;   THE CHECK FAILS IF WE GOT A 2ND
                                    ;   SEGMENT SMALLER THAN MAX SIZE
                                    ;   AND A PREVIOUS BID WAS OK TILL
                                    ;   THE NEW LIMIT WAS CALCULATED.
        MOV   CIBID             R1  ;
        MOV          R0  CIBID      ;
        MOVC  1<TSTSPAN         R0  ;   SET UP TO TEST SPAN
        JMP          S4  ED4510     ;   TEST SPAN ON LAST BID
        JMP              ED4805     ;   SPAN ERROR DETECTED
        MOV          R1  CIBID      ;
        JMP              ED4806     ;     GOTO RETURN
ED4805:                             ;
        MOV          R1  CIBID      ;
        MOV   ECIPAI.X6         R1  ;   CLEAR OUT ALL STATUS ARRAY
        ADD   ECICSL.X6         R1  ;   SLOTS WHICH ARE NOT WITHIN THE
        ADDC  2                 R1  ;   CURRENT TWO SEGMENT LIMIT
        MOV          R1  ECINXI.X6  ;
        MOV   ECIPAI.X6         R2  ;
        ADDC  ECISAD            R2  ;
        JMP          S4  ED4550     ;   DO THE CLEARING
        JMPI         S4  EI4410     ;R  REPORT 2ND SEG VIOLATION ERROR
ED4806:                             ;
        JMPI             RL4800     ;
;----------------------------------------------------------------------
;FF\f


;----------------------------------------------------------------------
;
; GOT AN INVALID BLOCK
;
; THE PROCEDURE IS ENTERRED ON RECEIPT OF AN
; ABNORMAL EDC BLOCK AND RESULTS IN TRANSMISSION OF A
; NAKF(I) IF REQUIRED.
; ABNORMAL BLOCKS INCLUDE THE FOLLOWING:
;   1. NOT WITHIN RANGE OF 2 SEGMENT BOUNDARY.
;   2. NOT WITHIN ALLOWED RANGE OF MISSING BID'S.
;   3. BID PARITY-ERROR.
;   4. CRC-ERROR IN AN EB OUT OF SEQUENCE,BUT WITHIN
;      THE ALLOWED RANGE OF MISSING BID'S.
;
; CALLED BY: ED5100, ED4990, ED4950
;
; CALLS: ED4500, ED4520, ED1602
;
; ENTRIES: ED4910
;
; RETURNS: LINK
;
; REGISTERS:         ENTRY          EXIT
;       R0             -            DEST
;       R1             -            DEST
;       R3             -            DEST
;       R4             -            DEST
;       R5           LINK           DEST
;       R6          ECRPTR          UNCH
;       R7             -            DEST
;----------------------------------------------------------------------
ED4910:                             ;
        MOV          R5  RL4910     ;
        MOD          R6             ;
        MOVC  ECIFLG            R7  ;   GET ADDRESS OF INPUT FLAGS
        IBN          X7  ECIEOS2    ;   IF ALREADY 2 EOS'S
        JMP              ED4912     ;   EXIT - THE BLOCK IS GARBAGE
        MOV   ECINXI.X6         R7  ;   GET EXPECTED BID
        JMP          S4  ED4520     ;   FIND STATUS ARRAY ENTRY FOR IT
        IBN          X7  ECINAKF    ;   IF A NAKF HAS ALREADY BEEN SENT
        JMP              ED4912     ;   THEN EXIT
        SETS         X7  ECINAKF    ;   SET THE NAKF FLAG
        MOVC  BTNAKF            R0  ;
        MOV   ECINXI.X6         R1  ;   GET EXPECTED BID AGAIN
        ADDC  -1                R1  ;
        MOD          R6             ;
        MOVC  ECCNQH            R3  ;   GET LOC OF NAK QUEUE HEAD
        JMP          S4  ED4500     ;   CREATE THE NAKF BLOCK
        JMP              ED4912     ;   NO BINS FOR NAK
        JMPI         S4  EI1602     ;       SCHEDULE NAK_QUEUE
ED4912:                             ;
        JMPI             RL4910     ;
;----------------------------------------------------------------------
;FF\f


;----------------------------------------------------------------------
;
; GOT MISSING BLOCK
;
; A PREVIOUSLY NAK'D EDC BLOCK IS RECEIVED.
; IF CRC-ERROR THEN RETRANSMISSION REQUESTED
; ELSE QUEUE FOR PROCESSING.
;
; CALLED BY: ED4990
;
; CALLS: ED4500, ED4510, ED1602
;
; ENTRIES: ED4920
;
; RETURNS: LINK      CRC-ERROR
;          LINK+1    EB OK
;
; REGISTERS:         ENTRY           EXIT
;       R0             -            DEST
;       R1             -            DEST
;       R3         PTR_STATUS       DEST
;       R4             -            DEST
;       R5           LINK           DEST
;       R6          ECRPTR          UNCH
;       R7             -            DEST
;----------------------------------------------------------------------
ED4920:                             ;
        MOV          R5  RL4920     ;
        MOVC  1<TSTCRC          R0  ;
        JMP          S4  ED4510     ;   CHECK FOR CRC ERROR
        JMP              ED4922     ;   JUMP ON CRC ERROR FOUND
        SETS         X3  ECIOK      ;   SET BLOCK RECEIVED OK
        JMP              1.     X5  ;       RETURN TO LINK+1
ED4922:                             ;
        MOV   CIBID             R1  ;   SET UP TO NAK THE NEWLY
        MOVC  BTNAK             R0  ;   RECEIVED BLOCK
        MOD          R6             ;
        MOVC  ECCNQH            R3  ;
        JMP          S4  ED4500     ;   CREATE THE NAK BLOCK
        JMPI             RL4920     ;   NO BINS FOR NAK
        JMPI         S4  EI1602     ;       SCHEDULE_NAK_QUEUE
        JMPI             RL4920     ;       RETURN TO LINK
;----------------------------------------------------------------------
;FF\f


;----------------------------------------------------------------------
;
; GOT EXPECTED EDC BLOCK
;
; THIS PROCEDURE IS ENTERED DURING FAULTLESS
; TRANSMISSION.
;
; CALLED BY: ED4990
;
; CALLS: ED4500, ED4510, ED4540, ED1602
;
; ENTRIES: ED4930
;
; RETURNS: LINK      CRC-ERROR
;          LINK+1    EB OK
;
; REGISTERS:         ENTRY           EXIT
;       R0             -             DEST
;       R1             -             DEST
;       R3         STATUS_PTR        DEST
;       R4             -             DEST
;       R5           LINK            DEST
;       R6         ECRPTR            UNCH
;       R7             -             DEST
;----------------------------------------------------------------------
ED4930:                             ;
        MOV          R5  RL4930     ;
        RELS         X3  ECIEXP     ;   CLEAR "EXPECTED BID" FLAG
        INC   ECINXI.X6             ;   SET UP NEXT EXPECTED BID
        JMP          S4  ED4540     ;   SET STATUS ARRAY ENTRIES OPEN
                                    ;   FOR LEGAL BIDS
        MOVC  1<TSTCRC          R0  ;
        JMP          S4  ED4510     ;   CHECK FOR CRC ERROR
        JMP              LOC+2      ;   CRC ERROR FOUND
        JMP              ED4932     ;   BLOCK OK - NO CRC ERROR
        SETS         X3  ECINAK     ;   SET "NAK'D" FLAG
        MOVC  BTNAK             R0  ;   SET UP TO CREATE A NAK FOR
        MOV   CIBID             R1  ;   THE BLOCK
        MOD          R6             ;
        MOVC  ECCNQH            R3  ;
        JMP          S4  ED4500     ;   CREATE THE NAK BLOCK
        JMPI             RL4930     ;   NO BINS FOR NAK
        JMPI         S4  EI1602     ;       SCHEDULE NAK_QUEUE
        JMPI             RL4930     ;       RETURN TO LINK
ED4932:                             ;
        SETS         X3  ECIOK      ;   SET "BLOCK OK" FLAG
        JMP              1.     X5  ;       RETURN TO LINK+1
;----------------------------------------------------------------------

;----------------------------------------------------------------------
;
; GOT AN EXISTING BLOCK
;
; CALLED BY: ED4990
;
;----------------------------------------------------------------------
ED4940:                             ;
        JMP                     X5  ;   RETURN TO LINK
;----------------------------------------------------------------------
;FF\f


;----------------------------------------------------------------------
;
; GOT A BLOCK WHOSE BID IS SUBSEQUENT TO THE EXPECTED ONE.
;
; THIS PROCEDURE IS ENTERED ON RECEIPT OF
; AN EB OUT OF SEQUENCE, BUT WITHIN THE ALLO-
; WED RANGE OF MISSING EB'S
;
; CALLED BY: ED4990
;
; CALLS: ED4500, ED4910, ED4540, ED4510, ED1602, ED4520
;
; ENTRIES: ED4950
;
; RETURNS: LINK      (VIA GOT_INVALID)
;          LINK+1    EB OK
;
; REGISTERS:         ENTRY           EXIT
;       R0             -            DEST
;       R1             -            DEST
;       R2             -            DEST
;       R3         STATUS-PTR.      DEST
;       R4             -            DEST
;       R5           LINK           DEST
;       R6          ECRPTR          UNCH
;       R7             -            DEST
;----------------------------------------------------------------------
ED4950:                             ;
        MOV          R5  RL4950     ;
        MOVC  1<TSTCRC          R0  ;
        JMP          S4  ED4510     ;   CHECK FOR CRC ERROR
        JMP              ED4910     ;   CRC ERROR FOUND
        MOV   ECINXI.X6         R1  ;   GET BID OF EXPECTED BLOCK
ED4952:                             ;
        MOV          R1         R7  ;
        JMP          S4  ED4520     ;   GET STATUS ARRAY LOC FOR THE BID
        IEQ          R3         R7  ;   IS THIS THE CURRENT BID
        JMP              ED4954     ;   YES - DONE WITH LOOP
        RELS         X7  ECIEXP     ;   CLEAR "EXPECTED BID" FLAG
        SETS         X7  ECINAK     ;   SET THE "NAK'D" FLAG
        ADDC  1                 R1  ;   SET TO GET NEXT BID
        JMP              ED4952     ;   CONTINUE LOOP
ED4954:                             ;
        SETS         X3  ECIOK      ;   SET "BLOCK OK" FLAG FOR LATST ID
        MOV   ECINXI.X6         R1  ;   GET EXPECTED BID
        XTR          R1  EOCBDX     ;
        MOV   CIBID             R2  ;   SET UP FOR NAK OR NAK2
        ADDC  -1                R2  ;   DEPENDING ON # OF BIDS SKIPPED
        INE          R1         R2  ;
        MODC  BTNAK2-BTNAK          ;
        MOVC  BTNAK             R0  ;
        MOD          R6             ;
        MOVC  ECCNQH            R3  ;
        ADDC  2                 R2  ;
        MOV          R2  ECINXI.X6  ;   SET NEXT EXPECTED BID TO
                                    ;   ONE MORE THAN THE CURRENT ONE
        JMP          S4  ED4540     ;   SET ALLOWABLE BIDS IN STATUS ARY
        MOV   RL4950            R5  ;
        JMP          S4  ED4500     ;   CREATE NAK OR NAK2 BLOCK
        JMP              1.     X5  ;   NO BINS FOR NAK
        JMPI         S4  EI1602     ;       SCHEDULE NAK_QUEUE
        JMP              1.     X5  ;       RETURN TO LINK+1
;----------------------------------------------------------------------

;----------------------------------------------------------------------
;
; INVALID STATE IN STATUS ARRAY DETECTED
;
; CALLED BY: ED4990
;
; CALLS: ED4620
;
; ENTRIES: ED4970
;
; RETURNS: LINK
;
;----------------------------------------------------------------------
ED4970:                             ;
        MOV          R5  RL4970     ;
        JMPI         S4  EI1900     ;UE REPORT IN VALID STATE IN
                                    ;UE STATUS ARRAY
        JMP          S4  ED4620     ;   DISCARD THE BLOCK
        JMPI             RL4970     ;   RETURN TO LINK
;----------------------------------------------------------------------
;FF\f


;----------------------------------------------------------------------
;
; PROCESS BLOCKS BASED ON STATUS ARRAY FLAGS
;
; BLOCKS CONTAINING DATA ARE PROCESSED BASED ON THE CONTENTS OF THE
; FOUR FLAGS DESCRIBED BELOW. \HE RELATIONSHIP BETWEEN THESE FLAGS
; AS WELL AS THEIR POSITION IN THE STATUS WORD IS CRITICAL. ANY
; CHANGES IN THIS AREA WILL NECESSITATE CHANGES IN THE FOLLOWING CODE.
; THE FOUR FLAGS ARE:
;        ECIOK  = 1  BLOCK RECEIVED OK
;        ECINAK = 1  BLOCK PREVIOUSLY NAK'D
;        ECIOPN = 1  THIS BID IS PERMITTED
;        ECIEXP = 1  BID IS THE NEXT ONE EXPECTED
;
; CALLED BY: ED5100, ED5200
;
; CALLS: ED4520, ED4910, ED4920, ED4930, ED4940, ED4950, ED4970
;
; ENTRIES: ED4990
;
; RETURNS: RETURNS INDIRECTLY VIA CALLED ROUTINES
;
; REGISTERS          ENTRY          EXIT
;       R0             -              -
;       R1             -              -
;       R2             -              -
;       R3             -        STATUS_PTR
;       R4             -            DEST
;       R5           LINK           UNCH
;       R6          ECRPTR          UNCH
;       R7             -            DEST
;----------------------------------------------------------------------
ED4990:                             ;
        MOV   CIBID             R7  ;
        JMP          S4  ED4520     ;   GET LATST BID STATUS ARRAY LOC
        MOV          R7         R3  ;
        MOV          X7         R7  ;   GET STATUS WORD FROM ARRAY
        XTR          R7  ECIOK+1    ;   GET 4 FLAGS DEALT WITH BELOW
        MOD          R7             ;
        JMP          S4  ED4992     ;
ED4992:                             ; ECIOK  ECINAK ECIOPN ECIEXP
        JMP              ED4910     ;   0       0      0      0
                                    ;   BLOCK UNEXPECTED
        JMP              ED4970     ;   0       0      0      1
                                    ;   ILLEGAL
        JMP              ED4950     ;   0       0      1      0
                                    ;   BLOCK UNEXPECTED BUT LEGAL
        JMP              ED4930     ;   0       0      1      1
                                    ;   EXPECTED BLOCK
        JMP              ED4970     ;   0       1      0      0
                                    ;   ILLEGAL
        JMP              ED4970     ;   0       1      0      1
                                    ;   ILLEGAL
        JMP              ED4920     ;   0       1      1      0
                                    ;   PREVIOUSLY NAK'D BLOCK
        JMP              ED4970     ;   0       1      1      1
                                    ;   ILLEGAL
        JMP              ED4970     ;   1       0      0      0
                                    ;   ILLEGAL
        JMP              ED4970     ;   1       0      0      1
                                    ;   ILLEGAL
        JMP              ED4940     ;   1       0      1      0
                                    ;   PREVIOUSLY RECEIVED BLOCK
        JMP              ED4970     ;   1       0      1      1
                                    ;   ILLEGAL
        JMP              ED4970     ;   1       1      0      0
                                    ;   ILLEGAL
        JMP              ED4970     ;   1       1      0      1
                                    ;   ILLEGAL
        JMP              ED4940     ;   1       1      1      0
                                    ;   PREVIOUSLY REC'D NAK'D BLOCK
        JMP              ED4970     ;   1       1      1      1
                                    ;   ILLEGAL
;----------------------------------------------------------------------
;FF\f


;----------------------------------------------------------------------
; DATA BLOCK PROCESSING
;
; IF A SETBD HAS NOT YET BEEN RECEIVED THE BLOCK IS DISCARDED AND
; THE ROUTINE EXITS. THE HALTED MESSAGE SECTOR TIMER IS RESET VIA
; ED1475. ECISETB, WHICH INDICATES THE LAST BLOCK WAS A SETBD, IS
; CLEARED. IF AN ACK HAS BEEN SENT, ACK BOOKKEEPING IS PERFORMED
; (ED4700) TO REMOVE IT FROM THE RECORDS. THE BID IS CHECKED FOR
; PARITY ERROR AND TO SEE IF IT IS IN LEGAL RANGE. IF EITHER CHECK
; FAILS ED4910 IS CALLED TO GENERATE A NAK. THE BLOCK IS THEN DISCARDED
; AND THE ROUTINE EXITS. FURTHER VALIDITY CHECKS ARE MADE VIA ED4990.
; IF ANY OF THOSE CHECKS FAIL THE BLOCK IS DISCARDED AND THE ROUTINE
; EXITS.
; IF THE BLOCK PASSES ALL CHECKS IT IS INSERTED IN THE CYCLIC QUEUE
; (ED4600) AND CALLED TO THE ATTENTION OF IDP (ED4610).
;
; CALLED BY: ED2100
;
; CALLS: ED4510, ED4990, ED4600, ED4800, ED4610, ED4620, ED4910
;        ED4700, ED1475
;
; ENDTRIES: ED5100
;
; RETURNS: LINK
;
; REGISTERS:         ENTRY          EXIT
;       R0             -            DEST
;       R1             -            DEST
;       R2             -            DEST
;       R3             -            DEST
;       R4           LINK           DEST
;       R5             -            DEST
;       R6             -            DEST
;       R7             -            DEST
;----------------------------------------------------------------------
ED5100:                             ;
        MOV          R4  RL5100     ;
        MOV   ECRPTR            R6  ;   GET POINTER TO CURRENT ECR
        MOD          R6             ;
        MOVC  ECIFLG            R5  ;   GET CURRENT ECR FLAG WORD LOC.
        IBN          X5  ECISCQ     ;   IF SETBD REQUIRED, THEN
        JMP              ED5102     ;   DISCARD THE EDC BLOCK
        JMPI         S4  EI1475     ;   RESET HALTED MS TIMER
        RELS         X5  ECISETB    ;   CLR "LST BLK SETBD" FLAG
        IBN          X5  ECIAP1     ;   IF AN ACK WAS SENT, THEN
        JMP          S4  ED4700     ;   DO ACK BOOKKEEPING
        MOVC  1<TSTBID+1<TSTSPAN R0 ;
        JMP          S4  ED4510     ;   TEST BID PARITY AND SPAN
        JMP              ED5104     ;   BID PARITY OR SPAN ERROR
        JMP          S5  ED4990     ;   MAKE FURTHER CHECKS
        JMP              ED5102     ;   FAILED FURTHER CHECKS
        JMP          S4  ED4600     ;   INSERT BLOCK IN CYCLIC QUEUE
        JMP          S4  ED4610     ;   SEND DATA TO IDP
        JMP              ED5106     ;   EXIT
ED5102:                             ;
        JMP          S4  ED4620     ;   DISCARD THE BLOCK
        JMP              ED5106     ;   EXIT
ED5104:                             ;
        JMP          S5  ED4910     ;   PROCESS INVALID BLOCK
        JMP          S4  ED4620     ;   DISCARD THE BLOCK
ED5106:                             ;
        JMPI             RL5100     ;
;----------------------------------------------------------------------
;FF\f


;----------------------------------------------------------------------
;
; EOS/EOM PROCESSING
;
; IF A SETBD HAS NOT YET BEEN RECEIVED THE BLOCK IS DISCARDED AND
; THE ROUTINE EXITS. THE HALTED MESSAGE SECTOR TIMER IS RESET VIA
; ED1475. ECISETB, WHICH INDICATES THE LAST BLOCK WAS A SETBD, IS
; CLEARED. IF AN ACK HAS BEEN SENT, ACK BOOKKEEPING IS PERFORMED
; (ED4700) TO REMOVE IT FROM THE RECORDS. THE BID IS CHECKED FOR
; PARITY ERROR AND TO SEE IF IT IS IN LEGAL RANGE. IF EITHER CHECK
; FAILS ED4910 IS CALLED TO GENERATE A NAK. THE BLOCK IS THEN DISCARDED
; AND THE ROUTINE EXITS. FURTHER VALIDITY CHECKS ARE MADE VIA ED4990.
; IF ANY OF THOSE CHECKS FAIL THE BLOCK IS DISCARDED AND THE ROUTINE
; EXITS.
; IF THE BLOCK PASSES ALL CHECKS IT IS PROCESSED (ED4800), INSERTED
; IN THE CYCLIC QUEUE (ED4600) AND CALLED TO THE ATTENTION OF IDP.
;
; CALLED BY: ED2100
;
; CALLS: ED4510, ED4990, ED4800, ED4600, ED4610, ED4620, ED4910,
;        ED4700, ED1475
;
; ENTRIES: ED5200
;
; RETURNS: LINK
;
; REGISTERS:         ENTRY          EXIT
;       R0             -            DEST
;       R1             -            DEST
;       R2             -            DEST
;       R3             -            DEST
;       R4           LINK           DEST
;       R5             -            DEST
;       R6           -              DEST
;       R7             -            DEST
;----------------------------------------------------------------------
ED5200:                             ;
        MOV          R4  RL5200     ;
        MOV   ECRPTR            R6  ;   GET POINTER TO CURRENT ECR
        MOD          R6             ;
        MOVC  ECIFLG            R5  ;   GET CURRENT ECR FLAG WORD LOC.
        IBN          X5  ECISCQ     ;   IF SETBD REQUIRED, THEN
        JMP              ED5202     ;   DISCARD THE BLOCK
        JMPI         S4  EI1475     ;   RESET HALTED MS TIMER
        RELS         X5  ECISETB    ;   SET LAST BLOCK NOT SETBD
        IBN          X5  ECIAP1     ;   IF AN ACK WAS SENT, THEN
        JMP          S4  ED4700     ;   GO BOOKKEEP ACK'S
        MOVC 1<TSTBID+1<TSTSPAN R0  ;
        JMP          S4  ED4510     ;   TEST BID PARITY AND SPAN
        JMP              ED5204     ;   BID PARITY OR SPAN ERROR
        JMP          S5  ED4990     ;   FURTHER CHECKS
        JMP              ED5202     ;   FAILED FURTHER CHECKS
        JMP          S4  ED4800     ;   EOS PROCESSING
        JMP          S4  ED4600     ;   INSERT BLOCK IN CYCLIC QUEUE
        JMP          S4  ED4610     ;   SEND BLOCK TO IDP
        JMP              ED5206     ;   EXIT
ED5202:                             ;
        JMP          S4  ED4620     ;   DISCARD THE BLOCK
        JMP              ED5206     ;   EXIT
ED5204:                             ;
        JMP          S5  ED4910     ;   PROCESS INVALID BLOCK
        JMP          S4  ED4620     ;   DISCARD THE BLOCK
ED5206:                             ;
        JMPI             RL5200     ;
;----------------------------------------------------------------------
;FF\f


;----------------------------------------------------------------------
;
; PROCESS INCOMMING SETBD'S
;
; WHEN A VALID SETBD BLOCK IS RECEIVED IT IS PROCESSED AS FOLLOWS:
;       RECOVERY MODE, "SEGMENT RECEIVED" FLAGS AND "SETBD REQUIRED"
;       ARE CLEARED.
;       SETBD RECEIVED IS SET IN ECF AND CSTVF4.
;       IF A TERMINATION BLOCK HAS NOT BEEN QUEUED ONE IS CREATED
;       AND QUEUED. IDP IS THEN NOTIFIED.
;       RESYNCHRONIZATION IS DONE VIA ED4750.
;       SPAN OF ACCEPTABLE BIDS IS SET VIA ED4630.
;
; CALLED BY: ED2100
;
; CALLS: ED4510, ED4502, ED4750, ED4620, ED4580, ED1475, ED1251, ED4630
;
; ENTRIES: ED5300
;
; RETURNS: LINK
;
; REGISTERS:         ENTRY          EXIT
;       R0             -            DEST
;       R1             -            DEST
;       R2             -            DEST
;       R3             -            DEST
;       R4           LINK           DEST
;       R5             -            DEST
;       R6             -            DEST
;       R7             -            DEST
;----------------------------------------------------------------------
ED5300:                             ;
        MOV          R4  RL5300     ;
        MOV   ECRPTR            R6  ;
        JMP          S4  ED4620     ;   DISCARD BLOCK - NO LONGER REQ'D
        MOVC  1<TSTCRC+1<TSTBID R0  ;
        JMP          S4  ED4510     ;   TEST BID PARITY AND CRC
        JMP              ED5302     ;   BID PARITY OR CRC ERROR
        MOD          R6             ;
        MOVC  ECIFLG            R5  ;   GET LOC. OF INPUT DATA FLAG
        RELS         X5  ECIRR      ;   CLEAR POSSIBLE RECOVERY MODE
        RELS         X5  ECIEOS1    ;   CLEAR PENDING SEGMENT FLAGS
        RELS         X5  ECIEOS2    ;
        RELS         X5  ECISCQ     ;   CLEAR SETBD REQUIREMENT
        SETS         X5  ECISETB    ;   SET SETBD LAST BLOCK RECEIVED
        MOD   CSTPTR                ;
        MOVC  CSTVF4            R7  ;
        SETS         X7  EECSBR     ;   SET SETBD REC'D IN CSTVF4
        IBN          X5  ECIQTB     ;   IF TERMINATION BLOCK QUEUED
        JMP              ED5301     ;   SKIP BUILDING ONE
        MOD   CSTPTR                ;
        MOVC  CSTFIB            R3  ;
        SETS         X5  ECIITR     ;   SET FLAG TO NOTIFY IDP
        JMP          S4  ED4502     ;   CREATE TERMINATION BLOCK WHICH
                                    ;   INDICATES AN ERROR & QUEUE IT
        NOP                         ;
ED5301:                             ;
        SETS         X5  ECIQTB     ;   FLAG TERMINATION BLOCK QUEUED
        MOV   CIBID             R0  ;
        JMP          S4  ED4750     ;   RESYNCH. AND CLEAR STATUS ARRAY
        JMP          S4  ED4630     ;   SET SPAN OF ACCEPTABLE BIDS
        IBNP         X5  ECIITR     ;   IF IDP IS TO BE NOTIFIED
        RELS         X5  ECIITR     ;   CLEAR NOTIFICATION FLAG AND
        JMPI         S4  EI4580     ;   NOTIFY IDP
        JMPI         S4  EI1475     ;       RESET HALTED MS TIMER.
        JMPI         S4  EI1251     ;   CLEAR ACKS & NAKS WAITING OUTPT
ED5302:                             ;
        JMPI         RL5300         ;
;----------------------------------------------------------------------
;FF\f


;----------------------------------------------------------------------
;
; PROCEDURE RR(EB)       PROCESS INCOMMING RR'S
;
; WHEN A VALID RR BLOCK IS RECEIVED:
;       ACK BOOKKEEPING IS DONE.
;       IF THE LAST BLOCK WAS A SETBD AND DATA IS STILL IN THE SYSTEM
;       RECOVERY MODE IS SET AND THE ROUTINE EXITS. FINAL PROCESSING
;       IS DELAYED TILL THE LAST MP-ACK IS RECEIVED.
;       IF THERE IS NO DATA THEN THE "LAST BLOCK SETBD" FLAG IS CLEARED.
;       ALL OUTSTANDING NAK'S ARE RESENT. IF NO NAK'S EXIST THEN THE
;       LAST ACK IS REPEATED.
;
; CALLED BY: ED2100
;
; CALLS: ED4510, ED4500, ED4620, ED4500, ED4700, ED4530, ED1601/1602
;
; ENTRIES: ED5400
;
; RETURNS:  LINK
;
; REGISTERS:         ENTRY           EXIT
;       R0             -            DEST
;       R1             -            DEST
;       R2             -            DEST
;       R3             -            DEST
;       R4           LINK           DEST
;       R5             -            DEST
;       R6             -            DEST
;       R7             -            DEST
;----------------------------------------------------------------------
ED5400:                             ;
        MOV          R4  RL5400     ;
        MOV   ECRPTR            R6  ;
        MOD          R6             ;
        MOVC  ECIFLG            R5  ;
        IBN          X5  ECISCQ     ;   IF SETBD COMMAND REQUIRED THEN
        JMP              ED5412     ;   DISCARD EDC BLOCK
        MOVC  1<TSTCRC+1<TSTBID R0  ;   TO REQUEST TEST OF CRC & BID
        JMP          S4  ED4510     ;   IF AN ERROR IS FOUND
        JMP              ED5412     ;   THEN GO DISCARD EB
        IBN          X5  ECIAP1     ;   IF AN ACK IS PENDING THEN
        JMP          S4  ED4700     ;   DO ACK BOOKKEEPING
        IBN          X5  ECISETB    ;   IF LAST INPUT BLK WAS SETBD AND
        IBZ          X5  ECIAR1     ;   DATA IS IN THE SYSTEM - SKIP
        JMP              ED5402     ;   OTHERWISE JUMP
                                    ;-----------------------------------
                                    ;   --- RECOVERY SITUATION ---
                                    ;
                                    ;   THE LAST BLOCK WAS A SETBD BUT
                                    ;   DATA IS STILL IN THE SYSTEM.
                                    ;   SET THE RECOVERY FLAG (ECIRR)
                                    ;   AND FINISH PROCESSING WHEN THE
                                    ;   LAST MP-ACK (RELEASE) ARRIVES.
                                    ;-----------------------------------
        SETS         X5  ECIRR      ;   SET RECOVERY FLAG
        RELS         X5  ECISETB    ;   CLEAR "LST EB WAS SETBD" FLAG
        JMP              ED5412     ;   EXIT
;-----------------------------------------------------------------------
                                    ;   --- NO RECOVERY ---
                                    ;
                                    ;   AT THIS POINT WE KNOW THE LAST
                                    ;   BLOCK WAS NOT A SETBD OR THERE
                                    ;   IS NO DATA IN THE SYSTEM. WE NOW
                                    ;   RESEND ALL NAKS OR SEND LAST ACK
ED5402:                             ;-----------------------------------
        RELS         X5  ECISETB    ;   CLEAR LAST EB AS SETBD
        MOVC  FALSE             R5  ;   INITIALIZE QUEUE FLAG TO ACK
        MOV   ECINQI.X6         R2  ;   GET BID OF NXT EB TO GO TO
                                    ;   IDP FOR THIS CHANNEL
ED5403:                             ;
        MOV          R2         R7  ;
        JMP          S4  ED4520     ;   GET ADDR. OF STATUS IN ARRAY
        IBN          X7  ECIEXP     ;   IF BID WAS EXPECTED THEN
        JMP              ED5408     ;   GO CHECK FOR NAKF
        MOV          R2         R1  ;
ED5404:                             ;
        IBN          X7  ECINAK     ;   IF PREVIOUSLY NAK'D THEN SKIP
        IBN          X7  ECIOK      ;   IF BLOCK NOW OK THEN
        JMP              ED5405     ;   GO CHECK FOR A NAK2
                                    ;   THERE IS A NAK ON THIS BLOCK
        MOVC  TRUE              R5  ;   SET FOR NAK QUEUE
        ADDC  1                 R2  ;   SET FOR NEXT STATUS ENTRY
        MOV          R2         R7  ;
        JMP          S4  ED4520     ;   GET NEXT STATUS ENTRY
        JMP              ED5404     ;   LOOK AT NEXT BLOCK FOR NAK2/NAKF
ED5405:                             ;
        IEQ          R1         R2  ;   IF R1 = R2 THEN
        JMP              ED5406     ;   NO NAK NEEDED
        ADDC  -1                R2  ;   SEE IF MORE THAN ONE BLOCK
        INE          R1         R2  ;   MUST BE NAK'D
        MODC  BTNAK2-BTNAK          ;   YES - NAK2
        MOVC  BTNAK             R0  ;   NO - NAK
        MOD          R6             ;
        MOVC  ECCNQH            R3  ;
        JMP          S4  ED4500     ;   CREATE REQ'D NAK BLOCK
        JMPI             RL5400     ;   NO BINS AVAILABLE
ED5406:                             ;
        ADDC  1                 R2  ;   SET FOR NXT STATUS ARRAY ENTRY
        JMP              ED5403     ;   CONTINUE
ED5408:                             ;
        MOV          R2         R1  ;
        MOV   CIBID             R2  ;   GET CURRENT BID
        IBZP         X7  ECINAKF    ;   IF NAKF HAS NOT BEEN SENT AND
        JMPI         S4  EI4530     ;   NXT BID QUED > RR BID
        JMP              ED5410     ;   SEND AN ACK
        MOVC  BTNAKF            R0  ;
        MOD          R6             ;
        MOVC  ECCNQH            R3  ;
        ADDC  -1                R1  ;
        JMP          S4  ED4500     ;   CREATE A NAKF
        JMPI             RL5400     ;   NO BINS AVAILABLE
        MOVC  TRUE              R5  ;   SET FLAG FOR NAK QUEUE
ED5410:                             ;
        INE          R5  FALSE      ;   IF NAK MADE UP THEN
        JMP              ED5411     ;   GO SEND A NAK
        MOVC  BTACK             R0  ;
        MOD          R6             ;
        MOVC  ECCAQH            R3  ;
        MOV   ECIPAI.X6         R1  ;   GET LAST ACK'D BID
        JMP          S4  ED4500     ;   CREATE ACK BLOCK
        JMPI             RL5400     ;   NO BINS AVAILABLE
        MODC  EI1601-EI1602         ;   SCHEDULE ACK QUEUE
ED5411:                             ;
        JMPI         S4  EI1602     ;   SCHEDULE NAK QUEUE
ED5412:                             ;
        JMP          S4  ED4620     ;   DISCARD THE RR BLOCK
        JMPI             RL5400     ;
;----------------------------------------------------------------------
;FF\f


;----------------------------------------------------------------------
;
; PROCESS INCOMMING LCB BLOCKS
;
; WHEN A VALID LCB BLOCK IS RECEIVED THE END OF BLOCK FLAG IS SET
; IN THE BLOCK AND IT IS PASSED TO IDP.
;
; CALLED BY: ED2100
;
; CALLS: ED4510, ED4620, ED4580, ED4570
;
; ENTRIES: ED5500
;
; RETURNS: LINK
;
; REGISTERS:         ENTRY          EXIT
;       R0             -            DEST
;       R1             -            DEST
;       R2             -            DEST
;       R3             -            DEST
;       R4           LINK           DEST
;       R5             -            DEST
;       R6             -            DEST
;       R7             -            DEST
;----------------------------------------------------------------------
ED5500:                             ;
        MOV          R4  RL5500     ;
        MOV   ECRPTR            R6  ;
        MOD          R6             ;
        MOVC  ECIFLG            R5  ;   GET INPUT FLAG
        IBN          X5  ECISCQ     ;   IF SETBD REQ'D THEN
        JMP              ED5504     ;   GO DISCARD THE BLOCK
        MOVC  1<TSTCRC+1<TSTBID R0  ;
        JMP          S4  ED4510     ;   TEST BID PARITY AND CRC
        JMP              ED5504     ;   BID PARITY OR CRC ERROR
        IBN          X5  ECIALR     ;   IS AN LCB IN THE SYSTEM
        JMP              ED5504     ;   YES - REJECT THE BLOCK
        MOD          R6             ;       READ BLOCK COUNT IN LCB
        MOV   ECCIQH+QCCQE      R3  ;
        INE          R3  1          ;   IF MORE THAN 1 BLOCK IN LCB
        JMP              ED5504     ;   THEN GO DISCARD THE BLOCK
        MOV   CIBID             R0  ;
        MOV          R0  ECIALB.X6  ;   SAVE LCB'S BID
        SETS         X5  ECIALR     ;   SET "WAIT FOR MP-ACK" FLAG
        MOD   ECRPTA                ;
        MOVC  ECCIQH            R4  ;
        MON   LNOQ                  ;   FETCH LCB FROM INPUT BIN QUEUE
        NOP                         ;
        MOD   CSTPTA                ;
        MOVC  CSTFIB            R4  ;   QUEUE LCB FOR IDP
        MON   LNIQ                  ;
        MOVC  1<BINEIB          R0  ;
        JMP          S4  ED4570     ;   SET END OF BLOCK FLAG IN LCB
        JMPI         S4  EI4580     ;   NOTIFY IDP
        JMP              ED5506     ;
ED5504:                             ;
        JMP          S4  ED4620     ;   DISCARD THE BLOCK
ED5506:                             ;
        JMPI             RL5500     ;
;----------------------------------------------------------------------
;FF\f


;----------------------------------------------------------------------
;
; PRESET INPUT AREA
;
; THIS ROUTINE CLEARS THE INPUT AREA OF AN ECR. IT IS USED WHEN
; INPUT IS CLOSED.
;
; CALLED BY: ED3300
;
; CALLS: ED4550
;
; ENTRIES:    ED5600
;
; RETURNS:    LINK
;
; REGISTERS:         ENTRY          EXIT
;       R0-R3          -            DEST
;       R4           LINK           DEST
;       R5-R7          -            DEST
;----------------------------------------------------------------------
ED5600:                             ;
        MOV          R4  RL5600     ;
        MOVC  1                 R1  ;   BID1 = 1
        MOVC  ECISAD            R2  ;   BID2 = ECISAD
        JMP          S4  ED4550     ;   CLEAR STATUS ARRAY
        JMPI         S4  EI1900     ;UE BID ERROR (NOT LIKELY)
        MOVC  1<ECISCQ          R0  ;
        MOD   ECFPTR                ;   SET "SETBD REQ'D" FLAG
        MOV          R0  ECIFLG     ;
        JMPI             RL5600     ;   RETURN TO LINK                        99
;----------------------------------------------------------------------
;FF\f


;----------------------------------------------------------------------
;
; HALTED MESSAGE PROCESSING
;
; WHEN A HALTED MESSAGE IS DETECTED, THIS ROUTINE IS CALLED TO
; RELEASE ALL BINS IN THE HALTED BLOCK AND SEND A "HALTED MESSAGE"
; BLOCK TO IDP.
;
; CALLED BY: ED1550
;
; CALLS: ED4570, ED4580
;
; ENTRIES:    ED5700
;
; RETURNS:    LINK
;
; REGISTERS:         ENTRY          EXIT
;       R0-R3          -            DEST
;       R4           LINK           DEST
;       R5-R7          -            DEST
;----------------------------------------------------------------------
ED5700:                             ;
        MOV          R4  RL5700     ;
        MOD   ECRPTA                ;
        MOVC  ECCIQH            R4  ;   DISCARD ECR INPUT BIN QUEUE BINS
        MODN  XBASE                 ;   EXCEPT THE LAST ONE
        MOV   QCCQE. X4         R3  ;
        ADDC  -1                R3  ;
        JOZ          R3  ED5702     ;   IF ONLY ONE BIN - NO RELEASE
        MON   LNOQ                  ;   LINK BINS OUT
        JMPI         S4  EI1990     ;E  DEQUEUE ERROR
        MON   RNBN                  ;   RELEASE BINS TO BIN POOL
ED5702:                             ;
        MOVC  1                 R3  ;
        MOD   ECRPTA                ;
        MOVC  ECCIQH            R4  ;   GET THE BIN WE SAVED
        MON   LNOQ                  ;   I.E. LINK IT OUT OF QUEUE
        JMPI         S4  EI1990     ;E  DEQUEUE ERROR
        MOVC  1<BINEIB          R0  ;
        JMP          S4  ED4570     ;   SET END OF BLOCK FLAG IN BIN
        MOD   CSTPTA                ;
        MOVC  CSTFIB            R4  ;
        MOVC  1                 R3  ;   QUEUE IT FOR IDP
        MON   LNIQ                  ;
        JMPI         S4  EI4580     ;   NOTIFY IDP
        JMPI             RL5700     ;   RETURN TO LINK
;----------------------------------------------------------------------
;FF\f


;----------------------------------------------------------------------
;
; EXTERNALE NAMES: FILE : EDINOD.
;
;----------------------------------------------------------------------
BEGIN
EXTERNAL ED4300,ED4410,ED5100,ED5200,ED5300,ED5400,ED5500,ED5600,ED5700
EXTERNAL ED4530,ED4580
NAMES
END
;----------------------------------------------------------------------
END
«eof»