Win32Forth Version 3.5 Released (LONG) 
Author Message
 Win32Forth Version 3.5 Released (LONG)

Hello Everyone,

Well, the long awaited release of Win32Forth version 3.5 has finally

The change list follows, but to highlight, I have fixed (I hope) the
slow screen
update problem in WinView.  No guarantee, but in the general case,
should update the screen more than ten times faster than it did before.

I have added some console mark and copy capability, as suggested by an
as yet
unnamed person.

General window controls have been generalized and extended.

I hope many of you find something useful in this release.

I know you linux people can use this .EXE file, so if you want the souce

in .ZIP format, let me know, and I will upload all the sources to
ftp site, or taygeta.

Tom Zimmer


July 9th, 1997 - 8:56 tjz=7F
Received and implemented a correction from Pierre Abbat on example=7F
program ROMCALC.F.  FIXED=7F
June 13th, 1997 - 8:36 tjz=7F
Fixed a bug in MoveCursor: in file WINDOW.F.  It was positioning the=7F
cursor one bit too high in the line, and was leaving little cursor
when the cursor was moved.=7F
June 12th, 1997 - 17:54 tjz=7F
Fixed a performance problem in WinView, where it was refreshing the=7F
screen on every keystroke.  Now it ony refreshes the screen when it
June 10th, 1997 - 11:03 tjz=7F
Fixed a bug reported by Elko Tchernev, where a negative allot (an
but legal operation) would fail if passed a value more negative than=7F
-1000. Fixed in FKERNEL.F in the word ?MEMCHK.=7F
June 2nd, 1997 - 8:43 tjz=7F
Fixed a bug reported by Gary Bergstrom, where SEARCH-WORDLIST would
an exception if it was passed a string length of zero.  It turned out
be a problem with the code word "#HASH, which I fixed.=7F
Also fixed a bug in WinView, that was preventing the /B (browse)=7F
commandline option from working.=7F
May 22nd, 1997 - 10:59 tjz=7F
Added shift click to allow highlighting areas of the console that
the visible area of the window, and added backward drag support to
highlighting areas of the console with a backwards click drag.=7F
Added back in Cut text (Ctrl+X) as function CUT-CONSOLE, to highlight
the console, copy it, and then clear the screen. Only cuts the console
no text is currently marked.  If text is marked, then it just beeps.=7F
Added Mark All (Ctrl+A) as function MARK-ALL, to highlight all the text=7F=

in the console.=7F
Added function MARK-NONE to clear the marking of any text in the
May 21st, 1997 - 17:17 tjz=7F
Added mark and copy to the console. Removed Cut, it didn't make sense=7F
with the new mark and copy capability.=7F
Integrated in a modified disassembler, with enhancements to the
point anda  few other instructions.=7F
April 29th, 1997 - 9:32 tjz=7F
Modified the WINDOW.F method LoadMenu: to accept a dummy "parent"=7F
parameter, to make its stack effect the same as the version in MENU.F.=7F=

March 26th, 1997 - 8:45 tjz=7F
Added extended CASE testing from Bozhil Makaveev.  Allows string=7F
comparison, starts_with, and contains testing.=7F
March 20th, 1997 - 15:43 tjz=7F
Improved the Forth console i/o routines, so that QUERY, ACCEPT, etc.
work properly. Allso fixed the F (forth commandline) function in the=7F
de{*filter*} so that it works now.=7F
March 14th, 1997 - 15:49 tjz=7F
Changed the subject window from my own implementation fo listbox, into
normal windows dropdown COMBOBOX.  Also added several additional
to the CONTROLS.F file, specifically:=7F
        ComboControl, ComboListControl, ListControl and GroupControl=7F
All of these have been added to the WINDILOG.F example file.=7F
Added a conditional test to mouse tracking, to cause mosue movements to=7F=

be ignored while tracking, if the system is already in the middle of a=7F=

tracking operation.  It turns out that sometimes it takes a long time
complete a tracking operation, and this could cause crashes if too many=7F=

tracking messages stacked up.  Now it only does the ones it can keep up=7F=

with, and ignores the rest.=7F
March 13th, 1997 - 18:10 tjz=7F
Added several new items to the subject pane, and also added right mouse=7F=

popup menus to several of the subject content panes.  For ecample, you=7F=

