In this post I’m describing a method which is widely used to Dump RAM and ROM images on Sharp PC-1500 and PC-1600 systems. This method is non-destructive and can be used on most Sharp PC ROMs and extension cards. It only requires a Sharp CE-150 extension, an audio cable, and a computer with a microphone input (i.e. sound card).
Besides a plotter, the CE-150 Color Graphic Printer also provides two audio interfaces (line-in and microphone output). These were (and still are) used to transfer code or data between Sharp PCs and tape recorders. Today, such recorders are mostly outdated but the method works nonetheless with sound cards. Software tools are freely available (e.g. pocket-tools) that allow the transformation of recorded audio files into binary dumps and even further into BASIC code.
For dumping ROM images from the Sharp PC onto a computer the output of the CE-150 is connected to the microphone input of the sound card. If you still have the original cable (shown below) to connect them – perfect. Otherwise any 3.5 mm male to male mono or stereo cable should do the job.
The CE-150 provides a set of BASIC commands to facilitate loading and saving binary data and BASIC programs. The CSAVE command allows data dump of a defined memory region:
> CSAVE M -1 "filename"; expr1,expr2,expr3 > CSAVE M expr1,expr2
- filename – optional; unnecessary for ROM dumps.
- expr1 – First memory address that should be read.
- expr2 – Last memory address that should be read.
- expr3 – optional; program load/execution address.
The following graphic shows the memory map of the Sharp PC-1500. The PC-1500A has a slightly different mapping (not shown).
By default memory from within the 64k ME0 area will be dumped. Keep in mind that there are different areas addressable depending on the setting of the ME0, ME1, PU, and PV flip-flops. Only ME0 can be addressed directly via CSAVE as far as I know. You can still copy content from one range to another (with PEEK/POKE [#] iterating over two memory ranges), then dump it. At least that’s what I’ve done before having more advanced machine language tools…
The following two examples transmit the contents of the 16k ROM (C000h – FFFFh) of the Sharp PC-1500 and the 8k CE-150 ROM (&A000h – &BFFFh):
> CSAVE M &C000,&FFFF > CSAVE M &A000,&BFFF
On the PC (i.e. the tape recorder) side I’m using Audacity, an open source audio recorder/editor to record the incoming signals. I usually set the sample rate to 16000 Hz at one channel. I found it is best to keep the maximum amplitude somewhere around 0.7. After the recording has finished I remove possible silence at the beginning and end. When saving/exporting the audio file make sure to choose “unsigned 8 bit PCM” as codec and “WAV (Microsoft)” as header.
Converting the audio into a ROM image file with wav2bin (part of the pocket-tools) is pretty simple:
$ ./wav2bin -t img sharp_ce-150_a000-bfff.wav Synchro found : 8.1 seconds at 2500 Hz, last count : 0, total : 0 Wave format : 0xA0 -> Binary, PC-1500 Save name : Start Address : 0xA000 Buffer Length : 8192 bytes Output format : Binary
BTW: I really recommend to turn off the internal buzzer to avoid the annoying beeps from being played loud during data transfer.
> BEEP OFF
[Schematics Source: Sharp PC-1500 Technical Reference Manual & Sharp PC-1500 Benutzerhandbuch]