     "\x1bP([^\\\\])*?\\\\": (data) -> # DCS, Device Control String
     "\x1bD": -> @index()
     "\x1bE": -> @newLine()
+    "\x1bH": -> @setHorizontalTabStop()
     "\x1bM": -> @reverseIndex()
 
     "\x1b7": (data) -> # save cursor pos and char attrs

    @lineData = @normalBuffer
    @dirtyLines = {}
    @brush = AsciiIo.Brush.create({})

    @fg = @bg = undefined
    @bright = false

    @goToColumn col

  setHorizontalTabStop: ->
    unless _(@tabStops).include(@cursorX)
      pos = _(@tabStops).sortedIndex(@cursorX)
      @tabStops.splice(pos, 0, @cursorX)

  goToNextHorizontalTabStop: (n) ->
    x = @getNextTabStop()
    @goToRowAndColumn(@cursorY + 1, x + 1)
    @updateLine()

  goToPriorHorizontalTabStop: (n) ->
    x = @getPriorTabStop()
    @goToRowAndColumn(@cursorY + 1, x + 1)
    @updateLine()

  getNextTabStop: ->
    for x in @tabStops
      if x > @cursorX
        return x

    @cols

  getPriorTabStop: ->
    ret = 0

    for x in @tabStops
      if x > @cursorX
        break

      ret = x

    ret

  clearHorizontalTabStop: ->
    console.log 'clearHorizontalTabStop'

  clearAllHorizontalTabStops: ->
    console.log 'clearAllHorizontalTabStops'

  saveCursor: ->
    @savedCol = @cursorX
