The UDG Bank 84 UDGs must be enough for anyone. B.J. Kamphuis shows us how to achieve this on a Spectrum. User Defined Graphics are a valuable and relatively easy means of producing arcade action, background pictures or business graphic details. Although twenty one are easily obtainable, it is surprising how often you find you could do with a few more. There are many ways of getting an increased number of UDGs and B.J. has adopted the method of storing four banks which are transferred to and from the set UDG area of memory as required. Now if 168 bytes have to be moved by BASIC a noticable delay is introduced so a short machine code routine is used to keep the program moving smoothly. The UDGs are stored in four banks named, not surprisingly, bank1, bank2, bank3 and bank4. Every bank can be trans- ferred to the 'active' or normal UDG set and back. To define a bank all you need to do is set them up as ordinary UDGs from BASIC as normal, then use this program to store the characters in the memory reserved for that bank. To move a bank of UDGs to the storage area all you have to do is use the command, either from a BASIC program or as a direct command: RANDOMIZE USR address: REM W1 Now 'address' is either 64000 or 31232 depending on whether you have a 16K or 48K Spectrum, and the 'W' after the REM tells the machine code routine to write from the normal UDG area to store, and the '1' tells it which bank to use. Therefore when setting up your UDG banks you will use W1, W2, W3 and W4 depending on which bank you are working on. The opposite effect, that of loading the normal UDG area with the characters in a bank, is achieved by using RANDOMIZE USR address: REM L1 - note 'L' instead of 'W'. Once the banks have been set up then save the whole four sets plus the machine code with the command SAVE "udgs"CODE address, 1535 and to use in a program include after the program has loaded the commands CLEAR address - 1: LOAD ""CODE. [ The TZX contains, for each memory size, the program from the article which loads the code, followed by the machine code plus four sample UDG banks as a CODE file. (The UDGs are identical for both versions. Providing eight different sets would be a bit much even for me.) Mind you, why you would go to all this trouble instead of simply poking the System Var UDG (23675/6), I don't know. ]