mirror of
https://github.com/ksherlock/mpw.git
synced 2025-08-15 10:27:40 +00:00
fgetenv / fsetenv
This commit is contained in:
@@ -47,6 +47,11 @@ namespace SANE
|
|||||||
using std::to_string;
|
using std::to_string;
|
||||||
|
|
||||||
|
|
||||||
|
namespace {
|
||||||
|
|
||||||
|
uint16_t Environment = 0;
|
||||||
|
}
|
||||||
|
|
||||||
// long double is an 80-bit extended with an extra 48-bits of 0 padding.
|
// long double is an 80-bit extended with an extra 48-bits of 0 padding.
|
||||||
typedef long double extended;
|
typedef long double extended;
|
||||||
|
|
||||||
@@ -667,6 +672,36 @@ using std::to_string;
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#pragma mark - environment
|
||||||
|
|
||||||
|
uint16_t fgetenv(void)
|
||||||
|
{
|
||||||
|
uint32_t address;
|
||||||
|
uint16_t op;
|
||||||
|
|
||||||
|
StackFrame<6>(address, op);
|
||||||
|
Log(" FGETENV(%08x)\n", address);
|
||||||
|
|
||||||
|
memoryWriteWord(Environment, address);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
uint16_t fsetenv(void)
|
||||||
|
{
|
||||||
|
uint32_t address;
|
||||||
|
uint16_t value;
|
||||||
|
uint16_t op;
|
||||||
|
|
||||||
|
|
||||||
|
StackFrame<6>(address, op);
|
||||||
|
value = memoryReadWord(address);
|
||||||
|
Log(" FSETENV(%08x (%04x))\n", address, value);
|
||||||
|
|
||||||
|
Environment = value;
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
extern "C" void cpuSetFlagsAbs(UWO f);
|
extern "C" void cpuSetFlagsAbs(UWO f);
|
||||||
uint16_t fp68k(uint16_t trap)
|
uint16_t fp68k(uint16_t trap)
|
||||||
@@ -677,7 +712,7 @@ using std::to_string;
|
|||||||
sp = cpuGetAReg(7);
|
sp = cpuGetAReg(7);
|
||||||
op = memoryReadWord(sp);
|
op = memoryReadWord(sp);
|
||||||
|
|
||||||
Log("%04x FP68K(%04x)\n", op);
|
Log("%04x FP68K(%04x)\n", trap, op);
|
||||||
|
|
||||||
cpuSetFlagsAbs(0x4);
|
cpuSetFlagsAbs(0x4);
|
||||||
|
|
||||||
@@ -756,6 +791,8 @@ using std::to_string;
|
|||||||
break;
|
break;
|
||||||
|
|
||||||
|
|
||||||
|
case 0x0003: return fgetenv();
|
||||||
|
case 0x0001: return fsetenv();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user