.\" Man page generated from reStructuredText. . . .nr rst2man-indent-level 0 . .de1 rstReportMargin \\$1 \\n[an-margin] level \\n[rst2man-indent-level] level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] - \\n[rst2man-indent0] \\n[rst2man-indent1] \\n[rst2man-indent2] .. .de1 INDENT .\" .rstReportMargin pre: . RS \\$1 . nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] . nr rst2man-indent-level +1 .\" .rstReportMargin post: .. .de UNINDENT . RE .\" indent \\n[an-margin] .\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] .nr rst2man-indent-level -1 .\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] .in \\n[rst2man-indent\\n[rst2man-indent-level]]u .. .TH "XEXAMINE" 1 "2024-04-26" "0.2.1" "Urchlay's Atari 8-bit Tools" .SH NAME xexamine \- Show information on Atari 8-bit executables (XEX) .\" RST source for xexamine(1) man page. Convert with: . .\" rst2man.py xexamine.rst > xexamine.1 . .SH SYNOPSIS .sp xexamine [ [\fB\-h\fP] | [ [\fB\-v\fP] [\fB\-d\fP] [\fB\-s\fP \fIsegment\fP] \fIxexfile\fP ... ] .SH DESCRIPTION .sp \fBxexamine\fP reads Atari 8\-bit executables (.xex files) and prints the following information on each segment in each file: .sp Segment number (in decimal, first segment is #1). .sp Offset in bytes from the start of the file (in decimal). .sp Start and end addresses (in hex by default). .sp Length in bytes (in decimal). .sp CRC32 checksum of the segment (in hex). .sp Segment type: .INDENT 0.0 .INDENT 3.5 If the segment is a run address (loads at RUNAD) or an init address (loads at INITAD), the type is "Run" or "Init", with the actual run or init address, in hex by default. .sp Otherwise, the percentage of the segment that contains valid 6502 object code is printed. This is an estimate based on static analysis and some heuristics, and as such, isn\(aqt 100% accurate. .UNINDENT .UNINDENT .SH OPTIONS .\" TODO: . .\" -l . .\" List code. Disassemble with da65? . .INDENT 0.0 .TP .B \-d Show addresses in decimal. .UNINDENT .INDENT 0.0 .TP .B \-s \fIsegment\-number\fP Only show information on one segment. Segments are numbered starting at one. .UNINDENT .INDENT 0.0 .TP .B \-h Print a short help message and exit. .TP .B \-v Verbose operation. .UNINDENT .SH NOTES .sp Currently, \fBxexamine\fP only works with .xex files. If you have a cartridge image as a .car file, you can use \fBxex2cart\fP to make a \&.xex from it (if it\(aqs a non\-bankswitched cart, anyway). If you have a raw chunk of object code, you can use \fBblob2xex\fP to make a .xex file from it. .sp The code\-detection could be smarter, and probably will be pretty soon. Static analysis will never be 100% perfect, but the heuristics could be improved (e.g. by using something like Markov chain or Bayesian analysis). .sp The CRC32 sum is handy for comparing different releases of the same program. Example would be a game that was cracked more than once by different cracking groups, and each crack has a different title screen. Often, the 2nd or some further segment contains the actual code/data, and is identical. .SH EXIT STATUS .sp Exit status is zero if \fIxexfile\fP is a valid Atari .xex file, non\-zero otherwise. .SH COPYRIGHT .sp WTFPL. See \fI\%http://www.wtfpl.net/txt/copying/\fP for details. .SH AUTHOR .INDENT 0.0 .IP B. 3 Watson <\fI\%urchlay@slackware.uk\fP>; Urchlay on irc.libera.chat \fI##atari\fP\&. .UNINDENT .SH SEE ALSO .sp \fBa8eol\fP(1), \fBa8utf8\fP(1), \fBatr2xfd\fP(1), \fBatrsize\fP(1), \fBaxe\fP(1), \fBblob2c\fP(1), \fBcart2xex\fP(1), \fBdasm2atasm\fP(1), \fBfenders\fP(1), \fBrom2cart\fP(1), \fBunmac65\fP(1), \fBxexcat\fP(1), \fBxexsplit\fP(1), \fBxfd2atr\fP(1). .sp Any good Atari 8\-bit book: \fIDe Re Atari\fP, \fIThe Atari BASIC Reference Manual\fP, the \fIOS Users\(aq Guide\fP, \fIMapping the Atari\fP, etc. .\" Generated by docutils manpage writer. .