Try These

Publication

Date

Pages

BASIC Terms

Overprinting

A demonstration of the TS2068’s OVER and INVERSE print attributes. A base string A$ is drawn at a fixed screen position, then a second string B$ is drawn on top of it in each of the four combinations of OVER 0/OVER 1 and INVERSE 0/INVERSE 1, with each result labelled by the o and i values that produced it. A second routine lets the user lift a result straight off the screen and record it into one of the 21 UDG slots (a through u), so a combination worth keeping can be saved.

BASIC Listing

   1 REM 1985 William Pedersen
2 REM
4 REM OVERPRINTING
6 REM This test demonstrates the way the INVERSE and OVER functions effect what you can put on the screen.
8 REM
10 REM A$ represents what is already there.
12 REM
14 REM B$ is what you write on top of it."
16 REM
18 REM The binary number in front of the results is made up from the OVER and INVERSE values.
20 REM
22 REM If you like what you get, you can BREAK and GO TO 2000. Then you can assign it as a UDG.
24 REM
26 REM Double Take
28 REM
1001 LET X$="(## ,\{020}## \{020})$\{020}$$\{020}$(## ,\{020}## \{020})"
1003 LET Y$="( OO, OO) $$\{020}$$\{020}(\{020} OO\{020},\{020} OO\{020})"
1005 CLS : PRINT ''''"Try: X$ for A$, Y$ for B$."''"(DELETE both quote marks first.)"
1007 INPUT "A$=";A$'"B$=";B$
1009 PRINT ''"A$= """;A$;""""''"B$= """;B$;""""
1011 FOR o=0 TO 1: FOR i=0 TO 1
1013 PRINT AT 13+2*(i+o+o),0;o;i;" ";A$
1015 PRINT AT 13+2*(i+o+o),5; OVER o; INVERSE i;B$;
1017 NEXT i: NEXT o
1019 PAUSE 0: GO TO 1005
1996 REM
1998 REM Load UDG
2000 REM
2001 INPUT "Which UDG character? ";a$
2003 LET Addr=USR a$
2005 FOR j=0 TO 7
2007 POKE Addr+j,PEEK (20517+256*j)
2009 NEXT j
2011 PRINT AT 20,0;"UDG's:"; BRIGHT 1;"ABCDEFGHIJKLMNOPQRSTU"
2013 PAUSE 0: GO TO 1005

Grey Scale Graphics

This is a fragment, not a complete program: it appears on the same page and in the same “LIST Group” column as two pieces explicitly signed “1985 William Pedersen” (Note Pad and Overprinting), but carries no such line of its own, and GO TO 1000 at line 3060 has no matching line 1000 anywhere on this page. The visible code is a self-contained subroutine, evidently meant to be called from a menu or driver program that isn’t part of this scan.

What the visible portion does: starting from the address of UDG A, it zeros out a block of 17 UDGs’ worth of bitmap space (30103020), then builds up the remaining 16 UDGs one at a time. Each new UDG starts as a copy of the previous one (3040, copying all 8 bytes down one slot), then two DATA values are read and poked into a fixed offset in both halves of the new UDG’s 8 bytes (3050). Read in sequence across 16 slots, this reads as an ordered dither sequence — each step adding a little more “on” pixel coverage to the previous pattern — which is a standard way to fake intermediate grey levels out of a 1-bit-per-pixel display, matching the title and the “WORKING” flash message shown while it runs.

BASIC Listing

3000 REM GREY SCALE GRAPHICS
3002 PRINT AT 11,12; FLASH 1;" WORKING "
3005 LET Grey=USR "A"
3010 FOR n=Grey TO Grey+8*17-1
3015 POKE n,0
3020 NEXT n: RESTORE 3100
3025 FOR n=1 TO 16
3030 LET Here=Grey+8*n
3035 FOR j=0 TO 7
3040 POKE Here+j,PEEK (Here+j-8)
3045 NEXT j
3050 READ U,V: POKE Here+U,V: POKE Here+U+4,V
3055 NEXT n
3060 GO TO 1000
3100 DATA 2,12,0,192,0,204,2,204,1,48,3,3,3,51,1,51,0,252,2,143,2,255,0,255,3,63,1,242,3,255,1,255

Products

 

Media

 

Image Gallery

Source Code

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

Scroll to Top