fis-gtm/sr_port/op_zbreak.c

44 lines
1.1 KiB
C

/****************************************************************
* *
* Copyright 2001, 2002 Sanchez Computer Associates, Inc. *
* *
* This source code contains the intellectual property *
* of its copyright holder(s), and is made available *
* under a license. If you do not know the terms of *
* the license, please stop and do not read further. *
* *
****************************************************************/
#include "mdef.h"
#include <rtnhdr.h>
#include "stack_frame.h"
#include "cache.h"
#include "zbreak.h"
#include "io.h"
#include "compiler.h"
GBLREF z_records zbrk_recs;
GBLREF stack_frame *frame_pointer;
int op_zbreak(stack_frame *fp)
{
unsigned char *line_addr;
zbrk_struct *z_ptr;
line_addr = find_line_start(fp->mpc, fp->rvector);
assert(NULL != line_addr);
line_addr = (unsigned char *)find_line_call(line_addr) - SIZEOF_LA;
z_ptr = zr_find(&zbrk_recs, (zb_code *)line_addr);
assert(NULL != z_ptr);
if (0 < z_ptr->count && 0 < --z_ptr->count)
return (TRUE);
else
{
flush_pio();
comp_indr(&z_ptr->action->obj);
frame_pointer->type = SFT_ZBRK_ACT;
return (FALSE);
}
}