nedoPC.org

Electronics hobbyists community established in 2002
Atom Feed | View unanswered posts | View active topics It is currently 28 Mar 2024 05:19



Reply to topic  [ 84 posts ]  Go to page Previous  1, 2, 3, 4, 5, 6  Next
Текстовый редактор ПОБЕДИТ 
Author Message
Online
Maniac
User avatar

Joined: 14 Oct 2019 18:10
Posts: 272
Location: Tashkent
Reply with quote
Для РАДИО-86РК существует, как минимум, два текстовых редактора:
Однако, на практике хотелось бы что-нибудь компактнее и с другой адресной посадкой. Ещё лучше, если код редактора уместился бы в другое ПЗУ, так как официальный Монитор по директиве U уходит на адрес F000.

Чтобы успеть к первомаю, пришлось здорово потрудиться восьмибитным мозгом и решить множество мелких проблем, буквально одолев их и победив.

Потому, Вашему вниманию представляется версия текстового редактора с официальным названием:

ПОБЕДИТ
Представляемый текстовый редактор разработан специально на работу в дополнительном ПЗУ F000-F7FF, с аккуратным использованием области служебных ячеек Монитора, чтобы дать пользователю максимальный объём ОЗУ.
Редактор имеет самый минимальный функционал, достаточный для элементарного редактирования текстов. Однако, с помощью пользовательского кода функционал интерфейса редактора можно расширить с помощью CallBack-вызовов. Для этого предоставляется небольшой API.

Список точек вызова основных API:
  • F000 - Обычный запуск редактора (директива U Монитора)
  • F003 - Запуск редактора с указанием пользовательского кода (в HL)
  • F006 - Переключение (с предустановкой) буфера листинга (адрес в HL)
  • F009 - Переключение (без предустановки) буфера листинга (адрес в HL)
  • F00C - Панорамная прокрутка листинга (CF=0 - вперёд / CF=1 - назад)
  • F00F - Вертикальная прокрутка листинга (CF=0 - вперёд / CF=1 - назад)
  • F012 - Помещение в стек адреса знакоместа из непосредственных констант
  • F018 - Помещение в стек адреса знакоместа по позиции X=E и Y=D
  • F01B - Помещение в стек адреса знакоместа (без растровой коррекции)
Как видно, никаких средств текстовой обработки не предоставляется.
Однако, рассмотрим основной набор подпрограмм.

CALL F003 - Передача управления редактору с указанием ассистента
Явно передать CallBack-адрес на пользовательский код нужно регистром HL.
При этом, если буфер текста листинга не был предустановлен, директивой X Монитора пользователю предложится это сделать самостоятельно модификацией регистра HL.

CALL F006 - Предустановка буфера листинга
Данную подпрограмму следует вызывать перед передачей управления самому редактору, чтобы через регистр HL установить указатель на основной буфер листинга.

CALL F009 - Переключение буфера листинга
Пользовательский код может переключать текстовый буфер на лету, передавая адрес регистром HL. Необходимости указания на самое начало буфера нет, так как вычисление номера верхней отображаемой строки происходит автоматически.

CALL F00C - Динамическая прокрутка листинга на экране
Для прокрутки текста листинга на 1 символ влево или вправо, через флаг CF указывается направление. При этом подпрограмма возвращает флаг ZF в случае, если прокрутка не возможна по причине достижения начала строки или предела панорамы.

CALL F00F - Динамическая прокрутка листинга на экране
Для прокрутки текста листинга на 1 строку вверх или вниз, через флаг CF указывается направление. При этом подпрограмма возвращает флаг ZF в случае, если прокрутка не возможна по причине достижения начала или конца текста листинга.

CALL F012 - Помещение в стек адреса экранного знакоместа по константным координатам
Подпрограмма достаточно быстро (без цикла) математически вычисляет адрес и возвращает его в стеке. После обращения к подпрограмме, адрес следует извлекать любой командой POP.
Координаты знакоместа следует указать двумя байтами непосредственно за командой CALL.
При этом производится незначительная коррекция по знакоместу, чтобы адаптировать вывод под специфику дисплея.

CALL F018 - Помещение в стек адреса экранного знакоместа по координатам в DE с коррекцией
Подпрограмма достаточно быстро (без цикла) математически вычисляет адрес и возвращает его в стеке. После обращения к подпрограмме, адрес следует извлекать любой командой POP.
Координаты знакоместа следует указать регистрами D (позиция по Y) и E (позиция по X).
При этом производится незначительная коррекция по знакоместу, чтобы адаптировать вывод под специфику дисплея.

