home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
ftp.barnyard.co.uk
/
2015.02.ftp.barnyard.co.uk.tar
/
ftp.barnyard.co.uk
/
cpm
/
walnut-creek-CDROM
/
SIMTEL
/
CPMUG
/
CPMUG051.ARK
/
DISKIO2-.DOC
< prev
next >
Wrap
Text File
|
1984-04-29
|
6KB
|
243 lines
CP/M DISK I/O PACKAGE
VERSION 2.X 08/17/78
COMPATIBLE WITH MICROSOFT FORTRAN
DICK CURTISS
843 NW 54TH
SEATTLE, WASHINGTON
98107
(206) 784 8018
FORTRAN USAGE:
INTEGER DOPEN , DCLOSE , GCLOSE
INTEGER BREAD , BWRITE
INTEGER LREAD , LWRITE
INTEGER DATABYTE , LINE(40) , STATUS
INTEGER MCOUNT , ACOUNT
INTEGER FILETABLE(83) , FILENAME(6)
DATA FILETABLE(1) , FILETABLE(2) / 0 , 'XX' /
DATA FILENAME / 'B:' , 'FN' , 'AM' , 'E.' , 'TX' , 'T ' /
OPEN DISK FILE:
1
STATUS = DOPEN ( FILETABLE , FILENAME , 2 )
3
1 READ ACCESS
2 WRITE ACCESS - NO DELETE
3 WRITE ACCESS WITH DELETE
IF ( STATUS .NE. 0 ) GO TO ...... ERROR
CLOSE DISK FILE:
STATUS = DCLOSE ( FILETABLE )
IF ( STATUS .NE. 0 ) GO TO ...... ERROR
CLOSE ALL OPEN FILES
STATUS = GCLOSE ( 0 )
READ BYTE FROM DISK FILE:
DATABYTE = 0
STATUS = BREAD ( FILETABLE , DATABYTE )
IF ( STATUS .EQ. 255 ) GO TO ...... END OF FILE
IF ( STATUS .NE. 0 ) GO TO ...... ERROR
WRITE BYTE TO DISK FILE:
STATUS = BWRITE ( FILETABLE , DATABYTE )
IF ( STATUS .EQ. 255 ) GO TO ...... END OF MEDIUM
IF ( STATUS .NE. 0 ) GO TO ...... ERROR
READ LINE FROM DISK FILE:
MCOUNT = 80
STATUS = LREAD ( FILETABLE , LINE , MCOUNT , ACOUNT )
IF ( STATUS .EQ. 255 ) GO TO ...... END OF FILE
IF ( STATUS .NE. 0 ) GO TO ...... ERROR
WRITE LINE TO DISK FILE:
ACOUNT = 80
STATUS = LWRITE ( FILETABLE , LINE , ACOUNT )
IF ( STATUS .EQ. 255 ) GO TO ...... END OF MEDIUM
IF ( STATUS .NE. 0 ) GO TO ...... ERROR
NOTES:
1. EACH FILE MUST HAVE ITS OWN "FILETABLE" OF
165 BYTES.
2. THE "FILETABLE" SHOULD NOT BE ALTERED BY THE USER
EXCEPT DURING PROGRAM INITIALIZATION WHEN THE FIRST
2 BYTES SHOULD BE SET TO ZERO AND THE FOURTH BYTE
SET TO SOME CHARACTER WHICH WILL BE DISPLAYED IN
ANY ERROR MESSAGES.
3. "FILENAME" IS A CHARACTER STRING REPRESENTING A
VALID CP/M FILE NAME WITH OPTIONAL DISK SELECT AND
FILE TYPE. LEADING SPACES ARE IGNORED AND THE
MAY BE TERMINATED BY A SPACE, CARRIAGE RETURN,
",", OR "=". STORAGE MUST BE A CONTIGUOUS STRING
OF BYTES - NOT ONE CHARACTER PER INTEGER WORD.
4. TWO OPTIONS ARE AVAILABLE FOR WRITE ACCESS. IF
THE FILE ALREADY EXISTS AND THE ACCESS CODE IS 2,
AN ERROR WILL RESULT AND THE FILE WILL NOT BE
OPENED. IF THE ACCESS CODE IS 3, AN EXISTING FILE
WILL BE DELETED BEFORE OPEN.
5. OPERATION "STATUS"
0 NORMAL
1-254 ERROR CODE - NOT PRESENTLY SPECIFIED
255 END OF FILE ON READ
255 END OF MEDIUM ON WRITE
6. LREAD --
CARRIAGE RETURN IS END OF LINE
LINE FEED, NULL AND RUBBOUT ARE IGNORED
CONTROL Z IS END OF FILE
ASCII PARITY BIT IS REMOVED
7. LWRITE --
LINES ARE AUTOMATICALLY TERMINATED BY
CARRIAGE RETURN - LINE FEED
8. "DATABYTE" STORAGE FOR READ AND WRITE IS A SINGLE
BYTE AS FAR AS THE ROUTINES ARE CONCERNED. PRIOR
TO READ THE MOST SIGNIFICANT BYTE OF "DATABYTE"
SHOULD BE SET TO ZERO IF THE DATA IS TO BE USED
IN INTEGER COMPARES, ETC.
9. "MCOUNT" AND "ACOUNT" ARE SINGLE BYTE INTEGERS
AS FAR AS THE ROUTINES ARE CONCERNED.
ASSEMBLER USAGE:
FILETABLE:
DB 0 ; ACCESS CODE STORAGE
DB 0 ; STATUS CODE STORAGE
DS 1 ; BUFFER INDEX OR POINTER
DB 'X' ; FILE ID FOR ERROR MESSAGES
DS 33 ; CP/M FILE CONTROL BLOCK
DS 128 ; DATA BUFFER STORAGE
1 READ ACCESS
ACCESS: DB 2 ; WRITE ACCESS - NO DELETE
3 WRITE WITH DELETE
FILENAME: DB 'B:FNAME.TXT '
DATABYTE: DS 1 ; STORAGE FOR DATABYTE
MCOUNT: DB 80 ; LENGTH OF READ BUFFER
LINE: DS 80 ; LINE BUFFER
ACOUNT: DS 1 ; LINE READ ACTUAL COUNT
OPEN DISK FILE:
LXI H,FILETABLE
LXI D,FILENAME
LXI B,ACCESS
CALL DOPEN ; OPEN FILE
JNZ ERROR
CLOSE DISK FILE:
LXI H,FILETABLE
CALL DCLOSE ; CLOSE FILE
JNZ ERROR
CLOSE ALL OPEN FILES:
CALL GCLOSE ; CLOSE ALL OPEN FILES
JNZ ERROR
READ BYTE FROM DISK FILE:
LXI H,FILETABLE
LXI D,DATABYTE
CALL BREAD ; READ A BYTE
INR A
JZ ENDOFFILE
DCR A
JNZ ERROR
WRITE BYTE TO DISK FILE:
LXI H,FILETABLE
LXI D,DATABYTE
CALL BWRITE ; WRITE A BYTE
INR A
JZ ENDOFMEDIUM
DCR A
JNZ ERROR
READ LINE FROM DISK FILE:
LXI H,FILETABLE
LXI D,LINE
LXI B,ARGLIST
CALL LREAD ; READ A LINE
INR A
JZ ENDOFFILE
DCR A
JNZ ERROR
ARGLIST:
DW MCOUNT
DW ACOUNT
WRITE LINE TO DISK FILE:
LXI H,FILETABLE
LXI D,LINE
LXI B,ACOUNT
CALL LWRITE ; WRITE A LINE
INR A
JZ ENDOFMEDIUM
DCR A
JNZ ERROR
NOTES:
1. EACH FILE MUST HAVE ITS OWN "FILETABLE" OF
165 BYTES.
2. THE "FILETABLE" SHOULD NOT BE ALTERED BY THE USER
EXCEPT DURING PROGRAM INITIALIZATION WHEN THE FIRST
2 BYTES SHOULD BE SET TO ZERO AND THE FOURTH BYTE
SET TO SOME CHARACTER WHICH WILL BE DISPLAYED IN
ANY ERROR MESSAGES.
3. "FILENAME" IS A CHARACTER STRING REPRESENTING A
VALID CP/M FILE NAME WITH OPTIONAL DISK SELECT AND
FILE TYPE. LEADING SPACES ARE IGNORED AND THE STRING
MAY BE TERMINATED BY A SPACE, CARRIAGE RETURN,
",", OR "=".
4. TWO OPTIONS ARE AVAILABLE FOR WRITE ACCESS. IF
THE FILE ALREADY EXISTS AND THE ACCESS CODE IS 2,
AN ERROR WILL RESULT AND THE FILE WILL NOT BE
OPENED. IF THE ACCESS CODE IS 3, AN EXISTING FILE
WILL BE DELETED BEFORE OPEN.
5. OPERATION STATUS (HL), (A) AND (Z)
(HL)
(A) (Z)
0 1 NORMAL
1-254 0 ERROR CODE - NOT PRESENTLY SPECIFIED
255 0 END OF FILE ON READ
255 0 END OF MEDIUM ON WRITE
6. LREAD --
CARRIAGE RETURN IS END OF LINE
LINE FEED, NULL AND RUBBOUT ARE IGNORED
CONTROL Z IS END OF FILE
ASCII PARITY BIT IS REMOVED
7. LWRITE --
LINES ARE AUTOMATICALLY TERMINATED BY
CARRIAGE RETURN - LINE FEED