Skip to content

Commit b2e7cc4

Browse files
committed
Initial commit
0 parents  commit b2e7cc4

File tree

14 files changed

+11924
-0
lines changed

14 files changed

+11924
-0
lines changed

LICENSE

Lines changed: 674 additions & 0 deletions
Large diffs are not rendered by default.

README.md

Lines changed: 96 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,96 @@
1+
# devCMDcycle.py
2+
# Developer Command Cycle v3.01
3+
4+
**Author:** RetroGameGirl (atariage)
5+
6+
**License:** [GNU General Public License v3.0](https://www.gnu.org/licenses/gpl-3.0.html)
7+
8+
A toolchain-agnostic GUI orchestrator for streamlining any command-line development workflow.
9+
10+
# What is devCMDcycle.py?
11+
12+
devCMDcycle.py is a powerful front-end for managing software build environments. Originally designed for Atari 7800 retro development, it has evolved into a flexible tool that can be configured to handle any command-line-driven workflow. It provides a simple, clickable interface to manage complex build steps, eliminating the need to memorize and type repetitive commands.
13+
Whether you are developing for a retro console, compiling C++ code, or managing a web project, devCMDcycle.py acts as your central launchpad.
14+
15+
![alt text for the image](https://github.com/RetroGameGirl/devCMDcycle.py/blob/main/screenshots/devCMDcycle_301_screenshot.png?raw=true)
16+
17+
18+
## Key Features
19+
20+
* **Project-Specific Configurations:** Automatically creates a `devCMDcycle_301.ini` file in your project directory, allowing you to maintain a unique setup for each project.
21+
* **Fully Configurable UI:**
22+
* Define multiple **Toolchains**, each with its own executable path and settings.
23+
* Create up to 10 **Custom Action Buttons** per toolchain with custom names, colors, and commands.
24+
* Set up toolchain-specific **Command-Line Options** with checkboxes for easy toggling.
25+
* **Powerful Command System:**
26+
* Use **placeholders** (e.g., `%f` for source file, `%t` for toolchain path) to create dynamic commands.
27+
* Chain multiple button actions into a single **Composite Command** (e.g., `Button3,Button4,Button6`).
28+
* Run commands in a separate terminal window using the `EXTERNAL:` prefix.
29+
* **Auto-Typer System:**
30+
* Create detailed **Auto-Typer Profiles** to automate interactions with interactive command-line tools (e.g., for creating ROM headers).
31+
* Supports multi-step sequences and dynamic user input via `%b<num>` placeholders.
32+
* **Safe and Self-Contained:**
33+
* Includes a built-in editor to safely modify the script's own factory default settings.
34+
* Automatically creates backups of your configuration (`.ini`) and the script itself when modified.
35+
* **Live Previews:** The UI provides real-time previews of the final commands as you toggle options, helping to prevent errors.
36+
* **Portable:** The application is a single Python script with no external dependencies beyond a standard Python 3 installation with Tkinter.
37+
38+
## Getting Started
39+
40+
Follow these steps to get your first project running:
41+
42+
1. **Place the Script:** Put the `devCMDcycle.py` script in a directory that is part of your system's PATH for easy access.
43+
2. **Launch in Your Project Folder:** Assuming you have python installed and setup, open a terminal or command prompt, navigate to your project's main directory, and run the script:
44+
```bash
45+
devCMDcycle.py
46+
```
47+
A `devCMDcycle_301.ini` file will be created in this directory.
48+
3. **Select Your Source File:** In the main window, click the `...` button next to "Source File" and choose your primary code file (e.g., `main.asm`, `game.c`).
49+
4. **Configure a Toolchain:**
50+
* Select a pre-configured toolchain (e.g., `7800ASMDevKit`) or add a new one in the settings.
51+
* In the "Executable Path" field, enter the command for your compiler/assembler (e.g., `dasm`, `cl65`).
52+
* Customize the 10 action buttons below with names and commands.
53+
* Click **Save & Close**.
54+
5. **Build Your Project:** Back on the main window, select your configured toolchain from the dropdown and click one of your custom action buttons (e.g., "Build"). The output from your tool will appear in the Status Window.
55+
56+
## Configuration
57+
58+
The application's state is managed through a single configuration file and dedicated backup directories.
59+
60+
* **`devCMDcycle_301.ini`:** This file stores all your settings for the project in the current directory. Every change made in the UI (settings, toolchains, options) is saved to this file in real-time.
61+
* **`ini_backup/`:** This folder is created in your project directory. It stores backups of your `.ini` file whenever you use the "Reset to Default Config" feature.
62+
* **`script_backup/`:** This folder is created in the same directory where `devCMDcycle.py` is located. It stores backups of the script itself whenever you use the integrated "Default Config Editor" to modify its internal defaults.
63+
64+
## Advanced Usage
65+
66+
### Command Placeholders
67+
68+
Use these placeholders in your button commands to dynamically insert paths.
69+
70+
| Placeholder | Description |
71+
| :---------- | :--------------------------------------------- |
72+
| `%f` | Full path to the Source File |
73+
| `%s` | Source file stem (path without extension) |
74+
| `%o` | Output file stem (defaults to the same as `%s`) |
75+
| `%t` | Full path to the selected Toolchain executable |
76+
| `%e` | Path to the default Editor |
77+
| `%m` | Path to the default Emulator |
78+
| `%h` | Path to the Header Tool |
79+
| `%g` | Path to the Signer Tool |
80+
| `%term` | Path to the Terminal application |
81+
82+
### The Auto-Typer System
83+
84+
The Auto-Typer allows you to automate CLI tools that require interactive input.
85+
86+
* **Profiles:** Create profiles in `Settings -> Manage Auto-Typer Profiles`. Each profile can have multiple steps.
87+
* **Triggering:** An auto-type sequence is triggered when you press a custom action button that is linked as a "Label Button" within an enabled step in the active profile.
88+
* **Dynamic Input:** Use the placeholder `%b<num>` in a command (e.g., `name "%b25"`) to create a text input box of size `<num>` in the Settings window. The text you enter there will be typed automatically.
89+
* **Special Keys:** Use `%C<key>` for `CTRL+key` and `%A<key>` for `ALT+key`.
90+
91+
## Dependencies
92+
93+
* **Python 3.x**
94+
* **Tkinter** (usually included with standard Python installations)
95+
96+
The script is cross-platform and has been tested on Linux and Windows.
Lines changed: 88 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,88 @@
1+
# devCMDcycle - Atari 7800 Development Commander
2+
3+
---
4+
### A Note on this Version
5+
6+
Please be aware that this is the initial version of `devCMDcycle`. The code originated as a collection of personal scripts I wrote to simplify my own Atari 7800 development workflow. It only really works properly on a linux system as I did not bother to check it on windows.
7+
8+
I am sharing it primarily for historical purposes and as a snapshot of my personal development process at the time. While it is functional, it reflects an organic evolution rather than a planned software design. Use at your own risk, and thank you for your interest!
9+
10+
---
11+
12+
## Features
13+
14+
* **Unified Interface:** Manage your entire build/run/debug cycle from a single, clean window.
15+
* **Compiler Support:** Seamlessly switch between **7800AsmDevKit** (for assembly) and **CC65** (for C) projects.
16+
* **One-Click Actions:** Buttons for common tasks like "Build", "Run", "Edit", "Clean", and combined actions like "Build & Run".
17+
* **Live Status Console:** View real-time, color-coded output from your command-line tools directly within the app.
18+
* **Interactive Command Input:** Interact with tools that require input (like the `7800header` utility) from within the app's console.
19+
* **Header Automation:** A powerful "Header Command Wizard" allows you to visually build and automatically apply complex `7800header` commands, enabling a "headless" build process.
20+
* **Highly Configurable:** Easily set paths to your tools and customize the exact command-line arguments for every action through a detailed settings panel.
21+
* **Project Management:** Automatically saves your last-used project and settings for a quick start.
22+
* **Cross-Platform:** Built with Python's standard library to be compatible with Linux, macOS, and Windows.
23+
24+
## Requirements
25+
26+
Before running `devCMDcycle`, you must have the following software installed on your system.
27+
28+
#### Core Dependencies
29+
30+
* **Python 3.x:** The script is written in modern Python.
31+
* **Tkinter:** This GUI library is included with most Python installations on Windows and macOS. On Linux, you may need to install it separately:
32+
```bash
33+
# For Debian/Ubuntu-based systems
34+
sudo apt-get install python3-tk
35+
```
36+
37+
#### Atari 7800 External Tools
38+
39+
This application is a front-end; it does **not** include the actual development tools. You must install them and ensure they are either in your system's `PATH` or have their full paths configured in the application's settings.
40+
41+
* **Assembler:** [7800asm](https://github.com/7800-devtools/7800asm)
42+
* **C Compiler:** [cc65 toolchain](https://cc65.github.io/) (specifically the `cl65` command)
43+
* **Header Utility:** `7800header`
44+
* **Signing Utility:** `7800sign`
45+
* **Emulator:** An Atari 7800 emulator like [A7800](https://a7800.a-7800.com/) or MAME.
46+
* **Text Editor:** Your preferred code editor (e.g., VS Code, Sublime Text, Xed).
47+
48+
## Installation & Setup
49+
50+
1. **Get the code:**
51+
Place the `devCMDcycle.py` file in a convenient location that is part of your system's `PATH`.
52+
53+
2. **Run the application:**
54+
The key to keeping project settings separate is to run the script from *within your project's source code directory*.
55+
```bash
56+
# First, navigate to your project folder
57+
cd /path/to/my/game_project/
58+
59+
# Then, run the script
60+
devCMDcycle.py
61+
```
62+
63+
3. **Initial Configuration:**
64+
* Running the script from within your project folder will create a project-specific configuration file (`devCMDcycle_115.ini`) inside that same folder.
65+
* Click the **Settings** button in the application.
66+
* In the **Paths** section, click "Browse..." for each tool (`Editor`, `7800asm Script`, `Emulator`, etc.) and navigate to the correct executable file on your system.
67+
* Review the **Command Line Templates** to ensure they match the arguments required by your tools.
68+
* Click **Save & Close**.
69+
70+
Your development environment is now configured for this project. Repeat step 2 for each new project to create separate configurations.
71+
72+
## Usage
73+
74+
1. **Select Source File:** In the "Project" frame, click "Browse..." and select your main assembly (`.s`, `.asm`) or C (`.c`) source file.
75+
2. **Check Configuration:** The application will automatically detect the compiler and generate a default name for the "Output ROM" (`.a78` file).
76+
3. **Choose Options:** Select any compiler-specific options (e.g., "Run Header Tool after build").
77+
4. **Build & Run:** Click the **Build & Run** button.
78+
5. **Monitor Output:** The "Status Window" will display the output from the build process. Any errors will be shown in red.
79+
6. **Play!** If the build is successful, your emulator will launch with your game.
80+
81+
## License
82+
83+
This program is free software, distributed under the terms of the **GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.**
84+
85+
For more details, see the full license text at [https://www.gnu.org/licenses/gpl-3.0.html](https://www.gnu.org/licenses/gpl-3.0.html).
86+
87+
---
88+
*Created by RetroGameGirl (atariage)*

0 commit comments

Comments
 (0)