Un-ignored: the dev drive is the ground truth the restoration and emulator work constantly reference (DPL3/LIBDPL + VRENDER i860 renderer source, BT/RP live+dev game trees, VGL_LABS pod boot, scene/audio content). Kept in-repo for the pod-owner community. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
51 lines
1.2 KiB
C++
51 lines
1.2 KiB
C++
#include <stdio.h>
|
|
#include <stdlib.h>
|
|
#include <string.h>
|
|
#include "cm200io.h"
|
|
extern Set();
|
|
extern dnc_Wait_count(void *, int);
|
|
|
|
/* 50 equates to 100 ticks in bla loop, == 4 uS on -25 */
|
|
#define dnc_Wait(a) dnc_Wait_count(a,50)
|
|
/* #define dnc_Wait(a) Wait(a) */
|
|
|
|
#define start_transaction(t,n) \
|
|
dnc_Wait (&output_ccb->lock); \
|
|
output_ccb->command_type = t; \
|
|
output_ccb->command_no = n; \
|
|
output_ccb->ack = 1
|
|
|
|
#define end_transaction() dnc_Wait (&output_ccb->ack)
|
|
|
|
#define event() Set(&ioc->tevent,1)
|
|
|
|
/*{{{ void dN_ld_list_run (int linkno)*/
|
|
void dN_ld_list_run (int linkno)
|
|
{
|
|
start_transaction(IO_LISTDRIVER_RUN, linkno);
|
|
|
|
event();
|
|
|
|
end_transaction();
|
|
}
|
|
/*}}} */
|
|
/*{{{ void dN_ld_list_add (int linkno, void *data, int size)*/
|
|
void dN_ld_list_add (int linkno, void *data, int size, int pre, int post )
|
|
{
|
|
int *dptr = (int *) &output_ccb->data[0];
|
|
|
|
/* printf ("dN_ld_list_add, link %d data 0x%x size %d\n", linkno, data, size ); */
|
|
|
|
if (pre) end_transaction();
|
|
start_transaction(IO_LISTDRIVER_ADD, linkno);
|
|
|
|
*dptr++=(int) data;
|
|
*dptr =size;
|
|
|
|
event();
|
|
|
|
if (post) end_transaction();
|
|
|
|
}
|
|
/*}}} */
|