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

⟦357625ef8⟧ TextFile

    Length: 7340 (0x1cac)
    Types: TextFile
    Names: »NMACKP«

Derivation

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

TextFile

;----------------------------------------------------------------------
; PROCEDURE "NARRATIVE_MSG_ACK_PROCESSING"(NMACKP).
;
; NARRATIVE:
; NMACKP IS INVOKED WHEN THE FOLOWING TREE TYPES OF ACKNOWLEDGEMENTS
; IS ENCOUNTERED/GENERATED BY CPMED:
; 1. AN ACK FOR OUTBOUND NICS-TARE MSG (CH2),RECIEVED FROM THE MSS
;    IN AN PSEUDO MTCB,WHICH IS FORWARDED IN THE SIPMAILBOX AS AN
;    ACK TO FIKS.
;
; 2A.ACK'S RECEIVED IN SIP-KEEP-ALIVE-MESSAGES (CH3-CH6).
;    CH3 AND CH4 ARE CONVERTED TO CH0 AND CH1 ACK'S RESPECTIVELY,AND
;    MAILED IN THE SIPMAILBOX,AND CH5 AND CH6 ACK'S ARE FORWARDED
;    TO THE MSS.
;
; 2B.ACK'S GENERATED UPON RECEIPT OF AN PSEUDO_NARR.MSG FROM MSS
;    WHICH ARE SUBSTITUTES FOR A REAL MESSAGES INTERCEPTED BY THE MSS,
;    AND SERVES TO MAINTAIN MESSAGE CONTINUITY (CH0-CH2).THESE ACK'S
;    ARE MAILED IN THE SIPMAILBOX,AND FORWARDED TO FIKS.
;
; IN CASE 2.AND 3.,THE CHAN.NO HAS BEEN VALIDATED AND LOADED TO 'CCHNO,
; AND THE CURRENT MSGID LOADED TO 'CMSGID'.
; IN CASE 1.HOWEVER,THE CHAN.NO MUST BE VALIDATED,AND 'CCHNO' AND
; 'CMSGID' RETRIEVED FROM THE PSEUDO_MTCB (MPNC).
;
; THE CORRELATION BETWEEN INBOUND AND OUTBOUND ACK'S IS DEFINED BY
; THE TABLE 'XACKTAB'.
;
; REGISTER USE:       ENTRY              EXIT
;                     R5=LINK            R0-R7 DESTROYED
;
; INPUT:       CCHNO
;              CMSGID
;              MPNC
;              XACKTAB
;
; OUTPUT:      XACKTAB
;              SIPMAILBOX
;              QUEUE_MC
;
; WORK:        MPACK
;
; CALLS TO:    CBINARY
;              MON MTCB,CREATEMTCB/RELEASEMTCB
;              MON REGION,RENTER/RPUT/RPUN/RLEAVE
;              MON MIO,MPUTMTCB/MENQQE
;
; ENTRIES:     OMACKP:    MSS_ACK PROCESSING
;              IMACKP:    SIP- AND PESUDO ACK PROCESSING
;
; RETURNS:     LINK+0:    DONE
;              UREXXX:    ERROR
;----------------------------------------------------------------------
OMACKP:                              ;BEGIN OMACKP
         MOV          R5  RLP100     ;   SAVE LINK
         MOVC  MPPWD2+MPNC       R7  ;   GET REF TO ACK BUFFER
         MOV   MPPWD5-MPPWD2.X7  R4  ;
         SRL          R4  8          ;   READ CHANNEL NO.
         MOV          R4  CCHNO      ;   AND STORE IT
         SEQ          R4  CH2        ;   IF CHANNO<>CH2 THEN
         JMPI  &      S4  URE030     ;E    REPORT ERROR
         MOV  XACKTAB.X4         R4  ;   GET ACKTAB(CCHNO)
         SBN          X4  FEWAIT     ;   IF ENTRY NOT ACTIV THEN
         JMP              0.     X5  ;     IGNORE ACK,RETURN LINK+0
                                     ;   ELSE
         JMP          S5  CBINARY    ;     "CONVERT_BINARY"(R7)
         MOD          R4             ;
         MOVC  XOUTID            R1  ;
         MODC  MSGIDL                ;     COPY ACKID(ACKBUF,XOUTID)
         MOVM         X7         X1  ;
         MOD          R4             ;     BEGIN COMPARE ID'S
         MOVC  XINID+MSGIDL      R2  ;
         MOVC  MSGIDL            R0  ;
P110:    DECD         R1         R2  ;
         SNEP         X1         X2  ;     IF (XOUTID=XINDID) THEN
         SOB          R0  P110       ;       (I.E. LAST RECEIVED)
         RELS         X4  FEWAIT     ;       FLAG ENTRY NOT WAITING
                                     ;     ENDIF
         JMP              P250       ;     GOTO MAIL_ACK:
                                     ;   ENDIF
                                     ;
