mirror of
https://github.com/irmen/prog8.git
synced 2024-11-26 11:49:22 +00:00
add f_open_w, f_write, f_close_w to diskio to be able to save parts of memory sequentially
This commit is contained in:
parent
1a59019fc8
commit
e2f5752d9a
@ -336,6 +336,45 @@ _end rts
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
; ----- iterative file saver functions (uses io channel 14) -----
|
||||||
|
|
||||||
|
sub f_open_w(ubyte drivenumber, uword filenameptr) -> ubyte {
|
||||||
|
; -- open a file for iterative writing with f_write
|
||||||
|
f_close_w()
|
||||||
|
|
||||||
|
c64.SETNAM(string.length(filenameptr), filenameptr)
|
||||||
|
c64.SETLFS(14, drivenumber, 1)
|
||||||
|
void c64.OPEN() ; open 14,8,1,"filename"
|
||||||
|
if_cc {
|
||||||
|
void c64.CHKOUT(14) ; use #14 as input channel
|
||||||
|
return not c64.READST()
|
||||||
|
}
|
||||||
|
f_close_w()
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
|
||||||
|
sub f_write(uword bufferpointer, uword num_bytes) -> ubyte {
|
||||||
|
; -- write the given umber of bytes to the currently open file
|
||||||
|
if num_bytes!=0 {
|
||||||
|
void c64.CHKOUT(14) ; use #14 as input channel again
|
||||||
|
repeat num_bytes {
|
||||||
|
c64.CHROUT(@(bufferpointer))
|
||||||
|
bufferpointer++
|
||||||
|
}
|
||||||
|
return not c64.READST()
|
||||||
|
}
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
|
||||||
|
sub f_close_w() {
|
||||||
|
; -- end an iterative file writing session (close channels).
|
||||||
|
c64.CLRCHN()
|
||||||
|
c64.CLOSE(14)
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
; ---- other functions ----
|
||||||
|
|
||||||
sub status(ubyte drivenumber) -> uword {
|
sub status(ubyte drivenumber) -> uword {
|
||||||
; -- retrieve the disk drive's current status message
|
; -- retrieve the disk drive's current status message
|
||||||
uword messageptr = &filename
|
uword messageptr = &filename
|
||||||
@ -364,7 +403,6 @@ io_error:
|
|||||||
goto done
|
goto done
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
sub save(ubyte drivenumber, uword filenameptr, uword address, uword size) -> ubyte {
|
sub save(ubyte drivenumber, uword filenameptr, uword address, uword size) -> ubyte {
|
||||||
c64.SETNAM(string.length(filenameptr), filenameptr)
|
c64.SETNAM(string.length(filenameptr), filenameptr)
|
||||||
c64.SETLFS(1, drivenumber, 0)
|
c64.SETLFS(1, drivenumber, 0)
|
||||||
|
Loading…
Reference in New Issue
Block a user