ZX Review #5-6
04 ноября 1997

Этюды - Процедура поиска текстовых файлов.

<b>Этюды</b> - Процедура поиска текстовых файлов.




    Может  быть, стоит  на  базе
этюдов и почившего в бозе разде-
ла для  начинающих  создать  ка-
кой-то  уголок  программиста,  в
котором систематизированно осве-
щать практические  приемы  прог-
раммирования. Уровень начинающе-
го проходится довольно быстро, а
между начинающим  и  мастером  -
большой  диапазон  промежуточных
уровней, представители которых и
составляют большую часть читате-
лей "Ревю".
    Для повышения общего  уровня
грамотности не мешало бы  систе-
матизировать способы  сокращения
размера типовых процедур и повы-
шения их быстродействия, особен-
но для процедур копирования бло-
ков памяти. В принципе, это  все
уже  приводилось, но  разбросано
по разным номерам. А  в  послед-
нее  время в программах начинают
встречаться фрагменты типа:

LOOP   LDI          ; 16 тактов
       JP   PE,LOOP ; 10 тактов

    (Информация о времени выпол-
нения команд взята из трехтомни-
ка по программированию в  машин-
ных кодах. "Инфорком", 1993г.)
    Очевидно, автор где-то  про-
читал, что LDI быстрее LDIR  (21
такт). В результате длина больше
на три байта,  а  быстродействие
ниже на 5 тактов в каждом  цикле
перемещения байта.

   Кажется, уже  кто-то  предла-
гал заняться коллективным  прог-
раммированием.  Написать   таким
способом игру,  имеющую  большую
коммерческую  ценность,  малове-
роятно, хотя бы потому, что вряд
ли у кого хватит сил вручную на-
бивать    огромное    количество
спрайтов. Но написать  еще  один
вариант TETRIS или BALL  BREAKER
с минимальным количеством спрай-
тов вполне возможно.  Сама  игра
не имеет первостепенного  значе-
ния.  Главное  -  показать  весь
процесс   создания   законченной
программы.  А  разработанные  за
это   время  процедуры  можно  в
дальнейшем использовать в  само-
стоятельно разрабатываемых прог-
раммах.
    Если в  результате  появится
еше хотя бы  несколько  десятков
программистов,    пишущих    для
SPECTRUM, лучше будет всем,  по-
тому  что  рынок    программного
обеспечения невозможно  насытить
увеличением  количества  предла-
гаемых  программ.  Чем    больше
программ, тем больше пользовате-
лей и  больше  спрос  на  другие
программы. А количество тем  для
программирования бесконечно.

        ПРОЦЕДУРА ПОИСКА
        ТЕКСТОВЫХ ФАЙЛОВ

    Я не встречал пока ни  одно-
го  дискового  доктора,  поддер-
живающего  альтернативную  коди-
ровку, ставшую фактическим стан-
дартом    текстовых       файлов
ZX-SPECTRUM. Для упрощения  про-
цесса восстановления дисков, со-
держащих    текстовые      файлы
ZX-WORD, ZX/IBM EDITOR, ZX-ASM и
т.п., предлагаю процедуру  прос-
мотра дисков с разрушенным ката-
логом.
    Начальные дорожка  и  сектор
задаются в переменной TRACK.  На
экран выводится содержимое  трех
смежных секторов. В верхней час-
ти экрана печатаются номера  до-
рожки и сектора, с которых начи-
нается вывод. Секторы  выделяют-
ся цветом фона.
    При нажатии  BREAK  происхо-
дит выход из процедуры, при  на-
жатии любой другой клавиши выво-
дится дамп следующих трех секто-
ров.
    По адресу  FONT  в  процессе
компиляции загружается  знакоге-
нератор, содержащий  образы  256
символов   с    кодами    0-255.
LOADCODE - директива  ассемблера
XAS, выполняющая загрузку  блока
кодов. Если Вы пользуетесь  дру-
гим  ассемблером,  замените   ее
аналогичной  директивой   Вашего
ассемблера. Для ZEUS это  PLACE,
для TASM, ALASM - INGBIN, ZX-ASM
3 - INSERT.
    Знакогенератор можно  соста-
