?login_element?

Subversion Repositories NedoOS

Rev

Blame | Last modification | View Log | Download | RSS feed

  1. ;редактирует строку, заполненную пробелами
  2. EditLine_xyde_widb
  3.         ld (EditLine_addr),hl
  4.         ld (EditLine_xy),de
  5.         ld a,b
  6.         ld (EditLine_wid),a
  7. ;ищем первый непробел с конца, ставим туда курсор и двигаем вправо через функцию (чтобы не было переполнения)
  8.         ld c,a
  9.         ld b,0
  10.         add hl,bc
  11.         dec a
  12.         ld b,a ;wid-1
  13.         ld a,' '
  14. EditLine_findend0
  15.         dec hl
  16.         cp (hl)
  17.         jr nz,EditLine_findend0q
  18.         djnz EditLine_findend0
  19. EditLine_findend0q
  20.         ld a,b ;0..wid-1
  21.         ;xor a
  22.         ld (EditLine_curx),a
  23.         call EditLineRight
  24.         call EditLine_Redraw
  25. EditLine0
  26.         call EditLine_drawcursor
  27.         YIELDGETKEYLOOP
  28.         push af
  29.         ;call EditLine_undrawcursor
  30.         call EditLine_Redraw
  31.         pop af
  32.         cp key_esc
  33.         ret z
  34.         cp key_enter
  35.         ret z
  36.         ld hl,EditLine0
  37.         push hl
  38.         cp key_left
  39.         jr z,EditLineLeft
  40.         cp key_right
  41.         jr z,EditLineRight
  42.         cp key_backspace
  43.         jr z,EditLineBackSpace
  44.         call EditLine_edit
  45. EditLine_Redraw
  46.         ld de,(EditLine_xy)
  47.         OS_SETXY
  48.         ld hl,disasmtextbuf
  49.         ld a,(EditLine_wid)
  50.         ld b,a
  51.         jp Debugger_PrChars_hl_b
  52.  
  53. EditLineBackSpace
  54.         call EditLineLeft
  55.         call EditLine_curaddr
  56.         ld (hl),' '
  57.         jp EditLine_Redraw
  58.        
  59. EditLineLeft
  60.         ld hl,EditLine_curx
  61.         dec (hl)
  62.         ret p
  63.         inc (hl)
  64.         ret
  65. EditLineRight
  66.         ld hl,EditLine_curx
  67.         ld a,(EditLine_wid)
  68.         inc (hl)
  69.         cp (hl)
  70.         ret nz
  71.         dec (hl)
  72.         ret
  73.  
  74. EditLine_edit
  75.         call EditLine_curaddr
  76.         ld (hl),a
  77.         call EditLineRight
  78.         jp EditLine_Redraw
  79.  
  80. EditLine_curaddr
  81.         ld hl,(EditLine_addr)
  82.         ld bc,(EditLine_curx)
  83.         ld b,0
  84.         add hl,bc
  85.         ret
  86.  
  87. EditLine_drawcursor
  88.         ld de,(EditLine_xy)
  89.         ld a,(EditLine_curx)
  90.         add a,e
  91.         ld e,a
  92.         OS_SETXY
  93.         ld e,DEBUGGER_COLORCURSOR;0x38
  94.         OS_PRATTR
  95.         ret
  96.  
  97. EditLine_curx
  98.         db 0
  99. EditLine_xy
  100.         dw 0
  101. EditLine_wid
  102.         db 0
  103. EditLine_addr
  104.         dw 0
  105.