can use the right mouse button to display the words in a particular=7F
vocabulary after selecting the vocabulary in the selection pane.=7F
March 11th, 1997 - 18:15 tjz=7F
Things continue to change rapidly.  Currently there is a four pane=7F
window, consisting of Forth console, Edit window, subject selection=7F
window, where you can select: open files, files loaded, vocabularies,
classes.  The final pane, displays the set of things selected from the=7F=

subject pane.=7F
February 20th, 1997 - 8:06 tjz=7F
Removed a bunch of value's that were perpetuating conflicts between the=7F=

new environment and application development. The value's were:=7F
CurrentWindow, CurrentHbar, CurrentAbar, CurrentVbar and CurrentLRbar=7F
Some of these were used in WinView, and would cause crashes, when they=7F=

were changed by an application being developed. It turns out, that they=7F=

were only used in an application anyway, and so, should have been in
application, and not in BUTTON.F.=7F
February 18th, 1997 - 18:35 tjz=7F
Added an option to the perferences dialog, to allow setting how many=7F
lines of hte console window are saved.  A value of zero, saves no
lines, and negative value is converted to 100000, the largest number of=7F=

console lines that can currently be saved.  A posotive value less than=7F=

100000 is accepted as the number of console lines to save.=7F
February 14th, 1997 - 18:14 tjz=7F
Major changes to WinView, to turn it into a Forth system as well as an=7F=

February 11th, 1997 - 9:17 tjz=7F
Upgraded to Jim Schneider's version 1.26 of his 486 assembler. He=7F
corrected a couple of minor bugs.=7F
February 10th, 1997 - 13:38 tjz=7F
Modified WINSER.F, to include some changes from Skip Inskeep, relating
CTS serial control.=7F
Added Menu items to the File menu, for Save all changes across all
loaded, along with a toolbar button to perform the same function.=7F
Added an Unlink menu entry to the Hyper menu, as F10, which is a
for close file.  This is more compatible with the old F-PC editor.  I=7F
also added a Shift+F10 File menu item to save all changes of all files=7F=

and Exit WinView.=7F
February 7th, 1997 - 18:33 tjz=7F
Modified COLORS.F to include additional functions to generate
values.  Renamed RGB to PALETTERGB, Added a new implementation of RGB=7F
that generates a color that is not in the palette, and added
to return the colorref of a specific system palette entry.=7F
Major changes to WinView. You can now execute Forth commands from
the WinView console window at the bottom of the main window.=7F
WinView now keeps all files being edited in memory, until you save
so be sure to save your changes if you want to be able to compile your=7F=

modified files.  I will be adding a saveall function soon.  Still got=7F
some bugs, but its very interesting.=7F
February 3rd, 1997 - 16:44 tjz=7F
Integrated a bunch of changes from Robert Smith into DC.F.  Added=7F
functions for raw drawing to the printer, which Bob needed for his font=7F=

editor.  Additional functions now allow opening the printer either as a=7F=

scaled printing device, a raw printing device, or a isotropic device,=7F
where the image is scaled, but the aspect ratio is maintained.  To
creating a bunch of new drawing words for raw drawing, I have changed=7F
the drawing word names from things like ScaledMoveTo:, to
The way the printer is opened, controls how the drawing words operate.=7F=

this does unfortunately require changing any code you have that=7F
references the printer methods, but I think it is a better solution
the alternative, which was to create a bunch of extra methods with
like RawMoveTo:.  The changes are too numerous to list here, so you
have to look at DC.F to learn about them.  I have changed the example=7F
programs accordingly.=7F
January 31st, 1997 - 16:43 tjz=7F
Added WindowStyle: and ExWindowStyle: methods to the ModlessDialog
This allows the use of some of the extra window styles available in=7F
Windows95 and WindowsNT 4.x=7F
Modified the Find/Replace and FindInFiles dialogs to preserve their=7F
position during an edit, across multiple opens and closes.=7F
Changed the ClassName: method to take an address and length, and
its name to SetClassName:. Several sample programs were edited to
for this name change. Changed the=7F
GetClassName: method to return an address and length, rather than a
terminated string.  Notice however, that I did not change its name.
are their new definitions:=7F
:M SetClassName: ( adr len -- )=7F
                WindowClassName place=7F
:M GetClassName: ( -- adr len )=7F
                WindowClassName count=7F
