Skip to content

CopyPasteFile routine sector access #1

@kryptoxide

Description

@kryptoxide

GetFileName lda #0

Suggested Improvement: Replace file-based operations with raw sector read/write instead of waiting for file-name access
Use "B-R" and "B-W" commands to load and write sectors directly.
Example:
lda #18 ; Track number
sta $FB
lda #0 ; Sector number
sta $FC
lda #0 ; Buffer number
sta $FD
lda #"B" ; B-R command
jsr DiskSendCommand

increase buffer size or implement batching logic for efficiency.
larger memory buffers can reduce the number of I/O calls and improve performance.
Use efficient FREEMEM or allocate additional memory if possible

use IRQs for buffer optimization and FREEMEM management.
background Data Transfer: Handle disk I/O asynchronously to keep the buffer full while the main program runs.
buffer Refilling: Refill the buffer automatically when it runs low, reducing latency.
dynamic FREEMEM Allocation: Switch between multiple buffers (e.g., double-buffering) for parallel I/O and processing.
timing-Based Batching: Trigger I/O during vertical blank interrupts (VBI) or raster line interrupts for better throughput.

IRQ_Handler:
lda BufferStatus ; Check buffer state
cmp #BUFFER_LOW_THRESHOLD ; If buffer is low
bcc DoneIRQ
jsr SectorReadRoutine ; Read next sector into FREEMEM
jsr UpdateBufferPointer ; Update buffer management
DoneIRQ:
rti

; In the main program, process data from the buffer:
MainLoop:
lda (BufferPointer),y ; Load data from buffer
sta ProcessingMemory,y ; Process data
iny
cmp BufferEndPointer
bne MainLoop
jmp WaitForIRQCompletion ; Wait for IRQ to refill the buffer

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions