|
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 - 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◀