home *** CD-ROM | disk | FTP | other *** search
/ CP/M / CPM_CDROM.iso / simtel / sigm / vols000 / vol098 / scline.mac < prev    next >
Text File  |  1984-04-29  |  1KB  |  58 lines

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