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 / SLIB2.LBR / SEPSTR.Z80 < prev    next >
Text File  |  2000-06-30  |  2KB  |  101 lines

  1. ;
  2. ; SYSLIB Module Name:  SEPSTR
  3. ; Author:  Richard Conn
  4. ; SYSLIB Version Number:  3.6
  5. ; Module Version Number:  1.1
  6.  
  7.     public    epstr
  8.  
  9. ;
  10. ;  EPSTR -- 
  11. ;    PRINT STRING PTED TO BY HL
  12. ;    AFFECT ONLY HL -- WHEN DONE, HL PTS TO BYTE AFTER STRING
  13. ;    PERFORM NO CONTROL CHARACTER EXPANSION EXCEPT FOR <TAB>
  14. ;    INTERPRET <CR>, <LF>, <BEL>, <BS>
  15. ;
  16.     EXT    COUT
  17.  
  18. EPSTR:
  19.     PUSH    DE    ; SAVE REGS
  20.     PUSH    BC
  21.     PUSH    AF    ; SAVE REG A AND FLAGS
  22.     LD    C,0    ; SET POSITION COUNT
  23. PSL:    LD    A,(HL)    ; GET BYTE
  24.     INC    HL    ; PT TO NEXT
  25.     OR    A    ; 0=DONE
  26.     JP    Z,PSD
  27.     CP    TAB    ; EXPAND <TAB>
  28.     JP    Z,PST
  29. ;
  30. ;  PRINT CHAR
  31. ;
  32.     INC    C    ; INCR POSITION
  33.     CALL    COUT    ; PRINT IT ON CON:
  34.     CP    CR    ; CHECK FOR <CR>
  35.     JP    Z,PCR
  36.     CP    LF    ; CHECK FOR <LF>
  37.     JP    Z,PLF
  38.     CP    BEL    ; CHECK FOR <BEL>
  39.     JP    Z,PLF
  40.     CP    BS    ; CHECK FOR <BS>
  41.     JP    Z,PBS
  42.     JP    PSL
  43. ;
  44. ;  <CR> -- RESET POSITION COUNT
  45. ;
  46. PCR:    LD    C,0    ; RESET
  47.     JP    PSL
  48. ;
  49. ;  <LF>, <BEL>, <NULL> -- CURSOR DIDN'T ADVANCE
  50. ;
  51. PLF:    DEC    C    ; BACK UP COUNT BY 1
  52.     JP    PSL
  53. ;
  54. ;  <BS> -- CURSOR WENT BACKWARD, MAYBE
  55. ;
  56. PBS:    LD    A,C    ; CHECK FOR ZERO
  57.     OR    A
  58.     JP    Z,PSL
  59.     DEC    C    ; BACK UP COUNT BY 2
  60.     DEC    C
  61.     JP    PSL
  62. ;
  63. ;  EXPAND <TAB>
  64. ;
  65. PST:    LD    A,C    ; GET COUNT
  66.     AND    7    ; MASK FOR SUB FROM 8
  67.     LD    B,A    ; STORE TEMPORARILY
  68.     LD    A,8    ; SUBTRACT FROM 8 FOR <SP> COUNT
  69.     SUB    B
  70.     LD    B,A    ; COUNT IN B
  71.     ADD    A,C    ; ADD TO POSITION COUNT
  72.     LD    C,A
  73.     LD    A,' '    ; PRINT <SP>
  74. PSTL:    CALL    COUT
  75.     DEC    B    ; COUNT DOWN
  76.     JP    NZ,PSTL
  77.     JP    PSL
  78. ;
  79. ;  EPSTR DONE
  80. ;
  81. PSD:    POP    AF    ; RESTORE REG A AND FLAGS
  82.     POP    BC    ; RESTORE REGS
  83.     POP    DE
  84.     RET
  85.  
  86. ;
  87. ;  ASCII SPECIAL CHARACTER EQUATES
  88. ;
  89. NULL    EQU     0    ; NULL
  90. BEL    EQU     7    ; BELL
  91. BS    EQU     8    ; BACKSPACE
  92. TAB    EQU     9    ; TAB
  93. LF    EQU    10    ; LINE FEED
  94. CR    EQU    13    ; CARRIAGE RETURN
  95. CTRLR    EQU    'R'-40H    ; CTRL-R
  96. CTRLU    EQU    'U'-40H    ; CTRL-U
  97. CTRLX    EQU    'X'-40H    ; CTRL-X
  98. DEL    EQU    7FH    ; DELETE CHAR
  99.  
  100.     END
  101.