------------------------------------------- Friday, 02.10.20, 12:00h CompSim v0.8.9a ------------------------------------------- Wow!! This time we broke the record! More than a year to launch a new release of CompSim - The Computer Simulator. But, we have a good reason: lots and lots of really great news and improvements. So, we are betting all our chips that you will agree with us: perhaps this is the greatest release ever. Please, enjoy it and feedback us!! ;-) -- 1. DEVICES: - Added a new subsystem for pluggable devices. - The new pluggable devices: - Must implements a generic software interface available at the 'devices.py' file. This file must describe the interface with the CPU and the peripheral behaviors. - Its interfaces must be described by a .csd (CompSim Device) file format. - The pluggable devices files (.py and .csd) must be placed at a folder inside the 'devices' folder. - At the platform creation, the pluggable device will be loaded and connected automatically to the peripheral bus. - So, from now, the old devices "Video", "Keyboard" and "Arduino" became themselves pluggable and they are no more integrated to CompSim main window. 2. ASSEMBLER: - The assembler now supports new array definition modes by means of the following statements: - INITD is used to initialize an array of integers. Integers or variables (in this last case, the address of them) can be used to set the array. Ex: a: INITD 1,2,3,4,5,6 Ex: b: INITD var1, var2, var3 Ex: c: INITD 1,2, var1, var2 - INITB is used to initialize a mixed array of chars or integers or strings or some of them. Ex: a: INITB 'a','b','c' Ex: b: INITB "hello","world",0 Ex: c: INITB 'h','e','l','l','o',"world",0 - MOV instruction: - Bug corrected. Now, MOV truncates its parameter to fit to 12-bits integer between 0 and 4080. It is important to point out that from 4081 to 4095 is reserved to address the registers. Ex: MOV 0xffff will be trunced to MOV 0xfff - MOV now can be used to copy data from registers CS, DS, SS and SP to AC. Ex: The instruction bellow copy data into AC to CS. MOV -@CS - Besides numbers and registers names, MOV has been extended to support variables address moving to AC and 12-bits Addresses. Ex: MOV var1 -> It will moves the memory address of the var1 variable to AC Ex: MOV @0xfff -> It will move the memory addres 0xfff to AC - Instructions which refers to memory (LDA, STA, INT, CALL, ADD, SUB, SOP, JMP, JN, JZ, LDI, STI, NAND, SHIFT): - Now, besides variables names, they accept 12-bits addresses (decimal, binary and hex formats). The addresses numbers must be preceded by the '@' symbol. Ex: LDA @0x123 -> It will load to AC the memory content pointed by 0x123 address. - Data section (.data): - Now, it is optional to define data structures. You just can do nothing here, if you want. But attention: the code structure remains having to have the three basic sections (.code, .data and .stack). In this case, Data Segment register (DS) points to Stack Segment beginning (SS). - ORG Statement: - The statement ORG can be used into .code, .data and .bss segments to alter the location counter setting a new origin for subsequent statements. Ex: In the code bellow, ORG is being used to set five empty addresses between the INT instruction and .data segment. INT end ORG 5 .data 3. SYSTEM EMULATOR: - Added a system (platform and software) emulator which runs over an Arduino UNO board. The idea here is, after the system validation, the students/designers can export it to run as an arduino application. This way, the created system will be executed in standalone mode (without needed for CompSim simulator use), thus composing a full embedded system solution. - To export the system to an arduino UNO board, a new item has been added to the menu of CompSim: "System -> Export to Arduino UNO". This last one has two export options: - "Emulator": this is the default option. The student/designer must inform the number of instructions which the emulator will execute in a period of a second (frequency). This way the designer can adjust the emulated system performance. - "Debugger": similar to previous item, the new one can export a system debugger to a custom Arduino UNO board. The board must include an OLED display and four push buttons, connected to pins 4, 5, 6 and 7 of the arduino board. The OLED display will show the main registers of the Cariri processor (e.g. PC, CS, DS, IR and so on) and the push buttons can be used to step the system emulation (pin 7), run the entire system emulation (pin 6), stop system emulation (pin 5) and reset the system emulation (pin 4). 4. NOTEBOOK: - Added 2 new tabs: - "STATUS": This new tab shows all the simulator status messages, such as: success or error in creating files and platform, code analysis, simulation status and so on. - "FLOW": - This tab shows memory address and respective instructions: bytecodes, assembly code and label (if there is one) - During a simulation, FLOW can be used to track the program execution by highlighting the currently instruction being executed and the next instruction to be executed (defined by the data into the PC register). 5. CPU Datasheet: - Added a new entry into the menu "Help". - It contains specifications for each CPU instruction. The specs are basically: flow diagrams, waveforms and RTL descriptions for each instruction. - CPU Datasheet can be directly accessed by the "F2" shortcut. 6. TOOLS: - ASCII Table Converter: -Improvements in the interface and some new checkings into data input fields. - Converter: - Improvements in the interface and some new checkings into data input fields. - DICreator (Device Interface Creator): - Added a new tool. This new tool can be used to create interface files (.py and .csd) with correct syntax for new pluggable devices (see above). 7. CODEHELPER: - CodeHelper has been updated to: - Show syntax rules for each instruction and statement (including the new ones); - Support: - New operation modes of the MOV instruction; - New statements INITD, INITB and ORG; - Adding addresses as parameters of instructions (numbers preceded by "@"); - New registers references modes (-$CS, -$DS, -$SS and -$SP) of the MOV instruction; - New syntax restrictions: Examples: - The RET instruction does not have parameters, so the parameter field will be disabled for it. - The registers buttons will be accessible just for MOV instruction. - The ORG statement has not a label, so the label field will be disabled for it. - Bug fixed: the instructions are now inserted following the sequence in the Code Editor. This way it is possible to code a full program by using a Code Helper. Well, we did it sometimes to have some fun! =D 8. CODE EDITOR: - Color improvements: - The font of Registers code is now in bold format; - The font of Comments is now in italic format; - Addresses are highlighted in red color. 9. CompSim Website: - The CompSim Website has been restructured. - "Home" section now will present news about the CompSim Project. - "About" section presents a brief description of the resources of CompSim simulator. - "Download" section includes different versions of CompSim simulator and the new pluggable peripherals (see above) for downloading. - "Development" section includes new members Team and Alumni. - "Publications" section has been updated. - "Support" section has a link to our new discussion group on the Google pages. We are waiting for you there! ;-) ------------------------------------------- Friday, 23.08.19, 12:00h CompSim v0.8.8a ------------------------------------------- Howdy!! We are proud to announce a new release of "The Computer Simulator". This new one comes with amazing GUI and Tools improvements. We sincerely hope you enjoy it! -- 1.PREFERENCES: - When applying a new preferences configuration (Menu "Edit"->"Preferences"), CompSim creates a "CompSim.conf" file to save last configuration. - This way, when restarting, CompSim loads the preferences configurations saved to "CompSim.conf". 2.ENVIRONMENT: - When exiting, the environment (in edition file path/name and platform configurations) is saved in the file "CompSim.env". - This way, when restarting, CompSim loads the configurations saved to "CompSim.env", so it loads the in edition file and creates a platform with the saved configurations. Attention: the environment will only be persisted if the in edition file is saved and there is a created platform. 3.CODE EDITOR: - Now, when there is some syntactic or semantic error, code editor focus the line with the error. 4.PLATFORM GUI COMPONENTS: - RAM and Cache GUI components now are reseting when "FAST RUN" mode finishes and "RESET" button is clicked (there was a small bug! Sorry!). - CPU's SFR register now has its own frame. This way the individual flags became more visible. 5.NOTEBOOK - Added shortcuts for switching among the tabs: - Ctrl+1 -> Code - Ctrl+2 -> Log - Ctrl+3 -> Stack - Ctrl+4 -> Varibles - Ctrl+5 -> Stats 6.MENU - Added "Views" menu. It enables to switch among the tabs "Code", "Log", "Stack", "Variables" and "Stats". 6.ASCII TABLE Tool: - Added support to convert: 1) string to codes; and 2) comma separated codes to string. 7.CONVERTER Tool: - Added support for converting data among decimal, binary and hexadecimal bases in two's complement format. 8.NEW FILE: - Now, the file name is labeled as "Unsaved*". 9.CPU GUI: - The SFR now has its own panel. This way its possible to see each flag individually and, during a simulation, when a flag is setted, it will be highlighted by red color. ------------------------------------------- Tuesday, 27.11.18, 19:00h CompSim v0.8.7a ------------------------------------------- Heya! Good news, folks: new CompSim release! Yeah!! This time, we reformulated the GUI and performed new performance improvements. Additionally, we are launching a (very experimental) release for Linux 64-bits (with the same resources of the Windows 32|64-bits version). Please, we really need your help to test the Linux version and feedback us. -- 1. GUI: - A new GUI has been released. - The GUI components have been reorganized so that the CompSim main window fits itself up to 1024x768 monitor resolutions; - Arduino Input/Output Buffers GUI components has been added to main GUI window for presenting data going to or coming from Arduino. - Now it is possible to change the colors of the components of the main window (Code, Log, Stack, Variables, CPU, Cache, ...) and change CodeEditor font size. For that, go to "Edit" -> "Preferences" menu option. We really expect you like and enjoy it! ;) 2. Arduino: - A new CompSim-Arduino UNO interface has been developed. - This new one is faster and more accurate. - Now, the communication with Arduino boards is handled by two threads: - The first one manages the serial interface communication; - The other manages the commands coming from CompSim and forward them to first thread; - This way, communication has become simpler and more efficient. - In this release, Arduino MEGA support has been disabled. - For a while, we are improving the CompSim-Arduino MEGA interface. 3. Performance improvements: - A bug has been found so that additional threads were created at each simulation restart (Reset button click). The additional threads consumed many resources (RAM and Processor) carrying out slower simulations. - We improve the code of platform components CPU and Clock to perform faster simulations. ------------------------------------------- Friday, 19.10.18, 19:30h CompSim v0.8.6a ------------------------------------------- Heya, folks! Again, a long time since last update. However, the CompSim team has been working on new features and important fixes. Just as in the last release, CompSim continues focusing on real physical devices and this time we added support to the Arduino MEGA board. In addition, we are trying to improve the learning in computer systems projects, by making the platform confirmations and assembler resources even more flexible. Finally, we started a performance optimization work to make simulations faster and with lower memory consumption. We hope you enjoy it! ;) -- 1. Video (OUTPUT BUFFER) - Auto scroll down when a new line is created in the end of the display. 2. CPU - Bug corrected in NAND instruction. 3. RAM - In form "Customization", has been modified the label "Number of Lines" to "Number of Blocks". - The max number of blocks has been increased to 8192. - Slider to select number of blocks has been modified. Now, it is selected by the power of 2. Ex: - 6 -> 2^6 -> 64 blocks - 7 -> 2^7 -> 128 blocks - 8 -> 2^8 -> 256 blocks - ... - 10 -> 2^10 -> 1024 blocks (8k addresses) 4. Cache - Slider to select number of lines has been modified. Now, it is selected by the power of 2. Ex: - 2 -> 2^2 -> 4 lines - 3 -> 2^3 -> 8 lines - 4 -> 2^4 -> 16 lines - ... - 7 -> 2^7 -> 128 lines - Direct Mapping was modified to get a trade-off between the fields "tag" and "line" Ex: - tag with 1 bit, line with 7 bits - tag with 2 bits, line with 6 bits - tag with 3 bits, line with 5 bits - ... - tag with 7 bits, line with 1 bit 4. Assembler: - Added support for using comments before ".code" - It is necessary for supporting "code headers". - Added support for binary and hexadecimal notation for integer numbers - Ex: 10101b or 10101B - Ex: 0x12AB or 0x12ab or 0x12Ab - Ex: 0X12AB or 0X12ab or 0X12Ab 5. CODE EDITOR: - Added horizontal Scrollbar - Now, code lines can be longer. - Modified code generated by "File"->"New" menu option to support code header. - Corrected Sintax Highlight for decimal integer. - Added Sintax highlight for binary and hexadecimal integers. - Added Sintax highlight for names of labels and variables. - Added Sintax highlight for names of registers. 6. Devices: - Integration to Arduino MEGA - In the "Platform Customization" form, the Arduino board type (UNO or MEGA) can selected. - Arduino MEGA ports are handled as the following: - A, B, C, D, G and L - as Digital Input/Output; - F and K - as Analog input; and - PWM - as Analog output. 7. Performance Optimization: - RAM Consumption Optimization: - From this release, whenever a new platform is created, CompSim will attempt to release the RAM memory consumed by the previous platform. - New "Fast Run" simulation mode: - In this mode, the platform performs simulation without interaction with CPU, RAM, Cache, Clock, Variables, Logs, Stack and Stats GUI components. This way a simulation can be carried out faster. - For supporting it, a "Fast Run" button has been added in the Simulation Controls panel. ------------------------------------------- Tuesday, 20.03.18, 17:30h CompSim v0.8.5a ------------------------------------------- Hi, folks! It was a long time since last CompSim update. Now, CompSim project is taking a bigger step: to support real (physical) devices. We hope you can enjoy creating great new projects. C ya, maker! ;-) -- I.New Features -- 1. New I/O Addressing Interface - Now, it's necessary to add the address of a peripheral to 8 most significant bits of the AC register and combine with older instructions INT 20 and INT 21 (they remain being used as output and input interruptions). 2. Arduino UNO integration - Arduino has been added as a set of peripherals. Arduino ports are handled as the following: - B and D - as Digital Input/Output peripherals; - C - as Analog input peripherals; and - PWM - as Analog output. 3. "New Platform" form - Button takes focus automatically (space bar selects automatically) 4. "Platform Customization" form - Now, it has a "PERIPHERALS" label. Here, we can select the Arduino serial port. 5. New CodeHelper interface - The interface has been updated for a more productive experience. 6. Stat Graphs - The simulation statistics previously presented in LOG View have been modified. Now, they are presented as "Statistical Graphs" and will be displayed in new view called "Stats". 7. Notebook - Code Editor, Log, Stack, Variables and Stats Views have been grouped in a "Notebook" component. 8. New font for input/output buffers - Input/Output buffers have now a new text font (larger and bold). 9. Output buffer - Output buffer is now disabled por keyboard input. 10. Menu 'Help' -> 'Help' - The sub-menu "Help (F1)" now redirects to CompSim website. 11. Logo - CompSim has now your first logo! You can see it in the main page of the project! -- II. Corrections -- 1. Memory Cache Policies - There were bugs in the statistics generated by Associative and Set Associative Caches Policies. 2. Panels - Now, CompSim takes just one instance of "Ascii Table", "Converter", "CodeHelper", "Go to Line..", "New Platform" and "About" panels. 3. Bus decoder - Now, bus decoder does not address devices there are not connected to bus. -------------------------------------------