Files

553 lines
19 KiB
C
Raw Permalink Normal View History

2026-07-06 18:01:36 +01:00
/* HEADER - EPOC.H
Copyright (C) Psion PLC 1991
VER DATE BY DESCRIPTION
===== ======== === ===========
1.00F 26/04/90 NSM First relase
*/
#ifndef EPOC_H
#define EPOC_H
#include <stdepoc.h>
#define E_PRIORITY_TIME_SUPERVISOR 0xf8
#define E_PRIORITY_TIME_FSERV 0xf0
#define E_PRIORITY_TIME_CRITICAL 0xb0
#define E_PRIORITY_WSERV_MOUSE 0xa8
#define E_PRIORITY_WSERV 0xa0
#define E_PRIORITY_NOTIFY 0x90
#define E_PRIORITY_FORE 0x80
#define E_PRIORITY_BACK 0x70
#define E_LCD_UNKNOWN (-1)
#define E_LCD_640_400 0
#define E_LCD_640_200_SMALL 1
#define E_LCD_640_200_BIG 2
#define E_LCD_720_348 3
#define E_LCD_160_80 4
#define E_LCD_240_80 5
#define E_PC_HERC E_LCD_720_348
#define E_PC_CGA E_LCD_640_200_BIG
#define E_PC_MDA 6
#define E_PC_EGA_MONO 7
#define E_PC_EGA_COLOUR 8
#define E_PC_VGA_MONO 9
#define E_PC_VGA_COLOUR 10
#define E_LCD_480_160 11
#define E_LCD_240_100 12
#define E_LCD_240_120 13
#define E_LCD_240_160 14
#define E_LCD_640_200 15
#define E_PSU_OLD 0
#define E_PSU_MAXIM 1
#define E_PSU_S3 2
#define E_PSU_S3_A9 3
#define E_IS_A_COLD_START 0
#define E_IS_A_POWERFAIL_START 1
#define E_IS_A_RESET_START 2
#define E_IS_A_KERNEL_FAULT 3
#define E_IS_A_NEW_OS_START 4
#define E_MAX_PROCESSES 24
#define E_MAX_PRIORITY 0xc0
#define E_MIN_PRIORITY 0x40
#define E_MAX_NAME 12
#define E_PIDMASK 0xfff
#define E_MAX_ERROR_TEXT_SIZE 64
#define E_MAX_NOTIFY_TEXT_SIZE 64
#define E_MAX_OPTION_TEXT_SIZE 16
#define E_MAX_ENV_SIZE 16
#define E_MAX_SUFFIXES 31
#define E_MAX_MONTH_NAME 32
#define E_MAX_DAY_NAME 32
#define E_MAX_COMMAND_BUFFER 127
#define E_MAX_GROWBY 0x400
#define E_MAX_PASSWORD 8
#define E_GROWBY_DEFAULT 0x80
#define E_SEGMENT_LOW 0
#define E_SEGMENT_HIGH 1
#define E_SEGMENT_DEVICE 2
#define E_LDD 0xdd01
#define E_PDD 0xdd21
#define E_NORMAL_EXIT 0
#define E_PANIC_EXIT 1
#define E_TASK_PANIC_EXIT 2
#define E_FILE_SYSTEM_NAMESIZE 5
#define E_SOUND_KEYBOARD 0x0001
#define E_SOUND_BUZZER 0x0002
#define E_SOUND_DEVICE 0x0004
#define E_SOUND_LOUD 0x0008
#define E_SOUND_LOUD_BUZZER 0x0010
#define E_SOUND_DISABLE 0x8000
#define E_SOUND_MAX_VOLUME 0
#define E_SOUND_MIN_VOLUME 5
#define E_SOUND_MAX_BPM 240
#define E_SOUND_MIN_BPM 2
#define E_MAX_ALARMS 2
#define E_MAX_DTMF_DIAL 24
#define E_MAX_DTMF_DIAL_B 40
#define E_BATTERY_UNKNOWN 0
#define E_BATTERY_ALKALINE 1
#define E_BATTERY_NICAD_600 2
#define E_BATTERY_NICAD_1000 3
#define E_BATTERY_NICAD_500 4
#define E_BATTERY_NICAD_850 5
#define E_TICKS_PER_SECOND 32
#define E_OPL_TEXT_MESSAGE 24
#define E_BACKLIGHT_DISABLE 0x8000
#define E_BACKLIGHT_OFF 0
#define E_BACKLIGHT_ON 1
#define E_BACKLIGHT_TOGGLE 2
#define E_BACKLIGHT_QUERY 3
#define E_FMEDIA_BATTERY_VALID 0x0400
#define E_FMEDIA_BATTERY_GOOD 0x0200
#define E_FRC_COUNTING 0
#define E_FRC_REPEATING 1
#define E_FSSOUNDCHANNEL1 1
#define E_FSSOUNDCHANNEL2 2
#define E_FRELATIVE 1
#define E_FABSOLUTE 2
#define E_FALARM 9
#define E_FDIAL 10
#define E_FSOUND_PLAY 0x10
#define E_FSOUND_RECORD 0x11
#define E_KEY_DELETE_LEFT 0x0008
#define E_KEY_TAB 0x0009
#define E_KEY_RETURN 0x000d
#define E_KEY_ESCAPE 0x001b
#define E_KEY_DELETE_RIGHT 0x007f
#define E_KEY_UP 0x0100
#define E_KEY_DOWN 0x0101
#define E_KEY_RIGHT 0x0102
#define E_KEY_LEFT 0x0103
#define E_KEY_PAGE_UP 0x0104
#define E_KEY_PAGE_DOWN 0x0105
#define E_KEY_HOME 0x0106
#define E_KEY_END 0x0107
#define E_KEY_INSERT 0x0108
#define E_KEY_VOICE 0x0109
#define E_KEY_PSION_DOWN 0x010a
#define E_KEY_PSION_UP 0x010b
#define E_KEY_CAPS 0x10c
#define E_KEY_PSION 0x200
#define E_KEY_BACKLIGHT 0x120
#define E_KEY_INFO 0x121
#define E_KEY_MENU 0x122
#define E_KEY_HELP 0x123
#define E_KEY_DIAMOND 0x124
#define E_KEY_APP1 0x131
#define E_KEY_APP2 0x132
#define E_KEY_APP3 0x133
#define E_KEY_APP4 0x134
#define E_KEY_APP5 0x135
#define E_KEY_APP6 0x136
#define E_KEY_APP7 0x137
#define E_KEY_APP8 0x138
#define E_KEY_LCD 0x2000
#define E_KEY_LCD_MINUS 0x2001
#define E_KEY_ON 0x2002
#define E_KEY_OFF 0x2003
#define E_STATE_KEY_VALID 0x0001
#define E_STATE_SHIFT 0x0002
#define E_STATE_CONTROL 0x0004
#define E_STATE_PSION 0x0008
#define E_STATE_CAPS_LOCKED 0x0010
#define E_STATE_NUM_LOCKED 0x0020
#define E_STATE_MOUSE_VALID 0x0040
#define E_STATE_MOUSE_DOWN 0x0080
#define E_STATE_MOUSE_MOVED 0x0100
#define E_STATE_MOUSE_CHANGED 0x0200
#define E_STATE_MOUSE_GONE 0x0400
#define E_STATE_KEY_REPEATED 0x0800
#define E_STATE_FN 0x0080
/* Additional I/O functions */
#define P_FTIMER_RELATIVE 1
#define P_FTIMER_ABSOLUTE 2
#define P_FSOUND_CHANNEL1 1
#define P_FSOUND_CHANNEL2 2
#define P_FSOUND_PLAY P_FTEST
#define P_FSOUND_RECORD P_FCTRL
typedef struct
{
unsigned char beatsPerMinute;
unsigned char volume;
} E_SOUND;
typedef struct
{
unsigned short int code;
unsigned short int state;
unsigned short int tick;
unsigned short int mouseX;
unsigned short int mouseY;
} E_KEYS;
typedef struct
{
unsigned char toneLengthTicks;
unsigned char delayLengthTicks;
unsigned short int pauseLengthTicks;
} E_DIAL;
typedef struct message
{
struct message *next;
unsigned char *status;
unsigned int type;
int pid;
} E_MESSAGE;
typedef struct
{
unsigned short int codeParagraphs;
unsigned short int initialIp;
unsigned short int stackParagraphs;
unsigned short int dataParagraphs;
unsigned short int heapParagraphs;
unsigned char *commandLine;
unsigned short int checkSum;
unsigned short int minHeap;
unsigned char priority;
unsigned char ramOrRom;
unsigned char name[E_MAX_NAME];
} E_CPB;
#define E_PROC_FREE 0xff
#define E_PROC_CURRENT 0x01
#define E_PROC_READY 0x02
#define E_PROC_DELTA 0x03
#define E_PROC_SUSPENDED 0x04
#define E_PROC_SEMAPHORE 0x05
typedef struct e_proc
{
struct e_proc *next;
struct e_proc *prev;
short int queKey;
short int queData;
unsigned char deltaType;
unsigned char addressTrap;
unsigned char status;
unsigned char sstatus;
unsigned char priority;
unsigned char priorityH;
unsigned char ramOrRom;
unsigned char isTask;
unsigned char name[E_MAX_NAME+1];
unsigned char active;
unsigned short int semaphore;
unsigned char *semHead;
unsigned char *memBasePtr;
unsigned short int memGrowBy;
unsigned char *mCtrlPtr;
unsigned short int minHeap;
int fServer;
int dataSeg;
int codeSeg;
unsigned char *saveSP;
unsigned char *saveBP;
unsigned char notify;
unsigned char sndSem;
unsigned short int magic;
unsigned short int checkSum;
unsigned short int terminate;
unsigned short int bankState;
} E_PROC;
typedef struct
{
unsigned short int mainBatteryReading;
unsigned short int lithiumBatteryReading;
short int mainsPresent;
} E_SUPPLY;
typedef struct
{
unsigned short int mainBatteryWarning;
unsigned short int lithiumBatteryWarning;
unsigned short int mainBatteryMax;
unsigned short int lithiumBatteryMax;
} E_SUPPLY_WARNINGS;
#define E_MBAT_ZERO 0
#define E_MBAT_VERY_LOW 1
#define E_MBAT_LOW 2
#define E_MBAT_GOOD 3
#define E_SUPPLY_SOUND_WARNING 0x0001
#define E_SUPPLY_FLASH_WARNING 0x0002
#define E_SUPPLY_SYSTEM_TIME_CHANGED 0x0004
typedef struct
{
unsigned char mainBatteryLevel;
unsigned char mainBatteryStatus;
unsigned char backupBatteryLevel;
unsigned char dcLevel;
unsigned short int warningFlags;
unsigned long int insertionDate;
unsigned long int ticksInUseBattery;
unsigned long int ticksInUseDc;
unsigned long int maTicks;
} E_SUPPLY_INFO;
#define ImgVersion 0x200f
#define DevVersion 0x200f
#define SignatureSize 16
#define ImageSignature "ImageFileType**"
#define LDDSignature "LDDFileType****"
#define PDDSignature "PDDFileType****"
#define LIBSignature "LIBFileType****"
#define HeaderSize 0x40
#define MagicLandSize 0x40
#define MaxAddFiles 4
typedef struct
{
unsigned short int offset;
unsigned short int length;
} ADDFILE;
typedef struct
{
unsigned char name[E_MAX_NAME+2]; /* Dyl name zero terminated */
unsigned long int offset; /* Offset in File */
} DYLENTRY;
typedef struct
{
unsigned char Signature[SignatureSize];
unsigned short int ImageVersion;
unsigned short int HeaderSizeBytes;
unsigned short int CodeParas;
unsigned short int InitialIP;
unsigned short int StackParas;
unsigned short int DataParas;
unsigned short int HeapParas;
unsigned short int InitializedData;
unsigned short int CodeCheckSum;
unsigned short int DataCheckSum;
unsigned short int CodeVersion;
unsigned short int Priority;
ADDFILE Add[MaxAddFiles];
unsigned short int DylCount;
unsigned long int DylTableOffset;
unsigned short int Spare;
} ImgHeader;
typedef struct
{
unsigned char Signature[SignatureSize];
unsigned short int DeviceVersion;
unsigned short int HeaderSizeBytes;
unsigned short int CodeParas;
unsigned short int CodeCheckSum;
unsigned short int CodeVersion;
} DevHeader;
#define ALawSignature "ALawSoundFile**"
typedef struct
{
char Signature[SignatureSize];
unsigned short int Version;
unsigned long int Samples;
unsigned short int SilenceInTicks;
unsigned short int Repeats;
unsigned short int Spare[3];
} SndFile;
#ifdef __cplusplus
extern "C" {
#endif
typedef void (*_CALL)(void);
#pragma save,call(reg_param =>(bx),reg_saved =>(bx,cx,dx,si,di,EPOC_SAVE))
extern int p_attachfile(char *);
extern int p_detachfile(char *);
#pragma call(reg_param =>(cx,ax),reg_saved =>(bx,dx,si,di,EPOC_SAVE))
extern int p_dayinm(int,int);
#pragma call(reg_param =>(bx,dx),reg_saved =>(bx,dx,si,di,EPOC_SAVE))
extern int p_devdel(const char *,int);
#pragma call(reg_param =>(bx,di,dx,si),reg_saved =>(bx,cx,dx,si,di,EPOC_SAVE))
extern int p_devfnd(int,const char *,int,char *);
#pragma call(reg_param =>(bx),reg_saved =>(bx,cx,dx,si,di,EPOC_SAVE))
extern int p_devqu(const char *);
#pragma restore
extern int cdecl p_exec(const char *);
extern int cdecl p_execasync(const char *,short int *,int *);
extern int cdecl p_execc(const char *,void *,int);
extern int cdecl p_execcasync(const char *,void *,int,short int *,int *);
#pragma save,call(reg_param =>(),reg_saved =>(bx,cx,dx,si,di,EPOC_SAVE))
extern int p_totalK(void);
extern int p_getauto(void);
extern int p_getautomains(void);
extern int p_getsnd(void);
extern int p_getbat(void);
extern int p_detectsoaktestfixture(void);
extern int p_relogpacks(void);
extern int p_getlanguage(void);
extern int p_getlcd(void);
extern int p_getlcdcontrast(void);
extern int p_getpsu(void);
extern int p_getpid(void);
extern unsigned int p_getbacklight(void);
extern unsigned int p_getram(void);
extern int p_getres(void);
extern int p_getshiftstate(void);
extern int p_getnotify(void);
extern int p_getalarmid(void);
extern void p_allowoff(void);
extern unsigned int p_returntickcount(void);
extern unsigned int p_returnexpansionportinfo(void);
#pragma call(reg_param =>(bx),reg_saved =>(bx,cx,dx,si,di,EPOC_SAVE))
extern void p_setbacklight(unsigned int);
extern void p_setconfig(unsigned int);
extern unsigned int p_setirpowerlevel(unsigned int);
extern unsigned int p_setcapslockmode(int);
#pragma call(reg_param =>(di,si,cx),reg_saved =>(bx,cx,dx,si,di,EPOC_SAVE))
extern void p_getosd(void *,void *,unsigned int);
#pragma call(reg_param =>(bx),reg_saved =>(bx,cx,dx,si,di,EPOC_SAVE))
extern int p_getpri(int);
extern int p_getowner(int);
extern void p_getscancodes(unsigned short int *);
#pragma call(reg_param =>(bx,cx,dx),reg_saved =>(bx,cx,dx,si,di,EPOC_SAVE))
extern int p_getpthbyid(int,char *);
extern int p_getpthbyidasync(int,char *,short int *);
extern int p_locdevice(int,unsigned short int *);
extern int p_locdeviceasync(int,unsigned short int *,short int *);
#pragma call(reg_param =>(bx,cx,di,si,dx),reg_saved =>(bx,cx,dx,si,di,EPOC_SAVE))
extern int p_locreadpdd(int,long int *,void *,unsigned int);
extern int p_locreadpddasync(int,long int *,void *,unsigned int,short int *);
#pragma call(reg_param =>(ax),reg_saved =>(bx,cx,dx,si,di,EPOC_SAVE))
extern void p_setautomains(int);
extern void p_setnotify(int);
extern int p_backlight(int);
extern int p_setonevent(int);
extern int p_setbat(int);
extern void p_hwexit(void);
extern void p_lcdcontrastdelta(int);
extern void p_marka(void);
extern void p_mcancel(void);
extern void p_unmarka(void);
extern void p_notifyunhook(void);
extern void p_alarmunhook(void);
extern void p_osdummy(void);
extern unsigned int p_version(void);
extern unsigned int p_romversion(void);
#pragma call(reg_param =>(ax,bx),reg_saved =>(bx,cx,dx,si,di,EPOC_SAVE))
extern int p_gettext(int,char *);
#pragma call(reg_param =>(bx),reg_saved =>(bx,cx,dx,si,di,EPOC_SAVE))
extern int p_hgran(int);
#pragma call(reg_param =>(bx),reg_saved =>(bx,cx,dx,si,di,EPOC_SAVE))
extern void p_iogetkm(E_KEYS *);
extern void p_iogetkmasync(E_KEYS *);
extern int p_iosignalbypid(int);
#pragma call(reg_param =>(bx,dx),reg_saved =>(bx,cx,dx,si,di,EPOC_SAVE))
extern int p_loadldd(const char *);
extern int p_loadlddasync(const char *,short int *);
extern int p_loadpdd(const char *);
extern int p_loadpddasync(const char *,short int *);
#pragma call(reg_param =>(bx,cx),reg_saved =>(bx,cx,dx,si,di,EPOC_SAVE))
extern int p_logon(int,int);
extern int p_logoff(int,int);
extern int p_logoffx(int,int);
#pragma call(reg_param =>(bx,di),reg_saved =>(bx,cx,dx,si,di,EPOC_SAVE))
extern int p_logona(int,short int *);
extern int p_logoffa(int);
#pragma call(reg_param =>(bx,cx),reg_saved =>(bx,cx,dx,si,di,EPOC_SAVE))
extern void p_mfree(void *,int);
#pragma call(reg_param =>(bx,ax),reg_saved =>(cx,dx,si,di,EPOC_SAVE))
extern int p_minit(int,int);
#pragma call(reg_param =>(di,bx),reg_saved =>(bx,cx,dx,si,di,EPOC_SAVE))
extern void p_mreceive(short int *,void *);
#pragma call(reg_param =>(bx),reg_saved =>(bx,cx,dx,si,di,EPOC_SAVE))
extern void p_mreceivew(void *);
#pragma call(reg_param =>(bx,cx,si,di),reg_saved =>(bx,cx,dx,si,di,EPOC_SAVE))
extern int p_msend(int,unsigned int,void *);
extern int p_msendreceivew(int,unsigned int,void *);
extern int p_msendreceivea(int,unsigned int,void *,short int *);
#pragma call(reg_param =>(bx,cx,dx,di,si),reg_saved =>(bx,cx,dx,si,di,EPOC_SAVE))
extern int p_notify(const char *,const char *,const char *,const char *,const char *);
#pragma call(reg_param =>(ax,bx,dx,di,si),reg_saved =>(bx,cx,dx,si,di,EPOC_SAVE))
extern int p_notifyerr(int,const char *,const char *,const char *,const char *);
#pragma call(reg_param =>(bx),reg_saved =>(bx,cx,dx,si,di,EPOC_SAVE))
extern int p_notifyhook(int);
extern int p_alarmhook(int);
#pragma call(reg_param =>(bx),reg_saved =>(bx,cx,dx,si,di,EPOC_SAVE))
extern void p_onterminate(int);
#pragma call(reg_param =>(cx),reg_saved =>(bx,cx,dx,si,di,EPOC_SAVE))
extern void p_off(unsigned int);
#pragma call(reg_param =>(bx,di,si,cx),reg_saved =>(bx,cx,dx,si,di,EPOC_SAVE))
extern int p_pcpyto(int,void *,void *,unsigned int);
#pragma call(reg_param =>(bx,si,di,cx),reg_saved =>(bx,cx,dx,si,di,EPOC_SAVE))
extern int p_pcpyfr(int,void *,void *,unsigned int);
extern int p_piscpyfr(int,void *,char *,unsigned int);
#pragma call(reg_param =>(bx),reg_saved =>(bx,cx,dx,si,di,EPOC_SAVE))
extern int p_pcreate(E_CPB *);
extern int p_locchg(int mask);
#pragma call(reg_param =>(bx,di,si),reg_saved =>(bx,cx,dx,si,di,EPOC_SAVE))
extern int p_pfind(int,const char *,char *);
#pragma call(reg_param =>(bx),reg_saved =>(bx,cx,dx,si,di,EPOC_SAVE))
extern int p_pidfind(const char *);
#pragma call(reg_param =>(bx,ax),reg_saved =>(bx,cx,dx,si,di,EPOC_SAVE))
extern int p_pkill(int,int);
#pragma call(reg_param =>(bx,cx),reg_saved =>(bx,cx,dx,si,di,EPOC_SAVE))
extern int p_pterminate(int,int);
#pragma call(reg_param =>(bx,di),reg_saved =>(bx,cx,dx,si,di,EPOC_SAVE))
extern int p_prename(int,const char *);
#pragma call(reg_param =>(bx,di),reg_saved =>(bx,cx,dx,si,di,EPOC_SAVE))
extern int p_pname(int,char *);
#pragma call(reg_param =>(bx,ax),reg_saved =>(bx,cx,dx,si,di,EPOC_SAVE))
extern int p_ppanic(int,int);
#pragma call(reg_param =>(bx),reg_saved =>(bx,cx,dx,si,di,EPOC_SAVE))
extern int p_presume(int);
extern int p_psuspend(int);
#pragma call(reg_param =>(bx,cx,si,di),reg_saved =>(bx,cx,dx,si,di,EPOC_SAVE))
extern int p_ptask(char *,int,_CALL,void *);
#pragma call(reg_param =>(dx,cx),reg_saved =>(bx,cx,dx,si,di,EPOC_SAVE))
extern void p_sdate(unsigned long int);
#pragma call(reg_param =>(bx,dx),reg_saved =>(bx,cx,dx,si,di,EPOC_SAVE))
extern void p_setauto(int);
extern void p_setsnd(int);
extern int p_setdefaultpath(const char *);
#pragma call(reg_param =>(bx,ax),reg_saved =>(bx,cx,dx,si,di,EPOC_SAVE))
extern int p_setpri(int,int);
#pragma call(reg_param =>(bx,cx),reg_saved =>(bx,cx,dx,si,di,EPOC_SAVE))
extern void p_signaln(int,int);
extern void p_signalnr(int);
#pragma call(reg_param =>(dx,cx),reg_saved =>(bx,cx,dx,si,di,EPOC_SAVE))
extern int p_sleept(long int);
#pragma call(reg_param =>(bx,cx),reg_saved =>(bx,cx,dx,si,di,EPOC_SAVE))
extern void p_supply(E_SUPPLY *);
extern void p_supplyinfo(E_SUPPLY_INFO *);
extern void p_wsupply(E_SUPPLY_WARNINGS *);
#pragma call(reg_param =>(bx,dx),reg_saved =>(bx,cx,dx,si,di,EPOC_SAVE))
extern void p_wait(int);
extern int p_watchall(unsigned int);
#pragma call(reg_param =>(si,di),reg_saved =>(bx,cx,dx,si,di,EPOC_SAVE))
extern int p_setpass(char *,char *);
#pragma call(reg_param =>(si),reg_saved =>(bx,cx,dx,si,di,EPOC_SAVE))
extern int p_testpass(char *);
#pragma call(reg_param =>(si,ax),reg_saved =>(bx,cx,dx,si,di,EPOC_SAVE))
extern int p_controlpass(char *,int);
#pragma call(reg_param =>(),reg_saved =>(bx,cx,dx,si,di,EPOC_SAVE))
extern int p_querypass(void);
extern void p_tickle(void);
extern void p_nexthalfsecond(void);
#pragma call(reg_param =>(),reg_saved =>(bx,cx,dx,si,di,EPOC_SAVE),inline =>on)
static int p_iostatkm(void) = {0xcd,0xda};
static int p_nexthalfsecondstatus(void) = {0xcd,0xdd};
#pragma call(reg_param =>(ax),reg_saved =>(bx,cx,dx,si,di,EPOC_SAVE),inline =>on)
static unsigned int p_setrombank(unsigned int) = {0xcd,0xdf};
static unsigned int p_getrombank(void) = {0xcd,0xe0};
#pragma restore
#pragma save,call(reg_param =>(bx,cx,dx,di),reg_saved =>(bx,cx,dx,si,di,EPOC_SAVE))
extern void p_playsounda(const char *,unsigned int,unsigned int,short int *);
extern int p_playsoundw(const char *,unsigned int,unsigned int);
extern void p_playsoundcancel(void);
#pragma call(reg_param =>(bx,cx,dx,di,si),reg_saved =>(bx,cx,dx,si,di,EPOC_SAVE))
extern void p_playsoundao(const char *,unsigned int,unsigned int,short int *,unsigned int);
extern int p_playsoundwo(const char *,unsigned int,unsigned int,unsigned int);
#pragma call(reg_param =>(bx,cx,di),reg_saved =>(bx,cx,dx,si,di,EPOC_SAVE))
extern void p_recordsounda(const char *,unsigned int,short int *);
extern int p_recordsoundw(const char *,unsigned int);
extern void p_recordsoundcancel(void);
#pragma call(reg_param =>(bx,ax),reg_saved =>(bx,cx,dx,si,di,EPOC_SAVE))
extern void p_nmdaya(char *,int);
extern void p_nmmona(char *,int);
#pragma restore
#ifdef __cplusplus
}
#endif
#endif // EPOC_H