home *** CD-ROM | disk | FTP | other *** search
/ The CDPD Public Domain Collection for CDTV 3 / CDPDIII.bin / fish / 871-880 / ff878 / scypmon / scypmon.doc < prev    next >
Text File  |  1993-06-14  |  22KB  |  561 lines

  1.  
  2.             Description for Scypmon V1.7
  3.             \==========================/
  4.  
  5. Release:
  6. --------
  7.  
  8. (C) by Jörg Bublath 1989-1993
  9.  
  10.   Developing this program took me a long time, so I'd appreciate a little
  11. financial support. Because I hate all those "crippled unregistered versions",
  12. I won't do this myself to get my DM 5,- (or US $5) shareware fee (that
  13. really isn't much, is it ?), but I appeal to all those users out there to be
  14. honest ! I know it costs a big pile of money to pay or all those shareware-
  15. programs that one has. So I would like to suggest a new shareware concept:
  16. I call it "you share me - I share you", which means that all authors of
  17. shareware-programs let me use their programs for free, and they mine, but all
  18. those who don't write any useful programs can begin doing so - or pay!
  19. Update-services, which would cost money of course, aren't included in
  20. the "share each other" concept. All those guys who helped me with ideas,
  21. test-reports and routines to make Scypmon better, don't have to pay
  22. shareware either (but I don't mind when they do :-))
  23. Of course all authors of good Non-Shareware Software are included in my offer,
  24. too! Just send me notice and your program.
  25.  
  26.   I prohibit changes to the program (incl. source) and documentation.
  27.  
  28.   Registered Users will receive updates and sourcecodes if they send a disk
  29. including return postage.
  30.  
  31.   Scypmon is free to be spread on public-domain and shareware disks
  32. especially on Fred Fish's AmigaLibDisks, as long as they are sold for a
  33. reasonable charge that is less than US $6 or DM 8.- .
  34. For use in commercial products the permission of the author is required.
  35. Scypmon may be copied and distributed via electronic networks such
  36. as the Internet, also it may be moved on anonymous ftp-servers,
  37. mail-boxes or BBS's.
  38. The Copyright stays by the Author.
  39. Scypmon is Shareware, that means you may keep Scypmon in archived form
  40. without paying, but when you unpack it and use it, you have to pay the fee
  41. mentioned above, or share your programs with me.
  42.  
  43. General Information:
  44.  
  45.   This monitor uses a full-screen-editor with or without automatic
  46. insertion and an additional command-history of 1K. The cursor can be
  47. moved using the cursor-keys or by positioning it with your mouse.
  48. If you leave the screen up or down, the screen will be scrolled in the
  49. opposite direction. If the status-line is inverted, then the monitor is
  50. active. The headline also shows if you are in insert or overwrite mode.
  51. When you use the scrolling and there is an output-line of the "m", "i"
  52. or "d"-command on the screen the next logical line of this command will
  53. appear instead of the empty line.
  54.  
  55.   Using the cursor-keys with shift will cause scrolling by one full screen.
  56.  
  57. Some other keys that are used in a special way:
  58.  
  59.   HELP (=CTRL-l)          : Clear Screen + Cursor Home
  60.   Shift + HELP (CTRL-K)   : Clears the rest of the line starting at the
  61.                 actual cursor-position.
  62.   Shift + DEL          : Inserts one blank
  63.   On the numeric keypad:
  64.   Shift + 7          : Cursor home (upper left corner)
  65.   Shift + 1          : Cursor end (lower left corner)
  66.   Shift + 0          : Switch between insert and overwrite mode
  67.   Shift + .          : Del
  68.   F1              : Jsr-dissassemble in
  69.   Shift + F1          : Switch mode "m" and "d" in full-screen display
  70.   F2              : Jsr-dissassemble out (explained later)
  71.   Alt + Cursor Up      : Previous command-history entry
  72.   Alt + Cursor Down      : Following command-history entry
  73.  
  74. During screen-output:
  75.  
  76.   SPACE           : Stop screen-output, continue: SPACE again
  77.   CTRL-C          : Break screen-output
  78.   Left mouse-button      : Hold to stop screen-output
  79.  
  80. Exceptions:
  81. -----------
  82.  
  83.   All exceptions except #08 (privelege violation) and the trap #0x - commands
  84. will not cause a guru, but instead a monitor output stating "exception #xx at
  85. xxxxxx" if the "-p"-option to patch the exceptions is activated. In addition
  86. you will receive some detailed information about the task that crashed (see
  87. "e"-command) and it should no longer be in the task-list. If you crash your
  88. machine totaly there will be certainly only one help for you :
  89. ctrl + amiga + amiga !
  90.  
  91. Calling the monitor from CLI:
  92. -----------------------------
  93.  
  94. You can call the monitor by typing:
  95.  
  96. scypmon [-bdp] [-P <xpos> <ypos>] [-S <xsize> <ysize>]
  97.     [-s <pubscreen>] [-f <fontname> <fontsize>] [batchfile]
  98.  
  99. "-b" will make the monitor start itself in background, which means that its
  100.      window will not be activated at startup.
  101.  
  102. "-p" will patch the exception vectors to catch gurus. If this option is
  103.      not used, Amiga-Dos will do what ever it likes with crashes.
  104.  
  105. "-d" Tries to use the dis.library to disassemble, which means that Scypmon
  106.      will know 68030-commands. Assembling is still only possible for
  107.      68000, and even this will sometimes cause trouble with the dis.library
  108.      because of a slightly different syntax.
  109.  
  110. "-P" give new coordinates for the window to open.
  111.  
  112. "-S" give a new size for the window.
  113.  
  114.      CAUTION: If the window cannot open due to wrong coordinates, Scypmon
  115.           won't run. There will be no error-message!
  116.  
  117. "-s" Running 2.0+ you are able to have public-screen. This option makes it
  118.      possible to open the scypmon on any public screen.
  119.  
  120. "-f" For use of other than the fonts (systemfont) defined with preferences.
  121.  
  122.   This batchfile may be any textfile eg. edited with "ed" that contains a
  123. list of monitor commands. This option is very useful for absolute
  124. programming, when you need to load graphic or sound data into memory.
  125.  
  126. eg.:
  127. {
  128. o 60000 7f000 00
  129. l "graphic.data" 70000
  130. l "sound.data" 60000
  131. l "sinus-table" 7e000
  132. x
  133. }
  134.  
  135. This batchfile will clear the memory from 60000 to 7f000, load the three
  136. programs absolutely into memory and leaves the monitor afterwards.
  137.  
  138. A clarification to the memory allocations:
  139.  
  140.   To prevent allocmem-chaos, the monitor organizes memory-allocations in
  141. its own way. You have 8 segments (0-7) that can be used for allocations.
  142. If you use one segment twice then the old memory allocated in this
  143. segment will be freed. When you leave the Monitor all segments will be
  144. given back to Amiga-Dos. This prevents a chaos like in c-mon when you
  145. load several programs and don't know afterwards where and how much, so
  146. you have to reset to have a clean memory again.
  147.  
  148. Menus
  149. ------
  150.  
  151.   The options "-p" and "-d" can also be changed while the monitor is
  152. running by using the menus. You also can leave scypmon by menues or
  153. call up a helpwindow.
  154. The help-window is just a short overview over the command and no
  155. replacement for the doc-file.
  156.  
  157. The commands (in alphabetical order):
  158. --------------------------------------
  159.  
  160. All Values (in assemble/dissamble,too !) have to be entered hexadecimal (you
  161. don't have to use $xxx - only xxx) !
  162.  
  163. [ ]    : Expressions in these brackets are optional
  164. ( )    : Expressions in round brackets have to be entered
  165. start  : Is a hex-expression that indicates a start-adress
  166. stop   : Is a hex-expression that indicates an end-adress
  167. target : Is a hex-expression that indicates a target-adress
  168. name   : Is an ASCII-string
  169. segment: A memory segment between 0 and 7
  170.  
  171. When dealing with hex-adresses you can use the variables ^(a-z) in most
  172. cases.
  173. ----------------------------------------------------------------------------
  174. [?] (expression)                        : Calculate
  175.  
  176.   The expression will be calculated and printed out decimal, hexadecimal,
  177. binary and as 4-char ASCII string. Inside the expression you have to use a
  178. "$" to indicate a hex-number, a "#" or nothing to indicate a decimal number,
  179. a "%" to indicate a binary-number and max. 4 ASCII chars "<str>" or '<str>'.
  180. In addition, you can get the value of a hex-address with "&(hexaddress)",
  181. use uservariables with "^(a-z)" and the following systemvariables:
  182. ^s    = Startadress of last load
  183. ^e    = Endadress of last load
  184. ^S0-7 = Startadress of segment 0-7
  185. ^L0-7 = Length of segment 0-7
  186.  
  187.   For calculation you may use "+", "-", "*" and "/". You can also use
  188. brackets - The calculation will be done in mathematical order (first "*"
  189. and "/" then "+" and "-")
  190.  
  191. eg.: ? $1000-(#100+%010)*2
  192. ----------------------------------------------------------------------------
  193. ^(a-z)=(expression)                     : set variable
  194.  
  195.   This sets one of the 26 user-variables to the given value (compare "?")
  196. Caution: The variables ^s and ^e are used by the monitor to indicate
  197. the last start- and end-address of absolute loading.
  198.  
  199.  
  200. eg.: ^a=^a+$20-(1+4)*5
  201. ----------------------------------------------------------------------------
  202. <b (blocknr) (start) [len] [!]          : Block Load
  203. >b (blocknr) (start) [len]              : Block Save
  204.  
  205.   Loads/Saves (len) bytes from disk starting with block number (blocknr).
  206. If you don't give a [len] , $200 bytes = 1 sector will be loaded/saved.
  207. As device will be used the one fixed the with "V"-command.
  208. Attention: You have to enter all values in hex !
  209. The "!"-Option overrides the memory check, to overload memory already
  210. allocated by DOS.
  211.  
  212. eg.: <b 1a2 70000
  213. ----------------------------------------------------------------------------
  214. <o (offset) (start) [len] [!]           : Offset Load
  215. >o (offset) (start) [len]               : Offset Save
  216.  
  217.   Loads/Saves (len) bytes from disk starting with offset (offset).
  218. If you don't give a [len] , $200 bytes = 1 sector will be loaded/saved.
  219. As device will be used the one fixed the with "V"-command.
  220. Attention: You have to enter all values in hex !
  221. The "!"-Option overrides the memory check, to overload memory already
  222. allocated by DOS.
  223.  
  224. eg.: <o 30000 70000
  225. ----------------------------------------------------------------------------
  226. <t (tr) (hd) (sc) (start) [len] [!]     :Track Load
  227. >t (tr) (hd) (sc) (start) [len]         :Track Save
  228.  
  229.   Loads/Saves [len] bytes from disk starting at track, head, sector. If you
  230. don't give a [len] the default of $1400 bytes = 1 side of a track will
  231. be loaded/saved.
  232. As device will be used the one fixed the with "V"-command.
  233. Attention: You have to enter all values in hex !
  234. The "!"-Option overrides the memory check, to overload memory already
  235. allocated by DOS.
  236.  
  237.  
  238. eg.: <t 0a 01 06 70000
  239. ----------------------------------------------------------------------------
  240. a (start)                               : Assemble
  241.  
  242.   Will cause an output of a "," followed by the given adress and sets the
  243. cursors to the right tab-position to assemble. Instead of using this
  244. command you can simply dissassemble the adress and overwrite it.
  245.  
  246. eg.: a 70000
  247. ----------------------------------------------------------------------------
  248. A (segment) (start) (len)               : Allocate Absolute
  249.  
  250.   Uses AllocAbs (-204) to allocate memory and remembers the memory in the
  251. segment-list.
  252.  
  253. eg.: A 0 70000 1000
  254. ----------------------------------------------------------------------------
  255. A (segment) (len)                       : Allocate Memory
  256.  
  257.   If you don't give a alloc-adress allocmem (-198) will be used and the
  258. memory remembered in the segment-list.
  259.  
  260. eg.: A 0 1000
  261. ----------------------------------------------------------------------------
  262. b (start)                               : Boot Checksumm
  263.  
  264.   Calculates the checksum of a bootblock ($0400 bytes !) and inserts it.
  265.  
  266. eg.: b 70000
  267. ----------------------------------------------------------------------------
  268. B (stop)                                : Breakpoint
  269.  
  270.   A breakpoint will be set to the adress (stop), then the program will start
  271. according to the entered PC at the "r"-command. After execution the
  272. breakpoint will be cleared and the register will be given out.
  273.  
  274. eg.: B 70200
  275. ----------------------------------------------------------------------------
  276. c (start) (stop) (target)               : Compare
  277.  
  278. T  he memory (start) to (stop) will be compared with the (target) and all
  279. differing bytes will be reported.
  280.  
  281. eg.: c 70000 71000 72000
  282. ----------------------------------------------------------------------------
  283. C (start)                               : Calc Block CheckSumm
  284.  
  285.   Calculates the checksum of a normal diskblock and inserts it.
  286.  
  287. eg.: C 70000
  288. ----------------------------------------------------------------------------
  289. CD [name]                : Change Directory
  290.  
  291.   The actual Path will be set to [name].
  292.  
  293. eg.: CD df0:c
  294. ----------------------------------------------------------------------------
  295. d (start) [stop]                        : Dissassemble
  296.  
  297.   The given memory will be disassembled. Before each output-line there will
  298. be printed a "," as a marker for the scroll-function and for assembling (so
  299. you can assemble when overwriting).
  300.  
  301. eg.: d 70000 70020
  302. ----------------------------------------------------------------------------
  303. D [name]                : Directory
  304.  
  305.   If no name is given, the actual directory will be printed out, otherwise
  306. the given path will be used.
  307.  
  308. eg.: D df0:c
  309. ----------------------------------------------------------------------------
  310. e "(taskname)"                          : Examine Task
  311. e (taskadress)
  312.  
  313.   The given task is searched and will be printed with name, adress, priority,
  314. signals and stackusage (and CLI-command).
  315.  
  316. e.g.: e "Scypmon 1.4"
  317. ---------------------------------------------------------------------------
  318. f (start) (stop) (v1) [v2...] [!]       : Find
  319.  
  320.   This command searches after a expression that can be defined as a mixture
  321. out of hexnibbles, "*", or strings. When nibbles are replaced by the
  322. joker "*" then the command will find any possible matches.  If the "!" is
  323. added then it will be a not-find, that means if you search for "00 !" you
  324. will find all places where no 00 exists.
  325.  
  326. eg.: f 70000 80000 01 "hello" 0* 4a3b "xx" 00
  327. ----------------------------------------------------------------------------
  328. fd (start) (stop) (v1) [v2...] [!]      : Find and disassemble
  329.  
  330.   Like the normal find-command, but if something is found it will be dis-
  331. assembled if it stands on an even adress - then the monitor waits for any
  332. key. If you press 'ESC' you will exit find-mode, otherwise the search will
  333. be continued and if found the next line will be disassembled. If you are
  334. only interested in the arguments of a command, the necessary number of
  335. jokers ('*') has to be put in front if you want a sensible output.
  336.  
  337. eg.: fd 70000 80000 **** 00dff180
  338. ----------------------------------------------------------------------------
  339. fr (start) (stop) (target)              : Find Relative
  340.  
  341.   Searches for a word between (start) and (stop) that points relatively to
  342. (target). This word can lie between (target)-$8000 to (target)+$8000.
  343. Very useful to find branches and xxxx(pc)-adressmodes. Won't find
  344. short-branches.
  345.  
  346. eg.: fr 70000 72000 71000
  347. ----------------------------------------------------------------------------
  348. F (segment)                             : Free Memory
  349.  
  350.   The given segment will be freed by using freemem (-210) or UnLoadSeg.
  351.  
  352. eg.: F 0
  353. ----------------------------------------------------------------------------
  354. g (ziel)                                : Goto
  355.  
  356.   The program will be started at the given address under use of the at "r"
  357. defined stacks and registers and return after "rts" into the monitor.
  358.  
  359. eg.: g 70000
  360. ----------------------------------------------------------------------------
  361. h                    : Show history
  362.  
  363.   The command-history will be displayed on the screen.
  364.  
  365. e.g.: h
  366. ----------------------------------------------------------------------------
  367. i (start) [stop]                        : ASCII Dump
  368.  
  369.   The given memory will be printed as ASCII-dump. As a marker for scrolling
  370. a ";" is used.
  371.  
  372. eg.: i 70000 70020
  373. ----------------------------------------------------------------------------
  374. l ["](name)["] (start) [!]              : Load absolute File
  375.  
  376.   The given file is loaded at the given adress. Using the "M"-command the
  377. monitor looks up how many bytes of memory are free, and loads only that
  378. many bytes. If you want to overload memory allocated by DOS you can
  379. cancel this control with "!".
  380. The start- and end-address will be saved into the variables ^s and ^e for
  381. further use, especially in batchfiles.
  382.  
  383. eg.: l "program.obj" 70000
  384. ----------------------------------------------------------------------------
  385. ld ["](name)["] (segment)               : Load Dos-File
  386.  
  387.   Load an Amiga-Dos file using the LoadSeg-Command, allocs the memory and
  388. inserts it into the segment-list.
  389.  
  390. eg.: ld "dir" 0
  391. ----------------------------------------------------------------------------
  392. m (start) [stop]                        : Memory Dump
  393.  
  394.   The given memory will be printed as a hex-dump. Each line will be marked
  395. by a ":" for scrolling and overwriting.
  396.  
  397. eg.: m 70000 70020
  398. ----------------------------------------------------------------------------
  399. M (start)                               : Show Free Memory
  400.  
  401.   Looks up how many bytes of free memory there are, starting at the given
  402. address, and print the amount.
  403.  
  404. e.g.: M 30000
  405. ----------------------------------------------------------------------------
  406. o (start) (stop) (v1) [v2...]           : Occupy
  407.  
  408.   The memory between (start) and (stop) will be filled with the given values.
  409.  
  410. eg.: o 70000 71000 01 23 45
  411. ----------------------------------------------------------------------------
  412. O [name]                : Set Output Device
  413.  
  414.   Here you can enter the device/filename that is used with the "p"-command.
  415. If you don't give a name you will see the actual device.
  416. (Default: prt:)
  417. The outputfile will be opened at the first use of the "p"-command and
  418. closed when you leave the monitor or specify a new output-file.
  419.  
  420. e.g.: O df0:testfile
  421. ----------------------------------------------------------------------------
  422. p (any command)                         : Print using Output Device
  423.  
  424.   You can add a "p" as prefix before every command to have an output on
  425. screen and chosen output-device (eg.: printer).
  426.  
  427. eg.: pd 70000 70200
  428. ----------------------------------------------------------------------------
  429. P (start)                               : Print Text
  430.  
  431.   Prints a text in memory on the screen. The text should be ended by a $00.
  432. The output can be paused by space and stopped by CTRL.
  433.  
  434. eg.: P 70000
  435. ----------------------------------------------------------------------------
  436. r                    : Register
  437.  
  438.   Give you all processor-registers (used at "goto" or "trace"). You can
  439. change them by overwriting.
  440.  
  441. eg.: r
  442. ----------------------------------------------------------------------------
  443. s ["](name)["] (start) (stop)           : Save absolute File
  444.  
  445.   The given memory will be saved.
  446.  
  447. eg.: s "objectcode" 70000 72000
  448. ----------------------------------------------------------------------------
  449. S [segment]                : Segment List
  450.  
  451.   Print the data of the given segment - if it is an Amiga-Dos File you will
  452. get a list of all segments of this file.
  453. If no segment is given, you will get a general list of all 8 segments.
  454.  
  455. eg.: S 0
  456. ----------------------------------------------------------------------------
  457. t (start) (stop) (target)               : Tansfer
  458.  
  459.   The memory from (start) to (stop) will be transfered to (target).
  460.  
  461. eg.: t 70000 71000 71000
  462. ----------------------------------------------------------------------------
  463. T [start]                : Trace
  464.  
  465.   Starting at [start] (or if not given at the defined PC) the monitor will
  466. dissassemble one command. You can start tracing now, using the following
  467. keys:
  468.     return: execute this command and show next
  469.     x:    leave the trace-mode
  470.     r:    show registers
  471.     n:    set a breakpoint on the next command and start program.
  472.         useful to escape from "dbf"-loops.
  473.     j:    the next command will be executed, then one longword will
  474.         be taken from the stack and a breakpoint will be set to
  475.         the adress that is defined by the longword.
  476.         Effect: if the actual command is a jsr/bsr the whole
  477.         subroutine will be executed before returning to trace-
  478.         mode. Otherwise the program will come back to trace-
  479.         mode at the next "rts". Be careful: if something is
  480.         taken from the stack before "rts" you will have a
  481.         nice crash !
  482.     g:    will behave like goto (leave trace-mode)
  483.  
  484. eg.:    T 70000
  485. ----------------------------------------------------------------------------
  486. V <devicename>                : Device
  487.  
  488.   Changes the device used with the track-commands (default: df0).
  489.  
  490. eg.: V df0
  491. ----------------------------------------------------------------------------
  492. w (start) ["](name)["]                  : Write ASCII
  493.  
  494.   The given string will be written as ASCII-code into memory.
  495.  
  496. eg.: w 70000 "hello world"
  497. ----------------------------------------------------------------------------
  498. x                    : Exit
  499.  
  500.   Leaves Scpymon. Allocated Memory will be restored.
  501.  
  502. eg.: x
  503. ----------------------------------------------------------------------------
  504.  
  505. Jsr-Disassemble
  506. ----------------
  507.  
  508.   This option is useful to trace a program by brain. When the F1-Key is
  509. pressed the assembly-expression in the actual cursor-line will be
  510. calculated (source-part) and the actual dissassemble-adress will be
  511. pushed on a roundstack for 16 values. Afterwards, if the actual
  512. command was a jsr/jmp or branch-command, the memory at the calculated
  513. adress will be disassembled, otherwise it will be printed using the
  514. "m"-command. The jsr-disassembler knows the following expressions:
  515. $xxxx,$xxxx(pc),$xx(ax),$xx(ax,dx),$xx(ax,ax). As registers the actual
  516. defined one will be taken.
  517.   If the actual cursorposition is on a "m"-line, the next 8 digits will
  518. be taken as long adress and shown by "m"-command again.
  519. If you are on any other line, the hexadress at cursorposition will be
  520. scanned and shown by "m" (Attention: You can't use F2 to go back here!)
  521.   If you have seen enough about your subroutine/data you can press f2 to get
  522. back to your starting point.
  523.   The data will be saved on a round-stack, which means that you can
  524. press F1 as often as you want and don't have to worry about a stack overflow,
  525. but you can only take the last 16 "f1"s back with f2.
  526. If you are not happy about the mode the monitor chose while pressing
  527. f1 ("m" or "d"), you can change this by pressing shift+F1.
  528.  
  529. News since V1.5:
  530. ----------------
  531.  
  532.   Window! Sizable! Fonts! Public-Screen! More compatible! Better
  533.   Trackloading....
  534.  
  535. News since V1.6:
  536. ----------------
  537.  
  538.   Minor Bugfixes, Trackdisk now works REALLY on all devices, Enforcerhits
  539.   removed, removed german docs.
  540.  
  541. Final Remarks
  542. -------------
  543.  
  544.   The fact that I didn't recover bugs when testing, doesn't mean that there
  545. are no bugs at all, so if you have new ideas or find bugs, feel free to send
  546. your them to my address, including a disk and the return-postage for sending
  547. you a new version.
  548.  
  549. Jörg Bublath
  550. Holzheimerstr. 4, E07
  551. W-8390 Passau
  552. Germany
  553.  
  554. or reach me by email under:
  555. bublath@forwiss.uni-passau.de
  556.  
  557. or find me on IRC on #amigager under the nickname 'Skull'
  558.  
  559.  
  560.  
  561.