122 lines
3.3 KiB
C
122 lines
3.3 KiB
C
const char *apps_lst[] = {
|
|
"",
|
|
"reboot",
|
|
"osver",
|
|
"date",
|
|
"place",
|
|
"cls",
|
|
"memory"
|
|
};
|
|
int apps_count = 7;
|
|
|
|
void apps_osver()
|
|
{
|
|
puts("CTA OS v0.1");
|
|
puts("\n(c) CTA 2010.\n");
|
|
}
|
|
|
|
void apps_date()
|
|
{
|
|
puts("Today is ");
|
|
puts((char*)clock_weekdays[clock.weekday]);
|
|
puts(", "); putc((clock.day/10)+'0');
|
|
putc((clock.day%10)+'0');
|
|
puts(" "); puts((char*)clock_months[clock.month]);
|
|
puts(" "); putc((clock.century/10)+'0');
|
|
putc((clock.century%10)+'0');
|
|
putc((clock.year/10)+'0');
|
|
putc((clock.year%10)+'0');
|
|
putc('\n');
|
|
}
|
|
|
|
void apps_place()
|
|
{
|
|
puts("On your desk, if you didn't notice... \n");
|
|
}
|
|
|
|
void apps_clrscr()
|
|
{
|
|
clrscr();
|
|
}
|
|
|
|
void apps_memory(const int pn, const char* param[])
|
|
{
|
|
if (pn<3) {
|
|
puts ("Correct syntax: memory [start_address] [end_address] (in hex)\n");
|
|
return;
|
|
}
|
|
|
|
byte *start, *end;
|
|
byte l1 = strlen(param[1]), l2 = strlen(param[2]);
|
|
unsigned int a;
|
|
int i; byte *count;
|
|
|
|
a = 0;
|
|
for(i = 0; i < l1; i++) {
|
|
switch (param[1][i]) {
|
|
case 'a':
|
|
case 'A': a = a*16 + 10; break;
|
|
case 'b':
|
|
case 'B': a = a*16 + 11; break;
|
|
case 'c':
|
|
case 'C': a = a*16 + 12; break;
|
|
case 'd':
|
|
case 'D': a = a*16 + 13; break;
|
|
case 'e':
|
|
case 'E': a = a*16 + 14; break;
|
|
case 'f':
|
|
case 'F': a = a*16 + 15; break;
|
|
|
|
default: if (!(param[1][i]>='0' && param[1][i]<='9')) {
|
|
puts ((char*)param[1]); puts(" is not a valid hex address.\n");
|
|
return;
|
|
}
|
|
a = a*16 + (param[1][i] - '0');
|
|
break;
|
|
}
|
|
}
|
|
start = (byte *)a;
|
|
|
|
a = 0;
|
|
for(i = 0; i < l2; i++) {
|
|
switch (param[2][i]) {
|
|
case 'a':
|
|
case 'A': a = a*16 + 10; break;
|
|
case 'b':
|
|
case 'B': a = a*16 + 11; break;
|
|
case 'c':
|
|
case 'C': a = a*16 + 12; break;
|
|
case 'd':
|
|
case 'D': a = a*16 + 13; break;
|
|
case 'e':
|
|
case 'E': a = a*16 + 14; break;
|
|
case 'f':
|
|
case 'F': a = a*16 + 15; break;
|
|
|
|
default: if (!(param[2][i]>='0' && param[2][i]<='9')) {
|
|
puts ((char*)param[2]); puts(" is not a valid hex address.\n");
|
|
return;
|
|
}
|
|
a = a*16 + (param[2][i] - '0');
|
|
break;
|
|
}
|
|
}
|
|
end = (byte *)a;
|
|
|
|
while (start <= end) {
|
|
put_hex ((unsigned int) start); puts(": ");
|
|
|
|
for (count = start; count < start+16; count++) {
|
|
putc(hex[*count/16]); putc(hex[*count%16]);
|
|
putc(' ');
|
|
}
|
|
puts(" ");
|
|
for (count = start; count < start+16; count++)
|
|
putc(*count);
|
|
|
|
putc('\n');
|
|
start+=16;
|
|
}
|
|
|
|
|
|
} |