This assembly language program illustrates the use of players, missiles, and display lists. The diagram on the next page shows what the display looks like and which objects are used. The comments in the program listing describe how it works.
0000 10 TITLE "ATARI 800 CHECKERS DISPLAY BY C. SHAW 3/31/80" 20 ;COPYRIGHT ATARI 1980 40 ; 50 ; THIS IS AN EXAMPLE OF A DISPLAY LIST WHICH USES CHARACTER DISPLAY MAPPING TO 60 ;PRODUCED THE CHECKERS AND THE TOP AND BOTTOM BORDERS OF THE BOARD 70 ;PLAYERS ARE USED FOR THE RED SQUARES. THIS GIVES 6 COLORS WITHOUT 80 ;CHANGING THE COLOR REGISTERS 90 ;MISSILES ARE USED FOR THE LEFT AND RIGHT BORDERS 0100 ;THE PROGRAM STARTS AT THE LOCATION SPECIFIED BY PMB 0110 ;A FEW TRICKS ARE USED TO SAVE RAM BUT FURTHER OPTIMIZATION IS POSSIBLE 0120 ;THIS IS A RAM BASED PROGRAM WHICH RUNS WITH THE ASSEMBLER CARTRIDGE, NOT A 0130 ;ROM CARTRIDGE 0140 ; 0150 ;COLLEEN (ATARI 800) EQUATES 0160 ; D409 0170 CHBASE = $D409 D400 0180 DMACTL = $D400 022F 0190 SDMCTL = $022F D000 0200 HPOSP0 = $D000 D008 0210 SIZEP0 = $D008 02C0 0220 PCOLR0 = $02C0 0230 0230 SDLSTL = $0230 0231 0240 SDLSTH = $0231 D01D 0250 GRACTL = $D01D D407 0260 PMBASE = $D407 026F 0270 GPRIOR = $026F 0280 0200 VDSLST = $280 D40E 0290 NMIEN = $D40E 0300 ; 0310 ;DISPLAY LIST EQUATES 0320 ; 0080 0330 INT = $80 ;DISPLAY LIST INTERRUPT (BIT 7 OF NMI STATUS) 0041 0340 JMPWT = $41 ;JUMP AND WAIT UNTIL END OF NEXT VERTICAL BLANK (3 BYTES) 0040 0350 RELOAD = $48 ;RELOAD MEM SCAN COUNTER (3 BYTES) 0020 0360 VSC = $20 ;VERTICAL SCROLL ENABLE 0010 0370 HSC = $10 ;HORIZONTAL SCROLL ENABLE 0001 0380 JUMP = 1 ;JUMP INSTRUCTION (3 BYTES) 0000 0390 BLANK1 = 0 ;1 BLANK TV LINE 0010 0400 BLANK2 = $10 ;2 BLANK LINES 0020 0410 BLANK3 = $20 ;3 0030 0420 BLANK4 = $30 ;4 0040 0430 BLANK5 = $40 ;5 0050 0440 BLANK6 = $50 ;6 0060 0450 BLANK7 = $60 ;7 0070 0460 BLANK8 = $70 ;8 BLANK TV LINES
<this page is a work in progress. It's fairly lengthy to type in and not likely to be very useful, and so is a low-priority item.>