CALL F01B - Помещение в стек адреса экранного знакоместа по координатам в DE без коррекции
Подпрограмма достаточно быстро (без цикла) математически вычисляет адрес и возвращает его в стеке. После обращения к подпрограмме, адрес следует извлекать любой командой POP.
Координаты знакоместа следует указать регистрами D (позиция по Y) и E (позиция по X).
Никакой коррекции по знакоместу не производится.

Список критически важных ячеек программы:
  • F018-F01A - Три команды для растровой коррекции на ±3 знакоместа (настроить перед прошивкой ПЗУ)
  • F040/F041 - Начальные координаты (обычно 8 и 3) курсора (настроить перед прошивкой ПЗУ)
  • F4DA-F4DC - Установка флажка подпрограммы опроса клавиатуры (F812), чтобы код пользователя мог прочитать код функциональной клавиши обычным вызовом CALL F803 (читать про флаг ZF ниже)
  • F7FE/F7FF - Адрес входа в редактор (просто указывает на расположение основного кода)
Калибровка смещения знакомест является комплексной операцией с необходимостью взаимосвязанной правки ячеек. Вот пример:
  • Обычное позиционирование: F018 [00 00 00]; F040 [08 03]
  • Смещение на 1 знакоместо: F018 [13 00 00]; F040 [09 03]
  • Смещение на 2 знакоместа: F018 [13 13 00]; F040 [0A 03]
  • Смещение на 3 знакоместа: F018 [13 13 13]; F040 [0B 03]

Служебные ячейки для стилизация интерфейса редактора:
  • 7629 - Код символа заполнения пространства табуляции
  • 762A - Код символа обрамления левого края текстовой области
  • 762B - Код символа обрамления правого края текстовой области
  • 762D - Маскирование столбца счётчика строк (слева от текста)
  • 762E - Корректировочное смещение знакоместа светового пера
  • 7633 - Код символа переполнения панорамы

Служебные ячейки функционального механизма редактора:
  • 7614 (PC директивы X) - CallBack-адрес на пользовательский код
  • 7616 (HL директивы X) - Адрес в текстовую область листинга
  • 7618 (BC директивы X) - Счётчик строк
  • 761A (DE директивы X) - Позиция курсора относительно области текста
  • 761C (SP директивы X) - Указатель на начало текущей строки с курсором
  • 761E (AF директивы X) - Значение панорамной прокрутки и флаги
  • 7634 - Указатель на 25 строк выше (используется для PageUp-операции)
  • 7636 - Указатель на 1 строку выше (используется курсорной клавишей)
  • 7638-7668 - Массив 25 указателей на каждую из 25 отображённых строк
  • 766A - Указатель на 26 скрытую строку (используется PageDown-операцией)
  • 766C/766D - Двоично-десятичный номер верхней скрытой строки (используется прокруткой)
  • 766E/766F - Двоично-десятичный номер нижней скрытой строки (используется прокруткой)

Клавиши работают следующим образом:
  • HOME с прокрученной панорамой возвращает её на 64 позиций назад или в исходную позицию
  • HOME из любой позиции в строке устанавливает курсор в начало строки
  • HOME в начале любой строки устанавливает курсор в начало экрана
  • HOME в начале экрана прокручивает его на 25 строк вверх (аналогично Page Up)
  • END/СТР устанавливает курсор в конец строки со сдвигом панорамы (если строка выходит за пределы)
  • END/СТР в конце строки устанавливает курсор в конец экрана
  • END/СТР в конце экрана прокручивает его на 25 строк вниз (аналогично Page Down)
  • DEL/ПС в любой позиции строки удаляет символ под курсором
  • DEL/ПС в конце строки производит слияние со следующей строкой
  • BS/ЗАБОЙ в любой позиции строки затирает символ перед курсором
  • BS/ЗАБОЙ в начале строки производит слияние с предыдущей строкой
  • BS/ЗАБОЙ в начале текста устанавливает курсор в конец первой строки (не смертельный побочный баг, который тяжело устранить без тупой проверки, затрачивающей кучу кода)

