Title Shoot

Developer(s): Algis Gedris
Date: 198x
Type: Program
Platform(s): TS 2068

This program renders a signature or title graphic stored in the lower portion of the display (rows 168–175, the final 8 pixel rows of the screen) and scales it up onto the main display area. For each lit pixel found using POINT at the source coordinates, it plots and draws expanded versions at twice the horizontal scale and three times the vertical scale. The INK 2 with OVER 1 drawing technique creates a colour highlight effect on alternate pixel rows, effectively giving the enlarged letters a two-tone appearance. A short BEEP is sounded for each pixel processed, producing audio feedback during the drawing sequence.


Program Analysis

Program Structure

The program is a single short routine spanning lines 200–500, with a SAVE header at line 9998. The string variable A$ is set at line 200 to the author’s name, which is both printed at the top of the screen (line 210) and used as a running label at the bottom (line 252). The main logic is a double nested loop across lines 220–300.

Pixel Source and Scaling Logic

The source graphic is expected to reside in the bottom 8 pixel rows of the 192-line display (Y coordinates 168–175). The outer loop iterates X from 0 to 127, and the inner loop iterates Y from 0 to 7, sampling each pixel with POINT (X, Y+168). When a pixel is set, the program plots it at a scaled destination: horizontal scale factor 2 (2*X) and vertical scale factor 3 (3*Y+80), expanding the 128×8 source into a 256×24 destination region.

Two-Tone Drawing Technique

For each matched source pixel, three drawing operations are performed:

  1. Line 240: PLOT 2*X, 3*Y+80 — plots the base pixel in the current ink colour.
  2. Line 245: PLOT 0,0 : DRAW INK 2; OVER 1; 2*X, 3*Y+79 — draws a line from the origin to the scaled coordinate using INK 2 (red) with OVER 1 (XOR mode), affecting the pixel one row below.
  3. Line 250: PLOT 0,0 : DRAW OVER 1; 2*X, 3*Y+79 — repeats the OVER 1 draw without a colour attribute change, effectively toggling pixels again on the same row.

The use of PLOT 0,0 before each DRAW is necessary because DRAW is relative; plotting at the origin and drawing the full vector to the target coordinate is a workaround for achieving absolute positioning with DRAW. The two sequential OVER 1 operations at lines 245 and 250 on the same target pixel cancel each other out in terms of the pixel state, but the INK 2 attribute set in line 245 remains, colouring the character cell red.

Line 260 additionally plots one pixel above the base: PLOT 2*X, 3*Y+81, extending each source pixel to cover a 1×3 vertical block in the destination.

Audio Feedback

Line 255 issues BEEP .01,7 for every lit pixel detected, producing a rapid series of short high-pitched tones as the image is drawn. This creates an audible progress indicator tightly coupled to the pixel density of the source graphic.

Notable Techniques and Observations

  • The IF NOT POINT (...) THEN GO TO 299 at line 235 skips all drawing and sound operations for unset pixels, jumping directly to NEXT Y, which is an efficient early-exit pattern.
  • Storing the author name in A$ and reprinting it at line 252 each iteration keeps it visible in the lower display, acting as a persistent label beneath the expanding graphic.
  • The SAVE at line 9998 uses LINE 200 to auto-start at the beginning of the routine.
  • The source graphic occupies a region (Y 168–175) that overlaps with the bottom two character rows of the display (rows 21–23 in PRINT AT coordinates). Writing to that area with PRINT AT 21,0 at line 252 could disturb the source pixel data if the name string’s ink pixels happen to coincide, though in practice the name display and source graphic may be designed to coexist.

Variable Summary

VariableRole
A$Author name string, displayed at top and bottom of screen
XHorizontal loop counter (0–127), source and destination X coordinate basis
YVertical loop counter (0–7), offset into the 8-row source strip

Content

Appears On

Cycle through all 128 colors, spin a 2D profile into a 3D wireframe solid, or watch mesmerizing geometric patterns bloom and refill the screen — Tape 11 is a visual feast that pushes the TS 2068's display to its limits.

Related Products

Related Articles

Related Content

Image Gallery

Source Code

  200 LET A$="ALGIS E. GEDRIS"
  210 PRINT AT 0,0; INK 7;"ALGIS E. GEDRIS"
  220 FOR X=0 TO 127
  230 FOR Y=0 TO 7
  235 IF NOT POINT (X,Y+168) THEN GO TO 299
  240 PLOT 2*X,3*Y+80
  245 PLOT 0,0: DRAW INK 2; OVER 1;2*X,3*Y+79
  250 PLOT 0,0: DRAW OVER 1;2*X,3*Y+79
  252 PRINT AT 21,0;A$
  255 BEEP .01,7
  260 PLOT 2*X,3*Y+81
  299 NEXT Y
  300 NEXT X
  500 STOP 
 9998 SAVE "TITL/SHOOT" LINE 200

Note: Type-in program listings on this website use ZMAKEBAS notation for graphics characters.

Scroll to Top