|
|
1.1 root 1: /*
2: * Tester for Hatari's implementation of Atari debugger
3: * XBIOS Dbmsg() API
4: *
5: * Test:
6: * hatari --bios-intercept --trace xbios dbmsg.tos
7: *
8: * See:
9: * - http://dev-docs.atariforge.org/files/Atari_Debugger_1-24-1990.pdf
10: * - http://toshyp.atari.org/en/004012.html#Dbmsg
11: */
12: #include "stdint.h"
13: #include "assert.h"
14: #include "tos.h"
15:
16: #define DB_APP_CMD 0x0000
17: #define DB_COMMAND 0xF100
18: #define DB_NULLSTRING 0xF000
19: /* len should be: 1-255 */
20: #define DB_STRING(len) (DB_NULLSTRING + ((len) & 0xFF))
21:
22: static void Dbmsg(int16_t reserved, uint16_t msg_num, uint32_t msg_arg)
23: {
24: /* other 'reserved' values than 5 are undefined */
25: xbios(11, reserved, msg_num, msg_arg);
26: }
27:
28: int main()
29: {
30: const char str[] = "Halting STRING";
31:
32: /* Print NULL-terminated string */
33: Dbmsg(5, DB_NULLSTRING, (uint32_t)"Please print NULLSTRING");
34:
1.1.1.2 ! root 35: /* Print given string (which length is encoded to msg_num),
! 36: * and invoke debugger / halt
1.1 root 37: */
38: Dbmsg(5, DB_STRING(sizeof(str)-1), (uint32_t)str);
39:
40: /* Print given value and invoke debugger */
41: Dbmsg(5, DB_APP_CMD, (uint32_t)0xDEADBEEF);
42:
43: /* Give command for debugger to execute.
44: * In Hatari case this is currently same as DB_NULLSTRING.
45: */
46: Dbmsg(5, DB_COMMAND, (uint32_t)"echo 'Debugging message';");
47:
48: return 0;
49: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.