Files
ORCALib/assert.asm
T
Stephen Heumann 28ed2ac029 Add new call for assert that takes a 32-bit line number.
The ORCA/C compiler was updated to support 32-bit line numbers some time ago (as required by C99 and later), so assert should support them as well.

The code to return from any of the assert calls is also removed, since it was unreachable.
2025-11-25 22:18:31 -06:00

104 lines
2.3 KiB
NASM

keep obj/assert
mcopy assert.macros
case on
****************************************************************
*
* Assert - Condition assertion macro
*
* This code implements the subroutines needed to support the
* standard C library assert.
*
* October 1991
* Mike Westerfield
*
* Copyright 1991
* Byte Works, Inc.
*
****************************************************************
*
Assert start dummy routine
end
****************************************************************
*
* void __assert (char *f, unsigned l, char *s)
*
* Inputs:
* f - pointer to the file name
* l - line number
* s - assertion string
*
****************************************************************
*
__assert start
csubroutine (4:f,2:l,4:s),0
ph4 <s
ph2 <l
ph4 <f
ph4 #msg
ph4 >stderr
jsl fprintf
jsl abort
msg dc c'Assertion failed: file %s, line %u; assertion: %s',i1'10,0'
end
****************************************************************
*
* void __assert2 (char *f, unsigned l, char *fn, char *s)
*
* Inputs:
* f - pointer to the file name
* l - line number
* fn - function name
* s - assertion string
*
****************************************************************
*
__assert2 start
csubroutine (4:f,2:l,4:fn,4:s),0
ph4 <s
ph4 <fn
ph2 <l
ph4 <f
ph4 #msg
ph4 >stderr
jsl fprintf
jsl abort
msg dc c'Assertion failed: file %s, line %u, function %s; assertion: %s',i1'10,0'
end
****************************************************************
*
* void __assert3 (char *f, unsigned long l, char *fn, char *s)
*
* Inputs:
* f - pointer to the file name
* l - line number
* fn - function name
* s - assertion string
*
****************************************************************
*
__assert3 start
csubroutine (4:f,4:l,4:fn,4:s),0
ph4 <s
ph4 <fn
ph4 <l
ph4 <f
ph4 #msg
ph4 >stderr
jsl fprintf
jsl abort
msg dc c'Assertion failed: file %s, line %lu, function %s; assertion: %s',i1'10,0'
end