Subversion Repositories NedoOS

Rev

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