flat assembler
Message board for the users of flat assembler.

Index > DOS > ASSEMBLER subtraction U2 code and replace the OCT, HEX

Author
Thread Post new topic Reply to topic
bipocich



Joined: 17 Nov 2013
Posts: 18
bipocich
Hello,
I am in the process of writing the code, but not quite me out:(
Therefore, please help.
Here's the code:
Code:
format MZ
entry main: start
stack 100h

segment main
start:
call czysc



mov ax, dane
mov ds, ax
gBówna:

call dana1
call minus
call dana2
call rownasie
call wynik

call pytanie
call linia1
call opcje
call linia2
call wybor

ety1:
call pobierz

cmp al, 1Bh
je koniec
;jne ety1


cmp al, 'L'
je wprowadz_dana1

cmp al, 'P'
je wprowadz_dana2

;cmp al, 'L'
;je wykonaj_operacje
jne ety1




;mov ah, 4ch
;int 21h

;-------------------
wprowadz_dana1:
mov dx, text1
call wyswietl


mov bx, liczba1

mov cx, 8
petla:
mov ah,07h
int 21h

cmp al,'0'
je dobrze

cmp al,'1'
je dobrze
jne petla

dobrze:
mov [bx], al
mov dx, bx
call wyswietl

inc bx



loop petla

;call czysc

;call gBówna


call dana1
ret

wprowadz_dana2:
mov dx, text2
call wyswietl


mov bx, liczba2

mov cx, 8
petla1:
mov ah,07h
int 21h

cmp al,'0'
je dobrze1

cmp al,'1'
je dobrze1
jne petla1

dobrze1:
mov [bx], al
call wysw_bin

inc bx



loop petla

call dana2
ret



wysw_bin:
        mov cl,8                
etyk1:
        push cx                 
        rcl [liczba2],1
        jc etyk2
        mov dl,'0' 
        jmp etyk3
etyk2:
        mov dl,'1' 
etyk3:
        mov ah,2                
        int 21h                 
        pop cx                  
        loop etyk1
        rcl [liczba2],1
        ret



wyswietl:
mov ah, 09h
int 21h
ret

pobierz:
mov ah, 07h
int 21h
ret

koniec:
mov ah, 4ch
int 21h

minus:
mov bh,0
mov dl, 00
mov dh, 1
mov ah, 2
int 10h
mov dx, text4
call wyswietl
ret

rownasie:
mov bh,0
mov dl, 00
mov dh, 3
mov ah, 2
int 10h
mov dx, text5
call wyswietl
ret


dana1:
mov bh,0
mov dl, 00
mov dh, 00
mov ah, 2
int 10h
mov dx, text1
call wyswietl
mov dx, liczba1
call wyswietl

ret


dana2:
mov bh,0
mov dl, 0
mov dh, 2
mov ah, 2
int 10h
mov dx, text2
call wyswietl
mov dx, liczba2
call wyswietl
ret

wynik:
mov bh,0
mov dl, 0
mov dh, 4
mov ah, 2
int 10h
mov dx, text3
call wyswietl
ret

pytanie:
mov bh,0
mov dl, 0
mov dh, 6
mov ah, 2
int 10h
mov dx, text6
call wyswietl
ret

opcje:
mov bh,0
mov dl, 0
mov dh, 8
mov ah, 2
int 10h
mov dx, text7
call wyswietl
ret



czysc:
mov ah, 0
mov al, 3
int 10h
ret


linia1:
mov bh,0
mov dl, 0
mov dh, 7
mov ah, 2
int 10h
mov dx, text9
call wyswietl
ret


linia2:
mov bh,0
mov dl, 0
mov dh, 9
mov ah, 2
int 10h
mov dx, text9
call wyswietl
ret


wybor:
mov bh,0
mov dl, 0
mov dh, 10
mov ah, 2
int 10h
mov dx, text10
call wyswietl
ret

segment dane
liczba1 db '        $'
liczba2 db '        $'
tekst db 'TESTOWY$'
text1 db 'Dana1 = $'
text2 db 'Dana2 = $'
text3 db 'Wynik = $'
text4 db '  -     $'
text5 db '  =     $'
text6 db 'Co chcesz zrobic?$'
text7 db ' <L> - wybor dane1; <P> - wybor dane2; <w> - wykonanie operacji; <Esc> - wyjscie$'
text9 db '---------------------------------------------------------------$'
text10 db 'Wybor: $'
    



Namely:
- I would like that when you enter the first and second numbers, they display them in one over (during editing), and not as it is now - with spaces
- Than it would have been nice to add the ability to undo accidentally run 1 or 0 when the variable
- Of course, as a topic, would be brilliant if the second value is subtracted from the first (data enter the code U2)
- And at the end of each conversion to binary systems.

Thanks in advance for tips / links / correction / etc. / Etc ..
If I can figure out something else, then I update code Smile
Post 17 Nov 2013, 15:53
View user's profile Send private message Reply with quote
revolution
When all else fails, read the source


Joined: 24 Aug 2004
Posts: 17472
Location: In your JS exploiting you and your system
revolution
I suspect I am not the only person to find your code hard to follow with the labels in a non-English language. While there might be some people on this board that can read your native language it would probably be a much better bet that if you translated them to English you would get more help with your problem.
Post 18 Nov 2013, 01:57
View user's profile Send private message Visit poster's website Reply with quote
MHajduk



Joined: 30 Mar 2006
Posts: 6038
Location: Poland
MHajduk
I dared to "anglicize" the original bipocich's program and, as I suppose, this version will be easier to understand to potential reader:
Code:
format MZ
entry main: start
stack 100h

segment main
start:
call clean



mov ax, progdata
mov ds, ax

mainproc:

call data1
call minus
call data2
call equals
call result

call question
call line1
call options
call line2
call choice

label0:
call getdata

cmp al, 1Bh
je endproc
;jne label0


cmp al, 'L'
je get_data1

cmp al, 'P'
je get_data2

;cmp al, 'L'
;je perform
jne label0




;mov ah, 4ch
;int 21h

;-------------------
get_data1:
mov dx, text1
call displaytxt


mov bx, number1

mov cx, 8

procloop:
mov ah,07h
int 21h

cmp al,'0'
je OK

cmp al,'1'
je OK
jne procloop

OK:
mov [bx], al
mov dx, bx
call displaytxt

inc bx



loop procloop

;call clean

;call mainproc


call data1
ret

get_data2:
mov dx, text2
call displaytxt


mov bx, number2

mov cx, 8
loop1:
mov ah,07h
int 21h

cmp al,'0'
je OK1

cmp al,'1'
je OK1
jne loop1

OK1:
mov [bx], al
call display_bin

inc bx



loop procloop

call data2
ret



display_bin:
        mov cl,8                
label1:
        push cx                 
        rcl [number2],1
        jc label2
        mov dl,'0' 
        jmp label3
label2:
        mov dl,'1' 
label3:
        mov ah,2                
        int 21h                 
        pop cx                  
        loop label1
        rcl [number2],1
        ret



displaytxt:
mov ah, 09h
int 21h
ret

getdata:
mov ah, 07h
int 21h
ret

endproc:
mov ah, 4ch
int 21h

minus:
mov bh,0
mov dl, 00
mov dh, 1
mov ah, 2
int 10h
mov dx, text4
call displaytxt
ret

equals:
mov bh,0
mov dl, 00
mov dh, 3
mov ah, 2
int 10h
mov dx, text5
call displaytxt
ret


data1:
mov bh,0
mov dl, 00
mov dh, 00
mov ah, 2
int 10h
mov dx, text1
call displaytxt
mov dx, number1
call displaytxt

ret


data2:
mov bh,0
mov dl, 0
mov dh, 2
mov ah, 2
int 10h
mov dx, text2
call displaytxt
mov dx, number2
call displaytxt
ret

result:
mov bh,0
mov dl, 0
mov dh, 4
mov ah, 2
int 10h
mov dx, text3
call displaytxt
ret

question:
mov bh,0
mov dl, 0
mov dh, 6
mov ah, 2
int 10h
mov dx, text6
call displaytxt
ret

options:
mov bh,0
mov dl, 0
mov dh, 8
mov ah, 2
int 10h
mov dx, text7
call displaytxt
ret



clean:
mov ah, 0
mov al, 3
int 10h
ret


line1:
mov bh,0
mov dl, 0
mov dh, 7
mov ah, 2
int 10h
mov dx, text9
call displaytxt
ret


line2:
mov bh,0
mov dl, 0
mov dh, 9
mov ah, 2
int 10h
mov dx, text9
call displaytxt
ret


choice:
mov bh,0
mov dl, 0
mov dh, 10
mov ah, 2
int 10h
mov dx, text10
call displaytxt
ret

segment progdata
number1 db '        $'
number2 db '        $'
text db 'TEST$'
text1 db 'Data1 = $'
text2 db 'Data2 = $'
text3 db 'Result = $'
text4 db '  -     $'
text5 db '  =     $'
text6 db 'What do you want to do?$'
text7 db ' <L> - choose data1; <P> - choose data2; <w> - perform an operation; <Esc> - exit$'
text9 db '---------------------------------------------------------------$'
text10 db 'Choice: $'
    
Post 18 Nov 2013, 21:50
View user's profile Send private message Visit poster's website Reply with quote
bipocich



Joined: 17 Nov 2013
Posts: 18
bipocich
revolution wrote:
I suspect I am not the only person to find your code hard to follow with the labels in a non-English language. While there might be some people on this board that can read your native language it would probably be a much better bet that if you translated them to English you would get more help with your problem.

revolution THX for your suggestions and comments;)
Here is the translated code:
Code:
format MZ
entry main: start
stack 100h

