- Removed some dead code

- Disk accelerator reset moved to a function
- Some tiny speed optimizations
This commit is contained in:
tudnai 2020-05-02 21:26:24 -07:00
parent 291dd59b31
commit 12dc2f1d2b
6 changed files with 134 additions and 175 deletions

View File

@ -1003,9 +1003,9 @@
filePath = "src/cpu/6502.c"
startingColumnNumber = "9223372036854775807"
endingColumnNumber = "9223372036854775807"
startingLineNumber = "875"
endingLineNumber = "875"
landmarkName = "read_rom(bundlePath, filename, rom, addr)"
startingLineNumber = "878"
endingLineNumber = "878"
landmarkName = "rom_loadFile(bundlePath, filename)"
landmarkType = "9">
</BreakpointContent>
</BreakpointProxy>
@ -1019,9 +1019,9 @@
filePath = "src/cpu/6502.c"
startingColumnNumber = "9223372036854775807"
endingColumnNumber = "9223372036854775807"
startingLineNumber = "915"
endingLineNumber = "915"
landmarkName = "rom_loadFile(bundlePath, filename)"
startingLineNumber = "918"
endingLineNumber = "918"
landmarkName = "m6502_ColdReset(bundlePath, romFileName)"
landmarkType = "9">
</BreakpointContent>
</BreakpointProxy>
@ -1051,8 +1051,8 @@
filePath = "src/dev/mem/mmio.h"
startingColumnNumber = "9223372036854775807"
endingColumnNumber = "9223372036854775807"
startingLineNumber = "490"
endingLineNumber = "490"
startingLineNumber = "494"
endingLineNumber = "494"
landmarkName = "ioRead(addr)"
landmarkType = "9">
</BreakpointContent>
@ -1067,8 +1067,8 @@
filePath = "src/dev/mem/mmio.h"
startingColumnNumber = "9223372036854775807"
endingColumnNumber = "9223372036854775807"
startingLineNumber = "486"
endingLineNumber = "486"
startingLineNumber = "490"
endingLineNumber = "490"
landmarkName = "ioRead(addr)"
landmarkType = "9">
</BreakpointContent>
@ -1083,8 +1083,8 @@
filePath = "src/dev/mem/mmio.h"
startingColumnNumber = "9223372036854775807"
endingColumnNumber = "9223372036854775807"
startingLineNumber = "804"
endingLineNumber = "804"
startingLineNumber = "808"
endingLineNumber = "808"
landmarkName = "unknown"
landmarkType = "0">
</BreakpointContent>
@ -1099,28 +1099,12 @@
filePath = "src/dev/mem/mmio.h"
startingColumnNumber = "9223372036854775807"
endingColumnNumber = "9223372036854775807"
startingLineNumber = "808"
endingLineNumber = "808"
startingLineNumber = "812"
endingLineNumber = "812"
landmarkName = "memread16_low(addr)"
landmarkType = "9">
</BreakpointContent>
</BreakpointProxy>
<BreakpointProxy
BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
<BreakpointContent
uuid = "76F537F4-0C3F-4323-AEDB-0C1A969D8120"
shouldBeEnabled = "No"
ignoreCount = "0"
continueAfterRunningActions = "No"
filePath = "src/dev/mem/mmio.h"
startingColumnNumber = "9223372036854775807"
endingColumnNumber = "9223372036854775807"
startingLineNumber = "823"
endingLineNumber = "823"
landmarkName = "memread(addr)"
landmarkType = "9">
</BreakpointContent>
</BreakpointProxy>
<BreakpointProxy
BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
<BreakpointContent
@ -1131,8 +1115,8 @@
filePath = "src/dev/mem/mmio.h"
startingColumnNumber = "9223372036854775807"
endingColumnNumber = "9223372036854775807"
startingLineNumber = "787"
endingLineNumber = "787"
startingLineNumber = "791"
endingLineNumber = "791"
landmarkName = "unknown"
landmarkType = "0">
</BreakpointContent>
@ -1147,8 +1131,8 @@
filePath = "src/dev/mem/mmio.h"
startingColumnNumber = "9223372036854775807"
endingColumnNumber = "9223372036854775807"
startingLineNumber = "497"
endingLineNumber = "497"
startingLineNumber = "501"
endingLineNumber = "501"
landmarkName = "ioRead(addr)"
landmarkType = "9">
</BreakpointContent>
@ -1163,22 +1147,6 @@
filePath = "src/dev/mem/mmio.h"
startingColumnNumber = "9223372036854775807"
endingColumnNumber = "9223372036854775807"
startingLineNumber = "812"
endingLineNumber = "812"
landmarkName = "memread16(addr)"
landmarkType = "9">
</BreakpointContent>
</BreakpointProxy>
<BreakpointProxy
BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
<BreakpointContent
uuid = "61A1B9CE-10AC-43DD-BAC7-C190399B279B"
shouldBeEnabled = "No"
ignoreCount = "0"
continueAfterRunningActions = "No"
filePath = "src/dev/mem/mmio.h"
startingColumnNumber = "9223372036854775807"
endingColumnNumber = "9223372036854775807"
startingLineNumber = "816"
endingLineNumber = "816"
landmarkName = "memread16(addr)"
@ -1188,23 +1156,23 @@
<BreakpointProxy
BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
<BreakpointContent
uuid = "44BAE963-091D-4168-AD62-5B31763B1BAB"
uuid = "61A1B9CE-10AC-43DD-BAC7-C190399B279B"
shouldBeEnabled = "No"
ignoreCount = "0"
continueAfterRunningActions = "No"
filePath = "src/dev/mem/mmio.h"
startingColumnNumber = "9223372036854775807"
endingColumnNumber = "9223372036854775807"
startingLineNumber = "530"
endingLineNumber = "530"
landmarkName = "ioRead(addr)"
startingLineNumber = "820"
endingLineNumber = "820"
landmarkName = "memread16(addr)"
landmarkType = "9">
</BreakpointContent>
</BreakpointProxy>
<BreakpointProxy
BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
<BreakpointContent
uuid = "7A128228-C27C-4BF5-860B-1B0279E4B270"
uuid = "44BAE963-091D-4168-AD62-5B31763B1BAB"
shouldBeEnabled = "No"
ignoreCount = "0"
continueAfterRunningActions = "No"
@ -1217,6 +1185,22 @@
landmarkType = "9">
</BreakpointContent>
</BreakpointProxy>
<BreakpointProxy
BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
<BreakpointContent
uuid = "7A128228-C27C-4BF5-860B-1B0279E4B270"
shouldBeEnabled = "No"
ignoreCount = "0"
continueAfterRunningActions = "No"
filePath = "src/dev/mem/mmio.h"
startingColumnNumber = "9223372036854775807"
endingColumnNumber = "9223372036854775807"
startingLineNumber = "538"
endingLineNumber = "538"
landmarkName = "ioRead(addr)"
landmarkType = "9">
</BreakpointContent>
</BreakpointProxy>
<BreakpointProxy
BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
<BreakpointContent
@ -1227,8 +1211,8 @@
filePath = "src/dev/mem/mmio.h"
startingColumnNumber = "9223372036854775807"
endingColumnNumber = "9223372036854775807"
startingLineNumber = "426"
endingLineNumber = "426"
startingLineNumber = "430"
endingLineNumber = "430"
landmarkName = "ioRead(addr)"
landmarkType = "9">
</BreakpointContent>
@ -1243,57 +1227,25 @@
filePath = "src/cpu/6502.c"
startingColumnNumber = "9223372036854775807"
endingColumnNumber = "9223372036854775807"
startingLineNumber = "772"
endingLineNumber = "772"
startingLineNumber = "775"
endingLineNumber = "775"
landmarkName = "m6502_Run()"
landmarkType = "9">
</BreakpointContent>
</BreakpointProxy>
<BreakpointProxy
BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
<BreakpointContent
uuid = "6B91B46F-ADF4-4578-AB06-5B47325DBB17"
shouldBeEnabled = "No"
ignoreCount = "0"
continueAfterRunningActions = "No"
filePath = "src/cpu/6502.c"
startingColumnNumber = "9223372036854775807"
endingColumnNumber = "9223372036854775807"
startingLineNumber = "959"
endingLineNumber = "959"
landmarkName = "m6502_ColdReset(bundlePath, romFileName)"
landmarkType = "9">
</BreakpointContent>
</BreakpointProxy>
<BreakpointProxy
BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
<BreakpointContent
uuid = "58313E4A-D7F7-4DF8-AC43-E3D5609001DF"
shouldBeEnabled = "Yes"
ignoreCount = "0"
continueAfterRunningActions = "No"
filePath = "src/cpu/6502.c"
startingColumnNumber = "9223372036854775807"
endingColumnNumber = "9223372036854775807"
startingLineNumber = "959"
endingLineNumber = "959"
landmarkName = "m6502_ColdReset(bundlePath, romFileName)"
landmarkType = "9">
</BreakpointContent>
</BreakpointProxy>
<BreakpointProxy
BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
<BreakpointContent
uuid = "81ABEFF0-8A2F-499D-B0CC-BDF6DE53217A"
shouldBeEnabled = "Yes"
shouldBeEnabled = "No"
ignoreCount = "0"
continueAfterRunningActions = "No"
filePath = "src/cpu/6502.c"
startingColumnNumber = "9223372036854775807"
endingColumnNumber = "9223372036854775807"
startingLineNumber = "841"
endingLineNumber = "841"
landmarkName = "m6502_Run()"
startingLineNumber = "844"
endingLineNumber = "844"
landmarkName = "getFileSize(fullPath)"
landmarkType = "9">
</BreakpointContent>
</BreakpointProxy>
@ -1301,14 +1253,14 @@
BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
<BreakpointContent
uuid = "2DBE73CE-4A30-49DA-95C6-10E1A928BB30"
shouldBeEnabled = "Yes"
shouldBeEnabled = "No"
ignoreCount = "0"
continueAfterRunningActions = "No"
filePath = "src/dev/mem/mmio.h"
startingColumnNumber = "9223372036854775807"
endingColumnNumber = "9223372036854775807"
startingLineNumber = "414"
endingLineNumber = "414"
startingLineNumber = "418"
endingLineNumber = "418"
landmarkName = "ioRead(addr)"
landmarkType = "9">
</BreakpointContent>
@ -1317,15 +1269,15 @@
BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
<BreakpointContent
uuid = "FBD620D0-F2F2-44DA-AC1C-C7C2CFAEA87D"
shouldBeEnabled = "Yes"
shouldBeEnabled = "No"
ignoreCount = "0"
continueAfterRunningActions = "No"
filePath = "src/cpu/6502.c"
startingColumnNumber = "9223372036854775807"
endingColumnNumber = "9223372036854775807"
startingLineNumber = "890"
endingLineNumber = "890"
landmarkName = "getFileSize(fullPath)"
startingLineNumber = "893"
endingLineNumber = "893"
landmarkName = "m6502_ColdReset(bundlePath, romFileName)"
landmarkType = "9">
</BreakpointContent>
</BreakpointProxy>
@ -1393,5 +1345,69 @@
landmarkType = "7">
</BreakpointContent>
</BreakpointProxy>
<BreakpointProxy
BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
<BreakpointContent
uuid = "F40D9227-617A-468F-97E2-E0222B629329"
shouldBeEnabled = "No"
ignoreCount = "0"
continueAfterRunningActions = "No"
filePath = "src/dev/mem/mmio.h"
startingColumnNumber = "9223372036854775807"
endingColumnNumber = "9223372036854775807"
startingLineNumber = "331"
endingLineNumber = "331"
landmarkName = "textPageSelect()"
landmarkType = "9">
</BreakpointContent>
</BreakpointProxy>
<BreakpointProxy
BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
<BreakpointContent
uuid = "FDB4D6D5-918D-4D77-BF67-C2770D05D393"
shouldBeEnabled = "Yes"
ignoreCount = "0"
continueAfterRunningActions = "No"
filePath = "src/dev/mem/mmio.h"
startingColumnNumber = "9223372036854775807"
endingColumnNumber = "9223372036854775807"
startingLineNumber = "333"
endingLineNumber = "333"
landmarkName = "textPageSelect()"
landmarkType = "9">
</BreakpointContent>
</BreakpointProxy>
<BreakpointProxy
BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
<BreakpointContent
uuid = "66885E40-F885-4FBA-9685-7056F0E1C676"
shouldBeEnabled = "Yes"
ignoreCount = "0"
continueAfterRunningActions = "No"
filePath = "src/dev/mem/mmio.h"
startingColumnNumber = "9223372036854775807"
endingColumnNumber = "9223372036854775807"
startingLineNumber = "931"
endingLineNumber = "931"
landmarkName = "dest_abs()"
landmarkType = "9">
</BreakpointContent>
</BreakpointProxy>
<BreakpointProxy
BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
<BreakpointContent
uuid = "333F20D2-3A96-48D4-9800-8833CB83E09B"
shouldBeEnabled = "Yes"
ignoreCount = "0"
continueAfterRunningActions = "No"
filePath = "src/cpu/6502.c"
startingColumnNumber = "9223372036854775807"
endingColumnNumber = "9223372036854775807"
startingLineNumber = "472"
endingLineNumber = "472"
landmarkName = "m6502_Step()"
landmarkType = "9">
</BreakpointContent>
</BreakpointProxy>
</Breakpoints>
</Bucket>

