Last updated Apr 8 2024. Edited by Herb Johnson, (c) Herb Johnson, except for content written by others. Contact Herb at www.retrotechnology.com, an email address is on that page..
This Web page is about a 2020 adaptation of the A85 cross-assembler to - read this carefully - support 8008 source assembly to 8080 binary. This is for various of my vintage computing projects.This version, A08_80, supports the 1972 8008 original mnemonics, but produces 8080 binary opcodes. C sources are provided.
As for myself: On this Web domain retrotechnology.com, I restore and document many vintage computers of the 1970's. Details of A08_80 is below.
For the history of the A85 cross assembler it comes from, read that Web page. The general origin of several of these assemblers is described on my A18 Web page. - Herb Johnson
Apr 2024 IN instruction: Jerry Davis called to my attention, that the 8008 mnemonic IN x, shoud assemble to 8080 opcode DB x, X being an I/O address. A08_80 produced the opcode D8 which was incorrect. Remember: the 8008 supported a limiited number of I/O addresses, as single-byte instructions.
Apr 2024, SPLIT:, I'm unsure about how A08_80 handles "split octal". The assembler produces a listing of split-octal addresses, and hexidecimal values for opcodes and operands. It's not hard to modify the C source to produce hex address, but it's not a command-line or pseudocode option. The pseudocode "SPLIT n", n nonzero, will change the assembler's processing of numeric values to consider values of "nnnnnn" as representing a split-octal value "nnn nnn" where N is an octal digit 0 through 7. asserting "SPLIT 0" restores the assembler's processing of "nnnnnn" as a decimal value. The explict split-octal representation of a numeric value is "nnn#nnn", regardless of SPLIT value.
I think this ia a little confusing, but I'm not sure how to proceed. An assesmbly program "split.asm" is included to exercise the SPLIT pseudocode. Review that operation and feel free to contact me with your considerations and any C code modifications you find useful.
I have other cross assemblers for the 8008. A version, A08, supports the 1972 8008 original mnemonics. For the 1975 8008 mnemonics to 8008 codes, see my A8008 page for my A8008 assembler.
This assembler and those others, assume an OCTAL radix or base, and permits specifying values in decimal, binary and hex. It provide options to support (or not) "split octal", Under split-octal, values like "123321" are treated as two bytes, "123" octal and "321" octal. A numeric value 123#321 is always treated as "split".
The program runs under Windows (XP, 7, 8, 10) as an MS-DOS 32-bit executable, which runs under the "DOS box" commmand line. I provide the C sources with my changes clearly marked. If you want a Linux version, the sources can be compiled by you. There are docs and sample 8008 assembly code. For those who download it, please advise me of any errors and issues. I make zero guarantees, offer zero warrenties. I am not responsible for any loss, injury or damage to person or property of any sort. Use entirely at your own risk.
The A18 1802 cross assembler Web page also points to other Web pages, where I have other cross assemblers from Colley which I've adapted. And, that page has some software tools also: look there for them. Most any question you have about this assembler except for its operation, or about my use and distribution of it, or YOUR distribution of it, is likely answered there. Do some homework. Thank you.
future: I will make small changes to the source, to compile under Borland's MS-DOS based Turbo C. When I do, both a Win32 executable and the MS-DOS executable will be included in the Zipped package. If you do this, let me know what it needed. - Herb Johnson
- Herb Johnson
This page and edited content is copyright Herb Johnson (c) 2024. Copyright of other contents beyond brief quotes, is held by those authors. Contact Herb at www.retrotechnology.com, an email address is available on that page..