oscar64/include/plus4/ted.c

74 lines
1.3 KiB
C

#include "ted.h"
void ted_waitBottom(void)
{
while (!(ted.vscan_high & 1))
;
}
void ted_waitTop(void)
{
while (ted.vscan_high & 1)
;
}
void ted_waitFrame(void)
{
while (ted.vscan_high & 1)
;
while (!(ted.vscan_high & 1))
;
}
void ted_waitLine(int line)
{
char upper = (char)(line >> 8) & 1;
char lower = (char)line;
do
{
while (ted.vscan_low != lower)
;
} while ((ted.vscan_high & 1) != upper);
}
void ted_setmode(TedMode mode, char * text, char * font)
{
switch (mode)
{
case TEDM_TEXT:
ted.ctrl1 = TED_CTRL1_DEN | TED_CTRL1_RSEL | 3;
ted.ctrl2 = TED_CTRL2_CSEL;
break;
case TEDM_TEXT_MC:
ted.ctrl1 = TED_CTRL1_DEN | TED_CTRL1_RSEL | 3;
ted.ctrl2 = TED_CTRL2_CSEL | TED_CTRL2_MCM;
break;
case TEDM_TEXT_ECM:
ted.ctrl1 = TED_CTRL1_DEN | TED_CTRL1_ECM | TED_CTRL1_RSEL | 3;
ted.ctrl2 = TED_CTRL2_CSEL;
break;
case TEDM_HIRES:
ted.ctrl1 = TED_CTRL1_BMM | TED_CTRL1_DEN | TED_CTRL1_RSEL | 3;
ted.ctrl2 = TED_CTRL2_CSEL;
break;
case TEDM_HIRES_MC:
ted.ctrl1 = TED_CTRL1_BMM | TED_CTRL1_DEN | TED_CTRL1_RSEL | 3;
ted.ctrl2 = TED_CTRL2_CSEL | TED_CTRL2_MCM;
break;
default:
__assume(false);
}
ted.vid_ptr = (unsigned)text >> 8;
if (mode < TEDM_HIRES)
{
ted.char_ptr = (unsigned)font >> 8;
}
else
{
ted.sound1_high = (ted.sound1_high & 0x3) | ((unsigned)font >> 10);
}
}