January 29th, 1997 - 10:14 tjz=7F
Fixed a bug reported by Robert Smith, where CAPS-SEARCH was returning
address that was one more than it should have been, when the string
searched for was found.  This problem was seen when searching for a=7F
string in WinView backwards, and there was more than one occurance of
string in the line where the text was found.  Fixed in PRIMUTIL.F=7F
At the request of Robert Smith, I have added ExtColorObject to the file=7F=

COLORS.F, which is only supported on Windows95 and WindowsNT.  It
more control of the brush being created than the simpler ColorObject.=7F
Also added PenStyle to the instance variables of ColorObject, to allow=7F=

changing the style of the pen being create for the ColorObject.=7F
January 20th, 1997 - 14:21 tjz=7F
Added additional methods to the WinDC class as follows;=7F
PenColor:       \ really a synonym for LineColor:=7F
BruchColor:     \ set the brush/fill color=7F
Ellipse:        \ draw an Ellipse=7F
Arc:            \ draw an Arc=7F
FillCircle:     \ draw a filled circle=7F
Circle:         \ draw a circle=7F
Updated the code for GetTextExtent: to use dynamically allocated
rather than a static buffer.=7F
Here is a very simple example, that allow the console window to be used=7F=

for graphics.  About all you have to do, is create a WinDC object, and=7F=

fill its handle with the DC of the console.  Then any of the graphic=7F
operations can be used on that WinDC object, as seen here;=7F
    WinDC theDC=7F
    : test  ( -- )=7F
            CONDC PutHandle: theDC  \ initialize theDC to the console=7F
                                    \ window's DC=7F
            0 0 500 500 WHITE FillArea: theDC=7F
            BLACK            LineColor: theDC=7F
              0   0             MoveTo: theDC=7F
            100 100             LineTo: theDC=7F
            BLUE            BrushColor: theDC=7F
            50 50 20        FillCircle: theDC ;=7F
Fixed several extra stack item problems in WINVIEW.F.=7F
January 20th, 1997 - 9:11 tjz=7F
Fixed a bug in WINDEMO.F, reported by Phil Monson. He informed me I had=7F=

inverted the polarity of the origin offset BIT-ORIGINY.  It was causing
4our pixel droop on one side of the display.=7F
He also reported a problem with color selection in WINDEMO, apparently=7F=

only the last color used is shown when printing. This problem has also=7F=

been fixed in DC.F.  Now I save the color reference of the color being=7F=

selected, instead of saving the color object itself.  It seem that some=7F=

applications, particularly WINDEMO.F, use only a single color object,
change the color within the object.=7F
January 8th, 1997 - 10:52 tjz=7F
Updated STARTUP.TXT to include additional information on these latest=7F
changes as described below.=7F
January 7th, 1997 - 15:25 tjz=7F
I have noticed that the page breaks and page numbers displayed in
are generally accurate only after the first page has been printed. =

is because the lines per page is calculated in DC.F by the code doing
printing.  What this means, is simply that if you print using the
six (6) lines per inch, you will see page breaks in your document that=7F=

are correct.  If however, you change the line per inch to something
two through twelve, then the page breaks shown won't be correct until
have at least printed one page of the document.  I haven't found an
way to fix this, as the printer needs to be open at the time that the=7F
lines per page is calculated.  I will continue to look into this, and=7F
apply a solution when I can find one.=7F
January 6th, 1997 - 18:25 tjz=7F
Added page breaks to WinView.  Also now display the page number beside=7F=

page breaks in the left border.  The left border automatically resizes
be wide enough to hold the page number of the highest page in the
file. Fixed a bug in DC.F, reported by Robert Smith.  I wasn't=7F
maintaining the #PAGES properly, so that page numbers would be display
the printed pages properly.  I also adjusted several things in DC.F, to=7F=

