QPC II Versions
---------------

1.50  First released version
      (Version number synchronized with QPC 1)

1.51  Changed SER-close routine because crappy Win9x didn't really close the 
      ports with the old one.

1.52  Ctrl-key gets released after using Ctrl+ESC
      New option "Leave ports open" in serial configuration. When enabled QPC 
      doesn't return once allocated SER ports to Windows. This was requested
      because Win9x can need ages (which means 1 second) for opening a serial 
      port. That's apparently too slow for some applications.

1.53  New command QPC_SYNCSCRAP. It starts a job which checks for changes in
      both the SCRAP (so the menu extension has to be loaded) and the Windows
      clipboard (about 2 times per seconds) and synchronizes the contents if 
      necessary. Only text is supported, no bitmaps or whatever.

1.54  Cleaner memory management resulting in better mirror-memory emulation.
      SER4 finally works again
      *** Needs at least SMSQ/E V2a93

2.00  (Prerelease)
      New, up to 20% faster emulation kernel.
      The configuration block is now level 2. The old CONFIG and QCONFIG tools
        can't be used anymore.
      French configuration menus and messages now included.
      AltGr is now supported natively. Still it can be configured to Alt or
        Ctrl (that's for you, Thierry).
      Implemented new GD2 driver with 16-bit colour mode.
      Added some accelerated graphics functions for 16-bit mode.
      Implemented window-mode! Supported desktop modes are:
        8 bit (QL colour only), 15 bit, 16 bit, 24 bit and 32 bit (so basically 
        all I know of except 4 bit which isn't supported by DirectX anyway). 
        You should have enough available VRAM for a copy of the QL screen. 
        Alternatively AGP systems can use parts of main memory.
        The window can be scaled up. But use this on own risk, this MAY slow 
        down the system noticeably or even render it unusable, depending on your 
        graphic card and its drivers.
        Switch between fullscreen and window mode with CTRL+SHIFT+F12.
        The window can be configured to stay on top. This can be altered during
        a session using the system menu in the upper left corner of the window
        or in the task bar.
      All resolutions can be specified (limitations: must be more than 512x256 
        and the X resolution must be dividable by 32). The window will be in 
        exactly the desired size. In fullscreen mode the next bigger supported 
        resolution is chosen but SMSQ/E remains limited to the set resolution.
      Mouse position is now adapted from Windows. This works very smoothly :-)
        As a result all mouse settings (speed etc. except the wake factor) 
        within SMSQ/E are useless now.
      The floppy drive gets released when all files on it are closed.
      All QPC functions and the audio-CD driver are now implemented as a thing.
      Most SMSQ/E floating point functions are now accelerated using the PC FPU.
      PAR device can now be connected directly to a Windows printer, so network
        printers can be used.
      *** Needs at least SMSQ/E V2.98

2.00  (Prerelease 2)
      FLP format works again.
      Screen stretching is prohibited on PCs whose hardware is not capable of
        doing the job.
      Many fixes and improvements in the screen driver.
      Fixed AltGr-key behaviour when configured to Alt/Ctrl.
      Fixed saving-bug in config dialog if more than 16MB of ram was requested.

2.00  (Prerelease 3)
      Redesigned screen driver "kernel". Much cleaner code, much more 
        reliable, smoother and faster.

2.00  (Final!)
      Fixed windowed mode for 24-bit desktops.
      Fixed behaviour of capslock LED.
      Fixed small bug in FPU-code.
      Re-implemented serial ports. CDEOF works now. Ignore-handshake on 
        OPEN-call works, too, but a SER_FLOW call afterwards has no effect in 
        this respect.
      Much more complete character translation in scrap<->clipboard function.
      Added DOS-device for native access to PC drives. Currently DOS1_ 
        corresponds to C:\, DOS2_ D:\ etc. This version does not support the 
        renaming of files.
      Fixed small problem in illegal address handler.

2.01  DOS-Device:
        Small bug in conjunction with DATA_USE etc. fixed.
        Increased filename limit to 36 characters. It was accidentally set to 32.
        Fixed EOF command.
        Can now open read-only files.
      SER-Device:
        Now there are 8(!) fully functional serial ports (ser1-ser8).
        Small but quite serious bug fixed. Could crash the emulation.
        Parity handling fixed.
      New config option "Disallow closing QPC through the system menu" (only
        available through MenuConfig, NOT the startup config dialog). If set to 
        "Yes", QPC can only be closed through "CTRL+SHIFT+SCROLL LOCK" and the 
        QPC_EXIT command.
      3rd mouse button works again.
      *** Needs at least SMSQ/E V2a98

2.02  Fixed bug which limited the range of SMSQ/E's floating point functions.      
      DOS-Device:
        Open routine (bug introduced in 2.01) fixed.
        Date conversion routine fixed for dates in the far future.
      Improved mirror memory emulation for Win9x. This should solve some
        QLib problems.
      WIN_DRIVE with empty string doesn't crash the machine anymore.
      Printer port now remains open until all data is printed, even if PAR
        was already closed.
      *** Needs at least SMSQ/E V2b98

2.03  Fixed problem with 0x0 sized windows in 16bit mode.

3.00  New main config dialog reflecting the following changes:
        - "Keep aspect ratio": if set the window is always in the correct
          X/Y ratio for the current resolution. Can also be changed on
          runtime using the system menu.
        - X and Y size of the window can now be given. The values specify
          the client area (= SMSQ screen), excluding border and title bar.
        - Power management mode: if selected QPC does only use as much 
          processor power as really needed. Especially useful for battery 
          powered laptops, but I strongly advise to keep it selected on 
          desktops, too (this way other processes can get more processor 
          power)! The feature is still sort of experimental, tell me
          your experiences.
      The configuration dialog now has a button in the task bar.
      The SMSQ config block has been restructured.
      When running QPC in a window it's now always placed at the center on 
        startup.
      Disappearing cursor when starting in fullscreen mode and later switching 
        to windowed mode fixed. This is a quite delicate matter, I just hope 
        this doesn't make old problems reappear (mouse trails and similar 
        stuff).
      Revised SER and PAR driver, they should be much more reliable now.
      Added PAR2-PAR4. SER/PAR config dialog extended accordingly.
      Added new "use filter" option to PAR ports. This will allow 3rd party
        filters to be incorporated into the print process. The check boxes will
        automatically get enabled when a filter is detected on the system.
        The option is only available when "printer" is selected for output.
      Bugs in SER_CDEOF fixed.
      Another small bug fix in floating point routines.
      One can now supply a base directory for the DOS device drives. This then 
        acts as the root directory for the drive. Valid entries are normal 
        directory and UNC names, e.g. "C:\WINDOWS\" or "\\MARCEL\SHARE\". 
        Using the latter variant you can even access drives of other PCs over a 
        network! It's also useful to get around the SMSQ/E filename size limit.
        There's a new dialog available to adjust the paths.
      DOS device now converts characters which are illegal on PC file systems
        ("*/:<>?\| and some more stuff) to some other characters and vice 
        versa.
      DOS device's make_dir command now correctly returns err_fex if the 
        directory already exists.
      Return code of DOS device's set date function fixed.
      OPEN_IN on DOS device files fixed.
      Support for wheel mice added. 3 Alt+up/down get stuffed into the keyboard
        queue for every wheel tick, thus enabling many PE applications to
        immediately profit from it. Windows 95 implements the wheel 
        differently from all other versions and is not supported. Furthermore, 
        some cheap no-name wheel mice might not generate the necessary messages
        either.
      QPC_MINIMIZE/QPC_MAXIMIZE/QPC_RESTORE SBASIC procedures added to control 
        the QPC window.
      QPC_NETNAME$ SBASIC function added to get the network name of the current 
        PC. Can be used to distinguish between several PCs in a boot program 
        etc.
      QPC_EXEC filename [,parameters] SBASIC procedure added to start external
        Windows programs or files, e.g. "QPC_EXEC 'notepad','c:\text.txt'" or
        "QPC_EXEC 'c:\text.txt'" to start the default viewer for txt-files.
      QPC can now emulate the original 512x256-QL screen at $20000 in all
        resolutions and colour depths. This feature can be controlled using the
        QPC_QLSCREMU command. -1 as parameters enables the automatic mode 
        (emulation depends on the last MODE call), 0 disables the emulation 
        (this is the default), 4 and 8 force the emulation to the specified 
        colour mode. In QL colour modes (4/8) the emulation always uses the 
        same mode, only the 16bit mode can emulate both independently.
        With this feature some older applications do work quite seamlessly again.
      Fixed bug that caused the BGCOLOUR command to crash under Win9x.
      Removed QPC_PEEK[B,W], QPC_POKE[B,W], QPC_IN[B,W] and QPC_OUT[B,W] commands.
      Added shadows to PE windows in 16bit mode.
      CD_INIT didn't return a proper exit code when called for the 2nd time.
      *** Needs at least SMSQ/E V2a99

3.01  The set clock routine could be one hour off on NT/2000/XP.
      Fixed WIN_DRIVE and WIN_DRIVE$ in combination with too long filenames.
      Fixed WIN_WP.
      Write accesses to read-only WIN drives now immediately return an error.
      Fixed problems with QPC_EXEC under Win9x.
      *** Needs at least SMSQ/E V2b99

3.02  Fixed bug in DOS device iob.smul routine.
      Fixed bug in direct DOS-device to screen loads.
      Completely rewritten filename translation mechanism in DOS device.
      SER close problem fixed.
      Number of key presses for one mouse wheel tick now depends on the global
        Windows setting (lines per tick).
      iof.xinf now correctly returns the ioi_remv flag for WIN drives.
      Fixed bug in accelerated screen move function in conjunction with 
        very small areas.
      Exchanged the old beeper emulation (which used the PC speaker) with a new
        one that uses Windows' DirectSound interface. This way NT/2000/XP have 
        now full beeper support, too! I've decided to use a square waveform but 
        with rounder edges which is a good compromise between the original "hard" 
        sound and "save the loadspeakers" ambitions. The exact frequencies and 
        timings were measured using a Hermes fitted QL. The algorithm is based 
        on tests and on an original 8049 disassembly. All parameters including 
        "fuzzy" and "random" are now supported.
      *** Needs at least SMSQ/E V2c99

3.03  DOS device: files that have too long names and are thus unaccessible 
        anyway are now suppresed in directory listings. This way QPAC2's 
        "whole tree" option works reliably again.
      DOS directory functions now a bit more compatible to the other drivers.
      DOS_DRIVE and DOS_DRIVE$ commands added. They work like the WIN_ functions.
      Implemented DOS commands (USE, DRIVE, DRIVE$) as thing ("DOS Control").
      Fixed free/total sectors information of STAT and DIR for large drives.
      Beep emulation can now be configured to on/off/automatic. Furthermore the
        volume can be set. Both options are only accessible by directly 
        configuring the SMSQE.BIN file (using MenuConfig for example).
      Fixed problem on some systems where QPC halted on screen output when 
        minimized.
      *** Needs at least SMSQ/E V2d99

3.10  Screen driver:
        - Added Aurora compatible 8 bit display mode!
        - Minor changes that may solve some stability problems.
      DOS device:
        - Fixed bug in iob.flin trap when the buffer is too small (file pointer 
          was off by one afterwards).
        - Fixed bug with file names that had a space as last character.
        - It couldn't go into some directories. Fixed.
        - Added Win<>SMSQ character translation to DOS_DRIVE and DOS_DRIVE$.
        - Converted most code to C for easier enhancements/maintenance. 
        - OPEN_DIR on a file now opens the directory the file is in (like WIN).
      Improved mouse handling when window is zoomed.
      New commands: PAR_PRINTERCOUNT, PAR_PRINTERNAME$, PAR_GETPRINTER$ and
        PAR_SETPRINTER.
      Introduced command line options:
        -? or -h: Show available options
        -os file: Load operating system from given file instead of SMSQE.BIN
        -cmdline "Text": Pass a text string to new SMSQ/E function QPC_CMDLINE$
      Fixed switching to background priority when getting minimized.      
      Fixed sound volume configuration option
      *** Needs at least SMSQ/E V3.00

3.11  Improved free/total disc space calculation on DOS device.
      Name of DOS drive now reflects the real path. If it points to a drive
        this is directly returned (e.g. "C:\"), if it points to a path the last
        directory name is returned (e.g. "DIR" for "C:\QPC\DIR").
      OS command line option now also accepts SMSQE.BIN files in
        directories other than the one QPC2.EXE is in.
      Fixed slightly unnormalised floating point representation of negative
        powers of 2.
      *** Needs at least SMSQ/E V3.01

3.12  Small fix in DOS device to make it even more compatible with WIN.
      SER ports can now be connected to COM ports higher than COM8.
      New command QPC_WINDOWTITLE to amend the title of the QPC window.
      Fixed a problem with relative WIN path names.
      *** Needs at least SMSQ/E V3.05

3.13  Fixed detection of removeable WIN drives (broken in 3.12)

3.20  Completely revised screen driver for improved stability (rock stable!).
      Support for the SMSQ/E Sampled Sound System!
      Changed BEEP system to work around problems with some sound drivers.
      Unified WIN and DOS configuration dialog.
      New sound configuration dialog.
      Switching Windows jobs using ALT+TAB doesn't send a TAB to SMSQ/E.  
      Now also ignores some extended keys of multimedia keyboards.
      Fixed handling of SYS_CAPS capslock system variable.
      Changed MOVEM 68k command to reflect behaviour of pre-68020 CPUs.
      For simplicity now also supports MOVEC VBR,x 68k command.  
      Many code changes due to change of built tools (compiler+assembler).
      *** Needs at least SMSQ/E V3.07

3.21  Fixed automatic saving of the "Don't show config dialog on next start"
        option.
      Added "Default printer" option to PAR configuration dialog.
      New command PAR_DEFAULTPRINTER$ to get the name of the default printer.
      New commands SER_GETPORT$, SER_SETPORT to get/set the COM port.
      Cleaned up internal exception handling.
      Windows XP SP2 compatible.
      Emulation 10-15% faster on a P3 (mileage on other processors may differ).
      *** Needs at least SMSQ/E V3.08

3.22  Fixed QPC_EXIT command (bug introduced in 3.21).
      Restored compatibility with older Windows versions (also broken in 3.21).

3.23  PAR dialog sometimes didn't show the actual settings.
      Changed printer enumerations so that unavailable network printers don't
        delay everything.
      Slightly improved compatibility with Wine (/Cedega) Windows emulator.
      Removed small bug in new implementation of MOVEM 68k command.
      If "Keep aspect ratio" is selected window size snaps to exact multiples
        of SMSQ/E resolution when near that size.
      Umlauts in registration information are now handled correctly.
      SMSQ/E time could be wrong in the first second QPC is run.

3.30  Full IP (TCP/UDP) support! Mostly compatible to uQLx TCP/IP interface.
      3 little words: Fastest! QPC! Ever! Up to 40% faster than 3.20!
      Yet another fix in the PAR dialog. Hope that was it now.
      Partially re-designed QPC<->SMSQ/E interface. Old SMSQ/E version are 
        therefore completely incompatible!
      Raised number of PAR ports to 8. Still only 4 are configurable through 
        the config dialog though, power users with more than 4 printers need to
        use PAR_SETPRINTER or directly configure the SMSQE.BIN file.
      Ignores all keys while one of the Windows keys is pressed.
      New command QPC_WINDOWSIZE x,y to set the size of the QPC window.
      New commands x=PAR_GETFILTER(port) and PAR_SETFILTER port,x to read/write
        the "use printer filter" flag of a PAR port.
      Fixed some repaint problems (black screen).
      Does not crash anymore when sound is set to "disabled".
      Fixed problem with volume control sliders.
      Fixed bug in 8-bit accelerated screen routines.
      Fixed problem with screen accesses that crossed the VRAM border.
      *** Needs at least SMSQ/E V3.09

3.31  Some cosmetic fixes in the dialogs.
      The "browse directory" dialog in the DOS device preferences now defaults 
        to the current setting.
      Fixed recently introduced bug in ABCD command.

3.32  QPC's task button can be transferred to the notification area ("system 
        tray"), either permanently or temporarily when QPC is minimized.
        Option can only be changed by directly configuring SMSQE.BIN.
      Fixed problem with keyboard entries when QPC was minimized by clicking
        the task bar button.
      Bug in CHK command fixed, thanks to George Gwilt. Doesn't seem to be a 
        very popular command, this bug has existed for over 9 years without 
        anybody noticing!
      Increased maximum .WIN-filename length to 255 characters.
      Increased maximum DOS-base path length to 199 characters.
      Restrictions for DOS-base path names lifted.
      Windows file attributes now returned in DOS device file headers.
      SMSQ/E version is shown in configuration dialog title.
      Holding CTRL while using the mouse wheel stuffs ALT+left/right.
      *** Needs at least SMSQ/E V3.12

3.33  New emulation core! All 68020+ addressing modes and common instructions 
        supported!         
        Many thanks to George Gwilt, who did the initial work, it wouldn't
        have happened without him.
        Also thanks to Franois Van Emelen who once gave me a QXL card which 
        was very useful for this development.
      Fixed closing fullscreen QPC through system menu.
      Implemented proper Numlock behaviour.
      Fixed used/free disc space display on DOS drives.
      Works around 2GB used/free space display limitation on Win95OSR2,98,ME.
      
3.34  Vista compatibility fix (re-implemented inet_network TCP/IP function).
      Small terminal server (remote desktop) tweaks.
      Printer filter not called anymore when no data has actually been printed.
      Fixed stereo sound in SMSQ/E sound system.
      Fixed problem in ADDX command, thanks to George Gwilt.
      Crash in screen driver fixed.
      Crash in DOS device with unusual file dates (e.g. year 2087) fixed.
      Trace and address exceptions now use 68020+ stack frames