Menu

#2215 Checkpoint prints a wrong cycle id

v3.x
closed-fixed
gpz
None
Monitor
2026-03-26
2026-03-13
rice123
No

Steps:

  1. Activate monitor
  2. >1000 ea 4c 00 10
  3. r pc = 1000
  4. break 1001
  5. dev 8:
  6. x

Result:

#1 (Stop on  exec 1001)  137/$089,   4/$04
.C:1001  4C 00 10    JMP $1000      - A:00 X:00 Y:0A SP:f3 ..-...Z.    3839200
(C:$1001) chis
[SNIP]
.C:1000  EA          NOP            A:00 X:00 Y:0a SP:f3 ..-...Z.      3782585
(C:$1001) dev 8:
Setting default device to `Disk8'
(8:$ec12) chis
[SNIP]
.8:ec12  A6 72       LDX $72        A:ff X:06 Y:ff SP:45 ..-....C      3839200
(8:$ec12) 

3839200 is the clock number from the drive CPU, not the CPU of the checkpoint. Probably due to a wrong vice_interface in:

void mon_stopwatch_show(const char *prefix, const char *suffix)
{
    unsigned long t;
    monitor_interface_t *vice_interface;
    vice_interface = mon_interfaces[default_memspace];
    t = (unsigned long)
        (*vice_interface->clk - stopwatch_start_time[default_memspace]);
    mon_out("%s%10lu%s", prefix, t, suffix);
}

Discussion

  • gpz

    gpz - 2026-03-25

    It looks correct to me so far:

    Note that the two clock counters may look very similar unless you reset one of them

    (C:$e633) z
    .C:e5d1  8D 92 02    STA $0292      - A:00 X:00 Y:0A SP:f3 ..-...Z.    5346688
    (C:$e5d1) 
    .C:e5d4  F0 F7       BEQ $E5CD      - A:00 X:00 Y:0A SP:f3 ..-...Z.    5346692
    (C:$e5d4) 
    .C:e5cd  A5 C6       LDA $C6        - A:00 X:00 Y:0A SP:f3 ..-...Z.    5346695
    (C:$e5cd) dev 8:
    Setting default device to `Disk8'
    (8:$ec34) z
    .8:ec3b  88          DEY            - A:00 X:00 Y:01 SP:45 ..-...ZC    5426722
    (8:$ec3b) 
    .8:ec3c  10 F3       BPL $EC31      - A:00 X:00 Y:00 SP:45 ..-...ZC    5426724
    (8:$ec3c) 
    .8:ec31  B9 00 00    LDA $0000,Y    - A:00 X:00 Y:00 SP:45 ..-...ZC    5426727
    (8:$ec31) 
    .8:ec34  10 05       BPL $EC3B      - A:00 X:00 Y:00 SP:45 ..-...ZC    5426731
    (8:$ec34) sw
    Stopwatch:    5426731
    (8:$ec34) sw reset
    Stopwatch reset to 0.
    (8:$ec34) z
    .8:ec3b  88          DEY            - A:00 X:00 Y:00 SP:45 ..-...ZC          3
    (8:$ec3b) 
    .8:ec3c  10 F3       BPL $EC31      - A:00 X:00 Y:FF SP:45 N.-....C          5
    (8:$ec3c) 
    .8:ec3e  78          SEI            - A:00 X:00 Y:FF SP:45 N.-....C          7
    (8:$ec3e) 
    .8:ec3f  AD 00 1C    LDA $1C00      - A:00 X:00 Y:FF SP:45 N.-..I.C          9
    (8:$ec3f) 
    .8:ec42  29 F7       AND #$F7       - A:F0 X:00 Y:FF SP:45 N.-..I.C         13
    (8:$ec42) 
    .8:ec44  48          PHA            - A:F0 X:00 Y:FF SP:45 N.-..I.C         15
    (8:$ec44) dev c:
    Setting default device to `Computer'
    (C:$e5cd) z
    .C:e5d4  F0 F7       BEQ $E5CD      - A:00 X:00 Y:0A SP:f3 ..-...Z.    5366091
    (C:$e5d4) 
    .C:e5cd  A5 C6       LDA $C6        - A:00 X:00 Y:0A SP:f3 ..-...Z.    5366094
    (C:$e5cd) 
    .C:e5cf  85 CC       STA $CC        - A:00 X:00 Y:0A SP:f3 ..-...Z.    5366097
    (C:$e5cf) 
    .C:e5d1  8D 92 02    STA $0292      - A:00 X:00 Y:0A SP:f3 ..-...Z.    5366100
    (C:$e5d1) 
    .C:e5d4  F0 F7       BEQ $E5CD      - A:00 X:00 Y:0A SP:f3 ..-...Z.    5366104
    (C:$e5d4) 
    .C:e5cd  A5 C6       LDA $C6        - A:00 X:00 Y:0A SP:f3 ..-...Z.    5366107
    (C:$e5cd) 
    .C:e5cf  85 CC       STA $CC        - A:00 X:00 Y:0A SP:f3 ..-...Z.    5366110
    (C:$e5cf) 
    .C:e5d1  8D 92 02    STA $0292      - A:00 X:00 Y:0A SP:f3 ..-...Z.    5366113
    (C:$e5d1) dev 8:
    Setting default device to `Disk8'
    (8:$ec17) z
    .8:ec19  F0 10       BEQ $EC2B      - A:FF X:00 Y:FF SP:45 ..-...ZC      39383
    (8:$ec19) 
    .8:ec2b  C6 72       DEC $72        - A:FF X:00 Y:FF SP:45 ..-...ZC      39386
    (8:$ec2b) 
    .8:ec2d  10 E3       BPL $EC12      - A:FF X:00 Y:FF SP:45 N.-....C      39391
    (8:$ec2d) 
    .8:ec2f  A0 04       LDY #$04       - A:FF X:00 Y:FF SP:45 N.-....C      39393
    (8:$ec2f) 
    .8:ec31  B9 00 00    LDA $0000,Y    - A:FF X:00 Y:04 SP:45 ..-....C      39395
    (8:$ec31) dev c:
    Setting default device to `Computer'
    (C:$e5d1) z
    .C:e5cf  85 CC       STA $CC        - A:00 X:00 Y:0A SP:f3 ..-...Z.    5385745
    (C:$e5cf) 
    .C:e5d1  8D 92 02    STA $0292      - A:00 X:00 Y:0A SP:f3 ..-...Z.    5385748
    (C:$e5d1) 
    .C:e5d4  F0 F7       BEQ $E5CD      - A:00 X:00 Y:0A SP:f3 ..-...Z.    5385752
    (C:$e5d4) 
    .C:e5cd  A5 C6       LDA $C6        - A:00 X:00 Y:0A SP:f3 ..-...Z.    5385755
    (C:$e5cd) 
    
     
  • gpz

    gpz - 2026-03-25

    But you are correct, its wrong in chis... looking

     
  • gpz

    gpz - 2026-03-25

    First observation: its not the stopwatch clock that is written into the cpu history, its always the actual CPU clock (which can never be "reset" like the stopwatch)
    Also it correctly writes the origin memspace (alternating 1 and 2) and different clock values.

    The function we are looking at is monitor_cpuhistory_store() in mon_memmap.c

     
  • gpz

    gpz - 2026-03-25

    OK full reproducer:

    (C:$e5d1) >1000 ea 4c 00 10
    (C:$e5d1) r pc = 1000
    (C:$e5d1) break 1001
    BREAK: 1  C:$1001  (Stop on exec)
    (C:$e5d1) dev 8:
    Setting default device to `Disk8'
    (8:$ec2d) x
    #1 (Stop on  exec 1001)   66/$042,   3/$03
    .C:1001  4C 00 10    JMP $1000      - A:00 X:00 Y:0A SP:f3 ..-...Z.   19335986
    (C:$1001) chis 4
    .C:e5d4  F0 F7       BEQ $E5CD      A:00 X:00 Y:0a SP:f3 ..-...Z.     19050814
    .C:e5cd  A5 C6       LDA $C6        A:00 X:00 Y:0a SP:f3 ..-...Z.     19050817
    .C:e5cf  85 CC       STA $CC        A:00 X:00 Y:0a SP:f3 ..-...Z.     19050820
    .C:1000  EA          NOP            A:00 X:00 Y:0a SP:f3 ..-...Z.     19050823
    (C:$1001) dev c:
    Setting default device to `Computer'
    (C:$1001) chis 4
    .C:e5d4  F0 F7       BEQ $E5CD      A:00 X:00 Y:0a SP:f3 ..-...Z.     19050814
    .C:e5cd  A5 C6       LDA $C6        A:00 X:00 Y:0a SP:f3 ..-...Z.     19050817
    .C:e5cf  85 CC       STA $CC        A:00 X:00 Y:0a SP:f3 ..-...Z.     19050820
    .C:1000  EA          NOP            A:00 X:00 Y:0a SP:f3 ..-...Z.     19050823
    (C:$1001) dev 8:
    Setting default device to `Disk8'
    (8:$ec14) chis 4
    .8:ec2b  C6 72       DEC $72        A:ff X:02 Y:ff SP:45 ..-...ZC     19335975
    .8:ec2d  10 E3       BPL $EC12      A:ff X:02 Y:ff SP:45 ..-....C     19335980
    .8:ec12  A6 72       LDX $72        A:ff X:02 Y:ff SP:45 ..-....C     19335983
    .8:ec14  BD 2B 02    LDA $022B,X    A:ff X:01 Y:ff SP:45 ..-....C     19335986
    (8:$ec14) 
    

    I was wrong of course - chis is correct. Its the checkpoint. looking more... :)

     
  • gpz

    gpz - 2026-03-25

    so you were actually correct, the problem was that mon_stopwatch_show() always used the default memspace. should be fixed in r46035 - please test

     
  • gpz

    gpz - 2026-03-25
    • status: open --> open-need-info
    • assigned_to: gpz
     
  • rice123

    rice123 - 2026-03-26

    thanks for the fix, it works fine now.

     
  • gpz

    gpz - 2026-03-26
    • status: open-need-info --> closed-fixed
     

Log in to post a comment.

MongoDB Logo MongoDB