Friday, June 02, 2017

Visiting an old friend

In the (not) good old days of single-user single-process MS-DOS TSR programs were a kind of magic wish: have more than one program running at same time.

Companies created TSR utilities. I can remember of Borland Sidekick and Norton Guides, among others.

Of course I couldn't leave behind. Around 1990 I created my own TSR program: TASCII. An ASCII table very useful for... me only.

I based my implementation on the excellent Al Stevens' Extending Turbo C Professional book.

Recently I attempted, just for the fun, to bring back TASCII to life again.

I began with the DOSBOX MS-DOS emulator. For the compiler I used Turbo C 2.01 which Borland (now Embarcadero) made available for free, years ago. Unfortunately I hadn't the full source code for the Extending.. book. So I had to borrow it from openlibrary.org and type the missing parts.

Well, here it is (for the real nostalgia DOSBOX has a CGA mode):











Who needs a resident ASCII table these days? But it is nice to see an old friend again.

(If you are also insane I can provide you with the binary).






Wednesday, October 14, 2015

Monday, October 12, 2015

Boost and ICU build scripts for MinGW-w64

My MinGW distro is long gone now. However I still privately use a MinGW-w64 toolchain to test and study C++.

I have kept two scripts to build both ICU and Boost so I can have Boost libraries always available.

The scripts are for the latest version of both libraries. Build first ICU, uncompress the generated package and then build Boost.

You will need:

Steps:

  • Create a directory, eg, C:\mingw-build;
  • Under this directory create other three directories: dest, scripts and sources;
  • Copy both icu-55.1-w64-amd64.sh and boost-1.59.0-w64-amd64.sh to the scripts directory;
  • Download icu4c-55_1-src.tgz and icu4c-55_1-data.zip from ICU site to the sources directory;
  • Download boost_1_59_0.tar.bz2 from Boost site to the sources directory;
  • Download the MinGW-w64 toolschain and uncompress it to C:\MinGW64
  • Configure your system and add C:\MinGW64\bin to the PATH
  • Download the tools (bsdtar, diff, patch, gnufind, bzip2 and xz) to C:\MinGW64\bin (or any other directory in the PATH);
  • Open Bash;
  • Go to the scripts directory: cd /c/mingw-build/scripts
  • Execute the ICU build script: ./icu-55.1-w64-amd64.sh
  • If the build is successful the icuc-55.1-w64-amd64.tar.xz file is created in the C:\mingw-build\dest directory;
  • Go to the MinGW64\bin directory: cd /c/MinGW64
  • Uncompress the ICU package: bsdtar xzf /c/mingw-build/dest/icuc-55.1-w64-amd64.tar.xz
  • Go back to the scripts directory: cd /c/mingw-build/scripts
  • Execute the Boost build script: ./boost-1.59.0-w64-amd64.sh
  • If the build is successful the boost-1.59.0-w64-amd64.tar.xz file is created in the C:\mingw-build\dest directory;
  • Go to the MinGW64\bin directory: cd /c/MinGW64
  • Uncompress the Boost package: bsdtar xzf /c/mingw-build/dest/boost-1.59.0-w64-amd64.tar.xz
  • Now you have a MinGW-w64 installation with the Boost libraries

Please send your feedback: comments, suggestions and bug reports!!

DISCLAIMER: the scripts are provided "as is" without warranty of any kind.

Tuesday, February 11, 2014

Qt 5: QStandardPaths::DownloadLocation returns Documents folder starting from Vista

In Qt 5 the QStandardPaths provides access to the (guess what?) system standard paths like user's documents path, fonts path, etc.

There is also a Downloads path (QStandardPaths::DownloadLocation) that should return the directory where downloaded files are stored. Starting with Windows Vista there is a special directory for downloads. Before that the Documents directory was used.

However the Qt implementation of QStandardPaths does not make use of this new directory and always returns the Documents (QStandardPaths::DocumentsLocation) when the Downloads location is requested.

This patch fixes this issue, now QStandardPaths::DownloadLocation will correctly return the Downloads directory for Vista (or greater).

The patch has to be applied to file qtbase\src\corelib\io\qstandardpaths_win.cpp
And it is good for both Qt 5.2 and 5.2.1