File tree Expand file tree Collapse file tree 5 files changed +231
-10
lines changed Expand file tree Collapse file tree 5 files changed +231
-10
lines changed Original file line number Diff line number Diff line change @@ -319,10 +319,16 @@ void clock() {
319
319
320
320
cycles = lookup [Byte .toUnsignedInt (opcode )].cycles ;
321
321
322
- try {
323
- this .getClass ().getMethod (lookup [Byte .toUnsignedInt (opcode )].addressMode ).invoke (this );
324
- this .getClass ().getMethod (lookup [Byte .toUnsignedInt (opcode )].opcode ).invoke (this );
325
- } catch (Exception e ) {e .printStackTrace ();}
322
+ //Execute the functions corresponding to the addressing mode and opcode
323
+
324
+ //this.getClass().getMethod(lookup[Byte.toUnsignedInt(opcode)].addressMode).invoke(this);
325
+ //this.getClass().getMethod(lookup[Byte.toUnsignedInt(opcode)].opcode).invoke(this);
326
+
327
+ Instruction currentInstruction = lookup [Byte .toUnsignedInt (opcode )];
328
+
329
+ executeAddressModeFunction (currentInstruction .addressMode );
330
+ executeOpcodeFunction (currentInstruction .opcode );
331
+
326
332
} else {
327
333
if (interruptRequested )
328
334
irq ();
@@ -361,6 +367,226 @@ void clock() {
361
367
cycles = 0 ;
362
368
}
363
369
}
370
+
371
+ void executeAddressModeFunction (String addressMode ) {
372
+ switch (addressMode ) {
373
+ case "IMP" :
374
+ IMP ();
375
+ break ;
376
+ case "IMM" :
377
+ IMM ();
378
+ break ;
379
+ case "ZPP" :
380
+ ZPP ();
381
+ break ;
382
+ case "ZPX" :
383
+ ZPX ();
384
+ break ;
385
+ case "ZPY" :
386
+ ZPY ();
387
+ break ;
388
+ case "REL" :
389
+ REL ();
390
+ break ;
391
+ case "ABS" :
392
+ ABS ();
393
+ break ;
394
+ case "ABX" :
395
+ ABX ();
396
+ break ;
397
+ case "ABY" :
398
+ ABY ();
399
+ break ;
400
+ case "IND" :
401
+ IND ();
402
+ break ;
403
+ case "IZX" :
404
+ IZX ();
405
+ break ;
406
+ case "IZY" :
407
+ IZY ();
408
+ break ;
409
+ default :
410
+ System .out .println ("Something has gone seriously wrong! AddressMode: " +addressMode );
411
+ break ;
412
+ }
413
+ }
414
+
415
+ void executeOpcodeFunction (String opcode ) {
416
+ switch (opcode ) {
417
+ case "ADC" :
418
+ ADC ();
419
+ break ;
420
+ case "AND" :
421
+ AND ();
422
+ break ;
423
+ case "ASL" :
424
+ ASL ();
425
+ break ;
426
+ case "BCC" :
427
+ BCC ();
428
+ break ;
429
+ case "BCS" :
430
+ BCS ();
431
+ break ;
432
+ case "BEQ" :
433
+ BEQ ();
434
+ break ;
435
+ case "BIT" :
436
+ BIT ();
437
+ break ;
438
+ case "BMI" :
439
+ BMI ();
440
+ break ;
441
+ case "BNE" :
442
+ BNE ();
443
+ break ;
444
+ case "BPL" :
445
+ BPL ();
446
+ break ;
447
+ case "BRK" :
448
+ BRK ();
449
+ break ;
450
+ case "BVC" :
451
+ BVC ();
452
+ break ;
453
+ case "BVS" :
454
+ BVS ();
455
+ break ;
456
+ case "CLC" :
457
+ CLC ();
458
+ break ;
459
+ case "CLD" :
460
+ CLD ();
461
+ break ;
462
+ case "CLI" :
463
+ CLI ();
464
+ break ;
465
+ case "CLV" :
466
+ CLV ();
467
+ break ;
468
+ case "CMP" :
469
+ CMP ();
470
+ break ;
471
+ case "CPX" :
472
+ CPX ();
473
+ break ;
474
+ case "CPY" :
475
+ CPY ();
476
+ break ;
477
+ case "DEC" :
478
+ DEC ();
479
+ break ;
480
+ case "DEX" :
481
+ DEX ();
482
+ break ;
483
+ case "DEY" :
484
+ DEY ();
485
+ break ;
486
+ case "EOR" :
487
+ EOR ();
488
+ break ;
489
+ case "INC" :
490
+ INC ();
491
+ break ;
492
+ case "INX" :
493
+ INX ();
494
+ break ;
495
+ case "INY" :
496
+ INY ();
497
+ break ;
498
+ case "JMP" :
499
+ JMP ();
500
+ break ;
501
+ case "JSR" :
502
+ JSR ();
503
+ break ;
504
+ case "LDA" :
505
+ LDA ();
506
+ break ;
507
+ case "LDX" :
508
+ LDX ();
509
+ break ;
510
+ case "LDY" :
511
+ LDY ();
512
+ break ;
513
+ case "LSR" :
514
+ LSR ();
515
+ break ;
516
+ case "NOP" :
517
+ NOP ();
518
+ break ;
519
+ case "ORA" :
520
+ ORA ();
521
+ break ;
522
+ case "PHA" :
523
+ PHA ();
524
+ break ;
525
+ case "PHP" :
526
+ PHP ();
527
+ break ;
528
+ case "PLA" :
529
+ PLA ();
530
+ break ;
531
+ case "PLP" :
532
+ PLP ();
533
+ break ;
534
+ case "ROL" :
535
+ ROL ();
536
+ break ;
537
+ case "ROR" :
538
+ ROR ();
539
+ break ;
540
+ case "RTI" :
541
+ RTI ();
542
+ break ;
543
+ case "RTS" :
544
+ RTS ();
545
+ break ;
546
+ case "SBC" :
547
+ SBC ();
548
+ break ;
549
+ case "SEC" :
550
+ SEC ();
551
+ break ;
552
+ case "SED" :
553
+ SED ();
554
+ break ;
555
+ case "SEI" :
556
+ SEI ();
557
+ break ;
558
+ case "STA" :
559
+ STA ();
560
+ break ;
561
+ case "STX" :
562
+ STX ();
563
+ break ;
564
+ case "STY" :
565
+ STY ();
566
+ break ;
567
+ case "TAX" :
568
+ TAX ();
569
+ break ;
570
+ case "TAY" :
571
+ TAY ();
572
+ break ;
573
+ case "TSX" :
574
+ TSX ();
575
+ break ;
576
+ case "TXA" :
577
+ TXA ();
578
+ break ;
579
+ case "TXS" :
580
+ TXS ();
581
+ break ;
582
+ case "TYA" :
583
+ TYA ();
584
+ break ;
585
+ case "XXX" :
586
+ XXX ();
587
+ break ;
588
+ }
589
+ }
364
590
365
591
//Input Signal Handlers
366
592
void reset () {
Original file line number Diff line number Diff line change 2
2
import java .awt .event .*;
3
3
import javax .swing .JPanel ;
4
4
import javax .swing .Timer ;
5
- import java .io .File ;
6
5
import java .io .IOException ;
7
6
8
7
public class DisplayPanel extends JPanel implements ActionListener , KeyListener {
Original file line number Diff line number Diff line change 8
8
import javax .swing .*;
9
9
10
10
public class EaterEmulator extends JFrame implements ActionListener {
11
- public static String versionString = "2.5 " ;
11
+ public static String versionString = "2.6 " ;
12
12
public static boolean debug = false ;
13
13
14
14
//Swing Things
Original file line number Diff line number Diff line change 5
5
import java .awt .event .ActionListener ;
6
6
import java .io .File ;
7
7
import java .io .InputStream ;
8
- import java .net .URISyntaxException ;
9
- import javax .imageio .ImageIO ;
10
8
import java .nio .file .*;
11
9
import java .util .Scanner ;
12
10
@@ -122,7 +120,6 @@ public GPU(boolean isVisible) {
122
120
this (new RAM (),isVisible );
123
121
}
124
122
125
- @ SuppressWarnings ("unused" )
126
123
public static void main (String [] args ) {
127
124
GPU gpu = new GPU (true );
128
125
gpu .setVisible (true );
Original file line number Diff line number Diff line change 5
5
import java .awt .GraphicsEnvironment ;
6
6
import java .awt .event .ActionEvent ;
7
7
import java .awt .event .ActionListener ;
8
- import java .io .File ;
9
8
import java .io .IOException ;
10
9
import java .util .Arrays ;
11
10
import java .util .Scanner ;
You can’t perform that action at this time.
0 commit comments