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 / SBBLINE.Z80 < prev    next >
Text File  |  2000-06-30  |  2KB  |  86 lines

  1. ;
  2. ; SYSLIB Module Name:  SBBLIN
  3. ; Author:  Richard Conn
  4. ; SYSLIB Version Number:  3.6
  5. ; Module Version Number:  1.1
  6.  
  7.     public    bbline
  8.  
  9. ;
  10. ;  BBLINE -- Buffered BDOS Input Line Editor
  11. ;    BBLINE provides a very convenient interface to the BDOS for input
  12. ; line editor functions.  It contains its own internal buffer for storage
  13. ; of the input line (200 bytes allocated), and it returns a pointer to
  14. ; the first byte of the line upon return.  The line stored in this buffer
  15. ; is terminated by a binary zero (0).
  16. ;    To use BBLINE, the user need only call it, with a capitalization flag
  17. ; stored in the A Register.  If A = 0, BBLINE does not capitalize the input
  18. ; line characters; if A <> 0, BBLINE capitalizes the input line characters
  19. ; before returning to the caller.
  20. ;    No error codes are returned by BBLINE.  On return, HL points to the
  21. ; first byte of the input line and A contains a count of the number of
  22. ; characters in that line.
  23. ;
  24.  
  25. ;
  26. ;  EQUATES
  27. ;
  28. BDOS        EQU    5
  29. B$RDLINE    EQU    10    ; READ LINE FUNCTION
  30.  
  31. ;
  32. ;  EXTERNAL DECLARATIONS
  33. ;
  34.     EXT    CAPS
  35.  
  36. ;
  37. ;  MAIN ROUTINE FOR BBLINE
  38. ;
  39. BBLINE:
  40.     JP    START    ; SKIP OVER BUFFER
  41. INLINE:
  42.     DB    200    ; ALLOW 200 BYTES IN BUFFER
  43. CCNT:
  44.     DB    0    ; CHARACTER COUNT
  45. LINE:
  46.     DS    200    ; BUFFER SPACE
  47.     DB    0    ; TERMINATING ZERO
  48. CAPFLG:
  49.     DS    1    ; CAPITALIZATION FLAG (0=NO CAP)
  50. START:
  51.     PUSH    DE    ; SAVE DE, BC
  52.     PUSH    BC
  53.     LD    (CAPFLG),A    ; SAVE CAPITALIZATION FLAG
  54.     LD    DE,INLINE    ; PT TO BUFFER
  55.     LD    C,B$RDLINE    ; READ LINE FUNCTION IN BDOS
  56.     CALL    BDOS    ; DO READ LINE FUNCTION
  57.     LD    HL,CCNT    ; PT TO CHAR COUNT
  58.     LD    A,(HL)    ; GET IT
  59.     INC    HL    ; PT TO FIRST CHAR
  60.     ADD    A,L    ; ADD CHAR COUNT
  61.     LD    L,A
  62.     LD    A,H
  63.     ADC    0
  64.     LD    H,A    ; HL PTS TO AFTER LAST CHAR
  65.     LD    (HL),0    ; STORE ENDING ZERO
  66.     LD    A,(CAPFLG)    ; CAPITALIZE?
  67.     OR    A    ; 0=NO
  68.     JP    Z,DONE
  69.     LD    HL,LINE    ; MOVE THRU LINE
  70. CAPLP:
  71.     LD    A,(HL)    ; GET CHAR
  72.     OR    A    ; END OF LINE?
  73.     JP    Z,DONE
  74.     CALL    CAPS    ; CAPITALIZE CHAR
  75.     LD    (HL),A    ; PUT IT BACK
  76.     INC    HL    ; PT TO NEXT
  77.     JP    CAPLP
  78. DONE:
  79.     POP    BC    ; RESTORE REGS
  80.     POP    DE
  81.     LD    HL,LINE    ; PT TO FIRST CHAR IN LINE
  82.     LD    A,(CCNT)    ; GET CHAR COUNT
  83.     RET
  84.  
  85.     END
  86.