segment main
start:
call clean



mov ax, dane
mov ds, ax
main_program:

call data1
call minus
call data2
call equals
call result

call question
call line1
call options
call line2
call choice

ety1:
call download

cmp al, 1Bh
je ebd
;jne ety1


cmp al, 'L'
je enter_data1

cmp al, 'P'
je enter_data2

;cmp al, 'L'
;je did_operations
jne ety1




;mov ah, 4ch
;int 21h

;------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
enter_data1:
mov dx, text1
call show


mov bx, number1

mov cx, 8
loop11:
mov ah,07h
int 21h

cmp al,'0'
je good

cmp al,'1'
je good
jne loop11

good:
mov [bx], al
mov dx, bx
call show

inc bx



loop loop11

;call clean

;call main_program


call data1
ret
;-------------------------------------------------
enter_data2:
mov dx, text2
call show


mov bx, number2

mov cx, 8
loop111:
mov ah,07h
int 21h

cmp al,13
je back

cmp al,'0'
je good1

cmp al,'1'
je good1
jne loop111





good1:
mov [bx], al
mov [tmp], al
mov dx, tmp
call show





inc bx



loop loop111

call data2
ret


;-------------------------------------------------
back:
dec bx

ret


;ret
;-------------------------------------------------

show:
mov ah, 09h
int 21h
ret

