All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
1.2 - 2022-07-08
- Replacement release for 1.1.0
- Release revoked, since extra code inadvertently made it into the relase, which would have broken the compatibility with Pyntel4004-cli
- Fixed documentation build issue
1.0.0 - 2022-06-27
- Added platform-aware code (to enable a central codebase of cpython and micropython supported platforms)
- Added accumulator, registers and memory to core dump to core dump
- Replaced inbuilt
zfill
with hand-writtenzfl
function due to micropython not supporting zfill
- Switched to more efficient memory-allocation method for ROM/RAM/PRAM etc...
- Moved operation vectors inside Processor class
- Fixed an issue where BIN file is used and there is no "end" mnemonic - did produce an error. Now doesnt.
- Tidied up some code to make it less complex, and improve quality
- Fixed issue in quiet mode when executing a program - now doesnt print opcodes
- "4004" command line facility. This is now part of the Pyntel4004-cli project
init.py
module - now all initialisation occurs efficiently inside the processor class- now no "eval" function - removed dangerous code and replaced with instruction vectors (only now left in test support code)
- N/A
0.0.1-beta.5 - 2022-01-20
- Switched to Sonarcloud.io code scanning
- Added bytes to disassemble
- Added quiet mode to all functions
- Added a '--labels' option to dissassembly function
- Added ability to specify type of output file(s)
- Commands for running the assembler, disassembler and executer are now deprecated.
The command-line commands should no longer be used, and will be removed in the next release.
To use the command-line, use:
pip install Pyntel4004-cli
- Reduced code complexity in
construct.py
from 21 -> 15 - Code smells in the documentation construction script
- Code smells in some suboperations fixed
- Fixed bug in tests for WPM instruction
- Fixed major bugs in FIM and END processing
- Fixed minor bugs with pseudo-opcode 256 and writing .bin and retroshield files
- Deepsource.io integration
- Codacy.com integration
- N/A
0.0.1-beta.4 - 2022-01-13
- Fixed issue with 0.0.1-beta.3 relating to incorrent merge process
- Release yanked and replaced with this release.
- See details below in 0.0.1-beta.3 for changes.
- Successfully ran a copy of the Busicom calculator code on the Retroshield Arduino 4004.
- The next stage will be to compile a short program using Pyntel4004 and run it on the Retroshield.
- Completed first pass at all opcode documentation
- Write code to Retroshield-compatible
.h
file - Added Glossary of Terms
- Added all Appendices in MSC-4 manual (partially automated where tables are required)
- Included initial content from the MCS-4 data sheet
- Added custom role to allow superscript substitutions
- Consolidated all acknowledgements into a single page
- Incorrect symbolic image being displayed on SRC instruction page
- Fixed a number of incorrect links
0.0.1-beta.2 - 2021-12-11
- Includes first release of a disassembler
- Successfully completely disassembled the BUSICOM 141-PF ROM object code
- Additional documentation about the Intel 4004 and its' companion chipset
- Additional opcode documentation
- Initial version of a disassembler
- Mechanism to determine loading mechanism - either from an
.bin
or a.bin
file - Type hinting
other.py
suboperations
directory- Switched to
codefactor.io
for code analysis (on-demand only)
- Broken out suboperations and reads to their own files for simplicity - all functions for a specific portion of the processor are now together in the hardware.suboperations module.
- Changed the "end" mnemonic from 255 to 256 - data in BUSICOM ROM could be confused with a 255 value.
- N/A
- Error in assembler when the second label in a program had a corresponding operator with more than one operand; that and subsequent labels were being assigned incorrectly.
suboperation.py
reads.py
codacy.com
code coverage
- N/A
0.0.1-beta.1 - 2021-11-19
- First Beta Release
- Code Style, Documentation, Bug Risks, Anti-Patterns
- machine.py - no longer needed
0.0.1-alpha.6 - 2021-11-04
- EQUATE function (symbols only - no EXPressions yet)
- Added functionality for option for JCN to specify flags numerically or alphabetically
- First stage of core dump facility to help debug code
- Refactored some shared functions into a shared module and tested
- Rationalised some code to support functions
- Improved exception handling
- Bug in SRC function where decimal number was used instead of binary number
0.0.1-alpha.6 - 2021-10-24
- Tests for WPM instruction
- Tests for SBM instruction
- Abstracted and tested new suboperations
- Tests now over 98% of opcode code
- Switched to KeepAChangeLog format.
- Some small bugs in the WPM instruction code
- Abstracted some functions for readability
0.0.1-alpha.5 - 2021-10-10
- Completed WMP, WRx and WRR function tests.
- Updated RDx and RDR functions.
- Improved Assembler code by simplifying
- Simplified some low-level instruction code
- Improved code style
- Finally fixed ongoing bug with build pipeline
0.0.1-alpha.4 - 2021-10-03
- Auto added version from release branch name
- Completed tests for JCN instruction
- Completed tests for ISZ instruction
- Completed tests for WRM instruction
0.0.1-alpha.3 - 2021-09-26
- Improved build pipeline
- Improved README
- Created CHANGELOG