X-Git-Url: http://gitweb.hugovil.com/?a=blobdiff_plain;f=src%2Fpsw.c;h=4dd2a678bf7c683fdb874cae081c5c8db455fb1d;hb=5905b40585298defb8e4230adfe90dfbccb465b9;hp=2210d85218982422b5986173351b7a666a831141;hpb=84075f7a1709b2d05858dc5f866fb4e4eb385ce0;p=emu8051.git diff --git a/src/psw.c b/src/psw.c index 2210d85..4dd2a67 100644 --- a/src/psw.c +++ b/src/psw.c @@ -28,36 +28,92 @@ psw_write_cy(int cy) u_int8_t psw = memory_read8(INT_MEM_ID, _PSW_); if (cy) - psw |= 0x80; /* Set */ + psw |= PSW_FLAG_CY; /* Set */ else - psw &= ~0x80; /* Clear */ + psw &= ~PSW_FLAG_CY; /* Clear */ memory_write8(INT_MEM_ID, _PSW_, psw); /* Save updated value */ } void psw_set_cy(void) +{ + psw_write_cy(1); +} + +void +psw_clr_cy(void) +{ + psw_write_cy(0); +} + +/* Returns 0 or 1 */ +int +psw_read_cy(void) +{ + return memory_read8(INT_MEM_ID, _PSW_) >> PSW_BIT_CY; +} + +void +psw_write_ac(int ac) { u_int8_t psw = memory_read8(INT_MEM_ID, _PSW_); - psw |= 0x80; + if (ac) + psw |= PSW_FLAG_AC; /* Set */ + else + psw &= ~PSW_FLAG_AC; /* Clear */ memory_write8(INT_MEM_ID, _PSW_, psw); /* Save updated value */ } void -psw_clr_cy(void) +psw_set_ac(void) +{ + psw_write_ac(1); +} + +void +psw_clr_ac(void) +{ + psw_write_ac(0); +} + +/* Returns 0 or 1 */ +int +psw_read_ac(void) +{ + return memory_read8(INT_MEM_ID, _PSW_) >> PSW_BIT_AC; +} + +void +psw_write_ov(int ov) { u_int8_t psw = memory_read8(INT_MEM_ID, _PSW_); - psw &= ~0x80; + if (ov) + psw |= PSW_FLAG_OV; /* Set */ + else + psw &= ~PSW_FLAG_OV; /* Clear */ memory_write8(INT_MEM_ID, _PSW_, psw); /* Save updated value */ } +void +psw_set_ov(void) +{ + psw_write_ov(1); +} + +void +psw_clr_ov(void) +{ + psw_write_ov(0); +} + /* Returns 0 or 1 */ int -psw_read_cy(void) +psw_read_ov(void) { - return memory_read8(INT_MEM_ID, _PSW_) >> 7; + return memory_read8(INT_MEM_ID, _PSW_) >> PSW_BIT_OV; }