mirror of
https://github.com/kanjitalk755/macemu.git
synced 2025-01-18 11:29:47 +00:00
- ExtFS works under AmigaOS
- fixed erroneous __regargs attributes in prefs_editor_amiga.cpp and audio_amiga.cpp for GCC
This commit is contained in:
parent
f4a3224f42
commit
f41718608c
@ -12,14 +12,15 @@ AS = PhxAss
|
|||||||
ASFLAGS = OPT ! INCPATH GG:os-include MACHINE=68020 FPU=1
|
ASFLAGS = OPT ! INCPATH GG:os-include MACHINE=68020 FPU=1
|
||||||
|
|
||||||
## Files
|
## Files
|
||||||
SRCS = ../main.cpp main_amiga.cpp ../prefs.cpp prefs_amiga.cpp prefs_editor_amiga.cpp \
|
SRCS = ../main.cpp main_amiga.cpp ../prefs.cpp prefs_amiga.cpp \
|
||||||
sys_amiga.cpp ../rom_patches.cpp ../slot_rom.cpp ../rsrc_patches.cpp \
|
prefs_editor_amiga.cpp sys_amiga.cpp ../rom_patches.cpp \
|
||||||
../emul_op.cpp ../macos_util.cpp ../xpram.cpp xpram_amiga.cpp \
|
../slot_rom.cpp ../rsrc_patches.cpp ../emul_op.cpp \
|
||||||
../timer.cpp timer_amiga.cpp clip_amiga.cpp ../adb.cpp ../serial.cpp \
|
../macos_util.cpp ../xpram.cpp xpram_amiga.cpp ../timer.cpp \
|
||||||
|
timer_amiga.cpp clip_amiga.cpp ../adb.cpp ../serial.cpp \
|
||||||
serial_amiga.cpp ../ether.cpp ether_amiga.cpp ../sony.cpp ../disk.cpp \
|
serial_amiga.cpp ../ether.cpp ether_amiga.cpp ../sony.cpp ../disk.cpp \
|
||||||
../cdrom.cpp ../scsi.cpp scsi_amiga.cpp ../video.cpp video_amiga.cpp \
|
../cdrom.cpp ../scsi.cpp scsi_amiga.cpp ../video.cpp video_amiga.cpp \
|
||||||
../audio.cpp audio_amiga.cpp ../user_strings.cpp user_strings_amiga.cpp \
|
../audio.cpp audio_amiga.cpp ../extfs.cpp extfs_amiga.cpp \
|
||||||
asm_support.asm
|
../user_strings.cpp user_strings_amiga.cpp asm_support.asm
|
||||||
APP = BasiliskII
|
APP = BasiliskII
|
||||||
|
|
||||||
## Rules
|
## Rules
|
||||||
|
@ -57,7 +57,11 @@ static int audio_block_fetched = 0; // Number of audio blocks fetched by inte
|
|||||||
|
|
||||||
|
|
||||||
// Prototypes
|
// Prototypes
|
||||||
|
#ifdef __GNUC__
|
||||||
|
static __saveds __attribute__((regparm(3))) ULONG audio_callback(struct Hook *hook /*a0*/, struct AHISoundMessage *msg /*a1*/, struct AHIAudioCtrl *ahi_ctrl /*a2*/);
|
||||||
|
#else
|
||||||
static __saveds __regargs ULONG audio_callback(struct Hook *hook /*a0*/, struct AHISoundMessage *msg /*a1*/, struct AHIAudioCtrl *ahi_ctrl /*a2*/);
|
static __saveds __regargs ULONG audio_callback(struct Hook *hook /*a0*/, struct AHISoundMessage *msg /*a1*/, struct AHIAudioCtrl *ahi_ctrl /*a2*/);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@ -174,7 +178,11 @@ void audio_exit_stream()
|
|||||||
* AHI sound callback, request next buffer
|
* AHI sound callback, request next buffer
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
#ifdef __GNUC__
|
||||||
|
static __saveds __attribute__((regparm(3))) ULONG audio_callback(struct Hook *hook /*a0*/, struct AHISoundMessage *msg /*a1*/, struct AHIAudioCtrl *ahi_ctrl /*a2*/)
|
||||||
|
#else
|
||||||
static __saveds __regargs ULONG audio_callback(struct Hook *hook /*a0*/, struct AHISoundMessage *msg /*a1*/, struct AHIAudioCtrl *ahi_ctrl /*a2*/)
|
static __saveds __regargs ULONG audio_callback(struct Hook *hook /*a0*/, struct AHISoundMessage *msg /*a1*/, struct AHIAudioCtrl *ahi_ctrl /*a2*/)
|
||||||
|
#endif
|
||||||
{
|
{
|
||||||
play_buf ^= 1;
|
play_buf ^= 1;
|
||||||
|
|
||||||
|
@ -56,8 +56,9 @@
|
|||||||
#include "debug.h"
|
#include "debug.h"
|
||||||
|
|
||||||
|
|
||||||
// Our minimum stack requirement
|
// Options for libnix
|
||||||
unsigned long __stack = 0x4000;
|
unsigned long __stack = 0x4000; // Stack requirement
|
||||||
|
int __nocommandline = 1; // Disable command line parsing
|
||||||
|
|
||||||
|
|
||||||
// Constants
|
// Constants
|
||||||
|
@ -83,4 +83,5 @@ void SavePrefs(void)
|
|||||||
|
|
||||||
void AddPlatformPrefsDefaults(void)
|
void AddPlatformPrefsDefaults(void)
|
||||||
{
|
{
|
||||||
|
PrefsReplaceString("extfs", "WORK:");
|
||||||
}
|
}
|
||||||
|
@ -142,7 +142,11 @@ static void read_settings(struct LayoutHandle *h);
|
|||||||
* Locale hook - returns string for given ID
|
* Locale hook - returns string for given ID
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
#ifdef __GNUC__
|
||||||
|
static __saveds __attribute__((regparm(3))) const char *locale_hook_func(struct Hook *hook /*a0*/, void *id /*a1*/, struct LayoutHandle *h /*a2*/)
|
||||||
|
#else
|
||||||
static __saveds __regargs const char *locale_hook_func(struct Hook *hook /*a0*/, void *id /*a1*/, struct LayoutHandle *h /*a2*/)
|
static __saveds __regargs const char *locale_hook_func(struct Hook *hook /*a0*/, void *id /*a1*/, struct LayoutHandle *h /*a2*/)
|
||||||
|
#endif
|
||||||
{
|
{
|
||||||
return GetString((uint32)id);
|
return GetString((uint32)id);
|
||||||
}
|
}
|
||||||
|
@ -39,6 +39,9 @@
|
|||||||
// Is the Mac ROM write protected?
|
// Is the Mac ROM write protected?
|
||||||
#define ROM_IS_WRITE_PROTECTED 0
|
#define ROM_IS_WRITE_PROTECTED 0
|
||||||
|
|
||||||
|
// ExtFS is supported
|
||||||
|
#define SUPPORTS_EXTFS 1
|
||||||
|
|
||||||
// Data types
|
// Data types
|
||||||
typedef unsigned char uint8;
|
typedef unsigned char uint8;
|
||||||
typedef signed char int8;
|
typedef signed char int8;
|
||||||
|
@ -71,6 +71,21 @@ void extfs_exit(void)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Add component to path name
|
||||||
|
*/
|
||||||
|
|
||||||
|
void add_path_component(char *path, const char *component, int max_len)
|
||||||
|
{
|
||||||
|
int l = strlen(path);
|
||||||
|
if (l < max_len-1 && path[l-1] != '/') {
|
||||||
|
path[l] = '/';
|
||||||
|
path[l+1] = 0;
|
||||||
|
}
|
||||||
|
strncat(path, s, max_len-1);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Get/set finder type/creator for file specified by full path
|
* Get/set finder type/creator for file specified by full path
|
||||||
*/
|
*/
|
||||||
|
@ -40,6 +40,9 @@
|
|||||||
// Is the Mac ROM write protected?
|
// Is the Mac ROM write protected?
|
||||||
#define ROM_IS_WRITE_PROTECTED 1
|
#define ROM_IS_WRITE_PROTECTED 1
|
||||||
|
|
||||||
|
// ExtFS is supported
|
||||||
|
#define SUPPORTS_EXTFS 1
|
||||||
|
|
||||||
// Time data type for Time Manager emulation
|
// Time data type for Time Manager emulation
|
||||||
typedef bigtime_t tm_time_t;
|
typedef bigtime_t tm_time_t;
|
||||||
|
|
||||||
|
@ -56,6 +56,21 @@ void extfs_exit(void)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Add component to path name
|
||||||
|
*/
|
||||||
|
|
||||||
|
void add_path_component(char *path, const char *component, int max_len)
|
||||||
|
{
|
||||||
|
int l = strlen(path);
|
||||||
|
if (l < max_len-1 && path[l-1] != '/') {
|
||||||
|
path[l] = '/';
|
||||||
|
path[l+1] = 0;
|
||||||
|
}
|
||||||
|
strncat(path, s, max_len-1);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Get/set finder type/creator for file specified by full path
|
* Get/set finder type/creator for file specified by full path
|
||||||
*/
|
*/
|
||||||
|
@ -69,6 +69,9 @@
|
|||||||
/* Is the Mac ROM write protected? */
|
/* Is the Mac ROM write protected? */
|
||||||
#define ROM_IS_WRITE_PROTECTED 1
|
#define ROM_IS_WRITE_PROTECTED 1
|
||||||
|
|
||||||
|
/* ExtFS is supported */
|
||||||
|
#define SUPPORTS_EXTFS 1
|
||||||
|
|
||||||
/* Data types */
|
/* Data types */
|
||||||
typedef unsigned char uint8;
|
typedef unsigned char uint8;
|
||||||
typedef signed char int8;
|
typedef signed char int8;
|
||||||
|
@ -493,6 +493,7 @@ void EmulOp(uint16 opcode, M68kRegisters *r)
|
|||||||
r->d[0] = AudioDispatch(r->a[3], r->a[4]);
|
r->d[0] = AudioDispatch(r->a[3], r->a[4]);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
#if SUPPORTS_EXTFS
|
||||||
case M68K_EMUL_OP_EXTFS_COMM: // External file system routines
|
case M68K_EMUL_OP_EXTFS_COMM: // External file system routines
|
||||||
WriteMacInt16(r->a[7] + 14, ExtFSComm(ReadMacInt16(r->a[7] + 12), ReadMacInt32(r->a[7] + 8), ReadMacInt32(r->a[7] + 4)));
|
WriteMacInt16(r->a[7] + 14, ExtFSComm(ReadMacInt16(r->a[7] + 12), ReadMacInt32(r->a[7] + 8), ReadMacInt32(r->a[7] + 4)));
|
||||||
break;
|
break;
|
||||||
@ -500,6 +501,7 @@ void EmulOp(uint16 opcode, M68kRegisters *r)
|
|||||||
case M68K_EMUL_OP_EXTFS_HFS:
|
case M68K_EMUL_OP_EXTFS_HFS:
|
||||||
WriteMacInt16(r->a[7] + 20, ExtFSHFS(ReadMacInt32(r->a[7] + 16), ReadMacInt16(r->a[7] + 14), ReadMacInt32(r->a[7] + 10), ReadMacInt32(r->a[7] + 6), ReadMacInt16(r->a[7] + 4)));
|
WriteMacInt16(r->a[7] + 20, ExtFSHFS(ReadMacInt32(r->a[7] + 16), ReadMacInt16(r->a[7] + 14), ReadMacInt32(r->a[7] + 10), ReadMacInt32(r->a[7] + 6), ReadMacInt16(r->a[7] + 4)));
|
||||||
break;
|
break;
|
||||||
|
#endif
|
||||||
|
|
||||||
default:
|
default:
|
||||||
printf("FATAL: EMUL_OP called with bogus opcode %08x\n", opcode);
|
printf("FATAL: EMUL_OP called with bogus opcode %08x\n", opcode);
|
||||||
|
@ -204,14 +204,9 @@ static FSItem *find_fsitem(const char *name, FSItem *parent)
|
|||||||
const int MAX_PATH_LENGTH = 1024;
|
const int MAX_PATH_LENGTH = 1024;
|
||||||
static char full_path[MAX_PATH_LENGTH];
|
static char full_path[MAX_PATH_LENGTH];
|
||||||
|
|
||||||
static void add_path_component(const char *s)
|
static void add_path_comp(const char *s)
|
||||||
{
|
{
|
||||||
int l = strlen(full_path);
|
add_path_component(full_path, s, MAX_PATH_LENGTH);
|
||||||
if (l < MAX_PATH_LENGTH-1 && full_path[l-1] != '/') {
|
|
||||||
full_path[l] = '/';
|
|
||||||
full_path[l+1] = 0;
|
|
||||||
}
|
|
||||||
strncat(full_path, s, MAX_PATH_LENGTH-1);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static void get_path_for_fsitem(FSItem *p)
|
static void get_path_for_fsitem(FSItem *p)
|
||||||
@ -221,7 +216,7 @@ static void get_path_for_fsitem(FSItem *p)
|
|||||||
full_path[MAX_PATH_LENGTH-1] = 0;
|
full_path[MAX_PATH_LENGTH-1] = 0;
|
||||||
} else {
|
} else {
|
||||||
get_path_for_fsitem(p->parent);
|
get_path_for_fsitem(p->parent);
|
||||||
add_path_component(p->name);
|
add_path_comp(p->name);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -440,7 +435,7 @@ void InstallExtFS(void)
|
|||||||
WriteMacInt16(p, 0x7006); p+= 2; // UTAllocateVCB
|
WriteMacInt16(p, 0x7006); p+= 2; // UTAllocateVCB
|
||||||
WriteMacInt16(p, 0xa824); p+= 2; // FSMgr
|
WriteMacInt16(p, 0xa824); p+= 2; // FSMgr
|
||||||
WriteMacInt16(p, 0x301f); p+= 2; // move.w (sp)+,d0
|
WriteMacInt16(p, 0x301f); p+= 2; // move.w (sp)+,d0
|
||||||
WriteMacInt16(p, M68K_EXEC_RETURN); p+= 2;
|
WriteMacInt16(p, M68K_RTS); p+= 2;
|
||||||
if (p - fs_data != fsAddNewVCB)
|
if (p - fs_data != fsAddNewVCB)
|
||||||
goto fsdat_error;
|
goto fsdat_error;
|
||||||
WriteMacInt16(p, 0x4267); p+= 2; // clr.w -(sp)
|
WriteMacInt16(p, 0x4267); p+= 2; // clr.w -(sp)
|
||||||
@ -450,7 +445,7 @@ void InstallExtFS(void)
|
|||||||
WriteMacInt16(p, 0x7007); p+= 2; // UTAddNewVCB
|
WriteMacInt16(p, 0x7007); p+= 2; // UTAddNewVCB
|
||||||
WriteMacInt16(p, 0xa824); p+= 2; // FSMgr
|
WriteMacInt16(p, 0xa824); p+= 2; // FSMgr
|
||||||
WriteMacInt16(p, 0x301f); p+= 2; // move.w (sp)+,d0
|
WriteMacInt16(p, 0x301f); p+= 2; // move.w (sp)+,d0
|
||||||
WriteMacInt16(p, M68K_EXEC_RETURN); p+= 2;
|
WriteMacInt16(p, M68K_RTS); p+= 2;
|
||||||
if (p - fs_data != fsDetermineVol)
|
if (p - fs_data != fsDetermineVol)
|
||||||
goto fsdat_error;
|
goto fsdat_error;
|
||||||
WriteMacInt16(p, 0x4267); p+= 2; // clr.w -(sp)
|
WriteMacInt16(p, 0x4267); p+= 2; // clr.w -(sp)
|
||||||
@ -462,7 +457,7 @@ void InstallExtFS(void)
|
|||||||
WriteMacInt16(p, 0x701d); p+= 2; // UTDetermineVol
|
WriteMacInt16(p, 0x701d); p+= 2; // UTDetermineVol
|
||||||
WriteMacInt16(p, 0xa824); p+= 2; // FSMgr
|
WriteMacInt16(p, 0xa824); p+= 2; // FSMgr
|
||||||
WriteMacInt16(p, 0x301f); p+= 2; // move.w (sp)+,d0
|
WriteMacInt16(p, 0x301f); p+= 2; // move.w (sp)+,d0
|
||||||
WriteMacInt16(p, M68K_EXEC_RETURN); p+= 2;
|
WriteMacInt16(p, M68K_RTS); p+= 2;
|
||||||
if (p - fs_data != fsResolveWDCB)
|
if (p - fs_data != fsResolveWDCB)
|
||||||
goto fsdat_error;
|
goto fsdat_error;
|
||||||
WriteMacInt16(p, 0x4267); p+= 2; // clr.w -(sp)
|
WriteMacInt16(p, 0x4267); p+= 2; // clr.w -(sp)
|
||||||
@ -473,7 +468,7 @@ void InstallExtFS(void)
|
|||||||
WriteMacInt16(p, 0x700e); p+= 2; // UTResolveWDCB
|
WriteMacInt16(p, 0x700e); p+= 2; // UTResolveWDCB
|
||||||
WriteMacInt16(p, 0xa824); p+= 2; // FSMgr
|
WriteMacInt16(p, 0xa824); p+= 2; // FSMgr
|
||||||
WriteMacInt16(p, 0x301f); p+= 2; // move.w (sp)+,d0
|
WriteMacInt16(p, 0x301f); p+= 2; // move.w (sp)+,d0
|
||||||
WriteMacInt16(p, M68K_EXEC_RETURN); p+= 2;
|
WriteMacInt16(p, M68K_RTS); p+= 2;
|
||||||
if (p - fs_data != fsGetDefaultVol)
|
if (p - fs_data != fsGetDefaultVol)
|
||||||
goto fsdat_error;
|
goto fsdat_error;
|
||||||
WriteMacInt16(p, 0x4267); p+= 2; // clr.w -(sp)
|
WriteMacInt16(p, 0x4267); p+= 2; // clr.w -(sp)
|
||||||
@ -481,7 +476,7 @@ void InstallExtFS(void)
|
|||||||
WriteMacInt16(p, 0x7012); p+= 2; // UTGetDefaultVol
|
WriteMacInt16(p, 0x7012); p+= 2; // UTGetDefaultVol
|
||||||
WriteMacInt16(p, 0xa824); p+= 2; // FSMgr
|
WriteMacInt16(p, 0xa824); p+= 2; // FSMgr
|
||||||
WriteMacInt16(p, 0x301f); p+= 2; // move.w (sp)+,d0
|
WriteMacInt16(p, 0x301f); p+= 2; // move.w (sp)+,d0
|
||||||
WriteMacInt16(p, M68K_EXEC_RETURN); p+= 2;
|
WriteMacInt16(p, M68K_RTS); p+= 2;
|
||||||
if (p - fs_data != fsGetPathComponentName)
|
if (p - fs_data != fsGetPathComponentName)
|
||||||
goto fsdat_error;
|
goto fsdat_error;
|
||||||
WriteMacInt16(p, 0x4267); p+= 2; // clr.w -(sp)
|
WriteMacInt16(p, 0x4267); p+= 2; // clr.w -(sp)
|
||||||
@ -489,7 +484,7 @@ void InstallExtFS(void)
|
|||||||
WriteMacInt16(p, 0x701c); p+= 2; // UTGetPathComponentName
|
WriteMacInt16(p, 0x701c); p+= 2; // UTGetPathComponentName
|
||||||
WriteMacInt16(p, 0xa824); p+= 2; // FSMgr
|
WriteMacInt16(p, 0xa824); p+= 2; // FSMgr
|
||||||
WriteMacInt16(p, 0x301f); p+= 2; // move.w (sp)+,d0
|
WriteMacInt16(p, 0x301f); p+= 2; // move.w (sp)+,d0
|
||||||
WriteMacInt16(p, M68K_EXEC_RETURN); p+= 2;
|
WriteMacInt16(p, M68K_RTS); p+= 2;
|
||||||
if (p - fs_data != fsParsePathname)
|
if (p - fs_data != fsParsePathname)
|
||||||
goto fsdat_error;
|
goto fsdat_error;
|
||||||
WriteMacInt16(p, 0x4267); p+= 2; // clr.w -(sp)
|
WriteMacInt16(p, 0x4267); p+= 2; // clr.w -(sp)
|
||||||
@ -498,7 +493,7 @@ void InstallExtFS(void)
|
|||||||
WriteMacInt16(p, 0x701b); p+= 2; // UTParsePathname
|
WriteMacInt16(p, 0x701b); p+= 2; // UTParsePathname
|
||||||
WriteMacInt16(p, 0xa824); p+= 2; // FSMgr
|
WriteMacInt16(p, 0xa824); p+= 2; // FSMgr
|
||||||
WriteMacInt16(p, 0x301f); p+= 2; // move.w (sp)+,d0
|
WriteMacInt16(p, 0x301f); p+= 2; // move.w (sp)+,d0
|
||||||
WriteMacInt16(p, M68K_EXEC_RETURN); p+= 2;
|
WriteMacInt16(p, M68K_RTS); p+= 2;
|
||||||
if (p - fs_data != fsDisposeVCB)
|
if (p - fs_data != fsDisposeVCB)
|
||||||
goto fsdat_error;
|
goto fsdat_error;
|
||||||
WriteMacInt16(p, 0x4267); p+= 2; // clr.w -(sp)
|
WriteMacInt16(p, 0x4267); p+= 2; // clr.w -(sp)
|
||||||
@ -506,7 +501,7 @@ void InstallExtFS(void)
|
|||||||
WriteMacInt16(p, 0x7008); p+= 2; // UTDisposeVCB
|
WriteMacInt16(p, 0x7008); p+= 2; // UTDisposeVCB
|
||||||
WriteMacInt16(p, 0xa824); p+= 2; // FSMgr
|
WriteMacInt16(p, 0xa824); p+= 2; // FSMgr
|
||||||
WriteMacInt16(p, 0x301f); p+= 2; // move.w (sp)+,d0
|
WriteMacInt16(p, 0x301f); p+= 2; // move.w (sp)+,d0
|
||||||
WriteMacInt16(p, M68K_EXEC_RETURN); p+= 2;
|
WriteMacInt16(p, M68K_RTS); p+= 2;
|
||||||
if (p - fs_data != fsCheckWDRefNum)
|
if (p - fs_data != fsCheckWDRefNum)
|
||||||
goto fsdat_error;
|
goto fsdat_error;
|
||||||
WriteMacInt16(p, 0x4267); p+= 2; // clr.w -(sp)
|
WriteMacInt16(p, 0x4267); p+= 2; // clr.w -(sp)
|
||||||
@ -514,7 +509,7 @@ void InstallExtFS(void)
|
|||||||
WriteMacInt16(p, 0x7013); p+= 2; // UTCheckWDRefNum
|
WriteMacInt16(p, 0x7013); p+= 2; // UTCheckWDRefNum
|
||||||
WriteMacInt16(p, 0xa824); p+= 2; // FSMgr
|
WriteMacInt16(p, 0xa824); p+= 2; // FSMgr
|
||||||
WriteMacInt16(p, 0x301f); p+= 2; // move.w (sp)+,d0
|
WriteMacInt16(p, 0x301f); p+= 2; // move.w (sp)+,d0
|
||||||
WriteMacInt16(p, M68K_EXEC_RETURN); p+= 2;
|
WriteMacInt16(p, M68K_RTS); p+= 2;
|
||||||
if (p - fs_data != fsSetDefaultVol)
|
if (p - fs_data != fsSetDefaultVol)
|
||||||
goto fsdat_error;
|
goto fsdat_error;
|
||||||
WriteMacInt16(p, 0x4267); p+= 2; // clr.w -(sp)
|
WriteMacInt16(p, 0x4267); p+= 2; // clr.w -(sp)
|
||||||
@ -524,7 +519,7 @@ void InstallExtFS(void)
|
|||||||
WriteMacInt16(p, 0x7011); p+= 2; // UTSetDefaultVol
|
WriteMacInt16(p, 0x7011); p+= 2; // UTSetDefaultVol
|
||||||
WriteMacInt16(p, 0xa824); p+= 2; // FSMgr
|
WriteMacInt16(p, 0xa824); p+= 2; // FSMgr
|
||||||
WriteMacInt16(p, 0x301f); p+= 2; // move.w (sp)+,d0
|
WriteMacInt16(p, 0x301f); p+= 2; // move.w (sp)+,d0
|
||||||
WriteMacInt16(p, M68K_EXEC_RETURN); p+= 2;
|
WriteMacInt16(p, M68K_RTS); p+= 2;
|
||||||
if (p - fs_data != fsAllocateFCB)
|
if (p - fs_data != fsAllocateFCB)
|
||||||
goto fsdat_error;
|
goto fsdat_error;
|
||||||
WriteMacInt16(p, 0x4267); p+= 2; // clr.w -(sp)
|
WriteMacInt16(p, 0x4267); p+= 2; // clr.w -(sp)
|
||||||
@ -533,7 +528,7 @@ void InstallExtFS(void)
|
|||||||
WriteMacInt16(p, 0x7000); p+= 2; // UTAllocateFCB
|
WriteMacInt16(p, 0x7000); p+= 2; // UTAllocateFCB
|
||||||
WriteMacInt16(p, 0xa824); p+= 2; // FSMgr
|
WriteMacInt16(p, 0xa824); p+= 2; // FSMgr
|
||||||
WriteMacInt16(p, 0x301f); p+= 2; // move.w (sp)+,d0
|
WriteMacInt16(p, 0x301f); p+= 2; // move.w (sp)+,d0
|
||||||
WriteMacInt16(p, M68K_EXEC_RETURN); p+= 2;
|
WriteMacInt16(p, M68K_RTS); p+= 2;
|
||||||
if (p - fs_data != fsReleaseFCB)
|
if (p - fs_data != fsReleaseFCB)
|
||||||
goto fsdat_error;
|
goto fsdat_error;
|
||||||
WriteMacInt16(p, 0x4267); p+= 2; // clr.w -(sp)
|
WriteMacInt16(p, 0x4267); p+= 2; // clr.w -(sp)
|
||||||
@ -541,7 +536,7 @@ void InstallExtFS(void)
|
|||||||
WriteMacInt16(p, 0x7001); p+= 2; // UTReleaseFCB
|
WriteMacInt16(p, 0x7001); p+= 2; // UTReleaseFCB
|
||||||
WriteMacInt16(p, 0xa824); p+= 2; // FSMgr
|
WriteMacInt16(p, 0xa824); p+= 2; // FSMgr
|
||||||
WriteMacInt16(p, 0x301f); p+= 2; // move.w (sp)+,d0
|
WriteMacInt16(p, 0x301f); p+= 2; // move.w (sp)+,d0
|
||||||
WriteMacInt16(p, M68K_EXEC_RETURN); p+= 2;
|
WriteMacInt16(p, M68K_RTS); p+= 2;
|
||||||
if (p - fs_data != fsIndexFCB)
|
if (p - fs_data != fsIndexFCB)
|
||||||
goto fsdat_error;
|
goto fsdat_error;
|
||||||
WriteMacInt16(p, 0x4267); p+= 2; // clr.w -(sp)
|
WriteMacInt16(p, 0x4267); p+= 2; // clr.w -(sp)
|
||||||
@ -551,7 +546,7 @@ void InstallExtFS(void)
|
|||||||
WriteMacInt16(p, 0x7004); p+= 2; // UTIndexFCB
|
WriteMacInt16(p, 0x7004); p+= 2; // UTIndexFCB
|
||||||
WriteMacInt16(p, 0xa824); p+= 2; // FSMgr
|
WriteMacInt16(p, 0xa824); p+= 2; // FSMgr
|
||||||
WriteMacInt16(p, 0x301f); p+= 2; // move.w (sp)+,d0
|
WriteMacInt16(p, 0x301f); p+= 2; // move.w (sp)+,d0
|
||||||
WriteMacInt16(p, M68K_EXEC_RETURN); p+= 2;
|
WriteMacInt16(p, M68K_RTS); p+= 2;
|
||||||
if (p - fs_data != fsResolveFCB)
|
if (p - fs_data != fsResolveFCB)
|
||||||
goto fsdat_error;
|
goto fsdat_error;
|
||||||
WriteMacInt16(p, 0x4267); p+= 2; // clr.w -(sp)
|
WriteMacInt16(p, 0x4267); p+= 2; // clr.w -(sp)
|
||||||
@ -560,7 +555,7 @@ void InstallExtFS(void)
|
|||||||
WriteMacInt16(p, 0x7005); p+= 2; // UTResolveFCB
|
WriteMacInt16(p, 0x7005); p+= 2; // UTResolveFCB
|
||||||
WriteMacInt16(p, 0xa824); p+= 2; // FSMgr
|
WriteMacInt16(p, 0xa824); p+= 2; // FSMgr
|
||||||
WriteMacInt16(p, 0x301f); p+= 2; // move.w (sp)+,d0
|
WriteMacInt16(p, 0x301f); p+= 2; // move.w (sp)+,d0
|
||||||
WriteMacInt16(p, M68K_EXEC_RETURN); p+= 2;
|
WriteMacInt16(p, M68K_RTS); p+= 2;
|
||||||
if (p - fs_data != fsAdjustEOF)
|
if (p - fs_data != fsAdjustEOF)
|
||||||
goto fsdat_error;
|
goto fsdat_error;
|
||||||
WriteMacInt16(p, 0x4267); p+= 2; // clr.w -(sp)
|
WriteMacInt16(p, 0x4267); p+= 2; // clr.w -(sp)
|
||||||
@ -568,7 +563,7 @@ void InstallExtFS(void)
|
|||||||
WriteMacInt16(p, 0x7010); p+= 2; // UTAdjustEOF
|
WriteMacInt16(p, 0x7010); p+= 2; // UTAdjustEOF
|
||||||
WriteMacInt16(p, 0xa824); p+= 2; // FSMgr
|
WriteMacInt16(p, 0xa824); p+= 2; // FSMgr
|
||||||
WriteMacInt16(p, 0x301f); p+= 2; // move.w (sp)+,d0
|
WriteMacInt16(p, 0x301f); p+= 2; // move.w (sp)+,d0
|
||||||
WriteMacInt16(p, M68K_EXEC_RETURN); p+= 2;
|
WriteMacInt16(p, M68K_RTS); p+= 2;
|
||||||
if (p - fs_data != fsAllocateWDCB)
|
if (p - fs_data != fsAllocateWDCB)
|
||||||
goto fsdat_error;
|
goto fsdat_error;
|
||||||
WriteMacInt16(p, 0x4267); p+= 2; // clr.w -(sp)
|
WriteMacInt16(p, 0x4267); p+= 2; // clr.w -(sp)
|
||||||
@ -576,7 +571,7 @@ void InstallExtFS(void)
|
|||||||
WriteMacInt16(p, 0x700c); p+= 2; // UTAllocateWDCB
|
WriteMacInt16(p, 0x700c); p+= 2; // UTAllocateWDCB
|
||||||
WriteMacInt16(p, 0xa824); p+= 2; // FSMgr
|
WriteMacInt16(p, 0xa824); p+= 2; // FSMgr
|
||||||
WriteMacInt16(p, 0x301f); p+= 2; // move.w (sp)+,d0
|
WriteMacInt16(p, 0x301f); p+= 2; // move.w (sp)+,d0
|
||||||
WriteMacInt16(p, M68K_EXEC_RETURN); p+= 2;
|
WriteMacInt16(p, M68K_RTS); p+= 2;
|
||||||
if (p - fs_data != fsReleaseWDCB)
|
if (p - fs_data != fsReleaseWDCB)
|
||||||
goto fsdat_error;
|
goto fsdat_error;
|
||||||
WriteMacInt16(p, 0x4267); p+= 2; // clr.w -(sp)
|
WriteMacInt16(p, 0x4267); p+= 2; // clr.w -(sp)
|
||||||
@ -584,7 +579,7 @@ void InstallExtFS(void)
|
|||||||
WriteMacInt16(p, 0x700d); p+= 2; // UTReleaseWDCB
|
WriteMacInt16(p, 0x700d); p+= 2; // UTReleaseWDCB
|
||||||
WriteMacInt16(p, 0xa824); p+= 2; // FSMgr
|
WriteMacInt16(p, 0xa824); p+= 2; // FSMgr
|
||||||
WriteMacInt16(p, 0x301f); p+= 2; // move.w (sp)+,d0
|
WriteMacInt16(p, 0x301f); p+= 2; // move.w (sp)+,d0
|
||||||
WriteMacInt16(p, M68K_EXEC_RETURN); p+= 2;
|
WriteMacInt16(p, M68K_RTS); p+= 2;
|
||||||
if (p - fs_data != SIZEOF_fsdat)
|
if (p - fs_data != SIZEOF_fsdat)
|
||||||
goto fsdat_error;
|
goto fsdat_error;
|
||||||
|
|
||||||
@ -1192,7 +1187,7 @@ read_next_de:
|
|||||||
goto read_next_de; // Suppress name beginning with '.' (MacOS could interpret these as driver names)
|
goto read_next_de; // Suppress name beginning with '.' (MacOS could interpret these as driver names)
|
||||||
//!! suppress directories
|
//!! suppress directories
|
||||||
}
|
}
|
||||||
add_path_component(de->d_name);
|
add_path_comp(de->d_name);
|
||||||
|
|
||||||
// Get FSItem for queried item
|
// Get FSItem for queried item
|
||||||
fs_item = find_fsitem(de->d_name, p);
|
fs_item = find_fsitem(de->d_name, p);
|
||||||
@ -1320,7 +1315,7 @@ read_next_de:
|
|||||||
if (de->d_name[0] == '.')
|
if (de->d_name[0] == '.')
|
||||||
goto read_next_de; // Suppress name beginning with '.' (MacOS could interpret these as driver names)
|
goto read_next_de; // Suppress name beginning with '.' (MacOS could interpret these as driver names)
|
||||||
}
|
}
|
||||||
add_path_component(de->d_name);
|
add_path_comp(de->d_name);
|
||||||
|
|
||||||
// Get FSItem for queried item
|
// Get FSItem for queried item
|
||||||
fs_item = find_fsitem(de->d_name, p);
|
fs_item = find_fsitem(de->d_name, p);
|
||||||
@ -1978,7 +1973,7 @@ static int16 fs_cat_move(uint32 pb)
|
|||||||
return result;
|
return result;
|
||||||
|
|
||||||
// Append old file/dir name
|
// Append old file/dir name
|
||||||
add_path_component(fs_item->name);
|
add_path_comp(fs_item->name);
|
||||||
|
|
||||||
// Does the new name already exist?
|
// Does the new name already exist?
|
||||||
if (access(full_path, F_OK) == 0)
|
if (access(full_path, F_OK) == 0)
|
||||||
|
@ -32,6 +32,7 @@ extern int16 ExtFSHFS(uint32 vcb, uint16 selectCode, uint32 paramBlock, uint32 g
|
|||||||
// System specific and internal functions/data
|
// System specific and internal functions/data
|
||||||
extern void extfs_init(void);
|
extern void extfs_init(void);
|
||||||
extern void extfs_exit(void);
|
extern void extfs_exit(void);
|
||||||
|
extern void add_path_component(char *path, const char *component, int max_len);
|
||||||
extern void get_finder_type(const char *path, uint32 &type, uint32 &creator);
|
extern void get_finder_type(const char *path, uint32 &type, uint32 &creator);
|
||||||
extern void set_finder_type(const char *path, uint32 type, uint32 creator);
|
extern void set_finder_type(const char *path, uint32 type, uint32 creator);
|
||||||
extern void get_finder_flags(const char *path, uint16 &flags);
|
extern void get_finder_flags(const char *path, uint16 &flags);
|
||||||
|
@ -95,8 +95,10 @@ bool InitAll(void)
|
|||||||
CDROMInit();
|
CDROMInit();
|
||||||
SCSIInit();
|
SCSIInit();
|
||||||
|
|
||||||
|
#if SUPPORTS_EXTFS
|
||||||
// Init external file system
|
// Init external file system
|
||||||
ExtFSInit();
|
ExtFSInit();
|
||||||
|
#endif
|
||||||
|
|
||||||
// Init serial ports
|
// Init serial ports
|
||||||
SerialInit();
|
SerialInit();
|
||||||
@ -159,8 +161,10 @@ void ExitAll(void)
|
|||||||
// Exit network
|
// Exit network
|
||||||
EtherExit();
|
EtherExit();
|
||||||
|
|
||||||
|
#if SUPPORTS_EXTFS
|
||||||
// Exit external file system
|
// Exit external file system
|
||||||
ExtFSExit();
|
ExtFSExit();
|
||||||
|
#endif
|
||||||
|
|
||||||
// Exit drivers
|
// Exit drivers
|
||||||
SCSIExit();
|
SCSIExit();
|
||||||
|
@ -648,8 +648,10 @@ void PatchAfterStartup(void)
|
|||||||
r.d[0] = 0xa05c;
|
r.d[0] = 0xa05c;
|
||||||
Execute68kTrap(0xa247, &r); // SetOSTrapAddress()
|
Execute68kTrap(0xa247, &r); // SetOSTrapAddress()
|
||||||
|
|
||||||
|
#if SUPPORTS_EXTFS
|
||||||
// Install external file system
|
// Install external file system
|
||||||
InstallExtFS();
|
InstallExtFS();
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -666,7 +668,7 @@ bool CheckROM(void)
|
|||||||
// Real addressing mode requires a 32-bit clean ROM
|
// Real addressing mode requires a 32-bit clean ROM
|
||||||
return ROMVersion == ROM_VERSION_32;
|
return ROMVersion == ROM_VERSION_32;
|
||||||
#else
|
#else
|
||||||
// Virtual addressing mode works with 32-bit clean Mac II ROMs and Classic ROMs (experimental)
|
// Virtual addressing mode works with 32-bit clean Mac II ROMs and Classic ROMs
|
||||||
return (ROMVersion == ROM_VERSION_CLASSIC) || (ROMVersion == ROM_VERSION_32);
|
return (ROMVersion == ROM_VERSION_CLASSIC) || (ROMVersion == ROM_VERSION_32);
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user