Autostart

From vice-emu
Revision as of 21:05, 23 March 2023 by Gpz (talk | contribs)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search

goals:

  • fix the Autostart logic to always work, regardless of options

files

src/kbdbuf.c
src/autostart.c
src/autostart-prg.c

related options

First we need to collect all related options and how they relate to each other. For drive-emulation related details, see Drive Emulation Type Cleanup

In the following configurations autostarting will not work - "TDE" enabled, "handle TDE" disabled and "autostartmode 0" can not work.

-truedrive +virtualdev -autostartprgmode 0 +autostart-handle-tde -autostart-warp
-truedrive +virtualdev -autostartprgmode 0 +autostart-handle-tde +autostart-warp
-truedrive -virtualdev -autostartprgmode 0 +autostart-handle-tde -autostart-warp
-truedrive -virtualdev -autostartprgmode 0 +autostart-handle-tde +autostart-warp

binaries

  • prg
  • p00

tape

  • tap
  • t64

cartridge

  • crt

tapecart image

  • .tcrt

disk images

Disk images seem to be the most tricky thing, since different drives have different levels of supported emulation

1540 1541 1541-II 1570 1571 1581 FD 2000 FD 4000 2031 2040 3040 4040 SFD 1001 8050 8250
has TDE (*1) yes yes yes ? ? ? ? ? ? ? ? ? ? ? ?
has vdrive (*2) yes yes yes ? ? ? ? ? ? ? ? ? ? ? ?
image d64 d64 d64 d64 d71 d81 ? ? ? ? ? ? ? ? ?

(*1) "True Drive Emulation" is available and works with the given drive.

(*2) The images for this drive work in vdrive (ie without TDE)

device traps

Device traps are needed to make the "virtual drive" (access host directory) work. Also for vdrive, ie using disk images without TDE.

Note: the IEEE machines do not use kernal patches for the "virtual drive", instead they implement an actual IEEE device

x64 x64sc x128 xvic xplus4 xpet xcbm2 xcbm5x0 x64dtv xscpu64
yes yes yes yes yes? yes? yes? yes? yes? yes (incomplete)

TODO

  • fix automatically selecting the drive type by looking at the image type
    • do not change the drive type when the selected image works on the respective drive (if 1571 is active and d64 is selected, it should NOT switch to 1541)
  • perhaps have an option to automatically remove cartridges before autostarting

unexpected failures

xplus4 seems a bit unstable (some tests fail randomly)

xpet -drive8type 8250 -truedrive +virtualdev -autostartprgmode 0 -autostart-handle-tde -autostart-warp
xpet -drive8type 8250 -truedrive +virtualdev -autostartprgmode 0 -autostart-handle-tde +autostart-warp
xpet -drive8type 8250 -truedrive -virtualdev -autostartprgmode 0 -autostart-handle-tde -autostart-warp
xpet -drive8type 8250 -truedrive -virtualdev -autostartprgmode 0 -autostart-handle-tde +autostart-warp

xcbm2 -drive8type 8250 -truedrive +virtualdev -autostartprgmode 0 -autostart-handle-tde -autostart-warp
xcbm2 -drive8type 8250 -truedrive +virtualdev -autostartprgmode 0 -autostart-handle-tde +autostart-warp
xcbm2 -drive8type 8250 -truedrive -virtualdev -autostartprgmode 0 -autostart-handle-tde -autostart-warp
xcbm2 -drive8type 8250 -truedrive -virtualdev -autostartprgmode 0 -autostart-handle-tde +autostart-warp

xcbm5x0 -drive8type 8250 -truedrive +virtualdev -autostartprgmode 0 -autostart-handle-tde -autostart-warp
xcbm5x0 -drive8type 8250 -truedrive +virtualdev -autostartprgmode 0 -autostart-handle-tde +autostart-warp
xcbm5x0 -drive8type 8250 -truedrive -virtualdev -autostartprgmode 0 -autostart-handle-tde -autostart-warp
xcbm5x0 -drive8type 8250 -truedrive -virtualdev -autostartprgmode 0 -autostart-handle-tde +autostart-warp