DataMuseum.dk

Presents historical artifacts from the history of:

CR80 Hard and Floppy Disks

This is an automatic "excavation" of a thematic subset of
artifacts from Datamuseum.dk's BitArchive.

See our Wiki for more about CR80 Hard and Floppy Disks

Excavated with: AutoArchaeologist - Free & Open Source Software.


top - download

⟦69b7b595e⟧ TextFile

    Length: 7916 (0x1eec)
    Types: TextFile
    Names: »INNMSG«

Derivation

└─⟦21011a92c⟧ Bits:30005095 8" CR80 Floppy CR80FD_0052 ( HMDIR 2 VOL: BACKUP MD: ISH.D From: HMDIR*ISH.D )
    └─⟦777b1406f⟧ 
        └─ ⟦this⟧ »ISH.D!INNMSG« 

TextFile

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