191 prt(0, cy,
"tape", 0x0F);
192 prt(4, cy,
"@", 0x06);
196 if (inpt[0] ==
'\0') {
203 int argc =
pargs(inpt, args);
204 if (argc == 0)
continue;
206 if (
strcmp(args[0],
"help") == 0) {
209 else if (
strcmp(args[0],
"clear") == 0) {
213 else if (
strcmp(args[0],
"ls") == 0) {
216 if (list[0] ==
'\0') {
217 prt(0, cy + 1,
"(empty)", 0x0F);
223 for (i = 0; i < 511 && list[i] !=
'\0'; i++) {
229 prt(0, cy + 1, temp, 0x0F);
232 for (
int j = 0; temp[j] !=
'\0'; j++) {
233 if (temp[j] ==
'\n')
lines++;
238 else if (
strcmp(args[0],
"panic") == 0) {
241 else if (
strcmp(args[0],
"alloc") == 0) {
245 else if (
strcmp(args[0],
"heap") == 0) {
247 prt(0, cy + 1,
"cmd arena start: 0x", 0x0F);
249 prt(0, cy + 2,
"cmd arena current: 0x", 0x0F);
251 prt(0, cy + 3,
"cmd arena size: ", 0x0F);
253 prt(0, cy + 4,
"cmd arena used: ", 0x0F);
257 else if (
strcmp(args[0],
"read") == 0) {
260 prt(0, cy + 1,
"usage: read <name>", 0x0C);
266 else if (
strcmp(args[0],
"write") == 0) {
269 prt(0, cy + 1,
"usage: write <name>", 0x0C);
271 }
else if (argc == 3) {
277 else if (
strcmp(args[0],
"rm") == 0) {
280 prt(0, cy + 1,
"usage: rm <name>", 0x0C);
286 prt(0, cy + 1,
"rm: file not found: ", 0x0C);
287 prt(21, cy + 1, args[1], 0x0C);
291 prt(0, cy + 1,
"rm: deleted ", 0x0F);
292 prt(13, cy + 1, args[1], 0x0F);
297 else if (
strcmp(args[0],
"reboot") == 0) {
300 else if (
strcmp(args[0],
"echo") == 0) {
307 for (
int i = 1; i < argc; i++) {
309 prt(curx, cury, args[i], 0x0F);
315 prt(curx, cury,
" ", 0x0F);
333 else if (
strcmp(args[0],
"info") == 0) {
335 prt(0, cy + 1,
"sysinfo:", 0x01);
337 prt(0, cy + 2,
"mem: ", 0x0F);
339 prtd(5, cy + 2, (
int)msize, 0x0F);
341 prt(0, cy + 3,
"disk: ", 0x0F);
343 prtd(7, cy + 3, (
int)dsize, 0x0F);
347 prt(0, cy + 4,
"cpu: ", 0x0F);
348 prt(5, cy + 4, cpu, 0x0F);
354 prt(0, cy + 1,
"unknown: ", 0x0C);
355 prt(9, cy + 1, args[0], 0x0C);
arena_t * fs_arena
the filesystem child arena
arena_t * cmd_arena
the command processing child arena