mirror of
https://github.com/clockworkpi/PicoCalc.git
synced 2025-12-12 10:18:54 +01:00
282 lines
9.8 KiB
C
282 lines
9.8 KiB
C
/*
|
|
* @cond
|
|
* The following section will be excluded from the documentation.
|
|
*/
|
|
/* *********************************************************************************************************************
|
|
PicoMite MMBasic
|
|
|
|
FileIO.h
|
|
|
|
<COPYRIGHT HOLDERS> Geoff Graham, Peter Mather
|
|
Copyright (c) 2021, <COPYRIGHT HOLDERS> All rights reserved.
|
|
Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
|
|
1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
|
|
2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer
|
|
in the documentation and/or other materials provided with the distribution.
|
|
3. The name MMBasic be used when referring to the interpreter in any documentation and promotional material and the original copyright message be displayed
|
|
on the console at startup (additional copyright messages may be added).
|
|
4. All advertising materials mentioning features or use of this software must display the following acknowledgement: This product includes software developed
|
|
by the <copyright holder>.
|
|
5. Neither the name of the <copyright holder> nor the names of its contributors may be used to endorse or promote products derived from this software
|
|
without specific prior written permission.
|
|
THIS SOFTWARE IS PROVIDED BY <COPYRIGHT HOLDERS> AS IS AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
|
|
OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL <COPYRIGHT HOLDERS> BE LIABLE FOR ANY DIRECT,
|
|
INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
|
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
|
|
OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
|
|
************************************************************************************************************************/#ifndef __FILEIO_H
|
|
#define __FILEIO_H
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
#include "ff.h"
|
|
#ifdef rp2350
|
|
#include "upng.h"
|
|
#endif
|
|
// File related I/O
|
|
unsigned char MMfputc(unsigned char c, int fnbr);
|
|
int MMfgetc(int filenbr);
|
|
void MMfopen(unsigned char *fname, unsigned char *mode, int fnbr);
|
|
int MMfeof(int filenbr);
|
|
void MMfclose(int fnbr);
|
|
int FindFreeFileNbr(void);
|
|
void CloseAllFiles(void);
|
|
void MMgetline(int filenbr, char *p);
|
|
void MMPrintString(char *s);
|
|
void CheckAbort(void);
|
|
char FileGetChar(int fnbr);
|
|
void FilePutStr(int count, char *c, int fnbr);
|
|
char FilePutChar(char c, int fnbr);
|
|
void CheckSDCard(void);
|
|
void LoadOptions(void);
|
|
void CrunchData(unsigned char **p, int c);
|
|
int FileEOF(int fnbr);
|
|
void ClearSavedVars(void);
|
|
int FileLoadProgram(unsigned char *fname, bool chain);
|
|
int FileLoadCMM2Program(char *fname, bool message);
|
|
void SaveOptions(void);
|
|
void ResetAllFlash(void);
|
|
void disable_interrupts_pico(void);
|
|
void enable_interrupts_pico(void);
|
|
int ForceFileClose(int fnbr);
|
|
void ErrorCheck(int fnbr);
|
|
extern int OptionFileErrorAbort;
|
|
extern unsigned char filesource[MAXOPENFILES + 1];
|
|
extern int FatFSFileSystemSave;
|
|
extern void positionfile(int fnbr, int idx);
|
|
struct option_s {
|
|
int Magic;
|
|
char Autorun;
|
|
char Tab;
|
|
char Invert;
|
|
char Listcase; //8
|
|
//
|
|
unsigned int PROG_FLASH_SIZE;
|
|
unsigned int HEAP_SIZE;
|
|
#ifndef PICOMITEVGA
|
|
char Height;
|
|
char Width;
|
|
#else
|
|
short d2;
|
|
#endif
|
|
unsigned char DISPLAY_TYPE;
|
|
char DISPLAY_ORIENTATION; //12=20
|
|
//
|
|
int PIN;
|
|
int Baudrate;
|
|
int8_t ColourCode;
|
|
unsigned char MOUSE_CLOCK;
|
|
unsigned char MOUSE_DATA;
|
|
char spare;
|
|
int CPU_Speed;
|
|
unsigned int Telnet; // used to store the size of the program flash (also start of the LIBRARY code)
|
|
int DefaultFC, DefaultBC; // the default colours
|
|
short DefaultBrightness; // default backlight brightness //40
|
|
unsigned char KEYBOARD_CLOCK;
|
|
unsigned char KEYBOARD_DATA;
|
|
unsigned char continuation;
|
|
unsigned char D1; // dummy
|
|
uint16_t D2; // dummy
|
|
//
|
|
// display related
|
|
unsigned char DefaultFont;
|
|
unsigned char KeyboardConfig;
|
|
unsigned char RTC_Clock;
|
|
unsigned char RTC_Data; //4=60
|
|
//
|
|
#ifdef PICOCALC
|
|
uint8_t KEYBOARDBL;
|
|
#endif
|
|
#ifdef PICOMITE
|
|
char dummy[4]; // maximum number of controls allowed //64
|
|
#endif
|
|
#ifdef PICOMITEWEB
|
|
uint16_t TCP_PORT; // maximum number of controls allowed //64
|
|
uint16_t ServerResponceTime;
|
|
#endif
|
|
#ifdef PICOMITEVGA
|
|
int16_t X_TILE; // maximum number of controls allowed //64
|
|
int16_t Y_TILE; // maximum number of controls allowed //64
|
|
#endif
|
|
// for the SPI LCDs 4=64
|
|
unsigned char LCD_CD;
|
|
unsigned char LCD_CS;
|
|
unsigned char LCD_Reset;
|
|
// touch related
|
|
unsigned char TOUCH_CS;
|
|
unsigned char TOUCH_IRQ;
|
|
char TOUCH_SWAPXY;
|
|
unsigned char repeat;
|
|
char disabletftp;//56 8=72
|
|
#ifndef PICOMITEVGA
|
|
int TOUCH_XZERO;
|
|
int TOUCH_YZERO;
|
|
float TOUCH_XSCALE;
|
|
float TOUCH_YSCALE; //72 16=88
|
|
#else
|
|
short Height;
|
|
short Width;
|
|
char dummy[12];
|
|
#endif
|
|
#ifdef GUICONTROLS
|
|
int MaxCtrls;
|
|
#else
|
|
uint8_t HDMIclock;
|
|
uint8_t HDMId0;
|
|
uint8_t HDMId1;
|
|
uint8_t HDMId2;
|
|
#endif
|
|
unsigned int FlashSize; //8=96
|
|
unsigned char SD_CS;
|
|
unsigned char SYSTEM_MOSI;
|
|
unsigned char SYSTEM_MISO;
|
|
unsigned char SYSTEM_CLK;
|
|
unsigned char DISPLAY_BL;
|
|
unsigned char DISPLAY_CONSOLE;
|
|
unsigned char TOUCH_Click;
|
|
char LCD_RD; // used for the RD pin for SSD1963 //8=104
|
|
unsigned char AUDIO_L;
|
|
unsigned char AUDIO_R;
|
|
unsigned char AUDIO_SLICE;
|
|
unsigned char SDspeed;
|
|
unsigned char pins[3]; //20=116 // general use storage for CFunctions written by PeterM //86
|
|
unsigned char TOUCH_CAP;
|
|
unsigned char SSD_DATA;
|
|
unsigned char THRESHOLD_CAP;
|
|
unsigned char audio_i2s_data;
|
|
unsigned char audio_i2s_bclk;
|
|
char LCDVOP;
|
|
char I2Coffset;
|
|
unsigned char NoHeartbeat;
|
|
char Refresh;
|
|
unsigned char SYSTEM_I2C_SDA;
|
|
unsigned char SYSTEM_I2C_SCL;
|
|
unsigned char RTC;
|
|
char PWM; //8=124
|
|
unsigned char INT1pin;
|
|
unsigned char INT2pin;
|
|
unsigned char INT3pin;
|
|
unsigned char INT4pin;
|
|
unsigned char SD_CLK_PIN;
|
|
unsigned char SD_MOSI_PIN;
|
|
unsigned char SD_MISO_PIN;
|
|
unsigned char SerialConsole; //8=132
|
|
unsigned char SerialTX;
|
|
unsigned char SerialRX;
|
|
unsigned char numlock;
|
|
unsigned char capslock; //4=136
|
|
unsigned int LIBRARY_FLASH_SIZE; // 4=140
|
|
unsigned char AUDIO_CLK_PIN;
|
|
unsigned char AUDIO_MOSI_PIN;
|
|
unsigned char SYSTEM_I2C_SLOW;
|
|
unsigned char AUDIO_CS_PIN; //4=144
|
|
#ifdef PICOMITEWEB
|
|
uint16_t UDP_PORT; // maximum number of controls allowed //48
|
|
uint16_t UDPServerResponceTime;
|
|
char hostname[32];
|
|
char ipaddress[16];
|
|
char mask[16];
|
|
char gateway[16];
|
|
#else
|
|
unsigned char x[84]; //85=229
|
|
#endif
|
|
unsigned char heartbeatpin;
|
|
unsigned char PSRAM_CS_PIN;
|
|
unsigned char BGR;
|
|
unsigned char NoScroll;
|
|
unsigned char CombinedCS;
|
|
unsigned char USBKeyboard;
|
|
unsigned char VGA_HSYNC;
|
|
unsigned char VGA_BLUE; //7=236
|
|
unsigned char AUDIO_MISO_PIN;
|
|
unsigned char AUDIO_DCS_PIN;
|
|
unsigned char AUDIO_DREQ_PIN;
|
|
unsigned char AUDIO_RESET_PIN;
|
|
unsigned char SSD_DC;
|
|
unsigned char SSD_WR;
|
|
unsigned char SSD_RD;
|
|
signed char SSD_RESET; //8=244
|
|
unsigned char BackLightLevel;
|
|
unsigned char NoReset;
|
|
unsigned char AllPins;
|
|
unsigned char modbuff; //4=248
|
|
short RepeatStart;
|
|
short RepeatRate;
|
|
int modbuffsize; //8=256
|
|
unsigned char F1key[MAXKEYLEN];
|
|
unsigned char F5key[MAXKEYLEN];
|
|
unsigned char F6key[MAXKEYLEN];
|
|
unsigned char F7key[MAXKEYLEN];
|
|
unsigned char F8key[MAXKEYLEN];
|
|
unsigned char F9key[MAXKEYLEN];
|
|
unsigned char SSID[MAXKEYLEN];
|
|
unsigned char PASSWORD[MAXKEYLEN]; //512=768
|
|
unsigned char platform[32];
|
|
unsigned char extensions[96]; //128=896 == 7 XMODEM blocks
|
|
// To enable older CFunctions to run any new options *MUST* be added at the end of the list
|
|
} __attribute__((packed));
|
|
extern unsigned char *CFunctionFlash, *CFunctionLibrary;
|
|
extern struct option_s Option;
|
|
extern int FlashLoad;
|
|
extern void ResetOptions(bool startup);
|
|
extern void FlashWriteBlock(void);
|
|
extern void FlashWriteWord(unsigned int i);
|
|
extern void FlashWriteByte(unsigned char b);
|
|
extern void FlashWriteAlign(void);
|
|
extern void FlashWriteClose(void);
|
|
extern void FlashWriteInit(int region);
|
|
void FlashSetAddress(int address); //new
|
|
extern void FlashWriteAlignWord(void); //new
|
|
extern void ResetFlashStorage(int umount);
|
|
extern volatile uint32_t realflashpointer;
|
|
extern int drivecheck(char *p, int *waste);
|
|
extern void getfullfilename(char *fname, char *q);
|
|
extern char *GetCWD(void);
|
|
extern int FSerror;
|
|
extern int lfs_FileFnbr;
|
|
extern struct lfs_config pico_lfs_cfg;
|
|
#define SAVED_OPTIONS_FLASH 5
|
|
#define LIBRARY_FLASH 6
|
|
#define SAVED_VARS_FLASH 7
|
|
#define PROGRAM_FLASH 8
|
|
typedef union uFileTable
|
|
{
|
|
unsigned int com;
|
|
FIL *fptr;
|
|
lfs_file_t *lfsptr;
|
|
}u_file;
|
|
enum {
|
|
NONEFILE,
|
|
FLASHFILE,
|
|
FATFSFILE
|
|
};
|
|
extern union uFileTable FileTable[MAXOPENFILES + 1];
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|
|
#endif /* __FILEIO_H */
|
|
/* @endcond */
|