Programs with source code

These programs are published under a BSD-like licence!

.NET Profiler that outputs detailed runtime trace


Trace generating IL instructions Runtime trace generation of applications and analyzing runtime traces is a worthwhile task to investigate the cause of arising malfunctions and accidental crashes. In order to produce reliable applications, for a program developer it is important to investigate programs using a debugger, so that erroneous parts of the program, instructions and variables getting incorrect values can be detected.

However, there are many situations where a simple debugger fails to fulfill this task or we are not allowed to use a debugger. Furthermore, multithreaded applications or applications producing incorrect behavior only under heavy load often may not be debugged correctly on development machines. The most common research area where detailed runtime traces can be used is dynamic program slicing.

Besides being widely studied in the academic field, dynamic program slicing has industrial applications as well. The original goal of program slicing was to map mental abstractions made by programmers during debugging to a reduced set of statements in source code. With the help of program slicing, the programmers can identify bugs more precisely and at a much earlier stage.

The trace generating method exploits the capabilities of the .NET Profiling API and IL code rewriting.

Basically, this approach employs the .NET Profiler and explores all sequence points and variable accesses in all methods of all classes and all modules of the application being profiled and inserts trace method calls defined in an outer assembly at every sequence point and variable access at IL code level.

System Requirements

  • Windows XP or later
  • .NET Framework 2.0 (does not work with .NET 4)


The source code and the binary can be downloaded from the following URL:

More Information

Please refer to my publications:
docx2tex: Word 2007 to TeX


TeX is 30 years old Docx2tex is a small command line tool that uses standard technologies to help users of Word 2007 to publish publications where typography is relevant or only papers produced by TeX are accepted. Behind the scenes, docx2tex uses common technologies to interpret Word 2007 OOXML format without utilizing the API of Word 2007. Docx2tex is planned to be published as a free open source utility that is accessible and extensible by everyone. This paper has been originally written in Word 2007 and then converted to TeX using docx2tex.
Docx2tex was first presented at the TUG 2008 conference.


docx2tex is a command line application. Copy it to a place where you desire (optionally put the directory in the search PATH). Simply run it by specifying the source docx and the destionation tex file.


