📄 mc68230.c
字号:
/*
* File: mc68230.c
* Purpose: Device driver for the Parallel Interface/Timer.
*
* Notes:
*
* Author: Eric DeVolder
* Date:
*
* Modifications:
*
*/
#include "mc68230p.h"
void
mc68230_init (MC68230 *mc68230)
{
MC68230_WR_PGCR(mc68230,0);
/* mc68230->PGCR = 0; */
}
void
mc68230_timer_init (MC68230 *mc68230, int preload, int clock, int vector)
{
uint8 b;
b = (preload & 0x00FF0000) >> 16;
MC68230_WR_CPRH(mc68230,b);
/* mc68230->CPRH = b; */
b = (preload & 0x0000FF00) >> 8;
MC68230_WR_CPRM(mc68230,b);
/* mc68230->CPRM = b; */
b = (preload & 0x000000FF);
MC68230_WR_CPRL(mc68230,b);
/* mc68230->CPRL = b; */
MC68230_WR_TCR(mc68230,clock);
/* mc68230->TCR = clock; */
MC68230_WR_TIVR(mc68230,vector);
/* mc68230->TIVR = vector; */
}
void
mc68230_timer_start (MC68230 *mc68230)
{
uint8 tcr;
tcr = MC68230_RD_TCR(mc68230);
/* tcr = mc68230->TCR; */
tcr = tcr | 0x01;
MC68230_WR_TCR(mc68230,tcr);
/* mc68230->TCR = tcr; */
}
void
mc68230_timer_stop (MC68230 *mc68230)
{
register uint8 tcr;
tcr = MC68230_RD_TCR(mc68230);
/* tcr = mc68230->TCR; */
tcr = tcr & 0xFE;
MC68230_WR_TCR(mc68230,tcr);
/* mc68230->TCR = tcr; */
}
int
mc68230_timer_read (MC68230 *mc68230)
{
uint8 tcr;
int crh, crm, crl;
int rvalue;
/* Stop the timer */
tcr = MC68230_RD_TCR(mc68230);
/* tcr = mc68230->TCR; */
tcr = tcr & 0xFE;
MC68230_WR_TCR(mc68230,tcr);
/* mc68230->TCR = tcr; */
crh = MC68230_RD_CRH(mc68230) << 16;
crm = MC68230_RD_CRM(mc68230) << 8;
crl = MC68230_RD_CRL(mc68230);
/* crh = mc68230->CRH << 16; */
/* crm = mc68230->CRM << 8; */
/* crl = mc68230->CRL; */
rvalue = crh | crm | crl;
/* start the timer again */
tcr = tcr | 0x01;
MC68230_WR_TCR(mc68230,tcr);
/* mc68230->TCR = tcr; */
return rvalue;
}
void
mc68230_timer_wait (MC68230 *mc68230)
{
while (!MC68230_RD_TSR(mc68230))
/* while (!mc68230->TSR) */
;
MC68230_WR_TSR(mc68230,0x01);
/* mc68230->TSR = 0x01; */
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -