---
Вид для печати
---
Ждем контекстную подсказку
А потом фолдинг и пошаговый отладчик :v2_dizzy_facepalm:
А есть функция перемещения по тексту строки вверх-вниз?
Интересная идея.
Не планируется ли добавить команды Delete и Renumber?
eugeniusz, Вы видели "The GOSH WONDERFUL ZX Spectrum ROM"?
так, а варум циферки не задействованы?
Можно попробовать:
- неиспользуемые биты системной переменной TV_FLAG;
- неиспользуемые биты системной переменной FLAGS2;
- неиспользуемые биты системной переменной FLAGX (???, т.к. используется для INPUT);
- системная переменная NOT_USED;
- системная переменная NMIADD.
только увидел тему. очень круто! респект!
по сабжу: не понял, в чем улучшение переноса двоеточия на новую строку. имхо читабельность как раз снизилась, глаз не ищет продолжения, добежав до конца строки и не найдя там двоеточия.
Каки образом будет реализовано? Модификация бейсик ПЗУ?
iceoflame, если бы кто припомнил список самых капризных на этот счёт игрушек, то можно было бы их протестить, и всё сразу бы стало ясно.
ZX_NOVOSIB, Ну во первых там где то идет кусочек ПЗУ свободный, туда еще обычно русский шрифт шили, некоторые игрухи которые выставляют ИМ2 от балды, туда попадает вектор прирывания, и игрухи типа саботер 2 и другие которые не работают на ПЗУ с русским шрифтом -- будут вешаться. Пример компа Робик. Большая часть загрузчиков, использует 1366 (чтение с ленты) на прямую, или делает копию и изменяет его. Некоторые используют даже конченный скролинг из ПЗУ. Ну это совсем старые игрухи до 86 года.
Потесть на saboteur 2 должно загрузится проиграть первую ноту на бипере и повиснуть.
Но моментик, почему не хорошо менять шрифт, некоторые делают косой шрифт, копируя обычный, смещая его на 1 пиксель и накладывая на себя же. обычно в 30-50% загрузчиков так шрифт получают. Прикинь как поломается если его перерисовать.
http://zxpress.ru/book_articles.php?id=476 - здесь кой какой список игр, чувствительных к содержимому пзу. Это то что надо?
Ну блин, LD b, a; RRL A; OR A, B; нижние 4 байта (все восемь болд получится), если я правильно мнемоники помню. БГ, там где в рамке, вообще замещал кусок псевдографики, там рисованный шрифт, а вот в загрузчиках типа Таргет Ренегейт (наклонный шрифт, достаточно популярный), или акшен форсе (2я высота, через строчная), все на основе ПЗУшевского.
Я блин со шрифтами на Віра 48 насмотрелся, там какой-то идиот помимо русского шрифта, еще жирный запихнул на место стандартного.
Самый лучший кроплатформер дизасемблер IDA
- - - Добавлено - - -
http://blogs.kpi.kharkov.ua/v2/asm/w...ida.final_.pdf такой вот документик по ней есть
Шикарная идея для чтения программ с большим потенциалом. Спасибо!
В то же время возможны проблемы с раскраской текста прямо в PRINT
Для примера вот накалякал от балды снапшот :-)
https://files.fm/u/rsqyy2yp
Вообще не отображать, кроме строк куда идет переход. Но, боюсь, это уже не влезет в ПЗУ..
- - - Добавлено - - -
В режиме редактирования в кавычках высвечивать реальные цвета, а в режиме просмотра в кавычках писать код цвета. Имхо, это будет универсальным решением, иначе будет непонятно откуда взялись эти цвета на экране (при работе программы), а это удобный способ расцветить вывод. (мы исходим из того, что это ПЗУ стоит постоянно -- если же его переключать с обычным, то вопрос снят сам собой).
а зачем двоеточия с двух сторон от THEN в операторе IF?
Нужна утилита, которая бы оптимизировала бейсик. Т.е. утилита, которая бы в программе все нули заменяла на NOT PI, все двух-трёхзначные числа на что-то типа CODE "o" (вместо o любой символ или токен). Все прочие числа обрамляла бы в VAL "число".
1=SGN PI
2=PI-SGN PI
3=PI
4=PI+SGN PI
5=?
6=PI+PI
36=PI^PI ну и т.д., в том числе можно юзать синусы, косинусы и т.п. корни.
Но утилите нужно указывать диапазоны строк, где будет произведена оптимизация, потому что не во всех строках нужна такая оптимизация, ибо она крадёт скорость у и без того тормознутого во всю голову бейсика.
такие утилиты есть (только я названия сходу невспомню).
вот пример такой оптимизации
http://www.worldofspectrum.org/infos...cgi?id=0015662
https://c.radikal.ru/c32/1805/dd/f39c2c5ab8bc.png
ZX_NOVOSIB, а можно подробнее раскрыть смысл такой оптимизации?
Гаррий, Легко:
Цитата из книжки про бейсик:
Существенный недостаток ZX Spectrum — относительно малый
объем свободной памяти (около 40 килобайт). А тут еще интерпре-
татор Бейсика «транжирит» память: под запись любого числа ин-
терпретатор отводит 6 ячеек памяти независимо от размера числа.
Под каждый символ отводится 8 ячеек памяти.
** Более подробно о подключении альтернативных шрифтов см. [1].
Даже если это просто единица или ноль. Вот и приходится про-
граммистам, работающим на Бейсике, изощряться, чтобы втис-
нуться в узкие рамки памяти Speccy.
Прежде всего надо расширить область памяти, отведенную для
работы бейсик-программы. Границы, в которых может размещать-
ся программа с переменными, определяются компьютером, но мо-
гут быть изменены. Старший адрес памяти, разрешенный к ис-
пользованию интерпретатором Бейсика, хранится в системной пе-
ременной RAMTOP (23730/31). Стандартно он равен 65367. Но
если программа не вмещается, его можно увеличить до предела —
до 65535*. Для этого нет необходимости записывать новое значе-
ние RAMTOP с помощью РОКЕ. Изменить RAMTOP можно с по-
мощью специально предназначенного для этого оператора CLEAR с
параметром 65535. Правда, CLEAR к тому же очистит все перемен-
ные, массивы, выполнит операторы CLS и RESTORE, вообще подгото-
вит программу к новому пуску.
Если и после перемещения RAMTOP не хватает памяти, при-
дется применять более изощренные методы.
Приведем несколько самых распространенных способов ,сжатия
бейсик-программ. Хотя в этой области нет предела для фантазии.
Во-первых, надо свести к минимуму длину имен всех числовых
переменных. Если их меньше, чем букв в алфавите, то все сделать
однобуквенными.
Памятуя, что числовые константы занимают много места, не
помешает самые часто используемые из них заменить на перемен-
ные. Надо только единожды в начале программы присвоить им
требуемые значения.
Целые числовые константы выгоднее записывать как символь-
ные и помещать их «под» функцию VAL. К примеру, операторы
LET а=5 и LET a=VAL "5" тождественны, однако второй оператор
занимает в памяти на две ячейки меньше (но, следует учесть,
работает медленнее).
Для сокращения объема памяти, занимаемого программой, бы-
вает полезно вместо числовых массивов использовать символьные.
Ведь под каждый элемент числового массива, независимо от того,
что в нем хранится, отводится по пять ячеек памяти, в то время, как
под элемент символьного массива отводится лишь одна ячейка.
Преобразовать же символьную константу в число можно с по-
мощью той же VAL.
И, напоследок, парочку «хитростей». Например, вместо нуля,
который, как и любое число, занимает в памяти 5 байт, можно
записать просто BIN, либо NOT PI. Число «пи» отлично от нуля, и это
главное, а логический оператор NOT, по определению, превращает
его в ноль. Внешне получилось длиннее и мудреней, но в памяти,
тем не менее, такая запись займет лишь две ячейки. Вывернув-
шись, можно «смоделировать» и единицу. Например, записав
NOT BIN либо SNG PI.[свернуть]
Цитируя, думайте!
Вложение 65215
not pi, не?