Bare metal VGA: implement "status report" escape codes (#613)

* Bare metal VGA: implement "status report" escape codes
* Minor fix to pseudoteletypewriter code

Co-authored-by: tkchia <tkchia-cosmo@gmx.com>
This commit is contained in:
tkchia 2022-09-13 17:14:10 +08:00 committed by Justine Tunney
parent 116bda997e
commit c4eb701d56
No known key found for this signature in database
GPG key ID: BE714B4575D6E328
8 changed files with 113 additions and 10 deletions

View file

@ -8,13 +8,30 @@
*/
#endif
#include "libc/math.h"
#include "libc/calls/termios.h"
#include "libc/isystem/unistd.h"
#include "libc/str/str.h"
#include "libc/stdio/stdio.h"
#include "libc/sysv/consts/termios.h"
STATIC_YOINK("vga_console");
int main(int argc, char *argv[]) {
volatile long double x = -.5;
volatile long double y = 1.5;
struct termios tio;
char buf[4];
ssize_t res;
if (tcgetattr(0, &tio) != -1) {
tio.c_lflag &= ~(ECHO | ICANON);
tcsetattr(0, TCSANOW, &tio);
}
write(1, "\e[5n", 4);
res = read(0, buf, 4);
if (res != 4 || memcmp(buf, "\e[0n", 4) != 0) {
printf("res = %d?\n", res);
return -1;
}
printf("Hello World! %.19Lg\n", atan2l(x, y));
return 0;
}