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