СОЗДАНИЕ БАЗЫ ДАННЫХ ДЛЯ
BLACK CROW VIEWER
(С) 2000 Макс
-----------------------------------------
Хе, какая-то традиция получается с по-
дарками оболочек от меня. Как вы, вероят-
но, помните 2-й номер "Вороны", где я по-
дарил всем желающим свой miniWindoWs, ко-
торый не смотря на его убогость, имел не-
который успех у программистов - я видел в
работе своё детище в нескольких програм-
мах. Надеюсь, что этот подарок будет так-
же кем-то востребован. Если уж такой от-
стой, как оболочка "Техт Maker" пользует-
ся успехом, то мой "рулез" наверняка со-
ставит ему конкуренцию.
Виевер (далее - оболочка) предназначе-
на для удобного просмотра цветных текстов
с графикой при музыкальном сопровождении.
Может использоваться для создания хелпов,
газет и журналов. Количество текстов ог-
раничено физическим размером диска tr-dos
или 128-ю файлами. Максимально допустимый
размер текста от 65535 до 70000 байт. За-
висит это от его сложности.
В комплекте с оболочкой поставляется
программа-транслятор текста в формат обо-
лочки, которая компрессирует последова-
тельности байт текста и тем самым умень-
шая его физический размер. Под текст в
оболочке отведено 64 килобайта (4 страни-
цы). Текст можно делать цветным, выводить
тремя шрифтами, иллюстрировать. Короче,
оболочка журнала почти полностью идентич-
на той оболочке, о которой идёт речь.
Нравится? Тогда дальше читай...
Итак, в "Приложении" есть два кодовых
блока - "VIEWER_1.С" и "VIEWER_2.С", ко-
торые и есть эта самая оболочка. Сразу же
разочарую особо ленивых - такой лафы, как
в "ТМ" здесь нет и для получения конечно-
го продукта надо будет поработать ручка-
ми. Я имею ввиду автоматический компиля-
тор бейсик-загрузчика, музыки, текста и
оболочки. Но зато я даю больше возможнос-
тей.
Ограничения тоже есть. Всё-таки я пи-
сал эту оболочку для себя, а уже потом
решил подарить её публике. Ограничения на
использование накладывает не оболочка, а
её утилита - программа конвертации текста
в формат оболочки: требуется компьютер с
расширеной памятью по порту #7FFD (6 бит)
до 256 килобайт. Фактически, только обла-
датели Пентагонов-256/512 могут использо-
вать оболочку для своих целей. Уж так по-
лучилось.
Начнём с подготовительных работ. Нужно
взять текст, набраный в любом текстовом
редакторе и отформатировать его по длине
строки 31, 41 или 62 символа. Это связано
с присутствием на экране скролл-бара, ко-
торый занимает одно знакоместо. Потом мо-
жете раскрасить текст в Техт Maker`е или
в WinWord`е. Для иллюстрирования текста
надо применять ТОЛьКО Техт Maker v1.10f,
т.к. только этот долбаный редактор ставит
в текст токены спрайтов. Сожалею, но при
больших объёмах текста его придётся поде-
лить на части, т.к. ТМ не может вместить
в себя больше 32К. Если хотите выделить в
тексте некоторые строки другим по размеру
шрифта видом, то надо ставить управляющие
токены ТОЛьКО в начале строки, иначе оши-
бётся программа-транслятор. Токены смены
шрифта: 1 - 32 символа; 2 - 41 или 62. Не
удивляйтесь - это так надо. А дело в том,
что для всего текста надо заказывать флаг
размера (где - читай ниже). Если размер
заказан 41 символ в строке, то код 2 бу-
дет понят так, что текущий размер строки
на 62 символа и наоборот. Как устанавли-
вать спрайты по тексту - читайте инструк-
ции к ТМ и транслятору.
В "Трансляторе" есть опции "Добавить"/
"Вычесть строку", которые призваны ликви-
дировать глюки со скролл-баром: в некото-
рых текстах может быть следующее "недора-
зумение" - прокручивая текст баром до са-
мого конца получается, что ручка бара уже
упёрлась в нижнюю границу её поля, а пара
строк текста ещё не вышла на экран. Быва-
ет, что вышли все строки текста, а ручка
бара после её отпуска подпрыгивает вверх.
Вот с такими глюками надо бороться путём
изменения количества строк в тексте. Про-
граммно этот глюк не убивается, к сожале-
нию...
Для музыкального оформления подойдёт
любая музыка от любого редактора, включая
даже SQ Tracker. Музыка должна быть ком-
пилирована под адрес 49152 (#С000) и быть
с проигрывателем! Размер файла музыки не
должен привышать размер #3000 байт!
Для фоновой картинки есть свои требо-
вания: её запакованый (без распаковщика)
размер не должен быть больше 4096 (#1000)
байт! Фоновые музыка и заставки размещены
на одной странице: #3000+#1000=#4000 раз-
мер страницы Спектрума.
После того, как текст готов, перекоди-
рован в формат оболочки надо сделать сле-
дующее:
1) упаковать полученные блоки программой
"HRUST v1.хх", включая и оболочку. При
этом всё паковать БЕЗ РАСПАКОВЩИКА!!!!
2) Упаковать фоновую картинку.
3) записать бейсик-загрузчик.
4) следом за ним записать loader (идёт в
комплекте с оболочкой в виде листинга.
В нём есть пара комментариев и очерёд-
ность следования файлов оболочки).
5) записать пакованные без распаковщика
две части алгоритма, музыку и screen.
6) записать все пакованные тексты.
7) Каким-нибудь коммандером объединить в
единый блок полученные файлы.
Всё! Полученная программа не привязана
к диску, может работать на любом компью-
тере и быть свободно копируемой. Теперь о
базе данных на тексты, которые надо соз-
дать в ассемблере. Не пугайтесь, там ни-
чего не надо кодировать - достаточно ука-
зать все параметры окон и текста, отком-
пилировать и выгрузить STS`ом на диск. Не
следует искать этот листинг в приложении:
его там нет, поэтому запиши этот текст на
диск, в любом редакторе убери всё лишнее,
а затем сконвертируй в формат своего лю-
бимого ассемблера. Рекомендую ALASM :)
Для наглядности работы оболочки и базы
данных я привожу данные для "Чёрной Воро-
ны #4". Так будет понятнее, надеюсь...
;(С) 2000 Макс. Данные для журнала ~ВС#4~
ORG #6000 ;алгоритм часть 1
+ INCBIN "ВОРОНА_1"
ORG #DB00,7 ;алгоритм часть 2
+ INCBIN "ВОРОНА_2"
ORG #С000,6 ;музыка до #3000!
+ INCBIN "ВС_SONG";не пакована!
ORG #F000,6 ;screen до #1000!
+ INCBIN "ВС_SCR";запакован!
;----------------------------------------
ORG #В500 ;данные до 2048!
;------ адреса для инсталляции окон
;и таблиц в журнале.
DEFW RMENU ;главное окно меню
DEFW TSFIL ;size/track/sector
DEFW TBASIC ;заголовки прог-
;рамм в приложении
;------ главное меню
RMENU DEFB 1 ;строка 0
DEFB 14 ;колонка 1
DEFB 18 ;длина 2
DEFB 12 ;высота 3
DEFB 70 ;цвет окна 4
DEFW 0 ;next окно/#0000 5
DEFW TMENU ;txt menu 7
DEFW SMENU ;jp то progs 9
DEFM "СОДЕРЖАНИЕ"; 11
NOP ;end заголовка
TMENU DEFB "ПРОГРАММИСТАМ...",13
DEFB "ОЧУМЕЛЫЕ РУЧКИ",13
DEFB "БЕЛЫЙ ПОПУГАЙ...",13
DEFB "РАСКРУТКА...",13
DEFB "ИГРОТЕКА...",13
DEFB "РАЗНОЕ...",13
DEFB "ПРИЛОЖЕНИЕ...",13
DEFB "выход",0
SMENU DEFB 1 ;=next WindoW
DEFW RPROG ;окно "програм."
DEFB 0 ;=load txt
DEFW Т33 ;описатель текста
DEFB 1
DEFW RPOP ;"попугай"
DEFB 1
DEFW RRASK ;"раскрутка"
DEFB 1
DEFW RGAME ;"игротека"
DEFB 1
DEFW RRAZ ;"разное"
DEFB 1
DEFW RPRI ;"приложение"
DEFB 3 ;=exit то ALASM;)
;------ второстепенные окна
RPROG DEFB 6,7,23,9,104
DEFW 0,TPROG,SPROG
DEFB "программистам",0
TPROG DEFB "СТРУКТУРА ПРОГРАММ",13
DEFB "СОВРЕМЕННЫЕ ПРОГРАММЫ",13
DEFB "БЫСТРЫЙ SCROLL`ЕР",13
DEFB "ПЕРЕХВАТ IM 1",13
DEFB "ТЕОРИЯ",0
SPROG NOP
DEFW Т2
NOP
DEFW G28
NOP
DEFW Т21
NOP
DEFW Т18
NOP
DEFW Т7
RPOP DEFB 7,8,23,9,67
DEFW 0,ТРОР,SPOP
DEFB "весёлый раздел",0
ТРОР DEFB "ИНТЕРНЕТ-ПОXМЕТОЛОГ",13
DEFB "И ЕГО ПОЛЕЗНЫЕ СОВЕТЫ",13
DEFB "ВЫЙДИ ЗАМУЖ ЗА КОДЕРА",13
DEFB "МОЛОДОЖЁНАМ-2",13
DEFB "АНЕКДОТЫ О ШТИРЛИЦЕ",0
SPOP NOP
DEFW Т1
NOP
DEFW Т12
NOP
DEFW Т15
NOP
DEFW Т14
NOP
DEFW Т11
RRASK DEFB 8,5,25,8,113
DEFW 0,TRASK,SRASK
DEFB "раскрутка",0
TRASK DEFB "SOFT ИЗ ХАРьКОВА",13
DEFB "GLUK RESET SERVICE v5.2"
DEFB 13,"ОБЗОР НОВЫХ СИСТЕМОК"
DEFB 13,"CRIME SANTA CLAUS-2"
NOP
SRASK NOP
DEFW Т3
NOP
DEFW Т9
NOP
DEFW Т24
NOP
DEFW Т29
RGAME DEFB 8,6,24,10,105
DEFW 0,TGAME,SGAME
DEFB "игротека",0
TGAME DEFB "В МИРЕ ~NETHER~",13
DEFB "СЦЕНАРИИ БУДУЩИХ ИГР",13
DEFB "ВПЕЧАТЛЕНИЯ ОТ ВОРОНА"
DEFB 13,"SUPER LASER SQUAD",13
DEFB "~ПОТРЯСАЮЩИЙ~ ШЕДЕВР",13
DEFB "ОБЗОР ИГРУШЕК",0
SGAME NOP
DEFW Т8
NOP
DEFW Т4
NOP
DEFW Т20
NOP
DEFW Т16
NOP
DEFW Т23
NOP
DEFW Т31
RRAZ DEFB 10,7,18,9,120
DEFW 0,TRAZ,SRAZ
DEFB "разное",0
TRAZ DEFB "INTEL OUTSIDE...",13
DEFB "СТРАШИЛКА...",13
DEFB "ТРИБУНА...",13
DEFB "РЕКЛАМА txt",13
DEFB "РЕКЛАМА gfx",0
SRAZ DEFB 1 ;open neW WindoW
DEFW RINT ;"intel outside"
DEFB 1
DEFW RSTR ;"страшилка"
DEFB 1
DEFW RTRI ;"трибуна"
NOP
DEFW Т25
NOP
DEFW G26 ;графика!
RINT DEFB 14,4,25,6,77
DEFW 0,TINT,SINT
DEFB "intel outside",0
TINT DEFB "КАК ЗАМУЧИТь WindoWs`95"
DEFB 13,"СЕКС ПО ТЕЛЕФОНУ",0
SINT NOP
DEFW Т10
NOP
DEFW Т13
RSTR DEFB 15,5,24,7,68
DEFW 0,TSTR,SSTR
DEFB "ужастики",0
TSTR DEFB "ТНЕ (X) FILES",13
DEFB "СПРАВКА ПО ВИРУСАМ"
DEFB 13,"ТЕРМИНАТОРЫ БУДУЩЕГО"
NOP
SSTR NOP
DEFW Т5
NOP
DEFW Т6
NOP
DEFW Т19
RTRI DEFB 15,5,25,9,105
DEFW 0,TTRI,STRI
DEFB "глас народа",0
TTRI DEFB "РАССУЖДЕНИЯ НА ТЕМУ",13
DEFB "ЗАНИМАТЕЛьНЫЕ СОВЕТЫ",13
DEFB "УКРАИНСКИЙ НАЦИОНАЛИЗМ"
DEFB 13,"PIDARSOFT. РЕАКЦИЯ"
DEFB 13,"ОТ РЕДАКЦИИ",0
STRI NOP
DEFW Т17
NOP
DEFW Т22
NOP
DEFW Т30
NOP
DEFW Т32
DEFB 0
DEFW Т27
;------ окно "приложение"
RPRI DEFB 11,3,26,10,86
DEFW 0,TPRI,SPRI
DEFB "ПРИЛОЖЕНИЕ",0
TPRI DEFB "GLUK RESET SERVICE v5.3i"
DEFB 13
DEFB "BEEPER PROTECT SYSTEM",13
DEFB "для детей ~FIGUS 128~",13
DEFB "игра ~RANA RAMA~",13
DEFB "пасьянс ~ПИРАМИДА~",13
DEFB "~ВИКИНГ~"
NOP
SPRI DEFS 18,2 ;6*3=18
;------ заголовки Basic-файлов для прило-
;жения. По 9 байт (с расширением "В").
TBASIC DEFM "GLUK TS В"
DEFM "BPSv1.0bB"
DEFM "FIGUS128В"
DEFM "RANARAMAB"
DEFM "Domino В"
DEFM "WIKING+ В"
;------ данные для статей
Т1 DEFB 0 ;NN music file
DEFB 16 ;NN txt files
DEFB #FF ;end files
DEFB 2 ;41 symbols
DEFM "Похметолог";до 16 байт
NOP ;end
Т2 DEFB 1,17,18,#FF,2
DEFB "СТРУКТУРА",0
Т3 DEFB 2,19,#FF,2
DEFB "В АРХИВ",0
Т4 DEFB 3,20,21,#FF,2
DEFB "СЦЕНАРИЙ",0
Т5 DEFB 4,22,#FF,1
DEFB "ТНЕ (X) FILES",0
Т6 DEFB 5,23,#FF,1
DEFB "Вирусология",0
Т7 DEFB 6,24,#FF,2
DEFB "О модемах",0
Т8 DEFB 7,25,26,27,#FF,3
DEFB "Мир ~NETHER~",0
Т9 DEFB 8,28,29,#FF,2
DEFB "GLUK present...",0
Т10 DEFB 9,30,31,#FF,2
DEFB "Замучай WindoWs!",0
Т11 DEFB 10,32,33,34,35,#FF,2
DEFB "АНЕКДОТЫ",0
Т12 DEFB 11,36,37,#FF,2
DEFB "Киберпохметолог",0
Т13 DEFB 12,38,#FF,2
DEFB "Секс по телефону",0
Т14 DEFB 13,39,40,41,42,#FF,2
DEFB "Записки жены-I",0
Т15 DEFB 14,43,#FF,2
DEFB "Девушкам",0
Т16 DEFB 15,44,#FF,2
DEFB "~Лазерный Отряд~",0
Т17 DEFB 0,45,#FF,2
DEFB "Трибуна",0
Т18 DEFB 1,46,#FF,2
DEFB "Долой IM 2!",0
Т19 DEFB 2,47,48,#FF,2
DEFB "Мифы XX века",0
Т20 DEFB 3,49,50,#FF,2
DEFB "~Чёрный Ворон~",0
Т21 DEFB 4,51,#FF,2
DEFB "Инсталлятор",0
Т22 DEFB 5,52,#FF,2
DEFB "Советы ;)",0
Т23 DEFB 6,53,54,#FF,2
DEFB "ШЕДЕВР",0
Т24 DEFB 7,55,56,#FF,2
DEFB "Обзор системок",0
Т25 DEFB 8,57,58,#FF,2
DEFB "Реклама",0
;данные для загрузки и вывода графики
G26 DEFB 9 ;NN музыки
DEFB 59 ;NN общего файла scr.
DEFB #FF ;конец списка
NOP ;признак "графика"
DEFB 5 ;кол-во раск screen
Здесь следует остановиться отдельно. Я
поддержал в оболочке вывод полноэкранных
файлов (реклама, комиксы и т.д.) Для это-
го надо взять HRUST, запаковать все экра-
ны без распаковщика. Затем любым команде-
ром, который умеет это делать, объединить
сжатые экраны в единые файлы, но сделать
это так, чтобы сумарный размер одного об-
щего файла не привышал 64 сектора, т.е. в
страницу Спектрума свободно помещался. Вы
можете сделать до 4-х таких файлов. Пако-
ванные размеры самих картинок значения не
имеют. Получается, что за один раз можно
загружать до 20-и картинок в зависимости
от их сложности.
Т27 DEFB 10,60,#FF,2
DEFB "Слово автору!",0
G28 DEFB 11,61,#FF,0,9
Т29 DEFB 12,62,63,64,#FF,2
DEFB "CSC:DEJA VU-2",0
Т30 DEFB 13,65,#FF,2
DEFB "ПОЛИТИКА",0
Т31 DEFB 14,66,67,68,#FF,2
DEFB "ОБЗОР ИГРУШЕК",0
Т32 DEFB 15,69,70,#FF,2
DEFB "Почтовый ящик",0
Т33 DEFB 0,71,#FF,3
DEFB "СХЕМОТЕХНИКА",0
;----- таблица размеров файлов в секторах
;для первого файла указывать его трек и
;сектор залегания на диске как начало
;пакета файлов. Надо для дальнейшего рас-
;чёта параметров "сектор/трек".
TSFIL DEFB 6 ;сектор и
DEFB 12 ;трек 1-го файла
;твоих текстов
DEFB #0D ;song 0
DEFB #09 ; 1
DEFB #09 ; 2
DEFB #0В ; 3
DEFB #0Е ; 4
DEFB #0Е ; 5
DEFB #08 ; 6
DEFB #0D ; 7
DEFB #10 ; 8
DEFB #0С ; 9
DEFB #0С ; 10
DEFB #0Е ; 11
DEFB #09 ; 12
DEFB #0С ; 13
DEFB #0С ; 14
DEFB #07 ; 15
;txt
DEFB #19 ;TXT1 16
DEFB #25 ;TXT2 17
DEFB #1В ; 18
DEFB #1A ;TXT3 19
DEFB #28 ;TXT4 20
DEFB #1В ; 21
DEFB #0В ;TXT5 22
DEFB #09 ;TXT6 23
DEFB #0F ;TXT7 24
DEFB #23 ;TXT8 25
DEFB #22 ; 26
DEFB #03 ; 27
DEFB #27 ;TXT9 28
DEFB #06 ; 29
DEFB #1A ;TXT10 30
DEFB #1A ; 31
DEFB #25 ;TXT11 32
DEFB #25 ; 33
DEFB #25 ; 34
DEFB #0F ; 35
DEFB #23 ;TXT12 36
DEFB #20 ; 37
DEFB #19 ;TXT13 38
DEFB #24 ;TXT14 39
DEFB #25 ; 40
DEFB #26 ; 41
DEFB #13 ; 42
DEFB #1С ;TXT15 43
DEFB #20 ;TXT16 44
DEFB #1D ;TXT17 45
DEFB #09 ;TXT18 46
DEFB #27 ;TXT19 47
DEFB #1С ; 48
DEFB #26 ;TXT20 49
DEFB #1В ; 50
DEFB #08 ;TXT21 51
DEFB #10 ;TXT22 52
DEFB #22 ;TXT23 53
DEFB #19 ; 54
DEFB #22 ;TXT24 55
DEFB #11 ; 56
DEFB #27 ;TXT25 57
DEFB #12 ; 58
DEFB #3С ;GFX26/5 files 59
DEFB #20 ;TXT27 60
DEFB #38 ;GFX28/9 files 61
DEFB #2F ;TXT29 62
DEFB #2С ; 63
DEFB #04 ; 64
DEFB #25 ;TXT30 65
DEFB #2В ;TXT31 66
DEFB #26 ; 67
DEFB #06 ; 68
DEFB #28 ;TXT32 69
DEFB #12 ; 70
DEFB #14 ;TXT33 71
NOP ;end table...
SIZE EQU $-#В500 ;размер файла
;данных оболочки
;+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+==+=+
;ТОКЕНЫ МЕНЮ:
;------------
;0,DEFW DATA TXT - load txt
;1,DEFW NEW WIND - open next WindoW
;2,DEFW 0 - load basic program
;3,DEFW 0 - exit то ALASM.
;ДАННЫЕ ДЛЯ LOAD СТАТьИ:
;-----------------------
; DEFB N file music
; DEFB N file txt 1
; DEFB N file txt 2
; DEFB N ...
; DEFB #FF - end txt files
; DEFB 1=31, 2=41, 3=62 symbols
; DEFM "ЗАГОЛОВОК ОКНА"
; NOP конец данных
;ДАННЫЕ ДЛЯ LOAD GFX-БЛОКОВ:
;---------------------------
;В 1 блок входит несколько gfx-файлов
; DEFB N file music
; DEFB N file GFX 1
; DEFB N ...
; DEFB #FF - end GFX-блоков
; NOP маркёр GFX-режима
; DEFB n - общее количество
;gfx-файлов, т.е. screen`ов. НЕ ОШИБИСь!
;+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=
ORG #8000 ;for RUN
Нет желания подробно расписывать дета-
ли при работе с оболочкой: кое-что описа-
но во вмонтированной инструкции к переко-
дировщику, кое что сами поймёте - там нет
ничего сложного. Надеюсь, что моя оболоч-
ка кому-нибудь пригодится. Если есть же-
лание её доработать или переделать транс-
лятор текста под свой компьютер - высылай
на мой адрес (ищи адрес главного редакто-
ра в разделе "От редакции") ТРИ доллара и
я вышлю ВСЕ! исходники транслятора и обо-
лочки.
Other articles: