QPC2 version history

Please note that if it says “Needs at least SMSQ/E Vx.yz” this often means that the mentioned improvements can only be experienced with that version, it doesn’t necessarily mean that QPC got incompatible to earlier versions. More changes that might affect QPC can be seen in the SMSQ/E version history.

5.00  Converted most parts from assembler to C, except the emulation core
      First version that is not compatible with Windows 95 anymore :-o XP or later is
        needed now
      Finally a new DirectX11 based screen driver! Much more compatible and faster
      Old screen driver still included for WINE or other situations
      QPC_QLSCREMU emulation now goes both ways, making it compatible with basically all
        old software
      Improved FLP driver including a new write cache for very fast disc writes
      DOS driver can now save QL header information like QemuLator
      DOS driver translates file extension separator "_" vs. "." (configurable)
      DOS driver transparently translates illegal Windows filenames like "con" into "con_"
      DOS driver moves files when creating directories like the SMSQ/E drivers
      DOS driver returns the correct size of sub-directory entries within directories
      DOS driver returns all filenames in correct upper/lowercase spelling
      DOS driver RENAME now also works on XP
      WIN/DOS/FLP configuration now has auto-complete edit fields
      Some improvement to power management
      Improved BEEP emulation for short beeps (too late for requester Lee Privett, RIP)
      Implemented 68000 STOP instruction
      Scan all monitors for biggest resolution, not just primary
      Added some missing CTRL+key keyboard combinations
      WIN/DOS/FLP_DRIVE commands now support environment variables, too
      Fixed IP_SENDTO/IP_RECVFM in IP driver (thanks to Martin Head)
      Implemented (mostly) QSOUND compatible AY interface, but with 2 AY chips
      First digitally signed QPC. This costs actual money, let's see if I can keep it up

4.05  Implemented IOF.LOAD and IOF.SAVE in IP driver
      Fixed some errors in IP driver (thanks to Wolfang Lenerz)
      Fixed setting of file dates in DOS device
      Fixed KEYROW value of left Ctrl key (Windows keyboard driver)

4.04  Completely rewrote DOS device in C
      Fixed a problem in the DOS device in conjunction with filenames with a space at the end
      Finally implemented RENAME support for DOS devices on Windows Vista and above!
      Respect "Keep aspect ratio" when going into fullscreen mode. This prevents double pixels
        on screens that are not divisible by 8 in x direction (e.g. 1366x768)
      Workaround for Windows problems with COM10 and higher
      Fixed SER_GETPORT$ for COM10 and higher
      Fixed formating DD floppy images
      Changed KEYROW to return 0 when QPC is not active (Windows driver)
      *** Needs at least SMSQ/E V3.26

4.03  Fixed zero flag handling in ADDX.L, SUBX.L and NEGX.L (thanks to Wolfgang Lenerz).
      Fixed zero flag handling in NBCD and memory variants of ABCD and SBCD.
      Fixed edge cases in flag handling of ASR, LSL.
      Changed SBCD to also conform to a real CPU when one or both operands are not BCD.

4.02  Fixed QPC_VER$.
      Added workaround for CTRL+ALT+SHIFT+TAB soft reset to work on Windows Vista and above.

4.01  Fixed configuration when config dialog is suppressed on startup.

4.00  Added new keyboard driver that uses the Windows Keyboard layout. Old
        driver is still available for compatibility reasons.
      Added new fullscreen mode that doesn't allow to change the screen
        resolution anymore but should behave much better.
      New QPC.INI configuration file that overrules the SMSQE.BIN settings.
      Position of QPC window is now remembered for next start (in QPC.INI).
      New energy mode "suspend" which disables the emulation when QPC is minimized.
      Added support for floppy disc image files.
      Vista/Windows 7 compatibility fix.
      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.
      Crash in DOS device with unusual file dates (e.g. year 2087) fixed.
      DOS device can now list filenames with exactly 36 characters.
      Fixed potential crash in QPC_WINDOWSIZE.
      Fixed problem with "X"-close button not working sometimes.
      New command line option "-stretch" to force enabling of window stretching.
      Some re-design of the screen driver to improve stability.
      Trace and address exceptions now use 68020+ stack frames.
      Fixed problem in ADDX command, thanks to George Gwilt.
      Small bug in ABCD, SBCD and NBCD fixed (again thanks to George Gwilt).

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.
3.33  New emulation core! All 68020+ addressing modes and common instructions 
        Many thanks to George Gwilt, who did the initial work, it wouldn't
        have happened without him.
        Also thanks to Fran├žois 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.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.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.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.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.22  Fixed QPC_EXIT command (bug introduced in 3.21).
      Restored compatibility with older Windows versions (also broken in 3.21).
3.21  Fixed automatic saving of the "Don't show config dialog on next start"
      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.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 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.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.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.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.
      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.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.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.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.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 centre on 
      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 
      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 
      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
      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 
      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

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

2.02  Fixed bug which limited the range of SMSQ/E's floating point functions.      
        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.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.
        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.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.00  (Prerelease 3)
      Redesigned screen driver "kernel". Much cleaner code, much more 
        reliable, smoother and faster.

2.00  (Prerelease 2)
      FLP format works again.
      Screen stretching is prohibited on PCs whose hardware are 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)
      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

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

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.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.51  Changed SER-close routine because crappy Win9x didn't really close the 
      ports with the old one.

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