src/lib/formats/flopimg.c
| r12923 | r12924 | |
| 1161 | 1161 | } |
| 1162 | 1162 | } |
| 1163 | 1163 | |
| 1164 | int floppy_image_format_t::calc_sector_index(int num, int interleave, int skew, int total_sectors, int track_head) |
| 1165 | { |
| 1166 | int i = 0; |
| 1167 | int sec = 0; |
| 1168 | // use interleave |
| 1169 | while (i != num) |
| 1170 | { |
| 1171 | i++; |
| 1172 | i += interleave; |
| 1173 | i %= total_sectors; |
| 1174 | sec++; |
| 1175 | } |
| 1176 | // use skew param |
| 1177 | sec -= track_head * skew; |
| 1178 | sec %= total_sectors; |
| 1179 | if (sec < 0) sec += total_sectors; |
| 1180 | return sec; |
| 1181 | } |
| 1182 | |
| 1164 | 1183 | void floppy_image_format_t::generate_track(const desc_e *desc, UINT8 track, UINT8 head, const desc_s *sect, int sect_count, int track_size, floppy_image *image) |
| 1165 | 1184 | { |
| 1166 | 1185 | UINT8 *buffer = global_alloc_array_clear(UINT8, (track_size+7)/8); |
| r12923 | r12924 | |
| 1172 | 1191 | int index = 0; |
| 1173 | 1192 | int sector_loop_start = 0; |
| 1174 | 1193 | int sector_idx = 0; |
| 1194 | int sector_cnt = 0; |
| 1175 | 1195 | int sector_limit = 0; |
| 1176 | | |
| 1196 | int sector_interleave = 0; |
| 1197 | int sector_skew = 0; |
| 1198 | |
| 1177 | 1199 | while(desc[index].type != END) { |
| 1178 | 1200 | // printf("%d.%d.%d (%d) - %d %d\n", desc[index].type, desc[index].p1, desc[index].p2, index, offset, offset/8); |
| 1179 | 1201 | switch(desc[index].type) { |
| r12923 | r12924 | |
| 1243 | 1265 | fixup_crcs(buffer, crcs); |
| 1244 | 1266 | sector_loop_start = index; |
| 1245 | 1267 | sector_idx = desc[index].p1; |
| 1268 | sector_cnt = sector_idx; |
| 1246 | 1269 | sector_limit = desc[index].p2; |
| 1270 | sector_idx = calc_sector_index(sector_cnt,sector_interleave,sector_skew,sector_limit+1,track*2 + head); |
| 1247 | 1271 | break; |
| 1248 | 1272 | |
| 1249 | 1273 | case SECTOR_LOOP_END: |
| 1250 | 1274 | fixup_crcs(buffer, crcs); |
| 1251 | | if(sector_idx < sector_limit) { |
| 1252 | | sector_idx++; |
| 1275 | if(sector_cnt < sector_limit) { |
| 1276 | sector_cnt++; |
| 1277 | sector_idx = calc_sector_index(sector_cnt,sector_interleave,sector_skew,sector_limit+1,track*2 + head); |
| 1253 | 1278 | index = sector_loop_start; |
| 1254 | 1279 | } |
| 1255 | 1280 | break; |
| 1256 | 1281 | |
| 1282 | case SECTOR_INTERLEAVE_SKEW: |
| 1283 | sector_interleave = desc[index].p1; |
| 1284 | sector_skew = desc[index].p2; |
| 1285 | break; |
| 1286 | |
| 1257 | 1287 | case CRC_AMIGA_START: |
| 1258 | 1288 | case CRC_CCITT_START: |
| 1259 | 1289 | crcs[desc[index].p1].start = offset; |
| r12923 | r12924 | |
| 1622 | 1652 | }; |
| 1623 | 1653 | |
| 1624 | 1654 | |
| 1625 | | const floppy_image_format_t::desc_e floppy_image_format_t::atari_st_fcp_11_0[] = { |
| 1626 | | { MFM, 0x4e, 3 }, { MFM, 0x00, 2 }, |
| 1627 | | { SECTOR_LOOP_START, 0, 0 }, NORMAL_SECTOR( 1), { SECTOR_LOOP_END }, |
| 1628 | | { MFM, 0x4e, 2 }, { MFM, 0x00, 2 }, |
| 1629 | | { SECTOR_LOOP_START, 6, 6 }, NORMAL_SECTOR( 3), { SECTOR_LOOP_END }, |
| 1630 | | { MFM, 0x4e, 2 }, { MFM, 0x00, 2 }, |
| 1631 | | { SECTOR_LOOP_START, 1, 1 }, NORMAL_SECTOR( 5), { SECTOR_LOOP_END }, |
| 1632 | | { MFM, 0x4e, 2 }, { MFM, 0x00, 2 }, |
| 1633 | | { SECTOR_LOOP_START, 7, 7 }, NORMAL_SECTOR( 7), { SECTOR_LOOP_END }, |
| 1634 | | { MFM, 0x4e, 2 }, { MFM, 0x00, 2 }, |
| 1635 | | { SECTOR_LOOP_START, 2, 2 }, NORMAL_SECTOR( 9), { SECTOR_LOOP_END }, |
| 1636 | | { MFM, 0x4e, 2 }, { MFM, 0x00, 2 }, |
| 1637 | | { SECTOR_LOOP_START, 8, 8 }, NORMAL_SECTOR(11), { SECTOR_LOOP_END }, |
| 1638 | | { MFM, 0x4e, 2 }, { MFM, 0x00, 2 }, |
| 1639 | | { SECTOR_LOOP_START, 3, 3 }, NORMAL_SECTOR(13), { SECTOR_LOOP_END }, |
| 1640 | | { MFM, 0x4e, 2 }, { MFM, 0x00, 2 }, |
| 1641 | | { SECTOR_LOOP_START, 9, 9 }, NORMAL_SECTOR(15), { SECTOR_LOOP_END }, |
| 1642 | | { MFM, 0x4e, 2 }, { MFM, 0x00, 2 }, |
| 1643 | | { SECTOR_LOOP_START, 4, 4 }, NORMAL_SECTOR(17), { SECTOR_LOOP_END }, |
| 1644 | | { MFM, 0x4e, 2 }, { MFM, 0x00, 2 }, |
| 1645 | | { SECTOR_LOOP_START, 10, 10 }, NORMAL_SECTOR(19), { SECTOR_LOOP_END }, |
| 1646 | | { MFM, 0x4e, 2 }, { MFM, 0x00, 2 }, |
| 1647 | | { SECTOR_LOOP_START, 5, 5 }, NORMAL_SECTOR(21), { SECTOR_LOOP_END }, |
| 1655 | const floppy_image_format_t::desc_e floppy_image_format_t::atari_st_fcp_11[] = { |
| 1656 | { MFM, 0x4e, 1 }, |
| 1657 | { SECTOR_INTERLEAVE_SKEW, 1, 1}, |
| 1658 | { SECTOR_LOOP_START, 0, 10 }, { MFM, 0x4e, 2 }, { MFM, 0x00, 2 }, NORMAL_SECTOR( 1), { SECTOR_LOOP_END }, |
| 1648 | 1659 | { MFM, 0x4e, 23 }, |
| 1649 | 1660 | { END }, |
| 1650 | 1661 | }; |
| 1651 | 1662 | |
| 1652 | | const floppy_image_format_t::desc_e floppy_image_format_t::atari_st_fcp_11_1[] = { |
| 1653 | | { MFM, 0x4e, 3 }, { MFM, 0x00, 2 }, |
| 1654 | | { SECTOR_LOOP_START, 10, 10 }, NORMAL_SECTOR(19), { SECTOR_LOOP_END }, |
| 1655 | | { MFM, 0x4e, 2 }, { MFM, 0x00, 2 }, |
| 1656 | | { SECTOR_LOOP_START, 5, 5 }, NORMAL_SECTOR(21), { SECTOR_LOOP_END }, |
| 1657 | | { MFM, 0x4e, 2 }, { MFM, 0x00, 2 }, |
| 1658 | | { SECTOR_LOOP_START, 0, 0 }, NORMAL_SECTOR( 1), { SECTOR_LOOP_END }, |
| 1659 | | { MFM, 0x4e, 2 }, { MFM, 0x00, 2 }, |
| 1660 | | { SECTOR_LOOP_START, 6, 6 }, NORMAL_SECTOR( 3), { SECTOR_LOOP_END }, |
| 1661 | | { MFM, 0x4e, 2 }, { MFM, 0x00, 2 }, |
| 1662 | | { SECTOR_LOOP_START, 1, 1 }, NORMAL_SECTOR( 5), { SECTOR_LOOP_END }, |
| 1663 | | { MFM, 0x4e, 2 }, { MFM, 0x00, 2 }, |
| 1664 | | { SECTOR_LOOP_START, 7, 7 }, NORMAL_SECTOR( 7), { SECTOR_LOOP_END }, |
| 1665 | | { MFM, 0x4e, 2 }, { MFM, 0x00, 2 }, |
| 1666 | | { SECTOR_LOOP_START, 2, 2 }, NORMAL_SECTOR( 9), { SECTOR_LOOP_END }, |
| 1667 | | { MFM, 0x4e, 2 }, { MFM, 0x00, 2 }, |
| 1668 | | { SECTOR_LOOP_START, 8, 8 }, NORMAL_SECTOR(11), { SECTOR_LOOP_END }, |
| 1669 | | { MFM, 0x4e, 2 }, { MFM, 0x00, 2 }, |
| 1670 | | { SECTOR_LOOP_START, 3, 3 }, NORMAL_SECTOR(13), { SECTOR_LOOP_END }, |
| 1671 | | { MFM, 0x4e, 2 }, { MFM, 0x00, 2 }, |
| 1672 | | { SECTOR_LOOP_START, 9, 9 }, NORMAL_SECTOR(15), { SECTOR_LOOP_END }, |
| 1673 | | { MFM, 0x4e, 2 }, { MFM, 0x00, 2 }, |
| 1674 | | { SECTOR_LOOP_START, 4, 4 }, NORMAL_SECTOR(17), { SECTOR_LOOP_END }, |
| 1675 | | { MFM, 0x4e, 23 }, |
| 1676 | | { END }, |
| 1677 | | }; |
| 1678 | | |
| 1679 | | const floppy_image_format_t::desc_e floppy_image_format_t::atari_st_fcp_11_2[] = { |
| 1680 | | { MFM, 0x4e, 3 }, { MFM, 0x00, 2 }, |
| 1681 | | { SECTOR_LOOP_START, 9, 9 }, NORMAL_SECTOR(15), { SECTOR_LOOP_END }, |
| 1682 | | { MFM, 0x4e, 2 }, { MFM, 0x00, 2 }, |
| 1683 | | { SECTOR_LOOP_START, 4, 4 }, NORMAL_SECTOR(17), { SECTOR_LOOP_END }, |
| 1684 | | { MFM, 0x4e, 2 }, { MFM, 0x00, 2 }, |
| 1685 | | { SECTOR_LOOP_START, 10, 10 }, NORMAL_SECTOR(19), { SECTOR_LOOP_END }, |
| 1686 | | { MFM, 0x4e, 2 }, { MFM, 0x00, 2 }, |
| 1687 | | { SECTOR_LOOP_START, 5, 5 }, NORMAL_SECTOR(21), { SECTOR_LOOP_END }, |
| 1688 | | { MFM, 0x4e, 2 }, { MFM, 0x00, 2 }, |
| 1689 | | { SECTOR_LOOP_START, 0, 0 }, NORMAL_SECTOR( 1), { SECTOR_LOOP_END }, |
| 1690 | | { MFM, 0x4e, 2 }, { MFM, 0x00, 2 }, |
| 1691 | | { SECTOR_LOOP_START, 6, 6 }, NORMAL_SECTOR( 3), { SECTOR_LOOP_END }, |
| 1692 | | { MFM, 0x4e, 2 }, { MFM, 0x00, 2 }, |
| 1693 | | { SECTOR_LOOP_START, 1, 1 }, NORMAL_SECTOR( 5), { SECTOR_LOOP_END }, |
| 1694 | | { MFM, 0x4e, 2 }, { MFM, 0x00, 2 }, |
| 1695 | | { SECTOR_LOOP_START, 7, 7 }, NORMAL_SECTOR( 7), { SECTOR_LOOP_END }, |
| 1696 | | { MFM, 0x4e, 2 }, { MFM, 0x00, 2 }, |
| 1697 | | { SECTOR_LOOP_START, 2, 2 }, NORMAL_SECTOR( 9), { SECTOR_LOOP_END }, |
| 1698 | | { MFM, 0x4e, 2 }, { MFM, 0x00, 2 }, |
| 1699 | | { SECTOR_LOOP_START, 8, 8 }, NORMAL_SECTOR(11), { SECTOR_LOOP_END }, |
| 1700 | | { MFM, 0x4e, 2 }, { MFM, 0x00, 2 }, |
| 1701 | | { SECTOR_LOOP_START, 3, 3 }, NORMAL_SECTOR(13), { SECTOR_LOOP_END }, |
| 1702 | | { MFM, 0x4e, 23 }, |
| 1703 | | { END }, |
| 1704 | | }; |
| 1705 | | |
| 1706 | | const floppy_image_format_t::desc_e floppy_image_format_t::atari_st_fcp_11_3[] = { |
| 1707 | | { MFM, 0x4e, 3 }, { MFM, 0x00, 2 }, |
| 1708 | | { SECTOR_LOOP_START, 8, 8 }, NORMAL_SECTOR(11), { SECTOR_LOOP_END }, |
| 1709 | | { MFM, 0x4e, 2 }, { MFM, 0x00, 2 }, |
| 1710 | | { SECTOR_LOOP_START, 3, 3 }, NORMAL_SECTOR(13), { SECTOR_LOOP_END }, |
| 1711 | | { MFM, 0x4e, 2 }, { MFM, 0x00, 2 }, |
| 1712 | | { SECTOR_LOOP_START, 9, 9 }, NORMAL_SECTOR(15), { SECTOR_LOOP_END }, |
| 1713 | | { MFM, 0x4e, 2 }, { MFM, 0x00, 2 }, |
| 1714 | | { SECTOR_LOOP_START, 4, 4 }, NORMAL_SECTOR(17), { SECTOR_LOOP_END }, |
| 1715 | | { MFM, 0x4e, 2 }, { MFM, 0x00, 2 }, |
| 1716 | | { SECTOR_LOOP_START, 10, 10 }, NORMAL_SECTOR(19), { SECTOR_LOOP_END }, |
| 1717 | | { MFM, 0x4e, 2 }, { MFM, 0x00, 2 }, |
| 1718 | | { SECTOR_LOOP_START, 5, 5 }, NORMAL_SECTOR(21), { SECTOR_LOOP_END }, |
| 1719 | | { MFM, 0x4e, 2 }, { MFM, 0x00, 2 }, |
| 1720 | | { SECTOR_LOOP_START, 0, 0 }, NORMAL_SECTOR( 1), { SECTOR_LOOP_END }, |
| 1721 | | { MFM, 0x4e, 2 }, { MFM, 0x00, 2 }, |
| 1722 | | { SECTOR_LOOP_START, 6, 6 }, NORMAL_SECTOR( 3), { SECTOR_LOOP_END }, |
| 1723 | | { MFM, 0x4e, 2 }, { MFM, 0x00, 2 }, |
| 1724 | | { SECTOR_LOOP_START, 1, 1 }, NORMAL_SECTOR( 5), { SECTOR_LOOP_END }, |
| 1725 | | { MFM, 0x4e, 2 }, { MFM, 0x00, 2 }, |
| 1726 | | { SECTOR_LOOP_START, 7, 7 }, NORMAL_SECTOR( 7), { SECTOR_LOOP_END }, |
| 1727 | | { MFM, 0x4e, 2 }, { MFM, 0x00, 2 }, |
| 1728 | | { SECTOR_LOOP_START, 2, 2 }, NORMAL_SECTOR( 9), { SECTOR_LOOP_END }, |
| 1729 | | { MFM, 0x4e, 23 }, |
| 1730 | | { END }, |
| 1731 | | }; |
| 1732 | | |
| 1733 | | const floppy_image_format_t::desc_e floppy_image_format_t::atari_st_fcp_11_4[] = { |
| 1734 | | { MFM, 0x4e, 3 }, { MFM, 0x00, 2 }, |
| 1735 | | { SECTOR_LOOP_START, 7, 7 }, NORMAL_SECTOR( 7), { SECTOR_LOOP_END }, |
| 1736 | | { MFM, 0x4e, 2 }, { MFM, 0x00, 2 }, |
| 1737 | | { SECTOR_LOOP_START, 2, 2 }, NORMAL_SECTOR( 9), { SECTOR_LOOP_END }, |
| 1738 | | { MFM, 0x4e, 2 }, { MFM, 0x00, 2 }, |
| 1739 | | { SECTOR_LOOP_START, 8, 8 }, NORMAL_SECTOR(11), { SECTOR_LOOP_END }, |
| 1740 | | { MFM, 0x4e, 2 }, { MFM, 0x00, 2 }, |
| 1741 | | { SECTOR_LOOP_START, 3, 3 }, NORMAL_SECTOR(13), { SECTOR_LOOP_END }, |
| 1742 | | { MFM, 0x4e, 2 }, { MFM, 0x00, 2 }, |
| 1743 | | { SECTOR_LOOP_START, 9, 9 }, NORMAL_SECTOR(15), { SECTOR_LOOP_END }, |
| 1744 | | { MFM, 0x4e, 2 }, { MFM, 0x00, 2 }, |
| 1745 | | { SECTOR_LOOP_START, 4, 4 }, NORMAL_SECTOR(17), { SECTOR_LOOP_END }, |
| 1746 | | { MFM, 0x4e, 2 }, { MFM, 0x00, 2 }, |
| 1747 | | { SECTOR_LOOP_START, 10, 10 }, NORMAL_SECTOR(19), { SECTOR_LOOP_END }, |
| 1748 | | { MFM, 0x4e, 2 }, { MFM, 0x00, 2 }, |
| 1749 | | { SECTOR_LOOP_START, 5, 5 }, NORMAL_SECTOR(21), { SECTOR_LOOP_END }, |
| 1750 | | { MFM, 0x4e, 2 }, { MFM, 0x00, 2 }, |
| 1751 | | { SECTOR_LOOP_START, 0, 0 }, NORMAL_SECTOR( 1), { SECTOR_LOOP_END }, |
| 1752 | | { MFM, 0x4e, 2 }, { MFM, 0x00, 2 }, |
| 1753 | | { SECTOR_LOOP_START, 6, 6 }, NORMAL_SECTOR( 3), { SECTOR_LOOP_END }, |
| 1754 | | { MFM, 0x4e, 2 }, { MFM, 0x00, 2 }, |
| 1755 | | { SECTOR_LOOP_START, 1, 1 }, NORMAL_SECTOR( 5), { SECTOR_LOOP_END }, |
| 1756 | | { MFM, 0x4e, 23 }, |
| 1757 | | { END }, |
| 1758 | | }; |
| 1759 | | |
| 1760 | | const floppy_image_format_t::desc_e floppy_image_format_t::atari_st_fcp_11_5[] = { |
| 1761 | | { MFM, 0x4e, 3 }, { MFM, 0x00, 2 }, |
| 1762 | | { SECTOR_LOOP_START, 6, 6 }, NORMAL_SECTOR( 3), { SECTOR_LOOP_END }, |
| 1763 | | { MFM, 0x4e, 2 }, { MFM, 0x00, 2 }, |
| 1764 | | { SECTOR_LOOP_START, 1, 1 }, NORMAL_SECTOR( 5), { SECTOR_LOOP_END }, |
| 1765 | | { MFM, 0x4e, 2 }, { MFM, 0x00, 2 }, |
| 1766 | | { SECTOR_LOOP_START, 7, 7 }, NORMAL_SECTOR( 7), { SECTOR_LOOP_END }, |
| 1767 | | { MFM, 0x4e, 2 }, { MFM, 0x00, 2 }, |
| 1768 | | { SECTOR_LOOP_START, 2, 2 }, NORMAL_SECTOR( 9), { SECTOR_LOOP_END }, |
| 1769 | | { MFM, 0x4e, 2 }, { MFM, 0x00, 2 }, |
| 1770 | | { SECTOR_LOOP_START, 8, 8 }, NORMAL_SECTOR(11), { SECTOR_LOOP_END }, |
| 1771 | | { MFM, 0x4e, 2 }, { MFM, 0x00, 2 }, |
| 1772 | | { SECTOR_LOOP_START, 3, 3 }, NORMAL_SECTOR(13), { SECTOR_LOOP_END }, |
| 1773 | | { MFM, 0x4e, 2 }, { MFM, 0x00, 2 }, |
| 1774 | | { SECTOR_LOOP_START, 9, 9 }, NORMAL_SECTOR(15), { SECTOR_LOOP_END }, |
| 1775 | | { MFM, 0x4e, 2 }, { MFM, 0x00, 2 }, |
| 1776 | | { SECTOR_LOOP_START, 4, 4 }, NORMAL_SECTOR(17), { SECTOR_LOOP_END }, |
| 1777 | | { MFM, 0x4e, 2 }, { MFM, 0x00, 2 }, |
| 1778 | | { SECTOR_LOOP_START, 10, 10 }, NORMAL_SECTOR(19), { SECTOR_LOOP_END }, |
| 1779 | | { MFM, 0x4e, 2 }, { MFM, 0x00, 2 }, |
| 1780 | | { SECTOR_LOOP_START, 5, 5 }, NORMAL_SECTOR(21), { SECTOR_LOOP_END }, |
| 1781 | | { MFM, 0x4e, 2 }, { MFM, 0x00, 2 }, |
| 1782 | | { SECTOR_LOOP_START, 0, 0 }, NORMAL_SECTOR( 1), { SECTOR_LOOP_END }, |
| 1783 | | { MFM, 0x4e, 23 }, |
| 1784 | | { END }, |
| 1785 | | }; |
| 1786 | | |
| 1787 | | const floppy_image_format_t::desc_e floppy_image_format_t::atari_st_fcp_11_6[] = { |
| 1788 | | { MFM, 0x4e, 3 }, { MFM, 0x00, 2 }, |
| 1789 | | { SECTOR_LOOP_START, 5, 5 }, NORMAL_SECTOR(21), { SECTOR_LOOP_END }, |
| 1790 | | { MFM, 0x4e, 2 }, { MFM, 0x00, 2 }, |
| 1791 | | { SECTOR_LOOP_START, 0, 0 }, NORMAL_SECTOR( 1), { SECTOR_LOOP_END }, |
| 1792 | | { MFM, 0x4e, 2 }, { MFM, 0x00, 2 }, |
| 1793 | | { SECTOR_LOOP_START, 6, 6 }, NORMAL_SECTOR( 3), { SECTOR_LOOP_END }, |
| 1794 | | { MFM, 0x4e, 2 }, { MFM, 0x00, 2 }, |
| 1795 | | { SECTOR_LOOP_START, 1, 1 }, NORMAL_SECTOR( 5), { SECTOR_LOOP_END }, |
| 1796 | | { MFM, 0x4e, 2 }, { MFM, 0x00, 2 }, |
| 1797 | | { SECTOR_LOOP_START, 7, 7 }, NORMAL_SECTOR( 7), { SECTOR_LOOP_END }, |
| 1798 | | { MFM, 0x4e, 2 }, { MFM, 0x00, 2 }, |
| 1799 | | { SECTOR_LOOP_START, 2, 2 }, NORMAL_SECTOR( 9), { SECTOR_LOOP_END }, |
| 1800 | | { MFM, 0x4e, 2 }, { MFM, 0x00, 2 }, |
| 1801 | | { SECTOR_LOOP_START, 8, 8 }, NORMAL_SECTOR(11), { SECTOR_LOOP_END }, |
| 1802 | | { MFM, 0x4e, 2 }, { MFM, 0x00, 2 }, |
| 1803 | | { SECTOR_LOOP_START, 3, 3 }, NORMAL_SECTOR(13), { SECTOR_LOOP_END }, |
| 1804 | | { MFM, 0x4e, 2 }, { MFM, 0x00, 2 }, |
| 1805 | | { SECTOR_LOOP_START, 9, 9 }, NORMAL_SECTOR(15), { SECTOR_LOOP_END }, |
| 1806 | | { MFM, 0x4e, 2 }, { MFM, 0x00, 2 }, |
| 1807 | | { SECTOR_LOOP_START, 4, 4 }, NORMAL_SECTOR(17), { SECTOR_LOOP_END }, |
| 1808 | | { MFM, 0x4e, 2 }, { MFM, 0x00, 2 }, |
| 1809 | | { SECTOR_LOOP_START, 10, 10 }, NORMAL_SECTOR(19), { SECTOR_LOOP_END }, |
| 1810 | | { MFM, 0x4e, 23 }, |
| 1811 | | { END }, |
| 1812 | | }; |
| 1813 | | |
| 1814 | | const floppy_image_format_t::desc_e floppy_image_format_t::atari_st_fcp_11_7[] = { |
| 1815 | | { MFM, 0x4e, 3 }, { MFM, 0x00, 2 }, |
| 1816 | | { SECTOR_LOOP_START, 4, 4 }, NORMAL_SECTOR(17), { SECTOR_LOOP_END }, |
| 1817 | | { MFM, 0x4e, 2 }, { MFM, 0x00, 2 }, |
| 1818 | | { SECTOR_LOOP_START, 10, 10 }, NORMAL_SECTOR(19), { SECTOR_LOOP_END }, |
| 1819 | | { MFM, 0x4e, 2 }, { MFM, 0x00, 2 }, |
| 1820 | | { SECTOR_LOOP_START, 5, 5 }, NORMAL_SECTOR(21), { SECTOR_LOOP_END }, |
| 1821 | | { MFM, 0x4e, 2 }, { MFM, 0x00, 2 }, |
| 1822 | | { SECTOR_LOOP_START, 0, 0 }, NORMAL_SECTOR( 1), { SECTOR_LOOP_END }, |
| 1823 | | { MFM, 0x4e, 2 }, { MFM, 0x00, 2 }, |
| 1824 | | { SECTOR_LOOP_START, 6, 6 }, NORMAL_SECTOR( 3), { SECTOR_LOOP_END }, |
| 1825 | | { MFM, 0x4e, 2 }, { MFM, 0x00, 2 }, |
| 1826 | | { SECTOR_LOOP_START, 1, 1 }, NORMAL_SECTOR( 5), { SECTOR_LOOP_END }, |
| 1827 | | { MFM, 0x4e, 2 }, { MFM, 0x00, 2 }, |
| 1828 | | { SECTOR_LOOP_START, 7, 7 }, NORMAL_SECTOR( 7), { SECTOR_LOOP_END }, |
| 1829 | | { MFM, 0x4e, 2 }, { MFM, 0x00, 2 }, |
| 1830 | | { SECTOR_LOOP_START, 2, 2 }, NORMAL_SECTOR( 9), { SECTOR_LOOP_END }, |
| 1831 | | { MFM, 0x4e, 2 }, { MFM, 0x00, 2 }, |
| 1832 | | { SECTOR_LOOP_START, 8, 8 }, NORMAL_SECTOR(11), { SECTOR_LOOP_END }, |
| 1833 | | { MFM, 0x4e, 2 }, { MFM, 0x00, 2 }, |
| 1834 | | { SECTOR_LOOP_START, 3, 3 }, NORMAL_SECTOR(13), { SECTOR_LOOP_END }, |
| 1835 | | { MFM, 0x4e, 2 }, { MFM, 0x00, 2 }, |
| 1836 | | { SECTOR_LOOP_START, 9, 9 }, NORMAL_SECTOR(15), { SECTOR_LOOP_END }, |
| 1837 | | { MFM, 0x4e, 23 }, |
| 1838 | | { END }, |
| 1839 | | }; |
| 1840 | | |
| 1841 | | const floppy_image_format_t::desc_e floppy_image_format_t::atari_st_fcp_11_8[] = { |
| 1842 | | { MFM, 0x4e, 3 }, { MFM, 0x00, 2 }, |
| 1843 | | { SECTOR_LOOP_START, 3, 3 }, NORMAL_SECTOR(13), { SECTOR_LOOP_END }, |
| 1844 | | { MFM, 0x4e, 2 }, { MFM, 0x00, 2 }, |
| 1845 | | { SECTOR_LOOP_START, 9, 9 }, NORMAL_SECTOR(15), { SECTOR_LOOP_END }, |
| 1846 | | { MFM, 0x4e, 2 }, { MFM, 0x00, 2 }, |
| 1847 | | { SECTOR_LOOP_START, 4, 4 }, NORMAL_SECTOR(17), { SECTOR_LOOP_END }, |
| 1848 | | { MFM, 0x4e, 2 }, { MFM, 0x00, 2 }, |
| 1849 | | { SECTOR_LOOP_START, 10, 10 }, NORMAL_SECTOR(19), { SECTOR_LOOP_END }, |
| 1850 | | { MFM, 0x4e, 2 }, { MFM, 0x00, 2 }, |
| 1851 | | { SECTOR_LOOP_START, 5, 5 }, NORMAL_SECTOR(21), { SECTOR_LOOP_END }, |
| 1852 | | { MFM, 0x4e, 2 }, { MFM, 0x00, 2 }, |
| 1853 | | { SECTOR_LOOP_START, 0, 0 }, NORMAL_SECTOR( 1), { SECTOR_LOOP_END }, |
| 1854 | | { MFM, 0x4e, 2 }, { MFM, 0x00, 2 }, |
| 1855 | | { SECTOR_LOOP_START, 6, 6 }, NORMAL_SECTOR( 3), { SECTOR_LOOP_END }, |
| 1856 | | { MFM, 0x4e, 2 }, { MFM, 0x00, 2 }, |
| 1857 | | { SECTOR_LOOP_START, 1, 1 }, NORMAL_SECTOR( 5), { SECTOR_LOOP_END }, |
| 1858 | | { MFM, 0x4e, 2 }, { MFM, 0x00, 2 }, |
| 1859 | | { SECTOR_LOOP_START, 7, 7 }, NORMAL_SECTOR( 7), { SECTOR_LOOP_END }, |
| 1860 | | { MFM, 0x4e, 2 }, { MFM, 0x00, 2 }, |
| 1861 | | { SECTOR_LOOP_START, 2, 2 }, NORMAL_SECTOR( 9), { SECTOR_LOOP_END }, |
| 1862 | | { MFM, 0x4e, 2 }, { MFM, 0x00, 2 }, |
| 1863 | | { SECTOR_LOOP_START, 8, 8 }, NORMAL_SECTOR(11), { SECTOR_LOOP_END }, |
| 1864 | | { MFM, 0x4e, 23 }, |
| 1865 | | { END }, |
| 1866 | | }; |
| 1867 | | |
| 1868 | | const floppy_image_format_t::desc_e floppy_image_format_t::atari_st_fcp_11_9[] = { |
| 1869 | | { MFM, 0x4e, 3 }, { MFM, 0x00, 2 }, |
| 1870 | | { SECTOR_LOOP_START, 2, 2 }, NORMAL_SECTOR( 9), { SECTOR_LOOP_END }, |
| 1871 | | { MFM, 0x4e, 2 }, { MFM, 0x00, 2 }, |
| 1872 | | { SECTOR_LOOP_START, 8, 8 }, NORMAL_SECTOR(11), { SECTOR_LOOP_END }, |
| 1873 | | { MFM, 0x4e, 2 }, { MFM, 0x00, 2 }, |
| 1874 | | { SECTOR_LOOP_START, 3, 3 }, NORMAL_SECTOR(13), { SECTOR_LOOP_END }, |
| 1875 | | { MFM, 0x4e, 2 }, { MFM, 0x00, 2 }, |
| 1876 | | { SECTOR_LOOP_START, 9, 9 }, NORMAL_SECTOR(15), { SECTOR_LOOP_END }, |
| 1877 | | { MFM, 0x4e, 2 }, { MFM, 0x00, 2 }, |
| 1878 | | { SECTOR_LOOP_START, 4, 4 }, NORMAL_SECTOR(17), { SECTOR_LOOP_END }, |
| 1879 | | { MFM, 0x4e, 2 }, { MFM, 0x00, 2 }, |
| 1880 | | { SECTOR_LOOP_START, 10, 10 }, NORMAL_SECTOR(19), { SECTOR_LOOP_END }, |
| 1881 | | { MFM, 0x4e, 2 }, { MFM, 0x00, 2 }, |
| 1882 | | { SECTOR_LOOP_START, 5, 5 }, NORMAL_SECTOR(21), { SECTOR_LOOP_END }, |
| 1883 | | { MFM, 0x4e, 2 }, { MFM, 0x00, 2 }, |
| 1884 | | { SECTOR_LOOP_START, 0, 0 }, NORMAL_SECTOR( 1), { SECTOR_LOOP_END }, |
| 1885 | | { MFM, 0x4e, 2 }, { MFM, 0x00, 2 }, |
| 1886 | | { SECTOR_LOOP_START, 6, 6 }, NORMAL_SECTOR( 3), { SECTOR_LOOP_END }, |
| 1887 | | { MFM, 0x4e, 2 }, { MFM, 0x00, 2 }, |
| 1888 | | { SECTOR_LOOP_START, 1, 1 }, NORMAL_SECTOR( 5), { SECTOR_LOOP_END }, |
| 1889 | | { MFM, 0x4e, 2 }, { MFM, 0x00, 2 }, |
| 1890 | | { SECTOR_LOOP_START, 7, 7 }, NORMAL_SECTOR( 7), { SECTOR_LOOP_END }, |
| 1891 | | { MFM, 0x4e, 23 }, |
| 1892 | | { END }, |
| 1893 | | }; |
| 1894 | | |
| 1895 | | const floppy_image_format_t::desc_e floppy_image_format_t::atari_st_fcp_11_10[] = { |
| 1896 | | { MFM, 0x4e, 3 }, { MFM, 0x00, 2 }, |
| 1897 | | { SECTOR_LOOP_START, 1, 1 }, NORMAL_SECTOR( 5), { SECTOR_LOOP_END }, |
| 1898 | | { MFM, 0x4e, 2 }, { MFM, 0x00, 2 }, |
| 1899 | | { SECTOR_LOOP_START, 7, 7 }, NORMAL_SECTOR( 7), { SECTOR_LOOP_END }, |
| 1900 | | { MFM, 0x4e, 2 }, { MFM, 0x00, 2 }, |
| 1901 | | { SECTOR_LOOP_START, 2, 2 }, NORMAL_SECTOR( 9), { SECTOR_LOOP_END }, |
| 1902 | | { MFM, 0x4e, 2 }, { MFM, 0x00, 2 }, |
| 1903 | | { SECTOR_LOOP_START, 8, 8 }, NORMAL_SECTOR(11), { SECTOR_LOOP_END }, |
| 1904 | | { MFM, 0x4e, 2 }, { MFM, 0x00, 2 }, |
| 1905 | | { SECTOR_LOOP_START, 3, 3 }, NORMAL_SECTOR(13), { SECTOR_LOOP_END }, |
| 1906 | | { MFM, 0x4e, 2 }, { MFM, 0x00, 2 }, |
| 1907 | | { SECTOR_LOOP_START, 9, 9 }, NORMAL_SECTOR(15), { SECTOR_LOOP_END }, |
| 1908 | | { MFM, 0x4e, 2 }, { MFM, 0x00, 2 }, |
| 1909 | | { SECTOR_LOOP_START, 4, 4 }, NORMAL_SECTOR(17), { SECTOR_LOOP_END }, |
| 1910 | | { MFM, 0x4e, 2 }, { MFM, 0x00, 2 }, |
| 1911 | | { SECTOR_LOOP_START, 10, 10 }, NORMAL_SECTOR(19), { SECTOR_LOOP_END }, |
| 1912 | | { MFM, 0x4e, 2 }, { MFM, 0x00, 2 }, |
| 1913 | | { SECTOR_LOOP_START, 5, 5 }, NORMAL_SECTOR(21), { SECTOR_LOOP_END }, |
| 1914 | | { MFM, 0x4e, 2 }, { MFM, 0x00, 2 }, |
| 1915 | | { SECTOR_LOOP_START, 0, 0 }, NORMAL_SECTOR( 1), { SECTOR_LOOP_END }, |
| 1916 | | { MFM, 0x4e, 2 }, { MFM, 0x00, 2 }, |
| 1917 | | { SECTOR_LOOP_START, 6, 6 }, NORMAL_SECTOR( 3), { SECTOR_LOOP_END }, |
| 1918 | | { MFM, 0x4e, 23 }, |
| 1919 | | { END }, |
| 1920 | | }; |
| 1921 | | |
| 1922 | | |
| 1923 | | const floppy_image_format_t::desc_e *const floppy_image_format_t::atari_st_fcp_11[11] = { |
| 1924 | | atari_st_fcp_11_0, |
| 1925 | | atari_st_fcp_11_1, |
| 1926 | | atari_st_fcp_11_2, |
| 1927 | | atari_st_fcp_11_3, |
| 1928 | | atari_st_fcp_11_4, |
| 1929 | | atari_st_fcp_11_5, |
| 1930 | | atari_st_fcp_11_6, |
| 1931 | | atari_st_fcp_11_7, |
| 1932 | | atari_st_fcp_11_8, |
| 1933 | | atari_st_fcp_11_9, |
| 1934 | | atari_st_fcp_11_10, |
| 1935 | | }; |
| 1936 | | |
| 1937 | 1663 | #undef SECTOR_42_HEADER |
| 1938 | 1664 | #undef NORMAL_SECTOR |
| 1939 | 1665 | |
| r12923 | r12924 | |
| 1945 | 1671 | case 10: |
| 1946 | 1672 | return atari_st_fcp_10[(track*head_count + head) % 10]; |
| 1947 | 1673 | case 11: |
| 1948 | | return atari_st_fcp_11[(track*head_count + head) % 11]; |
| 1674 | return atari_st_fcp_11; |
| 1949 | 1675 | } |
| 1950 | 1676 | return 0; |
| 1951 | 1677 | } |