-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathkernasm.s
More file actions
158 lines (132 loc) · 2.45 KB
/
Copy pathkernasm.s
File metadata and controls
158 lines (132 loc) · 2.45 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
lib sysdef
global _pagemonitor
; this is just missing Vendor call
text
_pagemonitor link a6,#0
movem.l d2-d7/a2-a5,-(sp)
move.l 8(a6),pbuffer+2
move.l 12(a6),pbuffer+6
move.l 16(a6),pbuffer+10
sys ind,pbuffer
movem.l (sp)+,d2-d7/a2-a5
unlk a6
rts
data
pbuffer dc.w $100
dc.l 0
dc.l 0
dc.l 0
global _systat
; this is just missing from clibs
text
_systat link a6,#0
movem.l d2-d7/a2-a5,-(sp)
move.l 8(a6),ibuffer+2
sys ind,ibuffer
move.l 8(a6),d0
movem.l (sp)+,d2-d7/a2-a5
unlk a6
rts
data
ibuffer dc.w systat
dc.l 0
global _system_control
; this is just missing from clibs
text
_system_control link a6,#0
movem.l d2-d7/a2-a5,-(sp)
move.l 8(a6),d0
move.l 12(a6),d1
sys system_control
movem.l (sp)+,d2-d7/a2-a5
unlk a6
rts
global _kernscsidump
; expects #0x1084 or #0x1b1b824 magic values for choosing message
text
_kernscsidump link a6,#0
movem.l d2-d7/a2-a5,-(sp)
move.l 8(a6),a0
move #70,d0
trap #13
movem.l (sp)+,d2-d7/a2-a5
unlk a6
rts
global _kernbootfile
text
_kernbootfile link a6,#0
movem.l d2-d7/a2-a5,-(sp)
move.l 8(a6),a0
move #71,d0
move #0,d1 ; this handler assumes d1 is zero and only loads lsbyte!
trap #13
movem.l (sp)+,d2-d7/a2-a5
unlk a6
rts
global _kernalloc
text
_kernalloc link a6,#0
movem.l d2-d7/a2-a5,-(sp)
move.l 8(a6),d1
move #61,d0
trap #13
bcs L2
move.l a0,d0
L1
movem.l (sp)+,d2-d7/a2-a5
unlk a6
rts
L2
move.l #0,d0
bra L1
global _kernfree
text
_kernfree link a6,#0
movem.l d2-d7/a2-a5,-(sp)
move.l 8(a6),a0
move.l 12(a6),d1
move #62,d0
trap #13
bcs L3
move #1,d0
L3
movem.l (sp)+,d2-d7/a2-a5
unlk a6
rts
global _kernexec
text
_kernexec link a6,#0
movem.l d2-d7/a2-a5,-(sp)
move.l 8(a6),a0
move #60,d0
trap #13
movem.l (sp)+,d2-d7/a2-a5
unlk a6
rts
end
; need a way of validating this absolute address has not moved
;
add_custom_map EQU $fe6a
global _kernmapper
text
_kernmapper link a6,#0
lea fpu_seg(pc),a0
; if we could pass arguments to kernexec() (via usarg0?)
; move.l 8(a6),(a0)
; move.l 12(a6),4(a0)
; move.l 16(a6),d0
; move.w d0,8(a0)
bsr add_custom_map
move.l (a0),d0
rts
; Uniflex standard umdep_segs
; 0x007e0000 0x00600000 videoram
; 0x007de000 0x00000000 shared_page0 (phys(2) is unsupported)
; 0x007dd000 0x00000000 shared_page1 (phys(3) is unsupported)
; 0x007dc000 0x007ba000 rtc
;
fpu_seg EQU *
dc.l 0x007db000
dc.l 0x0078a000 ;fpu
dc.w 1
mappersize EQU *-_kernmapper