Cpc basic key words
V1.16 - 16/12/2014 - Z80 assembler correction
V1.15 - 30/11/2014 - corrections
V1.14 - 20/11/2014 - display ASM sources in Z80 debugger
The 6128 has a 128 KB memory (RAM) divided into eight blocks containing 16 KB each one, numbered from 0 to 7. Only four blocks can beings connected simultaneously.
Value on port &7F blocks position
&C0 0,1,2,3 <standard Cpc configuration memory
The Cpc system exploits only the first configuration. In this configuration, block 0 occupies memory space 0 to 03FFFh, block 1 space 04000h to 07FFFh, block 2 space 08000h to 0BFFFh and block 3 space 0C000h to 0FFFFh.The screen exploits block 3. The higher part of block 2 contains the system variables. The lower part of block 0 is used by the system. BASIC programs are loaded by the system starting from address 0170h. Binary datas can beings loaded starting from the address defined with the Basic instruction "MEMORY". If datas are executable programs, they could be called with the instruction "CALL".
There is three 16Kb roms blocks in the Cpc 6128 (48Kb). One of these blocks contains the operating system which is connected in zone 0 to 03FFFh (lower rom). The two other blocks (BASIC and DISC system) are connected in zone 0C000h to 0FFFFh (higher roms). The system can exploit in this zone 252 blocks (16Kb each one). An interesting characteristic of these roms is that they can receive BASIC programmable instructions (Resident System eXtension).
Amstrad Cpc Rom code sample with programmable basic instructions (Resident System eXtension)
The system memory map
Basic error messages
1 Unexpected NEXT
2 Syntax error
3 Unexpected RETURN
4 DATA exhausted
5 Improper argument
7 Memory full
8 Line does not exist
9 Subscript out of range
10 Array already dimensionned
11 Division by zero
12 Invalid direct command
13 Type mismatch
14 String space full
15 String too long
16 String expression too complex
17 Cannot continue
18 Unknown user function
19 RESUME missing
20 Unexpected RESUME
21 Direct command found
22 Operand missing
23 line too long
24 EOF met
25 File type error
26 NEXT missing
27 File already open
28 Unknown command
29 WEND missing
30 Unexpected WEND
31 File not open
(See «Diskette errors»)
32 Broken in
(See «Diskette errors»)
AMSDOS is a BASIC AMSTRAD extension, adding additional external commands and redefining some existing instructions. The new external commands are identified with the symbol | (vertical bar).
Names and types of AMSDOS files
The name consists of two parts separated by a point, the first part is 8 letters large maximum and the second is 3 letters large. The second part represents the file type indicator. File names and their indicators can be composed with a mixture of letters and numbers, but can't contain spaces, nor punctuation marks. The file type indicator, simple convention indicating the type of the file, does not do any precise part, the system distinguishing the files between them with a particular header. If extension is not specified at the time of a safeguard, AMSDOS determines which extension to allot with the following way:
.<space> Standard not specified. Perhaps a data file created by the command OPENOUT"<nomfich>" (file name) or a BASIC program safeguarded by using a command like SAVE"<nomfich>",A
.BAS Programs BASIC safeguarded using commands like SAVE"<nomfich>" or SAVE"<nomfich>",P
.BIN Programs or storage area safeguarded by a command like SAVE"<nomfich>",B (<binary parameters>)
.BAK Old version of a file safeguarded by AMSDOS. The user can thus recover the old version if he need it.
Principals AMSDOS external commands
Direct the inputs/outputs towards unit A. Equivalent to |DRIVE with A for parameter.
Direct the inputs/outputs towards unit B. Equivalent to |DRIVE with B for parameter.
Load and initializes the operating system contained in the diskette system.
Display the catalogue of the diskette and space available.
Direct the inputs/outputs towards one of the units.
Erase all files which correspond to this file name and wich are not in Writing only. Jokers are allowed.
|REN,<alphanumeric chain>,<alphanumeric chain>
Rename a file. Jokers are not allowed
Several errors can occur at the time of the filing operations treatment. Although the BASIC gathers them under the number of ERRor 32, you can obtain further information by calling the function DERR. Here is the significance of the values which it returns:
AMSDOS error DERR value
0 0 ou 22 [ESC] activation
14 142 (128+14) Channel state not valid
15 143 (128+15) End of file (hardware)
16 144 (128+16) Bad command, generaly incorrect file name
17 145 (128+17) File allready exist
18 146 (128+18) File don't exist
19 147 (128+19) Catalogue saturated
20 148 (128+20) Diskette full
21 149 (128+21) Change of the diskette with open files
22 150 (128+22) File read only
26 154 (128+26) End of file (software)
If AMSDOS already brought back an error, the bit 7 took value 1, shifting that of DERR of 128.
The other values reported by DERR come from the diskette controller, the bit 6 being always ON. The Bit 7 indicates if AMSDOS brought back the error or not (see above). Here is the significance of each bit:
0 Missing adress
1 Impossible writing. Protected diskette.
2 No data. Sector can't be found.
3 Unity not ready. No diskette in unity.
5 Data error. Cyclic Redundancy Check error
6 Alway set to indicate an error wich come from the diskette controller.
7 Set if AMSDOS already brought back the error.