Если указан адрес вызова пользовательской вспомогательной подпрограммы, обращение к ней происходит при нажатиях любой клавиши или клике "световым пером".
При этом через регистры общего назначения передаётся следующая информация:
  • BC - Шестнадцатеричный индекс (редактируемой) текущей строки
  • DE - Адрес на начало самой верхней отображаемой строки
  • HL - Адрес на начало текущей (редактируемой) строки
  • A - Номер столбца по позиции курсора (начало - 01) с учётом панорамы (логическая позиция)
  • CF флаг - Экран готовится к полной перерисовке (при клике "световым пером" или перемещением стрелками)
  • PF флаг - Двойной (повторный) клик "светового пера" по знакоместу с курсором
  • ZF флаг - Клавиши F1-F4, АР2 или УС+A-Z (код читается через вызов F803 обязательно, иначе возникнет зацикливание редактора/!\)
  • SF флаг - Буферная строка (редактирование в активном состоянии)
Всего этого вполне достаточно, чтобы реализовать все необходимые операции работы с текстом. В качестве примера, УС+D удаляет текущую строку, а УС+У/К/Е/В прокручивают экран в одном из четырёх направлений.

Как всегда, вот ссылка на онлайн демонстрацию с кодом для ПЗУ (F000-F7FF) и rkr-файл.

ПРИМЕЧАНИЕ
С адреса F748 располагаются подпрограммы прокрутки экрана с оптимизацией по скорости.
Если их редуцировать и ухудшить производительность (что, на самом деле, не так критично), можно освободить некоторое кодовое пространство под дополнительный функционал, который в оригинальной разработке специально никак не реализовывался.

P.S.: За месяц был проделан практически титанический труд по разработке кода с чистого листа.
Потому, основной код перенесён именно в область F000-F7FF, чтобы всегда под рукой иметь инструмент для личных нужд. В частности, для разработок собственных интерпретаторов языков высокого уровня.

Спасибо за участие!


Attachments:
File comment: Демонстрация API редактора "ПОБЕДИТ"
RK86-POBEDIT.RKR.zip [6.71 KiB]
Downloaded 115 times
30 Apr 2023 12:07
Profile WWW
Online
Maniac
User avatar

Joined: 14 Oct 2019 18:10
Posts: 272
Location: Tashkent
Reply with quote
Немного модифицировал оригинальную процедуру опроса клавиатуры.
Освободил 22 байта и добавил символ подчёркивания через СС+ПРОБЕЛ.


Attachments:
File comment: Процедура опроса клавиатуры FE72-FF3B
rk86_FE72-FF51.rkr.zip [400 Bytes]
Downloaded 116 times
10 May 2023 06:35
Profile WWW
Supreme God
User avatar

Joined: 21 Oct 2009 08:08
Posts: 7777
Location: Россия
Reply with quote
Alikberov wrote:
Как видно, никаких средств текстовой обработки не предоставляется.

А что Вы подразумеваете под "средствами текстовой обработки"? :roll:
И где они предоставляются в РК-совместимых компьютерах?

_________________
iLavr


12 May 2023 02:12
Profile
Online
Maniac
User avatar

Joined: 14 Oct 2019 18:10
Posts: 272
Location: Tashkent
Reply with quote
Lavr wrote:
А что Вы подразумеваете под "средствами текстовой обработки"? :roll:
И где они предоставляются в РК-совместимых компьютерах?
Операции для Поиска/Замены имеются в WEL'е.

Ниже - вариант подпрограмм опроса клавиатуры с поддержкой раскладки пользователя.
Клавишей АР2 переключается JCUKEN/QWERTY.

P.S.: Электроника КР-03 с клавиатурой МС-7007 имеет подобную таблицу и там как-то всё уместили.


Attachments:
File comment: Проверка QWERTY-раскладки
rk86-qwerty.rkr.zip [658 Bytes]
Downloaded 119 times
12 May 2023 03:51
Profile WWW
Supreme God
User avatar

Joined: 21 Oct 2009 08:08
Posts: 7777
Location: Россия
Reply with quote
Alikberov wrote:
Lavr wrote:
А что Вы подразумеваете под "средствами текстовой обработки"? :roll:
И где они предоставляются в РК-совместимых компьютерах?
Операции для Поиска/Замены имеются в WEL'е.

Мне казалось, что подпрограммы "для Поиска/Замены" есть в любом Мониторе, нет? :roll:

_________________
iLavr


