An Early Atari Computer Technical Demo
As originally conceived, Atari computers were going to be a platform where the technical secrets were held closely, allowing Atari to reap easy profits by providing software that third parties would be hard to match. At least, that was the theory. But the technical secrets were not going to remain secret forever, and as Atari was slow to provide the software to drive sales of the computers, it made more and more sense to abandon that strategy and open the platform to more developers. Atari eventually did this in late 1981, publishing the technical notes and then more broadly with the publication of De Re Atari in 1982, a more approachable presentation of the material.
But before the technical notes became widely available, Atari used the popular computer magazines of the day to publish some of the technical information. Chris Crawford and Lane Winner at Atari wrote two articles in late 1980, one for Byte magazine and one for Compute!, which explained display lists and player/missile graphics respectively. Both appeared in the January 1981 issues of the magazines, and were later endlessly rehashed in books and magazines over the years.
The Byte magazine article, An Introduction to Atari Graphics describes some of the functionality of display lists and then proceeds to use a modified display list and a modified character set to generate a Byte magazine splash page. Interestingly, the page references the August 1980 issue, perhaps publication was delayed for unknown reasons. In any event, it's probably the first published article on display lists, and is quite interesting both for what it reveals and what it does not. It shows the 14 graphics modes, revealing that there are modes that aren't available from the GRAPHICS command. Since it modifies an existing display list, it omits mentioning details important to writing a display list from scratch. Nonetheless, there was enough information here to help software authors start producing better graphics on the computers.
Listing 2 from the article, which produced the above screen:
0 IF FRE(0)<5825 THEN PRINT "NOT ENOUGH MEMORY!":END 20 RAMTOP=PEEK(106):POKE 106,RAMTOP-16:GRAPHICS 0 30 DIM SML$(32):SML$(1,32)=" the small systems journal " 40 DIM MGH$(41):MGH$(1,41)="@@@A@McGRAW@HILL@@@@@@@@PUBLICATION" 50 GRAPHICS 7+16:COLOR 2:POKE 765,2 55 POKE 708,128:POKE 709,40:POKE 710,128:POKE 712,128 60 START=PEEK(560)+PEEK(561)*256+4 70 POKE START+10,2 80 FOR X=0 TO 3:POKE START+46+X,6:NEXT X 90 FOR X=0 TO 3:POKE START+50+X,7:NEXT X 95 POKE START+54,65:POKE START+55,PEEK(560):POKE START+56,PEEK(561) 110 A=0:READ B,C:IF B>-1 THEN GOSUB 800:GOTO 110 120 READ A,B,C:IF A>-1 THEN GOSUB 800:GOTO 120 200 CHBAS=RAMTOP-4:ADDR=CHBAS*256 210 FOR X=0 TO 1023:POKE ADDR+X,PEEK(57344+X):NEXT X 220 POKE 756,CHBAS+2 230 FOR X=0 TO 255:POKE ADDR+512+X,PEEK(ADDR+256+X):NEXT X 240 FOR X=0 TO 7:POKE ADDR+512+X,0:NEXT X 250 FOR X=0 TO 7:READ A:POKE ADDR+99*8+X,A:NEXT X 290 POKE 755,0:POKE 87,0 300 POSITION 4,9:? #6;"AUGUST 1980 Volume 5, Number 8"; 310 MEMST=PEEK(START)+PEEK(START+1)*256:CHRPOS=MEMST+46*40 320 FOR X=1 TO LEN(SML$):POKE CHRPOS+X-1,ASC(SML$(X,X))+128:NEXT X 330 CHRPOS=CHRPOS+60 340 FOR X=1 TO LEN(MGH$):POKE CHRPOS+X-1,ASC(MGH$(X,X))-64:NEXT X 350 POKE 708,200360 GOTO 360 800 ON A+1 GOTO 810,820,830 810 PLOT B,C:RETURN 820 DRAWTO B,C:RETURN 830 POSITION B,C:XIO 18,#6,0,0,"S:":RETURN 900 DATA 111,20,111,21,110,21,109,21,108,22,107,23,107,24 905 DATA 106,25,106,26,107,27,107,28,108,29,109,30,110,30,111,30 910 DATA 111,31,110,31,109,31,108,32,107,33,107,34,106,35 915 DATA 106,36,107,37,107,38,108,39,109,40,110,40,111,40,111,41 920 DATA -1,-1,1,97,41,2,96,40,1,96,40,2,96,21 925 DATA 2,97,20,0,93,21,1,92,21,1,91,21,1,90,22,1,89,23,1,89,24 930 DATA 1,88,25,1,88,40,1,87,41,1,80,41,2,79,40,0,79,40 935 DATA 2,79,25,0,79,25,2,78,24,0,78,24,2,78,23,0,78,23,2,77,22 940 DATA 0,77,22,2,76,21,1,74,21,1,74,20,1,93,20,0,71,20 945 DATA 1,71,36,1,70,20,1,70,36,1,69,33,1,69,36,1,68,34,1,68,36 950 DATA 1,67,34,1,67,40,1,66,41,1,59,41,2,58,40,0,58,40 955 DATA 2,58,36,1,54,36,2,54,34,1,64,33,1,63,32,1,63,21,1,62,20 960 DATA 1,55,20,2,54,21,0,54,21,2,54,33,0,51,21 965 DATA 1,51,29,0,51,32,1,51,40,1,50,41,1,50,32,0,50,29,1,50,20 970 DATA 1,49,20,1,49,22,0,49,28,1,49,33,0,49,39 975 DATA 1,49,41,1,48,41,1,48,40,0,48,32,1,48,29,0,48,21,1,48,20 980 DATA 1,46,22,0,46,28,0,46,33,0,46,39,1,45,38,1,45,33 985 DATA 0,45,28,1,45,23,0,47,41,1,36,41,2,35,40,0,35,40,2,35,21 990 DATA 1,36,20,1,49,20,-1,0,0 999 DATA 0,60,96,96,96,60,0,0
- 1
2 Comments
Recommended Comments