0100 *= $2000 0110 ; 0120 ; *** BATTLE IN THE B RING *** 0130 ; 0140 ;ZERO PAGE VARIABLES 0150 ; 0160 PBL0 = $B0 0170 PBL1 = $B1 0180 PBL2 = $B2 0190 PBH2 = $B3 0200 PBH0 = $B4 0210 PBH1 = $B5 0220 XP0 = $B6 0230 XP1 = $B7 0240 XP2 = $B8 0250 XP3 = $B9 0260 PMVL = $BA 0270 PMVH = $BB 0280 MBL0 = $BC 0290 MBL1 = $BD 0300 MBL2 = $BE 0310 XM0 = $BF 0320 XM1 = $C0 0330 XM3 = $C1 0340 MBL = $C2 0350 MBH = $C3 0360 STDIR = $C4 0370 MISDIR = $C6 0380 XREG = $C8 0390 SCRL0 = $C9 0400 SCRL1 = $CA 0410 SCRL2 = $CB 0420 SCRL3 = $CC 0430 MATH = $CD 0440 INTL = $CE 0450 INTH = $CF 0460 ; 0470 ;PAGE SIX VARIABLES 0480 ; 0490 CHINV = $06DB 0500 ADENS = $06DC 0510 ASPEED = $06DD 0520 SCFLAG = $06DE 0530 YMENU = $06DF 0540 EXCNTR = $06E0 0550 LICNTR = $06E2 0560 ROCNTR = $06E4 0570 EDCNTR = $06E6 0580 TCCNTR = $06E8 0590 SSCNTR = $06E9 0600 RRCNTR = $06EB 0610 ESCNTR = $06EC 0620 BOCNTR = $06EE 0630 DECNTR = $06F0 0640 MXCNTR = $06F1 0650 LIPOS = $06F2 0660 ; 0670 ;SYSTEM EQUATES 0680 ; 0690 CHBAS = $02F4 0700 SDMCTL = $022F 0710 SDLSTL = $0230 0720 SDLSTH = $0231 0730 STICK0 = $0278 0740 STRIG0 = $0284 0750 STRIG1 = $0285 0760 PCOLR0 = $02C0 0770 COLOR0 = $02C4 0780 PCOLR3 = $02C3 0790 PCOLR1 = $02C1 0800 HPOSP0 = $D000 0810 HPOSP1 = $D001 0820 HPOSP2 = $D002 0830 HPOSP3 = $D003 0840 HPOSM0 = $D004 0850 HPOSM1 = $D005 0860 HPOSM2 = $D006 0870 HPOSM3 = $D007 0880 M0PL = $D008 0890 M3PL = $D00B 0900 P0PL = $D00C 0910 CONSOL = $D01F 0920 HITCLR = $D01E 0930 GRACTL = $D01D 0940 CHACTL = $D401 0950 HSCROL = $D404 0960 PMBASE = $D407 0970 WSYNC = $D40A 0980 AUDF1 = $D200 0990 AUDC1 = $D201 1000 AUDF2 = $D202 1010 AUDC2 = $D203 1020 AUDF3 = $D204 1030 AUDC3 = $D205 1040 AUDCTL = $D208 1050 RANDOM = $D20A 1060 NMIEN = $D40E 1070 PRIOR = $D01B 1080 SKCTL = $D20F 1090 SETVBV = $E45C 1100 XITVBV = $E462 1110 CDTMV3 = $021C 1120 CDTMV4 = $021E 1130 VDSLST = $0200 1140 CDTMA1 = $0226 1150 CDTMA2 = $0228 1160 ATRACT = $4D 1170 ; 1180 ;GAME SET-UP BEGINS 1190 ; 1200 CLD 1210 LDX #3 1220 COLLP LDA PFCOL,X ;set 1230 STA COLOR0,X ;playfield 1240 LDA MSEL,X ;colors 1250 STA ADENS,X 1260 DEX 1270 BPL COLLP 1280 LDA #0 1290 STA AUDCTL ;initialize 1300 LDA #3 ;sounds 1310 STA SKCTL 1320 JMP MENU 1330 DLIRTN PHA 1340 LDA SCRL1 1350 STA HSCROL 1360 LDA #DL1&$FF 1370 STA VDSLST 1380 PLA 1390 RTI 1400 DL1 PHA 1410 LDA SCRL3 1420 STA HSCROL 1430 LDA #DL2&$FF 1440 STA VDSLST 1450 PLA 1460 RTI 1470 DL2 PHA 1480 LDA #2 ;turns 1490 STA WSYNC ;characters 1500 STA CHACTL ;right side 1510 LDA #DL3&$FF ;up bottom 1520 STA VDSLST ;screen half 1530 PLA 1540 RTI 1550 DL3 PHA 1560 LDA SCRL1 1570 STA HSCROL 1580 LDA #DL4&$FF 1590 STA VDSLST 1600 PLA 1610 RTI 1620 DL4 PHA 1630 LDA SCRL0 1640 STA HSCROL 1650 LDA #DLIRTN&$FF 1660 STA VDSLST 1670 PLA 1680 RTI 1690 ; 1700 ;SCROLL ROUTINE-TIMER 1-FOR TOPMOST 1710 ;AND BOTTOMMOST RINGS 1720 ; 1730 SCROLL LDA #1 1740 LDY ASPEED 1750 LDX #0 ;set system 1760 JSR SETVBV ;timer 1 1770 LDA SCRL0 1780 CMP #9 1790 BNE DECC9 1800 RTS 1810 DECC9 DEC SCRL0 ;scroll value 1820 LDA SCRL0 ;for top and 1830 BEQ PSCRL ;bottom rings 1840 RTS 1850 PSCRL LDA #8 ;reset scroll 1860 STA SCRL0 ;value 1870 LDX #15 1880 LDA $0605 ;check for 1890 CMP #106 ;wraparound 1900 BEQ PFLIP ;flip 1910 CLC 1920 ADC #1 ;flip to next 1930 JMP HLOOP ;display byte 1940 PFLIP LDA #0 1950 HLOOP STA $0602,X ;store new 1960 ORA #128 ;low bytes in 1970 STA $0633,X ;display list 1980 EOR #128 1990 DEX 2000 DEX 2010 DEX 2020 BNE HLOOP 2030 RTS 2040 ; 2050 ;SCROLL ROUTINE-TIMER 2-FOR TWO 2060 ;INNER RINGS AND LIGHTNING 2070 ; 2080 SCRLL LDA #2 ;scroll 2090 LDX #0 ;routine same 2100 LDY ASPEED ;as timer 1 2110 DEY 2120 JSR SETVBV 2130 LDA SCRL0 2140 CMP #9 2150 BNE DECCA 2160 RTS 2170 DECCA DEC SCRL1 2180 LDA SCRL1 2190 BEQ HSCRL 2200 LDA XP2 2210 BEQ T2XIT 2220 DEC XP2 ;change 2230 LDA XP2 ;lightning 2240 STA HPOSP2 ;position 2250 LDX LICNTR ;value of 2260 LDY #24 ;light. shape 2270 LILOOP LDA LIGHT,X ;change light. 2280 STA (PBL2),Y ;shape 2290 INX 2300 DEY 2310 BPL LILOOP 2320 STX LICNTR 2330 CPX #75 ;light. over? 2340 BNE T2XIT 2350 LDX #0 ;turn off 2360 STX LICNTR ;lightning 2370 STX HPOSP2 2380 STX XP2 2390 T2XIT RTS 2400 HSCRL LDA #8 2410 STA SCRL1 2420 LDX #12 2430 LDA $0615 2440 CMP #106 2450 BEQ PFLIP3 2460 CLC 2470 ADC #1 2480 JMP MLINE 2490 PFLIP3 LDA #0 2500 MLINE STA $0612,X 2510 ORA #128 2520 STA $0626,X 2530 EOR #128 2540 DEX 2550 DEX 2560 DEX 2570 BNE MLINE 2580 LDA XP2 2590 BNE T2EXIT 2600 LDA RANDOM 2610 AND #15 2620 STA MATH 2630 CLC 2640 ADC #2 2650 CLC 2660 ADC $061E ;random gap 2670 LDY #2 ;asteroid 2680 LOCLI CMP LIPOS,Y ;position 2690 BEQ PUTLI 2700 DEY ;check for 2710 BPL LOCLI ;asteroid 2720 RTS 2730 PUTLI LDA MATH 2740 ASL A ;calculate 2750 ASL A ;initial 2760 ASL A ;lightning 2770 CLC ;position 2780 ADC #56 2790 STA XP2 ;store pos. 2800 STA HPOSP2 2810 LDA #200 ;lightning 2820 STA AUDF1 ;zap sound 2830 STA AUDC1 2840 LDA #4 2850 STA CDTMV4 2860 T2EXIT RTS 2870 ; 2880 ;VERTICAL BLANK ROUTINE 2890 ;SCROLLS ROCKET, ANIMATES FLAME 2900 ; 2910 VBRTN LDA #192 2920 STA NMIEN ;enable dli 2930 LDA CHINV 2940 STA CHACTL ;invert upper 2950 LDA SCRL0 ;screen half 2960 STA HSCROL ;scroll for 2970 LDA SCRL2 ;first ring 2980 CMP #16 2990 BNE ROAR 3000 JMP XITVBV 3010 ROAR LDA RRCNTR ;time to inc. 3020 BEQ FLAMCK ;volume of 3030 CMP #136 ;rocket roar? 3040 BEQ FLAMCK 3050 INC RRCNTR 3060 LDA RRCNTR 3070 STA AUDC2 3080 FLAMCK INC SCRL2 3090 LDA SCRL2 ;time to 3100 AND #1 ;scroll? 3110 BEQ GFLAM 3120 JMP XITVBV 3130 GFLAM DEC SCRL3 3140 LDA SCRL2 3150 AND #15 3160 STA SCRL2 3170 LSR A 3180 TAX ;get flame 3190 LDA FLTAB,X ;shape 3200 STA $1024 ;display 3210 LDA XP3 3220 BEQ OUTCK 3230 DEC XP3 ;change hot 3240 LDA XP3 ;tail pos. 3250 STA HPOSP3 3260 OUTCK LDA SCRL3 3270 BEQ SCRLH 3280 JMP XITVBV 3290 SCRLH LDA #8 3300 STA SCRL3 3310 LDA $0622 ;rocket on 3320 CMP #11 ;screen? 3330 BNE ROOFF 3340 LDX #224 ;yes put hot 3350 STX XP3 ;tail 3360 STX AUDF2 ;start sound 3370 LDX #129 3380 STX AUDC2 3390 STX RRCNTR 3400 ROOFF CMP #36 ;rocket off 3410 BNE CKROM ;screen? 3420 LDX #0 ;turn off 3430 STX AUDF2 ;rocket roar 3440 STX AUDC2 3450 STX RRCNTR 3460 CKROM LDX XM3 ;missile in 3470 CPX #0 ;use? 3480 BNE FLIPCK ;yes go on 3490 CLC ;no 3500 CMP #13 ;rocket on 3510 BCC FLIPCK ;screen? 3520 CLC 3530 CMP #30 3540 BCS FLIPCK 3550 SEC 3560 SBC #13 ;calculate 3570 ASL A ;initial 3580 ASL A ;missile pos. 3590 ASL A 3600 STA MATH 3610 LDA #204 3620 SEC 3630 SBC MATH 3640 STA MATH ;store pos. 3650 LDX #0 3660 ROMLOOP CLC ;saucer in 3670 LDA PBL0,X ;gap? 3680 CMP #107 3690 BCC TRYAG 3700 CLC 3710 CMP #130 3720 BCS TRYAG 3730 CLC 3740 LDA XP0,X ;in front of 3750 CMP MATH ;rocket? 3760 BCC STM3 ;yes 3770 TRYAG INX 3780 CPX #2 3790 BNE ROMLOOP 3800 JMP FLIPCK 3810 STM3 LDA MATH ;fire 3820 STA XM3 ;missiles 3830 STA HPOSM3 3840 LDA #38 ;missile 3850 STA AUDF1 ;sound 3860 LDA #142 3870 STA AUDC1 3880 LDA #5 3890 STA CDTMV4 3900 FLIPCK LDA $0622 3910 CMP #63 3920 BEQ PFLIP5 3930 CLC 3940 ADC #1 3950 JMP MLINE3 3960 PFLIP5 LDA #0 3970 MLINE3 STA $0622 3980 STA $0625 3990 VBOUT JMP XITVBV 4000 ; 4010 ;MAIN PROGRAM BEGINS HERE 4020 ; 4030 PROG LDX #31 ;zero out 4040 LDA #0 ;zero page+ 4050 CLZLOOP STA PBL0,X ;page 6 4060 STA EXCNTR,X ;variables 4070 DEX 4080 BPL CLZLOOP 4090 LDA #9 ;no scroll 4100 STA SCRL0 ;until ready 4110 LDA #16 ;to play 4120 STA SCRL2 4130 LDA #4 4140 STA CHINV 4150 LDA #0 4160 TAX 4170 TAY 4180 LDA #24 4190 STA PMBASE ;pm graphics 4200 LDA #27 ;location 4210 STA MBH ;missiles 4220 LDA #28 4230 STA PBH0 ;player 0 4240 LDA #29 4250 STA PBH1 ;player 1 4260 LDA #30 4270 STA PBH2 ;player 2 4280 LDA #224 4290 STA INTH 4300 LDA #18 ;character 4310 STA PMVH ;set on 4320 STA CHBAS ;page 18 4330 LDA #0 4340 STA PMVL 4350 STA INTL 4360 TAX 4370 TAY 4380 DWNLD LDA (INTL),Y ;download rom 4390 STA (PMVL),Y ;characters 4400 INY 4410 BNE DWNLD 4420 INC PMVH 4430 INC INTH 4440 INX 4450 CPX #2 4460 BNE DWNLD 4470 DEC PMVH 4480 DEC PMVH 4490 LDY #0 4500 LDA #8 4510 STA PMVL 4520 CHLOOP LDA CHTAB,Y ;load data for 4530 STA (PMVL),Y ;asteroid 4540 INY ;characters 4550 CPY #120 4560 BNE CHLOOP 4570 LDX #0 4580 LDY #208 4590 STX PMVL 4600 C2LOOP LDA C2TAB,X ;load data for 4610 STA (PMVL),Y ;rocket 4620 INX ;characters 4630 CPX #56 4640 BEQ RESET 4650 INY 4660 BNE C2LOOP 4670 INC PMVH 4680 JMP C2LOOP 4690 RESET LDX #77 4700 LDY #0 4710 STY SDMCTL 4720 DLOOP LDA GDLIST,X ;load game 4730 STA $0600,X ;display 4740 DEX ;list onto 4750 BPL DLOOP ;page six 4760 LDA #6 ;tell comp. 4770 STY SDLSTL ;where dlist 4780 STA SDLSTH ;is 4790 LDA $0606 4800 STA PMVH 4810 STY PMVL 4820 TYA 4830 TAX 4840 CLOOP STA (PMVL),Y ;clear 4850 INY ;display 4860 BNE CLOOP ;area 4870 INC PMVH 4880 INX 4890 CPX #11 4900 BNE CLOOP 4910 LDX #0 4920 LDA $0606 4930 STA PMVH 4940 LDA ADENS 4950 STA INTH 4960 STX PMVL 4970 RANDC LDA RANDOM ;color for 4980 AND #3 ;asteroid 4990 TAY ;character 5000 LDA COLOR,Y 5010 STA INTL 5020 RANDP CLC 5030 LDY RANDOM ;random 5040 CPY #107 ;position 5050 BCS RANDP 5060 LDA (PMVL),Y 5070 CMP #0 ;occupied? 5080 BNE RANDP ;yes go back 5090 RANDA LDA RANDOM ;random 5100 AND #15 ;asteroid 5110 BEQ RANDA ;character 5120 ORA INTL 5130 STA (PMVL),Y ;store in 5140 INX ;display 5150 CPX INTH ;line done? 5160 BNE RANDC 5170 LDX #0 5180 CLC 5190 LDA PMVL 5200 ADC #128 ;do next line 5210 STA PMVL 5220 BCC ASKIP 5230 INC PMVH 5240 ASKIP LDA PMVH 5250 CMP $061F 5260 BNE AENDCK 5270 LDY INTH 5280 DEY 5290 DEY 5300 DEY 5310 STY INTH 5320 AENDCK CMP $0626 ;all lines 5330 BNE RANDC ;done? 5340 LDA $061F 5350 STA PMVH 5360 RANDC2 LDA RANDOM ;same as 5370 AND #3 ;above but 5380 TAY ;for 5390 LDA COLOR,Y ;asteroids 5400 STA INTL ;across gap 5410 LDA RANDOM ;from each 5420 AND #3 ;other for 5430 TAY ;lightning 5440 LDA COLOR,Y 5450 STA INTH 5460 RANDP2 CLC 5470 LDA RANDOM 5480 BEQ RANDP2 5490 CMP #105 5500 BCS RANDP2 5510 STA PMVL 5520 STA LIPOS,X 5530 LDY #0 5540 LDA (PMVL),Y 5550 BNE RANDP2 5560 RANDA2 LDA RANDOM 5570 AND #15 5580 BEQ RANDA2 5590 ORA INTL 5600 STA (PMVL),Y 5610 RANDA3 LDA RANDOM 5620 AND #15 5630 BEQ RANDA3 5640 ORA INTH 5650 LDY #128 5660 STA (PMVL),Y 5670 INX 5680 CPX #3 5690 BNE RANDC2 5700 LDA #0 5710 LDX #18 5720 CLRAST STA $0700,X ;clear lines 5730 STA $0780,X ;saucer start 5740 DEX ;positions 5750 BPL CLRAST 5760 LDY #20 5770 LDA $0606 5780 STA PMVH 5790 STA INTH 5800 LDA #107 5810 STA INTL 5820 INX 5830 STX PMVL 5840 WLOOP LDA (PMVL),Y ;wraparound 5850 STA (INTL),Y ;display 5860 DEY ;area for 5870 BPL WLOOP ;continuous 5880 LDY #20 ;scrolling 5890 INX 5900 LDA PMVL 5910 CLC 5920 ADC #128 5930 STA PMVL 5940 BCC WSKIP1 5950 INC PMVH 5960 WSKIP1 LDA INTL 5970 CLC 5980 ADC #128 5990 STA INTL 6000 BCC WSKIP2 6010 INC INTH 6020 WSKIP2 CPX #18 ;finished? 6030 BNE WLOOP ;no go back 6040 LDY #3 6050 ROLOOP LDA ROTAB,Y ;load rocket 6060 STA $1020,Y ;data into 6070 DEY ;display area 6080 BPL ROLOOP 6090 LDA #16 6100 STA $0664 ;initialize 6110 STA $066E ;scores 6120 LDA #0 6130 TAX 6140 STA $0663 6150 STA $066D 6160 LDA #24 6170 STA PMVH 6180 TXA 6190 STA PMVL 6200 TAY 6210 CLRPMG STA (PMVL),Y ;clear pm 6220 INY ;graphics 6230 BNE CLRPMG ;area 6240 INC PMVH 6250 INX 6260 CPX #8 6270 BNE CLRPMG 6280 LDX #5 6290 LDA #0 6300 ZLOOP STA HPOSP2,X ;iniialize 6310 DEX ;player/ 6320 BPL ZLOOP ;missile 6330 LDA #108 6340 STA PBL2 6350 LDA #3 ;set up 6360 STA GRACTL ;graphics 6370 LDA #62 ;dma 6380 STA SDMCTL 6390 STA HITCLR ;clr collis. 6400 LDA #120 ;initialize 6410 STA HPOSP1 ;saucer 6420 STA XP1 ;positions 6430 STA HPOSP0 6440 STA XP0 6450 LDA #196 6460 STA PBL1 6470 LDA #35 6480 STA PBL0 6490 STA PMVL 6500 LDA PBH0 6510 STA PMVH 6520 LDA PBL1 6530 STA INTL 6540 LDA PBH1 6550 STA INTH 6560 LDY #7 6570 LDPLYRS LDA PLSHP,Y ;load 6580 STA (PMVL),Y ;player 6590 STA (INTL),Y ;data into 6600 DEY ;pm area 6610 BPL LDPLYRS 6620 INC INTH 6630 INC INTH 6640 LDY #116 6650 LDA #0 6660 STA INTL 6670 LDA #1 6680 LDTAIL STA (INTL),Y ;load hot 6690 INY ;rocket 6700 CPY #124 ;tail 6710 BNE LDTAIL 6720 LDY #112 6730 LDA #192 6740 STA (MBL),Y 6750 LDY #127 6760 STA (MBL),Y 6770 LDX #3 6780 PCLOOP LDA PCOL,X ;set playr 6790 STA PCOLR0,X ;colors 6800 DEX 6810 BPL PCLOOP 6820 LDA #8 ;initialize 6830 STA HSCROL ;scroll 6840 STA SCRL1 ;settings 6850 STA SCRL3 6860 STA CONSOL 6870 STA STDIR+1 6880 LDA #9 6890 STA STDIR 6900 ; 6910 ;SET SYSTEM TIMERS, 6920 ;VERT. BLANK AND DLI ROUTINES 6930 ; 6940 LDA #SCROLL&$FF ;timer 1 6950 STA CDTMA1 6960 LDA #SCROLL/256 6970 STA CDTMA1+1 6980 LDA #1 6990 LDX #0 7000 LDY #4 7010 JSR SETVBV 7020 LDA #SCRLL&$FF ;timer 2 7030 STA CDTMA2 7040 LDA #SCRLL/256 7050 STA CDTMA2+1 7060 LDA #2 7070 LDX #0 7080 LDY #3 7090 JSR SETVBV 7100 LDA #7 7110 LDX #VBRTN/256 ;vertical 7120 LDY #VBRTN&$FF ;blank 7130 JSR SETVBV 7140 LDA #DLIRTN/256 7150 STA VDSLST+1 7160 LDA #DLIRTN&$FF 7170 STA VDSLST 7180 LDA #192 ;dli 7190 STA NMIEN 7200 LDA #1 ;set pmg 7210 STA PRIOR ;priority 7220 STLOOP LDA STRIG0 ;check 7230 BNE SB2CK ;triggers 7240 JMP GETDEL ;for game 7250 SB2CK LDA STRIG1 ;start 7260 BNE STLOOP 7270 GETDEL LDA #15 7280 STA CDTMV3 7290 DSTLOOP LDA CDTMV3 7300 BNE DSTLOOP 7310 STA SCRL2 ;allow 7320 LDA #8 ;scrolling 7330 STA SCRL0 7340 MLOOP LDA #1 ;game prog 7350 STA CDTMV3 ;begins 7360 INC XREG ;move timer 7370 LDA XREG ;playr index 7380 AND #1 7390 TAX 7400 STA XREG 7410 LDA XP0,X ;check for 7420 BNE TAILCK ;dead player 7430 JMP INCM 7440 TAILCK LDA SCRL2 ;check for 7450 CMP #16 ;missile 7460 BNE EXPCK ;collision 7470 INC TCCNTR ;with rocket 7480 LDA TCCNTR ;tail 7490 AND #31 ;time to 7500 STA TCCNTR ;cool tail? 7510 BNE EXPCK ;no go on 7520 LDA PCOLR3 7530 CMP #148 7540 BEQ EXPCK 7550 DEC PCOLR3 ;cool tail 7560 EXPCK LDA EXCNTR,X ;check count 7570 BEQ BOUNCK ;for player 7580 INC EDCNTR,X ;explosion 7590 LDA EDCNTR,X 7600 AND #3 ;time to 7610 STA EDCNTR,X ;change exp? 7620 BNE EXLCK ;no go on 7630 LDY SNDX,X ;change sound 7640 LDA ESCNTR,X ;get sound 7650 CMP #128 ;finished? 7660 BEQ EXSNOFF ;yes off 7670 DEC ESCNTR,X ;no make 7680 LDA ESCNTR,X ;changes 7690 STA AUDC3,Y 7700 JMP EXLCK 7710 EXSNOFF LDA #0 ;turn sound 7720 STA AUDF3,Y ;off 7730 STA AUDC3,Y 7740 STA ESCNTR,X 7750 EXLCK LDA PCOLR0,X ;change 7760 CMP #159 ;color 7770 BEQ BLINC 7780 INC PCOLR0,X 7790 INC PCOLR0,X 7800 INC PCOLR0,X 7810 JMP INCM 7820 BLINC LDA EDCNTR,X 7830 AND #1 7840 BEQ BLJUMP 7850 JMP INCM 7860 BLJUMP JMP BLPL 7870 BOUNCK LDA BOCNTR,X ;check for 7880 BEQ RMCK ;bounce 7890 JMP REBOUND 7900 RMCK LDA M3PL ;check for 7910 BEQ PLPLCK ;collision 7920 LDY #0 ;with 7930 STY XM3 ;rocket's 7940 STY HPOSM3 ;missiles 7950 STY HITCLR 7960 CMP #4 7970 BEQ PLPLCK 7980 TAX 7990 DEX