90 N) = CHR$(BYTE): NEXT N 35 DATA 104,162,16,76,86,228 36 REM PLA,LDX,$10,JMP $E456 40 OPEN #1,4,0,B$ 50 POKE 849,1: POKE 850,7: POKE 852, PEEK(88): POKE 853,PEEK(89): POKE 856,70: POKE 857,30: POKE 858,4 55 REM THESE POKES SET UP THE IOCB 60 POKE 559,0: REM TURN OFF THE SCRE EN TO SPEED THINGS UP 70 X = USR(ADR(ML$)): CLOSE #1 80 POKE 559,Q: REM TURN IT BACK ON A GAIN Note that there is no provision to SAVE the color registers in this program, so I suggest you have them SAVEd after you have SAVEd the picture. It will make it easier to retrieve them if they are at the end of the file. You will have to make suitable adjustments when SAVEing a picture in other than GR.8 + 16 -- such as changing the total amount of screen memory to be SAVEd, POKEd into 856 and 857. Also, you will need a line such as 1000 GOTO 1000 to keep a GTIA or + 16 mode screen intact. See the Atari column in InfoAge Magazine, July 1982, for more on this idea. See location 54277 ($D405) for some ideas on scrolling the screen RAM. ------------------------------------------------------------------------ A SHORT DIGRESSION There are two techniques used in this hook for calling a machine language program from BASIC with the USR command. One method is to POKE the values into a specific address -- say, page six -- and use the starting address for the USR call, such as X = USR(1536). For an example of this technique, see location 632 ($278). The other technique, used above, is to make a string (ML$) out of the routine by assigning to the elements of the string the decimal equivalents of the machine language code by using a FOR-NEXT and READ-DATA loop. To call this routine, you would use X = USR(ADR(ML$)). This tells the Atari to call the machine language routine located at the address where ML$ is stored. This address will change with program size and memory use. The string method won't be overwritten by another routine or data since it floats around safely in memory. The address of the string itself is stored by the string/array table at location 140 ($8C). ------------------------------------------------------------------------ 90 5A OLDROW Previous graphics cursor row. Updated from location 84 ($54)