Jump to content



Photo
- - - - -

G-Explorer 2


  • Please log in to reply
58 replies to this topic

#1 C@siomax

C@siomax

    Casio Freak

  • Members
  • PipPipPipPip
  • 229 posts
  • Location:Grenoble, FRANCE

  • Calculators:
    Graph 100 v1.0 and Graph 100+ v1.03

Posted 12 February 2003 - 07:41 PM

I've beginned G-Explorer 2!
There's a little demo here: http://leneuronez.free.fr/G-EXII.EXE

Press ENTER to valid the password (not stored, just a test! :))

then you can enter some characters... just for test too!

and rom 1.01 users, tell me if you see correctly ALL the grayscales!

PS: do you at least know about new 5 grayscales technic used in G-ex2 ?? you can download many pictures in *.exe format here:

http://kiwicasio.free.fr/kiwi_img.php

#2 CrimsonCasio

CrimsonCasio

    UCF Ambassador

  • [Legends]
  • PipPipPipPipPipPipPipPipPipPip
  • 3579 posts
  • Gender:Male
  • Location:USA
  • Interests:Claculators, Stephen King, Video Games, Calculators, Programming, Calculators, Reading, Calculators... hmm, what else... Ah! Calculators!

  • Calculators:
    Algebra FX2.0, CFX 9850Ga+, Classpad 300

Posted 12 February 2003 - 11:06 PM

I have rom 1.01, and I dont know if I can see 5 diffrent grays, but I do see three for sure.

#3 BiTwhise

BiTwhise

    Casio Overgod

  • [Legends]
  • PipPipPipPipPipPipPip
  • 627 posts
  • Gender:Male
  • Location:Guildford, Surry, UK
  • Interests:Programming, games, consoles, martial arts

  • Calculators:
    FX9700WE, CFX9970G, AFX2.0, Classpad 300

Posted 12 February 2003 - 11:29 PM

can only see 3 shades on ROM1.01..

in the images they appear as diagonal lines that seem to mask into eachother to create the illusion of more colours..

i guess this new technique uses interrupts to change the current drawen page(?). the interrupt layout is not the same on ROM1.01, so this is probably causing the "error"

#4 C@siomax

C@siomax

    Casio Freak

  • Members
  • PipPipPipPip
  • 229 posts
  • Location:Grenoble, FRANCE

  • Calculators:
    Graph 100 v1.0 and Graph 100+ v1.03

Posted 13 February 2003 - 09:48 AM

ok
The 2 other levels are white and black so It's cool!

BiTWhise: I don't understant exactly what you want to tell me ... sorry, my english is a bit bad ...

#5 BiTwhise

BiTwhise

    Casio Overgod

  • [Legends]
  • PipPipPipPipPipPipPip
  • 627 posts
  • Gender:Male
  • Location:Guildford, Surry, UK
  • Interests:Programming, games, consoles, martial arts

  • Calculators:
    FX9700WE, CFX9970G, AFX2.0, Classpad 300

Posted 13 February 2003 - 11:09 AM

You can only see 3 shades on ROM1.01,
that is: blank, gray, black..

The normal (hardware) way of acheiving grayscale, is to make the display retrace 3 buffers, rather than 1..

Another way, is to make a timed interrupt change the current displaybuffer, and rotate through a given set of buffers..
This way you can set the number of buffers yourself.

I guess this method is used here, or there are ways that I'm unfamiliar of :)

#6 huhn_m

huhn_m

    Casio Maniac

  • [Legends]
  • PipPipPipPipPipPipPipPip
  • 1957 posts
  • Gender:Male
  • Location:Germany / Dresden
  • Interests:Assembler(!!!)
    Computers and Programming
    Operating Systems
    Programmable Calculators
    Maths and everything arround it

  • Calculators:
    FX-82SX / AFX 2.0+ (ROM 1.03) / FX 1.0+ (ROM 1.03)

Posted 13 February 2003 - 01:14 PM

Looks great!
Are you going to implement a folder system (like in Win4Cas)??
This would be great!

#7 C@siomax

C@siomax

    Casio Freak

  • Members
  • PipPipPipPip
  • 229 posts
  • Location:Grenoble, FRANCE

  • Calculators:
    Graph 100 v1.0 and Graph 100+ v1.03

Posted 13 February 2003 - 06:48 PM

