<commit_before># gtemuAT67
gtemuAT67 is an emulator, a cross assembler for both vCPU and Native asm code, a debugger, a monitor<br/>
and a real time controller for the Gigatron TTL microcomputer; written in C++ using SDL2.<br/>
This project provides support for Microsoft Windows and should be compatible with Linux, MacOS<br/>
and possibly even Android. As of v0.6.6 it has only been tested on Microsoft Windows10 and Linux.<br/>

## Features
- Can control real Gigatron hardware through an Arduino interface.<br/>
- Can upload vCPU, GCL and GT1 files to real Gigatron hardware through an Arduino interface.<br/>
- Emulates a PS2 Keyboard for vCPU, GCL code that can use PS2 hardware, such as WozMon.gt1<br/>
- Variable timing from a minimum of 60FPS up to whatever your PC can handle.<br/>
- Synchronisation of audio with video at any FPS at or above 60FPS.<br/>
- Gigatron TTL emulator using SDL2, tested on Windows 10 x64, compiled with VS2017.<br/>
- Supports fullscreen optimised rendering.<br/>
- Supports Gigatron TTL input buttons.<br/>
- Supports Gigatron TTL LED display.<br/>
- Supports Gigatron TTL audio channels.<br/>
- Supports Gigatron TTL loading of external vCPU code with a file browser.<br/>
- Displays Gigatron TTL IN and XOUT registers.<br/>
- Displays memory monitor of RAM, (**_RAM is editable_**), ROM0 and ROM1 at any start address.<br/>
- Displays read only contents of vCPU variable space.<br/>
- Can execute hand crafted code within the Hex Editor.<br/>
- Three separate editable start addresses are provided; memory display address,<br/>
  vCPU vars display address and load start address.<br/>
- A built in assembler can now assemble vCPU as well as Native mnemonics.<br/>
- A preprocessor that is able to include files and expand parameterised macros.<br/>
- A debugging mode that lets you pause the simulation or single step through vCPU code.<br/>
- Upload assembled vCPU code to RAM.<br/>
- Upload assembled Native code to ROM, (**_emulation only_**).<br/>
- Supports the Gigatron TTL's .**_gt1_** object file format.<br/>
- An inbuilt file and directory browser for uploading.<br/>
- Multiple scanline disable options, (default key **_F3_**, **_emulation only_**), will disable scanlines<br/>
  offering large amounts of extra processor time for vCPU code.<br/>
- Input keys easily configurable through an INI file.<br/>
- On screen help menu, (accessible with 'H/h' by default), that fully explains each key and it's function.<br/>
- Optional configuration files, "**_graphics_config.ini_**", "**_input_config.ini_**", "**_loader_config.ini_**" and<br/> "**_high_scores.ini_**".<br/>
- You may now start the executable anywhere, the default ROM file and default font are now built into the<br/>
  executable.<br/>

## YouTube
- https://www.youtube.com/watch?v=pH4st5dz7Go<br/>
- https://www.youtube.com/watch?v=u5AQCd47IcI<br/>
- https://www.youtube.com/watch?v=sq8uCpBFwp8<br>

## References
- Gigatron TTL Home: https://gigatron.io/<br/>
- Gigatron TTL Forums: https://forum.gigatron.io/index.php<br/>
- Gigatron TTL Repo: https://github.com/kervinck/gigatron-rom<br/>
- SDL2 graphics:  https://github.com/kervinck/gigatron-rom/pull/1<br/>
- Early Gigatron emulation:  http://talkchess.com/forum/viewtopic.php?t=65944&start=11<br/>
- Dirent for Windows:  https://github.com/tronkko/dirent<br/>
- Recursive Descent Parser:  https://stackoverflow.com/questions/9329406/evaluating-arithmetic-expressions-from-string-in-c<br/>
- INI Not Invented Here:  https://github.com/jtilly/inih<br/>
- rs232: https://github.com/Marzac/rs232<br/>

## Contributors
- at67 https://github.com/at67<br/>
- kervinck https://github.com/kervinck<br/>
- Cwiiis https://github.com/Cwiiis<br/>
- xxxbxxx https://github.com/xxxbxxx<br/>

## Building
- CMake 3.7 or higher is required for building, has been tested on Windows with Visual Studio and gcc/mingw32<br/>
  and also built and tested under Linux.<br/>
- A C++ compiler that supports modern STL.<br/>
- Requires the latest version of SDL2 and it's appropriate include/library/shared files.<br/>

## Windows
- Download and install cmake<br/>
- Download sdl2 development libraries https://www.libsdl.org/release/SDL2-devel-2.0.9-VC.zip<br/>
- Clone or download https://github.com/kervinck/gigatron-rom<br/>
- cd gigatron-rom\Contrib\at67<br/>
- cmake .<br/>
- make<br/>
- **Optional:** if you want to be able to develop using SDL2 without having to configure the include and lib variables<br/>
  for each new project, then just add a the environment variable **SDL2DIR** pointing to the directory you installed SDL2 into.<br/>
  
## Linux  
- sudo apt-get -y install cmake libsdl2-dev<br/>
- git clone https://github.com/kervinck/gigatron-rom<br/>
- cd gigatron-rom/Contrib/at67<br/>
- cmake .<br/>
- make<br/>
- ./gtemuSDL &<br/>

- For detailed instructions for Windows, Linux and macOS, see this thread in the Gigatron forum:<br/>
  https://forum.gigatron.io/viewtopic.php?p=368#p368<br/>
  
## Installation<commit_msg>README.md formatting<commit_after># gtemuAT67
gtemuAT67 is an emulator, a cross assembler for both vCPU and Native asm code, a debugger, a monitor<br/>
and a real time controller for the Gigatron TTL microcomputer; written in C++ using SDL2.<br/>
This project provides support for Microsoft Windows and should be compatible with Linux, MacOS<br/>
and possibly even Android. As of v0.6.6 it has only been tested on Microsoft Windows10 and Linux.<br/>

