Привет, друзья. Прошу помощи.
Без предысторий причин, сразу к сути.
Написал программу на basic для 48K - генерация случайного идеального лабиринта (и дальнейшее его прохождение) (алгоритм здесь, кому интересно).
Ячейка лабиринта - одно знакоместо на экране.
Всё это дело "управляется" 8-ю символьными массивами, описывающими состояние ячейки (вид ячейки, посещена или нет, координаты "отката", наличие выхода С-Ю-В-З) и десятком вспомогательных символьных переменных.
Вся программа основана на операторах IF...THEN.
Зациклив генерацию (пропуская прохождение), приблизительно на 12 круге (при максимальном размере лабиринта 21x32 символа) вываливается ошибка Out of memory.
Вопрос. Куда уходит память? На вычисления (как это узнать вообще)? Можно ли как-то "почистить" её на новом круге генерации, не затрагивая значения вспомогательных символьных переменных?
В архиве листинг программы TEST.b82 (просмотр и редактирование - блокнот, открытие - эмулятор EightyOne), .tap и .sna (сэйв на 12 круге).
Изначально большинство переменных были числовые, но тогда память кончалась еще раньше.
Генерация ну оооочень медленная (в частности из-за функции VAL перевода символов в число). В Spectaculator при 14 МГц и на скорости 20x генерация одного максимального лабиринта занимает около 20 секунд.


Ответить с цитированием
Размещение рекламы на форуме способствует его дальнейшему развитию 

