Чем можно конвертировать ZX BASIC в обычный текстовый файл?
Удивительно, но поиском не нашел.
Вид для печати
Чем можно конвертировать ZX BASIC в обычный текстовый файл?
Удивительно, но поиском не нашел.
Best View на реале.
BASin
спасибо!
bestview на триальном спектакуляторе не работает.
basin рабатает!
В IS-DOS есть программа bas_is.com и резидент bas_is.res
А обратная программа (txt -> basic) существует?
BView в чистом дос или в дос-боксе на хр..
Пс: Basic View.
Просто так
Код: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;
}
}
vinxru, что-то у тебя с автоматической расстановок скобочек не так:) Плюс сырая реинтерпретация байт не комильфо- тот же номер строки ты вполне кошерно вычисляешь.