In our examples in this chapter we have managed to clutter our drives with lots of copies of the same programs. This may be desirable at times but sometimes we may want to keep slightly altered versions of the same program in different places (for example to keep a type of version history) but we may not have the organisation of the folders we'll store the files in when we start working.
Other times we may want to get rid of some files we've created for any number of reasons, or rename a file from a throwaway name like for example test.bas to something more meaningful and finally we may want to move some files from one place to another when done with them. NextZXOS provides us with all these facilities in the form of the COPY, ERASE and MOVE commands and their dot command equivalents .cp, .rm and .mv.
We'll examine these below and additionally find how to modify file attributes (what is displayed as the second column in the CAT EXP command's output) again via a special version of MOVE and its dot command alternative .chmod. There is one more function provided by NextZXOS in regards to files and that's directly accessing its contents. This however requires the use of Channels and Streams and is therefore covered in the next chapter.
COPY does as its name implies; Copies a file from a location to another location. Its syntax is quite simple:
COPY source TO destination
A few notes, regarding the differences between source and destination parameters are:
First and most importantly, source can use wildcards while destination cannot. In other words you can write:
COPY "c:\*.bas" TO "m:"
but you cannot write:
COPY "c:\*.bas" TO "m:\*.bas"
or
COPY "c:\*.bas" TO "m:\a*.bas"
as any attempt to do so will generate a Destination cannot be wild, 0:1 error.
Secondly, copying files between filesystems with different capabilities will perform some form of translation to the filenames. To give an example with two files named raycaster.bas (longer than 11 characters) and ..later.bas (starting with two dots) on drive c: doing:
COPY "c:\*.bas" TO "m:"
will change the filenames to raycas~1.bas and later.bas as the RAMdisk is a +3DOS drive and as such accepts only 8+3 filenames.
Thirdly, the destination is not checked for if the files being copied already exist. So if you perform the above operation twice, each time COPY will replace the files on the destination without creating backup files except if the file named the same in the destination has the protected attribute set. To demonstrate let's skip a bit ahead and introduce you to an attribute setting command. Type the following:
ZX Spectrum Next User Manual, 3rd Edition (ISBN 978-1-5272-5496-1), written and illustrated by Phoebus R. Dokos. Copyright © 2020-2024 Phoebus Dokos / SpecNext Ltd. Licensed under CC BY-NC-SA 4.0. This is a transcription and can contain errors; check any doubt against the printed page.