68 lines
1.6 KiB
Plaintext
68 lines
1.6 KiB
Plaintext
![]() |
SXTVRENDEZVOUS = $8000 - 4
|
||
|
SXKBRENDEZVOUS = SXTVRENDEZVOUS - 4
|
||
|
SDSPIRENDEZVOUS = SXKBRENDEZVOUS - 3 * 4
|
||
|
SXFS2RENDEZVOUS = SDSPIRENDEZVOUS - 4 * 4 ' four rendezvous variables
|
||
|
SXFSRENDEZVOUS = SXFS2RENDEZVOUS - 4 * 4 ' four rendezvous variables
|
||
|
METADATABUFFER = SXFSRENDEZVOUS - 512
|
||
|
|
||
|
_free = ($8000 - METADATABUFFER) / 4
|
||
|
|
||
|
obj
|
||
|
term: "isxtv"
|
||
|
kb: "isxkb"
|
||
|
f[2]: "sxfile"
|
||
|
|
||
|
pub main | err
|
||
|
err := \try
|
||
|
if err > 0
|
||
|
term.str( err )
|
||
|
term.out( 13 )
|
||
|
elseif err < 0
|
||
|
term.str( string("error ") )
|
||
|
term.dec( err )
|
||
|
term.out( 13 )
|
||
|
f[0].Close
|
||
|
f[0].Open( string("sphinx.bin"), "R" )
|
||
|
f[0].Execute( 0 )
|
||
|
|
||
|
con
|
||
|
FILENAMELENGTH = 12 ' 8 + . + 3
|
||
|
|
||
|
var
|
||
|
byte srcfilename[FILENAMELENGTH + 1] ' + null
|
||
|
byte dstfilename[FILENAMELENGTH + 1] ' + null
|
||
|
byte optionstring[3]
|
||
|
byte needConfirmation
|
||
|
|
||
|
pri try | length, ch
|
||
|
needConfirmation~~
|
||
|
f[0].Open( string("args.d8a"), "R" )
|
||
|
if f[0].ReadByte <> 2
|
||
|
abort string("usage: source destination")
|
||
|
|
||
|
f[0].ReadString( @srcfilename, FILENAMELENGTH )
|
||
|
f[0].ReadString( @dstfilename, FILENAMELENGTH )
|
||
|
|
||
|
f[0].Close
|
||
|
|
||
|
if f[0].Open( @srcfilename, "R" )
|
||
|
term.str( @srcfilename )
|
||
|
abort string(" -- not found" )
|
||
|
length := f[0].Length
|
||
|
|
||
|
if f[1].Open( @dstfilename, "R" ) == 0
|
||
|
term.str( @dstfilename )
|
||
|
term.str( string(" -- overwrite? ") )
|
||
|
ch := kb.getkey
|
||
|
term.out( ch )
|
||
|
term.out( 13 )
|
||
|
ifnot ch == "y" or ch == "Y"
|
||
|
return
|
||
|
f[1].Close
|
||
|
|
||
|
f[1].Open( @dstfilename, "W" )
|
||
|
repeat length
|
||
|
f[1].WriteByte( f[0].ReadByte ) ' Could probably improve on this
|
||
|
f[1].Close
|
||
|
|
||
|
|