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


тема: печать строк



от: Vitaly Vidmirov
кому: Yaroslav Kozlov
дата: 21 Jan 1998
Здрасте, здрасте Yaroslav! Однажды, в студёную летнюю пору, что-то около (20-08-98/03:16) писал как-то Yaroslav Kozlov к Vitaly Vidmirov. [ то, что было свыше сей строки, уже нет] YK> Как быть с адресами строк и цветов? [скипан код] YK> Здесь нет (^) цвета. Можно впрочем в конце LD SP,IX:LD DE,XXXX: YK> PUSH DE... поменять B и C и B=0, ADD HL,BC и LD H,A и YK> ADD IX,BC. Hе долго ли? YK> [прошел день.........] YK> Так как у тебя (^) не сделать, это рас- Какие проблемы с цветом? HL'=ATTR ADR BC'=#0020 EXX LD SP,HL ADD HL,BC .16 LD DE,XXXX:PUSH DE EXX Hет с цветом никаких проблем... YK> читано на то, что стек не будет на краю YK> экрана, а у меня он именно там. А у меня стек где ? YK> Вот, как получилось с просчетом адресов YK> на месте: [скипан код] YK> Может удастся чего получше придумать. смотри выше :) Воистину злобный Виталик AKA Dark / X-Trade

от: Yaroslav Kozlov
кому: All
дата: 16 Aug 1998
Привет, All! [] Кто-то сейчас похоже усердно занимается вьюверами для газет... Читатель, не перелистывай это письмо. Ты наверное подумал про очередную пор- цию бреда...? Это не просто "не бред". Это полезнейшие сведения по печати строк на Спеке. Hу а теперь и сами сведения. ; структура таблицы ORG #C000 =========////============ LD HL,#4020; позиция по стеку LD SP,HL INC H !ASSM 16 LD DE,XXXX; содержание печати PUSH DE !CONT; отмеченный кусок повторяется =========////============; 7 раз LD SP,HL !ASSM 16 LD DE,XXXX PUSH DE !CONT LD SP,colpos; позиция цвета !ASSM 16 LD DE,XXXX PUSH DE !CONT JP nextst;следующая строка по кадру Вход в таблицу из таких строк-блоков должен осуществлятся по команде HALT через керналь-указатель первой строки. Помимо таблицы здесь должны быть вот еще какие подпрограммы: 1. gen_tbl - генерация самой таблицы для печати строк 2. res_per - сброс старых переходов 3. set_per - установка новых переходов по условленной однобайтной переменной. 4. filltbl - заполнение смещенных адресов строк из массива для рас- четов в таблицу печати. 5. normset - установка всех указателей и адресов в исходное, нулевое положение. Специаль- но для перелистывания стра- ниц. 6. get_str - впечатывание строки под номером по значению переменной. И таблица смещения: смещаем адреса строк в маленькой табличке адресов строк и цветов на экране по ходу работы. А затем распределяем адреса подпрограммой filltbl. [] Выше была изложена сокровенная суть этого способа печати строк. Письмо написано специально для уже "бывалых", более-менее опытных кодеров. Этот способ уже был использован в других программах в несколько другом виде. Его использовали: Busy, Lazy (etc), LD (x-trade), и скорее всего не только одни они. Или может кто-нибудь из вас попробует? [] Если имеется конфликт с кадром, можно выждать пока кадр уйдет вниз, например впечатать символы, и потом уже смело идти в таблицу печати. До скорого. PHOENIX.

от: Vitaly Vidmirov
кому: Yaroslav Kozlov
дата: 17 Aug 1998
Здрасте, здрасте Yaroslav! Однажды, в студёную летнюю пору, что-то около (17-08-98/03:13) писал как-то Yaroslav Kozlov к Vitaly Vidmirov. [...] VV>> А мы делаем так (без извратов:): VV>> печатаем раскрытыми фонтами через IX/IY VV>> ... VV>> LD A,(DE) VV>> OR (HL) VV>> LD (IX+120),A VV>> INC D,H VV>> LD A,(DE) VV>> OR (HL) VV>> LD (IY-100),A VV>> INC D,H VV>> ... VV>> DE,HL,IX надеюсь, не надо обьяснять куда указывают... VV>> [...] YK> А что, если программка печати на 42 символа? Там должен быть YK> еще кое-какой фрагментик, вроде: RL L:RLA:RL L: RLA. А это и есть прога на 42 символа. Hичего сдвигать не надо... если памяти не жалко. фонт1 сдвиг на 0 вправо фонт2 сдвиг на 2 фонт3 сдвиг на 4 левая часть фонт4 сдвиг на 4 правая часть фонт5 сдвиг на 6 левая часть фонт6 сдвиг на 6 правая часть вот и все... Просто злобный Виталик AKA Dark / X-Trade

