Compare commits

...

1 Commits
master ... go32

Author SHA1 Message Date
  Jakob Kjær-Kammersgaard 4b8a758262 320x200 5 years ago
1 changed files with 72 additions and 51 deletions
Split View
  1. +72
    -51
      go32bit.nasm

+ 72
- 51
go32bit.nasm View File

@ -7,7 +7,8 @@
%define GDT_CodeSegmentSelector GDT_Selector(GDT_CodeSegIndex, 0, 0)
%define GDT_DataSegmentSelector GDT_Selector(GDT_DataSegIndex, 0, 0)
%define VIDEO 0xB8000
; %define VIDEO 0xB0000
%define VIDEO 0xA0000
; GDT Stuff
%define Data 0000b
@ -171,7 +172,7 @@ Go32Bit:
call Enable_A20
; Set screen mode
mov ax, 0x0003 ; AH=0 (Change video mode), AL=13h (Mode) = 320x200 - 256 colors
mov ax, 0x0013 ; AH=0 (Change video mode), AL=13h (Mode) = 320x200 - 256 colors
mov bx, 0x0000
int 0x10 ; Video BIOS interrupt
@ -244,55 +245,75 @@ ProtectedModeBaby:
; Setup stack
mov esp, 0xffffffff
mov ecx, 0
mov edx, 0
lea edi, [VIDEO]
mov ax, 0x4000
LoopRows:
LoopCols:
mov bl, cl
and bl, dl
shl bl, 4
mov ah, bl
ror bl, 1
xor ah, bl
and ah, 0x70
mov al, dl
add al, cl
and al, 4
ror al, 1
or ah, al
mov al, 0
mov WORD [edi], ax
inc edi
inc edi
inc ecx
cmp ecx, 80
je BreakLoopCols
jmp LoopCols
BreakLoopCols:
mov ecx, 0
inc edx
cmp edx, 25
je BreakLoopRows
jmp LoopRows
BreakLoopRows:
WriteProtectedModeString:
cld
lea esi, [ProtectedWelcomeStr]
lea edi, [VIDEO+(80*2)*12+19*2]
.print_loop:
mov al, BYTE [esi]
test al, al
jz .break_print_loop
mov BYTE [edi], al
mov BYTE [edi+1], 0x0f
inc esi
inc edi
inc edi
jmp .print_loop
.break_print_loop:
DrawStuff:
push ebp
mov ebp, esp
sub esp, 4
mov ecx, 0
mov edx, 0
lea edi, [VIDEO]
mov ax, 0x4000
LoopRows:
LoopCols:
mov ebx, ecx
sub ebx, 160
imul ebx, ebx
; shr ebx, 0
mov eax, ebx
mov ebx, edx
sub ebx, 100
imul ebx, ebx
add eax, ebx
shr eax, 8
xor eax, ecx
sub eax, edx
ror al, 7
mov byte [edi], al
;
; cmp eax, 40*40
; jge .OutOfCircle
; mov WORD [edi], 0x0f
; jmp .AfterOutOfCircle
; .OutOfCircle:
; mov WORD [edi], 0xff
; .AfterOutOfCircle:
; inc edi
inc edi
inc ecx
cmp ecx, 320
je BreakLoopCols
jmp LoopCols
BreakLoopCols:
mov ecx, 0
inc edx
cmp edx, 200
je BreakLoopRows
jmp LoopRows
BreakLoopRows:
%if 0
WriteProtectedModeString:
lea esi, [ProtectedWelcomeStr]
lea edi, [VIDEO+(80*2)*12+19*2]
.print_loop:
mov al, BYTE [esi]
test al, al
jz .break_print_loop
mov BYTE [edi], al
mov BYTE [edi+1], 0x0f
inc esi
inc edi
inc edi
jmp .print_loop
.break_print_loop:
%endif
pop ebp
HALT:
cli

Loading…
Cancel
Save