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