DOS 16 bit Real Mode Graphics and Physics Library written in C++98 & 8086 Assembly
Written using Microsoft Visual Studio Community Edition
Built using Open Watcom V2 Fork
Tested using DOSBOX and my IBM XT
- dumps ->
- files ->
- arena_t ->
- [...] GFX essentials ->
- bitmap_t ->
- load_raw_pbm
- blits
TODO MEM
- mem::dump(ostream, ...)
- mem::save(cstring, ...)
- mem::load(cstring, ...)
- mem::save(istream, ...)
- arena_t
- arena::functions(...)
- get_available_low_memory
TODO GFX
-
video_adapter_t detect_video_adapter_type()
-
bitmap_t (universal)
- [...] bmp::functions(...)
-
[...] VGA
- detect
-
[...] EGA
- detect
-
[...] CGA
-
detect
-
[...] mode3
- switch mode
-
[...] mode4
- switch mode
-
[...] mode6
- switch mode
-
-
[...] HGA
- detect
- switch mode
- cls
- graphics cls
- load_raw_pbm
- blits(...) universal bmp -> specialised vram
-
[...] MDA
- detect TODO BIOS (as needed)
-
INT 10,0 - Set video mode
-
INT 10,1 - Set cursor type
-
INT 10,2 - Set cursor position
-
INT 10,3 - Read cursor position
-
INT 10,4 - Read light pen
-
INT 10,5 - Select active display page
-
INT 10,6 - Scroll active page up
-
INT 10,7 - Scroll active page down
-
INT 10,8 - Read character and attribute at cursor
-
INT 10,9 - Write character and attribute at cursor
-
INT 10,A - Write character at current cursor
-
INT 10,B - Set color palette
-
INT 10,C - Write graphics pixel at coordinate
-
INT 10,D - Read graphics pixel at coordinate
-
INT 10,E - Write text in teletype mode
-
INT 10,F - Get current video state
TODO DOS (as needed)
- 25 Set interrupt vector
- 35 Get interrupt vector
- 36 Get disk free space
- 37 Get/set switch character (undocumented)
- 38 Get/set country dependent information
- 39 Create subdirectory (mkdir)
- 3A Remove subdirectory (rmdir)
- 3B Change current subdirectory (chdir)
- 3C Create file using handle
- 3D Open file using handle
- 3E Close file using handle
- 3F Read file or device using handle
- 40 Write file or device using handle
- 41 Delete file
- 42 Move file pointer using handle
- 43 Change file mode
- 44 I/O control for devices (IOCTL)
- 45 Duplicate file handle
- 46 Force duplicate file handle
- 47 Get current directory
- 48 Allocate memory blocks
- 49 Free allocated memory blocks
- 4A Modify allocated memory blocks
TODO DOS 3.x+ (as needed)
- 59 Get extended error information (3.x+)
- 5A Create temporary file (3.x+)
- 5B Create new file (3.x+)
- 5C Lock/unlock file access (3.x+)
- 5D Critical error information (undocumented 3.x+)
- 5E Network services (3.1+)
- 5F Network redirection (3.1+)
- 60 Get fully qualified file name (undocumented 3.x+)
- 62 Get address of program segment prefix (3.x+)
- 63 Get system lead byte table (MSDOS 2.25 only)
- 64 Set device driver look ahead (undocumented 3.3+)
- 65 Get extended country information (3.3+)
- 66 Get/set global code page (3.3+)
- 67 Set handle count (3.3+)
- 68 Flush buffer (3.3+)
- 69 Get/set disk serial number (undocumented DOS 4.0+)
- 6A DOS reserved (DOS 4.0+)
- 6B DOS reserved
- 6C Extended open/create (4.x+)
- F8 Set OEM INT 21 handler (functions F9-FF) (undocumented)
Clone it, compile it, play with it...
My steep learning curve.
Option 1: Run the executable files in DOSBOX - or on your own old iron hardware!
OPtion 2: Download and Install:
Fork it, do your thing and pull request
Me :)