Changes

Multiface II

11,424 bytes added, 14:57, 8 May 2021
[[Romantic Robot]] did. The Multiface took an exact copy of what was in memory at the present moment, and saved it to disc, ready for you to reload at your leisure. All you had to do was press a little red button then select ‘Save’ from the menu that appeared.
It was such a good idea that at least three other companies had the same plan, and brought out similar-sounding devices: [[Datel]]'s [[Action Replay]], [[Evesham Micros]]' [[Disc Wizard]], and [[Mirage]]'s [[Imager]]. In one of those happy coincidences of commerce and merit, the Multiface was the best of the lot, and also the one which survived.
==Revision History==
Needless to say, this concept of a ‘universal backup (oh, ok, piracy) device’ worried software houses no end, and there were no end of rumours that the Multiface and its ilk would be banned under the Copyright & Patents Act of 1990. In the end, all that happened was that Romantic Robot got the chance to run ‘Buy now! before it’s banned’ adverts, provoking lots of panic sales. They then continued to sell the Multiface. Several years later, they tried the same trick with ‘The CPC is no longer a viable platform – so we’re selling off our last Multifaces!’. This supposed last shipment lasted about two years.
 
The Multiface III is a version for the Spectrum +3.
 
==Multiface 2 revisions==
 
There was more than one revision of the Multiface 2 for the Amstrad:
 
* 1st version which has a manual switch to control visibility to software - first appeared in Amstrad action 16 (January 1987)
 
In Amstrad Action issue 23 it mentions some incompatibility with some CPC6128 machines and there are some dipswitches which can be configured to work with it. Multiface 2's with this have version 78 software.
 
* 2nd version which has an automatic switch controlled by PAL ICs to control visibility to software. This is called "2+" by Romantic Robot. It was mention in Amscene in Amstrad Action 33 (June 1988) and was first advertised in Amstrad Action issue 36 (September 1988).
 
* 3rd version which was the same as the 2+ but had a Centronics connector and ROM modified to work with the Amstrad Plus. This ROM doesn't work on the CPC.
 
