Code Repo    |     RSS
MD's Technical Sharing



Saturday, June 28, 2008

System 7.5.5 on Mini vMac

This guide shows you how to install System 7.5.5 for the Mini vMac emulator. For a video tutorial, watch this Youtube clip (credits to Peak66 for creating this tutorial).

Before you start, download Mini vmac and find an appropriate ROM such as this one. Once your installation is completed, refer to my latest article for a list of interesting old Mac applications which you can play with using Mini vMac, Basilisk and SheepShaver.

Method 1: Installing System 7.5.5 from pre-made disk images

This section was added in August 2014 after I received comments from several readers asking for detailed instructions to upgrade to System 7.5.5 from System 7.5.3 using the disk images provided by Apple. In particular, one reader commented that since the upgrade disk images for System 7.5.5 downloaded from Apple are in .sea.bin format, there is no way to convert them into a format readable by Mini vMac, as HFVExplorer only supports .smi.bin format and the instructions provided in the download ask him to extract .sea.bin images using DiskCopy 4.2, which apparently requires an actual floppy disk drive.

While I do not have the time to verify this information, I do recall that Apple's old software download page has changed over the years. When I first attempted to install System 7.5.5 and wrote this article, I did not have major issues mounting the installer disk images. So I guess it was only recently that the disk images provided by the download page were changed to .sea.bin, making it harder to install them using Mini vMac. A possible way to work with the .sea.bin images provided by Apple now is to use old versions of StuffIt Expander, which I have not attempted due to time constraints.

I therefore decided to make available for download the following files, which I created back in 2008 from the disk images provided by Apple. These images can be mounted directly in Mini vMac for a straight forward installation experience of System 7.0.1, System 7.5.3 and System 7.5.5:
  1. hfs500M.rar: blank 500MB HFS hard disk image which can be mounted in Mini vMac for installation of System 7.5.5
  2. Mac701.zip: installation disk images for System 7.0.1
  3. mac753.zip: disk images for System 7.5.3
  4. mac755up.zip: upgrade disk images for System 7.5.5
Download the above files here

Installing System 7.5.5 on Mini vMac is now as simple as downloading and extracting the disk images from the above files and following the steps below:
  1. Start Mini vMac with "Install 1" disk image of System 7.0.1
  2. From Mini vMac's File menu, mount the empty 500MB hard disk image
  3. Choose to install System 7.0.1 on the 500MB hard disk image
  4. When prompted, use Mini vMac's File menu to switch to "Install 2" and other System 7.0.1 installation disk images
  5. Upon completion of System 7.0.1 installation, reboot to System 7.0.1 and mount the System 7.5.3 installation image
  6. Proceed to install System 7.5.3 and reboot after completion.
  7. Mount the System 7.5.5 installation image and again, choose to install System 7.5.5 onto the 500MB hard disk image
  8. Installation of System 7.5.5 should finish without issues, After a final reboot, you will have a fully functional Mini vMac running System 7.5.5 
For those who wish to try out System 7.5.5 without spending the time on installation, get the file hfv500M_sys755_clean.zip also from the above download link. Extract the zip file and boot Mini vMac with the extracted disk image to run System 7.5.5.

Method 2: Using Apple's original System 7.5.5 installer images

The following guide, written in 2008, shows you how to install System 7.5.5 on Mini vMac using the original installer images supplied by Apple.

To start, you must first install System 7.0.1 on Mini vMac:

1. Boot Mini vMac with System 7.0.1 boot disk, download from here. In Explorer, drag the boot disk to minivMac.exe and the system should boot up.

2. Download System 7.0.1 installation disk images from here

3. Use HFV Explorer to create an empty 10MB disk image

4. Click “File” —> “Open Volume.” Browse to the empty hard disk image and open it. The disk image

should show up at the top of the left hand column.

5. Now browse your system with HFVExplorer and find the .smi.bin file that you downloaded earlier. Drag it over to the

