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: 2742 (0xab6) Types: TextFile Names: »MS1020.S«
└─⟦b5acf5c79⟧ Bits:30005104 8" CR80 Floppy CR80FD_0063 ( VOL: SCC.V MSS Directory: MS2.D ) └─⟦f918199fd⟧ └─ ⟦this⟧ »MS2.D!MS1020.S«
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)