; phymem.s
bits 16
%pragma once

; Palloc :: int8 blocks -> int32 *addr
Palloc:
    enter 0,0
    push bx
    mov ax,[bp+4]           ; ax=blocks (ignored)

    mov bx,(confseg+confseg.phybm)
    ; ax =
        findbit(csselector, bx, physz, 0)
    jc .error
    mov dx,ax               ; si=phy addr hi byte
    setbit(0, bx, dx, 1)
    xor dh,dh
    xor ax,ax
    clc
    jmp .end

 .error:
    mov ax,0x0001
    stc

 .end:
    pop bx
    leave
    ret





