indigodarkwolf / box16

A fork of the official X16 emulator, converted to C++20 and with a bunch of features tweaked and added.
MIT License
41 stars 18 forks source link

freezes when loading certain symbol files #11

Closed irmen closed 3 years ago

irmen commented 3 years ago

The emulator freezes without showing a window or printing an error message when loading my symbol files. Here's an example that triggers the issue:

al 8a6 .prog8_slabs
al 817 ._prog8_entrypoint
al 834 .cx16
al 862 .cx16:init_system_phase2
al 834 .cx16:init_system
al 871 .cx16:restore_irq
al 88a .cx16:restore_irq:_orig_irqvec
al 834 .c64
al 88c .prog8_lib
al 890 .prog8_lib:retval_interm_w
al 88d .prog8_lib:retval_interm_b
al 88c .prog8_lib:retval_interm_ub
al 892 .prog8_lib:orig_stackpointer
al 893 .prog8_lib:prog8_init_vars
al 88e .prog8_lib:retval_interm_uw
al 8a6 .prog8_program_end
al 825 .main
al 825 .main:_label
al 825 .main:start
al 832 .main:start:_prog8_breakpoint_1
al 833 .main:start:_label_local
; vice monitor breakpoint list now follows
; 1 breakpoints have been defined
del
break $832

This is an example of a combined symbol and breakpoints "mon list" file that Prog8 generates. I think the freeze issue is triggered by the extra commands at the end.

The "mon list" file is basically a list of commands that the Vice monitor executes before launch. Command line option ref As such it can contain any command the vice monitor accepts also when typed in interactively, there are quite a few! But I only use it for 2 things: to define labels and to define breakpoints. So prog8 outputs symbol/monlist files containing:

indigodarkwolf commented 3 years ago

And that should be fixed with latest code. Feel free to close this if it works for you.

irmen commented 3 years ago

works! superb!