Bitwhise: so........
please could someone give mr the 1.01 "screen interrupt number", so you will be able to see all the colors !! :D

huhn_m: Yes, and it will include a real folder system AND a software folder system ! :)

#8 BiTwhise

BiTwhise

    Casio Overgod

  • [Legends]
  • PipPipPipPipPipPipPip
  • 627 posts
  • Gender:Male
  • Location:Guildford, Surry, UK
  • Interests:Programming, games, consoles, martial arts

  • Calculators:
    FX9700WE, CFX9970G, AFX2.0, Classpad 300

Posted 13 February 2003 - 07:21 PM

Hardware interrupts are controled by the PIC, which calls the correct software interrupt from the interrupt vector table (or wherevere else it has been programmed to get its vector)

This mapping is done by the BIOS on load.. and shold be left to the BIOS

It can however be programmed by the user, but that's basically asking for trouble... you'de have to send "end of interrupt" instruction after any ints and stuff like that.. which, if done wrong, could disable that device (being ignored by the PIC).. so it's best to leave that to the BIOS

Different hardware interrupts poll the PIC at different rates..
You have system timers, real time clocks etc, which poll at a relativelly high rate. And then you have IO devices, like keyboard, that doesn't poll unless told so, ei. if you press a button.

For grayscale, you'd want a TSR that changes the address of the framebuffer at the same rate as the screen refreshes..
To do this, you could hook up to whatever interrupt is triggered by the hardware interrupt that triggers screen refresh. If I'm not mistaken, that would be hardware int 2(?).. (don't confuse this with interrupt 2 on the dos vector table)
To know which software interrupts are triggered by this hardware interrupt, you'd need to read the PIC.
When you know which vector is called, you can hook your TSR to this, and redirect to the original code at the end of your code.
The system should run as normal, and your code should execute at the same speed as the screen refresh

I have no real knowledge of how the hardware ints har mapped to the vector table on the AFX, nor at which speed the poll..

However, I think I've read something about using int 53h (which I think is a common timer int?), which doesn't seem to work on ROM1.01

I guess whoever wrote this grayscale thing, use this int, together with normal grayscale function of the afx (which provides 2 usefull buffers) to generate 4 buffers of grayscale, making for 5 shades (including blank)

