|
|
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: ! 35: /* Print give string (which lenght is encoded to msg_num), ! 36: * and invoking debugger / halt ! 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.