|
Faultless #01
11 февраля 1996 |
|

В ЭТОМ РАЗДЕЛЕ ПОСЛЕДОВАТЕЛЬНО ДАНА ИНФОРМАЦИЯ О ТВОЕМ КОМПЬЮ-
ТЕРЕ,НЕОБХОДИМАЯ ПРИ ТАКОГО РОДА РАБОТЕ,ТАКАЯ,КАК КАРТА ПАМЯТИ,
СПОСОБ ЗАПИСИ В ПАМЯТЬ ОТДЕЛЬНЫХ СТРОК В basic,ОТДЕЛЬНЫЕ СИС-
ТЕМНЫЕ ПЕРЕМЕННЫЕ И Т.Д. ЗАТЕМ МЫ РАССМОТРИМ СЧИТЫВАНИЕ ПРОГ-
РАММ И БЛОКОВ ДАННЫХ 'БЕЗОПАСНЫМ СПОСОБОМ',Т.Е. ТАК,ЧТОБЫ ОНИ
НЕ СТАРТОВАЛИ АВТОМАТИЧЕСКИ И МОЖНО БЫЛО БЫ ПРОСМОТРЕТЬ ИХ СО-
ДЕРЖИМОЕ;В КОНЦЕ МЫ ЗАЙМЕМСЯ ОБЕЗВРЕЖИВАНИЕМ ПРЕДОХРАНИТЕЛЕЙ,
НАПИСАННЫХ НА ВНУТРЕННЕМ ЯЗЫКЕ.ПОСТАРАЕМСЯ ТАКЖЕ ПРОИЛЛЮCТРИ-
РОВАТЬ ВСЕ ЭТО КОНКРЕТНЫМИ ПРИМЕРАМИ НА ИЗВЕСТНЫХ ПРОГРАММАХ.
НАДЕЮСЬ,ЧТО ВАШИ УСИЛИЯ НЕ ПРОПАДУТ ЗРЯ И ВЫ ТОЖЕ НАУЧИТЕСЬ
ДОБИРАТЬСЯ БЕЗ ПРЕПЯТСТВИЙ К ЛЮБОЙ ПРОГРАММЕ.
ДОРОГУ ОСИЛИТ ИДУЩИЙ !!!
1.РАСПРЕДЕЛЕНИЕ ПАМЯТИ:
rom...................0
display file..........16384
attr..................22528
БУФЕР ПРИНТЕРА........23296
СИСТЕМНЫЕ ПЕРЕМЕННЫЕ..23552
КАРТА МИКРОДРАЙВЕРА...23734
ИНФОРМАЦИЯ О КАНАЛАХ..chans (23631);(23734)
{80...................prog (23635);(23755)
ОБЛАСТЬ basic.........ramtop (23730);(65368)
{3Е...................udg (23675);(63368)
ГРАФИКА ОПРЕДЕЛЯЕМАЯ ПОЛЬЗОВАТЕЛЕМ..p-ramp (23732);(65535)
2.ЗАГРУЗКА ПРОГРАММЫ НА assembler'Е.
ЭТА ПРОГРАМКА ПРЕДНАЗНАЧЕНА ДЛЯ ТЕХ,У КОГО К speccy,КРОМЕ МАГ-
НИТОФОНА,ay-3-8910(12) И 128k НИЧЕГО НЕ ПОДКЛЮЧЕНО.А У КОГО
ПОДКЛЮЧЕН ДИСКОВЫЙ ИНТЕРФЕЙС,ТОТ МОЖЕТ СЮДА НЕ ЗАГЛЯДЫВАТЬ.НО
ЕСЛИ И ЗАГЛЯНЕШЬ,ТО НИЧЕГО СТРАШНОГО НЕ ПРОИЗОЙДЕТ,КРОМЕ,КАК У
ТЕБЯ СГОРИТ cpu z-80 (ШУТКА!).ХОТЯ ЗАГЛЯНУТЬ СЮДА ЖЕЛАТЕЛЬНО
ВСЕМ (УЗНАТЬ БОЛЬШЕ ОБ speccy НИКОГДА НЕ ПОЗДНО-ЭТО ЖЕ ДЛЯ
ТВОЕГО БЛАГА,ЗНАТЬ БУДЕШЬ БОЛЬШЕ).ЧТО-ТО МЫ ЗАГОВОРИЛИСЬ,ИТАК:
load/merge
org 60000
ld bc,34
rst 48
push de
pop ix
ld (iy+58),1
ld (ix+1),255
call 1821
ld hl,(23618)
ld (23621),hl
rst 8
defb 255
ЭТА ПРОЦЕДУРКА ПОЗВОЛЯЕТ СЧИТЫВАТЬ БЕЙСИКОВСКУЮ ПРОГРАММУ C ЗА-
HECEHUEM ДАННЫХ В de И ix ЯВЛЯЕТСЯ БОЛЕЕ БЫСТРОДЕЙСТВУЮЩЕЙ!
А ВОТ ЭТА ПРОГРАММА ПОЗВОЛЯЕТ ЗАГРУЖАТЬ БЛОКИ КОДОВ C ИСПОЛЬЗО-
ВАНИЕМ ДОПОЛНИТЕЛЬНОЙ ПАМЯТИ.ПРИ ВЫПОЛНЕНИЕ ОНА САМА СЕБЯ ПЕРЕ-
НОСИТ ИЗ АДРЕСА УКАЗОННОГО В org'Е ПОД ПОДХОДЯЩИЙ АДРЕС;ДОСТИ-
ГАЕТСЯ ЭТОТ ЭФФЕКТ БЛАГОДОРЯ НАЛИЧИЮ jp 4633 И ПОТОМ ОНА ЗАПИ-
CЫВАЕТ БЛОК КОДОВ НЕ ВЫХОДЯ В basic (ЕСЛИ basic ЗАПОРОЛСЯ ПРИ
ИСПОЛЬЗОВАНИЕ СИСТЕМНЫХ ПЕРЕМЕННЫХ).
org 65400
ld ix,0
ld de,dl
ld a,255
scf
inc d
ex af,af'
dec d
di
ld a,15
out ({fe),a
ld a,0
jr c,ok
ld a,7
ok out ({fe),a
error ld a,{bf
in a,({fe)
rra
jr c,error
ld ix,0
ld de,dl-16384
ld a,255
call 1218
ld hl,65399
jp 4633
РАБОТОСПОСОБНОСТЬ ЭТОЙ ПРОГРАММЫ ПРОВЕРЕНА НА ЛИЧНОМ ОПЫТЕ.
МОЖЕТЕ УБЕДИТЬСЯ САМИ.
----------------------------------------------------------------
ЧТОБЫ ПОНЯТЬ ПРОЦЕСС СОЗДАНИЯ ФАЙЛА ТИПА magic,НЕОБХОДИМО ЗНАТЬ
АССЕМБЛЕР И РАБОТУ z-80 СО СТЕКОМ.ПОСМОТРИМ,КАК tr-dos РЕАГИРУЕТ
НА НАЖАТИЕ magic.В ТОТ МОМЕНТ,КОГДА ПРОЦЕССОР ПЫТАЕТСЯ СЧИТАТЬ
ИЗ ОЗУ КОД ОЧЕРЕДНОЙ КОМАНДЫ,ПРОИСХОДИТ АППАРАТНОЕ ВКЛЮЧЕНИЕ
ПОДСТАВНОГО ПЗУ tr-dos И ОДНОВРЕМЕННО ВОЗНИКАЕТ ЗАПРОС HEMACKU-
РУЕМОГО ПРЕРЫВАНИЯ nmi.ПРИ ТАКОМ ЗАПРОСЕ z-80 СНАЧАЛА ЗАПИСЫВАЕТ
В СТЕК ТЕКУЩЕЕ ЗНАЧЕНИЕ СЧЕТЧИКА КОМАНД (УКАЗАТЕЛЬ НА КОД КОМАН-
ДЫ,КОТОРАЯ ВЫПОЛНЯЛАСЬ БЫ ПРИ ОТСУТСТВИИ ПРЕРЫВАНИЙ) И ПЕРЕХОДИ-
ЛА К ВЫПОЛНЕНИЮ ПРОЦЕССА ОБСЛУЖИВАНИЯ НЕМАСКИРУЕМОГО ПРЕРЫВАНИЯ,
НАЧАЛЬНАЯ ЧАСТЬ КОТОРОЙ ИМЕЕТ СЛЕДУЮЩИЙ ВИД:
{0066 jp {2a56
{2a56 push af
push bc
push de
push ix
push iy
exx
push bc
push de
push hl
ex af,af'
push af
ld a,i
push af
ld a,r
push af
ld hl,0
add hl,sp
push hl
........
К ЭТОМУ МОМЕНТУ ЗНАЧЕНИЯ ВСЕХ РЕГИСТРОВ НА МОМЕНТ ПРЕРЫВАНИЯ
СОХРАНЯЮТСЯ В СТЕКЕ,ЧТО ПОЗВОЛЯЕТ В ДАЛЬНЕЙШЕМ ВОССТАНАВЛИВАТЬ
ИХ ДЛЯ ВОЗОБНОВЛЕНИЯ РАБОТЫ C МЕСТА ПРЕРЫВАНИЯ.ИНТЕРЕСТНО,ЧТО
ДАЖЕ ЗНАЧЕНИЕ УКАЗАТЕЛЯ СТЕКА ПОМЕЩАЕТСЯ В sp,НО САМОЕ ВАЖНОЕ-
ЧТО ЭТО ЖЕ ЧИСЛО БУДЕТ ЗАПИСАНО В ЗАГОЛОВКЕ magic (В ПОЛЕ 'НА-
ЧАЛЬНЫЙ АДРЕС').ЭТОЙ ИНФОРМАЦИИ ДОСТАТОЧНО ДЛЯ ОПРЕДЕЛЕНИЯ СОС-
ТОЯНИЯ z-80 НА МОМЕНТ НАЖАТИЯ magic.ПРИ ЭТОМ НЕЛЬЗЯ НЕ ОТМЕТИТЬ,
ЧТО ОБЛАСТЬ,'ЗАТИРАЕМАЯ' СТЕКОМ ПРИ РАБОТЕ СИСТЕМЫ ДОВОЛЬНО ВЕ-
ЛИКА И ПРИ МАЛОМ ЗАПАСЕ,ОТВЕДЕННЫМ ПРОГРАММОЙ ПОД СТЕК,ЭТО ПРИ-
ВОДИТ К НЕВОЗМОЖНОСТИ СКОПИРОВАТЬ ЕЕ ТАКИМ ОБРАЗОМ.КРОМЕ ТОГО
tr-dos ПРИ СОЗДАНИИ magic ПОРТИТ НЕСКОЛЬКО БАЙТОВ СИСТЕМНЫХ ПЕ-
РЕМЕННЫХ basic'А.МАЛО КТО ЗНАЕТ ОПИСЫВАЕМЫЙ В ФИРМЕННЫХ РУКО-
ВОДCТВАХ МЕТОД ВЫЗОВА КОМАНД tr-dos ИЗ ПРОГРАММЫ В КОДАХ.НЕС-
МОТРЯ НА ЕГО ОГРАНИЧЕНИЯ,СТОИТ РАССМОТРЕТЬ ЕГО ПОПОДРОБНЕЕ.В
ПАМЯТИ СОЗДАЕТСЯ ТЕКСТОВАЯ СТРОКА,ЭКВ.КОМАНДЕ tr-dos,НАПРИМЕР
ТАКАЯ:
string defb 234 ;rem
defb ':'
defb 248 ;save
defm '...' ;ИМЯ ФАЙЛА
defb 13 ;enter
ЧТОБЫ ЗАСТАВИТЬ tr-dos ВЫПОЛНИТЬ ЭТУ КОМАНДУ,НЕОБХОДИМО МО-
ДИФИЦИРОВАТЬ СИСТЕМНУЮ ПЕРЕМЕННУЮ ch-add (2 БАЙТА,РАЗМЕЩЕН-
НЫХ ПО АДРЕСУ 23645,СОДЕРЖАТ АДРЕСС СЛЕДУЮЩЕГО ИНТЕРПРЕТИ-
РУЕМОГО СИМВОЛА) ВЫЗВАТЬ ПРОЦЕДУРУ ОБРАБОТКИ КОМАНД И ЗАТЕМ
ВОССТАНОВИТЬ ИСХОДНОЕ ЗНАЧЕНИЕ ch-add.АДРЕСС ПРОЦЕДУРЫ tr-dos МЫ
ОБОЗНАЧИМ КАК addrtrdos,ПОСКОЛЬКУ ЕГО ЗНАЧЕНИЕ,ПРИВЕДЕННОЕ В
ОПИСАНИИ tr-dos НУЖДАЕТСЯ В ОТДЕЛЬНОМ КОММЕНТАРИИ.
ld hl,(chadd)
ld (temp),hl
ld hl,string
ld (chadd),hl
call addtrdos
ld hl,(temp)
ld (chadd),hl
ret
temp defw 0
chadd equ 23645
addtrdos equ 15619
ЕСЛИ ВАМ ДОСТАЛОСЬ ФИРМЕННОЕ ОПИСАНИЕ tr-dos,В НЕМ МОЖНО НАЙТИ
ДРУГОЕ ЗНАЧЕНИЕ addtrdos-15363 ({3c03),ТО ЕСТЬ АДРЕСС,НЕ ВХОДЯ-
ЩИЙ В ОБЛАСТЬ ВКЛЮЧЕНИЯ ПОДCТАНОГО ПЗУ tr-dos !!! ВИДИМО,В ФИР-
МЕННОМ КОНТРОЛЛЕРЕ ОБЛАСТЬ ЗАПИСИ НАЧИНАЕТСЯ C АДРЕСА {3c00.
ВО ВСЕХ РАСПРОСТРАНЕННЫХ ВЕРСИЯХ tr-dos АНАЛОГИЧНАЯ ОБЛАСТЬ ПОД-
CТАВНОГО ПЗУ ВЫГЛЯДИТ СЛЕДУЮЩИМ ОБРАЗОМ:
{3c00 rst 56
jr {3c06
{3c03 rst 56
jr {3c09
{3c08 jp {3d00
{3c09 jp {3d03
ТАКИМ ОБРАЗОМ СНАЧАЛА ИСПОЛЬЗУЕТСЯ ПРОЦЕДУРА ПО АДРЕСУ 56
{0038 ei
ret
ВО ВСЕХ БОЛЕЕ ЛИ ИМЕНИЕ СТАНДАРТНЫХ ПРОЩИВКАХ ПЗУ tr-dos МОЖ-
НО НАЙТИ СЛЕДУЮЩУЮ ГРУППУ КОДОВ.
{3d2e nop
{3d2f nop
{3d30 ret
ОНА ПОЗВОЛЯЕТ ОСУЩЕСТВИТЬ ВХОД В tr-dos ПО ЛЮБОМУ АДРЕСУ,ПРЕД-
ВАРИТЕЛЬНО ПОМЕЩЕННЫМ В sp.КАК ВИДНО,АДРЕСС ЭТОЙ ГРУППЫ КОДОВ
ГАРАНТИРУЕТ ВКЛЮЧЕНИЕ ПОДСТАВНОГО ПЗУ.КРОМЕ ТОГО,СУЩЕСТВЕННА ЕЩЕ
ОДНА ТОЧКА ВХОДА В tr-dos ДЛЯ ВЫЗОВА ШИРОКОГО НАБОРА ПОЛЬЗОВА-
ТЕЛЬCКИХ ФУНКЦИЙ,О КОТОРЫХ БУДЕТ РАССКАЗАНО В СЛЕДУЮЩИХ НОМЕРАХ!
$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
p.p.s ВОРОЖКИН АЛЕКСАНДР,БАЖЕНОВ СТАС
Other articles:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Similar articles:
В этот день... 15 November