Просто так
char* zx{256] = {
"<0>", "<1>", "<2>", "<3>", "<4>", "<5>", "<6>", "<7>", "<8>", "<9>", "<10>", "<11>", "<12>", "<13>", "", "<15>",
"<16>", "<17>", "<18>", "<19>", "<20>", "<21>", "<22>", "<23>", "<24>", "<25>", "<26>", "<27>", "<28>", "<29>", "<30>", "<31>",
" ", "!", "\"", "#", "$", "%", "&", "'", "(", ")", "*", "+", ",", "-", ".", "/",
"0", "1", "2", "3", "4", "5", "6", "7", "8", "9", ":", ";", "<", "=", ">", "?",
"@", "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O",
"P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z", "[", "\\", "]", "^", "_",
"f", "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o",
"p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z", "{", "|", "}", "~", "(c)",
"<128>", "<129>", "<130>", "<131>", "<132>", "<133>", "<134>", "<135>",
"<136>", "<137>", "<138>", "<139>", "<140>", "<141>", "<142>", "<143>",
"<144>", "<145>", "<146>", "<147>", "<148>", "<149>", "<150>", "<151>",
"<152>", "<153>", "<154>", "<155>", "<156>", "<157>", "<158>", "<159>",
"<160>", "<161>", "<162>", "SPECTRUM ", "PLAY ", "RND ", "INKEY$ ", "PI ",
"FN ", "POINT ", "SCREEN$ ", "ATTR ", "AT ", "TAB ", "VAL$ ", "CODE ",
"VAL ", "LEN ", "SIN ", "COS ", "TAN ", "ASN ", "ACS ", "ATN ",
"LN ", "EXP ", "INT ", "SQR ", "SGN ", "ABS ", "PEEK ", "IN ",
"USR ", "STR$ ", "CHR$ ", "NOT ", "BIN ", "OR ", "AND ", "<= ",
">= ", "<> ", "LINE ", "THEN ", "TO ", "STEP ", "DEF FN ", "CAT ",
"FORMAT ", "MOVE ", "ERASE ", "OPEN # ", "CLOSE # ", "MERGE ", "VERIFY ", "BEEP ",
"CIRCLE ", "INK ", "PAPER ", "FLASH ", "BRIGHT ", "INVERSE ", "OVER ", "OUT ",
"LPRINT ", "LLIST ", "STOP ", "READ ", "DATA ", "RESTORE ", "NEW ", "BORDER ",
"CONTINUE ", "DIM ", "REM ", "FOR ", "GO TO ", "GO SUB ", "INPUT ", "LOAD ",
"LIST ", "LET ", "PAUSE ", "NEXT ", "POKE ", "PRINT ", "PLOT ", "RUN ",
"SAVE ", "RANDOMIZE ", "IF ", "CLS ", "DRAW ", "CLEAR ", "RETURN ", "COPY "
};
void basicToTxt(const char* p, int s, FillBuffer& out) {
while(s>4) {
unsigned short line = p{0]<<8 | p{1];
unsigned short size = p{2]<<8 | p{3];
s-=4;
if(s<size) return;
out.itoa(line);
out.str(" ");
for(unsigned int i=0; i<size; i++) {
if(*p==14) {
p+=6;
i+=5;
} else {
out.str(zx{(unsigned char)*p++]);
}
}
out.str("\r\n");
s-=size;
}
}
Powered by vBulletin® Version 4.2.5 Copyright © 2025 vBulletin Solutions, Inc. All rights reserved. Перевод: zCarot