|
|
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: 75648 (0x12780)
Types: TextFile
Notes: UNREAD_DATA_SECTOR
Names: »MXIMRG«
└─⟦9d718387b⟧ Bits:30005557 8" CR80 Floppy CR80FD_0058 ( NICS TARE COMMUNICATIONS PROCESSOR 780126 NIC/210/version 01.01 MXI FR WORK )
└─⟦b3aaefac6⟧
└─⟦this⟧ »CP.MXIMRG«
LIST
;=======================================================================
; CARD DECK IDENTIFICATION NUMBER: CR/C/0106
; MODULE IDENTIFICATION: NIC/210
; VERSION: 0301
; DATED: 780321/FR,HQH
;
; OPERATIONAL SUBMODULE MULTIPLEXER CPU INTERFACE (MXI)
;
; THE MXI SUBMODULE CONSISTS OF TWO PROCESSES BOTH OF WHICH RUN
; MASKED WHILE UPDATING THEIR RESPECTIVE CDT/CST-RECORDS.
;
; . A CPU-INTERRUPT-DRIVEN
; THE PURPOSE OF THE CPU INTERRUPT DRIVEN PROCESS IS TO SERVE THE
; MUX-CPU GENERATED CPU INTERRUPTS REQUESTING THE COM-CPU TO SERVE
; THE BY THE MUX-CPU CREATED MQI/MQO'S (MESSAGE QUEUES) THROUGH
; WHICH SUPPLYING AND REMOVAL OF BINS FOR THE MUX IS CONTROLLED.
; THE MXI WILL SERVE THE MUX WITH EMPTY BINS FOR INPUT DATA AND
; FULL BINS FOR OUTPUT DATA. THE DIFFERENT STATUS CHANGES REPORTED
; BY THE MUX WILL BE TRANSFERRED TO THE CST FOR LATER RETRIEVAL.
;
; . A LETTER-DRIVEN
; THE PURPOSE OF THE LETTER DRIVEN PART OF THE MXI IS TO HANDLE
; THE LTU RELATED SUBCOMMANDS ISSUED TO THE CMI SUBMODULE, I.E.
; THE SETUP, OPENING, AND CLOSING OF CHANNELS AS WELL AS PART OF
; THE PRE-EMPTION.
; LETTERS ARE DISPATCHED TO THIS SUBMODULE FROM
; . COMMAND INTERPRETER SUBMODULE
; . OUTPUT DATA PROCESSING SUBMODULE
;
; N B THE MUX PSW MUST (AND WILL BE) 2#011
;
; N O T E IN ORDER FOR THE CPU INTERRUPT DRIVEN PROCESS TO SERVE
; THE MQI/MQO'S SENT FROM THE MUX-CPU PROPERLY IT WILL HAVE
; TO RUN AT A HIGHER (S/W) PRIORITY LEVEL THAN THE LETTER
; DRIVEN PROCESS.
;
; THE SYNCHRONEOUS EDC BLOCK PROTOCOL IS NOT IMPLEMENTED.
;
;=======================================================================
BEGIN MODULE SYSMXI
PMASK= #C413, CMASK= #9413
MXIOLTO:= TRUE ; SWITCH TO INCLUDE OLTO TEST POINTS
USE BASE
LOC=0
NOLIST
; ; AU000038 0 0014 LEVEL 1 NAMES:
PRIBML= #0002
DEVMAX= #0100
USE BASE
IPT:= #0000
MONBAS:= #0011
FSBAS:= #0012
SYSESS:= #0080
SYSGST:= #0005
RESCPU:= #0013
ICP:= #0004
OLTOBS:= #0010
TODEV:= #0006
TMASK:= #0007
CPUIVT:= #0008
USE #0
; ; AU000072 0 5800 LEVEL 1 NAMES:
XT= #0016
USE BASE
SYSMPI:= #16E7
A:= #000C
OCILPN:= #00F0
ICPLPN:= #0018
SYSERR:= #0A07
IDPLPN:= #006C
CRILPN:= #00C0
TSTLPN:= #00FC
SYSGO:= #04D7
SYSCPT:= #4800
SYSNUE:= #11A7
SYSMON:= #04F7
SYSRTC:= #0E47
SYSOLO:= #0EE7
ESGLPN:= #000C
LPDLPN:= #00CC
SYSMXI:= #1927
ODPLPN:= #009C
LPILPN:= #00D8
SYSDBA:= #11A7
MPILPN:= #0078
SYSLMT:= #0020
ERRLPN:= #0024
MXCLPN:= #0090
MONLPN:= #0000
RTCLPN:= #0048
PWFLPN:= #003C
MXILPN:= #0084
SYSSMT:= #0009
SYSTSM:= #3FF7
DBALPN:= #0060
LTLLPN:= #0030
SYSOCD:= #4657
SYSEND:= #57FF
SYSMUX:= #3AE7
SYSCMI:= #1DE7
SYSCRD:= #4317
SYSICP:= #09C7
SYSPEG:= #F000
SYSIDP:= #22E7
TSMLPN:= #00A8
SYSPMB:= #57FF
SYSESG:= #0E07
SYSLPD:= #4517
OCDLPN:= #00E4
SYSODP:= #33E7
SYSOPE:= #3C67
CMILPN:= #0054
CRDLPN:= #00B4
USE #0
; ; AU001260 0 001C LEVEL 1 NAMES:
PRESP2= #0006
CSTMAC= #0043
MQIECT= #0080
BINCXO= #0004
CMCATV= #00E0
CSTPAC= #0031
FLASH= #0001
CSTPTS= #0038
CSTCPB= #003D
MSCACX= #0008
IDLE= #FFFF
CSTMSX= #002F
CDPSTC= #001B
CSTHMC= #003B
CSTOSX= #0003
MQITYX= #0008
MQIBIX= #0008
FS= #001B
CDIMCA= #0011
NONSEC= #0000
SECRET= #0002
MSIN1X= #0002
GSTMID= #0004
MQOECT= #0080
MSIN2X= #0008
CDETYP= #0017
CSTSAC= #0030
MSIEOM= #0008
PCGSRL= #0000
CDSTC= #001A
CSTSCB= #003C
MQILAX= #0008
PRIORI= #0003
PCGSRN= #0017
CDPRPT= #001F
UNCLAS= #0005
CMCUD1= #0080
MSBCNT= #0004
CMCCMC= #0040
CMCUD2= #00A0
LS= #001F
MAXMSC= #0014
CMCDMC= #0000
MSLADX= #0008
CMCCME= #00C0
ROUT= #0000
CDBID= #0016
CSTCSI= #0032
CMCDME= #0020
MSMCCX= #0008
CDMOX= #0003
CMCCPE= #0060
TOPSEC= #0001
CDRPT= #001E
GSTMOD= #0003
CSTCPR= #0034
CSTHMP= #003A
XLT= #00E0
MQOLAX= #0008
PCGSRS= #0001
CONFID= #0003
UNPROC= #0000
IMMEDI= #0002
CSTELT= #0060
CSTCSO= #0033
CSTLAX= #0008
BINWXO= #0002
RCH= #00F0
CSTCPS= #000C
CSTBLX= #0004
RESTRI= #0004
CSA= #0000
PCTJTN= #0010
CSTMSI= #00FF
CSTPAX= #0008
MSSECX= #0003
MST1XO= #0012
ORDN= #0001
MST2XO= #0016
CONFCL= #0007
CSTBRX= #0004
DBMLB= #FF00
PCCHPL= #0100
CSTPPR= #0035
CSTCAC= #0042
WCH= #0070
BINEFX= #0003
MSPREX= #0003
CSTSBX= #0002
ROUTIN= #0004
CSTCSX= #002E
CSTMSO= #FF00
MSCCAP= #0076
DBMRB= #00FF
SPURIO= #0007
CSTBEF= #0037
CDICCA= #0010
CSTMOX= #0003
CSTISX= #0003
MAXCHN= #0080
EXPR= #0002
CSTPPW= #0036
MSSEQX= #0008
BINLGT= #0012
PRESP1= #0005
BINCNX= #0006
USE BASE
CSTMCA:= #0021
CSTLAD:= #0008
CSTCS3:= #003C
MQOEND:= #0000
CSTSNS:= #000B
MQILOC:= #0004
MQITXS:= #000B
MQOSYN:= #0002
BINTER:= #000D
PCFMQO:= #0004
CDNCT:= #0001
CSTV2C:= #000C
MQISCH:= #0008
MQOFLG:= #0000
IDPRTC:= #0001
RTCIDP:= #0001
CDOSTA:= #0017
CSTCOB:= #0025
CSTOCB:= #002E
CSTODA:= #0007
GSTSE0:= #001F
CMIMXI:= #0001
MXICMI:= #0001
PCNMQI:= #0005
CDPSTA:= #0004
CDOCCA:= #0014
CSTTPS:= #0013
CSTVF1:= #0038
CSTV2E:= #000E
CSTPAD:= #0000
GSTSE1:= #0020
GSTMCA:= #0032
GSTNAB:= #0037
CDTELT:= #0018
CSTF4T:= #000B
CSTOSV:= #0000
CSTVF2:= #0039
CSTFLD:= #0005
GSTNAC:= #0008
GSTCMB:= #000D
GSTSE2:= #0021
CSTCBR:= #000E
CSTLIB:= #0047
CSTFOB:= #0049
GSTSE3:= #0022
GSTCMC:= #0043
GSTLTU:= #000C
BINSTA:= #0001
PCNCD1:= #0001
CDOEST:= #0011
CSTPSW:= #000D
CSTIS4:= #002B
CSTILC:= #0002
CSTVXL:= #0009
CSTSYN:= #000B
GSTNAE:= #0009
GSTSE4:= #0023
GSTNCC:= #0035
MSIN1S:= #0008
MXIIDP:= #0002
IDPMXI:= #0001
PCNCD2:= #0002
CDIBLC:= #000E
CDMOP:= #0000
CSTMCI:= #0024
CSTIDL:= #0001
CSTNIB:= #0048
GSTODB:= #000E
GSTLED:= #008B
MSIN2S:= #0000
CSTHME:= #001D
GSTECN:= #002D
GSTPAE:= #0002
GSTNBF:= #8003
GSTNEC:= #8005
GSTCCP:= #0006
GSTMED:= U_RNAE_DU_RNAE_DU_RNAE_DU_RNAE_DU_RNAE_DU_RNAE_DU_RNAE_DU_RNAE_DU_RNAE_DU_RNAE_DU_RNAE_DU_RNAE_DU_RNAE_DU_RNAE_DU_RNAE_DU_RNAE_D#0023
GSTNAI:= #000A
GSTMUX:= #0029
GSTCPE:= #0005
GSTCHM:= #8004
MQIRGO:= #0006
MQOBML:= #000C
PCNRTA:= #000E
CSTIDP:= #0035
GSTPCF:= #0012
GSTRP0:= #0002
PCRSPA:= #000D
CSTREG:= #0000
CSTBAS:= #0008
CSTIHM:= #0005
GSTREC:= #000F
GSTILE:= #0001
GSTIPA:= #000E
GSTRP1:= #0003
GSTCRE:= #009B
CSTIPF:= #0004
GSTRP2:= #0004
MQOLOC:= #0002
MSLAD:= #0017
CSTOIH:= #0006
GSTRP3:= #0005
MSI0:= #0009
RTCODP:= #0001
ODPRTC:= #0001
CSTEC:= #0011
CSTSCC:= #0033
CSTO0S:= #0002
CSTTST:= #000C
CSTNS1:= #0042
GSTIOE:= #0009
MQIELT:= #0004
MSMCC:= #001B
MSLADS:= #0008
MSI1:= #0008
PCNGSR:= #0000
PCNMQO:= #0003
CSTCCT:= #0031
CSTTTT:= #0007
CSTNS2:= #0043
MSI2:= #0007
CDETAB:= #000B
CSTCDT:= #0032
CSTSWS:= #0001
CSTO2S:= #0003
CSTVTS:= #000F
MSMCCS:= #0008
MSI3:= #0006
CSTTSW:= #0014
CSTF41:= #000C
CSTV2M:= #000A
CSTALP:= #0006
CSTLOB:= #004A
GSTSBC:= #0046
GSTIRE:= #0008
MSI4:= #0005
PCMSAT:= #0020
PCCTJT:= #0040
CSTSTX:= #0016
CSTLOC:= #003D
CSTISA:= #000D
CSTNCM:= #0045
GSTNS1:= #003F
MSI5:= #0004
MXIODP:= #0001
ODPMXI:= #0001
CDOBLC:= #0015
CSTMCO:= #0027
CSTOMC:= #0030
CSTSCH:= #0008
CSTNOB:= #004B
GSTNS2:= #0040
MSI6:= #0003
CSTDEV:= #0012
CSTCIS:= #002A
CSTSHD:= #0003
CSTISC:= #0000
CSTCON:= #0007
CSTFWB:= #0052
GSTCLM:= #0026
GSTFD:= #000B
MSI7:= #0002
CSTOEM:= #000F
CSTOCO:= #000F
GSTSED:= #004A
MSI8:= #0001
LTTYP:= #0001
CSTCOP:= #0026
CSTOCP:= #002F
GSTMMD:= #0033
GSTNCM:= #0042
GSTLOC:= #008B
GSTLME:= #0004
MSIND:= #001A
MSI9:= #0000
ORDINY:= #0001
CDOPBC:= #0016
CSTPPC:= #000B
CSTITE:= #0003
CSTODP:= #0037
CSTFIS:= #004C
GSTMPB:= #000F
GST25F:= #0018
GSTCOM:= #002E
GSTMOC:= #0038
GSTUXS:= #8001
MQIMXI:= #0001
GSTMPC:= #002C
GSTLOE:= #000C
GSTMCP:= #0000
CSTCRP:= #0006
GSTLPE:= #009C
GSTCDY:= #009D
MQISTA:= #0001
PCMCEF:= #0010
CDIBUF:= #0007
CSTIPM:= #0004
CSTIVF:= #0001
GSTILM:= #0028
GSTCMR:= #0044
MQIBAD:= #0002
MQISTB:= #0003
BINSTP:= #000B
LTMS1:= #0004
CSTLIR:= #0010
CSTPRE:= #001A
CSTNPI:= #005F
GSTIXA:= #002B
GSTUID:= #001F
MQISTC:= #000F
MQOELT:= #0003
LTMS2:= #0005
CSTIFX:= #0008
CSTRGO:= #0006
MQIBEB:= #000E
LTMS3:= #0006
CSTPRG:= #000A
GSTHWE:= #008A
LTMS4:= #0007
CSTMBS:= #0009
CSTCLS:= #0029
CSTBLT:= #000C
GSTMQI:= #0014
PCMSK:= #0008
CDPCA:= #0003
CSTLNK:= #000E
CSTCSN:= #0019
CSTSCN:= #001E
GSTCC0:= #001A
MSLOC:= #001C
MSSECS:= #000A
EXPRES:= #0002
MXIRTC:= #0001
RTCMXI:= #0001
CSTCOS:= #002C
CSTOSC:= #0003
CSTLWB:= #0053
GSTCC1:= #001B
MQICFE:= #0002
ROUTIE:= #0000
CMIIDP:= #0000
IDPCMI:= #0000
CDSPAC:= #000D
GSTCC2:= #001C
GSTSBM:= #0007
MQIBID:= #0008
RTCIOX:= #0002
IOXRTC:= #0002
CSTOSE:= #0001
CSTNWB:= #0054
GSTCC3:= #001D
GSTOC:= #0008
CDPBCT:= #0009
CDLIC:= #0006
CSTMCX:= #0017
CSTXLD:= #0007
CSTRCS:= #000A
CSTBRT:= #0008
CSTLIS:= #004D
CSTFOS:= #004F
GSTNSC:= #0007
GSTMUB:= #0011
GST25L:= #0017
GSTCC4:= #001E
GSTLNK:= #0034
GSTTNB:= #0036
MQOMXI:= #0001
CDIMSA:= #0006
CSTISM:= #0009
CSTNOM:= #003F
GSTMLM:= #0024
GSTCOS:= #002F
GSTUCM:= #000D
MQIRPS:= #0007
CSTTIM:= #000C
CSTIMT:= #0000
CSTERS:= #0002
CSTPAY:= #0003
CSTNPM:= #0040
CSTNIS:= #004E
GSTAXM:= #0039
GSTCR:= #0009
MQOSTA:= #0001
CDOBUF:= #0013
CDTYP:= #0001
CSTOEW:= #0005
CSTVHM:= #000D
CSTMOP:= #0009
GSTMXB:= #000B
GSTOLM:= #0027
GSTSBR:= #0047
GSTLGT:= #011D
MQOBAD:= #0002
CDLINK:= #0000
CDPIC:= #000C
CSTIPS:= #001F
CSTNRM:= #0041
GSTFOS:= #0000
GSTMLP:= #0031
GSTTOE:= #0003
MQIRPV:= #0009
CSTIXL:= #0006
CSTOFX:= #0005
GSTNOM:= #003C
GSTXCN:= #8002
MQIRXO:= #0003
CDTIME:= #0002
CSTPRM:= #0004
GSTMRL:= #0030
GSTNPM:= #003D
GSTNON:= #000A
BINLOC:= #0002
MPITSM:= #0000
TSMMPI:= #0000
PCGSR1:= #0050
CSTSAS:= #0018
CSTDRY:= #0003
CSTFWR:= #0055
GSTMRM:= #0001
MQILAD:= #0008
MQIBNA:= #0000
MSPRES:= #000D
CDIMCX:= #0008
CDOPEN:= #0003
CSTIPW:= #001B
GSTMQO:= #0015
GSTNRM:= #003E
GSTXFN:= #009D
CDBCT:= #000A
CSTTTA:= #0020
CSTV20:= #0000
CSTSTB:= #0001
GSTPWF:= #000D
LTLNK:= #0000
CSTV21:= #0001
GSTPRM:= #0007
LTSND:= #0003
CMIODP:= #0001
ODPCMI:= #0001
CSTV22:= #0002
CSTCSU:= #000D
MQIBCP:= #0004
MQOIBD:= #0001
PCMREF:= #000F
CDLCN:= #0008
CSTV23:= #0003
GSTSBS:= #0045
CSTSUE:= #0004
CSTV24:= #0004
CSTNSM:= #0044
CSTLOS:= #0050
GSTMC0:= #0003
GST52:= #0016
GST1CL:= #0043
MQIEND:= #0000
MPICMI:= #0002
CMIMPI:= #0002
CDOMSA:= #0012
CSTGST:= #0015
CSTCHA:= #0028
CSTSWD:= #0002
CSTOMS:= #000D
CSTOSM:= #000E
CSTEDC:= #0008
GSTMC1:= #0004
GSTDBB:= #0010
GSTCST:= #0013
MQISYN:= #0003
PCFMQI:= #0006
CSTSYC:= #0034
CSTVSF:= #0038
CSTVTE:= #000B
CSTNOS:= #0051
GSTMC2:= #0005
MQIFLG:= #0000
MQITXO:= #0004
MSSEQ:= #0018
CDISTA:= #0010
CDUSED:= #0005
CSTPSN:= #001C
CSTCIB:= #0022
CSTIST:= #0000
CSTITS:= #0007
GSTMC3:= #0006
GST55:= #0019
GSTLP:= #000A
LTRCV:= #0002
PCOFA:= #0007
CSTOPS:= #002D
CSTI2M:= #000A
GSTLOS:= #0001
GSTNSM:= #0041
GSTNLT:= #0006
MQIRXS:= #000A
MQITYP:= #0000
MSSEQS:= #0000
CSTISV:= #0008
CSTNXM:= #003D
MSPSI:= #0019
CSTFIB:= #0046
GSTNOS:= #0002
GSTSWE:= #0048
MQIIDP:= #0002
CDIEST:= #0005
CSTRPS:= #0007
CSTNZM:= #003E
CSTLWR:= #0056
GSTXLM:= #0025
MQOLAD:= #0008
MQOBNA:= #0000
BINLNK:= #0000
CDRPAT:= #000F
GSTIDB:= #000C
BINCNT:= #0000
CSTNWR:= #0057
GSTNXM:= #003A
PCFLGT:= #017F
CSTLAA:= #000F
CSTRPV:= #0009
MQIBDS:= #000D
MSCAC:= #0016
RTCMUX:= #0002
MUXRTC:= #0002
CSTBT1:= #0005
CSTCS1:= #003A
GSTMXP:= #002A
GSTNZM:= #003B
MQIBML:= #000C
BINHMS:= #000C
CMIRTC:= #0001
RTCCMI:= #0001
CSTBT2:= #0006
CSTLAC:= #0000
CSTCS2:= #003B
GSTXPN:= #000B
MQOOBE:= #000D
BINIO:= #000E
MSCACS:= #0000
CSTSTM= #0006-128*BASE-128*(PROG-1)
MQOEFM= #FFFE-128*BASE-128*(PROG-1)
MSLADM= #FF00-128*BASE-128*(PROG-1)
MSMCCM= #FF00-128*BASE-128*(PROG-1)
CDMOM= #0007-128*BASE-128*(PROG-1)
MQOLAM= #FF00-128*BASE-128*(PROG-1)
CSTLAM= #FF00-128*BASE-128*(PROG-1)
CSTBLM= #F000-128*BASE-128*(PROG-1)
MQILGT= #0200-128*BASE+ 0*(PROG-1)
CSTPAM= #00FF-128*BASE-128*(PROG-1)
MSSECM= #1C00-128*BASE-128*(PROG-1)
CSTBRM= #0F00-128*BASE-128*(PROG-1)
MQOLGT= #0180-128*BASE+ 0*(PROG-1)
MSPREM= #E000-128*BASE-128*(PROG-1)
CSTMOM= #0E00-128*BASE-128*(PROG-1)
BINIOI= #4000-128*BASE-128*(PROG-1)
MSSEQM= #00FF-128*BASE-128*(PROG-1)
BINCNM= #003F-128*BASE-128*(PROG-1)
MSCACM= #00FF-128*BASE-128*(PROG-1)
BINIOM= #C000-128*BASE-128*(PROG-1)
MQIEFM= #FFFE-128*BASE-128*(PROG-1)
MQITYM= #00FF-128*BASE-128*(PROG-1)
MQIBIM= #FF00-128*BASE-128*(PROG-1)
BINIOO= #8000-128*BASE-128*(PROG-1)
MSIN1M= #0300-128*BASE-128*(PROG-1)
MSIN2M= #00FF-128*BASE-128*(PROG-1)
MQILAM= #FF00-128*BASE-128*(PROG-1)
USE #0
; ; AU000069 0 0000 LEVEL 1 NAMES:
USE BASE
ROL:= #004F
RI:= #0053
OLTO:= #0056
GNBF:= #0040
RRL:= #004E
RTI:= #006F
WA:= #006A
GNIB:= #0076
TFRW:= #0061
RWI:= #006E
WPSLP:= #005C
INCH:= #0073
WE:= #0052
RL:= #004D
WPSTLP:= #005C
SOLT:= #004B
SRLT:= #004A
GNOB:= #0077
RNBF:= #0041
RSCOC:= #0059
TODQB:= #0074
WL:= #0069
GPB:= #006C
RBF:= #0043
LPERR:= #005F
GLET:= #0047
DMLP:= #005E
WSCOC:= #0058
OTCH:= #0072
TFRC:= #0062
LPER:= #005F
LNIQ:= #0046
GBS:= #0042
RIWE:= #0054
SCH:= #006D
WBF:= #0044
GBST:= #0065
REL:= #0050
CPP:= #006B
OLTF:= #0056
RBF1:= #0067
CRP:= #0055
RLET:= #0048
WSCLP:= #005B
RLI:= #0064
LNOQ:= #0045
WDSLP:= #005D
TFOP:= #0060
INQ:= #0070
RLWE:= #0051
ERR:= #0063
RCPU:= #0075
WPSOC:= #005A
WDSTLP:= #005D
INDQB:= #0071
SLET:= #0049
SELT:= #004C
MCX:= #0000
RHXP:= #0057
GNBA:= #0066
WBF1:= #0068
USE #0
; ; AU000066 0 000B LEVEL 1 NAMES:
QUEFIL= #0002
TS10= #4D43
INXFIL= #0003
TS11= #2049
TS20= #4F49
RCCNM= #0006
TS12= #4449
TS21= #2058
TS13= #2050
RCLGM= #0006
TS14= #444F
TS15= #2050
TS16= #4244
TS17= #2041
TS18= #554D
TS19= #2058
FILTPM= #000E
STRT= #0001
ABSFIL= #0000
RELFIL= #0001
SEQM= #0008
FILPGM= #000C
PRCFIL= #0000
TS0= #4F4D
TS1= #204E
TS2= #5452
TS3= #2043
TS4= #5245
TS5= #2052
TS6= #584D
SUBM= #0004
TS7= #2049
TS8= #504D
TS9= #2049
USE BASE
MXI:= #0003
IOX:= #000A
DBA:= #0008
ML:= #0080
MN:= #0000
TS22:= #2020
TS23:= #2020
LI1:= #0010
LI2:= #0020
LI3:= #0030
MNX:= #0000
SL:= #00C0
SN:= #0040
TFLTFN:= #0000
MUX:= #0009
CMI:= #0005
TFCNT:= #0002
IDP:= #0006
ERROR:= #0002
TFDPT:= #0001
ODP:= #0007
MPI:= #0004
RTC:= #0001
USE #0
LIST
MXUSHD:= 100/10 ; SCHEDULING PERIOD FOR CPU-INTER'PT DRIVEN
; PART IN RTC UNITS (10 MSEC).
MXCMP= LTMS4 ; CMI-LETTER WORD WITH RETURN STATUS
MXLTOK= 0 ; LTU COMD OK-RETURN STATUS
MXASYW:= 80 ; WAIT FOR ASYNC LTU TO RESET> 170 USEC
MXMESP:= 7 ; CODE OF LOWEST MED SPEED BAUD RT- 600
MX05SP:= 8<8 ; MED.SPD. HLT MSG BIN CNT 8*.58 = 5 SEC
MXMSBD:= 15 ; NMB OF CHARS TO PASS DURING 576 MSEC ON
; MED SPEED CHANNEL BEFORE BIN DISCONNECT.
MX30SP:= 37<8 ; LOW SPD HLT MSG BIN CNT 37*.8 = 30 SEC
MXLSBD:= 21 ; NMB OF CHARS TO PASS DURING 806 MSEC ON
; LOW SPEED CHANNEL BEFORE BIN DISCONNECT.
MXSTUC:= 141 ; STUCK TAPE CHARACTER COUNT
MXSTCP= 5 ; RELEASE PULSE STUCK SUPERCOUNT
;
MXUSMS= %; MASK FOR CLEARING LTU STATUS
-1 %; ALL BITS BUT
-1<CSTSNS %; NOT SEND STATUS
-1<CSTRCS %; NOT RECEIVE STATUS
-1<CSTCBR %; NOT CHANNEL BREAK
-1<CSTRPS %; NOT RELEASE PULSE STUCK
-1<CSTSCH ; NOT STATUS CHANGED
;
;=======================================================================
; CONSTANT DEFINITIONS
; LETTER-DRIVEN PROCESS (2)
;
;-----------------------------------------------------------------------
; SUBCOMMAND NOMEMCLATURE
LOC=0 ; -----------------------
SBCTN: LOC=LOC+1 ; SUBCOMMAND WORD 1:
SBBTYP:=SBCTN<1 ; SUBCOMMAND TYPE
SBBNMB:=SBBTYP+1 ; SUBCOMMAND SEQUENCE NUMBER
SBCSU1: LOC=LOC+1 ; SUBCOMMAND WORD 2:
SBBLOG:=SBCSU1*2+1 ; LOGICAL CHANNEL NUMBER
; FOR SET CORRESPONDING TO CSTCS1.
SBCSU2: LOC=LOC+1 ; SUBCOMMAND WORD 3 (ONLY SETUP):
; CORRESPONDS TO CSTCS2
SBCSU3: LOC=LOC+1 ; SUBCOMMAND WORD 4 (ONLY SETUP):
; CORRESPONDS TO CSTCS3
SBCSUC= LOC-SBCSU1 ; NMB OF CST PARAMETERS TO MOVE
;
;-----------------------------------------------------------------------
;
; ASYNCHRONUOUS LTU MEMORY LAY-OUT NOMENCLATURE
;
; MODE 0 OF THE ASYNC LTU
LOC=0
MODE0: LOC= LOC+1 ; MODE 0 BYTE OF ASYNC LTU
SAVLOC2= LOC, LOC= 0 ; BINARY BIT LAY-OUT
LTABRS: LOC= LOC+4 ; BAUD RATE CODE FIELD
LTARSS: LOC= LOC+1 ; LTU RESET BIT
LTASYS: LOC= LOC+1 ; SYNC/ASUNC SISTINCTION
LTADSS: LOC= LOC+1 ; CHANNEL DISABLE BIT
LTAODS: LOC= LOC+1 ; ODD/EVEN PARITY BIT
LOC=SAVLOC2
;
; MODE 1 OF THE ASYNC LTU
MODE1: LOC= LOC+1 ; MODE 1 BYTE OF ASYNC LTU
SAVLOC2= LOC, LOC= 0 ; BINARY BIT LAY-OUT
LTAFDS: LOC= LOC+1 ; FULL/HALF DUPLEX BIT
LTABLS: LOC= LOC+1 ; BLOCK/CHAR ON DEMAND
LTAFRS: LOC= LOC+1 ; FREE RUNNING/ON DEMAND MODE
LTARDS: LOC= LOC+1 ; END OF BLOCK (REL.PULSE ENABLE)
LTASTS: LOC= LOC+2 ; STOPBIT CODE FIELD
LTASPS: LOC= LOC+1 ; LOOP BIT
LTACLS: LOC= LOC+1 ; 7BIT/5BIT CHAR LENGTH DESIGNATOR
;FF\f
;=======================================================================
;
; CPU INTERRUPT DRIVEN PROCESS (1)
;
;-------------------------------------------------------------------------------
; ;PRCGEN1
;-----------------------------------------------------------------------
; GENERATE PROCESS DESCRIPTOR FOR FIRST PROCESS.
;-----------------------------------------------------------------------
NOLIST
; DATED 771128/FR
LOC=-SYSSMHLGT
NAME: XNAME1 ; SUBMODULE NAME
XNAME2
PRCCNT: XPRTOT ; NUMBER OF PROCESSES
SBMLGT: XTOTAL ; SUBMODULE LENGTH
RELPRG: XSTOTAL ; RELATIVE PROGRAM ADDRESS
PRCBL: XWDS0 ; PROCESS BLOCK LENGTH: THE NUMBER OF WORDS FROM AND
; INCLUDING PRCBL TO AND INCLUDING THE LAST ITEM IN
; THE PROCESS LOAD MODULE DATA
TRXLGT: XTXLGT0 ; NUMBER OF WORDS TO BE TRANSFERRED TO THE PROCESS
; EXECUTION AREA FROM THE PROCESS LOAD MODULE AREA.
PRCLGT: XLGT0 ; PROCESS LENGTH: THE NUMBER OF WORDS FROM AND
; INCLUDING SR0 TO AND INCLUDING THE LAST ITEM IN
; THE INITIATED PROCESS AT EXECUTION TIME.
PRCID: XID0 ; LOGICAL PROCESS IDENTIFICATION NUMBER, 1 WORD
SR0: 0 ; SAVE AREA FOR REGISTER 0, 1 WORD
SR1: 0 ; SAVE AREA FOR REGISTER 1, 1 WORD
SR2: 0 ; SAVE AREA FOR REGISTER 2, 1 WORD
SR3: 0 ; SAVE AREA FOR REGISTER 3, 1 WORD
SR4: 0 ; SAVE AREA FOR REGISTER 4, 1 WORD
SR5: 0 ; SAVE AREA FOR REGISTER 5, 1 WORD
SR6: 0 ; SAVE AREA FOR REGISTER 6, 1 WORD
SR7: 0 ; SAVE AREA FOR REGISTER 7, 1 WORD
BAS: 0 ; SAVE AREA FOR DATA BASE REGISTER, 1 WORD
MBAS: 0 ; SAVE AREA FOR MODIFY REGISTER, 1 WORD
PRG: 0 ; SAVE AREA FOR PROGRAM BASE REGISTER, 1 WORD
PRPC: XPRPC0 ; SAVE AREA FOR PROGRAM COUNTER REGISTER, 1 WORD
TIM: XTIM0 ; SAVE AREA FOR TIME
PSW: XMASK0 ; SAVE AREA FOR PROCESS STATUS WORD, 1 WORD
PRCLNK: 0 ; PROCESS LINK, CONTAINS BAS OF THE NEXT LOWER LEVEL
; PROCESS
LINTACT:XERROR0 ; ADDRESS OF ROUTINE FOR PROCESSING LOCAL INTERRUPTS
LINTRET:0 ; RETURN LINK FOR LOCAL INTERRUPT AND SOME MONITOR
; FUNCTIONS
LINTCAUS: ; CAUSE CODE LOCAL INTERRUPT:
0 ; 0 FOR A TIMER INTERRUPT
; 1 FOR AN ILLEGAL INSTRUCTION
; OR TRAP
; 2 FOR A HARDWARE TIME OUT
; 3 FOR A MEMORY PARITY ERROR
DEV: 0 ; ADDRESS AND PRIORITY (8 BIT) OF INTERRUPTING
; IO-DEVICE. WILL CONTAIN -1 IF THE PROCESS WAS
; LOADED BECAUSE OF A CPU INTERRUPT OR BECAUSE
; ANOTHER PROCESS EXECUTED A LDP INSTRUCTION.
TIMRSET:XTIM0 ; TIME REGISTER RESET VALUE
TSWITCH:0 ; TEST SWITCH
GSTPTR: 0 ; POINTER TO GST
XPRCNT= 1, XTOT=0
LIST
;-----------------------------------------------------------------------
; DATA AREA,INITIALIZED BY DBA
;
MXR7TS: 0 ; SAVE LOC FOR R7 UNDER OLTO CALLS
OTFPAG= 0, OTFATY= 0, OTFDTY= 0
OPTREG:
OTFTYP= RELFIL, OTFRCN= 1, OTFRCL= 08, OTFST= 0
OTFNM1= <:RE:>, OTFNM2= <:GS:> ; ; TFDGEN
NOLIST
;-----------------------------------------------------------------------
; TEST FILE DECLARATION GENERATOR
; THE FOLLOWING PARAMETERS MUST BE DEFIND BY ASSINGMENT BEFORE USE
; OTFTYP TYPE OF THE FILE
; OTFDTY THE FILE DUMP TYPE (BINARY/ASCII)
; OTFATY THE FILE ADDRESSING TYPE (PELBS/NON-PELBS PAGE ZERO)
; OTFRCN LENGTH OF RECORDS IN WORDS
; OTFRCL LENGTH OF RECORDS IN WORDS
; OTFST THE FILE START ADDRESS (RELATIVE OR 0)
; OTFNM1 THE FILE NAME
; OTFNM2
;-----------------------------------------------------------------------
OTFTYP<FILTPM OR OTFATY<(FILPGM+1) OR OTFDTY<FILPGM OR%
(OTFRCL-1)<RCCNM OR OTFRCN
OTFST
OTFNM1, OTFNM2
;
; RESET PARAMETERS TO DEFAULT
;
OTFTYP= RELFIL
OTFDTY= 0
OTFATY= 0
OTFRCL= 21
OTFRCN= 1
OTFST= 0
OTFNM1= <:PR:>, OTFNM2= <:OC:>
LIST
OPTWRK:
OTFTYP= RELFIL, OTFRCN= 1, OTFRCL= 12, OTFST= #2A
OTFNM1= <:WO:>, OTFNM2= <:RK:> ; ; TFDGEN
NOLIST
;-----------------------------------------------------------------------
; TEST FILE DECLARATION GENERATOR
; THE FOLLOWING PARAMETERS MUST BE DEFIND BY ASSINGMENT BEFORE USE
; OTFTYP TYPE OF THE FILE
; OTFDTY THE FILE DUMP TYPE (BINARY/ASCII)
; OTFATY THE FILE ADDRESSING TYPE (PELBS/NON-PELBS PAGE ZERO)
; OTFRCN LENGTH OF RECORDS IN WORDS
; OTFRCL LENGTH OF RECORDS IN WORDS
; OTFST THE FILE START ADDRESS (RELATIVE OR 0)
; OTFNM1 THE FILE NAME
; OTFNM2
;-----------------------------------------------------------------------
OTFTYP<FILTPM OR OTFATY<(FILPGM+1) OR OTFDTY<FILPGM OR%
(OTFRCL-1)<RCCNM OR OTFRCN
OTFST
OTFNM1, OTFNM2
;
; RESET PARAMETERS TO DEFAULT
;
OTFTYP= RELFIL
OTFDTY= 0
OTFATY= 0
OTFRCL= 21
OTFRCN= 1
OTFST= 0
OTFNM1= <:PR:>, OTFNM2= <:OC:>
LIST
OPTCST:
OTFTYP= RELFIL, OTFRCN= (CSTELGT+15)/16, OTFRCL= 16, OTFST= 0
OTFNM1= <:CS:>, OTFNM2= <:T :> ; ; TFDGEN
NOLIST
;-----------------------------------------------------------------------
; TEST FILE DECLARATION GENERATOR
; THE FOLLOWING PARAMETERS MUST BE DEFIND BY ASSINGMENT BEFORE USE
; OTFTYP TYPE OF THE FILE
; OTFDTY THE FILE DUMP TYPE (BINARY/ASCII)
; OTFATY THE FILE ADDRESSING TYPE (PELBS/NON-PELBS PAGE ZERO)
; OTFRCN LENGTH OF RECORDS IN WORDS
; OTFRCL LENGTH OF RECORDS IN WORDS
; OTFST THE FILE START ADDRESS (RELATIVE OR 0)
; OTFNM1 THE FILE NAME
; OTFNM2
;-----------------------------------------------------------------------
OTFTYP<FILTPM OR OTFATY<(FILPGM+1) OR OTFDTY<FILPGM OR%
(OTFRCL-1)<RCCNM OR OTFRCN
OTFST
OTFNM1, OTFNM2
;
; RESET PARAMETERS TO DEFAULT
;
OTFTYP= RELFIL
OTFDTY= 0
OTFATY= 0
OTFRCL= 21
OTFRCN= 1
OTFST= 0
OTFNM1= <:PR:>, OTFNM2= <:OC:>
LIST
MXITEM: %; TRANSMISSION ERR MASK, MQI ERR
1<MQIPER %; PARITY
+1<MQICFE %; FRAMING
+1<MQITXO %; TRANSMITTER OVERRUN
+1<MQIRXO ; RECEIVER OVERRUN
MXOSTM: ; OUTPUT STATUS MASK
MXISTM: %; INPUT STATUS MASK
1<MQISCH %; STATUS CHANGED
+1<MQIRXS %; RECEIVE STATUS
+1<MQITXS ; SEND STATUS
MXUPBM: #FF00 ; UPPER BYTE MASK
;
MXIDPL: ; NOTE THIS LETTER WILL NOT BE
; RETURNED BY IDP.
0 ; REL. IDP LETTER REF
MXIIDP ; LETTER URGENCY
IDPLPN, MXILPN ; RECEIVER AND SENDER
; RETURNED BY THE IDP;
;-----------------------------------------------------------------------
; ;PRCGEN2
NOLIST
XWDS0=LOC+SR0-PRCBL, XTOT=XTOT+LOC+SR0-NAME, XTXLGT0=XWDS0-3
LIST
;=======================================================================
;
; DATA AREA ,NOT INITIALIZED BY DBA
; CPU INTERRUPT-DRIVEN PROCESS
;
;-----------------------------------------------------------------------
MXIGST: LOC= LOC+1 ; REL POINTER TO TOP OF GST
MXICDI: LOC= LOC+1 ; REL POINTER TO GST CST-DIRECTORY
MXPMQI: LOC= LOC+1 ; MQI PRESET VALUE (ONE REC BEFORE TOP)
MXIMQI: LOC= LOC+1 ; CURRENTLY SERVED MQI
MXPMQO: LOC= LOC+1 ; MQO PRESET VALUE (ONE REC BEFORE TOP)
MXIMQO: LOC= LOC+1 ; CURRENTLY SERVED MQO
MXACST: LOC= LOC+1 ; ABS POINTER TO CURRENT CST RECORD
MXICST: LOC= LOC+1 ; CURRENT CST-RECORD BEING SERVED
MXCBSA: LOC= LOC+1 ; MEMORY SECTION FOR BIN
MXCLNK: LOC= LOC+1 ; CURRENT POINTER TO BIN SERVED
MXCRBS: LOC= LOC+1 ; CURRENT DISCONNECTED BIN STATUS
;-----------------------------------------------------------------------
; ;PRCGEN3
NOLIST
XLGT0=LOC
LIST
;FF\f
;=======================================================================
; ;PRCGEN5
;-----------------------------------------------------------------------
; GENERATE PROCESS DESCRIPTOR FOR SECOND PROCESS.
;-----------------------------------------------------------------------
NOLIST
LOC=-4
XWDS1
XTXLGT1
XLGT1
XID1
0, REPEAT PRG
XPRPC1
XTIM1
XMASK1
0
XERROR1
0
0
0
XTIM1
0
0
XPRCNT= XPRCNT+1
LIST
;
; MXI, LETTER DRIVEN PROCESS.
;
; DATA AREA, INITIALIZED BY DBA
;
;-----------------------------------------------------------------------
;
0 ; SAVE LOC FOR R7 UNDER OLTO CALLS
OTFTYP= RELFIL, OTFRCN= 1, OTFRCL= 08, OTFST= 0
OTFNM1= <:RE:>, OTFNM2= <:GS:> ; ; TFDGEN
NOLIST
;-----------------------------------------------------------------------
; TEST FILE DECLARATION GENERATOR
; THE FOLLOWING PARAMETERS MUST BE DEFIND BY ASSINGMENT BEFORE USE
; OTFTYP TYPE OF THE FILE
; OTFDTY THE FILE DUMP TYPE (BINARY/ASCII)
; OTFATY THE FILE ADDRESSING TYPE (PELBS/NON-PELBS PAGE ZERO)
; OTFRCN LENGTH OF RECORDS IN WORDS
; OTFRCL LENGTH OF RECORDS IN WORDS
; OTFST THE FILE START ADDRESS (RELATIVE OR 0)
; OTFNM1 THE FILE NAME
; OTFNM2
;-----------------------------------------------------------------------
OTFTYP<FILTPM OR OTFATY<(FILPGM+1) OR OTFDTY<FILPGM OR%
(OTFRCL-1)<RCCNM OR OTFRCN
OTFST
OTFNM1, OTFNM2
;
; RESET PARAMETERS TO DEFAULT
;
OTFTYP= RELFIL
OTFDTY= 0
OTFATY= 0
OTFRCL= 21
OTFRCN= 1
OTFST= 0
OTFNM1= <:PR:>, OTFNM2= <:OC:>
LIST
OTFTYP= RELFIL, OTFRCN= 1, OTFRCL= 14, OTFST= #65
OTFNM1= <:WO:>, OTFNM2= <:RK:> ; ; TFDGEN
NOLIST
;-----------------------------------------------------------------------
; TEST FILE DECLARATION GENERATOR
; THE FOLLOWING PARAMETERS MUST BE DEFIND BY ASSINGMENT BEFORE USE
; OTFTYP TYPE OF THE FILE
; OTFDTY THE FILE DUMP TYPE (BINARY/ASCII)
; OTFATY THE FILE ADDRESSING TYPE (PELBS/NON-PELBS PAGE ZERO)
; OTFRCN LENGTH OF RECORDS IN WORDS
; OTFRCL LENGTH OF RECORDS IN WORDS
; OTFST THE FILE START ADDRESS (RELATIVE OR 0)
; OTFNM1 THE FILE NAME
; OTFNM2
;-----------------------------------------------------------------------
OTFTYP<FILTPM OR OTFATY<(FILPGM+1) OR OTFDTY<FILPGM OR%
(OTFRCL-1)<RCCNM OR OTFRCN
OTFST
OTFNM1, OTFNM2
;
; RESET PARAMETERS TO DEFAULT
;
OTFTYP= RELFIL
OTFDTY= 0
OTFATY= 0
OTFRCL= 21
OTFRCN= 1
OTFST= 0
OTFNM1= <:PR:>, OTFNM2= <:OC:>
LIST
OTFTYP= RELFIL, OTFRCN= CSTELGT/16, OTFRCL= 16, OTFST= 0
OTFNM1= <:CT:>, OTFNM2= <:T :> ; ; TFDGEN
NOLIST
;-----------------------------------------------------------------------
; TEST FILE DECLARATION GENERATOR
; THE FOLLOWING PARAMETERS MUST BE DEFIND BY ASSINGMENT BEFORE USE
; OTFTYP TYPE OF THE FILE
; OTFDTY THE FILE DUMP TYPE (BINARY/ASCII)
; OTFATY THE FILE ADDRESSING TYPE (PELBS/NON-PELBS PAGE ZERO)
; OTFRCN LENGTH OF RECORDS IN WORDS
; OTFRCL LENGTH OF RECORDS IN WORDS
; OTFST THE FILE START ADDRESS (RELATIVE OR 0)
; OTFNM1 THE FILE NAME
; OTFNM2
;-----------------------------------------------------------------------
OTFTYP<FILTPM OR OTFATY<(FILPGM+1) OR OTFDTY<FILPGM OR%
(OTFRCL-1)<RCCNM OR OTFRCN
OTFST
OTFNM1, OTFNM2
;
; RESET PARAMETERS TO DEFAULT
;
OTFTYP= RELFIL
OTFDTY= 0
OTFATY= 0
OTFRCL= 21
OTFRCN= 1
OTFST= 0
OTFNM1= <:PR:>, OTFNM2= <:OC:>
LIST
OPTCDT:
OTFTYP= RELFIL, OTFRCN= (CDTELGT+15)/16, OTFRCL= 16, OTFST= 0
OTFNM1= <:CD:>, OTFNM2= <:T :> ; ; TFDGEN
NOLIST
;-----------------------------------------------------------------------
; TEST FILE DECLARATION GENERATOR
; THE FOLLOWING PARAMETERS MUST BE DEFIND BY ASSINGMENT BEFORE USE
; OTFTYP TYPE OF THE FILE
; OTFDTY THE FILE DUMP TYPE (BINARY/ASCII)
; OTFATY THE FILE ADDRESSING TYPE (PELBS/NON-PELBS PAGE ZERO)
; OTFRCN LENGTH OF RECORDS IN WORDS
; OTFRCL LENGTH OF RECORDS IN WORDS
; OTFST THE FILE START ADDRESS (RELATIVE OR 0)
; OTFNM1 THE FILE NAME
; OTFNM2
;-----------------------------------------------------------------------
OTFTYP<FILTPM OR OTFATY<(FILPGM+1) OR OTFDTY<FILPGM OR%
(OTFRCL-1)<RCCNM OR OTFRCN
OTFST
OTFNM1, OTFNM2
;
; RESET PARAMETERS TO DEFAULT
;
OTFTYP= RELFIL
OTFDTY= 0
OTFATY= 0
OTFRCL= 21
OTFRCN= 1
OTFST= 0
OTFNM1= <:PR:>, OTFNM2= <:OC:>
LIST
MXRTCL: ;
0 ; REL. RTC LETTER PNT
MXIRTC ; LETTER URGENCY
RTCLPN ; RECEIVER
MXILPN ; SENDER
;
;-----------------------------------------------------------------------
; MULTIPLE BIT FIELD CONVERSION CONTROL FILE
; ------------------------------------------
MXSUCS: ;
; BAUD RATE FIELD CONVERSION TABLE
MXABRT: ;
LOC= 0
MXLNK: MXASTT ; LINK TO NEXT FIELD TABLE
MXCTL: (CSTCS3-CSTCS1)+CSTBRT<4+MODE0<8 ; BAUDRATE FIELD
MXMSK: CSTBRM ; MASK
MXVAL: 2#11111111 ; VALIDITY MASK 11111111
MXTAB: LOC= LOC+MXSUCS ; FIRST TABLE ENTRY
7<LTABRS ; 50
6<LTABRS ; 75
5<LTABRS ; 100
4<LTABRS ; 110
3<LTABRS ; 165
2<LTABRS ; 200
1<LTABRS ; 300
0<LTABRS ; 600
;
;
; STOPBIT LENGTH FIELD CONVERSION
MXASTT: ; TABLE
MXAMOT ;
(CSTCS3-CSTCS1)+CSTSTB<4+MODE1<8 ; STOPBIT LENGTH FIELD
CSTSTM ;
2#1110 ; VALIDITY MASK 111.
0 ; SPARE
0<LTASTS ; 1.0
1<LTASTS ; 1.5
2<LTASTS ; 2.0
;
;
MXAMOT: ; MODE OF OPERATION CONVERSION TABLE
MXAPRT ;
(CSTCS2-CSTCS1)+CSTMOP<4+MODE1<8 ; MODE OF OPERATION FIELD
CSTMOM ;
2#1110 ; VALIDITY MASK 111.
0 ; ASYNC INTERNAL MODE
(1<LTARDS)+1<LTAFRS ; FREE RUNNING ASYNC LTU
(1<LTARDS)+0<LTABLS ; &HARACTER ON DEMAND
(1<LTARDS)+1<LTABLS ; BLOCK ON DEMAND
;
;
; ASYNC LTU PARITY FIELD CONVERSION
MXAPRT: ; TABLE
0 ; END OF FILE FLAG
(CSTCS3-CSTCS1)+CSTPAY<4+MODE0<8 ; PARITY FIELD
1<CSTPAY ;
2#11
0<LTACLS ; EVEN - (DEFAULT ASYNC)
1<LTACLS ; ODD -
;-----------------------------------------------------------------------
; CDT PRESET COUNTERS
; -------------------
MXIMCX: (BINLGT-BINWXO)*2<8+0 ; MAX/CURRENT CHARACTER COUNT PRESET
MXRPAT: 250+250<8 ; RELEASE PULSE SUBCOUNT
MXSPAC: MXSTUC-1+(MXSTUC-1)<8 ; STUCK TAPE CHAR CNT CDT PRESET
;-----------------------------------------------------------------------
; CHARACTER BLOCK SIZE CONV. TABLE
MXBLKT: ; --------------------------------
32 ; SYNCHRONEOUS
32 ;
128 ;
256 ;
512 ;
1024 ;
2048 ;
4096 ;
30 ; ASYNCHRONEOUS / ITA-5
48 ; ITA-2
60 ;
96 ;
120 ;
192 ;
480 ;
768 ;
;-----------------------------------------------------------------------
; MODE OF OPERATION CONVERSION TABLE (CST -> CDT)
MXDMOP: ; ----------------------------------
1 ; 0 - ASYNC. INTERNAL
2 ; 1 - ASYNC. FREE RUNNING
3 ; 2 - ASYNC. CHARACTER ON DEMAND
4 ; 3 - ASYNC. BLOCK ON DEMAND
5 ; 4 - SYNCHRONEOUS CHANNEL WITH/WITHOUT EDC
MXDMAX= LOC-MXDMOP ;
;-----------------------------------------------------------------------
;
;-------------------------------------------------------------------------------
; ;PRCGEN6
NOLIST
XWDS1=LOC+SR0-PRCBL, XTOT=XTOT+LOC+SR0-PRCBL, XTXLGT1=XWDS1-3
LIST
;=======================================================================
;
; DATA AREA, NOT INITIALIZED BY DBA
;
; MXI, LETTER-DRIVEN PROCESS.
;
;-----------------------------------------------------------------------
MXLETT: LOC= LOC+1 ; REL POINTER TO LETTER ACTIVATING LETTER DRIVEN
; PROCESS.
MXGST: LOC= LOC+1 ; REL POINTER TO TOP OF GST
MXNCC: LOC= LOC+1 ; POINTER TO NMB OF CONNECTED CHANNELS
MXNSC: LOC= LOC+1 ; GST NMB OF SYNCHRONEOUS
MXNAC: LOC= LOC+1 ; GST NMB OF ASYNCHRONEOUS CHANNELS
MXCDI: LOC= LOC+1 ; REL POINTER TO CST-RECORD LIBRARY
MXCST: LOC= LOC+1 ; REL ADDRESS CURRENT CST RECORD
MXCDT: LOC= LOC+1 ; CURRENT CDT RECORD ADDRESS
MXBSA: LOC= LOC+1 ; BIN BUFFER SECTION ADDRESS
MXPHY: LOC= LOC+1 ; SAVE FOR C4RRE-T LTU PHYS ADDRESS
MXMOD0: LOC= LOC+1 ; LTU MODE 0 BYTE BUILD UP CELL
MXMOD1: LOC= LOC+1 ; 1 BYTE BUILD UP CELL
MXR7SV: LOC=LOC+1 ;
; ;PRCGEN7
NOLIST
XLGT1=LOC
LIST
;FF\f
;=======================================================================
;
; SUBCOMMAND CASETABLE
; MUST RESIDE IN SUBMODULES PROG.REL. AREA.
;
USE PROG LOC= 0
; S/W ERROR JUMP TABLE
; --------------------
MXELMI: MXELM ; 4 - LETTER MECHANISM
MXESBI: MXESB ; 7 - RMS (SEC QUEUE BIN CNT)
MXEIRI: MXEIR ; 8 - INTERRUPT RESERVE ERROR
MXEIOI: MXEIO ; 9 - BUFFER MISLINKAGE
MXEUXI: MXEUX ; 8001 - UNEXPECTED SENDER
MXEXCI: MXEXC ; 8002 - EXCESSIVE CHANNEL NUMBER
MXENBI: MXENB ; 8003 - NO BUFFER AVAILABLE
MXECHI: MXECH ; 8004 - CHANNEL MISMATCH
MXENEI: MXENE ; 8005- EDC PROC REQUEST
MXIERR0:MXERR0 ; POINTER TO S/W ERROR PROCESS
MXIERR1:MXERR1 ; POINTER TO S/W ERROR PROCESS
MXCSTY: ;
MXINVT ; TYPE=0 INVALID
MXOPIC ; 1 OPEN INPUT
MXOPOC ; 2 OPEN OUTPUT
MXCLIC ; 3 CLOSE INPUT
MXCLOC ; 4 CLOSE OUTPUT
MXSTUP ; 5 SETUP PARAMETERS
MXCMAX= LOC-MXCSTY ; MAX TYPE AS ENTRY IN CASE TABLE
MXGOBFI: MXGOBF
;
MXCPEI: MXCPE ; 6 - CP ERROR
MXCMEI: MXCME ; C - COMMAND ERROR
MXATVI: MXATV ; E - ATTEMPTED VIOLATION
;FF\f
;=======================================================================
;
; ERROR RECOVERY PROCEDURES
MXERR:
MXERR0: ; LOCAL INTERRUPT ENTRY, PROCESS0
MXERR1: ; LOCAL INTERRUPT ENTRY, PROCESS 1
MODC 255-GSTNEDC ; *** TEMPORARY *** ***
; RECOVERABLE ERRORS
; -----------------
MXENE: MODC GSTNEDC-GSTCHM ; 8005 - EDC PROC REQUEST
MXECH: MODC GSTCHM-GSTNBF ; 8004 - CHANNEL MISMATCH
MXENB: MODC GSTNBF-GSTXCN ; 8003 - NO MORE BUFFERS AVAILABL
MXEXC: MODC GSTXCN-GSTUXS ; 8002 - EXCESSIVE CHANNEL NMB
MXEUX: MODC GSTUXS-GSTIOE ; 8001 - UNEXPECTED SENDER
; UN-RECOVERABLE ERRORS
; ---------------------
MXEIO: MODC GSTIOE-GSTIRE ; 9 - BUFFER MISLINKAGE
MXEIR: MODC GSTIRE-GSTSBM ; 8 - INTERRUPT RESERVATION ERROR
MXESB: MODC GSTSBM-GSTNLT ; 7 - REM(SEC QUEUE BIN CNT) NE 0
MXENL: MODC GSTNLT-GSTCPE ; 6 - NO MORE LETTERS AVAILLABLE
MXECP: MODC GSTCPE-GSTLME ; 5 - CREATE PROCESS
MXELM: MOVC GSTLME R0 ; 4 - LETTER MECHANISM
MOV R0 LINTCAUS ;
MOV R4 LINTRET ; SAVE PROC REL POINTER
MXHWERR0:
MON ERR ; ***TEMPORARY BRAKE
JMPI LINTRET ; RETURN ORIGINATOR ON RECOVERABL
;
;=======================================================================
; PROCEDURE MAKE PROCESS KNOWN TO MONITOR;
MXCRP: ;
MOV PRCID R3 ; GET OWN PROCESS ID
MOV BAS R4 ; GET OWN PROCESS BASE
MON CRP ; INTRODUCE OWN PROCESS TO MONITOR
JMP & S4 MXECP ; ON MISMATCH, DUMP PROCESS
JMP X6 ;
;=======================================================================
; PROCEDURE GET LETTER AND COPY FROM OWN PROCESS;
MXGLET: ;
MON GLET ; GET LETTER FROM POOL
JMP & S4 MXENL ; (NO MORE LETTERS LEFT);
SUB BAS R5 ; RELATIVIZE
MOV R5 X6 ; SAVE LETTER PNT
INCD R5 R6 ; ADVANCE TO NEXT WORDS
MODC 3 ;
MOVM X6 X5 ; PRESET LETTER TYPE, RCVR , SNDR
ADDC -4 R5 ; RE-ESTABLISH REL POINTER
JMP X4 ; RETURN
;FF\f
;=======================================================================
MXINICPU: ; INITIALIZE CPU DRIVEN PROCESS
JMP S6 MXCRP ; CREATE OWN PROCESS
MOVC MXIDPL R6 ;
JMP S4 MXGLET ; GET PRESET IDP LETTER
CLR LTMS4. X5 ; FLAG FREE IDP LETTER;
MOV BAS R2 ; POINT OWN BASE
MOV GSTPTR R5 ; GET ABS POINTER TO THE GST
SUB R2 R5 ; KAKE RELATIVE
MOV R5 MXIGST ; AND SAVE;
MOV GSTMQI.X5 R0 ; GET ABS MQI POINTER
SUB R2 R0 ;
MOV R0 MXIMQI ;
ADDC -MQIELGT R0 ; POINT ONE RECORD BELOW
MOV R0 MXPMQI ;
MOV GSTMQO. X5 R0 ; GET ABS MQO POINTER
SUB R2 R0 ;
MOV R0 MXIMQO ;
ADDC -MQOELGT R0 ; ADJUST TO ONE RECORD BELOW
MOV R0 MXPMQO ;
ADDC GSTCDY R5 ; ADJUST GST POINTER TO START OF
MOV R5 MXICDI ; CHANNEL POINTERS;
ADDC -GSTCDY R5 ; RE-ESTABLISH GST TOP POINTER
MOV GSTMXP.X5 R0 ; GET MUX CHANNEL PGM START ADDR
SVS R3 ; GET CURRENT CPU STATUS
SWP R3 ; RIGHT-ADJUST OWN CPU NMB
XTR R3 3 ; ISOLATE
ADDC 1 R3 ; LET CPU NMB START WITH ONE;
MODN R2 ; COMPENSATE OWN BASE
MOVC CPUIVT+7 R1 ; POINT REL BOTTOM CPY TABLE
MOVC 8 R7 ; FOR I:=1 UNTIL MAX NMB CPU'S
MXIC10: ; DO
INE R7 R3 ; IF NOT COM-CPU
MOV R0 X1 ; THEN POINT CHANNEL START
ADDC -1 R1 ; POINT NEXT ENTRY
SOB R7 MXIC10 ; END INITIATING CPU VECTOR TAB;
CPU ; CPU INTR'PT TO START MUX CPU'S;
MON RCPU ; RESERVE CPU INTERRUPT
MON RTI ; RETURN TO PRIOR PROCESS.
JMP MXCPST ;
;FF\f
;=======================================================================
MXCPST: ; CONTROL ENTERS HERE,
MOVC EXPR R0 ; GET EXPRESS PROCESS PRIORITY
MON INQ ; INCLUDE PROCESS IN QUEUE
JMPI & S4 MXELMI ; (PROCESS NOT KNOWN TO MON);
; WHEN PROCESS INVOKED
MXMQIH: ;
MOV MXIMQI R6 ; GET MQI PNT
IBZ X6 MQIMXI ; IF NO DATA IN MQI
JMP MXMQOH ; THEN GO HANDLE MQO S
MOV MQIBAD.X6 R5 ; GET BUFFER PNT
MON GBS ;(4,6 KEPT) GET BIN SECTION ADDRESS
MOV R3 MXCBSA ; SAVE CURRENT SECTION
MOV BAS R0 ; POINT ABS OWN BASE
MOV X6 R4 ; GET LOG CHAN NMB
IF MQILAD NE 0
SRL R4 MQILAD ; RIGHT ADJUST LOG CHAN NMB
ELSE
XTR R4 MQILAX FI ; ISOLATE LOG CHAN ADDRESS
MOD MXICDI ;
MOV X4 R4 ; GET ABS CST PNT
MOV R4 MXACST ; SAVE ABS CST PNT
SUB R0 R4 ; RELATIVE OWN BASE;
MOV R4 MXICST ; SAVE RELATIVE CST PNT
MOV MQISTA.X6 R1 ; GET CURRENT MQISTATUS
ILO R1 1<MQIBML ; IF NO BUFFER DISCONNECT GENR'TED
JMP MXCPMQ ; THEN BYPASS BUFFER HANDLING
SUB R0 R5 ; MAKE BIN REL OWN BASE;
SVS R7 ; SAVE CURRENT STATUS
MOV CSTCS2.X4 R2 ; GET CHANNEL STATE WORD 2
IBN R2 CSTICO ; IF INPUT CLOSED
JMP MXMI10 ; THEN
LDS R3 ; SWITCH TO BIN SECTION
MOV BINLNK.X5 R4 ; GET ADDRESS OF NEXT BIN
CLR BINLNK.X5 ; FORCE THIS BIN TO BE LAST
ADDC BINSTA R5 ; POINT STATUS WORD
MOVC 1<BINIO X5 ; TO FLAG INPUT BIN;
MOD R0 ;
ADDC -BINSTA R5 ; COMPUTE ABS ADDRESS OF BIN
MODN R0 ;
MOV R5 BINLNK.X4 ; MAINTAIN BIN QUEUE STRUCTURE
LDS R7 ; RETURN TO ORIGINAL SECTION
MXIOLTOA= 10, MXIOLTOB= 0, MXIOLTOC= SL+LI1 ; ;MXIOLTO
;.................................................................
IF MXIOLTO ; :
MOV R7 MXR7TS ; SAVE R7 DURING OLTO TEST :
MOV TSWITCH R7 ; GET OLTO TEST SWITCH :
IF MXIOLTOB EQ 0 ; :
JOZ R7 LOC+4 ; IF TEST SWITCH ON :
MON OLTO ; THEN :
(MXIOLTOC+MXI)<8+MXIOLTOA ; :
OPTREG ; :
ELSE ; :
JOZ R7 LOC+7 ; IF TEST SWITCH ON :
MON OLTO ; FORCE REGISTER DUMP :
(MXIOLTOC+MXI)<8+MXIOLTOA ; :
OPTREG ; :
MON OLTO ; THEN :
(MXIOLTOC+MXI)<8+MXIOLTOA+1 ; ACTIVATE :
MXIOLTOB ; ON LINE TEST OUTPUT; :
FI ; :
MOV MXR7TS R7 ; RE-ESTABLISH R7 CONTENT; :
FI ; :
;................................................................:
JMP MXCPMQ ; END MAINTAINING EMPTY BIN QUEUE;
;FF\f
;-----------------------------------------------------------------------
MXMI10:
IBZ R2 CSTSYN ; IF CHANNEL SETUP TO SYNC
JMP MXASYI ; THEN
;-----------------------------------------------------------------------
MXSYNI: ; SYNC INPUT HANDLING, ENTRY
MOVC 1<GSTREC R0 ; FLAG RECOVERABLE ERROR
MOV R0 LINTCAUS ;
MOVC <:I:> R4
MOV R4 LINTRET
MON ERR
MOV MXIMQI R6 ; GET MQI PNT
JMP MXAI95
;-------------------------------------------------------------------------------
; REGISTERS ENTRY
; R0 OWN BASE
; R1 CURRENT MQI STATUS
; R2 CST STATUS INDICATORS
; R3 BIN MEM SECTION ADDRESS
; R4 REL CST POINTER
; R5 REL BIN ADDRESS
; R6 REL MQI POINTER
; R7 OWN PSW
;
MXASYI: ; ASYNC. BUFFER HANDLING
; THE LINK OF THE BUFFER IS DERIVED
; AND STORED
LDS R3 ; SWITCH TO BUFFERS SECTION
MOVL BINLNK.X5 R23 ; GET LINK AND STATUS OF BUFFER
LDS R7 ; SWITCH BACK
MOV R2 MXCLNK ; SAVE CURRENT LINK
MOV R3 MXCRBS ; SAVE CURRENT BUFFERSTATUS
MXIOLTOA= 20, MXIOLTOB= OPTWRK ; ;MXIOLTO
;.................................................................
IF MXIOLTO ; :
MOV R7 MXR7TS ; SAVE R7 DURING OLTO TEST :
MOV TSWITCH R7 ; GET OLTO TEST SWITCH :
IF MXIOLTOB EQ 0 ; :
JOZ R7 LOC+4 ; IF TEST SWITCH ON :
MON OLTO ; THEN :
(MXIOLTOC+MXI)<8+MXIOLTOA ; :
OPTREG ; :
ELSE ; :
JOZ R7 LOC+7 ; IF TEST SWITCH ON :
MON OLTO ; FORCE REGISTER DUMP :
(MXIOLTOC+MXI)<8+MXIOLTOA ; :
OPTREG ; :
MON OLTO ; THEN :
(MXIOLTOC+MXI)<8+MXIOLTOA+1 ; ACTIVATE :
MXIOLTOB ; ON LINE TEST OUTPUT; :
FI ; :
MOV MXR7TS R7 ; RE-ESTABLISH R7 CONTENT; :
FI ; :
;................................................................:
; STATUS BIT XFER FROM MQI TO INPUT
; BUFFER:
; STUCK TAPE
; HALTED MESSAGE
; TRANSMISSION ERROR
MOVC 0 R2 ; RESET R2 AND BUILD BUFFER STATUS
IBN R1 MQISTC ; IF TAPE STUCK
SETS R2 BINSTP ; THEN SET STUCK TAPE BIT;
XTR R3 BINCNX ; GET BUFFER BYTE COUNT
ADDC CSTHME R4 ; GET CSTHME PNT
;
JON R3 MXAI20 ; IF BUFFER EMPTY
INC X4 ; THEN INCREASE HMSG COUNT
MOV X4 R0 ; GET CURRENT AND PRESET HMSG;
SWP R0 ; PLACE CUR OVER PRESET AND VV;
INE X4 R0 ; IF CURRENT NOT EQ PRESET
JMP MXAI30 ; THEN BYPASS INDIC HANDLE;
SETS R2 BINHMS ; FLAG HALTED MSG IN BIN;
MXAI20: ; END EMPTY BUFFER;
; CLEAR CURRENT HALT.MSG CNT
MOV MXUPBM R0 ; GET UPPER BYTE MASK
AND R0 X4 ; LET ONLY UPP. BYTE REMAIN
MXAI30: ; END OF HALT.MSG BIN ACCOUNTING
MOV MXITEM R6 ; PROVIDE TRMS ERR. BIT MASK
AND R1 R6 ;
INE R6 0 ; IF ANY SET
SETS R2 BINTER ; THEN SET TRANSERROR BIN BIR
SVS R0 ;
MOV MXCBSA R3 ; GET CURRENT SECTION
ADDC BINSTA R5 ; GET STATUS PNT TO CURR.BUF.
LDS R3 ; SWITCH TO BUFFERS SECTION
MODC %; BIN STATUS PUT MASK
1<BINSTP %; STUCK TAPE BIT
+1<BINHMS %; HALTED MESSAGE FLAG
+1<BINTER ; TRANSMISSION ERROR
PUT R2 X5 ; INSERT STATUS BITS IN BIN
LDS R0 ; SWITCH BACK
MOVC 1 R3 ; GET BUFFER CNT
MOV MXACST R4 ; GET ABS CST PNT
ADDC CSTFIB R4 ; CALC ABS CSTFIB PNT
MOD BAS ; ABSOLUTIZE
ADDC -BINSTA R5 ; CALC ABS BIN PNT (FIRST)
MOV R5 R6 ; PROVIDE ABS LAST BIN PNT
MON LNIQ ;(NO REGS) LINK INTO QUEUE
;-------------------------------------------------------------------------------
MXGBF: ; PROVIDE NEW INPUT BUFFER FOR MUX
MOVC 1 R3 ; GET BUFFER COUNT
MON GNIB ; GET INPUT BUFFERS SPECIFIED
JMP & S4 MXGOBF ; GO GET OUTPUT BUFFER
MOV MXCLNK R4 ; GET ABS BUFFER LINK
IEQ R4 0 ; IF ZERO
JMPI S4 MXIERR0 ; THEN INPUT DRIED UP; ****************
SUB BAS R4 ; RELATIVIZE
MOV MXCBSA R2 ;
SVS R1 ; SAVE CURRENT STATUS
LDS R2 ; SWITCH TO CURRENT SECTION
INEP X4 0 ; IF LINK NOT CLEAR
LDS & R1 ; SWITCH BACK
JMPI& S4 MXEIOI ; AND INDICATE ERROR *** TEMPORARY
MOV R5 X4 ; ELSE PUT NEW ABS PNT INTO LINK
LDS R1 ; SWITCH BACK
MXIOLTOA= 30, MXIOLTOB= OPTWRK ; ;MXIOLTO
;.................................................................
IF MXIOLTO ; :
MOV R7 MXR7TS ; SAVE R7 DURING OLTO TEST :
MOV TSWITCH R7 ; GET OLTO TEST SWITCH :
IF MXIOLTOB EQ 0 ; :
JOZ R7 LOC+4 ; IF TEST SWITCH ON :
MON OLTO ; THEN :
(MXIOLTOC+MXI)<8+MXIOLTOA ; :
OPTREG ; :
ELSE ; :
JOZ R7 LOC+7 ; IF TEST SWITCH ON :
MON OLTO ; FORCE REGISTER DUMP :
(MXIOLTOC+MXI)<8+MXIOLTOA ; :
OPTREG ; :
MON OLTO ; THEN :
(MXIOLTOC+MXI)<8+MXIOLTOA+1 ; ACTIVATE :
MXIOLTOB ; ON LINE TEST OUTPUT; :
FI ; :
MOV MXR7TS R7 ; RE-ESTABLISH R7 CONTENT; :
FI ; :
;................................................................:
; STATUS XFER FROM MQISTA TO CST
; TRANSFERRED STATUS IS:
; CHANGED STATUS
; SEND STATUS
; RECEIVE STATUS
; CHANNEL BREAK (ASYNC ONLY)
; RELEASE PULSE STUCK
MXCPMQ: ;
MOV MXICST R4 ;
MOV MXIMQI R6 ;
MOV MQISTA.X6 R2 ; GET MQI(O) STATUS FLAGS
ADDC CSTVF1 R4 ; GET VOLATILE STATUS FLAG PNT
IBNP R2 MQISCH ; IF STATUS CHANGED
IBN & R2 MQIBEB ; AND CHANNEL BREAK
SETS& X4 CSTCBR ; THEN SET CHANNEL BREAK BIT;
; OUTPUT STATUS CHANGE AND
; RELEASE PULSE STUCH HANDLING:
IBZ R2 MQISCH ; IF NO STATUS CHANGE
JMP MXAI70 ; THEN BYPASS OUTPUT STATUS UPDATE
MOD MXOSTM ; PROVIDE INPUT STATUS MASK (PUT)
PUT R2 X4 ; PUT STATUS BITS INTO CST
IBN R2 MQIRGO ; IF REL PLS GT 1 CHAR
SETS X4 CSTRGO ; THEN SET INDICATOR
MXAI70: ; END OF OUTPUT STATUS UPDATE
IBZ R2 MQIRPS ; IF REL.PULSE NOT SUB-STUCK
JMP MXAI90 ; THEN BYPASS REL PULSE CNT
ADDC CSTCS3-CSTVF1 R4 ; CALC CSTCS3 PNT
SBZP R2 MQITXS ; IF SEND STATUS ON
IBZP X4 CSTFLD ; OR (SIMPLEX CHANNEL)
IBZ & R2 MQIRXS ; AND RECEIVE STATUS ON)
JMP & MXAI80 ; THEN
DEC CSTSCN-CSTCS3.X4 ; DECR REL PLS SUPER CNT
MOV CSTSCN-CSTCS3.X4 R0 ; GET CURRENT CNT
XTR R0 8 ; ISOLATE REL PLS CNT BYTE
JON R0 MXAI90 ; IF NONZERO,THEN BYPASS STUCK SET
ADDC CSTVF1-CSTCS3 R4 ; ELSE CALC CSTVSF PNT
SETS X4 CSTRPS ; SET REL PLS STUCK INDICATOR
IBN R2 MQIRPV ; IF REL PLS CURRENT ON
SETS X4 CSTRPV ; SET REL PLS VALUE TO ON
ADDC CSTCS3-CSTVF1 R4 ; RESTORE CSTCS3 PNT
MXAI80: ; PRESET STUCK REL PLS CNT
ADDC CSTSCN-CSTCS3 R4 ; RESTORE CSTSCN PNT
MOVC MXSTCP X4 ; PRESET STUCK REL PLS CNT BYTE
MXAI90: ; END OF REL PLS HANDLING
SETS X6 MQIIDP ; THEN SET MQI READY FOR IDP;
;-----------------------------------------------------------------------
MXAI95:
MOV MXICST R7 ; THEN GET CURRENT CST PNT :
MOV R7 OPTCST+STRT; SAVE IN FILE DECLARATI:
MXIOLTOA= 40, MXIOLTOB= OPTCST, MXIOLTOC= ML ; ;MXIOLTO
;.................................................................
IF MXIOLTO ; :
MOV R7 MXR7TS ; SAVE R7 DURING OLTO TEST :
MOV TSWITCH R7 ; GET OLTO TEST SWITCH :
IF MXIOLTOB EQ 0 ; :
JOZ R7 LOC+4 ; IF TEST SWITCH ON :
MON OLTO ; THEN :
(MXIOLTOC+MXI)<8+MXIOLTOA ; :
OPTREG ; :
ELSE ; :
JOZ R7 LOC+7 ; IF TEST SWITCH ON :
MON OLTO ; FORCE REGISTER DUMP :
(MXIOLTOC+MXI)<8+MXIOLTOA ; :
OPTREG ; :
MON OLTO ; THEN :
(MXIOLTOC+MXI)<8+MXIOLTOA+1 ; ACTIVATE :
MXIOLTOB ; ON LINE TEST OUTPUT; :
FI ; :
MOV MXR7TS R7 ; RE-ESTABLISH R7 CONTENT; :
FI ; :
;................................................................:
IBN X6 MQIEND ; IF LAST MQI
MOV MXPMQI R6 ; THENPRESET MQI PNT
ADDC MQIELGT R6 ; INCREMENT TO NEXT MQI
MOV R6 MXIMQI ; AND SAVE MQI PNT
LDM 2#110 ; OPAN I/O WINDOW
LDM 2#111 ; CLOSE WINDOW
JMP MXMQIH ;
;FF\f
;=======================================================================
MXMQOH: ; HANDLE MQO-ELEMENT
MOV MXIMQO R6 ; GET MQO PNT
IBZ X6 MQOMXI ; IF ELEMEMT EMPTY
JMP MXQLEM
MOV MQOFLG.X6 R4 ; GET LOG CHAN NMB
IF MQOLAD NE 0
SRL R4 MQOLAD FI ; RIGHT ADJUST LOG CHAN NMB
MOD MXICDI ; FROM CDI
MOV X4 R7 ; GET ABS CST PNT
MOV R7 MXACST ; SAVE ABS CSTPNT
MODN BAS ; RELATIVIZE
ADDC CSTCS2 R7 ; CALC REL CSTCS2 PNT
IBZ X7 CSTSYN ; IF CHAN SETUP FOR SYNC
JMP MXASYO ; THEN
;-----------------------------------------------------------------------
MXSYNO: ; SYNC OUTPUT HANDLING,ENTRY
MOVC 1<GSTREC R0 ; FLAG RECOVERABLE ERROR
MOV R0 LINTCAUS ;
MOVC <:O:> R4
MOV R4 LINTRET
MON ERR
JMP MXAO95 ; END SERVING SYNC OUTPUT
;-----------------------------------------------------------------------
; WRITE: FOB.CST, MXIMQO
;
MXASYO: ; ASYNC OUTPUT HANDLING, ENTRY
MOV MQOSTA.X6 R2 ; GET MQO STATUS
IBN R2 MQOBML ; IF BIN MISLINKED
JMPI S4 MXEIOI ; THEN CALL ERROR PROCESSING;
ADDC CSTSCN-CSTCS2 R7 ; CALC R.P. SUPER CNT PNT
SBZ R2 MQOBDS ; IF NO BUFFER DISCONNECTED
IBN R2 MQOIBD ; OR DE-QUEUEING INHIBITED
JMP MXAO80 ; THEN BYPASS BUFFER HANDLING;
; HANDLE DISCONNECTED BUFFER
MOVC MXSTCP X7 ; PRESET REL.PULS STUCK SUPCNT
MOV MQOBAD.X6 R5 ; GET ABS BIN PNT
MOV R5 MXCLNK ; SAVE BUFFER LINK
MOVC 1 R3 ; NMB OF BINS TO BE RELEASED
MOV MXACST R4 ; POINT (ABS) CURRENT CST RECORD
ADDC CSTFOB R4 ; CALC ABS CSTFOB PNT
MON LNOQ ;(NONE KEPT) LINK BIN OUT OF OUTPUT QUEUE
JMPI & S4 MXEIOI ; (LESS N BINS LEFT ERROR);
MOD MXCLNK ; PROVIDE MQI BIN ADDRESS
INE R5 0-0 ; IF NOT IDENTICAL TO FOB.CST
JMPI & S4 MXEIOI ; THEN CP SYSTEM ERROR;
MON RNBF ; RELEASE BIN TO FREE POOL;
JMP MXAO90 ; BYPASS DRY-UP HANDLING
MXAO80: ; ELSE
IBNP R2 MQOOBE ; IF OUTPUT BUFFER EMPTY
ADDC CSTVF1-CSTSCN R7 ; POINT DIRECT CSTVSF FIELD
SETS X7 CSTDRY ; FLAG CHAN DR!-UP;
MXAO90: ; END OF DRY-UP CHANNEL CHECK;
MXAO95: ;
MOV MXIMQO R6 ; GET CURRENT MQO ELEMENT
XTR X6 1<MQOEND ; CLEAR MQOFLG, EXCEPT MQOEND
IBN X6 MQOEND ; IF MQO LAST IN ARRAY
MOV MXPMQO R6 ; THEN PRESET
ADDC MQOELGT R6 ; TO START OF ARRAY
MOV R6 MXIMQO ; SAVE NEW MQO PNT
LDM 2#110 ; OPEN I/O WINDOW
LDM 2#111 ; CLOSE AGAIN
JMP MXMQOH ; GO SERVE NEXT MQO
;-----------------------------------------------------------------------
MXQLEM: ;
MOV MXIMQI R6 ; GET CURRENT MQI PNT
IBN X6 MQIMXI ; IF MORE MQI'S
JMP MXMQIH ; THEN GO SERVE;
MON RCPU ; RESERVE CPU INTERRUPT
MOVC IDLE R0 ; GET PROCESS IDLE STATE
MON INQ ; SET PROCESS IDLE
JMPI & S4 MXELMI ; (PROCESS NOT KNOWN TO MON);
MOV MXIDPL R5 ; GET REL IDP
SOZ LTMS4. X5 ; IF LETTER MXI PROPERTY
JMP MXQL50 ; THEN
DEC LTMS4. X5 ; FLAG LETTER BUSY
MOVC IDPLPN R0 ; SET UP IDP AS RECEIVER
MOV R0 LTRCV. X5 ;
MOVC MXILPN R0 ; SET UP OWN PROCESS ID
MOV R0 LTSND. X5 ; AS SENDER.
ADD BAS R5 ; MAKE POINTER ABS
MON SLET ; SEND LETTER
JMPI& S4 MXELMI ; (LETTER DATA ERROR);
MON SCH ; ENSURE RECEIVER ACTIVATION
JMP MXCPST ; ON CPU INT GO TO MQI HANDLING
MXQL50: ; ELSE
MON RTI ; RETURN TO INTERRUPTED PROC
JMP MXCPST ; ON INTERRUPT, START MMQ HANDLING
;-----------------------------------------------------------------------
MXGOBF: ;
JMPI S4 MXENBI ; GET BUFFER FOR INPUT BY
JMPI S4 MXIERR0 ; *** TEMPORARY STOP *** ***
; GET INPUT BUFFER BY PREEMPTING
; OUTPUT CHANNEL.
; THIS WILL NOT BE IMPLEMENTED,
; UNTIL PREEMPTION PROCEDURE IS
; SETTLED
;FF\f
;=======================================================================
; LETTER DRIVEN PROCESS
;-----------------------------------------------------------------------
MXINILETT: ; INITIATE MXI SUBMODULE,
; FIRST PRESET RTC LETTER
JMP S6 MXCRP ; CREATE OWN PROCESS
MOVC MXRTCL R6 ;
JMP S4 MXGLET ; GET PRESET RTC LETTER
MOVC 100/10 R0 ; SET UP RTC DELAY 100 MSEC
MOV R0 LTMS4. X5 ;
ADD BAS R5 ; MAKE LETTER POINTER ABS
MON SLET ; START MXI-RTC ACTIVATION
JMPI& S4 MXELMI ; (LETTER MECH ERROR);
MOV BAS R2 ; POINT ABS OWN BASE
MOV GSTPTR R5 ; GET ABS GST POINTER
SUB R2 R5 ; MAKE RELATIVE
MOV R5 MXGST ; AND SAVE;
ADDC GSTCDY R5 ; POINT TO START OF CHANNEL
MOV R5 MXCDI ; CDI PART OF GST;
ADDC GSTNCC-GSTCDY R5 ; POINT LOC WITH NMB CONNECTED
MOV R5 MXNCC ;
ADDC GSTNSC-GSTNCC R5 ; NMB OF SYNCHRONEOUS
MOV R5 MXNSC ;
ADDC GSTNAC-GSTNSC R5 ; NMB OF ASYNCHRONEOUS
MOV R5 MXNAC ;
MON RTI ;
;FF\f
;=======================================================================
; LTU RELATED SUBCOMMAND-EXECUTION IN MXI SUBMODULE
;
; THE SUBCOMMANDS HANDLED ARE:
;
; SETUP CHANNEL PARAMETERS
; OPEN INPUT CHANNEL
; OPEN OUTPUT CHANNEL
; CLOSE INPUT CHANNEL
; CLOSE OUTPUT CHANNEL
;
; R7 POINTS TO LETTER (REL)
;
; CONTROL ENTERS HERE WHEN A LETTER FROM CMI IS RECEIVED
;
;-----------------------------------------------------------------------
MXAWLT: ;
MON WL ; AWAIT NEXT LETTER
MXGOTL: ;
MOV R7 MXLETT ; SAVE REL POINTER TO LETTER
MOV LTTYP. X7 R0 ; GET PRIORITY OF LETTER
ILO R0 EXPR ; IF SAME OR HIGHER CPU DRIVEN
JMP MXGO10 ; THEN
MOVC ORDN R0 ; FORCE LETTER DRIVEN PROCESS
MON INQ ; TO BE DOWNGRADED;
JMPI & S4 MXELMI ; (LETTER MECH ERROR);
MOV MXLETT R7 ; RE-ESTABLISH LETTER POINTER
MXGO10: ; END DOWNGRADING PROCESS PRIO;
MOVC 0 R0 ;
MOV R0 MXCDT ; FLAG NO CDT-RECORD RESERVED MXI
MOV LTRCV. X7 R4 ; GET SENDER OF THIS LETTER
IEQ R4 RTCLPN, JMP MXLRTC ; IF FROM RTC THEN GO SERVE
IEQ R4 CMILPN, JMP MXLCMI ; IF FROM CMI THEN GO SERVE
IEQ R4 ODPLPN, JMP MXLODP ; IF FROM ODP THEN GO SERVE;
JMPI S4 MXEUXI ; ELSE UNRECOVERABLE ERROR;
JMP MXAWLT ; GO WAIT FOR VALID LETTER
;-----------------------------------------------------------------------
MXINVT: ;
JMP S4 MXCPE ; SUB-COM'D TYPE 0 - SHOULD HAVE
; FILTERED BY CMI;
;-----------------------------------------------------------------------
; COMPLETION CODE GENERATION
; --------------------------
MXCPE: MODC CMCCPE-CMCCME ; 6 - CP ERROR DETECTED
SYNCERR: ; *** TEMPORARY BRAKE *** SYNC
MXCME: MODC CMCCME-CMCATV ; C - COMMAND ERROR
MXATV: MOVC CMCATV-MXLTOK R2 ; E - ATTEMPTED VIOLATION
MOV MXCST R6 ; GET CURRENT CST PNT
ADDC CSTVF1 R6 ; CALC CURRENT VSF PNT
SETS X6 CSTSUE ; INDICATE CHANNEL SETUP ERROR
MOD MXGST ;
MOV R4 GSTSBR ; SAVE LOC POINTER AS REFERENCE
MOD R2 ; CONTINUE COMPL. CODE GENERATION
MXGO50:
MOVC MXLTOK R2 ; ON NORMAL RETURN GET OK-CODE
MOV MXCDT R7 ; POINT CURRENT CDT RECORD;
JOZ R7 MXGO90 ; IF CDT RECORD RESERVED MXI
ADDC CDNCT R7 ; POINT CDT INDICATORS
RELS X7 CDUSED ; RELEASE CDT RECORD TO MUX;
MOV R7 OPTCDT+STRT; SAVE IN FILE DECLARATI:
MXIOLTOA=100, MXIOLTOB= OPTCDT, MXIOLTOC= MN ; ;MXIOLTO
;.................................................................
IF MXIOLTO ; :
MOV R7 MXR7TS ; SAVE R7 DURING OLTO TEST :
MOV TSWITCH R7 ; GET OLTO TEST SWITCH :
IF MXIOLTOB EQ 0 ; :
JOZ R7 LOC+4 ; IF TEST SWITCH ON :
MON OLTO ; THEN :
(MXIOLTOC+MXI)<8+MXIOLTOA ; :
OPTREG ; :
ELSE ; :
JOZ R7 LOC+7 ; IF TEST SWITCH ON :
MON OLTO ; FORCE REGISTER DUMP :
(MXIOLTOC+MXI)<8+MXIOLTOA ; :
OPTREG ; :
MON OLTO ; THEN :
(MXIOLTOC+MXI)<8+MXIOLTOA+1 ; ACTIVATE :
MXIOLTOB ; ON LINE TEST OUTPUT; :
FI ; :
MOV MXR7TS R7 ; RE-ESTABLISH R7 CONTENT; :
FI ; :
;................................................................:
MXGO90: ; END RELEASING CDT RECORD;
MXIOLTOA= 105, MXIOLTOB=OPTWRK ; ;MXIOLTO
;.................................................................
IF MXIOLTO ; :
MOV R7 MXR7TS ; SAVE R7 DURING OLTO TEST :
MOV TSWITCH R7 ; GET OLTO TEST SWITCH :
IF MXIOLTOB EQ 0 ; :
JOZ R7 LOC+4 ; IF TEST SWITCH ON :
MON OLTO ; THEN :
(MXIOLTOC+MXI)<8+MXIOLTOA ; :
OPTREG ; :
ELSE ; :
JOZ R7 LOC+7 ; IF TEST SWITCH ON :
MON OLTO ; FORCE REGISTER DUMP :
(MXIOLTOC+MXI)<8+MXIOLTOA ; :
OPTREG ; :
MON OLTO ; THEN :
(MXIOLTOC+MXI)<8+MXIOLTOA+1 ; ACTIVATE :
MXIOLTOB ; ON LINE TEST OUTPUT; :
FI ; :
MOV MXR7TS R7 ; RE-ESTABLISH R7 CONTENT; :
FI ; :
;................................................................:
LDM 2#100 ; ALLOW CPU AND I/0 INT
MOV MXLETT R5 ; GET REL LETTER PNT
MOV R2 MXCMP.X5 ; PUT RETURN CODE INTO LETTER
ADD BAS R5 ; ABSOLUTIZE LETTER PNT
MON SLET ; SEND LETTER
JMPI & S4 MXELMI ; ON LETTER CONTROL ERROR
JMP MXAWLT ; GO AWAIT NEXT LETTER
;FF\f
;=======================================================================
;
; CASE SERVE RTC LETTER
;
; THIS PROCEDURE WILL BE USED TO ESTABLISH A REGULAR 100 MSEC
; SERVICE FROM THE CPU-INTERRUPT DRIVEN PART OF THE MXI SUBMODULE
; OF CURRENTLY ACTIVE MQI/MQO'S. THIS IS DONE VIA A REGULAR SCHED-
; ULING DONE BY THE RTC SUBMODULE EACH 100 MSEC WHEREUPON THE
; OTHER PART IS ENVOKEN BY A CPU INTERRUPT.
;
; WRITE: TIMER FIELD OF DEDICATED RTC LETTER
;
; CALLED BY: MAIN LINE
; CALL TO: MXAWLT OF MAIN LINE
;
;==========================U_RNAE_DU_RNAE_DU_RNAE_DU_RNAE_DU_RNAE_DU_RNAE_DU_RNAE_DU_RNAE_DU_RNAE_DU_RNAE_DU_RNAE_DU_RNAE_DU_RNAE_DU_RNAE_DU_RNAE_DU_RNAE_DIVE
LDM 2#111 ; TO ALLOW MQI/MQO BEING DONE;
MOVC 100/10 R0 ; SET UP DELAY OF 100 MSEC
MOV R0 LTMS4.X7 ; BEFORE NEXT WAKE-UP
MON SLET ; ACTIVATE RTC-MXI AGAIN
JMPI& S4 MXELMI ; (LETTER MECH ERROR);
JMP MXAWLT ; RETURN MAIN LINE TO SERVE;
;
;FF\f
;=======================================================================
;
; CASE SERVE ODP LETTER
;
; PRE-EMPT CHANNEL
;
; READ: MXCDI
; WORK: MXCST, MXCDT
; WRITE: (FOB, LOB, NOB).CST, -.CDT
;
; CALLED BY: MAIN LINE
; CALL TO: MXGO50 (SUCCESFULL), MXATV, MXCME, MXCPE (ON ERRORS)
;
;-----------------------------------------------------------------------
MXLODP:
MOVC CMILPN R2 ; FORCE CMI TO BE
MOV R2 LTRCV. X7 ; RECEIVER;
MOV BAS R2 ; GET OWN BASE
MOV LTMS3. X7 R4 ; GET OFR DAT1,DAT2 FIELDS
SRL R4 8 ; ISOLATE CHANNEL NMB;
MOD MXCDI ; POINT CORRESPONDING LIB IN GST
MOV X4 R4 ; GET ABS CST-RECORD ADDRESS
SUB R2 R4 ; MADE REL OWN BASE;
MOV R4 MXCST ;
MOV CSTCDT.X4 R7 ; GET ABS ASSOCIATED CDT-RECORD
SUB R2 R7 ; FORCE REL OWN BASE;
MOV R7 MXCDT ; SAVE FOR LATER
ADDC CDNCT R7 ; POINT RESERVATION FLAGS
MXOD10: RESS X7 CDUSED ; DO UNTIL CDT-RECORD FREE
JMP MXOD10 ; WAIT FOR MUX;
LDM 2#101 ; OPEN CPU INTR'PT WINDOW
CPU ; FORCE CPU-INTR'PT DRIVEN ACTIVE
LDM 2#111 ; TO ALLOW MQI/MQO BEING DONE;
MOV CSTNOB.X4 R3 ; GET NMB OF OUTBOUND BINS
ADD R2 R4 ; RE-ESTAB ABS CST-REC ADDR
ADDC CSTFOB R4 ; AND POINT QUEUE CONTROL BLOCK
MON LNOQ ; RELEASE BINS FROM QUEUE
JMPI& S4 MXCPEI ; (NOT NOB.CST BINS RETURN);
MON RNBF ; RELEASE BINS TO FREE POOL;
MOVC 1 R3 ; SET UP FOR GETTING ONE OUTPUT BIN
MON GNOB ; GET OUTPUT BIN
JMPI & S4 MXATVI ; (NO BINS AVAIL);
MOVC 1 R3 ; RE-ESTAB DUMMY BIN COUNT
MOV MXCST R4 ; POINT REL CURRENT CST REC
MOD BAS ;
ADDC CSTFOB R4 ; ABS OUTPUT BIN QUEUE CONTROL
MON LNIQ ; ENTER (EMPTY) BIN AS OUTPUT
MON GBS ; GET ACTUAL MEM SECTION
MOVC 15 R0 ;
CLRS R3 R0 ; FORCE MUX PSW 2#011
MOV MXCDT R7 ; POINT CURRENT CDT RECORD
MOV R3 CDOMSA.X7 ; UPDATE BIN POINTER
MOV R5 CDOBUF.X7 ;
CLR CDOCCA.X7 ; FLAG ALL CHARS OUTPUTTED
CLR CDOSTA.X7 ; RESET OUTPUT STATUS
MOVC 1<MQOBNA R0 ; FLAG BIN NOT AVALABLE
MOV R0 CDOEST.X7 ;
JMP MXGO50 ; NORMAL RETURN TO CMI
;FF\f
;=======================================================================
;
; CASE SERVE CMI LETTER
;
; READ: MXNCC, MXCDI
; WRITE: NCT.CDT(CDUSED), MXCST, MXCDT
;
; CALLED BY: MAIN LINE
; CALL TO: MXSTUP, MXOPIC, MXCLIC, MXOPOC, MXCLOC, MXCPE(ON ERROR)
;-----------------------------------------------------------------------
MXLCMI: ;
MOV BAS R0 ; POINT ABS OWN BASE
MOV LTMS2. X7 R5 ; GET SUB COMD PNT
SUB R0 R5 ; RELATIVIZE
MOV SBBTYP/2.X5 R3 ; GET SUB-COM'D TYPE
IF (SBBTYP AN 1) EQ 0
XTR R3 8 ; ISOLATE SUB-COM'D TYPE ALONE
ELSE
SRL R3 8 FI ;
MOV SBBLOG/2.X5 R2 ; GET LOGICAL CHANNEL NMB
IF (SBBLOG AN 1) EQ 0
XTR R2 8 ; ISOLATE CHANNEL NMB;
ELSE
SRL R2 8 FI ;
MOV MXNCC R4 ; POINT LOC WITH CONNECTED
IHS R2 X4 ; IF REQUESTED LOG CHANNEL INV
JMP S4 MXCPE ; THEN CP ERROR;
MOV R2 R4 ; GET LOG CHAN NMB TO INDEX REG
MOD MXCDI ; FROM CDI
MOV X4 R6 ; GET ABS CUR CST PNT
SUB R0 R6 ; FORCE RELATIVE
MOV R6 MXCST ; AND SAVE REL CURRENT CST;
MOV CSTCDT.X6 R7 ; GET ABS CDT PNT
SUB R0 R7 ; FORCE RELATIVE OWN BASE;
MOV R7 MXCDT ; SAVE CURRENT CDT-REC POINTER
ADDC CDNCT R7 ; POINT CDT WORD WITH RESERVE BIT
MXLC50: RESS X7 CDUSED ; DO UNTIL CDT RECORD RELEASED
JMP MXLC50 ; WAIT FOR CDT FREE;
LDM 2#101 ; OPEN CPU INTR'PT WINDOW
CPU ; FORCE lPu-INTR'PT DRIVEN ACTIVE
LDM 2#111 ; TO ALLOW MQI/MQO BEING DONE;
IHS R3 MXCMAX ; IF TYPE OUT OF RANGE
JMP S4 MXCPE ;
MOD R3 ;
JMPI MXCSTY ; THEN GO TO CASE OF TYPE
;FF\f
;=======================================================================
; SETUP CHANNEL PARAMETERS
;
; . CHANNEL MUST BE IN A CLOSED STATE (INPUT AND OUTPUT CLOSED);
; . THE CST IS FILLED WITH CHANNEL SETUP PAREMETERS.
; . ALPHABET CONVERTION TABLE REFERENCE INSERTED IN CST FOR IDP USE
; . THE ASSOCIATED LTU IS DISABLED AND FILLED WITH A TRANSLATION
; OF THE CHANNEL SETUP PARAMETERS.
; . THE CDT WILL BE UPDATED EXCEPT FOR THE LINK AND TIMER FIELDS
; . THE CHANNEL IS DECLARED SETUP.
;
; REGISTERS CALL
; R5 SUBCOMMAND (TYPE, SEQ.NMB, ETC...)
; R6 REL TOP OF CST
; R7 NCT.CDT POINTER
;
; READ: MXGST, MXNAC, MXSUCS-CHAIN, MXSPAC, MXRPAT, MXIMCX,
; MXDMOP, MXCST, (CS2,CS3).CST-INDICATORS
; WORK: MXMOD0, MXMOD1, MXR7SV
; WRITE: (CS1, CS2, CS3, TTA).CST, CDT-RECORD, (BYTE 0 & 1).LTU
;
; CALLED BY: MXLCMI
; CALL TO: MXGO50 (SUCCESFULL), MXATV, MXCME, MXCPE (ON ERRORS)
;
;-----------------------------------------------------------------------
MXSTUP: ; CHANNEL PARAMETER SETUP, ENTRY
MOV CSTCS2.X6 R2 ; GET OPEN/CLOSE CST STATUS WORD
SBN R2 CSTOCO ; IF OUTPUT
IBN R2 CSTICO ; OR INPUT OPEN
JMPI S4 MXATVI ; THEN INDICATE VIOLATION;
IBN X7 CDOPEN ; IF EITHER IN/OUTPUT CHANNEL OPN
JMPI S4 MXCPEI ; THEN MXI CP ERROR;
;
MOV R6 R4 ;
ADDC CSTCS1 R4 ; GET DEST PNT
ADDC SBCSU1 R5 ; GET SOURCE PNT
MODC SBCSUC ; GET WORD CNT
MOVM X5 X4 ; INSERT SUBCOMMAND INTO CST
ADDC (CSTCS2-CSTCS1)-SBCSUC R4 ; POINT DIRECT INDIC IN CSTCS2
RELS X4 CSTICO ; FORCE CHANNEL CLOSED
RELS X4 CSTOCO ; FOR INPUT/OUTPUT
RELS X4 CSTCSU ; FLAG CHANNEL BEING SET-UP;
MOVL CSTCS1.X6 R12 ; GET JUST-INSTALLED CHAN STATUS
MXIOLTOA=150, MXIOLTOB= 0 ; ;MXIOLTO
;.................................................................
IF MXIOLTO ; :
MOV R7 MXR7TS ; SAVE R7 DURING OLTO TEST :
MOV TSWITCH R7 ; GET OLTO TEST SWITCH :
IF MXIOLTOB EQ 0 ; :
JOZ R7 LOC+4 ; IF TEST SWITCH ON :
MON OLTO ; THEN :
(MXIOLTOC+MXI)<8+MXIOLTOA ; :
OPTREG ; :
ELSE ; :
JOZ R7 LOC+7 ; IF TEST SWITCH ON :
MON OLTO ; FORCE REGISTER DUMP :
(MXIOLTOC+MXI)<8+MXIOLTOA ; :
OPTREG ; :
MON OLTO ; THEN :
(MXIOLTOC+MXI)<8+MXIOLTOA+1 ; ACTIVATE :
MXIOLTOB ; ON LINE TEST OUTPUT; :
FI ; :
MOV MXR7TS R7 ; RE-ESTABLISH R7 CONTENT; :
FI ; :
;................................................................:
IBZP R2 CSTALP ; IF ALPHABETH ITA-2
IBN R2 CSTSYN ; AND SYNCHRONEOUS CHANNEL
JMPI S4 MXATVI ; THEN FLAG VIOLATION ATTEMPT;
IF CSTLAD NE 0
SRL R1 CSTLAD ; ISOLATE LOGICAL CHAN NMB
ELSE
XTR R1 CSTLAX FI ;
MOV MXNAC R4 ;
IBZP R2 CSTSYN ; IF ASYNCHRONEOUS LINE
IHS R1 X4 ; AND LOG CHAN WITHIN SYNC
JMPI S4 MXATVI ; THEN VIOLATION ATTEMPT
IBNP R2 CSTSYN ; IF SYNCHRONEOUS LINE
ILO R1 X4 ; AND WITHIN ASYNC RANGE
JMPI S4 MXATVI ; THEN FLAG VIOLATION ATTEMPT;
IBN R2 CSTALP ; IF ITA5 ALPHABET SPECIFIED
MODC GST55-GST25L ; ADD TABLE DIFFERENCE
MOD MXGST ; FROM GST
MOV GST25L R5 ; GET XLATE TABLE PNT
MOV R5 CSTTTA.X6 ; SAVE TABLE PNT IN CST
MOV CSTCS1.X6 R1 ; GET PHYSICAL CHAN ADDRESS
IF CSTPAD NE 0
SRL R1 CSTPAD ; RIGHT ADJUST PHYSICAL ADDRESS
ELSE
XTR R1 CSTPAX FI ; ISOLATE PHYSICAL ADDRESS
ILO R1 #10 ; IF PHYSICAL CHAN LESS #10
JMPI S4 MXATVI ; THEN FLAG VIOLATION ATTEMPT;
; *** HERE IT MIGHT BE CHECKED THAT NOT TWO CHANNELS AS IDENTICAL ***
IBZ R2 CSTSYN ; IF SETUP DOES NOT SPEC SYNC CHAN
JMP MXST50 ; THEN HANDLE ASSYNC
JMP S4 SYNCERR ; *** TEMPORARY BRAKE *** SYNC
MXST50:
MXST51: SIO R4 R1 ; READ MODE 0 BYTE
IBN R4 LTASYS ; IF SYNC BIT SET
JMPI S4 MXATVI ; INDICATE VIOLATION
SETS R4 LTADSS ; SET CHANNEL DISABLE BIT
SETS R4 LTARSS ; SET CHANNEL RESET BIT
CIO R4 R1 ; WRITE MODE 0 BYTE
MOV R1 MXPHY ; SAVE LTU PHYSICAL ADDRESS
MOVC MXASYW R0 ; GET ASYNC LTU RESET WAIT CNT
MXST70: SOB R0 MXST70 ; WAIT FOR ASYNC LTU TO RESET
MOVC MXMOD0 R0 ; PRESET LTU SETUP AREA
MOVC MXMOD1 R1 ; GET LTU MODE 1 PNT
MOVC 0 X0 ;
MOVC 0 X1 ;
;FF\f
; SINGLE BIT FIELD SETUP
MOV CSTCS3.X6 R3 ;
IBN R2 CSTALP ; SET CHARACTER LENGTH
SETS X1 LTACLS ;
IBN R3 CSTFLD ; IF FULL DUPLEX
SETS X1 LTAFDS ; SET FULL DUPLEX DESIGN
; MULTIPLE BIT FIELD SETUP
MOVC MXSUCS R4 ; DO WHILE FIELDS TO SERVE
MXST80:
MOV MXCTL. X4 R2 ; GET CONTROL WORD
XTR R2 4 ; GET CST WORD DESIG
MOD R2 ;
MOV CSTCS1.X6 R3 ; GET SELECTED CST WORD
MOV MXMSK. X4 R2 ; GET FIELD MASK
AND R2 R3 ; ISOLATE FIELD
MOV MXCTL. X4 R2 ;
SRL R2 4 ;
MOD R2 ;
SRL R3 0-0 ; RIGHT ADJUST FIELD
MOV MXVAL. X4 R2 ; GET VALIDITY TEST MASK
MOD R3 ; MOD WITH VALUE
IBZ R2 0-0 ; IF VALUE POINTS TO NONSET BIT
JMPI S4 MXCMEI ; THEN VALUE IS INVALID
ADDC MXTAB R3 ; POINT REL FIELD DESCRIPTOR
ADD R4 R3 ; POINT BASE REL
MOV MXCTL. X4 R2 ; GET CONTROL
SRL R2 8 ; ISOLATE LTU MODE BYTE DESIG
MOD R2 ; USE MODE BYTE DESIGNS DISPLACE
IOR X3 X0 ; INSERT CONVERTED FIELD INTO BYTE
SOZP MXLNK. X4 ; IF NOT LAST FIELD DESCRIPTOR
MOV MXLNK. X4 R4 ; THEN POINT NEXT ENTRY
JMP MXST80 ; END DO WHILE FIELDS TO SERVE;
;
MOV CSTCS3.X6 R1 ; GET BAUDRATE
IF CSTBRT NE 0
SRL R1 CSTBRT FI ; RIGHT ADJUST BAUDRATE FIELD
XTR R1 CSTBRX ; ISOLATE
IGE R1 MXMESP ; IF MED SPEED CHANNEL
MODC MX05SP-MX30SP ; PREP MED.SPD.HLT MSG CNT
MOVC MX30SP R2 ; GET LOW SPEED HLT. MSG BIN CNT
MOV R2 CSTHME.X6 ; PUT MSG HALTED PRESET CNT IN CST
;-----------------------------------------------------------------------
; INSTALL PARAMETERS IN CDT
; AT CHANNEL SETUP, CDT IS PRESET
MOV R7 R0 ; GET PNT TO CDT (MXTYP)
ADDC CDPCA-CDNCT R0 ; GET PNT TO CDT (MXTIM)
MOV R0 R2 ;
ADDC 1 R2 ; GET CDT(MXTYP+1) REL PNT
MOVC 0 X0 ; CLEAR CDT(MXTYP)
MODC CDTELGT-17-(CDPCA-CDLINK)
MOVM X0 X2 ; CLEAR MXTIM TO MXOSTA
MOVM X0 X2
MOV MXSPAC R2 ; GET THE PRESET BLOCK COUNT
MOV R2 CDSPAC-CDNCT.X7 ; PRESET STUCK TAPE COUNT FIELDS;
MOV MXRPAT R2
MOV R2 CDRPAT-CDNCT.X7 ; PRESET REL.PLS COUNT FIELDS
MOV MXIMCX R2 ; INPUT BUFFER PRESET VALUE
MOV R2 CDIMCX-CDNCT.X7 ;
; ; TRANSFER MODE OF OPER FROM CST
MOV CSTCS2.X6 R0 ; GET MOP FROM CST
MOV R0 R3 ;
IF CSTMOP NE 0
SRL R0 CSTMOP FI ; RIGHT-ADJUST CST MODE WORD
XTR R0 CSTMOX ; ISOLATE CST MODE OF OPERATION
IHS R0 MXDMAX ; IF SPECIFIED MODE OUTSIDE RANGE
JMPI S4 MXATVI ; THEN VIOLATION ATTEMPT;
IBN R3 CSTEDC ; IF SYNCHRONEOUS CHAN WITH EDC
ADDC 1<CSTMOP R0 ; THEN INCREASE MODE FLAG;
MOD R0 ; USE TABLE LOOK-UP
MOV MXDMOP R0 ; TO GET CDT MODE;
IF CDMOP NE 0
SLL R0 CDMOP FI ; THEN POSITION MODE FIELD;
IOR R0 X7 ; INSERT MOP INTO CDT(MXTYP)
MOVC MXLSBD R3 ; GET LOW SPEED BUF DISCON. TIME
IGE R1 MXMESP ; IF CHANNEL IS MED SPEED
MOVC MXMSBD R3 ; THEN GET MED.SP. BUF DISCON TIME
MOV R3 CDPBCT-CDNCT.X7 ; PNT IN CDT (MXPBCT)
MOV R3 CDBCT-CDNCT. X7 ; PNT IN CDT (MXBCT)
MOV CSTCS3.X6 R4 ; GET BLK LGT STATUS WORD
IF CSTBLT NE 0
SRL R4 CSTBLT FI ; RIGHT ADJUST BLK LGT FIELD
XTR R4 CSTBLX ; ISOLATE BLK LGT FIELD
MOV MXBLKT.X4 R1 ; GET CONVERTED BLOCKLENGTH
MOV R1 CDOPBC-CDNCT.X7 ; PRESET BUFFER CONNECT TIME
MOV R1 CDOBLC-CDNCT.X7 ; CURRENT VALUE AS WELL;
MOVC 1<MQOBNA R0 ; FORCE OUTPUT IN DRIED UP STATE
MOV R0 CDOEST-CDNCT.X7 ; FOR THIS CHANNEL
SVS R0 ; GET OWN PSW
MOVC 15 R1 ;
CLRS R0 R1 ; FORCE MUX PSW 2#011
MOV BAS R1
ADD R7 R1 ; SIMULATE EMPTY BIN BY USING
ADDC CDOSTA-CDNCT R1 ; INTO OWN CDT-RECORD;
MOVL R01 CDOMSA-CDNCT.X7 ;
MOVC 2 R3 ; SET UP TO GET MUX IDLE BINS
MOV R7 MXR7SV ; SAVE PNT
MON GNIB ; GET INPUT BUFFERS SPECIFIED
JMPI& S4 MXGOBFI ; (GO GET FROM OUTPUT BUFS);
MOVC 15 R7 ;
CLRS R3 R7 ; FORCE MUX PSW 2#011
MOV MXR7SV R7 ; RE-ESTABLISH CDT POINTER;
MOV R3 CDIMSA-CDNCT.X7 ; INSTALL INBUF SECTION IN CDT
MOV R5 CDIBUF-CDNCT.X7 ; FIRST BUFFER AS WELL;
MOV MXPHY R2 ; GET CURRENT LTU CHANNEL ADDR
MOV R2 CDPCA-CDNCT.X7 ; PUT PHYSICAL ADDRESS INTO CDT
MOVC -1 R1 ; RESET THE LTU ENTIRELY
MODC 2#1001<12 ;
WIO R1 R2 ; LOOP MODE LATCH OF LTU CLEAR
MOVC MXMOD0 R1 ; GET MOD0 BUILD WORD PNT
CIO X1 R2 ; PUT MODE 0 BYTE INTO LTU
MOVC MXMOD1 R1 ; GET MODE1 BUILD WORD PNT
MOD8 MODE1 ; ADDRESS LTU MODE 1 BYTE
CIO X1 R2 ; PUT MODE 1 BYTE INTO LTU
MOV MXCST R4 ; GET CST POINTER
ADDC CSTCS2 R4 ; ADJUST TO CST INDICATORS
SETS X4 CSTCSU ; AND FLAG CHANNEL SET-UP;
JMP MXGO50 ; NORMAL RETURN TO CMI
;FF\f
;=======================================================================
; OPEN INPUT CHANNEL
;
; . CHANNEL MUST HAVE BEEN SET UP PREVIOUSLY, NOT OPEN AND NOT IN
; TEST MODE FOR THE OPEN INPUT SEQUENCE TO BE EXECUTED.
; . THE ASSOCIATED LTU IS ENABLED
; . INTERNAL LTU'S ARE SET IN 'CLEAR TO SEND' HIGH
; . THE TWO DUMMY BINS AT CDT ARE RESET (AS INPUT BINS).
; . CDT COUNTERS ARE PRESET AND THE CHANNEL DECLARED OPEN TO MUX
;
; REGISTERS CALL
; R5 SUBCOMMAND (TYPE, SEQ.NMB, ETC...)
; R6 REL TOP OF CST
; R7 NCT.CDT POINTER
;
; READ: MXRPAT, MXSPAC, MXIMCX, (PCA, IMSA, IBUF).CDT, LNK.BIN,
; CS2.CST(CSTSYN, CSTCSU, CSTTST)
; WRITE: STA.BIN, (IEST, ISTA, BCT, RPAT, SPAC, IMCX).CDT,
; CS2.CST(CSTICO), NCT.CDT(CDOPEN)
;
; CALLED BY: MXLCMI
; CALL TO: MXGO50 (SUCCESFULL), MXATV, MXCME, MXCPE (ON ERRORS)
;
;-----------------------------------------------------------------------
MXOPIC:
MOV CSTCS2.X6 R2 ; CET CHANNEL STATUS INDICATORS
SBNP R2 CSTTST ; IF LTU TEST MODE BIT HIGH
SBN & R2 CSTICO ; OR CHANNEL ALREADY OPEN
IBZ & R2 CSTCSU ; OR NOT SET-UP
JMPI S4 MXATVI ; THEN FLAG VIOLATION ATTEMPT
MOV CDPCA-CDNCT.X7 R1 ; GET PHYSICAL ADDRESS OF LTU
IBZ R2 CSTSYN ; IF CHANNEL NOT SYNC
JMP MXOI70 ; THEN GO HANDLE ASYNC
JMP S4 SYNCERR ; *** TEMPORARY BRAKE *** SYNC
MXOI70:
ADDC -CDNCT R7 ; POINT START OF CDT RECORD
SON CDIBUF.X7 ; IF POINT EARTHED
JMPI S4 MXCPEI ; THEN INDICATE ERROR;
SIO R4 R1 ; SENSE LTU
MOVC LTADSS R3 ; GET ASYNC CHAN DISAB. BIT
CLRS R4 R3 ; CLEAR DISABLE BIT
CIO R4 R1 ; CONTROL LTU
MOVC 0 R3 ; FORCE 'CLEAR TO SEND' HIGH
MODC 2#0010<12 ; ADDRESS LTU 'CLEAR TO SEND'
WIO R3 R1 ; (ACTIVE ONLY ON INTERNAL LTU'S)
SETS R2 CSTICO ; SET INPUT CHANNEL OPEN IN CST
MOV R2 CSTCS2.X6 ; SAVE UPDATED CSTCS2 STATUS WORD
SVS R0 ; SAVE CURRENT STATUS
MOV BAS R1 ; GET OWN BASE
MOVC 1<BINIO R2 ; FLAG INPUT BIN
MOV CDIMSA.X7 R3 ; GET MEM SECTION ADDRESS
SETS R3 15 ; FORCE COM-CPU PSW TO BE 2#111
MOV CDIBUF.X7 R5 ; GET CURRENT BIN ADDRESS
SUB R1 R5 ; RELATIVE
LDS R3 ; SHIFT TO INPUT BIN SECTION
MOV BINLNK.X5 R4 ; GET LINKAGE TO NEXT BIN
MOV R2 BINSTA.X5 ; RESET STATUS TO INDICATE FREE
MODN R1
MOV R2 BINSTA.X4 ; INPUT BINS;
LDS R0 ; RETURN CURRENT SECTION
CLR CDIEST.X7 ; CLEAR INPUT ERROR STATUS
CLR CDISTA.X7 ; CLEAR INPUT STATE
MOV CDPBCT.X7 R2 ; GET BUFFER DISCONNECT TIM PRESET
MOV R2 CDBCT. X7 ; PRESET BUFFER DISCONNECT TIMER
MOV MXRPAT R2 ; GET PRESET/CURRENT START UP
MOV R2 CDRPAT.X7 ; VALUE RELEASE PULSE STUCK;
MOV MXSPAC R2 ; GET PRESET/CURRENT START UP
MOV R2 CDSPAC.X7 ; VALUES OF STUCK TAPE COUNTS;
MOV MXIMCX R2 ; GET MAX/CURRETN CHAR COUNT
MOV R2 CDIMCX.X7 ; PRESET;
ADDC CDNCT R7 ; GET PNT TO CDT (MXTYP)
SETS X7 CDOPEN ; FLAG AT LEAST ONE CHANN5L O|5N
JMP MXGO50 ; NORMAL RETURN TO CMI
;=======================================================================
; CLOSE INPUT CHANNEL
;
; . INPUT PART OF CHANNEL MUST BE IN OPEN STATE (ELSE ETTEMPT VIO)
; . INTERNAL LTU'S WILL HAVE 'CLEAR TO LEND' FORCED LOW
; . THE LTU WILL NOT BE DISABLED
; . INPUT BUFFERS CONNECTED TO THE CDT ARE DISCONNECTED AND LINKED
; INTO THE APPROPRIATE INPUT QUEUE (FIB.CST).
; . TWO DUMMY INPUT BINS ARE LINKED TO THE CDT TO AVOID MUX DRY-UP
; . IF CHANNEL CLOSED FOR OUTPUT THE CDT WILL BE DECLARED CLOSED
;
; REGISTERS CALL
; R5 SUBCOMMAND (TYPE, SEQ.NMB, ETC...)
; R6 REL TOP OF CST
; R7 NCT.CDT POINTER
;
; READ: MXCST, MXCDT, CS2.CST(CSTOCO), PCA.CDT
; WRITE: (FIB, LIB, NIB).CST, (IMSA, IBUF).CDT, CS2.CST(CSTICO),
; NCT.CDT(CDOPEN)
;
; CALLED BY: MXLCMI
; CALL TO: MXGO50 (SUCCESFULL), MXATV, MXCME, MXCPE (ON ERRORS)
;
;-----------------------------------------------------------------------
MXCLIC: ;
ADDC CSTCS2 R6 ; GET PNT TO CST (CSTCS2)
IBZ X6 CSTICO ; IF NOT OPEN
JMPI S4 MXATVI ; THEN FLAG VIOLATION ATTEMPT
RELS X6 CSTICO ; CLEAR INPUT OPEN BIT IN CST
MOV CDPCA-CDNCT.X7 R1 ; GET PHYSICAL ADDRESS OF LTU
MOVC -1 R3 ; FORCE 'CLEAR TO SEND' LOW
MODC 2#0010<12 ; ADDRESS LTU 'CLEAR TO SEND'
WIO R3 R1 ; (ACTIVE ONLY ON INTERNAL LTU'S)
MOV CDIBUF-CDNCT.X7 R5 ; GET CURRENT BUFFER
IEQ R5 0 ; IF LINK ALLREADY ZERO
JMPI S4 MXCPEI ; (CP ERROR);
MOVC 1 R4 ; TRY BUFFER COUNT = 1
MOV R5 R6 ; SAVE ADDRESS OF FIRST BUFFER
MOV CDIMSA-CDNCT.X7 R3 ; GET SECTION ADDRESS FROM CDT
SETS R3 15 ; FORCE COM-CPU PSW TO BE 2#111
MON GNBA ;(4,6 KEPT) GET NEXT BUFFER ADDRESS
JMP MXCI50 ; ON ZERO IN LINK: JMP
ADDC 1 R4 ; INCREMENT BUFFER COUNT
MON GNBA ;(4,6 KEPT) GET NEXT LINK
JMP MXCI50 ; ON LINK ZERO: CONTINUE NORMALLY
JMPI S4 MXCPEI ; (CP ERROR);
MXCI50: ;
MOV R4 R3 ; POSITION BUFFER COUNT
XCH R6 R5 ; POSITION FIRST/LAST BUFFER PNT
MOV MXCST R4 ; GET CURRENT REL CST PNT.
MOD BAS ; ABSOLUTIZE
ADDC CSTFIB R4 ; GET CURRENT ABS CSTFIB PNT
MON LNIQ ; LINK ONE OR TWO BUFFERS INTO QUEUE
MOVC 2 R3 ; SET UP TO GET MUX IDLE BINS
MON GNIB ; GET INPUT BUFFERS SPECIFIED
JMPI& S4 MXGOBFI ; (GO GET FROM OUTPUT BUFS);
MOVC 15 R7 ;
CLRS R3 R7 ; FORCE MUX PSW TO BE 2#011
MOV MXCDT R7 ; RE-ESTABLISH CDT POINTER;
ADDC CDNCT R7 ; POINT CDT INDICATORS
MOV R3 CDIMSA-CDNCT.X7 ; INSTALL INBUF SECTION IN CDT
MOV R5 CDIBUF-CDNCT.X7 ; FIRST BUFFER AS WELL;
MOV MXCST R6 ; RE-ESTABLISH CST POINTER
ADDC CSTCS2 R6 ; POINT CST FLAGS
IBZ X6 CSTOCO ; IF OUTPUT CHANNEL CLOSED AS WELL
RELS X7 CDOPEN ; THEN FLAG BOTH CLOSED;
JMP MXGO50 ; NORMAL RETURN TO CMI
;FF\f
;=======================================================================
; OPEN OUTPUT CHANNEL
;
; . CHANNEL MUST HAVE BEEN SET UP PREVIOUSLY, NOT OPEN AND NOT IN
; TEST MODE FOR THE OPEN OUTPUT SEQUENCE TO BE EXECUTED.
; . THE ASSOCIATED LTU IS ENABLED
; . THE FIRST AVAILABLE OUTPUT BINS IF ANY ARE CONNECTED TO THE CDT
; ELSE THE CDT WILL BE SET IN A DRIED UP STATE WITH A DUMMY BIN.
; . THE CHANNEL IS DECLARED OPEN TO THE MUX.
;
; REGISTERS CALL
; R5 SUBCOMMAND (TYPE, SEQ.NMB, ETC...)
; R6 REL TOP OF CST
; R7 NCT.CDT POINTER
;
; READ: MXCST, MXCDT, FOB.CST, (PCA, OPBLC).CDT,
; CS2.CST(CSTCSU, CSTTST)
; WORK: MXBSA
; WRITE: CS2.CST(CSTOCO), (OEST, OMSA, OBUF, OBLC, OSTA).CDT,
; NCT.CDT(CDOPEN)
;
; CALLED BY: MXLCMI
; CALL TO: MXGO50 (SUCCESFULL), MXATV, MXCME, MXCPE (ON ERRORS)
;
;-------------------------------------------------------------------------------
MXOPOC: ; OPEN OUTPUT CHANNEL, ENTRY
MOV CSTCS2.X6 R2 ; GET CHANNEL STATUS INDICATORS
SBNP R2 CSTTST ; IF LTU TEST MODE BIT HIGH
SBN & R2 CSTOCO ; OR CHANNEL ALREADY OPEN
IBZ & R2 CSTCSU ; OR NOT SET-UP
JMPI S4 MXATVI ; THEN FLAG VIOLATION ATTEMPT;
MOV CDPCA-CDNCT.X7 R1 ; GET PHYSICAL ADDRESS OF LTU
IBZ R2 CSTSYN ; IF CHANNEL NOT SYNC
JMP MXOO50 ; GO HANDLE ASYNC CHANNEL
JMP S4 SYNCERR ; *** TEMPORARY BRAKE *** SYNC
MXOO50:
SIO R4 R1 ; SENSE LTU
MOVC LTADSS R3 ;
CLRS R4 R3 ; CLEAR CHANNEL DISABLE BIT
CIO R4 R1 ; CONTRI
SETS R2 CSTOCO ; SET OUTPUT OPEN IN CSTCS2
MOV R2 CSTCS2.X6 ; PUT CSTCS2 BACK INTO CST
MOV CSTFOB.X6 R5 ; GET CURRENT CSTFOB CONTENTS
JOZ R5 MXOO80 ; IF OUTPUT TO HANDLE
MON GBS ;(4,6 KEPT) GET BIN SECTION ADDRESS
MOVC 0 R0 ; FLAG OUTPUT READY
JMP MXOO90 ;
MXOO80: ; ELSE
MOVC 1 R3 ; SET UP TO GET ONE BIN
MON GNOB ;(NO REGS) GET AN EMPTY OUTPUT BIN
JMPI & S4 MXATVI ; (NO BINS AVAIL);
MOV R3 MXBSA ; SAVE DUMMY BIN PSW;
MOVC 1 R3 ; SET FOR LINKING IN ONE BIN
MOV MXCST R4 ; POINT REL CURRENT CST RECORD
MOD BAS ;
ADDC CSTFOB R4 ; POINT ABS QUEUE CONTROL
MON LNIQ ; LINK INTO EMPTY QUEUE
MOVC 1<MQOBNA R0 ; FLAG BIN NOT AVALABLE
MOV MXBSA R3 ; RE-ESTABLISH BIN PSW
MXOO90: ; END LINKING BIN FOR OUTPUT;
MOVC 15 R7 ;
CLRS R3 R7 ; FORCE MUX PSW TO BE 2#011
MOV MXCDT R7 ; RE-ESTABLISH CDT POINTER
MOV R0 CDOEST.X7 ; PRESET OUTPUT STATUS CORRECT;
MOV R3 CDOMSA.X7 ; INSTALL SECTION IN CDT
MOV R5 CDOBUF.X7 ; INSTALL BIN ADDRESS IN CDT
MOV CDOPBLC.X7 R2 ; GET BLK CNT PRESET
MOV R2 CDOBLC.X7 ; PUT BLK CNT PRESET INTO CDT
CLR CDOSTA.X7 ; CLEAR OUTPUT STATUS
ADDC CDTYP R7 ; GET PNT TO CDT (MXTYP)
SETS X7 CDOPEN ; FLAG AT LEAST ONE CHANNEL OPEN
JMP MXGO50 ; NORMAL RETURN TO CMI
;=======================================================================
; CLOSE OUTPUT CHANNEL
;
; THE CHANNELS OUTPUT PART IS SET CLOSED IN CDT
;
; . THE OUTPUT BUFFERS ARE LEFT UNCHANGED.
; . IF CHANNEL CLOSED FOR INPUT THE CDT WILL BE DECLARED CLOSED
;
; REGISTERS CALL
; R5 SUBCOMMAND (TYPE, SEQ.NMB, ETC...)
; R6 REL TOP OF CST
; R7 NCT.CDT POINTER
;
; READ: CS2.CST(CSTTST, CSTICO)
; WRITE: (OEST, OMSA, OBUF).CDT, NCT.CDT(CDOPEN), CSI.CST(CSTOCO)
;
; CALLED BY: MXLCMI
; CALL TO: MXGO50 (SUCCESFULL), MXATV, MXCME, MXCPE (ON ERRORS)
;
;-----------------------------------------------------------------------
MXCLOC: ; CLOSE OUTPUT CHANNEL, ENTRY
MOV CSTCS2.X6 R2 ; GET CHANNEL STATUS INDICATORS
IBN R2 CSTTST ; IF LTU TEST MODE BIT HIGH
JMPI S4 MXATVI ; THEN FLAG VIOLATION ATTEMPT;
MOVC 1<MQOBNA R0 ; FORCE CHANNEL DRIED UP
MOV R0 CDOEST-CDNCT.X7 ;
SVS R0 ; GET OWN PSW
MOVC 15 R1 ;
CLRS R0 R1 ; FORCE MUX PSW TO BE 2#011
MOV R7 R1 ; GET ADDRESS CURRENT CDT RECORD
MOD BAS ; MAKE ABS
ADDC CDOSTA-CDNCT R1 ; EMPTY BIN SIMULATOR
MOVL R01 CDOMSA-CDNCT.X7 ;
ADDC CSTCS2 R6 ; GET PNT TO CST (CSTCS2)
RELS X6 CSTOCO ; CLEAR OUTPUT OPEN BIT IN CST
IBZ X6 CSTICO ; IF INPUT CLOSED AS WELL
RELS X7 CDOPEN ; THEN FLAG NO CHANNELS OPEN;
JMP MXGO50 ; NORMAL RETURN TO CMI
;FF\f
;-----------------------------------------------------------------------
; PROCEDURE FOR SERVING LOCAL INTERRUPT
; A CHECK IS MADE IF TIME OUT AT FIRST LTU ACCESS TO AVOID KILL
; OF LETTER DRIVEN PART OF MXI SUBMODULE DUE MP COMMAND ERROR.
;
;-----------------------------------------------------------------------
MXHWERR1:
MOV LINTCAUS R3 ; AND CAUSE OF LOCAL INTERRUPT
MOV LINTRET R4 ; GET LOC IN ERROR
IEQP R4 MXST51 ; IF LOCATION FOR SIO LTU-ADDRESS
IEQ R3 3 ; AND TIME OUT AT FIRST ACCESS
JMPI S6 MXATVI ; THEN ATTEMPTED VIOLATION
MON ERR ; CALL ON-LINE ERROR PROCESSING;
JMPI LINTRET ;
;=======================================================================
XNAME1= <:MX:>, XNAME2= <:I:> ; SUBMODULE ID
XID0= MXCLPN ;
XPRPC0= MXINICPU ; CPU INTERRUPT DRIVEN PROCESS
XTIM0= 100 ;
XMASU_RNAE_DU_RNAE_DU_RNAE_DU_RNAE_DU_RNAE_DU_RNAE_DU_RNAE_DU_RNAE_DU_RNAE_DU_RNAE_DU_RNAE_DU_RNAE_DU_RNAE_DU_RNAE_DU_RNAE_DU_RNAE_DU_RNAE_DU_RNAE_DU_RNAE_DU_RNAE_DU_RNAE_DU_RNAE_DU_RNAE_DU_RNAE_DU_RNAE_DU_RNAE_DU_RNAE_DU_RNAE_DU_RNAE_DU_RNAE_DU_RNAE_DU_RNAE_DTIM1=0 XTIM2=0
XMASK0=#8000, XMASK1=#8000, XMASK2=#8000
XERROR0=0, XERROR1=0, XERROR2=0
XPRTOT= XPRCNT, XSTOTAL=XTOT
XTOTAL=XSTOTAL+LOC
LIST
;=======================================================================
;FF\f
END
«nul»