Macintosh disk image. Just click “OK” at the prompt. This will extract the original .smi into your disk image.

6. Create another empty 20MB disk image.

7. Quit HFVExplorer and with System 7.0.1 running on Mini VMac, use Mini Vmac's File menu > Open disk image and mount

the disk images created in step (5) and ()

8. Inside Mac OS, open the installer disk image (now mounted) created in step (5) and click on the SMI file.

9. Accept the terms and conditions. You may choose to skip the disk verification. A folder named 7.0.1 (1440k images)

should be shown on desktop.

10. Open the empty disk image mouted in Mac OS, and copy the entire folder in step 9 over.

11. Shut down Mini vMac and use HFVExplorer to open the hard disk image in order to copy the .image file out. Select

the .image file and choose Edit->Copy

12. Navigate to any folder you want on your Windows machine and choose Edit->Paste to copy the files to that folder. When prompted, paste it as Raw copy, data fork. Make sure you only paste the data fork, or else you’re going to end up with MacBinary files that you can’t boot with.

13. When you are done, you may want to remove the .image files from the disk image, leaving out an empty hard disk image.

14. Now start Mini vMac with the image "Install 1.image" created in step (12). Mount the empty hard disk image, where System 7.0.1 will be installed to.

15. Start the installation process. When prompted, click on Switch Disk and choose the empty hard disk image to install to.


16. When prompted for next disk, mount the required disk image. The installation will finish in around 15 minutes:

 17. When installation is done, reboot with the hard disk image and you should see System 7.0.1


Now we install System 7.5.3

1. Download it from here
2. Use HFVExplorer to extract all 19 SMI files into a new hard disk image.
3. With Mini VMac boot up with System 7.0.1, mount the hard disk image in step (1). Double click on the firstpart, choose to skip verification and you will see a the System 7.5.3 Install CD mounted on your desktop:

4. Double click on the installer CD and select Installer to start installation. The process should take another 15 minutes


Finally we upgrade to System 7.5.5

1. Download it from here
2. Repeat what we disk for System 7.5.3 to create a disk image with System 7.5.5 installer. Mount the hard disk image and start the installation.
3. When the installation is finished, reboot miniVmac with the hard disk where System 7.5.5 is installed to. You should see the 7.5.5 screen:

Read More »

Tuesday, June 17, 2008

ActiveSync Remote Display

This tool allow you to view and control PocketPC/Smartphone from your computer. It is part of Windows Mobile Developer Power Toys .

After installing, copy the two files (cerdisp2.exe and KillProc.exe) from C:\Program Files\Windows Mobile Developer Power Toys\ActiveSync_Remote_Display\devices\wce400\armv4t to your device's \Windows folder.

Run the ActiveSync Remote display tools (make sure that the device is connected via ActiveSync) from Start->Programs. Several prompts may appear on the device and you may need to try several times. Finally the tools will complain "the CPU or OS is unknown". Just click OK and everything will be fine. An alternative is to use Pocket Controller Pro or run a VNC Server on the device.
Read More »

Thursday, June 12, 2008

PocketWikipedia: Wikipedia on PocketPC

Pocket Wikipedia is a hand-checked selection from Wikipedia made by Schools Wikipedia which is about the size of a fifteen volume encyclopaedia (24,000 images and 14 million words). The application is a freeware software and works on Windows, Linux and Windows Mobile version.

 The original application

However, the oiginal Windows Mobile version is limited. The UI is outdated (it was meant for Windows Mobile 2003) and does not support Smartphone. As I am using both a PocketPC and Smartphone, my aim is to improve the application so that it can run on both devices.

Although the souce code is not released, it can be retrieved easily by using Reflector on the original binary (it was not obfuscated). The project contains only 1 form which has a WebBrowser control responsible for rendering all wikipedia contents. The database wikipedia.wi is in fact a zip file containing all available articles in HTML. The project uses SevenZip to decrypt the .wi file into an HTML files.

