%global commit d436a4e1ba9c357d007c2b86258a44d24537cdc4 %global shortcommit %(c=%{commit}; echo ${c:0:7}) %global gitdate 20241031 Name: em400 Version: 0.4.1 Release: 12.git%{gitdate}%{?dist} Summary: EM400 is an emulator of Polish MERA-400 minicomputer system (built in late '70 and popular in the '80). License: GPL-2.0-or-later URL: https://github.com/jakubfi/em400 Source0: https://github.com/jakubfi/em400/archive/%{commit}/%{name}-%{shortcommit}.tar.gz BuildRequires: gcc %if 0%{?fedora}%{?.el9} BuildRequires: gcc-g++ %endif BuildRequires: cmake BuildRequires: qt5-linguist BuildRequires: qt5-qtbase-devel BuildRequires: libemawp-devel BuildRequires: libemawp BuildRequires: libemdas-devel BuildRequires: libemdas BuildRequires: libemcrk-devel BuildRequires: libemcrk BuildRequires: bison BuildRequires: flex %if 0%{?fedora} BuildRequires: libfl-devel %else BuildRequires: flex-devel %endif BuildRequires: ncurses-devel BuildRequires: readline-devel BuildRequires: pulseaudio-libs-devel BuildRequires: qt5-qtmultimedia-devel Requires: libemdas Requires: libemcrk Requires: libemawp Requires: ncurses-libs Requires: readline Requires: pulseaudio-libs Requires: qt5-qtbase Requires: qt5-qtbase-gui Requires: qt5-qtmultimedia %description EM400 is an emulator of Polish MERA-400 minicomputer system (built in late '70 and popular in the '80). Learn more at: http://mera400.pl Project is still in development state, but most of the emulation works fine and EM400 can run original MERA-400 software. Emulation features: MERA-400 CPU MX-16 CPU (original CPU with modifications) floating point arithmetics Elwro memory (32kword modules, ferromagnetic) Amepol MEGA memory (64kword modules, semiconductor) character channel (character-oriented I/O interface) memory channel (block-oriented I/O interface) Amepol MULTIX peripherial processor Winchester disk drive TCP terminal built-in debugger %package -n %{name}-vim Summary: em400 log file syntax highlight files for VIM %description -n %{name}-vim em400 log file syntax highlight files for VIM %prep %setup -q -n %{name}-%{commit} %build %cmake %cmake_build %install %cmake_install mkdir -p %{buildroot}%{_datadir}/%{name}/cfg mkdir -p %{buildroot}%{_datadir}/%{name}/tests mkdir -p %{buildroot}%{_datadir}/%{name}/tools mkdir -p %{buildroot}%{_datadir}/vim/vimfiles/ftdetect mkdir -p %{buildroot}%{_datadir}/vim/vimfiles/syntax %{__cp} cfg/* %{buildroot}%{_datadir}/%{name}/cfg %{__cp} -r tests/* %{buildroot}%{_datadir}/%{name}/tests %{__cp} tools/* %{buildroot}%{_datadir}/%{name}/tools %{__cp} vim/ftdetect/em400log.vim %{buildroot}%{_datadir}/vim/vimfiles/ftdetect %{__cp} vim/syntax/em400log.vim %{buildroot}%{_datadir}/vim/vimfiles/syntax sed -i '1s|^#!/usr/bin/python|#!%{__python3}|' %{buildroot}%{_datadir}/%{name}/tools/derep.py sed -i '1s|^#!/usr/bin/python|#!%{__python3}|' %{buildroot}%{_datadir}/%{name}/tools/edit.py %files %{_bindir}/e4term %{_bindir}/em400 %{_bindir}/embin %{_bindir}/emitool %{_datadir}/%{name}/cfg/mera400.ini %{_datadir}/%{name}/cfg/mx16.ini %{_datadir}/%{name}/cfg/em400.ini.template %{_datadir}/%{name}/tools/* %{_datadir}/%{name}/tests/* %files -n %{name}-vim %{_datadir}/vim/vimfiles/* %changelog * Thu Oct 31 2024 Paweł Marciniak - 0.4.1-12.git20241031 - update memory tests - Memory rework - memory work - don't use stop_on_nomem, just use TW instead of LW - readme and help fixes - MEGA work - cpu timekeeping update - drop setting KB from config and cmdline - drop clock_start from config files * Wed Jun 26 2024 Paweł Marciniak - 0.4.1-12.git20240626 - build: maybe now fix compilers? - build: fix compilers usage - build: fix compilers usage - build: fix compilers usage - build: use latest compilers - build: update checkout action to v4 - build: add sound and QT dependencies - fix ubuntu-latest build - build on latest ubuntu - fix multix test hacks - stop using speed_factor cfg option - fix state names - update biquad - simulate PWM on W bus by dimming LEDs when cpu runs - rerecorded sounds - ignition turns the "ON" LED (with delay) - ignition cleanup and fixes - TOTO updates - do MCL synchronously - redefine speed_real - LOAD, STORE, FETCH interface cleanup - initial dasm and memory views size = 0 - small visual feedback during binary load - move state change out of cpu_do_wait() - multix hang workaround - "fix" flop8 spinning on CPU - working STORE and FETCH - GUI minor fixes - "IN" commands write "0" to the register if no reply - binary load implemented as in H/W - connect+fix binary load - be more precise about state changes - load - cleanu emulator API - darken LED 13 - update W bus on binary keys change - "declick" momentary buttons only on left button depress - register selection with rotary knob - simplify state changes a bit - merge cpu_do_stop() and cpu_do_wait() - fix bad CPU state check - add missing header - react only on left button, don't hide status bar - 3 timers for emumodel - fix typo - remove unused, formatting - show/hide debugger - resize window on CP size change - resizable control panel - UI rotary: "hand" cursor fixes - non-linear rotary animation - GUI work contd. - audio tune, fixes - WIP GUI - rotary switch interactions - GUI work - fix planes misalignment, articulate switches - qt5: display W bus - use W bus in alu16 operations - simplify logging slightly - simplify P2 handling, ar=aw handling - fix minor bugs - fix: SHC does not touch Y flag - cpu_do_cycle(): introduce W bus and P* CPU states - introduce P2 state - handle segfaults as in hardware - instruction fetch: simplify, use W bus - no separate ineffective_memfail, only ineffective - make baseline in runtests.py work again - failed memory reads actually return 0 - rework instruction execution phase - QT5 control panel experiments * Sat Mar 02 2024 Paweł Marciniak - 0.4.1-12.git20240302 - conditionally use and link QT UI, lower UI priority - qt: force update on image load - program icon - status bar - update for the new memory access interface - control panel mock - qt5 ui: ips and alarm in status bar - qt5 ui work - fix register boxes layout - fix generated bison header names - add memview - dasmview: add frame, fix and properly handle mouse wheel - qt5ui: continue work - qt5ui: dasmview as custom widget - WIP qt5 interface - tests: enable temporarily disabled scenarios * Sun Jun 11 2023 Paweł Marciniak - 0.4.1-12.git20230611 - tests: fix flop8-poll-write-positioned.asm - flop8: even better emulation, even more tests - tpz comments - c5fs minor updates - embin: handle inverted input - switch C_STANDARD to 11 - fix logging setup - cchar: clear int reported upon reset - runtests.py - colors - flop8: better emulation, tests - actions: apt-get update (#25) - light logging pass - janitorial, headers * Wed Feb 23 2022 Paweł Marciniak - 0.4.1-12.git20220223 - instruction legalness handling fix - ctx switch/restore fixes (also lip and sp) - memory access rework - get rid of struct mem_slot_t - mem_get()/_put() returns bool - mem_mega_boot() return bool - simplify mem_ptr() return - bools for cpu_do_bin() - cpu_ctx_switch() does not require return value - get rid of remaining QNB usage instances - fix memory NB: addressing in OS mode - cmake: reorganize targets - make curses UI optional to build - e4image: open files in binary mode - tests: generic way of finding temp dir - make cmd UI compile on windows - cmd UI pass - make embin and emitool compile on windows * Mon Feb 14 2022 Paweł Marciniak - 0.4.1-12.git20220214 - cmake janitorial - add CI install step * Sun Feb 13 2022 Paweł Marciniak - 0.4.1-12.git20220213 - Update emdas import - Update emawp import * Sat Feb 12 2022 Paweł Marciniak - 0.4.1-12.git20220212 - Update emcrk import - remove dead, terminal-related code * Sun Feb 6 2022 Paweł Marciniak - 0.4.1-11 - fix stop_on_nomem behavior * Sat Jan 29 2022 Paweł Marciniak - 0.4.1-10 - remove cpu/flags.h - AC usage in int_serve(), int handling cleanups - fix occasional crash in CROOK introduced in 4516564 - AC/AR for AWP/NRF (+fixes) - remove unnecessary variable in cpu cycle, reorganize opcode_flags - remove unused function declarations - AC/AR for byte instructions (+code cleanup) - properly use AR for group instructions, add benchmark - fix test runner - fix test - use q, bs, p as booleans - start using AC and AR registers … - add header files to cmake - Enable IPO if supported, silence warnings - make AR and AC real registers - be more specific when changing CPU states - cpu state as a number * Tue Jan 11 2022 Paweł Marciniak - 0.4.1-9 - fix closing client connection - better cchar_term and fdbridge logging - await read on terminal discoonect - do binary load steps in cpu loop * Fri Jan 7 2022 Paweł Marciniak - 0.4.1-8 - Remove unneeded header * Sat Dec 18 2021 Paweł Marciniak - 0.4.1-7 - commit typo fix * Tue Dec 14 2021 Paweł Marciniak - 0.4.1-6 - Enable pulseaudio support * Sat Dec 11 2021 Paweł Marciniak - 0.4.1-5 - Put VIM files into separate package * Mon Dec 6 2021 Paweł Marciniak - 0.4.1-4 - Add conditional macro for rhel/centos * Sun Dec 5 2021 Paweł Marciniak - 0.4.1-3 - Use libfl-devel * Sat Dec 4 2021 Paweł Marciniak - 0.4.1-2 - Small fix remove emelf from requires * Sat Dec 4 2021 Paweł Marciniak - 0.4.1-1 - Initial build