If this person (sorry, I haven't done any research to find out who) would make his code public, surely it would be easier for someone else to make it compatible with ROM1.01

I believe there are other ppl out there with much greater knowlegde on this subject than me, and thus can complete the task faster and more easilly.. I on my hand can't find time for that right now..

#9 BradN

BradN

    Casio Addict

  • Members
  • PipPipPip
  • 69 posts

Posted 14 February 2003 - 12:44 AM

On ROM 1.01, INT 2 (according to the vector table; as in the NMI) is triggered by the LCD refresh, I think 3x faster than the interrupt on 1.00 and others.

#10 BiTwhise

BiTwhise

    Casio Overgod

  • [Legends]
  • PipPipPipPipPipPipPip
  • 627 posts
  • Gender:Male
  • Location:Guildford, Surry, UK
  • Interests:Programming, games, consoles, martial arts

  • Calculators:
    FX9700WE, CFX9970G, AFX2.0, Classpad 300

Posted 14 February 2003 - 09:37 AM

Has anyone actually tried patching on to this int?

I really doubt there's a register to control this, as it would implement changing the hardware and the way it responds to the NMI..

There's probably an internal counter or something on INT 2, to decide wether to return or call the following INTs in the chain, in which case, a TSR patched on to INT 2 should execute at the same speed as the LCD refresh (being the first INT in the chain)..

#11 C@siomax

C@siomax

    Casio Freak

  • Members
  • PipPipPipPip
  • 229 posts
  • Location:Grenoble, FRANCE

  • Calculators:
    Graph 100 v1.0 and Graph 100+ v1.03

Posted 15 February 2003 - 11:49 AM

3 times faster than other roms??

any way, here s the code:

#define ushort unsigned short
#include <dos.h>

ushort cur_segm=0x1A20;
void interrupt int53()
{
asm{
	push ax
	push dx

	mov ax,[cur_segm]
	mov dx,ax
	and dx,0xF000
	shr dx,12
	shl ax,4
	out 05h,ax
	mov al,dl
	out 07h,al

	cmp word [cur_segm],1A20h
	jne pass
	add word [cur_segm],040h
	jmp end
}
pass:
asm{
	sub word [cur_segm],040h
}
end:
asm{
	pop dx
	pop ax

	int 5
}
}

void interrupt (*oldint)(void);
//Entrer dans le mode 5 couleurs
void set_grey()
{

	oldint = _dos_getvect(0x53);
	_dos_setvect(5,oldint);
	_dos_setvect(0x53,int53);

asm{
	mov al,2    //;Vitesse balayage rapide
	out 4,al

	mov al,0xDB    //; Passage en niveaux de gris lineaire
	out 2,al

	mov bp,7
}
	cont_loop:    //Constaste vers le haut
asm{  mov ah,22h
  xor bl,bl
  int 7Ch
  dec bp
	jnz cont_loop
}
	return;

}

//Quitter le mode 5 couleurs
void clr_grey()
{
asm{
	mov bp,7
}
	cont_loop:    //Constaste vers le bas
asm{
  mov ah,22h
  mov bl,1
  int 7Ch
  dec bp
	jnz cont_loop

	mov al,0xC3    //; Passage mode normal ecran
	out 2,al

	mov al,4    //; Vitesse balayage normale
	out 4,al
}
// Recharger les interruptions du balayage de l'?cran
	_dos_setvect(0x53,oldint);
//Retour page 0x1a20
asm{
	mov ax,0x1a20
	mov dx,ax
	and dx,0xF000
	shr dx,12
	shl ax,4
	out 05h,ax
	mov al,dl
	out 07h,al
}
}

So as you can easily see it, it's the int53 which is redirected to int 5...
If I make a demo but using int2 would bitwhise be ok to betatest it?

#12 BiTwhise

BiTwhise

    Casio Overgod

  • [Legends]
  • PipPipPipPipPipPipPip
  • 627 posts
  • Gender:Male
  • Location:Guildford, Surry, UK
  • Interests:Programming, games, consoles, martial arts

  • Calculators:
    FX9700WE, CFX9970G, AFX2.0, Classpad 300

Posted 15 February 2003 - 11:57 AM

This is how I suspected you did it :)

Int 0x53 is not set up the same way on ROM1.01

I'll be happy to test any Int 2 attempt :)

#13 BradN

BradN

    Casio Addict

  • Members
  • PipPipPip
  • 69 posts

Posted 15 February 2003 - 03:18 PM

Yes, I first arrived at the 1/3 speed for 1.00 by the fact that 1.01 has a divide by 3 counter in ROM that only continues running the interrupt once every three times.

And unfortunately I know there's not another interrupt on 1.00 running full speed, because the greyscale demo in my ASMTEST2 runs properly on 1.01, but flickers badly on 1.00 (and may not allow exiting due to the way it tries reading the keyboard). It uses the hlt command for timing, so the actual interrupt that fires from the refresh doesn't matter.

#14 C@siomax

C@siomax

    Casio Freak

  • Members
  • PipPipPipPip
  • 229 posts
  • Location:Grenoble, FRANCE

  • Calculators:
    Graph 100 v1.0 and Graph 100+ v1.03

Posted 15 February 2003 - 04:13 PM

ok just let me some time to finish the buttons system :D

#15 Maitre Kiwi

Maitre Kiwi

    Casio Fan

  • Members
  • PipPip
  • 37 posts
  • Location:Kiwi Land

  • Calculators:
    Casio Graph100 or FX2 for US people

Posted 16 February 2003 - 09:24 AM

BiTwhise, if you have 1.01 can you upload you rom on the ftp [cf. ROMSEND] ?

#16 BiTwhise

BiTwhise

    Casio Overgod

  • [Legends]
  • PipPipPipPipPipPipPip
  • 627 posts
  • Gender:Male
  • Location:Guildford, Surry, UK
  • Interests:Programming, games, consoles, martial arts

  • Calculators:
    FX9700WE, CFX9970G, AFX2.0, Classpad 300

Posted 16 February 2003 - 12:09 PM

Uploaded :)

#17 Maitre Kiwi

Maitre Kiwi

    Casio Fan

  • Members
  • PipPip
  • 37 posts
  • Location:Kiwi Land

  • Calculators:
    Casio Graph100 or FX2 for US people

Posted 16 February 2003 - 12:55 PM

