* [[AMSDOS Hidden RSX Functions]]
* [[AMSDOS Memory Map]]
<br>
== AMSDOS command reference ==
{| class=== "wikitable"! Command! Operation|-| '''|A ===''' || Makes drive A: the default disk drive. The result equals that of DRIVE with parameter A. On a CPC664, CPC6128 or 6128plus, normally the built-in disk drive is A:.|-| '''|B''' || Makes drive B: the default disk drive. The result equals that of DRIVE with parameter B. On a CPC664, CPC6128 or 6128plus, normally the built-in disk drive is A:.|-| '''|CPM''' || Boots a disk operating system from a system disk. CPCs came with CP/M 2.2 (CPC464, CPC664, CPC6128) and/or CP/M Plus (CPC6128, 6128plus). The command has no effect if no system disk is inserted. Some games also used this method in order to be started. Note that CPCs could be modified on the PCB in order to automatically perform the same thing as |CPM on power up.|-| '''|DIR''' || |DIR[,<text argument>] <br /> |DIR,"*.BAS" <br /> Shows the contents of the current disk (in CP/M style) as well as the free disk space. If <text argument> is omitted, *.* is assumed.|-| '''|DISC''' || Equals the commands |DISC.IN plus |DISC.OUT|-| '''|DISC.IN''' || Switches to disk as file input media.|-| '''|DISC.OUT''' || Switches to disk as file output media.|-| '''|DRIVE''' || |DRIVE,<text argument> <br /> |DRIVE,"A" <br /> Sets the default drive. This command only works when there is a readable disk in the chosen drive.|-| '''|ERA''' || |ERA,<text argument> <br /> |ERA,"*.BAK" <br /> Erases all files matching the text argument which aren't set as read-only. Wildcards can be used.|-| '''|REN''' || |REN,<text argument>,<text argument> <br /> |REN,"NEWNAME.BAS","OLDNAME.BAS" <br /> Renames a file. A file with the new file name may not already exist. Wildcards aren't allowed. For <text argument>, the USER parameter can also be used: <br /> |REN,"0:NEW.BAS","15:OLD.BAS" <br /> The file OLD.BAS from USER 15 will be renamed to NEW.BAS and assigned to USER 0, regardless which USER number was chosen before.|-| '''|TAPE''' || Equals the commands |TAPE.IN plus |TAPE.OUT|-| '''|TAPE.IN''' || Uses the tape recorder as file input media.|-| '''|TAPE.OUT''' || Uses the tape recorder as file output media.|-| '''|USER''' || |USER,<integer expression> <br /> |USER,3 <br /> Chooses, which of the 16 possible sections of the directory (from 0 to 15) applies to disk commands (e.g. CAT, LOAD, |DIR, a.s.o.). A file can be moved from one user number to another using the |REN command. E.g. <br /> |REN,"15:EXAMPLE.BAS","0:EXAMPLE.BAS" <br /> moves the file EXAMPLE.BAS from USER 0 to USER 15 without changing its name.|}
Makes drive ANote: the default disk driveIn fact, more user areas exist. The result equals that of |DRIVE with parameter A. On a CPC664, CPC6128 or 6128plus, normally the built-Deleted files for example are in disk drive is A:reality only moved to USER 229 (hexadecimal &E5).
=== You can choose another user with a POKE into AMSDOS variables. For example, '''poke &a701,&e5''' provides access to the deleted files or USER 229 (recycle bin). |B ===Ren,"0:filename.typ","filename.typ" moves the deleted file filename.typ from USER 229 to USER 0. Another example, '''poke &a701,&a2''' provides access to USER 162.
Makes drive B: the default disk drive. The result equals that of |DRIVE with parameter B. On a CPC664, CPC6128 or 6128plus, normally the built-in disk drive is A:.<br>
=== |CPM =Intercepted Firmware Calls ==
Boots a disk operating system from a system disk. CPCs came with CP/M 2.2 (CPC464Besides these external commands, CPC664, CPC6128) and/or CP/M Plus (CPC6128, 6128plus). The command has no effect if no system disk is inserted. Some games also used this method in order to be started. Note that CPCs could be modified on the PCB in order to automatically perform the same thing as |CPM on power up.AMSDOS facilities are implemented by intercepting these cassette firmware calls: *CAS IN OPEN *CAS IN CHAR *CAS IN DIRECT *CAS RETURN *CAS TEST EOF *CAS IN CLOSE *CAS IN ABANDON *CAS OUT OPEN *CAS OUT CHAR *CAS OUT DIRECT *CAS OUT CLOSE *CAS OUT ABANDON *CAS OUT CATALOG
=== |DIR ===The remaining cassette firmware calls are not intercepted and remain unaffected.
|DIR[,<text argument>] |DIR,"*.BAS" Shows the contents of the current disk (in CP/M style) as well as the free disk space. If <text argument> is omitted, *.* is assumed. === |DISC === Equals the commands |DISC.IN plus |DISC.OUT === |DISC.IN === Switches to disk as file input media. === |DISC.OUT === Switches to disk as file output media. === |DRIVE === |DRIVE,<text argument> |DRIVE,"A" Sets the default drive. This command only works when there is a readable disk in the chosen drive. === |ERA === |ERA,<text argument> |ERA,"*.BAK" Erases all files matching the text argument which aren't set as read-only. Wildcards can be used. === |REN === |REN,<text argument>,<text argument> |REN,"NEWNAME.BAS","OLDNAME.BAS" Renames a file. A file with the new file name may not already exist. Wildcards aren't allowed. For <text argument>, the USER parameter can also be used (see [[AMSDOS#.7CUSER||USER]]): |REN,"0:NEW.BAS","15:OLD.BAS" the file OLD.BAS from USER 15 will be renamed to NEW.BAS and assigned to USER 0, regardless which USER number was chosen before. === |TAPE === Equals the commands |TAPE.IN plus |TAPE.OUT === |TAPE.IN === Uses the tape recorder as file input media. === |TAPE.OUT === Uses the tape recorder as file output media. === |USER === |USER,<integer expression> |USER,3 Chooses, which of the 16¹ possible sections of the directory (from 0 to 15) applies to disk commands (e.g. CAT, LOAD, |DIR, a.s.o.). A file can be moved from one user number to another using the |REN command. E.g. |REN,"15:EXAMPLE.BAS","0:EXAMPLE.BAS" moves the file EXAMPLE.BAS from USER 0 to USER 15 without changing its name. ¹: In fact, more user areas exist. Deleted files for example are in reality only moved to USER 229 (hexadecimal &E5). You can choose another user with a POKE into AMSDOS variables. For example '''poke &a701,&e5''' provides access to the deleted files or USER 229 (recycle bin). |Ren,"0:filename.typ","filename.typ" moves the deleted file filename.typ from USER 229 to USER 0. Another example, poke &a701,&a2 provides access to USER 162.<br>
== CAS TEST EOF ==
* If the opened file doesn't have a header then hard EOF is signaled at the end of the current record (Each record is 128 bytes). e.g. if reading a file without a header which is meant to be 2 bytes long, hard eof will not be signalled until byte 128.
* If the opened file does have a header then hard EOF is signaled at the end of the data defined by the header. (i.e. if there is a header and the file has length 2, hard EOF is signalled when reading the third byte).
<br>
== BASDOS ==