2 This file is part of the Free Pascal run time library.
4 A file in Amiga system run time library.
5 Copyright (c) 1998 by Nils Sjoholm
6 member of the Amiga RTL development team.
8 See the file COPYING.FPC, included in this distribution,
9 for details about the copyright.
11 This program is distributed in the hope that it will be useful,
12 but WITHOUT ANY WARRANTY; without even the implied warranty of
13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
15 **********************************************************************}
20 USES exec
, configvars
, amigados
;
23 EXPANSIONNAME
: PChar
= 'expansion.library';
25 { flags for the AddDosNode() call }
30 VAR ExpansionBase
: pLibrary
;
32 FUNCTION AddBootNode(bootPri
: LONGINT; flags
: ULONG
; deviceNode
: pDeviceNode
; configDev
: pConfigDev
) : BOOLEAN;
33 PROCEDURE AddConfigDev(configDev
: pConfigDev
);
34 FUNCTION AddDosNode(bootPri
: LONGINT; flags
: ULONG
; deviceNode
: pDeviceNode
) : BOOLEAN;
35 PROCEDURE AllocBoardMem(slotSpec
: ULONG
);
36 FUNCTION AllocConfigDev
: pConfigDev
;
37 FUNCTION AllocExpansionMem(numSlots
: ULONG
; slotAlign
: ULONG
) : POINTER;
38 PROCEDURE ConfigBoard(board
: POINTER; configDev
: pConfigDev
);
39 PROCEDURE ConfigChain(baseAddr
: POINTER);
40 FUNCTION FindConfigDev(oldConfigDev
: pConfigDev
; manufacturer
: LONGINT; product
: LONGINT) : pConfigDev
;
41 PROCEDURE FreeBoardMem(startSlot
: ULONG
; slotSpec
: ULONG
);
42 PROCEDURE FreeConfigDev(configDev
: pConfigDev
);
43 PROCEDURE FreeExpansionMem(startSlot
: ULONG
; numSlots
: ULONG
);
44 FUNCTION GetCurrentBinding(currentBinding
: pCurrentBinding
; bindingSize
: ULONG
) : ULONG
;
45 FUNCTION MakeDosNode(parmPacket
: POINTER) : pDeviceNode
;
46 PROCEDURE ObtainConfigBinding
;
47 FUNCTION ReadExpansionByte(board
: POINTER; offset
: ULONG
) : BYTE;
48 PROCEDURE ReadExpansionRom(board
: POINTER; configDev
: pConfigDev
);
49 PROCEDURE ReleaseConfigBinding
;
50 PROCEDURE RemConfigDev(configDev
: pConfigDev
);
51 PROCEDURE SetCurrentBinding(currentBinding
: pCurrentBinding
; bindingSize
: ULONG
);
52 PROCEDURE WriteExpansionByte(board
: POINTER; offset
: ULONG
; byte : ULONG
);
56 FUNCTION AddBootNode(bootPri
: LONGINT; flags
: ULONG
; deviceNode
: pDeviceNode
; configDev
: pConfigDev
) : BOOLEAN;
64 MOVEA
.L ExpansionBase
,A6
70 @end: MOVE
.B D0
,@RESULT
74 PROCEDURE AddConfigDev(configDev
: pConfigDev
);
79 MOVEA
.L ExpansionBase
,A6
85 FUNCTION AddDosNode(bootPri
: LONGINT; flags
: ULONG
; deviceNode
: pDeviceNode
) : BOOLEAN;
92 MOVEA
.L ExpansionBase
,A6
98 @end: MOVE
.B D0
,@RESULT
102 PROCEDURE AllocBoardMem(slotSpec
: ULONG
);
107 MOVEA
.L ExpansionBase
,A6
113 FUNCTION AllocConfigDev
: pConfigDev
;
117 MOVEA
.L ExpansionBase
,A6
124 FUNCTION AllocExpansionMem(numSlots
: ULONG
; slotAlign
: ULONG
) : POINTER;
130 MOVEA
.L ExpansionBase
,A6
137 PROCEDURE ConfigBoard(board
: POINTER; configDev
: pConfigDev
);
143 MOVEA
.L ExpansionBase
,A6
149 PROCEDURE ConfigChain(baseAddr
: POINTER);
154 MOVEA
.L ExpansionBase
,A6
160 FUNCTION FindConfigDev(oldConfigDev
: pConfigDev
; manufacturer
: LONGINT; product
: LONGINT) : pConfigDev
;
164 MOVEA
.L oldConfigDev
,A0
165 MOVE
.L manufacturer
,D0
167 MOVEA
.L ExpansionBase
,A6
174 PROCEDURE FreeBoardMem(startSlot
: ULONG
; slotSpec
: ULONG
);
180 MOVEA
.L ExpansionBase
,A6
186 PROCEDURE FreeConfigDev(configDev
: pConfigDev
);
191 MOVEA
.L ExpansionBase
,A6
197 PROCEDURE FreeExpansionMem(startSlot
: ULONG
; numSlots
: ULONG
);
203 MOVEA
.L ExpansionBase
,A6
209 FUNCTION GetCurrentBinding(currentBinding
: pCurrentBinding
; bindingSize
: ULONG
) : ULONG
;
213 MOVEA
.L currentBinding
,A0
214 MOVE
.L bindingSize
,D0
215 MOVEA
.L ExpansionBase
,A6
222 FUNCTION MakeDosNode(parmPacket
: POINTER) : pDeviceNode
;
226 MOVEA
.L parmPacket
,A0
227 MOVEA
.L ExpansionBase
,A6
234 PROCEDURE ObtainConfigBinding
;
238 MOVEA
.L ExpansionBase
,A6
244 FUNCTION ReadExpansionByte(board
: POINTER; offset
: ULONG
) : BYTE;
250 MOVEA
.L ExpansionBase
,A6
257 PROCEDURE ReadExpansionRom(board
: POINTER; configDev
: pConfigDev
);
263 MOVEA
.L ExpansionBase
,A6
269 PROCEDURE ReleaseConfigBinding
;
273 MOVEA
.L ExpansionBase
,A6
279 PROCEDURE RemConfigDev(configDev
: pConfigDev
);
284 MOVEA
.L ExpansionBase
,A6
290 PROCEDURE SetCurrentBinding(currentBinding
: pCurrentBinding
; bindingSize
: ULONG
);
294 MOVEA
.L currentBinding
,A0
295 MOVE
.L bindingSize
,D0
296 MOVEA
.L ExpansionBase
,A6
302 PROCEDURE WriteExpansionByte(board
: POINTER; offset
: ULONG
; byte : ULONG
);
309 MOVEA
.L ExpansionBase
,A6
315 END. (* UNIT EXPANSION *)