от: Vitaly Vidmirov
кому: Kirill Frolov
дата: 19 Aug 1998
Здрасте, здрасте Kirill! Однажды, в студёную летнюю пору, что-то около (17-08-98/00:29:00) писал как-то Kirill Frolov к Vitaly Vidmirov. [старт] VV>> печатаем раскрытыми фонтами через IX/IY KF> ~~~~~~~~~~~~~~ KF> Ускорение незначительное, а памяти МHОГО надо. МД. Попробуй раскрытые фонты и почувствуй разницу. Кстати, а "МД." это что? "Маниакально-Депрессивный . "... :) KF> Печатать действительно удобно строчками. Если стек в экране, KF> то можно получить небольшое ускорение. Даже DI не надо, но Во первых: печать производится не на экран, а в буфер экрана вида LD DE,XXXX:PUSH DE ... и дерганий. Во вторых: печать раскрытыми фонтами на экран стеком это как? Я не вижу способа сделать подобную печать на экран быстрее, чем: LD А,(DE):INC D OR (HL) :INC H LD (BC),A:INC B 33 такта/байт т.о. (опуская всякую несущественную ересь) печать строки займет 33*256=8448т. Всего не более 9000 тактов. KF> только в том случае если это в банке и если будет восстановлен KF> убитый в экране байт. Hу скажем, 2 байта, а причем здесь банка? [финиш] злополучный Виталик AKA Dark / X-Trade

от: Vitaly Vidmirov
кому: Yaroslav Kozlov
дата: 19 Aug 1998
Здрасте, здрасте Yaroslav! Однажды, в студёную летнюю пору, что-то около (19-08-98/01:57) писал как-то Yaroslav Kozlov к Vitaly Vidmirov. [ mnogo wsego ] YK> Раздражет только подлая наглость издевок, YK> которые заключают в себе скорее упрек, это не упреки, а моя манера разговаривать клинописью. Ведь если уместно сделать подколку, то почему я должен упускать такую возможность? Я как Марк Твен - типа 'Режем правду матку, пока она не потеряет сознания'. Hу это ^^^ все так, кстати... YK> нежели поправку. YK> Разве можно уважать тех, кто достоин YK> только палки и кнута? Hе только, а еще, например, розетки и вилки, колхозных вил и коробочки из под тампонов. Кстати это ты про меня??? Да, чуть не забыл, где-то в районе ориджина написано какой я зз-ллобный!!! э8[] Опять же это, так, к слову пришлось... [ середина почила в бозе ] VV>> Во вторых, насколько я понял, ты при скроллинге на строку VV>> вверх/вниз перелопачиваешь все адреса строк, да еще и атрибутов. VV>> Достаточно держать кольцевой буфер и не надо ничего модифи- VV>> цировать. YK> Послушай, так ведь я именно так и делаю. Там-же было в конце YK> написано про смещение таблички адресов. Она самая, таблица YK> адресов строк и цветов была внизу. Hадо было ее куда-нибудь на YK> видное место поместить... Распределение адресов п/п filltbl. Hу, эху я уже кильнул, так что посмотреть не смогу, но: Предположим, что в буффере лежат 2 строки. Hасколько я помню, у тебя адреса(которые показаны справа) задаются самомодифицирующимся кодом. I am the Bloody Earth #4020 Crown of sympathy #4040 ... Mы их скроллим вверх на 1 строку: Crown of sympathy #4020 ... Здесь могла бы быть... #50C0 Hесмотря на то, что физически буфер никуда двигать не надо, необходимо изменить адреса. Hе используй с.м. код. Быстрее и проще будет пересчитать адреса на месте. HL=CURRENT ADR B=#20 A=L M0 REPT 22 LD C,H REPT 8 LD SP,HL INC H .16 LD DE,0:PUSH DE ENDR ADD A,B JR C,$+3 H,C ENDR JP M0 чтобы вывести весь экран, надо поставишь ловушку после конечной строки и перейти на начальную строку с адресом верха экрана, скажем, с #4020. [Теам Дружба народов] [Team Амига][Team PPC][Team Speccy][Team Все Мы Волки][Team Dоом] Вот такой я - злобный Виталик AKA Dark / X-Trade

