88,89 LSB and MSB of the area to be cleared into these locations. Your routine should always end on a $FF boundary (RAMTOP indicates the number of pages). Remember to POKE back the proper screen locations or use a GRAPHICS command immediately after doing so to set the screen right. Try this: 10 BOTTOM = 30000: TOP = 36863: REM LOWEST AND HIGHEST ADDRESS TO CLEA R = $7530 & $8FFF 20 RAMTOP = PEEK(106): POKE 106, INT (TOP + 1 / 256) 30 TEST = INT(BOTTOM / 256): POKE89, TEST 40 POKE 88. BOTTOM - 256 * TEST 50 PRINT CHR$(125): POKE 106, RAMTOP 60 GRAPHICS 0 This will clear the specified memory area and update the address of screen memory. If you don't specify TOP, the CLEAR SCREEN will continue merrily cleaning out memory and, most likely, will cause your program to crash. Use it with caution. Here's a means to SAVE your current GR.7 screen display to disk using BASIC: 1000 SCREEN = PEEK(88) + PEEK(89) * 256 1010 OPEN #2,8,0,"D:picturename" 1020 MODE = PEEK(87): PUT #2, MODE: REM SAVE GR. MODE 1030 FOR SCN = 0 TO 4: COL PEEK(70 8 + SCN): PUT #2,COL: NEXT SCN: REM SAVE COLOR REGISTERS 1040 FOR TV = SCREEN TO SCREEN + 319 9:BYTE = PEEK(TV): PUT #2, BYTE: NEXT TV: CLOSE #2 To use this with other screen modes, you will have to change the value of 3199 in line 1040 to suit your screen RAM (see the chart above). For example, GR.7 + 16 would require 3839 bytes (3840 minus one). You can use the same routine with cassette by using device C:. To retrieve your picture, you use GET#2 and POKE commands. You will, however, find both routines very slow. Using THE CIO routine at 58454 ($E456) and the IOCBs, try this machine language save routine: 10 DIM ML$(10): B$(10): GR.8+16 20 B$ = "your picture name":Q = PEEK (559) 30 FOR N = 1 TO 6: READ BYTE: ML$(N,