PDA

Просмотр полной версии : Про бейсик



yur
26.01.2011, 22:27
Подскажите глупому не опытному-как загружать файл по кусочкам в бейсике?

Дмитрий
26.01.2011, 22:35
PEEK "filename.C" addr,sec
где addr - куда
sec - номер сектора в файле
Но судя по командам - надо перед этим сделать что-то типа OPEN #N, "filename.C", RND
где N - от 4 до 15, а после работы - CLOSE #N
Но утверждать не буду - не делал этого никогда.

goodboy
27.01.2011, 00:12
Подскажите глупому не опытному-как загружать файл по кусочкам в бейсике?

объясни поподробней с чего (кассета/дискета) надо загрузить

SoftLight
27.01.2011, 15:40
Я тоже не уверен, что правильно понял вопрос.
Чтобы не затереть те строки, что уже есть, можно использовать для ленты Merge "Progname" или для TR-Dos: Randomize Usr 15619: Rem: Merge "Progname"
Будут дописаны только строки, которых еще не было.
Но если в Бейсике уже набрана строка, например, с номером 1 и в загружаемом файле тоже есть строка с номером 1, то она будет заменена.

yur
09.04.2011, 15:38
всем огромное спасибо :-),но я имел ввиду на эмуляторе

yur
11.12.2011, 14:40
oxo!! я разобрался)) - оказывается нужен просто эмулятор с поддержкой данного "сейшена" -команда MERGE "" и всё в поряде))

John North
11.01.2012, 14:21
Народ, подскажите плиз..
Чето меня вчера даже сплющило (
Вобщем на дискете есть кодовый файл. Хочу загрузить его в басик строку после оператора REM.
В трдосе делаю load "bla bla" code 23872.
Но басик не меняется!
Че я делаю не так?
Делал в эмуле, может это он глючит?
Вроде раньше на реале у меня так получалось..
пс: код я конечно туда поместил (через peek/poke), но это не дело же..
Ппс: щас пока писал подумал про буфер трдос.. Может его как то учитывать надо?

goodboy
11.01.2012, 14:36
подумал про буфер трдос.. Может его как то учитывать надо?
да - всё верно, сдвигать надо на +257 (не помню почему именно так).
23872+257=24129. грузи блок на 24129 и он попадёт (после загрузки) на 23872

John North
11.01.2012, 15:55
goodboy, спасибо)

null_device
11.01.2012, 17:26
Сдвигать надо, потому что при работе tr-dos, в момент обращения к ней - вся бейсик программа и ее переменные "сдвигаются" к "старшим" адресам на 256 байт (буфер для работы tr-dos).
Как вариант: загружать кодовый блок как обычные коды (выше ramtop), а потом "занести" их в первую строку с помощью цикла и операторов poke и peek..

goodboy
11.01.2012, 18:01
вся бейсик программа и ее переменные "сдвигаются" к "старшим" адресам на 256 байт (буфер для работы tr-dos).
это вполне очевидно,но почему на практике получается +257 ???

Wlodek
12.01.2012, 12:29
А я ассемблирую (из памяти!, не с диска) сразу в строку REM, предварительно забив место любыми символами. Особенно удобно, если длина блока кодов больше 256 байт. А через PEEK-POKE переносить, вообще-то, ничего зазорного.

John North
12.01.2012, 12:59
goodboy, буфер то как раз и занимает 257 байт. Так что, всё правильно.
zxpress.ru/book_articles.php?id=1864

John North
19.01.2012, 19:58
Народ, вот такой вопрос..
Как удалить строки бейсик программы из маш. кода?

goodboy
19.01.2012, 20:27
Народ, вот такой вопрос..
Как удалить строки бейсик программы из маш. кода?

первое что приходит на ум влепить в начало строки REM

John North
19.01.2012, 20:36
нет.
нужно именно физическое удаление строк.

null_device
19.01.2012, 20:40
Вот, когда-то набрал из zx ревю, по-моему. Загружается в нулевую строку по merge. Потом вводится с какой и по какую строку нужно удалить.

John North
19.01.2012, 21:50
null_device, спасибо)) всё получилось.
вот сама эта процедура (может еще кому пригодится) :

LD HL, #000A ; номер первой строки для удаления (10 dec)
CALL #196E
PUSH HL
LD HL, #0015 ; номер последней строки для удаления + один (20 + 1 dec)
CALL #196E
POP DE
CALL #19E5
RET

yur
27.07.2012, 18:11
null_device ,огромное спасибо запрогу

baxter
17.02.2014, 20:57
Как из бейсика опросить кемпстон мышку?

goodboy
17.02.2014, 21:11
Как из бейсика опросить кемпстон мышку?
почти как и клаву ( IN port), только надо учитывать старое/новое значение считанное из порта.
и наверно пользователь будет двигать мышь быстрее обработки данных от неё на бейсике.
(лучше применять драйвер на асме, повесив его на IM2)

baxter
17.02.2014, 21:19
goodboy, лень искать инфу. Распиши, плз, какой порт, как опрашивать. С примером.

goodboy
17.02.2014, 21:23
goodboy, лень искать инфу. Распиши, плз, какой порт, как опрашивать. С примером.


интеpфейс довольно
пpост и понятен. Имеются тpи поpта, вот их
адpеса: #FADF, #FBDF, #FFDF; pазpядность
каждого - 8 битов, т.е. байт.

#FADF - поpт кнопок, значащими в нем
являются младшие тpи бита:
0 бит - состояние пpавой кнопки;
1 бит - состояние левой кнопки;

2 бит - состояние сpедней кнопки.

Пpи ненажатых кнопках все биты в `1'. Пpи
нажатии на кнопку соответствующий бит ус-
танавливается в `0'.

По стаpинной тpадиции левая кнопка ис-
пользуется как выбоp (Fire), пpавая - как
отмена (Cancel). Сpеднюю кнопку пpинято
использовать для дополнительных функций.

#FBDF - поpт X-кооpдинаты;
#FFDF - поpт У-кооpдинаты.

По меpе пеpедвижения мышь-манипулятоpа
значения в поpтах изменяются, пpичем еще и
циклически, т.е. пpи достижении #FF и
дальшейшем увеличении становятся снова ну-
лем и pастут далее, опять до #FF. Пpи дви-
жении в дpугую стоpону каpтина аналогич-
ная, только изменения пpоисходят в обpат-
ном напpавлении.



Пpедставить это дело поможет вот такая
картинка:
y^.
│.
│2
│1
│012..
┼─────────> x

Таким обpазом, необходимо считывать
значения поpтов, и по pазнице между теку-
щим и пpедыдущим значением опpеделяется
напpавление пеpемешения мышки.

Пpовеpить pаботу только-что собpанного
интеpфейса можно пpямо из Basic'а, делая
PRINT IN из поpтов: 64479 - X, 65503 - Y -
пpи пеpемещении мыши значения должны изме-
няться циклически. Пpи чтении из поpта
64423 - Fire должны щелкаться тpи младших
битика пpи нажатии кнопочек.

baxter
17.02.2014, 21:26
То что нужно!!