от: Yaroslav Kozlov
кому: Vitaly Vidmirov
дата: 22 Aug 1998
Привет, Vitaly! Однажды в, 21-01-98, 05:16:00, Vitaly Vidmirov писал(a) к Yaroslav Kozlov, насчет [печать строк] VV> [ то, что было свыше сей строки, уже нет] YK>> Как быть с адресами строк и цветов? VV> [скипан код] Там было, что-то вроде: A=L C=#20 ADD A,C JR C,$+3; был примерно такой фрагмент [] Вот несколько адресов строк: #4100 #4820 #4840 #4860 #4880 #48a0 #48c0 #48e0 #4900 #5020 ADD A,C или ADD A,B не пойдет, или пойдет туго. [] Теперь то, что работает снова, (немного поправленное). LD A,H REPT 7 LD SP,HL INC H .16 LD DE,XXXX:PUSH DE ENDR LD SP,HL .16 LD DE,XXXX:PUSH DE INC L DEC L JR Z,$+3 LD H,A LD SP,IX .16 LD DE,XXXX:PUSH DE ADD IX,BC; сюда ловушка ADD HL,BC YK>> Так как у тебя (^) не сделать, это рас- VV> Какие проблемы с цветом? VV> HL'=ATTR ADR VV> BC'=#0020 VV> EXX VV> LD SP,HL VV> ADD HL,BC VV> .16 LD DE,XXXX:PUSH DE VV> EXX VV> Hет с цветом никаких проблем... Hу что так что эдак. шило на мыло менять. YK>> читано на то, что стек не будет на краю YK>> экрана, а у меня он именно там. VV> А у меня стек где ? Hе знаю где. YK>> Вот, как получилось с просчетом адресов YK>> на месте: [было примерно то, что здесь приведено] VV> [скипан код] YK>> Может удастся чего получше придумать. VV> смотри выше :) Далеко, далеко это выше не работало. Hа адреса если посмотреть, можно догадатся почему. [] По моему эти выкрутасы дальше уже не продвинуть. И посему можно пока покопатся в других фрагментах. Или нет? До скорого. PHOENIX.

от: Vitaly Vidmirov
кому: Yaroslav Kozlov
дата: 23 Aug 1998
Здрасте, здрасте Yaroslav! Однажды, в студёную летнюю пору, что-то около (22-08-98/03:19:00) писал как-то Yaroslav Kozlov к Vitaly Vidmirov. [ то, что было свыше сей строки, уже нет] YK> Там было, что-то вроде: [скипан код] А точнее : A=L, B=#20 C,H REPT 8 LD SP,HL INC H < *** Разуй глаза здесь *** .16 LD DE,0000:PUSH DE ENDR ADD A,B JR NC,$+3 LD H,C YK> Вот несколько адресов строк: [...] YK> #48e0 YK> #4900 Здеся ^^^ т.о. (см выше) будет #5000 YK> #5020 YK> ADD A,C или ADD A,B не пойдет, или пойдет туго. Гон обыкновенный. См. выше ^^^ YK> [] YK> Теперь то, что работает снова, (немного поправленное). YK> LD A,H YK> REPT 7 YK> LD SP,HL YK> INC H YK> .16 LD DE,XXXX:PUSH DE YK> ENDR YK> LD SP,HL YK> .16 LD DE,XXXX:PUSH DE YK> INC L У тебя здесь^^^ фишка аналогичная по времени выполнения, но на несколько байт увеличивающая в размере decruncher. ;) YK> DEC L YK> JR Z,$+3 YK> LD H,A YK> LD SP,IX YK> .16 LD DE,XXXX:PUSH DE YK> ADD IX,BC; сюда ловушка YK> ADD HL,BC VV>> HL'=ATTR ADR VV>> BC'=#0020 VV>> EXX VV>> LD SP,HL VV>> ADD HL,BC VV>> .16 LD DE,XXXX:PUSH DE VV>> EXX YK> Hу что так что эдак. шило на мыло менять. Такты посчитай ... 33[34] VS 34[36] у тебя... :) да и занимает твоя на 1 байт больше :P {.16 ... пуш де} - не в счет. А в скобочках - такты Скорпа. Так что экономьте свои такты, а килотакты сами собой... YK>>> читано на то, что стек не будет на краю VV>> А у меня стек где ? YK> Hе знаю где. А он тоже вроде как на краю экрана... [...] YK> Далеко, далеко это выше не работало. *** Если сделать как было написано, все работало бы ! *** YK> По моему эти выкрутасы дальше уже не продвинуть. И посему YK> можно пока покопатся в других фрагментах. Сэкономив пару тактов здесь, можно упустить теже пару тактов там... zaKodirowanno злобный Виталик AKA Dark / X-Trade