make the footer font larger, to right justify the page numbers
and to display the filename on a second footer line by itself, rather=7F
than trying to center it between the date and the page number.=7F
January 3nd, 1997 - 15:00 tjz=7F
Enhancements to OOP.=7F
    Added 'short' (16bit) instance variables. it was a missing datatype=7F=

        for structure creation=7F
    Added Bit field instance variables to the Record structure within=7F
        classes.  Bit fields are supported in 'byte', 'short' and 'int'=7F=

        instance variables. In the example below, an 'int BinaryBits'
        created, then the bit fields within it are defined.  Be sure to=7F=

        create exactly enough bit fields (8, 16 or 32) to fill the=7F
        instance variable you are defining, or a warning will be
    Added ';RecordSize: SIZEOFRECORDNAME' for ending the definition of
        record, and defining a constant that is the size in bytes of
        record just created. This is handy when initializing structures=7F=

        as shown in this example code=7F
        :Object DCB  <Super Object=7F
        Record: AddrOf=7F
                int   DCBlength=7F
                int   BaudRate=7F
                int   BinaryBits        \ a 32bit cell of bit fields=7F
              1 bits  fBinary           \ define each bit field from=7F
              1 bits  fParity           \ low to high in sequence=7F
              1 bits  fOutxCtsFlow=7F
              1 bits  fOutxRtsFlow=7F
              2 bits  fDtrControl=7F
              1 bits  fDtrSensitivity=7F
              1 bits  fTXContinueOnXoff=7F
              1 bits  fOutX=7F
              1 bits  fInx=7F
              1 bits  fErrorChar=7F
              1 bits  fNull=7F
              2 bits  fRtsControl=7F
              1 bits  fAbortOnError=7F
             17 bits  fDummy            \ fill up the remaining bits=7F
                short wReserved=7F
                short XonLim=7F
                short XoffLim=7F
                byte  ByteSize=7F
                byte  Parity=7F
                byte  StopBits=7F
                byte  XonChar=7F
                byte  XoffChar=7F
                byte  ErrorChar=7F
                byte  EofChar=7F
                byte  EvtChar=7F
                short wReserved1=7F
        ;RecordSize: SIZEOFDCB=7F
        :M Reset:       ( -- )          \ clear the DCB structure=7F
                        AddrOf SIZEOFDCB erase ;M=7F
        :M ClassInit:   ( -- )=7F
                        ClassInit: super=7F
                        Reset: self     \ create structure as Reset=7F
Modified WINSER.F to contain some enhancements suggested by Skip
The various fields of the DCB now become instance variables of the DCB=7F=

structure.  Note, that bit fields are automatically scaled up to their=7F=

appropriate bit within the larger byte, word, or int (cell) field.=7F
                DCB.AddrOf rel>abs=7F
                Call GetCommState ?win-error=7F
                CBR_9600   Put: DCB.BaudRate=7F
                8          Put: DCB.ByteSize=7F
                NOPARITY   Put: DCB.fParity=7F
                ONESTOPBIT Put: DCB.StopBits=7F
One really nice thing about the OOP solution, is that it automatically=7F=

uses the correct memory operator for the field specified, eliminating=7F
possible mistakes by the programmer, who might accidently use a long=7F
store (!=3D32bit) on a byte (C!=3D8bit) field.=7F
January 2rd, 1997 tjz=7F
Enhancements to OOP.=7F
    Created a new class word CLONE, to be used in place of the current=7F=

    word CLONE:.  I dislike CLONE: because if requires the existing=7F
    object name to immediately follow it.  This Is just too confusing.=7F=

    The new syntax for CLONE is I think much clearer. Use the following=7F=

    syntax to create a clone of an object;=7F
       ' ExistingObject Clone NameOfNewObject=7F
    I have commented out the definition of CLONE:.=7F
December 30th, 1996 - 13:55 tjz=7F
Installed Jim Schneider's 1.241 version assembler into Win32Forth.  He=7F=

had minor corrections to my latest corrections to the assembler.=7F
Per a request from Jim Schneider, I have added a /IMAGE command to the=7F=

wrapper, so that a particular image filename can be specified on the=7F
commandline.  The wrapper parses the commandline looking for /IMAGE. =

it is found, it attempts to load the image filename following /IMAGE=7F
instead of the image file matching the executables name.  If there is
image, or if the image file doesn't exist, then the wrapper tries to=7F
load the image out of the executables resource file.  If this fails an=7F=

error dialog is displayed and the program terminates.  Added a
for '/IMAGE' to the kernel, that just picks up the word following and=7F
discards it.=7F
Added additional code to ?DEFEXT, to make it skip any decimal points
might occur within a directory path preceeding the filename.=7F
December 19th, 1996 - 13:53 tjz=7F
Fixed a long standing problem with callbacks.  I was activating=7F
Win32Forths callback message processing, before I was installing the=7F
default callback message processor.  That meant, that if an abort would=7F=

