[icon] x86 Assembly Language

In case you didn't know, assembly language is a language close enough to the machine to give you full control over it, while being far enough to give you the necessary abstraction so that you don't have to know all instruction codes and fields by heart.

Back in around 1997 I used to play a lot with x86 assembly on DOS and Windows and here are some of my finest creations of that time.

[icon] 3D Functions

3D Functions Screenshot 3D Functions is a program that lets you display functions like z=f(x,y) and [x,y,z]=f(p,q), which are basically 2D surfaces in 3D. Time variable can be used to animate the surfaces.

The functions are specified in a C-like language. The program has a simple "compiler" which turns them into pseudo code it can interpret at runtime. The program used to run reasonably fast on a 386 CPU with a 387 FPU.

Download Download

[icon] Fractal Clouds

Fractal Clouds Screenshot This program generates 2D noise-based fractals simialar to Perlin noise. The height map can be customized to produce unique colors. Generated images can be saved as 24-bit BMPs. An additional option makes the generated bitmaps wrapping friendly, so that they can be used as textures.

Download Download

[icon] CPUID

CPUID Screenshot The CPUID program uses the cpuid instruction to identify the processor. It extracts information such as processor type, name, cache size and features.

Download Download

[icon] TextView

TextView Screenshot TextView is a size optimized text file viewer for DOS. The executable was squeezed in 201 bytes without any compression. Still, it provides basic navigation keys and allows smooth per-pixel scrolling in text mode! On Windows this program must be run in full screen.

Download Download

[icon] 3D Julia MMX

3D Julia MMX Screenshot This program has been written purely for fun. It uses fixed point arithmetics on MMX to produce animated Julia set fractal. The fractal is generated from a complex sequence Z(n+1)=Z(n)*Z(n)+C by counting iterations needed to reach a certain level of the module of Z. C is a variable that changes in time to produce a different look. The way the fractal is drawn mimics a 64KB DOS intro Drift.

Download Download

[icon] XM Player

XM Player Screenshot The tiny XM player can be used to play XM modules, originally produced by FastTracker 2. The program relies on DirectSound 5, but another subsystem could be plugged in. It's perfect for small applications written in any language which intend to play background music.

Download Download

[icon] PC Speed

This program was originally created to measure and compare speed of different processors, but as they evolved its method became irrelevant. Now it can serve as an example on how to physically initialize the CPU in 32-bit mode.

It is a DOS program which switches into protected mode, collects memory from XMS and sets up all processor structures, such as GDT, etc. It must be run from real mode (i.e. EMS must not be running).

Download Download

[icon] Win32 Includes

Some of the programs above were written for NASM, others for TASM. Those for TASM use ideal mode and may require the following set of Win32 headers to compile.

Download Download Win32 headers for TASM