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 / ZSYS / SIMTEL20 / SYSLIB / SLIB2.LBR / SGRR.Z80 < prev    next >
Text File  |  2000-06-30  |  2KB  |  90 lines

  1. ;
  2. ;  SYSLIB Module Name: SGRR
  3. ;  Author:  Richard Conn
  4. ;  SYSLIB Version Number:  3.6
  5. ;  Module Version Number:  1.1
  6. ;
  7.  
  8.     public    getrr,getfs
  9.  
  10. ;
  11. ;    This module provides two functions: GETRR and GETFS.
  12. ; With the file FCB pted to by DE, GETRR gets the random record
  13. ; number (in HL) of the last record read or written sequentially from
  14. ; the file.  GETFS gets the file size of the file in terms of records
  15. ; in HL.  The FCB is not affected by these routines.
  16. ;
  17.  
  18. ;
  19. ;  Equates
  20. ;
  21. GFS    EQU    35
  22. SRR    EQU    36
  23. BDOS    EQU    5
  24.  
  25. ;
  26. ;  Macros
  27. ;
  28. PUTRG    MACRO
  29.     PUSH    DE
  30.     PUSH    BC
  31.     ENDM
  32.  
  33. GETRG    MACRO
  34.     POP    BC
  35.     POP    DE
  36.     ENDM
  37.  
  38. ;
  39. ;  Get random record number of current record in HL
  40. ;    A=0 and Z if OK, A=1 and NZ if overflow
  41. ;
  42. GETRR:
  43.     PUTRG
  44.     LD    C,SRR    ; SET RANDOM RECORD NUMBER
  45. GET1:
  46.     LD    HL,LFCB    ; SETUP LOCAL FCB
  47.     LD    B,36    ; 36 BYTES
  48.     PUSH    HL    ; SAVE PTR TO FCB
  49. GET2:
  50.     LD    A,(DE)    ; GET BYTE
  51.     LD    (HL),A    ; PUT BYTE
  52.     INC    HL    ; NEXT
  53.     INC    DE
  54.     DEC    B    ; COUNT DOWN
  55.     JP    NZ,GET2
  56.     POP    DE    ; GET PTR TO FCB
  57.     PUSH    DE    ; SAVE IT AGAIN
  58.     CALL    BDOS
  59.     POP    DE    ; GET PTR TO FCB
  60.     LD    HL,33    ; OFFSET TO RANDOM RECORD NUMBER
  61.     ADD    HL,DE
  62.     LD    E,(HL)    ; GET RANDOM RECORD NUMBER IN HL
  63.     INC    HL
  64.     LD    D,(HL)
  65.     INC    HL
  66.     LD    A,(HL)    ; OVERFLOW
  67.     EX    DE,HL    ; NUMBER IN HL
  68.     GETRG
  69.     OR    A    ; SET ERROR CODE
  70.     RET
  71.  
  72. ;
  73. ;  Get file size of file pted to by DE in HL
  74. ;  This is the size of the file in records
  75. ;    On input, DE = ptr to FCB
  76. ;    On output, HL = file size in records
  77. ;        A = Error flag (0 and Z = OK, 1 and NZ = overflow)
  78. ;
  79. GETFS:
  80.     PUTRG
  81.     LD    C,GFS    ; GET FILE SIZE
  82.     JP    GET1
  83.  
  84. ;
  85. ;  DATA
  86. ;
  87. LFCB:    DS    36    ; LOCAL FCB COPY
  88.  
  89.     END
  90.