Home
Dk`Tronics 64k RAM Expansion
Contents
1. Oa ironics MEMORY EXPANSION 1 15 CUSTOMIZING YOUR CP M SYSTEM DISC Converting A 464 Keyboard Scan To That Of A 6128 Some CP M programs will not run correctly on the 464 computer because of the way the 6128 scans the keyboard The following program and instructions convert fool CP M into thinking that it is running on a 6128 1 Make a working copy of both sides of your system disc sides 1 and 2 a Use your standard CP M 2 2 System disc and type CPM b For Single drive systems use DISCCOPY For dual drives use COPYDISC Remember to do both sides c Put your original system disc away in a safe place to keep as a backup in case your working disc is damaged 2 Put BANK and RSX onto side 1 of the working disc a Follow the instructions in the manual to get a copy onto disc Alternatively use FILECOPY BANK BAS and FILECOPY RSX BIN if you have transferred the software to disc already 3 Reset the machine then enter CP M Only one drive is necessary but if you have two you may wish to disconnect the second drive because all the changes are to be made on the working disc and with a single drive the computer can use both sides a RUN BANK lt enter gt in response to LOAD ADDRESS b Type in EMULATE CPM lt enter gt 4 Type in the following pressing lt enter gt after each line except where shown Turn the disc over when the computer asks ED PATCH ASM a ORG 100H XRA A STA OFDE
2. 20000 REM assign name to string number name 20010 bS REM 21 spaces 20020 LOADD 1 PEEK b 1 PEEK b 2 256 21 name 21 20030 name MID b 2 ASC b RETURN 21000 REM Store name in bank as element name 21010 b REM 21 spaces 21020 MIDS b 1 21 CHR LEN name name 21030 SAVED 1 PEEK b 1 PEEK b 2 256 21 name 21 21040 RETURN A dummy string b is used to form the element before it is saved into RAM The first character is set to the length of name The latter 20 characters are where the contents of name are stored Then 21 characters are copied into bank RAM When the string is retrieved the characters are copied out and name is set to the right length by looking at the first character String storage would come into its own if all the words were of the same length because there would be no wastage For example a word quiz program using five six and seven letter words A bank of RAM could be used for each length of word A loader program would set up the data into the RAM then another could be CHAINed and use up to 36K of RAM for program A number array could also be stored in bank RAM to index the first letters and so aid the speed of access to a particular word 10 ironics MEMORY EXPANSION 1 7 ANIMATION AND PICTURE SHOWS We have seen how screens and windows can be stored and retrieved Animation is the act of putting pictures on the screen quickly enou
3. 2 week 2 THEN n l ELSE n 2 280 LOADD 4 stock 0 61 5 week 305 290 ycoord stock itemno 4000 320 AND 4092 300 FOR xcoord 1 TO 11 STEP n 310 MOVE 49 xcoord week 11 ycoord 26 DRAW 49 xcoord week 11 26 320 NEXT xcoord 330 NEXT week GOTO 110 1 6 1 MORE ARRAYS VARIABLES AND STRINGS If you have a program that uses all the memory of the computer due to needing a large array you can use the bank RAM for storing data without even dimensioning an array For example if you have a two dimensional array sales 365 30 to store the amounts of certain types of stock you sell for each day in one year Even though you are using integers the array uses over 22K of memory Instead of having the whole array in BASIC memory each element can be accessed by using a subroutine to read out a value and one to store a value 10000 REM load store from bank memory using year amp type 10010 p year 31 type 2 10020 bank 1 IF p gt 16000 THEN p p 16000 bank 2 10030 LOADD bank store 2 p 10040 RETURN 11000 rem copy store to bank using year amp type 11010 p year 31 type 2 11020 bank 1 IF p gt 16000 THEN p p 16000 bank 2 11030 SAVED bank store 2 p 11040 RETURN Two banks are used 1 and 2 and the variables year and type are used to reference which element is required On line 10030 and 11030 there are just 2 bytes moved to and from the bank RAM because we are using int
4. is explained in the following chapters Kironics MEMORY EXPANSION With the computer set up as above load the RSX software from the cassette tape supplied On disc systems type TAPE and press lt ENTER gt b Type RUN and press lt ENTER gt c The loading sequence is described in detail in your Amstrad user manual d When the program has finished loading you will be asked to enter a loading address Just press lt ENTER gt for now See section 11 e The computer will test the RAM and then print out how much RAM you have got then the computer memory will be clear ready for your own programs 1 3 RAM TEST When the RSX code is first loaded it does an extensive RAM test Should the RAM not function correctly the program will inform you that an error has been found Along with this it will print out diagnostic information to help in the repair of the RAM pack In the unlikely event that an error is found please note the information that is given and return the RAM pack for replacement or repair See warranty registration note 1 4 EXTENDED BASIC COMMANDS There are a total of twelve extra commands provided by the RSXs on tape Some may have parameters some will not Sometimes the command may have different formats and numbers of parameters We have tried to discuss each command in its simplest form and later sections will describe added parameters which make the command more flexible and economic on me
5. 000 40 REM rest of program 000 REM subroutine to read data from disc 010 OPENIN stock dat 020 FOR week 1 TO 52 030 FOR item 1 TO 60 040 INPUT 9 stock item 050 NEXT item 060 SAVED 4 stock 0 61 5 week 305 070 NEXT week 080 CLOSEIN 090 RETURN The above program could be used to read the file from disc or tape Once the file is in bank RAM the contents will stay there for use until the computer is switched off or some other data is put in that bank This means that data need only be read once from disc then the program can be rerun without losing the data This could also be useful too if you wish to write a number of programs to use the same data Once the data is in memory you can access each week s data simply by reloading the stock array Add the section below to draw a bar graph fora given section 100 MODE 2 110 LOCATE 1 1 120 INPUT Which item to analyse itemno 130 IF itemno lt 1 OR itemno gt 60 THEN 120 Kironics MEMORY EXPANSION 140 CLS LOCATE 30 1 150 PRINT Bar Chart For Item itemno 160 LOCATE 10 25 170 PRINT Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec REM 3 spaces between each 180 FOR loop 0 TO 4 190 LOCATE 1 24 loop 5 200 PRINT STR loop 000 210 NEXT loop 220 MOVE 60 328 DRAW 60 0 DRAW 61 0 DRAW 61 368 MOVE 640 24 DRAW 48 24 230 FOR loop 1 TO 4 240 MOVE 48 100p 80 24 DRAW 60 loop 80 24 250 NEXT loop 260 FOR week 1 TO 52 270 If week
6. 1 30 LOAD setl grp chars SAVED 1 chars 2048 0 40 LOAD set2 grp chars SAVED 1 chars 2048 2048 50 LOAD set4 grp chars SAVED 1 chars 2048 4096 The reason the variable chars is set up is because the value of HIMEM alters when the disc or tape is accessed During the program a subroutine could be used to select a character set 1000 REM given the variable set load the characters 1010 LOADD 1 chars 2048 set 1 2048 1020 RETURN Note that the variable set is used In the above loading sequence sets 1 to 3 will be valid More or less could be added as it suits you All of this setting up can be done on the loader program just once When the program is subsequently run there is no need to reload the bank RAM The setting of chars can be found whenever needed by 200 CLEAR SYMBOL AFTER 0 chars HIMEM 1 This will remove any disc buffers that have been set up and chars will indeed point to the characters 14 ironics MEMORY 1 9 PEEKING AND POKING EXPANSION There are two commands which allow the memory in the banks to be viewed and changed byte by byte POKE bank bank address value PEEK bank bank address variable POKE works in a similar way to the original POKE You need to supply a bank number in addition to the normal address and value The bank address is in the range 0 to 16383 or 0 to 16K PEEK is a command rather than the normal function The
7. AND 3 bank AND 28 2 NOTE the bank numbers in this case START AT 0 For 64K expansions the banks are 0 to 3 On the 256K bank numbers are 0 to 15 bank 0 3 196 199 bank 4 7 204 207 etc To reset the original bank OUT amp 7F00 192 IN MACHINE CODE Where the bank number is in the accumulator A SELECT PUSH BC select bank A save all registers except A LD C A and flags AND 3 bank AND 3 LD B A LD A C AND 28 bank AND 28 2 ADD A A OR B OR 196 7 196 LD BC 07F00H BC amp 7F00 OUT C A POP BC RET Again the bank number in the accumulator starts at 0 To reset the original bank RESET PUSH BC reset original memory LD BC 07F00H BC amp 7F00 LD A 192 OUT C A POP BC RET 16 Kironics MEMORY EXPANSION 1 11 TECHNICAL DETAILS 1 11 1 The Load Address The software which loads from tape is relocatable However the areas of memory in which the program can go is limited to between 32768 and the top of memory This is because the banked RAM appears in the block 16384 to 32767 See previous chapter for explanation of why Below the 16K boundary the RSX command table will no longer function Hence during relocation the code is loaded at 10000 in memory and moves to a place higher in memory Pressing lt ENTER gt while loading will automatically select the highest location available Alternatively you may wish to load the code to a lower address and reserve some space for you
8. Dk tronics 64K 256K Memory Expansion For the Amstrad CPC computers G4K MEMORY EXPANSION SUPPLIED WITH BANK SWITCHING RSX SOFTWARE a COMPATIBLE WITH dk tronic 256k SILICON DISC SREQUIR ES NO EXTRA POWER SUPPLY ironics MEMORY EXPANSION CMDIAHDDAVDUUBWNHEHO OBWNHREEPRERERPRO URUNK CONTENTS 64K AND 256K MEMORY EXPANSION UNITS PREFACE INSTALLATION USING YOUR EXTRA RAM RAM TEST EXTENDED BASIC COMMANDS WINDOWS AND PULLDOWN MENUS MORE WINDOWING ARRAYS VARIABLES AND STRINGS MORE ABOUT ARRAYS STRING STORAGE ANIMATION AND PICTURE SHOWS ADVANCED PROGRAMMING PEEKING AND POKING PROGRAMMING WITHOUT RSX s TECHNICAL DETAILS THE LOAD ADDRESS SAVING TO DISC INCREASING CP M 2 2 TPA COMMERCIAL PROGRAM COMPATIBILITY USING CP M 2 2 ERROR MESSAGES REFERENCE OF RSX COMMANDS TECHNICAL DETAILS HARDWARE CUSTOMIZING YOUR CP M DISC PAGE NN NOVWVGMM IIIIIAUUWKHOVAUPRWUNNKE KIFOHIES MEMORY EXPANSION 64K and 256K MEMORY EXPANSIONS These units are available for the CPC 464 664 and 6128 computers By using the 64K upgrade the 464 and 664 computers will have the same amount and configuration of RAM as the CPC 6128 The 256K gives an extra 192K on top of this The expansion will allow the use of CP M as supplied with the CPC 6128 with its massive 61K TPA opening up an even larger software base for Amstrad users There is also an utility for increasing the TPA on CP M 2 2 to 61K The
9. FH JMP 0000 END lt control z gt DO NOT PRESS ENTER e ED PROFILE SUB i PATCH lt control z gt DO NOT PRESS ENTER e now insert the disc containing MAC COM continued over page 22 iFonics MEMORY EXPANSION B MAC PATCH B HEXCOM PATCH ERA PATCH HEX ERA PATCH SYM ERA PATCH PRN ERA PATCH ASM 5 It is possible to alter the CP M disc to boot up without loading the BANK program first Type the following if you want your system disc altered in this way B SAVE B SID C10CPM3 EMS S1E0 co lt control c gt DO NOT PRESS ENTER C10CPM3 EMS Y 100 6500 THE DISC WILL NOW BOOT UP WITHOUT BANK BEING RUN 23
10. RAM can be accessed by means of bank switching using a single I 0 port Memory is actually switched in and out of the 64K Z80 address space in 16K sub blocks as are the ROMs The port determines which particular combination of the original four 16K sub blocks and any new sub blocks from the expansion RAM will occupy the 64K address space at any time Control of the I 0 port can be from either BASIC or machine code To use the additional 64K 256K of RAM the expansion is supplied with bank switching software although it can be switched without this software The software adds some extra BASIC commands RSXs which make it possible to use the second 64K or 3rd 4th and 5th in the case of the 256K expansion for storage for screens windows graphics and BASIC arrays This ability means that you can write much larger BASIC programs as most of the memory on the unexpanded CPC464 664 is normally used for arrays variables and graphics The additional BASIC commands are BANK n Map a bank of 16K directly into memory space SWAP Alternate between the low an high screens LOW Change to the low screen HIGH Change to the high screen Default screen SAVES n Store a screen to a 16K bank LOADS n Retrieve a screen from a 16K bank SAVEW w n Store a window s contents into expansion RAM LOADW w n Load a window with data from the expansion RAM SAVED n s 1 Transfer original RAM to expansion RAM LOADD n s 1 Load original RAM from expansion RAM PEEK
11. ZE X2 X1 1 Y2 Y1 1 8 The computer will give an error if the window is too large to fit in the space you have allotted for it Also if the size is miscalculated the windows may overlap in the bank and cause strange effects EXAMPLE 2 10 PEN 1 PAPER 0 MODE 1 20 size 14 2 10 8 30 LOCATE 1 13 PRINT n for new window d to remove window 40 WINDOW 1 14 1 10 PAPER 3 CLS 50 bankaddress 0 level 0 60 PRINT level Window level 70 keypress LOWERS INKEYS ironics MEMORY EXPANSION 80 IF keypress n THEN GOSUB 110 90 IF keypress d THEN GOSUB 190 100 GOTO 60 110 If level 7 THEN RETURN 120 level level 1 130 WINDOW level 1 level 3 14 level 3 1 level 2 10 level 2 140 SAVEW level 1 bankaddress 150 bankaddress bankaddresstsize 160 PEN level 0 PAPER level level AND 1 1 170 CLS level 180 RETURN 190 IF level 0 THEN RETURN 200 bankaddress bankaddress size 210 LOADW level 1 bankaddress 220 level level 1 230 RETURN The above program only uses one bank of RAM but all 8 windows are defined The variable level is used to stand for the level of windows and the variable bankaddress points to the next free place in the bank RAM 1 6 ARRAYS VARIABLES AND STRINGS There are two general purpose data moving commands to allow data from the program to be moved to and from the RAM pack These two commands are SAVED bank Start location length bank address LOADD ban
12. ank address may be too large for the block of data defined The parameter for ASKRAM is other than 1 2 or 3 The size of a block to be saved is larger that 16K The window referenced in SAVEW or LOADW is above 7 All the additional commands are listed below as a reminder to their functions and syntax SCREENS SAVES bank swap LOADS bank swap WINDOWS SAVEW window number bank bank address swap LOADW window number bank bank address swap DATA BLOCKS SAVED bank start location length bank address LOADD bank start location length bank address ANIMATION LOW Low screen HIGH High screen SWAP Alternate between High and Low screens OTHER POKE bank bank address value PEEK bank bank address variable BANK bank ASKRAM enquiry variable enquiry RAM 2 banks 3 error occurred DEFINITIONS bank Bank number 1 4 or 1 16 for 64K and bank address 256K expansions Address within bank 0 to 16383 19 ironics MEMORY EXPANSION swap 0 or omitted means act on present screen 1 means act on alternate screen start location and length Define a block of original memory variable Give the location of an integer variable to be assigned for example bs 1 14 Technical details hardware organization These interfaces add either a single block 64K or fou
13. ants to be found by the program you are writing For example it can return the number of banks available to the program as this will change depending on whether you are using the 64K RAM pack or the 256K RAM pack The enquiry value is a number 1 to 3 which selects what you want to know The answer is placed in an INTEGER variable defined by the second parameter 000 a 0 ASKRAM 1 a will assign a to the amount of RAM 100 a 0 ASKRAM 2 a will assign a to the number of banks 200 a 0 ASKRAM 3 a will set a to 0 or 1 depending on whether there is a problem with the RAM The last command can be used to make sure the RAM is there and ready to use if in your programs you do not want to have to load the RSX loader first It is possible to load just the RSX machine code on its own 20 MODE 1 PRINT Program Loading 30 I HIMEM 40 MEMORY 9999 50 LOAD rsx 10000 60 I I PEEK 10004 PEEK 10005 256 1 70 POKE 10002 I INT I 256 256 80 POKE 10003 INT I 256 90 PRINT CHR 30 CHR 21 100 CALL 10000 110 PRINT CARS 30 CHRS 6 120 a 0 ASKRAM 3 a 130 IF a THEN PRINT RAM is faulty END 140 CLEAR MEMORY PEEK 10002 PEEK 10003 256 1 160 CHAIN part2 The program above will load the RSX machine code and put it into memory Nothing will be printed on the screen unless the RAM proves to be faulty or not even there The program part2 would be the bulk of the program Loading t
14. as defined as 10 x 10 in Mode 1 then the amount of memory needed to store this window would be less than 16K In fact only 1600 bytes are needed see below Thus to use a whole bank would mean wasting over 14K of memory To deal with this problem the RSX window command can take an extra parameter to define where you want the window s contents to reside in the RAM bank In the 10 x 10 window you could place the data anywhere between 0 and 14783 The command can be written SAVEW window number bank bank address LOADW window number bank bank address The bank address is an address between 0 and 16383 The amount of data in bytes used to store a window needs to be taken away from the top value and this leaves the range between which the data can be stored If you put the data at the bottom of the RAM bank at address 0 then the memory from 1600 to 16383 is free for other windows or data arrays HOW TO CALCULATE A WINDOW S SIZE In order to have more than one window per bank you need to know how much memory the window will take up If the window will vary in size between two limits use the higher of the two Depending on which mode you are using the figures are calculated as below In each case X1 is the left most x coordinate X2 is the right most x coordinate Yl is the top y coordinate Y2 is the bottom y coordinate MODE 0 SIZE X2 X1 1 4 Y 2 Y1 1 8 MODE 1 SIZE X2 X1 1 2 2 Y1 1 8 MODE 2 SI
15. bank and bank address are the same as for POKE To find out the value you need to supply an integer variable in a similar way to the ASKRAM command For example 10 value 0 20 PEEK 3 12345 value 30 PRINT value The above will read the byte from location 12345 in bank number 3 The character tells the RSX extension where the variable is in memory so that its contents can be changed to the byte required PEEK and POKE are not really commands for the beginner in fact they have only been included for the more advanced programmer who wishes to use the bank RAM in his own way Another advanced command which has been included for the experienced programmer is BANK BANK bank number The command is followed by one parameter If this parameter is not present a zero is assumed The bank referenced is mapped into the address space at 16K to 32K A bank number of zero will map the original RAM back in numbers 1 to the maximum bank number will map that bank into the address space If a bank is mapped in the computer will use the bank memory instead of the normal RAM However the screen will still be taken from the original RAM if LOW was issued The advantage of this is that the whole memory can be used for programming instead of having to set the top of memory to 16383 The disadvantage is that if the program is halted while the low screen is being displayed the computer will write screen data into the BASIC program caus
16. egers The 2 in lines 10010 and 11010 reflect the fact that an integer is stored in two bytes If real variables were used 5 bytes would need to be used instead Lines 10020 and 11020 decide whether the element is in the first bank or the second Kironics MEMORY EXPANSION If the array is to be filled with data from tape or disc there is no need to initially clear the values to nil If you want all elements preset to zero then the easiest way is to save a blank screen into each bank at the start of the program 10 MODE 1 PAPER 0 CLS 20 SAVES 1 30 SAVES 2 1 6 2 STRING STORAGE The major obstacle in storing strings is that they can vary in length and can be stored anywhere in memory including in a BASIC program One method of storing string arrays is outlined below However you may find an easier way to store strings than the one described below when you consider exactly what you want to do Suppose that you wanted to store 500 names up to 20 characters long each A bank is separated into units of memory 21 bytes each so that strings can be randomly accessed In each 21 byte segment there is one string and one byte to say how many letters there are in that string That means that we will use a total of just over 10K If we use the variable name to specify the string we want then we can enter two subroutines one to put a string from bank 1 into name and one to store the contents of name into RAM bank number 1
17. gh so that the eyes see something move With 64K or 256K of memory whole screens can be stored away then put on the screen to produce animation You may have noticed in section 4 that when a screen loads onto the screen you can see each line appear To illustrate type in the following program 10 MODE 1 20 BORDER 0 30 FOR col 0 TO 3 40 INK col 0 50 NEXT col 60 FOR col 0 TO 3 70 PAPER col CLS 80 SAVES col 1 90 NEXT col 100 INK 0 1 INK 1 6 INK 2 21 INK 3 13 110 PEN 1 PAPER 0 120 WHILE INKEYS 130 FOR screen 1 TO 4 140 LOADS screen 150 NEXT screen 160 WEND 170 END The program saves four coloured screens into bank RAM then loads then up in sequence Unfortunately the effect is a striped pattern In order to create animation which is easy on the eye the computer needs to create the screen display then instantly display it Three new instructions that allow this to be done are LOW HIGH and SWAP Before the commands can be understood it is necessary to know how the Amstrad s screen can be used The normal screen is located at 49152 However the Amstrad is capable of viewing a screen anywhere in memory in 16K blocks The first block at 0 and the third block at 32768 are difficult to use for screen as the computer uses these as part of the BASIC interpreter The block of memory at 16384 is free for use as long as BASICs HIMEM is lowered to below 16384 Using this we have called the original scree
18. he program in two parts saves reloading the RSX code every time the program is run The code has to be loaded in at 10000 in memory before it is relocated for use The 16 bit value in locations 10002 and 10003 is the place you want the code to be located at Another 16 bit value in locations 10004 and 10005 contains the length of the code which is moved higher in memory Nearly 1K of the program is only needed once the relocation and the RAM test programs and hence this part is not moved higher in RAM 13 ironics MEMORY EXPANSION If you want to use user defined graphics then add the following lines 10 SYMBOL AFTER 256 150 SYMBOL AFTER 0 The value in line 150 will be different depending on how many user defined graphics you want In your program you may want to have a number of different styles of character set After you issue a SYMBOL AFTER command HIMEM is set just below the user defined graphics Hence it is possible to use the LOADD and SAVED commands to move graphics to and from the graphics characters If you have a program that defines the character set the definitions can be saved and loaded into bank RAM so that a program may have multiple character sets 10 SYMBOL AFTER 0 20 chars HIMEM 1 30 REM define symbols here 1000 SAVE setl grp B chars 2048 This program will save your character set onto disc or tape On your final program you may wish to load a number of sets 10 SYMBOL AFTER 0 20 chars HIMEM
19. ing chaos Make sure you are accustomed to using BANK POKE and PEEK before you risk creating a large program using them Save the program frequently in case you make a mistake and lose your work 15 KIFOHIES MEMORY EXPANSION 1 10 PROGRAMMING WITHOUT RSX s With no RSX software the programmer can still access the memory from the RAM banks To use the RAM yourself some degree of understanding of the memory map of the Amstrad is necessary From both BASIC and machine code the original block of memory from 16384 to 32767 CANNOT be used for program Hence in BASIC you need to set the top of memory to 16383 Machine code is free to use any memory that it can normally except the block mentioned The extra RAM is mapped into the addresses 16384 to 32767 in 16 banks Once the bank is mapped in you can do anything with the RAM you normally would It is inadvisable to use the bank RAM for machine code because if you subsequently change the bank the program disappears Nevertheless programs can be written to run in banks and indeed in the original 16K block that is banked out but it is necessary to do the bank changing outside of this memory range In BASIC it would be extremely difficult to use the banked RAM for extra programs but not impossible but we shall leave that possibility up to you The way that banks are selected is defined below IN BASIC Where bank is the number of the bank to map in OUT amp 7F00 196 bank
20. k Start location length bank address The first parameter references which bank you want to use The start location is a memory address where there is some data The amount of data is given as the length Optionally a bank address can be given to allow more than one type of data to be stored in the RAM It is possible to save all kinds of data using these commands but we will firstly discuss how to save simple numerical arrays these being the easiest to understand Say for example that your program deals with stock control of up to 60 items You may have a string array containing the names and a numerical array containing the number of each item you have in stock This would use about 1K for the names and 300 bytes for the stock figures However what if you update the stock value every week and you want to keep the last year of stock on record Or even the last five years Now the figures would take up about 15K or even 75K These could be comfortably stored on disc or even tape for a year s stock and the data read every time a calculation was needed but you will probably agree that a long time would be spent waiting for reading the data each time a distribution is calculated for each item ironics MEMORY EXPANSION Obviously it would be easier to load all the records into RAM then access the data immediately Instead of defining an array of dimensions stock 60 52 taking over 15K of valuable RAM which could be used fo
21. ly Due to the fact that the bank memory moves into the address space at 16K it takes longer for the transfer of screens to be made to the low screen than to the high screen Hence line 135 delays the computer as it is to load the high screen This means the time each screen is on the screen remains the same Try removing line 135 to see the difference If a longer delay were to be put between line 140 and 150 you would get a picture show effect Alternatively you could select screens when a key is pressed On a small scale a window could be defined and graphics could be rapidly displayed without resorting to swapping screens Note that of less use is the fact that the contents of screens and windows can be saved from a screen which is not on display simply by adding a one for the swap parameter For example if you want to load a series of screens from tape or disc load them into the low 16K screen Messages generated by the tape system need not be switched off as the screen s contents will not be changed in the low memory screen 10 LOAD screenl 16384 SAVES 3 1 The above will load a screen then save it to bank 3 The screen the user sees can have something else on it 135 KIFOHIES MEMORY EXPANSION 1 8 ADVANCED PROGRAMMING This section introduces one new command and some other programming aspects which you may find useful The new command is ASKRAM enquiry variable The command allows certain const
22. more memory or have the CPC6128 with a 256K memory pack the RSX software can be told to access a full 512K of banked memory 32 banks by poking location 10006 with 1 See section 8 for explanation of how to load the RSX software on its own 55 POKE 10006 1 This line will do the trick 17 ironics MEMORY EXPANSION If a commercial program fails to work on your CPC464 or CPC664 then try the suggestions below 1 The software may be using the new firmware vector at amp BD58 If this is the case try running the RSX program before running your application program Some programs which will function correctly after the RSX software tape has been loaded in are Tasman s Tasword R word processor Tasspell and Tasprint for the CPC6128 In conjunction with these Campbell Systems Masterfile 128 will provide a 64K filespace and interfaces with Tasman s software 2 Some software whether loaded from disc tape or booted from a background ROM will check the ROM identity by using the firmware call amp B915 There is one more command included in the RSX software on tape which will cause a CPC464 or 664 to emulate the ROM identity of the CPC6128 Type EMULATE and press lt ENTER gt Any programs that call the ROM identity routine will now be informed that the computer is a CPC6128 and may now work correctly 3 The software may use some features of the CPC6128 ROM which are unavailable on the CPC464 and CPC664 machines In this instance y
23. mory You may have noticed that during the RAM test the computer printed out the number of the bank it was testing Each bank is 16K of memory For the 64K expansion there are 4 banks while the 256K RAM pack has 16 banks To access a particular part of the expansion s memory there has to be a bank number and possibly a bank address For example type SAVES 1 and press lt ENTER gt The computer will respond with READY What you have done is to store what was on the screen into bank 1 Now clear the screen using CLS To get the screen s contents back type LOADS 1 and press lt ENTER gt You can save as many screens as you have memory for That means four screens on the 64K RAM and sixteen screens for the 256K RAM Screen displays could be created from another program or drawn using a lightpen Store these on tape or disc then load them back into RAM for use throughout the program Screen displays which take a long time to create within a program for example mazes can be created once then stored for instant use whenever necessary Kironics MEMORY EXPANSION The command can be summarized SAVES n save data to bank n the bank number LOADS n load data from bank 1 5 WINDOWS AND PULLDOWN MENUS One of the features that makes the Amstrad s windows less flexible than those on larger business machines is the fact that the contents of a window which overlaps another are lost when the other window is used The
24. n S V Read the value of a byte in expansion RAM POKE n S V Change a byte in the expansion RAM These commands make such features as pull down menus full screen animation and large spreadsheet type programs or databases very easily programmed from BASIC as never before possible on the unexpanded CPC464 and 664 computers Kironics MEMORY EXPANSION WARNING Ensure that the power to your Amstrad computer is switched OFF before you fit the interface to the expansion socket Failure to comply with these instructions may cause permanent damage to the RAM pack or the computer 1 1 Installation Power down your Amstrad computer Plug the RAM pack into the socket on the back of the computer On the CPC 464 this socket is labelled Floppy Disc on the CPC 664 and CPC 6128 the socket is labelled Expansion Other expansions such as the Amstrad Disc interface for the CPC 464 DK tronics Lightpen and Speech Synthesizer or ROM expansions can be fitted into the expansion socket on the back of the RAM pack Now switch on the computer The computer should power up as normal If it fails to do so check that all the connections are correctly made Note that all DK tronics products have a key location on the connector to ensure that there can be no alignment problems OTHER interfaces may not have this keyway the Amstrad disc interface is the most familiar example Hence any connection problems will usually lie between the RAM pack and these expa
25. n the high screen and the new screen at 16384 is called the low screen To go from one to the other just use LOW to set the low screen in action HIGH to reset the high screen SWAP to swap from low to high and vice versa Whenever the swap is made the computer is told and all further text and graphics appear on the selected screen ironics MEMORY EXPANSION To use this facility of swapping from one screen to another instantly the screen and window commands can have an added parameter which tells the computer to load or save the data to and from the alternate screen The new forms can be written SAVES bank swap LOADS bank swap SAVEW window number bank bank address swap LOADW window number bank bank address swap If the swap value is zero by default then the command will act on the screen that is presently being displayed Alternatively if the value is one the computer will load and save data from the screen which is not being displayed When the work is done the computer can swap screens and the effect is that the screen appears to change instantly In the above program type these lines 5 MEMORY 16383 HIGH 135 IF screen 2 screen 2 THEN t TIME WHILE TIME lt t 20 WEND 140 LOADS screen 1 SWAP Now that the computer can build up the screen while another is being displayed there is no pattern The coloured screen appears to change instant
26. nexplainable bugs appearing in your program Once you know the real number of elements in every dimension simply multiply together all the dimensions to find out the total number of elements in all dimensions For example stock 60 has a total of 61 elements stock 60 52 has 61 53 elements 3233 elements stock S 10 5 12 has 11 6 13 elements 858 in all To find the total memory multiply the total number of elements by the amount of memory needed by each element For example stock 60 takes 61 5 305 bytes stock 60 52 takes 3233 5 16165 bytes stock 10 5 12 takes 858 2 1716 bytes in all ironics MEMORY EXPANSION The array we are using is 304 bytes long and starts at stock 0 Ina single bank of RAM we can store 305 bytes about 53 times The bank address starts at 0 and goes up in steps of 305 bytes 0 305 610 915 1220 1525 etc We shall store week 1 at bank address 305 week 2 at address 610 and so on for all 52 weeks Data for test purposes could be written onto disc or tape by the program below Once the test file is written keep it for use while you are developing your program 10 OPENOUT stock dat 20 FOR week 1 TO 52 30 FOR item 1 TO 60 40 Print 90 INT RND 1 3000 100 40 NEXT item 60 NEXT week 70 CLOSEOUT 80 END Now type NEW and enter the following program 10 DIM stock 60 20 INPUT read file y n ans 30 IF LOWERS ans y or LOWERS ans yes THEN GOSUB 1
27. nsions If this is the case try reconnecting the interfaces BEFORE inserting the RAM pack into the computer This will give you a better view when lining up the pins If the computer fails to power up or crashes on power up Miscellaneous patterns all over the screen the monitor may cut out the power to the computer On the colour monitor just switch the MONITOR off and then attempt to reconnect as above The monochrome monitor may have to remain switched off for several seconds before power will be reinstated to the computer It is very unlikely that the computer will fail to power up with the RAM pack alone If this is the case then the fault will probably lie with the RAM pack Return the RAM pack to RAM ELECTRONICS if this is the case IT IS ESSENTIAL THAT YOU COMPLETE YOUR WARRANTY REGISTRATION CARD AND RETURN IT TO US IMMEDIATELY UPON PURCHASING THIS PRODUCT FROM YOUR DEALER UK ONLY 1 2 USING YOUR EXTRA RAM There are two ways to use the extra RAM There is a cassette supplied with the RAM pack containing extensions to BASIC Here the extra RAM can be used simply from BASIC programs Alternatively the RAM is accessible both from BASIC and machine code using the OUT command The experienced programmer will be able to use the RAM for whatever he pleases and write custom software for that purpose Commercial programs will no doubt use this approach The second method is described in detail in section 1 10 The first way
28. ou may be able to get information on how the program can be altered to work on the CPC464 or 664 from the manufacturers of the program in question 1 11 5 Using CP M 2 2 CP M 2 2 as supplied with all Amstrad computers will function as normal with the extra memory fitted However if you create and use the NEWCPM program the TPA on CP M 2 2 will be increased to 61K Programs of your own devising written under this operating system are free to use the extra memory See section 1 10 for details of how to use the extra memory from machine code 1 12 ERROR MESSAGES While you are using the RSX software there will be some occasions when the computer does not understand or cannot carry out what you have instructed The software may issue some error messages in addition to the normal messages that the computer will give The errors and why they are likely to occur are outlined below 1 Bad bank command Given if you have given the wrong number of parameters or if a variable is not present where there should be one 2 Bank unavailable You have tried to access a bank which is not present on your system 18 3 Bad bank parameter 4 Bad bank address 5 Value invalid 6 Bad window definition 1 13 REFERENCE OF RSX COMMANDS Kironics MEMORY EXPANSION You have referenced a bank which can never be fitted to the computer The address you have given is out of range bank addresses range from 0 to 16383 The b
29. r blocks 4 x 64K of RAM to an existing CPC464 664 or 6128 Thus if 64K one block is added to a 464 the total memory is two blocks 128K For a given setup calculate the total number of 64K blocks this will determine which of the block select codes mentioned later are relevant to your system The blocks are referred to by number block one is the original 64K block two is equivalent to the second block present in the 6128 and so on Memory is actually switched in and out of the 64K Z80 address space in 16K sub blocks as are the ROMS Which particular combination of the original four 16K sub blocks used and any new sub blocks from RAM beyond the original 64K is called the memory map The map is determined by an 8 bit code byte sent to the gate array control port amp 7F00 with the two top bits set to 1 The following description of the codes refers only to the remaining six bits D5 D0 Control Codes Bits D2 DO0 control the way 16K sub blocks are arranged in the 2Z80 memory space bits D5 D3 control selection of whichever new 64K block is to be used Bits D2 DO 16K Map Codes These bits select one of the eight maps into the 64K as follows CODE 0 1 2 3 4 5 6 7 SUB BLOCK C000 FFFF 3 3 3 3 3 3 3 3 8000 BFFF 2 2 2x 2 2 2 2 2 4000 7FFF 1 1 I 3 g 1s 2 ae 0000 3FFF 0 0 0 0 0 0 0 0 The numbers 0 1 2 3 refer to the four 16K sub blocks in a 64K block in the obvious way The star indicates that the memo
30. r own programs 1 11 2 Saving to Disc The software on the cassette is NOT protected Hence to save it onto disc or even onto another tape at speed write 1 is a matter of loading the data into memory then saving it 1 Type TAPE and press lt ENTER gt for disc systems 2 LOAD bank 3 MEMORY 9999 4 LOAD rsx 10000 5 Type DISC or set SPEED WRITE as desired 6 SAVE bank 7 SAVE rsx B 10000 4000 1 11 3 INCREASING CP M 2 2 TPA Boot up CP M 2 2 that has CLOAD COM on it Copy the two programs NEWCPM COM and OLDCPM COM from cassette to disc by typing CLOAD NEWCPM COM lt enter gt Repeat for OLDCPM COM Then create a new CP M system file by typing A gt MOVCPM 255 lt enter gt A gt SAVE 34 NEWCPM SYS lt enter gt The new working disc now contains your increased TPA CP M invoked at any time by typing A gt NEWCPM You can return to the original CP M by typing A gt OLDCPM This must be done before using some of the DFS utilities such as format etc as these will only work with OLDCPM 1 11 4 Commercial Program Compatibility The RAM expansion is compatible with the banked RAM supplied with the 6128 This means that a number of programs written for the 6128 will now work on the CPC464 The RSX software provided will work on the 6128 where the 256K pack will give 320K of banked RAM The bank switching software in its supplied state will only access 256K or 16 banks of memory If you add
31. r programs define and array stock 60 Read all the data from disc a week at a time and store each week of data into bank RAM To do this you need to know two things One where does the array lie in memory and two how many bytes is it necessary to save 1 Where is an array stored The address of any variable can be quickly found using the before a variable For example dimension the above array DIM stock 60 Now type PRINT stock 0 The computer will reply by giving the memory address where the first element of the array is stored Try PRINT stock 1 The number returned will be five higher in value This is the address of the second variable The prefix will work in front of any variable The first item of an array is obviously stock 0 If you are using multi dimensional arrays the first item is stock 0 0 or stock 0 0 0 0 depending on the number of dimensions 2 How long is an array First of all different types of array take different numbers of bytes per element For real numbers there are 5 bytes per element Integer arrays take 2 bytes per element String arrays are of variable length And will be dealt with later Next the number of dimensions and elements needs to be taken into account Remember that elements start from 0 This means that an array of stock 60 has 61 elements Whether or not you prefer to use the 0 element is up to you but if you forget it there could be some u
32. re are two new commands which allow the contents of windows to be saved and reloaded from RAM This will allow the use of true pulldown menus that can cover text but not remove it EXAMPLE NEW 10 MODE 1 20 FOR i 0 05 TO 1 STEP 0 05 REM Draw grid on screen 30 MOVE 640 i 0 DRAW 640 i 400 40 MOVE 0 400 i DRAW 640 400 i 50 NEXT i 60 WHILE INKEYS WEND REM Wait for a key press 70 WINDOW 1 INT RND 1 19 1 INT RND 0 9 INT RND 1 5 17 INT RND 1 14 1 INT RND 0 14 INT RND 1 10 5 80 PEN 1 2 PAPER 1 3 90 SAVEW 1 1 REM Save contents of window into RAM 100 CLS 1 REM Clear window 110 WHILE INKEY REM Wait for 2nd key press 120 PRINT 1 This is a window 130 WEND 140 LOADW 1 1 REM restore window s contents 150 GOTO 60 The above program uses two new commands LOADW and SAVEW As you are probably aware there are eight windows 0 7 which can be defined The first parameter is the reference to a window The second is the bank number SAVEW window number bank save window to bank LOADW window number bank load window from bank See the chapters in the user manual about windows for more details Kironics MEMORY EXPANSION 1 5 1 MORE WINDOWING A window of any size even the whole screen will fit into a single bank of expansion RAM This is fine if your window is nearly a full screen or will vary in size like the above example On the other hand if your window w
33. ry is from a new block i e block 2 or higher otherwise the original block 1 is implied Thus code 0 selects the original unmapped 64K code 2 selects a completely new block of 64K the other codes are a mixture 20 MEMORY EXPANSION Notes 1 On power up code 0 is selected 2 The VDU circuitry always reads from the original 64K block 1 independently of the code 3 If code 3 is used reads from amp 4000 to amp 7FFF on CPC 464 and 664 machines will only return the correct data if the upper ROM is disabled This is at variance with CPC 6128 operation but is unlikely to be a significant difference 4 If code 3 is used addresses 4000 to amp 7FFF must not be used to run programs they are intended for VDU or data access only Bits D5 D3 64K Block Select Codes D5 D4 D3 BLOCK 0 0 0 2 ie new memory sub blocks came from block 2 as in CPC 6128 0 0 T 3 0 1 0 4 0 1 q 5 Which of the above codes are relevant to your machine depends on total memory see previous remarks Notes 1 On power up code 0 0 0 is selected 2 Bits D5 D4 D3 above count up as blocks are selected This may assist the programmer 3 If 2x256K memory expanders are fitted to the machine and option links are set appropriately all patterns on D5 D3 can be used giving a maximum of 512K extra memory The memory that is used for a 256K silicon disc is correctly mapped to provide the extra 256K to give 512K total
Download Pdf Manuals
Related Search
Related Contents
LP-80 Samsung LA46C750R2R Manuel de l'utilisateur Bedienungsanleitung - Cycling Amana AMH* Furnace User Manual 942568 TVS 1 - Electro Depot Sunix VGA2614 video converter Samsung C5510 Korisničko uputstvo Operating Instructions G 41 - 127 / i-e - Science Manuel CA ARCserve Backup para Windows Guia do Usuário do Dashboard Copyright © All rights reserved.
Failed to retrieve file