nedoPC.org

Electronics hobbyists community established in 2002
Atom Feed | View unanswered posts | View active topics It is currently 19 Mar 2024 03:22



Reply to topic  [ 53 posts ]  Go to page Previous  1, 2, 3, 4  Next
RANDOMIZE USR 
Author Message
Supreme God
User avatar

Joined: 21 Oct 2009 08:08
Posts: 7777
Location: Россия
Reply with quote
Shaos wrote:
И зачем мне его ухватывать в момент присвоения (т.е. в момент выполнения LET для этой конкретной перменной), если можно вычислить заранее от системной перемнной начала переменных бейсика VARS?...

Да это ты делай как хочешь, просто умные люди придумали функцию ADDR(X), чтобы не выёживаться,
а LET перевели на положение атавизма, чтобы писать просто, вот так: Х = 3.14159. :wink:

Поэтому на старте топика никто про убогий Sinclair BASIC и не говорил:
Stan wrote:
Просто хочу проверить на старых Бейсиках под "Специалистом" один древний трюк,
...
Смысл там, что в переменную прячут ассемблерный код и вызывают его, к примеру:
RANDOMIZE USR ADDR(A$)

А мне просто стало интересно, в каких ВАСЮКАХ еще есть этот ADDR(A$) - да практически во всех,
с которыми я лично сам работал на "Специалисте", хотя я им и не пользовался тогда.
А поскольку они "дратые" с "РК-86" и "Микроши" - значит почти на всех подобных ADDR(A$) должен быть.

_________________
iLavr


17 Apr 2016 07:18
Profile
Admin
User avatar

Joined: 08 Jan 2003 23:22
Posts: 22383
Location: Silicon Valley
Reply with quote
Ну во-первых они "дратые" у старика Билли :)

Так что ADDR(X) - это изобретение Микрософта...

P.S. Форум вообще-то "ZX Spectrum" называется...

_________________
:dj: https://mastodon.social/@Shaos


17 Apr 2016 07:27
Profile WWW
Supreme God
User avatar

Joined: 21 Oct 2009 08:08
Posts: 7777
Location: Россия
Reply with quote
Shaos wrote:
Форум вообще-то "ZX Spectrum" называется...

Ну и? :roll:
Stan wrote:
Но я подумал, что уж поклонники ZX Spectrum точно должны знать,
что такое USR. :wink:


Уважаемые джентельмены! Должен Вам с прискорбием сообщить, что у убогого Sinclair BASIC
от "ZX Spectrum" весьма удобного оператора ADDR(X) - НЕТ! :lol:
Видимо потому, что писал его не "старик Билли", а какой-то другой "старик"... :wink:


P.S. Ну что, Shaos, всё ништяк с "ZX Spectrum" ? :mrgreen:

_________________
iLavr


17 Apr 2016 07:43
Profile
Admin
User avatar

Joined: 08 Jan 2003 23:22
Posts: 22383
Location: Silicon Valley
Reply with quote
Угу...

P.S. Подкорректировал нашу высокоинтеллектуальную беседу ради эстетики...

P.P.S. Встречный вопрос - а можно ли у старика Билли в A$="..." писать не-буквы? т.е. непечатные символы и коды с >=128? например через бекслеш как в нормальных языках (ну это чтобы полноценно иметь в строковых переменных подпрограммы в любых кодах из всего диапазона значений 0..255)

_________________
:dj: https://mastodon.social/@Shaos


17 Apr 2016 07:59
Profile WWW
God

