DataMuseum.dk

Presents historical artifacts from the history of:

CR80 Hard and Floppy Disks

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

See our Wiki for more about CR80 Hard and Floppy Disks

Excavated with: AutoArchaeologist - Free & Open Source Software.


top - download

⟦61ea6aa0a⟧ TextFile

    Length: 23072 (0x5a20)
    Types: TextFile
    Names: »CPMED«

Derivation

└─⟦80dc9b589⟧ Bits:30005096 8" CR80 Floppy CR80FD_0053 ( HMDIR 6 VOL: BACKUP MD: CPM.D From: HMDIR*CPM.D )
    └─⟦08785f861⟧ 
        └─ ⟦this⟧ »CPM.D!CPMED« 

TextFile

;-----------------------------------------------------------------------
; MAIN PROGRAM "CPM_EVENT_DISTRIBUTION"(CPMED).
;
; NARRATIVE:
; CPMED IS THE 'CPM' MAIN PROGRAM,AND AS SUCH PERFORMES PROGRAM INI-
; TIALIZATION AND ERROR REPORTING.
; DURING INITIALIZATION,AN AMOS MESSAGE IS SENT TO THE CIP RTC-PROC-
; CESS (CIPRTC),WHICH HAS THE PURPOSE TO RUN THE CPM-TIMER,CPMTIM.
; ONCE INITIALIZED,CPMED AWAITS THE OCCURRENCE OF ONE OF THE FOLLOW-
; ING EVENTS:
; 1.AMOS SIGNAL:
;   A AMOS SIGNAL SIGNALS TO CPM,THAT AN EVENT IS PENDING IN EITHER
;   THE 'MDQ'-,'NM'- OR 'NC' QUEUE.
;
;   A.MESSAGES RECIEVED IN THE MDQ QUEUE ARE:
;     1.MESSAGE FOR CONVERSION FROM SMF TO ACP
;     2.MESSAGES FOR CONVERSION FROM ACP TO SMF.
;     3.MESSAGES TO NICS TARE.
;.    4.SIP KEEP ALIVE MESSAGES (SIPKAM'S).
;     5.CHANNEL SYNCHRONIZATION MESSAGES (SYNMSG).
;     6.CONTROL MESSAGES TO NSC.
;
;   B.EVENTS RECIEVED IN THE NM QUEUE ARE:
;     1.MESSAGES CONVERTED FROM SMF TO ACP (REAL/PSEUDO)
;     2.MESSAGES CONVERTED FROM ACP TO SMF (REAL/PSEUDO).
;     3.MESSAGES FROM NICS-TARE.
;
;   C.EVENT RECIEVED IN THE NC QUEUE ARE:
;     1.CONTROL MESSAGES FROM NSC TO FIKS.
;     2.MSS CONTROL COMMANS/RESPONSES.
;     3.ACK'S FOR MESSAGES TO NICS-TARE.
;
; 2.AMOS MESSAGES:
;   A.OPERATIONAL MODE CONTROL COMMANDS FROM THE LOCAL CIP WATCHDOG
;     (CWD).
;
; 3.AMOS ANSWERS:
;   A.RETURNED FROM THE CIPRTC PROCESS,WHEN THE REQUESTED DELAY HAS
;     EXPIRED.
;   B.RELEASE OF CPM TO CWD SIP-KAM'S.
;
; ALL EVENT ARE VALIDATED BY CPMED,AND PROCESSED BY CALLS TO SPECI-
; FIC EVENT PROCEDURES (PLEASE REF.TO RESP.PROCEDURE NARRATIVES),AND
; PROCESSED ONE AFTER ANOTHER.
; A SIP KEEP ALIVE MESSAGES MAY ACTUALLY CONTAIN SEVERAL EVENTS,
; AND IT IS ONLY THE INFORMATION PIGGYBACKED,E.I. ACK'S FOR NARRA-
; TIVE AND SYNC MESSAGES,THAT ARE AND PROCESSED BY CPM.
; THE KEEP-ALIVE-MESSAGE ITSELF IS FORWARDED IN AN AMOS MESSAGE TO
; CWD.
; IF SIPKAM OVERRUN OCCURS,I.E. THE RECEIPT OF AN 'KAM' WHILE
; CWD HAS NOT YET PROCESSED A PRIOR 'KAM,THEN THE 'KAM' IS IGNORED.
;
; CALLS TO:    CPMM&C
;              INMP
;              INNMSG
;              INCTRLMSG
;              INTERCEPT
;              TRANSMSG
;              NMACKP
;              NMACCNT
;              ENQCMCM
;              GETACK
;              CPMTIMER
;              MON WAITEVENT
;              MON SENDANSWER
;              MON SENDMESSAGE
;              MON WAITANSWER
;              MON TERMINATE
;              MIO,MDEQQE
;              MIO,MGETMTCB
;              MIO,MPUTMTCB
;              MIO,MENQQE
;              RELMTCB
;-----------------------------------------------------------------------
CPMSTART:                            ;BEGIN INITIALIZE CPM
         MOVC  SIPMAILBOX        R0  ;   BEGIN PRESET SIPMAILBOX
         MON   REGION,RENTER         ;
         JMPI         S4  URE004     ;E
         MOVC  0                 R1  ;
         MOVC  0                 R2  ;
         MOVC  MBXCSL            R3  ;
Z0010:   MON   REGION,RPUT           ;
         JMPI  &      S4  URE004     ;E
         ADDC  1                 R1  ;
         SOB          R3  Z0010      ;
         MOVC  MBXNTS            R1  ;
         MOVC  OO                R2  ;
         MON   REGION,RPUT           ;     NICS-TARE:=STANDBY (OO)
         JMPI  &      S4  URE004     ;E
         MON   REGION,RLEAVE         ;
         JMPI  &      S4  URE004     ;E  END
                                     ;
         MOVC  CMESBUF           R1  ;
         MOVC  BMMSG             R2  ;
         MON   WAITEVENT             ; AWAIT STARTMESSAGE FROM CWD
                                     ; 'AWAKED BY CWD'
         MOV          R2  AMOSEVENT  ;   STORE MSG REF.
         JMP          S5  MTCBINIT   ;   "INIT-MTCB"
                                     ;
         MOVC  RTCMESBUF         R5  ; START CPMCLOCK
         MOVC  CRESTIM           R0  ;   BEGIN INT RTC MESSAGE
         MOV          R0  MSCOMD.X5  ;
         MOVC  CPMCLOCK          R0  ;
         MOV          R0  MSPARM.X5  ;
         MOV          R5         R1  ;   END
         MOVC  RTCNAME           R0  ;
         MON   SENDMESSAGE           ;   "SENDMESSAGE"
         MOV   R2  EVTRTC+AMOSEVENT  ;   SAVE CLOCK EVENT
         MOVC  CMESBUF           R1  ;   RETRIEVE CWD MESSAGE
         JMP              Z2010      ;   GOTO PROCESS STARTMSG.
;-----------------------------------------------------------------------
                                     ;
CPMED:                               ;BEGIN CPMED
Z0100:                               ; WAITEVENT:
         MOVC  CMESBUF           R1  ;   REF.TO MSG BUFFER
         MOVC  BMSIG+BMMSG+BMANS R2  ;   EVENTMASK
         MON   WAITEVENT             ;   "WAITWEVENT"
                                     ;   X0:R0=EVENTTYPE,R2=EVENT
         MOV          R2  AMOSEVENT  ;   SAVE CURRENTEVENT
                                     ;
         SEQ          R0  BNSIG      ; CASE_OF_EVENTTYPE(1,2,3,X)
         JMP              Z2000      ;
Z1000:                               ; I . S I G N A L.
                                     ;--------------------------------
                                     ;
                                     ; A. QUEUE 'M D Q'.
                                     ; --------------------------------
         MOVC  -1                R3  ;
         MOV   R3     QDQN+QDMDQ     ;
Z1010:                               ; UNTIL QUEUE "MDQ" EMPTY DO
                                     ;   BEGIN 'DEQUEUE NEXT ELEMENT'
         MOVC  QDMDQ             R4  ;     QUEUE=MDQ
         INC              QDQN.  X4  ;     UPDATE QN
         MOV   QDQN.  X4         R3  ;
         IEQ          R3  7          ;     IF LAT QN DONE THEN
         JMP              Z1500      ;       GOTO INSPECT NM:
         MON   MIO,MDEQQE            ;     "DEQUEUE_ELEMENT"(R4=QD)
         JMPI  &      S4  URE001     ;E    X0:ERRROR,REPORT ERROR
         JMP   &          Z1010      ;     X1:NONE,GOTO NEXT QN::
         MOV          R0  CMTCBX     ;     X2:R0=MTCB INDEX,STORE IT
         MOVC  MPMDQ             R4  ;     GET MTCB PARM.BLOCK
         MON   MIO,MGETMTCB          ;     "GET_MTCB"(R0=MTCBX,R4=MPCB)
         JMPI  &      S4  URE001     ;E    X0:ERROR,REPORT ERROR
                                     ;     X1:MTCB LOADED TO MPCB
         MOV   MPMBE0.X4         R1  ;     READ MTCB-TYPE
         SEQ          R1  MMTYPREAL  ;     IF NOT REAL MTCB THEN
         JMPI  &      S4  URE105     ;E      REPORT ERROR
                                     ;   END 'DEQUEUE NEXT ELEMENT'
         MOV   MPRWD7.X4         R1  ;   READ AND STORE MTCB STATUS
         MOV          R1  CMSGSTATUS ;
         MOV   MPRTYP.X4         R1  ;   READ MSGTYPE(MTCB)
                                     ;
         SEQ          R1  TNMSG      ;  CASE_OF_TYPE(1,2,X)
         JMP              Z1200      ;
Z1100:                               ;   1. NARRATIVE_MESSAGE.
                                     ;   -----------------------------
         JMP          S5  INNMSG     ;     "INNARR.MSG"(R0=MTCBX)
         MOV   CCHNO             R2  ;     READ CHANNELNO
         SLO          R2  CH2+1      ;    CASE_OF_CHNO(1,2,X)
         JMP              Z1120      ;     1.INBOUND_CHANNEL(0-2)
                                     ;     ---------------------------
         MOV   CPMOPM            R1  ;     READ CPM_OPMODE
         IBN          R1  FIACTIV    ;     IF INPUT ACTIVE THEN
         JMP          S5  INMP       ;       "INBOUND_MSG_PROC"
         JMP              Z1290      ;     GOTO RELEASE_MTCB:
Z1120:   SLO          R2  CH6+1      ;
         JMP              Z1130      ;     2.OUTBOUND_CHANNEL(3-6)
                                     ;     ---------------------------
         MOV   CMSGSTATUS        R1  ;     READ MSG-STATUS
         SNE          R1  CCNSSOK    ;     IF TRUNK_ERROR THEN
         JMP              Z1130      ;       'STUCK OUTBOUND MSG'
         JMP          S5  IMACKP     ;       "INB-NARR.MSG_ACK"
         MODC  ECTRUNKERR-ECUNKNOWN  ;       EC=TRUNKERROR
                                     ;     ELSE EC=UNKNOWN
                                     ;     GOTO INTERCEPT_MSG:
                                     ;
Z1130:                               ;     X.UNKNOWN CHANNEL
                                     ;     ---------------------------
         MOVC  ECUNKNOWN         R2  ;     ERRCODE=UNKNOWN
         MOV   CMTCBX            R0  ;     RETRIEVE MTCB INDEX
         JMP          S5  INTERCEPT  ;     "INTERCEPT_MSG"(R0=MTCBX)
         JMP              Z1010      ;     GOTO RELEASE_MTCB:
                                     ;    END CASE_OF_CHNO
Z1200:   SEQ          R1  TCTRLMSG   ;
         JMP              Z1300      ;   2.CONTROL_MESSAGE.
                                     ;   -----------------------------
         JMP          S5  INCTRLMSG  ;     "INCTRLMSG"(R0=MTCBX)
         MOV   CCATTYP           R1  ;     X0:CTRLMSG READ,GET CAT,TYP
                                     ;
         SEQ          R1  TSIPSYN    ;    CASE_OF_CAT+TYPE(1,2,3,4)
         JMP              Z1220      ;     1.INBOUND_SYNCMESSAGE
                                     ;     ---------------------------
         MOVC  OPHUNT            R0  ;     OPCODE=HUNT
         JMP          S5  CPMMC      ;     "CPMM&C"(RO=OPCODE)
         JMP              Z1290      ;     GOTO RELEASE-MTCB:
Z1220:                               ;
         SEQ          R1  TSCKAM     ;
         JMP              Z1240      ;     2.SIP_KEEP_ALIVE_MSG.
                                     ;     ---------------------------
         MOV   CPMOPM            R1  ;     READ CPM_OPMODE
         IBNP         R1  FSYNC      ;     IF OPMODE=SYNC THEN
         MOVC  OPACK             R0  ;       OPCODE=ACK
         JMP          S5  CPMMC      ;       "CPMM&C"(OPCODE)
         MOVC  CH3               R0  ;     ENDIF
         MOV          R0  CCHNO      ;     CCHNO=CH0
Z1232:                               ;     FOR N=CH3,CH6 DO
         JMP          S5  GETACK     ;       "GETACK"(N)
         JMP   &          Z1234      ;       X0:NONE
                                     ;       X1:GOT ACK(N)
         JMP          S5  IMACKP     ;       "INMACKP"(ACK)
Z1234:   MOVC  CCHNO             R5  ;
         INEP         X5  CH6        ;
         INC              0.     X5  ;       GET NEXT CHANNEL
         JMP              Z1232      ;     ENDDO
                                     ;
         JMP          S5  RETSTA     ;     "RETREIVE_STATUS"
         MOV   EVTSKAM+AMOSEVENT R0  ;     READ SIPKAM STATUS
         SEQ          R0  0          ;     IF NOT SIPKAM OVERRUN THEN
         JMP              Z1238      ;
         MOVC  STATUSMSG         R5  ;
         MOVC  CSIPKAM           X5  ;       WRITE SIPKAM LETTER TO
         MOVC  CMCDAT            R4  ;
         MOV   KAMSM. X4         R0  ;
         MOV          R0  STAMSG.X5  ;
         MOV   KAMSCC.X4         R0  ;
         MOV          R0  SCCSTA.X5  ;
         MOV   KAMNTS.X4         R0  ;
         MOV          R0  NTSTAT.X5  ;
         MOV          R5         R1  ;
         MOVC  CWDNAME           R0  ;       CWD PROCESS
         MON   SENDMESSAGE           ;       "SENDMESSAGE"
                                     ;       X0:R2=EVENT
         MOV    R2  EVTSKAM+AMOSEVENT;       SAVE EVENT AS SIPKAM
                                     ;       TRANSMIT STATUS
Z1238:                               ;     ENDIF
         JMP              Z1290      ;     GOTO RELEASE_MTCB:
Z1240:   SEQ          R1  TCIPSYN    ;
         SNE          R1  TCSKAM     ;     3.CONTROL_MSG TO 'NSC'.
         JMP              Z1250      ;     ----------------------------
         JMP          S5  ENQCMCM    ;     "ENQUEUE_CTRLMSG_CM"
         JMP              Z1010      ;     GOTO RELEASE_MTCB:
                                     ;
Z1250:                               ;     4.STUCK OUTBOUND CTRLMSG
                                     ;       (CIP-SYNC OR -KAM)
                                     ;     ---------------------------
Z1290:                               ;   RELEASE_MTCB:
         JMP          S5  RELMTCB    ;     "RELEASE_MTCB"(CMTCBX)
         JMP              Z1010      ;
                                     ;
Z1300:                               ;   X.UNKNOWN_MESSAGE_TYPE.
                                     ;   -----------------------------
         MOVC  ECUNKNOWN         R2  ;     ERRCODE=UNKNOWN
         MOV   CMTCBX            R0  ;     RETRIEVE MTCB INDEX
         JMP          S5  INTERCEPT  ;     "INTERCEPT_MSG"(R0=MTCBX)
                                     ;  END CASE_OF_TYPE
         JMP              Z1010      ; ENDUNTIL
                                     ;---------------------------------
                                     ;
Z1500:                               ; B. QUEUE 'N M'.
                                     ; --------------------------------
         MOV   CPMOPM            R1  ; READ CPM-OPMODE
         SBN          R1  FOACTIV    ; IF OPMODE=OUTPUT_ACTIVE THEN
         JMP              Z1700      ;
Z1510:                               ;   UNTIL QUEUE "NM" EMPTY DO
                                     ;     BEGIN 'DEQUEUE NEXT ELEMENT'
         MOVC  QDNM              R4  ;       QUEUE=NM
         MON   MIO,MDEQQE            ;       "DEQUEUE_ELEMENT"(R4=QD)
         JMPI  &      S4  URE001     ;E      X0:ERRROR,REPORT ERROR
         JMP   &          Z1700      ;       X1:NONE,GOTO INSPECT NC:
         MOV          R0  CMTCBX     ;       X2:R0=MTCB INDEX,STORE IT
         MOVC  MPNM              R4  ;       GET MTCB PARM.BLOCK
         MON   MIO,MGETMTCB          ;       "GET_MTCB"(R0=MTCBX,R4=MPCB)
         JMPI  &      S4  URE001     ;E      X0:ERROR,REPORT ERROR
                                     ;       X1:MTCB LOADED TO MPCB
                                     ;     END DEQUEUE_NEXT_ELEMENT
         MOV   MPMBE0.X4         R1  ;     READ MTCB-TYPE
         SEQ          R1  MMTYPREAL  ;     IF REAL MTCB THEN
         JMP              Z1550      ;
         JMP          S5  INNMSG     ;       "IN_NARR.MSG"(R0=MTCBX)
         MOV   CCHNO             R0  ;       READ CURRENT CHN0.
         SLO          R0  CH3        ;       IF (CHNO < CH3 ) OR
         SLO          R0  CH6+1      ;          (CHNO > CH6 ) THEN
         JMPI         S4  URE102     ;E        REPORT ERROR
                                     ;       ELSE
         JMP          S5  INMACCNT   ;         "INB_NARR.MSG_ACCT"
         JMP          S5  NMTRANS    ;         "TRANSMIT_MSG"
         JMP              Z1510      ;       ENDIF
Z1550:                               ;     ELSE (PSEUDO MCTB)
         MOV   MPPWD5.X4         R0  ;       READ CATEGORY
         XTR          R0  8          ;
         SEQ          R0  CATPNM     ;       IF (CAT. <> CATPNM) THEN
         JMPI         S4  URE102     ;E        REPORT ERROR
                                     ;       ELSE
         JMP          S5  IPMACCNT   ;         "INB_PSEUDO.MSG_ACCT"
         JMP          S5  RELMTCB    ;          "RELEASE_MTCB"
                                     ;       ENDIF
                                     ;     ENDIF
         JMP              Z1510      ;   ENDUNTIL
                                     ; ENDIF
                                     ;---------------------------------
                                     ;
Z1700:                               ; C. QUEUE 'N C'.
                                     ; --------------------------------
Z1710:                               ; UNTIL QUEUE "NC" EMPTY DO
                                     ;   BEGIN 'DEQUEUE NEXT ELEMENT'
         MOVC  QDNC              R4  ;     QUEUE=NC
         MON   MIO,MDEQQE            ;     "DEQUEUE_ELEMENT"(R4=QD)
         JMPI  &      S4  URE001     ;E    X0:ERRROR,REPORT ERROR
         JMP   &          Z0100      ;     X1:NONE,GOTO WAITEVENT:
         MOV          R0  CMTCBX     ;     X2:R0=MTCB INDEX,STORE IT
         MOVC  MPNC              R4  ;     GET MTCB PARM.BLOCK
         MON   MIO,MGETMTCB          ;     "GET_MTCB"(R0=MTCBX,R4=MPCB)
         JMPI  &      S4  URE001     ;E    X0:ERROR,REPORT ERROR
                                     ;     X1:MTCB LOADED TO MPCB
                                     ;   END DEQUEUE_NEXT_ELEMENT
         MOV   MPMBE0.X4         R1  ;   READ MTCB TYPE
         SEQ          R1  MMTYPREAL  ;   IF REAL MTCB THEN
         JMP              Z1750      ;     'FROM NSC TO FIKS'
         MOV   CPMOPM            R1  ;     READ CPM OPMODE
         IBZ          R1  FOACTIV    ;     IF OUTPUT NOT ACTIV THEN
         JMP              Z1790      ;       GOTO RELEASE-MTCB:
                                     ;     ELSE
         JMP          S5  CMTRANS    ;       "TRANSMIT_MSG"
         JMP              Z1710      ;     ENDIF
Z1750:                               ;   ELSE
         MOV   MPPWD5.X4         R0  ;     READ CATEGORY
         XTR          R0  8          ;     CASE OF CATEGORY
         SEQ          R0  CATACK     ;     ---------------------------
         JMP              Z1760      ;     1.MSS-ACK.
         JMP          S5  OMACKP     ;     "MSS_ACK_PROCESSING"
         JMP              Z1790      ;     GOTO RELEASE_MTCB:
Z1760:   SEQP         R0  CATMSSC    ;
         SEQP         R0  CATMSSR    ;
         JMP              Z1770      ;     2.MSS CONTROL
         MODC  OPMSSC-OPMSSR         ;
         MOVC  OPMSSR            R0  ;     GET OPCODE(COMD)
         MOV   MPPWD2.X4         R1  ;     READ PARAMETER
         MOV          R1  CMSSPARM   ;     AND STORE IT
         JMP          S5  CPMMC      ;     "CPMMC"(OPCODE)
         JMP              Z1790      ;     GOTO RELEASE_MTCB:
Z1770:   SEQP         R0  CATNTSC    ;
         SEQP         R0  CATNTSR    ;
         JMP              Z1780      ;     3.NTS CONTROL:
         MODC  OPNTSC-OPNTSR         ;
         MOVC  OPNTSR            R0  ;     GET OPCODE(COMD)
         MOV   MPPWD2.X4         R1  ;     READ PARAMETER
         MOV          R1  CNTSPARM   ;     AND STORE IT
         JMP          S5  CPMMC      ;     "CPMMC"(OPCODE)
         JMP              Z1790      ;     GOTO RELEASE-MTCB:
                                     ;
Z1780:                               ;     X.UNKNOWN CATEGORY
         JMPI         S4  URE102     ;E    REPORT ERROR
                                     ;
Z1790:                               ; RELEASE MCTB:
         JMP          S5  RELMTCB    ;     "RELEASE_MTCB"(CMTCBX)
                                     ;   ENDIF
         JMP              Z1710      ; ENDUNTIL
;-----------------------------------------------------------------------
Z2000:   SEQ          R0  BNMSG      ;
         JMP              Z3000      ; II . A M O S _ M E S S A G E.
                                     ;--------------------------------
Z2010:   SEQ          X1  CCIPOPM    ;  CASE_OF_COMMAND(1,X)
         JMP              Z2100      ;   1. CWD_COMMAND
                                     ;   -----------------------------
         ADDC  MSPARM            R1  ;
         MOV          X1         R0  ;     READ OPCODE
         SEQP         R0  SS         ;     IF (OPCODE<>STANDBY) AND
         SEQP         R0  AA         ;        (OPCODE<>ACTIV) THEN
         JMPI         S4  URE100     ;E      REPORT ERROR
         MODC  OPSTANDBY-OPACTIV     ;     ELSE
         MOVC  OPACTIV           R0  ;       TRANSLATE OPCODE
         JMP          S5  CPMMC      ;       "CPMM&C"(R0=OPCODE)
         MOVC  CANSWER           R1  ;       GET REF TO ANSWER
         MOVC  CCOK              X1  ;       CC=OK
         MOV   AMOSEVENT         R2  ;       RETRIEVE EVENT
         MON   SENDANSWER            ;       "SENDANSWER"
         JMP              Z0100      ;       GOTO WAITEVENT:
                                     ;     ENDIF
                                     ;
Z2100:                               ;   X. UNKNOWN MESSAGE.
         JMPI         S4  URE101     ;E    REPORT ERROR
                                     ;  END CASE_OF_COMMAND
;-----------------------------------------------------------------------
Z3000:   SEQ          R0  BNANS      ;
         JMP              Z4000      ; III . A M O S _ A N S W E R.
                                     ;--------------------------------
         MOVC  AMOSEVENT         R5  ;   CASE_OF_ANSWER(1,2,3,X)
         SEQ          R2  EVTRTC.X5  ;
         JMP              Z3010      ;     1.RTC_EVENT (TIMER)
         MOVC  RTCMESBUF         R1  ;
         MOVC  RTCNAME           R0  ;     RESERVE RTC ACTION,I.E.
         MON   SENDMESSAGE           ;     "SENDMESSAGE"
         MOV          R2  EVTRTC.X5  ;     SAVE RTC EVENT
         JMP          S5  CPMTIM     ;     "CPMTIMER"
         JMP              Z3090      ;     END CASE1
Z3010:                               ;
         IEQP         R2 EVTSKAM.X5  ;     2.SIP_KAM MESSAGE RELEASE
         CLR             EVTSKAM.X5  ;     RESOLVE BUSY CONDITION
         JMP              Z3090      ;     END CASE2
                                     ;
                                     ;     X.UNKNOWN ANSWER
         JMPI         S4  URE103     ;E    REPORT ERROR
Z3090:                               ;
         JMP              Z0100      ;     GOTO WAIT EVENT
                                     ;   END CASE_OF_ANSWER
;-----------------------------------------------------------------------
                                     ;
Z4000:                               ; X. U N K N O W N _ E V E N T
                                     ; -------------------------------
         JMPI         S4  URE104     ;E  REPORT ERROR
                                     ; END CASE_OF_EVENTTYPE
;-----------------------------------------------------------------------
                                     ;
                                     ; UNRECOVERABLE_ERRORS:
                                     ; -------------------------------
ERR105:  MODC  1                     ; INVALID MESSAGES TYPE (CPMED)
ERR104:  MODC  1                     ; UNKNOWN EVENT (CPMED)
ERR103:  MODC  1                     ; UNKNOWN ANSWER (CPMED)
ERR102:  MODC  1                     ; UNKNOWN MESSAGE EVENT (CPMED)
ERR101:  MODC  1                     ; UNEXPECTED AMOS MESSAGE (CPMED)
ERR100:  MODC  100-40                ; INVALID COMMAND (CPMED)
ERR040:  MODC  40-30                 ; INVALID OPCODE (CPMMC)
ERR030:  MODC  30-20                 ; INVALID CHANNEL.NO (NMACKP)
ERR020:  MODC  20                    ; INVALID CHANNEL.NO (NMACCNT)
         MODN         R7             ;
ERR004:                              ; REGION MONITOR ERROR
ERR003:                              ; AMOS I/O MONITOR ERROR
ERR002:                              ; MTCB MONITOR ERROR
ERR001:  MOD          R7             ; MIO MONITOR ERROR
         MOVC  0                 R0  ;   GET ERRORCODE
         MOV          R4         R1  ;   GET ERRORLOCATION
         MON   TERMINATE             ;   "TERMINATE"
;-----------------------------------------------------------------------