Magic Formel: Difference between revisions

From ReplayResources
Jump to navigationJump to search
m (Created page with '__NOTOC__ {{Infobox |image = alt=Magic Formel 2 Screenshots |imagestyle = |headerstyle = background:#ccf; |labelstyle = background:#ddf; |…')
 
mNo edit summary
Line 28: Line 28:
|header5 =
|header5 =
|label5  = Manual
|label5  = Manual
|data5  = [[Media:Magic_Formel_Manual.pdf|PDF: 11 pages - includes all necessary info]]<br>
|data5  = [[Media:Magic_Formel_v1_2_Manual_German.pdf|PDF: v1.2 Manual - 42 pages german]]<br>
[[Media:Capture_V1.1_Upgrade.png|PNG: 1 page - v1.1 Upgrade Note]]
[[Media:Magic_Formel_v2_0_Manual_German.pdf|PDF: v2.0 Manual - 50 pages german (v1.2 with addon pages)]]
|header6 =
|header6 =
|label6  = [[CRT ID]]
|label6  = [[CRT ID]]
Line 42: Line 42:
}}
}}


''Magic Formel'' (say "ice-pick") is an extraordinary hardware and software combination that is capable of copying virtually all memory-resident software regardless of the original protection scheme or storage medium''' are the first few words on the manual.
''Magic Formel'' is the successor to ''Formel 64'' and dictated the name for this due to ''Magic Formel'' being more popular. Released by the german company ''Grewe Computertechnik'' towards the end of 1986 with a heavy ROM load of initially 32 kbyte later rising to 96 kbyte even and a solid 8 kbyte RAM the cartridge had everything required to become a real success. It didn't work out too well though. Due to several bugs on the ROM and general incompatibilites many advanced users did not seem to like ''Magic Formel''. The freezing capabilities provided were not too ..... blabla
[[File:Magic_Formel_v20_top_cut.jpg|200px|left|border|Magic Formel 2.0 from top]]
 
==Hints==
Here we go with some things left out on the manual we felt noteworthy. Information was gathered from 64er January 1992, 64er July 1992 and the 64er Produktführer 1993. Please note that the ''Produktführer'' article is a copy of the
 
* '''E(somechar) ''start'' ''end''''' monitor command is described as command to display memory as 8-, 16- and 24-bit representations to e.g. display chars or sprites. This is achieved using '''E!''' for 8-bit display (character set), '''E"''' for 16-bit and '''E#''' for 24-bit (sprite) display. The manual does not explain that there are a few more modes though. These are '''E$''', '''E%''' ,'''E&''' and '''E'''' for 32-, 40-, 48- and 56-bit display.
 
* '''^''' (arrow up) and '''R''' monitor commands to display vectors and registers allows overwriting these by typing over them and pressing return. This is not really a surprise, is it?
 
* To handle the C64 memory mapping easier the monitor introduces a 6-character address mode for start and end adresses explained on the monitor introduction. It is using e.g. ''34e000'' to access $E000 with $01 set to $34. The manual also explains that using ''f80300'' will access the drive memory. Left out on the manual were f7e000 allowing access to the cartridge ROM and ff0000 (to ffffff really?) to access the cartridge RAM.
 
