

                                                                     Intel 8080A Software Development Environment
                                                                          Copyright 2002 MarcSoft Computers
                                                                                  ALL RIGHTS RESERVED
                                                                                   marcsoft@ameritech.net

The 8080A Software Development Environment Can be viewed as having 3 major function, Editing ASM and HEX files, and their respective functions;
Assembling ASM files; And Emulating ASM files.

1.) Editing
        Point at a cell in the Assembley or HEX Window and click. If a value already is in the cell, it will be available for editing. Pressing Return
        enters the value into the cell and advances the cursor to the cell to the right of the current cell.
     
     Saving Assembly & HEX Files
        Clicking on File | Save  or  File | Load brings up a standard Windows file I/O requester. You can change the directory to Save to or Load from.
        Also, the type of file ( ASM for ASSEMBLY files; HEX for HEXADECIMAL files ) can be chosen. please note -- assembly files are sequential and HEX files
        are binary in nature. When save or load is clicked, a requester asking for the START / END values is asked for. For ASM files, the START / END
        are LINE NUMBERS ( base 10, please ). For HEX files, START / END are ADDRESSES ( base 16, please ).
     
     Loading Assembly and HEX files
        Similar process as with saving files. Line numbers for ASM files will be asked for, and Start / End Addresses will be asked for HEX files.

     Insert / Delete Lines
        The line UNDER the cursor will be DELETED ; The line will be INSERTED UNDER the cursor

     Search / Clear Search
        Searching for a value will highlight all occurrances of a BYTE VALUE in the HEX viewer. Clear Search will clear ALL Searches Done in the HEX Viewer.

     Zero / Fill HEX Viewer
        Zero-ing the HEX viewer will Null ALL the Values in the HEX Viewer. Fill Allows you to Fill any region of the HEX Viewer with a value of your choice.

     Clear ASM
        Erases The ENTIRE ASM VIEWER -- Use this with caution, as there is NO UNDO.

     Clear Dis-Assembly Window
        Clear the Dis-Assembly Window

     Refresh HEX Display
        During program emulation, sometimes memory is written to. When you want to view the HEX memory aftersuch a circumstance,
        refreshing makes the value(s) visible in the HEX Viewer.

     Printing
        Prints out the ASM viewer. When No Start Line # is given, line 1 is assumed. If no Ending Line # is supplied, The ASM Viewer will print 
        the ASM Viewer, Up to The First END Directive.


2)  Assembly

     The Assembler is a very simple assembler. The following Directives are supported :
     
     H,h  -- Base  16 number
     Q,q --  Base  8  number
     B,b --  Base  2  number
           --  Base 10 number  default number base

     ORG  -- Origin of the code -- multiple ORG's may be used in code. eg  ORG  10h  -- locates PC to 10h
     EQU  -- Equate a Number to a Symbol  eg    testsym  EQU  1000q   equate symbol testsym to a address value of 1000 base 8
     DB    --  Define 1 byte. period.
     DS    --  Define 1 Byte ( 8 bits ) initialized to a given value   testsym  DS  8,33   define 8 bytes to value of 33 base 10  
     DT     -- define text        testsym  DT  'Hello'   defines a text srting
     END  -- END of the Assembly Area is here. anything after the END directive will not be assembled

     Symbols
        Symbols may be incorporated on any line, and cannot be of the following :
           A) Valid Commands
           B) Valid Directives
           C) Valid Registers
           D) Numbers

     Symbols may contain letters, numbers and punctuation. however, some side effects may result if a label contains non standard label protocol.

     Comments
        Comments may be on any line and are not involved in assembly. Leading Semi-colons are not needed.     

3)  Emulation

        Once a ASM file has been sucessfully assembled or a HEX file has been loaded, you can emulate it. Basically, the HEX address
        of the Code is loaded into the PC , Values also can be loaded into the registers. Clicking on LOAD does just that -- loads the current
        values in register window(s) into their corresponding registers. Select a number base to represent the data in. Select Run Mode

        A) Step -- single step mode. Start must be clicked each time to execute an instruction
        B) Timed -- this mode causes an instruction to be processed about every 0.8 seconds
        C) Free Run -- Runs code at full throttle

     Breakpoints
        3 seperate Breakpoints can be set. Basically, then WHEN window selects the register to watch; IS refers to a comparison ; TO corresponds to the
        value to break on IF or WHEN  the condition is met. Clicking in the check box next to the breakpoint activates that particular breakpoint. Breaks is
        the running code is on an OR basis if multiple BreakPoints are being used.

     Graphics
        The following values and ports control the Graphics tablet ( via A reg )
           Port 210 -- Control Word -- The following values here perform these functions
                             8  -- Change Color
                            16 -- Auto Redraw -- Used in conjunction with the clear screen mode
                            32 -- Clear Screen
                            64 -- Draw From current cursor location to Values in BC ( x2 coordinate ) and DE ( y2 coordinate )
                          128 -- Locate cursor at   BC ->  x1    DE->  y1

         Port 215 -- Red Color Intensity      0 ( least ) to  255 ( most )
         Port 216 -- Green Color Intensity           "       "        "
         Port 217 -- Blue Color Intensity             "       "        "
        
         Locating the graphics cursor involves loading BC with the X1 value and DE with the Y1 value, loading the A reg with 128 and then writing
         to port 210. the cursor is automatically updated. to then draw a line, load BC & DE with the X2 Y2 values, load the A reg with 64 and then
         output to port 210. Be sure to set colors.

     LED's
       Port 220 --  send the value in the accumulator to this port lights up the corresponding LED's. Least significant LED is left most.

     LCD's
       Port 230 -- load B with the Display Value ( which value to display ) and C with the Digit to Write this value to ( 1 - 4 )
                                                            2^0
                                                        -----------
                                                       |           |
                                                2^5  |           |  2^1
                                                       |  2^6    |
                                                        -----------
                                                       |           |
                                                2^4  |           | 2^2
                                                       |           |
                                                        ----------- 
                                                            2^3

     using this scheme, to display a 9 would be 2^0 + 2^1 + 2^2 + 2^5 + 2^6  = 1 + 2 + 4 + 32 + 64 = 103
     placing a 103 in the B reg and then a 1 - 15 in C reg will light up the appropriate digits with the number 9

     SWITCHES
       Port 20 -- input from this port will place the current on / off values of the switches into the accumulator. least significant Switch is
                     the furtherest to the left of the window.

     Active Wire USB
        to OPEN a AWUSB device, output to Port 240
        to CLOSE a AWUSB device, output to Port 243
        to ENABLE Input / Output pin config on an open device, BC contains the config value ( for example a value of F000 in BC means that pins 11 - 15 
        of the open AWUSB device are output and pins 0  - 10 are inputs. Port 242
        to WRITE a value to the open AWUSB device, load BC with the value to write to the device and then output to Port 241
        to INPUT a value from the open AWUSB device, Input from Port 10 and the input value will be in BC reg.

        In all cases, if the given operation ( open,close,enable,write,read ) is successful, a 0 will be returned in the accumulator. If not sucessful, a 255
        will be returned in the accumulator.
ActiveWire USB microcontrollers can be pruchased from Activewire, inc. at  www.activewireinc.com  approximately  $59 USD + S&H