download:
mov ah, 07h
int 21h
ret

ebd:
mov ah, 4ch
int 21h

minus:
mov bh,0
mov dl, 00
mov dh, 1
mov ah, 2
int 10h
mov dx, text4
call show
ret

equals:
mov bh,0
mov dl, 00
mov dh, 3
mov ah, 2
int 10h
mov dx, text5
call show
ret


data1:
mov bh,0
mov dl, 00
mov dh, 00
mov ah, 2
int 10h
mov dx, text1
call show
mov dx, number1
call show

ret


data2:
mov bh,0
mov dl, 0
mov dh, 2
mov ah, 2
int 10h
mov dx, text2
call show
mov dx, number2
call show
ret

result:
mov bh,0
mov dl, 0
mov dh, 4
mov ah, 2
int 10h
mov dx, text3
call show
ret

question:
mov bh,0
mov dl, 0
mov dh, 6
mov ah, 2
int 10h
mov dx, text6
call show
ret

options:
mov bh,0
mov dl, 0
mov dh, 8
mov ah, 2
int 10h
mov dx, text7
call show
ret



clean:
mov ah, 0
mov al, 3
int 10h
ret


line1:
mov bh,0
mov dl, 0
mov dh, 7
mov ah, 2
int 10h
mov dx, text9
call show
ret


line2:
mov bh,0
mov dl, 0
mov dh, 9
mov ah, 2
int 10h
mov dx, text9
call show
ret


choice:
mov bh,0
mov dl, 0
mov dh, 10
mov ah, 2
int 10h
mov dx, text10
call show
ret

