This is tape.h in view mode; [Download] [Up]
/*
* tape.h - Cassette drive and P00.
*
* Written by
* Jouko Valta (jopi@stekt.oulu.fi)
*
* This file is part of VICE, the Versatile Commodore Emulator.
* See README for copyright notice.
*
* 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
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
* 02111-1307 USA.
*
*/
/* FIXME: P00 should be moved from here. */
#ifndef _CBM_TAPE_H_
#define _CBM_TAPE_H_
#include "types.h"
/* Image File Formats */
#define TFF_INDEX 0 /* Special name index file */
#define TFF_CBM 1
#define TFF_SFX 2
#define TFF_LYNX 3
#define TFF_P00 4
#define TFF_TAPE 5
#define TFF_DISK 6 /* Also adjust the format list on tapeunit.c */
/* Emulation Mode */
#define TEM_BYTE 0
#define TEM_ASCII 1 /* convert data */
#define TEM_TONE 2
#define TEM_NORMAL 4
#define TEM_TURBO 8
/* T64 Image File Layout */
#define TAPE_HDR_SIZE 64
#define TAPE_DIR_SIZE 32
/* Cassette Format Constants */
#define CAS_TYPE_OFFSET 0
#define CAS_STAD_OFFSET 1 /* start address */
#define CAS_ENAD_OFFSET 3 /* end address */
#define CAS_NAME_OFFSET 5 /* filename */
#define CAS_TYPE_PRG 1 /* Binary Program */
#define CAS_TYPE_BAS 3 /* Relocatable Program */
#define CAS_TYPE_DATA 4 /* Data Record */
#define CAS_TYPE_EOF 5 /* End of Tape marker */
#ifdef __GNUC__
#define PACK __attribute__ ((packed)) /* pack structures on byte boundaries */
#else
#define PACK /* pack using a compiler switch instead */
#endif
typedef struct {
BYTE type PACK;
BYTE start[2] PACK;
BYTE end[2] PACK;
BYTE name[16] PACK;
} CBM_CASBUF;
typedef struct {
int type; /* emulation type */
int ImageFormat; /* Image File format: X00, FDX, FS, ... */
FILE *FileDs;
char ActiveName[256];
/* Emulation */
int entries; /* (maximum) Number of files on image */
int FileType; /* PRG, SEQ, ... */
BYTE *directory; /* Tape directory buffer */
short entry; /* Number of current entry slot */
int sense; /* tape sense */
int state; /* stream state */
} TAPE;
/* ------------------------------------------------------------------------- */
extern int is_pc64name(const char *name);
extern int write_pc64header(FILE *fd, const char *name, int reclen);
extern int read_pc64header(FILE *fd, char *name, int *reclen);
extern char *pc_get_cbmname(FILE *fd, char *fsname);
extern int DirP00(FILE *fd, char *CbmName, int *start, int *end);
extern int check_t64_header(FILE *f);
extern int is_t64name(const char *name);
extern char *read_tape_image_contents(const char *fname);
#endif /* _CBM_TAPE_H_ */
These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.