;///////////////////////////////////////////////////////////////////////////
;
;		C LIBRARY FOR SOLID C compiler
;			Root module
;
;///////////////////////////////////////////////////////////////////////////

; Входящие функции:
;
; xmain
; _exit
; abort
;



	cseg

	db	"CLIB v0.01",0


xmain::
	; создать список аргументов
	push	ix
	pop	hl			; адрес ком. строки
	call	_setargv##		; в dos.asm
	ld	de,_argv_##		; список аргументов (в dos.asm)

	call	_main_##		; в stdio.asm

;
; "stdlib.h"
; передается управление из функции exit.
; Функция завершает вызванный процесс без обновления буферов потока.
; Значение code обычно устанавливается в 0 для указания нормального
; выхода и устанавливается в любое другое значение для определения ошибки.
; Поскольку вызов _exit не возвращает значения, то мл. байт code является
; кодом возврата для родительского процесса.
; in: hl = значение error code
; out: нет
;
; void _exit(int code)
;
_exit_::
	ld	b,l
	ld	c,41h		; terminate with error code
	rst	10h
	ret

;
; "stdlib.h"
; Функция выводит на экран сообщение "Abnormal program termination."
; (непредвиденное завершение программы) и завершает вызванный процесс
; без обновления буферов потока.
; in: нет
; out: нет
;
; void abort()
;
abort_::
	ld	hl,@1
	ld	c,5Ch
	rst	10h
	ld	l,-1
	jr	_exit_

	dseg
@1:	db	0Dh,0Ah,"Abnormal program termination.",0Dh,0Ah,0Ah,0
