home *** CD-ROM | disk | FTP | other *** search
/ CP/M / CPM_CDROM.iso / jsage / znode3 / uploads / zslsrc36.lbr / GCOMNAM.ZZ0 / GCOMNAM.Z80
Encoding:
Text File  |  1991-08-12  |  1.6 KB  |  61 lines

  1. ; Library:    ZSLIB
  2. ; Version:    3.1
  3. ; Module:    GCOMNAM
  4. ; Version:    1.0
  5. ; Author:    Gene Pizzetta
  6. ; Date:        August 10, 1991
  7. ;
  8. ; GCOMNAM -- Get and store program's invocation name.
  9. ;
  10. ; Entry:  HL = address of default program name (space terminated)
  11. ; Exit:   None
  12. ; Uses:   None
  13. ; Notes:  Gets program's invocation name from ZCPR3 external file control
  14. ;      block, if one exists.  If not, the default program name is stored.
  15. ;      The default program name must be either 8 characters long or
  16. ;      terminated by a space character.  The program name (minus any
  17. ;      trailing spaces) is stored as a null-terminated string at public
  18. ;      label COMNAM that can be accessed by print routines such as
  19. ;      SYSLIB's PSTR and EPSTR.
  20. ;
  21.     PUBLIC    GCOMNAM        ; module entry
  22.     PUBLIC    COMNAM        ; stored program name
  23. ;
  24.     EXTRN    GETEFCB        ; Z3LIB
  25. ;
  26. GCOMNAM:
  27.     push    af
  28.     push    bc
  29.     push    de
  30.     push    hl
  31.     ld    de,COMNAM    ; point to name storage buffer
  32.     ld    a,(de)        ; is this a re-run?
  33.     or    a
  34.     jr    nz,GDone    ; (yes, name is already stored)
  35. ;
  36.     call    getefcb        ; get external FCB address
  37.     inc    hl        ; HL = address, move past drive byte
  38.     ld    b,8        ; name is 8 characters maximum
  39.     jr    nz,GCom1    ; (move name)
  40.     pop    hl        ; recover default name address
  41.     push    hl
  42. GCom1:    ld    a,(hl)        ; get name character
  43.     and    7Fh        ; strip attribute
  44.     cp    ' '
  45.     jr    z,GDone        ; (don't store spaces)
  46.     ld    (de),a        ; store next character
  47.     inc    hl        ; increment pointers
  48.     inc    de
  49.     djnz    GCom1
  50. GDone:    pop    hl
  51.     pop    de
  52.     pop    bc
  53.     pop    af
  54.     ret
  55. ;
  56. ; Name storage buffer
  57. ;
  58. COMNAM:    ds    9,0        ; initialized to zeroes
  59. ;
  60.     end
  61.