#include "compiler.h"
#include "np2.h"
#include "commng.h"
#include "cmjasts.h"
// ---- non connect
static UINT
ncread(COMMNG self, BYTE *data)
{
return 0;
}
static UINT
ncwrite(COMMNG self, BYTE data)
{
return 0;
}
static BYTE
ncgetstat(COMMNG self)
{
return 0xf0;
}
static long
ncmsg(COMMNG self, UINT msg, long param)
{
return 0;
}
static void
ncrelease(COMMNG self)
{
/* Nothing to do */
}
static _COMMNG com_nc = {
COMCONNECT_OFF, ncread, ncwrite, ncgetstat, ncmsg, ncrelease
};
// ----
void
commng_initialize(void)
{
cmmidi_initailize();
}
COMMNG
commng_create(UINT device)
{
COMMNG ret;
COMCFG *cfg;
ret = NULL;
switch (device) {
case COMCREATE_SERIAL:
cfg = &np2oscfg.com[0];
break;
case COMCREATE_PC9861K1:
cfg = &np2oscfg.com[1];
break;
case COMCREATE_PC9861K2:
cfg = &np2oscfg.com[2];
break;
case COMCREATE_MPU98II:
cfg = &np2oscfg.mpu;
break;
case COMCREATE_PRINTER:
cfg = NULL;
if (np2oscfg.jastsnd) {
ret = cmjasts_create();
}
break;
default:
cfg = NULL;
break;
}
if (cfg) {
if ((cfg->port >= COMPORT_COM1)
&& (cfg->port <= COMPORT_COM4)) {
ret = cmserial_create(cfg->port - COMPORT_COM1 + 1, cfg->param, cfg->speed);
} else if (cfg->port == COMPORT_MIDI) {
ret = cmmidi_create(cfg->mout, cfg->min, cfg->mdl);
if (ret) {
(*ret->msg)(ret, COMMSG_MIMPIDEFFILE, (long)cfg->def);
(*ret->msg)(ret, COMMSG_MIMPIDEFEN, (long)cfg->def_en);
}
}
}
if (ret)
return ret;
return (COMMNG)&com_nc;
}
void
commng_destroy(COMMNG hdl)
{
if (hdl) {
hdl->release(hdl);
}
}
RetroPC.NET-CVS <cvs@retropc.net>