aboutsummaryrefslogtreecommitdiff
path: root/source/seta018.c
diff options
context:
space:
mode:
Diffstat (limited to 'source/seta018.c')
-rw-r--r--source/seta018.c33
1 files changed, 9 insertions, 24 deletions
diff --git a/source/seta018.c b/source/seta018.c
index 840e479..a608960 100644
--- a/source/seta018.c
+++ b/source/seta018.c
@@ -5,15 +5,11 @@
ST018_Regs ST018;
-static int32_t line; // line counter
-
uint8_t S9xGetST018(uint32_t Address)
{
uint8_t t = 0; // Initialise to some value for the compiler
uint16_t address = (uint16_t) Address & 0xFFFF;
- line++;
-
// these roles may be flipped
// op output
if (address == 0x3804)
@@ -28,8 +24,7 @@ uint8_t S9xGetST018(uint32_t Address)
else
t = 0x81;
}
- // status register
- else if (address == 0x3800)
+ else if (address == 0x3800) // status register
t = ST018.status;
return t;
@@ -39,26 +34,20 @@ void S9xSetST018(uint8_t Byte, uint32_t Address)
{
uint16_t address = (uint16_t) Address & 0xFFFF;
static bool reset = false;
- line++;
- if (!reset)
+ if (!reset) // bootup values
{
- // bootup values
ST018.waiting4command = true;
ST018.part_command = 0;
reset = true;
}
Memory.SRAM[address] = Byte;
+ ST018.status = 0x00; // default status for now
- // default status for now
- ST018.status = 0x00;
-
- // op data goes through this address
- if (address == 0x3804)
+ if (address == 0x3804) // op data goes through this address
{
- // check for new commands: 3 bytes length
- if (ST018.waiting4command && ST018.part_command == 2)
+ if (ST018.waiting4command && ST018.part_command == 2) // check for new commands: 3 bytes length
{
ST018.waiting4command = false;
ST018.command <<= 8;
@@ -78,32 +67,28 @@ void S9xSetST018(uint8_t Byte, uint32_t Address)
break;
}
}
- else if (ST018.waiting4command)
+ else if (ST018.waiting4command) // 3-byte commands
{
- // 3-byte commands
ST018.part_command++;
ST018.command <<= 8;
ST018.command |= Byte;
}
}
- // extra parameters
- else if (address == 0x3802)
+ else if (address == 0x3802) // extra parameters
{
ST018.parameters[ST018.in_index] = Byte;
ST018.in_index++;
}
- if (ST018.in_count == ST018.in_index)
+ if (ST018.in_count == ST018.in_index) // Actually execute the command
{
- // Actually execute the command
ST018.waiting4command = true;
ST018.in_index = 0;
ST018.out_index = 0;
switch (ST018.command)
{
- // hardware check?
case 0x0100:
- case 0xFF00:
+ case 0xFF00: // hardware check?
ST018.waiting4command = false;
ST018.pass++;
if (ST018.pass == 1)