docx2tex supports to following features:
  • Normal text
  • Italic, bold, underlined, stroked, small capitals, ...
  • Left, right, center aligned text
  • Headings - sections (3 levels)
  • Verbatim text
  • Style mapping
  • Simple tables
  • Line and page breaks
  • Numbered and bulleted lists
  • Multilevel lists and continuous numbered lists
  • Figure, table and listing captions
  • Cross reference to captions and headings
  • Image conversion from various formats (incl. .png and .jpeg) to .eps
  • Substitution of special characters (e.g. \, #, {, }, [, ], %, &, ~, ...)
  • Text boxes
  • Basic Word Equations (math formulae) support

System Requirements

  • Windows XP or later
  • .NET Framework 3.0
  • ImageMagicK installed


The source code and the binary can be downloaded from the following URL:

Looking for developers

As docx2tex is an open source project that means if you want some feature you have to do it yourself or wait for an unspecified amount of time. docx2tex lacks many basic and advanced features that should be implemented (in C#, using Visual Studio 2008 and TFS on CodePlex). The most important features are the following:
  • More Word Equations (math formulae) support
  • More configuration possiblities
  • Configuration user interface (WPF)
  • Optional fonts and text coloring support
  • Drawings (xfig)
MultiKeyboard (codename Rudess), for computers with multiple keyboards


Jordan Rudess with multiple 'keyboards' Imagine the situation when you have a computer that is used by multiple people even with different user accounts, moreover these users prefer different keyboard layouts. You may think that the solution of this problem is very easy: buy two or more keyboards that have different layouts (English, Hungarian, etc.). But it is only the half of the solution because the actual keyboards layout is registered by program level where the input hardware is not taken into account and you have to manually switch between layouts if you start using another keyboard. If you switch to other layout on one of your keyboards in Windows, the other keyboard will use the same layout. The full solution would be to detect the input hardware also and change automatically when the user starts to use the other keyboard. MultiKeyboard program does exactly the same. The application comes in binary (contents of the bin\release directory) and in source code form also (contents of the src directory).

Short Description

  1. MultiKeyboard reads "keyboard id - default layout" pairs from the MultiKeyboard.conf configuration file
  2. When it is detected at program-level that the user starts working with a different keyboard than the previous then the default layout of the new keyboard is loaded based on the configuration
  3. The layout change does not affect other programs only the actually running
  4. For any subsequent key presses on the same keyboard the layout is not automatically changed to default layout of the keyboard (i.e. the user can change from the default layout)

Note to 64-bit users

This program is a 32-bit application that means it works only with x86 applications running on the system. Although I have a Vista x64 system it is suitable for us because this application was primarily created for my girlfriend who uses mainly the following applications that are fortunately compiled as x86:

  • Internet Explorer (32-bit version),
  • Office 2007 programs (mainly Outlook and Word),
  • Total Commander 7


To find out the IDs of the attached keyboard devices to your computer and the keyboard layouts registered for the current user run the MultiKeyboardList.exe application.

As you can see my system has two keyboards (with IDs HID#VID_... and ACPI#PNP03?) and two layouts are registered 1033 (US) and 1038 (Hungarian).


After you decided the "Keyboard ID - layout" pairs you have to create a MultiKeyboard.conf configuration file and place it in the same directory where MultiKeyboard.exe resides.

In my situation the first keyboard in the list has Hungarian keys while the second keyboard has English keys therefore I had an easy job:


MultiKeyboard has to run in the background therefore you should place a link to MultiKeyboard.exe in the Startup section of your Start Menu.

System Requirements

Download the binary and source code also

Mohican, small HTTP server

Mohican is a HTTP server written in C# language running on .NET Framework. I wrote this program while studied for my final examination at the university just for fun and because I was bored to study a lot of stupidity. I don't plan to add new features. This program needs at least 1.1 version of Microsoft .NET Framework.

  • Tested with Windows XP SP2.
  • Runs as a service or as a standalone program.
  • XML configuration file (Mohican.conf)
  • Logging capability (Mohican.log)
  • Multiple server threads, configurable
  • MIME types
  • Capability to serve static HTML content
  • Module based architecture: added a PHP module -> dynamic PHP pages can be served.
  • Basic authentication support
  • Directory listing
System Requirements:
  • at least Windows 2000. Tested on Windows XP, Windows Server 2003.
  • .NET Framework 1.1 (now compiled with .NET Framework 2.0 and Visual Studio 2005)
  • 100K of disk space for binary
  • a bit more disk space for the source code also
  • Visual Studio.NET to compile the source code
  • Can be compiled and hosted by Mono so Mohican runs on UNIX

Download the binary and source code also

KeyMacroDef, Keyboard Macro Definiator Program

KeyMacroDef is a program that extends predefined shortcut key combinations on Windows to start your favorite programs easier and faster without using the mouse. You can autostart this program by adding it to "Start Menu/(All )Programs/Startup" menu. A small icon (K) will appear on Systray showing KeyMacroDef is running. By default Windows (XP and later) has a function that you can define shortcut keys by right-clicking on a Desktop icon or Start Menu item and set "Shortcut key" item in Properties dialog box. But using KeyMacroDef this procedure can be replaced and your accelerator keys can be stored in a centralized place. You can set very complex command strings for each key combination.

System Requirements:
  • at least Windows 2000. Tested on Windows XP, Windows Server 2003.
  • .NET Framework (Windows Server 2003 contains it by default)
  • 130K of disk space for binary
  • a bit more disk space for the source code also
  • Visual Studio.NET to compile the source code

Download the binary and source code also

PVS generator and renderer

pvs1 pvs2

I've written this stuff for a special subject called Direct3D II still when I was an university student.
It consists of 3 parts:

  1. Map designer
  2. BSP tree (Binary Space Paritioning tree) and PVS (Potentially Visible Set) generator
  3. Renderer

The 1st part is the same as in Manowar (below on this page). Source code can be found there.
The 2nd part can be used to calculate the BSP tree and to build the the visibility relation matrix called PVS.
The 3rd part simply renders the generated map. You can use the space key to switch on/off the visibility chencking, the 'l' key to lock the visibility checking position in order to see was can be seen in the locked position. Use the 'p' key to switch on/off the portals. Use the esc key to exit the program. You can navigate in the scene using the mouse and its left and right buttons to go ahead or back.
The theory behind the BSP, Portal and PVS generation is described in my Msc. thesis in Hungarian.

System Requirements:
  • Pentium 4 class processor for PVS generation, for rendering a Pentium is OK
  • DirectX8 compatible graphics card
  • Windows 98. Tested on Windows XP.
  • DirectX 8
  • 4MB of disk space for binary
  • a bit more disk space for the source code also
  • Visual Studio.NET to compile the source code (C++)

Download the binary and source code also

Old Stuff

Manowar, the king of the Games

game1 game2 game3

  • Bilinear/MIP/Trilinear texture filtering
  • Portal rendering
  • Own map designer program
  • Collision detection(a bit bogus but works)
  • Mouse support
  • 3D Accelerator card supporting Direct3D
  • Static lights(with lightmaps)

  • Windows 95/98/2000/...
  • DirectX 6.0
  • 3D graphics card, but works with software also
  • Pentium processor

This program has this name because I was listening Manowar when thinking on the name of the game.

Download the binary and data
Download the source code(Visual C++ 6.0)

3DS-view, triangle based 3D animation player under DOS

This program is able to load and play 3ds files saved by 3D Studio or exported by 3D Studio Max. I've written it in Watcom C with inline Assembly(inline loops) when I went to the Hight school. You can try it by downloading the program, but you need some 3ds animations. I've written this - as my first serious 3D program - to get into 3D graphics. But i've implemented a lot of other algorithms using advanced technics which aren't any part of these programs in the subject of visibility determination.

  • perspective corrected texture mapping
  • gouraud-texturer
  • bump-env-texturer
  • z-buffer
  • backface culling
  • using 3ds cameras
  • hierarchical object transformation using matrices
  • assembly-optimized inner loop in texturer
  • able to load bmp, cel, tga and gif

  • DOS/Windows(not NT)
  • Pentium processor (many floating point caculation)
  • VESA-compatible video controller
  • min 2MB of memory
  • some 100KB free disk space

Download the binary
Download the source(Watcom C v. 11.0)