|
|
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: 4908 (0x132c)
Types: TextFile
Names: »NMACCNT«
└─⟦80dc9b589⟧ Bits:30005096 8" CR80 Floppy CR80FD_0053 ( HMDIR 6 VOL: BACKUP MD: CPM.D From: HMDIR*CPM.D )
└─⟦08785f861⟧
└─⟦this⟧ »CPM.D!NMACCNT«
;-----------------------------------------------------------------------
; PROCEDURE "NARRATIVE_MSG_ACCOUNTING"(NMACCNT).
;
; NARRATIVE:
; NMACCNT PERFORMES ALL ACCOUNTING REQUIRED FOR INBOUND MESSAGES/PSEU-
; DOMESSAGES RECIEVED FROM THE 'MSS' VIA THE 'NM'-QUEUE,OR OUTBOUND
; NICS-TARE MESSAGES RECIEVED FROM FIKS.
; 1.INBOUND NARRATIVE MESSAGES:
; THE CHANNEL NO RETRIEVED FROM THE MSG-FILE HAS BEEN VALIDATED,
; AND 'CCHNO' AND 'CMSGID' LOADED.'CMSGID' IS LOADED TO XINID.XACKTAB
; AND THE MSGID RETRIVED FROM THE MTCB (MPNM) IS LOADED TO XOUT.
; XACKTAB,EITHER IN ASCII OR DECIMAL FORM DEPENDING OF WHETHER IT
; IS AN EXTERNAL OR INTERNAL CHANNEL.
; 2.INBOUND PSEUDO MESSAGE:
; THE CHANNEL NO RETRIEVED FROM THE MTCB (MPNM) IS VALIDATED,AND IF
; VALID THEN XOUTID.XACKTAB IS UPDATED AS DESCRIBED ABOVE.
; IF AN ACK IS AWAITED(FEWAIT.ENTRY) NO FURTHER PROCESSING IS PER-
; FORMED.OTHERWISE IS THE DEFAULT VALUE HELD IN 'CMSGID' COPIED TO
; XINID.XACKTAB,AND A CALL IS MADE TO 'NMACKP' TO SIMULATE THE RE-
; CEIPT OF AN ACK.
; 3.OUTBOUND NICS-TARE MESSAGES:
; THE CHANNEL.NO (R0) IS VALIDATED,AND IF CH2 THEN 'CMSGID' IS LOADED
; TO 'XINID.XACKTAB(CH2)',AND THE ENTRY IS FLAGED WAITING.
;
; REGISTER USE: ENTRY EXIT
; R0=CCHNO(ONMACCNT) KEPT
; R5=LINK R0-R7 DESTROYED
;
; CALLS TO: NMACKP
; CBINARY
;
; INPUT: CMSGID
; CCHNO
; MPNM
; XACKTAB
;
; OUTPUT: XACKTAB
; CMSGID
; CCHNO
;
; ENTRIES: INMACCNT: INBOUND NARRATIVE_MSG ACCOUNTING
; IPMACCNT: INBOUND PSEUDO MSG ACCOUNTING
; ONMACCNT: OUTBOUND NICS-TARE MSG ACCOUNTING
;
; RETURNS: LINK+0: DONE
; UREXXX: ERR0R
;-----------------------------------------------------------------------
INMACCNT: ;BEGIN INMACCNT
MOV R5 R6 ; PUSH LINK
MOD CCHNO ;
MOV XACKTAB R4 ; ENTRY:=XACKTAB(CCHNO)
SETS X4 FEWAIT ; SETS ENTRY WAITING
O110: MOD R4 ;
MOVC XINID R2 ; OBJ=XINID.ENTRY
MOVC CMSGID R7 ; SOURCE=CMSGID
MODC MSGIDL ;
MOVM X7 X2 ; LOAD XINID.ENTRY
O120: MOVC MPRWD4+MPNM R7 ; REF.TO ID IN MTCB
IBZ X4 FINTRNL ; IF AN EXTERNAL CHANNEL THEN
JMP S5 CBINARY ; "CONVERT BINARY=>ASCII"
MOD R4 ;
MOVC XOUTID R2 ;
MODC MSGIDL ;
MOVM X7 X2 ; LOAD XOUTID.ENTRY
JMP 0. X6 ; RETURN LINK+0
;
IPMACCNT: ;BEGIN IPMACCNT
MOV R5 RLO200 ;
MOV MPPWD5+MPNM R0 ; RERIEVE CHANNO FORM MTCB
SRL R0 8 ;
SLO R0 CH2+1 ;
SLO R0 CH6+1 ; IF NOT (CH2<CHNO<=CH6) THEN
JMPI & S4 URE020 ;E REPORT ERROR
MOV R0 CCHNO ; ELSE
MOVC MPPWD2+MPNM R4 ; POSITION MSGID AS STORED
MOVC MPRWD4+MPNM R5 ; IN REAL MTCB
MODC MSGIDL ;
MOVM X4 X5 ;
MOD R0 ;
MOV XACKTAB R4 ; ENTRY=XACKTAB(CCHNO)
SBNP X4 FEWAIT ; IF ENTRY WAITING THEN
JMP S6 O120 ; LOAD XOUTID
JMP O210 ; ELSE
JMP S6 O110 ; LOAD XINID AND XOUTID
SETS X4 FEWAIT ; FLAG ENTRY WAITING
; 'SIMULATE ACK',I.E.CALL
JMP S5 IMACKP ; "NARR.MSG_ACK_PROCESSING"
O210: ; ENDIF
JMPI RLO200 ; RETURN LINK+0
;
ONMACCNT: ;BEGIN ONMACCNT
SEQ R0 CH2 ; IF (CCHNO<>CH2) THEN
JMPI & S4 URE020 ;E REPORT ERROR
MOD R0 ; ELSE
MOV XACKTAB R4 ; GET ACKTAB(CCHNO)
SETS X4 FEWAIT ; FLAG ENTRY WAITING
ADDC XINID R4 ;
MOVC CMSGID R1 ; COPY CMSGID TO
MODC MSGIDL ; XINID.ENTRY(CCHNO)
MOVM X1 X4 ;
JMP 0. X5 ; RETURN LINK+0
; ENDIF
;END NMACCNT
;----------------------------------------------------------------------- ▶1a◀