; pf.asm.h
bits 16
%define Putchar     Putcharrm

%macro breakpoint 0
   %%loop:
      nop
      jmp %%loop
%endmacro

; pf :: int8 *fmt -> ... -> void
%macro pf 1
    jmp %%begin
 %%fmtstr:
    db %1
    db 0x00

 %%begin:
    mov ax,%%fmtstr
    push ax
    call Printf
    add sp,0x02
%endmacro

%macro pf 2
    mov ax,%2
    push ax
    pf %1
    add sp,0x02
%endmacro

%macro pf 3
    mov ax,%3
    push ax
    mov ax,%2
    push ax
    pf %1
    add sp,0x04
%endmacro

%macro pf 4
    mov ax,%4
    push ax
    mov ax,%3
    push ax
    mov ax,%2
    push ax
    pf %1
    add sp,0x06
%endmacro

%macro pf 5
    mov ax,%5
    push ax
    mov ax,%4
    push ax
    mov ax,%3
    push ax
    mov ax,%2
    push ax
    pf %1
    add sp,0x06
%endmacro
