Значок ресурса

Display

Нет прав на скачивание
Автор: Richard M. Taylor,Richard Taylor
Год: 1984
Издатели: Your Computer
Языки: 🇬🇧 Английский
Формат: 📼 TZX лента
Требования: 🖥️ ZX Spectrum 16K, 🖥️ ZX Spectrum 48K

Ссылки:
Страница на ZXArt
Страница на World Of Spectrum
Страница на Spectrum Computing

Скриншоты:
Display-RUN-1.png


Display





Richard Taylor points the way


to better graphics display commands


for the 16K and 48K Spectrum





The Spectrum has a distinct lack of commands to produce


graphic displays. Its PLOT, DRAW and CIRCLE commands are


very rudimentary and do nothing to exploit the full graphic


potential of this high resolution machine. To produce


displays worthy of this machine's graphic capabilities


requires a complex and confusing assortment of the vague


statements that Sinclair Basic does possess. Other machines


often have commands to draw ellipses, rectangles and


triangles and the additional facility to paint specific


areas of the screen in different colours. In order to


partially remedy this fundamental problem, I present a


machine-code program for both the 16K and 48K machines.


[At this point, the instructions followed for entering,


checking and saving the code, none of which is relevant


if you already have the TZX - which you should if you're


reading this. We return to the text at:]


To load the program back into the machine use:


For 48K owners


CLEAR 64623: LOAD ""CODE


For 16K owners


CLEAR 31855: LOAD ""CODE


[which, reasonably, assumes that you only entered the code


for your own machine. The TZX contains both; take care to


load the correct one.]


The commands are put in REM statements. Each REM state-


ment which contains the new commands must be preceded by a


RANDOMIZE USR 64624


on 48K machines and


RANDOMIZE USR 31856


on 16K machines. The REM statement must be the next command


after this machine-code call instruction, be it the next


statement on the same line or the first statement on the


following line. If this rule is neglected then the computer


will respond with error C - "Nonsense in BASIC".


Whether you type the commands in upper or lower case or


a combination of the two, the new statements will be recog-


nised by the computer. If any sort of error occurs as a


result of incorrect syntax, it will be interpreted by the


computer as an error C.


In normal Basic commands which print onto the display,


it is possible to put colour parameters just after the


keyword. This is not possible with the new commands, so you


must use a slightly different method. If you intend to use


the universal colours which have been set up using the INK,


PAPER, FLASH, BRIGHT, OVER and INVERSE commands as solitary


statements, then you must make the first command in the REM


statement a TEMPS. This merely indicates to the computer


that you wish to use the universal colours in all succeed-


ing commands in that REM statement.


Conversely, if you wish to set up your own temporary


colours then you must place a dummy PRINT statement as the


statement preceding the RANDOMIZE USR instruction. This


PRINT statement contains the colour information. For


example:


PRINT INK 3; PAPER 7;


will set the colours to magenta ink on yellow paper. The


PRINT statement does not actually affect the contents of


the screen, only the temporary colours. When using this


method, no TEMPS command is required as you are not using


the universal colours.


There now follows a description of each of the six


commands:


MOVE x,y: This command simply moves the plot position to


x,y. As Sinclair Basic stands, it has no facility to do


this unless you use


PLOT INVERSE 1; OVER 1; INK 8; PAPER 8;


BRIGHT 8; FLASH 8;x,y


but this is a little bit complicated. The command is espe-


cially useful for moving the plot position prior to using a


paint command.


The two parameters, x and y, can be entered in one of a


couple of ways. Either you can put the number in directly -


i.e.


MOVE 128,88


or you can use a variable name - i.e.


MOVE a,b


The only stipulation when using variables is that it must


be a single letter simple numeric variable. If you use a


variable that is not defined then the computer will respond


with the usual error 2 - "Variable not found".


The above notes apply to any of the other new commands


which have parameters. Please note that you are not allowed


to do any mathematics in the parameters, e.g.


MOVE a-1,b-3


Instead you could do something like


