From 8efede851cd8826f3a4680c4ebdb5c34b2235ef0 Mon Sep 17 00:00:00 2001 From: Josh Holtrop Date: Tue, 19 Aug 2003 22:00:00 -0400 Subject: [PATCH] Import backup from 2003-08-19 --- flop.img | Bin 1474560 -> 0 bytes kernel.c | 5 +++++ stage2.asm | 4 ++-- video.c | 53 ++++++++++++++++++++++++++++++++++++++++++++++++++--- video.h | 3 +++ 5 files changed, 60 insertions(+), 5 deletions(-) delete mode 100644 flop.img diff --git a/flop.img b/flop.img deleted file mode 100644 index 35a29b54b1c6387cba2370aadac4a3229dd0f7d0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1474560 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 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7e?|6_s5&;Qo~{})Mx BnFjy> diff --git a/kernel.c b/kernel.c index 0ecdf95..782fca4 100644 --- a/kernel.c +++ b/kernel.c @@ -12,6 +12,7 @@ void k_init(); #include "functions.c" #include "video.c" +dword timer = 0; void k_init() { @@ -28,12 +29,16 @@ void k_init() video_horiz(a, 2, 1021, 0); video_vert(a, 2, 765, 0x0000FFFF); } + video_rect(10, 10, 100, 100, 0x00FFFFFF); + video_rectf(11, 11, 99, 99, 0x00FFFF00); } void isr(dword num) { if (num == 0x20) { + timer++; + video_rect(20,20,600,600,timer); (*(char*)0xB8000)++; *(char*)0xB8001 = 7; eoi(); diff --git a/stage2.asm b/stage2.asm index 7d9a5f2..cb48253 100644 --- a/stage2.asm +++ b/stage2.asm @@ -619,8 +619,8 @@ vesa_modenogood: ;------------------------------------------------------ vesa_done: - xor ax, ax ;wait for keypress... - int 0x16 +; xor ax, ax ;wait for keypress... +; int 0x16 jmp go_pm diff --git a/video.c b/video.c index 2bc1013..fd8d2ce 100644 --- a/video.c +++ b/video.c @@ -77,6 +77,53 @@ void video_vert(int x, int y1, int y2, dword color) } } +void video_rect(int x1, int y1, int x2, int y2, dword color) +{ + checkBoundsx(x1); + checkBoundsx(x2); + checkBoundsy(y1); + checkBoundsy(y2); + if (x2 < x1) + { + int tmp = x2; + x2 = x1; + x1 = tmp; + } + if (y2 < y1) + { + int tmp = y2; + y2 = y1; + y1 = tmp; + } + video_horiz(y1, x1, x2, color); + video_horiz(y2, x1, x2, color); + video_vert(x1, y1, y2, color); + video_vert(x2, y1, y2, color); +} + +void video_rectf(int x1, int y1, int x2, int y2, dword color) +{ + checkBoundsx(x1); + checkBoundsx(x2); + checkBoundsy(y1); + checkBoundsy(y2); + if (x2 < x1) + { + int tmp = x2; + x2 = x1; + x1 = tmp; + } + if (y2 < y1) + { + int tmp = y2; + y2 = y1; + y1 = tmp; + } + int a; + for (a = 0; a <= (y2-y1); a++) + video_horiz(y1+a, x1, x2, color); +} + inline void video_pset(int x, int y, dword color) { video_psetp(y*video_mode.XResolution+x, color); @@ -91,9 +138,9 @@ void video_psetp(int pixel, dword color) //vid_ptr16[pixel] = ((color&0xFF)>>3) | ((((color>>8)&0xFF)>>3)<<5) | ((((color>>16)&0xFF)>>3)<<10); break; case 24: - vid_ptr24[pixel] = (color>>16) & 0xFF; - vid_ptr24[pixel+1] = (color>>8) & 0xFF; - vid_ptr24[pixel+2] = color & 0xFF; + vid_ptr24[pixel*3] = color & 0xFF; + vid_ptr24[pixel*3+1] = (color>>8) & 0xFF; + vid_ptr24[pixel*3+2] = (color>>16) & 0xFF; break; case 32: vid_ptr32[pixel] = color; diff --git a/video.h b/video.h index aeecfce..f6ad54b 100644 --- a/video.h +++ b/video.h @@ -4,9 +4,12 @@ void video_init(); void video_horiz(int y, int x1, int x2, dword color); void video_vert(int x, int y1, int y2, dword color); +void video_rect(int x1, int y1, int x2, int y2, dword color); +void video_rectf(int x1, int y1, int x2, int y2, dword color); inline void video_pset(int x, int y, dword color); void video_psetp(int pixel, dword color); + #define checkBoundsx(x) (x<0 ? x=0 : (x>=video_mode.XResolution ? x=video_mode.XResolution-1 : 0)) #define checkBoundsy(x) (x<0 ? x=0 : (x>=video_mode.YResolution ? x=video_mode.YResolution-1 : 0))