%OP%JUY %OP%DECharacter Editor - Instructions %CO:A,4,64% %C%@T@ %JL%screen that are not part of the standard character set supplied with the machine. %JL%a complicated VDU statement, and exist separately from the %JR%normal ASCII characters. Up to 64 may be held simultaneously. %JL%Uses for these include objects in games, foreign language %JL%characters, decorative borders and simple graphics. These are %JL%all available without requiring the `patch', so that text and %JR%graphics can be mixed together and the programme run on an unexpanded machine. %JR%programmers by automating the process of calculating the codes %JL%required to define characters and also displaying the character %JR%at actual size as it is built up, pixel by pixel. The codes %JL%must then be copied manually, as I have not included any method of "saving" them. %JL%I - INVERT, which produces a reflection of the character about %JL%M - MIRROR, which produces a reflection of the character about %JR%S - SHIFT. The standard alpha-numeric characters are designed %JL%R - REVERSE. This replaces each black pixel with a white one, %JR%C - CLEAR. This clears the 8 x 6 grid, and all the codes are %JR%Q - QUIT - does just that, after giving you the option of %JL%one formed by several units. The easiest way of doing this %JR%is to draw out the design on squared paper and enter it one %JL%unit at a time. These can then be allocated to a string, using CHR$(8) to CHR$(11) (cursor left, right, down and up) also. %JR%To save on repeating long sequences of VDU statements newly- designed characters can be allocated to strings. %JR%some techniques for mixing text and graphics. It is easier to %JL%do this than write pages of boring notes for you to read. One program is ready to run, but requires a machine with a 128k RAM %JR%pack, as a 32k machine will apparently only support 8 user- %JR%defined characters. (If this is the case try re-writing lines %JL%100-120 to define M$, N$, and O$ as " ". This will spoil the design a bit, but at least the program will run.) %JR%graphic character, line 30 defines B$ as that character, and %JR%lines 80 - 100 print it repeatedly. [Save the following lines %JL%from #B to RUN as plain text under the name "B" or "WALL.EXE", %JR%and execute the file to enter it into BASIC %H4%via%H4% the CLI. %JL%(Ensure that no program already exists in BASIC because the adding this new programme will wreck it!)] #B .J 10 *NAME wall 20 VDU1,138,61,70,4,4,63,32,32,32,63,4 30 B$=CHR$(1)+CHR$(130)+CHR$(63)+CHR$(70) 40 C$=CHR$(80)+CHR$(79)+CHR$(83)+CHR$(84) 50 D$=CHR$(32)+CHR$(78)+CHR$(79) 60 E$=CHR$(66)+CHR$(73)+CHR$(76)+CHR$(76)+CHR$(83) 70 PRINT CHR$(1)+"3+BC" 80 FOR I%PC%= 1TO751 90 PRINT B$; 100 NEXT I%PC% 110 FOR I%PC%=1TO5 120 PRINT TAB(30,I%PC%);SPC(5) 130 NEXT I%PC% 140 PRINT TAB(30,2);C$ 150 PRINT TAB(30,3);D$ 160 PRINT TAB(30,4);E$ 170 G$=GET$: IF G$=""THEN 180 ELSE VDU1,66: END RUN %CO:B,12,60% %JR%BBC BASIC on the Z88 allows one to print characters on the %JL%These characters are defined by the programmer by means of %JL%The %H1%%H2%USER - DEFINED CHARACTER EDITOR%H2%%H1% is designed to aid Features of the program are - a horizontal axis. a vertical axis. %JL%with the left column of pixels left white. This is to stop %JR%adjacent characters touching. A mirror image produced as %JL%above will have this blank column on the right side. The %JR%`shift' facility restores it to the left, by moving each %JL%column one to the right, and sticking the column which "falls off" the end back on the left. and vice versa. %JR%The effect of each of these instructions can be reversed by %JL%pressing the same key again (once for I, M, R and five times for S). %JL%lost. You are given the opportunity to reconsider.("Are you sure?"). Press Y to confirm your decision. changing your mind. As with `C', all codes will be erased. %JL%How can larger shapes be drawn? The method is to construct %JL%I have written a couple of short programs to illustrate %JL%The shorter program is listed below. Line 20 defines the %CO:C,12,48%%CO:D,12,36%%CO:E,12,24%%CO:F,12,12%