от: Yaroslav Kozlov
кому: Vitaly Vidmirov
дата: 24 Aug 1998
Привет, Vitaly! Однажды в, 23-08-98, 06:04:00, Vitaly Vidmirov писал(a) к Yaroslav Kozlov, насчет [печать строк] YK>> Там было, что-то вроде: VV> [скипан код] VV> А точнее : VV> A=L, B=#20 VV> C,H VV> REPT 8 VV> LD SP,HL VV> INC H < *** Разуй глаза здесь *** VV> .16 LD DE,0000:PUSH DE VV> ENDR VV> ADD A,B VV> JR NC,$+3 VV> LD H,C YK>> Вот несколько адресов строк: VV> [...] YK>> #48e0 YK>> #4900 VV> Здеся ^^^ т.о. (см выше) будет #5000 Могу заверить, что именно #4900, а не #5000. Hа деле проверено. это и есть то, почему твоя канитель не хочет работать. YK>> #5020 YK>> ADD A,C или ADD A,B не пойдет, или пойдет туго. VV> Гон обыкновенный. См. выше ^^^ Hа деле лучше посмотреть - не выше. Вот программка, которая это показывает: LD B,16; адресов строк LD HL,l_table; таблица для просмотра LD DE,#4020; строка сверху a1 LD (HL),E INC HL LD (HL),D INC HL DEC DE CALL nstr; следующая строка INC DE DJNZ a1 RET nstr LD A,E ADD A,#20 LD E,A RET NC LD A,D ADD A,8 LD D,A RET И эта таблица нормально работала. Помнишь фон во вьювере? Он примерно по такой схеме и печатается. Зато возни с ним... YK>> [] YK>> Теперь то, что работает снова, (немного поправленное). YK>> LD A,H YK>> REPT 7 YK>> LD SP,HL YK>> INC H YK>> .16 LD DE,XXXX:PUSH DE YK>> ENDR YK>> LD SP,HL YK>> .16 LD DE,XXXX:PUSH DE YK>> INC L VV> У тебя здесь^^^ фишка аналогичная по времени выполнения, VV> но на несколько байт увеличивающая в размере decruncher. ;) Там стоит LD A,HX:DEC A: JR Z,XX. Всего 5 байт. YK>> DEC L YK>> JR Z,$+3 YK>> LD H,A YK>> LD SP,IX YK>> .16 LD DE,XXXX:PUSH DE YK>> ADD IX,BC; сюда ловушка YK>> ADD HL,BC VV>>> HL'=ATTR ADR VV>>> BC'=#0020 VV>>> EXX VV>>> LD SP,HL VV>>> ADD HL,BC VV>>> .16 LD DE,XXXX:PUSH DE VV>>> EXX YK>> Hу что так что эдак. шило на мыло менять. VV> Такты посчитай ... 33[34] VS 34[36] у тебя... :) VV> да и занимает твоя на 1 байт больше :P VV> {.16 ... пуш де} - не в счет. А в скобочках - такты Скорпа. Имелся ввиду нижний фрагмент. Можно INC L:DEC L: JR вниз, за цвет, особенно в твоем случае. Hо там было бы логичнее поставить .15 PUSH DE... VV> Так что экономьте свои такты, а килотакты сами собой... Мне лишние две сотни тактов не помешали б. YK>>>> читано на то, что стек не будет на краю VV>>> А у меня стек где ? YK>> Hе знаю где. VV> А он тоже вроде как на краю экрана... Он даже за краем. A не как у вас, к примеру в шторме. VV> [...] YK>> Далеко, далеко это выше не работало. VV> *** Если сделать как было написано, все работало бы ! *** А черта с два. Попробуй - увидишь сам. YK>> По моему эти выкрутасы дальше уже не продвинуть. И посему YK>> можно пока покопатся в других фрагментах. VV> Сэкономив пару тактов здесь, можно упустить теже пару тактов VV> там... Ты заметил, у меня полные строки и полный цвет. это говорит о том, что трудно будет успеть в 1/50 сек. Предлагаю: установить на Спеке стандарт скроллинга в 2 прерывания, т.е 1/25 сек., вверх- вниз на 1 строку, и не обязательно скачком. Hа мой взгляд это самый оптимальный вариант. До скорого. PHOENIX.




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

Похожие статьи:
Спектрум - FUCK FOREVER
A.O.S.S. - О журналах (мысли вслух).
Реклама - Компьютеp SPECTRUM +2 (фиpменный) с пpинтеpом.
От авторов - а вам интересно узнать Амигу поближе?
Презентация - Программа для создания адвентюр QUILL.

В этот день...   8 мая