Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/ahmedsobhy01/assembly-serial-chat
A simple chat application built for 8086 assembly that uses a serial communication (UART) interface to send and receive text. The program splits the screen into two parts for bi-directional messaging, allowing you to chat with another terminal via serial port.
https://github.com/ahmedsobhy01/assembly-serial-chat
8086 assembly baud-rate chat masm serial-communication uart x86-assembly
Last synced: about 2 months ago
JSON representation
A simple chat application built for 8086 assembly that uses a serial communication (UART) interface to send and receive text. The program splits the screen into two parts for bi-directional messaging, allowing you to chat with another terminal via serial port.
- Host: GitHub
- URL: https://github.com/ahmedsobhy01/assembly-serial-chat
- Owner: AhmedSobhy01
- License: mit
- Created: 2024-12-15T16:50:04.000Z (about 2 months ago)
- Default Branch: main
- Last Pushed: 2024-12-24T16:00:02.000Z (about 2 months ago)
- Last Synced: 2024-12-24T17:17:38.000Z (about 2 months ago)
- Topics: 8086, assembly, baud-rate, chat, masm, serial-communication, uart, x86-assembly
- Language: Assembly
- Homepage:
- Size: 480 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# 8086 Serial Chat 📃
**8086 Serial Chat** is a bi-directional communication program written in 8086 Assembly language. It allows real-time text-based communication between two machines or terminals connected through the serial port (UART). The program splits the screen into two sections for input and output, simulating a basic "chat window."
## Features
- **Screen Division**: The display is divided into two sections:
- **Top Section**: Your input (typed text).
- **Bottom Section**: Received messages from the serial port.
- **Serial Communication**: Data is transmitted and received using UART (Universal Asynchronous Receiver/Transmitter).
- **Scrolling**: Automatically scrolls text when the screen reaches its limit.
- **Exit Option**: Press `ESC` to gracefully exit the program.## Prerequisites
To run this program, you'll need the following:
1. **DOSBox-X**: A DOS emulator with enhanced features. Download it [here](https://dosbox-x.com/).
2. **Python**: To automate running the program.
3. A compatible assembler:
- TASM (Turbo Assembler)
- MASM (Microsoft Macro Assembler)## Installation
1. **Clone the Repository**:
```bash
git clone https://github.com/yourusername/8086-Serial-Chat.git
cd 8086-Serial-Chat
```2. **Set Up DOSBox-X**:
- Ensure DOSBox-X is installed on your computer and its path is configured properly.
3. **Run the Program Using Python**:
The provided `run.py` script will automate launching the program in DOSBox-X:```bash
python run.py
```This script assembles the code (if needed) and executes the program seamlessly in DOSBox-X.
## How It Works
- **Initialization**:
- The program initializes the serial port for communication using standard UART configuration.
- The screen is divided into two parts with a horizontal separator.- **Chat Input and Output**:
- **Input**: Type characters, which are transmitted to the connected terminal.
- **Output**: Incoming characters are displayed in the lower section of the screen.- **Scrolling**:
- If text reaches the end of the screen, the program scrolls the display to keep the conversation flowing.
- **Exit**:
- Press `ESC` to exit the program.## Program Flowchart
```text
START
│
├─► Clear Screen
├─► Draw Separator
├─► Initialize Serial Port
│
└─► MAIN LOOP
├─► Check for Incoming UART Data
│ └─► Display Received Character
│
├─► Check for Keyboard Input
│ └─► Send Character to UART
│
└─► Check for Exit Command (ESC)
└─► EXIT
```## Keyboard Controls
- **Type Text**: Sends the text to the other terminal.
- **Press `ESC`**: Exits the program.## Customization
### Baud Rate
The current program is set to a baud rate divisor of `0x0C` for 9600 baud. Modify the following lines in `INIT_SERIAL` for other baud rates:
```assembly
MOV DX, 3F8h
MOV AL, 0Ch ; LSB of baud rate divisor (0x0C = 9600 baud)
OUT DX, ALMOV DX, 3F9h
MOV AL, 00h ; MSB of baud rate divisor
OUT DX, AL
```## Running with Python Script
The `run.py` script simplifies launching the program in **DOSBox-X**. Ensure the following:
1. DOSBox-X is installed and its executable is available in your system's PATH.
2. Run the script:```bash
python run.py
```The script will assemble the program (if necessary) and open DOSBox-X to execute it.
## License
This project is released under the [MIT License](LICENSE).