View File

@ -81,12 +81,6 @@ disassembly_t disassembly;
#include "../util/disassembler.h"
#include "../dev/mem/mmio.h"
uint16_t videoShadow [0x1000];
uint32_t videoMem [0x2000];
uint32_t * videoMemPtr = videoMem;
uint16_t HiResLineAddrTbl [0x2000];
INLINE void set_flags_N( const uint8_t test ) {
m6502.N = BITTEST(test, 7);
@ -124,62 +118,12 @@ INLINE void set_flags_NZC( const int16_t test ) {
set_flags_C(test);
}
//INLINE void set_flags_NZCV( int test ) {
// set_flags_NZC(test);
// set_flags_V(test);
//}
void initHiResLineAddresses() {
uint16_t i = 0;
for ( uint16_t x = 0; x <= 0x50; x+= 0x28 ) {
for ( uint16_t y = 0; y <= 0x380; y += 0x80 ) {
for ( uint16_t z = 0; z <= 0x1C00; z += 0x400) {
HiResLineAddrTbl[i++] = x + y + z;
}
}
}
}
typedef struct {
uint8_t L;
uint8_t H;
} bytes_t;
void hires_Update () {
// lines
int videoMemIndex = 0;
for( int y = 0; y < 192; y++ ) {
// 16 bit blocks of columns
for ( int x = 0; x < 20; x++ ) {
// odd
bytes_t block = * (bytes_t*)(& RAM[ HiResLineAddrTbl[y * 20] + x * 2 ]);
for ( uint8_t bit = 0; bit < 7; bit++ ) {
uint8_t bitMask = 1 << bit;
if (block.L & bitMask) {
videoMem[videoMemIndex++] = 0x7F12A208;
}
else { // 28CD41
videoMem[videoMemIndex++] = 0x00000000;
}
}
// even
for ( uint8_t bit = 0; bit < 7; bit++ ) {
uint8_t bitMask = 1 << bit;
if (block.H & bitMask) {
videoMem[videoMemIndex++] = 0x7F12A208;
}
else { // 28CD41
videoMem[videoMemIndex++] = 0x00000000;
}
}
}
}
}
/**
Instruction Implementations

View File

@ -146,7 +146,7 @@ extern uint8_t * const RAM;
extern uint8_t * const MEM; // Pointer to the Shadow Memory Map so we can use this from Swift//extern uint8_t * AUX_VID_RAM;
extern uint32_t * videoMemPtr;
extern void hires_Update(void);
//extern void hires_Update(void);
extern double mips;
extern double mhz;

View File

@ -18,7 +18,7 @@ INLINE void PUSH( uint8_t src ) {
}
INLINE uint8_t POP() {
return RDLOMEM[ stack_base_addr | ++m6502.SP ];
return Apple2_64K_MEM[ stack_base_addr | ++m6502.SP ];
}

View File

@ -17,8 +17,8 @@ disk_t disk = {
0, // clk_since_last_read
};
const int diskAccelerator_frames = 3;
int diskAccelerator_count = 10;
const int diskAccelerator_frames = 1;
int diskAccelerator_count = 10000;
int diskAccelerator_speed = 25; // less than actual CPU speed means no acceleration
//const unsigned long long clk_6502_per_frm_diskAccelerator = 25 * M / fps; // disk acceleration bumps up CPU clock to 25 MHz
//const unsigned long long clk_diskAcceleratorTimeout = 1000ULL;
@ -45,6 +45,13 @@ const int position_to_direction[8][8] = {
};
void disk_accelerator_speedup() {
if ( diskAccelerator_speed > clk_6502_per_frm ) {
clk_6502_per_frm = diskAccelerator_speed * M / fps; // clk_6502_per_frm_diskAccelerator;
diskAccelerator_count = diskAccelerator_frames;
}
}
void disk_phase() {
int position = magnet_to_Poistion[disk.phase.magnet];
@ -64,12 +71,7 @@ void disk_phase() {
// printf(", p:%d d:%d l:%d: ph:%u trk:%u)", position, direction, lastPosition, phase.count, woz_tmap.phase[phase.count]);
disk.clk_last_access = m6502.clktime;
if ( diskAccelerator_speed > clk_6502_per_frm ) {
// clk_6502_per_frm = clk_6502_per_frm_diskAccelerator;
clk_6502_per_frm = diskAccelerator_speed * M / fps; // clk_6502_per_frm_diskAccelerator;
diskAccelerator_count = diskAccelerator_frames;
}
disk_accelerator_speedup();
}
else {
// invalid magnet config
@ -82,11 +84,8 @@ void disk_phase() {
uint8_t disk_read() {
dbgPrintf("io_DISK_READ (S%u)\n", 6);
disk.clk_last_access = m6502.clktime;
if ( diskAccelerator_speed > 2 ) {
clk_6502_per_frm = diskAccelerator_speed * M / fps; // clk_6502_per_frm_diskAccelerator;
diskAccelerator_count = diskAccelerator_frames;
}
disk_accelerator_speedup();
return woz_read();
}

View File

@ -792,7 +792,7 @@ INLINE void ioWrite( uint16_t addr, uint8_t val ) {
Naive implementation of RAM read from address
**/
INLINE uint8_t memread8_low( uint16_t addr ) {
return RDLOMEM[addr];
return Apple2_64K_MEM[addr];
}
INLINE uint8_t memread8_high( uint16_t addr ) {
return RDHIMEM[addr];
@ -808,7 +808,7 @@ INLINE uint8_t memread8( uint16_t addr ) {
Naive implementation of RAM read from address
**/
INLINE uint16_t memread16_low( uint16_t addr ) {
return * (uint16_t*) ( RDLOMEM + addr );
return * (uint16_t*) ( Apple2_64K_MEM + addr );
}
INLINE uint16_t memread16_high( uint16_t addr ) {
return * (uint16_t*) ( RDHIMEM + addr );