home *** CD-ROM | disk | FTP | other *** search
/ CP/M / CPM_CDROM.iso / simtel / sigm / vols000 / vol089 / sbbline.mac < prev    next >
Encoding:
Text File  |  1984-04-29  |  2.1 KB  |  89 lines

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