/ src / input.s
input.s
  1  ; CCGMS Terminal
  2  ;
  3  ; Copyright (c) 2016,2020, Craig Smith, alwyz. All rights reserved.
  4  ; This project is licensed under the BSD 3-Clause License.
  5  ;
  6  ; String input from user
  7  ;
  8  
  9  ;----------------------------------------------------------------------
 10  input:
 11  	jsr inpset
 12  	jmp inputl
 13  
 14  ;----------------------------------------------------------------------
 15  inpset:
 16  	stx max
 17  	cpy #0
 18  	beq :+
 19  	jsr outstr
 20  :	jsr clrchn
 21  	sec
 22  	jsr plot
 23  	stx tmp9e
 24  	sty tmp9f
 25  	jsr calc_scr_ptr; set up begin &
 26  	lda locat+1	; end of input
 27  	sta begpos+1	; ptrs
 28  	sta endpos+1
 29  	lda locat
 30  	sta begpos
 31  	clc
 32  	adc max
 33  	sta endpos
 34  	lda endpos+1
 35  	adc #0
 36  	sta endpos+1
 37  	rts
 38  
 39  ;----------------------------------------------------------------------
 40  inputl:
 41  	lda #0
 42  	sta BLNSW
 43  	jsr invert_csr_char
 44  inpwat:
 45  	jsr getin
 46  	beq inpwat
 47  	sta tmp03
 48  	and #$7f
 49  	cmp #CSR_DOWN
 50  	beq inpcud
 51  	cmp #'"'
 52  	beq inpwat
 53  	cmp #CR
 54  	jeq inpret
 55  	lda tmp03
 56  	cmp #DEL
 57  	beq inpdel
 58  	cmp #CSR_LEFT
 59  	beq inpdel
 60  	and #$7f
 61  	cmp #HOME
 62  	beq inpcls
 63  	bne inpprc
 64  inpcud
 65  	jsr restore_csr_char
 66  	lda tmp03
 67  	cmp #CSR_UP
 68  	beq inphom
 69  	jsr inpcu1
 70  	jmp inpmov
 71  inpcu1	ldy max
 72  inpcu2
 73  	dey
 74  	bmi inpcu3
 75  	lda (begpos),y
 76  	cmp #' '
 77  	beq inpcu2
 78  inpcu3
 79  	iny
 80  	tya
 81  	clc
 82  	adc tmp9f
 83  	tay
 84  	rts
 85  inpcls
 86  	jsr restore_csr_char
 87  	lda tmp03
 88  	cmp #CLR
 89  	bne inphom
 90  	ldy max
 91  	lda #' '
 92  inpcl2	sta (begpos),y
 93  	dey
 94  	bpl inpcl2
 95  inphom
 96  	ldy tmp9f
 97  inpmov
 98  	ldx tmp9e
 99  	clc
100  	jsr plot
101  	jmp inputl
102  inpdel
103  	jsr calc_scr_ptr
104  	lda locat
105  	cmp begpos
106  	bne inprst
107  	lda locat+1
108  	cmp begpos+1
109  	beq inpwat
110  	bne inprst
111  inpprc
112  	jsr calc_scr_ptr
113  	lda locat
114  	cmp endpos
115  	bne inpins
116  	lda locat+1
117  	cmp endpos+1
118  	bne inpins
119  	jmp inpwat
120  inpins
121  	lda tmp03
122  	cmp #INST
123  	bne inprst
124  	dec endpos+1
125  	ldy #$ff
126  	lda (endpos),y
127  	inc endpos+1
128  	cmp #' '
129  	beq inprst
130  	jmp inpwat
131  inprst
132  	ldx #3
133  	stx KOUNT
134  	jsr restore_csr_char
135  	lda tmp03
136  	jsr chrout
137  	jsr quote_insert_off
138  	jmp inputl
139  
140  inpret:
141  	jsr restore_csr_char
142  	jsr inpcu1
143  	cmp COLUMN
144  	bcc :+
145  	ldx tmp9e
146  	clc
147  	jsr plot
148  :	jsr calc_scr_ptr
149  	lda locat
150  	sec
151  	sbc begpos
152  	pha
153  	tay
154  	lda #' '
155  :	sta (begpos),y
156  	cpy max
157  	beq :+
158  	iny
159  	bne :-
160  :	pla
161  	sta max
162  	ldx tmp9e
163  	ldy tmp9f
164  	clc
165  	jsr plot
166  	lda #1
167  	sta BLNSW
168  	lda #3
169  	ldy #0
170  	tax
171  	jsr setlfs
172  	lda #0
173  	jsr setnam
174  	jsr open
175  	ldx #3
176  	jsr chkin
177  	ldy #0
178  :	cpy max
179  	beq :+
180  	jsr chrin
181  	sta inpbuf,y
182  	iny
183  	bne :-
184  :	lda #0
185  	sta inpbuf,y
186  	jsr clrchn
187  	lda #3
188  	jsr close
189  	ldx max
190  	rts