A8008 8008 (1975) cross-assembler


A8008 8008 (1975) cross-assembler

Last updated Oct 2 2019. 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..

Introduction:

This Web page is about a 2014 adaptation of the A85 cross-assembler to support 8008 assembly for various of my vintage computing projects. I restore vintage computers of the 1970's and I support S-100 computers of the 70's and 80's and some others including this Heath H8 computer - Herb

A8008 history

I acquired an 8008 computer in 2013. I'm continuing to work on it. But I knew I wanted an 8008 crossassembler, with sources I could modify to suit various situations. One cross assembler for many processors is ASMX version 2.0, which provides sources. Another is the A85, A68, a18 cross assemblers by William Colley. See my A18 Web page for details and discussion.

I knew I could modify A85 (and other Colley cross assemblers) to support the 8008. But there's a problem. When Intel produced the 8008 in 1972, they introduced a particular set of mnemonics or instructions. But when Intel produced the 8080 in 1975, they re-worked the 8008 mnemonics to look more like their 8080 mnemonics. Some 8008 code survives in the earlier syntax; some in the later syntax.

This version, A8008, supports the 1975 post-8080 mnemonics of the 8008. See my A08 page for my A08 assembler for the 1972 8008 original mnemonics. This version currently assumes an OCTAL radix or base, displays values in the listing in octal, 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".

I assume octal values, because most 8008 source listings were produced using an octal radix. But the 1975 8080-like mnemonics are not as common, and the Intel distributed cross-assembler assumes decimal radix and produces listings with opcodes and operands displayed as hex values. I may change this assembler to match.

My current version of A8008 is at this Web link. Some assembly errors were fixed in Feb 2015; some documentation errors fixed in Oct 2019. Also a pseudo-instruction was added: LXI is not an 8008 instruction but appeared in an Intel MON 8 listing.

The program runs under Windows (XP, 2000) 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. There are docs and sample 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.

future: I will make small changes to the source, to compile under Borland's MS-DOS based Turbo C. Both a Win32 executable and the MS-DOS executable will be included in the Zipped package. - Herb Johnson

For more information: and related cross assemblers by Colley

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. That page has some more software tools, and more information about use. Look there for details.

- Herb Johnson

Bugs

The assembler produces the following when there's blanks or no values between or before commas:

001 000 002 000 DB 1, ,2,,

I could not fix that. If you fix the source, let me know - Herb Johnson


Contact information:
Herb Johnson
New Jersey, USA
To email @ me, see
see my home Web page.

This page and edited content is copyright Herb Johnson (c) 2019. 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..