added some useless shell commands

This commit is contained in:
2026-07-12 04:37:46 -05:00
parent 3c6fd8cb65
commit d60036a4bd
13 changed files with 96 additions and 7 deletions

View File

@@ -1,5 +1,8 @@
#include <unistd.h>
#define VGA_TEXT_W 80
#define VGA_TEXT_H 25
void term();
int ptys;
@@ -30,15 +33,37 @@ int main(int argc, char *argv[]) {
return 0;
}
void clear(int fd) {
lseek(fd, 0, 0);
size_t bytes = VGA_TEXT_W * VGA_TEXT_H;
char c = ' ';
for (size_t i = 0; i < bytes; i++) {
write(fd, &c, 1);
}
lseek(fd, 0, 0);
}
void term() {
int vga_fd = open("/dev/tvga");
if (vga_fd == -1) return;
int kbd_fd = open("/dev/kbd");
if (kbd_fd == -1) return;
clear(vga_fd);
char c;
while (1) {
char c;
// first, get shell output
int rd = read(0, &c, 1);
if (rd > 0) {
write(vga_fd, &c, 1);
}
// then read a byte from the kbd. If we got one, pass it to the shell
rd = read(kbd_fd, &c, 1);
if (rd > 0) {
write(1, &c, 1);
}
}
}