Despite the fact the Laser 3000 is supposed to be Apple compatible, there are some significant differences between it and a real Apple ][ machine. The Laser 3000 graphics modes are quite significantly different.
The Laser 3000 does not have the 40x40 or 40x48, 16-colour low-res graphics modes that the Apple ][ has. The BASIC does not understand the GR command, nor VLIN, HLIN, PLOT, COLOR, or SCRN. PEEKing location $C056 seems to have no effect, so there is no low-res mode supported in the hardware at all. ($C056 may have another function on the Laser 3000 that I haven't yet discovered.)
Unlike the Apple ][, the Laser 3000 supports colour on its text screen. The text colour applies for all characters on the screen, not on a per-character basis. Colours can be specified for text, background, or screen border using the TEXT command:
TEXT textcol, bgcol, bordercol
Valid arguments for textcol are NORMAL, RED, GREEN, YELLOW, BLUE, MAGENTA, CYAN, WHITE. (NORMAL gives white text, but is the only colour setting that doesn't interfere with the colours on graphics screens.)
Valid arguments for bgcol, and bordercol are BLACK, RED, GREEN, YELLOW, BLUE, VIOLET, CYAN, WHITE.Examples:
TEXT (Go back to text mode from a graphics mode, like on Apple ][) TEXT YELLOW (Make text yellow, don't change border or background colours) TEXT RED,,CYAN (Make text red and border cyan, without changing the background colour) TEXT ,MAGENTA (Make background magenta, without chang- ing text or border colours)
To access these features without BASIC, simply read from the following addresses:
Colour Border Backgnd Text BLACK $C008 $C018 $C028 ( = NORMAL) RED $C009 $C019 $C029 GREEN $C00A $C01A $C02A YELLOW $C00B $C01B $C02B BLUE $C00C $C01C $C02C MAGENTA $C00D $C01D $C02D CYAN $C00E $C01E $C02E WHITE $C00F $C01F $C02F
Unfortunately, the screen background colour doesn't always take hold. At least, not after playing with HGR5 and HGR6 modes for a while.
These modes appear to be the same as the double high-res modes of the Enhanced Apple //e and the Apple //c, but accessible from BASIC.
The two graphics pages that are brought up with the HGR5 and HGR6 commands in BASIC are very special, for they give the Laser 3000 colour graphics with much better colour control than on the Apple ][.
HGR5 and HGR6 both occupy two bitplanes rather than the one bitplane of the normal Apple modes. With this extra bitplane, Video Technology Ltd. didn't try to increase the colour count by very much (only two extra colours), but they did succeed in avoiding the colour bleed problem of the Apple. Any pixel can have any of the eight colours placed into it without affecting the colours of the other pixels in that byte. This means that even with very complex graphics on the screen, plotting an arbitrary line across it will not create the jaggy effect seen on the Apple ][.
Pixels that are directly side-by-side do affect each other, though. This can be used to create as many as 64 colours on screen, each as pure as the colours on the Apple ][ high-res screen. (On the Apple, coloured pixels may only be plotted at horizontally even or odd locations, depending on the colour. Adjacent illuminated pixels always become white, though they can have tints that are used to create additional "false" colours.)The pure colours are:
COLOUR HCOLOR= Apple ][ Laser 3000 0 black1 black 1 green green 2 magenta magenta 3 white1 cyan 4 black2 yellow 5 orange red 6 blue blue 7 white2 white
To see how these mix to create 64 colours, type in the following BASIC program and RUN it:
10 HGR5 20 FOR X=1 TO 280 STEP 2 30 HCOLOR=X/35 40 HPLOT X,0 TO X,191 50 NEXT X 60 FOR Y=0 TO 7 70 FOR X=0 TO 279 STEP 2 80 HCOLOR=Y 90 HPLOT X,Y*24 TO X,Y*24+23 100 NEXT X,Y
Unfortunately, none of the mixed colours are consistent! With the above program, the top row of blocks will either be various shades of blue, or various shades of green. The first column will either be reds and browns, or blues and purples. And it seems that the outcome can be predicted by the colour fringing of text on the text screen. If the text looks to be fringed with orange and blue, expect a top row of blue when the program is run. If the text is fringed with green and purple, expect the top row to be green.
Luckily, there is a way of controlling which set of colours appears. All that has to be done is to flick the "COLOR DEFEAT" switch on the back of the mahine back and forth until the desired colours show up.
Another unfortunate thing is that the colour specified for text on the text screen affects the HGR5 and HGR6 graphics modes. Any text colour other than NORMAL results in the following: black remains black (or the background colour, bgcol, as specified with the TEXT command), but all other colours appear as the colour specified for textcol, except when plotted in patterns of horizontally even or odd dots. This means that whenever a text colour other than NORMAL is used, only four apparent colours are available to HGR5 and HGR6, and that's only thanks to the mixing of foreground and background colours.
In memory, HGR5 occupies $4000-$5FFF and $6000-$7FFF. HGR6 occupies $8000-$9FFF and $A000-$BFFF.
The first bitplane of HGR5 occupies the same memory as HGR2. HGR5 occupies the same memory as the 560x192 double high-res screen HGR3. HGR4 doesn't seem to exist in the normal 64K address range of the 6502, so I finally have evidence that there is more than 48K RAM in this beast.