CF83-9: PMODE Graphics Words Set Manual CF83 Forth Copyright (c) 1992 by M. David Johnson BDS Software P.O. Box 485 Glenview, IL 60025-0485 You may make as many copies of this document as you wish foryour own use, but you may not sell or give away any copies toanyone else. "Thou shalt not steal" Exodus 20:15 In order to use this product, you must have a copy of BDS Software's product CF83: Forth-83 Standard Required Words Set. CF83 is available from BDS Software, P.O. Box 485, Glenview, IL.60025-0485, for $15.00 with the User's Guide on disk only, or for $19.00 with a printed copy of the User's Guide included. These prices are complete, including all shipping and handling charges, but are subject to change without notice. This manual you are reading now does not stand alone. To fully understand the contents of this manual, you will need either a copy of BDS Software's product CF83-1: Technical Reference Manual, or a copy of the Forth-83 Standard. CF83-1 is available from BDS Software, P.O. Box 485, Glenview, IL. 60025-0485, for $10.00 with the manual on disk only, or for $25.00 with a printed copy of the manual included. These pricesare complete, including all shipping and handling charges, but are subject to change without notice. If you wish a copy of the Forth-83 Standard, it is available from the Forth Interest Group (FIG), P.O. Box 8231, San Jose, CA95155, phone (408) 277-0668, fax (408) 286-8988. Their price was still $15.00 +3.00 handling for US, Canada, or Mexico delivery as of April 1992. California Residents add sales tax. The CF83 PMODE Graphics Word Set provides graphics control for the Color Computer 2 and for the CoCo2 emulation on the CoCo3. It provides the graphics modes of the CoCo2 on either machine. There are eight PMODES provided in this word set, the five implemented in BASIC and three others that are available on the CoCo2 but not implemented in BASIC. As in BASIC, if you are using a CoCo3 with an RGB monitor, the color sets will be different than described herein. Each PMODE in this word set includes the equivalent of all the PMODE graphics commands ( although they are named differently and worksomewhat differently ) and some additional useful CF83 PMODE Graphics Words. Very different from BASIC is the fact that you only have to loadthe PMODE that you want to use. PMODEs you don't intend to use in a given program don't have to be loaded at all. This division into separate PMODEs results in some duplication and overuse of memory if you need more than one PMODE in a given program, but the tradeoff is greater graphics speed. As with BASIC, the origin of the screen is in the upper left hand corner, and x-coordinates are positive to the right, while y-coordinates are positive downwards. In general, you should make sure you understand your CoCo's PMODE Graphics in BASIC before proceeding with this manual. PMODE A This is the 64 x 64 four-color mode. It is what Tandy refers toas mode 1C in its technical literature. It is not implemented in BASIC. It's screen is 64 columns wide by 64 rows high, and each pixel can be one of the four colors of the current color set. Color Set 0 Color Set 1 Code Color Code Color 0 Green 0 Buff 1 Yellow 1 Cyan 2 Blue 2 Magenta 3 Red 3 Orange Since the monitor screen is wider than it is high, each pixel isactually wider than it is high. If you draw a 32 x 32 "square" on the screen, it actually looks like a rectangle, wider than itis high. In PMODE A, the Aspect Ratio ( = vertical pixel size divided by horizontal dot size ) is just about 0.87 on the monitors we have available ( it may vary slightly on yours ). This means that if you draw a 28 wide by 32 high "rectangle" on the screen, it will look more like a square. With Disk 1 in drive 0, use 81 LOAD to load PMODE A. To use PMODE A, the first thing you must do is set the mode. PMA0 sets the mode with Color Set 0 and PMA1 sets the mode with Color Set 1. Next you must set the background color and clear the PMODE A screen. PCLSA0 clears the screen to Color 0 ( Green or Buff ). PCLSA1 clears it to Color 1, PCLSA2 to Color 2, and PCLSA3 to Color 3. Although you can switch from PMA0 to PMA1 and vice-versa at any time, once you have set the background color, you cannot do another PCLSA0, PCLSA1, PCLSA2, or PCLSA3 without clearing the screen and destroying your drawing. Next you must set the foreground color you wish to draw with. PFCOLA0 sets the foreground color to Color 0. PFCOLA1 sets it to Color 1, PFCOLA2 to Color 2, and PFCOLA3 to Color 3. Although you will usually leave the mode and background color asoriginally set, you will most likely change the foreground colorfrom time-to-time as you develop your drawing. In preparing your drawing, you will use PSETA to set individual pixels to the previously selected foreground color, PPOINTA to return the current color of a pixel, PLINEA to draw a line from one point to another, PDLINEA to draw a line from a point in a given direction for a given distance, PELLIPSEA to draw curves, circles, and ellipses, and PPAINTA to color-in chosen regions onthe drawing. To repeat portions of the drawing on other parts of the screen, and/or to implement animation, you will use PMAKEA to create a variable to store a window of the screen for future use, PPUTA to store a window of the screen to that variable, PCLRA to clearthe window to a specific color, and PGETA to return the window to the screen at a specified point. You will use PSTORA to save the graphics screen to disk and PLOADA to recall it to the screen from disk. Finally, you will use PQUITA to exit from the PMODE A Graphics screen and return to the normal CF83 text screen. As a simple exercise, try this: 8 10 60 35 1 pmakea sname : test1 pma0 pclsa0 pfcola1 32 32 30 30 0 360 pellipsea 32 32 24 24 0 360 pellipsea pfcola2 32 7 1 ppainta key drop 8 10 sname pputa 8 10 60 35 1 pclra key drop 8 10 sname pgeta key drop pquita ; test1 When you execute TEST1, two concentric ellipses will be drawn onthe screen and the space between them will be painted. After the drawing is complete, press any key and a window will be saved and cleared. Press a key again, and the window will be returned and the picture restored. Press a key again, and the graphics will disappear and the normal CF83 text screen will return. The PMODE A words are: PCLRA ( xul yul xlr ylr color -- ) Clear the rectangular window of the screen to the color specified. xul is the x-coordinate of the upper left hand corner of the window and it can be any integer from 0 to 63 which is exactly divisible by four ( i.e. it must be 0, 4, 8, 12, 16, ... ). yul is the y-coordinate of the upper left hand corner of the window and it can be any integer from 0 through 63 inclusive. xlr is the x-coordinate of the lower right hand corner of the window and it, like xul, must be exactly divisible by four. ylr is the y-coordinate of the lower right hand corner of the window. color = 0, 1, 2, or 3. PCLSA0 ( -- ) Clear the PMODE A screen to background color 0: Green or Buff. PCLSA1 ( -- ) Clear the PMODE A screen to background color 1: Yellow or Cyan. PCLSA2 ( -- ) Clear the PMODE A screen to background color 2: Blue or Magenta. PCLSA3 ( -- ) Clear the PMODE A screen to background color 3: Red or Orange. PDLINEA ( x0 y0 r angle -- xn yn ) Draw a line on the screen, with the previously set foreground color, from x0, y0 to xn, yn. x0, y0 are the beginning point's coordinates; each can be any integer from 0 to 63 inclusive. r is the length of the line in terms of screen coordinates and must not result in the line extending past the borders of the screen. angle is the direction in which the line is to be drawn. Angles are measured clockwise in degrees from the positive x-axis direction, i.e. 0 degrees = 360 degrees is to the right, 90 degrees is straight down, 180 degrees is to the left, and 270 degrees is straight up. Angles can be any integer degree value from 0 to 360 inclusive. xn, yn are the ending point's coordinates, left on the stack by the system, in case the user wants to continue with a different line from the end of the first line. If not used, these end coordinates should be dropped. PELLIPSEA ( xc yc ea eb ba qa -- ) Draw an elliptical curve centered at xc, yc; with 1/2 vertical axis = ea and 1/2 horizontal axis = eb; and beginning at angle ba and ending at angle qa. xc, yc are the center coordinates and can be any integer from 0 to 63. If the curve is completely closed, it is an ellipse. ea and eb are like the radius of a circle: ea is the distance in terms of screen coordinates from the center to the top ( or bottom ) of the curve along the 270 ( or 90 ) degree axis. eb is the distance from the center to the right ( or left ) edge of the curve along the 0 ( or 180 ) degree axis. If the curve is completely closed and ea = eb, then it is a "circle" (see aspect ratio note above). ba and qa are the beginning and ending angles of the curve. For example, if ba = 0 and qa = 180, the curve is one half of an ellipse, concave upwards; ba = 90 and qa = 270 is concave to the right. For a completely closed curve, use ba = 0 and qa = 360 ( ba = 0 and qa = 0 gives a single point ). Unlike other words, the ellipse drawing words in this set allow their curves to extend beyond the screen. They will not be shown, but can be "drawn" without causing an error as other words ( e.g. PLINEA ) do if they extend off the screen. For example, 64 32 60 60 0 360 pellipsea will draw the left portion of the ellipse that appears on the screen. PFCOLA0 ( -- ) Set the foreground color to 0: Green or Buff. PFCOLA1 ( -- ) Set the foreground color to 1: Yellow or Cyan. PFCOLA2 ( -- ) Set the foreground color to 2: Blue or Magenta. PFCOLA3 ( -- ) Set the foreground color to 3: Red or Orange. PGETA ( xul yul tb -- ) Get a window from memory at address tb to the screen at coordinates xul, yul. Generally used in the form: 16 19 sname pgeta where sname is the name of the storage array the window was previously PPUTed to. xul, yul are the coordinates of the upper left hand corner of the window. xul must be exactly divisible by four and in the range 0-63. yul must be in the range 0-63. The window must not extend beyond the screen area. PLINEA ( x0 y0 xn yn -- ) Draw a line on the screen, with the previously set foreground color, from x0, y0 to xn, yn. x0, y0 are the beginning point's coordinates; each can be any integer from 0 to 63 inclusive. xn, yn are the ending point's coordinates; each can be any integer from 0 to 63 inclusive. PLOADA ( +n -- ) Load a drawing from block +n on disk to the screen. PMA0 ( -- ) Setup the PMODE A graphics screen using Color Set 0. PMA1 ( -- ) Setup the PMODE A graphics screen using Color Set 1. PMAKEA ( xul yul xlr ylr -- ) Create a variable array in memory to store a window of the screen with upper left hand corner xul, yul; and lower right hand corner xlr, ylr. Generally used in the form: 16 19 32 27 pmakea sname where sname is the name of the storage array. Upon creation, the first two bytes of the array contain the number of bytes per window line ( Each byte = 4 pixels ), and the second two bytes contain the number of window lines. The rest of the storage array is empty. Once created, the variable array can only be used for the window specified or for another window with identical width and height. PPAINTA ( x y limit-color -- ) Paint a totally enclosed region using the previously selected foreground color until the bordering limit-color is reached. x, y are the coordinates of a seed point selected by the user to be completely within the region to be painted. Limit-color = 0, 1, 2, or 3. For the purposes of PPAINTA, the edges of the screen are equivalent to the limit-color. PPOINTA ( x y -- c ) Return the current color of a pixel. x, y are the pixel's coordinates; each can be any integer from 0 to 63 inclusive. c = the pixel's current color number = 0, 1, 2, or 3. PPUTA ( xul yul tb -- ) Put a window to memory at address tb from the screen at coordinates xul, yul. Generally used in the form: 16 19 sname pputa where sname is the name of the storage array the window is to be PPUTed to. sname must have been previously created with PMAKEA for the exact window size desired. xul, yul are the coordinates of the upper left hand corner of the window. xul must be exactly divisible by four and in the range 0-63. yul must be in the range 0-63. The window must not extend beyond the screen area. PQUITA ( -- ) Leave PMODE A Graphics and return to the normal CF83 text screen. PSETA ( x y -- ) Set a pixel to the previously selected foreground color. x, y are the coordinates of the pixel; each can be any integer from 0 to 63 inclusive. PSTORA ( +n -- ) Store a drawing to block +n on disk from the screen. PMODE B This is the 128 x 64 two-color mode. It is what Tandy refers toas mode 1R in its technical literature. It is not implemented in BASIC. It's screen is 128 columns wide by 64 rows high, and each pixel can be one of the two colors of the current color set. Color Set 0 Color Set 1 Code Color Code Color 0 Black 0 Black 1 Green 1 Buff In PMODE B, the Aspect Ratio is about 1.75: if you draw a 32 wide by 18 high "rectangle" on the screen, it will look more like a square. With Disk 1 in drive 0, use 82 LOAD to load PMODE B. The PMODE B words are: PCLRB ( xul yul xlr ylr color -- ) Clear the rectangular window of the screen to the color specified. xul is the x-coordinate of the upper left hand corner of the window and it can be any integer from 0 to 127 which is exactly divisible by eight ( i.e. it must be 0, 8, 16, 24, 32, ... ). yul is the y-coordinate of the upper left hand corner of the window and it can be any integer from 0 through 63 inclusive. xlr is the x-coordinate of the lower right hand corner of the window and it, like xul, must be exactly divisible by eight. ylr is the y-coordinate of the lower right hand corner of the window. color = 0 or 1. PCLSB0 ( -- ) Clear the PMODE B screen to background color 0: Black. PCLSB1 ( -- ) Clear the PMODE B screen to background color 1: Green or Buff. PDLINEB ( x0 y0 r angle -- xn yn ) Draw a line on the screen, with the previously set foreground color, from x0, y0 to xn, yn. x0 can be 0-127 and y0 can be 0-63. PELLIPSEB ( xc yc ea eb ba qa -- ) Draw an elliptical curve centered at xc, yc; with 1/2 vertical axis = ea and 1/2 horizontal axis = eb; and beginning at angle ba and ending at angle qa. xc can be 0-127 and yc can be 0-63. PFCOLB0 ( -- ) Set the foreground color to 0: Black. PFCOLB1 ( -- ) Set the foreground color to 1: Green or Buff. PGETB ( xul yul tb -- ) Get a window from memory at address tb to the screen at coordinates xul, yul. xul must be exactly divisible by eight and in the range 0-127. yul must be in the range 0-63. PLINEB ( x0 y0 xn yn -- ) Draw a line on the screen, with the previously set foreground color, from x0, y0 to xn, yn. x0 and xn can be 0-127 and y0 and yn can be 0-63. PLOADB ( +n -- ) Load a drawing from block +n on disk to the screen. PMB0 ( -- ) Setup the PMODE B graphics screen using Color Set 0. PMB1 ( -- ) Setup the PMODE B graphics screen using Color Set 1. PMAKEB ( xul yul xlr ylr -- ) Create a variable array in memory to store a window of the screen with upper left hand corner xul, yul; and lower right hand corner xlr, ylr. xul and xlr must be exactly divisible by eight. ( 8 pixels per byte ). PPAINTB ( x y limit-color -- ) Paint a totally enclosed region using the previously selected foreground color until the bordering limit-color is reached. PPOINTB ( x y -- c ) Return the current color of a pixel. PPUTB ( xul yul tb -- ) Put a window to memory at address tb from the screen at coordinates xul, yul. xul must be exactly divisible by eight. PQUITB ( -- ) Leave PMODE B Graphics and return to the normal CF83 text screen. PSETB ( x y -- ) Set a pixel to the previously selected foreground color. PSTORB ( +n -- ) Store a drawing to block +n on disk from the screen. PMODE C This is the 128 x 64 four-color mode. It is what Tandy refers to as mode 2C in its technical literature. It is not implemented in BASIC. It's screen is 128 columns wide by 64 rows high, and each pixel can be one of the four colors of the current color set. Color Set 0 Color Set 1 Code Color Code Color 0 Green 0 Buff 1 Yellow 1 Cyan 2 Blue 2 Magenta 3 Red 3 Orange In PMODE C, the Aspect Ratio is about 1.75: if you draw a 32 wide by 18 high "rectangle" on the screen, it will look more like a square. With Disk 2 in drive 0, use 1 LOAD to load PMODE C. The PMODE C words are: PCLRC ( xul yul xlr ylr color -- ) Clear the rectangular window of the screen to the color specified. xul and xlr must be exactly divisible by four and in the range 0-127. yul and ylr must be in the range 0-63. color = 0, 1, 2, or 3. PCLSC0 ( -- ) Clear the PMODE C screen to background color 0: Green or Buff. PCLSC1 ( -- ) Clear the PMODE C screen to background color 1: Yellow or Cyan. PCLSC2 ( -- ) Clear the PMODE C screen to background color 2: Blue or Magenta. PCLSC3 ( -- ) Clear the PMODE C screen to background color 3: Red or Orange. PDLINEC ( x0 y0 r angle -- xn yn ) Draw a line on the screen, with the previously set foreground color, from x0, y0 to xn, yn. x0 can be 0-127 and y0 can be 0-63. PELLIPSEC ( xc yc ea eb ba qa -- ) Draw an elliptical curve centered at xc, yc; with 1/2 vertical axis = ea and 1/2 horizontal axis = eb; and beginning at angle ba and ending at angle qa. xc can be 0-127 and yc can be 0-63. PFCOLC0 ( -- ) Set the foreground color to 0: Green or Buff. PFCOLC1 ( -- ) Set the foreground color to 1: Yellow or Cyan. PFCOLC2 ( -- ) Set the foreground color to 2: Blue or Magenta. PFCOLC3 ( -- ) Set the foreground color to 3: Red or Orange. PGETC ( xul yul tb -- ) Get a window from memory at address tb to the screen at coordinates xul, yul. xul must be exactly divisible by four and in the range 0-127. yul must be in the range 0-63. PLINEC ( x0 y0 xn yn -- ) Draw a line on the screen, with the previously set foreground color, from x0, y0 to xn, yn. x0 and xn can be 0-127 and y0 and yn can be 0-63. PLOADC ( +n -- ) Load a drawing from blocks +n and +n+1 on disk to the screen. PMC0 ( -- ) Setup the PMODE C graphics screen using Color Set 0. PMC1 ( -- ) Setup the PMODE C graphics screen using Color Set 1. PMAKEC ( xul yul xlr ylr -- ) Create a variable array in memory to store a window of the screen with upper left hand corner xul, yul; and lower right hand corner xlr, ylr. xul and xlr must be exactly divisible by four. PPAINTC ( x y limit-color -- ) Paint a totally enclosed region using the previously selected foreground color until the bordering limit-color is reached. PPOINTC ( x y -- c ) Return the current color of a pixel. PPUTC ( xul yul tb -- ) Put a window to memory at address tb from the screen at coordinates xul, yul. xul must be exactly divisible by four. PQUITC ( -- ) Leave PMODE C Graphics and return to the normal CF83 text screen. PSETC ( x y -- ) Set a pixel to the previously selected foreground color. PSTORC ( +n -- ) Store a drawing to blocks +n and +n+1 on disk from the screen. PMODE D This is the 128 x 96 two-color mode. It is what Tandy refers toas mode 2R in its technical literature. It is PMODE 0 in BASIC. It's screen is 128 columns wide by 96 rows high, and each pixel can be one of the two colors of the current color set. Color Set 0 Color Set 1 Code Color Code Color 0 Black 0 Black 1 Green 1 Buff In PMODE D, the Aspect Ratio is about 1.16: if you draw a 32 wide by 28 high "rectangle" on the screen, it will look more like a square. With Disk 2 in drive 0, use 2 LOAD to load PMODE D. The PMODE D words are: PCLRD ( xul yul xlr ylr color -- ) Clear the rectangular window of the screen to the color specified. xul and xlr must be exactly divisible by eight and in the range 0-127. yul and ylr must be in the range 0-95. color = 0 or 1. PCLSD0 ( -- ) Clear the PMODE D screen to background color 0: Black. PCLSD1 ( -- ) Clear the PMODE D screen to background color 1: Green or Buff. PDLINED ( x0 y0 r angle -- xn yn ) Draw a line on the screen, with the previously set foreground color, from x0, y0 to xn, yn. x0 can be 0-127 and y0 can be 0-95. PELLIPSED ( xc yc ea eb ba qa -- ) Draw an elliptical curve centered at xc, yc; with 1/2 vertical axis = ea and 1/2 horizontal axis = eb; and beginning at angle ba and ending at angle qa. xc can be 0-127 and yc can be 0-95. PFCOLD0 ( -- ) Set the foreground color to 0: Black. PFCOLD1 ( -- ) Set the foreground color to 1: Green or Buff. PGETD ( xul yul tb -- ) Get a window from memory at address tb to the screen at coordinates xul, yul. xul must be exactly divisible by eight and in the range 0-127. yul must be in the range 0-95. PLINED ( x0 y0 xn yn -- ) Draw a line on the screen, with the previously set foreground color, from x0, y0 to xn, yn. x0 and xn can be 0-127 and y0 and yn can be 0-95. PLOADD ( +n -- ) Load a drawing from blocks +n and +n+1 on disk to the screen. PMD0 ( -- ) Setup the PMODE D graphics screen using Color Set 0. PMD1 ( -- ) Setup the PMODE D graphics screen using Color Set 1. PMAKED ( xul yul xlr ylr -- ) Create a variable array in memory to store a window of the screen with upper left hand corner xul, yul; and lower right hand corner xlr, ylr. xul and xlr must be exactly divisible by eight. PPAINTD ( x y limit-color -- ) Paint a totally enclosed region using the previously selected foreground color until the bordering limit-color is reached. PPOINTD ( x y -- c ) Return the current color of a pixel. PPUTD ( xul yul tb -- ) Put a window to memory at address tb from the screen at coordinates xul, yul. xul must be exactly divisible by eight. PQUITD ( -- ) Leave PMODE D Graphics and return to the normal CF83 text screen. PSETD ( x y -- ) Set a pixel to the previously selected foreground color. PSTORD ( +n -- ) Store a drawing to blocks +n and +n+1 on disk from the screen. PMODE E This is the 128 x 96 four-color mode. It is what Tandy refers to as mode 3C in its technical literature. It is PMODE 1 in BASIC. It's screen is 128 columns wide by 96 rows high, and each pixel can be one of the four colors of the current color set. Color Set 0 Color Set 1 Code Color Code Color 0 Green 0 Buff 1 Yellow 1 Cyan 2 Blue 2 Magenta 3 Red 3 Orange In PMODE E, the Aspect Ratio is about 1.16: if you draw a 32 wide by 28 high "rectangle" on the screen, it will look more like a square. With Disk 2 in drive 0, use 3 LOAD to load PMODE E. The PMODE E words are: PCLRE ( xul yul xlr ylr color -- ) Clear the rectangular window of the screen to the color specified. xul and xlr must be exactly divisible by four and in the range 0-127. yul and ylr must be in the range 0-95. color = 0, 1, 2, or 3. PCLSE0 ( -- ) Clear the PMODE E screen to background color 0: Green or Buff. PCLSE1 ( -- ) Clear the PMODE E screen to background color 1: Yellow or Cyan. PCLSE2 ( -- ) Clear the PMODE E screen to background color 2: Blue or Magenta. PCLSE3 ( -- ) Clear the PMODE E screen to background color 3: Red or Orange. PDLINEE ( x0 y0 r angle -- xn yn ) Draw a line on the screen, with the previously set foreground color, from x0, y0 to xn, yn. x0 can be 0-127 and y0 can be 0-95. PELLIPSEE ( xc yc ea eb ba qa -- ) Draw an elliptical curve centered at xc, yc; with 1/2 vertical axis = ea and 1/2 horizontal axis = eb; and beginning at angle ba and ending at angle qa. xc can be 0-127 and yc can be 0-95. PFCOLE0 ( -- ) Set the foreground color to 0: Green or Buff. PFCOLE1 ( -- ) Set the foreground color to 1: Yellow or Cyan. PFCOLE2 ( -- ) Set the foreground color to 2: Blue or Magenta. PFCOLE3 ( -- ) Set the foreground color to 3: Red or Orange. PGETE ( xul yul tb -- ) Get a window from memory at address tb to the screen at coordinates xul, yul. xul must be exactly divisible by four and in the range 0-127. yul must be in the range 0-95. PLINEE ( x0 y0 xn yn -- ) Draw a line on the screen, with the previously set foreground color, from x0, y0 to xn, yn. x0 and xn can be 0-127 and y0 and yn can be 0-95. PLOADE ( +n -- ) Load a drawing from blocks +n thru +n+2 on disk to the screen. PME0 ( -- ) Setup the PMODE E graphics screen using Color Set 0. PME1 ( -- ) Setup the PMODE E graphics screen using Color Set 1. PMAKEE ( xul yul xlr ylr -- ) Create a variable array in memory to store a window of the screen with upper left hand corner xul, yul; and lower right hand corner xlr, ylr. xul and xlr must be exactly divisible by four. PPAINTE ( x y limit-color -- ) Paint a totally enclosed region using the previously selected foreground color until the bordering limit-color is reached. PPOINTE ( x y -- c ) Return the current color of a pixel. PPUTE ( xul yul tb -- ) Put a window to memory at address tb from the screen at coordinates xul, yul. xul must be exactly divisible by four. PQUITE ( -- ) Leave PMODE E Graphics and return to the normal CF83 text screen. PSETE ( x y -- ) Set a pixel to the previously selected foreground color. PSTORE ( +n -- ) Store a drawing to blocks +n thru +n+2 on disk from the screen. PMODE F This is the 128 x 192 two-color mode. It is what Tandy refers to as mode 3R in its technical literature. It is PMODE 2 in BASIC. It's screen is 128 columns wide by 192 rows high, and each pixel can be one of the two colors of the current color set. Color Set 0 Color Set 1 Code Color Code Color 0 Black 0 Black 1 Green 1 Buff In PMODE F, the Aspect Ratio is about 0.58: if you draw a 19 wide by 32 high "rectangle" on the screen, it will look more like a square. With Disk 2 in drive 0, use 4 LOAD to load PMODE F. The PMODE F words are: PCLRF ( xul yul xlr ylr color -- ) Clear the rectangular window of the screen to the color specified. xul and xlr must be exactly divisible by eight and in the range 0-127. yul and ylr must be in the range 0-191 color = 0 or 1. PCLSF0 ( -- ) Clear the PMODE F screen to background color 0: Black. PCLSF1 ( -- ) Clear the PMODE F screen to background color 1: Green or Buff. PDLINEF ( x0 y0 r angle -- xn yn ) Draw a line on the screen, with the previously set foreground color, from x0, y0 to xn, yn. x0 can be 0-127 and y0 can be 0-191. PELLIPSEF ( xc yc ea eb ba qa -- ) Draw an elliptical curve centered at xc, yc; with 1/2 vertical axis = ea and 1/2 horizontal axis = eb; and beginning at angle ba and ending at angle qa. xc can be 0-127 and yc can be 0-191. PFCOLF0 ( -- ) Set the foreground color to 0: Black. PFCOLF1 ( -- ) Set the foreground color to 1: Green or Buff. PGETF ( xul yul tb -- ) Get a window from memory at address tb to the screen at coordinates xul, yul. xul must be exactly divisible by eight and in the range 0-127. yul must be in the range 0-191. PLINEF ( x0 y0 xn yn -- ) Draw a line on the screen, with the previously set foreground color, from x0, y0 to xn, yn. x0 and xn can be 0-127 and y0 and yn can be 0-191. PLOADF ( +n -- ) Load a drawing from blocks +n thru +n+2 on disk to the screen. PMF0 ( -- ) Setup the PMODE F graphics screen using Color Set 0. PMF1 ( -- ) Setup the PMODE F graphics screen using Color Set 1. PMAKEF ( xul yul xlr ylr -- ) Create a variable array in memory to store a window of the screen with upper left hand corner xul, yul; and lower right hand corner xlr, ylr. xul and xlr must be exactly divisible by eight. PPAINTF ( x y limit-color -- ) Paint a totally enclosed region using the previously selected foreground color until the bordering limit-color is reached. PPOINTF ( x y -- c ) Return the current color of a pixel. PPUTF ( xul yul tb -- ) Put a window to memory at address tb from the screen at coordinates xul, yul. xul must be exactly divisible by eight. PQUITF ( -- ) Leave PMODE F Graphics and return to the normal CF83 text screen. PSETF ( x y -- ) Set a pixel to the previously selected foreground color. PSTORF ( +n -- ) Store a drawing to blocks +n thru +n+2 on disk from the screen. PMODE G This is the 128 x 192 four-color mode. It is what Tandy refers to as mode 6C in its technical literature. It is PMODE 3 in BASIC. It's screen is 128 columns wide by 192 rows high, and each pixel can be one of the four colors of the current color set. Color Set 0 Color Set 1 Code Color Code Color 0 Green 0 Buff 1 Yellow 1 Cyan 2 Blue 2 Magenta 3 Red 3 Orange In PMODE G, the Aspect Ratio is about 0.58: if you draw a 19 wide by 32 high "rectangle" on the screen, it will look more like a square. With Disk 2 in drive 0, use 5 LOAD to load PMODE G. The PMODE G words are: PCLRG ( xul yul xlr ylr color -- ) Clear the rectangular window of the screen to the color specified. xul and xlr must be exactly divisible by four and in the range 0-127. yul and ylr must be in the range 0-191. color = 0, 1, 2, or 3. PCLSG0 ( -- ) Clear the PMODE G screen to background color 0: Green or Buff. PCLSG1 ( -- ) Clear the PMODE G screen to background color 1: Yellow or Cyan. PCLSG2 ( -- ) Clear the PMODE G screen to background color 2: Blue or Magenta. PCLSG3 ( -- ) Clear the PMODE G screen to background color 3: Red or Orange. PDLINEG ( x0 y0 r angle -- xn yn ) Draw a line on the screen, with the previously set foreground color, from x0, y0 to xn, yn. x0 can be 0-127 and y0 can be 0-191. PELLIPSEG ( xc yc ea eb ba qa -- ) Draw an elliptical curve centered at xc, yc; with 1/2 vertical axis = ea and 1/2 horizontal axis = eb; and beginning at angle ba and ending at angle qa. xc can be 0-127 and yc can be 0-191. PFCOLG0 ( -- ) Set the foreground color to 0: Green or Buff. PFCOLG1 ( -- ) Set the foreground color to 1: Yellow or Cyan. PFCOLG2 ( -- ) Set the foreground color to 2: Blue or Magenta. PFCOLG3 ( -- ) Set the foreground color to 3: Red or Orange. PGETG ( xul yul tb -- ) Get a window from memory at address tb to the screen at coordinates xul, yul. xul must be exactly divisible by four and in the range 0-127. yul must be in the range 0-191. PLINEG ( x0 y0 xn yn -- ) Draw a line on the screen, with the previously set foreground color, from x0, y0 to xn, yn. x0 and xn can be 0-127 and y0 and yn can be 0-191. PLOADG ( +n -- ) Load a drawing from blocks +n thru +n+5 on disk to the screen. PMG0 ( -- ) Setup the PMODE G graphics screen using Color Set 0. PMG1 ( -- ) Setup the PMODE G graphics screen using Color Set 1. PMAKEG ( xul yul xlr ylr -- ) Create a variable array in memory to store a window of the screen with upper left hand corner xul, yul; and lower right hand corner xlr, ylr. xul and xlr must be exactly divisible by four. PPAINTG ( x y limit-color -- ) Paint a totally enclosed region using the previously selected foreground color until the bordering limit-color is reached. PPOINTG ( x y -- c ) Return the current color of a pixel. PPUTG ( xul yul tb -- ) Put a window to memory at address tb from the screen at coordinates xul, yul. xul must be exactly divisible by four. PQUITG ( -- ) Leave PMODE G Graphics and return to the normal CF83 text screen. PSETG ( x y -- ) Set a pixel to the previously selected foreground color. PSTORG ( +n -- ) Store a drawing to blocks +n thru +n+5 on disk from the screen. PMODE H This is the 256 x 192 two-color mode. It is what Tandy refers to as mode 6R in its technical literature. It is PMODE 4 in BASIC. It's screen is 256 columns wide by 192 rows high, and each pixel can be one of the two colors of the current color set. Color Set 0 Color Set 1 Code Color Code Color 0 Black 0 Black 1 Green 1 Buff In PMODE H, the Aspect Ratio is about 1.16: if you draw a 32 wide by 28 high "rectangle" on the screen, it will look more like a square. With Disk 2 in drive 0, use 6 LOAD to load PMODE H. The PMODE H words are: PCLRH ( xul yul xlr ylr color -- ) Clear the rectangular window of the screen to the color specified. xul and xlr must be exactly divisible by eight and in the range 0-255. yul and ylr must be in the range 0-191 color = 0 or 1. PCLSH0 ( -- ) Clear the PMODE H screen to background color 0: Black. PCLSH1 ( -- ) Clear the PMODE H screen to background color 1: Green or Buff. PDLINEH ( x0 y0 r angle -- xn yn ) Draw a line on the screen, with the previously set foreground color, from x0, y0 to xn, yn. x0 can be 0-255 and y0 can be 0-191. PELLIPSEH ( xc yc ea eb ba qa -- ) Draw an elliptical curve centered at xc, yc; with 1/2 vertical axis = ea and 1/2 horizontal axis = eb; and beginning at angle ba and ending at angle qa. xc can be 0-255 and yc can be 0-191. PFCOLH0 ( -- ) Set the foreground color to 0: Black. PFCOLH1 ( -- ) Set the foreground color to 1: Green or Buff. PGETH ( xul yul tb -- ) Get a window from memory at address tb to the screen at coordinates xul, yul. xul must be exactly divisible by eight and in the range 0-255. yul must be in the range 0-191. PLINEH ( x0 y0 xn yn -- ) Draw a line on the screen, with the previously set foreground color, from x0, y0 to xn, yn. x0 and xn can be 0-255 and y0 and yn can be 0-191. PLOADH ( +n -- ) Load a drawing from blocks +n thru +n+5 on disk to the screen. PMH0 ( -- ) Setup the PMODE H graphics screen using Color Set 0. PMH1 ( -- ) Setup the PMODE H graphics screen using Color Set 1. PMAKEH ( xul yul xlr ylr -- ) Create a variable array in memory to store a window of the screen with upper left hand corner xul, yul; and lower right hand corner xlr, ylr. xul and xlr must be exactly divisible by eight. PPAINTH ( x y limit-color -- ) Paint a totally enclosed region using the previously selected foreground color until the bordering limit-color is reached. PPOINTH ( x y -- c ) Return the current color of a pixel. PPUTH ( xul yul tb -- ) Put a window to memory at address tb from the screen at coordinates xul, yul. xul must be exactly divisible by eight. PQUITH ( -- ) Leave PMODE H Graphics and return to the normal CF83 text screen. PSETH ( x y -- ) Set a pixel to the previously selected foreground color. PSTORH ( +n -- ) Store a drawing to blocks +n thru +n+5 on disk from the screen. GENERAL MATH ROUTINES Each PMODE Load Block loads some general math routines before loading the actual PMODE graphics package desired. If you are going to use more than one PMODE in a program, you should alter your load blocks so that the math routines are only loaded once:before the first graphics package. For your reference, the general math words are: DUM* ( ud1 ud2 -- u64 ) u64 is the unsigned 64-bit result of multiplying the two unsigned double numbers ud1 and ud2. The 8 bytes of the result are on the stack with the highest byte on the top and the lowest byte on the bottom. ISQR ( ud -- u ) u is the integer portion of the positive square root of ud. MCOS ( angle -- multiplier modified-cosine ) angle is 0-360 degrees. multiplier is +1 or -1 depending on the quadrant the angle is in. modified-cosine is the absolute value of round(cos*65535). MSIN ( angle -- multiplier modified-sine ) analogous to MCOS, but for sine. SM* ( w1 w2 -- wd ) wd is the 32-bit signed result of multiplying w1 times w2. Note that the paint words PPAINTA through PPAINTH each establishand use a temporary graphics stack starting at address FE00 hex and proceeding downwards in memory. The user is responsible forassuring that there is sufficient space for this stack. The stack only exists while the paint word is executing - the space it uses is free for other uses at all other times. While the Assembler Extension Word Set also uses this part of memory for its temporary symbol table, no conflict results because the the paint words and the assembler do not use this area at the same time. ** END ** џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџЩЩЩЩЩЩЩЩЩЩЩЩЩЩЩЩЩЩЩЩЩЩЩЩЩЩЩЩЩЩЩЩЩЩЩЩЩЩЩЩЩЩЩЩЩЩЩЩЩЩЩЩЩЩЩЩЩЩС<=>?@ЧџџЩREADER BAS:.READER BIN;рџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ( PMODE Graphics Word Set - Mode A - Load Block ) ( Copyright [ c ] 1992 by BDS Software ) decimal cr cr .( Loading General Math Routines - 8 blocks ) : thrx ( +n1 +n2 -- ) over 1- rot rot 1+ swap cr do i dup 2 pick - cr 3 spaces ." Loading Block " . load loop drop ; 83 90 thrx cr cr .( Loading Mode A Graphics Package - 22 blocks ) 91 112 thrx cr cr .( Mode A Graphics Package LOADED. ) ( PMODE Graphics Word Set - Mode B - Load Block ) ( Copyright [ c ] 1992 by BDS Software ) decimal cr cr .( Loading General Math Routines - 8 blocks ) : thrx ( +n1 +n2 -- ) over 1- rot rot 1+ swap cr do i dup 2 pick - cr 3 spaces ." Loading Block " . load loop drop ; 83 90 thrx cr cr .( Loading Mode B Graphics Package - 22 blocks ) 113 134 thrx cr cr .( Mode B Graphics Package LOADED. ) ( Modified Sine Table - 1/1 ) ( Copyright [ c ] 1991 by BDS Software ) decimal 16 base ! variable sintbl 5A allot : XX ( addr +n -- addr+2 ) over 2+ rot rot swap ! ; sintbl 0 XX 478 XX 8EF XX D66 XX 11DB XX 168C XX 1AC2 XX 1F33 XX 23A1 XX 280C XX 2C74 XX 30D9 XX 3539 XX 3996 XX 3DEE XX 4242 XX 4690 XX 4AD9 XX 4F1B XX 5358 XX 578E XX 5BBE XX 5FE6 XX 6407 XX 681F XX 6C30 XX 7039 XX 7438 XX 782F XX 7C1C XX 8000 XX 83D9 XX 87A8 XX 8B6D XX 8F27 XX 92D5 XX 9679 XX 9A10 XX 9D9B XX A11B XX A48D XX A7F3 XX AB4B XX AE97 XX B1D4 XX B504 XX drop forget XX decimal ( Modified Cosine Table - 1/1 ) ( Copyright [ c ] 1991 by BDS Software ) decimal 16 base ! variable costbl 5A allot : XX ( addr +n -- addr+2 ) over 2+ rot rot swap ! ; costbl FFFF XX FFF5 XX FFD7 XX FFA5 XX FF5F XX FF06 XX FE98 XX FE17 XX FD81 XX FCD8 XX FC1B XX FB4B XX FA67 XX F96F XX F864 XX F746 XX F614 XX F4CF XX F377 XX F20C XX F08F XX EEFE XX ED5B XX EBA5 XX E9DD XX E803 XX E616 XX E418 XX E208 XX DFE6 XX DDB3 XX DB6E XX D919 XX D6B2 XX D43B XX D1B3 XX CF1A XX CC73 XX C9BA XX C6F2 XX C41B XX C134 XX BE3E XX BB39 XX B826 XX B504 XX drop forget XX decimal ( Modified Sine and Cosine with Quadrant Determination - 1/2 ) ( Copyright [ c ] 1991 by BDS Software ) decimal 16 base ! create tsin ( angle -- n1 +n2 ) here dup 2- ! 3416 , 3706 , ED8D , 003D , 1083 , 005A , 2318 , 1083 , 00B4 , 2317 , 1083 , 010E , 231D , CC01 , 68A3 , 8D00 , 248E , FFFF , 2017 , 8E00 , 0120 , 12CC , 00B4 , A38D , 0013 , 8E00 , 0120 , 0683 , 00B4 , 8EFF , FF36 , 1635 , 16AE , A16E , 9100 , 0012 , create tcos ( angle -- n1 +n2 ) here dup 2- ! 3416 , 3706 , ED8D , 003D , 1083 , 005A , 2318 , 1083 , 00B4 , 2317 , 1083 , 010E , 231D , CC01 , 68A3 , 8D00 , 248E , 0001 , 2017 , 8E00 , 0120 , 12CC , 00B4 , A38D , 0013 , 8EFF , FF20 , 0683 , 00B4 , 8EFF , FF36 , 1635 , 16AE , A16E , 9100 , 0012 , decimal ( Modified Sine and Cosine with Quadrant Determination - 2/2 ) ( Copyright [ c ] 1991 by BDS Software ) decimal 16 base ! create quadd ( angle -- angle quadrant-number ) here dup 2- ! 3416 , 3710 , 3610 , 4F5F , 5C8C , 005A , 230D , 5C8C , 00B4 , 2307 , 5C8C , 010E , 2301 , 5C36 , 0635 , 16AE , A16E , 9112 , decimal : msin ( angle -- multiplier modified-sine ) tsin dup 45 > if 90 swap - 2 * costbl + @ else 2 * sintbl + @ then ; : mcos ( angle -- multiplier modified-cosine ) tcos dup 45 > if 90 swap - 2 * sintbl + @ else 2 * costbl + @ then ; ( Integer Square Root - 1/1 ) ( Copyright [ c ] 1991 by BDS Software ) decimal 16 base ! create isqr ( ud -- u ) here dup 2- ! 3406 , 4F5F , ED8D , 00B8 , ED8D , 00BA , CCFF , FFED , 8D00 , B5ED , 8D00 , ABED , 8D00 , A920 , 12EC , 8D00 , A1A3 , 8D00 , 9B44 , 56E3 , 8D00 , 95ED , 8D00 , 95DD , CBDD , CDBD , 4327 , ECC4 , 1093 , CF25 , 0D22 , 38EC , 4210 , 93D1 , 2504 , 222F , 2066 , EC8D , 0078 , ED8D , 0076 , EC8D , 006E , 10A3 , 8D00 , 6B25 , 10A3 , 8D00 , 6527 , 3E10 , 8300 , 0127 , 38EC , 8D00 , 57ED , 8D00 , 55ED , 8D00 , 4D20 , A6EC , 8D00 , 4BED , 8D00 , 4910 , A38D , 0040 , 250C , A38D , 003A , 2715 , 1083 , 0001 , 270F , EC8D , 002E , ED8D , 002C , ED8D , 0022 , 16FF , 7CEC , 8D00 , 2310 , A38D , 001A , 2404 , ED8D , 0014 , 3706 , 3706 , EC8D , 000C , 3606 , 3506 , AEA1 , 6E91 , 0000 , 0000 , 0000 , 0000 , 0000 , decimal ( Signed Full Result Multiply - 1/1 ) ( Copyright [ c ] 1991 by BDS Software ) decimal : sm* ( w1 w2 -- wd ) over over 0< swap 0< and rot rot over over 0> swap 0> and 3 roll or rot rot abs swap abs um* rot not if dnegate then ; ( 32-bit by 32-bit Unsigned Multiply - 1/2 ) ( Copyright [ c ] 1991 by BDS Software ) decimal 16 base ! create dum* ( ud1 ud2 -- u64 ) here dup 2- ! 3416 , 3716 , 9F76 , DD74 , 3716 , 9F72 , DD70 , 0F64 , 0F65 , 0F66 , 0F67 , 0F68 , 0F69 , 0F6A , 0F6B , 9673 , D677 , 3D36 , 0696 , 73D6 , 763D , 3606 , 9673 , D675 , 3D36 , 06DC , 733D , 3606 , 9672 , D677 , 3D36 , 0696 , 72D6 , 763D , 3606 , 9672 , D675 , 3D36 , 0696 , 72D6 , 743D , 3606 , 9671 , D677 , 3D36 , 0696 , 71D6 , 763D , 3606 , 9671 , D675 , 3D36 , 0696 , 71D6 , 743D , 3606 , 9670 , D677 , 3D36 , 0696 , 70D6 , 763D , 3606 , 9670 , D675 , 3D36 , 0696 , 70D6 , 743D , 3606 , A6C8 , 1F97 , 6BA6 , C81E , ABC8 , 1D24 , 020C , 69AB , C817 , 2402 , 0C69 , 976A , 9669 , ABC8 , 1C24 , 020C , 68AB , C81B , 2402 , 0C68 , ABC8 , 1624 , 020C , 68AB , C815 , 2402 , decimal ( 32-bit by 32-bit Unsigned Multiply - 2/2 ) ( Copyright [ c ] 1991 by BDS Software ) decimal 16 base ! 0C68 , AB4F , 2402 , 0C68 , 9769 , 9668 , ABC8 , 1A24 , 020C , 67AB , C819 , 2402 , 0C67 , ABC8 , 1424 , 020C , 67AB , C813 , 2402 , 0C67 , AB4E , 2402 , 0C67 , AB4D , 2404 , 0C67 , AB47 , 2402 , 0C67 , 9768 , 9667 , ABC8 , 1824 , 020C , 66AB , C812 , 2402 , 0C66 , ABC8 , 1124 , 020C , 66AB , 4C24 , 020C , 66AB , 4B24 , 020C , 66AB , 4624 , 020C , 66AB , 4524 , 020C , 6697 , 6796 , 66AB , C810 , 2402 , 0C65 , AB4A , 2402 , 0C65 , AB49 , 2402 , 0C65 , AB44 , 2402 , 0C65 , AB43 , 2402 , 0C65 , 9766 , 9665 , AB48 , 2402 , 0C64 , AB42 , 2402 , 0C64 , AB41 , 2402 , 0C64 , 9765 , 9664 , ABC4 , 9764 , 33C8 , 209E , 6ADC , 6836 , 169E , 66DC , 6436 , 1635 , 16AE , A16E , 9112 , decimal ( PMODE Graphics Word Set - Mode A - 01/22 ) ( Copyright [ c ] 1992 by BDS Software ) decimal 16 base ! ( Set 4-color mask ) C0 81 c! 30 82 c! 0C 83 c! 03 84 c! : pma0 ( -- ) ( 64x64f0 ) FF22 c@ 7 and 80 + FF22 c! 1 FFC1 c! 0 FFC2 c! 0 FFC4 c! ; : pma1 ( -- ) ( 64x64f1 ) FF22 c@ 7 and 88 + FF22 c! 1 FFC1 c! 0 FFC2 c! 0 FFC4 c! ; : pclsa0 ( -- ) 0BA @ 400 0 fill ; : pclsa1 ( -- ) 0BA @ 400 55 fill ; : pclsa2 ( -- ) 0BA @ 400 0AA fill ; : pclsa3 ( -- ) 0BA @ 400 0FF fill ; create pfcola0 ( -- ) here dup 2- ! 3402 , 4F97 , B297 , B535 , 02AE , A16E , 9112 , decimal ( PMODE Graphics Word Set - Mode A - 02/22 ) ( Copyright [ c ] 1992 by BDS Software ) decimal 16 base ! create pfcola1 ( -- ) here dup 2- ! 3402 , 8601 , 97B2 , 8655 , 97B5 , 3502 , AEA1 , 6E91 , create pfcola2 ( -- ) here dup 2- ! 3402 , 8602 , 97B2 , 86AA , 97B5 , 3502 , AEA1 , 6E91 , create pfcola3 ( -- ) here dup 2- ! 3402 , 8603 , 97B2 , 86FF , 97B5 , 3502 , AEA1 , 6E91 , create pseta ( x y -- ) here dup 2- ! 3436 , 3706 , 8610 , 3DD3 , BADD , B037 , 06DD , BD54 , 54D3 , B01F , 014F , C603 , D4BE , CB81 , 1F02 , E6A4 , 1F98 , 43A4 , 84D4 , B5D7 , AF9A , AFA7 , 8435 , 36AE , A16E , 9112 , decimal ( PMODE Graphics Word Set - Mode A - 03/22 ) ( Copyright [ c ] 1992 by BDS Software ) decimal 16 base ! create la1 ( -- ) here dup 2- ! 3436 , 1212 , DCCD , D3CD , DDD1 , 93CB , DDCF , 93CB , DDD3 , 8D20 , 96BE , 91C4 , 2444 , DCCF , 1083 , 0000 , 2F0A , D3D3 , DDCF , 0CBE , 0CC0 , 20E6 , D3D1 , DDCF , 0CBE , 20DE , D6C0 , 8610 , 3DD3 , BADD , D5DC , BD54 , 54D3 , D51F , 014F , C603 , D4BE , CB81 , 1F02 , E6A4 , 1F98 , 43A4 , 84D4 , B5D7 , D59A , D5A7 , 8439 , 3536 , AEA1 , 6E91 , create la2 ( -- ) here dup 2- ! 3436 , DC8A , 93CB , 93CB , DDD1 , D3CD , DDCF , D3CD , DDD3 , 8D20 , 96C0 , 91C6 , 2444 , DCCF , 1083 , 0000 , 2F08 , D3D1 , DDCF , 0CC0 , 20E8 , D3D3 , DDCF , 0CBE , 0CC0 , 20DE , D6C0 , 8610 , 3DD3 , BADD , D5DC , BD54 , 54D3 , D51F , 014F , C603 , D4BE , CB81 , 1F02 , E6A4 , 1F98 , 43A4 , 84D4 , B5D7 , D59A , D5A7 , 8439 , 3536 , AEA1 , 6E91 , decimal ( PMODE Graphics Word Set - Mode A - 04/22 ) ( Copyright [ c ] 1992 by BDS Software ) decimal 16 base ! create la3 ( -- ) here dup 2- ! 3436 , DC8A , 93CB , 93CB , DDD1 , 93CD , DDCF , 93CD , DDD3 , 8D20 , 96C0 , 91C6 , 2444 , DCCF , 1083 , 0000 , 2F0A , D3D3 , DDCF , 0ABE , 0CC0 , 20E6 , D3D1 , DDCF , 0CC0 , 20DE , D6C0 , 8610 , 3DD3 , BADD , D5DC , BD54 , 54D3 , D51F , 014F , C603 , D4BE , CB81 , 1F02 , E6A4 , 1F98 , 43A4 , 84D4 , B5D7 , D59A , D5A7 , 8439 , 3536 , AEA1 , 6E91 , create la4 ( -- ) here dup 2- ! 3436 , DC8A , 93CD , 93CD , DDD1 , 93CB , DDCF , 93CB , DDD3 , 8D20 , 96BE , 91C4 , 2344 , DCCF , 1083 , 0000 , 2F08 , D3D1 , DDCF , 0ABE , 20E8 , D3D3 , DDCF , 0ABE , 0CC0 , 20DE , D6C0 , 8610 , 3DD3 , BADD , D5DC , BD54 , 54D3 , D51F , 014F , C603 , D4BE , CB81 , 1F02 , E6A4 , 1F98 , 43A4 , 84D4 , B5D7 , D59A , D5A7 , 8439 , 3536 , AEA1 , 6E91 , decimal ( PMODE Graphics Word Set - Mode A - 05/22 ) ( Copyright [ c ] 1992 by BDS Software ) decimal 16 base ! create la5 ( -- ) here dup 2- ! 3436 , DC8A , 93CD , 93CD , DDD1 , D3CB , DDCF , D3CB , DDD3 , 8D20 , 96BE , 91C4 , 2344 , DCCF , 1083 , 0000 , 2C08 , D3D1 , DDCF , 0ABE , 20E8 , D3D3 , DDCF , 0ABE , 0AC0 , 20DE , D6C0 , 8610 , 3DD3 , BADD , D5DC , BD54 , 54D3 , D51F , 014F , C603 , D4BE , CB81 , 1F02 , E6A4 , 1F98 , 43A4 , 84D4 , B5D7 , D59A , D5A7 , 8439 , 3536 , AEA1 , 6E91 , create la6 ( -- ) here dup 2- ! 3436 , 1212 , DCCB , D3CB , DDD1 , 93CD , DDCF , 93CD , DDD3 , 8D20 , 96C0 , 91C6 , 2344 , DCCF , 1083 , 0000 , 2C0A , D3D3 , DDCF , 0ABE , 0AC0 , 20E6 , D3D1 , DDCF , 0AC0 , 20DE , D6C0 , 8610 , 3DD3 , BADD , D5DC , BD54 , 54D3 , D51F , 014F , C603 , D4BE , CB81 , 1F02 , E6A4 , 1F98 , 43A4 , 84D4 , B5D7 , D59A , D5A7 , 8439 , 3536 , AEA1 , 6E91 , decimal ( PMODE Graphics Word Set - Mode A - 06/22 ) ( Copyright [ c ] 1992 by BDS Software ) decimal 16 base ! create la7 ( -- ) here dup 2- ! 3436 , 1212 , DCCB , D3CB , DDD1 , D3CD , DDCF , D3CD , DDD3 , 8D20 , 96C0 , 91C6 , 2344 , DCCF , 1083 , 0000 , 2C08 , D3D1 , DDCF , 0AC0 , 20E8 , D3D3 , DDCF , 0CBE , 0AC0 , 20DE , D6C0 , 8610 , 3DD3 , BADD , D5DC , BD54 , 54D3 , D51F , 014F , C603 , D4BE , CB81 , 1F02 , E6A4 , 1F98 , 43A4 , 84D4 , B5D7 , D59A , D5A7 , 8439 , 3536 , AEA1 , 6E91 , create la8 ( -- ) here dup 2- ! 3436 , 1212 , DCCD , D3CD , DDD1 , D3CB , DDCF , D3CB , DDD3 , 8D20 , 96BE , 91C4 , 2444 , DCCF , 1083 , 0000 , 2C0A , D3D3 , DDCF , 0CBE , 0AC0 , 20E6 , D3D1 , DDCF , 0CBE , 20DE , D6C0 , 8610 , 3DD3 , BADD , D5DC , BD54 , 54D3 , D51F , 014F , C603 , D4BE , CB81 , 1F02 , E6A4 , 1F98 , 43A4 , 84D4 , B5D7 , D59A , D5A7 , 8439 , 3536 , AEA1 , 6E91 , decimal ( PMODE Graphics Word Set - Mode A - 07/22 ) ( Copyright [ c ] 1992 by BDS Software ) decimal 16 base ! : la18 ( -- ) 0CD @ 0> if la1 else la8 then ; : la27 ( -- ) 0CD @ 0> if la2 else la7 then ; : la36 ( -- ) 0CD @ 0> if la3 else la6 then ; : la45 ( -- ) 0CD @ 0> if la4 else la5 then ; : la1845 ( -- ) 0CB @ 0> if la18 else la45 then ; : la2736 ( -- ) 0CB @ 0> if la27 else la36 then ; : plinea ( x0 y0 xn yn -- ) 0C5 ! 0C3 ! 0BF ! 0BD ! 0C3 @ 0BD @ - 0CB ! 0C5 @ 0BF @ - 0CD ! 0CB @ abs 0CD @ abs > if la1845 else la2736 then ; decimal ( PMODE Graphics Word Set - Mode A - 08/22 ) ( Copyright [ c ] 1992 by BDS Software ) decimal 16 base ! create ppointa ( x y -- c ) here dup 2- ! 3436 , 3706 , 8610 , 3DD3 , BADD , B037 , 06DD , BD54 , 54D3 , B01F , 014F , C603 , D4BE , CB81 , 1F02 , E6A4 , E484 , C103 , 2304 , 5454 , 20F8 , 4F36 , 0635 , 36AE , A16E , 9112 , decimal ( PMODE Graphics Word Set - Mode A - 09/22 ) ( Copyright [ c ] 1992 by BDS Software ) decimal variable x variable y variable xc variable yc variable xh variable yh variable ea variable eb variable a8 2 allot variable b8 2 allot variable d1 2 allot variable d2 2 allot variable de 2 allot variable dn 2 allot variable dse 2 allot variable dwn 2 allot : d- dnegate d+ ; : 2@ dup 2+ @ swap @ ; : 2! 2+ swap over 2- ! ! ; : sa ( angle -- quadrant# y x ) quadd swap dup msin eb @ um* 65535 um/mod swap drop * swap mcos ea @ um* 65535 um/mod swap drop * ; ( PMODE Graphics Word Set - Mode A - 10/22 ) ( Copyright [ c ] 1992 by BDS Software ) decimal variable xb variable yb variable xe variable ye variable qb variable qe variable qcodes 6 allot : qs1 ( -- ) -1 qcodes ! ; : qs2 ( -- ) -1 qcodes 2+ ! ; : qs3 ( -- ) -1 qcodes 4 + ! ; : qs4 ( -- ) -1 qcodes 6 + ! ; : qset1 ( -- ) qe @ dup 1 = if qs1 else dup 2 = if qs1 qs2 else dup 3 = if qs1 qs2 qs3 else qs1 qs2 qs3 qs4 then then then drop ; : qset2 ( -- ) qe @ dup 1 = if qs1 qs2 qs3 qs4 else dup 2 = if qs2 else dup 3 = if qs2 qs3 else qs2 qs3 qs4 then then then drop ; : qset3 ( -- ) qe @ dup 1 = if qs1 qs3 qs4 else dup 2 = if qs1 qs2 qs3 qs4 else dup 3 = if qs3 else qs3 qs4 then then then drop ; ( PMODE Graphics Word Set - Mode A - 11/22 ) ( Copyright [ c ] 1992 by BDS Software ) decimal : qset4 ( -- ) qe @ dup 1 = if qs1 qs4 else dup 2 = if qs1 qs2 qs4 else dup 3 = if qs1 qs2 qs3 qs4 else qs4 then then then drop ; : qset ( -- ) qb @ dup 1 = if qset1 else dup 2 = if qset2 else dup 3 = if qset3 else qset4 then then then drop ; : setr ( xc yc ea eb beginning-angle ending angle -- ) 5 roll xc ! 4 roll yc ! 3 roll ea ! rot eb ! sa xe ! ye ! qe ! sa xb ! yb ! qb ! 4 0 do i i qcodes + + 0 swap ! loop qset ; 16 base ! create pcka ( offset-x offset-y -- [ offset-x offset-y true ] or [ false ] ) here dup 2- ! 3406 , EC42 , 2D15 , 1083 , 003F , 2E0F , ECC4 , 2D0B , 1083 , 003F , 2E05 , CCFF , FF20 , 0533 , 44CC , 0000 , 3606 , 3506 , AEA1 , 6E91 , decimal ( PMODE Graphics Word Set - Mode A - 12/22 ) ( Copyright [ c ] 1992 by BDS Software ) decimal : psqa1 ( -- ) qcodes @ if x @ xb @ > y @ yb @ < or qb @ 1 = and not x @ xe @ < y @ ye @ > or qe @ 1 = and not and if x @ xc @ + y @ yc @ + pcka if pseta then then then ; : psqa2 ( -- ) qcodes 2+ @ if 0 x @ - xb @ > y @ yb @ > or qb @ 2 = and not 0 x @ - xe @ < y @ ye @ < or qe @ 2 = and not and if xc @ x @ - y @ yc @ + pcka if pseta then then then ; : psqa3 ( -- ) qcodes 4 + @ if 0 x @ - xb @ < 0 y @ - yb @ > or qb @ 3 = and not 0 x @ - xe @ > 0 y @ - ye @ < or qe @ 3 = and not and if xc @ x @ - yc @ y @ - pcka if pseta then then then ; : psqa4 ( -- ) qcodes 6 + @ if x @ xb @ < 0 y @ - yb @ < or qb @ 4 = and not x @ xe @ > 0 y @ - ye @ > or qe @ 4 = and not and if x @ xc @ + yc @ y @ - pcka if pseta then then then ; ( PMODE Graphics Word Set - Mode A - 13/22 ) ( Copyright [ c ] 1992 by BDS Software ) decimal : psqa ( -- ) psqa1 psqa2 psqa3 psqa4 ; : esu ( -- ) 0 x ! eb @ y ! eb @ dup um* 4 0 dum* drop drop ea @ dup um* eb @ 4 um* dum* drop drop d- ea @ dup um* d- d1 2! eb @ dup um* 12 0 dum* drop drop de 2! eb @ dup um* 12 0 dum* drop drop ea @ dup um* eb @ 1- 8 um* dum* drop drop d- dse 2! ea @ dup um* 8 0 dum* drop drop a8 2! eb @ dup um* 8 0 dum* drop drop b8 2! ; : esu1 ( -- ) x @ xh ! y @ yh ! ea @ x ! 0 y ! ea @ dup um* 4 0 dum* drop drop eb @ dup um* ea @ 4 um* dum* drop drop d- eb @ dup um* d+ d2 2! ea @ dup um* 12 0 dum* drop drop dn 2! ea @ dup um* 12 0 dum* drop drop eb @ dup um* ea @ 1- 8 um* dum* drop drop d- dwn 2! ; ( PMODE Graphics Word Set - Mode A - 14/22 ) ( Copyright [ c ] 1992 by BDS Software ) decimal : eq ( -- flag ) x @ xh @ = y @ yh @ = and x @ xh @ < or y @ yh @ > or not ; : el1 ( -- ) d1 2@ 0 0 d< if de 2@ d1 2@ d+ d1 2! b8 2@ de 2@ d+ de 2! b8 2@ dse 2@ d+ dse 2! 1 x +! else dse 2@ d1 2@ d+ d1 2! b8 2@ de 2@ d+ de 2! a8 2@ b8 2@ d+ dse 2@ d+ dse 2! 1 x +! -1 y +! then psqa ; : el2 ( -- ) d2 2@ 0 0 d< if dn 2@ d2 2@ d+ d2 2! a8 2@ dn 2@ d+ dn 2! a8 2@ dwn 2@ d+ dwn 2! 1 y +! else dwn 2@ d2 2@ d+ d2 2! a8 2@ dn 2@ d+ dn 2! a8 2@ b8 2@ d+ dwn 2@ d+ dwn 2! -1 x +! 1 y +! then psqa ; : pellipsea ( xc yc ea eb ba qa -- ) setr esu psqa begin dse 2@ 0 0 d< while el1 repeat esu1 psqa begin eq while el2 repeat ; ( PMODE Graphics Word Set - Mode A - 15/22 ) ( Copyright [ c ] 1992 by BDS Software ) decimal : pdlinea ( x0 y0 r angle -- xn yn ) swap dup ea ! eb ! sa rot drop 3 pick + rot rot over + swap 3 roll swap 3 pick 3 pick plinea ; : pquita ( -- ) 65314 c@ 7 and 248 + 65314 c! 1 65477 c! 1 65475 c! 0 65472 c! 186 @ 6144 255 fill 0 243 ! 0 245 ! pfcola0 ; ( PMODE Graphics Word Set - Mode A - 16/22 ) ( Copyright [ c ] 1992 by BDS Software ) decimal 16 base ! variable rx variable lx variable dadr variable dadl variable dir variable wasin create gpush ( left right dadl dadr y dir -- ) here dup 2- ! 3416 , 9E88 , 3706 , ED83 , 3706 , ED83 , 3706 , ED83 , 3706 , ED83 , 3706 , ED83 , 3706 , ED83 , 9F88 , 3516 , AEA1 , 6E91 , create gpull ( -- left right dadl dadr y dir ) here dup 2- ! 3416 , 9E88 , EC81 , 3606 , EC81 , 3606 , EC81 , 3606 , EC81 , 3606 , EC81 , 3606 , EC81 , 3606 , 9F88 , 3516 , AEA1 , 6E91 , : gpop ( -- ) gpull dir ! y ! dadr ! dadl ! rx ! lx ! ; decimal ( PMODE Graphics Word Set - Mode A - 17/22 ) ( Copyright [ c ] 1992 by BDS Software ) decimal : putr ( -- ) rx @ dadr @ 1+ > if dadr @ 1+ rx @ lx @ 1- rx @ 1+ y @ dir @ - dir @ negate gpush then ; : putl ( -- ) lx @ dadl @ 1- < if lx @ dadl @ 1- lx @ 1- rx @ 1+ y @ dir @ - dir @ negate gpush then ; : pstack ( -- ) wasin @ if lx @ rx @ lx @ 1- rx @ 1+ y @ dir @ + dir @ gpush putr putl then ; : psetac ( current-color# x y -- ) rot 178 c@ = not if pseta -1 wasin ! else drop drop then ; : psetal ( -- xl ) begin x @ dup 0< not swap y @ ppointa dup 134 @ = not rot and while x @ y @ psetac -1 x +! repeat drop x @ 1+ ; ( PMODE Graphics Word Set - Mode A - 18/22 ) ( Copyright [ c ] 1992 by BDS Software ) decimal : psetar ( -- xl ) begin x @ dup 63 > not swap y @ ppointa dup 134 @ = not rot and while x @ y @ psetac 1 x +! repeat drop x @ 1- ; : psetalr ( -- ) 0 wasin ! x @ 1+ psetal lx ! x ! psetar dup rx @ swap rx ! pstack rx ! 1+ x ! ; : pmra ( -- ) begin x @ dup dup 63 > not swap y @ ppointa 134 @ = rot rx @ 1- > not and and while 1 x +! repeat ; : pmrta ( -- ) 0 wasin ! pmra x @ dup rx @ 1- > not if lx ! psetar dup rx @ swap rx ! pstack rx ! 1+ x ! else drop then ; : pmlba ( -- ) x @ y @ ppointa 134 @ = if pmrta then ; : pmlaa ( -- ) lx @ x ! pmlba x @ dup 0< not swap y @ ppointa 134 @ = not and if psetalr then begin x @ rx @ 1- > not while pmrta repeat ; : pmloopa ( -- ) begin 136 @ 65024 < while gpop y @ dup 0< not swap 63 > not and if pmlaa then repeat ; ( PMODE Graphics Word Set - Mode A - 19/22 ) ( Copyright [ c ] 1992 by BDS Software ) decimal : ppainta ( x y limit-color# ) 134 ! y ! x ! 65024 136 ! x @ 1+ psetal lx ! x ! psetar 1+ rx ! lx @ rx @ lx @ 1- rx @ 1+ y @ 1+ 1 gpush lx @ rx @ lx @ 1- rx @ 1+ y @ 1- -1 gpush pmloopa ; 16 base ! : pstora ( +n -- ) block 0BA @ swap 400 cmove update flush ; : ploada ( +n -- ) block 0BA @ 400 cmove ; decimal ( PMODE Graphics Word Set - Mode A - 20/22 ) ( Copyright [ c ] 1992 by BDS Software ) decimal 16 base ! create wclrva ( xul yul xlr ylr color -- sb lb code nl ) here dup 2- ! 3416 , EC42 , A346 , 3406 , 3706 , 8655 , 3D34 , 06EC , 42A3 , 4654 , 5434 , 0637 , 1637 , 0686 , 103D , 1F01 , 3706 , 5454 , 3A1F , 10D3 , BA36 , 0635 , 0636 , 0635 , 0636 , 0635 , 0636 , 0635 , 16AE , A16E , 9112 , create xclra ( sb1 lb code -- sb2 lb code sb1 lb code ) here dup 2- ! 3406 , EC44 , 3606 , C300 , 10ED , 46EC , 4436 , 06EC , 4436 , 0635 , 06AE , A16E , 9112 , decimal : pclra ( xul yul xlr ylr color -- ) wclrva 0 do xclra fill loop drop drop drop ; ( PMODE Graphics Word Set - Mode A - 21/22 ) ( Copyright [ c ] 1992 by BDS Software ) decimal 16 base ! create dbsra ( xul yul xlr ylr -- bsr nl lb ) here dup 2- ! 3416 , EC42 , A346 , 5454 , 3406 , 3716 , A3C4 , C300 , 0134 , 0637 , 16A6 , 61E6 , 633D , 3606 , 3516 , 1E01 , 3616 , 3516 , AEA1 , 6E91 , decimal : pmakea ( xul yul xlr ylr -- ) dbsra create , , allot ; ( PMODE Graphics Word Set - Mode A - 22/22 ) ( Copyright [ c ] 1992 by BDS Software ) decimal 16 base ! create wconva ( xul yul tb -- sb tb4 lb nl ) here dup 2- ! 3436 , 3720 , 3706 , 8610 , 3D1F , 0137 , 0654 , 543A , 1F10 , D3BA , 3606 , AEA4 , EC22 , 3124 , 3636 , 3536 , AEA1 , 6E91 , create xcpya ( sb1 tb1 lb -- sb2 tb2 lb sb1 tb1 lb ) here dup 2- ! 3406 , EC44 , 3606 , C300 , 10ED , 46EC , 4436 , 06E3 , 44ED , 46EC , 4436 , 0635 , 06AE , A16E , 9112 , decimal : pputa ( xul yul tb -- ) wconva 0 do xcpya cmove loop drop drop drop ; : pgeta ( xul yul tb -- ) wconva 0 do xcpya swap rot rot cmove loop drop drop drop ; ( PMODE Graphics Word Set - Mode B - 01/xx ) ( Copyright [ c ] 1992 by BDS Software ) decimal 16 base ! ( Set 2-color mask ) 8040 79 ! 2010 7B ! 0804 7D ! 0201 7F ! : pmb0 ( -- ) ( 128x64t0 ) FF22 c@ 7 and 90 + FF22 c! 1 FFC1 c! 0 FFC2 c! 0 FFC4 c! ; : pmb1 ( -- ) ( 128x64t1 ) FF22 c@ 7 and 98 + FF22 c! 1 FFC1 c! 0 FFC2 c! 0 FFC4 c! ; : pclsb0 ( -- ) 0BA @ 400 0 fill ; : pclsb1 ( -- ) 0BA @ 400 0FF fill ; create pfcolb0 ( -- ) here dup 2- ! 3402 , 4F97 , B297 , B535 , 02AE , A16E , 9112 , decimal ( PMODE Graphics Word Set - Mode B - 02/xx ) ( Copyright [ c ] 1992 by BDS Software ) decimal 16 base ! create pfcolb1 ( -- ) here dup 2- ! 3402 , 8603 , 97B2 , 86FF , 97B5 , 3502 , AEA1 , 6E91 , create psetb ( x y -- ) here dup 2- ! 3436 , 3706 , 8610 , 3DD3 , BADD , B037 , 06DD , BD54 , 5454 , D3B0 , 1F01 , 4FC6 , 07D4 , BECB , 791F , 02E6 , A41F , 9843 , A484 , D4B5 , D7AF , 9AAF , A784 , 3536 , AEA1 , 6E91 , decimal ( PMODE Graphics Word Set - Mode B - 03/xx ) ( Copyright [ c ] 1992 by BDS Software ) decimal 16 base ! create lb1 ( -- ) here dup 2- ! 3436 , 1212 , DCCD , D3CD , DDD1 , 93CB , DDCF , 93CB , DDD3 , 8D20 , 96BE , 91C4 , 2445 , DCCF , 1083 , 0000 , 2F0A , D3D3 , DDCF , 0CBE , 0CC0 , 20E6 , D3D1 , DDCF , 0CBE , 20DE , D6C0 , 8610 , 3DD3 , BADD , D5DC , BD54 , 5454 , D3D5 , 1F01 , 4FC6 , 07D4 , BECB , 791F , 02E6 , A41F , 9843 , A484 , D4B5 , D7D5 , 9AD5 , A784 , 3935 , 36AE , A16E , 9112 , create lb2 ( -- ) here dup 2- ! 3436 , DC8A , 93CB , 93CB , DDD1 , D3CD , DDCF , D3CD , DDD3 , 8D20 , 96C0 , 91C6 , 2445 , DCCF , 1083 , 0000 , 2F08 , D3D1 , DDCF , 0CC0 , 20E8 , D3D3 , DDCF , 0CBE , 0CC0 , 20DE , D6C0 , 8610 , 3DD3 , BADD , D5DC , BD54 , 5454 , D3D5 , 1F01 , 4FC6 , 07D4 , BECB , 791F , 02E6 , A41F , 9843 , A484 , D4B5 , D7D5 , 9AD5 , A784 , 3935 , 36AE , A16E , 9112 , decimal ( PMODE Graphics Word Set - Mode B - 04/xx ) ( Copyright [ c ] 1992 by BDS Software ) decimal 16 base ! create lb3 ( -- ) here dup 2- ! 3436 , DC8A , 93CB , 93CB , DDD1 , 93CD , DDCF , 93CD , DDD3 , 8D20 , 96C0 , 91C6 , 2445 , DCCF , 1083 , 0000 , 2F0A , D3D3 , DDCF , 0ABE , 0CC0 , 20E6 , D3D1 , DDCF , 0CC0 , 20DE , D6C0 , 8610 , 3DD3 , BADD , D5DC , BD54 , 5454 , D3D5 , 1F01 , 4FC6 , 07D4 , BECB , 791F , 02E6 , A41F , 9843 , A484 , D4B5 , D7D5 , 9AD5 , A784 , 3935 , 36AE , A16E , 9112 , create lb4 ( -- ) here dup 2- ! 3436 , DC8A , 93CD , 93CD , DDD1 , 93CB , DDCF , 93CB , DDD3 , 8D20 , 96BE , 91C4 , 2345 , DCCF , 1083 , 0000 , 2F08 , D3D1 , DDCF , 0ABE , 20E8 , D3D3 , DDCF , 0ABE , 0CC0 , 20DE , D6C0 , 8610 , 3DD3 , BADD , D5DC , BD54 , 5454 , D3D5 , 1F01 , 4FC6 , 07D4 , BECB , 791F , 02E6 , A41F , 9843 , A484 , D4B5 , D7D5 , 9AD5 , A784 , 3935 , 36AE , A16E , 9112 , decimal ( PMODE Graphics Word Set - Mode B - 05/xx ) ( Copyright [ c ] 1992 by BDS Software ) decimal 16 base ! create lb5 ( -- ) here dup 2- ! 3436 , DC8A , 93CD , 93CD , DDD1 , D3CB , DDCF , D3CB , DDD3 , 8D20 , 96BE , 91C4 , 2345 , DCCF , 1083 , 0000 , 2C08 , D3D1 , DDCF , 0ABE , 20E8 , D3D3 , DDCF , 0ABE , 0AC0 , 20DE , D6C0 , 8610 , 3DD3 , BADD , D5DC , BD54 , 5454 , D3D5 , 1F01 , 4FC6 , 07D4 , BECB , 791F , 02E6 , A41F , 9843 , A484 , D4B5 , D7D5 , 9AD5 , A784 , 3935 , 36AE , A16E , 9112 , create lb6 ( -- ) here dup 2- ! 3436 , 1212 , DCCB , D3CB , DDD1 , 93CD , DDCF , 93CD , DDD3 , 8D20 , 96C0 , 91C6 , 2345 , DCCF , 1083 , 0000 , 2C0A , D3D3 , DDCF , 0ABE , 0AC0 , 20E6 , D3D1 , DDCF , 0AC0 , 20DE , D6C0 , 8610 , 3DD3 , BADD , D5DC , BD54 , 5454 , D3D5 , 1F01 , 4FC6 , 07D4 , BECB , 791F , 02E6 , A41F , 9843 , A484 , D4B5 , D7D5 , 9AD5 , A784 , 3935 , 36AE , A16E , 9112 , decimal ( PMODE Graphics Word Set - Mode B - 06/xx ) ( Copyright [ c ] 1992 by BDS Software ) decimal 16 base ! create lb7 ( -- ) here dup 2- ! 3436 , 1212 , DCCB , D3CB , DDD1 , D3CD , DDCF , D3CD , DDD3 , 8D20 , 96C0 , 91C6 , 2345 , DCCF , 1083 , 0000 , 2C08 , D3D1 , DDCF , 0AC0 , 20E8 , D3D3 , DDCF , 0CBE , 0AC0 , 20DE , D6C0 , 8610 , 3DD3 , BADD , D5DC , BD54 , 5454 , D3D5 , 1F01 , 4FC6 , 07D4 , BECB , 791F , 02E6 , A41F , 9843 , A484 , D4B5 , D7D5 , 9AD5 , A784 , 3935 , 36AE , A16E , 9112 , create lb8 ( -- ) here dup 2- ! 3436 , 1212 , DCCD , D3CD , DDD1 , D3CB , DDCF , D3CB , DDD3 , 8D20 , 96BE , 91C4 , 2445 , DCCF , 1083 , 0000 , 2C0A , D3D3 , DDCF , 0CBE , 0AC0 , 20E6 , D3D1 , DDCF , 0CBE , 20DE , D6C0 , 8610 , 3DD3 , BADD , D5DC , BD54 , 5454 , D3D5 , 1F01 , 4FC6 , 07D4 , BECB , 791F , 02E6 , A41F , 9843 , A484 , D4B5 , D7D5 , 9AD5 , A784 , 3935 , 36AE , A16E , 9112 , decimal ( PMODE Graphics Word Set - Mode B - 07/xx ) ( Copyright [ c ] 1992 by BDS Software ) decimal 16 base ! : lb18 ( -- ) 0CD @ 0> if lb1 else lb8 then ; : lb27 ( -- ) 0CD @ 0> if lb2 else lb7 then ; : lb36 ( -- ) 0CD @ 0> if lb3 else lb6 then ; : lb45 ( -- ) 0CD @ 0> if lb4 else lb5 then ; : lb1845 ( -- ) 0CB @ 0> if lb18 else lb45 then ; : lb2736 ( -- ) 0CB @ 0> if lb27 else lb36 then ; : plineb ( x0 y0 xn yn -- ) 0C5 ! 0C3 ! 0BF ! 0BD ! 0C3 @ 0BD @ - 0CB ! 0C5 @ 0BF @ - 0CD ! 0CB @ abs 0CD @ abs > if lb1845 else lb2736 then ; decimal ( PMODE Graphics Word Set - Mode B - 08/xx ) ( Copyright [ c ] 1992 by BDS Software ) decimal 16 base ! create ppointb ( x y -- c ) here dup 2- ! 3436 , 3706 , 8610 , 3DD3 , BADD , B037 , 06DD , BD54 , 5454 , D3B0 , 1F01 , 4FC6 , 07D4 , BECB , 791F , 02E6 , A4E4 , 84C1 , 0123 , 0354 , 20F9 , 4F36 , 0635 , 36AE , A16E , 9112 , decimal ( PMODE Graphics Word Set - Mode B - 09/xx ) ( Copyright [ c ] 1992 by BDS Software ) decimal variable x variable y variable xc variable yc variable xh variable yh variable ea variable eb variable a8 2 allot variable b8 2 allot variable d1 2 allot variable d2 2 allot variable de 2 allot variable dn 2 allot variable dse 2 allot variable dwn 2 allot : d- dnegate d+ ; : 2@ dup 2+ @ swap @ ; : 2! 2+ swap over 2- ! ! ; : sa ( angle -- quadrant# y x ) quadd swap dup msin eb @ um* 65535 um/mod swap drop * swap mcos ea @ um* 65535 um/mod swap drop * ; ( PMODE Graphics Word Set - Mode B - 10/xx ) ( Copyright [ c ] 1992 by BDS Software ) decimal variable xb variable yb variable xe variable ye variable qb variable qe variable qcodes 6 allot : qs1 ( -- ) -1 qcodes ! ; : qs2 ( -- ) -1 qcodes 2+ ! ; : qs3 ( -- ) -1 qcodes 4 + ! ; : qs4 ( -- ) -1 qcodes 6 + ! ; : qset1 ( -- ) qe @ dup 1 = if qs1 else dup 2 = if qs1 qs2 else dup 3 = if qs1 qs2 qs3 else qs1 qs2 qs3 qs4 then then then drop ; : qset2 ( -- ) qe @ dup 1 = if qs1 qs2 qs3 qs4 else dup 2 = if qs2 else dup 3 = if qs2 qs3 else qs2 qs3 qs4 then then then drop ; : qset3 ( -- ) qe @ dup 1 = if qs1 qs3 qs4 else dup 2 = if qs1 qs2 qs3 qs4 else dup 3 = if qs3 else qs3 qs4 then then then drop ; ( PMODE Graphics Word Set - Mode B - 11/xx ) ( Copyright [ c ] 1992 by BDS Software ) decimal : qset4 ( -- ) qe @ dup 1 = if qs1 qs4 else dup 2 = if qs1 qs2 qs4 else dup 3 = if qs1 qs2 qs3 qs4 else qs4 then then then drop ; : qset ( -- ) qb @ dup 1 = if qset1 else dup 2 = if qset2 else dup 3 = if qset3 else qset4 then then then drop ; : setr ( xc yc ea eb beginning-angle ending angle -- ) 5 roll xc ! 4 roll yc ! 3 roll ea ! rot eb ! sa xe ! ye ! qe ! sa xb ! yb ! qb ! 4 0 do i i qcodes + + 0 swap ! loop qset ; 16 base ! create pckb ( offset-x offset-y -- [ offset-x offset-y true ] or [ false ] ) here dup 2- ! 3406 , EC42 , 2D15 , 1083 , 007F , 2E0F , ECC4 , 2D0B , 1083 , 003F , 2E05 , CCFF , FF20 , 0533 , 44CC , 0000 , 3606 , 3506 , AEA1 , 6E91 , decimal ( PMODE Graphics Word Set - Mode B - 12/xx ) ( Copyright [ c ] 1992 by BDS Software ) decimal : psqb1 ( -- ) qcodes @ if x @ xb @ > y @ yb @ < or qb @ 1 = and not x @ xe @ < y @ ye @ > or qe @ 1 = and not and if x @ xc @ + y @ yc @ + pckb if psetb then then then ; : psqb2 ( -- ) qcodes 2+ @ if 0 x @ - xb @ > y @ yb @ > or qb @ 2 = and not 0 x @ - xe @ < y @ ye @ < or qe @ 2 = and not and if xc @ x @ - y @ yc @ + pckb if psetb then then then ; : psqb3 ( -- ) qcodes 4 + @ if 0 x @ - xb @ < 0 y @ - yb @ > or qb @ 3 = and not 0 x @ - xe @ > 0 y @ - ye @ < or qe @ 3 = and not and if xc @ x @ - yc @ y @ - pckb if psetb then then then ; : psqb4 ( -- ) qcodes 6 + @ if x @ xb @ < 0 y @ - yb @ < or qb @ 4 = and not x @ xe @ > 0 y @ - ye @ > or qe @ 4 = and not and if x @ xc @ + yc @ y @ - pckb if psetb then then then ; ( PMODE Graphics Word Set - Mode B - 13/xx ) ( Copyright [ c ] 1992 by BDS Software ) decimal : psqb ( -- ) psqb1 psqb2 psqb3 psqb4 ; : esu ( -- ) 0 x ! eb @ y ! eb @ dup um* 4 0 dum* drop drop ea @ dup um* eb @ 4 um* dum* drop drop d- ea @ dup um* d- d1 2! eb @ dup um* 12 0 dum* drop drop de 2! eb @ dup um* 12 0 dum* drop drop ea @ dup um* eb @ 1- 8 um* dum* drop drop d- dse 2! ea @ dup um* 8 0 dum* drop drop a8 2! eb @ dup um* 8 0 dum* drop drop b8 2! ; : esu1 ( -- ) x @ xh ! y @ yh ! ea @ x ! 0 y ! ea @ dup um* 4 0 dum* drop drop eb @ dup um* ea @ 4 um* dum* drop drop d- eb @ dup um* d+ d2 2! ea @ dup um* 12 0 dum* drop drop dn 2! ea @ dup um* 12 0 dum* drop drop eb @ dup um* ea @ 1- 8 um* dum* drop drop d- dwn 2! ; ( PMODE Graphics Word Set - Mode B - 14/xx ) ( Copyright [ c ] 1992 by BDS Software ) decimal : eq ( -- flag ) x @ xh @ = y @ yh @ = and x @ xh @ < or y @ yh @ > or not ; : el1 ( -- ) d1 2@ 0 0 d< if de 2@ d1 2@ d+ d1 2! b8 2@ de 2@ d+ de 2! b8 2@ dse 2@ d+ dse 2! 1 x +! else dse 2@ d1 2@ d+ d1 2! b8 2@ de 2@ d+ de 2! a8 2@ b8 2@ d+ dse 2@ d+ dse 2! 1 x +! -1 y +! then psqb ; : el2 ( -- ) d2 2@ 0 0 d< if dn 2@ d2 2@ d+ d2 2! a8 2@ dn 2@ d+ dn 2! a8 2@ dwn 2@ d+ dwn 2! 1 y +! else dwn 2@ d2 2@ d+ d2 2! a8 2@ dn 2@ d+ dn 2! a8 2@ b8 2@ d+ dwn 2@ d+ dwn 2! -1 x +! 1 y +! then psqb ; : pellipseb ( xc yc ea eb ba qa -- ) setr esu psqb begin dse 2@ 0 0 d< while el1 repeat esu1 psqb begin eq while el2 repeat ; ( PMODE Graphics Word Set - Mode B - 15/xx ) ( Copyright [ c ] 1992 by BDS Software ) decimal : pdlineb ( x0 y0 r angle -- xn yn ) swap dup ea ! eb ! sa rot drop 3 pick + rot rot over + swap 3 roll swap 3 pick 3 pick plineb ; : pquitb ( -- ) 65314 c@ 7 and 248 + 65314 c! 1 65477 c! 1 65475 c! 0 65472 c! 186 @ 6144 255 fill 0 243 ! 0 245 ! pfcolb0 ; ( PMODE Graphics Word Set - Mode B - 16/22 ) ( Copyright [ c ] 1992 by BDS Software ) decimal 16 base ! variable rx variable lx variable dadr variable dadl variable dir variable wasin create gpush ( left right dadl dadr y dir -- ) here dup 2- ! 3416 , 9E88 , 3706 , ED83 , 3706 , ED83 , 3706 , ED83 , 3706 , ED83 , 3706 , ED83 , 3706 , ED83 , 9F88 , 3516 , AEA1 , 6E91 , create gpull ( -- left right dadl dadr y dir ) here dup 2- ! 3416 , 9E88 , EC81 , 3606 , EC81 , 3606 , EC81 , 3606 , EC81 , 3606 , EC81 , 3606 , EC81 , 3606 , 9F88 , 3516 , AEA1 , 6E91 , : gpop ( -- ) gpull dir ! y ! dadr ! dadl ! rx ! lx ! ; decimal ( PMODE Graphics Word Set - Mode B - 17/22 ) ( Copyright [ c ] 1992 by BDS Software ) decimal : putr ( -- ) rx @ dadr @ 1+ > if dadr @ 1+ rx @ lx @ 1- rx @ 1+ y @ dir @ - dir @ negate gpush then ; : putl ( -- ) lx @ dadl @ 1- < if lx @ dadl @ 1- lx @ 1- rx @ 1+ y @ dir @ - dir @ negate gpush then ; : pstack ( -- ) wasin @ if lx @ rx @ lx @ 1- rx @ 1+ y @ dir @ + dir @ gpush putr putl then ; : psetbc ( current-color# x y -- ) rot 178 c@ = not if psetb -1 wasin ! else drop drop then ; : psetbl ( -- xl ) begin x @ dup 0< not swap y @ ppointb dup 134 @ = not rot and while x @ y @ psetbc -1 x +! repeat drop x @ 1+ ; ( PMODE Graphics Word Set - Mode B - 18/22 ) ( Copyright [ c ] 1992 by BDS Software ) decimal : psetbr ( -- xl ) begin x @ dup 127 > not swap y @ ppointb dup 134 @ = not rot and while x @ y @ psetbc 1 x +! repeat drop x @ 1- ; : psetblr ( -- ) 0 wasin ! x @ 1+ psetbl lx ! x ! psetbr dup rx @ swap rx ! pstack rx ! 1+ x ! ; : pmrb ( -- ) begin x @ dup dup 127 > not swap y @ ppointb 134 @ = rot rx @ 1- > not and and while 1 x +! repeat ; : pmrtb ( -- ) 0 wasin ! pmrb x @ dup rx @ 1- > not if lx ! psetbr dup rx @ swap rx ! pstack rx ! 1+ x ! else drop then ; : pmlbb ( -- ) x @ y @ ppointb 134 @ = if pmrtb then ; : pmlab ( -- ) lx @ x ! pmlbb x @ dup 0< not swap y @ ppointb 134 @ = not and if psetblr then begin x @ rx @ 1- > not while pmrtb repeat ; : pmloopb ( -- ) begin 136 @ 65024 < while gpop y @ dup 0< not swap 63 > not and if pmlab then repeat ; ( PMODE Graphics Word Set - Mode B - 19/22 ) ( Copyright [ c ] 1992 by BDS Software ) decimal : ppaintb ( x y limit-color# ) 134 ! y ! x ! 65024 136 ! x @ 1+ psetbl lx ! x ! psetbr 1+ rx ! lx @ rx @ lx @ 1- rx @ 1+ y @ 1+ 1 gpush lx @ rx @ lx @ 1- rx @ 1+ y @ 1- -1 gpush pmloopb ; 16 base ! : pstorb ( +n -- ) block 0BA @ swap 400 cmove update flush ; : ploadb ( +n -- ) block 0BA @ 400 cmove ; decimal ( PMODE Graphics Word Set - Mode B - 20/22 ) ( Copyright [ c ] 1992 by BDS Software ) decimal 16 base ! create wclrvb ( xul yul xlr ylr color -- sb lb code nl ) here dup 2- ! 3416 , EC42 , A346 , 3406 , 3706 , 8655 , 3D34 , 06EC , 42A3 , 4654 , 5454 , 3406 , 3716 , 3706 , 8610 , 3D1F , 0137 , 0654 , 5454 , 3A1F , 10D3 , BA36 , 0635 , 0636 , 0635 , 0636 , 0635 , 0636 , 0635 , 16AE , A16E , 9112 , create xclrb ( sb1 lb code -- sb2 lb code sb1 lb code ) here dup 2- ! 3406 , EC44 , 3606 , C300 , 10ED , 46EC , 4436 , 06EC , 4436 , 0635 , 06AE , A16E , 9112 , decimal : pclrb ( xul yul xlr ylr color -- ) wclrvb 0 do xclrb fill loop drop drop drop ; ( PMODE Graphics Word Set - Mode B - 21/22 ) ( Copyright [ c ] 1992 by BDS Software ) decimal 16 base ! create dbsrb ( xul yul xlr ylr -- bsr nl lb ) here dup 2- ! 3416 , EC42 , A346 , 5454 , 5434 , 0637 , 16A3 , C4C3 , 0001 , 3406 , 3716 , A661 , E663 , 3D36 , 0635 , 161E , 0136 , 1635 , 16AE , A16E , 9112 , decimal : pmakeb ( xul yul xlr ylr -- ) dbsrb create , , allot ; ( PMODE Graphics Word Set - Mode B - 22/22 ) ( Copyright [ c ] 1992 by BDS Software ) decimal 16 base ! create wconvb ( xul yul tb -- sb tb4 lb nl ) here dup 2- ! 3436 , 3720 , 3706 , 8610 , 3D1F , 0137 , 0654 , 5454 , 3A1F , 10D3 , BA36 , 06AE , A4EC , 2231 , 2436 , 3635 , 36AE , A16E , 9112 , create xcpyb ( sb1 tb1 lb -- sb2 tb2 lb sb1 tb1 lb ) here dup 2- ! 3406 , EC44 , 3606 , C300 , 10ED , 46EC , 4436 , 06E3 , 44ED , 46EC , 4436 , 0635 , 06AE , A16E , 9112 , decimal : pputb ( xul yul tb -- ) wconvb 0 do xcpyb cmove loop drop drop drop ; : pgetb ( xul yul tb -- ) wconvb 0 do xcpyb swap rot rot cmove loop drop drop drop ; џ+& •0,&H31FF&гM"READER"&$Ђ&*(ŠџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџЁџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ3ж2                     33&323F3X3j3†3Œ3š3Ј3К3Ш3д3к3т3ю444.4@4X4n4„4–4Ќ4Т4Ъ4о4ш4є4ў55(5F5b5t55Ј5М5ж5є6 6666H6h6Š6Њ6Р6м6ј7 7767L7j7€7”7Њ7Р7Ю7ф7ь7ђ7ј88,8>8Z8n8€8–8Ў8К8Ъ8р8ю999,9@9T9b9x9Œ9Ђ9Д9Ь9к9ь9ў: ::&?Ю:8–ЖHюЦnФ:B:_:B:_:B4DжЙ–Р=гКжОTTT:–О„Ю:{ІЦ5D94DжЙ–Р=гКжОTT:–О„Ю:ƒІЦ5D9€@ Р0 OнPЦ–P€€зOмŠнR—c—T%Y_–P&*–Q—P–R—Q–S—R–c—ScЫС(-фO—O—T9\c S R Q P*ѓ–Oї:УА:У—O#рŒ%c†—c OPQRS$ '№9TPQRSžR0ŸR&žP0ŸP9]'ЦзСЖџ"„їšСЗџ"9жВ Т&жГзД†U=зЕ94–Ж‹Ц=Ъ€кСЖџ"„З;}њ;}їџ"–КD"–Ж‹&J59ЦŽџРF$Ї Ї„0Z&ђ9ЦŽџЦ ъ4Ь;ЭнЉ54–М—КXŽ;ФЋ…—З0І…—ЙTзЖO—Г†—ВЅ' 4]Z†=лМ4лЗаКзЗ5зК59   :$  &Ÿ€0€а9жГ†U=žКч€œЗ&њ9ЮН–Ж$ьBDVэB–Ж$ьФDVэФН:.Є„жЖV$%FF јLH›СD‰~:‡M'јO №4@Н:.5@ц„їжЖXюХ9=H=O=H=O=HD$F09D$і†Р09жЙ:9ў} %*Œ–O%Н=vН=ЈмR9ц„']циT+[жOс„&цЪдPс&жQс& жRс&жSр&9VиT 5жO'"Р –T*[Н=фŽOСј.Н>[9[–TIP~>зPзQзRзS9жO'жTYЦџ%P9PQRSžR0ŸR&žP0ŸP9І—cІЇІЇІЇ–[ЇЫ/ш–cР' gfffF\&є94†—ТН;$59474@Н;~5@7Н;Ћ5947Н;Ћ594Н;м594НGь594Н;47Н;5947†=лМз594O 4† 47–ВзВ~G­НGК59ччї467ŸН7ŸП4@Н;ъ5@Н=[656947нН7нП7нУ7нХНGи59їїџ4Ц6Н>l†Ц6Н>2†—ВЦзГ—ДН>OЦ6Н>_Н>&59467Р!Ž2:І„XŽ2^:Ў„'žѓц :4žѕц :656Н>J ф5694vмКУЮІ Ї€3_ƒ&єЮ†џЇ€3_ƒ&іŽŸѓŽИŸѕї5v94žѓЦ:ŸѓŒ%ŽŸѓžѕЦ:ŸѕŒР%ŽќŸѓŽИŸѕ†—ї594hЗџо­Ÿ Зџп5h94ŽA- 4ŽAA­„7'ј'є '='['\']'^'_' z"дC†_>†9†|4†/† *†%­„7%ј'_%ђ'^ %Z'ъ 'Y %т'X*%@'W+'X,'Y-'Z.'[/'\7%&'[8'\9']:'^@%'b[%^%І'S_' z"œ‹_М† З€В†­†Ј†~Ѓ†Šž†{™†”†}†\Š†`…†[€†]{†^v†q­„7!%ј&%<+'<,'<0%ш':8%9';9'7A%и[%3a%аf%/j%/n%/t%/z"М‹€ )‹к %†‰ !†Ÿ O €# € ‹™ €F ‹% ‹, ‹L65944o1Н?›4НAW5'є 44o1Н?›'ћ0Ї„5o5946НAbНAb569Цžѕ:Цžѓ:6 6Н>œ7ƒ' 6 6Н> 6 6Н>zœѓ'0 й94ŽŸѓ594мѓƒ'ƒнѓ Ьќнѓмѕƒ'ƒнѕ Ьнѓ†—ј5946Цžѕ:Цžѓ:6 6Н>zœѓ'0 ёœѕ'1? у5694НB–ї&НA–594Н?k–ї&Н?3594&мѕУŒР%ŽИ†—їŸѕ5&9НAб~?46НAњ–ї&Н?3žѓПBиžѕПBкНBмŽк_Н?Њ7&С'ѓНAбНA † Ї„0Z ф&С'мНBяНBмŽк_ а &Œй&\ 2НAб† Ї„НC \ % &НAб !%Њ~"І6НB9Ї„Œй'šНC 0\ ’їйŽкŸњ569їя4Žйo€† Ї€Œй#љ5940НAбНA НAбžѕМBк"ёžѓМBи"ъ5094Н?k–ї& Н?3ќBкƒ§Bк594Яабв–ЫжЭ=нгмЬ=не–ЫжЮ=нз–ЬжЮ=нй–к—в–й›и$ а›ж$ а—б–а›з$ Я›е$ Я›д$ Я—а–Я›г—Я594O_Ž Ю Э Ь ЫYI$“Я “Я$гЯ  Ю0&тнЯ594–Ы˜Э4мЫ*Ь“ЫнЫмЭ*Ь“ЭнЭНC'мбнй5*"Ь“йнйЯабвмбУнб–а‰—а–Я‰—Я594–Я6˜Ы6–Ы*НD<–Я*НDXмЯнй5НC~47*НDDНD<мЯ“йнЯ7+ НDX 7*НDX59ЫЬЭЮмЭУнЭ–Ь‰—Ь–Ы‰—Ы9Ь“ЯнЯ94жЯ4444Яабв–Ю5=нй–Э5=нз–Ь5=не–Ы5=нг–к—в–й›и—б–з™ж—а–е™д—Я594EhEiEdEeEfEgц С-&†џЗEh С%& †џЗEi0'Е тР0С%{С % РС %qб§$mOѓEf§EfЖEe‰ЗEeЖEd‰ЗEd0'ќEdнЫќEfнЭж§зЯНD`мЯ§Edмб§Ef –ЖEh'ЖEi'НE{ НEjќEf6Ьџџ6ЖEi'7ќEd6Ьџ6 Ь659яїї4ЬџџГEfУ§Ef594НEjЬџџГEd§EdќEfƒ& ќEdУ§Ed594† 6й–Ы,—йНD<ж§ЯзаНC~жаС %Ы7 Ы06žЭ&фžЫ&р–й'†-659НAбН?~C 474Pіџ"T%њ3_2Ц4_DYX(5Z&ѓ5 ' œжœб›%œіџ"T%њ559Цїџ ž•Œž—0&ќ94ц С!%С~" 6НAбН?НC НAбНC 0&п594ц С!% С~"6Н?НC 0&ъ594ц С!$С~#Ц 6НEх0&ы594НAњ–ї'Н?3ї594Зџо­ŸРЗџп59Ж ‚'О ƒЏj ‚;Жџ*њЖџЖ …'JЗ …& Ж †„АЗ †Зџ@О0ПO‹му'“ену" уф5юg„4;О'0П;žŠ0&ќ94PŽFЖП ŽFФП ŽG2ПЏ59;4OЗџ@5946Ц7—ъНFЇ–№'Z&іОGaŽGbНF9НF”НG3569** DISK I/O ERROR **4†6НG<594†6НG<59ќEdнЫќEfнЭмќнЯНC~мЫ§EdмЭ§Ef~E'4†5—В59—Т7нН7нП4ЗџоН“Н•šН“tЗџп594ЗџоН” Н•šН”ЁЗџп597ЗџоН•cЗџпН;о9џџ476ƒ'65947594ЫЬЯпЭмў“ЭнЭ†—аНC~мЭ65947665947766594ьB65946777 666 5694Э†—Ю7нЫНC'0гбь„659467Œ'740 ѓ7!Œ'560 ѓ6 56947уФ76594ьBЃФ7765947нЫ7нЭНCЈмй65946НJЄ77656947ƒ, §EfНEjќEf65946НJЄ776 656946НJ5НJI777656946НJ5НJI7776 656946НJЄ776 56947§EfНEjќEf65947§Ed7§EfНE{ќEf6ќEd65946ьBуF47уB5$У7 7 7 6656947ЃФ/765947ЃФ,765946Ь6НJЄ77656947У65947У65947ƒ65947ƒ65947нЫ7нЭНC'мб6мЯ65947ŸЯ7нЫ7нЭНC~мЯ6мЭ659яїьBнЫьDнЭНCЈмЯэBмбэD9J2J3J4ЎФŒ,|J2ПEfНEjОEfЏФЎDПEfЎBŒ,|J4ПEdНE{ОEfЏDОEdЏBЖJ4БJ2'|J3ьBЎDЎФнЫŸЭŸЯНC~ MJ2J3J4ЎФŒ,|J2ПEfНEjОEfЏФЎBŒ,|J4ПEfНEjОEfЏBЖJ4БJ2'|J3ЫЬьBЎФнЭŸЯНC~žЭžЯЖJ3'Œ'0ПEfНEjОEfŒ'ьФ“ЯЖJ2' ПEfНEjОEf9477э„59477у„э„5947ь„659477ч„5947ц„O65947ЄФфA765947CS65947ЊФъA765947ЈФшA765947ƒ-Ž Žџџ65947ƒ'Ž Žџџ65947ƒ.Ž Žџџ6594ьBЃФ-Ž Žџџ7765947ЃФ'Ž Žџџ76594ьBЃФ.Ž Žџџ7765946ьФƒ-ьDƒ-ьDЃФ-.ьFЃB- ьDƒ-ц Žџџ Ž7&7&65694ьBЃФ%Ž Žџџ7765946777 ƒ' 4І Ї€5ƒ э56946ьФуBэBьФуDэD777 ƒ' 4ІЂЇ‚5ƒ э56947ц„O0665946777 Œ'ч 0 ѕ5694Žќ6594Žj659467ƒ'уФІ‚ &1? і6 5694ŽќЬ э„594ŽќЬэ„594Žџџ6НM]НK8НM]НKEНKP594ŽMg659я4НMŽ•6НHЏНM]НK-594НHНHНM]НKEНMŽ•6НHЏНHNНHМ5947Œ,Ž-6НMD594žќŸЯ7ŸЫ7ŸЭНC~žЭ6žЫ6žЯŒ %00ˆ06НMD594ЎФŒ&ЎBŒ&Ž06НMD ЎФŒ&ЎBŒ'НMЕ э5946гд7 1!Žц С-'OС%'KС.& 4їг5 <Р0С%:С % РС %0O“ќ$*47ŸЫ7ŸЭ–§—ЯНD`žб6žЯ6O6Ž6НIy50 Ї1?6 Пд569НF”947С~" С!%6НEм НAбНC 5947С~" С!%6НEп НC 59НAбНC 9НC 947Œ' НAбНC 0 ё5947Œ'НC 0 є594077 Œ'НF95094077 Œ'НF_509427Œ,Žџџ ŽŸЫŸЭНEž76 'НEм ѓНAбНC 7529427Œ,Žџџ ŽŸЫŸЭНEž76 'НEп ѓНC 7529427Ž І427Ž ЯНO‘НO94† 6НEх594† 6НEх5947С~#Ц 6НEх594Ц 6НEх5947Œ'НOЛ0 є594077 Œ'НFz509427Œ,Žџџ ŽŸЫŸЭНEž76 'НEх ѓНEх529427Ž л4Žи6594Žб6594Žе6594Н?БO765946žѓПBиžѕПBкеж77 6 6Œ'_Н?Њ7 'P''&~"5!%16НEмНPдЇ 0 дЌФ'аНA НPт1?0 ФежНBя77 6 6 БНAбНC НPдЇ 0 ЂНAбНC НF”705694ќеУ§е594ќеƒ§е5947ню7зэ7зь7зы59НP№НGv9НP№НG‚9џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџUџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџЗџпŽ ŸќŽЬПhЮўЮ§ОџўŒ '&НGŽ"ŸЗŽ ŸК† —МН>дЮЮŽŸѓŸѕїјŽ ПкŽкŸњийŽŸўбвгдеж~Sџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ46Нb[Р[я\†W—–] Н>OНTНT#НV;YіŽПY‹НZ=НPA7Œ 'MŒ 'MŒ'MŒ 'MŒg'MŒG'HŒs'HŒS'CŒp'CŒP'>Œr'>ŒR'9Œd'9ŒD'4Œx'5ŒX'0 ЉНYД ЄНYљ ŸНZ= šНZc •НZЉ Н_ ‹Нa) †НaN Нa:џ{НWНWGНWqНPA7Œy' ŒY'НWџ]ОџўŒ '&Зџоq~ 'Зџоq~Œџџџџџџџџџџџ46ŽŽџЬ‚66 66Н>ЕУƒ†%ь56946ŽˆОTkЬTm+1(ОTЉЬTЋ!1(ОTыЬTэ1(ОU'ЬU) 1(ОUgЬUi569ѓєŸѕ66НO9R - Print a Range of Pages RIGHT ARROW - Forward One Page?D - Print Entire Document G - Go to New Page X - Exit467§Uё7§Uѓ7 Ž"Œ.$66 ќUѓ6ќUё66НQќUёУƒ% ќUѓУ§UѓЬ§Uё0‰ Щџџ56946Ž"56946Ž&56946Ž*569Ž жГ†U=ч€Œ&љѓєѕі6 Ž6НO94Ž6Ž"6Ž6Ž16НQ594ЬНIцŽ 6НHЫ766Ž6НIНHAНIЮ594žѓПVЮžѕПVаѓєŽАŸѕŽVЏ6ОV­6НOОVЮŸѓОVаŸѕ59Please Insert Disk with Page # џџ4žѓПVЮžѕПVаѓєŽИŸѕŽW6ОW6НOОVЮŸѓОVаŸѕ59Press Any Key When Ready4žѓПVЮžѕПVаѓєŽАŸѕŽ@6НNШОVЮŸѓОVаŸѕ594žѓПVЮžѕПVаѓєŽИŸѕŽ?6НNШОVЮŸѓОVаŸѕ594žѓПVЮžѕПVаѓєŽАŸѕŽWЂ6ОW 6НOОVЮŸѓОVаŸѕ59Are You Sure? (y/n)4žѓПVЮžѕПVаŽŸѓŽˆŸѕŽ6НNШŽŸѓŽˆŸѕНOFОVЮŸѓОVаŸѕ594žѓПVЮžѕПVаŽ,ŸѓŽˆŸѕŽX 6ОX6НNёОVЮŸѓОVаŸѕ59 Top4žѓПVЮžѕПVаŽ,ŸѓŽˆŸѕŽXY6ОXW6НNёОVЮŸѓОVаŸѕ59Middle4žѓПVЮžѕПVаŽ,ŸѓŽˆŸѕŽX’6ОX6НNёОVЮŸѓОVаŸѕ59Bottom476Œ% М1"Žџџ Ž659476М1% М1"Žџџ Ž6594НIЮО16НHМ59476МY‹'–ПYНX™7Œ&:НWНWGžѓПVЮžѕПVаѓєŽИŸѕŽY‘6ОY6НOО16НOFОVЮŸѓОVаŸѕ OНXЖ7Œ&0НWНV~Ž|ŸѓŽАŸѕНH6НOFОVЮŸѓОVаŸѕНWGНVгНPA7НV; ЦНXгНVWНUЉОYПY‹НWНWG759џџ"Page Number must be between 1 and 4ЖYі'JЗYі&НUјНWю *НVНX' "ОY‹Œ'†ЗYі06НXуОY‹6НWЖНVНX`59џ4ЖYі'LЗYі'НVНX` (НVНX' ОY‹М1'Yі06НXуОY‹6НWЖНUјНWю594ОY‹Œ'06НXуОY‹6НWЖOЗYіНUјНWю594ОY‹М1'06НXуОY‹6НWЖOЗYіНUјНWю5940НMŽ"6НPNНM7 НP7НKE7НDЉ5094НWНWGžѓПVЮžѕПVаѓєŽАŸѕŽ[6О[6НOНZ‰7Œ'Œџџ'7НXуОY‹6НWЖOЗYіНUјНWю ѓєŽИŸѕŽ[16О[/6НOОVЮŸѓОVаŸѕ59New Page Number? This is not a valid number4Ž 6Žh6Ž6НL‰594Žh6Ž 6Ž6НL‰594|[РЖ[Р%[РŽ ŸѓŽ0ŸѕЖ[Р' Ž[Ж6О[Д Ž[Л6О[Й6НNё59NO YESџ4|[яЖ[я %[яЬHнѕЬ€нѓНNННNНнѓOі[я6НOF594|\Ж\%\Ь`нѕЬ|нѓOі\6НO594––'$'')' W'†W †) † † † †Д—–ЬxнѕЬxнѓНNННNННNННNНнѓ––')' ')'Д'ЬX Ь, ЬА Ь ` ЬР Ь%€6НOF594|] Ж] %] Ž”ŸѓŽŸѕЖ] ' Ž\ж6О\д Ž\ђ6О\№6НNё59Carriage Return + LinefeedCarriage Return Only 4ОVЮŸѓОVаŸѕН>OН[c594Н[LН>Oz[Рz[яz\––Д'W')'''† † †Д †W †) †—–z] Ž ЬГ666ЬK6Н>ЕŽЬГ66Ž 66Н>ЕŽЬK666ЬГ6Н>ЕŽ ЬK66Ž66Н>ЕžѓПVЮžѕПVаŽTŸѓŽŸѕŽ^f6О^d6НOЬ,нѓŽ0ŸѕŽ^~6О^|6НOнѓŽHŸѕŽ^œ6О^š6НOнѓŽ`ŸѕŽ^В6О^А6НOнѓŽxŸѕŽ^Ч6О^Х6НOнѓŽŸѕŽ^л6О^й6НOнѓŽЈŸѕŽ^ѕ6О^ѓ6НOН[zН[ТН[ёН\Н\š59PRINT PARAMETERS MENU[ P ] Pause between pages =[ L ] Left Margin =[ T ] Top Margin =[ B ] Baud Rate =[ C ] Carriage Return =[ X ] Exit to Main Menu4Н]$НPA7Œp'9ŒP'4Œl'4ŒL'/Œt'/ŒT'*Œb'*ŒB'%Œc'%ŒC' Œx' ŒX' НН[z ИН[Т ГН[ё ЎН\ ЉН\š Є5~]4Ж] 'НOŠ НO‘594НWžѓПVЮžѕПVЮѓєŽАŸѕŽ_Х6О_У6НOОY‹6НOFОVЮŸѓОVаŸѕ59Printing Page Number 4Ж\'НOJ іOі[я6НOЧŽ16Oі16НOкŽ`>6О`<6НOкОY‹6НOыŽ`H6О`F6НOкО16НOыН_u†'НOJ і59 - Page of 46Oі[яŽ@Ž"Œ.$6НOЧ66 НOк0ˆ@Н_u ч†А\'НOJ іНWНWG5694Ж[Р&>НWНWGžѓПVЮžѕПVаѓєŽАŸѕŽ`ж6О`д6НOОVЮŸѓОVаŸѕНVгНPA7НWНWG59 READY PRINTER4ОY‹Пa"Оa$Мa&"ŸЧ6НXуžЧПY‹Н`ŠН_‰Н_кН`L0 пОa"ŸЧ6НXуžЧПY‹59џџџ4ОY‹Пa$Пa&Н`ф594ŽПa$О1Пa&Н`ф594НWНWGžѓПVУžѕПVаѓєŽАŸѕŽbF6ОbD6НOНZ‰7Œ'WŒџџ'7НX™7Œ'd7Пa$Ž€ŸѓŽАŸѕŽbS6ОbQ6НOНZ‰7Œ' Œџџ'7НX™7Œ'-7Мa$%LПa&Н`ф `НWНWGѓєŽИŸѕŽ[16О[/6НO BНWНWGѓєŽИŸѕŽY‘6ŽY6НOО16НOF НWНWGѓєŽИŸѕŽb^6Оb\6НOОVУŸѓОVаŸѕ59 From Page? To Page? "TO" must be greater than "FROM"4Ž 6Ž•6Ž 6Ži6Н>ЕŽ6Ž•6Ž 6Ž•6Н>ЕŽ6Ži6Ž6Ž•6Н>ЕŽ 6Ži6Ž6Ži6Н>ЕŽ 6Ž“6Ž 6Žk6Н>ЕŽ6Ž“6Ž 6Ž“6Н>ЕŽ6Žk6Ž6Ž“6Н>ЕŽ 6Žk6Ž6Žk6Н>ЕŽtŸѓŽŸѕŽdМ6ОdК6НOŽXŸѓŽ(ŸѕŽdФ6ОdТ6НOŽXŸѓŽ0ŸѕŽdк6Оdи6НOŽhŸѓŽ8ŸѕŽd№6Оdю6НOŽhŸѓŽ@ŸѕŽdў6Оdќ6НOŽPŸѓŽHŸѕŽe 6Оe 6НOѓєŽ`ŸѕŽe&6Оe$6НOѓєŽhŸѕŽeh6Оef6НOѓєŽpŸѕŽeЊ6ОeЈ6НOŽTŸѓŽˆŸѕŽeБ6ОeЏ6НOŽhŸѓŽ˜ŸѕŽeЩ6ОeЧ6НOŽƒ6ŽГ6Žƒ6ŽK6Н>ЕŽЃ6ŽГ6Žƒ6ŽГ6Н>ЕŽЃ6ŽK6ŽЃ6ŽГ6Н>ЕŽƒ6ŽK6ŽЃ6ŽK6Н>ЕНV;О1Œ'НV~Ž|ŸѓŽАŸѕŽ6НOFНVгНPA759READERCopyright (c) 1991by M. David Johnson BDS Software P.O. Box 485Glenview, IL 60025-0485@You may make as many copies of this program as you wish for your@own use, but you may not sell or give away any copies to anyoneelse."Thou shalt not steal" Exodus 20:15џRy M. David Johnson BDS SoftwarџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџCF83-9: PMODE Graphics Word Set