* Though the freezer is lacking here and there one very cool option shall not be left untold:
{{quote|Some sort of "UNDO" is possible even on many harsh crashes by freezing and restarting before the expected crash. On crash just reset and hit RETURN two times. This restores the last frozen state - of course not all of the C64 memory is preserved, but the main important portion.}}
 
 
==Bugs==
*Crashing the cartridge in monitor:
{{quote|A 1000 LDA #!00}}
 
 
*Hunting for bytes:
{{quote|F C000 C0FF 01  - Fills memory with $01<br>
H C000 C0FF 01  - Finds C000 and C001 - '''WTF?'''<br>
H C000 C100 01  - Finds all values<br>
}}
 
 
*''Magic-Basic'' is featuring a '''HEX''' command which works when properly used but crashes the machine incorrect usage:
{{quote|HEX 53000  - ok<br>
HEX "53000" - '''CRASH'''
}}
 
 
*The freezer trashes $02A6 on restart.
 
*''Magic-Text'' does only allow sending the printer escape sequences containing letters or numbers only. Only a mix of letter followed by a number is allowed.
 
*The fastloader does not load the last block correctly when it is used to the last byte on the sector. Yieks.




Line 50: Line 88:


<pre>
<pre>
Magic Formel
  - 64K ROM
  - 8K RAM
  rom bank 0x00 - 0x07 (0x08) 8192* 8 64k
  ram bank 0x00 - 0x1f (0x20)  256*32  8k
Magic Formel 2
  - 64K ROM
  - 32K extra ROM
  - 8K RAM
  rom bank 0x00 - 0x0f (0x10) 8192*16 128k
  ram bank 0x00 - 0x1f (0x20)  256*32  8k
  ram is mapped to $deXX (one page in io1 space)
  rom is mapped to $e000


*** Register Details


</pre>
  Writing anywhere to the IO2 area adresses a MC6521 (2 8bit i/o ports). However
  its registers are not simply memory mapped, instead A0-A5 go to D0-D5, D1 to D7
  and A6-A7 to RS1/RS0.
  addr    dfXX    RRDD DDDD
    R -rs1/rs0 of MC6821
    D -d0-d5 of MC6821
  data      .X    .... ..D.
    D - d7 of MC6821 (Controls Mapping)
  *** MC6821 Registers
 
  RS1  RS0 (CRA2 CRB2 = control register bit 2)
 
  0    0    1    .    Data A
  0    0    0    .    Data Direction A
  0    1    .    .    Control Register A
  1    0    .    1    Data B
  1    0    .    0    Data Direction B
  1    1    .    .    Control Register B
 
*** MC6821 Port usage
 
  PA (Output Data)
 
  A0,A1,A2      - ROM Bank
  A3            - extra ROM enable/disable (?)
  A4            - RAM enable/disable (?)
  A5-A7 unused


required to use operations such as ''run'', ''edit'' and ''break program'' with the system software.
  PB (Output Data)


(TODO: Outline the memory fill routine. IseMON is detecting free bytes and shows them inverted by some obscure algorithm.)
  B3,B2,B0,B1,B4 - RAM Bank
  B5-B6 (unused)
  B7            - enable ROM at $E000 (?)


  CB2            - enable Cartridge (?)
</pre>
{{Infobox
{{Infobox
|name        = Infobox/doc
|name        = Infobox/doc
|bodystyle    =  
|bodystyle    =  
|title        = Formel 64 Adverts
|title        = Formel 64 Advert
|titlestyle  =  
|titlestyle  =  
|image        = [[File:Formel_64_Ad.png|200px|alt=Formel 64 Advert]]
|image        = [[File:64er_86_06_Formel_64_Ad.jpg|250px|alt=Formel 64 Advert]]
|imagestyle  =  
|imagestyle  =  
|caption      =  
|caption      =  
Line 76: Line 167:
|labelstyle  = background:#ddf;
|labelstyle  = background:#ddf;
|datastyle    =  
|datastyle    =  
|image        = [[File:Magic_Formel_1_Ad.png|200px|alt=Magic Formel 1 Advert]]
|image        = [[File:Magic_Formel_1_Ad.jpg|250px|alt=Magic Formel 1 Advert]]
|imagestyle  =  
|imagestyle  =  
}}
}}
Confused enough? Something like [http://www.forum64.de/wbb3/board2-c64-alles-rund-um-den-brotkasten/board4-c64-hardware/board184-module-und-externe-erweiterungen/p388424-anleitung-f-r-magic-formel-2-0/#post388424 this here] might cheer you up a little more:
The following is a rough assumption and does _NOT_ cover all the possibilities of the hardware. However this base info can be used to write a dumper without too much hazzle. Translation of the relevant parts:
{{quote|The Cartridge is activated at $e000 and uses the whole IO area from $de00 to $dfff.
Write to $df00 - Enable Bank 0<br>
Write to $df01 - Enable Bank 1<br>
Write to $df02 - Enable Bank 2<br>
Write to $df03 - Enable Bank 3<br>
Write to $df04 - Enable Bank 4<br>
Write to $df05 - Enable Bank 5<br>
Write to $df06 - Enable Bank 6<br>
Write to $df07 - Enable Bank 7<br>
<br>
Write to $df0c - Enable Bank 0 of the custom eprom (MF v2)<br>
Write to $df0d - Enable Bank 1 of the custom eprom (MF v2)<br>
Write to $df0e - Enable Bank 2 of the custom eprom (MF v2)<br>
Write to $df0f - Enable Bank 3 of the custom eprom (MF v2)<br>
<br>
The following are wild guesses and require validation:<br>
<br>
Write to $df08 - Enable Bank 4 of the second eprom (MF v2 with large secondary eprom)<br>
Write to $df09 - Enable Bank 5 of the second eprom (MF v2 with large secondary eprom)<br>
Write to $df0a - Enable Bank 6 of the second eprom (MF v2 with large secondary eprom)<br>
Write to $df0b - Enable Bank 7 of the second eprom (MF v2 with large secondary eprom)<br>
<br>
Write to $df11 - Enable RAM ???<br>
<br>
Write of $ff to $df00 Reenable the normal kernel<br>
}}




Line 87: Line 212:
== [[Wantlist|Missing]]==
== [[Wantlist|Missing]]==


* Formel 64 ROM Dump
* Formel 64 PDF Manual Scan
* Magic Formel 1.1 ROM Dump
* Magic Formel 1.1 ROM Dump


Line 93: Line 220:
[[Media:Magic_Formel_binaries_rr.c64.org_2010-04.rar|Magic_Formel_binaries_rr.c64.org_2010-04.rar]] contains just the c64 binaries:
[[Media:Magic_Formel_binaries_rr.c64.org_2010-04.rar|Magic_Formel_binaries_rr.c64.org_2010-04.rar]] contains just the c64 binaries:


* Starpoints standard ''ISEPIC'' program which includes all the functionality (''operating system'' and tools)
* Magic Formel v1.2 bin and .crt
* Magic Formel v2.0 bin and ''hacked up'' .crt




Line 99: Line 227:


* all of the above
* all of the above
* [[Media:Magic_Formel_v1_2_Manual_German.pdf|Magic Formel v1.2 German Manual]]
* [[Media:Magic_Formel_v2_0_Manual_German.pdf|Magic Formel v2.0 German Manual]]
* [[Magic_Formel_1.2_English_Manual_Project64.txt|Magic Formel 1.2 English Manual Project64]]
* [[Media:Magic_Formel_2_Schematics_preview.pdf|Magic Formel 2.0 Schematics Preview]]
* Pictures an Datasheets for further line tracing


== Trivia ==
== Trivia ==


* Interesting effects can be seen on failed freezes:
* Interesting effects can be seen on failed freezes:





Revision as of 23:23, 11 April 2010

File:Magic Formel.gif
Magic Formel 2 Screenshots
Technical Info
ROM 32 kbyte Formel 64

64 kbyte Magic Formel 1.2

96 kbyte Magic Formel 2.0
RAM 8 kbyte
Hardware features 1 Button Freeze

1 Button Reset

Formel 64 without Reset but Parallel cable instead
Manual PDF: v1.2 Manual - 42 pages german
PDF: v2.0 Manual - 50 pages german (v1.2 with addon pages)
CRT ID 14
Programming
Programming See Tech Section

Magic Formel is the successor to Formel 64 and dictated the name for this due to Magic Formel being more popular. Released by the german company Grewe Computertechnik towards the end of 1986 with a heavy ROM load of initially 32 kbyte later rising to 96 kbyte even and a solid 8 kbyte RAM the cartridge had everything required to become a real success. It didn't work out too well though. Due to several bugs on the ROM and general incompatibilites many advanced users did not seem to like Magic Formel. The freezing capabilities provided were not too ..... blabla

Magic Formel 2.0 from top

Hints

Here we go with some things left out on the manual we felt noteworthy. Information was gathered from 64er January 1992, 64er July 1992 and the 64er Produktführer 1993. Please note that the Produktführer article is a copy of the

  • E(somechar) start end monitor command is described as command to display memory as 8-, 16- and 24-bit representations to e.g. display chars or sprites. This is achieved using E! for 8-bit display (character set), E" for 16-bit and E# for 24-bit (sprite) display. The manual does not explain that there are a few more modes though. These are E$, E% ,E& and E' for 32-, 40-, 48- and 56-bit display.
  • ^ (arrow up) and R monitor commands to display vectors and registers allows overwriting these by typing over them and pressing return. This is not really a surprise, is it?
  • To handle the C64 memory mapping easier the monitor introduces a 6-character address mode for start and end adresses explained on the monitor introduction. It is using e.g. 34e000 to access $E000 with $01 set to $34. The manual also explains that using f80300 will access the drive memory. Left out on the manual were f7e000 allowing access to the cartridge ROM and ff0000 (to ffffff really?) to access the cartridge RAM.
  • Though the freezer is lacking here and there one very cool option shall not be left untold:

Some sort of "UNDO" is possible even on many harsh crashes by freezing and restarting before the expected crash. On crash just reset and hit RETURN two times. This restores the last frozen state - of course not all of the C64 memory is preserved, but the main important portion.


Bugs

  • Crashing the cartridge in monitor:

A 1000 LDA #!00


  • Hunting for bytes:

F C000 C0FF 01 - Fills memory with $01
H C000 C0FF 01 - Finds C000 and C001 - WTF?
H C000 C100 01 - Finds all values


  • Magic-Basic is featuring a HEX command which works when properly used but crashes the machine incorrect usage:

HEX 53000 - ok
HEX "53000" - CRASH


  • The freezer trashes $02A6 on restart.
  • Magic-Text does only allow sending the printer escape sequences containing letters or numbers only. Only a mix of letter followed by a number is allowed.
  • The fastloader does not load the last block correctly when it is used to the last byte on the sector. Yieks.


Tech

The following is shamelessly ripped from magicformel.c from the VICE emulator. Most of the text was written by Groepaz:

 Magic Formel
  - 64K ROM
  - 8K RAM
 
  rom bank 0x00 - 0x07 (0x08) 8192* 8 64k
  ram bank 0x00 - 0x1f (0x20)  256*32  8k
 
 Magic Formel 2
  - 64K ROM
  - 32K extra ROM
  - 8K RAM
 
  rom bank 0x00 - 0x0f (0x10) 8192*16 128k
  ram bank 0x00 - 0x1f (0x20)  256*32   8k

  ram is mapped to $deXX (one page in io1 space)
  rom is mapped to $e000

 *** Register Details

  Writing anywhere to the IO2 area adresses a MC6521 (2 8bit i/o ports). However
  its registers are not simply memory mapped, instead A0-A5 go to D0-D5, D1 to D7
  and A6-A7 to RS1/RS0.
 
  addr    dfXX    RRDD DDDD
 
    R -rs1/rs0 of MC6821
    D -d0-d5 of MC6821
 
  data      .X    .... ..D.
 
    D - d7 of MC6821 (Controls Mapping)
 
  *** MC6821 Registers

  RS1  RS0 (CRA2 CRB2 = control register bit 2)

  0    0    1    .     Data A
  0    0    0    .     Data Direction A
  0    1    .    .     Control Register A
  1    0    .    1     Data B
  1    0    .    0     Data Direction B
  1    1    .    .     Control Register B

 *** MC6821 Port usage

  PA (Output Data)

  A0,A1,A2       - ROM Bank
  A3             - extra ROM enable/disable (?)
  A4             - RAM enable/disable (?)
  A5-A7 unused

  PB (Output Data)

  B3,B2,B0,B1,B4 - RAM Bank
  B5-B6 (unused)
  B7             - enable ROM at $E000 (?)

  CB2            - enable Cartridge (?)
Formel 64 Advert
Formel 64 Advert
Magic Formel 1 Advert

Confused enough? Something like this here might cheer you up a little more:

The following is a rough assumption and does _NOT_ cover all the possibilities of the hardware. However this base info can be used to write a dumper without too much hazzle. Translation of the relevant parts:

The Cartridge is activated at $e000 and uses the whole IO area from $de00 to $dfff.

Write to $df00 - Enable Bank 0
Write to $df01 - Enable Bank 1
Write to $df02 - Enable Bank 2
Write to $df03 - Enable Bank 3
Write to $df04 - Enable Bank 4
Write to $df05 - Enable Bank 5
Write to $df06 - Enable Bank 6
Write to $df07 - Enable Bank 7

Write to $df0c - Enable Bank 0 of the custom eprom (MF v2)
Write to $df0d - Enable Bank 1 of the custom eprom (MF v2)
Write to $df0e - Enable Bank 2 of the custom eprom (MF v2)
Write to $df0f - Enable Bank 3 of the custom eprom (MF v2)

The following are wild guesses and require validation:

Write to $df08 - Enable Bank 4 of the second eprom (MF v2 with large secondary eprom)
Write to $df09 - Enable Bank 5 of the second eprom (MF v2 with large secondary eprom)
Write to $df0a - Enable Bank 6 of the second eprom (MF v2 with large secondary eprom)
Write to $df0b - Enable Bank 7 of the second eprom (MF v2 with large secondary eprom)

Write to $df11 - Enable RAM ???

Write of $ff to $df00 Reenable the normal kernel



Notes

  • The review on Ahoy! Magazine Issue 22 (October 1985) and Ahoy! Magazine Issue 27 (March 1986) are warning the readers and users of cartridges such as the ISEPIC to utilise them for making illigitimate backups.

Missing

  • Formel 64 ROM Dump
  • Formel 64 PDF Manual Scan
  • Magic Formel 1.1 ROM Dump

Binaries

Magic_Formel_binaries_rr.c64.org_2010-04.rar contains just the c64 binaries:

  • Magic Formel v1.2 bin and .crt
  • Magic Formel v2.0 bin and hacked up .crt


Magic_Formel_all_rr.c64.org_2010-04.rar contains:


Trivia

  • Interesting effects can be seen on failed freezes:


Weblinks