Improve the performance of AppleTalk.

Prior to this patch, network boot to the desktop at 8 MHz CPU (with "turbo" AppleTalk timing) took 2:08.  After this patch, the same network boot takes 1:17.

Previously, the bridge processed packets from within the emulator's 60 Hz update loop.  This bottlenecks network performance, so this patch increases the update rate.
This commit is contained in:
Peter 2015-04-14 01:25:47 +00:00
parent 1b370205c1
commit 9cc8c5645f
1 changed files with 8 additions and 0 deletions

View File

@ -55,6 +55,8 @@ void scc_llap_update()
{
atbridge_process();
// Save the AppleTalk network number. Since the network number does not
// change very often, this will slightly improve startup time.
if (g_appletalk_network_hint != atbridge_get_net())
{
g_appletalk_network_hint = atbridge_get_net();
@ -84,6 +86,9 @@ void scc_llap_fill_readbuf(int port, int space_left, double dcycs)
}
free(data);
// Normally, the bridge updates from the 60 Hz loop, but that alone bottlenecks network throughput.
scc_llap_update();
}
/** Transfer one packet from the SCC to the AppleTalk bridge. **/
@ -131,6 +136,9 @@ void scc_llap_empty_writebuf(int port, double dcycs)
// The timing will be a bit off from the real hardware since we're not
// emulating the sending hardware timing and CRC generation.
scc_ptr->eom = 1;
// Normally, the bridge updates from the 60 Hz loop, but that alone bottlenecks network throughput.
scc_llap_update();
}
#else