С любовью к вам, Yandex.Direct
Размещение рекламы на форуме способствует его дальнейшему развитию
я уже выкладывал прогу, на прошлой странице.
clear у меня там стоит на 61829.
кроме самого бейсика в ту область заносятся:
screen: (так я назвал две служебные строки в которых может находится любая графика) размер 512 байт, начинается с 61830.
font: три шрифта из art studio (любые догружаются) - начинаются с 62350 по 768 байт каждый. заканчиваются на 64658.
text: текст набранный в редакторе, полный экран с 0 по 21 строчки - начинается с 64660, длина 704 байта.
udg: udg-символы 65368 длина 168 байт.
обновил прогу до новой версии, (пока ещё тестирую её, потому и не выкладываю).
чую что места практически нет, впритык уже всё, вот и пытаюсь вычислить сколько байт ещё есть.
да, забыл добавить, размер проги теперь 36689 байт.
Последний раз редактировалось ZEman; 19.09.2016 в 18:37.
ZEman, читайте переменные VARS и PROG. Вычтя из первого, второе - унаем длину бейсик программы. Непосредсвенно свободная область после бейсик переменныех нчинается со значения WORKSP. Или, наберите PRINT 65536 - USR 7962, вроде, как должно показывать количество свободной памяти в байтах.
Когда есть, но не знаешь где - это все равно, что нету.
goodboy, я уже советовал ТС, отказаться от многобуквенных переменных и по возможности использовать одни и те же локальные переменные.
Вопрос в том - хватит ли свободной памяти для его работы.
ZEman, могу на досуге вручную "перебрать" вашу программу исключив "лишние" операторы и попытаться уменьшить обьем листинга.
Когда есть, но не знаешь где - это все равно, что нету.
точечный оптимизатор сокращает прогу примерно на 1600байт
и самое главное в отличии от VAL незамедляет обработку строк
![]()
После работы попробую уменьшить размер проги, даже байт 200-300 прилично увеличит продолжительность работы проги.
Можно ещё конечно run или сlear куда-то добавить, но боюсь что тогда все переменные обнулятся.
Вобщем буду стараться оптимизировать.
А разве Remы так много занимают ?
:v2_dizzy_aaaaa
Я их использую для разделения программы на части чтоб не путаться, где, что.
каждая буква текста - один байт (их набегает 1231 символ), плюс сами REMы (113 штук), плюс бейсиковская информация по каждой строке - номер, длина, возврат каретки (113 штук * 5 байт = 565)
итого 1909 байт
чутка наврал, что больше 2кб
-----
вот это тоже на машкоде реализовать совсем легко, места займёт меньше, а выполняться будет мгновенно:
цикл копированияКод:4002 CLS 4003 PRINT INK 0; FLASH 1;AT 3,3;"Please wait 40 seconds !" 4005 LET adr=20672: LET peek=0: LET ra=61830 4007 LET di=adr+63 4009 FOR g=adr TO di 4011 LET peek=PEEK ra 4013 POKE g,peek 4015 LET ra=ra+1 4017 NEXT g
ну и вызов процедурки через rand usr val "...." - 10 байт,Код:LD HL, 61830 ; 3 байта LD DE, 20672 ; 3 байта LD BC, 64 ; 3 байта LDIR ; 2 байта RET ; 1 байт итого: 12 байт
что в итоге даст размер меньший, чем бейсиковское сообщение "подождите 40 сек"
Последний раз редактировалось Bedazzle; 19.09.2016 в 11:23.
Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)