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:
Sinclair v. Wintel - Creator ZX Spectrum and its new project.

В этот день...   21 November