1 #ifndef SIO_H_ 2 #define SIO_H_ 3 4 #include "config.h" 5 6 #include <stdio.h> /* FILENAME_MAX */ 7 8 #include "atari.h" 9 10 #define SIO_MAX_DRIVES 8 11 12 typedef enum SIO_tagUnitStatus { 13 SIO_OFF, 14 SIO_NO_DISK, 15 SIO_READ_ONLY, 16 SIO_READ_WRITE 17 } SIO_UnitStatus; 18 19 extern char SIO_status[256]; 20 extern SIO_UnitStatus SIO_drive_status[SIO_MAX_DRIVES]; 21 extern char SIO_filename[SIO_MAX_DRIVES][FILENAME_MAX]; 22 23 #define SIO_LAST_READ 0 24 #define SIO_LAST_WRITE 1 25 extern int SIO_last_op; 26 extern int SIO_last_op_time; 27 extern int SIO_last_drive; /* 1 .. 8 */ 28 extern int SIO_last_sector; 29 30 int SIO_Mount(int diskno, const char *filename, int b_open_readonly); 31 void SIO_Dismount(int diskno); 32 void SIO_DisableDrive(int diskno); 33 int SIO_RotateDisks(void); 34 void SIO_Handler(void); 35 36 UBYTE SIO_ChkSum(const UBYTE *buffer, int length); 37 void SIO_TapeMotor(int onoff); 38 void SIO_SwitchCommandFrame(int onoff); 39 void SIO_PutByte(int byte); 40 int SIO_GetByte(void); 41 int SIO_Initialise(int *argc, char *argv[]); 42 void SIO_Exit(void); 43 44 /* Some defines about the serial I/O timing. Currently fixed! */ 45 #define SIO_XMTDONE_INTERVAL 15 46 #define SIO_SERIN_INTERVAL 8 47 #define SIO_SEROUT_INTERVAL 8 48 #define SIO_ACK_INTERVAL 36 49 50 /* These functions are also used by the 1450XLD Parallel disk device */ 51 extern int SIO_format_sectorcount[SIO_MAX_DRIVES]; 52 extern int SIO_format_sectorsize[SIO_MAX_DRIVES]; 53 int SIO_ReadStatusBlock(int unit, UBYTE *buffer); 54 int SIO_FormatDisk(int unit, UBYTE *buffer, int sectsize, int sectcount); 55 void SIO_SizeOfSector(UBYTE unit, int sector, int *sz, ULONG *ofs); 56 int SIO_ReadSector(int unit, int sector, UBYTE *buffer); 57 int SIO_DriveStatus(int unit, UBYTE *buffer); 58 int SIO_WriteStatusBlock(int unit, const UBYTE *buffer); 59 int SIO_WriteSector(int unit, int sector, const UBYTE *buffer); 60 void SIO_StateSave(void); 61 void SIO_StateRead(void); 62 63 #endif /* SIO_H_ */ 64