segment dane
number1 db '        $'
number2 db '        $'
tekst db 'TESTOWY$'
text1 db 'data1 = $'
text2 db 'data2 = $'
text3 db 'result = $'
text4 db '  -     $'
text5 db '  =     $'
text6 db 'What do you want to do?$'
text7 db ' <L> - choice dane1; <P> - choice dane2; <w> - do operation; <Esc> - exit$'
text9 db '---------------------------------------------------------------$'
text10 db 'choice: $'
tmp db ' $'
    
Post 18 Nov 2013, 23:16
View user's profile Send private message Reply with quote
bipocich



Joined: 17 Nov 2013
Posts: 18
bipocich
MHajduk wrote:
I dared to "anglicize" the original bipocich's program and, as I suppose, this version will be easier to understand to potential reader:
Code:
format MZ
entry main: start
stack 100h

segment main
start:
call clean



mov ax, progdata
mov ds, ax

mainproc:

call data1
call minus
call data2
call equals
call result

call question
call line1
call options
call line2
call choice

label0:
call getdata

cmp al, 1Bh
je endproc
;jne label0


cmp al, 'L'
je get_data1

cmp al, 'P'
je get_data2

;cmp al, 'L'
;je perform
jne label0




;mov ah, 4ch
;int 21h

;-------------------
get_data1:
mov dx, text1
call displaytxt


mov bx, number1

mov cx, 8

procloop:
mov ah,07h
int 21h

cmp al,'0'
je OK

cmp al,'1'
je OK
jne procloop

OK:
mov [bx], al
mov dx, bx
call displaytxt

inc bx



loop procloop

;call clean

;call mainproc


call data1
ret

get_data2:
mov dx, text2
call displaytxt


mov bx, number2

mov cx, 8
loop1:
mov ah,07h
int 21h

cmp al,'0'
je OK1

cmp al,'1'
je OK1
jne loop1

OK1:
mov [bx], al
call display_bin

inc bx



loop procloop

call data2
ret



display_bin:
        mov cl,8                
label1:
        push cx                 
        rcl [number2],1
        jc label2
        mov dl,'0' 
        jmp label3
label2:
        mov dl,'1' 
label3:
        mov ah,2                
        int 21h                 
        pop cx                  
        loop label1
        rcl [number2],1
        ret



displaytxt:
mov ah, 09h
int 21h
ret

getdata:
mov ah, 07h
int 21h
ret

endproc:
mov ah, 4ch
int 21h

minus:
mov bh,0
mov dl, 00
mov dh, 1
mov ah, 2
int 10h
mov dx, text4
call displaytxt
ret

equals:
mov bh,0
mov dl, 00
mov dh, 3
mov ah, 2
int 10h
mov dx, text5
call displaytxt
ret


data1:
mov bh,0
mov dl, 00
mov dh, 00
mov ah, 2
int 10h
mov dx, text1
call displaytxt
mov dx, number1
call displaytxt

ret


data2:
mov bh,0
mov dl, 0
mov dh, 2
mov ah, 2
int 10h
mov dx, text2
call displaytxt
mov dx, number2
call displaytxt
ret

result:
mov bh,0
mov dl, 0
mov dh, 4
mov ah, 2
int 10h
mov dx, text3
call displaytxt
ret

question:
mov bh,0
mov dl, 0
mov dh, 6
mov ah, 2
int 10h
mov dx, text6
call displaytxt
ret

options:
mov bh,0
mov dl, 0
mov dh, 8
mov ah, 2
int 10h
mov dx, text7
call displaytxt
ret



clean:
mov ah, 0
mov al, 3
int 10h
ret


line1:
mov bh,0
mov dl, 0
mov dh, 7
mov ah, 2
int 10h
mov dx, text9
call displaytxt
ret


line2:
mov bh,0
mov dl, 0
mov dh, 9
mov ah, 2
int 10h
mov dx, text9
call displaytxt
ret


choice:
mov bh,0
mov dl, 0
mov dh, 10
mov ah, 2
int 10h
mov dx, text10
call displaytxt
ret

segment progdata
number1 db '        $'
number2 db '        $'
text db 'TEST$'
text1 db 'Data1 = $'
text2 db 'Data2 = $'
text3 db 'Result = $'
text4 db '  -     $'
text5 db '  =     $'
text6 db 'What do you want to do?$'
text7 db ' <L> - choose data1; <P> - choose data2; <w> - perform an operation; <Esc> - exit$'
text9 db '---------------------------------------------------------------$'
text10 db 'Choice: $'
    