13 May 2023 17:01
Profile
Online
Maniac
User avatar

Joined: 14 Oct 2019 18:10
Posts: 272
Location: Tashkent
Reply with quote
Lavr wrote:
Alikberov wrote:
Lavr wrote:
А что Вы подразумеваете под "средствами текстовой обработки"? :roll:
И где они предоставляются в РК-совместимых компьютерах?
Операции для Поиска/Замены имеются в WEL'е.

Мне казалось, что подпрограммы "для Поиска/Замены" есть в любом Мониторе, нет? :roll:
Не совсем понятен вопрос.
Сначала вопрос касался "средств текстовой обработки", которые имеются в любом уважающем себя текстовом процессоре - поиск по шаблону и замена фрагментов текста.
Теперь, упоминание про подпрограммы любого Монитора - не совсем понимаю: В Мониторе - директивы S и M не годятся под текстовую обработку же!


13 May 2023 21:35
Profile WWW
Supreme God
User avatar

Joined: 21 Oct 2009 08:08
Posts: 7777
Location: Россия
Reply with quote
Alikberov wrote:
Сначала вопрос касался "средств текстовой обработки", которые имеются в любом уважающем себя текстовом процессоре - поиск по шаблону и замена фрагментов текста.
Теперь, упоминание про подпрограммы любого Монитора - не совсем понимаю: В Мониторе - директивы S и M не годятся под текстовую обработку же!

Чем же они не годятся? :roll: Что из Монитора нельзя вызвать эти подпрограммы причём с удобного
для редактора адреса ?

_________________
iLavr


16 May 2023 09:34
Profile
Online
Maniac
User avatar

Joined: 14 Oct 2019 18:10
Posts: 272
Location: Tashkent
Reply with quote
Так как версия достаточно стабильная, выложил исходный текст в свой репозиторий.
Буква «U» в данном контексте означает именно версию для ПЗУ F000-F7FF с вызовом директивой «U» Монитора…

Листинг расчитан исключительно для вставки в онлайн-эмулятор и достаточно комментирован.


04 Nov 2023 08:19
Profile WWW
Admin
User avatar

Joined: 08 Jan 2003 23:22
Posts: 22409
Location: Silicon Valley
Reply with quote
Alikberov wrote:
Так как версия достаточно стабильная, выложил исходный текст в свой репозиторий.
Буква «U» в данном контексте означает именно версию для ПЗУ F000-F7FF с вызовом директивой «U» Монитора…

Листинг расчитан исключительно для вставки в онлайн-эмулятор и достаточно комментирован.

Если это версия дла ПЗУ F000-F7FF, то что там делает огромный кусок по 0000? :)

Попробовал отрезать только то, что после F000, но чото по U оно не взлетает - приаттачиваю то, что у меня собралось:


Attachments:
pobeditu_bin.zip [1.81 KiB]
Downloaded 15 times

_________________
:dj: https://mastodon.social/@Shaos
03 Feb 2024 22:46
Profile WWW
Admin
User avatar

Joined: 08 Jan 2003 23:22
Posts: 22409
Location: Silicon Valley
Reply with quote
Он вот тут уходит на директиву X:
Code:
PAD:   LHLD   SHEET
   MOV   A,L
   ORA   H
   LXI   SP,076D0H
   LXI   H,00101H
   SHLD   FLAGS
   ;LXI   H,EDITHI+1
PADKEJ:   ;JNZ   PADKEY
   ;CALL   STROUT
   CZ   DIRECX ; <<<<<< X
Видимо чегой то ему надо написать в адрес SHEET (7616)?

P.S. Если через директиву X предполагалось задать параметры запуска то ок - пробую через Emu80 (через GF000 т.к. похоже U там гвоздями приколочен к DOS 2.9) - в адрес 0000 я поставил C9 (RET) - это будет пользовательская программа - PC равен 0000, HL пусть будет 1000 (буфер текста), а всё остальное нули - оно вроде даже заработало как редактор, но показывает лишь один курсор, которым можно двигать, но печатаемый текст не отображается (хотя в отладчике по адресу 1000 я вижу введённый текст).
Pyk помог отвязать директиву U от доса в Emu80 и теперь оно даже работает :)
Однако выводит в незаполненную область справа вместо нулей коды 0A и 0D, а по ним в моём шрифте сидят видимые символы:


