Giter VIP home page Giter VIP logo

some-i8080-asm-translator's Introduction

Some-i8080-ASM-Translator


Some-i8080-ASM-Translator is a powerful, lightweight, and easy-to-use assembler translator for the KR580VM80A / Intel 8080A, developed according to the specifications in the INTEL8080 Assembly Language Programming Manual. It generates machine code and offers the ability to generate listings in various formats.

Download Link

You can download the latest version of the translator in the Releases Section.

Features

  • Underscores in Numeric Literals: You can define binary operands as 1010_1100b for improved readability.
  • Any Length Labels: Use labels of any length to make your code more descriptive.
  • Cross-platform: Some-i8080-ASM-Translator works on all major platforms, thanks to .NET 8.0.
  • ORG, SET, EQU, END Pseudo Instructions: Organize your code and data with these useful pseudo instructions.
  • DB, DS, DW: Define and allocate bytes, strings, and words in your program.
  • Arithmetic and Logical Expressions: Perform complex calculations and operations with ease.
  • Generation of Listings: Some-i8080-ASM-Translator can generate listings in .DOCX, .TXT, .CSV, and .MD formats for your convenience.
  • Error Reporting: The translator provides detailed descriptions of errors to help you quickly identify and fix issues in your code.

Limitations

The translator implements all the features specified in the INTEL8080 Assembly Language Programming Manual with the following exceptions:

  • No Pseudo instructions: IF AND ENDIF, MACRO AND ENDM
  • No ASCII Constant operands

How to Use

To display the help, run:

i8080 --help

The general format is:

i8080 <filename> -<flag1> -<flag2>

Don't forget to add the executable file i8080 to your PATH environment variables.

Available Options

  -c, --csv                    Create listing file in .csv table format
  -w, --word                   Create listing file in .docx word table format
  -s, --samelinebyte           Keep all instruction bytes on the same line
  -m, --md                     Create listing file in .md Markdown table format
  -b, --bin                    Generate binary file

  --help                       Display help screen.
  --version                    Display version information.

  Source code file (pos. 0)    Required. Input file-name including path

Usage Example

Suppose you have a directory called MyProject with the following structure:

MyProject
└── example.asm         // Assembly source code file

The contents of the "example.asm" file are as follows:

ORG 0800h
INIT:
  MVI A, 0Fh          ; Load 0F into register A
  OUT 5               ; Output the value in A to port 5

  IN 5                ; Input from port 5 into register A
  XRI 0FFh

  CALL SOME_FOO

SOME_FOO:
  CALL 04FCh
  RET

ORG 0900h             ; Raw data definition
  DB 5
  DB 18
  DB 18h
  DB 12o
  DB 0100_0101b

After running the command:

i8080 example.asm -b -w

Two files will be generated next to "example.asm":

MyProject
├── example.asm                     // Assembly source code file
├── example.i8080asm.bin            // Binary file with machine code
├── example.i8080asm.txt            // Listing file
└── example.i8080asm.docx           // Word file with listing table

The contents of the "example.i8080asm.txt" file are as follows:

 ADR | MC | LABEL     | ASM           ; COMMENT
     |    |           | ORG 0800H     ;
0800 | 3E | INIT:     | MVI A,0FH     ; LOAD 0F INTO REGISTER A
0801 | 0F |           |               ;
0802 | D3 |           | OUT 5         ; OUTPUT THE VALUE IN A TO PORT 5
0803 | 05 |           |               ;
0804 | DB |           | IN 5          ; INPUT FROM PORT 5 INTO REGISTER A
0805 | 05 |           |               ;
0806 | EE |           | XRI 0FFH      ;
0807 | FF |           |               ;
0808 | CD |           | CALL SOME_FOO ;
0809 | 0B |           |               ;
080A | 08 |           |               ;
080B | CD | SOME_FOO: | CALL 04FCH    ;
080C | FC |           |               ;
080D | 04 |           |               ;
080E | C9 |           | RET           ;
     |    |           | ORG 0900H     ; RAW DATA DEFINITION
0900 | 05 |           | DB 5          ;
0901 | 12 |           | DB 18         ;
0902 | 18 |           | DB 18H        ;
0903 | 0A |           | DB 12O        ;
0904 | 45 |           | DB 0100_0101B ;

Building the Project for All Platforms

To build the project, you need to have .NET 8.0 SDK installed. You can download it from the official .NET website. After installing the SDK, you can build the project for all platforms using the following command:

dotnet publish -c Release -r linux-x64 --self-contained true

This will generate the executable file "i8080" in the "bin/Release/net8.0/linux-x64/publish" directory. You can use this file on any Linux-based platform. For other platforms, simply replace "linux-x64" with the appropriate runtime identifier.

some-i8080-asm-translator's People

Contributors

galaxyshad avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar

Watchers

 avatar

Forkers

asdlei99

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.