SUPERFLUID Manual: Difference between revisions

From ReplayResources
Jump to navigationJump to search
No edit summary
 
(6 intermediate revisions by the same user not shown)
Line 1: Line 1:
{{ReplayResources:RoadWorks}}
{{-}}
{{-}}


Line 11: Line 10:
Releasing reset while holding:
Releasing reset while holding:


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


[[File:Superfluid_startup.png|alt=SUPERFLUID Startup]]
[[File:Superfluid_startup.png|alt=SUPERFLUID Startup]]
Line 27: Line 21:
   Z - zero fill ram
   Z - zero fill ram
   C - configure ram for backup (with zeroes)
   C - configure ram for backup (with zeroes)
(shift-C configure for backup with pattern)
      (shift-C configure for backup with pattern)
   B - go to normal basic
   B - go to normal basic
   X - go to basic with extensions
   X - go to basic with extensions
Line 35: Line 29:
== BASIC EXTENSION ==
== BASIC EXTENSION ==


[[File:Superfluid_basic.gif|alt=SUPERFLUID Basic]]
[[File:Superfluid_basic.png|alt=SUPERFLUID Basic|right]]
 
<pre>
 
   - Long file load/save/verify
   - Long file load/save/verify
 
     
   - function keys
   - function keys
     <F1> - load and run
     <F1> - load and run
Line 56: Line 49:
   - OFF  - disable cartridge load/save
   - OFF  - disable cartridge load/save
   - KILL - disable cartridge
   - KILL - disable cartridge
   - OLD
   - OLD - try to restore basic program
   - MON
   - MON - enter monitor
   - MENU - enter boot menu
   - MENU - enter boot menu
   - $
   - $
Line 67: Line 60:
   - &  VERIFY ,8,1
   - &  VERIFY ,8,1
   - £  SAVE ,8,1
   - £  SAVE ,8,1
 
</pre>
 


== FREEZER ==
== FREEZER ==


[[File:Superfluid_backup.gif|alt=SUPERFLUID Freezer]]
[[File:Superfluid_backup.gif|alt=SUPERFLUID Freezer|right]]


 
''The freezer normally directly enters the monitor.''  In the frozen state the
The freezer always directly enters the monitor.   In the frozen state the
memory map reflects the state of RAM at the time of freezing.  This includes
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
I/O registers and color RAM.  There are some exceptions to this, notably SID
Line 84: Line 75:
which reflects them as they should be written when restarting.
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 ==
== MONITOR ==


[[File:Superfluid_monitor.png|alt=SUPERFLUID Monitor]]
[[File:Superfluid_monitor.png|alt=SUPERFLUID Monitor|right]]
 


'''*''' = not yet implemented


'''* = not yet implemented'''


<pre>
SCREEN EDITOR
SCREEN EDITOR
-------------
-------------
Line 104: Line 119:
   <F5>
   <F5>
   <F7>
   <F7>
  <SPACE>  pauses output.  Pressing space once more resumes it.
  <C=>      holds output while depressed.
  <CTRL>    slows scrolling down (like normal screen editor)




Line 143: Line 162:
   <target>:
   <target>:
         0-7    mem conf $3x
         0-7    mem conf $3x
         8     IEC device #8 mem
         8-15  IEC device #8-#15 mem
        9      IEC device #9 mem
         M      RR Cart RAM
         M      RR Cart RAM
         P      RR PROM
         P      RR PROM
Line 160: Line 178:


   Usage: @      show disk status
   Usage: @      show disk status
         @8     set device #8
         @8-15  set device #8-#15
        @9    set device #9
        @10    set device #10 [*]
        @11    set device #11 [*]
         @$    show directory
         @$    show directory
         @$<str> show directory with wildcard
         @$<str> show directory with wildcard
Line 185: Line 200:
         *8    set device #8 mem
         *8    set device #8 mem
         *9    set device #9 mem
         *9    set device #9 mem
        *10-15 set device #10-#15 mem
         *M    set AR/RR Cart RAM
         *M    set AR/RR Cart RAM
         *P    set AR/RR PROM
         *P    set AR/RR PROM
Line 195: Line 211:
"£" - Instruction set control
"£" - Instruction set control


   Usage: £     toggle between normal and undocumented opcodes
   Usage: £
 
  Toggle between normal and undocumented opcodes.
 
 
"!" - profiling
 
  Usage: !<cmd>
 
  Measure the execution time of <cmd>




Line 250: Line 275:
   Usage:  F SSSS EEEE KK
   Usage:  F SSSS EEEE KK
   Usage:  F SSSS EEEE KK LL MM...
   Usage:  F SSSS EEEE KK LL MM...
   Usage:  F SSSS EEEE "jksajkasd"...
   Usage:  F SSSS EEEE "JKSAJKASD"...


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


"H" - Hunt
"H" - Hunt


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


   --- example ---
   --- example ---
Line 333: Line 359:
   .M FFF0 0010
   .M FFF0 0010
   ---------------
   ---------------


"R" - Dump Registers
"R" - Dump Registers
Line 364: Line 391:
   .T 3:D000 D800 4000<ret>
   .T 3:D000 D800 4000<ret>
   ---------------
   ---------------
"TR" - Transfer Reverse
  Usage:  TR DDDD EEEE SSSS
  This is the same as transfer, except the range part specifies
  the target, which the gets filled in from the source address at
  the end.




Line 377: Line 412:
   Usage:  X
   Usage:  X


  Exits to basic or unfreezes depending on how the monitor was entered.
"XB" - perform freeze backup (only when frozen)
  Usage:  XB
"XX" - exit through freeze backup restore (only when frozen)
  Usage:  XX
  This is provided to debug the freeze backup restore routine.
</pre>






[[Category:SUPERFLUID]]
[[Category:SUPERFLUID]]

Latest revision as of 22:27, 10 April 2024


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>
  <SPACE>   pauses output.  Pressing space once more resumes it.
  <C=>      holds output while depressed.
  <CTRL>    slows scrolling down (like normal screen editor)



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-15   IEC device #8-#15 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-15  set device #8-#15
         @$     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
         *10-15 set device #10-#15 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.


"!" - profiling

  Usage: !<cmd>

  Measure the execution time of <cmd>


":", "'" - 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>
  ---------------

"TR" - Transfer Reverse

  Usage:  TR DDDD EEEE SSSS

  This is the same as transfer, except the range part specifies
  the target, which the gets filled in from the source address at
  the end.


"V" - Verify Memory

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


"X" - Exit to basic

  Usage:  X

  Exits to basic or unfreezes depending on how the monitor was entered.


"XB" - perform freeze backup (only when frozen)

  Usage:  XB


"XX" - exit through freeze backup restore (only when frozen)

  Usage:  XX

  This is provided to debug the freeze backup restore routine.