## Features
- Can control real Gigatron hardware through an Arduino interface.<br/>
- Can upload vCPU, GCL and GT1 files to real Gigatron hardware through an Arduino interface.<br/>
- Emulates a PS2 Keyboard for vCPU, GCL code that can use PS2 hardware, such as WozMon.gt1<br/>
- Variable timing from a minimum of 60FPS up to whatever your PC can handle.<br/>
- Synchronisation of audio with video at any FPS at or above 60FPS.<br/>
- Gigatron TTL emulator using SDL2, tested on Windows 10 x64, compiled with VS2017.<br/>
- Supports fullscreen optimised rendering.<br/>
- Supports Gigatron TTL input buttons.<br/>
- Supports Gigatron TTL LED display.<br/>
- Supports Gigatron TTL audio channels.<br/>
- Supports Gigatron TTL loading of external vCPU code with a file browser.<br/>
- Displays Gigatron TTL IN and XOUT registers.<br/>
- Displays memory monitor of RAM, (**_RAM is editable_**), ROM0 and ROM1 at any start address.<br/>
- Displays read only contents of vCPU variable space.<br/>
- Can execute hand crafted code within the Hex Editor.<br/>
- Three separate editable start addresses are provided; memory display address,<br/>
  vCPU vars display address and load start address.<br/>
- A built in assembler can now assemble vCPU as well as Native mnemonics.<br/>
- A preprocessor that is able to include files and expand parameterised macros.<br/>
- A debugging mode that lets you pause the simulation or single step through vCPU code.<br/>
- Upload assembled vCPU code to RAM.<br/>
- Upload assembled Native code to ROM, (**_emulation only_**).<br/>
- Supports the Gigatron TTL's .**_gt1_** object file format.<br/>
- An inbuilt file and directory browser for uploading.<br/>
- Multiple scanline disable options, (default key **_F3_**, **_emulation only_**), will disable scanlines<br/>
  offering large amounts of extra processor time for vCPU code.<br/>
- Input keys easily configurable through an INI file.<br/>
- On screen help menu, (accessible with 'H/h' by default), that fully explains each key and it's function.<br/>
- Optional configuration files, "**_graphics_config.ini_**", "**_input_config.ini_**", "**_loader_config.ini_**" and<br/> "**_high_scores.ini_**".<br/>
- You may now start the executable anywhere, the default ROM file and default font are now built into the<br/>
  executable.<br/>

## YouTube
- https://www.youtube.com/watch?v=pH4st5dz7Go<br/>
- https://www.youtube.com/watch?v=u5AQCd47IcI<br/>
- https://www.youtube.com/watch?v=sq8uCpBFwp8<br>

## References
- Gigatron TTL Home: https://gigatron.io/<br/>
- Gigatron TTL Forums: https://forum.gigatron.io/index.php<br/>
- Gigatron TTL Repo: https://github.com/kervinck/gigatron-rom<br/>
- SDL2 graphics:  https://github.com/kervinck/gigatron-rom/pull/1<br/>
- Early Gigatron emulation:  http://talkchess.com/forum/viewtopic.php?t=65944&start=11<br/>
- Dirent for Windows:  https://github.com/tronkko/dirent<br/>
- Recursive Descent Parser:  https://stackoverflow.com/questions/9329406/evaluating-arithmetic-expressions-from-string-in-c<br/>
- INI Not Invented Here:  https://github.com/jtilly/inih<br/>
- rs232: https://github.com/Marzac/rs232<br/>

## Contributors
- at67 https://github.com/at67<br/>
- kervinck https://github.com/kervinck<br/>
- Cwiiis https://github.com/Cwiiis<br/>
- xxxbxxx https://github.com/xxxbxxx<br/>

## Building
- CMake 3.7 or higher is required for building, has been tested on Windows with Visual Studio and gcc/mingw32<br/>
  and also built and tested under Linux.<br/>
- A C++ compiler that supports modern STL.<br/>
- Requires the latest version of SDL2 and it's appropriate include/library/shared files.<br/>
- For detailed instructions for Windows, Linux and macOS, see this thread in the Gigatron forum:<br/>
  https://forum.gigatron.io/viewtopic.php?p=368#p368<br/>

## Windows
- Download and install cmake.<br/>
- Download sdl2 development libraries https://www.libsdl.org/release/SDL2-devel-2.0.9-VC.zip<br/>
- Clone or download https://github.com/kervinck/gigatron-rom<br/>
- cd gigatron-rom\Contrib\at67<br/>
- cmake .<br/>
- Open gtemuAT67.sln into Visual Studio, compile and execute.<br/>
- **Optional:** if you want to be able to develop using SDL2 without having to configure the include and lib variables<br/>
  for each new project, then just add a the environment variable **SDL2DIR** pointing to the directory you installed SDL2 into.<br/>
  
## Linux  
- sudo apt-get -y install cmake libsdl2-dev<br/>
- git clone https://github.com/kervinck/gigatron-rom<br/>
- cd gigatron-rom/Contrib/at67<br/>
- cmake .<br/>
- make<br/>
- ./gtemuSDL &<br/>

## Installation
{'fraction_non_alphanumeric': 0.1231826329416451, 'fraction_numerical': 0.017924716191993626, 'mean_word_length': 4.129213483146067, 'pattern_counts': {'":': 0, '<': 147, '<?xml version=': 0, '>': 147, 'https://': 38, 'lorem ipsum': 0, 'www.': 8, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 6, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '1319894', 'n_tokens_mistral': 3382, 'n_tokens_neox': 3169, 'n_words': 1135}