Details | Last modification | View Log
| Rev | Author | Line No. | Line |
|---|---|---|---|
| 8 | dimkam | 1 | editline |
| 2 | ;de=yx |
||
| 3 | ;hl=textaddr |
||
| 4 | ;a=maxsz |
||
| 116 | alone | 5 | ;out: a=key_enter/key_esc |
| 8 | dimkam | 6 | ld (editline_maxsz),a |
| 7 | ld (editline_xy),de |
||
| 8 | ld (editline_text),hl |
||
| 9 | call strlen ;hl=len |
||
| 10 | ld a,l |
||
| 11 | ld (editline_curx),a |
||
| 12 | |||
| 13 | editline_mainloop |
||
| 14 | call editline_pr |
||
| 15 | ld de,(editline_xy) |
||
| 16 | editline_curx=$+1 |
||
| 17 | ld a,0 |
||
| 18 | add a,e |
||
| 19 | ld e,a |
||
| 889 | alone | 20 | call nv_setxy ;keeps de,hl,ix |
| 574 | alone | 21 | ;OS_GETATTR |
| 22 | ; ld e,a |
||
| 23 | ; push de ;color under cursor |
||
| 24 | ;ld e,CURSORCOLOR;#38 |
||
| 25 | ;OS_PRATTR ;draw cursor |
||
| 841 | alone | 26 | if PRSTDIO |
| 27 | call yieldgetkeyloop |
||
| 28 | else |
||
| 29 | YIELDGETKEYLOOP |
||
| 30 | endif |
||
| 574 | alone | 31 | ; pop de ;d=color under file cursor |
| 32 | ;push af |
||
| 33 | ;OS_PRATTR ;remove cursor |
||
| 34 | ;pop af |
||
| 8 | dimkam | 35 | cp key_redraw |
| 36 | jr z,editline_mainloop |
||
| 116 | alone | 37 | cp key_enter |
| 8 | dimkam | 38 | ret z |
| 116 | alone | 39 | cp key_esc |
| 8 | dimkam | 40 | ret z |
| 41 | ld hl,editline_mainloop |
||
| 42 | push hl |
||
| 43 | ld hl,(editline_text) |
||
| 116 | alone | 44 | cp key_left |
| 8 | dimkam | 45 | jr z,editline_left |
| 116 | alone | 46 | cp key_right |
| 8 | dimkam | 47 | jr z,editline_right |
| 116 | alone | 48 | cp key_backspace |
| 8 | dimkam | 49 | jr z,editline_backspace |
| 116 | alone | 50 | cp key_del |
| 8 | dimkam | 51 | jr z,editline_del |
| 116 | alone | 52 | cp 0x20 |
| 344 | alone | 53 | ret c ;稥 ⥬ 㦭 |
| 8 | dimkam | 54 | ld e,a |
| 55 | push hl |
||
| 56 | call strlen ;hl=len |
||
| 57 | ld a,(editline_maxsz) |
||
| 58 | cp l |
||
| 59 | pop hl |
||
| 60 | ret z |
||
| 61 | ld a,(editline_curx) |
||
| 62 | ld c,a |
||
| 63 | ld b,0 |
||
| 64 | add hl,bc |
||
| 65 | inc a |
||
| 66 | ld (editline_curx),a |
||
| 67 | jp strinsch |
||
| 68 | editline_backspace |
||
| 69 | ld a,(editline_curx) |
||
| 70 | or a |
||
| 71 | ret z |
||
| 72 | ld c,a |
||
| 73 | ld b,0 |
||
| 74 | add hl,bc |
||
| 75 | dec a |
||
| 76 | ld (editline_curx),a |
||
| 344 | alone | 77 | jp strdelch ;ࠥ ।騩 ᨬ |
| 8 | dimkam | 78 | |
| 79 | editline_del |
||
| 80 | ld a,(editline_curx) |
||
| 81 | ld c,a |
||
| 82 | ld b,0 |
||
| 83 | add hl,bc |
||
| 84 | ld a,(hl) |
||
| 85 | or a |
||
| 86 | ret z |
||
| 87 | inc hl |
||
| 344 | alone | 88 | jp strdelch ;ࠥ ।騩 ᨬ |
| 8 | dimkam | 89 | |
| 90 | editline_left |
||
| 91 | ld hl,editline_curx |
||
| 92 | ld a,(hl) |
||
| 93 | or a |
||
| 94 | ret z |
||
| 95 | dec (hl) |
||
| 96 | ret |
||
| 97 | |||
| 98 | editline_right |
||
| 99 | call strlen ;hl=len |
||
| 100 | ld a,l |
||
| 101 | ld hl,editline_curx |
||
| 102 | cp (hl) |
||
| 103 | ret z |
||
| 104 | inc (hl) |
||
| 105 | ret |
||
| 106 | |||
| 107 | editline_pr |
||
| 108 | editline_xy=$+1 |
||
| 109 | ld de,0 |
||
| 889 | alone | 110 | call nv_setxy ;keeps de,hl,ix |
| 8 | dimkam | 111 | editline_text=$+1 |
| 112 | ld hl,0 |
||
| 113 | ld c,0 |
||
| 574 | alone | 114 | call prtext |
| 344 | alone | 115 | ; ⮪ ப |
| 8 | dimkam | 116 | editline_prspc0 |
| 117 | ld a,c |
||
| 118 | editline_maxsz=$+1 |
||
| 119 | cp 0 |
||
| 120 | ret z |
||
| 121 | push bc |
||
| 122 | ld a,' ' |
||
| 841 | alone | 123 | if PRSTDIO |
| 574 | alone | 124 | PRCHAR_ |
| 841 | alone | 125 | else |
| 126 | PRCHAR |
||
| 127 | endif |
||
| 8 | dimkam | 128 | pop bc |
| 129 | inc c |
||
| 130 | jp editline_prspc0 |