After reverse engineering, I have modified the application to have a better user interface, support both PocketPC and Smatphone, storing list of recent pages and allowing user to add favourites page. The search option is still primitive, it only allows keyword search and does not support phrase search.


Improved version
Download

Source code
Binary


Note: Due to the large file size, the binary does not include the database (Wikipedia.wi). You will need to download the original application and install it. When the modified application asks for the database location, specify the path to where you install the original application.


UPDATED (24 June 2010): I have also created a MobiPocket Reader (.PRC) version of Wikipedia, see this post
Read More »

Wednesday, June 11, 2008

Mini vMac on PocketPC

You can run miniVmac on your Windows Mobile device. With miniVmac, you can run up to System 7.5.5, which is available free of charge from Apple.

Download Mini vMac for Pocket PC from here. There are 2 versions, one is for VGA devices and one for QVGA devices. Place the vmac.rom in the same folder as the executable.

Start vMac and press Ctrl-H-O to open a boot disk image. The emulated Mac should boot up. The following are screenshots of miniVmac on Pocket PC running System 7.5.5:

QVGA solution:


VGA devices:


The screen looks a bit messy on VGA devices but the emulated system seems to be working.
Read More »

Monday, June 2, 2008

DirectShow: Null Renderer for Windows CE

This filter is a renderer that discards every sample it receives, without displaying or rendering the sample data. Even though this filter does not render any samples, it does wait for each sample's presentation time before discarding the sample. Therefore, the graph will run at the normal rate. If you want the graph the run as quickly as possible, set the reference clock to NULL.

A null renderer helps retrieve the frame buffer data as if they were displayed on screen with an actual render. The buffer retrieved may or may not be the same as that retrieved by a null transform filter, depending on the graph, and in particular the media type produced the raw camera data and the type required by the display driver. For example, if the camera produces YV12 but the display driver requires RGB565, there needs to be a color space conversion filter before the renderer. In that case, the buffer retrieved by the null-transform filter will be YV12 but a null-renderer will return RGB565. The position of each filter in the graph (which is determined by Intelligent Connect if the graph was built automatically via RenderStream) will also affect the type of the buffer.

The code for a null renderer is similar to that of a null-transform filter, except that the class needs to inherit CBaseVideoRenderer:

class CNullRenderer
:
public CBaseVideoRenderer, public INullRenderer
{
}

The actual rendering work is done in DoRenderSample

HRESULT DoRenderSample(IMediaSample* pMediaSample)
{
}

To tell Intelligent Connect which media type the filter will accept and which will be rejected, code the function CheckMediaType and declare sudIpPinTypes accordingly. For example, the following declaration will cause the filter to only accept (MEDIATYPE_Video, MEDIASUBTYPE_YV12):

const AMOVIESETUP_MEDIATYPE sudIpPinTypes =
{
&MEDIATYPE_Video
, // MajorType
&MEDIASUBTYPE_YV12
// MinorType
};

const AMOVIESETUP_PIN sudIpPin =
{
L
"Input", // The Pins name
TRUE
, // Is rendered
FALSE
, // Is an output pin
FALSE
, // Allowed none
FALSE
, // Allowed many
&CLSID_NULL
, // Connects to filter
NULL
, // Connects to pin
1, // Number of types
&sudIpPinTypes
// Pin details
};

const AMOVIESETUP_FILTER sudNullRenderer =
{
&CLSID_NullRenderer
, // Filter CLSID
L
"Null Renderer", // String name
MERIT_NORMAL
, // Filter merit
1, // Number of pins
&sudIpPin
// Pin details
};

HRESULT
CheckMediaType(const CMediaType* pMediaType)
{
if (pMediaType->majortype == MEDIATYPE_Video && pMediaType->subtype == MEDIASUBTYPE_YV12)
{
return S_OK;
} else return S_FALSE;
}

The full project can be download here 

See also

Read More »