MHajduk THX for your "anglicize" Very Happy
Post 18 Nov 2013, 23:18
View user's profile Send private message Reply with quote
bipocich



Joined: 17 Nov 2013
Posts: 18
bipocich
The my solution of the problem:
Code:
format MZ
entry main: start
stack 100h

;-------------------------------------------------
;MAKRA
;-------------------------------------------------
macro wyswietl text
{
   mov dx , text
   mov ah, 09h
   int 21h
}

macro wstaw text
{
   mov [text],al

}

macro zerowanie text
{
local petla
  mov al, [spacja]
mov cx,8
mov si,0
petla:
     mov [text+si],al
     inc si
     loop petla

}



macro kreskowanie text
{
  mov al, [spacja]
mov cx,8
mov si,0
petla2:
     mov [text+si],al
     inc si
     loop petla2

}

macro kopiowanie text
{

mov cx,8
mov si,0
petla:
     mov al, [text+si]
     mov [pomocnicza+si],al
     inc si
     loop petla

}

macro na_HEX tmp
{
        local ety4, ety5, ety6, ety7
        mov al,[tmp]  ;pierwsza cyfra hex
        shr al,4
        cmp al,10
        jb ety4
        add al,55       ; kody ascii liter
        jmp ety5
ety4:
        add al,30h
ety5:                
        mov dl,al
        mov ah,2                           
        int 21h                            
                                           
        mov al,[tmp]  ;druga cyfra hex
        and al,0Fh
        cmp al,10 
        jb ety6   
        add al,55       ; kody ascii liter
        jmp ety7
ety6:
        add al,30h
ety7:                
        mov dl,al
        mov ah,2                           
        int 21h
}






macro na_OCT tmp
{
        mov al,[tmp]  ;pierwsza cyfra oct
        shr al,6                           
        add al,30h                         
        mov dl,al                          
        mov ah,2                           
        int 21h                            
                                           
        mov al,[tmp]  ;druga cyfra oct
        shl al,2                        
        shr al,5                        
        add al,30h                      
        mov dl,al                       
        mov ah,2                        
        int 21h                         
         
        mov al,[tmp] ; trzecia dyfra oct
        and al,7
        add al,30h
        mov dl,al
        mov ah,2
        int 21h
}


macro konwersja tmp
{
local petla
mov cx,8
mov si,7
petla:
mov al, [tmp+si]
rcr al, 1
rcl [xyz],1
loop petla

}

;-------------------------------------------------
;MAKRA
;-------------------------------------------------



segment main
start:




mov ax, dane
mov ds, ax
gBówna:
call czysc

call dana1
call minus
call dana2
call rownasie
call wynik

call pytanie
call linia1
call opcje
call linia2
call wybor

ety1:
call pobierz

cmp al, 1Bh
je koniec
;jne ety1


cmp al, 'L'
je wprowadz_dana1

cmp al, 'P'
je wprowadz_dana2

cmp al, 'W'
je odejmowanie

;cmp al, 'L'
;je wykonaj_operacje
jne ety1




;mov ah, 4ch
;int 21h

;------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
wprowadz_dana1:

zerowanie liczba1
zerowanie liczba3


wyswietl text1


mov cx,8
mov si,0
spr1:

call pobierz

cmp al,'0'
je dobrze

cmp al,'1'
je dobrze


cmp al, 8
je znak_wstecz

cmp al, 13
je znak_enter
jne spr1



dobrze:

mov [liczba1+si],al
wstaw tmp
wyswietl tmp
inc si
loop spr1


jmp spr2



znak_wstecz:
cmp cx,8
je spr1

dec si

wstaw tmp
wyswietl tmp

jmp spr1



znak_enter:

mov cx,si
przesuniecie:


call gBówna

spr2:
call pobierz
cmp al, 8
je znak_wstecz

cmp al, 13
je znak_enter
jne spr2
ret


;------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
wprowadz_dana2:

zerowanie liczba2
zerowanie liczba3


wyswietl text2


mov cx,8
mov si,0
spr3:

call pobierz

cmp al,'0'
je dobrze1

cmp al,'1'
je dobrze1


cmp al, 8
je znak_wstecz1

