|
|
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: 7340 (0x1cac)
Types: TextFile
Names: »NMACKP«
└─⟦80dc9b589⟧ Bits:30005096 8" CR80 Floppy CR80FD_0053 ( HMDIR 6 VOL: BACKUP MD: CPM.D From: HMDIR*CPM.D )
└─⟦08785f861⟧
└─⟦this⟧ »CPM.D!NMACKP«
;----------------------------------------------------------------------
; 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◀