%global commit 0c7cdf7d6501dcb652361a6f8fb07d19809617db %global shortcommit %(c=%{commit}; echo ${c:0:7}) %global gitdate 20240302 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 Requires: libemdas Requires: libemcrk Requires: libemawp Requires: ncurses-libs Requires: readline Requires: pulseaudio-libs Requires: qt5-qtbase Requires: qt5-qtbase-gui %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 * 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