// Copyright (c) 2012 - 2026 kio@little-bat.de
// BSD-2-Clause license
// https://opensource.org/licenses/BSD-2-Clause

#pragma once
#include "UlaZxsp.h"
#include "zxsp_types.h"


namespace zxsp
{

class Ula128k : public UlaZxsp
{
protected:
	uint8 port_7ffd; // evtl. only bit 0x08 is valid

public:
	explicit Ula128k(Machine*);

	virtual void setPort7ffd(uint8);

protected:
	Ula128k(Machine*, isa_id, cstr o_addr, cstr i_addr);
	~Ula128k() override = default;

	bool  mmu_is_locked() const volatile noexcept { return port_7ffd & 0x20; }
	void  output(Time t, int32 cc, uint16 addr, uint8 byte) override;
	void  powerOn(/*t=0*/ int32 cc) override;
	void  reset(Time t, int32 cc) override;
	void  markVideoRam();
	int32 addWaitCycles(int32 cc, uint16 addr) const volatile override;
};

} // namespace zxsp