Was there a version which didn't have a switch and came before version 1?
==Anti-Multiface==
Any CPC program can find out what’s in memory at the moment. It’s the PEEK command in BASIC, and the very foundation of machine code. You, too, can save the contents of memory to disc just with the following line:
OPENOUT "filename" : FOR n=0 TO 65535 : PRINT#9,CHR$(PEEK(n)); : NEXT : CLOSEOUT
Needless to say, the Multiface did just that (except written in machine code). If I could get £40 for that one line of program, I’d be smiling.
All of these settings are saved on disc as part of your backup. So when you load the Multiface-saved copy, it knows exactly how to set up each chip.
==ToolkitTechnical ==
When I said that There were various revisions of the Multiface only did one thing, I was lying. It does two. Just about.2:
There’s * There was a very basic memory editor built into the Multiface, version which enables you was visible to view and edit software all the current contents of your CPC’s memorytime. Er, that’s about it. Something I always found useful is that it would work in both hexadecimal and plain vanilla decimal numbers – so if I’d lost my scientific calculator (againDid this exist?), I still had a hex-to-decimal converter at my fingertips.
* One version had a "invisibility" switch on the front in addition to the stop and reset buttons. When switched in one direction the multiface was invisible to software and in the other it was visible. ''Is there a dump of the ROM from this version?'' * Last revision had an automatic "invisibility" switch internally controlled by the hardware itself. After reset the multiface was visible, but when the stop button was pressed and then control was returned to the running program it would be invisible and would remain invisible until the computer was reset. The following applies to the automatic "invisibility" version (the "2+"): If the multiface 2 is visible you can enable/disable the ROM and RAM in the CPU's address space: To make the ROM and RAM visible to the CPU: * Enable lower rom using port 7fxx as normal ld bc,&7f89 out (c),c* Then activate the ROM and RAM: ld bc,&fee8 out (c),c * To deactivate the ROM and RAM: ld bc,&feea out (c),c Testing shows the port is decoded as: ‭11111110111010exx means any value for this bite is 0 for enable and 1 for disable. ROM is visible in the range &0000-&1fff. (including [[NMI]] vector at 0066h). Writing to the ROM doesn't write through to CPC's RAM.RAM is visible in the range &2000-&3fff. Writing to the RAM doesn't write through to CPC's RAM.The internal ROM/RAM at 0000h-3FFFh in the CPC being disabled. You can write to *ANY* byte of the RAM including those which store the hardware state. The Multiface 2 listens to Gate-Array and PAL writes (port 7fxx), CRTC writes (bcxx and bdxx) and 8255 Control port writes (f7xx).  Gate-Array and PAL are decoded as ‭01111111xxxxxxxx, CRTC as ‭10111100xxxxxxxx and ‭10111101xxxxxxxx and 8255 writes as ‭11110111xxxxxxxx. When the I/O write is detected, then specific locations in the MF2 RAM are updated immediately.  Gate-Array pen index write (7fxx with bit 7=0 and bit 6=0): 3fcf Gate-Array border colour write (7fxx with bit 7=0 and bit 6=1): 3fdf Gate-Array pen colour write (7fxx with bit 7=0 and bit 6=1): 3f90-3f9f (pens 0 to 15) Gate-Array mode write (7fxx with bit 7=1 and bit 6=0): 3fef PAL write (7fxx with bit 7=1 and bit 6=1): 3fff CRTC register select write (bcxx): 3cff CRTC register data (bdxx): 1db0-1dbf (only registers 0-15, others are ignored) 8255 Control port write (f7xx): 37ff The value that is stored is the value written. The automatic switch version of the multiface works by monitoring opcode reads from 0064 or 0065 (for returning back to the stopped program) and 0066 and 0067 for entering multiface 2 ROM when pressing the stop button. There is a single call to 0065 (which has a RET) before the multiface 2 returns control back to the running program. The multiface 2 uses the stack inside the running program to return. It's not possible to activate the multiface ram and rom and call 0064/0065 directly - it has no effect, the multiface 2 must be in a specific state (which happens when the stop button has been pressed) to accept the call and make itself invisible. == Toolkit == When I said that the Multiface only did one thing, I was lying. It does two. Just about.  There’s a very basic memory editor built into the Multiface, which enables you to view and edit the current contents of your CPC’s memory. Er, that’s about it. Something I always found useful is that it would work in both hexadecimal and plain vanilla decimal numbers – so if I’d lost my scientific calculator (again), I still had a hex-to-decimal converter at my fingertips.  But this ability to edit the memory could be used in a very clever way to enter an assembler program and change the PC&nbsp;(actual executing address) to run it. The most famous use is, arguably, a BANK&nbsp;DUMPING&nbsp;PROGRAM , that dumped the first 64Kb of memory to the second bank on a CPC6128, then reset the machine. That took advantage of the fact that the second 64kb survived a RESET, so all the program was there ready to save from BASIC. The procedure was simple, just entering those bytes in any memory location (not in the 4000-7FFF range):<br>   01 C4 7F ED 49 21 00 00 11 00 40 01 00 40 ED&nbsp;B0 =&gt; dump 0000-3FFF into first 16kb of second bank<br> 01 C6 7F ED 49 21 00 80 11 00 40 01 00 40 ED&nbsp;B0 =&gt; dump 8000-BFFF into third 16kb of second bank <br> 01 C7 7F ED 49 21 00 C0 11 00 40 01 00 40 ED B0 =&gt; dump C000-FFFF into fourth 16kb of second bank<br> 01 C0 7F ED 49 21 00 40 11 00 C0 01 00 40 ED B0 =&gt; dump 4000-7FFF to screen (already saved)<br> 01 C5 7F ED 49 21 00 C0 11 00 40 01 00 40 ED B0 =&gt; dump screen to second 16kb of second bank<br> 01 C0 7F ED 49 C3 00 00 =&gt; reset bank status and reset the machine<br> <br> Once the machine was reset, you could save all the program to basic doing:<br>  OUT &amp;7fc4,&amp;c4: save "game-1",b,&amp;4000,&amp;3fff OUT &amp;7fc5,&amp;c5: save "game-2",b,&amp;4000,&amp;3fff OUT &amp;7fc6,&amp;c6: save "game-3",b,&amp;4000,&amp;3fff OUT &amp;7fc7,&amp;c7: save "game-4",b,&amp;4000,&amp;3fff This trick was used to save heavily protected games to disk.<br>   Something more people found useful was that you could change crucial parts of a game – notably the memory location that holds your current number of lives. Change it from 3 to 250, and you’re laughing. AA would print lists of such ‘Multiface pokes’ every issue. <br> <br>
==Eat my Multiface==
==Multiface Software==
Some programs were written to co-operate with the Multiface, rather than fight against it.  * [[The InsiderComparator]], * [[Gripper]]* [[Soundhakker]]* [[Tearaway]], * [[TUSSThe Insider]] (a Multiface II tool from Romantic Robot themselves)* [[TUSS (The Ultimate Sprite Searcher) and [[Soundhakker]] were  Were all hacking programs designed to expand the capabilities of the Multiface: the first-named . [[The Insider]] was written by Romantic Robot, while the others were all third party products. [[The Insider ]] was also unique in that you could still press ‘R’ to return to the program currently running.
TUSS and Soundhakker, by [[Wild Thang|Richard Wildey]] and [[Hangman|Rob Scott]] respectively, were particularly specialised tools. TUSS helped you to nick graphics out of other people’s games: Soundhakker helped you to nick Soundtrakker tunes from demos and fanzines. Amstrad Action (them again) once tested Tearaway against TUSS, found in favour of Tearaway, and then completely disproved their findings by using TUSS, not Tearaway, to remove the nipples from the covertape version of [[Stormlord]].
== Manual ==
* [[Media:Multiface 2 Manual.pdf|MF2 User Manual]] {{EN}} {{PDF}}* [[Media:Multiface Two User Manual.zip|MF2 User Manual.zip]]* [[Media:Multiface Two User Manual.txt|MF2 User Manual.txt]] == Pictures == <gallery caption="Original manual that came with the MultifaceII"> Image:multiface_page1multiface.jpg|Page 1Multiface closeup Image:multiface_page2Multiface II advertisment.jpg|Page 2AdvertisementImage:multiface_page3MultifaceII AA100.jpg|Page 3Advertisement in AA 100Image:multiface_page4Amstrad Action106 20.jpg|AA Issue 106 - Page 420Image:multiface_page5MultifaceII_Front.jpg|Page 5Multiface II - (version with switch for making it invisible to software) - Front (eBay)Image:multiface_page6MultifaceII_Back.jpg|Page 6Multiface II - (version with switch for making it invisible to software) - Back (eBay) 
</gallery>
 
<gallery caption="Multiface II - Amstrad 464 / 6128 Plus compatible version">
 
Image:S-l1600.jpg|Original box
Image:S-l1600b.jpg|Original box - Other side
Image:S-l1600c.jpg|Original box - Opened
Image:S-l1600d.jpg|Multiface II in original box with manual
Image:S-l1600e.jpg|Multiface II with 50way Centronics Connector
Image:S-l1600f.jpg|Multiface II with 50way Centronics Connector - Side
Image:S-l1600g.jpg|Multiface II with 50way Centronics Connector - Back
 
</gallery>
 
All thanks to rockrabilia from eBay for using his pics taken from his [http://www.ebay.co.uk/itm/391986980297 '''Amstrad 464 6128 Plus - Romantic Robot MULTIFACE TWO Interface *Boxed *Tested!'''] auction.
 
<gallery caption="Multiface II Layout, thanks to Jose Leandro">
 
File:Multiface II - Top.jpg|Multiface II - Top
File:Multiface II - Bottom.jpg|Multiface II - Bottom
File:Multiface II - Components.jpg|Multiface II - Components
File:Multiface II - Tracks.jpg|Multiface II - Tracks
File:MF2-PCB Front.png|Multiface II - PCB Front
File:MF2-PCB Back.png|Multiface II - PCB Back
File:MF2-Layout.png|Multiface II - Layout
 
</gallery>
 
== Downloads ==
 
* [[Media:MF2 (Jose Leandro).zip|MF2 (Jose Leandro).zip]] (With all the PAL decoded)
 
There are at least 3 firmware versions.
 
The year & checksum can be displayed by pressing f0 on numeric keypad (within the multiface toolkit main menu).
 
The checksum is calculated by XORing all bytes in the ROM with each other.
 
Original AMSDOS:
 
* [[Media:Multiface.two.romantic.robot.86.zip|MF2 86 ROM]] - (1986, chksum=86h)
* [[Media:Multiface.two.romantic.robot.3e.amsdos.v05.zip|MF2 3E ROM]]
* [[Media:Multiface.two.romantic.robot.0e.zip|MF2 0E ROM]] - (1988, chksum=0Eh)
* [[Media:Mf2_7c.ROM|MF2 7C ROM]] - (1988)
* [[Media:Multiface.two.romantic.robot.78.amsdos.v05.zip|MF2 78 ROM]]
* [[Media:Multiface.two.romantic.robot.8d.amsdos.v05.zip|MF2 8D ROM]] - (1988)
 
For the Amstrad Plus series:
 
* [[Media:Multiface.two.romantic.robot.8b.zip|MF2+ 8B ROM]] - (1990, chksum=8Bh)
* [[Media:Multiface.two.romantic.robot.78.amsdos.v07.zip|MF2+ 78 ROM]]
* NOTE: 8B seems to be correct. They differ in 1 byte at address 0. On 8B it is DI on 78 it is NOP. 78 could be a bad dump.
 
The Source Code:
 
* [[Media:Vortex_MF2-Source_TFM.rar]]
 
Differences between chk=86 and chk=0E versions are unknown.
 
The chk=0Eh and chk=8Bh versions are almost byte-identical, they differ only by some bytes related to the new AMSDOS version used in CPC Plus system cartridge (aside from the new AMSDOS version, there is no support for CPC Plus related features, like handling the new ASIC registers).
 
You can find more versions (and more info, besides) over at the [http://www.grimware.org/doku.php/documentations/expansions/mf2/start Grimware site]
 
==Remake==
 
A project was begun to remake the multiface (by Giants of cpc-hardware on 2005) :
 
> Interface disassemble
 
> First typhon
 
> First decoding via H/W counter the Equation Of PALs
 
> A lot of pictures, informations H/W
 
> indicate all pins connections.
 
Jeff(hxc) was join the projet and make a big profesional work :
 
> Dump 2 pals
 
> Dump of the EPROM.
 
> Decoding equations
 
> Writing a test tool for the verification of these equations with real pal
 
> Implementation of the scheme Multiface 2.
 
 
 
 
Details are [http://sasfepu78.fr/index.php/12-divers/20-multiface-2-cpc-6128-old here] (in French).
 
For posterity, all the information and files from that page have been gathered and are available in this zip file:
 
* [[Media:MF2.zip|MF2.zip]].
 
The reverse engineering of the multiface II is not quite complete, in that two versions of one of the PAL chips are apparently in the wild, and only one has been reverse engineered, and that one not completely.
 
It's unclear what the newer version of the PAL chip is for, but CPC+ support would seem likely.
 
Until the PAL chip is decoded, there is not enough information to complete the remake.
 
Now, thanks to Jose Leandro, the hardware specialist of the spectrum, with his famous page :
 
http://trastero.speccy.org/cosas/JL/JL.htm
 
We can know more about this hardware, all the PAL chips are decoded:
 
* [[Media:MF2 (Jose Leandro).zip|MF2 (Jose Leandro).zip]] (With all the PAL decoded)
 
==Links==
 
* [http://www.cpc-power.com/index.php?page=detail&num=4971 ''Multiface II'' from CPC-Power]
* [http://cpcrulez.fr/hardware-interface_debug-multiface_2.htm ''Multiface II'' from CPCrulez]
* [http://hardware.speccy.org/temp/Amstrad-multiface2.html ''Multiface II'' from hardware.speccy.org]
* [http://hardware.speccy.org/temp/Amstrad-multiface2/Amstrad-multiface21.html ''Multiface II PALs'' from hardware.speccy.org]
* [https://web.archive.org/web/20160715092459/http://www.grimware.org/doku.php/documentations/expansions/mf2/start ''Multiface II'' from grimware]
* [https://web.archive.org/web/20090108031853/http://cpc-hardware.com/sections.php?op=viewarticle&artid=31 ''Multiface II'' from CPC-Hardware]
* [http://quasar.cpcscene.net/doku.php?id=dossier:mf2 ''Multiface II'' from Quasar Net] (french, memory mapping details and programmation tutorial and examples)
 
[[Category:Peripherals]] [[Category:Manual]] [[Category:Copy Protection]]
194
edits