IDA stands for Interpreter, Disassembler, Assembler. It is a machine language debugging system, written by Bill Greene. It is reviewed in the May/Jun 1984 edition of Colorcue (Vol. 6, No. 3), page 12. A further article by W.S. Whilly appears in the Nov/Dec 1984 (Vol. 6, No. 6) issue of Colorcue. The flip side of this disk, ida_v2.6-sideB.ccvf, contains the exact same binary programs, but has two files: LABELS.DOC, and DRIVI.SRC (printer driver), while this side contains IDAINS.TXT, the instruction manual. Here are the contents of IDAINS.TXT: IDA V2.2 (INTERPRETER-DISASSEMBLER-ASSEMBLER) DESCRIPTION IDA is a combination of Interpreter, Disassembler, Assembler, debugger, editor, monitor and calculator designed for all CCII programmers. Beginning assembly language programmers will find IDA to be a very friendly teacher while advanced programmers will appreciate the ease and speed of debugging and program modifying. BASIC programmers will also find many applications for IDA. IDA is supplied assembled with START addresses of 4000H, 8200H, A000H and E000H, runs in 8K of memory with V6.78 and V8.79 software, and may be re-entered via ESC USER. COMMANDS A - ASCII dump P - Peek/Poke B - Set Baud rate Q - Quit, exit to FCS C - Set Checkpoints R - Unused, jumps to START D - Disassemble SS - Simple Search E - List Editor(SRC) files SD - Search and Disassemble F - Fill memory SP - Search and Peek/poke G - Goto memory, run program SR - Search and Replace H - Hex dump T - Type to printer I - Interpret, display regs. U - Data byte parameters J - Jump table parameters V - Display directory K - Compare memory W - Write a message L - Lineprint X - eXecute FCS commands M - Move memory Y - Unused, jumps to START N - Numeric(Decimal) dump Z - Lines/page & blanks O - Origin for assembler @ - Toggles lowercase flag COMMAND FORMATS Most commands are single characters followed by one or more parameters separated by spaces. Parameters may be entered in hexadecimal (default), decimal (%ddddd), or 'M', an address marked in BREAK MODE. A space between the command and first parameter results in an automatic break following 30 lines of output. See BREAK OPTIONS on page 2. In lieu of an end address the number of output lines may be specified as nn+, an automatic break will follow nn output lines. No end address or nn+ option results in FFFFH as end address. No end address and no space in disassemble command defaults to 1 opcode disassembled. ASCII input is allowed where indicated under specific commands. ERROR MESSAGES ESYN - Syntax error EIVC - Invalid command EIVP - Invalid parameter INPUT EDITOR - Input is one line of 59 (max.) characters with standard Insert/Delete editing. Special function keys are: RIGHT and LEFT ARROWS - Move cursor. Typematic. DELETE CHAR - Deletes character before cursor. Typematic. INSERT CHAR - Accepts next key in input line. INSERT LINE - Aborts input and recalls previous command. ERASE LINE - Aborts input, clears line. ERASE PAGE - Aborts input, clears screen. UP ARROW - Aborts input, goes to BREAK mode. HOME - Aborts input, continues 'D' or 'E' output. SHIFT RIGHT ARROW - Moves cursor to end of line. SHIFT LEFT ARROW - Moves cursor to beginning of line. RETURN - Executes command line. CMD PRINT - Active at all times, Dumps screen(top to cursor) to printer. All other keys are accepted in input line directly. BREAK OPTIONS - After a manual or automatic break the following keys are functional (all other keys resume output): CMD CRT - Enters simulated CRT MODE for screen editing. ESC exits to IDA. CMD PRINT dumps screen to printer. HOME - Repeats previous page(nn+), two pages maximum. INSERT LINE - Restarts output from original start address. SPACE BAR - Scrolls at reduced rate. Release to stop. DOWN ARROW - Returns to IDA. UP ARROW - Moves cursor to an address for options:- P - PEEK/POKE address O - Set Origin for Assembler at address I - Interpret from address G - Run program from address C - Set or clear a Checkpoint at address M - Marks an address for reference or printing L - Starts printout or cancels 'M' address BREAK returns to Break Options (above). DOWN ARROW after an UP ARROW also moves the cursor. ESC returns to IDA. All other keys resume output. COMMAND FUNCTIONS Assss eeee - ASCII dump. COLOR CODE (applies to all ASCII outputs): 0-31 RED uppercase letters, 32-127 CYAN ASCII characters, 128-159 MAGENTA uppercase letters and 160-255 YELLOW ASCII characters. Bn(2) - Sets Baud rate, n = 1 to 7. Optional (2) = two stop bits. C - Displays 8 available Checkpoints and enters edit mode. Checkpoints are set by entering the desired address in hex. The byte at the checkpoint will be displayed following the the address. The first checkpoint may be set in ROM for the interpreter. Checkpoint control keys: RIGHT ARROW - Moves cursor. Typematic. GREEN (CTL R) - Clears checkpoint. RED (CTL Q) - Clears all checkpoints from cursor to end MAGENTA (CTL U) - Goto Interpret mode. Same as 'I'. RETURN - Exits to IDA. Dssss eeee - Disassembles memory range. Display includes address, opcode, mnemonic, ASCII equivalent of opcode and decimal value of two byte opcode operands. CCII label names (see pages 7-8 & 'J') are displayed for V6.78 and V8.79 ROM utilities and FCS RAM locations. Checkpoints blink red address digit, marked addresses blink blue. Data bytes will be displayed as such if identified by 'U' command. Essss eeee - Lists Editor (ASCII-SRC) files in memory range. The address of the beginning of each line is listed in visual mode only. Marked addresses blink blue. Line addresses are not output when printing. Fssss eeee bb - Fills memory range with hex byte bb. ASCII character, :a, is accepted for fill byte, as is decimal byte, %ddd. G(aaaa) - GOTO, runs program from PC address with registers loaded as displayed by the 'I' command. If optional start address, aaaa, is entered, program will start at aaaa with registers cleared. If a checkpoint (RST 1) is encountered in either case, the registers, flags, and top four stack values will be displayed. CKPT, in green will be displayed above the PC register if a valid checkpoint is encountered and the checkpoint will be cleared. Hssss eeee - Hex dump. I(aaaa) (cccc) - Interpret mode. Displays pseudoregisters and enters edit mode. New values may be entered in hex for any register or flag. If optional start address aaaa is entered interpretation begins immediately.cccc is an optional checkpoint which will replace the first checkpoint, if already set. cccc may be in ROM. The BREAK key halts the interpreter. After a break, 'R' displays the registers or DOWN ARROW returns to IDA. Interpret control keys: RIGHT ARROW - Moves cursor. Typematic. BLUE (CTL T) - Interpret 1 instruction. BLACK (CTL P) - Interpret 16 instructions. RED (CTL Q) - Interpret program. GREEN (CTL R) - Run program. Same as 'G'. MAGENTA (CTL U) - Display checkpoints. Same as 'C'. RETURN - Exit to IDA. Jjbeg jend - Jump table parameters. For programs with 6.78/8.79 overlay jump tables. jbeg is the address of the first jump vector in the active jump table. jend is the address of the last jump vector. Sets JFLAG which causes 'D' to display label names of ROM utilities referenced in a jump table, and 'O' to assemble jump vector address for label in lieu of ROM address. 'J' alone toggles JFLAG. Kssss eeee dddd - Compare memory range with range at dddd. Lists both addresses where a difference is found and bytes at addresses. L - Lineprint. L preceeding any other command sends output of command to the RS232C port and screen. Returns to IDA in visual. LF - Sends ASCII FF(0CH) to printer and resets line count to top of page. Mssss eeee dddd - Moves memory range to destination dddd. dddd may be between ssss and eeee. Oaaaa - Origin for assembler. Disassembles byte at aaaa and responds with ASM> prompt. Enter INTEL 8080 assembly language source code separated by spaces. CCII ROM or RAM labels (up to 5 characters, see pages 7-8 & 'J') may be used. Hexadecimal input is default (leading zero required before letters, trailing 'H' is optional). ASCII data in single quotes and %ddddd are acceptable. Editing is same as for command input. Example: ASM>LXI H,KBCHA MOV A,M CPI 'A' CZ LO JMP $-9 DB 'CCII',0D, 0A,%239 Recognizes ORG, DW, DB, $, $+, and $-. DS hh can be simulated with ORG $+hh. RETURN terminates input and activates the assembler. Following assembly the code entered will be disassembled plus one byte. The last byte disassembled is the new origin followed by the ASM> prompt. More code may be entered or RETURN exits to IDA. A flashing red A in the prompt indicates an improper label name such as LDA KBDCH or a missing leading zero in a hex entry such as STA B200. In either case 0000 is substituted for the address and assembly continues. If an improper mnemonic, register or other syntax error is encountered a red ESYN appears, assembly halts and returns to ASM> with the origin at the point of the error. Paaaa - PEEK, option to POKE. Displays 16 bytes from aaaa in ASCII and hex, then enters edit (POKE) mode. To POKE enter a hex byte, or INSERT CHAR followed by any key. The cursor right key moves to the next higher byte. The cursor left key moves to the next lower byte. The cursor up key displays the previous 16 bytes. The cursor down key displays the next 16 bytes from cursor. Typematic action on all cursor keys. HOME rePEEKs aaaa. RETURN exits to IDA. Q - Quit, exits to FCS. R & Y - UNUSED COMMANDS - User may wish to POKE an address in the Command Branch Table to jump to the cold and/or warm start address of the program being worked. Also, 12 bytes are available to the user at START+1FF4H.'R' or 'Y' could be used to jump there. SSssss eeee (;)(bb bb bb)(:aaaaa),etc. - Simple Search. Searches memory range for search bytes and displays address and hex bytes for all occurrences. An ASCII string preceeded by a colon is acceptable as the search parameter. A semi-colon(;) alone calls ASM> for entry of mnemonics, including ROM & RAM labels (Page 7-8), as search parameters. Entry of a space after the command (SS ssss,etc.) causes the hex byte 'DC' to be interpreted as a 'Don't Care' or automatic match byte. SPssss eeee bb bb,etc. - Search and PEEK. Enters PEEK mode with option to POKE at each occurrence of search bytes, string or mnemonics. RETURN continues search for next occurrence. SDssss eeee bb bb, etc. - Search and Disassemble. SRssss eeee bb bb, etc. - Search and Replace. When prompted by RPL>, enter the same number and type of bytes as in the search parameter, i.e., hex bytes, ASCII string or mnemonics. ASM> and RPL> share the same buffer, so INSERT LINE on RPL> will recall search mnemonics for editing as replacement mnemonics. Editing is same as for command input. USE THIS COMMAND WITH CAUTION !! T - Type to printer. Sends any key to printer except YELLOW (CTL S) which returns to IDA. Screen displays hex value of non-printing characters and ESC for (ESC) key. All other keys are displayed in normal fashion. U(A,B or W)ssss eeee nn - Display data bytes in range. A = ASCII data, B = data BYTES, and W = data WORDS. nn = number of bytes per line or ASCII terminator(0 or 0EFH). If nn = 1 for BYTES or WORDS, output will be in Hex, Decimal, and Binary. U alone resets UFLAG. UA, UW, or UB sets UFLAG and lists previously identified bytes. US nn sets UFLAG with new nn. V(1) - Displays directory on default device with BYTE COUNT of each file and displayed in HEX and DEC, optional (1) or (0) displays directory on device specified. W - Write a message for the printer. Sends following input on the command line to printer only. Use for short messages, notes or control codes. X - eXecutes all FCS commands with return to IDA. Examples, XDIR, XLOAD NAME.TYP;VER, XSAVE NAME.TYP SSSS-EEEE, XREAD BB DDDD NNNN, etc. Znn b - Sets lines/page(nn) and blanks(b) for printer. Default values are 56 & 10. 'Z' alone resets line count for top of page. @ - Toggles lowercase flag to accept lowercase commands. When set all input letters are converted to uppercase. Must be reset to Search for lowercase ASCII and for lowercase 'W' input. Default status is reset. KEYBOARD EQUIVALENTS CCII STANDARD CCII EXTENDED & DELUXE COMP-U-WRITER SHIFT CRT DELETE CHAR DELETE CHAR CONTROL C INSERT LINE UNDEL CONTROL E INSERT CHAR DELETE WORD CONTROL P BLACK BLACK CONTROL Q RED RED CONTROL R GREEN GREEN CONTROL S, YELLOW YELLOW CONTROL T BLUE BLUE CONTROL U MAGENTA MAGENTA CTL/SHIFT V COMMAND PRINT(CYAN) COMMAND PRINT(CYAN) CTL/SHIFT CRT COMMAND CRT COMMAND CRT CALCULATOR OPERATION The calculator performs standard math and logical operations on intergers from 0 to FFFF, %65535. One level of open parenthesis is allowed. Input is in standard mathmatical notation from left to right, terminated by =. Calculations proceed from left to right with no precedence of operators. Answers are displayed in hex, decimal and binary. Entry of a single value results in base conversion. CALCULATOR OPERATORS + = Plus - = Minus * = Multiply / = Divide M = MOD N = AND O = OR X = XOR Bill Greene 3601 Noble Creek Drive, N.W. Atlanta, GA 30327 (404)352-0921