MCPcopy Create free account
hub / github.com/AppleWin/AppleWin / IOWrite_C07x

Function IOWrite_C07x

source/Memory.cpp:783–823  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

781}
782
783static BYTE __stdcall IOWrite_C07x(WORD pc, WORD addr, BYTE bWrite, BYTE d, ULONG nExecutedCycles)
784{
785 // Apple//e TRM, pg-258: "Reading or writing any address in the range $C070-$C07F also triggers the paddle timer and resets the VBLINT(*)." (*) //c only!
786 JoyResetPosition(nExecutedCycles); //$C07X Analog input reset
787
788 switch (addr & 0xf)
789 {
790 case 0x0: return IO_Null(pc, addr, bWrite, d, nExecutedCycles);
791#ifdef RAMWORKS
792 case 0x1: return MemSetPaging(pc, addr, bWrite, d, nExecutedCycles); // extended memory card set page
793 case 0x2: return IO_Null(pc, addr, bWrite, d, nExecutedCycles);
794 case 0x3: return MemSetPaging(pc, addr, bWrite, d, nExecutedCycles); // Ramworks III set page
795#else
796 case 0x1: return IO_Null(pc, addr, bWrite, d, nExecutedCycles);
797 case 0x2: return IO_Null(pc, addr, bWrite, d, nExecutedCycles);
798 case 0x3: return IO_Null(pc, addr, bWrite, d, nExecutedCycles);
799#endif
800 case 0x4: return IO_Null(pc, addr, bWrite, d, nExecutedCycles);
801 case 0x5: return IO_Null(pc, addr, bWrite, d, nExecutedCycles);
802 case 0x6: return IO_Null(pc, addr, bWrite, d, nExecutedCycles);
803 case 0x7: return IO_Null(pc, addr, bWrite, d, nExecutedCycles);
804 case 0x8: return IO_Null(pc, addr, bWrite, d, nExecutedCycles);
805 case 0x9: return IO_Null(pc, addr, bWrite, d, nExecutedCycles);
806 case 0xA: return IO_Null(pc, addr, bWrite, d, nExecutedCycles);
807 case 0xB: return IO_Null(pc, addr, bWrite, d, nExecutedCycles);
808 case 0xC: return IO_Null(pc, addr, bWrite, d, nExecutedCycles);
809 case 0xD: return IO_Null(pc, addr, bWrite, d, nExecutedCycles);
810 case 0xE: if (IS_APPLE2C())
811 SetMemMode(g_memmode | MF_IOUDIS); // On: disable IOU access for addresses $C058 to $C05F; enable access to DHIRES switch
812 else
813 return IO_Null(pc, addr, bWrite, d, nExecutedCycles);
814 break;
815 case 0xF: if (IS_APPLE2C())
816 SetMemMode(g_memmode & ~MF_IOUDIS); // Off: enable IOU access for addresses $C058 to $C05F; disable access to DHIRES switch
817 else
818 return IO_Null(pc, addr, bWrite, d, nExecutedCycles);
819 break;
820 }
821
822 return 0;
823}
824
825//-----------------------------------------------------------------------------
826

Callers

nothing calls this directly

Calls 4

JoyResetPositionFunction · 0.85
IO_NullFunction · 0.85
MemSetPagingFunction · 0.85
SetMemModeFunction · 0.85

Tested by

no test coverage detected