|
|
1.1 root 1: ; Test Hatari's XBIOS functions (which can be enabled with --bios-intercept).
2: ; Assemble this code with TurboAss.
3:
4: movea.l 4(SP),A5 ; Get pointer to basepage
5: move.l $0C(A5),D0 ; Text segment length
6: add.l $14(A5),D0 ; Data segment length
7: add.l $1C(A5),D0 ; BSS segment length
8: add.l #$0800,D0 ; Space for the stack
9:
10: move.l D0,D1
11: add.l A5,D1
12: and.l #-2,D1
13:
14: movea.l D1,SP
15: move.l D0,-(SP)
16: move.l A5,-(SP)
17: clr.w -(SP)
18: move.w #$4A,-(SP)
19: trap #1 ; Mshrink
20: lea 12(SP),SP
21:
22:
23: ; Test XBIOS 255 - Send Hatari control command
24: pea hatcontrol(PC)
25: move.w #255,-(SP)
26: trap #14
27: addq.l #6,SP
28:
29:
30: ; Test XBIOS 11 - the Atari debugger XBIOS call
31: ; See:
32: ; - http://dev-docs.atariforge.org/files/Atari_Debugger_1-24-1990.pdf
33: ; - http://toshyp.atari.org/en/004013.html#Dbmsg
34:
35: ; Print string (with length encoded in msg_num), and invoke debugger
36: pea dbmsg_start(PC)
37: move.w #$F000+dbmsg_end-dbmsg_start,-(SP)
38: move.w #5,-(SP)
39: move.w #11,-(SP)
40: trap #14
41: lea 10(SP),SP
42:
43: ; Print NUL-terminated string
44: pea dbmsg_nul(PC)
45: move.w #$F000,-(SP)
46: move.w #5,-(SP)
47: move.w #11,-(SP)
48: trap #14
49: lea 10(SP),SP
50:
51: ; Print given value and invoke debugger
52: move.l #$DEADC0DE,-(SP)
53: move.w #$1234,-(SP)
54: move.w #5,-(SP)
55: move.w #11,-(SP)
56: trap #14
57: lea 10(SP),SP
58:
59:
60: clr.w -(SP)
61: trap #1 ; Pterm0
62:
63:
64: DATA
65:
66: hatcontrol:
67: DC.B "hatari-debug evaluate 23 + 19",0
68:
69: dbmsg_start:
70: DC.B "This is a Dbmsg test for a string with fixed size."
71: dbmsg_end:
72:
73: dbmsg_nul:
74: DC.B "This is a Dbmsg test for a NUL-terminated string.",0
75:
76: EVEN
77:
78: END
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.