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

⟦f2d24ee4d⟧ TextFile

    Length: 2742 (0xab6)
    Types: TextFile
    Names: »MS1020.S«

Derivation

└─⟦b5acf5c79⟧ Bits:30005104 8" CR80 Floppy CR80FD_0063 ( VOL: SCC.V MSS Directory: MS2.D )
    └─⟦f918199fd⟧ 
        └─ ⟦this⟧ »MS2.D!MS1020.S« 

TextFile

MESSAGE <:MS1020.S V810311:>
;-----------------------------------------------------------------------
; SUBROUTINE MS1020
; READ FIKS RECORD.
;
; CALL TO:    MON    STREAM,    (INREC,INBYTE)
;
; REGISTERS          CALL               EXIT
; R4                 LINK               DEST
; R6                 REF(IOCB)          REF(IOCB)
; R0,R1,R2,R7        -                  DEST
; R3,R5              -                  UNCHANGED
;
; INPUT:   IOCB DATA, FILE
; OUTPUT:  IOCB DATA, IOBUF.IOCB DATA
; EXIT TO: LINK+0 (FILE EMPTY)
;          LINK+1 (DONE)
;          MSE110 (ERROR)
;-----------------------------------------------------------------------
MS1020:                             ; READ FIKS RECORD:
        MOV   IOFLT. X6         R0  ;   GET FILE LENGTH
        MOV   IOFNX. X6         R1  ;   AND CURRENT INDEX TO 1ST BYTE
        ADD   IOBLT. X6         R1  ;   COMPUTE NEW INDEX
        IEQ          R0         R1  ;   IF FILE EMPTY
        JMP              0.     X4  ;R  THEN RETURN(0)
        ADDC  1                 R4  ;   PREPARE EXIT(1)
        MOV          R4  RL1000     ;   SAVE RETURN LINK
        MOV          R3  WK1000     ;   SAVE R3
        MOV          R1  IOFNX. X6  ;   SAVE NEW FILE INDEX
        ADDC  2                 R1  ;   UPDATE FILE INDEX BY <ST><BC>
        IHS          R1         R0  ;   IF NEW INDEX PAST FILE LENGTH
        JMPI         S4  MIE100     ;E  THEN FILE ERROR
        MOV   IOST.  X6         R4  ;   GET STREAM HANDLE
        MON   STREAM,    INBYTE     ;   READ <ST>
        JMPI  &      S4  MIE110     ;E  (NOT READ)
        INE          R3  STCHAR     ;   IF NOT AS EXPECTED
        JMPI         S4  MIE100     ;E  THEN FILE ERROR
        MON   STREAM,    INBYTE     ;   READ <BC> (BYTE COUNT)
        JMPI  &      S4  MIE110     ;E  (NOT READ)
        MOV          R3         R2  ;   POSITION BLOCK LENGTH
        MOV          R2  IOBLT. X6  ;   SAVE BLOCK LENGTH
        MOV   IOBUF. X6         R1  ;   GET BUFFER ADDR
        MOD   BLKSIZ                ;   IF TOO LARGE BLOCK REQUSETED
        IHS          R2  -2         ;
        JMPI         S4  MIE100     ;   THEN FILE ERROR
        ADDC  1                 R1  ;   SKIP SPACE FOR <ST><BC>
        MON   STREAM,    INREC      ;   READ BLOCK
        JMPI  &      S4  MIE110     ;E  (NOT READ)
        MOD   IOBLT. X6             ;   IF NOT GOT WHAT REQUESTED
        INE          R2  0          ;
        JMPI         S4  MIE100     ;E  THEN FILE ERROR
        MOVC  2                 R1  ;
        ADD          R1  IOBLT. X6  ;   UPDATE BLOCK LENGTH BY 2
        MOV          R1  IOBNX. X6  ;   SET BUFFER INDEX TO 1ST DATA
        MOV   WK1000            R3  ;   RESTORE R3
        JMPI             RL1000     ;R  RETURN(1)