0100 ; Checksum Verifier Rev 5.1 (Modified 4.7 by Glenn S. Bruner)›0110 ;›0120 ; John Hinman›0130 ; Atari Inc.›0140 ;04/29/95 Added more cartridges and fixed some incorrect›0150 ; checksums.›0160 ; Added some XEGS cartridges (note: only checks the›0170 ; base 16k of XEGS carts). These carts are 64k bank›0180 ; select cartridge and I haven't worked out the bank›0190 ; select routine to check the entire cartridge.›0200 ; Thanks to John Hardie for added checksums.›0210 ;11/28/93 Fixed Telelink II CS check for RAM test›0220 ; Added mod for PILOT cart check›0230 ; Modified cart list to display more than 2 pages›0240 ; Moved from base address $D800 to $C000›0250 ; Added more cartridges›0260 ; Rewritten on MAC/65›0270 ; 3/18/83 Check for swapped proms by reading init byte (only if 16k)›0280 ; 3/11/83 Microsoft Basic II, Atariwriter Rev B›0290 ; Displays both 16k and 8k checksum if no match›0300 ; 3/8/83 1200 burn-in›0310 ; 3/4/83 Assembler/Editor Rev B, Basic Rev B, East. Front, Dig Dug›0320 ; 2/28/83 Caverns of Mars, E.T.›0330 ; 2/15/83 Atariwriter, Qix, Qix Rev 7, Update Telelink II›0340 ; Display all carts in table if no match and start key hit›0350 ;11/22/82 Added Telelink II›0360 ;10/14/82 Checks 2k,4k,8k,16k Blocks and compares each›0370 ; block rather than using start address›0380 ; 9/24/82 Added Defender, Galaxian, beep if bad checksum,›0390 ; and corrected Basketball checksum›0400 ; 7/23/82 Rewritten on GENRAD›0410 ; 5/28/82 Modified to run from O.S.›0420 ; This replaces the empty area (C000-CFFF) in the 400/800 O.S.›0430 ; Location $F195 must be a jump to $C000, $F24C-E must be NOP's.›0440 ;›0450 ; Equates›0460 ;›0470 RED = $43›0480 COLORB = $02C8 ;BCKGRND CLR REG›0490 ROWCRS = $54 ;CURSOR ROW›0500 COLCRS = $55 ;CURSOR COLUMN›0510 CONSOL = $D01F ;KEYBOARD SPEAKER›0520 RCLOK0 = $14 ;REAL TIME CLOCK›0530 OPEN = $03›0540 CLOSE = $0C›0550 PUTR = $09 ;PUT RECORD›0560 PUTB = $0B›0570 IOCB1 = $0350 ;ADDR OF IOCB # 1›0580 CIOV = $E456 ;CIO ENTRY›0590 INITV = $BFFF ;INITIALIZATION VECTOR›0600 STRTV = $BFFB ;START VECTOR›0610 OPBYT = $BFFD ;OPTION BYTE›0620 EOL = $9B ;END OF LINE CHAR›0630 TRAM = $9000 ;START OF TEST RAM›0640 ;›0650 ; Cartridge Checksums›0660 ; ›0670 ARTCS = $169E ;ATARI ARTIST (A)›0680 AEDCS = $DC4A ;ASSEMBLER/EDITOR›0690 AEBCS = $AD83 ;ASM/EDT REV B›0700 ASTCS = $551C ;ASTEROIDS›0710 AWRCS = $DED0 ;ATARIWRITER›0720 AWBCS = $AE00 ;ATARIWRITER REV B›0730 AWCCS = $A097 ;ATARIWRITER (C)›0740 AWDCS = $33A7 ;ATARIWRITER (D)›0750 ATLCS = $62A9 ;ATLANTIS›0760 BSACS = $12C9 ;BASIC REV A›0770 BSBCS = $4469 ;BASIC REV B›0780 BKBCS = $EB7B ;BASKETBALL›0790 BBSCS = $48A9 ;BOUNTY BOB STRIKES BACK›0800 CAVCS = $382F ;CAVERNS OF MARS›0810 CTPCS = $6FB2 ;CENTIPEDE›0820 CHSCS = $E4BE ;CHESS›0830 DEFCS = $C2C0 ;DEFENDER›0840 DINCS = $A372 ;DELUXE INVADERS›0850 DIGCS = $F841 ;DIG DUG›0860 DD1CS = $ED04 ;DIG DUG (OLD)›0870 DD2CS = $716A ;DIG DUG (NEW)›0880 DK1CS = $C3D6 ;DONKEY KONG›0890 DK2CS = $4CA5 ;DONKEY KONG JR›0900 ESFCS = $7418 ;EASTERN FRONT (A)›0910 EFBCS = $A533 ;EASTERN FRONT (B)›0920 EDUCS = $EE83 ;EDUCATION›0930 ETCS = $603C ;E.T.›0940 FL1CS = $777F ;FINAL LEGACY (TEXT)›0950 FL2CS = $45F6 ;FINAL LEGACY (ICONS)›0960 FRGCS = $B2C1 ;FROGGER›0970 FR2CS = $0472 ;FROGGER 2›0980 GLXCS = $E87F ;GALAXIAN›0990 GRDCS = $E486 ;GRIDRUNNER›1000 DEMCS = $CA84 ;IN-STORE DEMO›1010 PJBCS = $8E9F ;JAMES BOND›1011 JGLCS = $3082 ;JUNGLE HUNT›1020 LNPCS = $78D5 ;LEARNING PHONE›1030 MB2CS = $FA9D ;MICROSOFT BASIC II›1040 MILCS = $6B64 ;MILLIPEDE›1050 M49CS = $8194 ;MINER 2049R›1060 MCMCS = $B180 ;MISSILE COMMAND›1070 MSPCS = $0B80 ;MSPACMAN›1080 MUSCS = $1B00 ;MUSIC COMPOSER›1090 PACCS = $EB61 ;PAC-MAN›1100 PCSCS = $9F99 ;PARKER BROS CHESS›1110 PILCS = $1EF1 ;PILOT›1120 POLCS = $6973 ;POLE POSITION›1130 QIXCS = $9B5A ;QIX›1140 QX7CS = $AB56 ;QIX REV 7›1150 SEACS = $B0A8 ;SEAFOX›1160 SPCCS = $6F52 ;SUPER PACMAN›1170 SPICS = $D00C ;SPACE INVADERS›1180 SPYCS = $33ED ;SPY HUNTER›1190 STRCS = $D134 ;STAR RAIDERS›1200 SBOCS = $D1C9 ;SUPER BREAKOUT›1210 TL1CS = $822F ;TELELINK I (A)›1220 TLBCS = $6A2F ;TELELINK I (B)›1230 TL2CS = $682E ;TELELINK II›1240 TENCS = $370F ;TENNIS›1250 TRFCS = $E734 ;TRACK AND FIELD›1260 TTTCS = $03AC ;TIC-TAC-TOE›1270 VDECS = $8778 ;VIDEO EASEL›1280 P123CS = $1611 ;1200 PITS R 1.3›1290 DBICS = $29D6 ;DISC BURN-IN V. F›1300 BIECS = $54DB ;DISC BURN-IN V. E›1310 DIAGCS = $4A4C ;DISC DIAG REV 0.2›1320 DMFGCS = $E3DB ;DISC MFG TESTS›1330 S301CS = $7675 ;SALT 3.01›1340 SA01CS = $45A3 ;SALT A.01›1350 SA02CS = $44F1 ;SALT A.02›1360 SC01CS = $263E ;1400 SUPER SALT C.01›1370 D810CS = $D9C9 ;810 DISC DIAG FD100006›1380 EDUSCS = $D683 ;EDUCATIONAL SYSTEM›1390 ATGCS = $1DE4 ;ATARIGRAPHICS›1400 SSRACS = $E1E7 ;CPS SUPER SALT REV A›1410 ATACS = $91C5 ;ATARI ARTIST (B)›1420 ATLLCS = $9CAA ;ATARI LAB - LIGHT›1430 ATLTCS = $F587 ;ATARI LAB - TEMPERATURE›1440 JOUCS = $0E59 ;JOUST›1450 T14CS = $136E ;1400XL TELECOMUNICATOR›1460 LOGCS = $C656 ;LOGO›1470 PENCS = $4132 ;PENGO›1480 ROBCS = $A601 ;ROBOTRON›1490 C810CS = $5548 ;810 DISC COMP TEST R0.00›1500 S850CS = $2074 ;850 SALT REV 1.0›1510 SS14CS = $45BC ;1400 SUPER SALT B/I REV D›1520 SPERCS = $F5FF ;PERITEL SALT R 2.07F›1530 S205CS = $5761 ;SALT 2.05›1540 BIRECS = $E7B2 ;810/815 B/I REV E›1550 S204CS = $16AE ;SALT 2.04›1560 S12ACS = $EA1A ;1200 SALT REV A.02›1570 P122CS = $237A ;1200 PITS REV 1.2›1580 DMR0CS = $391E ;DISK MFG TESTS REV 0›1590 BSCCS = $42AB ;BASIC REV C›1600 XABCS = $6C76 ;XEGS AIRBALL›1610 XACCS = $E74C ;XEGS ARCHON›1620 XBBCS = $1229 ;XEGS BALLBLAZER›1630 XBYCS = $2C21 ;XEGS BARNYARD BLASTER›1640 XBZCS = $CAD2 ;XEGS BATTLEZONE›1650 XBMCS = $C3BD ;XEGS BLUE MAX›1660 XBHCS = $249B ;XEGS BUG HUNT›1670 XCBCS = $69D9 ;XEGS CROSSBOW›1680 XDCCS = $42 ;XEGS DARK CHAMBERS›1690 XMMCS = $6936 ;XEGS MIDNIGHT MAGIC›1700 XDFCS = $C9EB ;XEGS DESERT FALCON›1710 XFNCS = $9697 ;XEGS FIGHT NIGHT›1720 XFSCS = $5E36 ;XEGS FLIGHT SIMULATOR 2›1730 XGTCS = $64DB ;XEGS GATO›1740 XHBCS = $15B1 ;XEGS HARDBALL›1750 XRFCS = $AA16 ;XEGS RESCUE ON FRACTALUS›1760 XTFCS = $7F43 ;XEGS THUNDERFOX›1770 ;›1780 ; Variables›1790 ;›1800 *= $80›1810 STAD .DS 2 ;START ADDR OF MEMORY TO CHECK›1820 ENDAD .DS 1 ;END ADDR›1830 CSLO .DS 1›1840 CSHI .DS 1›1850 CSLO8 .DS 1 ;8K CHECKSUM›1860 CSHI8 .DS 1›1870 ASCCS .DS 4 ;ASCII BUFFER FOR CHECKSUM›1880 DELAYF .DS 1 ;FLAG EXTRA DELAY IF 2K›1890 FAILF .DS 1 ;FAILURE FLAG›1900 FORMF .DS 1 ;FLAG BAD FORMAT›1910 CARTL .DS 1 ;COPY OF START ADDR›1920 BKGND .DS 1 ;STORAGE FOR BACKGROUND PATTERN›1930 OVRL .DS 1 ;STORAGE FOR OVERLAY›1940 TIME0 .DS 1 ;VAR FOR DELAY LOOP›1950 TIME1 .DS 1›1960 T0 .DS 1›1970 ;›1980 *= $C000›1990 ;›2000 ; Start of checksum routine›2010 ;›2020 JSR OPEN1 ;OPEN IOCB1›2030 START JSR CLRSCR ;CLEAR THE SCREEN›2040 LDX #6›2050 JSR PTMSG ;DISPLAY HEADER›2060 LDA #0›2070 STA COLORB ;RESTORE BACKGROUND›2080 STA FORMF›2090 LDA #$A0›2100 STA STAD+1›2110 STA CARTL ;SAVE START ADDR›2120 JSR CHKSUM ;CHECKSUM TOP 8K›2130 LDA CSLO›2140 STA CSLO8 ;SAVE 8K CHECKSUM›2150 LDA CSHI›2160 STA CSHI8›2170 LDA FAILF ;COMPARE?›2180 BEQ GOODCS ;FOUND IT›2190 LDA #$80›2200 STA CARTL ;SAVE START ADDR›2210 STA STAD+1›2220 JSR CHKSUM ;CHECKSUM 16K›2230 LDA FAILF›2240 BNE BADCS›2250 ;›2260 ; FOUND CHECKSUM IN TABLE. IF 16K, CHECK IF PROMS ARE REVERSED BY›2270 ; READING 0 BYTE AND SEEING THAT $8000<=INIT. ADDRESS<$C000›2280 ;›2290 GOODCS LDA CARTL ;GET START ADDR OF MATCH›2300 CMP #$80 ;16K?›2310 BNE GOODCT ;IF NOT, MUST BE OK›2320 LDA $BFFC›2330 BNE BADFORM ;IF NOT0, ILLEGAL FORMAT›2340 LDA INITV ;GET INIT VECTOR›2350 CMP #$80›2360 BCC BADFORM ;ADDR<$80?›2370 CMP #$C0›2380 BCS BADFORM ;ADDR>$C0?›2390 BCC GOODCT›2400 BADFORM LDA #$FF›2410 STA FORMF ;FLAG ILLEGAL FORMAT›2420 ; Display cartridge name and checksum›2430 GOODCT JSR DSCART ;X=OFFSET TO TABLE›2440 JSR DSCKSM›2450 JSR CRLF ;NEXT LINE›2460 LDA FORMF›2470 BEQ TELECK›2480 ;Display bad format msg›2490 LDX #9 ;BAD FORMAT MSG›2500 JSR PTMSG›2510 LDA #RED›2520 STA COLORB›2530 JSR BEEP›2540 ; See if this is Telelink II›2550 TELECK LDA CSHI›2560 CMP # >TL2CS›2570 BNE NOTELE›2580 LDA CSLO›2590 CMP # SCRN›4320 STA IOCB1+5›4330 LDA #8›4340 STA IOCB1+10 ;WRT ONLY›4350 LDX #$10 ;POINT TO IOCB1›4360 JMP CIOV ;GO DO IT OP SYS›4370 ;›4380 ; New line›4390 CRLF LDA #EOL›4400 BNE PUTCHR›4410 ; Clear the screen›4420 CLRSCR LDA #$7D ;CHAR IS CLEAR SCREEN CONTROL›4430 PUTCHR LDX #PUTB›4440 STX IOCB1+2 ;CMD IS PUT CHAR›4450 LDX #0›4460 STX IOCB1+8 ;BUF LENGTH 0›4470 STX IOCB1+9›4480 LDX #$10 ;POINT TO IOCB›4490 JMP CIOV›4500 ;›4510 ; Calculate checksum from (STAD) to $C000›4520 CHKSUM LDA #$C0›4530 STA ENDAD ;SET END ADDRESS=$C000›4540 LDY #0›4550 STY STAD›4560 STY CSHI›4570 STY CSLO›4580 JSR DOCS ;CALCULATE CHECKSUM›4590 JSR RDCKSM ;COMPARE AGAINST TABLE›4600 RTS ›4610 ;›4620 ; Do checksum S/R›4630 ;›4640 DOCS LDA (STAD),Y ;GET A BYTE›4650 JSR CHKSAD ;ADD TO LAST BYTE›4660 INY ›4670 BNE DOCS ;BR IF SAME PAGE›4680 INC STAD+1 ;NEXT PAGE PLEASE›4690 LDA STAD+1›4700 CMP ENDAD ;LAST PAGE??›4710 BNE DOCS ;BR IF NOPE›4720 CLC ›4730 RTS ;WE'RE DONE!!›4740 ;›4750 ; Checksum S/R›4760 ;›4770 CHKSAD CLC ›4780 ADC CSLO ;ADD TO LAST›4790 STA CSLO ;SAVE IT›4800 BCC NOCRY ;BR IF NO CARRY›4810 INC CSHI ;WE HAD CARRY›4820 NOCRY RTS ›4830 ;›4840 ; Read and compare checksum S/R›4850 ;›4860 RDCKSM LDX #0›4870 STX FAILF ;CLEAR FLAG›4880 CSLOOP CPX #CSTEND ;END OF TABLE?›4890 BNE NOTEND›4900 BADCART INX ›4910 LDA #$FF›4920 STA FAILF›4930 RTS ;DIDN'T FIND IT›4940 NOTEND LDA CSTBL,X ;GET CS BYTE FROM TABLE(LO)›4950 INX ;UPDATE THE INDEX›4960 CMP CSLO ;IS IT A GOODIE?›4970 BEQ LOCMP ;BR IF IT IS›4980 NOCMP INX ›4990 JMP CSLOOP ;AIN'T IT,TRY AGAIN›5000 LOCMP LDA CSTBL,X ;GET CS BYTE FROM TABLE(HI)›5010 CMP CSHI ;IS IT A GOODIE?›5020 BNE NOCMP ;BR IF NOT›5030 ;WE HAVE A CHECKSUM; IF IT IS THE PILOT CHKSUM, MAKE SURE IT IS›5040 ;NOT A BASIC CART WITH PIN 1 OUT.›5050 LDA CSLO ;CHECK IF PILOT CS›5060 CMP # PILCS›5100 BNE RTINDX ;NO›5110 LDA $9C00 ;CHECK THIS ADDR›5120 CMP #$AA ;BASIC HAS AA HERE›5130 BNE RTINDX ;NOT BAIC›5140 LDA $9C01 ;NEXT ADDR›5150 CMP #$20 ;BASIC HAS 20›5160 BNE RTINDX ;NOT BASIC›5170 LDX #CSTEND ;THIS IS BAD BASIC CART›5180 JMP BADCART›5190 RTINDX RTS ;RETURN WITH INDEX TO THE CHECKSUM›5200 ;›5210 ; Print message; X is index to msg table›5220 PTMSG LDA MSGTBL,X ;POINT TO MESSAGE›5230 STA IOCB1+4›5240 LDA MSGTBH,X›5250 STA IOCB1+5›5260 JMP PTMSG1›5270 ;›5280 ; Display cartridge name S/R›5290 ;›5300 DSCART LDA MPTBL-1,X ;POINT TO MSG LO ADDR›5310 STA IOCB1+4›5320 LDA MPTBL,X›5330 STA IOCB1+5 ;POINT TO MSG HI ADDR›5340 PTMSG1 LDA #PUTR›5350 STA IOCB1+2 ;PUT REC›5360 LDA #20 ;GET LENGTH OF MSG›5370 STA IOCB1+8›5380 LDA #0›5390 STA IOCB1+9›5400 LDX #$10 ;INDEX TO IOCB1›5410 JMP CIOV›5420 ;›5430 ; Display calculated checksum S/R›5440 ;›5450 DSCKSM LDA CSHI ;GET HI›5460 JSR HEXACI ;CONVERT TO ASCII›5470 STA ASCCS›5480 STX ASCCS+1 ;SAVE IN STRING›5490 LDA CSLO ;GET LO›5500 JSR HEXACI ;CONV TO ASCII›5510 STA ASCCS+2›5520 STX ASCCS+3 ;SAVE IN STRING›5530 DSCSM1 LDA # ASCCS›5560 STA IOCB1+5 ;STRING ADDR IN IOCB›5570 LDA #PUTB ;PUT BYTE›5580 STA IOCB1+2›5590 LDA #4›5600 STA IOCB1+8 ;BUF LEN=4›5610 LDA #0›5620 STA IOCB1+9 ;BUF LEN HI›5630 LDX #$10 ;POINT TO IOCB1›5640 JMP CIOV ;GO DO IT OP SYS›5650 ;›5660 ; Display checksum from table›5670 DSPCS LDX T0›5680 LDA CSTBL,X ;GET HI BYTE›5690 JSR HEXACI›5700 STA ASCCS›5710 STX ASCCS+1›5720 LDX T0›5730 LDA CSTBL-1,X ;GET LO BYTE›5740 JSR HEXACI›5750 STA ASCCS+2›5760 STX ASCCS+3›5770 JMP DSCSM1›5780 ;›5790 BEEP LDA RCLOK0›5800 CLC ›5810 ADC #30 ;1 SEC›5820 TAX ›5830 WFL LDA #$FF›5840 STA CONSOL ;TURN ON SPEAKER›5850 LDA #0›5860 LDY #$F0›5870 WFL1 DEY ›5880 BNE WFL1›5890 STA CONSOL ;TURN OFF SPEAKER›5900 LDY #$F0›5910 WFL2 DEY ›5920 BNE WFL2›5930 CPX RCLOK0 ;1 SEC UP YET?›5940 BNE WFL›5950 RTS›5960 ;›5970 ; Hex to asci converter S/R›5980 ; In A= Hex byte›5990 ; Out A=HI nibble, X=LO nibble›6000 HEXACI PHA ;SAVE A›6010 JSR HEXNIB ;DO LO NIBBLE›6020 TAX ;PUT IN X›6030 PLA ;RESTORE A›6040 LSR A›6050 LSR A›6060 LSR A›6070 LSR A ;MOVE HI NIBBLE›6080 HEXNIB AND #$0F›6090 CLC ›6100 CMP #$0A›6110 BCC ALP›6120 ADC #6›6130 ALP ADC #$30›6140 RTS ;IT'S RECURSIVE!›6150 ;›6160 DELAY LDY #0›6170 LDX #0›6180 DLOOP INX ›6190 BNE DLOOP›6200 INY ›6210 BNE DLOOP›6220 RTS ›6230 ;›6240 FILL LDX #0›6250 LDA BKGND›6260 FILLP STA TRAM,X›6270 INX ›6280 BNE FILLP›6290 RTS ›6300 ;›6310 ; Check that fill pattern was saved in novram›6320 ; March complement of fill pattern thru novram to check address decode›6330 ; and to check complement bits tied high or low›6340 MARCH LDX #0›6350 STY OVRL ;SAVE OVERLAY›6360 LDA $D501 ;RECALL DATA FROM NOVRAM›6370 JSR DEL2 ;TIME TO SETTLE›6380 MRCH1 LDA TRAM,X›6390 AND #$0F ;LOOK AT LO NIBBLE ONLY›6400 CMP BKGND ;WAS BKGND WRITTEN?›6410 BNE EMRCH›6420 TYA ;MOVE OVERLAY TO A›6430 STA TRAM,X ;OVERLAY›6440 STA $D502 ;WRITE TO NOVRAM›6450 NOP ;TIME TO SETTLE›6460 LDA $D501 ;RECALL›6470 JSR DEL2›6480 LDA TRAM,X ;READ TRAM=NOVRAM=OVERLAY›6490 AND #$0F ;LOOK AT LO NIBBLE›6500 CMP OVRL ;WAS OVERLAY WRITTEN?›6510 BNE EMRCH›6520 INX ›6530 BNE MRCH1 ;TEST 256 BYTES›6540 CLC ›6550 RTS ›6560 EMRCH SEC ›6570 RTS ›6580 ;›6590 DEL2 LDA #$03›6600 STA TIME1›6610 DELP1 LDA #$EF›6620 STA TIME0›6630 DELP0 DEC TIME0›6640 BNE DELP0›6650 DEC TIME1›6660 BNE DELP1›6670 RTS ›6680 ;›6690 ; Tables›6700 ;›6710 ; Checksum Table›6720 CSTBL .WORD ARTCS ;ATARI ARTIS A›6730 .WORD AEDCS ;A/E›6740 .WORD AEBCS ;A/E REV B›6750 .WORD ASTCS ;ASTEROIDS›6760 .WORD AWRCS ;ATARIWRITER›6770 .WORD AWBCS ;ATARIWRITER REV B›6780 .WORD AWCCS ;A/W C›6790 .WORD AWDCS ;A/W D›6800 .WORD ATLCS ;ATLANTIS›6810 .WORD BSACS ;BASIC REV A›6820 .WORD BSBCS ;BASIC REV B›6830 .WORD BKBCS ;BASKETBALL›6840 .WORD BBSCS ;BOUNTY BOB STRIKES BACK›6850 .WORD CAVCS ;CAVERNS OF MARS›6860 .WORD CTPCS ;CENTIPEDE›6870 .WORD CHSCS ;CHESS›6880 .WORD DEFCS ;DEFENDER›6890 .WORD DINCS ;DELUXE INVADERS›6900 .WORD DIGCS ;DIG DUG›6910 .WORD DD1CS ;DIG DUG (OLD)›6920 .WORD DD2CS ;DIG DUG (NEW)›6930 .WORD DK1CS ;DONKEY KONG›6940 .WORD DK2CS ;DONKEY KONG JR›6950 .WORD ESFCS ;EASTERN FRONT A›6960 .WORD EFBCS ;EASTERN FRONT B›6970 .WORD EDUCS ;EDUCATION›6980 .WORD ETCS ;E.T.›6990 .WORD FL1CS ;FINAL LEGACY (TEXT)›7000 .WORD FL2CS ;FINAL LEGACY (ICONS)›7010 .WORD FRGCS ;FROGGER›7020 .WORD FR2CS ;FROGGER 2›7030 .WORD GLXCS ;GALAXIAN›7040 .WORD DEMCS ;IN-STORE DEMO›7050 .WORD PJBCS ;JAMES BOND›7060 .WORD JGLCS ;JUNGLE HUNT›7070 .WORD LNPCS ;LEARNING PHONE›7080 .WORD MB2CS ;MICROSOFT BASIC II›7090 .WORD MILCS ;MILLIPEDE›7100 .WORD M49CS ;MINER 2049R›7110 .WORD MCMCS ;MISSILE COMMAND›7120 .WORD MSPCS ;MSPACMAN›7130 .WORD MUSCS ;MUSIC COMPOSER›7140 .WORD PACCS ;PACMAN›7150 .WORD PCSCS ;PARKER BROS CHESS›7160 .WORD PILCS ;PILOT›7170 .WORD POLCS ;POLE POSITION›7180 .WORD QIXCS ;QIX›7190 .WORD QX7CS ;QIX REV 7›7200 .WORD SEACS ;SEAFOX›7210 .WORD SPCCS ;SUPER PACMAN›7220 .WORD SPICS ;SPACE INVADERS›7230 .WORD SPYCS ;SPY HUNTER›7240 .WORD STRCS ;STAR RAIDERS›7250 .WORD SBOCS ;SUPER BREAKOUT›7260 .WORD TL1CS ;TELELINK I (A)›7270 .WORD TLBCS ;TELELINK I (B)›7280 .WORD TL2CS ;TELELINK II›7290 .WORD TENCS ;TENNIS›7300 .WORD TRFCS ;TRACK AND FIELD›7310 .WORD TTTCS ;TIC-TAC-TOE›7320 .WORD VDECS ;VIDEO EASEL›7330 .WORD BIECS ;BURN-IN E›7340 .WORD DBICS ;DISK BURN-IN F›7350 .WORD DIAGCS ;DISK DIAG›7360 .WORD DMFGCS ;DISK MFG TESTS›7370 .WORD S301CS ;SALT 3.01›7380 .WORD SA01CS ;SALT A.01›7390 .WORD P123CS ;BURN-IN 1200›7400 .WORD SA02CS ;SALT A.02›7410 .WORD SC01CS ;1400 SUPER SALT›7420 .WORD D810CS ;810 DISC DIAG›7430 .WORD EDUSCS ;EDUCATIONAL SYS›7440 .WORD ATGCS ;ATARIGRAPHICS›7450 .WORD SSRACS ;CPS SUPER SALT›7460 .WORD ATACS ;ATARI ARTIST B›7470 .WORD ATLLCS ;LIGHT LAB›7480 .WORD ATLTCS ;TEMPERATURE LAB›7490 .WORD JOUCS ;JOUST›7500 .WORD T14CS ;1400 TELECOMM›7510 .WORD LOGCS ;LOGO›7520 .WORD PENCS ;PENGO›7530 .WORD ROBCS ;ROBOTRON›7540 .WORD C810CS ;810 DISC COMP TEST›7550 .WORD S850CS ;850 SALT REV 1.0›7560 .WORD SS14CS ;1400 SUPER SALT B/I›7570 .WORD SPERCS ;PERITEL SALT R 2.07F›7580 .WORD S205CS ;SALT 2.05›7590 .WORD BIRECS ;810/815 B/I REV E›7600 .WORD S204CS ;SALT 2.04›7610 .WORD S12ACS ;1200 SALT REV A.02›7620 .WORD P122CS ;1200 PITS REV 1.2›7630 .WORD DMR0CS ;DISK MFG TEST REV 0›7640 .WORD BSCCS ;BASIC REV C›7650 .WORD XABCS ;XEGS AIRBALL›7660 .WORD XACCS ;XEGS ARCHON›7670 .WORD XBBCS ;XEGS BALLBLAZER›7680 .WORD XBYCS ;XEGS BARNYARD BLASTER›7690 .WORD XBZCS ;XEGS BATTLEZONE›7700 .WORD XBMCS ;XEGS BLUE MAX›7710 .WORD XBHCS ;XEGS BUG HUNT›7720 .WORD XCBCS ;XEGS CROSSBOW›7730 .WORD XDCCS ;XEGS DARK CHAMBERS›7740 .WORD XMMCS ;XEGS MIDNIGHT MAGIC›7750 .WORD XDFCS ;XEGS DESERT FALCON›7760 .WORD XFNCS ;XEGS FIGHT NIGHT›7770 .WORD XFSCS ;XEGS FLIGHT SIMULATOR 2›7780 .WORD XGTCS ;XEGS GATO›7790 .WORD XHBCS ;XEGS HARDBALL›7800 .WORD XRFCS ;XEGS RESCUE ON FRACTALUS›7810 .WORD XTFCS ;XEGS THUNDERFOX›7820 ;›7830 ;CARTRIDGE NAME MESSAGE. MAX CHARS 19›7840 CSTEND = *-CSTBL›7850 ARTMSG .BYTE "ATARI ARTIST (A)",EOL›7860 AEDMSG .BYTE "ASSEMBLER/EDITOR",EOL›7870 AEBMSG .BYTE "ASSEM/EDITOR REVB",EOL›7880 ASTMSG .BYTE "ASTEROIDS",EOL›7890 AWRMSG .BYTE "ATARIWRITER",EOL›7900 AWBMSG .BYTE "ATARIWRITER REV B",EOL›7910 AWCMSG .BYTE "ATARIWRITER",EOL›7920 AWDMSG .BYTE "ATARIWRITER",EOL›7930 BSAMSG .BYTE "BASIC REV A",EOL›7940 BSBMSG .BYTE "BASIC REV B",EOL›7950 BKBMSG .BYTE "BASKETBALL",EOL›7960 BBSMSG .BYTE "BOUNTY BOB STRIKES",EOL›7970 CAVMSG .BYTE "CAVERNS OF MARS",EOL›7980 CTPMSG .BYTE "CENTIPEDE",EOL›7990 CHSMSG .BYTE "CHESS",EOL›8000 DEFMSG .BYTE "DEFENDER",EOL›8010 DINMSG .BYTE "DELUXE INVADERS",EOL›8020 DIGMSG .BYTE "DIG DUG",EOL›8030 DD1MSG .BYTE "DIG DUG (OLD)",EOL›8040 DD2MSG .BYTE "DIG DUG (NEW)",EOL›8050 DK1MSG .BYTE "DONKEY KONG",EOL›8060 DK2MSG .BYTE "DONKEY KONG JR",EOL›8070 ESFMSG .BYTE "EASTERN FRONT (A)",EOL›8080 EFBMSG .BYTE "EASTERN FRONT (B)",EOL›8090 EDUMSG .BYTE "EDUCATION",EOL›8100 ETMSG .BYTE "E.T.",EOL›8110 FL1MSG .BYTE "FINAL LEGACY (TEXT)",EOL›8120 FL2MSG .BYTE "FINAL LEGACY(ICONS)",EOL›8130 FRGMSG .BYTE "FROGGER",EOL›8140 FR2MSG .BYTE "FROGGER 2",EOL›8150 GLXMSG .BYTE "GALAXIAN",EOL›8160 GRDMSG .BYTE "GRIDRUNNER",EOL›8170 DEMMSG .BYTE "IN-STORE DEMO",EOL›8180 PJBMSG .BYTE "JAMES BOND",EOL›8190 JGLMSG .BYTE "JUNGLE HUNT",EOL›8200 LNPMSG .BYTE "LEARNING PHONE",EOL›8210 MB2MSG .BYTE "MICROSOFT BASIC II",EOL›8220 MILMSG .BYTE "MILLIPEDE",EOL›8230 M49MSG .BYTE "MINER 2049R",EOL›8240 MCMMSG .BYTE "MISSILE COMMAND",EOL›8250 MSPMSG .BYTE "MS PACMAN",EOL›8260 MUSMSG .BYTE "MUSIC COMPOSER",EOL›8270 PACMSG .BYTE "PACMAN",EOL›8280 PCSMSG .BYTE "PARKER BROS CHESS",EOL›8290 PILMSG .BYTE "PILOT",EOL›8300 POLMSG .BYTE "POLE POSITION",EOL›8310 QIXMSG .BYTE "QIX",EOL›8320 QX7MSG .BYTE "QIX REV 7",EOL›8330 SEAMSG .BYTE "SEAFOX",EOL›8340 SPCMSG .BYTE "SUPER PACMAN",EOL›8350 SPIMSG .BYTE "SPACE INVADERS",EOL›8360 SPYMSG .BYTE "SPY HUNTER",EOL›8370 STRMSG .BYTE "STAR RAIDERS",EOL›8380 SBOMSG .BYTE "SUPER BREAKOUT",EOL›8390 TL1MSG .BYTE "TELELINK I (A)",EOL›8400 TLBMSG .BYTE "TELELINK I (B)",EOL›8410 TL2MSG .BYTE "TELELINK II",EOL›8420 TENMSG .BYTE "TENNIS",EOL›8430 TRFMSG .BYTE "TRACK AND FIELD",EOL›8440 TTTMSG .BYTE "TIC-TAC-TOE",EOL›8450 VDEMSG .BYTE "VIDEO EASEL",EOL›8460 BIEMSG .BYTE "BURN-IN V.E",EOL›8470 DBIMSG .BYTE "DISK B/I V.F",EOL›8480 DIAGMG .BYTE "DISK DIAG REV 0.2",EOL›8490 DMFGMG .BYTE "DISK MFG TESTS",EOL›8500 S301MG .BYTE "SALT 3.01",EOL›8510 SA01MG .BYTE "SALT A.01",EOL›8520 P123MG .BYTE "1200 PITS R 1.3",EOL›8530 SA02MG .BYTE "SALT A.02",EOL›8540 SC01MG .BYTE "1400 SUPRSALT C.01",EOL›8550 D810MG .BYTE "810 DIAG FD100006",EOL›8560 EDUSMG .BYTE "EDUCATIONAL SYSTEM",EOL›8570 ATGMSG .BYTE "ATARIGRAPHICS",EOL›8580 SSRAMG .BYTE "CPS SUPER SALT REV A",EOL›8590 ATAMSG .BYTE "ATARI ARTIST (B)",EOL›8600 ATLLMG .BYTE "ATARI LAB - LIGHT",EOL›8610 ATLTMG .BYTE "LAB - TEMPERATURE",EOL›8620 JOUMSG .BYTE "JOUST",EOL›8630 T14MSG .BYTE "1400 TELECOMMUNICTR",EOL›8640 LOGMSG .BYTE "LOGO",EOL›8650 PENMSG .BYTE "PENGO",EOL›8660 ROBMSG .BYTE "ROBOTRON",EOL›8670 C810MG .BYTE "810 DISK COMPATBLTY",EOL›8680 S850MG .BYTE "850 SALT REV 1.0",EOL›8690 SS14MG .BYTE "1400 SUPRSALT REV D",EOL›8700 SPERMG .BYTE "PERITEL SALT 2.07F",EOL›8710 S205MG .BYTE "SALT 2.05",EOL›8720 BIREMG .BYTE "810/815 B/I REV E",EOL›8730 S204MG .BYTE "SALT 2.04",EOL›8740 S12AMG .BYTE "1200 SALT REV A.02",EOL›8750 P122MG .BYTE "1200 PITS REV 1.2",EOL›8760 DMR0MG .BYTE "DISK MFG TEST REV 0",EOL›8770 BSCMSG .BYTE "BASIC REV C",EOL›8780 XABMSG .BYTE "XEGS AIRBALL",EOL›8790 XACMSG .BYTE "XEGS ARCHON",EOL›8800 XBBMSG .BYTE "XEGS BALLBLAZER",EOL›8810 XBYMSG .BYTE "XEGS BARNYARD BLSTR",EOL›8820 XBZMSG .BYTE "XEGS BATTLEZONE",EOL›8830 XBMMSG .BYTE "XEGS BLUE MAX",EOL›8840 XBHMSG .BYTE "XEGS BUG HUNT",EOL›8850 XCBMSG .BYTE "XEGS CROSSBOW",EOL›8860 XDCMSG .BYTE "XEGS DARK CHAMBERS",EOL›8870 XMMMSG .BYTE "XEGS MIDNITE MAGIC",EOL›8880 XDFMSG .BYTE "XEGS DESERT FALCON",EOL›8890 XFNMSG .BYTE "XEGS FIGHT NIGHT",EOL›8900 XFSMSG .BYTE "XEGS FLGHT SIM 2",EOL›8910 XGTMSG .BYTE "XEGS GATO",EOL›8920 XHBMSG .BYTE "XEGS HARDBALL",EOL›8930 XRFMSG .BYTE "XEGS RESCE ON FRACT",EOL›8940 XTFMSG .BYTE "XEGS THUNDERFOX",EOL›8950 SCRN .BYTE "S:",EOL›8960 ;›8970 MSG0 .BYTE "CYCLE POWER OFF/ON",EOL›8980 MSG1 .BYTE "HIT 'START' FOR MORE",EOL›8990 MSG2 .BYTE "GOOD CARTRIDGE",EOL›9000 MSG3 .BYTE "BAD RAM",EOL›9010 MSG4 .BYTE "BAD CHECKSUM",EOL›9020 MSG5 .BYTE EOL›9030 MSG6 .BYTE "CHECKSUM VERIFY 5.1 ",EOL›9040 MSG7 .BYTE "16K CHECKSUM = ",EOL›9050 MSG8 .BYTE "8K CHECKSUM = ",EOL›9060 MSG9 .BYTE "PROMS REVERSED",EOL›9070 ;›9080 ; Message pointer table›9090 MPTBL .WORD ARTMSG›9100 .WORD AEDMSG›9110 .WORD AEBMSG›9120 .WORD ASTMSG›9130 .WORD AWRMSG›9140 .WORD AWBMSG›9150 .WORD AWCMSG›9160 .WORD AWDMSG›9170 .WORD BSAMSG›9180 .WORD BSBMSG›9190 .WORD BKBMSG›9200 .WORD BBSMSG›9210 .WORD CAVMSG›9220 .WORD CTPMSG›9230 .WORD CHSMSG›9240 .WORD DEFMSG›9250 .WORD DINMSG›9260 .WORD DIGMSG›9270 .WORD DD1MSG›9280 .WORD DD2MSG›9290 .WORD DK1MSG›9300 .WORD DK2MSG›9310 .WORD ESFMSG›9320 .WORD EFBMSG›9330 .WORD EDUMSG›9340 .WORD ETMSG›9350 .WORD FL1MSG›9360 .WORD FL2MSG›9370 .WORD FRGMSG›9380 .WORD FR2MSG›9390 .WORD GLXMSG›9400 .WORD GRDMSG›9410 .WORD DEMMSG›9420 .WORD PJBMSG›9430 .WORD JGLMSG›9440 .WORD LNPMSG›9450 .WORD MB2MSG›9460 .WORD MILMSG›9470 .WORD M49MSG›9480 .WORD MCMMSG›9490 .WORD MSPMSG›9500 .WORD MUSMSG›9510 .WORD PACMSG›9520 .WORD PCSMSG›9530 .WORD PILMSG›9540 .WORD POLMSG›9550 .WORD QIXMSG›9560 .WORD QX7MSG›9570 .WORD SEAMSG›9580 .WORD SPCMSG›9590 .WORD SPIMSG›9600 .WORD SPYMSG›9610 .WORD STRMSG›9620 .WORD SBOMSG›9630 .WORD TL1MSG›9640 .WORD TLBMSG›9650 .WORD TL2MSG›9660 .WORD TENMSG›9670 .WORD TRFMSG›9680 .WORD TTTMSG›9690 .WORD VDEMSG›9700 .WORD BIEMSG›9710 .WORD DBIMSG›9720 .WORD DIAGMG›9730 .WORD DMFGMG›9740 .WORD S301MG›9750 .WORD SA01MG›9760 .WORD P123MG›9770 .WORD SA02MG›9780 .WORD SC01MG›9790 .WORD D810MG›9800 .WORD EDUSMG›9810 .WORD ATGMSG›9820 .WORD SSRAMG›9830 .WORD ATAMSG›9840 .WORD ATLLMG›9850 .WORD ATLTMG›9860 .WORD JOUMSG›9870 .WORD T14MSG›9880 .WORD LOGMSG›9890 .WORD PENMSG›9900 .WORD ROBMSG›9910 .WORD C810MG›9920 .WORD S850MG›9930 .WORD SS14MG›9940 .WORD SPERMG›9950 .WORD S205MG›9960 .WORD BIREMG›9970 .WORD S204MG›9980 .WORD S12AMG›9990 .WORD P122MG›010000 .WORD DMR0MG›010010 .WORD BSCMSG›010020 .WORD XABMSG›010030 .WORD XACMSG›010040 .WORD XBBMSG›010050 .WORD XBYMSG›010060 .WORD XBZMSG›010070 .WORD XBMMSG›010080 .WORD XBHMSG›010090 .WORD XCBMSG›010100 .WORD XDCMSG›010110 .WORD XMMMSG›010120 .WORD XDFMSG›010130 .WORD XFNMSG›010140 .WORD XFSMSG›010150 .WORD XGTMSG›010160 .WORD XHBMSG›010170 .WORD XRFMSG›010180 .WORD XTFMSG›010190 ;›010200 MSGTBL .BYTE MSG0›010310 .BYTE >MSG1›010320 .BYTE >MSG2›010330 .BYTE >MSG3›010340 .BYTE >MSG4›010350 .BYTE >MSG5›010360 .BYTE >MSG6›010370 .BYTE >MSG7›010380 .BYTE >MSG8›010390 .BYTE >MSG9›