NoICE is a PC-hosted debugger for use with a variety of eight bit microprocessor targets (currently, 68HC11, 6809, Z80/Z180, Z8, 65(C)02, and Mitsubishi M50740). It is intended to replace the hex monitor programs often used for such debugging, but is much more powerful. The debugger consists of a target-specific DOS program, NOICExxx.EXE, and a target-resident monitor program. The two programs communicate via RS-232, at user selectable baud rates from 300 to 38400. This approach has a number of advantages over a simple hex monitor: The target-resident monitor is simple and small: less than 1024 bytes of code, and 300 bytes of RAM for most versions. The simplicity of the monitor eases the process of porting to new hardware platforms. The PC has a more flexible display than the generic terminals used by most hex monitors. NoICE maintains a number of windows containing register, disassembly, and other data. Because the size of code on the PC does not penalize the target, features may be added without penalty. NoICE includes: - Memory display and editing, including loading of Intel Hex and Motorola S1 record files. - A disassembler. - A file viewer for files of any size. This allows the user to view assembly list files in conjunction with the disassembled code. - A virtually unlimited number of breakpoints. - Hardware-free single step using breakpoints. - Definition of symbols, which may be used in expressions and by the disassembler. - The ability to record and play back files of commands. - On-line help NoICE uses keyboard commands which are generally similar to those of other hex monitor programs. In addition, the function keys provide single-key invocation of a number of commands. Command keywords are case insensitive. In each command shown below: - curly brackets {} denote optional parameters. - "addr" denotes an address or address expression - "size" denotes a size or size expression - "value" denotes a numeric expression @file Execute commands from "file" B Abbreviation of BREAK BREAK {addr} Insert, delete, or display breakpoints CHECK addr size Compute byte checksum on region CLEARSYMBOLS Delete all symbols COPY addr1 size addr2 Copy memory from addr1 to addr2 D Abbreviation of DUMP DEF Abbreviation of DEFINE DEFBASE name value Define base symbol "name" DEFB Abbreviation of DEFBASE DEFINE name value Define symbol "name" DELAY time Set command delay for command files DIR {filespec} Show file directory in data window DOS {command} Issue DOS command DUMP {addr} Dump block of memory at addr in hex ECHO {text string} Echo "text string" to Data Window G Abbreviation of GO GO {addr} Begin execution at addr or at PC H Abbreviation of HELP HELP Show help display I Abbreviation of IN IN addr Read byte from port INIT addr size value Initialize memory block at addr to value L Abbreviation of LOAD LOAD file {load offset} Load Intel or Motorola hex file M Abbreviation of MEM MEM {addr} {val} Examine/change memory N Abbreviation of NEXT NEXT Step over subroutine O Abbreviation of OUT OUT addr val Write byte to port Q Abbreviation of QUIT QUIT Exit to DOS RECORD file Record commands to file R Abbreviation of REG REG {reg val} Change register S Abbreviation of STEP SET name value Same as DEFINE STEP Step into subroutines STOP Stop recording commands to file SYM Abbreviation of SYMBOL SYMBOL expr Show symbol with value "expr" U Abbreviation of UNASM UNASM {addr} Disassemble beginning at addr V Abbreviation of VIEW VAL Abbreviation of VALUE VALUE expr Show value of "expr" VER Show host and target software versions VIEW {file} View file F1 Help F2 Dump next block F3 Disassemble next block F4 View file F5 Go F6 List Breakpoints F7 Step F8 Step Over F9 Show Version F10 Quit Function key commands are executed as a single keystroke. Other commands must be terminated with a carriage return. Until carriage return is pressed, the command may be edited. Figure 1 show the NoICE screen display for the Z80. Other processors are similar. The upper left hand portion of the screen is called the "disassembly window", for obvious reasons. The upper right hand portion of the screen is the "register window". The lower portion of the screen is the "data window", which is used for output which does not appear in either the disassembly or register window. The bottom line of the screen is a menu showing function key definitions, and the line above it is the command entry line. +---------------------------------------------------------------+ |RESET F3 DI | A 56 0000 AF'| |0086 AF XOR A,A | BC 0000 0000 BC'| |0087 01EE00 LD BC,SCRP_REG | DE 0000 0000 DE'| |008A ED79 OUT (C),A | HL 1234 0000 HL'| |008C 3E1C LD A,1C | IX 0000 00 I | |008E 01EF00 LD BC,SCDP_REG | IY 0000 0 IFF| |0091 ED79 OUT (C),A | SP 1000 | |INIT 31800A LD SP,TASK_REGS | PC 0085 | |0096 216103 LD HL,INIOUT | FL .Z.H..NC | |0099 1616 LD D,16 | PG 00 | |009B 0600 LD B,00 | | |rst10 4E LD C,(HL) | | |009E 23 INC HL | (RESET) | |---------------------------------------------------------------| | | |0000 F3 C3 85 00 00 00 00 00 F5 3E 03 C3 3E 00 00 00 ...>..>...| |0010 F5 3E 04 C3 3E 00 00 00 F5 3E 05 C3 3E 00 00 00 .>.>..>..>| |0020 F5 3E 06 C3 3E 00 00 00 F5 3E 07 C3 3E 00 00 00 >..>..>...| |0030 F5 3E 08 C3 3E 00 00 00 F5 3E 01 C3 3E 00 32 80 ...>..>.2.| |0040 0A 22 88 0A ED 57 F3 32 92 0A 3E 00 E2 50 00 3C .2..>..P.<| |0050 32 93 0A E1 22 8E 0A E1 2B C3 E4 02 00 00 00 00 ..+.......| |0060 0F 10 50 00 DC 27 22 88 0A F5 ED 57 32 92 0A 3E "....W2>.:| |0070 00 E2 75 00 3C 32 93 0A 3E 02 32 80 0A E1 22 8E ..>.2...".| |>DUMP 0 | |F1=help F2=dump F3=unasm F4=view F5=go F6=break F7=step F8=next| +---------------------------------------------------------------+ Figure 1 NoICE Screen Display NoICE assumes an 80286 or better processor running DOS 3.3 or later. Most testing was done on a color VGA display, but EGA and CGA should work as well. Monochrome may work, but I don't have a test machine to try it on. NoICE has been successfully run in a DOS window under Microsoft Windows (tm). A version of NoICE for the Z80 with complete on-line help is available on this BBS as NOICE.ZIP. This version may be run either in conjunction with Z80 hardware (a monitor is included which will run unmodified on the Zilog Z180-SCC Application Board), or as a demo without target hardware. The demo version simulates target memory, and supports all functions except single step and execution. NoICE is available for the 68HC11, 6809, Z80/Z180, Z8, 65(C)02, and Mitsubishi M50740. Other targets may be under development. Contact the author for a current list of targets. The cost is $25 (US) for the first target processor, and $5 (US) for each additional target processor ordered at the same time. Send your check to: John Hartman 1030 14th Avenue Southeast Minneapolis, MN 55414 Software will be shipped on a 720K 3.5 inch floppy unless your order specifies 1.2M 5.25 inch floppy. Please remember to specify your desired target processor(s). The distribution package includes - NoICExxx PC-host program and on-line help - Printed User's Guide - Target assembly language source code for MONxxx target monitor - Executables and C source code for symbol processing utilities for various popular crossassemblers