39 lines
No EOL
1.1 KiB
C
39 lines
No EOL
1.1 KiB
C
/*
|
|
Copyright 2019 Benji Dial
|
|
|
|
Permission to use, copy, modify, and/or distribute this
|
|
software for any purpose with or without fee is hereby
|
|
granted, provided that the above copyright notice and this
|
|
permission notice appear in all copies.
|
|
|
|
THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS
|
|
ALL WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL
|
|
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO
|
|
EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
|
|
INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER
|
|
RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
|
|
ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
|
|
ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE
|
|
OF THIS SOFTWARE.
|
|
*/
|
|
|
|
#include "serial.h"
|
|
#include "vga.h"
|
|
|
|
uint8_t get_char(bool echo) {
|
|
uint8_t ch = poll_port(COM2) ? read_byte(COM2) : 0;//TODO: from get_key
|
|
if (echo)
|
|
put_char(ch);
|
|
return ch;
|
|
}
|
|
|
|
uint32_t get_line(uint32_t max, uint8_t *buffer, bool echo) {
|
|
uint8_t *i = (uint8_t *)buffer;
|
|
while (i < (uint8_t *)buffer + max) {
|
|
if ((*i = get_char(echo)) == (uint8_t)'\n') {
|
|
*i = 0;
|
|
return i - (uint8_t *)buffer;
|
|
}
|
|
++i;
|
|
}
|
|
} |