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: 11414 (0x2c96) Types: TextFile Names: »CPMMC«
└─⟦80dc9b589⟧ Bits:30005096 8" CR80 Floppy CR80FD_0053 ( HMDIR 6 VOL: BACKUP MD: CPM.D From: HMDIR*CPM.D ) └─⟦08785f861⟧ └─ ⟦this⟧ »CPM.D!CPMMC«
;---------------------------------------------------------------------- ; PROCEDURE "CPM-MONITORING&CONTROL" (CPMM&C). ; ; NARRATIVE: ; CPMM&C IS ENVOKED BY CPMED WHEN ONE OF THE FOLLOWING EVENTS IS EN- ; COUNTERED: * A SYNC_MESSAGE ; * A MODECHANGE COMMAND ; * SYNC_TIMER EXPIRED ; * SYNC_MSG ACKNOWLEDGEMENT ; * MSS CONTROL COMMANDS/RESPONSES ; AND AS SPECIFIED BY OPCODE.(REF. TO JUMP TABLE BELOW). ; ; 1.GO_STANDBY COMMAND: ; IF ACTIVE,AND IF IN SYNC_MODE,THEN THE SYNC_TIMER IS STOPPED, ; ELSE ALL MSG'S HELD IN TMQ(IF ANY) ARE RETURNED TO PMQ. ; 2.GO_ACTIV COMMAND: ; IF CPMMODE IS STANDBY,THEN A SYNC_MESSAGE IS GENERATED AND TRANS- ; MITTED TO THE COLLOCATED 'SIP',THE SYNC_TIMER STARTED,AND CPMMODE ; IS CHANGED TO 'ACTIVE'&'HUNT'&'SYNC'. ; 3.SEND_SYNC_MESSAGE/SYNC_ACK_TIMEOUT. ; AN SYNC_MESSAGE IS GENERATED,AND TRANSMITTED TO COLLOCATED 'SIP', ; AND THE SYNC_TIMER IS STARTED. ; 4.SYNC_MESSAGE ACKNOWLEDGEMENT. ; IF CPMMODE IS HUNT,AND ACKSEQNO=SYNCSEQNO IT SIGNALS,THAT ALL OUT- ; BOUND CHANNELS ARE 'INSYNC'.CPMMODE IS CHANGED TO OUTPUT-ACTIVE, ; AND EXIT SYNC,AND THE 'NM'-QUEUE IS RESCHEDULED (SENDSIGNAL). ; 5.INBOUND SYNC_MESSAGE. ; THE SYNC_MSG IS ACKNOWLEDGED (SEQNO MAILED IN SIPMAILBOX),AND ; CPMMODE CHANGED FROM 'HUNT' TO 'INPUT-ACTIV'. ; 6.MSS CONTROL. ; A.AN OPEN/CLOSE COMMAND (AS DEFINED BY CMSSPARM) IS SENT TO THE ; MSS SUBSYSTEM. ; B.PROCESSING OF MSS REPORTS. ; 7.NTS CONTROL. ; A.AN SETUP/OPEN/CLOSE COMMAND IS SENT TO THE NTS SUBSYSTEM(VIA MSS) ; AS DEFINED BY CNTSPARM. ; B.THE NTS STATUS IS UPDATED IN ACCORDANCE TO REPORTS RECIEVED. ; ; INPUT: CPMMODE ; CMSSPARM ; CNTSPARM ; OSYNCSN ; KAMSSN.CMCDAT ; ; OUTPUT: CPMMODE ; OSYNCSN ; CTRLMSG->TQ ; ; WORK: MPCMSG ; ; CALLS TO: TRANSMIT_MSG ; GENERATECTRLMSG ; ENQUEUEBUFFER ; DEQUEUEBUFFER ; CPM_TIMER ; MON SENDSIGNAL ; ; REGISTER USE: ENTRY EXIT ; R0 OPCODE DESTROYED ; R5 LINK DESTROYED ; RX - DESTROYED ; ; RETURNS: LINK+0:DONE ; UREXXX:ERROR ;---------------------------------------------------------------------- ; ; CASE_OF_EVENT JUMP TABLE: ; ;---------------------------------------------------------------------- CPMEVENT: LOC=0 MINOPCODE: OPSTANDBY: R110 OPACTIV: R120 OPSYNC: R130 OPACK: R140 OPHUNT: R150 OPMSSC: R160 OPMSSR: R165 OPNTSC: R170 MAXOPCODE: OPNTSR: R175 LOC=LOC+CPMEVENT ;---------------------------------------------------------------------- CPMMC: ;BEGIN CPMM&C MOV R5 RLR100 ; SAVE LINK SLO R0 MINOPCODE ; IHS R0 MAXOPCODE ; IF OPCODE OUT_OF-RANGE THEN JMPI S4 URE040 ;E ERROR,REPORT ERROR MOD R0 ; JMPI CPMEVENT ; CASE OF EVENT(1,2,3,4,5,6) ; ; R110: ; 1.MODECOMMAND=STANDBY: ;---------------------------- MOVC CPMOPM R2 ; READ CPM_OPMODE IBN X2 FSYNC ; IF OPMODE=SYNC THEN JMP S5 SSYNTIM ; "STOP_SYNC_TIMER" ; 'UPDATE CPMMODE' MOVC 1<FSTANDBY X2 ; CPMMODE=STANDBY MOVC CMDCL R0 ; COMD:=CLOSE MSS JMP R162 ; GOTO SEND MSS-COMMAND: ;---------------------------------------------------------------------- ; R120: ; 2.MODECOMMAND=ACTIV: ;---------------------------- MOVC CPMOPM R0 ; READ CPMMODE IBN X0 FACTIV ; IF CPMMODE=ACTIV THEN JMP R190 ; GOTO DONE: MOVC 1<FACTIV+1<FHUNT% ; ELSE +1<FSYNC X0 ; UPDATE CPM-OPMODE JMP R130 ; GOTO SEND SYNC_MSG ; ENDIF ;---------------------------------------------------------------------- R130: ; 3.SEND SYNC_MESSAGE. ;--------------------------------- MOVC OSYNCSN R4 ; INC 0. X4 ; UPDATE OUTBOUND SYNC_SEQNO. SON 0. X4 ; INC 0. X4 ; R4=REF.TO DATA MOVC 1 R1 ; R1=DATA SIZE MOVC TCIPSYN R0 ; R0=TYPE_SYNCMSG JMP S5 GENCTRLMSG ; "GENEARATE_SYNCMSG" JMP & R138 ; X0:NO PDB'S,SKIP XMIT. ; X1:R0=MTCB INDEX MOVC SIPRMSK0 R2 ; GET SIP ROUTING MASK MOVC SIPRMSK1 R3 ; MOVC MPCMSG R4 ; AND REF.TO PRE.ASS. MPCB JMP S5 TRANSMSG ; "TRANSMIT_MSG" R138: ; JMP S5 PSYNTIM ; "START_SYNC_TIMER" JMP R190 ; GOTO DONE: ; ;---------------------------------------------------------------------- R140: ; 4.SYNC_MESSAGE ACKNOWLEDGEMENT. ;---------------------------- MOV KAMSSN+CMCDAT R0 ; READ SYNC_ACK_SEQNO. MOV OSYNCSN R1 ; AND OUTBOND SYNC_SEQNO. SEQ R0 R1 ; IF PROPER SYNC_ACK THEN JMP R146 ; MOVC CPMOPM R0 ; UPDATE CPM_OPMODE,I.E. RELS X0 FSYNC ; EXIT SYNC MODE SETS X0 FOACTIV ; ENTER OUTPUT ACTIVE JMP S5 SSYNTIM ; "STOP_SYNC_TIMER" MOVC CPMNAME R0 ; 'ENSURE SERVICE OF NM_QUEUE' MON SENDSIGNAL ; "SEND_SIGNAL" MOVC CMDOP R0 ; COMD:=OPEN MSS JMP R162 ; GOTO SEND MSS-COMMAND R146: ; ENDIF JMP R190 ; GOTO DONE: ;---------------------------------------------------------------------- ; R150: ; 5.INBOUND SYNCMESSAGE ;---------------------------- MOVC CPMOPM R0 ; READ CPM_OPMODE SBN X0 FACTIV ; IF CPM_OPMODE=ACTIVE THEN JMP R158 ; UPDATE CPM_OPMODE,I.E. RELS X0 FHUNT ; EXIT HUNT MODE SETS X0 FIACTIV ; INPUT ACTIVE MOVC SIPMAILBOX R0 ; BEGIN MAIL SYNC_MSG_ACK MON REGION,RENTER ; "REGION_ENTER" JMPI & S4 URE004 ;E X0:ERROR,REPORT ERROR ; X1:SIPMAILBOX ENTERED MOVC MBXSSN R1 ; GET SYNC_ACK_INDEX MOV SMSGSN+CMCDAT R2 ; READ SYNC_SEQNO MON REGION,RPUT ; "REGION_PUT"(SYNC_ACK) JMPI & S4 URE004 ;E X0:ERROR,REPORT ERROR ; X1:SYNC_ACK MAILED MON REGION,RLEAVE ; "REGION_LEAVE" JMPI & S4 URE004 ;E X0:ERROR,REPORT ERROR ; X1:REGION LEFT R158: ; ENDIF JMP R190 ; GOTO DONE: ;---------------------------------------------------------------------- ; R160: ; 6.MESSAGE_SERVICE CONTROL: ;---------------------------- ; A.MSS COMMAND. MOV CMSSPARM R0 ; GET COMMAND SEQP R0 CMDOP ; SEQ R0 CMDCL ; IF (ILLEGAL COMD) THEN JMP R190 ; IGNORE IT R162: ; ELSE MOVC MPMC R4 ; GET PREASSEMBLED PMTCB MOV R0 MPPWD2.X4 ; AND LOAD COMMAND MOVC MOPCWAIT R0 ; MOVC MMTYPPSEUDO R1 ; MON MTCB,CREATEMTCB ; "GET_PSEUDO_MTCB" JMPI & S4 URE002 ;E MON MIO,MPUTMTCB ; "WRITE_MTCB" JMPI & S4 URE001 ;E MOVC QDMC R4 ; DEST QUEUE MC MON MIO,MENQQE ; "ENQUEUE_MTCB" JMPI & S4 URE001 ;E MON MTCB,RELEASEMTCB ; "RELEASE_MTCB" JMPI & S4 URE002 ;E JMP R190 ; GOTO DONE: ; ENDIF ; R165: ; B. MSS REPORT ; IGNORE IT JMP R190 ; GOTO DONE: ;---------------------------------------------------------------------- ; R170: ; 7.NICS_TARE CONTROL: ;--------------------------------- MOV CNTSPARM R0 ; A. NICS-TARE COMMAND: SEQP R0 NTLCS ; IF COMD SETUP OR CLOSE THEN SEQ R0 NTLCO ; STATUS:=STANDBY MODC SS-AA ; ELSE MOVC AA R2 ; STATUS:=OPEN ; ENDIF R172: ; MAIL NICS-TARE STATUS: MOVC SIPMAILBOX R0 ; MON REGION,RENTER ; "ENTER SIPMAILBOX" JMPI & S4 URE004 ;E MOVC MBXNTS R1 ; INDEX:=N/T STATUS MON REGION,RPUT ; LOAD NEW STATUS JMPI & S4 URE004 ;E MON REGION,RLEAVE ; "LEAVE REGION" JMPI & S4 URE004 ;E JMP R190 ; GOTO DONE: ; R175: ; B. NICS-TARE REPORT: MOV CNTSPARM R2 ; READ REPORT STATUS INE R2 CCOK ; IF STATUS <> OK THEN MOVC OO R2 ; NICS-TARE STATUS=NOT SETUP JMP R172 ; MAIL NICS-TARE STATUS: JMP R190 ; ENDIF ;---------------------------------------------------------------------- ; ENDCASE ; R190: ; DONE: JMPI RLR100 ; RETURN LINK ;END CPMM&C ;---------------------------------------------------------------------- ▶1a◀