SUPERFLUID Manual
From ReplayResources
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)
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
- 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
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
* = 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.