Joined: 02 Jan 2006 02:28
Posts: 1390
Location: Abakan
Reply with quote
Lavr wrote:
Видимо потому, что писал его не "старик Билли", а какой-то другой "старик"... :wink:
Ага, совсем даже не старик Билли, который на тот момент был ещё вовсе даже не старик. :D
Lavr wrote:
Да это ты делай как хочешь, просто умные люди придумали функцию ADDR(X), чтобы не выёживаться,
а LET перевели на положение атавизма, чтобы писать просто, вот так: Х = 3.14159.
Функция без сомнения зачОтная и весьма полезная, а вот насчёт атавизма весьма спорно, в спецтруме оно: во1 одной кнопкой набирается ;), а во2, из-за этого от оператора в усмерть токенизированной системе было проблематично избавиться. Я уж умолчу наcчёт того, что в дальнейших реализациях васюков внезапно появляется ещё и оператор SET.
Lavr wrote:
Всё же Sinclair BASIC - это в некотором роде ОС
Пожалуй, да, так и есть. Точнее сказать - помесь васюка и ОСи.


17 Apr 2016 08:49
Profile
Supreme God
User avatar

Joined: 21 Oct 2009 08:08
Posts: 7777
Location: Россия
Reply with quote
jdigreze wrote:
в спецтруме оно: во1 одной кнопкой набирается ;),

Ну, это смотря в каком спецтруме... в спецтруме-128 - вряд ли... :wink:

jdigreze wrote:
а во2, из-за этого от оператора в усмерть токенизированной системе было проблематично избавиться.

Да все Васюки - в усмерть токенизированные, тем не менее LET был оставлен чисто для совместимости
с прошлым: можно писать его, а можно и не писать...

Замечу также, что ОС "Sinclair BASIC", известная также как Монитор-16, занимает 16К памяти, а ВАСИК для "Специалиста", также токенизированный, имеющий и автонабор, и альтернативу набора с клавиатуры, занимал всего 8К. Ну ладно - добавим 2К системной ПЗУ = 10К.

И я бы не стал уж так демонизировать это понятие "токенизированный", это всего лишь замена ключевых слов
числами. Вот, к примеру, таблица "токенов" от ВАСЮКА "Микроши":
Code:
CLУFOТNEXФDATБINPUФDIНREAДCUТGOTПRUОIЖRESTORЕGOSUВRETURОREНSTOРOUФOОPLOФLINЕPOKЕPRINФDEЖCONФLISФCLEAТMLOAДMSAVЕNEЧTABЁTПSPCЁFОTHEОNOФSTEР«­ЄЇЮANДOТѕЅјSGОINФABУUSТFRЕINРPOУSQТRNДLOЗEXРCOУSIОTAОATОPEEЛLEОSTR¤VAМASГCHR¤LEFT¤RIGHT¤MID¤

Ей просто соответствует таблица переходов на соответствующие функции, и не более того.
А код токена, если я не забыл, - это его номер в этом связанном списке, который разделяют по последнему символу, большему 7Fh.
Если есть исходник ВАСЮКА, то исправить то, что хочется, довольно нетрудно.

_________________
iLavr


17 Apr 2016 11:32
Profile
Admin
User avatar

Joined: 08 Jan 2003 23:22
Posts: 22383
Location: Silicon Valley
Reply with quote
Lavr wrote:
jdigreze wrote:
в спецтруме оно: во1 одной кнопкой набирается ;),

Ну, это смотря в каком спецтруме... в спецтруме-128 - вряд ли... :wink:


128-й спектрум - это неудачная шутка испанских разработчиков и потом там есть режим 48К ;)

P.S. Не забудь, что в ПЗУ спектрума ещё и знакогенератор сидел и ещё место было, которое например в том же Урале использовали под русский шрифт...

_________________
:dj: https://mastodon.social/@Shaos


17 Apr 2016 11:55
Profile WWW
Supreme God
User avatar

Joined: 21 Oct 2009 08:08
Posts: 7777
Location: Россия
Reply with quote
Shaos wrote:
128-й спектрум - это неудачная шутка испанских разработчиков

Это сугубо твоё личное мнение, которое решил возвести в абсолют один недалекий посетитель ЗетИкс.ПеКа.
А я, к примеру, с этим не согласен, хотя по большому счету мне это пофигу...

_________________
iLavr


17 Apr 2016 11:59
Profile
Supreme God
User avatar

