ZXNet эхоконференция «code.zx»


тема: навоpоты



от: 812/17.09
кому: Aleksandr Majorov
дата: 12 Jan 1998


11-01-98 в 03:18 Aleksandr Majorov писал(а) к Sergej Pou-
gachev на тему "навоpоты".

Привет, Aleksandr!

AM> усе элементарно!
AM> по команде CAT/LIST Тыр-дос считывает 8-й сектор
AM> в буфер для анализа. перед эти оно сохраняет
AM> адрес возврата в стеке, который "совершенно случайно"
AM> нахонится недалеко от буфера...
Глупости. Стек здесь непричем. Запуск происходит при прак-
тически любои значении стека. Дабы не заниматься словоблудием
привожу выписку содержащую разъяснение данного способа запуска
диска.

"... 1. Любая операция по просмотру, или изменению инфор-
мации диска влечет собой предварительное считывание 8-го сек-
тора.
2. Если 8-ой сектор отформатирован, скажем, на 512
байт, то эти 512 байт исправно считаются в память независимо
от того, что освобожден буфер размером всего в 256 байт.
3. Буфер резервируется с адреса #5d25. Hа 257 байт
сдвигается не только область Бейсика, а еще и область информа-
ции о каналах, расположенная перед областью Бейсика. ..."
[ по моему на 256 ]
Hу соответственно, данные 8-го сектора формируются так, что
бы адреса процедур печати содержащиеся в области каналов изме-
нились на адрес запуска нашей программы из 8-го сектора. После
считывания тыр-дос попытается что-нибудь напечатать и тем са-
мым запустит программу.
Я когда то сам этим занимался, так что это проверено на
практике.

AM> Усе остальное просто...
Как видишь, не так...

P.S. перечитал перед отправкой и решил добавить:
Hапример нам надо что бы проц прыгнул на адрес ADDR, то
8-ой сектор надо сформировать так...
Структура 8-го сектора:
DS 256 ;Что запихать сюда это ваше дело.
DW ADDR ;адрес по которому надо перейти
DW ADDR ;повторить 10-15 раз для надежности
DW ADDR ;кто его знает, какую именно процедуру
DW ADDR ;ему приспичит вызвать
.....
DS XXX ;XXX зависит от длины сектора и может
;содержать любую информацию.

С уважением, Aleksandr


With best wishes, Ruiner.


-+- Кыш-Edit v6.06

от: 812/00.00
кому: Oleg Grigoriev
дата: 12 Jan 1998


12-01-98 в 03:34 Oleg Grigoriev писал(а) к Aleksandr Majorov
на тему "навоpоты".

Привет, Oleg!
[...]
AM>> по команде CAT/LIST Тыр-дос считывает 8-й сектор
AM>> в буфер для анализа. перед эти оно сохраняет
AM>> адрес возврата в стеке, который "совершенно случайно"
AM>> нахонится недалеко от буфера...

OG> Глупости. Стек здесь непричем. Запуск происходит при прак-
[..]
OG> бы адреса процедур печати содержащиеся в области каналов изме-
OG> нились на адрес запуска нашей программы из 8-го сектора. После
OG> считывания тыр-дос попытается что-нибудь напечатать и тем са-
[...]

Печать говоришь?
А как ты объяснишь что перехватываются команды
LOAD, RUN, SAVE, которые вроде ничего не печатают?

[....]
OG> Структура 8-го сектора:
OG> DS 256 ;Что запихать сюда это ваше дело.
OG> DW ADDR ;адрес по которому надо перейти
OG> DW ADDR ;повторить 10-15 раз для надежности
OG> DW ADDR ;кто его знает, какую именно процедуру
OG> DW ADDR ;ему приспичит вызвать

скажи, ты всегда так пишешь проги?

знает кудв пойдет проц...
ваще-то программирование - ... хм... точная наука ;-)))
проц работает одинаково, и адрес перехвата один и тот-же...

OG> With best wishes, Ruiner.

С уважением, Aleksandr

PS. данная инфа давно кидалась кем-то в .zx,
тама усе разъяснялось...

-+- ручки [левая и правая]

от: 812/17.09
кому: Aleksandr Majorov
дата: 13 Jan 1998


12-01-98 в 18:47:46 Aleksandr Majorov писал(а) к Oleg Gri-
goriev на тему "навоpоты".

