annotate src/cdrom/mint/SDL_syscdrom.c @ 1554:0ca607a5d173

Fixed bug #84 Date: Sun, 23 Oct 2005 16:39:03 +0200 From: "A. Schmid" <sahib@phreaker.net> Subject: [SDL] no software surfaces with svgalib driver? Hi, I noticed that the SDL (1.2.9) svgalib driver only makes use of linear addressable (framebuffer) video modes. On older systems (like one of mine), linear addressable modes are often not available. Especially for cards with VESA VBE < 2.0 the svgalib vesa driver is unusable, since VESA only supports framebuffering for VBE 2.0 and later. The changes necessary to add support for software surfaces seem to be relatively small. I only had to hack src/video/svga/SDL_svgavideo.c (see attached patch). The code worked fine for me, but it is no more than a proof of concept and should be reviewed (probably has a memory leak when switching modes). It also uses the vgagl library (included in the svgalib package) and needs to be linked against it. -Alex
author Sam Lantinga <slouken@libsdl.org>
date Sun, 19 Mar 2006 12:04:40 +0000
parents d910939febfa
children 92947e3a18db
rev   line source
724
6b3dfe0198bb Atari CD-ROM support
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
1 /*
6b3dfe0198bb Atari CD-ROM support
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
2 SDL - Simple DirectMedia Layer
769
b8d311d90021 Updated copyright information for 2004 (Happy New Year!)
Sam Lantinga <slouken@libsdl.org>
parents: 727
diff changeset
3 Copyright (C) 1997-2004 Sam Lantinga
724
6b3dfe0198bb Atari CD-ROM support
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
4
6b3dfe0198bb Atari CD-ROM support
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
5 This library is free software; you can redistribute it and/or
6b3dfe0198bb Atari CD-ROM support
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
6 modify it under the terms of the GNU Library General Public
6b3dfe0198bb Atari CD-ROM support
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
7 License as published by the Free Software Foundation; either
6b3dfe0198bb Atari CD-ROM support
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
8 version 2 of the License, or (at your option) any later version.
6b3dfe0198bb Atari CD-ROM support
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
9
6b3dfe0198bb Atari CD-ROM support
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
10 This library is distributed in the hope that it will be useful,
6b3dfe0198bb Atari CD-ROM support
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
11 but WITHOUT ANY WARRANTY; without even the implied warranty of
6b3dfe0198bb Atari CD-ROM support
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
6b3dfe0198bb Atari CD-ROM support
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
13 Library General Public License for more details.
6b3dfe0198bb Atari CD-ROM support
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
14
6b3dfe0198bb Atari CD-ROM support
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
15 You should have received a copy of the GNU Library General Public
6b3dfe0198bb Atari CD-ROM support
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
16 License along with this library; if not, write to the Free
6b3dfe0198bb Atari CD-ROM support
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
17 Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
6b3dfe0198bb Atari CD-ROM support
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
18
6b3dfe0198bb Atari CD-ROM support
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
19 Sam Lantinga
6b3dfe0198bb Atari CD-ROM support
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
20 slouken@libsdl.org
6b3dfe0198bb Atari CD-ROM support
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
21 */
1402
d910939febfa Use consistent identifiers for the various platforms we support.
Sam Lantinga <slouken@libsdl.org>
parents: 1361
diff changeset
22 #include "SDL_config.h"
724
6b3dfe0198bb Atari CD-ROM support
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
23
6b3dfe0198bb Atari CD-ROM support
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
24 /*
6b3dfe0198bb Atari CD-ROM support
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
25 Atari MetaDOS CD-ROM functions
6b3dfe0198bb Atari CD-ROM support
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
26
6b3dfe0198bb Atari CD-ROM support
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
27 Patrice Mandin
6b3dfe0198bb Atari CD-ROM support
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
28 */
6b3dfe0198bb Atari CD-ROM support
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
29
6b3dfe0198bb Atari CD-ROM support
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
30 #include <errno.h>
6b3dfe0198bb Atari CD-ROM support
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
31
6b3dfe0198bb Atari CD-ROM support
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
32 #include <cdromio.h>
6b3dfe0198bb Atari CD-ROM support
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
33 #include <metados.h>
6b3dfe0198bb Atari CD-ROM support
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
34
6b3dfe0198bb Atari CD-ROM support
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
35 #include "SDL_cdrom.h"
1361
19418e4422cb New configure-based build system. Still work in progress, but much improved
Sam Lantinga <slouken@libsdl.org>
parents: 1358
diff changeset
36 #include "../SDL_syscdrom.h"
724
6b3dfe0198bb Atari CD-ROM support
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
37
727
cb1208fcd946 Update MiNT CD-ROM driver
Patrice Mandin <patmandin@gmail.com>
parents: 724
diff changeset
38 /* Some ioctl() errno values which occur when the tray is empty */
cb1208fcd946 Update MiNT CD-ROM driver
Patrice Mandin <patmandin@gmail.com>
parents: 724
diff changeset
39 #ifndef ENOMEDIUM
cb1208fcd946 Update MiNT CD-ROM driver
Patrice Mandin <patmandin@gmail.com>
parents: 724
diff changeset
40 #define ENOMEDIUM ENOENT
cb1208fcd946 Update MiNT CD-ROM driver
Patrice Mandin <patmandin@gmail.com>
parents: 724
diff changeset
41 #endif
cb1208fcd946 Update MiNT CD-ROM driver
Patrice Mandin <patmandin@gmail.com>
parents: 724
diff changeset
42 #define ERRNO_TRAYEMPTY(errno) \
cb1208fcd946 Update MiNT CD-ROM driver
Patrice Mandin <patmandin@gmail.com>
parents: 724
diff changeset
43 ((errno == EIO) || (errno == ENOENT) || \
cb1208fcd946 Update MiNT CD-ROM driver
Patrice Mandin <patmandin@gmail.com>
parents: 724
diff changeset
44 (errno == EINVAL) || (errno == ENOMEDIUM))
724
6b3dfe0198bb Atari CD-ROM support
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
45
6b3dfe0198bb Atari CD-ROM support
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
46 /* The maximum number of CD-ROM drives we'll detect */
6b3dfe0198bb Atari CD-ROM support
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
47 #define MAX_DRIVES 32
6b3dfe0198bb Atari CD-ROM support
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
48
6b3dfe0198bb Atari CD-ROM support
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
49 typedef struct {
6b3dfe0198bb Atari CD-ROM support
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
50 unsigned char device[3]; /* Physical device letter + ':' + '\0' */
6b3dfe0198bb Atari CD-ROM support
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
51 metaopen_t metaopen; /* Infos on opened drive */
6b3dfe0198bb Atari CD-ROM support
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
52 } metados_drive_t;
6b3dfe0198bb Atari CD-ROM support
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
53
6b3dfe0198bb Atari CD-ROM support
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
54 static metados_drive_t metados_drives[MAX_DRIVES];
6b3dfe0198bb Atari CD-ROM support
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
55
6b3dfe0198bb Atari CD-ROM support
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
56 /* The system-dependent CD control functions */
6b3dfe0198bb Atari CD-ROM support
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
57 static const char *SDL_SYS_CDName(int drive);
6b3dfe0198bb Atari CD-ROM support
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
58 static int SDL_SYS_CDOpen(int drive);
6b3dfe0198bb Atari CD-ROM support
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
59 static void SDL_SYS_CDClose(SDL_CD *cdrom);
6b3dfe0198bb Atari CD-ROM support
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
60 static int SDL_SYS_CDioctl(int id, int command, void *arg);
6b3dfe0198bb Atari CD-ROM support
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
61 static int SDL_SYS_CDGetTOC(SDL_CD *cdrom);
6b3dfe0198bb Atari CD-ROM support
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
62 static CDstatus SDL_SYS_CDStatus(SDL_CD *cdrom, int *position);
6b3dfe0198bb Atari CD-ROM support
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
63 static int SDL_SYS_CDPlay(SDL_CD *cdrom, int start, int length);
6b3dfe0198bb Atari CD-ROM support
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
64 static int SDL_SYS_CDPause(SDL_CD *cdrom);
6b3dfe0198bb Atari CD-ROM support
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
65 static int SDL_SYS_CDResume(SDL_CD *cdrom);
6b3dfe0198bb Atari CD-ROM support
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
66 static int SDL_SYS_CDStop(SDL_CD *cdrom);
6b3dfe0198bb Atari CD-ROM support
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
67 static int SDL_SYS_CDEject(SDL_CD *cdrom);
6b3dfe0198bb Atari CD-ROM support
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
68
6b3dfe0198bb Atari CD-ROM support
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
69 int SDL_SYS_CDInit(void)
6b3dfe0198bb Atari CD-ROM support
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
70 {
6b3dfe0198bb Atari CD-ROM support
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
71 metainit_t metainit={0,0,0,0};
6b3dfe0198bb Atari CD-ROM support
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
72 metaopen_t metaopen;
6b3dfe0198bb Atari CD-ROM support
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
73 int i, handle;
727
cb1208fcd946 Update MiNT CD-ROM driver
Patrice Mandin <patmandin@gmail.com>
parents: 724
diff changeset
74 struct cdrom_subchnl info;
724
6b3dfe0198bb Atari CD-ROM support
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
75
6b3dfe0198bb Atari CD-ROM support
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
76 Metainit(&metainit);
6b3dfe0198bb Atari CD-ROM support
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
77 if (metainit.version == NULL) {
6b3dfe0198bb Atari CD-ROM support
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
78 #ifdef DEBUG_CDROM
6b3dfe0198bb Atari CD-ROM support
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
79 fprintf(stderr, "MetaDOS not installed\n");
6b3dfe0198bb Atari CD-ROM support
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
80 #endif
6b3dfe0198bb Atari CD-ROM support
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
81 return -1;
6b3dfe0198bb Atari CD-ROM support
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
82 }
6b3dfe0198bb Atari CD-ROM support
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
83
6b3dfe0198bb Atari CD-ROM support
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
84 if (metainit.drives_map == 0) {
6b3dfe0198bb Atari CD-ROM support
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
85 #ifdef DEBUG_CDROM
6b3dfe0198bb Atari CD-ROM support
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
86 fprintf(stderr, "No MetaDOS devices present\n");
6b3dfe0198bb Atari CD-ROM support
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
87 #endif
6b3dfe0198bb Atari CD-ROM support
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
88 return -1;
6b3dfe0198bb Atari CD-ROM support
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
89 }
6b3dfe0198bb Atari CD-ROM support
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
90
6b3dfe0198bb Atari CD-ROM support
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
91 SDL_numcds = 0;
6b3dfe0198bb Atari CD-ROM support
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
92
6b3dfe0198bb Atari CD-ROM support
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
93 for (i='A'; i<='Z'; i++) {
6b3dfe0198bb Atari CD-ROM support
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
94 metados_drives[SDL_numcds].device[0] = 0;
6b3dfe0198bb Atari CD-ROM support
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
95 metados_drives[SDL_numcds].device[1] = ':';
6b3dfe0198bb Atari CD-ROM support
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
96 metados_drives[SDL_numcds].device[2] = 0;
6b3dfe0198bb Atari CD-ROM support
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
97
6b3dfe0198bb Atari CD-ROM support
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
98 if (metainit.drives_map & (1<<(i-'A'))) {
6b3dfe0198bb Atari CD-ROM support
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
99 handle = Metaopen(i, &metaopen);
6b3dfe0198bb Atari CD-ROM support
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
100 if (handle == 0) {
6b3dfe0198bb Atari CD-ROM support
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
101
727
cb1208fcd946 Update MiNT CD-ROM driver
Patrice Mandin <patmandin@gmail.com>
parents: 724
diff changeset
102 info.cdsc_format = CDROM_MSF;
cb1208fcd946 Update MiNT CD-ROM driver
Patrice Mandin <patmandin@gmail.com>
parents: 724
diff changeset
103 if ( (Metaioctl(i, METADOS_IOCTL_MAGIC, CDROMSUBCHNL, &info) == 0) || ERRNO_TRAYEMPTY(errno) ) {
724
6b3dfe0198bb Atari CD-ROM support
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
104 metados_drives[SDL_numcds].device[0] = i;
6b3dfe0198bb Atari CD-ROM support
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
105 ++SDL_numcds;
6b3dfe0198bb Atari CD-ROM support
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
106 }
6b3dfe0198bb Atari CD-ROM support
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
107
6b3dfe0198bb Atari CD-ROM support
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
108 Metaclose(i);
6b3dfe0198bb Atari CD-ROM support
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
109 }
6b3dfe0198bb Atari CD-ROM support
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
110 }
6b3dfe0198bb Atari CD-ROM support
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
111 }
6b3dfe0198bb Atari CD-ROM support
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
112
6b3dfe0198bb Atari CD-ROM support
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
113 /* Fill in our driver capabilities */
6b3dfe0198bb Atari CD-ROM support
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
114 SDL_CDcaps.Name = SDL_SYS_CDName;
6b3dfe0198bb Atari CD-ROM support
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
115 SDL_CDcaps.Open = SDL_SYS_CDOpen;
6b3dfe0198bb Atari CD-ROM support
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
116 SDL_CDcaps.Close = SDL_SYS_CDClose;
6b3dfe0198bb Atari CD-ROM support
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
117
6b3dfe0198bb Atari CD-ROM support
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
118 SDL_CDcaps.GetTOC = SDL_SYS_CDGetTOC;
6b3dfe0198bb Atari CD-ROM support
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
119 SDL_CDcaps.Status = SDL_SYS_CDStatus;
6b3dfe0198bb Atari CD-ROM support
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
120 SDL_CDcaps.Play = SDL_SYS_CDPlay;
6b3dfe0198bb Atari CD-ROM support
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
121 SDL_CDcaps.Pause = SDL_SYS_CDPause;
6b3dfe0198bb Atari CD-ROM support
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
122 SDL_CDcaps.Resume = SDL_SYS_CDResume;
6b3dfe0198bb Atari CD-ROM support
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
123 SDL_CDcaps.Stop = SDL_SYS_CDStop;
6b3dfe0198bb Atari CD-ROM support
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
124 SDL_CDcaps.Eject = SDL_SYS_CDEject;
6b3dfe0198bb Atari CD-ROM support
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
125
6b3dfe0198bb Atari CD-ROM support
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
126 return 0;
6b3dfe0198bb Atari CD-ROM support
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
127 }
6b3dfe0198bb Atari CD-ROM support
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
128
6b3dfe0198bb Atari CD-ROM support
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
129 void SDL_SYS_CDQuit(void)
6b3dfe0198bb Atari CD-ROM support
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
130 {
6b3dfe0198bb Atari CD-ROM support
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
131 SDL_numcds = 0;
6b3dfe0198bb Atari CD-ROM support
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
132 }
6b3dfe0198bb Atari CD-ROM support
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
133
6b3dfe0198bb Atari CD-ROM support
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
134 static const char *SDL_SYS_CDName(int drive)
6b3dfe0198bb Atari CD-ROM support
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
135 {
6b3dfe0198bb Atari CD-ROM support
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
136 return(metados_drives[drive].device);
6b3dfe0198bb Atari CD-ROM support
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
137 }
6b3dfe0198bb Atari CD-ROM support
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
138
6b3dfe0198bb Atari CD-ROM support
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
139 static int SDL_SYS_CDOpen(int drive)
6b3dfe0198bb Atari CD-ROM support
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
140 {
6b3dfe0198bb Atari CD-ROM support
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
141 int handle;
6b3dfe0198bb Atari CD-ROM support
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
142
6b3dfe0198bb Atari CD-ROM support
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
143 handle = Metaopen(metados_drives[drive].device[0], &(metados_drives[drive].metaopen));
6b3dfe0198bb Atari CD-ROM support
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
144 if (handle == 0) {
6b3dfe0198bb Atari CD-ROM support
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
145 return drive;
6b3dfe0198bb Atari CD-ROM support
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
146 }
6b3dfe0198bb Atari CD-ROM support
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
147
6b3dfe0198bb Atari CD-ROM support
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
148 return -1;
6b3dfe0198bb Atari CD-ROM support
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
149 }
6b3dfe0198bb Atari CD-ROM support
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
150
6b3dfe0198bb Atari CD-ROM support
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
151 static void SDL_SYS_CDClose(SDL_CD *cdrom)
6b3dfe0198bb Atari CD-ROM support
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
152 {
6b3dfe0198bb Atari CD-ROM support
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
153 Metaclose(metados_drives[cdrom->id].device[0]);
6b3dfe0198bb Atari CD-ROM support
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
154 }
6b3dfe0198bb Atari CD-ROM support
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
155
6b3dfe0198bb Atari CD-ROM support
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
156 static int SDL_SYS_CDioctl(int id, int command, void *arg)
6b3dfe0198bb Atari CD-ROM support
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
157 {
6b3dfe0198bb Atari CD-ROM support
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
158 int retval;
6b3dfe0198bb Atari CD-ROM support
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
159
6b3dfe0198bb Atari CD-ROM support
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
160 retval = Metaioctl(metados_drives[id].device[0], METADOS_IOCTL_MAGIC, command, arg);
6b3dfe0198bb Atari CD-ROM support
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
161 if ( retval < 0 ) {
6b3dfe0198bb Atari CD-ROM support
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
162 SDL_SetError("ioctl() error: %s", strerror(errno));
6b3dfe0198bb Atari CD-ROM support
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
163 }
6b3dfe0198bb Atari CD-ROM support
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
164 return(retval);
6b3dfe0198bb Atari CD-ROM support
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
165 }
6b3dfe0198bb Atari CD-ROM support
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
166
6b3dfe0198bb Atari CD-ROM support
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
167 static int SDL_SYS_CDGetTOC(SDL_CD *cdrom)
6b3dfe0198bb Atari CD-ROM support
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
168 {
6b3dfe0198bb Atari CD-ROM support
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
169 int i,okay;
6b3dfe0198bb Atari CD-ROM support
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
170 struct cdrom_tochdr toc;
6b3dfe0198bb Atari CD-ROM support
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
171 struct cdrom_tocentry entry;
6b3dfe0198bb Atari CD-ROM support
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
172
6b3dfe0198bb Atari CD-ROM support
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
173 /* Use standard ioctl() */
6b3dfe0198bb Atari CD-ROM support
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
174 if (SDL_SYS_CDioctl(cdrom->id, CDROMREADTOCHDR, &toc)<0) {
6b3dfe0198bb Atari CD-ROM support
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
175 return -1;
6b3dfe0198bb Atari CD-ROM support
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
176 }
6b3dfe0198bb Atari CD-ROM support
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
177
6b3dfe0198bb Atari CD-ROM support
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
178 cdrom->numtracks = toc.cdth_trk1-toc.cdth_trk0+1;
6b3dfe0198bb Atari CD-ROM support
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
179 if ( cdrom->numtracks > SDL_MAX_TRACKS ) {
6b3dfe0198bb Atari CD-ROM support
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
180 cdrom->numtracks = SDL_MAX_TRACKS;
6b3dfe0198bb Atari CD-ROM support
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
181 }
6b3dfe0198bb Atari CD-ROM support
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
182
6b3dfe0198bb Atari CD-ROM support
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
183 /* Read all the track TOC entries */
6b3dfe0198bb Atari CD-ROM support
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
184 okay=1;
6b3dfe0198bb Atari CD-ROM support
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
185 for ( i=0; i<=cdrom->numtracks; ++i ) {
6b3dfe0198bb Atari CD-ROM support
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
186 if ( i == cdrom->numtracks ) {
6b3dfe0198bb Atari CD-ROM support
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
187 cdrom->track[i].id = CDROM_LEADOUT;
6b3dfe0198bb Atari CD-ROM support
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
188 } else {
6b3dfe0198bb Atari CD-ROM support
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
189 cdrom->track[i].id = toc.cdth_trk0+i;
6b3dfe0198bb Atari CD-ROM support
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
190 }
6b3dfe0198bb Atari CD-ROM support
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
191 entry.cdte_track = cdrom->track[i].id;
6b3dfe0198bb Atari CD-ROM support
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
192 entry.cdte_format = CDROM_MSF;
6b3dfe0198bb Atari CD-ROM support
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
193 if ( SDL_SYS_CDioctl(cdrom->id, CDROMREADTOCENTRY, &entry) < 0 ) {
6b3dfe0198bb Atari CD-ROM support
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
194 okay=0;
6b3dfe0198bb Atari CD-ROM support
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
195 break;
6b3dfe0198bb Atari CD-ROM support
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
196 } else {
6b3dfe0198bb Atari CD-ROM support
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
197 if ( entry.cdte_ctrl & CDROM_DATA_TRACK ) {
6b3dfe0198bb Atari CD-ROM support
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
198 cdrom->track[i].type = SDL_DATA_TRACK;
6b3dfe0198bb Atari CD-ROM support
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
199 } else {
6b3dfe0198bb Atari CD-ROM support
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
200 cdrom->track[i].type = SDL_AUDIO_TRACK;
6b3dfe0198bb Atari CD-ROM support
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
201 }
6b3dfe0198bb Atari CD-ROM support
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
202 cdrom->track[i].offset = MSF_TO_FRAMES(
6b3dfe0198bb Atari CD-ROM support
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
203 entry.cdte_addr.msf.minute,
6b3dfe0198bb Atari CD-ROM support
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
204 entry.cdte_addr.msf.second,
6b3dfe0198bb Atari CD-ROM support
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
205 entry.cdte_addr.msf.frame);
6b3dfe0198bb Atari CD-ROM support
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
206 cdrom->track[i].length = 0;
6b3dfe0198bb Atari CD-ROM support
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
207 if ( i > 0 ) {
6b3dfe0198bb Atari CD-ROM support
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
208 cdrom->track[i-1].length = cdrom->track[i].offset-cdrom->track[i-1].offset;
6b3dfe0198bb Atari CD-ROM support
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
209 }
6b3dfe0198bb Atari CD-ROM support
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
210 }
6b3dfe0198bb Atari CD-ROM support
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
211 }
6b3dfe0198bb Atari CD-ROM support
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
212
6b3dfe0198bb Atari CD-ROM support
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
213 return(okay ? 0 : -1);
6b3dfe0198bb Atari CD-ROM support
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
214 }
6b3dfe0198bb Atari CD-ROM support
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
215
6b3dfe0198bb Atari CD-ROM support
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
216 /* Get CD-ROM status */
6b3dfe0198bb Atari CD-ROM support
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
217 static CDstatus SDL_SYS_CDStatus(SDL_CD *cdrom, int *position)
6b3dfe0198bb Atari CD-ROM support
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
218 {
6b3dfe0198bb Atari CD-ROM support
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
219 CDstatus status;
6b3dfe0198bb Atari CD-ROM support
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
220 struct cdrom_tochdr toc;
6b3dfe0198bb Atari CD-ROM support
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
221 struct cdrom_subchnl info;
6b3dfe0198bb Atari CD-ROM support
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
222
6b3dfe0198bb Atari CD-ROM support
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
223 info.cdsc_format = CDROM_MSF;
6b3dfe0198bb Atari CD-ROM support
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
224 if ( SDL_SYS_CDioctl(cdrom->id, CDROMSUBCHNL, &info) < 0 ) {
727
cb1208fcd946 Update MiNT CD-ROM driver
Patrice Mandin <patmandin@gmail.com>
parents: 724
diff changeset
225 if ( ERRNO_TRAYEMPTY(errno) ) {
cb1208fcd946 Update MiNT CD-ROM driver
Patrice Mandin <patmandin@gmail.com>
parents: 724
diff changeset
226 status = CD_TRAYEMPTY;
cb1208fcd946 Update MiNT CD-ROM driver
Patrice Mandin <patmandin@gmail.com>
parents: 724
diff changeset
227 } else {
cb1208fcd946 Update MiNT CD-ROM driver
Patrice Mandin <patmandin@gmail.com>
parents: 724
diff changeset
228 status = CD_ERROR;
cb1208fcd946 Update MiNT CD-ROM driver
Patrice Mandin <patmandin@gmail.com>
parents: 724
diff changeset
229 }
724
6b3dfe0198bb Atari CD-ROM support
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
230 } else {
6b3dfe0198bb Atari CD-ROM support
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
231 switch (info.cdsc_audiostatus) {
6b3dfe0198bb Atari CD-ROM support
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
232 case CDROM_AUDIO_INVALID:
6b3dfe0198bb Atari CD-ROM support
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
233 case CDROM_AUDIO_NO_STATUS:
6b3dfe0198bb Atari CD-ROM support
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
234 /* Try to determine if there's a CD available */
6b3dfe0198bb Atari CD-ROM support
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
235 if (SDL_SYS_CDioctl(cdrom->id, CDROMREADTOCHDR, &toc)==0) {
6b3dfe0198bb Atari CD-ROM support
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
236 status = CD_STOPPED;
6b3dfe0198bb Atari CD-ROM support
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
237 } else {
6b3dfe0198bb Atari CD-ROM support
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
238 status = CD_TRAYEMPTY;
6b3dfe0198bb Atari CD-ROM support
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
239 }
6b3dfe0198bb Atari CD-ROM support
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
240 break;
6b3dfe0198bb Atari CD-ROM support
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
241 case CDROM_AUDIO_COMPLETED:
6b3dfe0198bb Atari CD-ROM support
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
242 status = CD_STOPPED;
6b3dfe0198bb Atari CD-ROM support
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
243 break;
6b3dfe0198bb Atari CD-ROM support
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
244 case CDROM_AUDIO_PLAY:
6b3dfe0198bb Atari CD-ROM support
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
245 status = CD_PLAYING;
6b3dfe0198bb Atari CD-ROM support
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
246 break;
6b3dfe0198bb Atari CD-ROM support
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
247 case CDROM_AUDIO_PAUSED:
6b3dfe0198bb Atari CD-ROM support
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
248 /* Workaround buggy CD-ROM drive */
6b3dfe0198bb Atari CD-ROM support
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
249 if ( info.cdsc_trk == CDROM_LEADOUT ) {
6b3dfe0198bb Atari CD-ROM support
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
250 status = CD_STOPPED;
6b3dfe0198bb Atari CD-ROM support
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
251 } else {
6b3dfe0198bb Atari CD-ROM support
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
252 status = CD_PAUSED;
6b3dfe0198bb Atari CD-ROM support
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
253 }
6b3dfe0198bb Atari CD-ROM support
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
254 break;
6b3dfe0198bb Atari CD-ROM support
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
255 default:
6b3dfe0198bb Atari CD-ROM support
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
256 status = CD_ERROR;
6b3dfe0198bb Atari CD-ROM support
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
257 break;
6b3dfe0198bb Atari CD-ROM support
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
258 }
6b3dfe0198bb Atari CD-ROM support
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
259 }
6b3dfe0198bb Atari CD-ROM support
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
260 if ( position ) {
6b3dfe0198bb Atari CD-ROM support
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
261 if ( status == CD_PLAYING || (status == CD_PAUSED) ) {
6b3dfe0198bb Atari CD-ROM support
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
262 *position = MSF_TO_FRAMES(
6b3dfe0198bb Atari CD-ROM support
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
263 info.cdsc_absaddr.msf.minute,
6b3dfe0198bb Atari CD-ROM support
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
264 info.cdsc_absaddr.msf.second,
6b3dfe0198bb Atari CD-ROM support
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
265 info.cdsc_absaddr.msf.frame);
6b3dfe0198bb Atari CD-ROM support
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
266 } else {
6b3dfe0198bb Atari CD-ROM support
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
267 *position = 0;
6b3dfe0198bb Atari CD-ROM support
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
268 }
6b3dfe0198bb Atari CD-ROM support
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
269 }
6b3dfe0198bb Atari CD-ROM support
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
270 return(status);
6b3dfe0198bb Atari CD-ROM support
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
271 }
6b3dfe0198bb Atari CD-ROM support
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
272
6b3dfe0198bb Atari CD-ROM support
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
273 /* Start play */
6b3dfe0198bb Atari CD-ROM support
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
274 static int SDL_SYS_CDPlay(SDL_CD *cdrom, int start, int length)
6b3dfe0198bb Atari CD-ROM support
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
275 {
6b3dfe0198bb Atari CD-ROM support
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
276 struct cdrom_msf playtime;
6b3dfe0198bb Atari CD-ROM support
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
277
6b3dfe0198bb Atari CD-ROM support
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
278 FRAMES_TO_MSF(start,
6b3dfe0198bb Atari CD-ROM support
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
279 &playtime.cdmsf_min0, &playtime.cdmsf_sec0, &playtime.cdmsf_frame0);
6b3dfe0198bb Atari CD-ROM support
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
280 FRAMES_TO_MSF(start+length,
6b3dfe0198bb Atari CD-ROM support
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
281 &playtime.cdmsf_min1, &playtime.cdmsf_sec1, &playtime.cdmsf_frame1);
6b3dfe0198bb Atari CD-ROM support
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
282 #ifdef DEBUG_CDROM
6b3dfe0198bb Atari CD-ROM support
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
283 fprintf(stderr, "Trying to play from %d:%d:%d to %d:%d:%d\n",
6b3dfe0198bb Atari CD-ROM support
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
284 playtime.cdmsf_min0, playtime.cdmsf_sec0, playtime.cdmsf_frame0,
6b3dfe0198bb Atari CD-ROM support
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
285 playtime.cdmsf_min1, playtime.cdmsf_sec1, playtime.cdmsf_frame1);
6b3dfe0198bb Atari CD-ROM support
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
286 #endif
727
cb1208fcd946 Update MiNT CD-ROM driver
Patrice Mandin <patmandin@gmail.com>
parents: 724
diff changeset
287
cb1208fcd946 Update MiNT CD-ROM driver
Patrice Mandin <patmandin@gmail.com>
parents: 724
diff changeset
288 return SDL_SYS_CDioctl(cdrom->id, CDROMPLAYMSF, &playtime);
724
6b3dfe0198bb Atari CD-ROM support
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
289 }
6b3dfe0198bb Atari CD-ROM support
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
290
6b3dfe0198bb Atari CD-ROM support
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
291 /* Pause play */
6b3dfe0198bb Atari CD-ROM support
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
292 static int SDL_SYS_CDPause(SDL_CD *cdrom)
6b3dfe0198bb Atari CD-ROM support
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
293 {
727
cb1208fcd946 Update MiNT CD-ROM driver
Patrice Mandin <patmandin@gmail.com>
parents: 724
diff changeset
294 return SDL_SYS_CDioctl(cdrom->id, CDROMPAUSE, 0);
724
6b3dfe0198bb Atari CD-ROM support
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
295 }
6b3dfe0198bb Atari CD-ROM support
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
296
6b3dfe0198bb Atari CD-ROM support
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
297 /* Resume play */
6b3dfe0198bb Atari CD-ROM support
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
298 static int SDL_SYS_CDResume(SDL_CD *cdrom)
6b3dfe0198bb Atari CD-ROM support
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
299 {
727
cb1208fcd946 Update MiNT CD-ROM driver
Patrice Mandin <patmandin@gmail.com>
parents: 724
diff changeset
300 return SDL_SYS_CDioctl(cdrom->id, CDROMRESUME, 0);
724
6b3dfe0198bb Atari CD-ROM support
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
301 }
6b3dfe0198bb Atari CD-ROM support
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
302
6b3dfe0198bb Atari CD-ROM support
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
303 /* Stop play */
6b3dfe0198bb Atari CD-ROM support
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
304 static int SDL_SYS_CDStop(SDL_CD *cdrom)
6b3dfe0198bb Atari CD-ROM support
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
305 {
727
cb1208fcd946 Update MiNT CD-ROM driver
Patrice Mandin <patmandin@gmail.com>
parents: 724
diff changeset
306 return SDL_SYS_CDioctl(cdrom->id, CDROMSTOP, 0);
724
6b3dfe0198bb Atari CD-ROM support
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
307 }
6b3dfe0198bb Atari CD-ROM support
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
308
6b3dfe0198bb Atari CD-ROM support
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
309 /* Eject the CD-ROM */
6b3dfe0198bb Atari CD-ROM support
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
310 static int SDL_SYS_CDEject(SDL_CD *cdrom)
6b3dfe0198bb Atari CD-ROM support
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
311 {
727
cb1208fcd946 Update MiNT CD-ROM driver
Patrice Mandin <patmandin@gmail.com>
parents: 724
diff changeset
312 return SDL_SYS_CDioctl(cdrom->id, CDROMEJECT, 0);
724
6b3dfe0198bb Atari CD-ROM support
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
313 }