you're so fast :D thanks ! :)

#18 C@siomax

C@siomax

    Casio Freak

  • Members
  • PipPipPipPip
  • 229 posts
  • Location:Grenoble, FRANCE

  • Calculators:
    Graph 100 v1.0 and Graph 100+ v1.03

Posted 16 February 2003 - 02:48 PM

soooh
could someone give me some principal interface ideas? I mean the screen after the password security ... what could I show on it ? And if you have some ideas, I could program them AND a 1.01 rom version too!! :D

#19 huhn_m

huhn_m

    Casio Maniac

  • [Legends]
  • PipPipPipPipPipPipPipPip
  • 1957 posts
  • Gender:Male
  • Location:Germany / Dresden
  • Interests:Assembler(!!!)
    Computers and Programming
    Operating Systems
    Programmable Calculators
    Maths and everything arround it

  • Calculators:
    FX-82SX / AFX 2.0+ (ROM 1.03) / FX 1.0+ (ROM 1.03)

Posted 16 February 2003 - 04:08 PM

Do you know graph OS???

I think the Idea behind it is quite good. Unfortunately a lot of functions
don't work (yet?).

Look at it!

#20 C@siomax

C@siomax

    Casio Freak

  • Members
  • PipPipPipPip
  • 229 posts
  • Location:Grenoble, FRANCE

  • Calculators:
    Graph 100 v1.0 and Graph 100+ v1.03

Posted 17 February 2003 - 03:38 PM

no
graph os isn't at all the style I want ...
do you know mac os X ? and Kde ?? this is THIS design I like ... and all things are done on paper, I've worked hard today!! :D

#21 huhn_m

huhn_m

    Casio Maniac

  • [Legends]
  • PipPipPipPipPipPipPipPip
  • 1957 posts
  • Gender:Male
  • Location:Germany / Dresden
  • Interests:Assembler(!!!)
    Computers and Programming
    Operating Systems
    Programmable Calculators
    Maths and everything arround it

  • Calculators:
    FX-82SX / AFX 2.0+ (ROM 1.03) / FX 1.0+ (ROM 1.03)

Posted 17 February 2003 - 07:25 PM

KDE rocks!!!

#22 C@siomax

C@siomax

    Casio Freak

  • Members
  • PipPipPipPip
  • 229 posts
  • Location:Grenoble, FRANCE

  • Calculators:
    Graph 100 v1.0 and Graph 100+ v1.03

Posted 18 February 2003 - 04:16 PM

now buttons system is o.k !!
I'll attack the 1.01 rom ver. on a few minutes! :D

#23 C@siomax

C@siomax

    Casio Freak

  • Members
  • PipPipPipPip
  • 229 posts
  • Location:Grenoble, FRANCE

  • Calculators:
    Graph 100 v1.0 and Graph 100+ v1.03

Posted 20 February 2003 - 06:30 PM

'fancy a screenshot ??
here is one:

http://leneuronez.free.fr/interf.bmp

#24 CrimsonCasio

CrimsonCasio

    UCF Ambassador

  • [Legends]
  • PipPipPipPipPipPipPipPipPipPip
  • 3579 posts
  • Gender:Male
  • Location:USA
  • Interests:Claculators, Stephen King, Video Games, Calculators, Programming, Calculators, Reading, Calculators... hmm, what else... Ah! Calculators!

  • Calculators:
    Algebra FX2.0, CFX 9850Ga+, Classpad 300

Posted 20 February 2003 - 07:19 PM

very, very, very (did I say very?) cool.

#25 CrimsonCasio

CrimsonCasio

    UCF Ambassador

  • [Legends]
  • PipPipPipPipPipPipPipPipPipPip
  • 3579 posts
  • Gender:Male
  • Location:USA
  • Interests:Claculators, Stephen King, Video Games, Calculators, Programming, Calculators, Reading, Calculators... hmm, what else... Ah! Calculators!

  • Calculators:
    Algebra FX2.0, CFX 9850Ga+, Classpad 300

Posted 20 February 2003 - 11:49 PM

Casiomax, with the rom 1.01 version are you just making it 3 color grayscale, or will it also be 5 colors?

#26 Casto Productions

Casto Productions

    Casio Freak

  • Members
  • PipPipPipPip
  • 152 posts
  • Location:IL, USA

  • Calculators:
    TI-83, TI-86, CFX-9850, AFX2.0

