retro-matrix is an independent program to show a digital rain animation on your screen.
retro-matrix is so independent that it does not need any operating system to work. It just works on bare x86 machines. retro-matrix is also a 16-bit program, which is primitive, and, indeed retro.
retro-matrix is also a submission for one of assignments in IF2230 Operating System course.
To get started with this project, you need these tools.
bin86
anddev86
for program compilation.nasm
for bootloader compilation.- GNU Make as the build system.
- Bochs, QEMU or other virtual machine to run.
To compile:
$ make
This command will generate a floppy image on bin/floppy.img
.
Bochs can be used for testing.
$ bochs -f opsys.bxrc
Then, press c
to continue.
You can use another virtual machine other than Bochs, like QEMU, VirtualBox, etc. Just boot bin/floppy.img
as a RAW floppy image.
The original assignment specification can be seen here in Indonesian.
The first component to be executed is the bootloader, which loads the kernel from the disk, then executes the top of it.
The first component of the kernel to be executed must be the entry point, so it is passed as the first parameter to the linker, so it is placed on the top of the kernel.
The entry point executes kernel_main
routine which is written in C language, which also initializes several things:
- The digital rain animation itself.
- Timer interrupt to advance the animation in defined period.
- Keyboard interrupt to listen for keyboard events.
retro-matrix is bought to you by:
- 13515035 Oktavianus Handika (handikao29) for the assets.
- 13515071 Daniel Pintara (nieltg) for the main program.
- 13515080 Muhammad Treza Nolandra (rezardes) for compile script for the submission.
- libcaca/cacademo.c at f32c24a · cacalabs/libcaca
- dev86/bcc_int.c at e62b351 · lkundrak/dev86
- Keyboard Support - Annon Inglorion
- OSDev.org • View topic - hide cursor using vga registers
- Interrupt Vector Table - OSDev Wiki
- Programmable Interval Timer - OSDev Wiki
- Bran's Kernel Development Tutorial: The Programmable Interval Timer
- VGA/SVGA Video Programming - CRT Controller Registers
- c - What are the better (P)RNG than the LCG for lottery scheduler? - Stack Overflow
- Reset vector - Wikipedia