Attachment:
Screenshot from 2024-02-04 00-02-15.png
Screenshot from 2024-02-04 00-02-15.png [ 33.3 KiB | Viewed 2015 times ]


P.P.S. А вот в rk86.ru после ресета по U с установкой параметров через директиву X вроде как можно вводить текст, однако нумерации строк нету (или эти цифры слева от края видимого экрана только для отладки были?)


Attachments:
Screenshot from 2024-02-03 22-57-14.png
Screenshot from 2024-02-03 22-57-14.png [ 31.96 KiB | Viewed 2020 times ]

_________________
:dj: https://mastodon.social/@Shaos
03 Feb 2024 23:43
Profile WWW
Admin
User avatar

Joined: 08 Jan 2003 23:22
Posts: 22409
Location: Silicon Valley
Reply with quote
Shaos wrote:
Однако выводит в незаполненную область справа вместо нулей коды 0A и 0D, а по ним в моём шрифте сидят видимые символы
Наверное это легко поправить - просто при выводе в экран заменять 0A и 0D нулями? Или их наличие в видеопамяти тоже необходимо?

P.S. Кстати при возвращении в существующий буфер после перезапуска (я ещё вручную записал адрес буфера в SHEET, чтобы не вызывалась директива X) табуляции подменяются на что-то псевдографическое:


Attachments:
Screenshot from 2024-02-04 01-23-07.png
Screenshot from 2024-02-04 01-23-07.png [ 34.47 KiB | Viewed 2010 times ]

_________________
:dj: https://mastodon.social/@Shaos
04 Feb 2024 01:19
Profile WWW
Online
Maniac
User avatar

Joined: 14 Oct 2019 18:10
Posts: 272
Location: Tashkent
Reply with quote
Shaos wrote:
Он вот тут уходит на директиву X:
Видимо чегой то ему надо написать в адрес SHEET (7616)?
Программы "прожига ПЗУ" сами интерактивно запрашивают адреса начала и конца буфера. У меня - всё указывается через директиву X (если пользователь перед U вызовет X и укажет любой HL, то код редактора запустится сразу).

А так, здесь все ячейки описываются и при желании можно текст ассемблера поправить и перенести их (ячейки под авторский Монитор РАДИО-86РК) куда удобнее. :mrgreen:
Shaos wrote:
P.S. Если через директиву X предполагалось задать параметры запуска то ок - пробую через Emu80 (через GF000 т.к. похоже U там гвоздями приколочен к DOS 2.9) - в адрес 0000 я поставил C9 (RET) - это будет пользовательская программа - PC равен 0000, HL пусть будет 1000 (буфер текста), а всё остальное нули - оно вроде даже заработало как редактор, но показывает лишь один курсор, которым можно двигать, но печатаемый текст не отображается (хотя в отладчике по адресу 1000 я вижу введённый текст).
Да, всё верно. Документацию я хоть скудно составил, но вполне ясно для программиста. :wink:

