--- Frodo4/Src/SID_linux.h 2004/12/04 13:24:35 1.5 +++ Frodo4/Src/SID_linux.h 2010/04/22 09:09:28 1.7 @@ -1,7 +1,7 @@ /* * SID_linux.h - 6581 emulation, Linux specific stuff * - * Frodo (C) 1994-1997,2002-2004 Christian Bauer + * Frodo Copyright (C) Christian Bauer * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -23,20 +23,6 @@ #include #include -// Catweasel ioctls (included here for convenience) -#include -#define CWSID_IOCTL_TYPE ('S') -#define CWSID_IOCTL_RESET _IO(CWSID_IOCTL_TYPE, 0) -#define CWSID_IOCTL_CARDTYPE _IOR(CWSID_IOCTL_TYPE, 4, int) -#define CWSID_IOCTL_PAL _IO(CWSID_IOCTL_TYPE, 0x11) -#define CWSID_IOCTL_NTSC _IO(CWSID_IOCTL_TYPE, 0x12) -#define CWSID_IOCTL_DOUBLEBUFFER _IOW(CWSID_IOCTL_TYPE, 0x21, int) -#define CWSID_IOCTL_DELAY _IOW(CWSID_IOCTL_TYPE, 0x22, int) -#define CWSID_MAGIC 0x100 -#define HAVE_CWSID 1 - -#include "VIC.h" - /* * Initialization @@ -142,76 +128,3 @@ void DigitalRenderer::EmulateLine(void) buffer_pos = 0; } } - - -/* - * Renderer for Catweasel card - */ - -// Renderer class -class CatweaselRenderer : public SIDRenderer { -public: - CatweaselRenderer(); - virtual ~CatweaselRenderer(); - - virtual void Reset(void); - virtual void EmulateLine(void) {} - virtual void WriteRegister(uint16 adr, uint8 byte); - virtual void NewPrefs(Prefs *prefs) {} - virtual void Pause(void) {} - virtual void Resume(void) {} - -private: - int cwsid_fh; // Catweasel device file handle -}; - -// Constructor: Open Catweasel device and reset SID -CatweaselRenderer::CatweaselRenderer() -{ - cwsid_fh = open("/dev/sid", O_WRONLY); - if (cwsid_fh >= 0) { - int i; - if (ioctl(cwsid_fh, CWSID_IOCTL_CARDTYPE, &i) < 0 || i != CWSID_MAGIC) { - close(cwsid_fh); - cwsid_fh = -1; - } else { - ioctl(cwsid_fh, CWSID_IOCTL_RESET); - ioctl(cwsid_fh, CWSID_IOCTL_DOUBLEBUFFER, 0); - } - } - - Reset(); -} - -// Destructor: Reset SID and close Catweasel device -CatweaselRenderer::~CatweaselRenderer() -{ - Reset(); - - if (cwsid_fh >= 0) { - close(cwsid_fh); - cwsid_fh = -1; - } -} - -// Reset SID -void CatweaselRenderer::Reset(void) -{ - if (cwsid_fh >= 0) { - uint8 zero = 0; - ioctl(cwsid_fh, CWSID_IOCTL_RESET); - lseek(cwsid_fh, 24, SEEK_SET); - write(cwsid_fh, &zero, 1); - } -} - -// Write to register -void CatweaselRenderer::WriteRegister(uint16 adr, uint8 byte) -{ - if (cwsid_fh >= 0 && adr < 0x1a) { - lseek(cwsid_fh, adr, SEEK_SET); - write(cwsid_fh, &byte, 1); - lseek(cwsid_fh, adr, SEEK_SET); - write(cwsid_fh, &byte, 1); - } -}