SUPERFLUID Manual

From ReplayResources
Jump to navigationJump to search


SUPERFLUID Manual for the SUPERFLUID Cartridge ROM


STARTUP

Releasing reset while holding:

  <Ctrl>    : Go directly to normal BASIC.
  <C=>      : Go directly to normal BASIC with extensions.  (this is the default)
  <Run/Stop>: Go to boot menu.
  <1>       : Go directly to normal BASIC without setting up $de01. (freezer won't work correctly)

SUPERFLUID Startup


 M - go directly to the monitor
 Z - zero fill ram
 C - configure ram for backup (with zeroes)
     (shift-C configure for backup with pattern)
 B - go to normal basic
 X - go to basic with extensions


BASIC EXTENSION

SUPERFLUID Basic
  - Long file load/save/verify
       
  - function keys
    <F1> - load and run
    <F2> - load
         pressing <F1> or <F2> on an empty line does %0:*<cr> or /0:*<cr>.
         pressing it on a directory listing row loads that line using % or /.

    <F3> - disk directory
    <F4> - change background color
    <F5> - LIST<cr>
    <F6> - enter freezer
    <F7> - RUN:<cr>
    <F8> - MON<cr>

  - ON   - enable cartridge load/save
  - OFF  - disable cartridge load/save
  - KILL - disable cartridge
  - OLD  - try to restore basic program
  - MON  - enter monitor
  - MENU - enter boot menu
  - $
  - $<str> show directory with wildcard
  - @
  - /  LOAD ,8,1
  - %  LOAD ,8,1:RUN
  - ^  LOAD ,8:RUN
  - &  VERIFY ,8,1
  - £  SAVE ,8,1

FREEZER

SUPERFLUID Freezer

The freezer normally directly enters the monitor. In the frozen state the memory map reflects the state of RAM at the time of freezing. This includes I/O registers and color RAM. There are some exceptions to this, notably SID registers.

The I/O registers of the frozen state reflects the register contents as if read by the CPU at freeze time. This is in contrast to the IO command which reflects them as they should be written when restarting.

FREEZER COMPARISON

 freezer stack corruption:
 cart    freeze/restore    backup         reset
 ----------------------------------------------------
 FC3        $25 ($25)      $27 ($27)       ?
 ARVI       $18 ($18)      $18 ($18)       ?
 RR38P      $18 ($18)      $18 ($18)       ?
 SS522v1    $11* ($11*)    $19* ($19*)     ?
 KCSv2      $12 ($12)      $19 ($19)       ?
 FFmk4      n/a            $29 ($29)       n/a
 FMv2       n/a            $24 ($24)       n/a
 TFR08      $0B (n/a**)    n/a             $100##
 SF06 RR    $0B ($0B)      n/a             $5E ($5E)
 SF06 NR    $04 ($09)      n/a             $5E ($5E)
 SF08 RR    $0B ($0B)      $0E ($0E)       $02# ($02#)
 SF08 NR    $04 ($09)      $0E ($0E)       $02# ($02#)
 ----------------------------------------------------
 values within parenthesis are with $01=$34, otherwise $37
 * 5 of the bytes look like corruption at $01dc-$01e1
 ** crashes
 # 2 bytes at the top of stack (due to kernal CBM80 check)
 ## stack is cleared
 ? untested

MONITOR

SUPERFLUID Monitor


* = not yet implemented

SCREEN EDITOR
-------------
  <CRSR UP/DOWN>    Auto scroll:
    Doing crsr up at the top of the screen or crsr down at the bottom of the
    screen will automatically scroll any memory edit lines present on screen.

  <F1> - load file under cursor
  <F3> - disk directory
  <F5>
  <F7>


PARAMETERS
----------

  <addr>:
         SSSS
         S<spc>
         SS<spc>
         SSS<spc>
         SSSS<spc>
         SSSSS<spc>
         SSSSSS<spc>
         3:SSSS<spc>      set mem $33
         8:SSSS<spc>      set device #8 mem
         9:SSSS<spc>      set device #9 mem

  <range>:
         SSSSEEEE
	 SSSS EEEE	  normal (exclusive) range
	 SSSS-EEEE	  normal (exclusive) range
         SSSS+EEEE	  inclusive range
         3:SSSS EEEE      set mem $33
         8:SSSS EEEE      set device #8 mem
         9:SSSS EEEE      set device #9 mem

  <dumprange>:
	 SSSS             SSSS to SSSS+1 (= one line)
	 SSSS-            SSSS to end of mem bank
         SSSSEEEE
	 SSSS EEEE	  normal (exclusive) range
	 SSSS-EEEE	  normal (exclusive) range
         SSSS+EEEE	  inclusive range
         3:SSSS EEEE      set mem $33
         8:SSSS EEEE      set device #8 mem
         9:SSSS EEEE      set device #9 mem

   <target>:
         0-7    mem conf $3x
         8      IEC device #8 mem
         9      IEC device #9 mem
         M      RR Cart RAM
         P      RR PROM
         R      REU
         V      C128 VDC
         W      C128 VDC REGS
         G      DEBUG view (raw cart space) [*]


COMMANDS
--------

* = not yet implemented


"@" - Disk drive handling

  Usage: @      show disk status
         @8     set device #8
         @9     set device #9
         @10    set device #10 [*]
         @11    set device #11 [*]
         @$     show directory
         @$<str> show directory with wildcard
         @<str> disk command
         @"<str>" disk command
         @?     determine drive type (forces update of cached type)


"$" - Disk directory

  Usage: $      show directory
  Usage: $<str> show directory with wildcard


"*" - Access control

  Usage: *4     set mem $34
         *7     set mem $37
         *3     set mem $33
         *      toggle between $34 (RAM) and $37 (ROM)
         *8     set device #8 mem
         *9     set device #9 mem
         *M     set AR/RR Cart RAM
         *P     set AR/RR PROM
         *R     set REU
         *V     set C128 VDC
         *W     set C128 VDC REGS
         *G     set DEBUG view (raw cart space) [*]


"£" - Instruction set control

  Usage: £      toggle between normal and undocumented opcodes


":", "'" - Editing Memory

  :xxxx xx xx xx ...
  'xxxx XYZXYZXYZXYZXYZXYZXYZXYZXYZXYZXY

  Auto scroll:
    Doing crsr up at the top of the screen or crsr down at the bottom of the
  screen will automatically scroll any memory edit lines present on screen.


";" - Editing Registers

  Usage: ;XXXX II GG HH KK LLLLLLLL MM


"-" - Editing I/O Registers (only in the frozen state)

  -xxxx xx xx xx ...


"," - Assemble

  Usage:  ,XXXX GG[ HH[ JJ]] MMM OOO

  Pressing enter within the hex part will update memory.
  Pressing enter within the mnemonic part will assemble memory. [*]

"A" - Assemble

  Usage:  A XXXX MMM OOO


"C" - Compare Memory

  Usage:  C SSSS EEEE DDDD

  --- example ---
  .C 1000 1100 2000<ret>

  .
  ---------------


"D" - Disassemble

  Usage:  D XXXX [YYYY]


"F" - Fill Memory

  Usage:  F SSSS EEEE KK
  Usage:  F SSSS EEEE KK LL MM...
  Usage:  F SSSS EEEE "jksajkasd"...

  --- example ---
  .F 1000 1100 20<ret>
  .F 0400 07E8 01 02 03 04 05<ret>
  .F C000+C0FF 2A "TLR" 2A 20 00<ret>
  .
  ---------------


"G" - Go

  Usage:  G [XXXX]

  Execute code in RAM or in drive memory.  You may exit using a BRK or RTS.

  NOTE: BRK will fail on $01 configurations where KERNAL and/or I/O is not
  visible.

"H" - Hunt

  Usage:  H SSSS EEEE KK LL MM...
  Usage:  H SSSS EEEE "jksajkasd"...

  --- example ---
  .H 1000 1100 20 34 50<ret>
  .H E000 0000 20 X1 EX<ret>
  .H E000+FFFF "B???? "<ret>
  .H 0400-0500 30&70<ret>
  .
  ---------------


"I" - Interpret Memory

  Usage:  I XXXX [YYYY]


"IO" - Dump I/O registers (only in the frozen state)

  Usage:  IO

  --- example ---
  .IO<ret>
  .-0000 2F 37                   <-- $00/$01 config
  .-0080 6F EA 37 FF 00 E9 25    <-- cpu regs

  .-D000 00 00 00 00 00 00 00 00 <-- video regs to load on unfreeze
  .-D008 00 00 00 00 00 00 00 00
  .-D010 00 9B 37 00 00 00 C8 00
  .-D018 15 71 F0 00 00 00 00 00
  .-D020 FE F6 F1 F2 F3 F4 F0 F1
  .-D028 F2 F3 F4 F5 F6 F7 FC
  .-D080 1B 84 71                <-- current $d011/$d012/$d019

  .-DC00 7F FF FF 00 25 40 FF FF <-- CIA1 regs to load on unfreeze
  .-DC08 00 00 00 01 00 81 01 08
  .-DC80 34 3F FF FF 00          <-- current Timer A/Timer B counter + intflgs

  .-DD00 97 FF 3F 00 FF FF FF FF <-- CIA2 regs to load on unfreeze
  .-DD08 00 00 00 01 00 00 08 08
  .-DD80 FF FF FF FF 00          <-- current Timer A/Timer B counter + intflgs
  .
  ---------------


"L" - Load Memory

  Usage:  L "NAME"
          L "NAME" DD [SSSS]
          L TT SS DDDD


"M" - Dump Memory

  Usage:  M XXXX [YYYY]

  --- example ---
  .M E000<ret>
  .M E000-<ret>
  .M FFFA 0000
  .M FFF0 0010
  ---------------

"R" - Dump Registers

  Usage:  R

  --- example ---
  .R<ret>
     PC  AC XR YR SP NV-BDIZC 01
  .;0A1C 00 18 0D FD 00100010 37
  .
  ---------------


"S" - Save Memory

  Usage:  S "NAME" DD SSSS EEEE [LLLL]
          S TT SS DDDD


"T" - Transfer

  Usage:  T SSSS EEEE DDDD

  --- example ---
  .T 1000 1100 2000<ret>
  .T100011002000<ret>
  .T FE 100 C100<ret>
  .T 8:E000 E100 2000<ret>
  .T 7:FF00 0100 5000<ret>
  .T 3:D000 D800 4000<ret>
  ---------------


"V" - Verify Memory

  Usage:  V "NAME"
          V "NAME" DD [SSSS]
          V TT SS DDDD


"X" - Exit to basic

  Usage:  X