Редактор хоть и относительно сложен, но в то же время - прост: Он не любит (по-моему) абсолютно пустого буфера с навигацией по нему. :roll:
(Если в HL - 1000, то по 0FFF обязательно должен быть 00, так как автоматический подсчёт строк по позиции на экране ведётся поиском начала текста кодом 00 через декремент адреса (предполагается, что предыдущий буфер с 0000 по 0FFF завершился в 0FFF этим 00.)
Shaos wrote:
Однако выводит в незаполненную область справа вместо нулей коды 0A и 0D, а по ним в моём шрифте сидят видимые символы:

Наверное это легко поправить - просто при выводе в экран заменять 0A и 0D нулями? Или их наличие в видеопамяти тоже необходимо?
Вот это плохо, так как символы эти на экране очень важны: При "клике" "световым пером" определяется, в пределах ли строки клик?
(Хотя, сейчас не помню точно, так как для этого так специальные #625/#845 подпрограммы отлаживались потом и кровью, вычисляющие позицию по координате без чтения экрана. Значит, 0A и 0D - рудимент (прыжок с #361 на #387 и нужно добавить XRA A перед XTHL #386 - один байт весь этот код вместить может, на сколько я помню)... Или фишка, так как большинство редакторов визуально тоже опционально обозначаются символы перевода строки.)
Shaos wrote:
P.P.S. А вот в rk86.ru после ресета по U с установкой параметров через директиву X вроде как можно вводить текст, однако нумерации строк нету (или эти цифры слева от края видимого экрана только для отладки были?)
Клавиши АР2/F2/F3/F4 там включают/отключают подсветку символа Табуляции, нумерации строк и границ через пользовательский код (если в X:PC-0000, то никакой код не вызывается (RET не нужен, просто X:PC=0000) и функционал минимальный) или директивой M вручную перед запуском редактора.

P.S.: Спасибо за внимание к моему NeDo-продукту! :idea:
Однако, спустя почти год, сложновато как-то всё вспомнить и сориентироваться, в частности, с этими 0A/0D на экране. :o


Attachments:
File comment: Запуск редактора
Снимок экрана_2024-02-04_15-25-53.png
Снимок экрана_2024-02-04_15-25-53.png [ 45.37 KiB | Viewed 1950 times ]
File comment: Загрузка и старт
Снимок экрана_2024-02-04_15-25-25.png
Снимок экрана_2024-02-04_15-25-25.png [ 36.73 KiB | Viewed 1950 times ]


Last edited by Alikberov on 04 Feb 2024 14:01, edited 1 time in total.

04 Feb 2024 13:12
Profile WWW
Admin
User avatar

Joined: 08 Jan 2003 23:22
Posts: 22409
Location: Silicon Valley
Reply with quote
> (если в X:PC-0000, то никакой код не вызывается (RET не нужен, просто X:PC=0000) и функционал минимальный)

У меня кстати так и не работало с X:PC=0000 пока я C9 не поставил в 0000 через M

А нумерация строк только через "пользовательскую" программу возможна?

Кстати можно ведь директиве U параметр передать? Типа начало буфера текста :)

U1000

Главное его на том конце правильно прочитать ;)

А так в целом вроде работает :kruto:

_________________
:dj: https://mastodon.social/@Shaos


04 Feb 2024 14:00
Profile WWW
Online
Maniac
User avatar

Joined: 14 Oct 2019 18:10
Posts: 272
Location: Tashkent
Reply with quote
Shaos wrote:
У меня кстати так и не работало с X:PC=0000 пока я C9 не поставил в 0000 через M
:o
Что-то я подзабыл...
Shaos wrote:
А нумерация строк только через "пользовательскую" программу возможна
Флаг (байт) 7F в адрес 762D нужно записать (выполните D0,0 и сразу U).
Shaos wrote:
Кстати можно ведь директиве U параметр передать? Типа начало буфера текста :)

U1000

Главное его на том конце правильно прочитать ;)

А так в целом вроде работает :kruto:
Только при модификации Монитора.
(Нужно открывать новую тему под это дело...)

Например, как тут:


Attachments:
File comment: "Сказ о том, как Аликберов Монитор дампом правил"
photo_2024-02-04_16-16-35.jpg
photo_2024-02-04_16-16-35.jpg [ 102.75 KiB | Viewed 1943 times ]
File comment: Скриншот наброска Монитор-A с тестированием Форт-подобных команд
photo_2024-02-04_16-06-54.jpg
photo_2024-02-04_16-06-54.jpg [ 50.1 KiB | Viewed 1944 times ]
04 Feb 2024 14:20
Profile WWW
Admin
User avatar

Joined: 08 Jan 2003 23:22
Posts: 22409
Location: Silicon Valley
Reply with quote
А просто цифры не словит? Надо будет поизучать вопрос...

D0,0 перед U попробовал - работает :)

Attachment:
Screenshot from 2024-02-04 13-29-12.png
Screenshot from 2024-02-04 13-29-12.png [ 33.13 KiB | Viewed 1939 times ]

(заодно ещё раз проверил без C9 - не вводится текст при этом, только с C9 вводится)

> Флаг (байт) 7F в адрес 762D нужно записать (выполните D0,0 и сразу U).

Есть описание всех флагов какие можно устанавливать в 762D? Я чего-то с ходу не нашёл...

_________________
:dj: https://mastodon.social/@Shaos


04 Feb 2024 14:32
Profile WWW
Display posts from previous:  Sort by  
Reply to topic   [ 84 posts ]  Go to page Previous  1, 2, 3, 4, 5, 6  Next

Who is online

Users browsing this forum: Alikberov and 10 guests


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot post attachments in this forum

Search for:
Jump to:  
Powered by phpBB® Forum Software © phpBB Group
Designed by ST Software.