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 / SLIB1.LBR / SDIR01.Z80 < prev    next >
Text File  |  2000-06-30  |  2KB  |  61 lines

  1. ;
  2. ; SYSLIB Module Name:  SDIR01
  3. ; Author:  Richard Conn
  4. ; Part of SYSLIB3 SDIR Series
  5. ; SYSLIB Version Number:  3.6
  6. ; Module Version Number:  1.5
  7.  
  8.     public    dbuffer
  9.  
  10.     MACLIB    SDIRHDR.LIB
  11.     EXT    DPARAMS
  12.  
  13. ;*
  14. ;*  THIS ROUTINE ACCEPTS A BASE ADDRESS FOR THE DYNAMIC BUFFERS
  15. ;*    REQUIRED, DETERMINES HOW MUCH SPACE IS REQUIRED FOR THE BUFFERS,
  16. ;*    AND SETS THE ORDER PTR TO PT TO THE FIRST AND DIRBUF TO PT TO
  17. ;*    THE SECOND (ORDER SPACE = DIRMAX*2 AND DIRBUF = DIRMAX * ESIZE)
  18. ;*  ON INPUT, HL PTS TO AVAILABLE BASE
  19. ;*  ON OUTPUT, HL PTS TO DIRBUF
  20. ;*    A=0 AND ZERO FLAG SET IF CCP OVERRUN
  21. ;*
  22. DBUFFER:
  23.     PUSH    DE    ; SAVE DE
  24.     PUSH    BC    ; SAVE BC
  25.     LD    (ORDER),HL    ; PT TO ORDER TABLE
  26.     CALL    DPARAMS    ; GET PARAMETERS
  27.     LD    HL,(DIRMAX)    ; NUMBER OF ENTRIES IN DIR
  28.     EX    DE,HL        ; ... IN DE
  29.     LD    HL,(ORDER)    ; ADD TO ORDER BASE
  30.     ADD    HL,DE    ; *1
  31.     CALL    MEMCHK    ; CHECK FOR WITHIN RANGE
  32.     ADD    HL,DE    ; HL PTS TO DIRBUF
  33.     CALL    MEMCHK    ; CHECK FOR WITHIN RANGE
  34.     LD    (DIRBUF),HL    ; SET PTR AND HL PTS TO DIRECTORY BUFFER
  35.     POP    BC    ; RESTORE BC
  36.     POP    DE    ; RESTORE DE
  37.     XOR    A    ; OK
  38.     DEC    A    ; SET FLAGS (NZ)
  39.     RET
  40.  
  41. MEMCHK:
  42.     PUSH    HL    ; SAVE REGS
  43.     PUSH    DE
  44.     EX    DE,HL        ; NEXT ADDRESS IN DE
  45.     LD    HL,(BDOS+1)    ; GET ADDRESS OF BDOS
  46.     LD    A,D    ; CHECK FOR PAGE OVERRUN
  47.     CP    H
  48.     JP    NC,MEMORUN    ; OVERRUN IF D>=H
  49.     POP    DE
  50.     POP    HL
  51.     RET
  52. MEMORUN:
  53.     POP    DE    ; RESTORE
  54.     POP    HL
  55.     XOR    A    ; RETURN 0
  56.     POP    BC    ; CLEAR STACK
  57.     POP    BC    ; RESTORE BC
  58.     RET
  59.  
  60.     END
  61.