match !=DONE, UNIVERSAL_FASM
{
	UNIVERSAL_FASM equ DONE
	match =FREEBSD, OPERATING_SYSTEM
	{
		macro kernel
		{
			call k80h
		}

		k80h:
			int 80h
		ret

		;system call numbers (do not use directly)
			s_exit	equ	1
			s_read	equ	3
			s_write	equ	4

		;file descriptors
			fd_console_in	equ	0
			fd_console_out	equ	1
			fd_error_out	equ	2

		;exit values
			ev_success	equ	0

		;system calls
			macro sys_exit exit_value
			{
				push exit_value
				mov eax, s_exit
				kernel
			}		;no need to clean stack

			macro sys_write file_descriptor, string_buffer, buffer_length
			{
				push buffer_length
				push string_buffer
				push file_descriptor
				mov eax, s_write
				kernel
				add esp, 12	;clean 3 dwords off the stack
			}
	;end of FreeBSD
;end of file