IMACKP:                              ;BEGIN IMACKP
         MOV          R5  RLP100     ;   SAVE LINK
         MOD   CCHNO                 ;
         MOV   XACKTAB           R4  ;   ENTRY=XACKTAB(CCHNO)
         SBN          X4  FEWAIT     ;   IF ENTRY NOT WAITING THEN
         JMPI             RLP100     ;     IGNORE IT,RETURN LINK+0
         MOV          R4         R2  ;   BEGIN COMPARE ID'S
         ADDC  XINID             R2  ;
         MOVC  CMSGID            R1  ;
         MOVC  MSGIDL            R0  ;
P210:    SEQ          X1         X2  ;   IF INID.XACKTAB<>CMSGID THEN
         JMPI             RLP100     ;     IGNORE ACK,RETURN LINK+0
         INCD         R1         R2  ;
         SOB          R0  P210       ;   END COMPARE
         RELS         X4  FEWAIT     ;   STATUS.ENTRY=NOT WAITING
         SBN          X4  FINTRNL    ;   IF INTERNAL ACK OUT THEN
         JMP              P250       ;
         MOV   XOUTCH.X4         R0  ;     GET OUT CHANNEL NO
         MOD          R4             ;
         MOVC  XOUTID            R2  ;     GET REF.TO OUT_ID
         MOVC  MPACK             R4  ;     GET PREASSEMBLED ACK
         SLL          R0  8          ;     PSEUDO_MTCB (MPACK)
         IOR          R0  MPPWD5.X4  ;     LOAD CHANNEL NO
         MOD          R4             ;
         MOVC  MPPWD2            R1  ;     R1:=OBJ
         MODC  MSGIDL                ;     (R2:=SOURCE)
         MOVM         X2         X1  ;     LOAD OUTID.XACKTAB(CCHNO)
                                     ;     TO PSEUDO_MTCB
         MOVC  MOPCWAIT          R0  ;
         MOVC  MMTYPPSEUDO       R1  ;
         MON   MTCB,CREATEMTCB       ;     "CREATE_MTCB"(PSEUDO)
         JMPI  &      S4  URE002     ;E    X0:ERROR,REPORT ERROR
                                     ;     X1:R0:=MTCBX
         MON   MIO,MPUTMTCB          ;     LOAD MTCB
         JMPI  &      S4  URE002     ;E    X0:ERROR,REPORT ERROR
                                     ;     X1:R0=MTCBX
         MOVC  QDMC              R4  ;     QUEUE=MC
         MON   MIO,MENQQE            ;     "ENQUEUE_QE"(R0=MTCB,R4=QD)
         JMPI  &      S4  URE001     ;E    X0:ERROR,REPORT ERROR
                                     ;     X1:ACK ENQUEUED
         MON   MTCB,RELEASEMTCB      ;     "RELEASE-MTCB"
         JMPI  &      S4  URE002     ;E    X0:ERROR,REPORT ERROR
         JMPI             RLP100     ;     X1:DONE,RETURN LINK+0
P250:                                ;   ELSE (MAIL_ACK:)
         MOV   XOUTCH.X4         R5  ;     GET OUT CHANNEL NO
         INC              ACKSN. X5  ;     UPDATE ACK_SEQNO
         SON              ACKSN. X5  ;
         INC              ACKSN. X5  ;
         MOVC  SIPMAILBOX        R0  ;     REGION=SIPMAILBOX
         MON   REGION,RENTER         ;     ENTER SIPMAILBOX
         JMPI  &      S4  URE004     ;E    X0:ERROR,REPORT ERROR
                                     ;     X1:MAILBOX ENTERED
         MOD   AMAILX.X5             ;
         MOVC  MBXAX             R1  ;     R1=ACK(CHNO)_INDEX
         MOV   ACKSN. X5         R2  ;     R2=ACKSEQNO(CHNO)
         MON   REGION,RPUT           ;     MAIL ACKSEQNO
         JMPI  &      S4  URE004     ;E    X0:ERROR,REPORT ERROR
         ADDC  AMSGID-ASEQNO     R1  ;     INDEX=INDEX+1
         MOD          R4             ;
         MOVC  XOUTID            R2  ;     SOURCE=OUTID.XACKTAB(CCHNO)
         MOVC  MSGIDL            R3  ;     N=MSGIDLENGTH
         MON   REGION,RPUTN          ;     MAIL ACKMSGID
         JMPI  &      S4  URE004     ;E    X0:ERROR,REPORT ERROR
         MON   REGION,RLEAVE         ;     LEAVE SIPMAILBOX
         JMPI  &      S4  URE004     ;E    X0:ERROR,REPORT ERROR
                                     ;     X1:MAILBOX LEFT
         JMPI             RLP100     ;     RETURN LINK+0
                                     ;   ENDIF
                                     ;END NMACKP.
;---------------------------------------------------------------------- ▶1a◀