/[VRac]/M6502/perl.c
This is repository of my old source code which isn't updated any more. Go to git.rot13.org for current projects!
ViewVC logotype

Diff of /M6502/perl.c

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 26 by dpavlin, Mon Jul 30 14:23:22 2007 UTC revision 31 by dpavlin, Mon Jul 30 18:07:29 2007 UTC
# Line 29  void update_R(M6502 *R) { Line 29  void update_R(M6502 *R) {
29  /** required if there is a #define FAST_RDOP.               **/  /** required if there is a #define FAST_RDOP.               **/
30  /************************************ TO BE WRITTEN BY USER **/  /************************************ TO BE WRITTEN BY USER **/
31    
32    byte mem(word Addr) {
33            byte byte;
34            int count;
35            dSP;
36            ENTER;
37            SAVETMPS;
38            PUSHMARK(SP);
39            XPUSHs( sv_2mortal( newSViv( Addr ) ) );
40            PUTBACK;
41            count = call_pv("M6502::read", G_ARRAY );
42            if ( count != 1 ) {
43                    printf("expect 1 return value, got %d", count);
44                    exit(1);
45            }
46            printf("got %d values\n", count);
47            SPAGAIN;
48            SV *sv;
49            sv = POPs;
50            byte = SvIV(sv);
51            FREETMPS;
52            LEAVE;
53            printf("Rd6502(%04x) = %02x\n", Addr, byte);
54            return byte;
55    }
56    
57  byte Rd6502(register word Addr) {  byte Rd6502(register word Addr) {
58          byte Value;          byte Value;
59          Value = 0x42;          Value = mem(Addr);
60          printf("Rd6502(%04x,%02x)\n", Addr, Value);          return Value;
61  }  }
62    
63  void Wr6502(register word Addr,register byte Value) {  void Wr6502(register word Addr,register byte Value) {
64          printf("Wr6502(%04x,%02x)\n", Addr, Value);          printf("Wr6502(%04x,%02x)\n", Addr, Value);
65            dSP;
66            ENTER;
67            SAVETMPS;
68            PUSHMARK(SP);
69            XPUSHs( sv_2mortal( newSViv( Addr ) ) );
70            XPUSHs( sv_2mortal( newSViv( Value ) ) );
71            PUTBACK;
72            call_pv("M6502::write", G_DISCARD );
73            FREETMPS;
74            LEAVE;
75  }  }
76    
77  byte Op6502(register word Addr) {  byte Op6502(register word Addr) {
78          byte Op;          byte Op;
79          Op = 0xff;          Op = mem(Addr);
80          printf("Op6502(%04x,%02x)\n", Addr, Op);          printf("Op6502(%04x,%02x)\n", Addr, Op);
81          dump_R;          dump_R;
82  }  }
# Line 56  byte Op6502(register word Addr) { Line 91  byte Op6502(register word Addr) {
91  byte Loop6502(register M6502 *R) {  byte Loop6502(register M6502 *R) {
92          printf("Loop6502\n");          printf("Loop6502\n");
93          dump_R;          dump_R;
94            return INT_NONE;
95  }  }
96    
97  /** Patch6502() **********************************************/  /** Patch6502() **********************************************/
# Line 68  byte Loop6502(register M6502 *R) { Line 104  byte Loop6502(register M6502 *R) {
104  byte Patch6502(register byte Op,register M6502 *R) {  byte Patch6502(register byte Op,register M6502 *R) {
105          printf("Patch6502(%02x)\n", Op);          printf("Patch6502(%02x)\n", Op);
106          dump_R;          dump_R;
107            return 0;
108  }  }
109    
110  /**  /**
# Line 76  byte Patch6502(register byte Op,register Line 113  byte Patch6502(register byte Op,register
113   **/   **/
114    
115  int main(int argc, char **argv) {  int main(int argc, char **argv) {
116          char *command_line[] = {"", "-e",          char *command_line[] = {"", "-e", EMU_START };
                 "use M6502; print \"Loaded M6502 module\n\";"};  
117          my_perl = perl_alloc();          my_perl = perl_alloc();
118          perl_construct(my_perl);          perl_construct(my_perl);
119          if (perl_parse(my_perl, NULL, 3, command_line, (char **)NULL)) {          if (perl_parse(my_perl, xs_init, 3, command_line, (char **)NULL)) {
120                  printf("Failed to parse\n");                  printf("Failed to parse initial: %s\n", EMU_START );
121                  return 0;                  return 0;
122          }          }
123          perl_run(my_perl);          perl_run(my_perl);

Legend:
Removed from v.26  
changed lines
  Added in v.31

  ViewVC Help
Powered by ViewVC 1.1.26