вить самостоятельно, но  гораздо
проще извлечь  его,  при  помощи
програмы FIND EDIT FONT, из  лю-
бого текстового  редактора,  ис-
пользующего матрицу  6х8  пиксе-
лов. Еще проще использовать один
из наборов знаков, прилагаемых к
ассемблеру ZX-ASM 3.
    Процедура PRIN_42, использу-
ющаяся для печати в  формате  42
символа  в  строке, заимствована
из ZX-Ревю N4-5/96 стр.101 ( (c)
А.Матюшев).
140.
INIT     LD      HL,#0100 ;H-TRK, L-SEC.
TRACK    EQU     $-2
         LD      (#5CF4),HL
         XOR     A
         OUT     (#FE),A
         LD      A,#45
         LD      (#5C8D),A
START    LD      HL,#4000
         LD      DE,#4001
         LD      (HL),L
         LD      BC,#1840
         LDIR
         LD      A,#30
LOOP1    LD      C,#E0      ; B=0
         LD      (HL),A
         LDIR
         SUB     8
         CP      #18
         JR      NZ,LOOP1
         LD      C,31
         LD      (HL),B
         LDIR
         LD      A,2
         CALL    #1601
         LD      DE,MES1
         LD      C,MES2-MES1
         CALL    #203C
         LD      HL,#5CF5
         PUSH    HL
         CALL    NUMBER
         LD      DE,MES2
         LD      BC,FONT-MES2
         CALL    #203C
         POP     HL
         DEC     HL
         CALL    NUMBER
         LD      HL,#0200
         LD      (XTXT),HL
         LD      HL,BUFF
         PUSH    HL
         LD      DE,(#5CF4)
         LD      BC,#0305
         CALL    #3D13
         POP     HL
         LD      C,#03   ; B=0
LOOP     LD      A,(HL)
         CALL    PRIN_42
         INC     HL
         DJNZ    LOOP
         PUSH    HL
         LD      HL,YTXT
         INC     (HL)
         POP     HL
         DEC     C
         JR      NZ,LOOP
KEY      XOR     A
         IN      A,(#FE)
         OR      %11100000
         INC     A
         JR      Z,KEY
         CALL    #1F54      ; BREAK?
         RET     NC
         JR      START
NUMBER   LD      C,(HL)
         LD      B,0
         CALL    #2D2B
         JP      #2DE3
MES1     DEFB    22,00,6
         DEFM    "TRACK:"
MES2     DEFB    6
         DEFM    "SECTOR:"
FONT     LOADCODE "Font"
PRIN_42  PUSH    HL
         LD      HL,XTXT
         LD      A,41
         CP      (HL)
         JR      NC,WR2
         XOR     A
         LD      (HL),A
         INC     HL
         INC     (HL)
WR2      POP     HL
         LD      A,(HL)
PRSYM    EXX
         PUSH    HL
         LD      L,A
         LD      H,0
         ADD     HL,HL
         ADD     HL,HL
         ADD     HL,HL
         LD      DE,FONT
         ADD     HL,DE
         PUSH    HL
         LD      DE,(XTXT)
         LD      A,E
         ADD     A,A
         LD      E,A
         ADD     A,A
         ADD     A,E
         LD      E,255
         LD      L,8
CHPL1    INC     E
         SUB     L
         JR      NC,CHPL1
         ADD     A,L
         LD      H,A
         LD      A,L
         SUB     H
         LD      (SL1-1),A
         LD      (SL2-1),A
         LD      A,D;   AADR
         AND     #18
         ADD     A,#40
         LD      H,A
         LD      A,D
         AND     7
         RRCA
         RRCA
         RRCA
         ADD     A,E
         LD      L,A
         POP     DE
         LD      C,8
SCRL     LD      A,(DE)
         LD      B,0
SL1      SRL     (HL)
         DJNZ    SL1
         AND     A
         LD      B,0
SL2      RL      A
         RL      (HL)
         DJNZ    SL2
         INC     HL
         LD      (HL),A
         DEC     HL
         INC     H
         INC     DE
         DEC     C
         JR      NZ,SCRL
         LD      HL,XTXT
         INC     (HL)
         POP     HL
         EXX
         RET
XTXT     DEFB    0
YTXT     DEFB    0
BUFF ; буфер для загрузки 3-х секторов
2
    Кроме восстановления  испор-
ченных дисков, приведенную  выше
процедуру можно использовать для
преобразования текстов, содержа-
щихся в HELP-программах, к виду,
пригодному для печати.
    Мониторы-отладчики, к  сожа-
лению, тоже пока не понимают по-
русски, и  более  быстрым  может
оказаться следующий способ:  за-
пускается HELP, вставляется чис-
тый  диск  и  нажимается  MAGIC.
Программа после этого может  за-
виснуть, но текст  будет  сохра-
нен в распакованном виде. (Защи-
щать  от  MAGIC  свой  рекламный
продукт  будет  только сумасшед-
ший).  Остается   просканировать
диск, извлечь текст и при помощи
текстового редактора удалить ко-
довый  мусор  в начале и в конце
файла.

           *   *   *




Другие статьи номера:

Adventure Project - Проектирование и разработака Адвентюрных и RPG игр.

Adventure Project - Русификация адвентюр.

TR-DOS для начинающих - Продолжение.

Авторская разработка - Scorpion 2000 (С.Зонов).

Авторская разработка - Трамплин (С.Веремеенко).

Визитная карточка - новый электронный юмористический журнал "SpectrofUn".

Перекресток драконов - Раскрутка игры Finders Keepers.

Перекресток драконов - Раскрутка игры Knight Tyme.

Перекресток драконов - Раскрутка игры Spellbound.

Перекресток драконов - Раскрутка игры Stormbringer.

Ретро - 40 лучших процедур: Слияние картинок, Вращение символа по часовой стрелке, Инвертирование символов, Изменение атрибута, Закрашивание контура, Построение шаблонов (Дж.Хардман, Э.Хьюзон.).

Советы экспертов - Total Eclipse 2.

Советы экспертов Super League.

Форум-игры - Описание игры Страна Мифов.

Форум-игры - Прохождение Renegade.

Форум-игры - Тонкости торговли в игре Elite

Форум - Изучение и отладка @-файлов с помощью STS 5.1. Особенности отладки программ с помощью монитора STS. Исправление ошибки STS 5.1.

Форум - Компрессия программ.

форум - О сокращении времени форматирования. О записи секторов одновременно с форматированием. Перестроение экрана за одно прерывание.

Форум - Особенности ассемблера ZX ASM 3.0.

Форум - По поводу компилятора бейсика "Blast".

Форум - По поводу релоцируемых программ.

Форум - Программы "Пламя" и "Дракон".

Читатель-читателю - TR-DOS: как не допустить ошибки?

Читатель-читателю - Эффективная работа с дисководом .

Этиды - Расчет адреса в файле атрибутов. Программа скроллирования заданного окна на 1 пиксел вправо. Программа очистки заданного окна. Процедура вывода картинки из буфера.

Этюды - Индикатор каналов музыкального процессора. Процедура очистки экрана. Предложение по стандартизации.

Этюды - Набор из восьми программ "расширения" экрана. Две процедуры проявления экрана.

Этюды - Новые темы для разработок.

Этюды - Программа воспроизведения инструмента от редакторов оцифрованной музыки.

Этюды - Программа обработки @-бейсик файлов.

Этюды - Процедура поворота символа на 90 градусов по часовой стрелке.

Этюды - Процедура поиска текстовых файлов.

Этюды - Экранная процедура "UP HL".


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

Похожие статьи:
Прикольчик - Прикольчик'с Новополоцка?. Какие же письма поступают к нам в лабораторию.
Последний Weekend - история Ижевской печатной газеты для Спектрума: ZX Weekend.
Игротека - В мире NETHER World.
Введение - Несколько авторских слов.
Список BBS - Список ныне действующих BBS в городе С.-Петербурге.

В этот день...   21 ноября