User Tools

Site Tools


blog:pushbx:2023:0205_ddt_for_the_pofo

DDT for the Pofo

2023-02-05

This week rr's pointer to a website for Atari Portfolio programs led me to find DDT, the "Driver Debugger Tool". It's a basic debugger designed for the limitations of the Pofo, such as the 40x8 screen and its low amount of available memory. It is free software under the GNU GPL v2-or-later.

The debugger has a few interesting twists: It can load a block device driver (indicated by a cap-sensitive ".sys" filename extension) and prepare different request headers to call its strategy and interrupt entries with. And its disassembler supports some symbolic debugging with the use of name tables, which must be embedded in the executable being loaded.

However, it has some limitations too:

  • Only can load flat-format .COM or flat-format .SYS files
  • Cannot load files larger than 64 KiB
  • Does not create a PSP for an application, including lack of a command line and DOS terminate calls will actually terminate the debugger's process
  • No auto-repeat of commands
  • R command shows registers in 4 lines, no disassembly (W command disassembles one line; T and N and C commands will act as W when they return control)
  • C command supports only one temporary breakpoint
  • Assumes that if a breakpoint is set by T, N, or C command that the breakpoint interrupt (int 3) is used to return control to the debugger, in order to restore the breakpoint contents
  • Does not support 386 register extensions
  • D, E, and U commands operate in the "I/O Segment" which needs to be changed with the S command and cannot be overridden for a single command
  • U/W command only supports 8086 instruction set
  • No assembler is included
  • First non-hexit after a number may be skipped even if it isn't a blank
  • Debugger is not debuggable
  • Source is in MASM / TASM / JWasm format
  • The names table only contains offsets, the segment is assumed to be the same as the executable's code segment (0-based for device driver, 100h-based for applications)
  • Names table symbols are not displayed at all when the linear matches but a different segment is used (whereas lDebug symbolic will show the symbol with a WRT specifier)
  • No expression evaluator, not even for specifying registers nor symbols from the names table
  • D command does not show symbols from the names table
  • No equivalent to Debug's H, M, C, F, or S commands
  • No permanent breakpoints
  • No way to proceed past loop or repeated string instructions (N command only detects call forms)
  • D and U command only accept start offset and a length, not start and end offset
  • No command for displaying the value of a single register
  • No variables or options other than the 14 CPU registers (8 GPR, 4 segregs, FL, IP)
  • Only numeric change of FL possible
  • No equivalent of lDebug's DW or DD commands

I uploaded the debugger to my Mercurial server

You could leave a comment if you were logged in.
blog/pushbx/2023/0205_ddt_for_the_pofo.txt · Last modified: 2023-02-05 17:21:01 +0100 Feb Sun by ecm