Speccy - наш выбор!

Speccy - наш выбор! (http://zx-pk.ru/index.php)
-   Программирование (http://zx-pk.ru/forumdisplay.php?f=14)
-   -   проблема с tobos и спрайтами. (http://zx-pk.ru/showthread.php?t=17103)

женя999 20th October 2011 12:00

проблема с tobos и спрайтами.
 
Добрый день, у меня такой вопрос:
С помощью арт студио можно создать спрайты 8х8 ,потом сохранить на диске файл.
Потом загрузить его в бейсике, набрать poke 23607,250 и вместо стандартных символов появятся мои спрайты. Вернуться обратно можно poke 23607,60.
Всё работает. Спрайты хранятся в памяти, начиная с адреса 64255 вроде.
Но мне ещё надо использовать программу tobos,а он хранится с адреса 53000 длинной 12536 байт. 53000+12536=65536. Т.е. я уничтожу спрайты, или наоборот. Короче эти две вещи не совместимы ?
Что можно придумать ? Мне нужно пользоваться спрайтами и использовать скомпилированную программу. Может компилятор другой использовать? Во время исполнения скомпилированной программы компилятор должен находиться в памяти ЭВМ, может есть другой, присутствие которого не обязательна ?
(у меня программа, после загрузки всех этих блоков, вроде бы всё работает, но начинаю писать её дальше, с бейсиком происходят чудеса, то внизу ошибку пишет не понятную, то вообще зависает, то цветные кубики, а команду stop вообще не видит . Если внизу запускаю скомпилированную программу rand usr 40000,то она выполняется нормально, если вставляю её в строчку 10 rand usr 40000 и запускаю run enter ,то всё зависает. )
Спасибо.

null_device 20th October 2011 12:12

Quote:

Originally Posted by женя999 (Post 426432)
может есть другой, присутствие которого не обязательна

Mcoder2 от Евдокимова, для работы скомпилированной программы сам компилятор в памяти не нужен. НО он целочисленный и "не понимает" многие операторы бейсика.

---------- Post added at 15:12 ---------- Previous post was at 15:11 ----------

Quote:

Originally Posted by женя999 (Post 426432)
Короче эти две вещи не совместимы

Грузите спрайты по другому адресу: "ниже" скомпилированной программы или "выше" кодов компилятора (мне кажется, он "сверху" не впритык, фонт UDG не затирает). ТОБОС стирает данные между концом скомпилированной программы и началом блока кодов компилятора.

AER 20th October 2011 12:17

спрайты принтом выводишь?я игры в тобосе писал.надо вспомнить..

null_device 20th October 2011 12:19

Quote:

Originally Posted by женя999 (Post 426432)
ошибку пишет не понятную

Какую конкретно?

Quote:

Originally Posted by женя999 (Post 426432)
команду stop вообще не видит

Она не "распознается" компилятором как ограничитель конца программы. По-моему он ее воспринимет как выход из компилированной программы.

AER 20th October 2011 12:30

делал вроде так:
в 30000 шрифт,компилим в 40000
1pap0:bord0:goto3
2rand usr tobos:rand usr 40000:stop
3далее твоя прога
тестируешь гоуто 2.
шрифт грузишь отдельно потом все сохраняй в z80.

---------- Post added at 10:30 ---------- Previous post was at 10:27 ----------

а ну и poke 23606,48 23607,116

null_device 20th October 2011 12:50

Quote:

Originally Posted by женя999 (Post 426432)
начинаю писать её дальше, с бейсиком происходят чудеса

Видимо нехватает пямяти? RAMTOP ведь "опускаете" до 39999?!
При написании программы делайте так:
1. Поднимаете RAMTOP на максимально возможное значение, командой clear n.
2. Пишете программу до определенного момента.. в саму программу добавляете строки:
Code:

rem: border usr 15619: rem: save "prog" сохраняемся
rem:clear n: border usr 15619: rem: load "compil" code загрузка компилятора
rem: border usr 15619: rem: load "graph" code загрузка графики
rem:  randomize usr 53100 запуск компилятора
rem:clear n: border usr 15619: rem: save "code" code n+1, m запись скомпилированной программы
ремарка нужна, для запуска в командной строке и чтобы строка не обрабатывалась компилятром

3. Потом, выполняете каждую строку по очереди (удаляя команду rem, в начале строки).
----
Можно пользоваться приемом - до компиляции размещать графику вверху памяти. А перед компиляцией "пересчитать графику" под нижние адреса, там, где сейчас находится бейсик-программа. Ну, и компилировать программу "впритык" - первый раз узнаем длину получившейся программы, а второй раз, поднимем ramtop, чтобы конец скомпилированной программы был в районе ~52000-53000.

---------- Post added at 15:50 ---------- Previous post was at 15:42 ----------

Quote:

Originally Posted by женя999 (Post 426432)
он хранится с адреса 53000 длинной 12536 байт

Кодовый блок компилятора TOBOS, начинается с 53100 и имеет длину 12268, т.е. заканчивается в районе 65368. Сверху есть свободных 168 байт.

AER 20th October 2011 13:06

у меня влезало все вроде.завтра игры покажу. считаю самый быстрый (кроме целочисленных) и "добрый" компилятор (инерпретатор?).

GM BIT 20th October 2011 13:23

Просто грузи шрифт в 32768 (до программы tobos) , потом poke 23607,127 (или 128 какое-то правильное)

AER 20th October 2011 14:03

а 23606 по умолчанию "ноль" же?

null_device 20th October 2011 14:17

Quote:

Originally Posted by AER (Post 426472)
а 23606 по умолчанию "ноль" же?

23606\07 => 0\60


All times are GMT +4. The time now is 20:59.

Powered by vBulletin® Version 3.8.3
Copyright ©2000 - 2014, Jelsoft Enterprises Ltd.