├── .appveyor.yml ├── .cirrus.yml ├── .clang-tidy ├── .gdbinit ├── .gdbinit-context ├── .github └── workflows │ ├── build-and-test.yml │ ├── clang-tidy-check.yml │ ├── distcheck.yml │ ├── macos-build-and-test.yml │ └── windows-build-and-test.yml ├── .gitignore ├── .gitmodules ├── AUTHORS ├── CMakeLists.txt ├── COPYING ├── ChangeLog ├── INSTALL ├── INSTALL.Win32 ├── INSTALL.unix ├── LICENSE ├── Makefile.am ├── Makefile.in ├── NEWS ├── README ├── README.md ├── TODO ├── acinclude.m4 ├── aclocal.m4 ├── build ├── download_fug_dsk_files.sh ├── fug.ico └── windows │ ├── change_version.sh │ ├── create_fug_dsk_files_installer.sh │ ├── create_installer.sh │ ├── download_and_install_envar_plugin.sh │ ├── download_and_rebuild_libs.sh │ ├── installer │ ├── Flexemu.nsi │ ├── GetParameterValue.nsh │ ├── GetParameters.nsh │ ├── HistoricFLEXFiles.nsi │ ├── SplitFirstStrPart.nsh │ └── StrStr.nsh │ ├── rebuild_flexemu_all_and_copy_libs.sh │ └── setQtProperties.ps1 ├── cmake_uninstall.cmake.in ├── config ├── ar-lib ├── compile ├── config.guess ├── config.sub ├── depcomp ├── install-sh ├── ltmain.sh ├── missing └── test-driver ├── configure ├── configure.ac ├── disks ├── CMakeLists.txt ├── Makefile.am ├── Makefile.in ├── btx.dsk ├── cedric.dsk ├── colors.dsk ├── diag6809.dsk ├── dynadocu.dsk ├── games.dsk ├── just.dsk ├── laycad.dsk ├── layout.dsk ├── pictures.dsk ├── rndtest.dsk ├── source.dsk ├── system.dsk ├── system.mdcr ├── system54.dsk ├── test.dsk └── tsc_man.dsk ├── doc ├── 6809diag.pdf ├── 6809fadg.pdf ├── 6x09_Instruction_Sets.pdf ├── CMakeLists.txt ├── Makefile.am ├── Makefile.in ├── TSC_Text_Processor.pdf ├── asmb.pdf ├── ba2bqs.pdf ├── basic_um.pdf ├── basprec.pdf ├── cedric.pdf ├── crasmb.pdf ├── debug.pdf ├── dynamite.pdf ├── dynastar.pdf ├── e2hwdesc.htm ├── f77.pdf ├── flex2um.pdf ├── flexapg.pdf ├── flexdos.htm ├── flexemu.css ├── flexemu.htm ├── flexerr.htm ├── flexfcb.htm ├── flexfms.htm ├── flexfs.htm ├── flexmem.htm ├── flexuser.htm ├── flexutil.htm ├── images │ ├── 2x384flx.png │ ├── 2x384k.png │ ├── 2x96k.png │ ├── CMakeLists.txt │ ├── Makefile.am │ ├── Makefile.in │ ├── e2scn.png │ ├── e2v5m.png │ ├── e2v7m.png │ ├── pat09_cursorpad.png │ ├── pat09_key_down_arrow.png │ ├── pat09_key_left_arrow.png │ ├── pat09_key_left_limit.png │ ├── pat09_key_mode.png │ ├── pat09_key_right_arrow.png │ ├── pat09_key_right_limit.png │ ├── pat09_key_thick_left_arrow.png │ ├── pat09_key_thick_lower_right_arrow.png │ ├── pat09_key_thick_right_arrow.png │ ├── pat09_key_thick_upper_left_arrow.png │ ├── pat09_key_up_arrow.png │ ├── pat09_keyboard.png │ └── pat09_numpad.png ├── instance.fig ├── instance.ps ├── just.pdf ├── linkload.pdf ├── mc6809.htm ├── mon24.htm ├── mon53_54.htm ├── monu54.htm ├── neumon54.htm ├── relasmb.pdf ├── state.fig ├── state.ps ├── swflexum.pdf ├── tedit.pdf └── util_man.pdf ├── docker ├── almalinux │ └── Dockerfile ├── alpine │ └── Dockerfile ├── altlinux │ └── Dockerfile ├── amazonlinux │ └── Dockerfile ├── archlinux │ └── Dockerfile ├── biglinux │ └── Dockerfile ├── cachyos │ └── Dockerfile ├── centos │ └── Dockerfile ├── debian │ └── Dockerfile ├── debian_be │ └── Dockerfile ├── debian_i386 │ └── Dockerfile ├── debian_qt6 │ └── Dockerfile ├── debian_testing │ └── Dockerfile ├── debian_testing_qt6 │ └── Dockerfile ├── debian_unstable │ └── Dockerfile ├── debian_unstable_qt6 │ └── Dockerfile ├── dockerRunForwardX11.sh ├── endlessos │ └── Dockerfile ├── fedora │ └── Dockerfile ├── kalilinux │ └── Dockerfile ├── linuxmint │ └── Dockerfile ├── mageia │ └── Dockerfile ├── manjaro │ └── Dockerfile ├── opensuse │ └── Dockerfile ├── oraclelinux │ └── Dockerfile ├── photon │ └── Dockerfile ├── readme.md ├── rockylinux │ └── Dockerfile ├── slackware │ ├── Dockerfile │ └── setup.sh ├── statistics.md ├── ubuntu │ └── Dockerfile ├── ubuntu18_clang │ └── Dockerfile ├── ubuntu18_gcc │ └── Dockerfile └── voidlinux │ └── Dockerfile ├── flexemu.sln ├── imhex ├── patterns │ ├── flex_binary.hexpat │ ├── flex_dskflx.hexpat │ └── flex_random.hexpat └── readme.md ├── m4 ├── attributes.m4 ├── ax_cflags_warn_all.m4 ├── ax_clang_tidy_opts.m4 ├── ax_compiler_vendor.m4 ├── ax_have_qt.m4 ├── ax_prepend_flag.m4 ├── ax_require_defined.m4 ├── ax_with_curses.m4 ├── flx_bitfields_lsb_first.m4 ├── flx_disable_post_install.m4 ├── flx_precompiled_headers.m4 ├── libtool.m4 ├── ltoptions.m4 ├── ltsugar.m4 ├── ltversion.m4 ├── lt~obsolete.m4 └── pkg.m4 ├── metadata.json ├── monitor ├── CMakeLists.txt ├── Makefile.am ├── Makefile.in ├── coltab.asm ├── coltab.hex ├── coltab.lst ├── coltab.org ├── makefile_coltab ├── makefile_neumon54 ├── mon24.bin ├── mon24.s19 ├── mon24 │ ├── Makefile.am │ ├── Makefile.in │ ├── Makefile.unx │ └── mon24.inf ├── mon24z.s19 ├── mon24z │ ├── Makefile.am │ ├── Makefile.in │ ├── Makefile.unx │ └── mon24z.inf ├── mon53.s19 ├── mon54.s19 ├── monu54-6.s19 ├── neumon54.asm ├── neumon54.hex └── neumon54.lst ├── options.txt ├── python ├── cpus.py ├── flex.py ├── flexemu_common.py ├── s_dir_entry_Printer.py ├── s_link_table_Printer.py ├── s_new_file_Printer.py ├── s_sys_info_record_Printer.py ├── s_sys_info_sector_Printer.py └── st_t_Printer.py ├── src ├── CMakeLists.txt ├── JoystickTable.gnumeric ├── Makefile.am ├── Makefile.in ├── about.ui ├── absdisas.h ├── absgui.cpp ├── absgui.h ├── acia1.cpp ├── acia1.h ├── apprun.cpp ├── apprun.h ├── asciictl.h ├── bcommand.h ├── bdate.cpp ├── bdate.h ├── bdir.cpp ├── bdir.h ├── benv.cpp ├── benv.h ├── binifile.cpp ├── binifile.h ├── bintervl.h ├── bitfield.cpp ├── bitmaps │ ├── 128x128 │ │ ├── Makefile.am │ │ ├── Makefile.in │ │ ├── flexemu-flexplorer.png │ │ ├── flexemu-fsetup.png │ │ ├── flexemu-irqs.png │ │ └── flexemu.png │ ├── 16x16 │ │ ├── Makefile.am │ │ ├── Makefile.in │ │ ├── flexemu-flexplorer.png │ │ ├── flexemu-fsetup.png │ │ ├── flexemu-ledred-off.png │ │ ├── flexemu-ledred-on.png │ │ └── flexemu.png │ ├── 256x256 │ │ ├── Makefile.am │ │ ├── Makefile.in │ │ ├── flexemu-flexplorer-background.png │ │ ├── flexemu-flexplorer.png │ │ ├── flexemu-floppy.png │ │ ├── flexemu-fsetup.png │ │ └── flexemu.png │ ├── 32x32 │ │ ├── Makefile.am │ │ ├── Makefile.in │ │ ├── flexemu-address.png │ │ ├── flexemu-ascii.png │ │ ├── flexemu-autoupdate-winsize.png │ │ ├── flexemu-breakpoints.png │ │ ├── flexemu-check-failed.png │ │ ├── flexemu-cpu-undocumented.png │ │ ├── flexemu-cpu.png │ │ ├── flexemu-detect-page-break.png │ │ ├── flexemu-flexplorer-about.png │ │ ├── flexemu-flexplorer-attributes.png │ │ ├── flexemu-flexplorer-copy.png │ │ ├── flexemu-flexplorer-delete.png │ │ ├── flexemu-flexplorer-deselectall.png │ │ ├── flexemu-flexplorer-dir.png │ │ ├── flexemu-flexplorer-exit.png │ │ ├── flexemu-flexplorer-extract.png │ │ ├── flexemu-flexplorer-find-next.png │ │ ├── flexemu-flexplorer-find.png │ │ ├── flexemu-flexplorer-info.png │ │ ├── flexemu-flexplorer-inject.png │ │ ├── flexemu-flexplorer-new.png │ │ ├── flexemu-flexplorer-open.png │ │ ├── flexemu-flexplorer-opendir.png │ │ ├── flexemu-flexplorer-options-needs-restart.png │ │ ├── flexemu-flexplorer-options.png │ │ ├── flexemu-flexplorer-paste.png │ │ ├── flexemu-flexplorer-selectall.png │ │ ├── flexemu-flexplorer-view.png │ │ ├── flexemu-flexplorer-window-close.png │ │ ├── flexemu-flexplorer.png │ │ ├── flexemu-floppy.png │ │ ├── flexemu-fsetup.png │ │ ├── flexemu-irq-gray.png │ │ ├── flexemu-irq-lightblue.png │ │ ├── flexemu-irq-magenta.png │ │ ├── flexemu-irq-red.png │ │ ├── flexemu-irq-yellow.png │ │ ├── flexemu-logging.png │ │ ├── flexemu-magnet.png │ │ ├── flexemu-memory.png │ │ ├── flexemu-original-frequency.png │ │ ├── flexemu-print-clear.png │ │ ├── flexemu-print-output.png │ │ ├── flexemu-print-preview.png │ │ ├── flexemu-print.png │ │ ├── flexemu-reset.png │ │ ├── flexemu-run.png │ │ ├── flexemu-screen-full.png │ │ ├── flexemu-screen1.png │ │ ├── flexemu-screen2.png │ │ ├── flexemu-screen3.png │ │ ├── flexemu-screen4.png │ │ ├── flexemu-screen5.png │ │ ├── flexemu-space.png │ │ ├── flexemu-stop.png │ │ ├── flexemu-toggle.png │ │ ├── flexemu-update-winsize.png │ │ ├── flexemu-window-close.png │ │ ├── flexemu.png │ │ └── qt_extended_32x32.png │ ├── 48x48 │ │ ├── Makefile.am │ │ ├── Makefile.in │ │ ├── application-x-flex-diskimage.png │ │ ├── flexemu-flexplorer.png │ │ ├── flexemu-fsetup.png │ │ └── flexemu.png │ ├── 64x64 │ │ ├── Makefile.am │ │ ├── Makefile.in │ │ ├── flexemu-flexplorer-diskimagefiles.png │ │ ├── flexemu-flexplorer.png │ │ ├── flexemu-fsetup.png │ │ └── flexemu.png │ ├── CMakeLists.txt │ ├── Makefile.am │ ├── Makefile.in │ ├── flexdisk.ico │ ├── flexemu.ico │ └── scalable │ │ ├── Makefile.am │ │ ├── Makefile.in │ │ ├── application-x-flex-diskimage.svg │ │ ├── flexemu-address.svg │ │ ├── flexemu-ascii.svg │ │ ├── flexemu-autoupdate-winsize.svg │ │ ├── flexemu-breakpoints.svg │ │ ├── flexemu-check-failed.svg │ │ ├── flexemu-cpu-undocumented.svg │ │ ├── flexemu-cpu.svg │ │ ├── flexemu-detect-page-break.svg │ │ ├── flexemu-flexplorer-about.svg │ │ ├── flexemu-flexplorer-attributes.svg │ │ ├── flexemu-flexplorer-background.svg │ │ ├── flexemu-flexplorer-copy.svg │ │ ├── flexemu-flexplorer-delete.svg │ │ ├── flexemu-flexplorer-deselectall.svg │ │ ├── flexemu-flexplorer-dir.svg │ │ ├── flexemu-flexplorer-diskimagefiles.svg │ │ ├── flexemu-flexplorer-exit.svg │ │ ├── flexemu-flexplorer-extract.svg │ │ ├── flexemu-flexplorer-find-next.svg │ │ ├── flexemu-flexplorer-find.svg │ │ ├── flexemu-flexplorer-info.svg │ │ ├── flexemu-flexplorer-inject.svg │ │ ├── flexemu-flexplorer-new.svg │ │ ├── flexemu-flexplorer-open.svg │ │ ├── flexemu-flexplorer-opendir.svg │ │ ├── flexemu-flexplorer-options-needs-restart.svg │ │ ├── flexemu-flexplorer-options.svg │ │ ├── flexemu-flexplorer-paste.svg │ │ ├── flexemu-flexplorer-selectall.svg │ │ ├── flexemu-flexplorer-view.svg │ │ ├── flexemu-flexplorer-window-close.svg │ │ ├── flexemu-flexplorer.svg │ │ ├── flexemu-floppy.svg │ │ ├── flexemu-fsetup.svg │ │ ├── flexemu-irq-gray.svg │ │ ├── flexemu-irq-lightblue.svg │ │ ├── flexemu-irq-maganta.svg │ │ ├── flexemu-irq-red.svg │ │ ├── flexemu-irq-yellow.svg │ │ ├── flexemu-irqs.svg │ │ ├── flexemu-ledred-off.svg │ │ ├── flexemu-ledred-on.svg │ │ ├── flexemu-logging.svg │ │ ├── flexemu-magnet.svg │ │ ├── flexemu-memory.svg │ │ ├── flexemu-original-frequency.svg │ │ ├── flexemu-run.svg │ │ ├── flexemu-screen-full.svg │ │ ├── flexemu-screen1.svg │ │ ├── flexemu-screen2.svg │ │ ├── flexemu-screen3.svg │ │ ├── flexemu-screen4.svg │ │ ├── flexemu-screen5.svg │ │ ├── flexemu-space.svg │ │ ├── flexemu-stop.svg │ │ ├── flexemu-toggle.svg │ │ ├── flexemu-update-winsize.svg │ │ ├── flexemu-window-close.svg │ │ └── flexemu.svg ├── bitops.h ├── bjoystck.cpp ├── bjoystck.h ├── blinxsys.cpp ├── blinxsys.h ├── bmembuf.cpp ├── bmembuf.h ├── bmp.h ├── bobserv.h ├── bobservd.cpp ├── bobservd.h ├── bobshelp.h ├── boot ├── bprocess.cpp ├── bprocess.h ├── brcfile.cpp ├── brcfile.h ├── bregistr.cpp ├── bregistr.h ├── breltime.cpp ├── breltime.h ├── brkpt.ui ├── brkptui.cpp ├── brkptui.h ├── bscopeex.h ├── btime.cpp ├── btime.h ├── bui.cpp ├── bui.h ├── bytereg.cpp ├── bytereg.h ├── cacttrns.cpp ├── cacttrns.h ├── ccopymem.cpp ├── ccopymem.h ├── cistring.h ├── clogfile.cpp ├── clogfile.h ├── colors.cpp ├── colors.h ├── command.cpp ├── command.h ├── config.h.in ├── config.hin ├── confignt.h ├── cpustat.ui ├── cpustate.h ├── crc.h ├── csetfreq.cpp ├── csetfreq.h ├── cvtwchar.cpp ├── cvtwchar.h ├── cwritmem.cpp ├── cwritmem.h ├── da6809.cpp ├── da6809.h ├── debug.h ├── dircont.cpp ├── dircont.h ├── drawnwid.cpp ├── drawnwid.h ├── drisel.cpp ├── drisel.h ├── dsktool-gdb.py ├── dsktool.cpp ├── dsktool.rc ├── dsktool.vcxproj ├── dsktool.vcxproj.filters ├── e2.h ├── e2floppy.cpp ├── e2floppy.h ├── e2screen.cpp ├── e2screen.h ├── efilesiz.h ├── efiletim.h ├── efslctle.cpp ├── efslctle.h ├── engine.cpi ├── engine.h ├── fattrib.cpp ├── fattrib.h ├── fcinfo.cpp ├── fcinfo.h ├── fcnffile.cpp ├── fcnffile.h ├── fcopyman.cpp ├── fcopyman.h ├── fdirent.cpp ├── fdirent.h ├── fdoptman.cpp ├── fdoptman.h ├── ffilebuf.cpp ├── ffilebuf.h ├── ffilecnt.cpp ├── ffilecnt.h ├── filecntb.h ├── filecnts.cpp ├── filecnts.h ├── filecont.h ├── fileread.cpp ├── fileread.h ├── filfschk.cpp ├── filfschk.h ├── find.ui ├── finddata.cpp ├── finddata.h ├── findui.cpp ├── findui.h ├── flblfile.cpp ├── flblfile.h ├── flex2hex.cpp ├── flex2hex.rc ├── flex2hex.vcxproj ├── flex2hex.vcxproj.filters ├── flexdisk.rc ├── flexemu-flexplorer.desktop ├── flexemu-gdb.py ├── flexemu.astyle ├── flexemu.conf ├── flexemu.desktop ├── flexemu.h ├── flexemu.qrc ├── flexemu.rc ├── flexemu.vcxproj ├── flexemu.vcxproj.filters ├── flexemu.vcxproj.user ├── flexemu.xml ├── flexerr.cpp ├── flexerr.h ├── flexlabl.conf ├── flexplorer-gdb.py ├── flexplorer.vcxproj ├── flexplorer.vcxproj.filters ├── flexplorer.vcxproj.user ├── foptman.cpp ├── foptman.h ├── fpattrui.cpp ├── fpattrui.h ├── fpcnv.ui ├── fpcnvui.cpp ├── fpcnvui.h ├── fpdnd.cpp ├── fpdnd.h ├── fpedit.cpp ├── fpedit.h ├── fpmain.cpp ├── fpmain.qrc ├── fpmdich.cpp ├── fpmdich.h ├── fpmodel.cpp ├── fpmodel.h ├── fpnew.ui ├── fpnewui.cpp ├── fpnewui.h ├── fpopt.ui ├── fpoptman.cpp ├── fpoptman.h ├── fpoptui.cpp ├── fpoptui.h ├── fpwin.cpp ├── fpwin.h ├── free.cpp ├── free.h ├── fsetup.ui ├── fsetupui.cpp ├── fsetupui.h ├── functions.cmake ├── fversion.cpp ├── fversion.h ├── idircnt.cpp ├── idircnt.h ├── iffilcnt.cpp ├── iffilcnt.h ├── ifilcnti.h ├── ifilecnt.cpp ├── ifilecnt.h ├── inout.cpp ├── inout.h ├── iodevdbg.cpp ├── iodevdbg.h ├── iodevice.h ├── joystick.cpp ├── joystick.h ├── keyboard.cpp ├── keyboard.h ├── libflex.vcxproj ├── libflex.vcxproj.filters ├── libfmt.vcxproj ├── libfmt.vcxproj.filters ├── logfil.ui ├── logfilui.cpp ├── logfilui.h ├── main.cpp ├── mc146818.cpp ├── mc146818.h ├── mc6809.cpp ├── mc6809.h ├── mc6809ex.cpi ├── mc6809in.cpp ├── mc6809lg.cpp ├── mc6809lg.h ├── mc6809st.cpp ├── mc6809st.h ├── mc6821.cpp ├── mc6821.h ├── mc6850.cpp ├── mc6850.h ├── mdcrfs.cpp ├── mdcrfs.h ├── mdcrtape.cpp ├── mdcrtape.h ├── mdcrtool.cpp ├── mdcrtool.rc ├── mdcrtool.vcxproj ├── mdcrtool.vcxproj.filters ├── mdcrtool.vcxproj.user ├── memory.cpp ├── memory.h ├── memset.ui ├── memsetui.cpp ├── memsetui.h ├── memsrc.h ├── memtgt.h ├── memtype.h ├── memwin.cpp ├── memwin.h ├── memwinmg.cpp ├── memwinmg.h ├── metadata.json ├── misc1.cpp ├── misc1.h ├── mmu.cpp ├── mmu.h ├── msvcQtPath.props.in ├── mwtedit.cpp ├── mwtedit.h ├── ndircont.cpp ├── ndircont.h ├── options.txt ├── ostype.h ├── pagedet.cpp ├── pagedet.h ├── pagedetd.cpp ├── pagedetd.h ├── pch.cpp ├── pch.h ├── pia1.cpp ├── pia1.h ├── pia2.cpp ├── pia2.h ├── pia2v5.cpp ├── pia2v5.h ├── poutwin.cpp ├── poutwin.h ├── poverhlp.cpp ├── poverhlp.h ├── pprev.ui ├── propsui.h ├── qtfree.cpp ├── qtfree.h ├── qtgui.cpp ├── qtgui.h ├── rfilecnt.cpp ├── rfilecnt.h ├── rndcheck.cpp ├── rndcheck.h ├── schedcpu.h ├── schedule.cpp ├── schedule.h ├── scpulog.h ├── sfpopts.h ├── sodiff.cpp ├── sodiff.h ├── soptions.cpp ├── soptions.h ├── termimpc.cpp ├── termimpc.h ├── termimpd.cpp ├── termimpd.h ├── termimpf.cpp ├── termimpf.h ├── termimpi.h ├── termimps.cpp ├── termimps.h ├── terminal.cpp ├── terminal.h ├── tools │ ├── CMakeLists.txt │ ├── Makefile.am │ ├── Makefile.in │ ├── bin2s19.c │ ├── conv.c │ ├── cputest.txt │ ├── daa.txt │ ├── fromflex.c │ ├── rcvfile.txt │ ├── rcvflex.c │ ├── send2flx.c │ ├── testdaa.c │ ├── toflex.c │ ├── tounix.txt │ ├── typedefs.h │ └── undoc.txt ├── tstdev.cpp ├── tstdev.h ├── typedefs.h ├── updatemd.cpp ├── vico1.cpp ├── vico1.h ├── vico2.cpp ├── vico2.h ├── warnoff.h ├── warnon.h ├── wd1793.cpp ├── wd1793.h ├── winctxt.h ├── windefs.h ├── wingtopt.cpp ├── wingtopt.h ├── winmain.cpp ├── winmain.h ├── wmain.cpp └── wmain.h └── test ├── .gitignore ├── CMakeLists.txt ├── Makefile.am ├── Makefile.in ├── data ├── cat.cmd ├── cat.hex ├── cat.s19 ├── flexlabl.conf ├── testdisk.dsk └── testdisk.flx ├── fixt_debugout.h ├── fixt_filecont.h ├── metadata.json ├── options.txt ├── pch.cpp ├── pch.h ├── test_bdate.cpp ├── test_bdir.cpp ├── test_benv.cpp ├── test_binifile.cpp ├── test_bintervl.cpp ├── test_bitops.cpp ├── test_blinxsys.cpp ├── test_bmembuf.cpp ├── test_bobserv.cpp ├── test_brcfile.cpp ├── test_breltime.cpp ├── test_btime.cpp ├── test_cistring.cpp ├── test_colors.cpp ├── test_da6809.cpp ├── test_fcinfo.cpp ├── test_fcnffile.cpp ├── test_fdirent.cpp ├── test_ffilebuf.cpp ├── test_ffilecnts.cpp ├── test_filecntb.cpp ├── test_filecnts.cpp ├── test_filecont.cpp ├── test_fileread.cpp ├── test_filesystem.cpp ├── test_filfschk.cpp ├── test_free.cpp ├── test_gccasm.cpp ├── test_gccasm.h ├── test_main.cpp ├── test_mc6809lg.cpp ├── test_misc1.cpp ├── test_rndcheck.cpp ├── testmain.cpp └── unittests.manifest /.gdbinit: -------------------------------------------------------------------------------- 1 | # Default settings 2 | # Print (all/scalar/none) frame arguments: 3 | set print frame-arguments all 4 | 5 | # Include gdb scripts 6 | # Define the debugging context (e.g. breakpoints, command line arguments) 7 | source .gdbinit-context 8 | 9 | -------------------------------------------------------------------------------- /.gdbinit-context: -------------------------------------------------------------------------------- 1 | # Define the current debugging context: 2 | # - Defining command line arguments 3 | # - Adding breakpoints 4 | # - ... 5 | 6 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # Compiled Object files 2 | *.slo 3 | *.lo 4 | *.o 5 | *.obj 6 | 7 | # Precompiled Headers 8 | *.gch 9 | *.pch 10 | 11 | # Temporary build artefacts 12 | *.tmp 13 | *.log 14 | 15 | # File generated by Qt framework 16 | *_moc.cpp 17 | *_qrc.cpp 18 | *_ui.h 19 | 20 | # Compiled Dynamic libraries 21 | *.so 22 | *.dylib 23 | *.dll 24 | 25 | # Fortran module files 26 | *.mod 27 | 28 | # Compiled Static libraries 29 | *.lai 30 | *.la 31 | *.a 32 | *.lib 33 | 34 | # Python cache 35 | __pycache__ 36 | 37 | # Executables 38 | *.exe 39 | *.out 40 | *.app 41 | src/flexemu 42 | src/fsetup 43 | src/flexplorer 44 | src/mdcrtool 45 | src/dsktool 46 | src/flex2hex 47 | src/updatemd 48 | src/tools/bin2s19 49 | src/tools/*flex 50 | src/tools/send2flx 51 | src/tools/testdaa 52 | test/test_gccasm 53 | # Autotools files 54 | Makefile 55 | stamp-h1 56 | config.hin~ 57 | config.h 58 | config.status 59 | config.log 60 | autom4te.cache 61 | libtool 62 | .deps 63 | src/.dirstamp 64 | 65 | # Visual Studio files 66 | .vs/ 67 | *.sdf 68 | *.opensdf 69 | *.VC.db 70 | *.VC.opendb 71 | build/windows/vsversion.ini 72 | build/windows/*.tar.gz 73 | build/windows/*.tgz 74 | build/windows/*.zip 75 | build/windows/Qt 76 | build/windows/installer/Contrib 77 | build/windows/installer/Docs 78 | build/windows/installer/Examples 79 | build/windows/installer/Plugins 80 | src/msvcQtPath.props 81 | src/*.vcxproj.user 82 | bin 83 | # vi swap file 84 | *.swp 85 | 86 | # eclipse project files 87 | .cproject 88 | .project 89 | .settings/ 90 | -------------------------------------------------------------------------------- /.gitmodules: -------------------------------------------------------------------------------- 1 | [submodule "googletest"] 2 | path = googletest 3 | url = https://github.com/google/googletest.git 4 | ignore = untracked 5 | [submodule "fmt"] 6 | path = fmt 7 | url = https://github.com/fmtlib/fmt.git 8 | ignore = untracked 9 | [submodule "jsoncpp"] 10 | path = jsoncpp 11 | url = https://github.com/open-source-parsers/jsoncpp.git 12 | ignore = untracked 13 | -------------------------------------------------------------------------------- /AUTHORS: -------------------------------------------------------------------------------- 1 | Authors 2 | ------- 3 | 4 | Wolfgang Schwotzer 5 | 6 | Authors giving feedback for bugs or new features 7 | ================================================ 8 | Loading flex binary files, change timing in WD1793: 9 | Ulrich Boetzel ul.boet@gmail.com 10 | 11 | Authors from which existing code was used 12 | ========================================= 13 | 14 | An Mc6809 emulator usim: 15 | Ray Bellis https://github.com/raybellis/usim 16 | 17 | Another Mc6809 emulator sbc09 (GPL V2): 18 | Lennart Benschop https://github.com/6809/sbc09 19 | 20 | A Mc6809 disassembler, originally posted on comp.sys.m6809: 21 | Didier Derny 22 | -------------------------------------------------------------------------------- /NEWS: -------------------------------------------------------------------------------- 1 | 2 | on UNIX compatible platforms compilation and installation get's much easier 3 | by using configure scripts. It has be sucessfully testet on Linux SuSE 4 | distribution. 5 | 6 | If you are successfull or have problems with other distributions please 7 | give me feedback. 8 | 9 | -------------------------------------------------------------------------------- /TODO: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aladur/flexemu/f99f6c44cc6f779a4da5c1f53afd7142a9b7aea4/TODO -------------------------------------------------------------------------------- /acinclude.m4: -------------------------------------------------------------------------------- 1 | dnl --------------------------------------------------------------------------- 2 | dnl FLX_CHECK_PTHREAD_LIB 3 | dnl 4 | dnl Check for the pthead library 5 | dnl For FreeBSD no thread has to be added. Instead when linking with gcc 6 | dnl the option -pthread has to be set 7 | dnl --------------------------------------------------------------------------- 8 | 9 | AC_DEFUN([FLX_CHECK_PTHREAD_LIB], 10 | [ 11 | PTHREAD_LIB="" 12 | AC_CHECK_LIB(pthread, open, PTHREAD_LD="-lpthread",,) 13 | case $target_os in 14 | *freebsd* ) PTHREAD_LD="-pthread";; 15 | esac 16 | ]) 17 | 18 | dnl --------------------------------------------------------------------------- 19 | dnl FLX_CHECK_WIN32_LIBS 20 | dnl 21 | dnl Check for the Win32 libraries gdi32, comdlg32 22 | dnl --------------------------------------------------------------------------- 23 | 24 | AC_DEFUN([FLX_CHECK_WIN32_LIBS], 25 | [ 26 | case $target_os in 27 | *mingw32* ) WIN32_LIBS="-lgdi32 -lcomdlg32";; 28 | * ) WIN32_LIBS="";; 29 | esac 30 | ]) 31 | 32 | dnl --------------------------------------------------------------------------- 33 | dnl FLX_ENABLE_SPEED 34 | dnl --------------------------------------------------------------------------- 35 | 36 | AC_DEFUN([FLX_ENABLE_SPEED], 37 | [ 38 | AC_ARG_ENABLE(speed, 39 | [ --enable-speed compile flexemu for optimized speed],,enable_speed="no") 40 | AC_MSG_CHECKING(for optimized speed compilation) 41 | AC_MSG_RESULT($enable_speed) 42 | ]) 43 | 44 | -------------------------------------------------------------------------------- /build/fug.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aladur/flexemu/f99f6c44cc6f779a4da5c1f53afd7142a9b7aea4/build/fug.ico -------------------------------------------------------------------------------- /build/windows/create_fug_dsk_files_installer.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/sh 2 | # 3 | # Create a windows installer executable for all 4 | # FLEX user group DSK files. 5 | # 6 | # syntax: 7 | # create_fug_dsk_files_installer.sh [-d] 8 | # parameters: 9 | # -d: delete packages before downloading them 10 | # 11 | 12 | delete= 13 | modified=false 14 | 15 | while : 16 | do 17 | case "$1" in 18 | -d) delete=yes;; 19 | --) shift; break;; 20 | *) break;; 21 | esac 22 | shift 23 | done 24 | 25 | # nsis installer is needed to execute this script. 26 | nsispath=`which makensis 2>/dev/null` 27 | if [ "x$nsispath" = "x" ]; then 28 | echo "*** Error: NSIS is not installed." 29 | echo " NSIS windows installer can be downloaded from:" 30 | echo " http://nsis.sourceforge.net/Download" 31 | exit 32 | fi 33 | 34 | directory=fug_dsk 35 | # Option -d: delete previously downloaded DSK files 36 | if [ "$delete" = "yes" ]; then 37 | echo deleting all... 38 | if [ -d $directory ]; then 39 | echo deleting $directory... 40 | rm -rf $directory 41 | fi 42 | fi 43 | 44 | ../download_fug_dsk_files.sh -D ../fug_dsk_files 45 | 46 | # Calling NSIS to create the windows installer executable. 47 | # makensis enters the installer directory so installer is 48 | # the current working directory when executing HistoricFLEXFiles.nsi. 49 | makensis installer\\HistoricFLEXFiles.nsi 50 | -------------------------------------------------------------------------------- /build/windows/installer/GetParameters.nsh: -------------------------------------------------------------------------------- 1 | ; GetParameters 2 | ; input, none 3 | ; output, top of stack (replaces, with e.g. whatever) 4 | ; modifies no other variables. 5 | 6 | Function GetParameters 7 | 8 | Push $R0 9 | Push $R1 10 | Push $R2 11 | Push $R3 12 | 13 | StrCpy $R2 1 14 | StrLen $R3 $CMDLINE 15 | 16 | ;Check for quote or space 17 | StrCpy $R0 $CMDLINE $R2 18 | StrCmp $R0 '"' 0 +3 19 | StrCpy $R1 '"' 20 | Goto loop 21 | StrCpy $R1 " " 22 | 23 | loop: 24 | IntOp $R2 $R2 + 1 25 | StrCpy $R0 $CMDLINE 1 $R2 26 | StrCmp $R0 $R1 get 27 | StrCmp $R2 $R3 get 28 | Goto loop 29 | 30 | get: 31 | IntOp $R2 $R2 + 1 32 | StrCpy $R0 $CMDLINE 1 $R2 33 | StrCmp $R0 " " get 34 | StrCpy $R0 $CMDLINE "" $R2 35 | 36 | Pop $R3 37 | Pop $R2 38 | Pop $R1 39 | Exch $R0 40 | 41 | FunctionEnd -------------------------------------------------------------------------------- /build/windows/installer/SplitFirstStrPart.nsh: -------------------------------------------------------------------------------- 1 | Function SplitFirstStrPart 2 | Exch $R0 3 | Exch 4 | Exch $R1 5 | Push $R2 6 | Push $R3 7 | StrCpy $R3 $R1 8 | StrLen $R1 $R0 9 | IntOp $R1 $R1 + 1 10 | loop: 11 | IntOp $R1 $R1 - 1 12 | StrCpy $R2 $R0 1 -$R1 13 | StrCmp $R1 0 exit0 14 | StrCmp $R2 $R3 exit1 loop 15 | exit0: 16 | StrCpy $R1 "" 17 | Goto exit2 18 | exit1: 19 | IntOp $R1 $R1 - 1 20 | StrCmp $R1 0 0 +3 21 | StrCpy $R2 "" 22 | Goto +2 23 | StrCpy $R2 $R0 "" -$R1 24 | IntOp $R1 $R1 + 1 25 | StrCpy $R0 $R0 -$R1 26 | StrCpy $R1 $R2 27 | exit2: 28 | Pop $R3 29 | Pop $R2 30 | Exch $R1 ;rest 31 | Exch 32 | Exch $R0 ;first 33 | FunctionEnd -------------------------------------------------------------------------------- /build/windows/installer/StrStr.nsh: -------------------------------------------------------------------------------- 1 | !define StrStr "!insertmacro StrStr" 2 | 3 | !macro StrStr ResultVar String SubString 4 | Push `${String}` 5 | Push `${SubString}` 6 | Call StrStr 7 | Pop `${ResultVar}` 8 | !macroend 9 | 10 | Function StrStr 11 | /*After this point: 12 | ------------------------------------------ 13 | $R0 = SubString (input) 14 | $R1 = String (input) 15 | $R2 = SubStringLen (temp) 16 | $R3 = StrLen (temp) 17 | $R4 = StartCharPos (temp) 18 | $R5 = TempStr (temp)*/ 19 | 20 | ;Get input from user 21 | Exch $R0 22 | Exch 23 | Exch $R1 24 | Push $R2 25 | Push $R3 26 | Push $R4 27 | Push $R5 28 | 29 | ;Get "String" and "SubString" length 30 | StrLen $R2 $R0 31 | StrLen $R3 $R1 32 | ;Start "StartCharPos" counter 33 | StrCpy $R4 0 34 | 35 | ;Loop until "SubString" is found or "String" reaches its end 36 | ${Do} 37 | ;Remove everything before and after the searched part ("TempStr") 38 | StrCpy $R5 $R1 $R2 $R4 39 | 40 | ;Compare "TempStr" with "SubString" 41 | ${IfThen} $R5 == $R0 ${|} ${ExitDo} ${|} 42 | ;If not "SubString", this could be "String"'s end 43 | ${IfThen} $R4 >= $R3 ${|} ${ExitDo} ${|} 44 | ;If not, continue the loop 45 | IntOp $R4 $R4 + 1 46 | ${Loop} 47 | 48 | /*After this point: 49 | ------------------------------------------ 50 | $R0 = ResultVar (output)*/ 51 | 52 | ;Remove part before "SubString" on "String" (if there has one) 53 | StrCpy $R0 $R1 `` $R4 54 | 55 | ;Return output to user 56 | Pop $R5 57 | Pop $R4 58 | Pop $R3 59 | Pop $R2 60 | Pop $R1 61 | Exch $R0 62 | FunctionEnd -------------------------------------------------------------------------------- /build/windows/setQtProperties.ps1: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env pwsh 2 | # 3 | # Set Qt properties in MSVC property sheet 4 | # 5 | # syntax: 6 | # setQtProperties.ps1 -inFile -version 7 | # 8 | # Environment variables: 9 | # 10 | # QTDIR is set to Qt installation directory 11 | 12 | param ( 13 | [string]$inFile = $(throw "inFile is required."), 14 | [string]$version = $(throw "version is required.") 15 | ) 16 | 17 | $outFile = $infile.TrimEnd(".in") 18 | $major, $null, $null = $version -split "\." 19 | 20 | (Get-Content $inFile) | 21 | Foreach-Object {$_ -replace 'QTDIRPLACEHOLDER',$Env:QTDIR} | 22 | Foreach-Object {$_ -replace 'QTVERSIONPLACEHOLDER',$version} | 23 | Foreach-Object {$_ -replace 'QTMAJORPLACEHOLDER',$major} | 24 | Out-File -Encoding "UTF8" $outFile 25 | 26 | -------------------------------------------------------------------------------- /disks/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | set(install_FILES 2 | btx.dsk 3 | cedric.dsk 4 | colors.dsk 5 | diag6809.dsk 6 | dynadocu.dsk 7 | games.dsk 8 | just.dsk 9 | laycad.dsk 10 | layout.dsk 11 | pictures.dsk 12 | source.dsk 13 | system54.dsk 14 | system.dsk 15 | system.mdcr 16 | test.dsk 17 | tsc_man.dsk 18 | ) 19 | 20 | install(FILES ${install_FILES} DESTINATION ${CMAKE_INSTALL_DATADIR}/flexemu) 21 | -------------------------------------------------------------------------------- /disks/Makefile.am: -------------------------------------------------------------------------------- 1 | pkgdata_DATA = \ 2 | btx.dsk \ 3 | cedric.dsk \ 4 | colors.dsk \ 5 | diag6809.dsk \ 6 | games.dsk \ 7 | just.dsk \ 8 | laycad.dsk \ 9 | layout.dsk \ 10 | pictures.dsk \ 11 | source.dsk \ 12 | system.dsk \ 13 | system.mdcr \ 14 | system54.dsk \ 15 | test.dsk \ 16 | dynadocu.dsk \ 17 | tsc_man.dsk 18 | 19 | EXTRA_DIST = ${pkgdata_DATA} 20 | 21 | -------------------------------------------------------------------------------- /disks/btx.dsk: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aladur/flexemu/f99f6c44cc6f779a4da5c1f53afd7142a9b7aea4/disks/btx.dsk -------------------------------------------------------------------------------- /disks/cedric.dsk: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aladur/flexemu/f99f6c44cc6f779a4da5c1f53afd7142a9b7aea4/disks/cedric.dsk -------------------------------------------------------------------------------- /disks/colors.dsk: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aladur/flexemu/f99f6c44cc6f779a4da5c1f53afd7142a9b7aea4/disks/colors.dsk -------------------------------------------------------------------------------- /disks/diag6809.dsk: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aladur/flexemu/f99f6c44cc6f779a4da5c1f53afd7142a9b7aea4/disks/diag6809.dsk -------------------------------------------------------------------------------- /disks/dynadocu.dsk: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aladur/flexemu/f99f6c44cc6f779a4da5c1f53afd7142a9b7aea4/disks/dynadocu.dsk -------------------------------------------------------------------------------- /disks/games.dsk: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aladur/flexemu/f99f6c44cc6f779a4da5c1f53afd7142a9b7aea4/disks/games.dsk -------------------------------------------------------------------------------- /disks/just.dsk: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aladur/flexemu/f99f6c44cc6f779a4da5c1f53afd7142a9b7aea4/disks/just.dsk -------------------------------------------------------------------------------- /disks/laycad.dsk: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aladur/flexemu/f99f6c44cc6f779a4da5c1f53afd7142a9b7aea4/disks/laycad.dsk -------------------------------------------------------------------------------- /disks/layout.dsk: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aladur/flexemu/f99f6c44cc6f779a4da5c1f53afd7142a9b7aea4/disks/layout.dsk -------------------------------------------------------------------------------- /disks/pictures.dsk: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aladur/flexemu/f99f6c44cc6f779a4da5c1f53afd7142a9b7aea4/disks/pictures.dsk -------------------------------------------------------------------------------- /disks/rndtest.dsk: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aladur/flexemu/f99f6c44cc6f779a4da5c1f53afd7142a9b7aea4/disks/rndtest.dsk -------------------------------------------------------------------------------- /disks/source.dsk: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aladur/flexemu/f99f6c44cc6f779a4da5c1f53afd7142a9b7aea4/disks/source.dsk -------------------------------------------------------------------------------- /disks/system.dsk: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aladur/flexemu/f99f6c44cc6f779a4da5c1f53afd7142a9b7aea4/disks/system.dsk -------------------------------------------------------------------------------- /disks/system.mdcr: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aladur/flexemu/f99f6c44cc6f779a4da5c1f53afd7142a9b7aea4/disks/system.mdcr -------------------------------------------------------------------------------- /disks/system54.dsk: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aladur/flexemu/f99f6c44cc6f779a4da5c1f53afd7142a9b7aea4/disks/system54.dsk -------------------------------------------------------------------------------- /disks/test.dsk: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aladur/flexemu/f99f6c44cc6f779a4da5c1f53afd7142a9b7aea4/disks/test.dsk -------------------------------------------------------------------------------- /disks/tsc_man.dsk: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aladur/flexemu/f99f6c44cc6f779a4da5c1f53afd7142a9b7aea4/disks/tsc_man.dsk -------------------------------------------------------------------------------- /doc/6809diag.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aladur/flexemu/f99f6c44cc6f779a4da5c1f53afd7142a9b7aea4/doc/6809diag.pdf -------------------------------------------------------------------------------- /doc/6809fadg.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aladur/flexemu/f99f6c44cc6f779a4da5c1f53afd7142a9b7aea4/doc/6809fadg.pdf -------------------------------------------------------------------------------- /doc/6x09_Instruction_Sets.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aladur/flexemu/f99f6c44cc6f779a4da5c1f53afd7142a9b7aea4/doc/6x09_Instruction_Sets.pdf -------------------------------------------------------------------------------- /doc/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | add_subdirectory(images) 2 | 3 | set(install_FILES 4 | flexemu.css 5 | e2hwdesc.htm 6 | flexdos.htm 7 | flexemu.htm 8 | flexerr.htm 9 | flexfcb.htm 10 | flexfms.htm 11 | flexfs.htm 12 | flexmem.htm 13 | flexuser.htm 14 | flexutil.htm 15 | mc6809.htm 16 | mon24.htm 17 | mon53_54.htm 18 | monu54.htm 19 | neumon54.htm 20 | 6809diag.pdf 21 | 6809fadg.pdf 22 | 6x09_Instruction_Sets.pdf 23 | asmb.pdf 24 | ba2bqs.pdf 25 | basic_um.pdf 26 | basprec.pdf 27 | cedric.pdf 28 | crasmb.pdf 29 | debug.pdf 30 | dynamite.pdf 31 | dynastar.pdf 32 | f77.pdf 33 | flex2um.pdf 34 | flexapg.pdf 35 | just.pdf 36 | linkload.pdf 37 | relasmb.pdf 38 | swflexum.pdf 39 | tedit.pdf 40 | TSC_Text_Processor.pdf 41 | util_man.pdf 42 | ) 43 | 44 | install(FILES ${install_FILES} DESTINATION ${CMAKE_INSTALL_DATADIR}/flexemu) 45 | -------------------------------------------------------------------------------- /doc/Makefile.am: -------------------------------------------------------------------------------- 1 | pkgdata_DATA = \ 2 | 6809diag.pdf \ 3 | 6809fadg.pdf \ 4 | 6x09_Instruction_Sets.pdf \ 5 | asmb.pdf \ 6 | ba2bqs.pdf \ 7 | basic_um.pdf\ 8 | basprec.pdf \ 9 | cedric.pdf \ 10 | crasmb.pdf \ 11 | debug.pdf \ 12 | dynamite.pdf \ 13 | e2hwdesc.htm \ 14 | f77.pdf\ 15 | flex2um.pdf \ 16 | flexapg.pdf \ 17 | flexdos.htm \ 18 | flexemu.css \ 19 | flexemu.htm \ 20 | flexerr.htm \ 21 | flexfcb.htm \ 22 | flexfms.htm \ 23 | flexfs.htm \ 24 | flexmem.htm \ 25 | flexuser.htm \ 26 | flexutil.htm \ 27 | just.pdf \ 28 | linkload.pdf \ 29 | mc6809.htm \ 30 | mon24.htm \ 31 | mon53_54.htm \ 32 | monu54.htm \ 33 | neumon54.htm \ 34 | relasmb.pdf \ 35 | swflexum.pdf\ 36 | tedit.pdf \ 37 | util_man.pdf \ 38 | dynastar.pdf \ 39 | TSC_Text_Processor.pdf 40 | 41 | extra_files = \ 42 | instance.fig \ 43 | instance.ps \ 44 | state.fig \ 45 | state.ps 46 | 47 | EXTRA_DIST = ${pkgdata_DATA} ${extra_files} 48 | 49 | SUBDIRS = images 50 | 51 | -------------------------------------------------------------------------------- /doc/TSC_Text_Processor.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aladur/flexemu/f99f6c44cc6f779a4da5c1f53afd7142a9b7aea4/doc/TSC_Text_Processor.pdf -------------------------------------------------------------------------------- /doc/asmb.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aladur/flexemu/f99f6c44cc6f779a4da5c1f53afd7142a9b7aea4/doc/asmb.pdf -------------------------------------------------------------------------------- /doc/ba2bqs.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aladur/flexemu/f99f6c44cc6f779a4da5c1f53afd7142a9b7aea4/doc/ba2bqs.pdf -------------------------------------------------------------------------------- /doc/basic_um.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aladur/flexemu/f99f6c44cc6f779a4da5c1f53afd7142a9b7aea4/doc/basic_um.pdf -------------------------------------------------------------------------------- /doc/basprec.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aladur/flexemu/f99f6c44cc6f779a4da5c1f53afd7142a9b7aea4/doc/basprec.pdf -------------------------------------------------------------------------------- /doc/cedric.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aladur/flexemu/f99f6c44cc6f779a4da5c1f53afd7142a9b7aea4/doc/cedric.pdf -------------------------------------------------------------------------------- /doc/crasmb.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aladur/flexemu/f99f6c44cc6f779a4da5c1f53afd7142a9b7aea4/doc/crasmb.pdf -------------------------------------------------------------------------------- /doc/debug.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aladur/flexemu/f99f6c44cc6f779a4da5c1f53afd7142a9b7aea4/doc/debug.pdf -------------------------------------------------------------------------------- /doc/dynamite.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aladur/flexemu/f99f6c44cc6f779a4da5c1f53afd7142a9b7aea4/doc/dynamite.pdf -------------------------------------------------------------------------------- /doc/dynastar.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aladur/flexemu/f99f6c44cc6f779a4da5c1f53afd7142a9b7aea4/doc/dynastar.pdf -------------------------------------------------------------------------------- /doc/f77.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aladur/flexemu/f99f6c44cc6f779a4da5c1f53afd7142a9b7aea4/doc/f77.pdf -------------------------------------------------------------------------------- /doc/flex2um.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aladur/flexemu/f99f6c44cc6f779a4da5c1f53afd7142a9b7aea4/doc/flex2um.pdf -------------------------------------------------------------------------------- /doc/flexapg.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aladur/flexemu/f99f6c44cc6f779a4da5c1f53afd7142a9b7aea4/doc/flexapg.pdf -------------------------------------------------------------------------------- /doc/flexemu.css: -------------------------------------------------------------------------------- 1 | body { 2 | font-family: "Courier Prime","Courier new",Courier,monospace; 3 | background-color: WhiteSmoke; 4 | margin: 1em; 5 | } 6 | 7 | table, th, td { 8 | padding: 0.4em; 9 | border-collapse: collapse; 10 | } 11 | 12 | table, th { 13 | border: 2px solid black; 14 | } 15 | 16 | table, td { 17 | border: 1px solid black; 18 | } 19 | 20 | dt { 21 | margin-top: 0.5em; 22 | margin-bottom: 0.5em; 23 | } 24 | 25 | ul { 26 | margin-bottom: 0px; 27 | } 28 | 29 | /* class="invisible", a table with invisible borders */ 30 | table.invisible, 31 | table.invisible th, 32 | table.invisible td { 33 | border: 0px solid black; 34 | } 35 | /* class="compact", a table with no top/bottom padding */ 36 | table.compact td { 37 | padding-top: 0px; 38 | padding-bottom: 0px; 39 | } 40 | 41 | table.indent, 42 | table.indent th, 43 | table.indent td { 44 | margin-left: 25px; 45 | } 46 | 47 | .left { 48 | float: left; 49 | } 50 | 51 | .right { 52 | float: right; 53 | } 54 | 55 | div.options-list dt { 56 | font-weight: bold; 57 | } 58 | div.options-list dd { 59 | text-align: justify; 60 | } 61 | 62 | .justify { 63 | text-align: justify; 64 | } 65 | 66 | .bold { 67 | font-weight: bold; 68 | } 69 | 70 | kbd { 71 | background: #F7F7F7; 72 | background-image: linear-gradient(to bottom, White, Silver); 73 | border-color:#DDDDDD #AAAAAA #888888 #CCCCCC; 74 | border-radius:4px; 75 | border-style:solid; 76 | border-width:2px; 77 | font-family:inherit; 78 | padding:0 .4em; 79 | text-shadow:0 1px rgba(255,255,255,.5); 80 | white-space:nowrap; 81 | } 82 | 83 | -------------------------------------------------------------------------------- /doc/images/2x384flx.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aladur/flexemu/f99f6c44cc6f779a4da5c1f53afd7142a9b7aea4/doc/images/2x384flx.png -------------------------------------------------------------------------------- /doc/images/2x384k.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aladur/flexemu/f99f6c44cc6f779a4da5c1f53afd7142a9b7aea4/doc/images/2x384k.png -------------------------------------------------------------------------------- /doc/images/2x96k.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aladur/flexemu/f99f6c44cc6f779a4da5c1f53afd7142a9b7aea4/doc/images/2x96k.png -------------------------------------------------------------------------------- /doc/images/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | set(install_FILES 2 | 2x384flx.png 3 | 2x384k.png 4 | 2x96k.png 5 | e2scn.png 6 | e2v5m.png 7 | e2v7m.png 8 | pat09_cursorpad.png 9 | pat09_keyboard.png 10 | pat09_key_down_arrow.png 11 | pat09_key_left_arrow.png 12 | pat09_key_left_limit.png 13 | pat09_key_mode.png 14 | pat09_key_right_arrow.png 15 | pat09_key_right_limit.png 16 | pat09_key_thick_left_arrow.png 17 | pat09_key_thick_lower_right_arrow.png 18 | pat09_key_thick_right_arrow.png 19 | pat09_key_thick_upper_left_arrow.png 20 | pat09_key_up_arrow.png 21 | pat09_numpad.png 22 | ) 23 | 24 | install(FILES ${install_FILES} DESTINATION ${CMAKE_INSTALL_DATADIR}/flexemu/images) 25 | -------------------------------------------------------------------------------- /doc/images/Makefile.am: -------------------------------------------------------------------------------- 1 | EXTRA_DIST = $(image_files) 2 | 3 | image_files = \ 4 | 2x384flx.png \ 5 | 2x384k.png \ 6 | 2x96k.png \ 7 | e2scn.png \ 8 | e2v5m.png \ 9 | e2v7m.png \ 10 | pat09_cursorpad.png \ 11 | pat09_key_down_arrow.png \ 12 | pat09_key_left_arrow.png \ 13 | pat09_key_left_limit.png \ 14 | pat09_key_mode.png \ 15 | pat09_key_right_arrow.png \ 16 | pat09_key_right_limit.png \ 17 | pat09_key_thick_left_arrow.png \ 18 | pat09_key_thick_lower_right_arrow.png \ 19 | pat09_key_thick_right_arrow.png \ 20 | pat09_key_thick_upper_left_arrow.png \ 21 | pat09_key_up_arrow.png \ 22 | pat09_keyboard.png \ 23 | pat09_numpad.png 24 | 25 | imagesdir = $(pkgdatadir)/images 26 | images_DATA = $(image_files) 27 | 28 | -------------------------------------------------------------------------------- /doc/images/e2scn.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aladur/flexemu/f99f6c44cc6f779a4da5c1f53afd7142a9b7aea4/doc/images/e2scn.png -------------------------------------------------------------------------------- /doc/images/e2v5m.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aladur/flexemu/f99f6c44cc6f779a4da5c1f53afd7142a9b7aea4/doc/images/e2v5m.png -------------------------------------------------------------------------------- /doc/images/e2v7m.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aladur/flexemu/f99f6c44cc6f779a4da5c1f53afd7142a9b7aea4/doc/images/e2v7m.png -------------------------------------------------------------------------------- /doc/images/pat09_cursorpad.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aladur/flexemu/f99f6c44cc6f779a4da5c1f53afd7142a9b7aea4/doc/images/pat09_cursorpad.png -------------------------------------------------------------------------------- /doc/images/pat09_key_down_arrow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aladur/flexemu/f99f6c44cc6f779a4da5c1f53afd7142a9b7aea4/doc/images/pat09_key_down_arrow.png -------------------------------------------------------------------------------- /doc/images/pat09_key_left_arrow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aladur/flexemu/f99f6c44cc6f779a4da5c1f53afd7142a9b7aea4/doc/images/pat09_key_left_arrow.png -------------------------------------------------------------------------------- /doc/images/pat09_key_left_limit.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aladur/flexemu/f99f6c44cc6f779a4da5c1f53afd7142a9b7aea4/doc/images/pat09_key_left_limit.png -------------------------------------------------------------------------------- /doc/images/pat09_key_mode.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aladur/flexemu/f99f6c44cc6f779a4da5c1f53afd7142a9b7aea4/doc/images/pat09_key_mode.png -------------------------------------------------------------------------------- /doc/images/pat09_key_right_arrow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aladur/flexemu/f99f6c44cc6f779a4da5c1f53afd7142a9b7aea4/doc/images/pat09_key_right_arrow.png -------------------------------------------------------------------------------- /doc/images/pat09_key_right_limit.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aladur/flexemu/f99f6c44cc6f779a4da5c1f53afd7142a9b7aea4/doc/images/pat09_key_right_limit.png -------------------------------------------------------------------------------- /doc/images/pat09_key_thick_left_arrow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aladur/flexemu/f99f6c44cc6f779a4da5c1f53afd7142a9b7aea4/doc/images/pat09_key_thick_left_arrow.png -------------------------------------------------------------------------------- /doc/images/pat09_key_thick_lower_right_arrow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aladur/flexemu/f99f6c44cc6f779a4da5c1f53afd7142a9b7aea4/doc/images/pat09_key_thick_lower_right_arrow.png -------------------------------------------------------------------------------- /doc/images/pat09_key_thick_right_arrow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aladur/flexemu/f99f6c44cc6f779a4da5c1f53afd7142a9b7aea4/doc/images/pat09_key_thick_right_arrow.png -------------------------------------------------------------------------------- /doc/images/pat09_key_thick_upper_left_arrow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aladur/flexemu/f99f6c44cc6f779a4da5c1f53afd7142a9b7aea4/doc/images/pat09_key_thick_upper_left_arrow.png -------------------------------------------------------------------------------- /doc/images/pat09_key_up_arrow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aladur/flexemu/f99f6c44cc6f779a4da5c1f53afd7142a9b7aea4/doc/images/pat09_key_up_arrow.png -------------------------------------------------------------------------------- /doc/images/pat09_keyboard.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aladur/flexemu/f99f6c44cc6f779a4da5c1f53afd7142a9b7aea4/doc/images/pat09_keyboard.png -------------------------------------------------------------------------------- /doc/images/pat09_numpad.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aladur/flexemu/f99f6c44cc6f779a4da5c1f53afd7142a9b7aea4/doc/images/pat09_numpad.png -------------------------------------------------------------------------------- /doc/just.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aladur/flexemu/f99f6c44cc6f779a4da5c1f53afd7142a9b7aea4/doc/just.pdf -------------------------------------------------------------------------------- /doc/linkload.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aladur/flexemu/f99f6c44cc6f779a4da5c1f53afd7142a9b7aea4/doc/linkload.pdf -------------------------------------------------------------------------------- /doc/relasmb.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aladur/flexemu/f99f6c44cc6f779a4da5c1f53afd7142a9b7aea4/doc/relasmb.pdf -------------------------------------------------------------------------------- /doc/swflexum.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aladur/flexemu/f99f6c44cc6f779a4da5c1f53afd7142a9b7aea4/doc/swflexum.pdf -------------------------------------------------------------------------------- /doc/tedit.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aladur/flexemu/f99f6c44cc6f779a4da5c1f53afd7142a9b7aea4/doc/tedit.pdf -------------------------------------------------------------------------------- /doc/util_man.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aladur/flexemu/f99f6c44cc6f779a4da5c1f53afd7142a9b7aea4/doc/util_man.pdf -------------------------------------------------------------------------------- /docker/almalinux/Dockerfile: -------------------------------------------------------------------------------- 1 | # Look for almalinux packages: 2 | # https://pkgs.org 3 | 4 | FROM almalinux:9.4 5 | 6 | RUN dnf upgrade -y && \ 7 | dnf install -y \ 8 | sudo \ 9 | vim \ 10 | git \ 11 | make \ 12 | automake \ 13 | autoconf \ 14 | gcc \ 15 | gcc-g++ \ 16 | qt5-qtbase-devel \ 17 | qt5-qtx11extras-devel \ 18 | liberation-mono-fonts && \ 19 | useradd --create-home --shell /bin/bash user && \ 20 | echo "user ALL=(ALL) NOPASSWD:ALL" >> /etc/sudoers 21 | ENV QT_XCB_GL_INTEGRATION=none 22 | USER user 23 | WORKDIR /home/user 24 | RUN git clone https://github.com/aladur/flexemu.git && \ 25 | cd flexemu && \ 26 | git submodule update --init --recursive && \ 27 | ./configure --prefix=/usr --sysconfdir=/etc && \ 28 | make -j8 check && \ 29 | sudo make install 30 | CMD ["/bin/bash"] 31 | 32 | -------------------------------------------------------------------------------- /docker/alpine/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM alpine:3.20.1 2 | 3 | RUN apk update && apk upgrade && \ 4 | apk add \ 5 | sudo \ 6 | xxd \ 7 | vim \ 8 | git \ 9 | make \ 10 | automake \ 11 | autoconf \ 12 | build-base \ 13 | g++ \ 14 | qt5-qtbase-dev \ 15 | qt5-qtx11extras-dev \ 16 | mesa-utils \ 17 | font-freefont && \ 18 | adduser --disabled-password --shell /bin/ash user && \ 19 | echo "user ALL=(ALL) NOPASSWD:ALL" >> /etc/sudoers 20 | USER user 21 | WORKDIR /home/user 22 | RUN git clone https://github.com/aladur/flexemu.git && \ 23 | cd flexemu && \ 24 | git submodule update --init --recursive && \ 25 | ./configure --prefix=/usr --sysconfdir=/etc && \ 26 | make -j8 check && \ 27 | sudo make install 28 | CMD ["/bin/bash"] 29 | 30 | -------------------------------------------------------------------------------- /docker/altlinux/Dockerfile: -------------------------------------------------------------------------------- 1 | # Search for ALT Linux packages: https://packages.altlinux.org/en/search/ 2 | 3 | FROM alt:sisyphus 4 | 5 | RUN apt-get -y update && apt-get -y install \ 6 | sudo \ 7 | xxd \ 8 | vim-console \ 9 | git \ 10 | build-essential \ 11 | libqt5-core \ 12 | libqt5-gui \ 13 | libqt5-widgets \ 14 | libqt5-printsupport \ 15 | qt5-x11extras-devel \ 16 | libqt5-x11extras \ 17 | fonts-ttf-dejavu && \ 18 | useradd --create-home --shell /bin/bash user && \ 19 | echo "user ALL=(ALL) NOPASSWD:ALL" >> /etc/sudoers && \ 20 | usermod --append --groups wheel user 21 | ENV QT_XCB_GL_INTEGRATION=none 22 | USER user 23 | WORKDIR /home/user 24 | RUN git clone https://github.com/aladur/flexemu.git && \ 25 | cd flexemu && \ 26 | git submodule update --init --recursive && \ 27 | ./configure --prefix=/usr --sysconfdir=/etc && \ 28 | make -j8 check && \ 29 | sudo make install 30 | CMD ["/bin/bash"] 31 | 32 | -------------------------------------------------------------------------------- /docker/amazonlinux/Dockerfile: -------------------------------------------------------------------------------- 1 | # BUILD FAILURE: 2 | # Amazonlinux 2023 does not support qt5 3 | # (and amazonlinux 2 is too old resulting in build failures). 4 | # 2023 Package list: 5 | # https://docs.aws.amazon.com/linux/al2023/release-notes/all-packages-AL2023.5.html 6 | 7 | FROM amazonlinux:2023 8 | 9 | RUN yum update -y && \ 10 | yum upgrade -y && \ 11 | yum install -y \ 12 | sudo \ 13 | xxd \ 14 | vim \ 15 | git \ 16 | tar \ 17 | gcc \ 18 | gcc-c++ \ 19 | automake \ 20 | autoconf \ 21 | qt5-qtbase-devel \ 22 | qt5-qtx11extras-devel && \ 23 | useradd --create-home --shell /bin/bash user && \ 24 | echo "user ALL=(ALL) NOPASSWD:ALL" >> /etc/sudoers 25 | RUN curl https://ftp.gnu.org/gnu/make/make-4.4.tar.gz >make-4.4.tar.gz 26 | tar xzf make-4.4.tar.gz 27 | cd make-4.4 28 | ./configure 29 | make -j8 30 | sudo make install 31 | export PATH=/usr/local/bin:$PATH 32 | cd .. 33 | git clone https://github.com/aladur/flexemu.git && \ 34 | cd flexemu && \ 35 | git submodule update --init --recursive && \ 36 | ./configure --prefix=/usr --sysconfdir=/etc && \ 37 | make -j8 check && \ 38 | sudo make install 39 | CMD ["/bin/bash"] 40 | 41 | -------------------------------------------------------------------------------- /docker/archlinux/Dockerfile: -------------------------------------------------------------------------------- 1 | # Search for archlinux packages: 2 | # https://archlinux.org/packages/ 3 | 4 | FROM archlinux:base-devel 5 | 6 | RUN pacman -Syu --noconfirm && \ 7 | pacman -S --noconfirm -y \ 8 | sudo \ 9 | xxd \ 10 | vim \ 11 | git \ 12 | which \ 13 | make \ 14 | automake \ 15 | autoconf \ 16 | gcc \ 17 | qt5-base \ 18 | qt5-x11extras \ 19 | ttf-dejavu-nerd \ 20 | gnu-free-fonts && \ 21 | useradd --create-home --shell /bin/bash user && \ 22 | echo "user ALL=(ALL) NOPASSWD:ALL" >> /etc/sudoers 23 | ENV QT_XCB_GL_INTEGRATION=none 24 | USER user 25 | WORKDIR /home/user 26 | RUN git clone https://github.com/aladur/flexemu.git && \ 27 | cd flexemu && \ 28 | git submodule update --init --recursive && \ 29 | ./configure --prefix=/usr --sysconfdir=/etc && \ 30 | make -j8 check && \ 31 | sudo make install 32 | CMD ["/bin/bash"] 33 | 34 | -------------------------------------------------------------------------------- /docker/biglinux/Dockerfile: -------------------------------------------------------------------------------- 1 | # BigLinux has already a user "builder" with uid 1000 defined. 2 | # available. It is used and prepared for full sudo access without password. 3 | 4 | FROM xivastudio/biglinux_build_package 5 | 6 | RUN pacman -Syu --noconfirm && \ 7 | pacman -S --noconfirm -y \ 8 | sudo \ 9 | xxd \ 10 | vim \ 11 | git \ 12 | which \ 13 | make \ 14 | automake \ 15 | autoconf \ 16 | gcc \ 17 | qt5-base \ 18 | qt5-x11extras \ 19 | ttf-dejavu-nerd \ 20 | gnu-free-fonts && \ 21 | echo "builder ALL=(ALL) NOPASSWD:ALL" >> /etc/sudoers 22 | ENV QT_XCB_GL_INTEGRATION=none 23 | USER builder 24 | WORKDIR /home/builder 25 | RUN git clone https://github.com/aladur/flexemu.git && \ 26 | cd flexemu && \ 27 | git submodule update --init --recursive && \ 28 | ./configure --prefix=/usr --sysconfdir=/etc && \ 29 | make -j8 check && \ 30 | sudo make install 31 | CMD ["/bin/bash"] 32 | 33 | -------------------------------------------------------------------------------- /docker/cachyos/Dockerfile: -------------------------------------------------------------------------------- 1 | # Search for cachyos/archlinux packages: 2 | # https://archlinux.org/packages/ 3 | 4 | FROM cachyos/cachyos-v3 5 | 6 | RUN pacman -Syu --noconfirm && \ 7 | pacman -S --noconfirm -y \ 8 | sudo \ 9 | xxd \ 10 | vim \ 11 | git \ 12 | which \ 13 | make \ 14 | automake \ 15 | autoconf \ 16 | gcc \ 17 | qt5-base \ 18 | qt5-x11extras \ 19 | ttf-dejavu-nerd \ 20 | gnu-free-fonts && \ 21 | useradd --create-home --shell /bin/bash user && \ 22 | echo "user ALL=(ALL) NOPASSWD:ALL" >> /etc/sudoers 23 | ENV QT_XCB_GL_INTEGRATION=none 24 | USER user 25 | WORKDIR /home/user 26 | RUN git clone https://github.com/aladur/flexemu.git && \ 27 | cd flexemu && \ 28 | git submodule update --init --recursive && \ 29 | ./configure --prefix=/usr --sysconfdir=/etc && \ 30 | make -j8 check && \ 31 | sudo make install 32 | CMD ["/bin/bash"] 33 | 34 | -------------------------------------------------------------------------------- /docker/centos/Dockerfile: -------------------------------------------------------------------------------- 1 | # Search for centos packages: https://pkgs.org 2 | 3 | FROM dokken/centos-stream-9:latest 4 | 5 | RUN yum update -y && \ 6 | yum upgrade -y && \ 7 | yum install -y \ 8 | sudo \ 9 | vim \ 10 | git \ 11 | gcc \ 12 | gcc-c++ \ 13 | automake \ 14 | autoconf \ 15 | qt5-qtbase-devel \ 16 | qt5-qtx11extras-devel \ 17 | liberation-mono-fonts && \ 18 | useradd --create-home --shell /bin/bash user && \ 19 | echo "user ALL=(ALL) NOPASSWD:ALL" >> /etc/sudoers 20 | ENV QT_XCB_GL_INTEGRATION=none 21 | USER user 22 | WORKDIR /home/user 23 | RUN git clone https://github.com/aladur/flexemu.git && \ 24 | cd flexemu && \ 25 | git submodule update --init --recursive && \ 26 | ./configure --prefix=/usr --sysconfdir=/etc && \ 27 | make -j8 check && \ 28 | sudo make install 29 | CMD ["/bin/bash"] 30 | 31 | -------------------------------------------------------------------------------- /docker/debian/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM debian:12.6-slim 2 | 3 | RUN apt-get -y update && apt-get -y install \ 4 | sudo \ 5 | xxd \ 6 | vim \ 7 | git \ 8 | build-essential \ 9 | qtbase5-dev \ 10 | qtbase5-dev-tools \ 11 | libqt5x11extras5-dev && \ 12 | useradd --create-home --shell /bin/bash user && \ 13 | echo "user ALL=(ALL) NOPASSWD:ALL" >> /etc/sudoers 14 | USER user 15 | WORKDIR /home/user 16 | RUN git clone https://github.com/aladur/flexemu.git && \ 17 | cd flexemu && \ 18 | git submodule update --init --recursive && \ 19 | ./configure --prefix=/usr --sysconfdir=/etc && \ 20 | make -j8 check && \ 21 | sudo make install 22 | CMD ["/bin/bash"] 23 | 24 | -------------------------------------------------------------------------------- /docker/debian_be/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM --platform=linux/s390x s390x/debian:12.6-slim 2 | 3 | RUN apt-get -y update && apt-get install -y \ 4 | sudo \ 5 | git \ 6 | xxd \ 7 | vim \ 8 | build-essential \ 9 | qtbase5-dev \ 10 | qtbase5-dev-tools \ 11 | libqt5x11extras5-dev \ 12 | libglvnd-dev \ 13 | mesa-utils && \ 14 | useradd --create-home --shell /bin/bash user && \ 15 | echo "user ALL=(ALL) NOPASSWD:ALL" >> /etc/sudoers 16 | ENV QT_XCB_FORCE_SOFTWARE_OPENGL=1 17 | USER user 18 | WORKDIR /home/user 19 | RUN git clone https://github.com/aladur/flexemu.git && \ 20 | cd flexemu && \ 21 | git submodule update --init --recursive && \ 22 | ./configure --prefix=/usr --sysconfdir=/etc && \ 23 | make -j8 check && \ 24 | sudo make install 25 | CMD ["/bin/bash"] 26 | 27 | -------------------------------------------------------------------------------- /docker/debian_i386/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM --platform=linux/386 i386/debian:12.6-slim 2 | 3 | RUN apt-get -y update && apt-get -y install \ 4 | sudo \ 5 | xxd \ 6 | vim \ 7 | git \ 8 | build-essential \ 9 | qtbase5-dev \ 10 | qtbase5-dev-tools \ 11 | libqt5x11extras5-dev && \ 12 | useradd --create-home --shell /bin/bash user && \ 13 | echo "user ALL=(ALL) NOPASSWD:ALL" >> /etc/sudoers 14 | USER user 15 | WORKDIR /home/user 16 | RUN git clone https://github.com/aladur/flexemu.git && \ 17 | cd flexemu && \ 18 | git submodule update --init --recursive && \ 19 | ./configure --prefix=/usr --sysconfdir=/etc && \ 20 | make -j8 check && \ 21 | sudo make install 22 | CMD ["/bin/bash"] 23 | 24 | -------------------------------------------------------------------------------- /docker/debian_qt6/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM debian:12.6-slim 2 | 3 | RUN apt-get -y update && apt-get -y install \ 4 | sudo \ 5 | xxd \ 6 | vim \ 7 | git \ 8 | build-essential \ 9 | qt6-base-dev \ 10 | qt6-base-dev-tools && \ 11 | useradd --create-home --shell /bin/bash user && \ 12 | echo "user ALL=(ALL) NOPASSWD:ALL" >> /etc/sudoers 13 | ENV PATH=/usr/lib/qt6/libexec:$PATH 14 | ENV PATH=/usr/lib/qt6/bin:$PATH 15 | USER user 16 | WORKDIR /home/user 17 | RUN git clone https://github.com/aladur/flexemu.git && \ 18 | cd flexemu && \ 19 | git submodule update --init --recursive && \ 20 | ./configure --prefix=/usr --sysconfdir=/etc && \ 21 | make -j8 check && \ 22 | sudo make install 23 | CMD ["/bin/bash"] 24 | 25 | -------------------------------------------------------------------------------- /docker/debian_testing/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM debian:testing-slim 2 | 3 | RUN apt-get -y update && apt-get -y install \ 4 | sudo \ 5 | xxd \ 6 | vim \ 7 | git \ 8 | build-essential \ 9 | qtbase5-dev \ 10 | qtbase5-dev-tools \ 11 | libqt5x11extras5-dev && \ 12 | useradd --create-home --shell /bin/bash user && \ 13 | echo "user ALL=(ALL) NOPASSWD:ALL" >> /etc/sudoers 14 | ENV QT_XCB_GL_INTEGRATION=none 15 | USER user 16 | WORKDIR /home/user 17 | RUN git clone https://github.com/aladur/flexemu.git && \ 18 | cd flexemu && \ 19 | git submodule update --init --recursive && \ 20 | ./configure --prefix=/usr --sysconfdir=/etc && \ 21 | make -j8 check && \ 22 | sudo make install 23 | CMD ["/bin/bash"] 24 | 25 | -------------------------------------------------------------------------------- /docker/debian_testing_qt6/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM debian:testing-slim 2 | 3 | RUN apt-get -y update && apt-get -y install \ 4 | sudo \ 5 | xxd \ 6 | vim \ 7 | git \ 8 | build-essential \ 9 | qt6-base-dev \ 10 | qt6-base-dev-tools && \ 11 | useradd --create-home --shell /bin/bash user && \ 12 | echo "user ALL=(ALL) NOPASSWD:ALL" >> /etc/sudoers 13 | ENV QT_SELECT=qt6 14 | ENV PATH=/usr/lib/qt6/libexec:$PATH 15 | ENV PATH=/usr/lib/qt6/bin:$PATH 16 | USER user 17 | WORKDIR /home/user 18 | RUN git clone https://github.com/aladur/flexemu.git && \ 19 | cd flexemu && \ 20 | git submodule update --init --recursive && \ 21 | ./configure --prefix=/usr --sysconfdir=/etc && \ 22 | make -j8 check && \ 23 | sudo make install 24 | CMD ["/bin/bash"] 25 | 26 | -------------------------------------------------------------------------------- /docker/debian_unstable/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM debian:unstable-slim 2 | 3 | RUN apt-get -y update && apt-get install -y \ 4 | sudo \ 5 | xxd \ 6 | vim \ 7 | git \ 8 | build-essential \ 9 | qtbase5-dev \ 10 | qtbase5-dev-tools \ 11 | libqt5x11extras5-dev && \ 12 | useradd --create-home --shell /bin/bash user && \ 13 | echo "user ALL=(ALL) NOPASSWD:ALL" >> /etc/sudoers 14 | ENV QT_XCB_GL_INTEGRATION=none 15 | USER user 16 | WORKDIR /home/user 17 | RUN git clone https://github.com/aladur/flexemu.git && \ 18 | cd flexemu && \ 19 | git submodule update --init --recursive && \ 20 | ./configure --prefix=/usr --sysconfdir=/etc && \ 21 | make -j8 check && \ 22 | sudo make install 23 | CMD ["/bin/bash"] 24 | 25 | -------------------------------------------------------------------------------- /docker/debian_unstable_qt6/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM debian:unstable-slim 2 | 3 | RUN apt-get -y update && apt-get -y install \ 4 | sudo \ 5 | xxd \ 6 | vim \ 7 | git \ 8 | build-essential \ 9 | qt6-base-dev \ 10 | qt6-base-dev-tools && \ 11 | useradd --create-home --shell /bin/bash user && \ 12 | echo "user ALL=(ALL) NOPASSWD:ALL" >> /etc/sudoers 13 | ENV PATH=/usr/lib/qt6/libexec:$PATH 14 | ENV PATH=/usr/lib/qt6/bin:$PATH 15 | ENV QT_XCB_GL_INTEGRATION=none 16 | USER user 17 | WORKDIR /home/user 18 | RUN git clone https://github.com/aladur/flexemu.git && \ 19 | cd flexemu && \ 20 | git submodule update --init --recursive && \ 21 | ./configure --prefix=/usr --sysconfdir=/etc && \ 22 | make -j8 check && \ 23 | sudo make install 24 | CMD ["/bin/bash"] 25 | 26 | -------------------------------------------------------------------------------- /docker/endlessos/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM endlessm/eos:6.0 2 | 3 | RUN apt-get -y update && apt-get -y install \ 4 | sudo \ 5 | xxd \ 6 | vim \ 7 | git \ 8 | build-essential \ 9 | qtbase5-dev \ 10 | qtbase5-dev-tools \ 11 | libqt5x11extras5-dev && \ 12 | useradd --create-home --shell /bin/bash user && \ 13 | echo "user ALL=(ALL) NOPASSWD:ALL" >> /etc/sudoers 14 | ENV QT_XCB_GL_INTEGRATION=none 15 | USER user 16 | WORKDIR /home/user 17 | RUN git clone https://github.com/aladur/flexemu.git && \ 18 | cd flexemu && \ 19 | git submodule update --init --recursive && \ 20 | ./configure --prefix=/usr --sysconfdir=/etc && \ 21 | make -j8 check && \ 22 | sudo make install 23 | CMD ["/bin/bash"] 24 | 25 | -------------------------------------------------------------------------------- /docker/fedora/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM fedora:40 2 | 3 | RUN dnf upgrade -y && \ 4 | dnf install -y \ 5 | sudo \ 6 | xxd \ 7 | vim \ 8 | git \ 9 | make \ 10 | automake \ 11 | autoconf \ 12 | gcc \ 13 | gcc-g++ \ 14 | qt5-qtbase-devel \ 15 | qt5-qtx11extras-devel \ 16 | liberation-mono-fonts && \ 17 | useradd --create-home --shell /bin/bash user && \ 18 | echo "user ALL=(ALL) NOPASSWD:ALL" >> /etc/sudoers 19 | ENV QT_XCB_GL_INTEGRATION=none 20 | USER user 21 | WORKDIR /home/user 22 | RUN git clone https://github.com/aladur/flexemu.git && \ 23 | cd flexemu && \ 24 | git submodule update --init --recursive && \ 25 | ./configure --prefix=/usr --sysconfdir=/etc && \ 26 | make -j8 check && \ 27 | sudo make install 28 | CMD ["/bin/bash"] 29 | 30 | -------------------------------------------------------------------------------- /docker/kalilinux/Dockerfile: -------------------------------------------------------------------------------- 1 | # When using the default kali download server (http://http.kali.org/) a mirror 2 | # nearby is chosen. If this mirror is http://mirror.johnnybegood.fr/kali/ 3 | # there are certificate issues. For this reason a reliable hard coded mirror 4 | # is set in /etc/apt/sources.list 5 | 6 | FROM kalilinux/kali-rolling:latest 7 | 8 | RUN echo "deb http://mirror.netcologne.de/kali kali-rolling main contrib non-free non-free-firmware" > /etc/apt/sources.list && \ 9 | apt-get -y update && apt-get -y install \ 10 | sudo \ 11 | xxd \ 12 | vim \ 13 | git \ 14 | build-essential \ 15 | qtbase5-dev \ 16 | qtbase5-dev-tools \ 17 | libqt5x11extras5-dev && \ 18 | useradd --create-home --shell /bin/bash user && \ 19 | echo "user ALL=(ALL) NOPASSWD:ALL" >> /etc/sudoers 20 | ENV QT_XCB_GL_INTEGRATION=none 21 | USER user 22 | WORKDIR /home/user 23 | RUN git clone https://github.com/aladur/flexemu.git && \ 24 | cd flexemu && \ 25 | git submodule update --init --recursive && \ 26 | ./configure --prefix=/usr --sysconfdir=/etc && \ 27 | make -j8 check && \ 28 | sudo make install 29 | CMD ["/bin/bash"] 30 | 31 | -------------------------------------------------------------------------------- /docker/linuxmint/Dockerfile: -------------------------------------------------------------------------------- 1 | # As derivative of ubuntu there is already a user "ubuntu" with uid 1000 2 | # defined. It is used and prepared for full sudo access without password. 3 | 4 | FROM linuxmintd/mint22-amd64 5 | 6 | RUN apt-get -y update && apt-get install -y \ 7 | sudo \ 8 | xxd \ 9 | vim \ 10 | git \ 11 | build-essential \ 12 | qtbase5-dev \ 13 | qtbase5-dev-tools \ 14 | libqt5x11extras5-dev && \ 15 | echo "ubuntu ALL=(ALL) NOPASSWD:ALL" >> /etc/sudoers 16 | ENV QT_XCB_GL_INTEGRATION=none 17 | USER ubuntu 18 | WORKDIR /home/ubuntu 19 | RUN git clone https://github.com/aladur/flexemu.git && \ 20 | cd flexemu && \ 21 | git submodule update --init --recursive && \ 22 | ./configure --prefix=/usr --sysconfdir=/etc && \ 23 | make -j8 check && \ 24 | sudo make install 25 | CMD ["/bin/bash"] 26 | 27 | -------------------------------------------------------------------------------- /docker/mageia/Dockerfile: -------------------------------------------------------------------------------- 1 | # Look for mageia packages: https://rpmfind.net 2 | # (https://madb.mageia.org is very slow) 3 | # A small hack for libQt5Network.so is needed so that it can be found 4 | # when detecting for qt components. 5 | # An extenstion to the PATH variable is needed to detect moc, uic and rcc. 6 | 7 | FROM mageia:9 8 | 9 | RUN dnf upgrade -y && \ 10 | dnf install -y \ 11 | sudo \ 12 | vim-enhanced \ 13 | git \ 14 | make \ 15 | automake \ 16 | autoconf \ 17 | gcc \ 18 | gcc-c++ \ 19 | qtbase5-common-devel \ 20 | libqt5core-devel \ 21 | libqt5gui-devel \ 22 | libqt5widgets-devel \ 23 | libqt5printsupport-devel \ 24 | libqt5x11extras-devel \ 25 | libqt5opengl-devel \ 26 | libqt5concurrent-devel \ 27 | libqt5test-devel \ 28 | libqt5sql-devel \ 29 | libqt5xml-devel \ 30 | fonts-ttf-dejavu && \ 31 | useradd --create-home --shell /bin/bash user && \ 32 | echo "user ALL=(ALL) NOPASSWD:ALL" >> /etc/sudoers 33 | ENV QT_XCB_GL_INTEGRATION=none 34 | USER user 35 | WORKDIR /home/user 36 | RUN cd /usr/lib64 && \ 37 | sudo ln -s libQt5Network.so.5.15.7 libQt5Network.so && \ 38 | export PATH=$PATH:/usr/lib64/qt5/bin && \ 39 | cd /home/user && \ 40 | git clone https://github.com/aladur/flexemu.git && \ 41 | cd flexemu && \ 42 | git submodule update --init --recursive && \ 43 | ./configure --prefix=/usr --sysconfdir=/etc && \ 44 | make -j8 check && \ 45 | sudo make install 46 | CMD ["/bin/bash"] 47 | 48 | -------------------------------------------------------------------------------- /docker/manjaro/Dockerfile: -------------------------------------------------------------------------------- 1 | # manjaro linux has already a user "builder" with uid 1000 defined. 2 | # available. It is used and prepared for full sudo access without password. 3 | 4 | FROM manjarolinux/base:latest 5 | 6 | RUN pacman -Syu --noconfirm && \ 7 | pacman -S --noconfirm -y \ 8 | sudo \ 9 | xxd \ 10 | vim \ 11 | git \ 12 | which \ 13 | make \ 14 | automake \ 15 | autoconf \ 16 | gcc \ 17 | qt5-base \ 18 | qt5-x11extras \ 19 | ttf-dejavu-nerd \ 20 | gnu-free-fonts && \ 21 | echo "builder ALL=(ALL) NOPASSWD:ALL" >> /etc/sudoers 22 | ENV QT_XCB_GL_INTEGRATION=none 23 | USER builder 24 | WORKDIR /home/builder 25 | RUN git clone https://github.com/aladur/flexemu.git && \ 26 | cd flexemu && \ 27 | git submodule update --init --recursive && \ 28 | ./configure --prefix=/usr --sysconfdir=/etc && \ 29 | make -j8 check && \ 30 | sudo make install 31 | CMD ["/bin/bash"] 32 | 33 | -------------------------------------------------------------------------------- /docker/opensuse/Dockerfile: -------------------------------------------------------------------------------- 1 | # Query packages: 2 | # zypper search -s 3 | 4 | FROM opensuse/leap:15.6 5 | 6 | RUN zypper --non-interactive update && \ 7 | zypper --non-interactive install --type pattern devel_basis && \ 8 | zypper --non-interactive install \ 9 | sudo \ 10 | vim \ 11 | git \ 12 | gcc11 \ 13 | gcc11-c++ \ 14 | libqt5-qtbase-devel \ 15 | libqt5-qtx11extras-devel \ 16 | dejavu-fonts && \ 17 | useradd --create-home --shell /bin/bash user && \ 18 | echo "user ALL=(ALL) NOPASSWD:ALL" >> /etc/sudoers 19 | ENV QT_XCB_GL_INTEGRATION=none 20 | USER user 21 | WORKDIR /home/user 22 | RUN git clone https://github.com/aladur/flexemu.git && \ 23 | cd flexemu && \ 24 | git submodule update --init --recursive && \ 25 | CC=gcc-11 CXX=g++-11 ./configure --prefix=/usr --sysconfdir=/etc && \ 26 | make -j8 check && \ 27 | sudo make install 28 | CMD ["/bin/bash"] 29 | 30 | -------------------------------------------------------------------------------- /docker/oraclelinux/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM oraclelinux:9-slim 2 | 3 | RUN microdnf install -y dnf 4 | RUN dnf upgrade -y && \ 5 | dnf install -y \ 6 | sudo \ 7 | vim \ 8 | git \ 9 | make \ 10 | automake \ 11 | autoconf \ 12 | gcc \ 13 | gcc-g++ \ 14 | qt5-qtbase-devel \ 15 | qt5-qtx11extras-devel \ 16 | liberation-mono-fonts && \ 17 | useradd --create-home --shell /bin/bash user && \ 18 | echo "user ALL=(ALL) NOPASSWD:ALL" >> /etc/sudoers 19 | ENV QT_XCB_GL_INTEGRATION=none 20 | USER user 21 | WORKDIR /home/user 22 | RUN git clone https://github.com/aladur/flexemu.git && \ 23 | cd flexemu && \ 24 | git submodule update --init --recursive && \ 25 | ./configure --prefix=/usr --sysconfdir=/etc && \ 26 | make -j8 check && \ 27 | sudo make install 28 | CMD ["/bin/bash"] 29 | 30 | -------------------------------------------------------------------------------- /docker/photon/Dockerfile: -------------------------------------------------------------------------------- 1 | # docker build failed. Photon OS does not provide qt5 packages. 2 | # Search for packages: yum search 3 | 4 | FROM photon:5.0 5 | 6 | RUN tdnf update -y && \ 7 | tdnf upgrade -y && \ 8 | tdnf install -y \ 9 | sudo \ 10 | vim \ 11 | git \ 12 | make \ 13 | automake \ 14 | autoconf \ 15 | gcc \ 16 | qt5-qtbase-devel \ 17 | qt5-qtx11extras-devel && \ 18 | useradd --create-home --shell /bin/bash user && \ 19 | echo "user ALL=(ALL) NOPASSWD:ALL" >> /etc/sudoers 20 | USER user 21 | WORKDIR /home/user 22 | RUN git clone https://github.com/aladur/flexemu.git && \ 23 | cd flexemu && \ 24 | git submodule update --init --recursive && \ 25 | ./configure --prefix=/usr --sysconfdir=/etc && \ 26 | make -j8 check && \ 27 | sudo make install 28 | CMD ["/bin/bash"] 29 | 30 | -------------------------------------------------------------------------------- /docker/rockylinux/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM rockylinux:9.3-minimal 2 | 3 | RUN microdnf install -y dnf 4 | RUN dnf upgrade -y && \ 5 | dnf install -y \ 6 | sudo \ 7 | vim \ 8 | git \ 9 | make \ 10 | automake \ 11 | autoconf \ 12 | gcc \ 13 | gcc-g++ \ 14 | qt5-qtbase-devel \ 15 | qt5-qtx11extras-devel \ 16 | liberation-mono-fonts && \ 17 | useradd --create-home --shell /bin/bash user && \ 18 | echo "user ALL=(ALL) NOPASSWD:ALL" >> /etc/sudoers 19 | ENV QT_XCB_GL_INTEGRATION=none 20 | USER user 21 | WORKDIR /home/user 22 | RUN git clone https://github.com/aladur/flexemu.git && \ 23 | cd flexemu && \ 24 | git submodule update --init --recursive && \ 25 | ./configure --prefix=/usr --sysconfdir=/etc && \ 26 | make -j8 check && \ 27 | sudo make install 28 | CMD ["/bin/bash"] 29 | 30 | -------------------------------------------------------------------------------- /docker/slackware/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM aclemons/slackware:15.0 2 | 3 | WORKDIR /tmp 4 | COPY setup.sh setup.sh 5 | SHELL ["/usr/bin/bash", "-c"] 6 | RUN ./setup.sh 7 | ENV GIT_SSL_NO_VERIFY=true 8 | ENV QT_XCB_GL_INTEGRATION=none 9 | USER user 10 | WORKDIR /home/user 11 | RUN git clone https://github.com/aladur/flexemu.git && \ 12 | cd flexemu && \ 13 | git submodule update --init --recursive && \ 14 | ./configure --prefix=/usr --sysconfdir=/etc && \ 15 | make -j8 check && \ 16 | sudo make install 17 | CMD ["/bin/bash"] 18 | -------------------------------------------------------------------------------- /docker/slackware/setup.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/bash 2 | 3 | # Execute slackpkg and intentionally ignore the exit code. 4 | # Good site to look for slackware packages: https://pkgs.org 5 | # All dependencies have been resolved by hand :-( 6 | 7 | useradd --create-home --shell /bin/bash user 8 | echo "user ALL=(ALL) NOPASSWD:ALL" >> /etc/sudoers 9 | slackpkg -batch=on -default_answer=y update || true 10 | slackpkg -batch=on -default_answer=y upgrade-all || true 11 | slackpkg -batch=on -default_answer=y clean-system || true 12 | slackpkg -batch=on -default_answer=y install \ 13 | kernel-headers \ 14 | sudo \ 15 | libglvnd \ 16 | libXau \ 17 | libXext \ 18 | libXdmcp \ 19 | libxcb \ 20 | libX11 \ 21 | libXcomposite \ 22 | libXrender \ 23 | libxml2 \ 24 | libxslt \ 25 | sqlite \ 26 | orc \ 27 | opus \ 28 | libvorbis \ 29 | libogg \ 30 | flac \ 31 | libsndfile \ 32 | libasyncns \ 33 | elfutils \ 34 | gstreamer \ 35 | gst-plugins-base \ 36 | pulseaudio \ 37 | nghttp2 \ 38 | brotli \ 39 | dbus \ 40 | icu4c \ 41 | glibc \ 42 | glib2 \ 43 | guile \ 44 | gc \ 45 | woff2 \ 46 | libwebp \ 47 | hyphen \ 48 | freetype \ 49 | freetype \ 50 | fontconfig \ 51 | xcb-proto \ 52 | xcb-util \ 53 | xcb-util-cursor \ 54 | xcb-util-image \ 55 | xcb-util-keysyms \ 56 | xcb-util-renderutil \ 57 | xcb-util-wm \ 58 | libSM \ 59 | libICE \ 60 | libxkbcommon \ 61 | harfbuzz \ 62 | graphite2 \ 63 | dejavu-fonts-ttf \ 64 | cyrus-sasl \ 65 | vim \ 66 | git \ 67 | flex \ 68 | gcc \ 69 | binutils \ 70 | make \ 71 | autoconf \ 72 | automake \ 73 | qt5 74 | 75 | -------------------------------------------------------------------------------- /docker/ubuntu/Dockerfile: -------------------------------------------------------------------------------- 1 | # ubuntu linux has already a user "ubuntu" with uid 1000 defined. 2 | # available. It is used and prepared for full sudo access without password. 3 | 4 | FROM ubuntu:24.04 5 | 6 | RUN apt-get -y update && apt-get -y install \ 7 | sudo \ 8 | xxd \ 9 | vim \ 10 | git \ 11 | build-essential \ 12 | qtbase5-dev \ 13 | qtbase5-dev-tools \ 14 | libqt5x11extras5-dev && \ 15 | echo "ubuntu ALL=(ALL) NOPASSWD:ALL" >> /etc/sudoers 16 | ENV QT_XCB_GL_INTEGRATION=none 17 | USER ubuntu 18 | WORKDIR /home/ubuntu 19 | RUN git clone https://github.com/aladur/flexemu.git && \ 20 | cd flexemu && \ 21 | git submodule update --init --recursive && \ 22 | ./configure --prefix=/usr --sysconfdir=/etc && \ 23 | make -j8 check && \ 24 | sudo make install 25 | CMD ["/bin/bash"] 26 | 27 | -------------------------------------------------------------------------------- /docker/ubuntu18_clang/Dockerfile: -------------------------------------------------------------------------------- 1 | # Create user "ubuntu". 2 | # It is used and prepared for full sudo access without password. 3 | # use clang-7 compiler and libstdc++-8 c++ library. 4 | # The filesystem library is a separate library to be linked with 5 | # LIBS=-lstdc++fs 6 | 7 | FROM asappinc/ubuntu18:18.04.0 8 | 9 | RUN apt-get -y update && apt-get -y install \ 10 | sudo \ 11 | xxd \ 12 | vim \ 13 | git \ 14 | libstdc++-8-dev \ 15 | clang-7 \ 16 | libncurses-dev \ 17 | libncursesw5 \ 18 | build-essential \ 19 | qtbase5-dev \ 20 | qtbase5-dev-tools \ 21 | libqt5x11extras5-dev && \ 22 | useradd -m -d /home/username -s /bin/bash ubuntu && \ 23 | echo "ubuntu ALL=(ALL) NOPASSWD:ALL" >> /etc/sudoers 24 | ENV QT_XCB_GL_INTEGRATION=none 25 | USER ubuntu 26 | WORKDIR /home/ubuntu 27 | ENV QT_SELECT=qt5 28 | RUN git clone https://github.com/aladur/flexemu.git && \ 29 | cd flexemu && \ 30 | git submodule update --init --recursive && \ 31 | ./configure --prefix=/usr --sysconfdir=/etc CC=clang-7 CXX=clang++-7 && \ 32 | make -j8 check LIBS=-lstdc++fs && \ 33 | sudo make install 34 | CMD ["/bin/bash"] 35 | 36 | -------------------------------------------------------------------------------- /docker/ubuntu18_gcc/Dockerfile: -------------------------------------------------------------------------------- 1 | # Create user "ubuntu". 2 | # It is used and prepared for full sudo access without password. 3 | # use gcc-8 compiler and libstdc++-8 c++ library. 4 | # The filesystem library is a separate library to be linked with 5 | # LIBS=-lstdc++fs 6 | 7 | FROM asappinc/ubuntu18:18.04.0 8 | 9 | RUN apt-get -y update && apt-get -y install \ 10 | sudo \ 11 | xxd \ 12 | vim \ 13 | git \ 14 | gcc-8 \ 15 | g++-8 \ 16 | libncurses-dev \ 17 | libncursesw5 \ 18 | build-essential \ 19 | qtbase5-dev \ 20 | qtbase5-dev-tools \ 21 | libqt5x11extras5-dev && \ 22 | useradd -m -d /home/username -s /bin/bash ubuntu && \ 23 | echo "ubuntu ALL=(ALL) NOPASSWD:ALL" >> /etc/sudoers 24 | ENV QT_XCB_GL_INTEGRATION=none 25 | USER ubuntu 26 | WORKDIR /home/ubuntu 27 | ENV QT_SELECT=qt5 28 | RUN git clone https://github.com/aladur/flexemu.git && \ 29 | cd flexemu && \ 30 | git submodule update --init --recursive && \ 31 | ./configure --prefix=/usr --sysconfdir=/etc CC=gcc-8 CXX=g++-8 && \ 32 | make -j8 LIBS=-lstdc++fs && \ 33 | sudo make install 34 | CMD ["/bin/bash"] 35 | 36 | -------------------------------------------------------------------------------- /imhex/patterns/flex_random.hexpat: -------------------------------------------------------------------------------- 1 | #pragma author Wolfgang Schwotzer 2 | #pragma description FLEX random file 3 | 4 | fn format_hex(u8 value) 5 | { 6 | return std::format("{} (0x{:02X})", value, value); 7 | }; 8 | 9 | struct SectorMapEntry 10 | { 11 | u8 track [[name("Start track"), format("format_hex")]]; 12 | u8 sector [[name("Start sector"), format("format_hex")]]; 13 | u8 count [[name("Number of sectors")]]; 14 | } [[format("format_entry")]]; 15 | 16 | fn format_entry(SectorMapEntry e) 17 | { 18 | if (e.track == 0 && e.sector == 0 && e.count == 0) 19 | return "NUL"; 20 | else 21 | return std::format("{:02X}-{:02X}; {}", e.track, e.sector, e.count); 22 | }; 23 | 24 | struct SectorMap 25 | { 26 | SectorMapEntry entry[252 / 3] [[color("0000FF")]]; 27 | }; 28 | 29 | SectorMap sectorMap[2] @ 0; 30 | -------------------------------------------------------------------------------- /imhex/readme.md: -------------------------------------------------------------------------------- 1 | # ImHex Hex Editor support 2 | 3 | [ImHex](https://github.com/WerWolv/ImHex) is an excellent hex editor for reverse engineering. It can display all details of the internal structure of a file. It supports a pattern language to easily support new file formats. 4 | 5 | The flexemu project supports ImHex pattern files for the following file formats: 6 | 7 | |Type |File extension | Pattern file | 8 | |---------------------|---------------------------|------------------| 9 | |FLEX binary files |\*.cmd; \*.bin; \*.sys; ...|flex_binary.hexpat| 10 | |FLEX disk image files|\*.dsk; \*.flx; \*.wta |flex_dskflx.hexpat| 11 | |FLEX random files |unspecific |flex_random.hexpat| 12 | 13 | These files are part of a flexemu installation. The path is operating system dependent. 14 | 15 | | Operating System | Installation folder | 16 | |------------------|--------------------------------------------------------| 17 | | UNIX like |<prefix>/share/flexemu/imhex/patterns| 18 | | Windows |<InstallDirectory>\ImHex\patterns | 19 | -------------------------------------------------------------------------------- /m4/ax_clang_tidy_opts.m4: -------------------------------------------------------------------------------- 1 | # SYNOPSIS 2 | # 3 | # AX_CLANG_TIDY_OPTS(CXXFLAGS) 4 | # 5 | # DESCRIPTION 6 | # 7 | # Create a clang-tidy option list for given CXXFLAGS. 8 | # 9 | # The following variable is exported: 10 | # 11 | # CLANG_TIDY_OPTS 12 | # 13 | # It contains the created option list 14 | # 15 | # Example for calling clang-tidy: 16 | # 17 | # clang-tidy mysource.cpp -- @CLANG_TIDY_OPTS@ 18 | # 19 | # LICENSE 20 | # 21 | # Copyright (c) 2024 Wolfgang Schwotzer 22 | # 23 | # Copying and distribution of this file, with or without modification, are 24 | # permitted in any medium without royalty provided the copyright notice 25 | # and this notice are preserved. This file is offered as-is, without any 26 | # warranty. 27 | 28 | #serial 1 29 | 30 | AC_DEFUN([AX_CLANG_TIDY_OPTS], 31 | [ 32 | AC_REQUIRE([AC_PROG_SED]) 33 | [ CLANG_TIDY_OPTS=`echo $1 | $SED "s/-I\([a-zA-Z0-9_/-]\+\)/-isystem \1/g"` ]dnl 34 | AC_SUBST([CLANG_TIDY_OPTS]) 35 | ]) 36 | 37 | -------------------------------------------------------------------------------- /m4/ax_require_defined.m4: -------------------------------------------------------------------------------- 1 | # =========================================================================== 2 | # https://www.gnu.org/software/autoconf-archive/ax_require_defined.html 3 | # =========================================================================== 4 | # 5 | # SYNOPSIS 6 | # 7 | # AX_REQUIRE_DEFINED(MACRO) 8 | # 9 | # DESCRIPTION 10 | # 11 | # AX_REQUIRE_DEFINED is a simple helper for making sure other macros have 12 | # been defined and thus are available for use. This avoids random issues 13 | # where a macro isn't expanded. Instead the configure script emits a 14 | # non-fatal: 15 | # 16 | # ./configure: line 1673: AX_CFLAGS_WARN_ALL: command not found 17 | # 18 | # It's like AC_REQUIRE except it doesn't expand the required macro. 19 | # 20 | # Here's an example: 21 | # 22 | # AX_REQUIRE_DEFINED([AX_CHECK_LINK_FLAG]) 23 | # 24 | # LICENSE 25 | # 26 | # Copyright (c) 2014 Mike Frysinger 27 | # 28 | # Copying and distribution of this file, with or without modification, are 29 | # permitted in any medium without royalty provided the copyright notice 30 | # and this notice are preserved. This file is offered as-is, without any 31 | # warranty. 32 | 33 | #serial 2 34 | 35 | AC_DEFUN([AX_REQUIRE_DEFINED], [dnl 36 | m4_ifndef([$1], [m4_fatal([macro ]$1[ is not defined; is a m4 file missing?])]) 37 | ])dnl AX_REQUIRE_DEFINED 38 | -------------------------------------------------------------------------------- /m4/flx_disable_post_install.m4: -------------------------------------------------------------------------------- 1 | dnl --------------------------------------------------------------------------- 2 | dnl FLX_ENABLE_POST_INSTALL 3 | dnl --------------------------------------------------------------------------- 4 | 5 | AC_DEFUN([FLX_ENABLE_POST_INSTALL], 6 | [ 7 | AC_ARG_ENABLE(post-install, 8 | [ --disable-post-install disable executing post installation steps ],,enable_post_install="yes") 9 | AC_MSG_CHECKING(for executing post installation steps) 10 | AC_MSG_RESULT($enable_post_install) 11 | 12 | IGNORE="#" 13 | if test "x$enable_post_install" = "xyes" 14 | then 15 | IGNORE= 16 | fi 17 | 18 | AC_SUBST(IGNORE) 19 | ]) 20 | 21 | -------------------------------------------------------------------------------- /m4/flx_precompiled_headers.m4: -------------------------------------------------------------------------------- 1 | dnl --------------------------------------------------------------------------- 2 | dnl FLX_PRECOMPILED_HEADERS 3 | dnl --------------------------------------------------------------------------- 4 | 5 | AC_DEFUN([FLX_PRECOMPILED_HEADERS], 6 | [ 7 | AC_ARG_ENABLE(precompiled-headers, 8 | [ --disable-precompiled-headers disable build with precompiled headers ],,enable_precompiled_headers="yes") 9 | AC_MSG_CHECKING(for using precompiled headers) 10 | AC_MSG_RESULT($enable_precompiled_headers) 11 | ]) 12 | 13 | -------------------------------------------------------------------------------- /m4/ltversion.m4: -------------------------------------------------------------------------------- 1 | # ltversion.m4 -- version numbers -*- Autoconf -*- 2 | # 3 | # Copyright (C) 2004, 2011-2019, 2021-2022 Free Software Foundation, 4 | # Inc. 5 | # Written by Scott James Remnant, 2004 6 | # 7 | # This file is free software; the Free Software Foundation gives 8 | # unlimited permission to copy and/or distribute it, with or without 9 | # modifications, as long as this notice is preserved. 10 | 11 | # @configure_input@ 12 | 13 | # serial 4245 ltversion.m4 14 | # This file is part of GNU Libtool 15 | 16 | m4_define([LT_PACKAGE_VERSION], [2.4.7]) 17 | m4_define([LT_PACKAGE_REVISION], [2.4.7]) 18 | 19 | AC_DEFUN([LTVERSION_VERSION], 20 | [macro_version='2.4.7' 21 | macro_revision='2.4.7' 22 | _LT_DECL(, macro_version, 0, [Which release of libtool.m4 was used?]) 23 | _LT_DECL(, macro_revision, 0) 24 | ]) 25 | -------------------------------------------------------------------------------- /metadata.json: -------------------------------------------------------------------------------- 1 | { 2 | "clangTidyRules": 209 3 | } 4 | -------------------------------------------------------------------------------- /monitor/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | set(install_FILES 2 | coltab.hex 3 | mon24.s19 4 | mon24z.s19 5 | mon53.s19 6 | mon54.s19 7 | monu54-6.s19 8 | neumon54.hex 9 | ) 10 | 11 | install(FILES ${install_FILES} DESTINATION ${CMAKE_INSTALL_DATADIR}/flexemu) 12 | -------------------------------------------------------------------------------- /monitor/Makefile.am: -------------------------------------------------------------------------------- 1 | pkgdata_DATA = \ 2 | coltab.hex \ 3 | mon24.s19 \ 4 | mon24z.s19 \ 5 | mon53.s19 \ 6 | mon54.s19 \ 7 | monu54-6.s19 \ 8 | neumon54.hex 9 | 10 | extra_files = \ 11 | makefile_neumon54 \ 12 | coltab.asm \ 13 | coltab.lst \ 14 | coltab.org \ 15 | neumon54.asm \ 16 | neumon54.lst \ 17 | mon24.bin 18 | 19 | EXTRA_DIST = ${pkgdata_DATA} ${extra_files} 20 | 21 | SUBDIRS = mon24 mon24z 22 | 23 | -------------------------------------------------------------------------------- /monitor/coltab.hex: -------------------------------------------------------------------------------- 1 | :20F0000020370C0D0E040506000C040D050E060034027FFCF17FFCF0863EB7FCF13582B64B 2 | :20F02000FCF12AFBB6FCF0398EF034A680B7FD3C26F920FE455849540010CEF00086EF1F42 3 | :20F040008B8DCD8E0000CEF00286408D678E1000CEF00986408D5D8E2000CEF0098640175C 4 | :20F0600000CA8DBB811B26FA8DBE8D4E4FD600D701C608A700A78840A7890080A78900C01B 5 | :20F08000A7890100A7890140A7890180A78901C0308902005A26DC0A033089F0010A01262D 6 | :20F0A000D0430D0326C704001F21C640D703E6C026B820121F12970020EC34041F98FDFFA7 7 | :20F0C000E0FDFFE235843404C60F1F89FDFFE0FDFFE235848DE48E2000C640D7034FD6006D 8 | :20F0E000D701C608D7021F89ED00ED02ED8840ED8842ED890080ED890082ED8900C0ED8907 9 | :20F1000000C2308901000A0226DE3089F8040A03D603C50F2604308907C07AEF0126C343B4 10 | :20F120000D0326BA0400E6C026AA209A970020F44555524F434F4D20434F4C4F5220544192 11 | :0DF14000424C452056312E30043B16FEDBBC 12 | :10FFF0000000F149F149F14AF14AF149F14AF03979 13 | :00000001FF 14 | -------------------------------------------------------------------------------- /monitor/coltab.org: -------------------------------------------------------------------------------- 1 | ; TTL "COLOR TABLE" 2 | ; 3 | ; create a color table on the screen 4 | ; 5 | ; History 6 | ;======== 7 | ; 8 | ; 22.09.2000 W. Schwotzer 9 | 10 | MMU EQU $FFE0 11 | SCRNBAS EQU $0000 ; Screen base address 12 | SCRNSIZ EQU $4000 ; Screen size in byte 13 | 14 | ORG $0000 15 | 16 | RESET EQU * 17 | START BRA START1 18 | 19 | PLANES FCB $0C 20 | FCB $0D 21 | FCB $0E 22 | FCB $04 23 | FCB $05 24 | FCB $06 25 | FCB $FF 26 | 27 | START1 LDY #PLANES 28 | LDA #64 29 | PSHS A 30 | LOOP1 LDB ,S 31 | LSRB 32 | STB ,S 33 | LDB ,Y+ 34 | CMPB #$FF 35 | BEQ FINISH 36 | 37 | LBSR SWTCH 38 | LDX #SCRNBAS 39 | CLRA 40 | LOOP2 LDB ,S 41 | LOOP3 STA ,X+ 42 | DECB 43 | BNE LOOP3 44 | COMA 45 | CMPX #SCRNSIZ+SCRNBAS 46 | BNE LOOP2 47 | BRA LOOP1 48 | 49 | FINISH LBSR SWTCHB 50 | END9 BRA END9 ; endless loop 51 | 52 | SWTCH PSHS B 53 | TFR A, B 54 | STD MMU 55 | STD MMU+2 56 | PULS B, PC 57 | 58 | SWTCHB PSHS B 59 | LDB #$0F 60 | TFR A, B 61 | STD MMU 62 | STD MMU+2 63 | PULS B, PC 64 | 65 | ;IRQ RTI 66 | 67 | ORG $FFF0 68 | 69 | FDB IRQ ; SWI3 70 | FDB IRQ ; SWI2 71 | FDB IRQ ; FIRQ 72 | FDB IRQ ; IRQ 73 | FDB IRQ ; SWI 74 | FDB IRQ ; NMI 75 | FDB RESET ; RESET 76 | 77 | END 78 | 79 | -------------------------------------------------------------------------------- /monitor/makefile_coltab: -------------------------------------------------------------------------------- 1 | # makefile to assemble coltab boot ROM. 2 | # 3 | # Syntax: 4 | # make -f makefile_coltab clean 5 | # make -f makefile_coltab 6 | # 7 | # The MC6809 assembler a09 has to be in the path. 8 | # It can be downloaded from: 9 | # https://github.com/Arakula/A09 10 | 11 | ASEMB=a09 12 | RM=rm 13 | SOURCE=coltab.asm 14 | TARGET=$(patsubst %.asm,%.hex,$(SOURCE)) 15 | LIST=$(patsubst %.asm,%.lst,$(SOURCE)) 16 | 17 | all: $(TARGET) 18 | 19 | $(TARGET): $(SOURCE) 20 | $(ASEMB) -X$(TARGET) -L$(LIST) $< 21 | 22 | clean: 23 | $(RM) -f $(TARGET) $(LIST) 24 | -------------------------------------------------------------------------------- /monitor/makefile_neumon54: -------------------------------------------------------------------------------- 1 | # makefile to assemble neumon54. 2 | # 3 | # Syntax: 4 | # make -f makefile_neumon54 clean 5 | # make -f makefile_neumon54 6 | # 7 | # The MC6809 assembler a09 has to be in the path. 8 | # It can be downloaded from: 9 | # https://github.com/Arakula/A09 10 | 11 | ASEMB=a09 12 | RM=rm 13 | SOURCE=neumon54.asm 14 | TARGET=$(patsubst %.asm,%.hex,$(SOURCE)) 15 | LIST=$(patsubst %.asm,%.lst,$(SOURCE)) 16 | 17 | all: $(TARGET) 18 | 19 | $(TARGET): $(SOURCE) 20 | $(ASEMB) -X$(TARGET) -L$(LIST) $< 21 | 22 | clean: 23 | $(RM) -f $(TARGET) $(LIST) 24 | -------------------------------------------------------------------------------- /monitor/mon24.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aladur/flexemu/f99f6c44cc6f779a4da5c1f53afd7142a9b7aea4/monitor/mon24.bin -------------------------------------------------------------------------------- /monitor/mon24/Makefile.am: -------------------------------------------------------------------------------- 1 | EXTRA_DIST = \ 2 | Makefile.unx \ 3 | mon24.inf 4 | 5 | -------------------------------------------------------------------------------- /monitor/mon24/Makefile.unx: -------------------------------------------------------------------------------- 1 | # Documentation of monitor program mon24.s19 2 | # ========================================== 3 | # Create a documented assembler source file and 4 | # source listing from the Motorola S-Record file. 5 | # 6 | # The MC6809 disassembler f9dasm is needed. 7 | # Download: https://github.com/Arakula/f9dasm 8 | # 9 | DISASM = f9dasm 10 | SRCFILE = mon24.s19 11 | SRC = ../$(SRCFILE) 12 | TARGET1 = $(patsubst %.s19,%.asm,$(SRCFILE)) 13 | TARGET2 = $(patsubst %.s19,%.lst,$(SRCFILE)) 14 | INFO = $(patsubst %.s19,%.inf,$(SRCFILE)) 15 | HAS_DISASM := $(shell command -v $(DISASM) 2> /dev/null) 16 | 17 | all: $(TARGET1) $(TARGET2) 18 | ifndef HAS_DISASM 19 | $(error "$(DISASM) not found. \ 20 | Download from: https://github.com/Arakula/f9dasm") 21 | endif 22 | 23 | $(TARGET1): $(SRC) $(INFO) 24 | $(DISASM) -info $(INFO) -out $(TARGET1) -noaddr -noasc -nohex \ 25 | -nofcc -cchar \; $(SRC) 26 | 27 | $(TARGET2): $(SRC) $(INFO) 28 | $(DISASM) -info $(INFO) -out $(TARGET2) -nofcc -cchar \; $(SRC) 29 | 30 | clean: 31 | rm -rf $(TARGET1) $(TARGET2) 32 | 33 | PHONY: clean all 34 | 35 | -------------------------------------------------------------------------------- /monitor/mon24z/Makefile.am: -------------------------------------------------------------------------------- 1 | EXTRA_DIST = \ 2 | Makefile.unx \ 3 | mon24z.inf 4 | -------------------------------------------------------------------------------- /monitor/mon24z/Makefile.unx: -------------------------------------------------------------------------------- 1 | # Documentation of monitor program mon24z.s19 2 | # =========================================== 3 | # Create a documented assembler source file and 4 | # source listing from the Motorola S-Record file. 5 | # 6 | # The MC6809 disassembler f9dasm is needed. 7 | # Download: https://github.com/Arakula/f9dasm 8 | # 9 | DISASM = f9dasm 10 | SRCFILE = mon24z.s19 11 | SRC = ../$(SRCFILE) 12 | TARGET1 = $(patsubst %.s19,%.asm,$(SRCFILE)) 13 | TARGET2 = $(patsubst %.s19,%.lst,$(SRCFILE)) 14 | INFO = $(patsubst %.s19,%.inf,$(SRCFILE)) 15 | HAS_DISASM := $(shell command -v $(DISASM) 2> /dev/null) 16 | 17 | all: $(TARGET1) $(TARGET2) 18 | ifndef HAS_DISASM 19 | $(error "$(DISASM) not found. \ 20 | Download from: https://github.com/Arakula/f9dasm") 21 | endif 22 | 23 | $(TARGET1): $(SRC) $(INFO) 24 | $(DISASM) -info $(INFO) -out $(TARGET1) -noaddr -noasc -nohex \ 25 | -nofcc -cchar \; $(SRC) 26 | 27 | $(TARGET2): $(SRC) $(INFO) 28 | $(DISASM) -info $(INFO) -out $(TARGET2) -nofcc -cchar \; $(SRC) 29 | 30 | clean: 31 | rm -rf $(TARGET1) $(TARGET2) 32 | 33 | PHONY: clean all 34 | 35 | -------------------------------------------------------------------------------- /options.txt: -------------------------------------------------------------------------------- 1 | # define cloc options for this directory 2 | # cloc source: https://github.com/AlDanial/cloc.git 3 | # ignore generated files and ignore submodules. 4 | 5 | --not-match-f="^[a-z][a-z0-9]*_(moc.cpp|qrc.cpp|ui.h)$" 6 | --not-match-d=".*/(fmt|googletest|jsoncpp)/" 7 | --counted=counted.txt 8 | -------------------------------------------------------------------------------- /python/cpus.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | 3 | import multiprocessing 4 | 5 | def main(): 6 | cpu_count: int = multiprocessing.cpu_count() 7 | print(f"{cpu_count}") 8 | 9 | if __name__ == "__main__": 10 | main() 11 | 12 | -------------------------------------------------------------------------------- /python/flexemu_common.py: -------------------------------------------------------------------------------- 1 | # Import common used data types 2 | import st_t_Printer 3 | import s_sys_info_sector_Printer 4 | import s_sys_info_record_Printer 5 | import s_dir_entry_Printer 6 | import s_link_table_Printer 7 | import s_new_file_Printer 8 | -------------------------------------------------------------------------------- /python/s_link_table_Printer.py: -------------------------------------------------------------------------------- 1 | import gdb 2 | import flex 3 | 4 | #struct s_link_table 5 | #{ 6 | # st_t next; // Track and sector number of next sector 7 | # Byte record_nr[2]; // FLEX logical record number 8 | # Word f_record; // Relative position in file / 252 9 | # SDWord file_id; 10 | # SectorType type; // The sector type. 11 | #}; 12 | 13 | class s_link_table_Printer: 14 | def __init__(self, val): 15 | self.val = val 16 | 17 | def to_string(self): 18 | next = str(self.val["next"]) 19 | record_nr = flex.getBigEndianWord(self.val["record_nr"]) 20 | f_record = int(self.val["f_record"]) 21 | file_id = int(self.val["file_id"]) 22 | if file_id == 2147483647: 23 | file_id = "max" 24 | else: 25 | file_id = str(file_id) 26 | typeString = flex.getSectorTypeString(self.val["type"]) 27 | return "next={0:s} record_nr={1:d} f_record={2:d} file_id={3:s} type={4:s}".format(next, record_nr, f_record, file_id, typeString) 28 | 29 | def pretty_print_s_link_table(val): 30 | if str(val.type) == 'NafsDirectoryContainer::s_link_table': return s_link_table_Printer(val) 31 | return None 32 | 33 | gdb.pretty_printers.append(pretty_print_s_link_table) 34 | 35 | -------------------------------------------------------------------------------- /python/s_new_file_Printer.py: -------------------------------------------------------------------------------- 1 | import gdb 2 | 3 | #struct s_new_file 4 | #{ 5 | # std::string filename; 6 | # st_t first; /* track and sector of first first first sector */ 7 | # st_t next; /* track and sector of next sector to be written */ 8 | #}; 9 | 10 | class s_new_file_Printer: 11 | def __init__(self, val): 12 | self.val = val 13 | 14 | def to_string(self): 15 | filename = str(self.val["filename"]) 16 | first = str(self.val["first"]) 17 | next = str(self.val["next"]) 18 | return "filename={0:s} first={1:s} next={2:s}".format(filename, first, next) 19 | 20 | def pretty_print_s_new_file(val): 21 | if str(val.type) == 'NafsDirectoryContainer::s_new_file': return s_new_file_Printer(val) 22 | return None 23 | 24 | gdb.pretty_printers.append(pretty_print_s_new_file) 25 | 26 | -------------------------------------------------------------------------------- /python/s_sys_info_sector_Printer.py: -------------------------------------------------------------------------------- 1 | import gdb 2 | import flex 3 | 4 | #struct s_sys_info_sector 5 | #{ 6 | # Byte unused1[16]; // To be initialized with 0 7 | # s_sys_info_record sir; // System information record 8 | # Byte unused2[216]; // To be initialized with 0 9 | #}; 10 | 11 | class s_sys_info_sector_Printer: 12 | def __init__(self, val): 13 | self.val = val 14 | 15 | def to_string(self): 16 | return str(self.val["sir"]) 17 | 18 | def pretty_print_s_sys_info_sector(val): 19 | if str(val.type) == 's_sys_info_sector': return s_sys_info_sector_Printer(val) 20 | return None 21 | 22 | gdb.pretty_printers.append(pretty_print_s_sys_info_sector) 23 | 24 | -------------------------------------------------------------------------------- /python/st_t_Printer.py: -------------------------------------------------------------------------------- 1 | import gdb 2 | 3 | 4 | class st_t_Printer: 5 | def __init__(self, val): 6 | self.val = val 7 | 8 | def to_string(self): 9 | track = int(self.val["trk"]) 10 | sector = int(self.val["sec"]) 11 | return "{0:02X}-{1:02X}".format(track, sector) 12 | 13 | def pretty_print_st_t(val): 14 | if str(val.type) == 'st_t': return st_t_Printer(val) 15 | return None 16 | 17 | gdb.pretty_printers.append(pretty_print_st_t) 18 | 19 | -------------------------------------------------------------------------------- /src/JoystickTable.gnumeric: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aladur/flexemu/f99f6c44cc6f779a4da5c1f53afd7142a9b7aea4/src/JoystickTable.gnumeric -------------------------------------------------------------------------------- /src/bcommand.h: -------------------------------------------------------------------------------- 1 | /* 2 | bcommand.h 3 | 4 | 5 | Basic class providing base class for a command pattern 6 | (See the book Go4) 7 | 8 | Copyright (C) 2003-2025 W. Schwotzer 9 | 10 | This program is free software; you can redistribute it and/or modify 11 | it under the terms of the GNU General Public License as published by 12 | the Free Software Foundation; either version 2 of the License, or 13 | any later version. 14 | 15 | This program is distributed in the hope that it will be useful, 16 | but WITHOUT ANY WARRANTY; without even the implied warranty of 17 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 18 | GNU General Public License for more details. 19 | 20 | You should have received a copy of the GNU General Public License 21 | along with this program; if not, write to the Free Software 22 | Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. 23 | */ 24 | 25 | #ifndef BCOMMAND_INCLUDED 26 | #define BCOMMAND_INCLUDED 27 | 28 | #include 29 | 30 | class BCommand 31 | { 32 | 33 | public: 34 | virtual ~BCommand() = default; 35 | virtual void Execute() = 0; 36 | 37 | protected: 38 | BCommand() = default; 39 | }; 40 | 41 | using BCommandSPtr = std::shared_ptr; 42 | 43 | #endif 44 | -------------------------------------------------------------------------------- /src/benv.h: -------------------------------------------------------------------------------- 1 | /* 2 | benv.h 3 | 4 | 5 | flexemu, an MC6809 emulator running FLEX 6 | Copyright (C) 1997-2025 W. Schwotzer 7 | 8 | This program is free software; you can redistribute it and/or modify 9 | it under the terms of the GNU General Public License as published by 10 | the Free Software Foundation; either version 2 of the License, or 11 | any later version. 12 | 13 | This program is distributed in the hope that it will be useful, 14 | but WITHOUT ANY WARRANTY; without even the implied warranty of 15 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 16 | GNU General Public License for more details. 17 | 18 | You should have received a copy of the GNU General Public License 19 | along with this program; if not, write to the Free Software 20 | Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. 21 | */ 22 | 23 | #ifndef BENV_INCLUDED 24 | #define BENV_INCLUDED 25 | 26 | #include 27 | 28 | class BEnvironment 29 | { 30 | public: 31 | BEnvironment() = delete; 32 | ~BEnvironment() = delete; 33 | 34 | static bool RemoveKey(const char *key); 35 | static bool SetValue(const char *key, const std::string &value); 36 | static bool SetValue(const char *key, int value); 37 | static bool GetValue(const char *key, std::string &value); 38 | static bool GetValue(const char *key, int &value); 39 | }; 40 | 41 | #endif 42 | 43 | -------------------------------------------------------------------------------- /src/bitfield.cpp: -------------------------------------------------------------------------------- 1 | /* 2 | bitfield.cpp - Check if bitfields are stored little or big endian. 3 | 4 | 5 | flexemu, an MC6809 emulator running FLEX 6 | Copyright (C) 2025 W. Schwotzer 7 | 8 | This program is free software; you can redistribute it and/or modify 9 | it under the terms of the GNU General Public License as published by 10 | the Free Software Foundation; either version 2 of the License, or 11 | any later version. 12 | 13 | This program is distributed in the hope that it will be useful, 14 | but WITHOUT ANY WARRANTY; without even the implied warranty of 15 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 16 | GNU General Public License for more details. 17 | 18 | You should have received a copy of the GNU General Public License 19 | along with this program; if not, write to the Free Software 20 | Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. 21 | */ 22 | 23 | #include 24 | 25 | int main(int /* argc */, char ** /* argv */) 26 | { 27 | union u_t 28 | { 29 | unsigned char all; 30 | struct { bool first : 1; } bit; 31 | }; 32 | 33 | u_t v{0}; 34 | v.bit.first = true; 35 | std::cout << static_cast(v.all) << "\n"; 36 | 37 | return 0; 38 | } 39 | -------------------------------------------------------------------------------- /src/bitmaps/128x128/Makefile.am: -------------------------------------------------------------------------------- 1 | EXTRA_DIST=$(app_icons) $(dist_icons) 2 | 3 | app_icons = \ 4 | flexemu.png \ 5 | flexemu-flexplorer.png \ 6 | flexemu-fsetup.png 7 | 8 | appicondir = $(datadir)/icons/hicolor/128x128/apps 9 | appicon_DATA = $(app_icons) 10 | 11 | dist_icons = flexemu-irqs.png 12 | -------------------------------------------------------------------------------- /src/bitmaps/128x128/flexemu-flexplorer.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aladur/flexemu/f99f6c44cc6f779a4da5c1f53afd7142a9b7aea4/src/bitmaps/128x128/flexemu-flexplorer.png -------------------------------------------------------------------------------- /src/bitmaps/128x128/flexemu-fsetup.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aladur/flexemu/f99f6c44cc6f779a4da5c1f53afd7142a9b7aea4/src/bitmaps/128x128/flexemu-fsetup.png -------------------------------------------------------------------------------- /src/bitmaps/128x128/flexemu-irqs.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aladur/flexemu/f99f6c44cc6f779a4da5c1f53afd7142a9b7aea4/src/bitmaps/128x128/flexemu-irqs.png -------------------------------------------------------------------------------- /src/bitmaps/128x128/flexemu.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aladur/flexemu/f99f6c44cc6f779a4da5c1f53afd7142a9b7aea4/src/bitmaps/128x128/flexemu.png -------------------------------------------------------------------------------- /src/bitmaps/16x16/Makefile.am: -------------------------------------------------------------------------------- 1 | EXTRA_DIST=$(app_icons) 2 | 3 | app_icons = \ 4 | flexemu.png \ 5 | flexemu-flexplorer.png \ 6 | flexemu-fsetup.png \ 7 | flexemu-ledred-off.png \ 8 | flexemu-ledred-on.png 9 | 10 | appicondir = $(datadir)/icons/hicolor/16x16/apps 11 | appicon_DATA = $(app_icons) 12 | 13 | -------------------------------------------------------------------------------- /src/bitmaps/16x16/flexemu-flexplorer.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aladur/flexemu/f99f6c44cc6f779a4da5c1f53afd7142a9b7aea4/src/bitmaps/16x16/flexemu-flexplorer.png -------------------------------------------------------------------------------- /src/bitmaps/16x16/flexemu-fsetup.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aladur/flexemu/f99f6c44cc6f779a4da5c1f53afd7142a9b7aea4/src/bitmaps/16x16/flexemu-fsetup.png -------------------------------------------------------------------------------- /src/bitmaps/16x16/flexemu-ledred-off.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aladur/flexemu/f99f6c44cc6f779a4da5c1f53afd7142a9b7aea4/src/bitmaps/16x16/flexemu-ledred-off.png -------------------------------------------------------------------------------- /src/bitmaps/16x16/flexemu-ledred-on.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aladur/flexemu/f99f6c44cc6f779a4da5c1f53afd7142a9b7aea4/src/bitmaps/16x16/flexemu-ledred-on.png -------------------------------------------------------------------------------- /src/bitmaps/16x16/flexemu.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aladur/flexemu/f99f6c44cc6f779a4da5c1f53afd7142a9b7aea4/src/bitmaps/16x16/flexemu.png -------------------------------------------------------------------------------- /src/bitmaps/256x256/Makefile.am: -------------------------------------------------------------------------------- 1 | EXTRA_DIST=$(app_icons) $(dist_icons) 2 | 3 | app_icons = \ 4 | flexemu.png \ 5 | flexemu-flexplorer.png \ 6 | flexemu-fsetup.png 7 | 8 | appicondir = $(datadir)/icons/hicolor/256x256/apps 9 | appicon_DATA = $(app_icons) 10 | 11 | dist_icons = \ 12 | flexemu-flexplorer-background.png \ 13 | flexemu-floppy.png 14 | 15 | -------------------------------------------------------------------------------- /src/bitmaps/256x256/flexemu-flexplorer-background.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aladur/flexemu/f99f6c44cc6f779a4da5c1f53afd7142a9b7aea4/src/bitmaps/256x256/flexemu-flexplorer-background.png -------------------------------------------------------------------------------- /src/bitmaps/256x256/flexemu-flexplorer.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aladur/flexemu/f99f6c44cc6f779a4da5c1f53afd7142a9b7aea4/src/bitmaps/256x256/flexemu-flexplorer.png -------------------------------------------------------------------------------- /src/bitmaps/256x256/flexemu-floppy.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aladur/flexemu/f99f6c44cc6f779a4da5c1f53afd7142a9b7aea4/src/bitmaps/256x256/flexemu-floppy.png -------------------------------------------------------------------------------- /src/bitmaps/256x256/flexemu-fsetup.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aladur/flexemu/f99f6c44cc6f779a4da5c1f53afd7142a9b7aea4/src/bitmaps/256x256/flexemu-fsetup.png -------------------------------------------------------------------------------- /src/bitmaps/256x256/flexemu.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aladur/flexemu/f99f6c44cc6f779a4da5c1f53afd7142a9b7aea4/src/bitmaps/256x256/flexemu.png -------------------------------------------------------------------------------- /src/bitmaps/32x32/flexemu-address.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aladur/flexemu/f99f6c44cc6f779a4da5c1f53afd7142a9b7aea4/src/bitmaps/32x32/flexemu-address.png -------------------------------------------------------------------------------- /src/bitmaps/32x32/flexemu-ascii.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aladur/flexemu/f99f6c44cc6f779a4da5c1f53afd7142a9b7aea4/src/bitmaps/32x32/flexemu-ascii.png -------------------------------------------------------------------------------- /src/bitmaps/32x32/flexemu-autoupdate-winsize.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aladur/flexemu/f99f6c44cc6f779a4da5c1f53afd7142a9b7aea4/src/bitmaps/32x32/flexemu-autoupdate-winsize.png -------------------------------------------------------------------------------- /src/bitmaps/32x32/flexemu-breakpoints.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aladur/flexemu/f99f6c44cc6f779a4da5c1f53afd7142a9b7aea4/src/bitmaps/32x32/flexemu-breakpoints.png -------------------------------------------------------------------------------- /src/bitmaps/32x32/flexemu-check-failed.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aladur/flexemu/f99f6c44cc6f779a4da5c1f53afd7142a9b7aea4/src/bitmaps/32x32/flexemu-check-failed.png -------------------------------------------------------------------------------- /src/bitmaps/32x32/flexemu-cpu-undocumented.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aladur/flexemu/f99f6c44cc6f779a4da5c1f53afd7142a9b7aea4/src/bitmaps/32x32/flexemu-cpu-undocumented.png -------------------------------------------------------------------------------- /src/bitmaps/32x32/flexemu-cpu.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aladur/flexemu/f99f6c44cc6f779a4da5c1f53afd7142a9b7aea4/src/bitmaps/32x32/flexemu-cpu.png -------------------------------------------------------------------------------- /src/bitmaps/32x32/flexemu-detect-page-break.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aladur/flexemu/f99f6c44cc6f779a4da5c1f53afd7142a9b7aea4/src/bitmaps/32x32/flexemu-detect-page-break.png -------------------------------------------------------------------------------- /src/bitmaps/32x32/flexemu-flexplorer-about.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aladur/flexemu/f99f6c44cc6f779a4da5c1f53afd7142a9b7aea4/src/bitmaps/32x32/flexemu-flexplorer-about.png -------------------------------------------------------------------------------- /src/bitmaps/32x32/flexemu-flexplorer-attributes.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aladur/flexemu/f99f6c44cc6f779a4da5c1f53afd7142a9b7aea4/src/bitmaps/32x32/flexemu-flexplorer-attributes.png -------------------------------------------------------------------------------- /src/bitmaps/32x32/flexemu-flexplorer-copy.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aladur/flexemu/f99f6c44cc6f779a4da5c1f53afd7142a9b7aea4/src/bitmaps/32x32/flexemu-flexplorer-copy.png -------------------------------------------------------------------------------- /src/bitmaps/32x32/flexemu-flexplorer-delete.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aladur/flexemu/f99f6c44cc6f779a4da5c1f53afd7142a9b7aea4/src/bitmaps/32x32/flexemu-flexplorer-delete.png -------------------------------------------------------------------------------- /src/bitmaps/32x32/flexemu-flexplorer-deselectall.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aladur/flexemu/f99f6c44cc6f779a4da5c1f53afd7142a9b7aea4/src/bitmaps/32x32/flexemu-flexplorer-deselectall.png -------------------------------------------------------------------------------- /src/bitmaps/32x32/flexemu-flexplorer-dir.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aladur/flexemu/f99f6c44cc6f779a4da5c1f53afd7142a9b7aea4/src/bitmaps/32x32/flexemu-flexplorer-dir.png -------------------------------------------------------------------------------- /src/bitmaps/32x32/flexemu-flexplorer-exit.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aladur/flexemu/f99f6c44cc6f779a4da5c1f53afd7142a9b7aea4/src/bitmaps/32x32/flexemu-flexplorer-exit.png -------------------------------------------------------------------------------- /src/bitmaps/32x32/flexemu-flexplorer-extract.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aladur/flexemu/f99f6c44cc6f779a4da5c1f53afd7142a9b7aea4/src/bitmaps/32x32/flexemu-flexplorer-extract.png -------------------------------------------------------------------------------- /src/bitmaps/32x32/flexemu-flexplorer-find-next.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aladur/flexemu/f99f6c44cc6f779a4da5c1f53afd7142a9b7aea4/src/bitmaps/32x32/flexemu-flexplorer-find-next.png -------------------------------------------------------------------------------- /src/bitmaps/32x32/flexemu-flexplorer-find.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aladur/flexemu/f99f6c44cc6f779a4da5c1f53afd7142a9b7aea4/src/bitmaps/32x32/flexemu-flexplorer-find.png -------------------------------------------------------------------------------- /src/bitmaps/32x32/flexemu-flexplorer-info.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aladur/flexemu/f99f6c44cc6f779a4da5c1f53afd7142a9b7aea4/src/bitmaps/32x32/flexemu-flexplorer-info.png -------------------------------------------------------------------------------- /src/bitmaps/32x32/flexemu-flexplorer-inject.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aladur/flexemu/f99f6c44cc6f779a4da5c1f53afd7142a9b7aea4/src/bitmaps/32x32/flexemu-flexplorer-inject.png -------------------------------------------------------------------------------- /src/bitmaps/32x32/flexemu-flexplorer-new.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aladur/flexemu/f99f6c44cc6f779a4da5c1f53afd7142a9b7aea4/src/bitmaps/32x32/flexemu-flexplorer-new.png -------------------------------------------------------------------------------- /src/bitmaps/32x32/flexemu-flexplorer-open.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aladur/flexemu/f99f6c44cc6f779a4da5c1f53afd7142a9b7aea4/src/bitmaps/32x32/flexemu-flexplorer-open.png -------------------------------------------------------------------------------- /src/bitmaps/32x32/flexemu-flexplorer-opendir.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aladur/flexemu/f99f6c44cc6f779a4da5c1f53afd7142a9b7aea4/src/bitmaps/32x32/flexemu-flexplorer-opendir.png -------------------------------------------------------------------------------- /src/bitmaps/32x32/flexemu-flexplorer-options-needs-restart.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aladur/flexemu/f99f6c44cc6f779a4da5c1f53afd7142a9b7aea4/src/bitmaps/32x32/flexemu-flexplorer-options-needs-restart.png -------------------------------------------------------------------------------- /src/bitmaps/32x32/flexemu-flexplorer-options.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aladur/flexemu/f99f6c44cc6f779a4da5c1f53afd7142a9b7aea4/src/bitmaps/32x32/flexemu-flexplorer-options.png -------------------------------------------------------------------------------- /src/bitmaps/32x32/flexemu-flexplorer-paste.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aladur/flexemu/f99f6c44cc6f779a4da5c1f53afd7142a9b7aea4/src/bitmaps/32x32/flexemu-flexplorer-paste.png -------------------------------------------------------------------------------- /src/bitmaps/32x32/flexemu-flexplorer-selectall.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aladur/flexemu/f99f6c44cc6f779a4da5c1f53afd7142a9b7aea4/src/bitmaps/32x32/flexemu-flexplorer-selectall.png -------------------------------------------------------------------------------- /src/bitmaps/32x32/flexemu-flexplorer-view.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aladur/flexemu/f99f6c44cc6f779a4da5c1f53afd7142a9b7aea4/src/bitmaps/32x32/flexemu-flexplorer-view.png -------------------------------------------------------------------------------- /src/bitmaps/32x32/flexemu-flexplorer-window-close.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aladur/flexemu/f99f6c44cc6f779a4da5c1f53afd7142a9b7aea4/src/bitmaps/32x32/flexemu-flexplorer-window-close.png -------------------------------------------------------------------------------- /src/bitmaps/32x32/flexemu-flexplorer.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aladur/flexemu/f99f6c44cc6f779a4da5c1f53afd7142a9b7aea4/src/bitmaps/32x32/flexemu-flexplorer.png -------------------------------------------------------------------------------- /src/bitmaps/32x32/flexemu-floppy.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aladur/flexemu/f99f6c44cc6f779a4da5c1f53afd7142a9b7aea4/src/bitmaps/32x32/flexemu-floppy.png -------------------------------------------------------------------------------- /src/bitmaps/32x32/flexemu-fsetup.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aladur/flexemu/f99f6c44cc6f779a4da5c1f53afd7142a9b7aea4/src/bitmaps/32x32/flexemu-fsetup.png -------------------------------------------------------------------------------- /src/bitmaps/32x32/flexemu-irq-gray.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aladur/flexemu/f99f6c44cc6f779a4da5c1f53afd7142a9b7aea4/src/bitmaps/32x32/flexemu-irq-gray.png -------------------------------------------------------------------------------- /src/bitmaps/32x32/flexemu-irq-lightblue.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aladur/flexemu/f99f6c44cc6f779a4da5c1f53afd7142a9b7aea4/src/bitmaps/32x32/flexemu-irq-lightblue.png -------------------------------------------------------------------------------- /src/bitmaps/32x32/flexemu-irq-magenta.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aladur/flexemu/f99f6c44cc6f779a4da5c1f53afd7142a9b7aea4/src/bitmaps/32x32/flexemu-irq-magenta.png -------------------------------------------------------------------------------- /src/bitmaps/32x32/flexemu-irq-red.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aladur/flexemu/f99f6c44cc6f779a4da5c1f53afd7142a9b7aea4/src/bitmaps/32x32/flexemu-irq-red.png -------------------------------------------------------------------------------- /src/bitmaps/32x32/flexemu-irq-yellow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aladur/flexemu/f99f6c44cc6f779a4da5c1f53afd7142a9b7aea4/src/bitmaps/32x32/flexemu-irq-yellow.png -------------------------------------------------------------------------------- /src/bitmaps/32x32/flexemu-logging.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aladur/flexemu/f99f6c44cc6f779a4da5c1f53afd7142a9b7aea4/src/bitmaps/32x32/flexemu-logging.png -------------------------------------------------------------------------------- /src/bitmaps/32x32/flexemu-magnet.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aladur/flexemu/f99f6c44cc6f779a4da5c1f53afd7142a9b7aea4/src/bitmaps/32x32/flexemu-magnet.png -------------------------------------------------------------------------------- /src/bitmaps/32x32/flexemu-memory.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aladur/flexemu/f99f6c44cc6f779a4da5c1f53afd7142a9b7aea4/src/bitmaps/32x32/flexemu-memory.png -------------------------------------------------------------------------------- /src/bitmaps/32x32/flexemu-original-frequency.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aladur/flexemu/f99f6c44cc6f779a4da5c1f53afd7142a9b7aea4/src/bitmaps/32x32/flexemu-original-frequency.png -------------------------------------------------------------------------------- /src/bitmaps/32x32/flexemu-print-clear.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aladur/flexemu/f99f6c44cc6f779a4da5c1f53afd7142a9b7aea4/src/bitmaps/32x32/flexemu-print-clear.png -------------------------------------------------------------------------------- /src/bitmaps/32x32/flexemu-print-output.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aladur/flexemu/f99f6c44cc6f779a4da5c1f53afd7142a9b7aea4/src/bitmaps/32x32/flexemu-print-output.png -------------------------------------------------------------------------------- /src/bitmaps/32x32/flexemu-print-preview.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aladur/flexemu/f99f6c44cc6f779a4da5c1f53afd7142a9b7aea4/src/bitmaps/32x32/flexemu-print-preview.png -------------------------------------------------------------------------------- /src/bitmaps/32x32/flexemu-print.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aladur/flexemu/f99f6c44cc6f779a4da5c1f53afd7142a9b7aea4/src/bitmaps/32x32/flexemu-print.png -------------------------------------------------------------------------------- /src/bitmaps/32x32/flexemu-reset.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aladur/flexemu/f99f6c44cc6f779a4da5c1f53afd7142a9b7aea4/src/bitmaps/32x32/flexemu-reset.png -------------------------------------------------------------------------------- /src/bitmaps/32x32/flexemu-run.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aladur/flexemu/f99f6c44cc6f779a4da5c1f53afd7142a9b7aea4/src/bitmaps/32x32/flexemu-run.png -------------------------------------------------------------------------------- /src/bitmaps/32x32/flexemu-screen-full.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aladur/flexemu/f99f6c44cc6f779a4da5c1f53afd7142a9b7aea4/src/bitmaps/32x32/flexemu-screen-full.png -------------------------------------------------------------------------------- /src/bitmaps/32x32/flexemu-screen1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aladur/flexemu/f99f6c44cc6f779a4da5c1f53afd7142a9b7aea4/src/bitmaps/32x32/flexemu-screen1.png -------------------------------------------------------------------------------- /src/bitmaps/32x32/flexemu-screen2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aladur/flexemu/f99f6c44cc6f779a4da5c1f53afd7142a9b7aea4/src/bitmaps/32x32/flexemu-screen2.png -------------------------------------------------------------------------------- /src/bitmaps/32x32/flexemu-screen3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aladur/flexemu/f99f6c44cc6f779a4da5c1f53afd7142a9b7aea4/src/bitmaps/32x32/flexemu-screen3.png -------------------------------------------------------------------------------- /src/bitmaps/32x32/flexemu-screen4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aladur/flexemu/f99f6c44cc6f779a4da5c1f53afd7142a9b7aea4/src/bitmaps/32x32/flexemu-screen4.png -------------------------------------------------------------------------------- /src/bitmaps/32x32/flexemu-screen5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aladur/flexemu/f99f6c44cc6f779a4da5c1f53afd7142a9b7aea4/src/bitmaps/32x32/flexemu-screen5.png -------------------------------------------------------------------------------- /src/bitmaps/32x32/flexemu-space.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aladur/flexemu/f99f6c44cc6f779a4da5c1f53afd7142a9b7aea4/src/bitmaps/32x32/flexemu-space.png -------------------------------------------------------------------------------- /src/bitmaps/32x32/flexemu-stop.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aladur/flexemu/f99f6c44cc6f779a4da5c1f53afd7142a9b7aea4/src/bitmaps/32x32/flexemu-stop.png -------------------------------------------------------------------------------- /src/bitmaps/32x32/flexemu-toggle.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aladur/flexemu/f99f6c44cc6f779a4da5c1f53afd7142a9b7aea4/src/bitmaps/32x32/flexemu-toggle.png -------------------------------------------------------------------------------- /src/bitmaps/32x32/flexemu-update-winsize.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aladur/flexemu/f99f6c44cc6f779a4da5c1f53afd7142a9b7aea4/src/bitmaps/32x32/flexemu-update-winsize.png -------------------------------------------------------------------------------- /src/bitmaps/32x32/flexemu-window-close.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aladur/flexemu/f99f6c44cc6f779a4da5c1f53afd7142a9b7aea4/src/bitmaps/32x32/flexemu-window-close.png -------------------------------------------------------------------------------- /src/bitmaps/32x32/flexemu.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aladur/flexemu/f99f6c44cc6f779a4da5c1f53afd7142a9b7aea4/src/bitmaps/32x32/flexemu.png -------------------------------------------------------------------------------- /src/bitmaps/32x32/qt_extended_32x32.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aladur/flexemu/f99f6c44cc6f779a4da5c1f53afd7142a9b7aea4/src/bitmaps/32x32/qt_extended_32x32.png -------------------------------------------------------------------------------- /src/bitmaps/48x48/Makefile.am: -------------------------------------------------------------------------------- 1 | EXTRA_DIST=$(app_icons) $(mimetype_icons) 2 | 3 | app_icons = \ 4 | flexemu.png \ 5 | flexemu-flexplorer.png \ 6 | flexemu-fsetup.png \ 7 | application-x-flex-diskimage.png 8 | 9 | appicondir = $(datadir)/icons/hicolor/48x48/apps 10 | appicon_DATA = $(app_icons) 11 | 12 | mimetype_icons = \ 13 | application-x-flex-diskimage.png 14 | 15 | mimetypeicondir = $(datadir)/icons/hicolor/48x48/mimetypes 16 | mimetypeicon_DATA = $(mimetype_icons) 17 | -------------------------------------------------------------------------------- /src/bitmaps/48x48/application-x-flex-diskimage.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aladur/flexemu/f99f6c44cc6f779a4da5c1f53afd7142a9b7aea4/src/bitmaps/48x48/application-x-flex-diskimage.png -------------------------------------------------------------------------------- /src/bitmaps/48x48/flexemu-flexplorer.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aladur/flexemu/f99f6c44cc6f779a4da5c1f53afd7142a9b7aea4/src/bitmaps/48x48/flexemu-flexplorer.png -------------------------------------------------------------------------------- /src/bitmaps/48x48/flexemu-fsetup.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aladur/flexemu/f99f6c44cc6f779a4da5c1f53afd7142a9b7aea4/src/bitmaps/48x48/flexemu-fsetup.png -------------------------------------------------------------------------------- /src/bitmaps/48x48/flexemu.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aladur/flexemu/f99f6c44cc6f779a4da5c1f53afd7142a9b7aea4/src/bitmaps/48x48/flexemu.png -------------------------------------------------------------------------------- /src/bitmaps/64x64/Makefile.am: -------------------------------------------------------------------------------- 1 | EXTRA_DIST=$(app_icons) $(dist_icons) 2 | 3 | app_icons = \ 4 | flexemu.png \ 5 | flexemu-flexplorer.png \ 6 | flexemu-fsetup.png 7 | 8 | appicondir = $(datadir)/icons/hicolor/64x64/apps 9 | appicon_DATA = $(app_icons) 10 | 11 | dist_icons = flexemu-flexplorer-diskimagefiles.png 12 | 13 | -------------------------------------------------------------------------------- /src/bitmaps/64x64/flexemu-flexplorer-diskimagefiles.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aladur/flexemu/f99f6c44cc6f779a4da5c1f53afd7142a9b7aea4/src/bitmaps/64x64/flexemu-flexplorer-diskimagefiles.png -------------------------------------------------------------------------------- /src/bitmaps/64x64/flexemu-flexplorer.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aladur/flexemu/f99f6c44cc6f779a4da5c1f53afd7142a9b7aea4/src/bitmaps/64x64/flexemu-flexplorer.png -------------------------------------------------------------------------------- /src/bitmaps/64x64/flexemu-fsetup.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aladur/flexemu/f99f6c44cc6f779a4da5c1f53afd7142a9b7aea4/src/bitmaps/64x64/flexemu-fsetup.png -------------------------------------------------------------------------------- /src/bitmaps/64x64/flexemu.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aladur/flexemu/f99f6c44cc6f779a4da5c1f53afd7142a9b7aea4/src/bitmaps/64x64/flexemu.png -------------------------------------------------------------------------------- /src/bitmaps/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | install(FILES 2 | 16x16/flexemu.png 3 | 16x16/flexemu-flexplorer.png 4 | 16x16/flexemu-fsetup.png 5 | DESTINATION share/icons/hicolor/16x16/apps 6 | ) 7 | 8 | install(FILES 9 | 32x32/flexemu.png 10 | 32x32/flexemu-flexplorer.png 11 | 32x32/flexemu-fsetup.png 12 | DESTINATION share/icons/hicolor/32x32/apps 13 | ) 14 | 15 | install(FILES 16 | 48x48/flexemu.png 17 | 48x48/flexemu-flexplorer.png 18 | 48x48/flexemu-fsetup.png 19 | 48x48/application-x-flex-diskimage.png 20 | DESTINATION share/icons/hicolor/48x48/apps 21 | ) 22 | 23 | install(FILES 24 | 64x64/flexemu.png 25 | 64x64/flexemu-flexplorer.png 26 | 64x64/flexemu-fsetup.png 27 | DESTINATION share/icons/hicolor/64x64/apps 28 | ) 29 | 30 | install(FILES 31 | 128x128/flexemu.png 32 | 128x128/flexemu-flexplorer.png 33 | 128x128/flexemu-fsetup.png 34 | DESTINATION share/icons/hicolor/128x128/apps 35 | ) 36 | 37 | install(FILES 38 | 256x256/flexemu.png 39 | 256x256/flexemu-flexplorer.png 40 | 256x256/flexemu-fsetup.png 41 | DESTINATION share/icons/hicolor/256x256/apps 42 | ) 43 | 44 | install(FILES 45 | scalable/flexemu.svg 46 | scalable/flexemu-flexplorer.svg 47 | scalable/flexemu-fsetup.svg 48 | scalable/application-x-flex-diskimage.svg 49 | DESTINATION share/icons/hicolor/scalable/apps 50 | ) 51 | -------------------------------------------------------------------------------- /src/bitmaps/Makefile.am: -------------------------------------------------------------------------------- 1 | EXTRA_DIST = \ 2 | flexdisk.ico \ 3 | flexemu.ico 4 | 5 | SUBDIRS = 16x16 32x32 48x48 64x64 128x128 256x256 scalable 6 | 7 | -------------------------------------------------------------------------------- /src/bitmaps/flexdisk.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aladur/flexemu/f99f6c44cc6f779a4da5c1f53afd7142a9b7aea4/src/bitmaps/flexdisk.ico -------------------------------------------------------------------------------- /src/bitmaps/flexemu.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aladur/flexemu/f99f6c44cc6f779a4da5c1f53afd7142a9b7aea4/src/bitmaps/flexemu.ico -------------------------------------------------------------------------------- /src/bitops.h: -------------------------------------------------------------------------------- 1 | /* 2 | bitops.h 3 | 4 | 5 | flexemu, an MC6809 emulator running FLEX 6 | Copyright (C) 2025 W. Schwotzer 7 | 8 | This program is free software; you can redistribute it and/or modify 9 | it under the terms of the GNU General Public License as published by 10 | the Free Software Foundation; either version 2 of the License, or 11 | any later version. 12 | 13 | This program is distributed in the hope that it will be useful, 14 | but WITHOUT ANY WARRANTY; without even the implied warranty of 15 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 16 | GNU General Public License for more details. 17 | 18 | You should have received a copy of the GNU General Public License 19 | along with this program; if not, write to the Free Software 20 | Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. 21 | */ 22 | 23 | #ifndef BITOPERATIONS_INCLUDED 24 | #define BITOPERATIONS_INCLUDED 25 | 26 | #include "typedefs.h" 27 | #include 28 | 29 | template bool BTST(T value, unsigned bitpos) 30 | { 31 | assert((bitpos >> 3U) < sizeof(T)); 32 | return (value & static_cast(static_cast(1U) << bitpos)) != 0; 33 | } 34 | 35 | template void BSET(T &value, unsigned bitpos) 36 | { 37 | assert((bitpos >> 3U) < sizeof(T)); 38 | value |= static_cast(static_cast(1U) << bitpos); 39 | } 40 | 41 | template void BCLR(T &value, unsigned bitpos) 42 | { 43 | assert((bitpos >> 3U) < sizeof(T)); 44 | value &= static_cast(~static_cast(static_cast(1U) << bitpos)); 45 | } 46 | 47 | inline Word EXTEND8(Byte value) 48 | { 49 | return static_cast(static_cast(static_cast(value))); 50 | } 51 | 52 | #endif 53 | -------------------------------------------------------------------------------- /src/blinxsys.h: -------------------------------------------------------------------------------- 1 | /* 2 | blinxsys.h 3 | 4 | 5 | flexemu, an MC6809 emulator running FLEX 6 | Copyright (C) 1997-2025 W. Schwotzer 7 | 8 | This program is free software; you can redistribute it and/or modify 9 | it under the terms of the GNU General Public License as published by 10 | the Free Software Foundation; either version 2 of the License, or 11 | any later version. 12 | 13 | This program is distributed in the hope that it will be useful, 14 | but WITHOUT ANY WARRANTY; without even the implied warranty of 15 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 16 | GNU General Public License for more details. 17 | 18 | You should have received a copy of the GNU General Public License 19 | along with this program; if not, write to the Free Software 20 | Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. 21 | */ 22 | 23 | #ifndef BLINXSYS_INCLUDED 24 | #define BLINXSYS_INCLUDED 25 | 26 | 27 | #ifdef __linux__ 28 | 29 | #include 30 | #include 31 | #include 32 | #include 33 | 34 | namespace fs = std::filesystem; 35 | 36 | 37 | enum class BLinuxSysInfoType : uint8_t 38 | { 39 | LED, 40 | }; 41 | 42 | class BLinuxSysInfo 43 | { 44 | public: 45 | BLinuxSysInfo() = default; 46 | ~BLinuxSysInfo() = default; 47 | 48 | static std::string ToString(BLinuxSysInfoType type); 49 | std::string Read(BLinuxSysInfoType type, const std::string &subtype) const; 50 | 51 | private: 52 | mutable std::map pathCache; 53 | }; 54 | #endif 55 | #endif 56 | 57 | -------------------------------------------------------------------------------- /src/bobserv.h: -------------------------------------------------------------------------------- 1 | /* 2 | bobserv.h 3 | 4 | 5 | Basic abstract class used to implement an observer pattern 6 | Copyright (C) 1999-2025 W. Schwotzer 7 | 8 | This program is free software; you can redistribute it and/or modify 9 | it under the terms of the GNU General Public License as published by 10 | the Free Software Foundation; either version 2 of the License, or 11 | any later version. 12 | 13 | This program is distributed in the hope that it will be useful, 14 | but WITHOUT ANY WARRANTY; without even the implied warranty of 15 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 16 | GNU General Public License for more details. 17 | 18 | You should have received a copy of the GNU General Public License 19 | along with this program; if not, write to the Free Software 20 | Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. 21 | */ 22 | 23 | #ifndef BOBSERVER_INCLUDED 24 | #define BOBSERVER_INCLUDED 25 | 26 | #include "bobshelp.h" 27 | 28 | /*------------------------------------------------------ 29 | BObserver 30 | An virtual observer class used to observe any action. 31 | Only the class implementing the BObserver interface 32 | knows what to do with pObject 33 | --------------------------------------------------------*/ 34 | class BObserver 35 | { 36 | public: 37 | virtual void UpdateFrom(NotifyId id, void *param = nullptr) = 0; 38 | virtual ~BObserver() = default; 39 | }; 40 | 41 | #endif // #ifndef BOBSERVER_INCLUDED 42 | 43 | -------------------------------------------------------------------------------- /src/bobservd.h: -------------------------------------------------------------------------------- 1 | /* 2 | bobservd.h 3 | 4 | 5 | Basic abstract class used to implement an observer pattern 6 | Copyright (C) 2020-2025 W. Schwotzer 7 | 8 | This program is free software; you can redistribute it and/or modify 9 | it under the terms of the GNU General Public License as published by 10 | the Free Software Foundation; either version 2 of the License, or 11 | any later version. 12 | 13 | This program is distributed in the hope that it will be useful, 14 | but WITHOUT ANY WARRANTY; without even the implied warranty of 15 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 16 | GNU General Public License for more details. 17 | 18 | You should have received a copy of the GNU General Public License 19 | along with this program; if not, write to the Free Software 20 | Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. 21 | */ 22 | 23 | #ifndef BOBSERVED_INCLUDED 24 | #define BOBSERVED_INCLUDED 25 | 26 | #include "bobshelp.h" 27 | #include "bobserv.h" 28 | #include 29 | #include 30 | 31 | /*------------------------------------------------------ 32 | BObserved 33 | An observed class used by an Observer interface 34 | to be observed. 35 | --------------------------------------------------------*/ 36 | 37 | class BObserved 38 | { 39 | public: 40 | BObserved() = default; 41 | virtual ~BObserved() = default; 42 | 43 | void Attach(BObserver &p_observer); 44 | void Detach(BObserver &p_observer); 45 | 46 | protected: 47 | void Notify(NotifyId id, void *param = nullptr); 48 | 49 | private: 50 | std::vector > observers; 51 | }; 52 | 53 | #endif // #ifndef BOBSERVED_INCLUDED 54 | 55 | -------------------------------------------------------------------------------- /src/bobshelp.h: -------------------------------------------------------------------------------- 1 | /* 2 | bobshelp.h 3 | 4 | 5 | Basic helper class used as notification identifier in an observer pattern 6 | Copyright (C) 2020-2025 W. Schwotzer 7 | 8 | This program is free software; you can redistribute it and/or modify 9 | it under the terms of the GNU General Public License as published by 10 | the Free Software Foundation; either version 2 of the License, or 11 | any later version. 12 | 13 | This program is distributed in the hope that it will be useful, 14 | but WITHOUT ANY WARRANTY; without even the implied warranty of 15 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 16 | GNU General Public License for more details. 17 | 18 | You should have received a copy of the GNU General Public License 19 | along with this program; if not, write to the Free Software 20 | Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. 21 | */ 22 | 23 | #ifndef BOBSHELP_INCLUDED 24 | #define BOBSHELP_INCLUDED 25 | 26 | #include 27 | 28 | enum class NotifyId : uint8_t 29 | { 30 | SetIrq, 31 | SetFirq, 32 | SetNmi, 33 | UpdateStatusBar, 34 | FirstKeyboardRequest, 35 | RequestScreenUpdate, 36 | VideoRamBankChanged, 37 | SetFrequency, 38 | KeyPressed, // key pressed in context of UI thread. 39 | KeyPressedOnCPU, // key pressed in context of CPU thread. 40 | }; 41 | 42 | #endif // #ifndef BOBSHELP_INCLUDED 43 | 44 | -------------------------------------------------------------------------------- /src/boot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aladur/flexemu/f99f6c44cc6f779a4da5c1f53afd7142a9b7aea4/src/boot -------------------------------------------------------------------------------- /src/breltime.h: -------------------------------------------------------------------------------- 1 | /* 2 | breltime.h 3 | 4 | 5 | Basic class for platform independent high resolution time support 6 | Copyright (C) 2001-2025 W. Schwotzer 7 | 8 | This program is free software; you can redistribute it and/or modify 9 | it under the terms of the GNU General Public License as published by 10 | the Free Software Foundation; either version 2 of the License, or 11 | any later version. 12 | 13 | This program is distributed in the hope that it will be useful, 14 | but WITHOUT ANY WARRANTY; without even the implied warranty of 15 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 16 | GNU General Public License for more details. 17 | 18 | You should have received a copy of the GNU General Public License 19 | along with this program; if not, write to the Free Software 20 | Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. 21 | */ 22 | 23 | #ifndef BRELTIME_INCLUDED 24 | #define BRELTIME_INCLUDED 25 | 26 | #include "typedefs.h" 27 | 28 | // Get relative time values with us resolution with unknown reference. 29 | // Interface can be used to calculate precise time differences between 30 | // two time values. 31 | // 32 | class BRelativeTime 33 | { 34 | public: 35 | BRelativeTime() = delete; 36 | ~BRelativeTime() = delete; 37 | static QWord GetTimeUsll(); 38 | }; 39 | 40 | #endif 41 | -------------------------------------------------------------------------------- /src/bscopeex.h: -------------------------------------------------------------------------------- 1 | /* 2 | bscopeex.h 3 | 4 | 5 | flexemu, an MC6809 emulator running FLEX 6 | Copyright (C) 2023-2025 W. Schwotzer 7 | 8 | This program is free software; you can redistribute it and/or modify 9 | it under the terms of the GNU General Public License as published by 10 | the Free Software Foundation; either version 2 of the License, or 11 | any later version. 12 | 13 | This program is distributed in the hope that it will be useful, 14 | but WITHOUT ANY WARRANTY; without even the implied warranty of 15 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 16 | GNU General Public License for more details. 17 | 18 | You should have received a copy of the GNU General Public License 19 | along with this program; if not, write to the Free Software 20 | Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. 21 | */ 22 | 23 | #ifndef BSCOPEEXIT_INCLUDED 24 | #define BSCOPEEXIT_INCLUDED 25 | 26 | #include 27 | 28 | /* Call function before scope exit */ 29 | template 30 | class BScopeExit 31 | { 32 | T function; 33 | 34 | public: 35 | explicit BScopeExit(const T &p_function) : function{ p_function } { } 36 | explicit BScopeExit(const T &&p_function) 37 | : function{ std::move(p_function) } { } 38 | 39 | ~BScopeExit() 40 | { 41 | function(); 42 | } 43 | 44 | BScopeExit(const BScopeExit &) = delete; 45 | BScopeExit &operator=(const BScopeExit &) = delete; 46 | }; 47 | 48 | #endif 49 | 50 | -------------------------------------------------------------------------------- /src/bui.cpp: -------------------------------------------------------------------------------- 1 | /* 2 | bui.cpp 3 | 4 | 5 | Flexemu, an MC6809 emulator running FLEX 6 | Copyright (C) 2020-2025 W. Schwotzer 7 | 8 | This program is free software; you can redistribute it and/or modify 9 | it under the terms of the GNU General Public License as published by 10 | the Free Software Foundation; either version 2 of the License, or 11 | any later version. 12 | 13 | This program is distributed in the hope that it will be useful, 14 | but WITHOUT ANY WARRANTY; without even the implied warranty of 15 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 16 | GNU General Public License for more details. 17 | 18 | You should have received a copy of the GNU General Public License 19 | along with this program; if not, write to the Free Software 20 | Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. 21 | */ 22 | 23 | 24 | #include "bui.h" 25 | #include "efslctle.h" 26 | #include "warnoff.h" 27 | #include 28 | #include 29 | #include "warnon.h" 30 | 31 | void InstallSelectionEventFilter(QLineEdit &lineEdit, QObject *parent) 32 | { 33 | auto *selectOnFocus = new SelectAllOnFocusInLE(lineEdit, parent); 34 | lineEdit.installEventFilter(selectOnFocus); 35 | } 36 | 37 | -------------------------------------------------------------------------------- /src/bytereg.cpp: -------------------------------------------------------------------------------- 1 | /* 2 | bytereg.cpp 3 | 4 | 5 | flexemu, an MC6809 emulator running FLEX 6 | Copyright (C) 2018-2025 W. Schwotzer 7 | 8 | This program is free software; you can redistribute it and/or modify 9 | it under the terms of the GNU General Public License as published by 10 | the Free Software Foundation; either version 2 of the License, or 11 | any later version. 12 | 13 | This program is distributed in the hope that it will be useful, 14 | but WITHOUT ANY WARRANTY; without even the implied warranty of 15 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 16 | GNU General Public License for more details. 17 | 18 | You should have received a copy of the GNU General Public License 19 | along with this program; if not, write to the Free Software 20 | Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. 21 | */ 22 | 23 | 24 | #include "typedefs.h" 25 | #include "bytereg.h" 26 | 27 | Byte ByteRegister::requestReadValue() 28 | { 29 | // If data bus for read is not addressed typically 30 | // 0xff is returned due to pull-up resistors. 31 | return 0xff; 32 | } 33 | 34 | void ByteRegister::requestWriteValue(Byte /*value*/) 35 | { 36 | } 37 | 38 | void ByteRegister::resetIo() 39 | { 40 | // default: Ignore. 41 | // Register not necessarily has to be connected with /RESET 42 | } 43 | 44 | Byte ByteRegister::readIo(Word offset) 45 | { 46 | if (offset == 0) 47 | { 48 | return requestReadValue(); 49 | } 50 | 51 | return 0; // default, should never be used! 52 | } 53 | 54 | 55 | void ByteRegister::writeIo(Word offset, Byte value) 56 | { 57 | if (offset == 0) 58 | { 59 | requestWriteValue(value); 60 | } 61 | } 62 | 63 | -------------------------------------------------------------------------------- /src/cacttrns.cpp: -------------------------------------------------------------------------------- 1 | /* 2 | cacttrns.cpp 3 | 4 | 5 | flexemu, an MC6809 emulator running FLEX 6 | Copyright (C) 1997-2025 W. Schwotzer 7 | 8 | This program is free software; you can redistribute it and/or modify 9 | it under the terms of the GNU General Public License as published by 10 | the Free Software Foundation; either version 2 of the License, or 11 | any later version. 12 | 13 | This program is distributed in the hope that it will be useful, 14 | but WITHOUT ANY WARRANTY; without even the implied warranty of 15 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 16 | GNU General Public License for more details. 17 | 18 | You should have received a copy of the GNU General Public License 19 | along with this program; if not, write to the Free Software 20 | Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. 21 | */ 22 | 23 | 24 | #include "cacttrns.h" 25 | #include "mc6821.h" 26 | 27 | 28 | CActiveTransition::CActiveTransition(Mc6821 &p_mc6821, 29 | Mc6821::ControlLine p_control_line) : 30 | mc6821(p_mc6821), control_line(p_control_line) 31 | { 32 | } 33 | 34 | void CActiveTransition::Execute() 35 | { 36 | mc6821.activeTransition(control_line); 37 | } 38 | 39 | -------------------------------------------------------------------------------- /src/cacttrns.h: -------------------------------------------------------------------------------- 1 | /* 2 | cacttrns.h 3 | 4 | 5 | flexemu, an MC6809 emulator running FLEX 6 | Copyright (C) 2003-2025 W. Schwotzer 7 | 8 | This program is free software; you can redistribute it and/or modify 9 | it under the terms of the GNU General Public License as published by 10 | the Free Software Foundation; either version 2 of the License, or 11 | any later version. 12 | 13 | This program is distributed in the hope that it will be useful, 14 | but WITHOUT ANY WARRANTY; without even the implied warranty of 15 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 16 | GNU General Public License for more details. 17 | 18 | You should have received a copy of the GNU General Public License 19 | along with this program; if not, write to the Free Software 20 | Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. 21 | */ 22 | 23 | #ifndef CACTTRNS_INCLUDED 24 | #define CACTTRNS_INCLUDED 25 | 26 | #include "mc6821.h" 27 | #include "bcommand.h" 28 | 29 | 30 | class CActiveTransition : public BCommand 31 | { 32 | 33 | public: 34 | CActiveTransition(Mc6821 &p_mc6821, Mc6821::ControlLine control_line); 35 | CActiveTransition() = delete; 36 | ~CActiveTransition() override = default; 37 | CActiveTransition(const CActiveTransition &src) = delete; 38 | CActiveTransition(CActiveTransition &&src) = delete; 39 | CActiveTransition &operator=(const CActiveTransition &src) = delete; 40 | CActiveTransition &operator=(CActiveTransition &&src) = delete; 41 | 42 | void Execute() override; 43 | 44 | protected: 45 | Mc6821 &mc6821; 46 | Mc6821::ControlLine control_line; 47 | }; 48 | 49 | #endif 50 | -------------------------------------------------------------------------------- /src/clogfile.cpp: -------------------------------------------------------------------------------- 1 | /* 2 | clogfile.cpp 3 | 4 | 5 | flexemu, an MC6809 emulator running FLEX 6 | Copyright (C) 1997-2025 W. Schwotzer 7 | 8 | This program is free software; you can redistribute it and/or modify 9 | it under the terms of the GNU General Public License as published by 10 | the Free Software Foundation; either version 2 of the License, or 11 | any later version. 12 | 13 | This program is distributed in the hope that it will be useful, 14 | but WITHOUT ANY WARRANTY; without even the implied warranty of 15 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 16 | GNU General Public License for more details. 17 | 18 | You should have received a copy of the GNU General Public License 19 | along with this program; if not, write to the Free Software 20 | Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. 21 | */ 22 | 23 | 24 | #include "clogfile.h" 25 | #include "mc6809.h" 26 | #include "scpulog.h" 27 | 28 | // Command pattern to set CPU logger config. 29 | CmdSetMc6809LoggerConfig::CmdSetMc6809LoggerConfig(Mc6809 &p_cpu, 30 | Mc6809LoggerConfig p_cpuLoggerConfig) 31 | : cpu(p_cpu) 32 | , cpuLoggerConfig(std::move(p_cpuLoggerConfig)) 33 | { 34 | } 35 | 36 | void CmdSetMc6809LoggerConfig::Execute() 37 | { 38 | cpu.setLoggerConfig(cpuLoggerConfig); 39 | } 40 | 41 | -------------------------------------------------------------------------------- /src/clogfile.h: -------------------------------------------------------------------------------- 1 | /* 2 | clogfile.h 3 | 4 | 5 | flexemu, an MC6809 emulator running FLEX 6 | Copyright (C) 2003-2025 W. Schwotzer 7 | 8 | This program is free software; you can redistribute it and/or modify 9 | it under the terms of the GNU General Public License as published by 10 | the Free Software Foundation; either version 2 of the License, or 11 | any later version. 12 | 13 | This program is distributed in the hope that it will be useful, 14 | but WITHOUT ANY WARRANTY; without even the implied warranty of 15 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 16 | GNU General Public License for more details. 17 | 18 | You should have received a copy of the GNU General Public License 19 | along with this program; if not, write to the Free Software 20 | Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. 21 | */ 22 | 23 | #ifndef CLOGFILE_INCLUDED 24 | #define CLOGFILE_INCLUDED 25 | 26 | #include "mc6809.h" 27 | #include "bcommand.h" 28 | #include "scpulog.h" 29 | 30 | class CmdSetMc6809LoggerConfig : public BCommand 31 | { 32 | 33 | public: 34 | CmdSetMc6809LoggerConfig() = delete; 35 | CmdSetMc6809LoggerConfig(Mc6809 &p_cpu, 36 | Mc6809LoggerConfig p_cpuLoggerConfig); 37 | CmdSetMc6809LoggerConfig(const CmdSetMc6809LoggerConfig &src) = delete; 38 | CmdSetMc6809LoggerConfig &operator=(const CmdSetMc6809LoggerConfig &src) 39 | = delete; 40 | 41 | void Execute() override; 42 | 43 | protected: 44 | Mc6809 &cpu; 45 | Mc6809LoggerConfig cpuLoggerConfig; 46 | }; 47 | 48 | #endif 49 | -------------------------------------------------------------------------------- /src/colors.h: -------------------------------------------------------------------------------- 1 | /* 2 | colors.h 3 | 4 | 5 | flexemu, an MC6809 emulator running FLEX 6 | Copyright (C) 2024-2025 W. Schwotzer 7 | 8 | This program is free software; you can redistribute it and/or modify 9 | it under the terms of the GNU General Public License as published by 10 | the Free Software Foundation; either version 2 of the License, or 11 | any later version. 12 | 13 | This program is distributed in the hope that it will be useful, 14 | but WITHOUT ANY WARRANTY; without even the implied warranty of 15 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 16 | GNU General Public License for more details. 17 | 18 | You should have received a copy of the GNU General Public License 19 | along with this program; if not, write to the Free Software 20 | Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. 21 | */ 22 | 23 | #ifndef COLORS_INCLUDED 24 | #define COLORS_INCLUDED 25 | 26 | #include "typedefs.h" 27 | #include 28 | #include 29 | 30 | 31 | extern "C" struct sRGBDef 32 | { 33 | const char *colorName; 34 | Byte red; 35 | Byte green; 36 | Byte blue; 37 | }; 38 | 39 | namespace flx 40 | { 41 | 42 | extern "C" bool getRGBForName(const std::string &colorName, Word &red, 43 | Word &green, Word &blue); 44 | extern "C" bool getColorForName(const std::string &colorName, DWord &color); 45 | extern "C" const struct sRGBDef colors[]; 46 | extern "C" const std::size_t color_count; 47 | 48 | } 49 | #endif 50 | 51 | -------------------------------------------------------------------------------- /src/csetfreq.cpp: -------------------------------------------------------------------------------- 1 | /* 2 | csetfreq.cpp 3 | 4 | 5 | flexemu, an MC6809 emulator running FLEX 6 | Copyright (C) 1997-2025 W. Schwotzer 7 | 8 | This program is free software; you can redistribute it and/or modify 9 | it under the terms of the GNU General Public License as published by 10 | the Free Software Foundation; either version 2 of the License, or 11 | any later version. 12 | 13 | This program is distributed in the hope that it will be useful, 14 | but WITHOUT ANY WARRANTY; without even the implied warranty of 15 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 16 | GNU General Public License for more details. 17 | 18 | You should have received a copy of the GNU General Public License 19 | along with this program; if not, write to the Free Software 20 | Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. 21 | */ 22 | 23 | 24 | #include "csetfreq.h" 25 | #include "schedule.h" 26 | 27 | 28 | CSetFrequency::CSetFrequency(Scheduler &p_sched, float p_frequency) : 29 | scheduler(p_sched), frequency(p_frequency) 30 | { 31 | } 32 | 33 | void CSetFrequency::Execute() 34 | { 35 | scheduler.set_frequency(frequency); 36 | } 37 | 38 | -------------------------------------------------------------------------------- /src/csetfreq.h: -------------------------------------------------------------------------------- 1 | /* 2 | csetfreq.h 3 | 4 | 5 | flexemu, an MC6809 emulator running FLEX 6 | Copyright (C) 1997-2025 W. Schwotzer 7 | 8 | This program is free software; you can redistribute it and/or modify 9 | it under the terms of the GNU General Public License as published by 10 | the Free Software Foundation; either version 2 of the License, or 11 | any later version. 12 | 13 | This program is distributed in the hope that it will be useful, 14 | but WITHOUT ANY WARRANTY; without even the implied warranty of 15 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 16 | GNU General Public License for more details. 17 | 18 | You should have received a copy of the GNU General Public License 19 | along with this program; if not, write to the Free Software 20 | Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. 21 | */ 22 | 23 | #ifndef CSETFREQ_INCLUDED 24 | #define CSETFREQ_INCLUDED 25 | 26 | #include "bcommand.h" 27 | 28 | class Scheduler; 29 | 30 | class CSetFrequency : public BCommand 31 | { 32 | 33 | public: 34 | CSetFrequency(Scheduler &p_sched, float p_frequency); 35 | ~CSetFrequency() override = default; 36 | CSetFrequency(const CSetFrequency &src) = delete; 37 | CSetFrequency(CSetFrequency &&src) = delete; 38 | CSetFrequency &operator=(const CSetFrequency &src) = delete; 39 | CSetFrequency &operator=(CSetFrequency &&src) = delete; 40 | void Execute() override; 41 | 42 | protected: 43 | Scheduler &scheduler; 44 | float frequency; 45 | }; 46 | 47 | #endif 48 | -------------------------------------------------------------------------------- /src/cvtwchar.h: -------------------------------------------------------------------------------- 1 | /* 2 | cvtwchar.h 3 | 4 | 5 | FLEXplorer, An explorer for FLEX disk image files and directory disks. 6 | Copyright (C) 2016-2025 W. Schwotzer 7 | 8 | This program is free software; you can redistribute it and/or modify 9 | it under the terms of the GNU General Public License as published by 10 | the Free Software Foundation; either version 2 of the License, or 11 | any later version. 12 | 13 | This program is distributed in the hope that it will be useful, 14 | but WITHOUT ANY WARRANTY; without even the implied warranty of 15 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 16 | GNU General Public License for more details. 17 | 18 | You should have received a copy of the GNU General Public License 19 | along with this program; if not, write to the Free Software 20 | Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. 21 | */ 22 | 23 | 24 | #ifndef CVTWCHAR_INCLUDED 25 | #define CVTWCHAR_INCLUDED 26 | 27 | #ifdef _WIN32 28 | 29 | #include 30 | 31 | std::wstring ConvertToUtf16String(const std::string &value); 32 | std::string ConvertToUtf8String(const std::wstring &value); 33 | 34 | #endif 35 | #endif // CVTWCHAR_INCLUDED 36 | -------------------------------------------------------------------------------- /src/cwritmem.cpp: -------------------------------------------------------------------------------- 1 | /* 2 | cwritmem.cpp 3 | 4 | 5 | flexemu, an MC6809 emulator running FLEX 6 | Copyright (C) 2025 W. Schwotzer 7 | 8 | This program is free software; you can redistribute it and/or modify 9 | it under the terms of the GNU General Public License as published by 10 | the Free Software Foundation; either version 2 of the License, or 11 | any later version. 12 | 13 | This program is distributed in the hope that it will be useful, 14 | but WITHOUT ANY WARRANTY; without even the implied warranty of 15 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 16 | GNU General Public License for more details. 17 | 18 | You should have received a copy of the GNU General Public License 19 | along with this program; if not, write to the Free Software 20 | Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. 21 | */ 22 | 23 | 24 | #include "typedefs.h" 25 | #include "cwritmem.h" 26 | #include "memory.h" 27 | #include 28 | #include 29 | 30 | 31 | CWriteMemory::CWriteMemory(Memory &p_memory, Word p_address, 32 | const std::vector &p_data) 33 | : memory(p_memory) 34 | , address(p_address) 35 | , data(p_data) 36 | { 37 | } 38 | 39 | void CWriteMemory::Execute() 40 | { 41 | std::lock_guard guard(mutex); 42 | 43 | if (!data.empty()) 44 | { 45 | memory.CopyFrom(data.data(), address, static_cast(data.size())); 46 | } 47 | } 48 | -------------------------------------------------------------------------------- /src/debug.h: -------------------------------------------------------------------------------- 1 | /* 2 | debug.h 3 | 4 | 5 | flexemu, an MC6809 emulator running FLEX 6 | Copyright (C) 1997-2025 W. Schwotzer 7 | 8 | This program is free software; you can redistribute it and/or modify 9 | it under the terms of the GNU General Public License as published by 10 | the Free Software Foundation; either version 2 of the License, or 11 | any later version. 12 | 13 | This program is distributed in the hope that it will be useful, 14 | but WITHOUT ANY WARRANTY; without even the implied warranty of 15 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 16 | GNU General Public License for more details. 17 | 18 | You should have received a copy of the GNU General Public License 19 | along with this program; if not, write to the Free Software 20 | Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. 21 | */ 22 | 23 | 24 | 25 | #ifndef DEBUG_INCLUDED 26 | #define DEBUG_INCLUDED 27 | 28 | #include "warnoff.h" 29 | #include 30 | #include "warnon.h" 31 | #include 32 | 33 | #define LOG_TEMPLATE(print_line)\ 34 | {\ 35 | std::ofstream log_ofs(DEBUG_FILE, std::ios::out | std::ios::app);\ 36 | if (log_ofs.is_open()) {\ 37 | log_ofs << (print_line);\ 38 | log_ofs.close();\ 39 | }\ 40 | } 41 | 42 | #define LOG(fmt_str) LOG_TEMPLATE(fmt::format(fmt_str)) 43 | #define LOG_X(fmt_str, a) LOG_TEMPLATE(fmt::format(fmt_str, a)) 44 | #define LOG_XX(fmt_str, a, b) LOG_TEMPLATE(fmt::format(fmt_str, a, b)) 45 | #define LOG_XXX(fmt_str, a, b, c) LOG_TEMPLATE(fmt::format(fmt_str, a, b, c)) 46 | 47 | 48 | #endif // DEBUG_INCLUDED 49 | 50 | -------------------------------------------------------------------------------- /src/dsktool-gdb.py: -------------------------------------------------------------------------------- 1 | from pathlib import Path 2 | import os.path 3 | import sys 4 | 5 | # Add python subdirectory to module search path 6 | path_root = os.path.join(Path(__file__).parents[1], "python"); 7 | sys.path.append(str(path_root)) 8 | 9 | import flexemu_common 10 | 11 | -------------------------------------------------------------------------------- /src/dsktool.rc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aladur/flexemu/f99f6c44cc6f779a4da5c1f53afd7142a9b7aea4/src/dsktool.rc -------------------------------------------------------------------------------- /src/efilesiz.h: -------------------------------------------------------------------------------- 1 | /* 2 | efilesiz.h 3 | 4 | flexemu, an MC6809 emulator running FLEX 5 | Copyright (C) 2023-2025 W. Schwotzer 6 | 7 | This program is free software; you can redistribute it and/or modify 8 | it under the terms of the GNU General Public License as published by 9 | the Free Software Foundation; either version 2 of the License, or 10 | any later version. 11 | 12 | This program is distributed in the hope that it will be useful, 13 | but WITHOUT ANY WARRANTY; without even the implied warranty of 14 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 15 | GNU General Public License for more details. 16 | 17 | You should have received a copy of the GNU General Public License 18 | along with this program; if not, write to the Free Software 19 | Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. 20 | */ 21 | 22 | #ifndef EFILESIZE_INCLUDED 23 | #define EFILESIZE_INCLUDED 24 | 25 | #include 26 | 27 | // There are differnt choices to handle the file size 28 | enum class FileSizeType : uint8_t 29 | { 30 | FileSize = 1, // File size base on multiples of sectorsize (= 256 B.) 31 | DataSize = 2, // File size base on multiples of sectorsize - 4 (= 252 B) 32 | }; 33 | 34 | #endif 35 | 36 | -------------------------------------------------------------------------------- /src/efslctle.h: -------------------------------------------------------------------------------- 1 | /* 2 | efslctle.h 3 | 4 | 5 | Flexemu, an MC6809 emulator running FLEX 6 | Copyright (C) 2020-2025 W. Schwotzer 7 | 8 | This program is free software; you can redistribute it and/or modify 9 | it under the terms of the GNU General Public License as published by 10 | the Free Software Foundation; either version 2 of the License, or 11 | any later version. 12 | 13 | This program is distributed in the hope that it will be useful, 14 | but WITHOUT ANY WARRANTY; without even the implied warranty of 15 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 16 | GNU General Public License for more details. 17 | 18 | You should have received a copy of the GNU General Public License 19 | along with this program; if not, write to the Free Software 20 | Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. 21 | */ 22 | 23 | 24 | #ifndef EFSLCTLE_INCLUDED 25 | #define EFSLCTLE_INCLUDED 26 | 27 | #include "warnoff.h" 28 | #include 29 | #include "warnon.h" 30 | 31 | 32 | class QEvent; 33 | class QLineEdit; 34 | 35 | class SelectAllOnFocusInLE : public QObject 36 | { 37 | Q_OBJECT 38 | 39 | public: 40 | SelectAllOnFocusInLE() = delete; 41 | explicit SelectAllOnFocusInLE(QLineEdit &p_widget, 42 | QObject *parent = Q_NULLPTR); 43 | 44 | protected: 45 | bool eventFilter(QObject *object, QEvent *event) override; 46 | void DoSelectAll(); 47 | 48 | private: 49 | QLineEdit &widget; 50 | }; 51 | #endif 52 | 53 | -------------------------------------------------------------------------------- /src/fattrib.cpp: -------------------------------------------------------------------------------- 1 | /* 2 | fattrib.cpp 3 | 4 | FLEXplorer, An explorer for FLEX disk image files and directory disks. 5 | Copyright (C) 2024-2025 W. Schwotzer 6 | 7 | This program is free software; you can redistribute it and/or modify 8 | it under the terms of the GNU General Public License as published by 9 | the Free Software Foundation; either version 2 of the License, or 10 | any later version. 11 | 12 | This program is distributed in the hope that it will be useful, 13 | but WITHOUT ANY WARRANTY; without even the implied warranty of 14 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 15 | GNU General Public License for more details. 16 | 17 | You should have received a copy of the GNU General Public License 18 | along with this program; if not, write to the Free Software 19 | Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. 20 | */ 21 | 22 | #include "fattrib.h" 23 | 24 | 25 | const AttributeCharToFlag_t &GetAttributeCharToFlag() 26 | { 27 | static const AttributeCharToFlag_t attributeCharToFlag 28 | {{ 29 | { 'W', WRITE_PROTECT }, 30 | { 'D', DELETE_PROTECT }, 31 | { 'R', READ_PROTECT }, 32 | { 'C', CATALOG_PROTECT }, 33 | }}; 34 | 35 | return attributeCharToFlag; 36 | } 37 | 38 | -------------------------------------------------------------------------------- /src/fattrib.h: -------------------------------------------------------------------------------- 1 | /* 2 | fattrib.h 3 | 4 | FLEXplorer, An explorer for FLEX disk image files and directory disks. 5 | Copyright (C) 2024-2025 W. Schwotzer 6 | 7 | This program is free software; you can redistribute it and/or modify 8 | it under the terms of the GNU General Public License as published by 9 | the Free Software Foundation; either version 2 of the License, or 10 | any later version. 11 | 12 | This program is distributed in the hope that it will be useful, 13 | but WITHOUT ANY WARRANTY; without even the implied warranty of 14 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 15 | GNU General Public License for more details. 16 | 17 | You should have received a copy of the GNU General Public License 18 | along with this program; if not, write to the Free Software 19 | Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. 20 | */ 21 | 22 | #ifndef FATTRIB_INCLUDED 23 | #define FATTRIB_INCLUDED 24 | 25 | #include 26 | #include 27 | 28 | 29 | // Supported file attributes. 30 | // They are used as bit masks and can be combined. 31 | // File attributes are used in struct s_dir_entry in field file_attr. 32 | // All other bits of file_attr should remain 0. 33 | // (WRITE_PROTECT also used as disk attribute) 34 | const unsigned WRITE_PROTECT = 0x80; 35 | const unsigned DELETE_PROTECT = 0x40; 36 | const unsigned READ_PROTECT = 0x20; 37 | const unsigned CATALOG_PROTECT = 0x10; 38 | const unsigned ALL_PROTECT = WRITE_PROTECT | DELETE_PROTECT | READ_PROTECT | 39 | CATALOG_PROTECT; 40 | 41 | using AttributeCharToFlag_t = std::array, 4>; 42 | extern const AttributeCharToFlag_t &GetAttributeCharToFlag(); 43 | 44 | #endif 45 | 46 | -------------------------------------------------------------------------------- /src/fcinfo.cpp: -------------------------------------------------------------------------------- 1 | /* 2 | fcinfo.cpp 3 | 4 | 5 | FLEXplorer, An explorer for FLEX disk image files and directory disks. 6 | Copyright (C) 1998-2025 W. Schwotzer 7 | 8 | This program is free software; you can redistribute it and/or modify 9 | it under the terms of the GNU General Public License as published by 10 | the Free Software Foundation; either version 2 of the License, or 11 | any later version. 12 | 13 | This program is distributed in the hope that it will be useful, 14 | but WITHOUT ANY WARRANTY; without even the implied warranty of 15 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 16 | GNU General Public License for more details. 17 | 18 | You should have received a copy of the GNU General Public License 19 | along with this program; if not, write to the Free Software 20 | Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. 21 | */ 22 | 23 | 24 | #include "fcinfo.h" 25 | #include "filecntb.h" 26 | #include 27 | 28 | 29 | std::string FlexDiskAttributes::GetTypeString() const 30 | { 31 | std::string str; 32 | 33 | switch (type) 34 | { 35 | case DiskType::DSK: 36 | str = "Disk image file, DSK format"; 37 | break; 38 | 39 | case DiskType::FLX: 40 | str = "Disk image file, FLX format"; 41 | break; 42 | 43 | case DiskType::Directory: 44 | str = "directory"; 45 | break; 46 | 47 | default: 48 | str = "Unknown type"; 49 | break; 50 | } 51 | 52 | return str; 53 | } 54 | 55 | -------------------------------------------------------------------------------- /src/fcopyman.h: -------------------------------------------------------------------------------- 1 | /* 2 | fcopyman.h 3 | 4 | 5 | FLEXplorer, An explorer for FLEX disk image files and directory disks. 6 | Copyright (C) 1998-2025 W. Schwotzer 7 | 8 | This program is free software; you can redistribute it and/or modify 9 | it under the terms of the GNU General Public License as published by 10 | the Free Software Foundation; either version 2 of the License, or 11 | any later version. 12 | 13 | This program is distributed in the hope that it will be useful, 14 | but WITHOUT ANY WARRANTY; without even the implied warranty of 15 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 16 | GNU General Public License for more details. 17 | 18 | You should have received a copy of the GNU General Public License 19 | along with this program; if not, write to the Free Software 20 | Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. 21 | */ 22 | 23 | #ifndef FCOPYMAN_INCLUDED 24 | #define FCOPYMAN_INCLUDED 25 | 26 | #include 27 | 28 | class IFlexDiskByFile; 29 | 30 | 31 | class FlexCopyManager 32 | { 33 | public: 34 | static bool FileCopy(const std::string &sourcName, 35 | const std::string &destName, 36 | IFlexDiskByFile &src, IFlexDiskByFile &dst); 37 | static bool autoTextConversion; 38 | }; 39 | 40 | #endif // FCOPYMAN_INCLUDED 41 | 42 | -------------------------------------------------------------------------------- /src/fdoptman.h: -------------------------------------------------------------------------------- 1 | /* 2 | fdoptman.h 3 | 4 | 5 | flexemu, an MC6809 emulator running FLEX 6 | Copyright (C) 2024-2025 W. Schwotzer 7 | 8 | This program is free software; you can redistribute it and/or modify 9 | it under the terms of the GNU General Public License as published by 10 | the Free Software Foundation; either version 2 of the License, or 11 | any later version. 12 | 13 | This program is distributed in the hope that it will be useful, 14 | but WITHOUT ANY WARRANTY; without even the implied warranty of 15 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 16 | GNU General Public License for more details. 17 | 18 | You should have received a copy of the GNU General Public License 19 | along with this program; if not, write to the Free Software 20 | Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. 21 | */ 22 | 23 | #ifndef FDOPTMAN_INCLUDED 24 | #define FDOPTMAN_INCLUDED 25 | 26 | #include 27 | #include 28 | 29 | namespace fs = std::filesystem; 30 | 31 | 32 | class FlexDirectoryDiskOptions 33 | { 34 | public: 35 | FlexDirectoryDiskOptions() = delete; 36 | explicit FlexDirectoryDiskOptions(const fs::path &directory); 37 | bool Read(); 38 | bool Write(bool onlyIfNotExists); 39 | int GetTracks() const; 40 | int GetSectors() const; 41 | void SetTracks(int tracks); 42 | void SetSectors(int sectors); 43 | 44 | private: 45 | static const std::string &GetRcFilename(); 46 | 47 | fs::path path; 48 | int tracks; 49 | int sectors; 50 | }; 51 | 52 | #endif // FOPTMAN_INCLUDED 53 | 54 | -------------------------------------------------------------------------------- /src/flblfile.h: -------------------------------------------------------------------------------- 1 | /* 2 | flblfile.h 3 | 4 | 5 | flexemu, an MC6809 emulator running FLEX 6 | Copyright (C) 2024-2025 W. Schwotzer 7 | 8 | This program is free software; you can redistribute it and/or modify 9 | it under the terms of the GNU General Public License as published by 10 | the Free Software Foundation; either version 2 of the License, or 11 | any later version. 12 | 13 | This program is distributed in the hope that it will be useful, 14 | but WITHOUT ANY WARRANTY; without even the implied warranty of 15 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 16 | GNU General Public License for more details. 17 | 18 | You should have received a copy of the GNU General Public License 19 | along with this program; if not, write to the Free Software 20 | Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. 21 | */ 22 | 23 | #ifndef FLBLFILE_INCLUDED 24 | #define FLBLFILE_INCLUDED 25 | 26 | #include 27 | #include 28 | #include 29 | #include 30 | 31 | namespace fs = std::filesystem; 32 | 33 | 34 | class FlexLabelFile 35 | { 36 | public: 37 | static std::map ReadFile( 38 | std::ostream &os, 39 | const fs::path &path, 40 | const std::string §ion); 41 | }; 42 | 43 | #endif 44 | 45 | -------------------------------------------------------------------------------- /src/flex2hex.rc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aladur/flexemu/f99f6c44cc6f779a4da5c1f53afd7142a9b7aea4/src/flex2hex.rc -------------------------------------------------------------------------------- /src/flexdisk.rc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aladur/flexemu/f99f6c44cc6f779a4da5c1f53afd7142a9b7aea4/src/flexdisk.rc -------------------------------------------------------------------------------- /src/flexemu-flexplorer.desktop: -------------------------------------------------------------------------------- 1 | [Desktop Entry] 2 | Version=1.0 3 | Type=Application 4 | MimeType=application/x-flex-diskimage;application/x-flex-flxdiskimage 5 | Name=FLEXplorer 6 | Exec=flexplorer %F 7 | Icon=flexemu-flexplorer 8 | Comment=Explore FLEX Disk Images 9 | Categories=GTK;GNOME;System;Emulator 10 | Keywords=MC6809;Emulator;FLEX;File-explorer;Diskimage 11 | -------------------------------------------------------------------------------- /src/flexemu-gdb.py: -------------------------------------------------------------------------------- 1 | from pathlib import Path 2 | import os.path 3 | import sys 4 | 5 | # Add python subdirectory to module search path 6 | path_root = os.path.join(Path(__file__).parents[1], "python"); 7 | sys.path.append(str(path_root)) 8 | 9 | import flexemu_common 10 | 11 | -------------------------------------------------------------------------------- /src/flexemu.astyle: -------------------------------------------------------------------------------- 1 | # astyle V2.05 is needed 2 | --indent=spaces=4 3 | --convert-tabs 4 | --style=ansi 5 | --break-blocks 6 | --pad-oper 7 | --pad-header 8 | --unpad-paren 9 | --indent-switches 10 | --indent-namespaces 11 | --indent-preproc-block 12 | --indent-preproc-define 13 | --indent-col1-comments 14 | --min-conditional-indent=0 15 | --max-instatement-indent=40 16 | --align-pointer=name 17 | --break-closing-brackets 18 | --add-brackets 19 | --max-code-length=80 20 | --break-after-logical 21 | --suffix=none 22 | --preserve-date 23 | --lineend=linux 24 | 25 | -------------------------------------------------------------------------------- /src/flexemu.desktop: -------------------------------------------------------------------------------- 1 | [Desktop Entry] 2 | Version=1.0 3 | Type=Application 4 | Name=flexemu 5 | Exec=flexemu 6 | Icon=flexemu 7 | Comment=An MC6809 emulator running FLEX 8 | Categories=GTK;GNOME;System;Emulator 9 | Keywords=MC6809;Emulator;FLEX 10 | -------------------------------------------------------------------------------- /src/flexemu.h: -------------------------------------------------------------------------------- 1 | /* 2 | flexemu.h 3 | 4 | 5 | flexemu, an MC6809 emulator running FLEX 6 | Copyright (C) 1997-2025 W. Schwotzer 7 | 8 | This program is free software; you can redistribute it and/or modify 9 | it under the terms of the GNU General Public License as published by 10 | the Free Software Foundation; either version 2 of the License, or 11 | any later version. 12 | 13 | This program is distributed in the hope that it will be useful, 14 | but WITHOUT ANY WARRANTY; without even the implied warranty of 15 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 16 | GNU General Public License for more details. 17 | 18 | You should have received a copy of the GNU General Public License 19 | along with this program; if not, write to the Free Software 20 | Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. 21 | */ 22 | 23 | 24 | /*************************************************** 25 | * specifying video display geometry of Eurocom II * 26 | **************************************************** 27 | 28 | only the first three values should be adapted 29 | the other values depend on them 30 | */ 31 | 32 | #ifndef FLEXEMU_INCLUDED 33 | #define FLEXEMU_INCLUDED 34 | 35 | #include 36 | 37 | 38 | enum class DiskStatus : uint8_t 39 | { 40 | EMPTY, 41 | INACTIVE, 42 | ACTIVE 43 | }; 44 | #endif 45 | 46 | -------------------------------------------------------------------------------- /src/flexemu.rc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aladur/flexemu/f99f6c44cc6f779a4da5c1f53afd7142a9b7aea4/src/flexemu.rc -------------------------------------------------------------------------------- /src/flexemu.vcxproj.user: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | -------------------------------------------------------------------------------- /src/flexemu.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | FLEX disk image 5 | 6 | 7 | 8 | 9 | 10 | FLEX disk image 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | -------------------------------------------------------------------------------- /src/flexlabl.conf: -------------------------------------------------------------------------------- 1 | ; Define labels to be used in the MC6809 disassembler. 2 | ; 3 | [LABELS] 4 | ; FLEX DOS labels 5 | CD00=COLDS 6 | CD03=WARMS 7 | CD06=RENTER 8 | CD09=INCH 9 | CD0C=INCH2 10 | CD0F=OUTCH 11 | CD12=OUTCH2 12 | CD15=GETCHR 13 | CD18=PUTCHR 14 | CD1B=INBUFF 15 | CD1E=PSTRNG 16 | CD21=CLASS 17 | CD24=PCRLF 18 | CD27=NXTCH 19 | CD2A=RSTRIO 20 | CD2D=GETFIL 21 | CD30=LOAD 22 | CD33=SETEXT 23 | CD36=ADDBX 24 | CD39=OUTDEC 25 | CD3C=OUTHEX 26 | CD3F=RPTERR 27 | CD42=GETHEX 28 | CD45=OUTADR 29 | CD4B=DOCMND 30 | CD4E=STAT 31 | ; FLEX FMS labels 32 | D400=FMSINI ; FMS init 33 | D403=FMSCLS ; FMS close 34 | D406=FMS 35 | C840=FCB ; standard system FCB 36 | ; miscellaneous 37 | D435=VFYFLG ; FMS verify flag 38 | C080=LINBUF ; line buffer 39 | CC00=TTYBS 40 | CC01=TTYDEL 41 | CC02=TTYEOL 42 | CC03=TTYDPT 43 | CC04=TTYWDT 44 | CC11=TTYTRM 45 | CC12=COMTBL ; user command table 46 | CC14=LINBFP ; line buffer pointer 47 | CC16=ESCRET ; escape return register 48 | CC18=LINCHR ; current char in linebuffer 49 | CC19=LINPCH ; previous char in linebuffer 50 | CC1A=LINENR ; line nr of current page 51 | CC1B=LODOFS ; loader address offset 52 | CC1D=TFRFLG ; loader transfer flag 53 | CC1E=TFRADR ; transfer address 54 | CC20=FMSERR ; FMS error type 55 | CC21=IOFLG ; special I/O flag 56 | CC22=OUTSWT ; output switch 57 | CC23=INSWT ; input switch 58 | CC24=OUTADR ; file output address 59 | CC26=INADR ; file input address 60 | CC28=COMFLG ; command flag 61 | CC29=OUTCOL ; current output column 62 | CC2A=SCRATC ; system scratch 63 | CC2B=MEMEND ; memory end 64 | CC2D=ERRVEC ; error name vector 65 | CC2F=INECHO ; file input echo flag 66 | ; Printer support 67 | CCC0=PRTINI ; printer initialize 68 | CCD8=PRTCHK ; printer check 69 | CCE4=PRTOUT ; printer output 70 | -------------------------------------------------------------------------------- /src/flexplorer-gdb.py: -------------------------------------------------------------------------------- 1 | from pathlib import Path 2 | import os.path 3 | import sys 4 | 5 | # Add python subdirectory to module search path 6 | path_root = os.path.join(Path(__file__).parents[1], "python"); 7 | sys.path.append(str(path_root)) 8 | 9 | import flexemu_common 10 | 11 | -------------------------------------------------------------------------------- /src/flexplorer.vcxproj.user: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | -------------------------------------------------------------------------------- /src/fpattrui.cpp: -------------------------------------------------------------------------------- 1 | /* 2 | fpattrui.cpp 3 | 4 | 5 | FLEXplorer, An explorer for FLEX disk image files and directory disks. 6 | Copyright (C) 2024-2025 W. Schwotzer 7 | 8 | This program is free software; you can redistribute it and/or modify 9 | it under the terms of the GNU General Public License as published by 10 | the Free Software Foundation; either version 2 of the License, or 11 | any later version. 12 | 13 | This program is distributed in the hope that it will be useful, 14 | but WITHOUT ANY WARRANTY; without even the implied warranty of 15 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 16 | GNU General Public License for more details. 17 | 18 | You should have received a copy of the GNU General Public License 19 | along with this program; if not, write to the Free Software 20 | Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. 21 | */ 22 | 23 | 24 | #include "fpattrui.h" 25 | 26 | const FileAttributesUi::AttributeLabels_t 27 | &FileAttributesUi::GetAttributeLabels() 28 | { 29 | static const FileAttributesUi::AttributeLabels_t attributeLabels = 30 | { 31 | "&Write Protect", 32 | "&Delete Protect", 33 | "&Read Protect", 34 | "&Catalog Protect", 35 | }; 36 | 37 | return attributeLabels; 38 | }; 39 | 40 | 41 | -------------------------------------------------------------------------------- /src/fpoptman.h: -------------------------------------------------------------------------------- 1 | /* 2 | fpoptman.h 3 | 4 | 5 | flexemu, an MC6809 emulator running FLEX 6 | Copyright (C) 2022-2025 W. Schwotzer 7 | 8 | This program is free software; you can redistribute it and/or modify 9 | it under the terms of the GNU General Public License as published by 10 | the Free Software Foundation; either version 2 of the License, or 11 | any later version. 12 | 13 | This program is distributed in the hope that it will be useful, 14 | but WITHOUT ANY WARRANTY; without even the implied warranty of 15 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 16 | GNU General Public License for more details. 17 | 18 | You should have received a copy of the GNU General Public License 19 | along with this program; if not, write to the Free Software 20 | Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. 21 | */ 22 | 23 | #ifndef FPOPTMAN_INCLUDED 24 | #define FPOPTMAN_INCLUDED 25 | 26 | #include "sfpopts.h" 27 | 28 | 29 | class FlexplorerOptions 30 | { 31 | public: 32 | static void InitOptions(struct sFPOptions &options); 33 | static void ReadOptions(struct sFPOptions &options); 34 | static void WriteOptions(const struct sFPOptions &options); 35 | }; 36 | 37 | #endif // FPOPTMAN_INCLUDED 38 | 39 | -------------------------------------------------------------------------------- /src/fversion.h: -------------------------------------------------------------------------------- 1 | /* 2 | fversion.h 3 | 4 | 5 | flexemu, an MC6809 emulator running FLEX 6 | Copyright (C) 2024-2025 W. Schwotzer 7 | 8 | This program is free software; you can redistribute it and/or modify 9 | it under the terms of the GNU General Public License as published by 10 | the Free Software Foundation; either version 2 of the License, or 11 | any later version. 12 | 13 | This program is distributed in the hope that it will be useful, 14 | but WITHOUT ANY WARRANTY; without even the implied warranty of 15 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 16 | GNU General Public License for more details. 17 | 18 | You should have received a copy of the GNU General Public License 19 | along with this program; if not, write to the Free Software 20 | Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. 21 | */ 22 | 23 | 24 | #ifndef FLEXEMUVERSIONS_INCLUDED 25 | #define FLEXEMUVERSIONS_INCLUDED 26 | 27 | #include "free.h" 28 | 29 | 30 | class FlexemuVersions 31 | { 32 | public: 33 | static ItemPairList_t GetVersions(); 34 | 35 | private: 36 | static ItemPairList_t CreateVersions(); 37 | }; 38 | #endif 39 | -------------------------------------------------------------------------------- /src/joystick.h: -------------------------------------------------------------------------------- 1 | /* 2 | joystick.h 3 | 4 | 5 | flexemu, an MC6809 emulator running FLEX 6 | Copyright (C) 2018-2025 W. Schwotzer 7 | 8 | This program is free software; you can redistribute it and/or modify 9 | it under the terms of the GNU General Public License as published by 10 | the Free Software Foundation; either version 2 of the License, or 11 | any later version. 12 | 13 | This program is distributed in the hope that it will be useful, 14 | but WITHOUT ANY WARRANTY; without even the implied warranty of 15 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 16 | GNU General Public License for more details. 17 | 18 | You should have received a copy of the GNU General Public License 19 | along with this program; if not, write to the Free Software 20 | Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. 21 | */ 22 | 23 | 24 | 25 | #ifndef JOYSTICK_INCLUDED 26 | #define JOYSTICK_INCLUDED 27 | 28 | 29 | #include 30 | 31 | // Button mask for left, middle and right button 32 | const unsigned L_MB{4U}; 33 | const unsigned M_MB{2U}; 34 | const unsigned R_MB{1U}; 35 | 36 | class JoystickIO 37 | { 38 | public: 39 | JoystickIO(); 40 | 41 | void reset(); 42 | bool get_values(int *p_deltaX, int *p_deltaY, unsigned int *p_buttonMask); 43 | void put_values(int p_deltaX, int p_deltaY); 44 | void put_value(unsigned int p_buttonMask); 45 | 46 | private: 47 | int deltaX{0}; 48 | int deltaY{0}; 49 | unsigned int buttonMask{0}; 50 | bool newValues{false}; 51 | std::mutex joystick_mutex; 52 | }; 53 | 54 | #endif 55 | 56 | -------------------------------------------------------------------------------- /src/mc6809st.cpp: -------------------------------------------------------------------------------- 1 | /* 2 | mc6809st.cpp 3 | 4 | 5 | flexemu, an MC6809 emulator running FLEX 6 | Copyright (C) 1997-2025 W. Schwotzer 7 | 8 | This program is free software; you can redistribute it and/or modify 9 | it under the terms of the GNU General Public License as published by 10 | the Free Software Foundation; either version 2 of the License, or 11 | any later version. 12 | 13 | This program is distributed in the hope that it will be useful, 14 | but WITHOUT ANY WARRANTY; without even the implied warranty of 15 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 16 | GNU General Public License for more details. 17 | 18 | You should have received a copy of the GNU General Public License 19 | along with this program; if not, write to the Free Software 20 | Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. 21 | */ 22 | 23 | 24 | #include "mc6809st.h" 25 | #include 26 | 27 | 28 | Mc6809CpuStatus &Mc6809CpuStatus::operator=(const Mc6809CpuStatus &lhs) 29 | { 30 | if (this == &lhs) 31 | { 32 | return *this; 33 | } 34 | 35 | total_cycles = lhs.total_cycles; 36 | a = lhs.a; 37 | b = lhs.b; 38 | cc = lhs.cc; 39 | dp = lhs.dp; 40 | pc = lhs.pc; 41 | s = lhs.s; 42 | u = lhs.u; 43 | x = lhs.x; 44 | y = lhs.y; 45 | state = lhs.state; 46 | insn_size = lhs.insn_size; 47 | std::memcpy(instruction, lhs.instruction, sizeof(instruction)); 48 | std::memcpy(mnemonic, lhs.mnemonic, sizeof(mnemonic)); 49 | std::memcpy(operands, lhs.operands, sizeof(operands)); 50 | std::memcpy(memory, lhs.memory, sizeof(memory)); 51 | return *this; 52 | } 53 | 54 | -------------------------------------------------------------------------------- /src/mdcrtool.rc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aladur/flexemu/f99f6c44cc6f779a4da5c1f53afd7142a9b7aea4/src/mdcrtool.rc -------------------------------------------------------------------------------- /src/mdcrtool.vcxproj.user: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | -------------------------------------------------------------------------------- /src/memsrc.h: -------------------------------------------------------------------------------- 1 | /* 2 | memsrc.h 3 | 4 | 5 | flexemu, an MC6809 emulator running FLEX 6 | Copyright (C) 2018-2025 W. Schwotzer 7 | 8 | This program is free software; you can redistribute it and/or modify 9 | it under the terms of the GNU General Public License as published by 10 | the Free Software Foundation; either version 2 of the License, or 11 | any later version. 12 | 13 | This program is distributed in the hope that it will be useful, 14 | but WITHOUT ANY WARRANTY; without even the implied warranty of 15 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 16 | GNU General Public License for more details. 17 | 18 | You should have received a copy of the GNU General Public License 19 | along with this program; if not, write to the Free Software 20 | Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. 21 | */ 22 | 23 | 24 | 25 | #ifndef MEMSRC_INCLUDED 26 | #define MEMSRC_INCLUDED 27 | 28 | #include "typedefs.h" 29 | #include "bintervl.h" 30 | #include 31 | 32 | 33 | 34 | template 35 | class MemorySource 36 | { 37 | public: 38 | using AddressRange = BInterval; 39 | using AddressRanges = std::vector; 40 | 41 | virtual const AddressRanges& GetAddressRanges() const = 0; 42 | virtual void CopyTo(Byte *target, T address, T size) const = 0; 43 | virtual ~MemorySource() = default; 44 | }; 45 | #endif 46 | 47 | -------------------------------------------------------------------------------- /src/memtgt.h: -------------------------------------------------------------------------------- 1 | /* 2 | memtgt.h 3 | 4 | 5 | flexemu, an MC6809 emulator running FLEX 6 | Copyright (C) 2018-2025 W. Schwotzer 7 | 8 | This program is free software; you can redistribute it and/or modify 9 | it under the terms of the GNU General Public License as published by 10 | the Free Software Foundation; either version 2 of the License, or 11 | any later version. 12 | 13 | This program is distributed in the hope that it will be useful, 14 | but WITHOUT ANY WARRANTY; without even the implied warranty of 15 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 16 | GNU General Public License for more details. 17 | 18 | You should have received a copy of the GNU General Public License 19 | along with this program; if not, write to the Free Software 20 | Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. 21 | */ 22 | 23 | 24 | 25 | #ifndef MEMTGT_INCLUDED 26 | #define MEMTGT_INCLUDED 27 | 28 | #include "typedefs.h" 29 | 30 | 31 | template 32 | class MemoryTarget 33 | { 34 | public: 35 | virtual void CopyFrom(const Byte *source, T address, T size) = 0; 36 | virtual ~MemoryTarget() = default; 37 | }; 38 | #endif 39 | 40 | -------------------------------------------------------------------------------- /src/metadata.json: -------------------------------------------------------------------------------- 1 | { 2 | "linesOfCode": 3 | { 4 | "src": 5 | { 6 | "cheader": 9962, 7 | "cpp": 37044, 8 | "cppsum": 47006 9 | } 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /src/mmu.cpp: -------------------------------------------------------------------------------- 1 | /* 2 | mmu.cpp 3 | 4 | 5 | flexemu, an MC6809 emulator running FLEX 6 | Copyright (C) 1997-2025 W. Schwotzer 7 | 8 | This program is free software; you can redistribute it and/or modify 9 | it under the terms of the GNU General Public License as published by 10 | the Free Software Foundation; either version 2 of the License, or 11 | any later version. 12 | 13 | This program is distributed in the hope that it will be useful, 14 | but WITHOUT ANY WARRANTY; without even the implied warranty of 15 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 16 | GNU General Public License for more details. 17 | 18 | You should have received a copy of the GNU General Public License 19 | along with this program; if not, write to the Free Software 20 | Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. 21 | */ 22 | 23 | 24 | #include "typedefs.h" 25 | #include "mmu.h" 26 | #include "memory.h" 27 | 28 | Mmu::Mmu(Memory &p_memory) : memory(p_memory) 29 | { 30 | } 31 | 32 | void Mmu::resetIo() 33 | { 34 | } 35 | 36 | 37 | 38 | Byte Mmu::readIo(Word /*offset*/) 39 | { 40 | return 0xff; 41 | } 42 | 43 | void Mmu::writeIo(Word offset, Byte value) 44 | { 45 | memory.switch_mmu(offset, value); 46 | } 47 | 48 | -------------------------------------------------------------------------------- /src/msvcQtPath.props.in: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | QTDIRPLACEHOLDER 6 | QTVERSIONPLACEHOLDER 7 | QTMAJORPLACEHOLDER 8 | 9 | 10 | 11 | 12 | 13 | $(QTDIR) 14 | 15 | 16 | $(QTVERSION) 17 | 18 | 19 | $(QTMAJOR) 20 | 21 | 22 | -------------------------------------------------------------------------------- /src/options.txt: -------------------------------------------------------------------------------- 1 | # define cloc options for this directory 2 | # cloc source: https://github.com/AlDanial/cloc.git 3 | # ignore generated files. 4 | 5 | --not-match-f="^([a-z][a-z0-9]*_(moc\.cpp|qrc\.cpp|ui\.h)|config\.h|bitfield.cpp)$" 6 | -------------------------------------------------------------------------------- /src/ostype.h: -------------------------------------------------------------------------------- 1 | /* 2 | ostype.h 3 | 4 | 5 | flexemu, an MC6809 emulator running FLEX 6 | Copyright (C) 2025 W. Schwotzer 7 | 8 | This program is free software; you can redistribute it and/or modify 9 | it under the terms of the GNU General Public License as published by 10 | the Free Software Foundation; either version 2 of the License, or 11 | any later version. 12 | 13 | This program is distributed in the hope that it will be useful, 14 | but WITHOUT ANY WARRANTY; without even the implied warranty of 15 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 16 | GNU General Public License for more details. 17 | 18 | You should have received a copy of the GNU General Public License 19 | along with this program; if not, write to the Free Software 20 | Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. 21 | */ 22 | 23 | 24 | 25 | #ifndef OSTYPE_INCLUDED 26 | #define OSTYPE_INCLUDED 27 | 28 | /* Keep macro to be used within string literal. */ 29 | /* NOLINTBEGIN(cppcoreguidelines-macro-usage) */ 30 | #ifdef __linux__ 31 | #define OSTYPE "Linux" 32 | #else 33 | #ifdef __FreeBSD__ 34 | #define OSTYPE "FreeBSD" 35 | #else 36 | #ifdef __OpenBSD__ 37 | #define OSTYPE "OpenBSD" 38 | #else 39 | #ifdef __NetBSD__ 40 | #define OSTYPE "NetBSD" 41 | #else 42 | #ifdef __BSD__ 43 | #define OSTYPE "BSD" 44 | #else 45 | #ifdef _WIN32 46 | #define OSTYPE "Windows" 47 | #else 48 | #ifdef __APPLE__ 49 | #define OSTYPE "MacOS" 50 | #else 51 | #define OSTYPE "unknown" 52 | #endif 53 | #endif 54 | #endif 55 | #endif 56 | #endif 57 | #endif 58 | #endif 59 | /* NOLINTEND(cppcoreguidelines-macro-usage) */ 60 | 61 | #endif 62 | -------------------------------------------------------------------------------- /src/pch.cpp: -------------------------------------------------------------------------------- 1 | /* 2 | pch.cpp: Precompiled header support 3 | 4 | 5 | Basic class used for directory functions 6 | Copyright (C) 1999-2025 W. Schwotzer 7 | 8 | This program is free software; you can redistribute it and/or modify 9 | it under the terms of the GNU General Public License as published by 10 | the Free Software Foundation; either version 2 of the License, or 11 | any later version. 12 | 13 | This program is distributed in the hope that it will be useful, 14 | but WITHOUT ANY WARRANTY; without even the implied warranty of 15 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 16 | GNU General Public License for more details. 17 | 18 | You should have received a copy of the GNU General Public License 19 | along with this program; if not, write to the Free Software 20 | Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. 21 | */ 22 | 23 | #include "pch.h" 24 | -------------------------------------------------------------------------------- /src/pch.h: -------------------------------------------------------------------------------- 1 | /* 2 | pch.h 3 | 4 | 5 | flexemu, an MC6809 emulator running FLEX 6 | Copyright (C) 2021-2025 W. Schwotzer 7 | 8 | This program is free software; you can redistribute it and/or modify 9 | it under the terms of the GNU General Public License as published by 10 | the Free Software Foundation; either version 2 of the License, or 11 | any later version. 12 | 13 | This program is distributed in the hope that it will be useful, 14 | but WITHOUT ANY WARRANTY; without even the implied warranty of 15 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 16 | GNU General Public License for more details. 17 | 18 | You should have received a copy of the GNU General Public License 19 | along with this program; if not, write to the Free Software 20 | Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. 21 | */ 22 | 23 | 24 | #ifndef PCH_INCLUDED 25 | #define PCH_INCLUDED 26 | 27 | #include 28 | #include 29 | #include 30 | #include 31 | #include 32 | #include 33 | #include 34 | #include 35 | #include 36 | #include 37 | #include 38 | #include 39 | #include 40 | #include 41 | #include 42 | #include 43 | #include 44 | #include 45 | #include 46 | #include 47 | #include 48 | #include 49 | #include 50 | 51 | #endif 52 | 53 | -------------------------------------------------------------------------------- /src/sodiff.h: -------------------------------------------------------------------------------- 1 | /* 2 | sodiff.h 3 | 4 | 5 | flexemu, an MC6809 emulator running FLEX 6 | Copyright (C) 2021-2025 W. Schwotzer 7 | 8 | This program is free software; you can redistribute it and/or modify 9 | it under the terms of the GNU General Public License as published by 10 | the Free Software Foundation; either version 2 of the License, or 11 | any later version. 12 | 13 | This program is distributed in the hope that it will be useful, 14 | but WITHOUT ANY WARRANTY; without even the implied warranty of 15 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 16 | GNU General Public License for more details. 17 | 18 | You should have received a copy of the GNU General Public License 19 | along with this program; if not, write to the Free Software 20 | Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. 21 | */ 22 | 23 | 24 | 25 | #ifndef SODIFF_INCLUDED 26 | #define SODIFF_INCLUDED 27 | 28 | #include "soptions.h" 29 | 30 | class FlexemuOptionsDifference 31 | { 32 | public: 33 | using Result = std::vector; 34 | 35 | FlexemuOptionsDifference() = delete; 36 | FlexemuOptionsDifference(const sOptions &opt1, const sOptions &opt2); 37 | 38 | const Result& GetNotEquals() const; 39 | 40 | private: 41 | Result notEquals; 42 | }; 43 | 44 | extern bool IsRestartNeeded(const FlexemuOptionsDifference &optionsDiff); 45 | #endif 46 | -------------------------------------------------------------------------------- /src/termimpf.h: -------------------------------------------------------------------------------- 1 | /* 2 | termimpf.h 3 | 4 | 5 | flexemu, an MC6809 emulator running FLEX 6 | Copyright (C) 2024-2025 W. Schwotzer 7 | 8 | This program is free software; you can redistribute it and/or modify 9 | it under the terms of the GNU General Public License as published by 10 | the Free Software Foundation; either version 2 of the License, or 11 | any later version. 12 | 13 | This program is distributed in the hope that it will be useful, 14 | but WITHOUT ANY WARRANTY; without even the implied warranty of 15 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 16 | GNU General Public License for more details. 17 | 18 | You should have received a copy of the GNU General Public License 19 | along with this program; if not, write to the Free Software 20 | Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. 21 | */ 22 | 23 | 24 | #ifndef TERMINALIMPLFACTORY_INCLUDED 25 | #define TERMINALIMPLFACTORY_INCLUDED 26 | 27 | #include "termimpi.h" 28 | 29 | enum class TerminalType : uint8_t 30 | { 31 | Dummy, 32 | Scrolling, 33 | NCurses, 34 | }; 35 | 36 | struct sOptions; 37 | 38 | class TerminalImplFactory 39 | { 40 | public: 41 | static ITerminalImplPtr Create(TerminalType type, const sOptions &options); 42 | static TerminalType GetType(int value); 43 | }; 44 | #endif 45 | -------------------------------------------------------------------------------- /src/tools/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | if(UNIX) 2 | ################################# 3 | # Common declarations. 4 | ################################# 5 | 6 | # Specify C standard. 7 | set(CMAKE_C_STANDARD 99) 8 | set(CMAKE_C_STANDARD_REQUIRED ON) 9 | set(CMAKE_C_EXTENSIONS OFF) 10 | 11 | # Enable compiler warnings 12 | add_compile_options( 13 | -Wall 14 | -Wextra 15 | -Wpedantic 16 | -Wshadow 17 | ) 18 | 19 | ################################# 20 | # Find libraries. 21 | ################################# 22 | 23 | set(THREADS_PREFER_PTHREAD_FLAG TRUE) 24 | find_package(Threads REQUIRED) 25 | link_libraries(Threads::Threads) 26 | include_directories(${CMAKE_BINARY_DIR}/src) 27 | add_compile_definitions( 28 | UNIX 29 | USE_CMAKE 30 | ) 31 | 32 | ################################# 33 | # Build executables. 34 | ################################# 35 | 36 | add_executable(bin2s19 bin2s19.c) 37 | add_executable(fromflex fromflex.c) 38 | add_executable(rcvflex rcvflex.c typedefs.h) 39 | add_executable(toflex toflex.c) 40 | add_executable(send2flx send2flx.c) 41 | add_executable(testdaa testdaa.c) 42 | 43 | install(TARGETS bin2s19 fromflex toflex) 44 | endif() 45 | -------------------------------------------------------------------------------- /src/tools/Makefile.am: -------------------------------------------------------------------------------- 1 | EXTRA_DIST = \ 2 | conv.c \ 3 | cputest.txt \ 4 | daa.txt \ 5 | rcvfile.txt \ 6 | tounix.txt \ 7 | undoc.txt 8 | 9 | bin_PROGRAMS = \ 10 | bin2s19 \ 11 | fromflex \ 12 | toflex 13 | 14 | noinst_PROGRAMS = \ 15 | rcvflex \ 16 | send2flx \ 17 | testdaa 18 | 19 | AM_CFLAGS = @OS_TYPE@ -I.. 20 | 21 | bin2s19_LINK = $(CCLD) -o $@ 22 | fromflex_LINK = $(CCLD) -o $@ 23 | rcvflex_LINK = $(CCLD) -o $@ 24 | toflex_LINK = $(CCLD) -o $@ 25 | send2flx_LINK = $(CCLD) -o $@ 26 | testdaa_LINK = $(CCLD) -o $@ 27 | 28 | bin2s19_SOURCES = bin2s19.c 29 | fromflex_SOURCES = fromflex.c 30 | rcvflex_SOURCES = rcvflex.c typedefs.h 31 | toflex_SOURCES = toflex.c 32 | send2flx_SOURCES = send2flx.c 33 | testdaa_SOURCES = testdaa.c 34 | 35 | -------------------------------------------------------------------------------- /src/tools/conv.c: -------------------------------------------------------------------------------- 1 | /* conv.c 2 | 3 | simple program for doing some fileformatconversions. 4 | */ 5 | 6 | 7 | #include 8 | 9 | FILE *fp1, *fp2; 10 | char buffer[16]; 11 | int ch; 12 | 13 | void error(void) 14 | { 15 | fprintf(stderr, "error\n"); 16 | exit(1); 17 | } 18 | 19 | 20 | main(int argc, char *argv[]) 21 | { 22 | if (argc != 3) 23 | error(); 24 | fp1 = fopen(argv[1], "r"); 25 | if (!fp1) 26 | error(); 27 | fp2 = fopen(argv[2], "w"); 28 | if (!fp2) 29 | error(); 30 | fputc(0x33, fp2); 31 | fputc(0x9a, fp2); 32 | fputc(0x5c, fp2); 33 | fputc(0x48, fp2); 34 | fputc(0x00, fp2); 35 | fread((char *)&buffer, 6, 1, fp1); 36 | fwrite((char *)buffer, 6, 1, fp2); 37 | fputc('\0', fp2); 38 | fputc('\0', fp2); 39 | fputc('\0', fp2); 40 | fputc('\0', fp2); 41 | fputc('\0', fp2); 42 | ch = fgetc(fp1); 43 | while (ch != EOF) { 44 | fputc(ch, fp2); 45 | ch = fgetc(fp1); 46 | }; 47 | fclose(fp1); 48 | fclose(fp2); 49 | } /* main */ 50 | 51 | -------------------------------------------------------------------------------- /src/tstdev.cpp: -------------------------------------------------------------------------------- 1 | /* 2 | tstdev.cpp 3 | 4 | 5 | flexemu, an MC6809 emulator running FLEX 6 | Copyright (C) 2025 W. Schwotzer 7 | 8 | This program is free software; you can redistribute it and/or modify 9 | it under the terms of the GNU General Public License as published by 10 | the Free Software Foundation; either version 2 of the License, or 11 | any later version. 12 | 13 | This program is distributed in the hope that it will be useful, 14 | but WITHOUT ANY WARRANTY; without even the implied warranty of 15 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 16 | GNU General Public License for more details. 17 | 18 | You should have received a copy of the GNU General Public License 19 | along with this program; if not, write to the Free Software 20 | Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. 21 | */ 22 | 23 | 24 | #include "typedefs.h" 25 | #include "tstdev.h" 26 | 27 | TestDevice::TestDevice(Word byte_size) : 28 | data(byte_size, '\0') 29 | { 30 | } 31 | 32 | void TestDevice::resetIo() 33 | { 34 | } 35 | 36 | Byte TestDevice::readIo(Word offset) 37 | { 38 | if (offset < data.size()) 39 | { 40 | return data[offset]; 41 | } 42 | 43 | return '\0'; // default, should never be used! 44 | } 45 | 46 | 47 | void TestDevice::writeIo(Word offset, Byte value) 48 | { 49 | if (offset < data.size()) 50 | { 51 | data[offset] = value; 52 | } 53 | } 54 | 55 | Word TestDevice::sizeOfIo() 56 | { 57 | return static_cast(data.size()); 58 | } 59 | -------------------------------------------------------------------------------- /src/typedefs.h: -------------------------------------------------------------------------------- 1 | /* 2 | typedefs.h 3 | 4 | 5 | flexemu, an MC6809 emulator running FLEX 6 | Copyright (C) 1997-2025 W. Schwotzer 7 | 8 | This program is free software; you can redistribute it and/or modify 9 | it under the terms of the GNU General Public License as published by 10 | the Free Software Foundation; either version 2 of the License, or 11 | any later version. 12 | 13 | This program is distributed in the hope that it will be useful, 14 | but WITHOUT ANY WARRANTY; without even the implied warranty of 15 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 16 | GNU General Public License for more details. 17 | 18 | You should have received a copy of the GNU General Public License 19 | along with this program; if not, write to the Free Software 20 | Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. 21 | */ 22 | 23 | 24 | #ifndef TYPEDEFS_INCLUDED 25 | #define TYPEDEFS_INCLUDED 26 | 27 | #include 28 | 29 | using Byte = uint8_t; 30 | using SByte = int8_t; 31 | using Word = uint16_t; 32 | using SWord = int16_t; 33 | using DWord = uint32_t; 34 | using SDWord = int32_t; 35 | using QWord = uint64_t; 36 | using SQWord = int64_t; 37 | using cycles_t = uint64_t; 38 | 39 | #endif /* TYPEDEFS_INCLUDED */ 40 | 41 | -------------------------------------------------------------------------------- /src/vico1.cpp: -------------------------------------------------------------------------------- 1 | /* 2 | vico1.cpp 3 | 4 | 5 | flexemu, an MC6809 emulator running FLEX 6 | Copyright (C) 2018-2025 W. Schwotzer 7 | 8 | This program is free software; you can redistribute it and/or modify 9 | it under the terms of the GNU General Public License as published by 10 | the Free Software Foundation; either version 2 of the License, or 11 | any later version. 12 | 13 | This program is distributed in the hope that it will be useful, 14 | but WITHOUT ANY WARRANTY; without even the implied warranty of 15 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 16 | GNU General Public License for more details. 17 | 18 | You should have received a copy of the GNU General Public License 19 | along with this program; if not, write to the Free Software 20 | Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. 21 | */ 22 | 23 | 24 | #include "typedefs.h" 25 | #include "vico1.h" 26 | #include "bobshelp.h" 27 | 28 | 29 | void VideoControl1::requestWriteValue(Byte new_value) 30 | { 31 | bool isUpdate = isFirstWrite || (value != new_value); 32 | 33 | value = new_value; 34 | 35 | if (isUpdate) 36 | { 37 | isFirstWrite = false; 38 | Notify(NotifyId::VideoRamBankChanged, &value); 39 | } 40 | } 41 | 42 | -------------------------------------------------------------------------------- /src/vico2.cpp: -------------------------------------------------------------------------------- 1 | /* 2 | vico2.cpp 3 | 4 | 5 | flexemu, an MC6809 emulator running FLEX 6 | Copyright (C) 2018-2025 W. Schwotzer 7 | 8 | This program is free software; you can redistribute it and/or modify 9 | it under the terms of the GNU General Public License as published by 10 | the Free Software Foundation; either version 2 of the License, or 11 | any later version. 12 | 13 | This program is distributed in the hope that it will be useful, 14 | but WITHOUT ANY WARRANTY; without even the implied warranty of 15 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 16 | GNU General Public License for more details. 17 | 18 | You should have received a copy of the GNU General Public License 19 | along with this program; if not, write to the Free Software 20 | Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. 21 | */ 22 | 23 | 24 | #include "typedefs.h" 25 | #include "vico2.h" 26 | #include "bobshelp.h" 27 | 28 | 29 | void VideoControl2::requestWriteValue(Byte new_value) 30 | { 31 | bool isUpdate = isFirstWrite || (value != new_value); 32 | 33 | value = new_value; 34 | 35 | if (isUpdate) 36 | { 37 | isFirstWrite = false; 38 | Notify(NotifyId::RequestScreenUpdate); 39 | } 40 | } 41 | 42 | -------------------------------------------------------------------------------- /src/warnon.h: -------------------------------------------------------------------------------- 1 | /* 2 | warnon.h 3 | 4 | 5 | flexemu, an MC6809 emulator running FLEX 6 | Copyright (C) 1997-2025 W. Schwotzer 7 | 8 | This program is free software; you can redistribute it and/or modify 9 | it under the terms of the GNU General Public License as published by 10 | the Free Software Foundation; either version 2 of the License, or 11 | any later version. 12 | 13 | This program is distributed in the hope that it will be useful, 14 | but WITHOUT ANY WARRANTY; without even the implied warranty of 15 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 16 | GNU General Public License for more details. 17 | 18 | You should have received a copy of the GNU General Public License 19 | along with this program; if not, write to the Free Software 20 | Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. 21 | */ 22 | 23 | // How to use this header see file warnoff.h. 24 | 25 | #ifdef __GNUC__ 26 | #pragma GCC diagnostic pop 27 | #endif 28 | 29 | #ifdef _MSC_VER 30 | #pragma warning( pop ) 31 | #endif 32 | -------------------------------------------------------------------------------- /src/winctxt.h: -------------------------------------------------------------------------------- 1 | /* 2 | winctxt.h 3 | 4 | 5 | flexemu, an MC6809 emulator running FLEX 6 | Copyright (C) 2018-2025 W. Schwotzer 7 | 8 | This program is free software; you can redistribute it and/or modify 9 | it under the terms of the GNU General Public License as published by 10 | the Free Software Foundation; either version 2 of the License, or 11 | any later version. 12 | 13 | This program is distributed in the hope that it will be useful, 14 | but WITHOUT ANY WARRANTY; without even the implied warranty of 15 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 16 | GNU General Public License for more details. 17 | 18 | You should have received a copy of the GNU General Public License 19 | along with this program; if not, write to the Free Software 20 | Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. 21 | */ 22 | 23 | 24 | #ifndef WINCTXT_INCLUDED 25 | #define WINCTXT_INCLUDED 26 | 27 | #ifdef _WIN32 28 | #define WIN32_LEAN_AND_MEAN 29 | #include 30 | 31 | struct WinApiContext 32 | { 33 | HINSTANCE hInstance; // handle to current instance 34 | HINSTANCE hPrevInstance; // handle to previous instance 35 | int nCmdShow; // show state of window 36 | }; 37 | 38 | extern WinApiContext winApiContext; 39 | 40 | #endif 41 | #endif // WINCTXT_INCLUDED 42 | 43 | -------------------------------------------------------------------------------- /src/windefs.h: -------------------------------------------------------------------------------- 1 | /* 2 | windefs.h - Definitions and declarations for Windows compatibility 3 | 4 | 5 | flexemu, an MC6809 emulator running FLEX 6 | Copyright (C) 2025 W. Schwotzer 7 | 8 | This program is free software; you can redistribute it and/or modify 9 | it under the terms of the GNU General Public License as published by 10 | the Free Software Foundation; either version 2 of the License, or 11 | any later version. 12 | 13 | This program is distributed in the hope that it will be useful, 14 | but WITHOUT ANY WARRANTY; without even the implied warranty of 15 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 16 | GNU General Public License for more details. 17 | 18 | You should have received a copy of the GNU General Public License 19 | along with this program; if not, write to the Free Software 20 | Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. 21 | */ 22 | 23 | 24 | 25 | #ifndef WINDOWSDEFINITIONS_INCLUDED 26 | #define WINDOWSDEFINITIONS_INCLUDED 27 | 28 | #ifdef _MSC_VER 29 | #define stat _stat64i32 30 | #define utimbuf _utimbuf 31 | 32 | #define W_OK (2) /* write permission */ 33 | #define S_ISREG(x) (x & S_IFREG) 34 | #endif 35 | 36 | #endif 37 | -------------------------------------------------------------------------------- /src/wingtopt.h: -------------------------------------------------------------------------------- 1 | /* 2 | wingtopt.h 3 | 4 | 5 | flexemu, an MC6809 emulator running FLEX 6 | Copyright (C) 2025 W. Schwotzer 7 | 8 | This program is free software; you can redistribute it and/or modify 9 | it under the terms of the GNU General Public License as published by 10 | the Free Software Foundation; either version 2 of the License, or 11 | any later version. 12 | 13 | This program is distributed in the hope that it will be useful, 14 | but WITHOUT ANY WARRANTY; without even the implied warranty of 15 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 16 | GNU General Public License for more details. 17 | 18 | You should have received a copy of the GNU General Public License 19 | along with this program; if not, write to the Free Software 20 | Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. 21 | */ 22 | 23 | 24 | #ifndef WINDOWSGETOPT_INCLUDED 25 | #define WINDOWSGETOPT_INCLUDED 26 | 27 | #ifdef _WIN32 28 | extern int getopt(int argc, char *const argv[], const char *optstr); 29 | extern int optind; 30 | extern int opterr; 31 | extern int optopt; 32 | extern const char *optarg; 33 | #endif 34 | 35 | #endif 36 | -------------------------------------------------------------------------------- /src/winmain.h: -------------------------------------------------------------------------------- 1 | /* 2 | winmain.h 3 | 4 | 5 | flexemu, an MC6809 emulator running FLEX 6 | Copyright (C) 2020-2025 W. Schwotzer 7 | 8 | This program is free software; you can redistribute it and/or modify 9 | it under the terms of the GNU General Public License as published by 10 | the Free Software Foundation; either version 2 of the License, or 11 | any later version. 12 | 13 | This program is distributed in the hope that it will be useful, 14 | but WITHOUT ANY WARRANTY; without even the implied warranty of 15 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 16 | GNU General Public License for more details. 17 | 18 | You should have received a copy of the GNU General Public License 19 | along with this program; if not, write to the Free Software 20 | Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. 21 | */ 22 | 23 | #ifdef _WIN32 24 | #define WIN32_LEAN_AND_MEAN 25 | #include 26 | 27 | extern void scanCmdLine(LPSTR lpCmdLine, int* argc, char** argv, size_t max_count); 28 | extern int main(int argc, char* argv[]); 29 | #endif 30 | 31 | -------------------------------------------------------------------------------- /src/wmain.cpp: -------------------------------------------------------------------------------- 1 | /* 2 | wmain.cpp 3 | 4 | 5 | flexemu, an MC6809 emulator running FLEX 6 | Copyright (C) 2025 W. Schwotzer 7 | 8 | This program is free software; you can redistribute it and/or modify 9 | it under the terms of the GNU General Public License as published by 10 | the Free Software Foundation; either version 2 of the License, or 11 | any later version. 12 | 13 | This program is distributed in the hope that it will be useful, 14 | but WITHOUT ANY WARRANTY; without even the implied warranty of 15 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 16 | GNU General Public License for more details. 17 | 18 | You should have received a copy of the GNU General Public License 19 | along with this program; if not, write to the Free Software 20 | Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. 21 | */ 22 | 23 | 24 | #include "wmain.h" 25 | #ifdef _WIN32 26 | #include "cvtwchar.h" 27 | #include 28 | #include 29 | 30 | int wmain(int argc, wchar_t *wargv[]) 31 | { 32 | std::vector args; 33 | std::vector argv; 34 | 35 | // On Windows use wmain() using wide characters to support unicode file 36 | // and directory path parameters. Convert them to UTF-8 strings for 37 | // portability. 38 | args.reserve(argc); 39 | argv.reserve(argc); 40 | for (int index = 0; index < argc; ++index) 41 | { 42 | args.push_back(ConvertToUtf8String(wargv[index])); 43 | argv.push_back(&args[index].at(0)); 44 | } 45 | 46 | return flx::main(argc, argv.data()); 47 | } 48 | #else 49 | int main(int argc, char *argv[]) 50 | { 51 | return flx::main(argc, argv); 52 | } 53 | #endif 54 | -------------------------------------------------------------------------------- /src/wmain.h: -------------------------------------------------------------------------------- 1 | /* 2 | wmain.h 3 | 4 | 5 | flexemu, an MC6809 emulator running FLEX 6 | Copyright (C) 2025 W. Schwotzer 7 | 8 | This program is free software; you can redistribute it and/or modify 9 | it under the terms of the GNU General Public License as published by 10 | the Free Software Foundation; either version 2 of the License, or 11 | any later version. 12 | 13 | This program is distributed in the hope that it will be useful, 14 | but WITHOUT ANY WARRANTY; without even the implied warranty of 15 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 16 | GNU General Public License for more details. 17 | 18 | You should have received a copy of the GNU General Public License 19 | along with this program; if not, write to the Free Software 20 | Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. 21 | */ 22 | 23 | 24 | 25 | #ifndef WMAIN_INCLUDED 26 | #define WMAIN_INCLUDED 27 | namespace flx 28 | { 29 | // Compatiblitity to main function parameters. 30 | // NOLINTNEXTLINE(modernize-avoid-c-arrays) 31 | extern int main(int argc, char *argv[]); 32 | } 33 | #endif 34 | -------------------------------------------------------------------------------- /test/.gitignore: -------------------------------------------------------------------------------- 1 | # Executables 2 | unittests 3 | 4 | # Test execution result files 5 | *.log 6 | *.xml 7 | *.trs 8 | -------------------------------------------------------------------------------- /test/data/cat.cmd: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aladur/flexemu/f99f6c44cc6f779a4da5c1f53afd7142a9b7aea4/test/data/cat.cmd -------------------------------------------------------------------------------- /test/data/cat.hex: -------------------------------------------------------------------------------- 1 | :20C1000020110100000000000000000000000000000000BECC14BFC111BDCD247DC10F279C 2 | :20C12000198EC8408614A784BDD4062624BEC111BFCC14A684B7CC112047BEC111A684811B 3 | :20C140002E2709BDCD212504813923177DC11027037ECD038EC840B6CC0CA7032A23B7C160 4 | :20C160000F20BEBEC111BFCC14BDCD2784038EC840A703BDCD2725037EC223BECC14BFC1D1 5 | :20C18000118EC8408610A784BDD4062645BDC2E826408EC370BDCD1E8EC8426F845FBDCD8B 6 | :20C1A000398EC395BDCD1E8EC844C608BDC3398EC39CC603BDC3398EC84FBDCD39BDCD2412 7 | :20C1C0008EC348BDCD1EBDCD248D6526087FC10E20217EC22ABECC14A684812E2710BDCD1F 8 | :20C1E00021254081392207BDCD2724FB20DBBDC30125308D468D3926F58EC8408610A7842A 9 | :20C20000BDD4062625BDC2E826208EC360BDCD1E5F8EC855BDCD39BDCD247EC11CBDCD24B2 10 | :20C220007ECD038EC840C61AE701BDCD3F7ECD03B6CC11810D2703B1CC02398EC840860616 11 | :20C24000A784BDD40626E37CC110BDCD24BDC2E827037EC2DE8EC8406D0426037EC2E72BE7 12 | :20C26000ECA60F841026E68EC8447DC10E262DBFCC418EC103BFCC3DBECC3D8CC10E271CF9 13 | :20C28000A6843001BFCC3DBECC414D2708813F2704A18426B83001BFCC4120DC8EC844C6ED 14 | :20C2A000088D4F862EBDCD18C6038D468620BDCD188EC855C601BDCD398EC840A60F85C09B 15 | :20C2C0002788858027098540270A8EC39120088EC38D20038EC389C6048D177EC24AA60100 16 | :20C2E000810827037EC22A398EC8408607A7847ED406A68426028620BDCD1830015A26F205 17 | :20C30000397FC10E8EC103C60B6F8430015A26F9BECC14A684812E27068EC0FF7ECD2D7CF1 18 | :20C32000CC15C6038EC10BBDCD27250AA78430015A2AF41A01391CFE39A6842709BDCD18A2 19 | :20C3400030015A26F4395F39204E414D4520202054595045202053495A45202050525404CF 20 | :20C36000534543544F5253204C454654203D2004434154414C4F47204F4620445249564584 21 | :1FC38000204E554D42455220042020205720202044202057444449534B3A20042020236F 22 | :040000050000C10036 23 | :00000001FF 24 | -------------------------------------------------------------------------------- /test/data/cat.s19: -------------------------------------------------------------------------------- 1 | S018000043726561746564207769746820666C6578326865780D 2 | S123C10020110100000000000000000000000000000000BECC14BFC111BDCD247DC10F2798 3 | S123C120198EC8408614A784BDD4062624BEC111BFCC14A684B7CC112047BEC111A6848117 4 | S123C1402E2709BDCD212504813923177DC11027037ECD038EC840B6CC0CA7032A23B7C15C 5 | S123C1600F20BEBEC111BFCC14BDCD2784038EC840A703BDCD2725037EC223BECC14BFC1CD 6 | S123C180118EC8408610A784BDD4062645BDC2E826408EC370BDCD1E8EC8426F845FBDCD87 7 | S123C1A0398EC395BDCD1E8EC844C608BDC3398EC39CC603BDC3398EC84FBDCD39BDCD240E 8 | S123C1C08EC348BDCD1EBDCD248D6526087FC10E20217EC22ABECC14A684812E2710BDCD1B 9 | S123C1E021254081392207BDCD2724FB20DBBDC30125308D468D3926F58EC8408610A78426 10 | S123C200BDD4062625BDC2E826208EC360BDCD1E5F8EC855BDCD39BDCD247EC11CBDCD24AE 11 | S123C2207ECD038EC840C61AE701BDCD3F7ECD03B6CC11810D2703B1CC02398EC840860612 12 | S123C240A784BDD40626E37CC110BDCD24BDC2E827037EC2DE8EC8406D0426037EC2E72BE3 13 | S123C260ECA60F841026E68EC8447DC10E262DBFCC418EC103BFCC3DBECC3D8CC10E271CF5 14 | S123C280A6843001BFCC3DBECC414D2708813F2704A18426B83001BFCC4120DC8EC844C6E9 15 | S123C2A0088D4F862EBDCD18C6038D468620BDCD188EC855C601BDCD398EC840A60F85C097 16 | S123C2C02788858027098540270A8EC39120088EC38D20038EC389C6048D177EC24AA601FC 17 | S123C2E0810827037EC22A398EC8408607A7847ED406A68426028620BDCD1830015A26F201 18 | S123C300397FC10E8EC103C60B6F8430015A26F9BECC14A684812E27068EC0FF7ECD2D7CED 19 | S123C320CC15C6038EC10BBDCD27250AA78430015A2AF41A01391CFE39A6842709BDCD189E 20 | S123C34030015A26F4395F39204E414D4520202054595045202053495A45202050525404CB 21 | S123C360534543544F5253204C454654203D2004434154414C4F47204F4620445249564580 22 | S122C380204E554D42455220042020205720202044202057444449534B3A20042020236B 23 | S903C1003B 24 | -------------------------------------------------------------------------------- /test/data/flexlabl.conf: -------------------------------------------------------------------------------- 1 | ; Define labels to be used in the MC6809 disassembler. 2 | ; 3 | [LABELS] 4 | ; FLEX DOS labels 5 | CD00=COLDS 6 | CD03=WARMS 7 | CD06=RENTER 8 | CD09=INCH 9 | CD0C=INCH2 10 | CD0F=OUTCH 11 | CD12=OUTCH2 12 | CD15=GETCHR 13 | CD18=PUTCHR 14 | CD1B=INBUFF 15 | CD1E=PSTRNG 16 | CD21=CLASS 17 | CD24=PCRLF 18 | CD27=NXTCH 19 | CD2A=RSTRIO 20 | CD2D=GETFIL 21 | CD30=LOAD 22 | CD33=SETEXT 23 | CD36=ADDBX 24 | CD39=OUTDEC 25 | CD3C=OUTHEX 26 | CD3F=RPTERR 27 | CD42=GETHEX 28 | CD45=OUTADR 29 | CD4B=DOCMND 30 | CD4E=STAT 31 | ; FLEX FMS labels 32 | D400=FMSINI ; FMS init 33 | D403=FMSCLS ; FMS close 34 | D406=FMS 35 | C840=FCB ; standard system FCB 36 | ; miscellaneous 37 | D435=VFYFLG ; FMS verify flag 38 | C080=LINBUF ; line buffer 39 | CC00=TTYBS 40 | CC01=TTYDEL 41 | CC02=TTYEOL 42 | CC03=TTYDPT 43 | CC04=TTYWDT 44 | CC11=TTYTRM 45 | CC12=COMTBL ; user command table 46 | CC14=LINBFP ; line buffer pointer 47 | CC16=ESCRET ; escape return register 48 | CC18=LINCHR ; current char in linebuffer 49 | CC19=LINPCH ; previous char in linebuffer 50 | CC1A=LINENR ; line nr of current page 51 | CC1B=LODOFS ; loader address offset 52 | CC1D=TFRFLG ; loader transfer flag 53 | CC1E=TFRADR ; transfer address 54 | CC20=FMSERR ; FMS error type 55 | CC21=IOFLG ; special I/O flag 56 | CC22=OUTSWT ; output switch 57 | CC23=INSWT ; input switch 58 | CC24=OUTADR ; file output address 59 | CC26=INADR ; file input address 60 | CC28=COMFLG ; command flag 61 | CC29=OUTCOL ; current output column 62 | CC2A=SCRATC ; system scratch 63 | CC2B=MEMEND ; memory end 64 | CC2D=ERRVEC ; error name vector 65 | CC2F=INECHO ; file input echo flag 66 | ; Printer support 67 | CCC0=PRTINI ; printer initialize 68 | CCD8=PRTCHK ; printer check 69 | CCE4=PRTOUT ; printer output 70 | -------------------------------------------------------------------------------- /test/data/testdisk.dsk: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aladur/flexemu/f99f6c44cc6f779a4da5c1f53afd7142a9b7aea4/test/data/testdisk.dsk -------------------------------------------------------------------------------- /test/data/testdisk.flx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aladur/flexemu/f99f6c44cc6f779a4da5c1f53afd7142a9b7aea4/test/data/testdisk.flx -------------------------------------------------------------------------------- /test/metadata.json: -------------------------------------------------------------------------------- 1 | { 2 | "linesOfCode": 3 | { 4 | "test": 5 | { 6 | "cheader": 326, 7 | "cpp": 11077, 8 | "cppsum": 11403 9 | } 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /test/options.txt: -------------------------------------------------------------------------------- 1 | # define cloc options for this directory 2 | # cloc source: https://github.com/AlDanial/cloc.git 3 | 4 | -------------------------------------------------------------------------------- /test/pch.cpp: -------------------------------------------------------------------------------- 1 | /* 2 | pch.cpp: Precompiled header support 3 | 4 | 5 | Copyright (C) 2025 W. Schwotzer 6 | 7 | This program is free software; you can redistribute it and/or modify 8 | it under the terms of the GNU General Public License as published by 9 | the Free Software Foundation; either version 2 of the License, or 10 | any later version. 11 | 12 | This program is distributed in the hope that it will be useful, 13 | but WITHOUT ANY WARRANTY; without even the implied warranty of 14 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 15 | GNU General Public License for more details. 16 | 17 | You should have received a copy of the GNU General Public License 18 | along with this program; if not, write to the Free Software 19 | Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. 20 | */ 21 | 22 | #include "pch.h" 23 | -------------------------------------------------------------------------------- /test/pch.h: -------------------------------------------------------------------------------- 1 | /* 2 | pch.h 3 | 4 | 5 | flexemu, an MC6809 emulator running FLEX 6 | Copyright (C) 2025 W. Schwotzer 7 | 8 | This program is free software; you can redistribute it and/or modify 9 | it under the terms of the GNU General Public License as published by 10 | the Free Software Foundation; either version 2 of the License, or 11 | any later version. 12 | 13 | This program is distributed in the hope that it will be useful, 14 | but WITHOUT ANY WARRANTY; without even the implied warranty of 15 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 16 | GNU General Public License for more details. 17 | 18 | You should have received a copy of the GNU General Public License 19 | along with this program; if not, write to the Free Software 20 | Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. 21 | */ 22 | 23 | 24 | #ifndef PCH_INCLUDED 25 | #define PCH_INCLUDED 26 | 27 | #include 28 | #include 29 | #include 30 | #include 31 | #include 32 | #include 33 | #include 34 | #include 35 | #include 36 | #include 37 | #include 38 | #include 39 | 40 | #endif 41 | 42 | -------------------------------------------------------------------------------- /test/test_breltime.cpp: -------------------------------------------------------------------------------- 1 | /* 2 | test_breltime.cpp 3 | 4 | 5 | flexemu, an MC6809 emulator running FLEX 6 | Copyright (C) 2024-2025 W. Schwotzer 7 | 8 | This program is free software; you can redistribute it and/or modify 9 | it under the terms of the GNU General Public License as published by 10 | the Free Software Foundation; either version 2 of the License, or 11 | any later version. 12 | 13 | This program is distributed in the hope that it will be useful, 14 | but WITHOUT ANY WARRANTY; without even the implied warranty of 15 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 16 | GNU General Public License for more details. 17 | 18 | You should have received a copy of the GNU General Public License 19 | along with this program; if not, write to the Free Software 20 | Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. 21 | */ 22 | 23 | 24 | #include "gtest/gtest.h" 25 | #include "breltime.h" 26 | #include 27 | #include 28 | 29 | 30 | TEST(test_breltime, getTimeUsll) 31 | { 32 | const auto time1 = BRelativeTime::GetTimeUsll(); 33 | std::this_thread::sleep_for(std::chrono::microseconds(10000)); 34 | const auto time2 = BRelativeTime::GetTimeUsll(); 35 | EXPECT_TRUE(time2 - time1 > 9000ULL); 36 | const auto time3 = BRelativeTime::GetTimeUsll(); 37 | EXPECT_TRUE(time3 - time2 < 10000ULL); 38 | } 39 | 40 | -------------------------------------------------------------------------------- /test/test_gccasm.h: -------------------------------------------------------------------------------- 1 | /* 2 | test_gccasm.h 3 | 4 | 5 | flexemu, an MC6809 emulator running FLEX 6 | Copyright (C) 2024-2025 W. Schwotzer 7 | 8 | This program is free software; you can redistribute it and/or modify 9 | it under the terms of the GNU General Public License as published by 10 | the Free Software Foundation; either version 2 of the License, or 11 | any later version. 12 | 13 | This program is distributed in the hope that it will be useful, 14 | but WITHOUT ANY WARRANTY; without even the implied warranty of 15 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 16 | GNU General Public License for more details. 17 | 18 | You should have received a copy of the GNU General Public License 19 | along with this program; if not, write to the Free Software 20 | Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. 21 | */ 22 | 23 | 24 | #ifndef TEST_GCCASM_INCLUDED 25 | #define TEST_GCCASM_INCLUDED 26 | 27 | 28 | /* Parameter comes from main(). */ 29 | /* NOLINTNEXTLINE(modernize-avoid-c-arrays) */ 30 | extern void init_test_gccasm(int argc, char *argv[]); 31 | 32 | extern bool test_gccasm_add8(); 33 | extern bool test_gccasm_add16(); 34 | extern bool test_gccasm_adc(); 35 | extern bool test_gccasm_sub8(); 36 | extern bool test_gccasm_sub16(); 37 | extern bool test_gccasm_sbc(); 38 | extern bool test_gccasm_inc(); 39 | extern bool test_gccasm_dec(); 40 | extern bool test_gccasm_neg(); 41 | extern bool test_gccasm_tst(); 42 | extern bool test_gccasm_cmp8(); 43 | extern bool test_gccasm_cmp16(); 44 | extern bool test_gccasm_lsl(); 45 | extern bool test_gccasm_lsr(); 46 | extern bool test_gccasm_asr(); 47 | extern bool test_gccasm_ror(); 48 | extern bool test_gccasm_rol(); 49 | 50 | #endif 51 | 52 | -------------------------------------------------------------------------------- /test/test_main.cpp: -------------------------------------------------------------------------------- 1 | /* 2 | test_main.cpp 3 | 4 | 5 | flexemu, an MC6809 emulator running FLEX 6 | Copyright (C) 2024-2025 W. Schwotzer 7 | 8 | This program is free software; you can redistribute it and/or modify 9 | it under the terms of the GNU General Public License as published by 10 | the Free Software Foundation; either version 2 of the License, or 11 | any later version. 12 | 13 | This program is distributed in the hope that it will be useful, 14 | but WITHOUT ANY WARRANTY; without even the implied warranty of 15 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 16 | GNU General Public License for more details. 17 | 18 | You should have received a copy of the GNU General Public License 19 | along with this program; if not, write to the Free Software 20 | Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. 21 | */ 22 | 23 | 24 | #ifdef _WIN32 25 | #define WIN32_LEAN_AND_MEAN 26 | #include 27 | #include 28 | #endif 29 | #include "gtest/gtest.h" 30 | 31 | 32 | int main(int argc, char *argv[]) 33 | { 34 | #ifdef _WIN32 35 | SetConsoleCP(CP_UTF8); 36 | SetConsoleOutputCP(CP_UTF8); 37 | std::cout << "Current ANSI code page is " << GetACP() << "\n"; 38 | #endif 39 | 40 | ::testing::InitGoogleTest(&argc, argv); 41 | 42 | return RUN_ALL_TESTS(); 43 | } 44 | 45 | -------------------------------------------------------------------------------- /test/unittests.manifest: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | UTF-8 7 | 8 | 9 | 10 | 11 | --------------------------------------------------------------------------------