Чем можно конвертировать 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, что-то у тебя с автоматической расстановок скобочек не так:) Плюс сырая реинтерпретация байт не комильфо- тот же номер строки ты вполне кошерно вычисляешь.
zmakebas еще есть
http://www.svgalib.org/rus/zmakebas.html
ссылка там битая, вот - ftp://ftp.untergrund.net/users/gasma...bas-1.2.tar.gz
под винду через mingw собирается без проблем
А если не надо в .tap, а в голый файл, типа хобеты без заголовка, есть такие?
А присутствуют ли на форуме люди, могущие в сях и имеющие время и желание немного (?) поковырять bas2tap или/и zmakebas?
Taper :-)
Тут есть 2 маленькие утилитки на Перле, которые умеют читать тап/тзх и выводят листинг бейсика: https://my.mixtape.moe/hxwtbp.zip
Утилиты предназначены для реверсинга, а не для модификации, потому распечатывают не только сам бейсик, но и переменные, и скрытые значения цифровых значений (поддерживаются как целочисленные, как в коде выше, так и флоаты, которых в коде выше нет). Тап-версия чуть более продвинута и выводит листинг более правильно, но по сути можно скопипастить одно в другое. Утилька в основном пытается детектить экраны и шрифты и отображает, если найдет.
Умею в сишку, но зачем?
так bas->txt или txt->bas?
8. bView v0.6b - Basic view for HoBeta files
http://forum.tslabs.info/viewtopic.php?f=9&t=626
zxmodules.de
Шынни, читай всю тему, а не последнее сообщение :)
Думаю, это может быть даже и лучше, если она в итоге открытой будет. Скомпилить-то в .dll или .so наверное при желании сможет почти каждый.
По сути в итоге нужна функция, которая на входе будет получать 1 Барсик-строку в текстовом виде [, номер этой строки], а на выходе будет выдавать адрес результата, его (результата) длина в байтах, номер ошибки.
В таком случае почти все остальное можно будет вытащить за скобки.
Ага.
Да по-разному можно. Для того, чтобы посмотреть, надо еще умудриться найти tap-ок с этим всем :)
Еще б неплохо заиметь возможность "кодировать" сырую хекс-последовательность для кусков маш-кода после REM.
Исходники zmakebas и bas2tap есть. Но толку мне от них :(
Так напиши нормальное задание со всеми интерфейсами, чтобы не переделывать потом.
Ну у меня будет нечто подобное, только проще и глючнее. Чтобы оно было лучше, лучше заюзать bas2tap, но он тебе не нравится. Потому с требованиями надо как-то подробнее определиться.
Как вариант:
В ZX-Editor сохраняем как BASin Basic.