occur before the default processor got installed in the file GENERIC.F,=7F=

then Win32Forth would hang.  It was simple to fix, I just moved the=7F
default callback processof down into WINLIB.F, where it belonged.=7F
At the suggestion of Bill Muench, I have made left bracket '[' and
bracket ']' defered words.  This simplifies the compiler writters task.=7F=

Fixed a bug reported by Mark Amerman, floating point numbers were being=7F=

converted twice, and were put on the floating point stack twice.  This=7F=

was a holdover bug from a fix I made to method detection.  I have now=7F
fixed it again, in a more general way, so it should now b working=7F
December 16th, 1996 - 10:25 tjz=7F
Added a variable LAST-LINK to the kernel, to correct a long standing=7F
problem with REVEAL.  Until today, REVEAL would use the contents of=7F
CURRENT to determine which vocabulary to reveal the most recent=7F
definition into. This caused problems, if you wanted to change the=7F
CURRENT while compiling, since semicolon would come along, and reveal
definition being built, into the wrong vocabulary.  This has been=7F
corrected, by saving the hash bucket address of where to put the name=7F
that is being created in LAST-LINK.  Then this saved value is used to=7F
REVEAL the name into the vocabulary.=7F
December 13th, 1996 - 9:51 tjz=7F
I removed the detector in _FIND-TEXT-AGAIN for the control key being=7F
pressed, where it would search backwards.  I found, after long use,
this was more of a hindrance than a help.  So, if you use Control+F3,
picks up the word under the cursor, and searches forward rather than=7F
backward.  This makes it possible to use searches in macros, where
the backward search was messing things up.=7F
December 10th, 1996 - 16:21 tjz=7F
Added SOURCE-POSITION to the kernel, so I will have a pointer to  where=7F=

the source file currently being loaded is loading from.  This is useful=7F=

for the creation of index files for an optimizing compiler derivative
Tom Almy's ForthCMP compiler, that I'm working on.=7F
December 9th, 1996 - 8:43 tjz=7F
Added a function to the wrapper called "SetCharWH", that allows certain=7F=

people that are experiencing problems with Win32Forth's cursor=7F
positioning in the console to adjust the character width that
will use.  There seems to be a problem with certain countries, where
ANS character set doesn't appear return an average character width that=7F=

is correct.  This is not an ideal solution, but it will help some
December 6th, 1996 - 17:37 tjz=7F
Added FFILE-POSITION to the wrapper, and the kernel, so I could
the current input stream file offset when compiling.=7F
November 27th, 1996 - 10:05 tjz=7F
Modified DIS486.F by adding SHOW-NAME, to allow easier modification of=7F=

the display symbol functionality for the optimizing compiler I am
on. This work is base on Tom Almy's ForthCMP.=7F
Make a small correction to the Jim Schneider's assembler as follows;=7F
: [esp]? ( does it have only a base of esp? )=7F
        ( -- flag )=7F
        has-base? has-s-i-b? 0=3D 4 match-r/m? and and=7F
        a16bit? 0=3D and ;        \ November 27th, 1996 - 15:57 tjz added=

When the assembler was asked to assemble a 16bit indirect instruction=7F
like this;=7F
        mov     0 [si], ax=7F
It would get confused, and assemble an SIB byte in the middle of the=7F
instruction when it shouldn't.=7F
November 26th, 1996 - 10:04 tjz=7F
Changed the default state of flag SYS-WARNING? to FALSE.  Users don't=7F
need to be warned about using system words in their applications,
they are going to TURNKEY them, and TURNKEY already warns that you must=7F=

be in SYS-WARNING-ON before TURNKEY will be allowed.=7F
November 25th, 1996 - 11:04 tjz=7F
Modified locals support, to include the ability to add a comment to a=7F
local variable stack picture for text that comes from the input stream,=7F=

in the following form;=7F
: test  { parm1 parm2 \ parm3 'text_from_input_stream' -- }=7F
        bl word ...;=7F
Parms one and two are initialized from the stack, parm3 is a local=7F
variable that is not initialized, and 'text_from_input_stream' is just
comment about text that is read from the input stream bo this word. =