LET x=a-1: LET y=b-3


and then


MOVE x,y


LINE x,y or LINE (x1,y1)-(x2,y2): The LINE command has


two different possible formats. The first format has the


form


LINE x,y


where x and y are the co-ordinates of a point on the


screen. The command draws a line from the last position


plotted to the point supplied. The advantage of this is


that it uses real screen points rather than the relative


displacements used on the Sinclair DRAW command. This


method is often more easy to use.


The colour of the line is determined by a dummy PRINT


statement preceding the RANDOMIZE USR command if you are


using temporary colours or by a preceding TEMPS instruction


if you are using the universal colours.


The second form of the command is slightly different and


is similar to the line command found on micro-computers


running Microsoft Basic. Its form is


LINE (x1,y1)-(x2,y2)


It draws a line from the point x1,y1 to the point x2,y2.


This has the same effect as the rather more cumbersome


MOVE x1,y1/LINE x2,y2


BOX x,y: This command draws a rectangle on screen at the


current position with a length of x and a height of y. The


last plotted position is used as the bottom left hand


corner of the rectangle.


Again, the colour of the box is determined in a similar


way to that in the previous command, LINE.


CIRCLE x,y: Unlike the normal CIRCLE command, this one


allows you to draw ellipses as well as normal circles. The


circle's centre is determined by the last plotted position.


The first of the two parameters, x, is the radius of the


circle while the second parameter gives the height-width


ratio of the circle. This must be in the range of 1 to 255,


10 being the ratio for a normal circle.


PAINT: This command allows you to paint a particular


area of the screen in a certain colour. The command paints


from the last plotted position in all directions until it


reaches an ink border. It is important that the start


position is not a point which has been plotted to an ink


colour - hence the need for a MOVE command - otherwise the


computer will think that that is an ink border and the


painting will not go as you would expect it to go. The


routine will not paint behind objects which are in the


start position's "shadow"; see figure 2.





+--------------------------+


|#################Unpainted|


|#################area##|##|


|#######+----------+ | |


|###o###| | v |


|###^###| | |


|###|###+----------+ |


|#Start####################|


|#position#################|


+--------------------------+


Figure 2.





It is sometimes necessary to start from a couple of pouits


to completely paint an irregular area. The command will,


however, properly paint any rectangle where-ever the start


position is, as long as it is inside the rectangle's boun-


daries.


WCLS a,b,c,d: This command allows you to clear part of


the screen, while leaving the remainder intact. This is


often a useful facility when you are using different parts


of the screen for different purposes. The parameters a and


b describe the column and line positions respectively of


the top left hand corner of the area to be cleared.


Parameter c describes how many columns are to be cleared


while the final parameter, d, describes how many lines are


to be cleared. As you may have noticed, these line and


column numbers are given the opposite way around to the way


in which they are given for the PRINT AT instruction, which


has the line number first, followed by the column number.


The screen area cleared is described in a diagrammatic form


in figure 3.





+--------------------------+


|\_ -------- c -------> |


| \_ |


| | \_ |


| | |


| d Area |


| | cleared |


| v |


| |


+--------------------------+


Figure 3.





The colour of the cleared area is described in the normal


fashion for the new commands. Please note, however, when


using the TEMPS command the area is cleared with


PAPER 8; FLASH 8; BRIGHT 8;


so that only the ink colour is actually altered. This


situation can be remedied by using an empty dummy print


statement instead of a TEMPS command - i.e.


PRINT;


Listing 4 to 7 give example uses of the new commands and


serve to clear up any misunderstandings you might have


concerning the syntax. [The magazine versions worked only


on a 48K machine, and had to be modified for the 16K; the


ones on the TZX adapt themselves to RAMTOP.]
Автор
Verter_bot
Загрузки
0
Просмотры
1
Расширение
zip
Размер
1.4 КБ
Хэш
99cf2b763a6b0d996d62128ef1be0c9b
Первый выпуск
Последнее обновление

Оценки

0.00 звезд(ы) 0 оценок
Назад
Вверх