nedoPC.org

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



Reply to topic  [ 53 posts ]  Go to page Previous  1, 2, 3, 4
RANDOMIZE USR 
Author Message
Doomed

Joined: 08 Apr 2013 04:04
Posts: 449
Location: 213.247.249.139
Reply with quote
111

_________________
привет засранцу лавру :)


Last edited by angry_troll on 11 Apr 2017 17:44, edited 1 time in total.



09 Apr 2017 16:42
Profile
Supreme God
User avatar

Joined: 21 Oct 2009 08:08
Posts: 7777
Location: Россия
Reply with quote
angry_troll wrote:
так LIST и не отображает переменные. И тем более прогу в машкодах в a$. Тогда уж PRINT a$ :)
Что-то ты затупил, чувак! :mrgreen:

Если в программе на BASIC есть строка:
10 A$="123456789 ... 0123456789"

То по листингу LIST она так и отображается на экране:

...
10 A$="123456789 ... 0123456789"
20 ...


Но вместо 123456789 ... 0123456789 мы вставляем машинный код, в котором,
естественно, есть неотображаемые коды.

После этого по LIST и RUN BASIC падает или вешается.

И нафига нам какой-то еще PRINT a$ ? :o

_________________
iLavr


09 Apr 2017 17:42
Profile
God

Joined: 02 Jan 2006 02:28
Posts: 1390
Location: Abakan
Reply with quote
Lavr wrote:
Что-то ты затупил, чувак!
Не-не! Он всё правильно сказал.
В спектруме есть такая фишка, что переменной может не быть в листинге, но быть уже в памяти, и по LIST про эту переменную уже ни как не узнаешь, разве что зная имя сделать PRINT a$.
Я про эту фишку и написал.

А вообще да, переменную надо изначально как пустую: LET a$="".
После чего из DATA считать в цикле: READ n: LET a$=a$+CHR$(n).
При этом LIST тоже ничего, кроме написанного LET a$="", не покажет.

На спектруме после первого RUN, можно вообще удалить все эти строки, а переменная останется инициализированной и заполненной в памяти переменных, никак не отображаемых, причём это состояние можно запросто сохранить на внешний носитель.


09 Apr 2017 18:02
Profile
Supreme God
User avatar

Joined: 21 Oct 2009 08:08
Posts: 7777
Location: Россия
Reply with quote
jdigreze wrote:
Lavr wrote:
Что-то ты затупил, чувак!
Не-не! Он всё правильно сказал.

Да нет, он как раз неправильно сказал, по крайней мере для той ситуации, которая описана выше.

Если в программе на BASIC есть строка:
10 A$="123456789 ... 0123456789"

Далее по тексту...

ПРИ ЛИСТИНГЕ ЭТА СТРОКА ПРОГРАММЫ НИКУДА ДЕТЬСЯ НЕ МОЖЕТ!
НЕ МОРОЧЬТЕ МНЕ ОБА ГОЛОВУ!



P.S. Вы меня оба неверно поняли.
Вот так как ты рассказываешь:
Quote:
А вообще да, переменную надо изначально как пустую: LET a$="".
После чего из DATA считать в цикле: READ n: LET a$=a$+CHR$(n).
При этом LIST тоже ничего, кроме написанного LET a$="", не покажет.

То a$ действительно в области переменных и её по LIST не видать...

Я же несколько раз рассказал совсем другое:

В программе на BASIC заранее есть строка:
10 A$="123456789 ... 0123456789"

И делается не a$=a$+CHR$(n), а POKE на адреса 123456789 ... 0123456789.
Такую строку как было видно по LIST, так она никуда и не денется.
А вот для 580ВМ80А делать a$=a$+CHR$(n) нельзя и вовсе.
Переменная a$ может быть фиг знает где в памяти в области переменных, а программы
в кодах 580ВМ80А не перемещаемы.

_________________
iLavr


