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 / SCLINE.Z80 < prev    next >
Text File  |  2000-06-30  |  1KB  |  55 lines

  1. ;
  2. ;  SYSLIB Module Name:  SCLINE
  3. ;  Author:  Richard Conn
  4. ;  SYSLIB Version Number:  3.6
  5. ;  Module Version Number:  1.1
  6.  
  7.     public    cline
  8.  
  9. ;
  10. ;    CLINE -- Save the command line whose character count is pointed
  11. ; to by HL away in an internal buffer as a string.  The line may be up to
  12. ; 255 characters long and will be truncated if it is longer.  The string
  13. ; will be terminated by a <NULL> as per the SYSLIB concept of strings.
  14. ;
  15. ;    Input Parameters:  HL = Address of Command Line Buffer
  16. ;    Output Parameters:  HL = Address of Command Line String
  17. ;                A = 0 and Zero Flag Set (Z) if Buffer Truncated
  18. ;                A <> 0 and Zero Flag Clear (NZ) if Buffer OK
  19. ;    Registers Affected:  HL
  20. ;
  21. BSIZE    EQU    255    ; SIZE OF BUFFER
  22.  
  23. CLINE:
  24.     PUSH    DE    ; SAVE REGS
  25.     PUSH    BC
  26.     LD    DE,INBUF    ; ADDRESS OF BUFFER
  27.     LD    C,BSIZE    ; BUFFER SIZE
  28.     LD    B,(HL)    ; GET CHAR COUNT IN B
  29.     INC    HL    ; PT TO FIRST CHAR
  30. CLINE1:
  31.     LD    A,B    ; CHECK FOR DONE
  32.     OR    A    ; 0=DONE
  33.     JP    Z,CLINE2
  34.     DEC    B    ; COUNT DOWN
  35.     LD    A,(HL)    ; GET BYTE
  36.     LD    (DE),A    ; PUT BYTE
  37.     INC    HL    ; PT TO NEXT
  38.     INC    DE
  39.     DEC    C    ; COUNT DOWN BUFFER LIMIT
  40.     JP    NZ,CLINE1
  41. CLINE2:
  42.     XOR    A    ; A=0
  43.     LD    (DE),A    ; PUT ENDING ZERO
  44.     LD    A,C    ; GET REMAINING CHAR COUNT
  45.     POP    BC    ; RESTORE REGS
  46.     POP    DE
  47.     LD    HL,INBUF    ; PT TO BUFFER
  48.     OR    A    ; SET FLAGS
  49.     RET
  50. INBUF:
  51.     DS    BSIZE    ; SIZE OF BUFFER
  52.     DS    1    ; + 1 FOR ENDING ZERO
  53.  
  54.     END
  55.