Posted 21 February 2003 - 02:08 AM

Is the latest test version of your explorer availible through that link in your first post, or is the latest version somewhere on your site?


PS: The screenshot looks fantastic, looking forward to the finished product :D

#27 C@siomax

C@siomax

    Casio Freak

  • Members
  • PipPipPipPip
  • 229 posts
  • Location:Grenoble, FRANCE

  • Calculators:
    Graph 100 v1.0 and Graph 100+ v1.03

Posted 22 February 2003 - 06:36 AM

why privating rom 1.01 users by the 5 color feature ??
To make my explorer compatible, I'll just have to:

1-program two versions, one using int2, and the other int53
2-or simply just one version which detects the rom version ! :D But I'll need some help on it! I'll try to search something already done like this !

#28 X-thunder28

X-thunder28

    Casio Freak

  • Members
  • PipPipPipPip
  • 192 posts

  • Calculators:
    2 Graph100 (rom 1.02 and rom 1.03 (+) )

Posted 22 February 2003 - 07:25 AM

If you need help, i here :rolleyes:

#29 CrimsonCasio

CrimsonCasio

    UCF Ambassador

  • [Legends]
  • PipPipPipPipPipPipPipPipPipPip
  • 3579 posts
  • Gender:Male
  • Location:USA
  • Interests:Claculators, Stephen King, Video Games, Calculators, Programming, Calculators, Reading, Calculators... hmm, what else... Ah! Calculators!

  • Calculators:
    Algebra FX2.0, CFX 9850Ga+, Classpad 300

Posted 24 February 2003 - 12:26 AM

Check out this post from 2072 in Model Numbers:

I just found a very hold post I've done on the French forum:

You can read very good thing from these addresses to detect the version of ROM:

- 0xC000:0xC
- 0xC000:0xD
- 0xC000:0xF

The value of - 0xC000:0xC is 0x42 for a ROM 1.02, 0x43 for a ROM 1.03 and 0x41 for a ROM 1.01 !!


hope this helps, thank 2072 for the info.

#30 C@siomax

C@siomax

    Casio Freak

  • Members
  • PipPipPipPip
  • 229 posts
  • Location:Grenoble, FRANCE

  • Calculators:
    Graph 100 v1.0 and Graph 100+ v1.03

Posted 24 February 2003 - 12:01 PM

So rom detection is done!! just a little "peekb" :D

http://leneuronez.free.fr/G-EXII.EXE

So rom 1.01 please tell me how many colors you see on the top left/right corner of the screen ... Normally, it should be:

Black
Dark Gray
Medium Gray
Light gray
White

#31 huhn_m

huhn_m

    Casio Maniac

  • [Legends]
  • PipPipPipPipPipPipPipPip
  • 1957 posts
  • Gender:Male
  • Location:Germany / Dresden
  • Interests:Assembler(!!!)
    Computers and Programming
    Operating Systems
    Programmable Calculators
    Maths and everything arround it

  • Calculators:
    FX-82SX / AFX 2.0+ (ROM 1.03) / FX 1.0+ (ROM 1.03)

Posted 24 February 2003 - 03:17 PM

Some thinks I'd like to see in your explorer:

-Make Casio Programs launchable (e.g through a menu)
-Send & Receive of Flash Drives (not the Files)

Is that possible ???

Bye huhn

#32 BiTwhise

BiTwhise

    Casio Overgod

  • [Legends]
  • PipPipPipPipPipPipPip
  • 627 posts
  • Gender:Male
  • Location:Guildford, Surry, UK
  • Interests:Programming, games, consoles, martial arts

  • Calculators:
    FX9700WE, CFX9970G, AFX2.0, Classpad 300

Posted 24 February 2003 - 04:33 PM

Colours seem to work ok.

The program itself, behaves strangely though..
Pushing any button after the password screen will stall the program, and either blank the screen, fill it, or output som strange characters...

#33 BiTwhise

BiTwhise

    Casio Overgod

  • [Legends]
  • PipPipPipPipPipPipPip
  • 627 posts
  • Gender:Male
  • Location:Guildford, Surry, UK
  • Interests:Programming, games, consoles, martial arts

  • Calculators:
    FX9700WE, CFX9970G, AFX2.0, Classpad 300

