Notes on GDUMP2 This is a raphics DUMP program which copies your screen to an Epson-FX compatable printer at 80 dot/inch horizontally. Essentially, it prints out dot for dot exactly whatever is on your screen, with an inverse video option, and print a displayed RLE only option. Source code is in Turbo Pascal, and the printing is reasonably fast; about 3.5 min. per screen with a Citizen 120D printer. It is made to run on the Visual 1050 __only__. If you use one of the alternate character sets or a custom made character set, this is one way you can print out those special characters. It's also another way to get a hard copy of the drawings you make with the 1050 CAD and the other drawing program, GRAPH.INT. You will probably use this program from a command line; at the A> prompt you will enter...gdump. In this case the area where the command line is displayed will be overwritten, the best I could do was to make that area blank out. If you write a program whose screen output you want dumped to the printer, you have a choice of where to leave your cursor; near the bottom might be a good choice. Programed this way, you'll be able to get most of the output printed. Not elegant, I know, but useful. There is another way to use the program, and that's with a parameter. Any parameter will do; simply enter something like...gdump x...and you'll be asked three yes/no questions. The first one wants to know if it's an RLE graphic you want printed out. It need not be an actual RLE, the graphics' original source isn't important. What it's really asking you is if you want the 256 dot wide 192 dot long area in the upper left corner _only_ to be printed. This is the area of the screen that receives the picture when you run the program DERLE002, which displays RLE graphics (on the Visual 1050 only). That program leaves the cursor a couple of lines below the picture, allowing you to enter a couple of commands before the graphic scrolls off the top of the screen. Answering no (n) will make the entire screen print. The second question wants to know if you want the foreground and background brightnesses reversed. Normally, as when using the program without a parameter, the printout will look like the graphic on the screen when the screen is in the reverse mode (ESC ; Y), or when your typing appears as black characters on a white background. If you answer yes (y) to this question, your printout will look like the graphic does when the sceen is in the normal mode (ESC ; Q). It's probably best not to assume there is an absolute right or wrong way to display and print a graphic, you get to choose what looks best for you. The third qestion wants to know if you'd like the graphic printed with a shortened vertical dimension. An answer of no (n) will cause the linespace to be 1/9" (or 8/72" or 8 dots), so with each pass of the 8 dot print head the paper moves up 8 dots. Sounds perfect doesn't it? Well, I don't know if it's just my printer or what, but with this setting I often get very thin streaks of white between each set of 8 dots. This doesn't look bad when the graphic is mostly white, but in larger areas of black it become noticable. So, I put in this option to get 15/144" spacing, in effect, covering any the white lines I've been getting with a half dot. You be the judge of whether you need it. You may also want to use this option to change the proportions of the picture slightly, which on the Visual tends to look elongated vertically anyway. If you need to abort a print out, first enter CONTROL-BREAK, __then__ turn the printer off. FOR THE PROGRAMER... Those who like to experiment might want to try the BDOS 47 call which allows you to load and run a program from inside of another program. I've played with this enough to know it works. If you use Turbo Pascal, something like the following code should work for you: var xptr:^char; n:integer; const name:string[13]='GDUMP'; {the program to chain to} begin xptr:=ptr($80); {pointer to file buffer} for x:=1 to length(name) do begin xptr^:=name[x]; xptr:=ptr(ord(xptr)+1); {load file buffer with name} end; xptr^:=^@; {null terminator} bdos(47,1); {call BDOS 47} end. {put the var and const declarations at the top of the host program and the lines between begin and end at the very end of the main body of the host program (just before your END. ).} I've tried the above code but not the following which is much simpler: var x:integer; varname:string[30] absolute $80; begin varname:='GDUMP'; bdos(47,1); end. Of course, you'll have to use GDUMP without a parameter in this case or else the questions will be displayed, thus defeating the purpose of doing it this way. The other thing you'll probably want to do is to turn off the cursor, because it still shows up as GDUMP is loading. Try a write(^[,';A') before the bdos(47,1) to turn it off. COPYWRITE (c) 1988 by Alex Fetesoff. This program is shareware and as such may be distributed freely but not for profit. With such distribution must be included the above documentation and this paragraph. I disclaim any warranties, expressed or implied, including any warranties of merchantability, performance, and suitability for any purpose with respect to this software and documentation. But I hope you like it anyway! If you have questions or comments, send email on GENIE to alex.f or on CompuServe to 72277,1607.