mirror of
https://github.com/trudnai/Steve2.git
synced 2025-02-17 02:30:43 +00:00
Merge branch 'work' of https://github.com/trudnai/Steve2 into work
This commit is contained in:
commit
7498489282
Binary file not shown.
Binary file not shown.
187
1
187
1
@ -1,187 +0,0 @@
|
||||
#!/usr/bin/perl
|
||||
|
||||
my $state = 'begin';
|
||||
|
||||
my $trk = 0;
|
||||
my $sec = 0;
|
||||
|
||||
my @sectorData = ();
|
||||
|
||||
my $reLDA_C08C = qr/LDA\s+\$C08C,X\t0x([8-9A-Fa-f][0-9A-Fa-f])/;
|
||||
my $reLDY_C08C = qr/LDY\s+\$C08C,X\t0x([0-9A-Fa-f]{2})\t0x([0-9A-Fa-f]{2})\t0x([8-9A-Fa-f][0-9A-F])/;
|
||||
|
||||
my $reSTA_0300 = qr/STA\s+\$0300,Y\t0x([0-9A-F]{2})\t0x([0-9A-F]{2})\t0x([0-9A-F]{2})/;
|
||||
my $reSTA_26Y = qr/STA\s+\(\$26\),Y\t0x([0-9A-F]{2})\t0x([0-9A-F]{2})\t0x([0-9A-F]{2})/;
|
||||
|
||||
|
||||
sub hexdump {
|
||||
my ($arr) = @_;
|
||||
|
||||
for($i = 0; $i < scalar(@{$arr}); $i++) {
|
||||
if ( $i % 16 == 0 ) {
|
||||
printf("\n%04X: ", $i);
|
||||
}
|
||||
printf("%02X ", @{$arr}[$i]);
|
||||
}
|
||||
|
||||
print "\n";
|
||||
}
|
||||
|
||||
|
||||
while (<>) {
|
||||
|
||||
chomp;
|
||||
s/[\n\r]+//;
|
||||
|
||||
print;
|
||||
|
||||
{ # for the redo to avoid print input twice
|
||||
|
||||
if ( $state eq 'begin' ) {
|
||||
if ( /LDA\s+\$C08C,X\t0xD5/ ) {
|
||||
print "\t marker D5";
|
||||
$state = 'loaded_D5';
|
||||
}
|
||||
}
|
||||
elsif ( $state eq 'loaded_D5' ) {
|
||||
if ( /LDA\s+\$C08C,X\t0xAA/ ) {
|
||||
print "\t marker AA";
|
||||
$state = 'loaded_AA';
|
||||
}
|
||||
elsif ( /$reLDA_C08C/ ) {
|
||||
$state = 'begin';
|
||||
redo;
|
||||
}
|
||||
}
|
||||
elsif ( $state eq 'loaded_AA' ) {
|
||||
if ( /LDA\s+\$C08C,X\t0x96/ ) {
|
||||
print "\t marker 96";
|
||||
$state = 'loaded_96';
|
||||
print "\t; sector marker";
|
||||
}
|
||||
elsif ( /$reLDA_C08C/ ) {
|
||||
$state = 'begin';
|
||||
redo;
|
||||
}
|
||||
}
|
||||
elsif ( $state eq 'loaded_96' ) {
|
||||
if ( /$reLDA_C08C/ ) {
|
||||
print "\t marker v1";
|
||||
$state = 'loaded_v1';
|
||||
}
|
||||
}
|
||||
elsif ( $state eq 'loaded_v1' ) {
|
||||
if ( /$reLDA_C08C/ ) {
|
||||
print "\t marker v2";
|
||||
$state = 'loaded_v2';
|
||||
}
|
||||
}
|
||||
elsif ( $state eq 'loaded_v2' ) {
|
||||
if ( /$reLDA_C08C/ ) {
|
||||
print "\t marker t1:$1";
|
||||
$trk = hex($1) << 1;
|
||||
$trk |= 1;
|
||||
$state = 'loaded_t1';
|
||||
}
|
||||
}
|
||||
elsif ( $state eq 'loaded_t1' ) {
|
||||
if ( /$reLDA_C08C/ ) {
|
||||
print "\t marker t2:$1";
|
||||
$trk &= hex($1);
|
||||
print "\t; trk:$trk";
|
||||
$state = 'loaded_t2';
|
||||
}
|
||||
}
|
||||
elsif ( $state eq 'loaded_t2' ) {
|
||||
if ( /$reLDA_C08C/ ) {
|
||||
print "\t marker s1:$1";
|
||||
$sec = hex($1) << 1;
|
||||
$sec |= 1;
|
||||
$state = 'loaded_s1';
|
||||
}
|
||||
}
|
||||
elsif ( $state eq 'loaded_s1' ) {
|
||||
if ( /$reLDA_C08C/ ) {
|
||||
print "\t marker s2:$1";
|
||||
$sec &= hex($1);
|
||||
print "\t; sec:$sec";
|
||||
$state = 'loaded_s2';
|
||||
}
|
||||
}
|
||||
|
||||
elsif ( $state eq 'loaded_s2' ) {
|
||||
if ( /LDA\s+\$C08C,X\t0xD5/ ) {
|
||||
print "\t marker D5";
|
||||
$state = 'waitingfor_AA';
|
||||
}
|
||||
elsif ( /EOR\s+#\$D5/ ) {
|
||||
$state = 'begin';
|
||||
redo;
|
||||
}
|
||||
}
|
||||
|
||||
elsif ( $state eq 'waitingfor_AA' ) {
|
||||
if ( /LDA\s+\$C08C,X\t0xAA/ ) {
|
||||
print "\t marker AA 2";
|
||||
$state = 'waitingfor_AD';
|
||||
}
|
||||
elsif ( /$reLDA_C08C/ ) {
|
||||
$state = 'begin';
|
||||
redo;
|
||||
}
|
||||
}
|
||||
|
||||
elsif ( $state eq 'waitingfor_AD' ) {
|
||||
if ( /LDA\s+\$C08C,X\t0xAD/ ) {
|
||||
print "\t marker AD";
|
||||
$state = 'loaded_AD';
|
||||
print "\t; sector data marker";
|
||||
}
|
||||
elsif ( /EOR\s+#\$D5/ ) {
|
||||
$state = 'begin';
|
||||
redo;
|
||||
}
|
||||
}
|
||||
|
||||
elsif ( $state eq 'loaded_AD' ) {
|
||||
if ( /$reLDY_C08C/ ) {
|
||||
print "\t byte read: $3 (t:$trk s:$sec)";
|
||||
}
|
||||
elsif ( /$reSTA_0300/ ) {
|
||||
printf( "\t byte to mem: \$%04X:$1\n", 0x300 + hex($3) );
|
||||
}
|
||||
elsif ( /$reSTA_26Y/ ) {
|
||||
my $y = hex($3);
|
||||
printf( "\t byte to mem ind: (\$26)+\$%02X:$1\n", $y );
|
||||
if ($y >= 255) {
|
||||
$state = 'sector_decode';
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
elsif ( $state eq 'sector_decode' ) {
|
||||
if ( /$reSTA_26Y/ ) {
|
||||
$i = hex($1);
|
||||
$y = hex($3);
|
||||
printf( "\t byte to mem ind: (\$26)+\$%02X:$1\n", $y );
|
||||
$sectorData[$y] = $i;
|
||||
if ($y >= 255) {
|
||||
$state = 'sector_decode';
|
||||
print "\nHEXDUMP track: $trk sector: $sec\n";
|
||||
hexdump(\@sectorData);
|
||||
}
|
||||
}
|
||||
elsif ( /$reLDA_C08C/ ) {
|
||||
$state = 'begin';
|
||||
redo;
|
||||
}
|
||||
}
|
||||
|
||||
} # for the redo to avoid print input twice
|
||||
|
||||
print "\n";
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
6914
Apple_II_ROM.s
6914
Apple_II_ROM.s
File diff suppressed because it is too large
Load Diff
BIN
DISK_II_C600.ROM
BIN
DISK_II_C600.ROM
Binary file not shown.
982794
DOS_3_3_boot_trace.txt
982794
DOS_3_3_boot_trace.txt
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
822744
disksectorload_4.marked
822744
disksectorload_4.marked
File diff suppressed because it is too large
Load Diff
967392
disksectorload_5.marked
967392
disksectorload_5.marked
File diff suppressed because it is too large
Load Diff
@ -1,125 +0,0 @@
|
||||
100935 44567424 C65E: BD 8C C0 LDA $C08C,X 0x07 0x60 0x00 0x35 0xFE
|
||||
100936 44567428 C661: 10 FB BPL $C65E 0x07 0x60 0x00 0x35 0xFE
|
||||
100937 44567431 C65E: BD 8C C0 LDA $C08C,X 0x1F 0x60 0x00 0x35 0xFE
|
||||
100938 44567435 C661: 10 FB BPL $C65E 0x1F 0x60 0x00 0x35 0xFE
|
||||
100939 44567438 C65E: BD 8C C0 LDA $C08C,X 0x7F 0x60 0x00 0x35 0xFE
|
||||
100940 44567442 C661: 10 FB BPL $C65E 0x7F 0x60 0x00 0x35 0xFE
|
||||
100941 44567445 C65E: BD 8C C0 LDA $C08C,X 0xFF 0x60 0x00 0xB5 0xFE
|
||||
100942 44567449 C661: 10 FB BPL $C65E 0xFF 0x60 0x00 0xB5 0xFE
|
||||
100943 44567451 C663: 49 D5 EOR #$D5 0x2A 0x60 0x00 0x35 0xFE
|
||||
100944 44567453 C665: D0 F7 BNE $C65E 0x2A 0x60 0x00 0x35 0xFE
|
||||
100945 44567456 C65E: BD 8C C0 LDA $C08C,X 0xFF 0x60 0x00 0xB5 0xFE
|
||||
100946 44567460 C661: 10 FB BPL $C65E 0xFF 0x60 0x00 0xB5 0xFE
|
||||
100947 44567462 C663: 49 D5 EOR #$D5 0x2A 0x60 0x00 0x35 0xFE
|
||||
100948 44567464 C665: D0 F7 BNE $C65E 0x2A 0x60 0x00 0x35 0xFE
|
||||
100949 44567467 C65E: BD 8C C0 LDA $C08C,X 0x0D 0x60 0x00 0x35 0xFE
|
||||
100950 44567471 C661: 10 FB BPL $C65E 0x0D 0x60 0x00 0x35 0xFE
|
||||
100951 44567474 C65E: BD 8C C0 LDA $C08C,X 0x35 0x60 0x00 0x35 0xFE
|
||||
100952 44567478 C661: 10 FB BPL $C65E 0x35 0x60 0x00 0x35 0xFE
|
||||
100953 44567481 C65E: BD 8C C0 LDA $C08C,X 0x6A 0x60 0x00 0x35 0xFE
|
||||
100954 44567485 C661: 10 FB BPL $C65E 0x6A 0x60 0x00 0x35 0xFE
|
||||
100955 44567488 C65E: BD 8C C0 LDA $C08C,X 0xD5 0x60 0x00 0xB5 0xFE
|
||||
100956 44567492 C661: 10 FB BPL $C65E 0xD5 0x60 0x00 0xB5 0xFE
|
||||
100957 44567494 C663: 49 D5 EOR #$D5 0x00 0x60 0x00 0x37 0xFE
|
||||
100958 44567496 C665: D0 F7 BNE $C65E 0x00 0x60 0x00 0x37 0xFE
|
||||
100959 44567498 C667: BD 8C C0 LDA $C08C,X 0x0A 0x60 0x00 0x35 0xFE
|
||||
100960 44567502 C66A: 10 FB BPL $C667 0x0A 0x60 0x00 0x35 0xFE
|
||||
100961 44567505 C667: BD 8C C0 LDA $C08C,X 0x15 0x60 0x00 0x35 0xFE
|
||||
100962 44567509 C66A: 10 FB BPL $C667 0x15 0x60 0x00 0x35 0xFE
|
||||
100963 44567512 C667: BD 8C C0 LDA $C08C,X 0x55 0x60 0x00 0x35 0xFE
|
||||
100964 44567516 C66A: 10 FB BPL $C667 0x55 0x60 0x00 0x35 0xFE
|
||||
100965 44567519 C667: BD 8C C0 LDA $C08C,X 0xAA 0x60 0x00 0xB5 0xFE
|
||||
100966 44567523 C66A: 10 FB BPL $C667 0xAA 0x60 0x00 0xB5 0xFE
|
||||
100967 44567525 C66C: C9 AA CMP #$AA 0xAA 0x60 0x00 0x37 0xFE
|
||||
100968 44567527 C66E: D0 F3 BNE $C663 0xAA 0x60 0x00 0x37 0xFE
|
||||
100969 44567529 C670: EA NOP 0xAA 0x60 0x00 0x37 0xFE
|
||||
100970 44567531 C671: BD 8C C0 LDA $C08C,X 0x0A 0x60 0x00 0x35 0xFE
|
||||
100971 44567535 C674: 10 FB BPL $C671 0x0A 0x60 0x00 0x35 0xFE
|
||||
100972 44567538 C671: BD 8C C0 LDA $C08C,X 0x2B 0x60 0x00 0x35 0xFE
|
||||
100973 44567542 C674: 10 FB BPL $C671 0x2B 0x60 0x00 0x35 0xFE
|
||||
100974 44567545 C671: BD 8C C0 LDA $C08C,X 0x56 0x60 0x00 0x35 0xFE
|
||||
100975 44567549 C674: 10 FB BPL $C671 0x56 0x60 0x00 0x35 0xFE
|
||||
100976 44567552 C671: BD 8C C0 LDA $C08C,X 0xAD 0x60 0x00 0xB5 0xFE
|
||||
100977 44567556 C674: 10 FB BPL $C671 0xAD 0x60 0x00 0xB5 0xFE
|
||||
100978 44567558 C676: C9 96 CMP #$96 0xAD 0x60 0x00 0x35 0xFE
|
||||
100979 44567560 C678: F0 09 BEQ $C683 0xAD 0x60 0x00 0x35 0xFE
|
||||
100980 44567562 C67A: 28 PLP 0xAD 0x60 0x00 0x37 0xFF
|
||||
100981 44567566 C67B: 90 DF BCC $C65C 0xAD 0x60 0x00 0x37 0xFF
|
||||
100982 44567568 C67D: 49 AD EOR #$AD 0x00 0x60 0x00 0x37 0xFF
|
||||
100983 44567570 C67F: F0 25 BEQ $C6A6 0x00 0x60 0x00 0x37 0xFF
|
||||
100984 44567573 C6A6: A0 56 LDY #$56 0x00 0x60 0x56 0x35 0xFF
|
||||
100985 44567575 C6A8: 84 3C STY $3C 0x00 0x60 0x56 0x35 0xFF
|
||||
100986 44567578 C6AA: BC 8C C0 LDY $C08C,X 0x00 0x60 0xB6 0xB5 0xFF
|
||||
100987 44567582 C6AD: 10 FB BPL $C6AA 0x00 0x60 0xB6 0xB5 0xFF
|
||||
100988 44567584 C6AF: 59 D6 02 EOR $02D6,Y 0x12 0x60 0xB6 0x35 0xFF
|
||||
100989 44567589 C6B2: A4 3C LDY $3C 0x12 0x60 0x56 0x35 0xFF
|
||||
100990 44567592 C6B4: 88 DEY 0x12 0x60 0x55 0x35 0xFF
|
||||
100991 44567594 C6B5: 99 00 03 STA $0300,Y 0x12 0x60 0x55 0x35 0xFF
|
||||
100992 44567599 C6B8: D0 EE BNE $C6A8 0x12 0x60 0x55 0x35 0xFF
|
||||
100993 44567602 C6A8: 84 3C STY $3C 0x12 0x60 0x55 0x35 0xFF
|
||||
100994 44567605 C6AA: BC 8C C0 LDY $C08C,X 0x12 0x60 0x36 0x35 0xFF
|
||||
100995 44567609 C6AD: 10 FB BPL $C6AA 0x12 0x60 0x36 0x35 0xFF
|
||||
100996 44567612 C6AA: BC 8C C0 LDY $C08C,X 0x12 0x60 0xDB 0xB5 0xFF
|
||||
100997 44567616 C6AD: 10 FB BPL $C6AA 0x12 0x60 0xDB 0xB5 0xFF
|
||||
100998 44567618 C6AF: 59 D6 02 EOR $02D6,Y 0x36 0x60 0xDB 0x35 0xFF
|
||||
100999 44567623 C6B2: A4 3C LDY $3C 0x36 0x60 0x55 0x35 0xFF
|
||||
101000 44567626 C6B4: 88 DEY 0x36 0x60 0x54 0x35 0xFF
|
||||
101001 44567628 C6B5: 99 00 03 STA $0300,Y 0x36 0x60 0x54 0x35 0xFF
|
||||
101002 44567633 C6B8: D0 EE BNE $C6A8 0x36 0x60 0x54 0x35 0xFF
|
||||
101003 44567636 C6A8: 84 3C STY $3C 0x36 0x60 0x54 0x35 0xFF
|
||||
101004 44567639 C6AA: BC 8C C0 LDY $C08C,X 0x36 0x60 0x6E 0x35 0xFF
|
||||
101005 44567643 C6AD: 10 FB BPL $C6AA 0x36 0x60 0x6E 0x35 0xFF
|
||||
101006 44567646 C6AA: BC 8C C0 LDY $C08C,X 0x36 0x60 0xDC 0xB5 0xFF
|
||||
101007 44567650 C6AD: 10 FB BPL $C6AA 0x36 0x60 0xDC 0xB5 0xFF
|
||||
101008 44567652 C6AF: 59 D6 02 EOR $02D6,Y 0x13 0x60 0xDC 0x35 0xFF
|
||||
101009 44567657 C6B2: A4 3C LDY $3C 0x13 0x60 0x54 0x35 0xFF
|
||||
101010 44567660 C6B4: 88 DEY 0x13 0x60 0x53 0x35 0xFF
|
||||
101011 44567662 C6B5: 99 00 03 STA $0300,Y 0x13 0x60 0x53 0x35 0xFF
|
||||
101012 44567667 C6B8: D0 EE BNE $C6A8 0x13 0x60 0x53 0x35 0xFF
|
||||
101013 44567670 C6A8: 84 3C STY $3C 0x13 0x60 0x53 0x35 0xFF
|
||||
101014 44567673 C6AA: BC 8C C0 LDY $C08C,X 0x13 0x60 0x7A 0x35 0xFF
|
||||
101015 44567677 C6AD: 10 FB BPL $C6AA 0x13 0x60 0x7A 0x35 0xFF
|
||||
101016 44567680 C6AA: BC 8C C0 LDY $C08C,X 0x13 0x60 0xF4 0xB5 0xFF
|
||||
101017 44567684 C6AD: 10 FB BPL $C6AA 0x13 0x60 0xF4 0xB5 0xFF
|
||||
101018 44567686 C6AF: 59 D6 02 EOR $02D6,Y 0x26 0x60 0xF4 0x35 0xFF
|
||||
101019 44567691 C6B2: A4 3C LDY $3C 0x26 0x60 0x53 0x35 0xFF
|
||||
101020 44567694 C6B4: 88 DEY 0x26 0x60 0x52 0x35 0xFF
|
||||
101021 44567696 C6B5: 99 00 03 STA $0300,Y 0x26 0x60 0x52 0x35 0xFF
|
||||
101022 44567701 C6B8: D0 EE BNE $C6A8 0x26 0x60 0x52 0x35 0xFF
|
||||
101023 44567704 C6A8: 84 3C STY $3C 0x26 0x60 0x52 0x35 0xFF
|
||||
101024 44567707 C6AA: BC 8C C0 LDY $C08C,X 0x26 0x60 0xF3 0xB5 0xFF
|
||||
101025 44567711 C6AD: 10 FB BPL $C6AA 0x26 0x60 0xF3 0xB5 0xFF
|
||||
101026 44567713 C6AF: 59 D6 02 EOR $02D6,Y 0x12 0x60 0xF3 0x35 0xFF
|
||||
101027 44567718 C6B2: A4 3C LDY $3C 0x12 0x60 0x52 0x35 0xFF
|
||||
101028 44567721 C6B4: 88 DEY 0x12 0x60 0x51 0x35 0xFF
|
||||
101029 44567723 C6B5: 99 00 03 STA $0300,Y 0x12 0x60 0x51 0x35 0xFF
|
||||
101030 44567728 C6B8: D0 EE BNE $C6A8 0x12 0x60 0x51 0x35 0xFF
|
||||
101031 44567731 C6A8: 84 3C STY $3C 0x12 0x60 0x51 0x35 0xFF
|
||||
101032 44567734 C6AA: BC 8C C0 LDY $C08C,X 0x12 0x60 0x5D 0x35 0xFF
|
||||
101033 44567738 C6AD: 10 FB BPL $C6AA 0x12 0x60 0x5D 0x35 0xFF
|
||||
101034 44567741 C6AA: BC 8C C0 LDY $C08C,X 0x12 0x60 0xBB 0xB5 0xFF
|
||||
101035 44567745 C6AD: 10 FB BPL $C6AA 0x12 0x60 0xBB 0xB5 0xFF
|
||||
101036 44567747 C6AF: 59 D6 02 EOR $02D6,Y 0x04 0x60 0xBB 0x35 0xFF
|
||||
101037 44567752 C6B2: A4 3C LDY $3C 0x04 0x60 0x51 0x35 0xFF
|
||||
101038 44567755 C6B4: 88 DEY 0x04 0x60 0x50 0x35 0xFF
|
||||
101039 44567757 C6B5: 99 00 03 STA $0300,Y 0x04 0x60 0x50 0x35 0xFF
|
||||
101040 44567762 C6B8: D0 EE BNE $C6A8 0x04 0x60 0x50 0x35 0xFF
|
||||
101041 44567765 C6A8: 84 3C STY $3C 0x04 0x60 0x50 0x35 0xFF
|
||||
101042 44567768 C6AA: BC 8C C0 LDY $C08C,X 0x04 0x60 0x5E 0x35 0xFF
|
||||
101043 44567772 C6AD: 10 FB BPL $C6AA 0x04 0x60 0x5E 0x35 0xFF
|
||||
101044 44567775 C6AA: BC 8C C0 LDY $C08C,X 0x04 0x60 0xBD 0xB5 0xFF
|
||||
101045 44567779 C6AD: 10 FB BPL $C6AA 0x04 0x60 0xBD 0xB5 0xFF
|
||||
101046 44567781 C6AF: 59 D6 02 EOR $02D6,Y 0x1C 0x60 0xBD 0x35 0xFF
|
||||
101047 44567786 C6B2: A4 3C LDY $3C 0x1C 0x60 0x50 0x35 0xFF
|
||||
101048 44567789 C6B4: 88 DEY 0x1C 0x60 0x4F 0x35 0xFF
|
||||
101049 44567791 C6B5: 99 00 03 STA $0300,Y 0x1C 0x60 0x4F 0x35 0xFF
|
||||
101050 44567796 C6B8: D0 EE BNE $C6A8 0x1C 0x60 0x4F 0x35 0xFF
|
||||
101051 44567799 C6A8: 84 3C STY $3C 0x1C 0x60 0x4F 0x35 0xFF
|
||||
101052 44567802 C6AA: BC 8C C0 LDY $C08C,X 0x1C 0x60 0xCF 0xB5 0xFF
|
||||
101053 44567806 C6AD: 10 FB BPL $C6AA 0x1C 0x60 0xCF 0xB5 0xFF
|
||||
101054 44567808 C6AF: 59 D6 02 EOR $02D6,Y 0x02 0x60 0xCF 0x35 0xFF
|
||||
101055 44567813 C6B2: A4 3C LDY $3C 0x02 0x60 0x4F 0x35 0xFF
|
||||
101056 44567816 C6B4: 88 DEY 0x02 0x60 0x4E 0x35 0xFF
|
||||
101057 44567818 C6B5: 99 00 03 STA $0300,Y 0x02 0x60 0x4E 0x35 0xFF
|
||||
101058 44567823 C6B8: D0 EE BNE $C6A8 0x02 0x60 0x4E 0x35 0xFF
|
||||
101059 44567826 C6A8: 84 3C STY $3C 0x02 0x60 0x4E 0x35 0xFF
|
|
@ -1,628 +0,0 @@
|
||||
//
|
||||
// woz.c
|
||||
// A2Mac
|
||||
//
|
||||
// Created by Tamas Rudnai on 2/15/20.
|
||||
// Copyright © 2020 GameAlloy. All rights reserved.
|
||||
//
|
||||
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
|
||||
#include "woz.h"
|
||||
#include "disk.h"
|
||||
#include "6502.h"
|
||||
#include "common.h"
|
||||
|
||||
|
||||
WOZread_t WOZread = {0};
|
||||
uint8_t WOZlatch = 0;
|
||||
|
||||
int trackOffset = 0;
|
||||
int bitOffset = 0;
|
||||
uint64_t clkelpased;
|
||||
|
||||
|
||||
woz_header_t woz_header;
|
||||
woz_chunk_header_t woz_chunk_header;
|
||||
woz_tmap_t woz_tmap;
|
||||
woz_trks_t woz_trks;
|
||||
int track_loaded = -1;
|
||||
|
||||
|
||||
|
||||
#pragma pack(push, 1)
|
||||
|
||||
typedef union trackEntry_u {
|
||||
struct {
|
||||
uint8_t data;
|
||||
uint8_t shift;
|
||||
};
|
||||
uint16_t shift16;
|
||||
} trackEntry_t;
|
||||
|
||||
#pragma pack(pop)
|
||||
|
||||
trackEntry_t prepared_track[WOZ_TRACK_BYTE_COUNT];
|
||||
|
||||
typedef enum readState_e {
|
||||
readNormal = 0,
|
||||
readHold,
|
||||
} readState_t;
|
||||
|
||||
readState_t readState = readNormal;
|
||||
uint8_t readLatch;
|
||||
|
||||
|
||||
void woz_loadTrack_old( int track ) {
|
||||
trackEntry_t reg = {0};
|
||||
|
||||
reg.shift = woz_trks[track].data[0];
|
||||
reg.data = woz_trks[track].data[1];
|
||||
prepared_track[0] = reg;
|
||||
|
||||
for ( int offs = 1; offs < WOZ_TRACK_BYTE_COUNT; offs++ ) {
|
||||
|
||||
for ( int i = 0; i < 8; i++ ) {
|
||||
if (reg.shift & 0x80) {
|
||||
reg.shift = 0;
|
||||
}
|
||||
|
||||
reg.shift16 <<= 1;
|
||||
}
|
||||
|
||||
reg.data = woz_trks[track].data[ (offs + 1) % WOZ_TRACK_BYTE_COUNT ];
|
||||
prepared_track[offs] = reg;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
typedef enum wozTrackState_e {
|
||||
wozTrackState_Start = 0,
|
||||
wozTrackState_D5,
|
||||
wozTrackState_D5_AA,
|
||||
wozTrackState_D5_AA_96,
|
||||
wozTrackState_vol1,
|
||||
wozTrackState_vol2,
|
||||
wozTrackState_trk1,
|
||||
wozTrackState_trk2,
|
||||
wozTrackState_sec1,
|
||||
wozTrackState_sec2,
|
||||
} wozTrackState_t;
|
||||
|
||||
|
||||
void woz_loadTrack( int track ) {
|
||||
trackEntry_t reg = {0};
|
||||
wozTrackState_t wozTrackState = wozTrackState_Start;
|
||||
|
||||
reg.shift = 0;
|
||||
reg.data = 0;
|
||||
prepared_track[0] = reg;
|
||||
|
||||
int vol = 0;
|
||||
int trk = 0;
|
||||
int sec = 0;
|
||||
|
||||
int bitOffs_D5_SecHdr = 0; // bit offset of D5 Sector Header
|
||||
|
||||
int bitOffs = 0;
|
||||
|
||||
for ( int byteOffs = 0; byteOffs < WOZ_TRACK_BYTE_COUNT; byteOffs++ ) {
|
||||
|
||||
reg.data = woz_trks[track].data[ byteOffs ];
|
||||
|
||||
for ( int i = 0; i < 8; i++ ) {
|
||||
reg.shift16 <<= 1;
|
||||
|
||||
if (reg.shift & 0x80) {
|
||||
switch (wozTrackState) {
|
||||
case wozTrackState_D5:
|
||||
switch (reg.shift) {
|
||||
case 0xAA:
|
||||
// printf("D5 AA at bitOffset:%d\n", bitOffs);
|
||||
wozTrackState = wozTrackState_D5_AA;
|
||||
break;
|
||||
|
||||
default:
|
||||
wozTrackState = wozTrackState_Start;
|
||||
break;
|
||||
}
|
||||
|
||||
break;
|
||||
|
||||
case wozTrackState_D5_AA:
|
||||
switch (reg.shift) {
|
||||
case 0x96:
|
||||
wozTrackState = wozTrackState_vol1;
|
||||
// printf("D5 AA 96 at bitOffset:%d\n", bitOffs);
|
||||
// printf("Sector Header at bitOffset:%d\n", bitOffs_D5_SecHdr);
|
||||
break;
|
||||
|
||||
default:
|
||||
wozTrackState = wozTrackState_Start;
|
||||
break;
|
||||
}
|
||||
|
||||
break;
|
||||
|
||||
case wozTrackState_vol1:
|
||||
vol = (reg.shift << 1) | 1;
|
||||
wozTrackState = wozTrackState_vol2;
|
||||
break;
|
||||
|
||||
case wozTrackState_vol2:
|
||||
vol &= reg.shift;
|
||||
wozTrackState = wozTrackState_trk1;
|
||||
break;
|
||||
|
||||
case wozTrackState_trk1:
|
||||
trk = (reg.shift << 1) | 1;
|
||||
wozTrackState = wozTrackState_trk2;
|
||||
break;
|
||||
|
||||
case wozTrackState_trk2:
|
||||
trk &= reg.shift;
|
||||
wozTrackState = wozTrackState_sec1;
|
||||
break;
|
||||
|
||||
case wozTrackState_sec1:
|
||||
sec = (reg.shift << 1) | 1;
|
||||
wozTrackState = wozTrackState_sec2;
|
||||
break;
|
||||
|
||||
case wozTrackState_sec2:
|
||||
sec &= reg.shift;
|
||||
wozTrackState = wozTrackState_Start;
|
||||
|
||||
printf("Vol:%d Track:%d Sector:%d at bitOffset:%d\n", vol, trk, sec, bitOffs_D5_SecHdr);
|
||||
|
||||
break;
|
||||
|
||||
default:
|
||||
if ( reg.shift == 0xD5 ) {
|
||||
// printf("D5 at bitOffset:%d\n", bitOffs);
|
||||
wozTrackState = wozTrackState_D5;
|
||||
bitOffs_D5_SecHdr = bitOffs;
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
reg.shift = 0;
|
||||
}
|
||||
|
||||
bitOffs++;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
uint8_t woz_read() {
|
||||
|
||||
int track = woz_tmap.phase[disk.phase.count];
|
||||
if (outdev) fprintf(outdev, "track: %d (%d) ", track, disk.phase.count);
|
||||
if ( track >= 40 ) {
|
||||
dbgPrintf("TRCK TOO HIGH!\n");
|
||||
return rand();
|
||||
}
|
||||
|
||||
#ifdef WOZ_REAL_SPIN
|
||||
if ( track != track_loaded ) {
|
||||
woz_loadTrack(track);
|
||||
track_loaded = track;
|
||||
}
|
||||
|
||||
WOZread.shift32 = 0;
|
||||
bitOffset = (m6502.clktime >> 2) & 7;
|
||||
trackOffset = (m6502.clktime >> 5) % WOZ_TRACK_BYTE_COUNT;
|
||||
WOZread.next = woz_trks[track].data[ (trackOffset +1) % WOZ_TRACK_BYTE_COUNT ];
|
||||
WOZread.data = woz_trks[track].data[ trackOffset ];
|
||||
WOZread.prev = woz_trks[track].data[ (trackOffset -1) % WOZ_TRACK_BYTE_COUNT ];
|
||||
WOZread.shift = woz_trks[track].data[ (trackOffset -2) % WOZ_TRACK_BYTE_COUNT ];
|
||||
|
||||
printf("clk:%llu bo:%u to:%u W:%08X\n", m6502.clktime, bitOffset, trackOffset, WOZread.shift32);
|
||||
|
||||
uint8_t state = 0;
|
||||
// simulating the continous shift register in Disk ][
|
||||
for (int i = bitOffset + 16; i; --i) {
|
||||
|
||||
WOZread.shift32 <<= 1;
|
||||
|
||||
switch (state) {
|
||||
case 0:
|
||||
WOZlatch = WOZread.shift;
|
||||
if ( WOZread.valid ) {
|
||||
state = 1;
|
||||
WOZread.shift = 0;
|
||||
}
|
||||
break;
|
||||
|
||||
case 1:
|
||||
// we do not latch the shift register for one 4us cycle
|
||||
state = 0;
|
||||
break;
|
||||
|
||||
default:
|
||||
// this should not happen
|
||||
state = 0;
|
||||
break;
|
||||
}
|
||||
|
||||
// printf("shft1: W:%08X L:%02X\n", WOZread.shift32, WOZlatch);
|
||||
|
||||
}
|
||||
|
||||
printf("clk:%llu bo:%u to:%u W:%08X B:%02X\n", m6502.clktime, bitOffset, trackOffset, WOZread.shift32, WOZlatch);
|
||||
if ( WOZlatch & 0x80 ) {
|
||||
printf("WOZlatch: %02X\n", WOZlatch);
|
||||
|
||||
static int readState = 0;
|
||||
static int vol = 0;
|
||||
static int trk = 0;
|
||||
static int sec = 0;
|
||||
|
||||
switch (readState) {
|
||||
case 0:
|
||||
if ( 0xD5 == WOZlatch ) readState = 1;
|
||||
else readState = 0;
|
||||
break;
|
||||
|
||||
case 1:
|
||||
if ( 0xAA == WOZlatch ) readState = 2;
|
||||
else readState = 0;
|
||||
break;
|
||||
|
||||
case 2:
|
||||
if ( 0x96 == WOZlatch ) {
|
||||
readState = 3;
|
||||
printf("sector header marker\n");
|
||||
}
|
||||
else if ( 0xAD == WOZlatch ) {
|
||||
readState = 10;
|
||||
printf("sector data marker\n");
|
||||
}
|
||||
else readState = 0;
|
||||
break;
|
||||
|
||||
case 3: // sector header, vol number 1
|
||||
readState++;
|
||||
vol = (WOZlatch << 1) | 1;
|
||||
break;
|
||||
|
||||
case 4: // sector header, vol number 2
|
||||
readState++;
|
||||
vol &= WOZlatch;
|
||||
printf("vol:%u ", vol);
|
||||
break;
|
||||
|
||||
case 5: // sector header, trk number 1
|
||||
readState++;
|
||||
trk = (WOZlatch << 1) | 1;
|
||||
break;
|
||||
|
||||
case 6: // sector header, trk number 2
|
||||
readState++;
|
||||
trk &= WOZlatch;
|
||||
printf("trk:%u ", trk);
|
||||
break;
|
||||
|
||||
case 7: // sector header, sec number 1
|
||||
readState++;
|
||||
sec = (WOZlatch << 1) | 1;
|
||||
break;
|
||||
|
||||
case 8: // sector header, sec number 2
|
||||
readState = 0;
|
||||
sec &= WOZlatch;
|
||||
printf("sec:%u\n", sec);
|
||||
break;
|
||||
|
||||
|
||||
default:
|
||||
readState = 0;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
// switch ( WOZlatch ) {
|
||||
// case 0xAA:
|
||||
// case 0x96:
|
||||
//// printf("%02X ", WOZlatch);
|
||||
// printf("clk:%llu bo:%u to:%u B:%02X\n", m6502.clktime, bitOffset, trackOffset, WOZlatch);
|
||||
// break;
|
||||
//
|
||||
// default:
|
||||
// break;
|
||||
// }
|
||||
|
||||
return WOZlatch;
|
||||
|
||||
|
||||
#elif defined( WOZ_REAL_SPIN2 )
|
||||
// clkelpased = m6502.clktime - disk.clk_last_read;
|
||||
// disk.clk_last_read = m6502.clktime;
|
||||
|
||||
bitOffset = (m6502.clktime >> 2) & 7;
|
||||
trackOffset = (m6502.clktime >> 5) % WOZ_TRACK_BYTE_COUNT;
|
||||
trackEntry_t reg = prepared_track[trackOffset];
|
||||
|
||||
do {
|
||||
switch (readState) {
|
||||
case readNormal:
|
||||
readLatch = reg.shift;
|
||||
break;
|
||||
|
||||
case readHold:
|
||||
default:
|
||||
readState = readNormal;
|
||||
break;
|
||||
}
|
||||
|
||||
if (reg.shift & 0x80) {
|
||||
reg.shift = 0;
|
||||
readState = readHold;
|
||||
}
|
||||
|
||||
reg.shift16 <<= 1;
|
||||
} while ( --bitOffset > 0 );
|
||||
|
||||
printf("READ: clk:%llu to:%u bo:%llu B:%02X\n", m6502.clktime, trackOffset, (m6502.clktime >> 2) & 7, readLatch);
|
||||
return readLatch;
|
||||
|
||||
|
||||
#elif defined( WOZ_SEARCH_NEXTSECT )
|
||||
|
||||
static int clkBeforeSync = 0;
|
||||
|
||||
clkelpased = m6502.clktime + clkfrm - m6502.clklast;
|
||||
m6502.clklast = m6502.clktime + clkfrm;
|
||||
|
||||
clkBeforeSync += clkelpased;
|
||||
|
||||
const int clkBeforeAdjusting = 1024;
|
||||
const int magicShiftOffset = 8192;
|
||||
|
||||
uint16_t usedBytes = woz_trks[track].bytes_used < WOZ_TRACK_BYTE_COUNT ? woz_trks[track].bytes_used : WOZ_TRACK_BYTE_COUNT;
|
||||
|
||||
if ( usedBytes ) {
|
||||
// printf("elpased : %llu (clkBefRd:%d)\n", clkelpased, clkBeforeSync);
|
||||
if ( clkelpased > clkBeforeAdjusting ) {
|
||||
// printf("NEED SYNC : %llu (clkBefRd:%d)\n", clkelpased, clkBeforeSync);
|
||||
clkBeforeSync = 0;
|
||||
// bitOffset = (clkelpased >> 2) & 7;
|
||||
// bitOffset = 0;
|
||||
// trackOffset += clkelpased >> 5;
|
||||
// trackOffset %= usedBytes;
|
||||
|
||||
// preroll data stream
|
||||
// WOZread.shift16 = 0;
|
||||
// WOZread.data = woz_trks[track].data[trackOffset++];
|
||||
// trackOffset %= usedBytes;
|
||||
|
||||
// WOZread.shift16 <<= bitOffset;
|
||||
|
||||
int w = 2; // 2 x 0xD5
|
||||
|
||||
for ( int i = 0; i < usedBytes * 8; i++ ) {
|
||||
if ( ++bitOffset >= 8 ) {
|
||||
bitOffset = 0;
|
||||
|
||||
trackOffset++;
|
||||
trackOffset %= usedBytes;
|
||||
|
||||
WOZread.data = woz_trks[track].data[trackOffset];
|
||||
}
|
||||
|
||||
WOZread.shift16 <<= 1;
|
||||
if ( WOZread.valid ) {
|
||||
uint8_t byte = WOZread.shift;
|
||||
WOZread.shift = 0;
|
||||
|
||||
// find next sector or end of sector
|
||||
if ( byte == 0xD5 ) {
|
||||
// actually 2 sectors, because of DOS 3.3 interleaving algoritm
|
||||
if ( --w <= 0 ) {
|
||||
return byte;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
// to avoid infinite loop and to search for bit 7 high
|
||||
for ( int i = 0; i < usedBytes * 8; i++ ) {
|
||||
if ( ++bitOffset >= 8 ) {
|
||||
bitOffset = 0;
|
||||
// if ( ++trackOffset >= WOZ_TRACK_BYTE_COUNT ) {
|
||||
// trackOffset = 0;
|
||||
// }
|
||||
trackOffset++;
|
||||
trackOffset %= usedBytes;
|
||||
|
||||
// printf("offs:%u\n", trackOffset);
|
||||
WOZread.data = woz_trks[track].data[trackOffset];
|
||||
}
|
||||
|
||||
WOZread.shift16 <<= 1;
|
||||
if ( WOZread.valid ) {
|
||||
uint8_t byte = WOZread.shift;
|
||||
// printf("%02X ", byte);
|
||||
WOZread.shift = 0;
|
||||
if (outdev) fprintf(outdev, "byte: %02X\n", byte);
|
||||
|
||||
return byte;
|
||||
}
|
||||
}
|
||||
if (outdev) fprintf(outdev, "TIME OUT!\n");
|
||||
}
|
||||
|
||||
return rand();
|
||||
|
||||
#else // WOZ_REAL_SPIN
|
||||
static int clkBeforeSync = 0;
|
||||
|
||||
clkelpased = m6502.clktime + clkfrm - m6502.clklast;
|
||||
m6502.clklast = m6502.clktime + clkfrm;
|
||||
|
||||
clkBeforeSync += clkelpased;
|
||||
|
||||
const int clkBeforeAdjusting = 512;
|
||||
const int magicShiftOffset = 50;
|
||||
|
||||
uint16_t usedBytes = woz_trks[track].bytes_used < WOZ_TRACK_BYTE_COUNT ? woz_trks[track].bytes_used : WOZ_TRACK_BYTE_COUNT;
|
||||
|
||||
if ( usedBytes ) {
|
||||
// printf("elpased : %llu (clkBefRd:%d)\n", clkelpased, clkBeforeSync);
|
||||
|
||||
if ( clkelpased > clkBeforeAdjusting ) {
|
||||
// printf("NEED SYNC : %llu (clkBefRd:%d)\n", clkelpased, clkBeforeSync);
|
||||
clkBeforeSync = 0;
|
||||
bitOffset = (clkelpased >> 2) & 7;
|
||||
trackOffset += clkelpased >> 5;
|
||||
trackOffset %= usedBytes;
|
||||
|
||||
// preroll data stream
|
||||
WOZread.shift16 = 0;
|
||||
WOZread.data = woz_trks[track].data[trackOffset++];
|
||||
trackOffset %= usedBytes;
|
||||
|
||||
WOZread.shift16 <<= bitOffset;
|
||||
|
||||
for ( int i = 0; i < magicShiftOffset; i++ ) {
|
||||
for ( ; bitOffset < 8; bitOffset++ ) {
|
||||
WOZread.shift16 <<= 1;
|
||||
|
||||
if ( WOZread.valid ) {
|
||||
WOZread.shift = 0;
|
||||
}
|
||||
}
|
||||
WOZread.data = woz_trks[track].data[trackOffset++];
|
||||
trackOffset %= usedBytes;
|
||||
bitOffset = 0;
|
||||
}
|
||||
}
|
||||
else {
|
||||
uint64_t bitForward = (clkelpased >> 2);
|
||||
|
||||
// to avoid infinite loop and to search for bit 7 high
|
||||
for ( uint64_t i = 0; i < bitForward; i++ ) {
|
||||
if ( ++bitOffset >= 8 ) {
|
||||
bitOffset = 0;
|
||||
trackOffset++;
|
||||
trackOffset %= usedBytes;
|
||||
|
||||
WOZread.data = woz_trks[track].data[trackOffset];
|
||||
}
|
||||
|
||||
WOZread.shift16 <<= 1;
|
||||
|
||||
if ( WOZread.valid ) {
|
||||
WOZread.shift = 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// to avoid infinite loop and to search for bit 7 high
|
||||
for ( int i = 0; i < usedBytes * 8; i++ ) {
|
||||
if ( WOZread.valid ) {
|
||||
uint8_t byte = WOZread.shift;
|
||||
WOZread.shift = 0;
|
||||
// if (outdev) fprintf(outdev, "byte: %02X\n", byte);
|
||||
|
||||
return byte;
|
||||
}
|
||||
|
||||
if ( ++bitOffset >= 8 ) {
|
||||
bitOffset = 0;
|
||||
trackOffset++;
|
||||
trackOffset %= usedBytes;
|
||||
|
||||
WOZread.data = woz_trks[track].data[trackOffset];
|
||||
}
|
||||
|
||||
WOZread.shift16 <<= 1;
|
||||
}
|
||||
// if (outdev) fprintf(outdev, "TIME OUT!\n");
|
||||
}
|
||||
|
||||
return rand();
|
||||
|
||||
#endif // WOZ_REAL_SPIN
|
||||
|
||||
}
|
||||
|
||||
|
||||
int woz_loadFile( const char * filename ) {
|
||||
|
||||
// char fullpath[256];
|
||||
//
|
||||
// strcpy(fullpath, resourcePath);
|
||||
// strcat(fullpath, "/");
|
||||
// strcat(fullpath, filename);
|
||||
|
||||
FILE * f = fopen(filename, "rb");
|
||||
if (f == NULL) {
|
||||
perror("Failed to read WOZ: ");
|
||||
return WOZ_ERR_FILE_NOT_FOUND;
|
||||
}
|
||||
|
||||
fread( &woz_header, 1, sizeof(woz_header_t), f);
|
||||
if ( woz_header.magic != WOZ1_MAGIC ) {
|
||||
return WOZ_ERR_NOT_WOZ_FILE;
|
||||
}
|
||||
|
||||
while ( ! feof(f) ) {
|
||||
// beginning of the chunk, so we can skip it later
|
||||
|
||||
long r = fread( &woz_chunk_header, 1, sizeof(woz_chunk_header_t), f);
|
||||
if ( r != sizeof(woz_chunk_header_t) ) {
|
||||
if ( r ) {
|
||||
return WOZ_ERR_BAD_CHUNK_HDR;
|
||||
}
|
||||
// ok we just reached the end of the file, we should exit properly, close file handle etc
|
||||
break;
|
||||
}
|
||||
long foffs = ftell(f);
|
||||
|
||||
void * buf = NULL;
|
||||
|
||||
switch ( woz_chunk_header.magic ) {
|
||||
case WOZ_INFO_CHUNK_ID:
|
||||
break;
|
||||
|
||||
case WOZ_TMAP_CHUNK_ID:
|
||||
buf = &woz_tmap;
|
||||
break;
|
||||
|
||||
case WOZ_TRKS_CHUNK_ID:
|
||||
buf = woz_trks;
|
||||
break;
|
||||
|
||||
case WOZ_META_CHUNK_ID:
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
if (buf) {
|
||||
r = fread( buf, 1, woz_chunk_header.size, f);
|
||||
if ( r != woz_chunk_header.size ) {
|
||||
return WOZ_ERR_BAD_DATA;
|
||||
}
|
||||
}
|
||||
|
||||
// make sure we are skipping unhandled chunks correctly
|
||||
fseek(f, foffs + woz_chunk_header.size, SEEK_SET);
|
||||
}
|
||||
|
||||
fclose(f);
|
||||
|
||||
|
||||
// DO NOT COMMIT THIS! ONLY FOR DEBUG!!!
|
||||
// woz_loadTrack(0x11);
|
||||
|
||||
return WOZ_ERR_OK;
|
||||
}
|
||||
|
||||
|
200
ssasa
200
ssasa
@ -1,200 +0,0 @@
|
||||
DEBUG: 0 no LDA
|
||||
Line Cycle Disassembly A X Y P S
|
||||
DEBUG: 0 no LDA
|
||||
5 44223738 C65E: BD 8C C0 LDA $C08C,X 0xF3 0x60 0x00 0xB4 0xFE
|
||||
DEBUG: 0 no LDA
|
||||
6 44223742 C661: 10 FB BPL $C65E 0xF3 0x60 0x00 0xB4 0xFE
|
||||
DEBUG: 0 no LDA
|
||||
7 44223744 C663: 49 D5 EOR #$D5 0x26 0x60 0x00 0x34 0xFE
|
||||
DEBUG: 0 no LDA
|
||||
8 44223746 C665: D0 F7 BNE $C65E 0x26 0x60 0x00 0x34 0xFE
|
||||
DEBUG: 0 no LDA
|
||||
15 44223770 C65E: BD 8C C0 LDA $C08C,X 0xCE 0x60 0x00 0xB4 0xFE
|
||||
DEBUG: 0 no LDA
|
||||
16 44223774 C661: 10 FB BPL $C65E 0xCE 0x60 0x00 0xB4 0xFE
|
||||
DEBUG: 0 no LDA
|
||||
17 44223776 C663: 49 D5 EOR #$D5 0x1B 0x60 0x00 0x34 0xFE
|
||||
DEBUG: 0 no LDA
|
||||
18 44223778 C665: D0 F7 BNE $C65E 0x1B 0x60 0x00 0x34 0xFE
|
||||
DEBUG: 0 no LDA
|
||||
25 44223802 C65E: BD 8C C0 LDA $C08C,X 0xE5 0x60 0x00 0xB4 0xFE
|
||||
DEBUG: 0 no LDA
|
||||
26 44223806 C661: 10 FB BPL $C65E 0xE5 0x60 0x00 0xB4 0xFE
|
||||
DEBUG: 0 no LDA
|
||||
27 44223808 C663: 49 D5 EOR #$D5 0x30 0x60 0x00 0x34 0xFE
|
||||
DEBUG: 0 no LDA
|
||||
28 44223810 C665: D0 F7 BNE $C65E 0x30 0x60 0x00 0x34 0xFE
|
||||
DEBUG: 0 no LDA
|
||||
35 44223834 C65E: BD 8C C0 LDA $C08C,X 0xF4 0x60 0x00 0xB4 0xFE
|
||||
DEBUG: 0 no LDA
|
||||
36 44223838 C661: 10 FB BPL $C65E 0xF4 0x60 0x00 0xB4 0xFE
|
||||
DEBUG: 0 no LDA
|
||||
37 44223840 C663: 49 D5 EOR #$D5 0x21 0x60 0x00 0x34 0xFE
|
||||
DEBUG: 0 no LDA
|
||||
38 44223842 C665: D0 F7 BNE $C65E 0x21 0x60 0x00 0x34 0xFE
|
||||
DEBUG: 0 no LDA
|
||||
45 44223866 C65E: BD 8C C0 LDA $C08C,X 0xCD 0x60 0x00 0xB4 0xFE
|
||||
DEBUG: 0 no LDA
|
||||
46 44223870 C661: 10 FB BPL $C65E 0xCD 0x60 0x00 0xB4 0xFE
|
||||
DEBUG: 0 no LDA
|
||||
47 44223872 C663: 49 D5 EOR #$D5 0x18 0x60 0x00 0x34 0xFE
|
||||
DEBUG: 0 no LDA
|
||||
48 44223874 C665: D0 F7 BNE $C65E 0x18 0x60 0x00 0x34 0xFE
|
||||
DEBUG: 0 no LDA
|
||||
55 44223898 C65E: BD 8C C0 LDA $C08C,X 0xBE 0x60 0x00 0xB4 0xFE
|
||||
DEBUG: 0 no LDA
|
||||
56 44223902 C661: 10 FB BPL $C65E 0xBE 0x60 0x00 0xB4 0xFE
|
||||
DEBUG: 0 no LDA
|
||||
57 44223904 C663: 49 D5 EOR #$D5 0x6B 0x60 0x00 0x34 0xFE
|
||||
DEBUG: 0 no LDA
|
||||
58 44223906 C665: D0 F7 BNE $C65E 0x6B 0x60 0x00 0x34 0xFE
|
||||
DEBUG: 0 no LDA
|
||||
65 44223930 C65E: BD 8C C0 LDA $C08C,X 0xFF 0x60 0x00 0xB4 0xFE
|
||||
DEBUG: 0 no LDA
|
||||
66 44223934 C661: 10 FB BPL $C65E 0xFF 0x60 0x00 0xB4 0xFE
|
||||
DEBUG: 0 no LDA
|
||||
67 44223936 C663: 49 D5 EOR #$D5 0x2A 0x60 0x00 0x34 0xFE
|
||||
DEBUG: 0 no LDA
|
||||
68 44223938 C665: D0 F7 BNE $C65E 0x2A 0x60 0x00 0x34 0xFE
|
||||
DEBUG: 0 no LDA
|
||||
75 44223962 C65E: BD 8C C0 LDA $C08C,X 0xE7 0x60 0x00 0xB4 0xFE
|
||||
DEBUG: 0 no LDA
|
||||
76 44223966 C661: 10 FB BPL $C65E 0xE7 0x60 0x00 0xB4 0xFE
|
||||
DEBUG: 0 no LDA
|
||||
77 44223968 C663: 49 D5 EOR #$D5 0x32 0x60 0x00 0x34 0xFE
|
||||
DEBUG: 0 no LDA
|
||||
78 44223970 C665: D0 F7 BNE $C65E 0x32 0x60 0x00 0x34 0xFE
|
||||
DEBUG: 0 no LDA
|
||||
85 44223994 C65E: BD 8C C0 LDA $C08C,X 0xCD 0x60 0x00 0xB4 0xFE
|
||||
DEBUG: 0 no LDA
|
||||
86 44223998 C661: 10 FB BPL $C65E 0xCD 0x60 0x00 0xB4 0xFE
|
||||
DEBUG: 0 no LDA
|
||||
87 44224000 C663: 49 D5 EOR #$D5 0x18 0x60 0x00 0x34 0xFE
|
||||
DEBUG: 0 no LDA
|
||||
88 44224002 C665: D0 F7 BNE $C65E 0x18 0x60 0x00 0x34 0xFE
|
||||
DEBUG: 0 no LDA
|
||||
95 44224026 C65E: BD 8C C0 LDA $C08C,X 0xBA 0x60 0x00 0xB4 0xFE
|
||||
DEBUG: 0 no LDA
|
||||
96 44224030 C661: 10 FB BPL $C65E 0xBA 0x60 0x00 0xB4 0xFE
|
||||
DEBUG: 0 no LDA
|
||||
97 44224032 C663: 49 D5 EOR #$D5 0x6F 0x60 0x00 0x34 0xFE
|
||||
DEBUG: 0 no LDA
|
||||
98 44224034 C665: D0 F7 BNE $C65E 0x6F 0x60 0x00 0x34 0xFE
|
||||
DEBUG: 0 no LDA
|
||||
105 44224058 C65E: BD 8C C0 LDA $C08C,X 0xB2 0x60 0x00 0xB4 0xFE
|
||||
DEBUG: 0 no LDA
|
||||
106 44224062 C661: 10 FB BPL $C65E 0xB2 0x60 0x00 0xB4 0xFE
|
||||
DEBUG: 0 no LDA
|
||||
107 44224064 C663: 49 D5 EOR #$D5 0x67 0x60 0x00 0x34 0xFE
|
||||
DEBUG: 0 no LDA
|
||||
108 44224066 C665: D0 F7 BNE $C65E 0x67 0x60 0x00 0x34 0xFE
|
||||
DEBUG: 0 no LDA
|
||||
115 44224090 C65E: BD 8C C0 LDA $C08C,X 0xA7 0x60 0x00 0xB4 0xFE
|
||||
DEBUG: 0 no LDA
|
||||
116 44224094 C661: 10 FB BPL $C65E 0xA7 0x60 0x00 0xB4 0xFE
|
||||
DEBUG: 0 no LDA
|
||||
117 44224096 C663: 49 D5 EOR #$D5 0x72 0x60 0x00 0x34 0xFE
|
||||
DEBUG: 0 no LDA
|
||||
118 44224098 C665: D0 F7 BNE $C65E 0x72 0x60 0x00 0x34 0xFE
|
||||
DEBUG: 0 no LDA
|
||||
125 44224122 C65E: BD 8C C0 LDA $C08C,X 0xFC 0x60 0x00 0xB4 0xFE
|
||||
DEBUG: 0 no LDA
|
||||
126 44224126 C661: 10 FB BPL $C65E 0xFC 0x60 0x00 0xB4 0xFE
|
||||
DEBUG: 0 no LDA
|
||||
127 44224128 C663: 49 D5 EOR #$D5 0x29 0x60 0x00 0x34 0xFE
|
||||
DEBUG: 0 no LDA
|
||||
128 44224130 C665: D0 F7 BNE $C65E 0x29 0x60 0x00 0x34 0xFE
|
||||
DEBUG: 0 no LDA
|
||||
135 44224154 C65E: BD 8C C0 LDA $C08C,X 0xF2 0x60 0x00 0xB4 0xFE
|
||||
DEBUG: 0 no LDA
|
||||
136 44224158 C661: 10 FB BPL $C65E 0xF2 0x60 0x00 0xB4 0xFE
|
||||
DEBUG: 0 no LDA
|
||||
137 44224160 C663: 49 D5 EOR #$D5 0x27 0x60 0x00 0x34 0xFE
|
||||
DEBUG: 0 no LDA
|
||||
138 44224162 C665: D0 F7 BNE $C65E 0x27 0x60 0x00 0x34 0xFE
|
||||
DEBUG: 0 no LDA
|
||||
145 44224186 C65E: BD 8C C0 LDA $C08C,X 0xE9 0x60 0x00 0xB4 0xFE
|
||||
DEBUG: 0 no LDA
|
||||
146 44224190 C661: 10 FB BPL $C65E 0xE9 0x60 0x00 0xB4 0xFE
|
||||
DEBUG: 0 no LDA
|
||||
147 44224192 C663: 49 D5 EOR #$D5 0x3C 0x60 0x00 0x34 0xFE
|
||||
DEBUG: 0 no LDA
|
||||
148 44224194 C665: D0 F7 BNE $C65E 0x3C 0x60 0x00 0x34 0xFE
|
||||
DEBUG: 0 no LDA
|
||||
155 44224218 C65E: BD 8C C0 LDA $C08C,X 0xFF 0x60 0x00 0xB4 0xFE
|
||||
DEBUG: 0 no LDA
|
||||
156 44224222 C661: 10 FB BPL $C65E 0xFF 0x60 0x00 0xB4 0xFE
|
||||
DEBUG: 0 no LDA
|
||||
157 44224224 C663: 49 D5 EOR #$D5 0x2A 0x60 0x00 0x34 0xFE
|
||||
DEBUG: 0 no LDA
|
||||
158 44224226 C665: D0 F7 BNE $C65E 0x2A 0x60 0x00 0x34 0xFE
|
||||
DEBUG: 0 no LDA
|
||||
165 44224250 C65E: BD 8C C0 LDA $C08C,X 0xCF 0x60 0x00 0xB4 0xFE
|
||||
DEBUG: 0 no LDA
|
||||
166 44224254 C661: 10 FB BPL $C65E 0xCF 0x60 0x00 0xB4 0xFE
|
||||
DEBUG: 0 no LDA
|
||||
167 44224256 C663: 49 D5 EOR #$D5 0x1A 0x60 0x00 0x34 0xFE
|
||||
DEBUG: 0 no LDA
|
||||
168 44224258 C665: D0 F7 BNE $C65E 0x1A 0x60 0x00 0x34 0xFE
|
||||
DEBUG: 0 no LDA
|
||||
175 44224282 C65E: BD 8C C0 LDA $C08C,X 0xA7 0x60 0x00 0xB4 0xFE
|
||||
DEBUG: 0 no LDA
|
||||
176 44224286 C661: 10 FB BPL $C65E 0xA7 0x60 0x00 0xB4 0xFE
|
||||
DEBUG: 0 no LDA
|
||||
177 44224288 C663: 49 D5 EOR #$D5 0x72 0x60 0x00 0x34 0xFE
|
||||
DEBUG: 0 no LDA
|
||||
178 44224290 C665: D0 F7 BNE $C65E 0x72 0x60 0x00 0x34 0xFE
|
||||
DEBUG: 0 no LDA
|
||||
185 44224314 C65E: BD 8C C0 LDA $C08C,X 0xDF 0x60 0x00 0xB4 0xFE
|
||||
DEBUG: 0 no LDA
|
||||
186 44224318 C661: 10 FB BPL $C65E 0xDF 0x60 0x00 0xB4 0xFE
|
||||
DEBUG: 0 no LDA
|
||||
187 44224320 C663: 49 D5 EOR #$D5 0x0A 0x60 0x00 0x34 0xFE
|
||||
DEBUG: 0 no LDA
|
||||
188 44224322 C665: D0 F7 BNE $C65E 0x0A 0x60 0x00 0x34 0xFE
|
||||
DEBUG: 0 no LDA
|
||||
195 44224346 C65E: BD 8C C0 LDA $C08C,X 0x9E 0x60 0x00 0xB4 0xFE
|
||||
DEBUG: 0 no LDA
|
||||
196 44224350 C661: 10 FB BPL $C65E 0x9E 0x60 0x00 0xB4 0xFE
|
||||
DEBUG: 0 no LDA
|
||||
197 44224352 C663: 49 D5 EOR #$D5 0x4B 0x60 0x00 0x34 0xFE
|
||||
DEBUG: 0 no LDA
|
||||
198 44224354 C665: D0 F7 BNE $C65E 0x4B 0x60 0x00 0x34 0xFE
|
||||
DEBUG: 0 no LDA
|
||||
205 44224378 C65E: BD 8C C0 LDA $C08C,X 0xE7 0x60 0x00 0xB4 0xFE
|
||||
DEBUG: 0 no LDA
|
||||
206 44224382 C661: 10 FB BPL $C65E 0xE7 0x60 0x00 0xB4 0xFE
|
||||
DEBUG: 0 no LDA
|
||||
207 44224384 C663: 49 D5 EOR #$D5 0x32 0x60 0x00 0x34 0xFE
|
||||
DEBUG: 0 no LDA
|
||||
208 44224386 C665: D0 F7 BNE $C65E 0x32 0x60 0x00 0x34 0xFE
|
||||
DEBUG: 0 no LDA
|
||||
215 44224410 C65E: BD 8C C0 LDA $C08C,X 0x9B 0x60 0x00 0xB4 0xFE
|
||||
DEBUG: 0 no LDA
|
||||
216 44224414 C661: 10 FB BPL $C65E 0x9B 0x60 0x00 0xB4 0xFE
|
||||
DEBUG: 0 no LDA
|
||||
217 44224416 C663: 49 D5 EOR #$D5 0x4E 0x60 0x00 0x34 0xFE
|
||||
DEBUG: 0 no LDA
|
||||
218 44224418 C665: D0 F7 BNE $C65E 0x4E 0x60 0x00 0x34 0xFE
|
||||
DEBUG: 0 no LDA
|
||||
225 44224442 C65E: BD 8C C0 LDA $C08C,X 0xBA 0x60 0x00 0xB4 0xFE
|
||||
DEBUG: 0 no LDA
|
||||
226 44224446 C661: 10 FB BPL $C65E 0xBA 0x60 0x00 0xB4 0xFE
|
||||
DEBUG: 0 no LDA
|
||||
227 44224448 C663: 49 D5 EOR #$D5 0x6F 0x60 0x00 0x34 0xFE
|
||||
DEBUG: 0 no LDA
|
||||
228 44224450 C665: D0 F7 BNE $C65E 0x6F 0x60 0x00 0x34 0xFE
|
||||
DEBUG: 0 no LDA
|
||||
235 44224474 C65E: BD 8C C0 LDA $C08C,X 0xFD 0x60 0x00 0xB4 0xFE
|
||||
DEBUG: 0 no LDA
|
||||
236 44224478 C661: 10 FB BPL $C65E 0xFD 0x60 0x00 0xB4 0xFE
|
||||
DEBUG: 0 no LDA
|
||||
237 44224480 C663: 49 D5 EOR #$D5 0x28 0x60 0x00 0x34 0xFE
|
||||
DEBUG: 0 no LDA
|
||||
238 44224482 C665: D0 F7 BNE $C65E 0x28 0x60 0x00 0x34 0xFE
|
||||
DEBUG: 0 no LDA
|
||||
245 44224506 C65E: BD 8C C0 LDA $C08C,X 0xE7 0x60 0x00 0xB4 0xFE
|
||||
DEBUG: 0 no LDA
|
||||
246 44224510 C661: 10 FB BPL $C65E 0xE7 0x60 0x00 0xB4 0xFE
|
||||
DEBUG: 0 no LDA
|
||||
247 44224512 C663: 49 D5 EOR #$D5 0x32 0x60 0x00 0x34 0xFE
|
Loading…
x
Reference in New Issue
Block a user