Здравствуй, Aleksandr!

AM> Печать говоришь?
Стек говоришь? Войди в Бейсик, установи стек 60000 и дай в
тыр-досе какую-нибудь команду. Hа стек не наедет и, исходя из
твоих слов, ничего не запустится. _У тебя_.

AM> А как ты объяснишь что перехватываются команды
AM> LOAD, RUN, SAVE, которые вроде ничего не печатают?
А "Disk error" на что?
Вот только не помню как тыр-доска отреагирует если 231 байт
(количество секторов на дорожке) будет равен #10. С другой
стороны, я не разу не видел что бы эту ситуацию специально
обыгрывали. А самому проверять влом.

[ skipped ]

AM> скажи, ты всегда так пишешь проги?
Hет, я сначала думаю, а потом пишу.

AM> ...напишем LD HL,12345, повторим 10...15 раз, кто его
Я повторял ровно 10 (было это года полтора назад, так что
может и не 10;) ) раз и все прекрасно работало, у Медноногова
в ЧВ повторено 14 раз, так что это количество не критично.

AM> знает куда пойдет проц...
Конечно, именно так и надо писать.
Я, например, стек в своих программах выставляю следующим
образом:

LD A,R
LD L,A
HALT
LD A,R
AND #3F
ADD A,#40
LD H,A
LD SP,HL

Это, знаешь, очень способствует выработке адреналина в ор-
ганизме.

AM> ваще-то программирование - ... хм... точная наука ;-)))
Вот именно, что хм...;-) Точная наука это физика, а прог-
раммирование даже не наука;)

AM> проц работает одинаково, и адрес перехвата один и тот-же...
Теоретически да, а на практике лучше подстраховаться.:)

AM> С уважением, Aleksandr
AM>
AM> PS. данная инфа давно кидалась кем-то в .zx,

AM> тама усе разъяснялось...
В сети я с середины октября, а .zx читаю не регулярно. Ты
лучше бы сам попробовал.;)


With best wishes, Ruiner.


-+- Кыш-Edit v6.06

от: 812/17.09
кому: Ivan Mak
дата: 16 Jan 1998


14-01-98 в 08:38:08 Ivan Mak писал(а) к Aleksandr Majorov
на тему "навоpоты".

Привет, Ivan!

AM>> Печать говоришь?
AM>> А как ты объяснишь что перехватываются команды
AM>> LOAD, RUN, SAVE, которые вроде ничего не печатают?
IM> В инфоpмации о каналах есть адpеса подпpогpамм ввода. Мое пpедположение,
Мас меня поддел и я решил досканально прояснить для себя
эту ситуацию. Как выяснилось, все очень просто. Адрес начала
области каналов при активном буфере tr-dos #5e27 а не #5e25.
Соответственно по этому адресу и должен располагаться адрес
(слышала бы меня моя учительница литературы:) ) перехода. Са-
мым первым в области каналов хранится адрес подпрограммы выво-
да в служебный экран. А именно туда tr-dos пытается напечатать
"Disk error". Все-таки Мас был кое в чем прав - достаточно од-
ного адреса перехода.

IM> могут использоваться и они. TR-DOS ведь пpовеpят нажатия клавиш в этих
Сама tr-dos проверяет нажатие клавиш очень редко, имхо
только в случае с "Retry,Abort,Ignore?".

IM> командах что бы поймать BREAK, напpимеp.
Бряк тыр-дос ловит напрямую, не через каналы, а вызывая
процедуру #1f54 основного ПЗУ.

IM> Хотя, быть может, я и не пpав.
Всяко бывает... Может и я в чем-то не прав...

IM> ░▒▓██ С уважением, Ivan. ██▓▒░


With best wishes, Ruiner.


-+- Брысь-Edit v6.06




Темы: Игры, Программное обеспечение, Пресса, Аппаратное обеспечение, Сеть, Демосцена, Люди, Программирование

Похожие статьи:
Суперинтервью - "Как я стал сисопом" о себе рассказывают самые странные обитатели SPbZXNet.
Horror 5 - Иду я как то на диване ночью , как раз начинало темнеть ?
Отдохнём - Воспоминания о будущем.
От авторов - Кaк видите теnерь мы выходим в новом формате...
Смертельные гонки - Новелла к игре "Itallian Supercar".

В этот день...   19 апреля