// Print the ASCII table
proc main(args)
{
var fmt = @"SL,Z2.2,X,A4,2X"; // Copy it because we might modify some chars
const ctrl = {
{ "NUL", "SOH", "STX", "ETX", "EOT", "ENQ", "ACK", "BEL" },
{ "BS", "TAB", "LF", "VT", "FF", "CR", "SO", "SI" },
{ "DLE", "DC1", "DC2", "DC3", "DC4", "NAK", "SYN", "ETB" },
{ "CAN", "EM", "SUB", "ESC", "FS", "GS", "RS", "US" }
};
for (var i = 1; i < args.length(); i++) {
switch (args[i]) {
case "-d" : fmt[3:6] = "I3 ";
case "-o" : fmt[3:6] = "O3.3";
case "-x" : fmt[3:6] = "Z2.2";
default :
"Usage: ascii [-d] [-o] [-x]\n";
" -d print decimal numbers\n";
" -o print octal numbers\n";
" -x print hex numbers\n";
oadl::halt();
}
}
var tab = new Array(16,16);
for (var i = 0; i < 16; i++) {
var ch = 8*i;
for (var j = 0; j < 8; j++, ch++) {
var col = 2*j;
tab[i,col ] = ch;
if (i < 4) {
tab[i,col+1] = ctrl[i][j];
}
else if (ch == 32) {
tab[i,col+1] = "SP";
}
else if (ch == 127) {
tab[i,col+1] = "DEL";
}
else {
tab[i,col+1] = Char(ch);
}
}
}
print(fmt, tab);
}