54277 Now you will have to make each display instruction for each line into a Load Memory Scan (LMS) instruction. To direct each LMS to the proper screen RAM for that line, you will have to increment each memory location by the total length of the line. For example, if you want to scroll a 256-byte horizontal screen, each LMS instruction will have to point to a location in memory 256 bytes above the last one. Of course, you will have to implement error-trapping routines so that your screen does not extend beyond your desired boundaries. Coarse scrolling, one byte at a time, can be done without setting the HSCROL register by the method described above. For smooth scrolling, you will have to use this register. See De Re Atari. 54277 D405 VSCROL (W) Vertical scroll enable, POKE VSCROL with from zero to 16 scan lines, depending on the GRAPHICS mode of the screen for the number of scan lines to scroll. Vertical fine scrolls can be used only if BIT 5 of the display list instruction has been set. Coarse scrolling can be done without using this register, simply by moving the top of the screen address (as defined by the DL LMS instruction) up or down one mode line (plus or minus 40 or 20 bytes, depending on the GRAPHICS mode). The top of the screen address can be found by: 10 DLIST = PEEK(560) + PEEK(561) * 2 56 20 SCRNLO = DLIST + 4: SCRNHI = DLIS T + 5: REM LSB/MSB OF SCREEN ADDRE SS 25 PRINT "SCREEN ADDRESS = " PEEK(SC RNLO) + PEEK(SCRNHI) * 256 You could then add a routine to this for a coarse - scroll vertically through the memory with a joystick, such as: 30 LOBYTE = 0: HIBYTE = 0 40 IF STICK(0) = 14 THEN LOBYTE = LO BYTE + 40:GOTO 100 50 IF STICK(0) = 13 THEN LOBYTE = LO BYTE - 40 60 IF LOBYTE < 0 THEN LOBYTE = LOBYT E + 256: HIBYTE = HIBYTE - 1 70 IF HIBYTE < 0 THEN HIBYTE = 0 80 GOTO 200 100 IF LOBYTE 255 THEN LOBYTE = LOB YTE - 256 110 HIBYTE = HIBYTE + 1