Laser 3000 Graphics

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.

No Low-Resolution Graphics Mode

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.)

Colour Text

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.

     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.

HGR3 and HGR4 double high-resolution graphics modes

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.

HGR5 and HGR6 high-resolution graphics modes

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:
        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.

[Laser 3000 Home] [Hrothgar's Cool Old Junk Page] 1998-05-24