diff options
author | 2017-12-09 02:46:23 +0300 | |
---|---|---|
committer | 2017-12-08 18:46:23 -0500 | |
commit | 00c9b62a2405b6c4120564845694e90da1346d8b (patch) | |
tree | 0f511487c087b53ecc87a424eba5fcd54013e49a /src/lib | |
parent | 13a70d311857594b48f581943a832190b468809a (diff) |
agat7: 840KB floppy HLE; minor fixes -> mark WORKING (#2912)
* agat7: add port_char definitions to allow access from Lua, &c (nw)
* agat7: adapt "apple2: Break up handlers for C000-C07F range" (nw)
* agat7: timer and vblank interrupts (nw)
* agat7: HLE of 840KB floppy controller, read-only (nw)
* agat7: memory expansion wip (nw)
* agat7: update todo list, mark partially WORKING
Diffstat (limited to 'src/lib')
-rw-r--r-- | src/lib/formats/agat840k_hle_dsk.cpp | 59 | ||||
-rw-r--r-- | src/lib/formats/agat840k_hle_dsk.h | 17 |
2 files changed, 76 insertions, 0 deletions
diff --git a/src/lib/formats/agat840k_hle_dsk.cpp b/src/lib/formats/agat840k_hle_dsk.cpp new file mode 100644 index 00000000000..52cdd4668be --- /dev/null +++ b/src/lib/formats/agat840k_hle_dsk.cpp @@ -0,0 +1,59 @@ +// license:BSD-3-Clause +// copyright-holders:Sergey Svishchev +/********************************************************************** + + formats/agat840k_hle_dsk.cpp + + Agat 840KB floppies -- high level simulation (sector-level images) + + http://agatcomp.ru/Reading/docs/es5323.txt + https://github.com/sintech/AGAT/blob/master/docs/agat-840k-format.txt + http://www.torlus.com/floppy/forum/viewtopic.php?f=19&t=1385 + +************************************************************************/ + +#include <assert.h> + +#include "formats/agat840k_hle_dsk.h" + + +static FLOPPY_IDENTIFY(agat840k_hle_dsk_identify) +{ + switch (floppy_image_size(floppy)) + { + case 860160: + *vote = 100; + break; + + case 860164: + case 860288: + *vote = 99; + break; + + default: + *vote = 0; + break; + } + + return FLOPPY_ERROR_SUCCESS; +} + +static FLOPPY_CONSTRUCT(agat840k_hle_dsk_construct) +{ + struct basicdsk_geometry geometry; + + memset(&geometry, 0, sizeof(geometry)); + geometry.heads = 2; + geometry.first_sector_id = 0; + geometry.sector_length = 256; + geometry.tracks = 80; + geometry.sectors = 21; + + return basicdsk_construct(floppy, &geometry); +} + +LEGACY_FLOPPY_OPTIONS_START(agat840k_hle) + LEGACY_FLOPPY_OPTION(agat840k_hle_dsk, "ds9,dsk,raw", "Agat 840K DSK image", + agat840k_hle_dsk_identify, agat840k_hle_dsk_construct, nullptr, nullptr) +LEGACY_FLOPPY_OPTIONS_END + diff --git a/src/lib/formats/agat840k_hle_dsk.h b/src/lib/formats/agat840k_hle_dsk.h new file mode 100644 index 00000000000..dad245e3335 --- /dev/null +++ b/src/lib/formats/agat840k_hle_dsk.h @@ -0,0 +1,17 @@ +// license:BSD-3-Clause +// copyright-holders:Sergey Svishchev +/********************************************************************* + + formats/agat840k_hle_dsk.h + +*********************************************************************/ + +#ifndef AGAT840K_HLE_DSK_H_ +#define AGAT840K_HLE_DSK_H_ + +#include "flopimg.h" +#include "formats/basicdsk.h" + +LEGACY_FLOPPY_OPTIONS_EXTERN(agat840k_hle); + +#endif /* AGAT840K_HLE_DSK_H_ */ |