The format of this CHANGELOG is based on Keep a Changelog.
This project try to follow the Semantic Versioning.
Note: the changelog content from 2020-01-12 to 2020-04-17 was made during 2020-12-17 and 2020-12-18 and may not be precisely accurate of what happen back then.
- Added the first version of the SAPHYR_DOS program. A Disk Operating System for the SAPHYR I (or SDOS for short).
Features include:
- A BOOT program to load the SDOS kernel. This program will:
- Check if the computer has enough ram, if not then it beeps and crash.
- Copy itself into the RAM.
- Jump to the boot copy to continue execution.
- Read and copy sectors 2 to 6 on track 0 (the place where the kernel is) to the memory.
- Pass the execution to the kernel.
- The Kernel that have/can:
- A stack to push/pull values from/to.
- Call subroutines, routines and functions.
- Disk read and write functions.
- A file system. Actual features are: find a file, read a file, find a file location, get the size of a file.
- Virtual RAM access. Programs can get and set memory without needed to know their addresses, only their virtual ones.
- Run programs with the file system that have virtual RAM. Programs can also run other programs.
- Some 16 bits instructions routines.
- Compare two strings.
- A default ROOT directory.
- A BOOT program to load the SDOS kernel. This program will:
- Non OS files to build SDOS:
- "prog" program to test if SDOS can run other programs. It only does one thing: stop when the keyboard is pressed twice.
- write_xxx programs to write a defined program on the floppy disk. For example "write_root" will write the root directory to sector 1 track 0.
- All link and label files to link the different programs.
- note.md file to keep notes.
- "assemble.bat" and "link.bat" for convenience.
- Keyboard Default layout.
- Missing section:
- chapter 5 (Hardware specifications).
- more programs.
- SINC section (Safyrus Industry Naming Convention).
- "The floppy drive" section
- "Some programming conventions" section.
- "extern" compiler instruction.
- A README.
- Figures images for the markdown version.
- gitattributes
- square.wav to a 488,28125 Hz square wave.
- Some CSV config files.
- Example programs:
- device_id: Identity device on port 0.
- moving_line: Draw a moving line that move randomly across the screen.
- A floppy disk image with the SAPHYR I DOS. SDOS run a program that stop when the keyboard is pressed twice.
- Keyboard SAPHYR-I layout.
- Keyboard logic to respect the basic IO device protocol.
- In MainWindow: keyboard CSV config to select keyboard layout.
- Updated markdown version.
- gitignore
- Typo when including "graphic/window/VramWindow.hpp"
- Unnecessary call to the getStatus function of the buzzer.
- Texts position on IOControllerWindow.
- Some typos in the manual.
- Two menu actions to pause the CPU and to step one instruction forward.
- Multiple functions to the Translater:
- setPause/getPause: pause the execution.
- stepOnce: execute only one instruction.
- setBreakpoint/removeBreakpoint: add/remove a breakpoint at a specific address.
- getBreakpoints: return all breakpoints address.
- CPU functions to use the new Translater features.
- A new window named the Debugger. It can:
- show a part of the bus data from a certain address. Values can be viewed has hexadecimal numbers or in SASM instructions. Display mode of the bus can be switched by pressing the F3 key.
- Pause the CPU with the "PAUSE" option in the menu or with the F1 key.
- Step one instruction forward with the "STEP" option in the menu or with the F2 key.
- Scroll the bus data with the mouse wheel or by writing an address in the "SCROLL TO" field and pressing enter.
- Place/Remove a breakpoint by writing an address in the corresponding field and pressing enter.
- Show the current CPU PC by changing the back color of the instruction at the corresponding address.
- Show breakpoints in the bus data display.
- A menu option in computer window to open the debugger window.
- A new view "TextInputView" to input text with the keyboard, when it is active, and show it graphically.
- Getters in View (x, y, width, height).
- Other windows can now be closed by pressing the escape key (VPU, HWSTATS, IOCTRL, FDC, CPU).
- Some white texts to use a white from the Sweetie 16 palette.
- "LOAD/EJECT FLOPPY" menu text in ComputerWindow to "USE FLOPPY".
- Occasional very long freeze when changing frequency in waitInst function of the Translater.
- Crash when changing CPU frequency through the computer window.
- Sub windows not being open in the correct window mode.
- Unused font and text variables in ComputerWindow.
- Floppy disk image.
- An "isFloppyIn" function in Computer and FDD.
- An "getFDD" function in FDC.
- A new "one window" mode to have only one window with sub windows opening in the same window.
- An argument in main to use either the normal "multiple windows" mode or the new "one window" mode.
- Fullscreen by pressing F11.
- New MenuActions to use the FDD lock and to insert or eject a floppy.
- Link script (bat and sh).
- Floppy drive on and off image.
- Assembler output file to be named "out" if the input file name has no extension.
- The VPU timing to now use CPU cycles instead of real time.
- The FDD to save the head position instead of relying on the floppy data index.
- Main default arguments.
- Replace RenderWindow by RenderTexture in draw functions in views and windows.
- ROM, RAM and VRAM window size.
- Windows event is now done in "doEvent" function.
- Run scripts.
- Unused class BaseWindow.
- Multiple crash when the FDD have no floppy disk.
- Windows background not being updated.
- cpu-board png and aseprite.
- An "isStop" function in RunnableDevice to know if the thread has stop.
- A MenuAction to load a config file.
- A "load config" action under the file menu in the main window to load a config file named "config.csv".
- Reactivate dynamic recompiler test.
- Translater to print CPU and recompile info only when test are active.
- FDD "FDCget" function to return a boolean instead of an unsigned 8bit integer.
- FDC to activate the 6bit flag when reading a wrong encoded sector.
- CPU window visual with more graphic.
- Run scripts default program.
- Crash when the CPU call "refreshCycle" and tries to call the bus "refreshCycle" function without having a bus.
- Crash when trying to delete runnable devices in IOController that have already been deleted.
- run-debug and run-test scripts.
- Useless "getDataFDC" function in FDD.
- New Device Windows with more "graphic" visualization:
- HwStatesWindow for the hardware states.
- VPUWindow for the VPU.
- FDCWindow for the FDC.
- A new VRAMView and VRAMWindow.
- Mouse actions to the buttons on the computer case in the ComputerWindow.
- Images used in the new device windows:
- fdc_board
- fdc_led_green_on
- fdc_led_red_on
- hwstats_board
- hwstats_led_green_on
- hwstats_led_red_on
- io_board
- io_led_red_on
- vpu_board
- vpu_led_green_on
- vpu_led_red_on
- Aseprite files:
- fdc-board
- hwstates-board
- io-board
- mem_map
- vpu-board
- keyboard
- The Saphyr-I palette in GPL and PNG format.
- A Logisim "random" circuit.
- FDC encoding error to only print one time when reading.
- The computer screen goes black when the computer power is turned off.
- The aspect of the IOController window.
- ComputerWindow to open the new sub windows.
- The ROM data not being initialized with zeros.
- IOController and HardwareStates returning something when power is off.
- The IOControllerView.
- "loadConfig" function in MainWindow.
- "removeAllDevices" function in Computer.
- "split" function in utils.
- "loadConfig" function in MainWindow that load a CSV file. This file tell which device to put in the computer at the start.
- An argument "configFile" in main.
- Makefile to not do everything in once but to compile each C++ files into object files and link them.
- Refactor to divide "graphic" namespace into "view" and "window".
- Computer floppy to be a local variable instead of a class one.
- .sh and run scripts.
- Some debug prints in menu actions.
- ROM load function to ignore data above the ROM size.
- Typo in function name "removeIODevice".
- Try to fix a bug of object not being deleted in the Bus.
- Removing a non-existing IO device making the app crash.
- A crash when the vpu or the keyboard is not present and try to be use in the MainWindow.
- split function in Linker (it uses the utils one instead)
- New command for the SASM language named "extern" to declare a label with its address declare in another file.
- A basic linker to link compiled SASM files.
- "getDir" function to get the directory of a filename.
- "saveString" function to save a string into a file.
- Link script (bat and sh).
- printWarning when conversion falied in "hexTxtToBin"
- Char constant are now public instead of private.
- Assembler to generate an SASMLB (SASM LaBels) file with all the labels addresses.
- Main file by adding a third choice to run the linker.
- EXT program by moving the end (5A) into EXT_end and declaring FCT_PRINT extern.
- String in write_boot and EXT programs to be more useful.
- SAPHYR I program not waiting for the FDC to finish reading when booting on floppy.
The "Saphyr-I and 2.0 Graphics" update.
- A manual explaining how to install the SAPHYR I and use it, how it works, how to program it and other things.
- The manual in Markdown.
- Images used in the manual.
- A "Duo" Node for representing one command with two value.
- Possibility to declare and use constants.
- Refactor duplicate code to functions.
- A "printWarning" function.
- Add a "sfmlKeyToSAPHYRKey" function.
- A "unlockSet" function to VRAM.
- A new Floppy class to represent the content of a floppy disk.
- A FDD (Floppy Disk Drive) Device to read and write floppy disks.
- A FDC (Floppy Disk Controller) Device to control the FDD.
- Default devices to Computer:
- a FDD
- a FDC
- a floppy automatically inserted in the FDD (loaded from file "floppy.img")
- 512bytes RAM for the FDC
- 32K ROM on the EXT port (loaded from file "ext").
- New functions for the Computer. (isDriveActive and isDriveLock)
- A buzzer that produce square waves to HardwareStates.
- A timer that loop from 0 to 255 during a second to HardwareStates.
- Textures of the floppy drive to use in the ComputerWindow.
- A square wave sound "square.wav".
- New test programs:
- test_floppy_fm_read: Read sector 0 on track 0 of the floppy directly with FM encoding.
- test_floppy_fm_read_head: Read sector 0 on track 1 of the floppy directly with FM encoding.
- test_floppy_fm_write: Write sector 0 on track 0 of the floppy directly with FM encoding.
- test_floppy_fm_write_head: Write sector 0 on track 1 of the floppy directly with FM encoding.
- write_boot: Write a boot sector on the floppy with the FDC.
- EXT: Program that can boot on a 32K ROM in the EXT port.
- New example programs:
- fdc_write: Write sector 0 on track 0 with the FDC.
- fdc_read: Read sector 0 on track 0 with the FDC.
- keyboard: Read the keyboard input and put the typed character on the screen.
- screen_fill_vsync: Fill the screen with random value and make sure it does by checking the vsync.
- sound: Play all the possible sound of the buzzer.
- sound_pattern: Play a pattern of sound with the buzzer.
- The SAPHYR_I Program that is the default program on the SAPHYR I 4K ROM. Features included:
- Run a program on a floppy or a EXT device that is bootable.
- Basic error detection.
- Can create and use a stack.
- Can declare functions, routine and subroutines.
- Have some basic useful routines.
- Print text on the screen in a "terminal/console" way.
- Act based on user input.
- Execute predefined programs:
- A PROMPT program to run other programs.
- A DEBUG program to execute raw hex instruction.
- A PROG program to enter a program in a basic form of the SAMS language. Interprete it and run it.
- Floppy disk drive graphics on the case of the ComputerWindow.
- A 3D model of the SAPHYR I in blender with textures files.
- A processing sketch "ImgToBin" to convert an image into a color indexed image for the SAPHYR I palette.
- A Logisim circuit "keyboard_logic" to represent how the SAPHYR I keyboard works.
- "compile_and_run" script (bat and sh).
- Add debug prints in Device.
- Maximum compiled block size under low CPU frequency.
- Main function return an error code if necessary.
- Hz of the dynamic recompiler can now be set at the start with the Hz argument in main.
- Keyboard now only sending the key to the IOController.
- Keyboard layout to be more accurate with the SAPHYR I keyboard.
- flag in "connected" register in HardwareStates not being set properly.
- Buttons (on and off) textures and the case texture.
- Aseprite files to update the SAPHYR I front panel.
- Add debug prints in MenuAction, View and Window.
- Buttons position on the ComputerWindow to match the new textures.
- Move FontImgToBin sketch into Processing folder.
- Makefile install and flags.
- Update README.
- Block not being deleted when resetting.
- Time to wait for CPU cycle not being correct when resetting.
- IOController and Keyboard local variables type and steps order in run.
- Cycle refresh not send to devices during reset.
- VPU color2Mode performance issue.
- Incorrect framerate.
- Sub Windows not being removed.
- Same window being able to open multiple times.
- MainWindow closing before the computer had stop.
- The old computer interpreter and compiler.
- Old assembler and interpreter from main.
- Programs for the old version.
- The test submenu on MainWindow.
- A new type of Device called IODevice.
- An IOController IO Device to communicate with IO Devices.
- A Keyboard as an IO Device.
- Functions to the computer to connect/disconnect IO devices.
- A keyboard to port 0 of the computer.
- A length function to the ROM.
- A refreshCycle function to devices.
- IO hardware states.
- A Rom view and a Rom window.
- A IOController view and a IOController window.
- A test program named test_io.
- "TEST" to "TESTING" in verifCPU.
- Remove some useless lines of comment/code.
- Non ASCII character are now reduced to 8bit hex value (and not 32bit hex number).
- Device not able to redefined base functions.
- Ram view page are now limited to the ram size.
- New functionalities in SASM assembler:
- New types (binary (use '~'), char, string).
- Assembler command (command start with a "@")
- a new command "origin" to set the current address.
- Import are now done by using the command "import".
- Write the low/high address of a label (e.g. "label:l" for low address, "label:h" for high address).
- A VRAM device (like a RAM but with a lock, mainly use with a VPU).
- A drawState register to the VPU.
- An HardwareStates device (for now it is only used to see if other devices are connected).
- Submenu to graphical menu.
- Vertical graphical menu.
- A RamView and a RamWindow.
- Device views in the menu of ComputerWindow (only RAMs for now).
- Update the SASM language highlight extension.
- Update the verifCPU program to be in line with the new syntax.
- The VPU RAM to a VRAM.
- The VPU draw cycle by adding a V-blank period which unlock the VRAM.
- Bus errors now telling the address when set/get at an unconnected location.
- Default frequency to 15625 Hz.
- Computer test architecture by adding an HardwareStates device.
- MainWindow and ComputerWindow menu.
- Performance by declaring string only when necessary and by using the "-01" flag.
- Random number generation for register R overwriting register J1.
- Devices having no names.
- Assembler cleaning the terminal when error occurred.
- The screen_fill program not setting the VPU mode at the start.
- In FontImgToBin, a prefix for hex number.
- A screen_fill program.
- Some sh scripts (run, run-debug, assemble) for Linux.
- The VPU device with its 4 display modes.
- The VPU View.
- A runMainWindow function in main.
- A scale option for MenuView.
- SHR instruction for x86 and x64 emitters.
- TODO in README.
- Logisim Saphyr-1 (added EXT chip and updated architecture).
- S257_info flag information.
- Computer test architecture.
- Registers reset in CPU.
- Default screen in MainWindow to the VPU screen.
- Makefile install for Linux.
- Registers display in CPUWindow.
- R register random value, to be more accurate with the 'RNG' of the S257-01.
- Debug string made even when not printing.
- Translater blocks not deleting when SET data.
- In run.sh useless cd.
- The testGraphicDynarec function.
- asssemble.bat
- A pins section in S257_info.
- An updated version of the S257-01 Logisim CPU with it's PLA file.
- run.bat to pass the file as an argument.
- verifCPU to remove carry flag when not needed and SET at 1808h instead of 8008h.
- The name of S257-01.circ to S257-01_old.circ
- The name of PLA_CU.txt to PLA_CU_old.txt
- Computer constructor to choose which file to load into the ROM.
- The RAM size to 1Kb and address to 1800h.
- The Bus error messages when communicating with nothing.
- The carry flag when using CMP to be set when src(unsigned) >= val(unsigned).
- Translater SET and GET end block messages.
- A wrong index for register C in S257_info.
- Buffer execution not working for Linux.
- Execstack flag in Makefile.
- "Saphyr I" casing image (aseprite and png).
- "saphyr_I" Aseprite file.
- MenuActions to operate the computer (Hz+, Hz-, RST, PWR).
- A "Resource used" section in README.
- An abstract class View
- A length function in RAM.
- Scripts run.bat and run-debug.bat.
- The CPUWindow class.
- A menu in ComputerWindow to show the CPUWindow and have basic control on the computer.
- A ScreenSimpleView (screen to show a RAM content with on/off pixels).
- A Screen to MainWindow and a key (F2) to show/hide the menu.
- README.
- Devices type to a string.
- Devices functions and constructor in Computer.
- MenuView by changing the colors and extending View.
- ROM to print a debug message if set() is called.
- main function to not clear the terminal at the end in debug mode.
- ComputerWindow to show information only about the computer (not the CPU) in a more graphical way.
- Menu options in MainWindow.
- MainWindow not refreshing every frame.
- Sub windows not working after the main window has been closed.
- CPU not resetting.
- RAM not resetting its memory.
- Spell mistakes in CHANGELOG and README.
- addROM and addRAM functions in Computer.
- Assembly section in S257_info.md.
- Example program with its variable file (the one that is in the SASM VS-Code extension).
- A script run-test (bat and sh) to run some test and the verifCPU program.
- A name to Device.
- A Menu and MenuAction classes.
- A MenuView class to display and interact with the menu.
- A openSubWindow function to Window.
- A menu and its view to MainWindow.
- S257_info.md location to data folder.
- testTranslater2 to have the file to use in parameter.
- main to pass the file to testTranslater2 and have a test argument.
- gitignore.
- MainWindow by sending mouse events to the menuView and overriding openSubWindow.
- Update timeline.
- Makefile when removing bin folder for Linux.
- The bus and deleteBlocks in Translater.cpp.
- Performance by adding a frame limit to the Window.
- Some print functions and a clear function to the console file.
- A new Device: the ROM
- Some control keys to ComputerWindow to change the CPU frequency.
- Comments in hextxtToBin and Translater.
- Folders structure by moving progs and fonts to a data folder and conception.txt to the oldStuff.zip
- The debugging display in many files (all the compiler files, main, etc) to use functions in the console file.
- Global files functions location that are now in global.cpp.
- Translater to have a less repetitive code.
- verifCPU by changing the requirement for SET instructions.
- The makefile to "install" file locate in the data folder.
- A bug in the viewport ratio due to a loss of precision between an integer and a float.
- The compiled SASM files and both main_old and main_thread files.
- A Computer class to manage a configuration of Devices.
- An abstract class Window to create a graphical interface.
- Multiples Window classes:
- BaseWindow: just a blank window.
- MainWindow: for now it is just used to contain the computer and open a ComputerWindow.
- ComputerWindow: displays some basic information about the computer and allows you to power it on or off.
- A testGraphicDynarec to test if the Computer can be manage by multiple Window.
- A handler for code RST to the Translater.
- A initStep and runStep function that execute one block to the Translater.
- A new constructor in the CPU.
- Abstract Device class by adding a pwr and type variable and a reset function.
- Extended classes of Device to fit the new changes.
- Bus by adding a getDeviceAdr function.
- RAM set and get functions to be use if the power is on.
- CPU run function to use either the run or runStep function of the Translater and the reset function.
- main case 2 to test the testGraphicDynarec and not testing anything else if the debug is false.
- A zip file containing old projects which are the "old version" of the current project. It contains the Logisim files of the BCM and its resources, the old assembler in c++ and other things.
- A timeline of old projects.
- A README for the "old stuff".
The "Dynamic Recompiler" update.
- An Emitter86 and Emitter64 class.
- Registers to the x86REG and x64REG enums.
- A write64 function to the Buffer class.
- Hz to the CPU.
- A limit to the size of blocks in the Translater.
- The Emitter class which became abstract.
- testDynarec and Translater to use an Emitter class base on the OS.
- The runS257Compiler and runS257Interpreter functions by defining them in cpp files.
- The Translator to use the CPU Hz frequency.
- The TODO list in README.
- MAKEFILE.
- The display of the Translater's address when jumping.
- Missing instructions for Emitter and Translater.
- Additional tests in verifCPU to test the instructions :
- SUB
- SBB
- MUL
- DIV
- MOD
- AND
- OR
- JMP
- SET
- GET
- functions in the Emitter to generate a random value and jump if there is no carry.
- The RAM to have an instant write speed if wanted.
- The printCPUState() function in Translater to print more registers.
- Registers R, J1 and J2.
- A verifCPU program to check if instructions of the CPU work. It can check for now:
- 1 type of MOV
- 1 type of CMP
- 4 type of ADD
- 4 type of ADC
- More emitter function (source and target).
- A processing sketch FontImgToBin to transform a black and white image into a binary string.
- Some images to test the sketch.
- More instructions to the translater and the emitter.
- More x86 instructions to the emitter.
- A function to use simple ANSI escape code (mainly to change text color).
- The font in the tools program to be the pix46 font.
- main and translater to use ANSI escape code.
- testDynarec to use a file given by parameter.
- An extension for VS Code to highlight the SASM language.
- README.
- gitignore.
- Devices that are part of the computer. These devices are:
- The abstract Device class
- The CPU: was already there but is now a device.
- The RAM: store temporary data.
- The BUS: connect devices.
- The RunnableDevice class: create a thread to run the device.
- A testDynarec program and function to test the dynamic recompiler.
- Function locations from hpp to cpp files.
- Some files (mainly translater and CPU) to use the new devices.
- Makefile.
- README.
- gitignore.
- The TOO LONG content of the changelog.
- Comments in main file write function.
- README
- Makefile clean
- runS257Compiler.hpp.
- runS257Interpreter.hpp.
- Makefile by adding the -fpermissive flag.
- main function by splitting function into different files (runS257Compiler and runS257Interpreter).
- Useless gitignore in c++ folder.
- A program name "screen" that fill the screen with random value indefinitely.
- A new version of the custom font that is now name pix46.
- Token::ERROR to Token::ERR.
- main to load the pix46 font.
The "Refactor" update.
- A basic dynamic recompiler (can only do few instructions for now). It is composed of 3 level:
- The Buffer: that store instruction in the target assembler.
- The Emitter: that emit target instruction into the buffer with source instruction.
- The Translater: that read compiled source assembler and tell emitters what instruction to emit. It is also running different "blocks" and handle any interrupt.
- An empty CHANGELOG.
- Rename computer folder in computer_old and change all class include with it.
- Update README.
- main function in a number of way by:
- Saying what argument is needed when there is none.
- Changing cases, it is now:
- Case 1: the Compiler/Assembler.
- Case 2: the dynamic recompiler.
- Case 3: the old AssemblerCompiler.
- Case 4: the old computer/interpreter.
- Other case have been removed.
- The useless (and not very functioning) build.bat.
- update tools program (change can be seen in tools_version.txt)
- time program.
- A bug about Hz in Computer and main.
- A reset function to all Devices.
- Buttons to change Hz while the program is running.
- A Node type name NodeMov2L.
- Subdirectories to prog (example, test and toolsProg).
- The "Device update" of the tools program.
- A changelog of the tools program (tools_version.txt).
- Error messages when compiling tell where the error occurs in the source file.
- Update most of the assembler class to use the NodeMov2L and update error messages.
- Move each program to their respective subdirectory.
- a bug about jump instructions in the CU
The "New SASM Compiler" update.
- A new and better SASM Compiler/Assembler and add new features to SASM language. This new Compiler work in 3 phases:
- Phase 1 (the Lexing phase): This phase will try to decompose the source code into token, words (not necessarily string of characters) that the language can understand. This phase uses the classes:
- Token: represent a token.
- Lexer: do the lexing part.
- Position: represent a position in the source file.
- Phase 2 (the Parsing phase): This phase will use tokens and make "sentences" that have a "meaning". It will construct a tree like structure with different "nodes". This phase uses the classes:
- Parser: do the parsing.
- Node: an abstract class representing a node in the parser tree.
- NodeBin: node for binary instruction.
- NodeBinL: node for binary instruction with a label.
- NodeMov: node for mov instruction.
- NodeMov2: node for get instruction.
- NodeMovL: node for get instruction with a label.
- NodeTri: node for trinary instructions.
- NodeUni: node for unary instructions.
- Phase 3 (the Interpreting phase): This phase will use the "meaning" of the tree structure of the Parser to translate it to another language (in this case binary SASM). It will use the Interpreter class.
- Phase 1 (the Lexing phase): This phase will try to decompose the source code into token, words (not necessarily string of characters) that the language can understand. This phase uses the classes:
- New programs "a" and "b" with new SASM functionality (like include) to test the new Compiler.
- Case 6 to main to test the new Compiler.
- New functions to main named writeFile and openFile.
- openFile in global.hpp.
- All programs to fit the updated SASM language.
- Unused programs (test, test1, test2 and testCompiler).
- Location of all classes about the computer in a folder name "computer".
- Update Makefile.
- 16bits subtract function in tools program.
- Functions that are now possible.
- New functions:
- SYST_FCT1_PROLOGUE: to call when starting a function.
- SYST_FCT1_EPILOGUE: to call when ending a function.
- FUNC_TEST, FUNC_TEST_2 and FUNC_TEST_3 to test function call and callback.
- FUNC_RECURSIVE to test recursion.
- Display of rect and font in Keyboard, Computer and CPU.
- A bug about address in the CPU.
- A bug with JMP instructions in the CU of the CPU.
- Fix 16bits addition
- Registers (G0 to G5) in default AssemblerCompiler configuration.
- A pause variable and functions (setPause and getPause) to the CPU.
- A key to pause the Computer.
- A new program call "tools.sasm" that can:
- Call "function" and jump back (maybe).
- Call "function one call" and jump back, the difference with "function" is that they cannot call other "functions (one call or not)".
- Add 2 16bits numbers.
- Compare 2 16bits numbers.
- Display function to the DISK and the RAM.
- Display function of the CPU.
- Something in AssemblerCompiler.
- The carry flag in the CPU.
- Control key to Keyboard with multiple function (setData, getControl and setControl).
- A new Device ScreenSimple.
- Case 5 in main to send control character from the user to the Keyboard and replace the Screen with a ScreenSimple.
- test_com_io to send keyboard input to the screen instead of random value.
- A bug about the random register in CPU.
- A bug about garbage in the result of the ALU in CPU.
- A bug about Computer cycle.
- Program test_com_io and program time.
- getData and setData in Screen.
- Unsigned numbers mode to CPU.
- Program to test unsigned number.
- display function to CPU.
- A new Timer Device.
- A program to test the Timer Device.
- A thread to run the Computer.
- Update Makefile.
- All SASM programs location to a new folder "prog".
- Computer display function now display the CPU.
- clk and stp count in halfCycle function in Computer.
- A bug about signed number mode in CPU.
- Unused functions in AssemblerCompiler.
- Unused variables in Screen.
The "SFML" update.
- jumpback registers (J1 and J2).
- jumpback registers to default AssemblerCompiler configuration.
- A display and setKey functions to Keyboard.
- A halfCycle function to Computer.
- A program function.sasm to test call and callback of "function".
- Case 5 to run the Computer and display it.
- Reformat files.
- architecture_info about jumpback registers.
- A bug about step in Computer.
- A bug when the CPU can't find a device.
- Default constructor to Device.
- display function to Screen.
- Case 5 in main function to test SFML and show Computer information without running it.
- A custom font test.ttf (4*6 pixel) with the ASCII character set.
- A baseFont global variable in global.hpp.
- A display function in Computer that show on a window information about the state of the computer (Hz, cycleCount, pwr, adr, data, clk, stp, ld)
- Makefile to include SFML libraries.
- main function to load the new font.
- rawConsole function in console file to set the terminal in raw or not.
- cycleCount and Hz in Computer class.
- test_com_io can now quit when the escape key is pressed.
- main to use rawConsole in case 2 and 4.
- main function to clear terminal in the start, case 3, case 4, and end of the program.
- main function to use Hz and cycleCount of Computer.
- Warning about unsigned integer comparison.
- Use rawConsole to fix a bug about input in Linux terminal.
- Keyboard get_Key function for Linux and changed return type from char to int.
The "Basic Computer" update.
- New devices that are:
- The RAM to store temporary data used by the computer.
- The Keyboard to get user inputs.
- The Screen to send outputs to the user.
- A program name test_com_io.sasm to test new devices.
- main file by adding new case:
- Case 2 to test Keyboard class
- Case 3 to test and Screen class.
- Case 4 to test the Computer with all Devices with the test_com_io program.
- Computer class print function that caused previous information to be reprinted.
- A bug in Keyboard class that caused the keyboard to get and send wrong data.
- A bug in AssemblerCompiler about empty string.
- print function of the CPU to display register correctly.
- print function of the Screen to display the screen correctly.
- A bug in Device to initialize data correctly.
- The Device abstract class.
- A global.hpp file with a global variable to print debug messages.
- A file (console.hpp and console.cpp) allowing the terminal/console to understand the ANSI escape code if it is not already the case.
- A print function to CPU class and Computer class.
- Computer class to handle multiple Device classes.
- DISK class to extend Device class.
- main Computer case to test if the Computer work with multiple devices.
- The test file into two parts to be able to test several disks in the main function.
- All classes and the main file to print debug information when the global variable for this effect is set.
- main function to use console.hpp
- The Computer class.
- main file by replacing "CPU case" by "Computer case".
- The DISK class that is used to store informations.
- CPU case in main file to work with the DISK class.
- test file, a compiled version of test_logisim.sasm.
- The CPU case in main function.
- A bug about zero register and random register not correctly update at each cycle.
- Registers G, H, I and J from default configuration of AssemblerCompiler.
- The CPU class that emulate the S257-01 CPU (note: need to be tested).
- main function to choose what to run between the AssemblerCompiler and the CPU.
- architecture_info by updating the instructions set.
- Some warning about unsigned integer comparison.
- JMP instructions to testCompilerAllInstruction.
- More instructions to be tested in test_logisim and MEM_INS_TEST.
- The SCA is now called S257-01 (for Safyrus CPU model 257 version 01) and so SCA.circ is renamed as S257-01.circ.
- SCA files are renamed as SASM (Safyrus ASeMbler) files.
- architecture_info.txt and conception.txt
- AssemblerCompiler default configuration.
- An argument type to AssemblerCompiler named EMPTY.
- In testCompiler an instruction to test the EMPTY type.
- test_logisim.sac that tests the different instructions.
- MEM_INS_TEST that tests instructions in Logisim's ram format.
- main to get from the user the path of the source code and compile program.
- AssemblerCompiler default configuration (add registers, R, G, H, I, J).
- Bugs when converting to binary.
- PLA_CU opcodes.
- SCA circuit.
- MEM_TEST (it is now MEM_INS_TEST)
The "AssemblerCompiler" update.
- In AssemblerCompiler the saving of sac file into text files representing the binaries values of the program (note: requires more tests and cannot save all the information of the source file, like a label)
- Default registers value (A, B, C, D, E, F) in AssemblerCompiler default configuration
- main file to test the saving of "compile" files
- The AssemblerCompiler can now detect instructions, arguments and check if they are correct (note: will have to check all cases).
- In testCompiler correct and wrong instructions.
- A file named testCompilerAllInstruction.sac to test if the compiler recognizes all correct instructions.
- A default configuration (name of instructions, arguments and opcode values).
- Data structure of AssemblerCompiler.
- In AssemblerCompiler comments detection.
- Multiple correct and wrong comments in testCompiler.
- Data structure in AssemblerCompiler.
- Label detection in AssemblerCompiler.
- Comments detection in AssemblerCompiler.
- In AssemblerCompiler the detection of labels, wrong labels.
- In testCompiler correct and wrong labels.
- A gitignore to the c++ folder.
- In AssemblerCompiler the opening, reading and closing of files.
- build.bat.
- gitignore.
- main function to test AssemblerCompiler.
- Rename AssemblerTranslate to AssemblerCompiler.
- main message to "Nothing here for now, just press enter and leave".
- AssemblerCompiler by putting "false" everywhere.
The "Logisim" update.
- A LICENCE (GNU GENERAL PUBLIC LICENSE).
- A .gitignore.
- An SCA (Safyrus Computer Architecture) Logisim circuit.
- A PLA_CU (Control Unit PLA configuration) file.
- Some test programs (MEM_TEST, MEM_TEST_BASE_INS).
- Notes about SCA (architecture_info.txt and conception.txt)
- A build.bat.
- A MAKEFILE.
- A AssemblerTranslate class base structure. This class can convert (not for now) SAC (Safyrus Assembler Code) files to compile SAC files.
- A basic hello world main file.
- A testCompiler SAC program to test if the AssemblerTranslate will work.