1 #include <aros/debug.h>
2 #include <aros/symbolsets.h>
3 #include <exec/resident.h>
4 #include <exec/alerts.h>
5 #include <dos/dosextens.h>
6 #include <dos/filehandler.h>
7 #include <proto/exec.h>
10 #define HANDLER_NAME "con-handler"
15 #define STR(A) _STR(A)
17 extern LONG
CONMain(void);
19 static const TEXT dev_name_con
[] = "CON";
20 static const TEXT dev_name_raw
[] = "RAW";
22 extern void con_End(void);
23 static const TEXT version_string
[];
25 static AROS_UFP3 (APTR
, con_Init
,
26 AROS_UFPA(APTR
, unused
, D0
),
27 AROS_UFPA(BPTR
, segList
, A0
),
28 AROS_UFPA(struct ExecBase
*, sysBase
, A6
));
30 const struct Resident con_romtag
=
33 (struct Resident
*)&con_romtag
,
40 (STRPTR
)version_string
,
44 static const TEXT version_string
[] = HANDLER_NAME
" " STR(VERSION
) "." STR(REVISION
) " (" ADATE
")\n";
46 static AROS_UFH3 (APTR
, con_Init
,
47 AROS_UFHA(APTR
, unused
, D0
),
48 AROS_UFHA(BPTR
, segList
, A0
),
49 AROS_UFHA(struct ExecBase
*, SysBase
, A6
))
53 struct DosLibrary
*DOSBase
;
54 struct DeviceNode
*dev_node
;
57 DOSBase
= (struct DosLibrary
*)OpenLibrary("dos.library", 0);
59 Alert(AG_OpenLib
| AO_DOSLib
);
61 /* Create device node and add it to the system. The handler will then be
62 started when it is first accessed */
63 conseg
= CreateSegList(CONMain
);
65 Alert(AT_DeadEnd
| AG_NoMemory
);
67 dev_node
= (APTR
)MakeDosEntry(dev_name_con
, DLT_DEVICE
);
69 Alert(AT_DeadEnd
| AG_NoMemory
);
71 dev_node
->dn_StackSize
= AROS_STACKSIZE
;
72 dev_node
->dn_SegList
= conseg
;
73 dev_node
->dn_Startup
= 0;
74 dev_node
->dn_Priority
= 5;
75 dev_node
->dn_GlobalVec
= (BPTR
)(SIPTR
)-1;
76 if(!AddDosEntry((APTR
)dev_node
))
79 dev_node
= (APTR
)MakeDosEntry(dev_name_raw
, DLT_DEVICE
);
81 Alert(AT_DeadEnd
| AG_NoMemory
);
82 dev_node
->dn_StackSize
= AROS_STACKSIZE
;
83 dev_node
->dn_SegList
= conseg
;
84 dev_node
->dn_Startup
= (BPTR
)1;
85 dev_node
->dn_Priority
= 5;
86 dev_node
->dn_GlobalVec
= (BPTR
)(SIPTR
)-1;
87 if(!AddDosEntry((APTR
)dev_node
))
90 D(bug("CON: and RAW: added\n"));
92 CloseLibrary(&DOSBase
->dl_lib
);