Compare commits
8 commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
0351c481c0 | ||
|
|
ca7144b454 | ||
|
|
e829d827da | ||
|
|
c6310b803b | ||
|
|
3946e7f7a6 | ||
|
|
18ecd15be9 | ||
|
|
ae4245018d | ||
|
|
cbbac4e3c2 |
9 changed files with 87 additions and 17 deletions
4
.github/workflows/ci.yml
vendored
4
.github/workflows/ci.yml
vendored
|
|
@ -5,7 +5,7 @@ jobs:
|
|||
runs-on: ubuntu-22.04
|
||||
steps:
|
||||
|
||||
- uses: actions/checkout@v3
|
||||
- uses: actions/checkout@v4
|
||||
|
||||
- name: Set environment variables
|
||||
id: vars
|
||||
|
|
@ -43,7 +43,7 @@ jobs:
|
|||
mv flashfloppy-$VER.zip _cidist/
|
||||
|
||||
- name: Upload artifacts
|
||||
uses: actions/upload-artifact@v3
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: FlashFloppy.CI.${{ steps.vars.outputs.sha_short }}
|
||||
path: _cidist
|
||||
|
|
|
|||
2
.github/workflows/release.yml
vendored
2
.github/workflows/release.yml
vendored
|
|
@ -10,7 +10,7 @@ jobs:
|
|||
runs-on: ubuntu-22.04
|
||||
steps:
|
||||
|
||||
- uses: actions/checkout@v3
|
||||
- uses: actions/checkout@v4
|
||||
|
||||
- name: Set environment variables
|
||||
id: vars
|
||||
|
|
|
|||
|
|
@ -3,6 +3,11 @@
|
|||
** Keir Fraser <keir.xen@gmail.com>
|
||||
************************************
|
||||
|
||||
** v3.42 - 11 January 2024
|
||||
- HFEv3: Various read/write improvements
|
||||
- WDATA: Merge short write pulses, and apply de-jitter/precomp
|
||||
- IMG, EDSK: Stream large sector writes to flash
|
||||
|
||||
** v3.41 - 14 July 2023
|
||||
- AT32F415: Fix timer handling since clock speed increase (v3.39).
|
||||
- LCD: Faster power-on initialisation. Don't wait for display to clear.
|
||||
|
|
|
|||
|
|
@ -13,11 +13,11 @@
|
|||
# jc: Specified by jumper JC (open: shugart, closed: ibmpc)
|
||||
# shugart: P2=DSKCHG, P34=RDY (Amiga, Atari ST, many others)
|
||||
# ibmpc: P2=unused, P34=DSKCHG (IBM PC interface)
|
||||
# ibmpc-hdout: P2=HD_OUT, P34=DSKCHG (not generally needed: prefer 'ibmpc')
|
||||
# ibmpc-hdout: P2=HD_OUT, P34=DSKCHG (not generally needed: prefer ibmpc)
|
||||
# jppc: P2=unused, P34=RDY (Japanese PC standard)
|
||||
# jppc-hdout: P2=HD_OUT, P34=RDY (Japanese PC alternate: prefer 'jppc')
|
||||
# akai-s950: Legacy alias of 'jppc-hdout', previously used for Akai S950
|
||||
# amiga: P2=DSKCHG, P34=DRIVE_ID (not generally needed: prefer 'shugart')
|
||||
# jppc-hdout: P2=HD_OUT, P34=RDY (Japanese PC alternate: prefer jppc)
|
||||
# akai-s950: Legacy alias of jppc-hdout, previously used for Akai S950
|
||||
# amiga: P2=DSKCHG, P34=DRIVE_ID (not generally needed: prefer shugart)
|
||||
interface = jc
|
||||
|
||||
# Host platform: Improves image-format detection for generic types such as IMG
|
||||
|
|
@ -172,9 +172,9 @@ twobutton-action = zero
|
|||
# Input sensor type at the rotary-encoder inputs (pins PC10 and PC11):
|
||||
# [full | half | quarter]:
|
||||
# Rotary encoder, identified by fraction of a Gray-code cycle performed
|
||||
# per detent/click. If default value ('full') requires multiple
|
||||
# clicks/detents to move position then change to 'half' (if 2 clicks
|
||||
# per move) or 'quarter' (if 4 clicks).
|
||||
# per detent/click. If default value (full) requires multiple
|
||||
# clicks/detents to move position then change to half (if 2 clicks
|
||||
# per move) or quarter (if 4 clicks).
|
||||
# [trackball]:
|
||||
# Blackberry-style trackball (eg. using Hall-effect sensors).
|
||||
# [buttons]:
|
||||
|
|
@ -220,15 +220,15 @@ oled-font = 6x13
|
|||
oled-contrast = 143
|
||||
|
||||
# Text height and arrangement on LCD/OLED and on OSD, respectively.
|
||||
# 'default', or a comma-separated list (one entry per LCD/OLED row, top down).
|
||||
# Each list item is a digit plus optional height specifier: <content-row>[d]
|
||||
# content-row: '0-3' = specified content row, '7' = blank
|
||||
# Comma-separated list, one entry per display row, top down.
|
||||
# Each list item is a digit plus optional height specifier: [0-7][d]
|
||||
# content-row: 0-3 = specified content, 7 = blank
|
||||
# 0: Current image name
|
||||
# 1: Status
|
||||
# 2: Image/Volume info
|
||||
# 3: Current subfolder name
|
||||
# height specifier: 'd' = double height (32px, OLED only; ignored for LCD)
|
||||
# 'default' depends on display, eg.: oled-128x32='0,1' ; oled-128x64='3,0d,1'
|
||||
# height-specifier: d = double height (32px, OLED only; ignored for LCD)
|
||||
# Default depends on display, eg.: oled-128x32 -> 0,1 ; oled-128x64 -> 3,0d,1
|
||||
# Values: [0-7][d] | default
|
||||
display-order = default
|
||||
osd-display-order = default
|
||||
|
|
|
|||
17
examples/Host/GRiD/IMG.CFG
Normal file
17
examples/Host/GRiD/IMG.CFG
Normal file
|
|
@ -0,0 +1,17 @@
|
|||
## IMG.CFG for machines produced by GRiD Systems Corp.
|
||||
|
||||
# NOTE: The tags match on filesize alone. If you wish to define an explicit
|
||||
# tagname match, you can for example add 'flex' to the square-bracketed tags
|
||||
# to limit matches to filenames of the form *.flex.{img,ima,dsk}
|
||||
|
||||
# 360k 40-cylinder DS/DD format used by GRiD Compass
|
||||
[::368640]
|
||||
cyls = 40
|
||||
heads = 2
|
||||
bps = 512
|
||||
secs = 9
|
||||
mode = mfm
|
||||
interleave = 5
|
||||
id = 1
|
||||
tracks = 0-39.1
|
||||
id = 10
|
||||
45
examples/Host/Sinclair_ZX_Spectrum/Sandy_FDD2/IMG.CFG
Normal file
45
examples/Host/Sinclair_ZX_Spectrum/Sandy_FDD2/IMG.CFG
Normal file
|
|
@ -0,0 +1,45 @@
|
|||
## IMG.CFG for the Sandy FDD2 interface.
|
||||
|
||||
# Sandy FDD2 is a clone of the FDC-1 by Technology Research Ltd.
|
||||
# Using a 1771 controller chip, it supports single-density (FM) recording
|
||||
# only, unlike the later Beta Disk interfaces.
|
||||
|
||||
# *.ss40.img: Single-sided 40 cylinders.
|
||||
[ss40::102400]
|
||||
cyls = 40
|
||||
heads = 1
|
||||
secs = 10
|
||||
bps = 256
|
||||
mode = fm
|
||||
interleave = 2
|
||||
|
||||
# *.ss80.img: Single-sided 80 cylinders.
|
||||
[ss80::204800]
|
||||
cyls = 80
|
||||
heads = 1
|
||||
secs = 10
|
||||
bps = 256
|
||||
mode = fm
|
||||
interleave = 2
|
||||
|
||||
# *.ds40.img: Double-sided 40 cylinders.
|
||||
[ds40::204800]
|
||||
cyls = 40
|
||||
heads = 2
|
||||
secs = 10
|
||||
bps = 256
|
||||
mode = fm
|
||||
interleave = 2
|
||||
tracks = 0-39.1
|
||||
h = 0
|
||||
|
||||
# *.ds80.img: Double-sided 80 cylinders.
|
||||
[ds80::409600]
|
||||
cyls = 80
|
||||
heads = 2
|
||||
secs = 10
|
||||
bps = 256
|
||||
mode = fm
|
||||
interleave = 2
|
||||
tracks = 0-79.1
|
||||
h = 0
|
||||
|
|
@ -674,7 +674,7 @@ static void IRQ_wdata_dma(void)
|
|||
bc_dat = image->write_bc_window;
|
||||
for (cons = dma_wr->cons; cons != prod; cons = (cons+1) & buf_mask) {
|
||||
next = dma_wr->buf[cons];
|
||||
curr = (uint16_t)(next - prev) - (cell >> 1);
|
||||
curr = (int16_t)(next - prev) - (cell >> 1);
|
||||
if (unlikely(curr < 0)) {
|
||||
/* Runt flux, much shorter than bitcell clock. Merge it forward. */
|
||||
continue;
|
||||
|
|
@ -686,6 +686,8 @@ static void IRQ_wdata_dma(void)
|
|||
if (!(bc_prod&31))
|
||||
bc_buf[((bc_prod-1) / 32) & bc_bufmask] = htobe32(bc_dat);
|
||||
}
|
||||
curr += cell >> 1; /* remove the 1/2-cell bias */
|
||||
prev -= curr >> 2; /* de-jitter/precomp: carry 1/4 of phase error */
|
||||
bc_dat = (bc_dat << 1) | 1;
|
||||
bc_prod++;
|
||||
switch (sync) {
|
||||
|
|
|
|||
|
|
@ -41,6 +41,7 @@ static bool_t adf_open(struct image *im)
|
|||
im->tracklen_bc = DD_TRACKLEN_BC;
|
||||
im->ticks_per_cell = ((sampleclk_stk(im->stk_per_rev) * 16u)
|
||||
/ im->tracklen_bc);
|
||||
im->write_bc_ticks = im->ticks_per_cell / 16u;
|
||||
|
||||
im->nr_cyls = f_size(&im->fp) / (2 * 11 * 512);
|
||||
|
||||
|
|
|
|||
|
|
@ -33,7 +33,7 @@ static bool_t qd_open(struct image *im)
|
|||
im->qd.tb = 1;
|
||||
im->nr_cyls = 1;
|
||||
im->nr_sides = 1;
|
||||
im->write_bc_ticks = sampleclk_us(4) + 66; /* 4.917us */
|
||||
im->write_bc_ticks = sampleclk_ns(4917); /* 4.917us */
|
||||
im->ticks_per_cell = im->write_bc_ticks;
|
||||
im->sync = SYNC_none;
|
||||
|
||||
|
|
|
|||
Loading…
Reference in a new issue