------------------------------------------------------ DDT(8080)/ICUAP Universidad Autonoma de Puebla August 30, 1983 Harold V. McIntosh ------------------------------------------------------ A = assemble B = bitmap D = display F = fill G = go H = hex sum, difference I = initialize CCP command line L = list program M = move R = read file S = store T = type registers V = single step w/ call as 1 step (A) Assemble 8080 code. will assemble n lines of code beginning at address x. Defaults are x=lorg, while no limit is set if n is missing or zero. (B) Generate a bitmap of all bytes in the range 100H - (pmax) which could possibly be the address of an instruction. (D) Display the memory in groups of 16 bytes, both as pairs of hexadecimal nibbles and as ASCII characters, when the latter is appropriate. The command will display n lines, or else the interval between hexadecimal addresses a and b; the interval takes precedence but if a or b or both are null, the line count helps determine the interval. When a is null the display will usually continue from where it last ended, but nD,b will display b-n up to b. In general: nDa,b a through b-1, n lines of 16 bytes Da,b a through b-1, DP lines of 16 bytes nDa, a through a+n nD,b b-n through b nD, PC through PC+n Da, a to the end Da just line containing a D,b PC through b D, PC to the end D just line beginning at PC (F) Fill an interval. will fill the interval from x to y with the hexadecimal value a. (G) Go to the program for execution. The form allows the insertion of up to two breakpoints, b and c, before jumping to the address a. If a count n is also included, the breakpoints will be traversed n times before control is t returned to DDT. If the field a is null, the program will continue from the point where control was surrendered to DDT (or 100H if it is an initial call. (H) Display a hexadecimal sum and difference. will result in typing '+'x+y '-'x-y. Mainly used to help patch CP/M during system generation. (I) Input a command line, according to the same criteria used by CCP; in other words a parameter list can follow the file name. (L) List the memory as 8080 operation codes. The command will list n lines of code between the hexadecimal addresses a and b, with the interval taking precedence over the number of lines, unless either a or b is missing. (M) Move part of the memory from one place to another. will move the interval x,y to begin at z. The direction of movement compensates for possible overlap. (R) Read into memory the file specified by TFCB. It was probably defined by a preceding I command, but might still be the program defined in the DDT command line. will start loading at TORG+x. (S) Store hexadecimal bytes. will store n bytes starting at address x, read one by one from the console. Missing n means indefinite repetition, missing x means TORG. Confirmation and progression is automatic while hexadecimal bytes are being received; however, for - go back one byte, 'x deposit ASCII x, ^x deposit ctl x, CR go on to next byte. Any other input terminates the cycle. (T) Type the register status line while single-stepping through the program. runs through n steps typing each one, while executes without typing. The option V, with the same alternatives and treats a call or a conditional call as a single step, avoiding a detailled examination of the interior contents of each subroutine. (V) A variant of T. (X) Examine registers. Any one of the registers or register pairs A, BC, HL, DE, SP, PC may be examined, or one of the five flag bits C, Z, M, E, I, by typing Xr, with r = czmeiabhdsp*, or =xxxx with a hexadecimal address xxxx. The latter defines the register * at first. A display line is typed, of the form r=xxxx xx ... xx ... xx +++++ + +++++ ooo ooooo where xxxx is the contents of register r, xx etc is a window of hexadecimal bytes centered on xxxx, ++ etc is a similar window of ASCII characters, and finally ooo ooooo is the instruction, if meaningful, at xxxx. Once an examination is underway, the window may be moved by various operators: * indirect from window ^ indirect from instruction address ! save value ? recover value / next instruction + 1 byte forward - 1 byte backward # forward, stop at nonzero @ backward, stop at nonzero =xx search for byte xx ('x or ^x also) |xxxx search for pair xxxx > forward half-window < backward half-window . type crlf - make new line