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: 7916 (0x1eec) Types: TextFile Names: »INNMSG«
└─⟦21011a92c⟧ Bits:30005095 8" CR80 Floppy CR80FD_0052 ( HMDIR 2 VOL: BACKUP MD: ISH.D From: HMDIR*ISH.D ) └─⟦777b1406f⟧ └─ ⟦this⟧ »ISH.D!INNMSG«
;---------------------------------------------------------------------- ; PROCEDURE "IN_NARRATIVE_MESSAGE"(INNMSG). ; ; NARRATIVE: ; THE NARRATIVE MESSAGE,DESIGNATED BY CURRENT MTCB INDEX(CMTCBX) IS ; INSPECTED,TO RETAIN DTG,MSGID,RMASK AND CHAN.NO,WHICH ARE STORED IN ; CDTG,CMSGID,CRMASK AND CCHNO RESPECTIVELY. ; ; REGISTER USE: ENTRY EXIT ; R5 LINK DESTROYED ; R0-R7 - DESTROYED ; ; CALS TO: MIO,MOPEN ; MIO,MSETPOS ; MIO,MLOAD ; MIO,MCLOSE ; ; RETURNS: LINK+0:DONE ; UREXXX:ERROR ; ; INPUT: CMTCBX ; ; OUTPUT: CMSGID ; CCHNO ; CDTG ; CRMASK ; CAPREC ; ; WORK: NMMFDCB ; CALISTL ; CALISTR ;---------------------------------------------------------------------- INNMSG: ;BEGIN INNMSG. MOV R5 RLL100 ; SAVE LINK MOV CMTCBX R0 ; GET MTCB INDEX MOVC NMMFDCB R4 ; GET REF.TO MFDCB MON MIO,MOPEN ; "OPEN"(R0=MTCBX,R4=MFDCB) JMPI & S4 URE001 ;E X0:MFDCB ERROR,REPORT ERROR ; X1:MFDCB OPENED ; (NOTE:POSITION BY DEFAULT=0 ; I.E. START OF BIN HEADER) MON MIO,MLOAD ; "LOADBINHEAD"(R4=MFDCB) JMPI & S4 URE001 ;E X0:ERROR,REPORT ERROR MOD R4 ; X1:DONE (MFDDAT LOADED) MOVC MFDDAT R5 ; GET REF.TO MFDDAT.MFDCB MOV BHAPREC.X5 R0 ; GET ACTION PREC. XTR R0 8 ; AND STORE IT MOV R0 CPREC ; MOV BHALST.X5 R0 ; READ AND STORE ADDRESS- MOV R0 CALISTR ; LIST-REFERENCE. MOV BHLGTH.X5 R0 ; READ MESSAGE LENGTH SUB CALISTR R0 ; AND CALCULATE ALIST LENGTH SRL R0 1 ; IN WORDS MOV R0 CALISTL ; MOVL BHRTIM0.X5 R01 ; READ DTG AND STORE IN MODN R7 ; CURRENT DTG (CDTG). MOVL R01 CDTG. X7 ; MOVL BHRMSK0.X5 R01 ; READ ROUTING MASK AND MODN R7 ; STORE IT IN CURRENT RMASK MOVL R01 CRMASK.X7 ; MOV BHMIDR.X5 R0 ; READ OFFSET TO MSGID,AND MON MIO,MSETPOS ; "SETPOSITION"(MSGID) JMPI & S4 URE001 ;E X0:ERROR,REPORT ERROR ; X1:DONE,POS:=MSGID MON MIO,MLOAD ; "LOADMSGID"(R4=MFDCB) JMPI & S4 URE001 ;E X0:ERROR,REPORT ERROR ; X1:DONE,MFDDAT LOADED MOVC CMSGID R6 ; GET REF.TO MSGID STORAGE MODC MSGIDL ; MOVM X5 X6 ; STORE MSGID ; L110: ; FOR ALL ALIST SEGMENTS DO MOV CALISTR R0 ; GET SEGMENT STARTADDRESS MON MIO,MSETPOS ; "SETPOSITION"(R0=START) JMPI & S4 URE001 ;E X0:ERROR,REPORT ERROR ; X1:DONE MON MIO,MLOAD ; "LOAD ADDRESSLIST" JMPI & S4 URE001 ; X0:ERROR,REPORT ERROR MOVC 0 R3 ; X1:DONE,PRESET INDEX L120: ; FOR ANO'S IN CURRENT SEGM DO MOD CALISTL ; SLO R3 0 ; IF ADDRESSLIST DONE THEN JMP L180 ; GOTO UNKNOWN_CHNO: MOD R3 ; ELSE MOV MFDDAT.X4 R0 ; GET NEXT ANO ; ENDIF JMP S5 GETCHNO ; "GETCHNO"(R0=ANO) JMP & L130 ; X0:NOT RECOGNIZED,CONTINUE JMP L190 ; X1:R0=CHNO,GOTO LOAD_CHNO: L130: ; ILOP R3 SEGMWS-1 ; ADDC 1 R3 ; INDEX=INDEX+1 JMP L120 ; END FOR ALL ANO'S MOV CALISTL R0 ; ADDC -SEGMWS R0 ; UPDATE REMAIN ALIST LENGTH MOV R0 CALISTL ; MOV CALISTR R0 ; CALCULATE START OF NEXT SEGM ADDC SEGMBS R0 ; MOV R0 CALISTR ; AND STORE IT AS CURR. SEGM. JMP L110 ; END FOR ALL ALIST SEGMENTS ; L180: ;UNKNOWN_CHNO: MOVC FALSE R0 ; L190: ;LOAD_CHNO: MOV R0 CCHNO ; MON MIO,MCLOSE ; "CLOSE"(R4=MFDCB) JMPI & S4 URE001 ;E X0:ERROR,REPORT ERROR ; X1:DONE,MFDCB CLOSED JMPI RLL100 ; RETURN LINK+0 ;END INNMSG. ;---------------------------------------------------------------------- ; LOCAL SUBROUTINE "GET_CHANNEL_NO" (GETCHNO). ; ; NARRATIVE: ; AN ANO (R0) IS SEARCH IN 'ANOTABLE'.IF FOUND THE CORRESPONDING ; CHANNELNO (AS DEFINED BY ANOTABLE) IS READ,AND RETURN MADE TO LINK+1 ; ELSE RETURN TO LINK+0. ; ; REGISTER USE: ENTRY EXIT ; R0 ANO CHNO ; R1,R2 - DESTROYED ; R5 LINK KEPT ; R7 - DESTROYED ; ; RETURNS: LINK+0:NOT FOUND ; LINK+1:FOUND ;---------------------------------------------------------------------- ANOTABLE:LOC=0 ; ANO=>CHNO TABLE SIPMID<8+203 ,CH3 ; SIPMID<8+204 ,CH4 ; SIPMID<8+205 ,CH5 ; SIPMID<8+206 ,CH6 ; XMEDEID<8+3 ,CH0 ; XMEDEID<8+4 ,CH1 ; ANOTBL:=LOC/2 ; XMEDEID<8+5 ; XMEDEID<8+197,CH2 ; LOC=ANOTABLE+LOC ; ;---------------------------------------------------------------------- GETCHNO: ;BEGIN GETCHNO MOVC ANOTABLE R7 ; GET REF.TO TABLE MOVC ANOTBL R1 ; AND LENGTH XTR R0 13 ; L210: ; UNTIL TABLE DONE DO MVP 0. X7 R2 ; IEQP R0 R2 ; IF ANO=ANO.ENTRY THEN MVP 1. X7 R0 ; R0:=CHNO.ENTRY JMP 1. X5 ; RETURN LINK+1 ADDC 2 R7 ; ENDIF SOB R1 L210 ; ENDUNTIL MOV R0 R1 ; SRL R0 8 ; BEGIN SPECIAL RANGE SEARCH INE R0 XMEDEID ; IF (NOT 'X'-ANO) OR JMP 0. X5 ; MVP 1. X7 R2 ; SHSP R1 R2 ; (OUT OF RANGE) THEN MVP 0. X7 R0 ; SHS R1 R0 ; RETURN LINK+0 JMP 0. X5 ; ELSE MVP 2. X7 R0 ; GET CHANNEL NO JMP 1. X5 ; RETURN LINK+1 ; ENDIF ; END ;END GETCHNO ;---------------------------------------------------------------------- ▶1a◀