comment text must start with a tick (').=7F
November 18th, 1996 - 16:20 tjz=7F
Fixed a minor bug in the support for HTML links within a file.  I made
change so that a link does a file push, opening a new copy of the file,=7F=

so that a back hyper link, or a close file takes you back to the
link instead of leaving you with no file open.  This is more consistent=7F=

with the way other hypertext browsers work. HTML support is still quite=7F=

limited, but sufficient for creating limited documentation using HTML.=7F=

Modified printing in WinView, to ignore any HTML it encounters when=7F
WinView is in browse mode.=7F
November 5th, 1996 - 15:30 tjz=7F
Modified _MSGFIND again, to fix a bug where floating point numbers were=7F=

incorrectly identified as objects.=7F
October 30th, 1996 - 15:04 tjz=7F
Modified WinView to tell user to use "Save MAC/UNIX file as PC" menu
instead of auto converting in memory when hte file being loaded has
than 4000 lines.  The time to convert in memory was just too long, and=7F=

conversion during the save was much faster.=7F
Added UNDER+ as it has been described on comp.lang.forth lately. UNDER+=7F=

adds the top stack item to the third stack item.  So moving a string=7F
address forward one character and reducing its length by one character=7F=

would be done something like this;=7F
        ( a1 n1 )   1 UNDER+ 1-  ( a1+1 n1-1 )=7F
October 28th, 1996 - 9:15 tjz=7F
Received a bug report and correction from Stephen M. Brault, for the
WINLIB.F.  It seems I wasn't doing full error checking on a failed=7F
library call.  Stephen submitted a simple fix, which has been
October 25th, 1996 - 10:44 tjz=7F
Bill Muench found a bug.  When "-1" is defined as a constant, entering=7F=

any negative double number starting with "-1.", would result in a=7F
undefined object error.  Fixed by performing a valid number check in=7F
_MSGFIND before trying to perform the dotted notation testing.  This=7F
introduces a limitation, in that no combination of "Object.Message" is=7F=

allowed to be convertable into a valid double number.=7F
October 24th, 1996 - 9:12 tjz=7F
Found that the "Adjust Forth Dictionaries" menu item and general=7F
technique doesn't work under Win32s, so I have abandoned the automatic=7F=

rebuild technique, in favor of a small text file that walks the user=7F
through the process of rebuilding Win32Forth with new dictionary sizes.=7F=

This file is browsed when the menu item is invoked.=7F
October 23rd, 1996 - 8:52 tjz=7F
Deleted the lines from SEE.F that define and reference the word=7F
A_SYNONYM. The new method for making synonyms, doesn't need this word=7F
October 11th, 1996 - 11:13 tjz=7F
Split out the WORDS display of Windows constants, to be done by the
CONSTANTS.  I found it irritating to have windows constants (often
displayed at the end of a WORDS display.  Now, WORDS just informs that=7F=

the word CONSTANTS should be used to display Windows constants.=7F
October 9th, 1996 - 13:20 tjz=7F
Removed the auto print feature from WinView.  That is you used to be
to press the printer button on the toolbar, and have the document
without prompting if you had already printed at least once during the=7F
current edit session.  I found this to be unreliable, and so it has
removed.  To put it another way, I couldn't fix it, so I took it out.=7F
Added a bunch of additional HTML tags to WinView.  Most of them are=7F
dummys, but WinView can now handle simple html documents.=7F
October 9th, 1996 - 15:00 tjz=7F
Found a bug in WinView, where the print button on the toolbar would
a crash the second time it was used.  Posted an updated Win32For.TXT
containing the series of things that need to be done to fix the bug,=7F
rather than post an updated system. =7F

Sat, 15 Jan 2000 03:00:00 GMT  
 [ 1 post ] 

 Relevant Pages 

1. First Update to Win32Forth 3.5 Released

2. Win32Forth Version 3.2 Released (long)

3. Win32Forth 3.5 slow to compile

4. Win32Forth Version 3.2 Released (short version)

5. Compiling an OBJ module into a basic program in version 3.5 PowerBasic for DOS

6. FST Modula-2 version 3.5 availability

7. ada-mode 3.5 for Emacs released

8. Anyone have version 3.5 of ac3d ???

9. Websh 3.5 Released

10. tcl DP versions 3.5 & 4.0

11. Win32Forth version 4.0 Released

12. Product Scope 32 Bookmarks Version 3.5 is officially released!


Powered by phpBB® Forum Software