Posted 24 February 2003 - 04:39 PM

The On/Off key doesn't respond either, leading me to believe there's an error in you interrupt routines..

Do you call the previous interrupt before or after your routines?
In case there are bugs in your routines, you should call the original one in the beginning of your code sequence rather than after..

#34 C@siomax

C@siomax

    Casio Freak

  • Members
  • PipPipPipPip
  • 229 posts
  • Location:Grenoble, FRANCE

  • Calculators:
    Graph 100 v1.0 and Graph 100+ v1.03

Posted 24 February 2003 - 05:44 PM

Don't worry ... this bug occurs on other roms too ... I really don't know why !! Today I've fixed a bug: chen I was reading the time, I used _AL register ... and I use it too in the Sprites drawing funx ... so coord's calc wasn't good and sprites weren't displayed at the good place.

But the bug you said, at least I think, comes from the key detection, not from the video routines. These ones are o.k. I'll try to fix up all these 'interferences' :lol: :)

#35 CrimsonCasio

CrimsonCasio

    UCF Ambassador

  • [Legends]
  • PipPipPipPipPipPipPipPipPipPip
  • 3579 posts
  • Gender:Male
  • Location:USA
  • Interests:Claculators, Stephen King, Video Games, Calculators, Programming, Calculators, Reading, Calculators... hmm, what else... Ah! Calculators!

  • Calculators:
    Algebra FX2.0, CFX 9850Ga+, Classpad 300

Posted 24 February 2003 - 09:53 PM

nice job, keep us informed.

also, I like huhn's idea for BASIC program manipulation/runing.

#36 Casto Productions

Casto Productions

    Casio Freak

  • Members
  • PipPipPipPip
  • 152 posts
  • Location:IL, USA

  • Calculators:
    TI-83, TI-86, CFX-9850, AFX2.0

Posted 25 February 2003 - 03:11 AM

Everyone else seems to be adding their two cents about what they would like to see this do, so I'm jumping on the bandwagon :D

Would it be possible to make it able to lauch ANY of the modes of the calc, and then maybe exit back into the explorer? Then it might be like a different operating system, but one with an interface like windows. Just a thought.

#37 C@siomax

C@siomax

    Casio Freak

  • Members
  • PipPipPipPip
  • 229 posts
  • Location:Grenoble, FRANCE

  • Calculators:
    Graph 100 v1.0 and Graph 100+ v1.03

Posted 25 February 2003 - 09:29 AM

I found from where came the bug !!
But really strange ... it occurs when I read a value from the ports (0x1E for example to get the time ...)
So now gx2 don't bug anymore, but no longer displays time !! Please help me !!

And about all Ur ideas, I'll try to see that and think about it :D
thanx for all guys! :D

#38 X-thunder28

X-thunder28

    Casio Freak

  • Members
  • PipPipPipPip
  • 192 posts

  • Calculators:
    2 Graph100 (rom 1.02 and rom 1.03 (+) )

Posted 25 February 2003 - 09:51 AM

lol . For TCX2, i havnt got this bug when i read a port ! :D

#39 BiTwhise

BiTwhise

    Casio Overgod

  • [Legends]
  • PipPipPipPipPipPipPip
  • 627 posts
  • Gender:Male
  • Location:Guildford, Surry, UK
  • Interests:Programming, games, consoles, martial arts

  • Calculators:
    FX9700WE, CFX9970G, AFX2.0, Classpad 300

Posted 25 February 2003 - 10:43 AM

Kinda hard to help you without your sourcecode..
Reading from the port don't crash the calc directly, so your code must be seen in context ;)

#40 huhn_m

huhn_m

    Casio Maniac

  • [Legends]
  • PipPipPipPipPipPipPipPip
  • 1957 posts
  • Gender:Male
  • Location:Germany / Dresden
  • Interests:Assembler(!!!)
    Computers and Programming
    Operating Systems
    Programmable Calculators
    Maths and everything arround it

  • Calculators:
    FX-82SX / AFX 2.0+ (ROM 1.03) / FX 1.0+ (ROM 1.03)

Posted 25 February 2003 - 02:01 PM

@CrimsonCasio

I didn't mean the Basic Programs. I ment CAS / RUN / MAT ...
like Casto Productions said




0 user(s) are reading this topic

0 members, 0 guests, 0 anonymous users