Everything I Needed to Know About Programming I Learned from BASIC
You may unsubscribe from the newsletters at any time. View As: One Page Slides. The Atari and computers grew out of a project to provide an advanced follow-up to the hugely successful Atari video game console. During development, Atari eyed the success of Apple with its Apple II machine, and the new console began to gain computer-like features such as a keyboard, an operating system, and peripherals like disk drives and printers.
- Working, Shirking, and Sabotage: Bureaucratic Response to a Democratic Public.
- Mike Fulton Consulting » Atari ST Programming.
- Modern C++ Design: Generic Programming and Design Patterns Applied!
After three years on the market, Atari sought to simplify and update its aging Atari and machines, which featured fairly complex and thus expensive to manufacture internal assemblies and very s-looking industrial design. The horizontal, or X, coordinate always precedes the vertical, or Y, coordinate. It's vital to understand how this coordinate system works; it is the basis for all drawing and positioning on the screen. For example, to draw a dot on the screen, you "light up" or "switch on" the pixel at that location, according to its coordinates. This is done with the PLOT statement.
96 Atari 8-Bit books in PDF - Atari 8-Bit Computers - AtariAge Forums
PLOT 0,0 will put a dot in the upper-left corner of the screen. The size of that dot depends on the graphics resolution; the higher the resolution, remember, the smaller the dot. To draw a line, you could simply PLOT a number of dots in a row. DRAWTO does just what it implies; it draws a line to the horizontal and vertical coordinates specified. For instance, you could draw a square like this:.
The format is COLOR aexp , where aexp is any arithmetic expression that evaluates to a whole number fractions are automatically rounded. Further, that number should be from zero to three. The default color is orange. This system is known as color indirection and accounts for the flashing screen colors you may have noticed in those fancy graphics demos you've admired.
Yet, as you see, the technique is really very simple. One thing that takes some getting used to is that the COLOR statement does not get its color from the same registers in all graphics modes, and some modes are restricted to only two colors. That graph paper analogy comes in handy again for two more graphics statements you'll need to learn. The third variable, shown here as "Z," returns a value read from the pixel at point X,Y.
That value depends on the graphics mode. Since LOCATE can determine what is being displayed at a certain location on the screen, it is sometimes used to detect collisions or impending collisions between objects in games. At this point, if you've been practicing and experimenting with the principles we've covered so far, you know all the basics you need to draw figures and colorful designs on the graphics screens.
But you're probably wondering how to animate those images. Animation is perhaps the most difficult graphics technique to master. For one thing, fast, smooth animation requires a great deal of processing speed, sometimes more than is possible with a relatively slow language such as BASIC. But it is possible, and there are several methods.
- AtariWiki V3: Microsoft Basic I.
- Delivering Business Intelligence with Microsoft SQL Server 2008 (Database & ERP - OMG).
- A constructive look at the Atari BASIC cartridge () | Hacker News.
- START COMPARES FIVE;
- The Early Years.
- Full text of "Mostly BASIC : applications for your Atari";
- Atari 400 800 XL XE Books;
We won't cover any of them in depth here, but we will introduce you to the simplest forms to whet your taste a bit. One method may already have occurred to you. By just drawing a figure on the screen, erasing it, and re-drawing it at a slightly different location, you can achieve the illusion of movement in the same way that cartoonists do.
Erasing it is just as easy--you simply re-draw the image in the background color, making it disappear. Then you switch back to the foreground color, re-draw the figure elsewhere, and presto--it will seem to have moved. Sometimes this is called playfield graphics. Try Program 1 for an example. While commonly used for "title screens" and other applications requiring text displays, they also come in handy for a technique called character graphics.
The resulting character is an odd shape of some sort. A number of these shapes are available, known as control characters. This is sometimes called control graphics.
Try Program 2 for an example. Both of these methods--playfield graphics and control graphics--are straightforward and simple. In fact, some computers have no other methods available. However, fast movement of complex figures does tend to get messy. Those techniques are covered later in this book.
This article was merely intended to arm newcomers to Atari graphics with the basic tools needed to understand the more esoteric subjects. When you run into roadblocks--and you'll encounter them as you forge ahead into the sometimes tricky world of computer graphics--just keep your manuals handy and remember this famous American proverb:. I would imagine Linux users recompile the kernel or something to get things going there. You tell an application to print, and it does. By comparison, back when the ST first came out, printing was the wild wild west, and getting your printer to produce output could make you feel like you were in an old-fashioned gunfight.
Before GUI-based operating systems became popular, every single program required its own printer driver. And then we have the fact that there were about fourteen billion different ways of outputting graphics to a printer. Even with the same printer, two different programs might have different ways of producing what appeared to be the same exact result.
Back in those days, most dot-matrix printer manufacturers followed the standards set by Epson. For example, when Star Micronics came out with their Gemini 10x 9-pin dot matrix printer, it used most of the same printer codes as the Epson FX and MX printers. Likewise with many other manufacturers. The problem was, most of the efforts towards compatibility were oriented around text output, not graphics. This was further complicated by the fact that printers sometimes differed somewhat in capability.
The one good thing was that in most cases it was possible for users to create their own driver, or more accurately, a printer definition file. For most programs, this was nothing more than a text file containing a list of the printer command codes required by the program. In some cases it was a small binary file created by a separate utility program that let you enter the codes into a form on screen. It facilitated the output of raw data to the printer, but otherwise provided no management of the printing process.
That started to change for desktop computer users in , when Apple introduced the Macintosh.
And it could manage print jobs and take care of all the nitty-gritty details like what printer codes were required for specific printer functions. If you wanted to print, you had to go through the system. Sending data directly to a printer was a big no-no. One significant issue with the whole transition to OS-based printing was the fact that printer drivers were significantly more complex.
Apple addressed the potentially murky driver situation by simply not supporting third party printers. They had two output devices in those early years, the ImageWriter 9-pin dot-matrix printer, and then the LaserWriter. It would be a couple of years before third party printing solutions got any traction on Macintosh. When Microsoft Windows came out a short time later, it addressed the question of printing in largely the same way as the Macintosh, except that it supported a variety of third-party printer devices. When the Atari ST came out, the situation regarding printing with GEM should have been theoretically similar to the Mac and Windows, except for two little things.
As a result, application programmers ended up using their own proprietary solutions. Second was the fact that even after GDOS was released, there were only a few printer drivers included.
programming and human factors
As a result, application developers were slow to embrace GEM-based printing. As far as I know, the first commercial product to ship with GDOS support included was Easy Draw from Migraph at the start of , about six months after the ST was released, and about two months after Atari starting shipping machines with the TOS operating system in ROM rather than being disk-loaded. Compared to most other programs, this situation had a significant drawback. So what was the problem? Well, basically it comes down to device support.
They targeted the most popular brand and models, but if you had something else, you had to take your chances regarding compatibility. This was a major problem for users, not to mention something of a surprise. We asked Atari repeatedly for the information necessary to create our own drivers. Basically there was a version for 9-pin printers and one for pin printers.
There were some constants unique to individual printers that should have been elsewhere. C file contained definitions for the basic pre-defined VDI line styles and fill styles. There were no instructions or documentation of any kind. That may have been why Atari was originally reluctant to send anything out. It took a little experimenting but eventually I figured out what was what.
LIB library. There were a ton of 9-pin dot-matrix printers in those days, and while many of them worked fine with the FX80 driver, some were ever so slightly different. Like literally changing one or two printer codes would make it work. The situation was a little better with the pin printers but again there were a few that needed some changes. These were compatible with the Epson printers at DPI, but offered a higher-resolution mode that the Epson did not.
That thing was slower than crap but oh, gosh was the output good looking. At the time, for a dot-matrix impact printer, that is. One thing that was confusing at first was that the startup code for the drivers was actually contained in the library. LIB for color devices contained the vast bulk of the driver code.
It contained all of the functions necessary to handle all of the VDI functions supported by the device. That was the call which triggered the actual output. At that point, it would create a GEM standard raster format bitmap and render all of the VDI commands which had been spooled up since the open workstation, or previous update workstation.
In order to conserve memory, the printer drivers were designed to output the page in slices. The minimum slice size was typically set to whatever number of lines of graphics data you could send to the printer at once. If the horizontal width of the page was pixels dots per inch , then the minimum slice size would be pixels across by 8 pixels tall.
The maximum slice height could be the entire page height, if enough memory was available to the driver. This was a bit of code in the DEP.soilstones.com/wp-content/2020-07-21/560.php
BASICs FOR THE ST
S file. For example, the first slice might output scanlines , then the next slice would do scanlines , and so forth until it had worked its way all the way down to the bottom of the page. Once it got to the bottom of the last slice, the code in DEP. S would send a form feed code to the printer to advance the paper to the start of the next page.