cmp al, 13
je znak_enter1
jne spr1



dobrze1:

mov [liczba2+si],al
wstaw tmp
wyswietl tmp
inc si
loop spr3


jmp spr4



znak_wstecz1:
cmp cx,8
je spr3

dec si

wstaw tmp
wyswietl tmp

jmp spr3



znak_enter1:

mov cx,si
przesuniecie1:


call gBówna

spr4:
call pobierz
cmp al, 8
je znak_wstecz1

cmp al, 13
je znak_enter1
jne spr4
ret

;-------------------------------






pobierz:
mov ah, 07h
int 21h
ret

koniec:
mov ah, 4ch
int 21h

minus:
mov bh,0
mov dl, 00
mov dh, 1
mov ah, 2
int 10h
wyswietl text4
ret

rownasie:
mov bh,0
mov dl, 00
mov dh, 3
mov ah, 2
int 10h
wyswietl text5
ret


dana1:
mov bh,0
mov dl, 00
mov dh, 00
mov ah, 2
int 10h
wyswietl text1

wyswietl liczba1

wyswietl przerwa

konwersja liczba1
na_HEX xyz
wyswietl przerwa
wyswietl nawias1
na_OCT liczba1
wyswietl nawias2
ret

dana2:
mov bh,0
mov dl, 0
mov dh, 2
mov ah, 2
int 10h
wyswietl text2

wyswietl liczba2

wyswietl przerwa
konwersja liczba2
na_HEX xyz
wyswietl przerwa
wyswietl nawias1
na_OCT liczba2
wyswietl nawias2
ret


wynik:
mov bh,0
mov dl, 0
mov dh, 4
mov ah, 2
int 10h
wyswietl text3

wyswietl liczba3
wyswietl przerwa
na_HEX liczba3
wyswietl przerwa
wyswietl nawias1
na_OCT liczba3
wyswietl nawias2
ret

pytanie:
mov bh,0
mov dl, 0
mov dh, 6
mov ah, 2
int 10h
wyswietl text6
ret

opcje:
mov bh,0
mov dl, 0
mov dh, 8
mov ah, 2
int 10h
wyswietl text7
ret



czysc:
mov ah, 0
mov al, 3
int 10h
ret


linia1:
mov bh,0
mov dl, 0
mov dh, 7
mov ah, 2
int 10h
wyswietl text9
ret


linia2:
mov bh,0
mov dl, 0
mov dh, 9
mov ah, 2
int 10h
wyswietl text9
ret


wybor:
mov bh,0
mov dl, 0
mov dh, 10
mov ah, 2
int 10h
wyswietl text10
ret

odejmowanie:
     mov cx,8
     mov si,7
     clc

 petla_odejmowanie:
        mov al,[liczba1+si] ; tab[i]
        sbb al,[liczba2+si] ; dodaj z przeniesieniem

        cmp al, 0FFh
        jne  ety1x
        mov al,1
ety1x:
        add al,30h
        mov [liczba3+si],al
        dec si
        loop petla_odejmowanie

;mov al, cf
;cmp al,1


   jmp gBówna

segment dane
liczba1 db '        $'
liczba2 db '        $'
liczba3 db '        $'
pomocnicza db '        $'
tekst db 'TESTOWY$'
text1 db 'Dana1 = $'
text2 db 'Dana2 = $'
text3 db 'Wynik = $'
text4 db '  -     $'
text5 db '  =     $'
text6 db 'Co chcesz zrobic?$'
text7 db ' <L> - wybor dane1; <P> - wybor dane2; <W> - wykonanie operacji; <Esc> - wyjscie$'
text9 db '---------------------------------------------------------------$'
text10 db 'Wybor: $'
tmp db ' $'
tmp1 db 0
przerwa db '  $'
spacja db ' $'
nawias1 db '[$'
nawias2 db ']$'
kreska db '_$'

xyz db 45h    

Very Happy
Post 21 Dec 2013, 00:29
View user's profile Send private message Reply with quote
Display posts from previous:
Post new topic Reply to topic

Jump to:  


< Last Thread | Next Thread >
Forum Rules:
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 vote in polls in this forum
You cannot attach files in this forum
You can download files in this forum


Copyright © 1999-2020, Tomasz Grysztar. Also on YouTube, Twitter.

Website powered by rwasa.