Рассылка закрыта
При закрытии подписчики были переданы в рассылку "RFpro.ru: Ассемблер? Это просто! Учимся программировать" на которую и рекомендуем вам подписаться.
Вы можете найти рассылки сходной тематики в Каталоге рассылок.
RusFAQ.ru: программирование на языке Assembler
Информационный Канал Subscribe.Ru |
RusFAQ.ru: программирование на языке Assembler
Выпуск № 450
от 22.12.2002, 15:00
Администратор: Имя: Калашников О.А. URL: Информационный ресурс ICQ: 68951340 Россия, Москва |
О рассылке: Задано вопросов: 2232 Отправлено ответов: 6755 Активность: 302.6 %
|
Список экспертов, ответы которых опубликованы в данном выпуске |
Sensey Статус: Профессиональный Общий рейтинг: 121.93 URL: Страничка рассылки по Паскалю Телефон: +38 (0572) 41-76-04 дом. [Подробней >>] |
Gibbel Статус: Профессиональный Общий рейтинг: 108.4 URL: Страничка обо мне и моих друзьях [Подробней >>] |
Andrew Vext Статус: Доверительный Общий рейтинг: 107.5 [Подробней >>] |
Dark_Lord Статус: Профессиональный Общий рейтинг: 121.95 [Подробней >>] |
Bob Johnson Статус: Профессиональный Общий рейтинг: 152.66 [Подробней >>] |
Ayl Статус: Профессиональный Общий рейтинг: 117.27 [Подробней >>] |
Traish Статус: Доверительный Общий рейтинг: 128.9 [Подробней >>] |
VicSimon Статус: Начальный Общий рейтинг: 102.59 [Подробней >>] |
Eugene Статус: Опытный Общий рейтинг: 108.71 URL: мощный файловый архив [Подробней >>] |
Maverick Статус: Профессиональный Общий рейтинг: 139.14 URL: Задачи по ассемблеру Телефон: 89039415024 (BeeLine GSM) [Подробней >>] |
Александр Статус: Начальный Общий рейтинг: 108.25 [Подробней >>] |
vitya Статус: Профессиональный Общий рейтинг: 108.16 [Подробней >>] |
Blad Статус: Начальный Общий рейтинг: 104.95 [Подробней >>] |
baldr Статус: Профессиональный Общий рейтинг: 114.03 URL: Сайт об ОС DOS. Всем, кто любит эту ОС! [Подробней >>] |
Broken Sword Статус: Профессиональный Общий рейтинг: 127.68 URL: моя рассылка по Protected Mode [Подробней >>] |
Краткий перечень вопросов |
Вопрос № 2178. Znaete, mne tut popalas' ssilka na russkiy yazik programmirovanitya - nazivayetsya URAGAN. sLISHALI... (ответов: 2)
Вопрос № 2179. Hi! Эксперты возник может быть ламерский но все-таки вопрос. Вобщем есть язык бейсикоподобный под 3D... (ответов: 3)
Вопрос № 2180. Хай всем экспертам и челу Fray. Прикольная прога в приложении. Интересно, у кого есть идеи по тому, ... (ответов: 4)
Вопрос № 2181. Хай, Ayl! Пасиба, что немного поморочился. Я в принципе так и думал. Просто я только пытаюсь изучать... (ответов: 1)
Вопрос № 2182. Здравствуйте! Может есть у кого-нибудь готовый скелет для резедента. Т.е. пару процедур(макросов) пе... (ответов: 3)
Вопрос № 2183. Привет! Сразу извеняюсь, но писать больше некуда, да и срочно это. Тут девушке моей понадобилось кур... (ответов: 6)
Вопрос № 2184. Нужно повысить частоту вертикальной развертки монитора с 60 до 70-75 Гц под ОС ДОС. К каким портам о... (ответов: 1)
Вопрос № 2187. Здравствуйте. Подскажите что надо сделать для использование DLL написанной на ASMe в Visual C++. В ... (ответов: 2)
Вопрос № 2188. Здравствуйте. Есть ли способ получить список хэндлов всех окон в системе, кроме цикла с GetWindow(hW... (ответов: 3)
Вопросов: 9, ответов: 25
Вопрос № 2178 |
Znaete, mne tut popalas' ssilka na russkiy yazik programmirovanitya - nazivayetsya URAGAN. sLISHALI O TAKOM? V opisanii napisano chto on mozhet sam sebya modificirovat' - toest' polimorfizm! A na vid on kak perevedenniy na russkiy basic/pascal s primo4kami i prikolami. A 43go vi o nem dumaete, rasskazhite pls, toka serizono.
ps: sorry za offtopic, ni vi ved' ludi avtoritetniye vsetaki, potomu i sparshivatyu.
Вопрос отправлен: 17.12.2002, 15:17
Отправитель: Edward (zeleniy_kot@yahoo.com)
[Следующий вопрос >>] [Список вопросов]
Отвечает Sensey
Приветствую Вас, Edward!
А мне попалась прога, называется Цифирица- пошешь транслитом, а потом она на русский переводит - получателям не надо глаза ломать...
Ну так кинь ссылку на этот язык, а?
Ответ отправлен: 17.12.2002, 15:33
Отправитель: Sensey
Отвечает Gibbel
Доброе время суток, Edward!
А ты в V7 никогда не программировал??? Там можно все операторы писать как на англицком, так и на руццком...
А вообще, ссылочку кинь, интересно было бы посмотреть.
Ответ отправлен: 18.12.2002, 10:20
Отправитель: Gibbel
Вопрос № 2179 |
Hi!
Эксперты возник может быть ламерский но все-таки вопрос.
Вобщем есть язык бейсикоподобный под 3D.
1. Уменя стоит Милениум и
карточка ASUS V3800 , то есть все поддерживает. Но вот если я например
ставлю разрешение 1024х786х32 он сообщает ,что невозможно создать 3D
сцену. Что тут может быть не так?
2. Почему там же( да и в многих других 3D-программах но не во всех) на мониторе
выставляется 60Гц?(вместо100). Может дело в версии DirectX стоящей в системе и той под
которую работает программа(язык)?
Thanks.
Вопрос отправлен: 17.12.2002, 16:22
Отправитель: Arthur
[Следующий вопрос >>] [Список вопросов]
Отвечает Andrew Vext
Приветствую Вас, Arthur!
1. Возможно, у вас не хватает видеопамяти.
2. В архиве с драйверами есть файл nv4_displ.inf, а в нём раздел nv_SoftwareDeviceSettings. Ищите там раздел относящийся к вашей видеокарте, первая TNT, например, обозначается аббревиатурой NV4. В списке NV4_MODES просто удаляете ненужные значения. Например, оригинальная запись выглядит так:
HKR,, NV4_Modes, %REG_SZ_APPEND%, "16 640 480 60 70 72 75 85 100 120 0"
Приводим её в такой вид:
HKR,, NV4_Modes, %REG_SZ_APPEND%, "16 640 480 100 120 0"
И всё, теперь ваша видеокарта физически не сможет работать в разрешении 640*480 с глубиной цвета 16 бит с Refresh rate меньше, чем 100 герц в любых программах. После этого нужно всего лишь переустановить драйверы с измененным nv4_displ.inf.
Ответ отправлен: 17.12.2002, 17:36
Отправитель: Andrew Vext
Отвечает Dark_Lord
Добрый день, Arthur!
2) Это происхадит потому, что настройки 3D хранятся отдельно от настроек 2d разрешений экрана. Все они могут быть выставлены при помощи специальных программ!
Ответ отправлен: 19.12.2002, 18:50
Отправитель: Dark_Lord
Отвечает Bob Johnson
Добрый день, Arthur!
2. Если у тебя ХР/2000 - то это стандартная проблема. Проги и DX берут первый режим из списка - а он как раз 60 HZ. Для борьбы с этим есть NVRefreshFix от NVidia и RivaTuner, который тоже умеет это делать. Можешь и руками - просто удаляешь режимы, которые соответствуют 60 Hz. Или можешь inf от монитора подпатчить и написать там, что минимальная Vertical refresh = 85 Hz, а в настройках дисплея установить "Скрыть режимы, которые монитор не может использовать", только так не будут работать большие разрешения.
Ответ отправлен: 18.12.2002, 18:17
Отправитель: Bob Johnson
Вопрос № 2180 |
Хай всем экспертам и челу Fray.
Прикольная прога в приложении. Интересно, у кого есть идеи по тому, как обойтись без макроса, а то с ним прога действительно набухает.
К Fray: лично я тебя понимаю, у меня сейчас почти то же самое. Только ничего особо крутого на C++ я не писал. После асма от с++ иногда просто тошнит.
koolkhel@mail.ru.
Приложение:
Вопрос отправлен: 17.12.2002, 18:00
Отправитель: Bitterman (koolkhel@mail.ru)
[Следующий вопрос >>] [Список вопросов]
Отвечает Ayl
Здравствуйте, Bitterman!
Да уж... А нафига так?
Вот смотри в приложении - твоя прога чуть-чуть пооптимизированная. Если что непонятно - пиши.
Приложение:
Ответ отправлен: 17.12.2002, 18:40
Отправитель: Ayl
Отвечает Traish
Добрый день, Bitterman!
Я не понял зачем понадобилось использовать макрос для вывода каждого символа. Можно ведь просто скопировать строку или, если тебе уж так хочется, заменить макрос процедурой.
Ответ отправлен: 17.12.2002, 19:46
Отправитель: Traish
Отвечает VicSimon
Приветствую Вас, Bitterman!
Можно попробовать так:
cseg segment
org 100h
begin:
assume cs:cseg, ds:cseg, ss:cseg
; es:di будет указывать на видеопамять
push 0b800h
pop es
xor bx, bx
mov di, bx
; сохраним di для последующей очистки экрана
push di
; Вырубим курсор
mov ah, 1
mov ch, 20h
int 10h
; Вывод строки 'Hello'
mov ah, attr
push cs
pop ds
mov si, offset Hello
mov cx, 5
out_str:
lodsb
stosw
loop out_str
; Ждем нажатия кнопки
xor ax, ax
int 16h
; Очищаем экран
mov ax, 0720h ; al = ' ', ah = 111b
mov cx, 4000
pop di
rep stosw
; Выход
int 20h
Hello db 'Hello'
cseg ends
end begin
Ответ отправлен: 18.12.2002, 05:50
Отправитель: VicSimon
Отвечает Bob Johnson
Добрый день, Bitterman!
1. Если ты выводишь символы подряд, напиши процедуру, которая будет это делать, типа print. Она может последовательно увеличивать адрес в видеопамяти.
> После асма от с++ иногда просто тошнит
??? курить-то бросайте... С++ руль, и это обоснованно. Вот VB... Да и VB для чего-то приколен.
Ответ отправлен: 18.12.2002, 18:17
Отправитель: Bob Johnson
Вопрос № 2181 |
Хай, Ayl!
Пасиба, что немного поморочился. Я в принципе так и думал. Просто я только пытаюсь изучать асм и решил делать так, чтоб видно сразу было для меня что прога делает. Ты её ужал в два раза - спасибо, работает. Только на моём моне вторая "l" как и в моём варианте почему-то на пиксель выше... Макрос для вывода одного символа я-то писал, но его лучше будет оформить в виде функции, т.к. в моих планах что-то типа интерпретатора с более-менее интерфейсом, а в нём такая фигня часто нужна будет. Мыла твоего я не видел, потому пишу в факью. Спасибо за внимание.
Приложение:
Вопрос отправлен: 17.12.2002, 20:40
Отправитель: Bitterman
[Следующий вопрос >>] [Список вопросов]
Отвечает Ayl
Доброе время суток, Bitterman!
Выше... Хм... Это, батенька, не выше, а оптический обман зрения. Можешь запустить прогу из Приложения. Она сначала выводит 15 экранов, заполненных символом 'l' разных цветов, а потом заполняет экран с изменением цвета буквы для каждой позиции. Вот там очень хорошо виден этот эффект.
Дело в том, что, как пишут в умных книжках, более яркие точки выглядят "полнее", нежели менее яркие. Причем жта полнота распространяется вниз. Соответственно, яркий символ будет выглядить немного толще и сдвинутым вниз по отношению к неяркому.
Именно поэтому в профессиональных шрифтах применяют различные ухищрения для избежания этого и некоторых других эффектов. Например, небольшое уменьшение высоты для символов с закругленными верхними и нижними частями (типа 'о', 'е' и т.п.).
А в текстовом режиме используется матричный шрифт. Он описывает каждую точку символа, а не его форму. Так что этого эффекта избежать не удасться. Кроме аккуратного подбора цветов символов.
Кстати, по поводу вывода на экран. Лучше всего сохранять смещение в видеобуфере, а не заниматься каждый раз его вычислением по координатам. И хранить его лучше всего в регистре di - тогда можно использовать команды семейства stos для отображения символов.
Для перемещения по тексту используй выражения:
1. inc di
inc di - для следующего символа (переход в начало следующей строки при достижении правого края экрана)
2. dec di
dec di - для предыдущего символа (переход в конец предыдущей строки при достижении левого края экрана)
3. add di, 160 - переход на следующую строку
4. sub di, 160 - переход на предыдущую строку
Насчет мыла - ayl@kot.spb.ru
Приложение:
Ответ отправлен: 18.12.2002, 11:53
Отправитель: Ayl
Вопрос № 2182 |
Здравствуйте!
Может есть у кого-нибудь готовый скелет для резедента. Т.е. пару процедур(макросов) перехватывающих стандартные(любые) прерывания, загрузка/выгрузка/проверка... Я искал в нете - все лажа. Сам попытался создать - не лучше. Не могу до конца все продумать.
P.S. Если что-то есть - шлите, жду.
Вопрос отправлен: 17.12.2002, 21:00
Отправитель: Илья (b.i@date.by)
[Следующий вопрос >>] [Список вопросов]
Отвечает Ayl
Добрый день, Илья!
Лови шаблон.
Приложение:
Ответ отправлен: 18.12.2002, 13:40
Отправитель: Ayl
Отвечает Eugene
Здравствуйте, Илья!
Лови, скелет сам должен установиться, а при повторном запуске удалиться из памяти. Выдрал из действующей прожки, так что может быть чего-то выдрал замного и может глючить, но на первый взгляд выглядит без ошибок.
Приложение:
Ответ отправлен: 18.12.2002, 10:57
Отправитель: Eugene
Отвечает Maverick
Доброе время суток, Илья!
Ну, у Калашникова же нормальный.
Выкинь все понты, отдели кожу, мясо и будет скелет резидента.
Ответ отправлен: 20.12.2002, 05:02
Отправитель: Maverick
Вопрос № 2183 |
Привет!
Сразу извеняюсь, но писать больше некуда, да и срочно это. Тут девушке моей понадобилось курсовик написать на паскале ну я и написал. А вот как скомпилировать его не знаю, а ей нужен exe-шник. Нажимаю Compile, Build, а резултата нет. В Паскале не программил уже фиг знает сколько лет. Помогите, пожайлуста. Еще раз извиняюсь!
Вопрос отправлен: 18.12.2002, 03:46
Отправитель: Vovik
[Следующий вопрос >>] [Список вопросов]
Отвечает Александр
Приветствую Вас, Vovik!
Если ты пытаешься компилить в Turbo Pascal'е любой версии, то надо вначале установить чтобы он компилировал на диск. А то он по умолчанию компилит в память. Compile->Target Disk.
Ответ отправлен: 18.12.2002, 14:17
Отправитель: Александр
Отвечает Bob Johnson
Здравствуйте, Vovik!
Ну... Блин... Запускаешь паскаль, идешь в меню что-то типа Compile и там ставишь: Target: File (было, очевидно, target: memory). У тебя паскаль наверное турбо. Надо борланд паскаль 7.0 - там вообще нет такой проблемы.
Ответ отправлен: 19.12.2002, 22:10
Отправитель: Bob Johnson
Отвечает vitya
Добрый день, Vovik!
Скорее всего у тебя TurboPascal, там в меню Compile->target у тебя скорее всего стоит memory поменяй на диск, тогда будет генерировать exe файл.
Ответ отправлен: 18.12.2002, 08:41
Отправитель: vitya
Отвечает Eugene
Приветствую Вас, Vovik!
Паскаль должен был сказать, чего ему не хватает. Было бы очень неплохо узнать, что же он сказал. А так наобум ничего сказать нельзя. Может у тебя только редактор и остался. А может экзешник создаётся, но лежит не там где ты ищешь. А может скоро солнце взорвётся и нафиг не нужен курсовик будет. Вобщем шли инфу о сообщениях паскаля, может чем и поможем.
Ответ отправлен: 18.12.2002, 11:01
Отправитель: Eugene
Отвечает Blad
Здравствуйте, Vovik!
нажмите COMPILE/Destination , чтобы слово Memory сменилось на Disk , теперь жмите Build или Make, должно появиться окно Compile succesfull: Press any key. Ищите ехе-шник в той папке, откуда был запущен Паскаль.
Ответ отправлен: 18.12.2002, 11:04
Отправитель: Blad
Отвечает baldr
Доброе время суток, Vovik!
В меню "Compile" измени параметр "Destination" со значения "Memory" на "Disk". И откомпилируй
заново. Вообще же, если задать вопрос в рассылку по Pascal, то вероятность получения правильного
ответа увеличится!
Ответ отправлен: 19.12.2002, 00:26
Отправитель: baldr
Вопрос № 2184 |
Нужно повысить частоту вертикальной развертки монитора с 60 до 70-75 Гц под ОС ДОС. К каким портам обращаться? Лучше на примере.
Вопрос отправлен: 18.12.2002, 10:42
Отправитель: Leonid
[Следующий вопрос >>] [Список вопросов]
Отвечает Broken Sword
Добрый день, Leonid!
Первое - есть риск спалить монитор (особенно если это какой нить DTS 95 года, любая ошибка при установке параметров горизонтальной или вертикальной развертки может вывести из строя монитор - может сгореть блок питания или блок развертки монитора, выгореть линия или точка в центре экрана ЭЛТ и т.д.). Так что смотри.
Тебе придется программировать CRTC (контроллер ЭЛТ)
Второе - вот как это можно сделать программно:
INT 10 4F02 - VESA SuperVGA BIOS - SET SuperVGA VIDEO MODE
Inp.:
AX = 4F02h
BX = new video mode
ES:DI -> (VBE 3.0+) CRTC information block, bit mode bit 11 set (см. дальше)
Return: AL = 4Fh if function supported
AH = status
00h successful
01h failed
Notes: bit 13 may only be set if the video mode is present in the list of accelerated video modes returned by AX=4F00h
if the DAC supports both 8 bits per primary color and 6 bits, it will be reset to 6 bits after a mode set; use AX=4F08h to restore 8 bits
10 4F02 Format of VESA VBE CRTC Information Block:
Format of VESA VBE CRTC Information Block:
Offset Size Description
00h WORD total number of pixels horizontally
02h WORD horizontal sync start (in pixels)
04h WORD horizontal sync end (in pixels)
06h WORD total number of scan lines
08h WORD vertical sync start (in scan lines)
0Ah WORD vertical sync end (in scan lines)
0Ch BYTE flags (see #04084)
0Dh DWORD pixel clock, in Hz
11h WORD refresh rate, in 0.01 Hz units
this field MUST be set to pixel_clock / (HTotal * VTotal), even though it may not actually be used by the VBE implementation
13h 40 BYTEs reserved
Вот по 11h пихаешь слово (в единицах по 0,01 Гц, т.е. для 75 Гц по 11h должно находиться 1D4Ch).
90% что все это не будет работать.
Теперь, к каким портам обращаться. Конечно же, через пару портов КЭЛТ (CRTC) - 3D4h/3D5h (в 3D4 - номер регистра, а работать с ним - через 3D5)
Сразу скажу - за частоту вертикальной развертки отвечают несколько регистров: 06h, 12h, 15h, 16h. Никаких герц здесь нет. Все построено на принципе счетчиков. Как только значение регистра достигает определенного значения - происходит действие (например, обратный ход луча по кадру). Чтобы с ними смело манипулировать нужно досконально разобраться с такими понятиями, как период обратного хода луча по кадру, кол-во сканируемых вертикальных строк, переполнение КЭЛТ, начало и конец затемнения по кадру. Вообщем, целая история.
Можно вообщем то отдизасмить участок кода, который выполняет переключение частоты в ОС Win. Щас посмотрю...
Ответ отправлен: 18.12.2002, 16:47
Отправитель: Broken Sword
Вопрос № 2187 |
Здравствуйте.
Подскажите что надо сделать для использование DLL написанной на ASMe в Visual C++. В VB я использую функцию используя объявление (Private Declare Function PaintBarCode Lib "c:code128.dll" (ByVal hdc As Long, ByVal lpText As String) As Long). В С линковщик говорит (unresolved external symbol _PaintBarCode). Библиотека экспорта в проект добавлена. Как справится с символом подчеркивания?
Вопрос отправлен: 18.12.2002, 14:50
Отправитель: sudv
[Следующий вопрос >>] [Список вопросов]
Отвечает vitya
Доброе время суток, sudv!
Насколько я понял, тебе требуется вызвать из VC++ длл, написанную на ассемблере (хотя может быть написанна на чем угодно).
Делаешь объявление указателя на функцию:
long (*func)(HDC, LPSTR);
...
//открываешь библиотеку
HMODULE hMod = LoadLibrary("Lib.path");
if (NULL != hMod)
{
funf f = (func)GetProcAddres(hMod, "PaintBarCode");
if (NULL != f)
{
f(hDC, "My Text");
}
}
...
FreeLibrary(hMod);
//////
Вот и все.
Ответ отправлен: 18.12.2002, 15:25
Отправитель: vitya
Отвечает Bob Johnson
Приветствую Вас, sudv!
В С есть гемор с преобразованием имен. Назови свою функцию с подчеркиванием. И вообще, когда в С ее добавляешь ставь "extern С ...".
P.S. Можешь просто LoadLibrary делать и тогда сам уже функцию искать - GetProcAddress.
Ответ отправлен: 19.12.2002, 22:10
Отправитель: Bob Johnson
Вопрос № 2188 |
Здравствуйте.
Есть ли способ получить список хэндлов всех окон в системе, кроме цикла с GetWindow(hWnd,GW_HWNDNEXT)?
Спасибо.
Вопрос отправлен: 18.12.2002, 14:57
Отправитель: [stl] (progressor@ngs.ru)
[Следующий вопрос >>] [Список вопросов]
Отвечает vitya
Добрый день, [stl]!
Это делается с помощью функции
BOOL EnumWindows(
WNDENUMPROC lpEnumFunc, // callback function
LPARAM lParam // application-defined value
);
Первая функция определяется, как
BOOL CALLBACK EnumWindowsProc(
HWND hwnd, // handle to parent window
LPARAM lParam // application-defined value
);
Как только система будет находить окно, она будет вызывать твою callback функцию.
Например, если, как параметер ты передал CArray
, то после окончания работы EnumWindows у тебя будет массив всех хэндлов.
Удачи
Ответ отправлен: 18.12.2002, 15:14
Отправитель: vitya
Отвечает Bob Johnson
Доброе время суток, [stl]!
А вот этим циклом ты весь список не получишь! Потому что надо рекурсией, начиная от Desktop Window. По другому я не видел.
Ответ отправлен: 19.12.2002, 22:10
Отправитель: Bob Johnson
Отвечает Gibbel
Доброе время суток, [stl]!
Можешь воспользоваться функцией EnumWindows()
Ответ отправлен: 18.12.2002, 18:04
Отправитель: Gibbel
Форма отправки вопроса |
Форма может работать некорректно в почтовых программах "Microsoft Outlook" и "Microsoft Outlook Express". В программе The Bat! подобные формы не работают вообще!
После нажатия на кнопку "Отправить", будет открыто второе окно. Заметьте, что в некоторых браузерах могут стоять запреты на открытие других окон, а также "чрезмерное" кэширование данных, при этом факт отправки Вашего вопроса стоит под сомнением.
Мы рекомендуем открывать рассылку в программе Internet Explorer 5.0+ или отправлять вопросы с сайта по адресу: http://rusfaq.ru/cgi-bin/Message.cgi.
© 2002 Команда RusFAQ.ru.
Вопрос и дополнение |
Ваш вопрос:
Приложение (если необходимо):
Получить ответов:
Выбор рассылки |
Программисту Assembler (39) C / C++ (30) Perl (5) Delphi (21) Pascal (23) Basic / VBA (10) Java / JavaScript (6) PHP (4) MySQL / MSSQL (5) |
Пользователю Windows 95/98/Me (32) Windows NT/2000/XP (26) "Железо" (32) Поиск информации (14) |
Администратору Windows NT/2000/XP (10) Linux / Unix (14) |
Юристу Гражданское право (8) Семейное право (3) Трудовое право (5) КоАП (2) |
Отправить вопрос всем экспертам выбранной рассылки.
© 2002 Россия, Москва. Авторское право: RusFAQ.ru |
http://subscribe.ru/
E-mail: ask@subscribe.ru |
Отписаться
Убрать рекламу |
В избранное | ||