home *** CD-ROM | disk | FTP | other *** search
- #include <cpu_prog_model.h>
- #include <cpu6502_addrm.h>
-
-
- #define FALSE 0
- #define TRUE 1
-
-
- void BRK( code)
- PM *code;
- {
- code->Br = TRUE;
-
- code->Me [stack_address( code)] = (code->PC + 1) >> 8;
- (code->SP)--;
- code->Me [stack_address( code)] = (code->PC + 1) & 0xFF;
- (code->SP)--;
- code->Me [stack_address( code)] = code->Ne << 6 |
- code->Ov << 5 |
- code->Br << 4 |
- code->De << 3 |
- code->In << 2 |
- code->Ze << 1 |
- code->Ca ;
- (code->SP)--;
- code->PC = code->Me [0xFFFE] | code->Me [0xFFFF] << 8;
- }
-
- void JSR( code)
- PM *code;
- {
- unsigned short int address;
- short dummy;
-
- address = abs_address( code);
- (code->PC)--;
-
- code->Me [stack_address( code)] = code->PC >> 8;
- (code->SP)--;
- code->Me [stack_address( code)] = (code->PC) & 0xFF;
- (code->SP)--;
-
- code->PC = address;
- mem_check( address, &dummy, code, Func_JSR);
- }
-
- void PHA( code)
- PM *code;
- {
- code->Me [stack_address( code)] = code->Ac;
- (code->SP)--;
- }
-
- void PHP( code)
- PM *code;
- {
- code->Me [stack_address( code)] = code->Ne << 6 |
- code->Ov << 5 |
- code->Br << 4 |
- code->De << 3 |
- code->In << 2 |
- code->Ze << 1 | code->Ca;
- (code->SP)--;
- }
-
- void PLA( code)
- PM *code;
- {
- (code->SP)++;
- code->Ac = code->Me [stack_address( code)];
- set_neg_zero_stat( code, code->Ac);
- }
-
- void PLP( code)
- PM *code;
- {
- short temp_value;
-
- (code->SP)++;
- temp_value = code->Me [stack_address( code)];
-
- code->Ca = temp_value & 0x1;
- code->Ze = (temp_value >> 1) & 0x1;
- code->In = (temp_value >> 2) & 0x1;
- code->De = (temp_value >> 3) & 0x1;
- code->Br = (temp_value >> 4) & 0x1;
- code->Ov = (temp_value >> 5) & 0x1;
- code->Ne = (temp_value >> 6) & 0x1;
- }
-
- void RTS( code)
- PM *code;
- {
- short dummy;
-
- (code->SP)++;
- code->PC = code->Me [stack_address( code)] |
- code->Me [stack_address( code) + 1] << 8;
- (code->SP)++;
- (code->PC)++;
-
- mem_check( code->PC, &dummy, code, Func_JMP);
- }
-
-
-