|
|
DataMuseum.dkPresents historical artifacts from the history of: CR80 Hard and Floppy Disks |
This is an automatic "excavation" of a thematic subset of
See our Wiki for more about CR80 Hard and Floppy Disks Excavated with: AutoArchaeologist - Free & Open Source Software. |
top - metrics - download
Length: 78336 (0x13200)
Types: TextFile
Names: »EDIMOD«
└─⟦31861d049⟧ Bits:30005074 8" CR80 Floppy CR80FD_0012 ( EDI SYS 1 PJ DEC 3, 80 )
└─⟦46bca6409⟧
└─⟦this⟧ »EDIMOD«
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»