09 Apr 2017 18:32
Profile
Doomed

Joined: 08 Apr 2013 04:04
Posts: 449
Location: 213.247.249.139
Reply with quote
111

_________________
привет засранцу лавру :)


Last edited by angry_troll on 11 Apr 2017 17:45, edited 1 time in total.



10 Apr 2017 01:58
Profile
God

Joined: 02 Jan 2006 02:28
Posts: 1390
Location: Abakan
Reply with quote
Lavr wrote:
Если в программе на BASIC есть строка:
10 A$="123456789 ... 0123456789"

Далее по тексту...

ПРИ ЛИСТИНГЕ ЭТА СТРОКА ПРОГРАММЫ НИКУДА ДЕТЬСЯ НЕ МОЖЕТ!
НЕ МОРОЧЬТЕ МНЕ ОБА ГОЛОВУ!
А я и не спорил. Просто предложил другой вариант, который был мне известен.

Lavr wrote:
В программе на BASIC заранее есть строка:
10 A$="123456789 ... 0123456789"

И делается не a$=a$+CHR$(n), а POKE на адреса 123456789 ... 0123456789.
Такую строку как было видно по LIST, так она никуда и не денется.
А вот для 580ВМ80А делать a$=a$+CHR$(n) нельзя и вовсе.
Переменная a$ может быть фиг знает где в памяти в области переменных, а программы
в кодах 580ВМ80А не перемещаемы.

Если только такой вариант, то... вряд ли чего путнего присоветую. :roll:

P.S. Программы на Z80 тоже при классическом программировании не перемещаемые, но есть методы, когда это можно обойти разными трюками. Но это уже другая тема.


10 Apr 2017 03:14
Profile
Doomed

Joined: 08 Apr 2013 04:04
Posts: 449
Location: 213.247.249.139
Reply with quote
jdigreze wrote:
P.S. Программы на Z80 тоже при классическом программировании не перемещаемые, но есть методы, когда это можно обойти разными трюками. Но это уже другая тема.


Да. Трюк простейший -- узнаёшь адрес запуска, вызвав процедуру типа POP HL:JP [HL] или предварительно поместив её по заведомо неиспользуемому (для основной программы) абсолютному адресу. Потом, в цикле фиксинга адресов, очень помогают команды относительного перехода типа JR или DJNZ.

А эта проблема решается на 8080, интересно?

_________________
привет засранцу лавру :)


10 Apr 2017 03:22
Profile
Supreme God
User avatar

Joined: 21 Oct 2009 08:08
Posts: 7777
Location: Россия
Reply with quote
angry_troll wrote:
А эта проблема решается на 8080, интересно?

Решается, как в exe-файлах для ОС под 8086 для вызовов типа FAR.

jdigreze wrote:
Программы на Z80 тоже при классическом программировании не перемещаемые, но есть методы, когда это можно обойти разными трюками. Но это уже другая тема.

Не знаю, что значит "при классическом программировании", но у Z80 есть относительная адресация,
у К580ВМ80 её нет.
Так что никаких "трюков" нет, а есть естественные свойства Z80.

Ну а для К580ВМ80 задачу, как обнаружить текущий адрес и провести коррекцию таблицы переходов,
мы здесь на форуме давно решали, повторяться не буду.

И что-то вы никак не поймете простую вещь: можно спрятать коды подпрограммы позади REM,
a можно и позади a$ = " ... ", при листинге командой LIST коды непечатаемых символов будут
как-то гадить листинг
.

ВАСИК ПК "Специалист" при этом вешается, а что делает Монитор-16, я сказать не могу, поскольку
мне это и не нужно, я "трюк" пытаюсь воплотить на эмуляторе ПК "Специалист" .

_________________
iLavr


10 Apr 2017 06:42
Profile
Display posts from previous:  Sort by  
Reply to topic   [ 53 posts ]  Go to page Previous  1, 2, 3, 4

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.