diff --git a/Machines/Amiga/Amiga.cpp b/Machines/Amiga/Amiga.cpp
index a8b1aeb09..de593f76b 100644
--- a/Machines/Amiga/Amiga.cpp
+++ b/Machines/Amiga/Amiga.cpp
@@ -39,6 +39,7 @@ namespace Amiga {
 class ConcreteMachine:
 	public Activity::Source,
 	public CPU::MC68000::BusHandler,
+	public MachineTypes::MediaTarget,
 	public MachineTypes::ScanProducer,
 	public MachineTypes::TimedMachine,
 	public Machine {
@@ -47,8 +48,6 @@ class ConcreteMachine:
 			mc68000_(*this),
 			chipset_(memory_, PALClockRate)
 		{
-			(void)target;
-
 			// Temporary: use a hard-coded Kickstart selection.
 			constexpr ROM::Name rom_name = ROM::Name::AmigaA500Kickstart13;
 			ROM::Request request(rom_name);
@@ -58,7 +57,18 @@ class ConcreteMachine:
 			}
 			Memory::PackBigEndian16(roms.find(rom_name)->second, memory_.kickstart.data());
 
+			// For now, also hard-code assumption of PAL.
+			// (Assumption is both here and in the video timing of the Chipset).
 			set_clock_rate(PALClockRate);
+
+			// Insert supplied media.
+			insert_media(target.media);
+		}
+
+		// MARK: - MediaTarget.
+
+		bool insert_media(const Analyser::Static::Media &media) final {
+			return chipset_.insert(media.disks);
 		}
 
 		// MARK: - MC68000::BusHandler.
diff --git a/Machines/Amiga/Chipset.cpp b/Machines/Amiga/Chipset.cpp
index 1853ead29..20a9e7828 100644
--- a/Machines/Amiga/Chipset.cpp
+++ b/Machines/Amiga/Chipset.cpp
@@ -1125,3 +1125,21 @@ uint8_t Chipset::DiskController::get_rdy_trk0_wpro_chng() {
 		(drive.get_is_read_only() ? 0x08 : 0x00);
 	return 0xff & ~active_high;
 }
+
+bool Chipset::DiskController::insert(const std::shared_ptr<Storage::Disk::Disk> &disk, size_t drive) {
+	if(drive >= 4) return false;
+	get_drive(drive).set_disk(disk);
+	return true;
+}
+
+bool Chipset::insert(const std::vector<std::shared_ptr<Storage::Disk::Disk>> &disks) {
+	bool inserted = false;
+
+	size_t target = 0;
+	for(const auto &disk: disks) {
+		inserted |= disk_controller_.insert(disk, target);
+		++target;
+	}
+
+	return inserted;
+}
diff --git a/Machines/Amiga/Chipset.hpp b/Machines/Amiga/Chipset.hpp
index 88e589e3e..a8bbc9eb1 100644
--- a/Machines/Amiga/Chipset.hpp
+++ b/Machines/Amiga/Chipset.hpp
@@ -91,6 +91,10 @@ class Chipset: private ClockingHint::Observer {
 			return interrupt_level_;
 		}
 
+		/// Inserts the disks provided.
+		/// @returns @c true if anything was inserted; @c false otherwise.
+		bool insert(const std::vector<std::shared_ptr<Storage::Disk::Disk>> &disks);
+
 		// The standard CRT set.
 		void set_scan_target(Outputs::Display::ScanTarget *scan_target);
 		Outputs::Display::ScanStatus get_scaled_scan_status() const;
@@ -230,6 +234,8 @@ class Chipset: private ClockingHint::Observer {
 					Storage::Disk::Controller::run_for(duration);
 				}
 
+				bool insert(const std::shared_ptr<Storage::Disk::Disk> &disk, size_t drive);
+
 			private:
 				void process_input_bit(int value) final;
 				void process_index_hole() final;