2020-07-16 06:27:38 +00:00
|
|
|
#ifndef RDISK_H
|
|
|
|
#define RDISK_H
|
2020-06-24 17:10:44 +00:00
|
|
|
|
2020-06-26 07:12:08 +00:00
|
|
|
#define RDiskBuf ((char*)0x40880000)
|
2021-03-04 17:43:34 +00:00
|
|
|
extern uint32_t *RDiskDBGDisPos;
|
|
|
|
extern char *RDiskDBGDisByte;
|
|
|
|
extern uint32_t *RDiskCDROMDisPos;
|
|
|
|
extern char *RDiskCDROMDisByte;
|
2020-06-26 07:12:08 +00:00
|
|
|
#define BufPtr ((Ptr*)0x10C)
|
|
|
|
#define MemTop ((Ptr*)0x108)
|
|
|
|
#define MMU32bit ((char*)0xCB2)
|
|
|
|
|
2020-06-27 19:53:56 +00:00
|
|
|
#pragma parameter __D0 RDiskReadXPRAM(__D0, __D1, __A0)
|
2020-07-16 06:27:38 +00:00
|
|
|
OSErr RDiskReadXPRAM(short numBytes, short whichByte, Ptr dest) = {0x4840, 0x3001, 0xA051};
|
2020-06-24 17:10:44 +00:00
|
|
|
|
2020-07-16 06:27:38 +00:00
|
|
|
#pragma parameter __D0 RDiskAddDrive(__D1, __D0, __A0)
|
|
|
|
OSErr RDiskAddDrive(short drvrRefNum, short drvNum, DrvQElPtr dq) = {0x4840, 0x3001, 0xA04E};
|
2020-06-24 17:10:44 +00:00
|
|
|
|
2020-07-16 06:27:38 +00:00
|
|
|
static inline char RDiskIsRPressed() { return *((char*)0x175) & 0x80; }
|
|
|
|
static inline char RDiskIsAPressed() { return *((char*)0x174) & 0x01; }
|
2020-06-26 07:12:08 +00:00
|
|
|
|
2020-07-15 06:24:45 +00:00
|
|
|
//#define RDISK_COMPRESS_ICON_ENABLE
|
2020-07-16 06:27:38 +00:00
|
|
|
#define RDISK_ICON_SIZE (285)
|
2020-06-27 19:53:56 +00:00
|
|
|
typedef struct RDiskStorage_s {
|
|
|
|
DrvSts2 status;
|
2020-06-30 01:08:50 +00:00
|
|
|
char initialized;
|
2020-07-02 07:06:35 +00:00
|
|
|
Ptr ramdisk;
|
2021-03-04 17:44:11 +00:00
|
|
|
char dbgEN;
|
|
|
|
char cdromEN;
|
2020-07-15 06:24:45 +00:00
|
|
|
#ifdef RDISK_COMPRESS_ICON_ENABLE
|
2020-07-16 06:27:38 +00:00
|
|
|
char icon[RDISK_ICON_SIZE];
|
2020-07-12 02:41:51 +00:00
|
|
|
#endif
|
2020-07-02 07:06:35 +00:00
|
|
|
} RDiskStorage_t;
|
|
|
|
|
2021-04-01 07:46:40 +00:00
|
|
|
typedef void (*RDiskCopy_t)(Ptr, Ptr, unsigned long);
|
|
|
|
#define copy24(s, d, b) { RDiskCopy_t copy24 = (RDiskCopy_t)C24; copy24(s, d, b); }
|
|
|
|
typedef void (*RDiskPatch_t)(Ptr, char, char);
|
|
|
|
#define patch24(s, d, b) { RDiskPatch_t patch24 = (RDiskPatch_t)P24; patch24(s, d, b); }
|
|
|
|
|
2020-07-16 06:27:38 +00:00
|
|
|
#define PackBits_Repeat(count) (-1 * (count - 1))
|
2020-07-12 02:41:51 +00:00
|
|
|
#define PackBits_Literal(count) (count - 1)
|
2020-07-02 07:06:35 +00:00
|
|
|
|
2020-07-16 06:27:38 +00:00
|
|
|
#define RDISK_COMPRESSED_ICON_SIZE (87)
|
2020-07-15 06:26:28 +00:00
|
|
|
#ifdef RDISK_COMPRESS_ICON_ENABLE
|
|
|
|
#include <Quickdraw.h>
|
2020-07-16 06:27:38 +00:00
|
|
|
const char const RDiskIconCompressed[RDISK_COMPRESSED_ICON_SIZE] = {
|
2020-07-15 06:26:28 +00:00
|
|
|
PackBits_Repeat(76), 0b00000000, /*
|
|
|
|
0b00000000, 0b00000000, 0b00000000, 0b00000000,
|
|
|
|
0b00000000, 0b00000000, 0b00000000, 0b00000000,
|
|
|
|
0b00000000, 0b00000000, 0b00000000, 0b00000000,
|
|
|
|
0b00000000, 0b00000000, 0b00000000, 0b00000000,
|
|
|
|
0b00000000, 0b00000000, 0b00000000, 0b00000000,
|
|
|
|
0b00000000, 0b00000000, 0b00000000, 0b00000000,
|
|
|
|
0b00000000, 0b00000000, 0b00000000, 0b00000000,
|
|
|
|
0b00000000, 0b00000000, 0b00000000, 0b00000000,
|
|
|
|
0b00000000, 0b00000000, 0b00000000, 0b00000000,
|
|
|
|
0b00000000, 0b00000000, 0b00000000, 0b00000000,
|
|
|
|
0b00000000, 0b00000000, 0b00000000, 0b00000000,
|
|
|
|
0b00000000, 0b00000000, 0b00000000, 0b00000000,
|
|
|
|
0b00000000, 0b00000000, 0b00000000, 0b00000000,
|
|
|
|
0b00000000, 0b00000000, 0b00000000, 0b00000000,
|
|
|
|
0b00000000, 0b00000000, 0b00000000, 0b00000000,
|
|
|
|
0b00000000, 0b00000000, 0b00000000, 0b00000000,
|
|
|
|
0b00000000, 0b00000000, 0b00000000, 0b00000000,
|
|
|
|
0b00000000, 0b00000000, 0b00000000, 0b00000000,
|
|
|
|
0b00000000, 0b00000000, 0b00000000, 0b00000000, */
|
|
|
|
PackBits_Repeat(4), 0b11111111, /*
|
|
|
|
0b11111111, 0b11111111, 0b11111111, 0b11111111, */
|
2020-07-16 06:27:38 +00:00
|
|
|
PackBits_Literal(36),
|
2020-07-15 06:26:28 +00:00
|
|
|
0b10000000, 0b00000000, 0b00000000, 0b00000001,
|
|
|
|
0b10001111, 0b00011110, 0b00111100, 0b01111001,
|
|
|
|
0b10001001, 0b00010010, 0b00100100, 0b01001001,
|
|
|
|
0b10001001, 0b00010010, 0b00100100, 0b01001001,
|
|
|
|
0b10001001, 0b00010010, 0b00100100, 0b01001001,
|
|
|
|
0b10001111, 0b00011110, 0b00111100, 0b01111001,
|
|
|
|
0b11000000, 0b00000000, 0b00000000, 0b00000001,
|
|
|
|
0b01010101, 0b01010101, 0b11010101, 0b01010101,
|
|
|
|
0b01111111, 0b11111111, 0b01111111, 0b11111111,
|
|
|
|
PackBits_Repeat(12), 0b00000000, /*
|
|
|
|
0b00000000, 0b00000000, 0b00000000, 0b00000000,
|
|
|
|
0b00000000, 0b00000000, 0b00000000, 0b00000000,
|
|
|
|
0b00000000, 0b00000000, 0b00000000, 0b00000000, */
|
|
|
|
|
|
|
|
PackBits_Repeat(76), 0b00000000, /*
|
|
|
|
0b00000000, 0b00000000, 0b00000000, 0b00000000,
|
|
|
|
0b00000000, 0b00000000, 0b00000000, 0b00000000,
|
|
|
|
0b00000000, 0b00000000, 0b00000000, 0b00000000,
|
|
|
|
0b00000000, 0b00000000, 0b00000000, 0b00000000,
|
|
|
|
0b00000000, 0b00000000, 0b00000000, 0b00000000,
|
|
|
|
0b00000000, 0b00000000, 0b00000000, 0b00000000,
|
|
|
|
0b00000000, 0b00000000, 0b00000000, 0b00000000,
|
|
|
|
0b00000000, 0b00000000, 0b00000000, 0b00000000,
|
|
|
|
0b00000000, 0b00000000, 0b00000000, 0b00000000,
|
|
|
|
0b00000000, 0b00000000, 0b00000000, 0b00000000,
|
|
|
|
0b00000000, 0b00000000, 0b00000000, 0b00000000,
|
|
|
|
0b00000000, 0b00000000, 0b00000000, 0b00000000,
|
|
|
|
0b00000000, 0b00000000, 0b00000000, 0b00000000,
|
|
|
|
0b00000000, 0b00000000, 0b00000000, 0b00000000,
|
|
|
|
0b00000000, 0b00000000, 0b00000000, 0b00000000,
|
|
|
|
0b00000000, 0b00000000, 0b00000000, 0b00000000,
|
|
|
|
0b00000000, 0b00000000, 0b00000000, 0b00000000,
|
|
|
|
0b00000000, 0b00000000, 0b00000000, 0b00000000,
|
|
|
|
0b00000000, 0b00000000, 0b00000000, 0b00000000, */
|
|
|
|
PackBits_Repeat(32), 0b11111111, /*
|
|
|
|
0b11111111, 0b11111111, 0b11111111, 0b11111111,
|
|
|
|
0b11111111, 0b11111111, 0b11111111, 0b11111111,
|
|
|
|
0b11111111, 0b11111111, 0b11111111, 0b11111111,
|
|
|
|
0b11111111, 0b11111111, 0b11111111, 0b11111111,
|
|
|
|
0b11111111, 0b11111111, 0b11111111, 0b11111111,
|
|
|
|
0b11111111, 0b11111111, 0b11111111, 0b11111111,
|
|
|
|
0b11111111, 0b11111111, 0b11111111, 0b11111111,
|
|
|
|
0b11111111, 0b11111111, 0b11111111, 0b11111111, */
|
2020-07-16 06:27:38 +00:00
|
|
|
PackBits_Literal(1), 0b01111111,
|
|
|
|
PackBits_Repeat(3), 0b11111111, /*
|
|
|
|
0b01111111, 0b11111111, 0b11111111, 0b11111111, */
|
|
|
|
PackBits_Literal(1), 0b01111111,
|
|
|
|
PackBits_Repeat(3), 0b11111111, /*
|
|
|
|
0b01111111, 0b11111111, 0b11111111, 0b11111111, */
|
2020-07-15 06:26:28 +00:00
|
|
|
PackBits_Repeat(12), 0b00000000, /*
|
|
|
|
0b00000000, 0b00000000, 0b00000000, 0b00000000,
|
|
|
|
0b00000000, 0b00000000, 0b00000000, 0b00000000,
|
|
|
|
0b00000000, 0b00000000, 0b00000000, 0b00000000, */
|
2020-07-16 06:27:38 +00:00
|
|
|
PackBits_Literal(29),
|
2020-07-15 06:26:28 +00:00
|
|
|
27, 'G', 'a', 'r', 'r', 'e', 't', 't', '\'', 's', ' ',
|
|
|
|
'W', 'o', 'r', 'k', 's', 'h', 'o', 'p', ' ',
|
|
|
|
'R', 'O', 'M', ' ', 'D', 'i', 's', 'k', 0
|
|
|
|
};
|
|
|
|
#else
|
2021-03-04 20:22:34 +00:00
|
|
|
const char RDiskIcon[RDISK_ICON_SIZE] = {
|
2020-07-15 06:26:28 +00:00
|
|
|
// Icon
|
|
|
|
0b00000000, 0b00000000, 0b00000000, 0b00000000,
|
|
|
|
0b00000000, 0b00000000, 0b00000000, 0b00000000,
|
|
|
|
0b00000000, 0b00000000, 0b00000000, 0b00000000,
|
|
|
|
0b00000000, 0b00000000, 0b00000000, 0b00000000,
|
|
|
|
0b00000000, 0b00000000, 0b00000000, 0b00000000,
|
|
|
|
0b00000000, 0b00000000, 0b00000000, 0b00000000,
|
|
|
|
0b00000000, 0b00000000, 0b00000000, 0b00000000,
|
|
|
|
0b00000000, 0b00000000, 0b00000000, 0b00000000,
|
|
|
|
0b00000000, 0b00000000, 0b00000000, 0b00000000,
|
|
|
|
0b00000000, 0b00000000, 0b00000000, 0b00000000,
|
|
|
|
0b00000000, 0b00000000, 0b00000000, 0b00000000,
|
|
|
|
0b00000000, 0b00000000, 0b00000000, 0b00000000,
|
|
|
|
0b00000000, 0b00000000, 0b00000000, 0b00000000,
|
|
|
|
0b00000000, 0b00000000, 0b00000000, 0b00000000,
|
|
|
|
0b00000000, 0b00000000, 0b00000000, 0b00000000,
|
|
|
|
0b00000000, 0b00000000, 0b00000000, 0b00000000,
|
|
|
|
0b00000000, 0b00000000, 0b00000000, 0b00000000,
|
|
|
|
0b00000000, 0b00000000, 0b00000000, 0b00000000,
|
|
|
|
0b00000000, 0b00000000, 0b00000000, 0b00000000,
|
|
|
|
0b11111111, 0b11111111, 0b11111111, 0b11111111,
|
|
|
|
0b10000000, 0b00000000, 0b00000000, 0b00000001,
|
|
|
|
0b10001111, 0b00011110, 0b00111100, 0b01111001,
|
|
|
|
0b10001001, 0b00010010, 0b00100100, 0b01001001,
|
|
|
|
0b10001001, 0b00010010, 0b00100100, 0b01001001,
|
|
|
|
0b10001001, 0b00010010, 0b00100100, 0b01001001,
|
|
|
|
0b10001111, 0b00011110, 0b00111100, 0b01111001,
|
|
|
|
0b11000000, 0b00000000, 0b00000000, 0b00000001,
|
|
|
|
0b01010101, 0b01010101, 0b11010101, 0b01010101,
|
|
|
|
0b01111111, 0b11111111, 0b01111111, 0b11111111,
|
|
|
|
0b00000000, 0b00000000, 0b00000000, 0b00000000,
|
|
|
|
0b00000000, 0b00000000, 0b00000000, 0b00000000,
|
|
|
|
0b00000000, 0b00000000, 0b00000000, 0b00000000,
|
|
|
|
// Mask
|
|
|
|
0b00000000, 0b00000000, 0b00000000, 0b00000000,
|
|
|
|
0b00000000, 0b00000000, 0b00000000, 0b00000000,
|
|
|
|
0b00000000, 0b00000000, 0b00000000, 0b00000000,
|
|
|
|
0b00000000, 0b00000000, 0b00000000, 0b00000000,
|
|
|
|
0b00000000, 0b00000000, 0b00000000, 0b00000000,
|
|
|
|
0b00000000, 0b00000000, 0b00000000, 0b00000000,
|
|
|
|
0b00000000, 0b00000000, 0b00000000, 0b00000000,
|
|
|
|
0b00000000, 0b00000000, 0b00000000, 0b00000000,
|
|
|
|
0b00000000, 0b00000000, 0b00000000, 0b00000000,
|
|
|
|
0b00000000, 0b00000000, 0b00000000, 0b00000000,
|
|
|
|
0b00000000, 0b00000000, 0b00000000, 0b00000000,
|
|
|
|
0b00000000, 0b00000000, 0b00000000, 0b00000000,
|
|
|
|
0b00000000, 0b00000000, 0b00000000, 0b00000000,
|
|
|
|
0b00000000, 0b00000000, 0b00000000, 0b00000000,
|
|
|
|
0b00000000, 0b00000000, 0b00000000, 0b00000000,
|
|
|
|
0b00000000, 0b00000000, 0b00000000, 0b00000000,
|
|
|
|
0b00000000, 0b00000000, 0b00000000, 0b00000000,
|
|
|
|
0b00000000, 0b00000000, 0b00000000, 0b00000000,
|
|
|
|
0b00000000, 0b00000000, 0b00000000, 0b00000000,
|
|
|
|
0b11111111, 0b11111111, 0b11111111, 0b11111111,
|
|
|
|
0b11111111, 0b11111111, 0b11111111, 0b11111111,
|
|
|
|
0b11111111, 0b11111111, 0b11111111, 0b11111111,
|
|
|
|
0b11111111, 0b11111111, 0b11111111, 0b11111111,
|
|
|
|
0b11111111, 0b11111111, 0b11111111, 0b11111111,
|
|
|
|
0b11111111, 0b11111111, 0b11111111, 0b11111111,
|
|
|
|
0b11111111, 0b11111111, 0b11111111, 0b11111111,
|
|
|
|
0b11111111, 0b11111111, 0b11111111, 0b11111111,
|
|
|
|
0b01111111, 0b11111111, 0b11111111, 0b11111111,
|
|
|
|
0b01111111, 0b11111111, 0b11111111, 0b11111111,
|
|
|
|
0b00000000, 0b00000000, 0b00000000, 0b00000000,
|
|
|
|
0b00000000, 0b00000000, 0b00000000, 0b00000000,
|
|
|
|
0b00000000, 0b00000000, 0b00000000, 0b00000000,
|
|
|
|
27, 'G', 'a', 'r', 'r', 'e', 't', 't', '\'', 's', ' ',
|
|
|
|
'W', 'o', 'r', 'k', 's', 'h', 'o', 'p', ' ',
|
|
|
|
'R', 'O', 'M', ' ', 'D', 'i', 's', 'k', 0
|
|
|
|
};
|
|
|
|
#endif
|
|
|
|
|
2020-06-24 20:57:39 +00:00
|
|
|
#endif
|