Remove unused hma and heap code

This commit is contained in:
Nero 2019-05-02 20:16:37 +00:00
parent 4631808a63
commit 90c6b3dcca
2 changed files with 0 additions and 116 deletions

View File

@ -1,84 +0,0 @@
heap_size:
; 1 step here means 1 byte heap alloc table + 16 byte heap data
; 0x0400 = 1kB table, 16kb data
dw 0x0400
heap_init:
push ax ; byte value (0)
push cx ; loop counter
push di ; target ptr
push es
mov ax, cs
mov es, ax
xor ax, ax
mov cx, [heap_size]
mov di, heap
rep stosb ; rep makes this loop cx times, incrementing di, writing al
pop es
pop di
pop cx
pop ax
ret
; in ax number of bytes to alloc
; out ds:di
malloc:
push cx ; number of blocks to allocate
push bp ; base offset for block table
push es
; transfer 12 MSB from ax to cx
add ax, 0x000F
mov cl, 0x04
shr ax, cl
mov cx, ax
mov bp, heap
mov di, 0x0000
mov ax, ds
mov es, ax
xor ah, ah ; we use ax for reading from al once
jmp .firstblock
.testlength:
push cx
push di
add di, bp ; scasb doesn't add bp on its own
repe scasb
pop di
pop cx
je .found
; find next free item
mov al, 0x01
.nextblock:
add di, ax
.firstblock:
mov al, [bp+di]
cmp al, 0x00
jne .nextblock
cmp cx, 0x0001 ; fast case: 1 block allocation, skip test if length fits
jne .testlength
.found:
mov [bp+di], cl
mov cl, 0x04
shl di, cl
add di, bp
add di, [heap_size]
pop es
pop bp
pop cx
ret
; in ds:di begin of data block to free (di trashed)
free:
push cx
push bp
mov bp, heap
sub di, [heap_size]
sub di, bp
mov cl, 0x04
shr di, cl
mov byte [bp+di], 0x00
pop bp
pop cx
ret

View File

@ -1,32 +0,0 @@
; Code related to memory segment from 0xFFFF0 - 0x10FFEF
; Check if 0000:0000 and FFFF:0010 point to the same memory
; ZF=1 when A20 disabled and HMA unusable
; ZF=0 when A20 enabled
a20_enabled:
mov ax, 0x0000
mov ds, ax
mov si, ax
mov ax, 0xFFFF
mov di, 0x0010
mov cx, 0x0200
repe cmpsw
ret
; Relocate kernel code to HMA
hma_relocate:
call a20_enabled
; TODO: talk to hw to enable a20
jz .end
mov ax, cs
mov ds, ax
mov si, 0x0010
mov ax, 0xFFFF
mov es, ax ; new code segment
mov ss, ax ; new stack segment
mov di, 0x0010
mov cx, 0x7FF8 ; 0xFFF0 divided by 2
repe movsw
jmp 0xFFFF:.end
.end:
ret