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 >
Text File  |  1984-04-29  |  6KB  |  243 lines

  1.         CP/M DISK I/O PACKAGE
  2.  
  3.         VERSION 2.X   08/17/78
  4.  
  5.        COMPATIBLE WITH MICROSOFT FORTRAN
  6.  
  7.                 DICK CURTISS
  8.                 843 NW 54TH
  9.                 SEATTLE, WASHINGTON
  10.                         98107
  11.                 (206) 784 8018
  12.  
  13.   FORTRAN USAGE:
  14.     INTEGER  DOPEN , DCLOSE , GCLOSE
  15.     INTEGER  BREAD , BWRITE
  16.     INTEGER  LREAD , LWRITE
  17.     INTEGER  DATABYTE , LINE(40) , STATUS
  18.     INTEGER  MCOUNT , ACOUNT
  19.     INTEGER  FILETABLE(83) , FILENAME(6) 
  20.  
  21.     DATA     FILETABLE(1) , FILETABLE(2) / 0 , 'XX' /
  22.  
  23.     DATA     FILENAME / 'B:' , 'FN' , 'AM' , 'E.' , 'TX' , 'T ' /
  24.  
  25.     OPEN DISK FILE:
  26.                          1
  27.     STATUS = DOPEN  ( FILETABLE , FILENAME , 2 )
  28.                          3
  29.             1 READ ACCESS
  30.             2 WRITE ACCESS - NO DELETE
  31.             3 WRITE ACCESS WITH DELETE
  32.     IF ( STATUS .NE. 0 ) GO TO ...... ERROR
  33.  
  34.     CLOSE DISK FILE:
  35.     STATUS = DCLOSE ( FILETABLE )
  36.     IF ( STATUS .NE. 0 ) GO TO ...... ERROR
  37.  
  38.     CLOSE ALL OPEN FILES
  39.     STATUS = GCLOSE ( 0 )
  40.  
  41.     READ BYTE FROM DISK FILE:
  42.     DATABYTE = 0
  43.     STATUS = BREAD ( FILETABLE , DATABYTE )
  44.     IF ( STATUS .EQ. 255 ) GO TO ...... END OF FILE
  45.     IF ( STATUS .NE.  0  ) GO TO ...... ERROR
  46.  
  47.     WRITE BYTE TO DISK FILE:
  48.     STATUS = BWRITE ( FILETABLE , DATABYTE )
  49.     IF ( STATUS .EQ. 255 ) GO TO ...... END OF MEDIUM
  50.     IF ( STATUS .NE.  0  ) GO TO ...... ERROR
  51.  
  52.     READ LINE FROM DISK FILE:
  53.     MCOUNT = 80
  54.     STATUS = LREAD ( FILETABLE , LINE , MCOUNT , ACOUNT )
  55.     IF ( STATUS .EQ. 255 ) GO TO ...... END OF FILE
  56.     IF ( STATUS .NE.  0  ) GO TO ...... ERROR
  57.  
  58.     WRITE LINE TO DISK FILE:
  59.     ACOUNT = 80
  60.     STATUS = LWRITE ( FILETABLE , LINE , ACOUNT )
  61.     IF ( STATUS .EQ. 255 ) GO TO ...... END OF MEDIUM
  62.     IF ( STATUS .NE.  0  ) GO TO ...... ERROR
  63.  
  64.  
  65.     NOTES:
  66.       1. EACH FILE MUST HAVE ITS OWN "FILETABLE" OF
  67.          165 BYTES.
  68.  
  69.       2. THE "FILETABLE" SHOULD NOT BE ALTERED BY THE USER
  70.          EXCEPT DURING PROGRAM INITIALIZATION WHEN THE FIRST
  71.          2 BYTES SHOULD BE SET TO ZERO AND THE FOURTH BYTE
  72.          SET TO SOME CHARACTER WHICH WILL BE DISPLAYED IN
  73.          ANY ERROR MESSAGES.
  74.  
  75.       3. "FILENAME" IS A CHARACTER STRING REPRESENTING A
  76.          VALID CP/M FILE NAME WITH OPTIONAL DISK SELECT AND
  77.          FILE TYPE.  LEADING SPACES ARE IGNORED AND THE
  78.          MAY BE TERMINATED BY A SPACE, CARRIAGE RETURN,
  79.          ",", OR "=".  STORAGE MUST BE A CONTIGUOUS STRING
  80.          OF BYTES - NOT ONE CHARACTER PER INTEGER WORD.
  81.  
  82.       4. TWO OPTIONS ARE AVAILABLE FOR WRITE ACCESS.  IF
  83.          THE FILE ALREADY EXISTS AND THE ACCESS CODE IS 2,
  84.          AN ERROR WILL RESULT AND THE FILE WILL NOT BE
  85.          OPENED.  IF THE ACCESS CODE IS 3, AN EXISTING FILE
  86.          WILL BE DELETED BEFORE OPEN.
  87.  
  88.       5. OPERATION "STATUS"
  89.         0    NORMAL
  90.         1-254    ERROR CODE - NOT PRESENTLY SPECIFIED
  91.         255    END OF FILE ON READ
  92.         255    END OF MEDIUM ON WRITE
  93.  
  94.       6. LREAD  --
  95.         CARRIAGE RETURN IS END OF LINE
  96.         LINE FEED, NULL AND RUBBOUT ARE IGNORED
  97.         CONTROL Z IS END OF FILE
  98.         ASCII PARITY BIT IS REMOVED
  99.  
  100.       7. LWRITE  --
  101.         LINES ARE AUTOMATICALLY TERMINATED BY
  102.           CARRIAGE RETURN - LINE FEED
  103.  
  104.       8. "DATABYTE" STORAGE FOR READ AND WRITE IS A SINGLE
  105.          BYTE AS FAR AS THE ROUTINES ARE CONCERNED.  PRIOR
  106.          TO READ THE MOST SIGNIFICANT BYTE OF "DATABYTE"
  107.          SHOULD BE SET TO ZERO IF THE DATA IS TO BE USED
  108.          IN INTEGER COMPARES, ETC.
  109.  
  110.       9. "MCOUNT" AND "ACOUNT" ARE SINGLE BYTE INTEGERS
  111.          AS FAR AS THE ROUTINES ARE CONCERNED.
  112.  
  113.  
  114.  
  115.   ASSEMBLER USAGE:
  116.  
  117.     FILETABLE:
  118.         DB    0    ; ACCESS CODE STORAGE
  119.         DB    0    ; STATUS CODE STORAGE
  120.         DS    1    ; BUFFER INDEX OR POINTER
  121.         DB    'X'    ; FILE ID FOR ERROR MESSAGES
  122.         DS    33    ; CP/M FILE CONTROL BLOCK
  123.         DS    128    ; DATA BUFFER STORAGE
  124.  
  125.             1      READ ACCESS
  126.     ACCESS:   DB    2    ; WRITE ACCESS - NO DELETE
  127.             3      WRITE WITH DELETE
  128.     FILENAME: DB    'B:FNAME.TXT '
  129.     DATABYTE: DS    1    ; STORAGE FOR DATABYTE
  130.     MCOUNT:      DB    80    ; LENGTH OF READ BUFFER
  131.     LINE:      DS    80    ; LINE BUFFER
  132.     ACOUNT:      DS    1    ; LINE READ ACTUAL COUNT
  133.  
  134.  
  135.    OPEN DISK FILE:
  136.         LXI    H,FILETABLE
  137.         LXI    D,FILENAME
  138.         LXI    B,ACCESS
  139.         CALL    DOPEN        ; OPEN FILE
  140.         JNZ    ERROR
  141.  
  142.  
  143.    CLOSE DISK FILE:
  144.         LXI    H,FILETABLE
  145.         CALL    DCLOSE        ; CLOSE FILE
  146.         JNZ    ERROR
  147.  
  148.  
  149.    CLOSE ALL OPEN FILES:
  150.         CALL    GCLOSE        ; CLOSE ALL OPEN FILES
  151.         JNZ    ERROR
  152.  
  153.  
  154.    READ BYTE FROM DISK FILE:
  155.         LXI    H,FILETABLE
  156.         LXI    D,DATABYTE
  157.         CALL    BREAD        ; READ A BYTE
  158.         INR    A
  159.         JZ    ENDOFFILE
  160.         DCR    A
  161.         JNZ    ERROR
  162.  
  163.  
  164.    WRITE BYTE TO DISK FILE:
  165.         LXI    H,FILETABLE
  166.         LXI    D,DATABYTE
  167.         CALL    BWRITE        ; WRITE A BYTE
  168.         INR    A
  169.         JZ    ENDOFMEDIUM
  170.         DCR    A
  171.         JNZ    ERROR
  172.  
  173.  
  174.  
  175.    READ LINE FROM DISK FILE:
  176.         LXI    H,FILETABLE
  177.         LXI    D,LINE
  178.         LXI    B,ARGLIST
  179.         CALL    LREAD        ; READ A LINE
  180.         INR    A
  181.         JZ    ENDOFFILE
  182.         DCR    A
  183.         JNZ    ERROR
  184.  
  185.     ARGLIST:
  186.         DW    MCOUNT
  187.         DW    ACOUNT
  188.  
  189.  
  190.    WRITE LINE TO DISK FILE:
  191.         LXI    H,FILETABLE
  192.         LXI    D,LINE
  193.         LXI    B,ACOUNT
  194.         CALL    LWRITE        ; WRITE A LINE
  195.         INR    A
  196.         JZ    ENDOFMEDIUM
  197.         DCR    A
  198.         JNZ    ERROR
  199.  
  200.  
  201.  
  202.  
  203.     NOTES:
  204.       1. EACH FILE MUST HAVE ITS OWN "FILETABLE" OF
  205.          165 BYTES.
  206.  
  207.       2. THE "FILETABLE" SHOULD NOT BE ALTERED BY THE USER
  208.          EXCEPT DURING PROGRAM INITIALIZATION WHEN THE FIRST
  209.          2 BYTES SHOULD BE SET TO ZERO AND THE FOURTH BYTE
  210.          SET TO SOME CHARACTER WHICH WILL BE DISPLAYED IN
  211.          ANY ERROR MESSAGES.
  212.  
  213.       3. "FILENAME" IS A CHARACTER STRING REPRESENTING A
  214.          VALID CP/M FILE NAME WITH OPTIONAL DISK SELECT AND
  215.          FILE TYPE.  LEADING SPACES ARE IGNORED AND THE STRING
  216.          MAY BE TERMINATED BY A SPACE, CARRIAGE RETURN,
  217.          ",", OR "=".
  218.  
  219.       4. TWO OPTIONS ARE AVAILABLE FOR WRITE ACCESS.  IF
  220.          THE FILE ALREADY EXISTS AND THE ACCESS CODE IS 2,
  221.          AN ERROR WILL RESULT AND THE FILE WILL NOT BE
  222.          OPENED.  IF THE ACCESS CODE IS 3, AN EXISTING FILE
  223.          WILL BE DELETED BEFORE OPEN.
  224.  
  225.       5. OPERATION STATUS (HL), (A) AND (Z)
  226.         (HL)
  227.         (A)    (Z)
  228.         0    1    NORMAL
  229.         1-254    0    ERROR CODE - NOT PRESENTLY SPECIFIED
  230.         255    0    END OF FILE ON READ
  231.         255    0    END OF MEDIUM ON WRITE
  232.  
  233.  
  234.       6. LREAD  --
  235.         CARRIAGE RETURN IS END OF LINE
  236.         LINE FEED, NULL AND RUBBOUT ARE IGNORED
  237.         CONTROL Z IS END OF FILE
  238.         ASCII PARITY BIT IS REMOVED
  239.  
  240.       7. LWRITE  --
  241.         LINES ARE AUTOMATICALLY TERMINATED BY
  242.           CARRIAGE RETURN - LINE FEED
  243.