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