70 lines
2.3 KiB
Plaintext
70 lines
2.3 KiB
Plaintext
|
|
$00
|
|
$01 0000_0001 // written on slow disk, before copy from $F000 to $5700
|
|
$04 0000_0100 // written before copy
|
|
$14 0001_0100 // written before jmp to ROM
|
|
$4C 0100_1100 //
|
|
$84 1000_0100 // written before copy loop into $E000
|
|
$8C 1000_1100 // written before jump to qd RESET vector (FDS BIOS reset vector)
|
|
$9D 1001_1101 // written before jump to rom RESET vector
|
|
|
|
0011_1011 3B
|
|
0001_1101 1D
|
|
|
|
0011_1011
|
|
|
|
5432 1098 7654 3210
|
|
0000_0000 0000_0000
|
|
|
|
0100_1100 xxxx_xxxx $4Cxx
|
|
0100_1000 xxxx_xxxx $48xx
|
|
|
|
$0000 $07FF sys ram
|
|
$5000 $5FFF SF ram (but only half)
|
|
$6000 $DFFF FDS ram
|
|
$E000 $FFFF FDS bios *OR* SF ram (all of it this time)
|
|
|
|
7 bit 0
|
|
---------
|
|
LRDW ??PM
|
|
|||| ||||
|
|
|||| |||+- Disk/ROM mode (0 = current Disk/ROM switch, 1 = opposite of Disk/ROM switch)
|
|
|||| ||+-- PPU CIRAM /CE, A10, A13 mode (0 = current Disk/ROM switch, 1 = opposite of Disk/ROM switch)
|
|
|||| |+--- Fammy PRG-RAM mirroring (0 = $5000-$5FFF only?, 1 = map a mirror at $E000-$FFFF?)
|
|
|||| +---- Fammy PRG-RAM $E000 mirror mapping (0 = $E000-$FFFF, 1 = $F000-$FFFF only?)
|
|
|||+------ Disk CPU/PPU write control (0 = enable, 1 = disable writes to CHR-RAM and $8000-$FFFF?)
|
|
||+------- Disk M2 control (0 = current Disk/ROM switch, 1 = opposite of Disk/ROM switch)
|
|
|+-------- ROM M2 control (0 = current Disk/ROM switch, 1 = opposite of Disk/ROM switch)
|
|
+--------- On-board LED (0 = off, 1 = on)
|
|
|
|
## Slow ROM
|
|
|
|
- Copies patch to $5100 and jumps to it
|
|
- eject disk screen
|
|
- speed select screen
|
|
- copy $F000-$F7FF to $5700-$5EFF
|
|
- VINTWait before each outer loop itteration
|
|
- write $01 to reg before copy loop
|
|
- write $00 to reg after copy loop
|
|
- copy $5700-$5EFF to $F000-$F7FF
|
|
- VINTWait before each outer loop itteration
|
|
- write $04 to reg before copy loop
|
|
- write $00 to reg after copy loop
|
|
|
|
// there's some bullshit happening here to change the NMI vector
|
|
|
|
- copy $F800-$FFFF to $5700-$5EFF
|
|
- VINTWait before each outer loop itteration
|
|
- write $01 to reg before copy loop
|
|
- write $00 to reg after copy loop
|
|
- copy $5700-$5EFF to $F800-$FFFF
|
|
- VINTWait before each outer loop itteration
|
|
- write $01 to reg before copy loop
|
|
- write $00 to reg after copy loop
|
|
- write $9D to reg
|
|
- jmp ($FFFC)
|
|
|
|
### NMI handler
|
|
|
|
- write $0D to reg
|