Joined: 21 Oct 2009 08:08
Posts: 7777
Location: Россия
Reply with quote
Shaos wrote:
а можно ли у старика Билли в A$="..." писать не-буквы? т.е. непечатные символы и коды с >=128? например через бекслеш как в нормальных языках (ну это чтобы полноценно иметь в строковых переменных подпрограммы в любых кодах из всего диапазона значений 0..255)

Неожиданно пришлось сделать очень похожий опыт, и ответ получился вроде как отрицательным... :-?
Хотя, может я чего и напортачил... но делал вот так:

В теле Васик-программы объявил текстовую переменную заведомо большей длины,
чем подпрограмма на ассемблере.
A$="123456789 ... 0123456789"

Вышел из Васика и шестнадцатиричным редактором занес в строку "123... код ассемблерной
программы.
Снова запустил Васик, на запрос New?> ответил No - т.е. текст программы должен оставаться
неизменным.

По LIST и RUN Васик падает... :-? Ну по LIST - понятно... непечатные символы портят вывод
и Васёк запутывается в листинге.
А вот почему падает по RUN ... пока никак не соображу.... :osad:

_________________
iLavr


06 Apr 2017 17:11
Profile
Admin
User avatar

Joined: 08 Jan 2003 23:22
Posts: 22383
Location: Silicon Valley
Reply with quote
Фигово

_________________
:dj: https://mastodon.social/@Shaos


06 Apr 2017 18:02
Profile WWW
Supreme God
User avatar

Joined: 21 Oct 2009 08:08
Posts: 7777
Location: Россия
Reply with quote
Shaos wrote:
Фигово

Да я как-то пока полностью не уверен... :-? Во времена "Специалиста" я что-то похожее точно делал...
Возможно, я подзабыл как это сделать правильно... :osad:

_________________
iLavr


07 Apr 2017 05:30
Profile
God

Joined: 02 Jan 2006 02:28
Posts: 1390
Location: Abakan
Reply with quote
Может изначально создавать пустую строку, а потом в цикле загонять туда код через CHR$(n)?


07 Apr 2017 19:04
Profile
Admin
User avatar

Joined: 08 Jan 2003 23:22
Posts: 22383
Location: Silicon Valley
Reply with quote
ну тогда проще в цикле сразу в нужную память загонять

_________________
:dj: https://mastodon.social/@Shaos


07 Apr 2017 20:22
Profile WWW
God

Joined: 02 Jan 2006 02:28
Posts: 1390
Location: Abakan
Reply with quote
Ну, на том же спектруме можно после добавления в переменную нужного машинного кода удалить строки цикла и всего, что с ним было связано, после чего сохранить программу, и она сохранится с готовой переменной. Но! После этого нельзя делать RUN, только GOTO n, иначе переменная обнулится. Тоже самое касается всяких CLEAR n...

Кстати, при запуске с кассеты, не помню про запуск с диска, но скорее всего так же, делается именно GOTO n, где n - номер строки автозапуска, указанный при SAVE "name" LINE n.

Всем этим порой пользовались при защите программ от просмотра.


07 Apr 2017 21:24
Profile
Supreme God
User avatar

Joined: 21 Oct 2009 08:08
Posts: 7777
Location: Россия
Reply with quote
jdigreze wrote:
...после чего сохранить программу, и она сохранится с готовой переменной.

Если мы запихали в переменную программу, то могут быть непечатные символы. Как их потом будет
видно (или не видно) по LIST ?

Что-то мне кажется для корректности и чтобы ничего не падало, следует коды программы изначально
держать в DATA.
А вот после RUN первыми инструкциями ВАСЮКА в цикле READ это всё из DATA, и занести в переменую.

Хотя... это как-то неуклюже выглядит... :-?

_________________
iLavr


09 Apr 2017 15:55
Profile
Display posts from previous:  Sort by  
Reply to topic   [ 53 posts ]  Go to page Previous  1, 2, 3, 4  Next

Who is online

Users browsing this forum: No registered users and 4 guests


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot post attachments in this forum

Search for:
Jump to:  
Powered by phpBB® Forum Software © phpBB Group
Designed by ST Software.