THE HACKER'S VIEW OF THE COMMODORE 64

Dec 31, 2021

ICU64 for Frodo Redpill v0.1.8 - Released

Download the new version here.
(also download the latest update 2022.01.08)

New features of Frodo Redpill:
- Multiple independent instances
- Preferences > Redpill > 'Extra Shared RAM' option
- CPU boost
- .hack file format (for data injection and boost control)
- drag'n'drop files: .fpr .hack
- improved REU emulation
- Window/Display management:
  - [F11] toggle window frame
  - [Ctrl+RMB+drag] move window
  - [RMB+drag] move all windows of all instances
  - [Alt+arrows/Home] control screen offset in smaller viewports

New features of ICU64:
- Multiple independent instances
- memory view:
  - view [6] : Changed values
  - view [7]/[Ctrl+F] : Find values (in current map layout)
  - extras [F4] : added REU view (if enabled)
  - Extra Shared RAM @ DE00..DEFF of MMIO (if enabled)
  - selection [LMB+drag] > [Ctrl+C/V] : copy/paste via clipboard
  - status bar [F10] : added current cell coordinates
- code painter:
  - [New]&[Clear] (to reduce close & reopen of this tool)
- instruction logger:
  - [Break New]&[PC only] (to locate easier first time executed code)
- .NET API:
  - peek/poke renamed as Peek/Poke
 

  

Multiple Instances

You can start multiple -independent- instances of ICU64 & Frodo Redpill that are totally isolated. However, to utilize some parallelism, you can optionally enable the 'Extra Shared RAM' (in Frodo > Preferences > Redpill) that provides 256 bytes of extra RAM (at DE00..DEFF in MMIO). This RAM is common among all the Frodo instances that have this option enabled. Be aware that this shared pipeline has max bandwidth only 256 bytes/frame = 12.5KB/s and latency = ±1 frame (I'm working to improve these...). The previous 'unlocked' instances (where the whole RAM and COLORRAM both shared) is still available; just start the emulator holding the [SHIFT] key.

 
CPU Boost

The 'CPU Boost' feature is a clock multiplier (a turbo) for the CPU of the C64. The rest of the chips (VIC,SID,CIAs) operate in the original speed and preserve the real-time features of the system. It is similar to the turbo switch of the SuperCPU for the real hardware, but in Frodo Redpill boost is controlled automatically by a .hack file. For example, say you have a 3D game that calls its -slow- rendering routine with an instruction like:
      1204 JSR 3120
    1207 ...

If you create a .hack file that contains:
    +1204    ; enable boost when 1204 is executed
    -1207    ; disable boost when 1207 is executed

and drop this file inside the emulator, then the routine at 3120 will be executed 63 times faster! I think you get the idea...

Note that every time you apply a .hack file, the boost map of the emulator resets. You can use this to turn off the boost feature without restarting the emulator or editing your .hack file; just keep an empty 'foo.hack' file around and drop it to the emulator anytime you want to turn off boost globally.

The .hack file format

A .hack file is a text file with a simple syntax, that simplifies the application of patches to a running C64 software, and also controls the boost of the C64 CPU. A command in a .hack file starts with a single symbol:
    #    comment
    ;    comment too
    :    poke
    +    boost on
    -    boost off

After a poke or boost command follows a hex address, and in the case of poke it follows an array of hex byte values that can expand in multiple lines. Some examples:

    # this is a comment  ; this is a comment too
    :400 08 05 0c 0c 0f  ; poke some bytes at $0400 $0401 ...
    :2d020 00            ; make border black (MMIO @ 2xxxx)
    +1800                ; turn on boost at $1800 (x63)
    -1860                ; turn off boost at $1860 (x1)


.NET API

To avoid some issues, the peek[]/poke[] functions renamed as Peek[]/Poke[], and the sample code for the Mathematica has updated too.

 
Enjoy!