#define equ .equ #define EQU .equ #DEFINE skLeft 02h #DEFINE skRight 03h #DEFINE skUp 04h #DEFINE skEnter 09h #DEFINE sk2nd 36h #DEFINE skMode 37h #DEFINE skDel 38h #DEFINE kRight 001h #DEFINE kLeft 002h #DEFINE kUp 003h #DEFINE kDown 004h #define kEnter 05h #define d2nd 223 #define dMode 191 #define dDel 127 #define sx savesscreen+1 ;Sprite x-coord #define sy savesscreen+3 ;sprite y-coord #define spn savesscreen+5 ;sprite number, 1= fifi, 2= sproky, 3=iteck, 4= mazel #define bdir savesscreen+7 ;ball direction , 0= not moving , 1= going up, 2= going down #define by savesscreen+9 ;ball y coord #define bx savesscreen+11 ;ball x coord #define racp savesscreen+13 ;how long racquet is charged #define bml savesscreen+15 ;how long left is charged #define racpos savesscreen+17 ;which side racquet is on, 0= left of sprite, 1= right of sprite #define xr savesscreen+19 ; #define rtime savesscreen+21 ;causes the 2nd racquet after hitting the ball #define bya savesscreen+23 ;ball y increment/decrement #define cx savesscreen+25 ;computers x coord #define cy savesscreen+27 ;computers y coord #define cx2 savesscreen+29 ;register for extra numbers associated with computer #define bxa savesscreen+31 ;balls x increment #define btime savesscreen+33 ; #define cy2 savesscreen+35 ;extra comp register #define pps savesscreen+37 ;persons score #define cps savesscreen+39 ;computers score #define xr2 savesscreen+41 ; #define px savesscreen+43 ;cursor x position at beginning #define py savesscreen+45 ;cursor y postition at beginning #define bmr savesscreen+47 ;how long right is charged #define sped savesscreen+49 ;speed, 0=slow, 1= fast #define tsv savesscreen+51 ;serving #define txtb savesscreen+52 .nolist #include "ion.inc" .list #ifdef TI83P .org progstart-2 .db $BB,$6D #else .org progstart #endif ret jr nc,progstart2 .db "Adv. Tennis 0.4",0 progstart2: ;program beginning bcall(_grbufclr) bcall(_clrlcdfull) ld a,0 ld (pps),a ld (cps),a ld a,1 ld (spn),a ld a,1 ld (px),a ld a,17 ld (py),a ld a,42 ld (cy),a ld a,20 ld (cx),a ld a,1 ld (tsv),a ld a,8 ld (txtb),a part2: bcall(_grbufclr) ld a,(txtb) ld b,a ld a,24 ld l,a ld a,40 sub b ld b,16 ld c,2 ld ix,asmby1 call ionlargesprite ;draws logo ld a,(txtb) ld b,a ld a,24 ld l,a ld a,40 add a,b ld b,16 ld c,2 ld ix,asmby2 call ionlargesprite ;draws logo call ionfastcopy ;copy graph buffer to screen ld a,(txtb) dec a cp -1 jp z,part3 ld (txtb),a ld b,4 part2halt: halt djnz part2halt jp part2 part3: ld a,1 ld (txtb),a ld hl,nmm ld a,50 ld (penrow),a ld a,32 ld (pencol),a ;write Nick Monu bcall(_vputs) ;to screen bcall(_grbufclr) bcall(_getkey) ;pause bcall(_clrlcdfull) ;clear screen startscrn: ld a,8 ld l,a ld a,18 ld b,32 ld c,7 ld ix,tlogo call ionlargesprite call ionfastcopy introloop1: ld b,30 ;djnz decreases b then jps to introloop2 in this case, djnz in this case is from b=30 till it makes b=0 introloop2: ld hl,pstrt ld a,48 ld (penrow),a ld a,24 ld (pencol),a bcall(_vputs) bcall(_getcsc) cp skEnter jp z,prmain djnz introloop2 introloop3: ld b,30 ;these two loops cause the screen to alternate Adv Tennis and Press Enter introloop4: ld hl,empty ld a,48 ld (penrow),a ld a,24 ld (pencol),a bcall(_vputs) bcall(_getcsc) cp skEnter jp z,prmain djnz introloop4 jp introloop1 prmain: ld hl,(scoresave) ld a,h add a,l cp 0 jp z,premain bcall(_clrlcdfull) ld hl,contstr1 ld a,10 ld (penrow),a ld a,10 ld (pencol),a bcall(_vputs) ld hl,contstr2 ld a,20 ld (penrow),a ld a,13 ld (pencol),a bcall(_vputs) ld hl,contstr3 ld a,30 ld (penrow),a ld a,20 ld (pencol),a bcall(_vputs) ld hl,contstr4 ld a,40 ld (penrow),a ld a,20 ld (pencol),a bcall(_vputs) lilloop2: bcall(_getcsc) cp sk2nd jp z,prmain2 cp skMode jp z,premain jp lilloop2 prmain2: ld hl,(scoresave) ld a,h ld (pps),a ld a,l ld (cps),a ld hl,(sprserve) ld a,h ld (spn),a ld a,l ld (tsv),a cp 0 jp z,ldtsv1 ld a,0 ld (tsv),a jp initvar ldtsv1: ld a,1 ld (tsv),a jp initvar premain: bcall(_clrlcdfull) bcall(_grbufclr) ld a,10 ld l,a ld b,16 ld c,1 ld a,6 ;draw fifi ld ix,fifi call ionlargesprite ld a,10 ld l,a ld b,16 ld c,1 ld a,22 ;draw iteck ld ix,iteck call ionlargesprite ld a,26 ld l,a ld b,16 ld c,1 ld a,6 ;draw sproky ld ix,sproky call ionlargesprite ld a,26 ld l,a ld b,16 ld c,1 ld a,22 ;draw mazel t ld ix,gggg call ionlargesprite ld a,(py) ld l,a ld b,5 ; draws the cursor ld c,1 ld a,(px) ld ix,pointer call ionlargesprite call ionfastcopy ;copy screen to graph buffer ld a,1 ld (pencol),a ld a,1 ld (penrow),a ld hl,cstr ;writes "CHOOSE CHARACTER" bcall(_vputs) ;with the top left corner at 1,1 . NOTE y = 0 is at the top of the screen not the bottom premain2: ld a,(spn) ;gets which sprite the cursor is on cp 1 jp z,spn10 cp 2 jp z,spn20 cp 3 jp z,spn30 cp 4 jp z,spn40 kloop: bcall(_getkey) cp kUp jp z,aru ;keyloop cp kDown jp z,aru cp kRight jp z,arl cp kLeft jp z,arl cp kEnter jp z,initvar2 jp nz,kloop aru: ;UP/Down arrow movement ld a,(spn) cp 1 ;if the arrow is on 1 and down or up is pressed it goes to 2 jp z,spn2 cp 2 jp z,spn1 cp 3 jp z,spn4 ;if arrow is on 3 and up/down is pressed, it goes to 4 cp 4 jp z,spn3 jp spn1 jp premain arl: ;Left/Right movement ld a,(spn) cp 1 jp z,spn3 ;arrow on 1 and left/right pressed -> 3 cp 2 jp z,spn4 cp 3 jp z,spn1 cp 4 jp z,spn2 jp spn1 jp premain spn1: ld a,1 ld (px),a ld a,17 ld (py),a ld a,1 ld (spn),a jp premain spn2: ld a,1 ld (px),a ld a,32 ld (py),a ld a,2 ld (spn),a jp premain spn3: ld a,17 ld (px),a ld a,17 ld (py),a ld a,3 ld (spn),a jp premain spn4: ld a,17 ld (px),a ld a,32 ld (py),a ld a,4 ld (spn),a jp premain spn10: ;write character names and loads the character number into (spn) for future use ld a,(cy) ld (pencol),a ld a,(cx) ld (penrow),a ld hl,fina bcall(_vputs) ld a,1 ld (spn),a jp kloop spn20: ld a,(cy) ld (pencol),a ld a,(cx) ld (penrow),a ld hl,spna bcall(_vputs) ld a,2 ld (spn),a jp kloop spn30: ld a,(cy) ld (pencol),a ld a,(cx) ld (penrow),a ld hl,tena bcall(_vputs) ld a,3 ld (spn),a jp kloop spn40: ld a,(cy) ld (pencol),a ld a,(cx) ld (penrow),a ld hl,ggna bcall(_vputs) ld a,4 ld (spn),a jp kloop ; ^ ends here initvar2: bcall(_clrlcdfull) ;clear screen ld hl,speedstr ld a,1 ld (pencol),a ld (penrow),a bcall(_vputs) ;Displays "CHOOSE SPEED" ld a,25 ld (pencol),a ld a,15 ld (penrow),a ld hl,slowstr ;Displays "2nd- Slow" bcall(_vputs) ld a,25 ld (pencol),a ld a,25 ld (penrow),a ld hl,faststr bcall(_vputs) ;Displays "MOde- Fast" lilloop: bcall(_getcsc) ;Keyloop to see if mode or 2nd is pressed cp sk2nd jp z,slowset cp skMode jp z,fastset jp lilloop slowset: ld a,0 ;if 2nd then load 0 into sped ld (sped),a jp initvar fastset: ld a,1 ;if Mode then load 1 into sped ld (sped),a jp initvar initvar: ;initialize most of the games variables (INITialize VARiables = INITVAR) get it? ld a,50 ld (sx),a ld (bx),a ld a,43 ld (sy),a ld a,50 ld (by),a ld a,0 ld (racp),a ld (rtime),a ld (btime),a ld (bmr),a ld (bml),a ld (bxa),a ld (xr2),a ld (xr),a ld (cy2),a ld (racpos),a ld a,-3 ld (cx2),a ld a,1 ld (bdir),a ld a,0 ld (bya),a ld a,4 ld (cy),a ld a,22 ld (cx),a ld a,2 ld (bdir),a ld a,15 ld (txtb),a call tsvswitch ld b,20 initvarhalt: halt djnz initvarhalt jp serve tsvswitch: ld a,(tsv) cp 1 jp z,tsvdelta ld a,1 ld (tsv),a ld a,20 ld (sx),a ld (bx),a ld a,43 ld (sy),a ld a,50 ld (by),a ld a,4 ld (cy),a ld a,50 ld (cx),a ld a,15 ld (bmr),a ret tsvdelta: ld a,0 ld (tsv),a ld a,15 ld (bml),a ret serve: ld a,0ffh ;Reset keyport out (1),a ld a, 0bfh ;Enable Key Group with the mode in it. out (1), a in a, (1) cp d2nd jp z,svserve cp dDel jp z,squit ld a,0ffh out (1), a call svdraw serve2: ld a,0ffh ;Reset keyport out (1),a ld a, 0FEh ;Enable Key Group with the Arrows in it. out (1), a in a, (1) cp %11111101 ;Check for Left. jp z, svLeft cp %11111011 ;Check for Right. jp z, svRight ld a,0ffh out (1), a jp serve svleft: ld a,(sx) dec a ld (sx),a ld (bx),a call svdraw jp serve svright: ld a,(sx) inc a ld (sx),a ld (sx),a call svdraw jp serve svdraw: call svcheckleft call svcheckright ld a,4 ld l,a ld b,55 ld c,8 ld a,10 ld ix,stage call ionlargesprite bcall(_grbufcpy) bcall(_grbufclr) halt ld a,(cy) ld l,a ld b,16 ld c,1 ld a,(cx) ld ix,iteck call ionlargesprite call spdet ld a,(sy) ld l,a ld b,16 ld c,1 ld a,(sx) call ionlargesprite call scoredisp bcall(_grbufcpy) halt ret svcheckleft: ld a,(tsv) cp 1 jp z,svcheckleft2 ld a,(sx) cp 42 ret nz inc a ld (sx),a ret svcheckright: ld a,(tsv) cp 1 jp z,svcheckright2 ld a,(sx) cp 60 ret nz dec a ld (sx),a ret svcheckleft2: ld a,(sx) cp 14 ret nz inc a ld (sx),a ret svcheckright2: ld a,(sx) cp 32 ret nz dec a ld (sx),a ret svserve: ld a,1 ld (racpos),a ld a,15 ld (racp),a jp kmainc serve3: ld a,0ffh ;Reset keyport out (1),a ld a, 0bfh ;Enable Key Group with the mode in it. out (1), a in a, (1) cp d2nd jp z,svserve jp kmainc main2: jp bout main3: ld a,0ffh ;Reset keyport out (1),a ld a, 0bfh ;Enable Key Group with the mode in it. out (1), a in a, (1) cp d2nd jp z,srac cp dMode jp z,srac2 cp dDel jp z,squit ld a,0ffh out (1), a call draw main1: ld a,0ffh ;Reset keyport out (1),a ld a, 0FEh ;Enable Key Group with the Arrows in it. out (1), a in a, (1) cp %11111110 ;Check for Down. jp z, Down cp %11110111 ;Check for Up. jp z, Up cp %11111101 ;Check for Left. jp z, Left cp %11111011 ;Check for Right. jp z, Right cp %11111100 ;Check for Down AND Left. jp z, DLeft cp %11111010 ;Check for Down AND Right. jp z, DRight cp %11110101 ;Check for Up AND Left. jp z, ULeft cp %11110011 ;Check for Up AND Right. jp z, Uright ld a,0ffh out (1), a jp nz,main2 squit: ld a,(pps) ld h,a ld a,(cps) ld l,a ld (scoresave),hl ld a,(spn) ld h,a ld a,(tsv) ld l,a ld (sprserve),hl ret quit: ld hl,0 ld (scoresave),hl bcall(_clrLCDFull) bcall(_grbufclr) ret quitwin: bcall(_clrlcdfull) bcall(_grbufclr) ld hl,textwin ld a,10 ld (penrow),a ld a,24 ld (pencol),a bcall(_vputs) jp quit2 quitlose: bcall(_clrlcdfull) bcall(_grbufclr) ld hl,textlose ld a,10 ld (penrow),a ld a,24 ld (pencol),a bcall(_vputs) jp quit2 quit2: ld hl,ticalc1 ld a,35 ld (penrow),a ld a,24 ld (pencol),a bcall(_vputs) ld hl,ticalc2 ld a,45 ld (penrow),a ld a,24 ld (pencol),a bcall(_vputs) bcall(_getkey) cp kEnter jp z,quit jp nz,quit2 bout: ld a,(by) ld b,a sub 8 jp m,doscore1 ld a,(by) sub 51 jp p,doscore2 ld a,(bx) sub 10 jp m,doscore3 ld a,(bx) sub 70 jp p,doscore3 ld a,(cy) sub b sub 2 jp p,doscore1 ld a,(sy) sub b add a,10 jp m,doscore2 jp main3 doscore3: ld a,(bdir) cp 1 jp z,mscore1 cp 2 jp z,mscore2 ret mscore1: ld a,(by) sub 20 jp m,doscore1 jp doscore2 mscore2: ld a,(by) sub 40 jp p,doscore2 jp doscore1 doscore1: ld a,(cps) ld b,a cp 4 call z,subcps call addpps ld a,(pps) cp 5 jp z,quitwin cp 4 jp nz,initvar ld a,(cps) ld b,a ld a,4 sub b sub 2 jp p,quitwin jp initvar doscore2: ld a,(pps) ld b,a cp 4 call z,subpps call addcps ld a,(cps) cp 5 jp z,quitlose cp 4 jp nz,initvar ld a,(pps) ld b,a ld a,4 sub b sub 2 jp p,quitlose jp initvar subcps: ld a,(pps) dec a ld (pps),a ld a,(cps) dec a ld (cps),a ret subpps: ld a,(cps) dec a ld (cps),a ld a,(pps) dec a ld (pps),a ret addpps: ld a,(pps) inc a ld (pps),a ret addcps: ld a,(cps) inc a ld (cps),a ret down: ld a,(sy) inc a ld (sy),a call draw jp main1 up: ld a,(sy) dec a ld (sy),a call draw jp main1 Uleft: ld a,(sy) dec a ld (sy),a jp left Uright: ld a,(sy) dec a ld (sy),a jp right Dleft: ld a,(sy) inc a ld (sy),a jp left Dright: ld a,(sy) inc a ld (sy),a jp right left: ld a,(sx) dec a dec a ld (sx),a call draw jp main1 right: ld a,(sx) inc a inc a ld (sx),a call draw jp main1 kmainc: call draw jp main2 srac: ld a,1 ld (racpos),a jp krac krac: ld a,(racp) inc a cp 40 jp z,kmainc ld (racp),a ld a,0ffh ;Reset keyport out (1),a ld a, 0FEh ;Enable Key Group with the Arrows in it. out (1), a in a, (1) cp %11111101 ;Check for Left. jp z, bLeft cp %11111011 ;Check for Right. jp z, bRight call draw jp main2 srac2: ld a,2 ld (racpos),a jp krac bleft: ld a,(bml) inc a ld (bml),a call draw jp main2 bright: ld a,(bmr) inc a ld (bmr),a call draw jp main2 draw: ld a,(sped) cp 1 jp z,drawfast ld a,4 ld l,a ld b,55 ld c,8 ld a,10 ld ix,stage call ionlargesprite bcall(_grbufcpy) call checkx call checky call bcomp1 call bcomp2 call bcomp3 call dwball1 call dwball2 bcall(_grbufclr) call bhit call balldr call drac ld a,(cy) ld l,a ld b,16 ld c,1 ld a,(cx) ld ix,iteck call ionlargesprite call spdet ld a,(sy) ld l,a ld b,16 ld c,1 ld a,(sx) call ionlargesprite call scoredisp bcall(_grbufcpy) call boutindraw ret drawfast: ld a,4 ld l,a ld b,55 ld c,8 ld a,10 ld ix,stage call ionlargesprite call ionfastcopy call checkx call checky call bcomp1 call bcomp2 call bcomp3 call dwball1 call dwball2 bcall(_grbufclr) call bhit call balldr call drac ld a,(cy) ld l,a ld b,16 ld c,1 ld a,(cx) ld ix,iteck call ionlargesprite call spdet ld a,(sy) ld l,a ld b,16 ld c,1 ld a,(sx) call ionlargesprite call scoredisp call ionfastcopy call boutindraw ret boutindraw: ld a,(by) ld b,a sub 8 jp m,stopball ld a,(by) sub 51 jp p,stopball ld a,(bx) sub 5 jp m,stopball ld a,(bx) sub 75 jp p,stopball ld a,(cy) sub b sub 2 jp p,stopball ld a,(sy) sub b add a,10 jp m,stopball ret stopball: ld a,0 ld (bdir),a ret scoredisp: ld a,(pps) call pickspr ld b,8 ld a,42 ld l,a ld a,83 call ionputsprite ld a,(cps) call pickspr ld b,8 ld a,10 ld l,a ld a,83 call ionputsprite ret pickspr: cp 0 call z,ixzero cp 1 call z,ixfift cp 2 call z,ixthirt cp 3 call z,ixfourt cp 4 call z,ixadvt cp 5 call z,ixadvt ret ixzero: ld ix,tzero ret ixfift: ld ix,tfift ret ixthirt: ld ix,tthirt ret ixfourt: ld ix,tfourt ret ixadvt: ld ix,tadvt ret drac: ld a,(racpos) cp 0 ret z cp 1 call z,dwracl cp 2 call z,dwracr cp 3 call z,dwrac3 cp 4 call z,dwrac4 ld b,8 ld a,(sy) add a,7 ld l,a ld a,(xr) call ionputsprite ret dwracl: ld a,3 ld (racpos),a ld a,(sx) sub 8 ld (xr),a ld (xr2),a call dbchange ld ix,racl ret dwracr: ld a,4 ld (racpos),a ld a,(sx) add a,8 ld (xr),a sub 4 ld (xr2),a call dbchange ld ix,racr ret dwrac3: call dbchange ld a,(rtime) inc a ld (rtime),a cp 5 jp z,dwsp ld ix,rac3 ret dwrac4: call dbchange ld a,(rtime) inc a ld (rtime),a cp 5 jp z,dwsp ld ix,rac4 ret dwsp: ld a,0 ld (rtime),a ld (racpos),a ld (racp),a ld (bml),a ld (bmr),a ld ix,rsp ret dbchange: ld a,(bdir) cp 1 ret z ld a,(sy) ld b,a ld a,(by) sub b sub 4 ret m sub 5 ret p ld a,(xr2) ld b,a ld a,(bx) sub b add a,4 ret m sub 17 ret p ld a,1 ld (bdir),a ld a,0 ld (bya),a call byad ld a,(bmr) ld b,a ld a,(bml) sub b jp z,bxa0 jp m,bxaright jp bxaleft ret bxaright: ld a,(bmr) sub 4 jp m,bxap1 sub 6 jp m,bxap2 sub 10 jp m,bxap3 sub 100 jp m,bxap3 ret bxaleft: ld a,(bml) sub 4 jp m,bxa1 sub 6 jp m,bxa2 sub 10 jp m,bxa3 sub 100 jp m,bxa3 ret byad: call byaminus ld a,(racp) sub 6 ret m ld (racp),a jp nz,byad byaminus: ld a,(bya) inc a ld (bya),a ret bxa0: ld a,0 ld (bxa),a ret bxa1: ld a,5 ld (bxa),a ret bxa2: ld a,6 ld (bxa),a ret bxa3: ld a,7 ld (bxa),a ret bxap1: ld a,1 ld (bxa),a ret bxap2: ld a,2 ld (bxa),a ret bxap3: ld a,3 ld (bxa),a ret bcomp1: ld a,(bdir) cp 2 ret z ld a,(cx2) cp 25 ret z ld a,(cx) ld b,a ld a,(bx) sub b ret z call m,cleft ld a,(cx) inc a ld (cx),a ld a,(cx2) inc a ld (cx2),a ret cleft: ld a,(cx) dec a dec a ld (cx),a ret bcomp2: ld a,(bdir) cp 1 ret z ld a,(cx2) cp 5 ret z ld (cx2),a ld a,(cx) sub 38 ret z call p,cleft ld a,(cx) inc a ld (cx),a ld a,(cx2) inc a ld (cx2),a ret bcomp3: ld a,(bdir) cp 2 ret z ld a,(bya) dec a jp z,incy dec a jp z,mdecy jp decy ret incy: ld a,(cy2) inc a cp 3 ret z ld (cy2),a incy2: ld a,(cy) inc a sub 17 ret p add a,17 ld (cy),a ret mdecy: ld a,(cy2) inc a cp 3 ret z ld (cy2),a ld a,2 call ionrandom cp 0 jp z,incy2 cp 1 jp z,decy2 ret decy: ld a,(cy2) inc a cp 4 ret z ld (cy2),a decy2: ld a,(cy) dec a sub 3 ret m add a,3 ld (cy),a ret bhit: ld a,(bdir) cp 2 ret z ld a,(cy) ld b,a ld a,(by) sub b sub 8 ret p add a,10 ret m ld a,(bx) ld b,a ld a,(cx) sub b jp m,bhit3 sub 6 ret p call m,cdwracl bhit2: ld a,2 ld (bdir),a call byacomp ld a,0 ld (cx2),a ld (cy2),a ld a,3 ld b,a call ionrandom cp 0 jp z,bxa0 cp 1 jp z,schoose1 cp 2 jp z,schoose2 ret bhit3: add a,12 ret m call p,cdwracr jp bhit2 cdwracl: ld b,8 ld a,(cy) add a,7 ld l,a ld a,(cx) sub 8 ld ix,racl call ionputsprite ret cdwracr: ld b,8 ld a,(cy) add a,7 ld l,a ld a,(cx) add a,8 ld ix,racr call ionputsprite ret byacomp: ld a,(cx2) sub 5 jp m,bya4 sub 9 jp m,bya3 sub 20 jp m,bya2 sub 50 jp m,bya1 bya4: ld a,4 ld (bya),a ret bya3: ld a,3 ld (bya),a ret bya2: ld a,2 ld (bya),a ret bya1: ld a,1 ld (bya),a ret schoose1: ld a,(cx) sub 28 jp m,bxap1 sub 52 jp p,bxa1 ld a,2 ld b,a call ionrandom cp 0 jp z,bxa1 cp 1 jp z,bxap1 ret schoose2: ld a,(cx) sub 34 jp m,bxap2 sub 44 jp p,bxa2 ld a,2 ld b,a call ionrandom cp 0 jp z,bxa2 cp 1 jp z,bxap2 ret dwball1: ld a,(bdir) cp 0 ret z ld a,(bdir) cp 1 ret z ld a,(bya) ld b,a ld a,(by) add a,b ld (by),a jp dwballall dwball2: ld a,(bdir) cp 0 ret z ld a,(bdir) cp 2 ret z ld a,(bya) ld b,a ld a,(by) sub b ld (by),a ld a,(bya) sub 4 jp m,dwballall call dwballx jp dwballall dwballall: ld a,(btime) inc a ld (btime),a cp 2 call z,dwballx ret dwballx: ld a,(bxa) sub 4 jp p,dwball2x ld a,(bxa) ld b,a ld a,(bx) add a,b ld (bx),a ld a,0 ld (btime),a ret dwball2x: ld a,(bxa) sub 4 ld b,a ld a,(bx) sub b ld (bx),a ld a,0 ld (btime),a ret balldr: call bsprchoose call spclball ld a,(by) ld l,a ld a,(bx) ld b,6 ld c,1 call ionlargesprite ret spclball: ld a,(bdir) cp 2 ret z ld a,(bya) sub 3 ret m ld a,(spn) cp 1 jp z,wfifi cp 2 jp z,wsproky cp 3 jp z,wteck cp 4 jp z,wgggg ret wfifi: ld ix,wheart ret wsproky: ld ix,wscepter ret wteck: ld ix,warrow ret wgggg: ld ix,wgx ret bsprchoose: ld ix,ball2 ret spdet: ld a,(spn) cp 1 jp z,dfifi cp 2 jp z,dsproky cp 3 jp z,dteck cp 4 jp z,dgggg dfifi: ld ix,fifi ret dsproky: ld ix,sproky ret dteck: ld ix,iteck ret dgggg: ld ix,gggg ret checky: ld a,(sy) cp 18 call z,toup cp 47 call z,todown ret toup: ld a,(sy) inc a ld (sy),a ret todown: ld a,(sy) dec a ld (sy),a ret checkx: ld a,(sx) cp 8 call z,toright cp 76 call z,toleft ret toright: ld a,(sx) inc a inc a ld (sx),a ret toleft: ld a,(sx) dec a dec a ld (sx),a ret nmm: .db "Nick Monu",0 empty: .db "ADV TENNIS 0.4",0 pstrt: .db " PRESS ENTER ",0 speedstr: .db "CHOOSE SPEED",0 slowstr: .db "2nd - Slow",0 faststr: .db "MODE - Fast",0 contstr1: .db "A PREVIOUS GAME HAS",0 contstr2: .db "BEEN DETECTED",0 contstr3: .db "2nd - Continue",0 contstr4: .db "Mode - Start New",0 cstr: .db "CHOOSE A CHARACTER",0 servestr: .db "SERVE",0 textwin: .db "You Win!",0 textlose: .db "Sorry you Lose",0 ticalc1: .db "For more games",0 ticalc2: .db "www.ticalc.org",0 ggna: .db "Mazel T.",0 spna: .db "Sproky",0 fina: .db "Fifi",0 tena: .db "I-teck",0 scoresave: .dw 000000000000000000000,0 sprserve: .dw 000000000000000000000,0 tzero: .db %00000000 .db %00011100 .db %00100010 .db %00100010 .db %00100010 .db %00100010 .db %00011100 .db %00000000 tfift: .db %00000000 .db %01101110 .db %00101000 .db %00101100 .db %00101010 .db %00100010 .db %00101110 .db %00000000 tthirt: .db %00000000 .db %01100011 .db %00010101 .db %01100101 .db %00010101 .db %00010101 .db %01100110 .db %00000000 tfourt: .db %00100000 .db %00100010 .db %01000101 .db %01010101 .db %11111101 .db %00010101 .db %00010010 .db %00010000 tadvt: .db %00000000 .db %01100001 .db %10010001 .db %10010111 .db %11111001 .db %10011001 .db %10010111 .db %00000000 ball2: .db %01110000 .db %11111000 .db %11111000 .db %01110000 .db %00000000 .db %00000000 pointer: .db %10000000 .db %11000000 .db %11100000 .db %11000000 .db %10000000 wheart: .db %01101100 .db %11111110 .db %11000110 .db %01101100 .db %00111000 .db %00010000 warrow: .db %00010000 .db %00111000 .db %01111100 .db %10111010 .db %00010000 .db %00010000 wscepter: .db %00110000 .db %00110000 .db %11001100 .db %10000100 .db %10110100 .db %00110000 wgx: .db %00000000 .db %00010000 .db %00101000 .db %01101100 .db %11101110 .db %00101000 racl: .db %00000000 .db %00000000 .db %00000000 .db %01111000 .db %10111100 .db %10101111 .db %11010100 .db %01111000 racr: .db %00000000 .db %00000000 .db %00000000 .db %00011110 .db %00111101 .db %11110101 .db %00101011 .db %00011110 rac3: .db %00000000 .db %00111000 .db %01101100 .db %01101110 .db %00110010 .db %00011101 .db %00000001 .db %00000000 rac4: .db %00000000 .db %00011100 .db %00110110 .db %01110110 .db %01001100 .db %10111000 .db %10000000 .db %00000000 rsp: .db %00000000 .db %00000000 .db %00000000 .db %00000000 .db %00000000 .db %00000000 .db %00000000 .db %00000000 intro1: .db %11101110,%11111111 .db %01000100,%11111111 .db %01100100,%11100111 .db %01010100,%11100111 .db %01001100,%11111111 .db %01000100,%11111111 .db %11101110,%11111111 .db %00000000,%00000000 .db %11111110,%11100011 .db %11111110,%01000001 .db %11111110,%01100011 .db %11001110,%01010101 .db %11001110,%01001001 .db %11111110,%01000001 .db %11111110,%11100011 .db %11111110,%00000000 asmby1: .db %10011011,%00000110 .db %10111011,%00100011 .db %11011111,%00011001 .db %10101011,%00011001 .db %11100001,%00000000 .db %11111111,%10000100 .db %10011011,%01000000 .db %11111111,%11111111 .db %00000001,%01010111 .db %11010101,%10111111 .db %01000001,%10011110 .db %00110001,%10111111 .db %00100000,%11110111 .db %00000001,%10111111 .db %00101001,%11011101 .db %01000001,%11111111 asmby2: .db %01110101,%11111001 .db %11111111,%11011100 .db %10111011,%11111110 .db %11111111,%11111110 .db %10101101,%11111111 .db %10111011,%01111011 .db %01110101,%10111111 .db %11111111,%11111111 .db %11111111,%10110100 .db %00101011,%11111110 .db %10111111,%11111101 .db %11111111,%11101010 .db %11101110,%10111110 .db %11111111,%11111110 .db %11010111,%00111110 .db %10111111,%11111111 sline: .db %11111111,%11111111,%11111111,%11111111,%11111111 fifi: .db %00000000 .db %00000000 .db %01000010 .db %10100101 .db %01000010 .db %00100100 .db %00011000 .db %00111100 .db %01000010 .db %01011010 .db %01000010 .db %00111100 .db %01011010 .db %00100100 .db %00111100 .db %00000000 sproky: .db %00000000 .db %00000000 .db %01000010 .db %01000010 .db %00100100 .db %00100100 .db %00011000 .db %01111110 .db %01000010 .db %01011010 .db %01000010 .db %01111110 .db %00111100 .db %00111100 .db %00000000 .db %00000000 iteck: .db %00000000 .db %00000000 .db %00000000 .db %00000000 .db %11100111 .db %00100100 .db %00011000 .db %01111110 .db %01111110 .db %01011010 .db %01000010 .db %00111100 .db %01111110 .db %00111100 .db %00000000 .db %00000000 gggg: .db %00000000 .db %00000000 .db %00000000 .db %00000000 .db %01000010 .db %10100101 .db %00011000 .db %00111100 .db %01000010 .db %11011011 .db %01000010 .db %00111100 .db %01111110 .db %00111100 .db %00000000 .db %00000000 wendy: .db %00000000,%00000000 .db %00000000,%00000000 .db %00000000,%00000000 .db %00000000,%00000000 .db %00000100,%00100000 .db %00000010,%01000000 .db %00000001,%10000000 .db %00000111,%11100000 .db %00000011,%11000000 .db %10000101,%10100001 .db %11110100,%00101111 .db %00110011,%11001100 .db %00000101,%10100000 .db %00001111,%11110000 .db %00000100,%00100000 .db %00000000,%00000000 tlogo: .db %00000000,%10001100,%10000000,%00000000,%00011111,%11100000,%00000000 .db %00000011,%11100110,%10000000,%00000000,%00000111,%01111110,%00000000 .db %00000001,%01000110,%10000000,%00000000,%01101110,%11111111,%10000000 .db %00000111,%11110010,%10000000,%00000001,%11011101,%01111111,%11100000 .db %00000010,%00100000,%11000000,%00000011,%10111011,%01111111,%11110000 .db %00001111,%11111000,%11100000,%00000011,%01110111,%10111111,%11111000 .db %00000100,%00010000,%11100000,%00001110,%11101111,%11011111,%11111000 .db %00011111,%11111100,%10110000,%00001101,%11011111,%11100111,%11111100 .db %00001111,%11111100,%10011000,%00011011,%10100111,%11110011,%11111110 .db %00111111,%11100010,%10011000,%00110111,%01100011,%11111100,%11111110 .db %00010000,%01000000,%10001100,%00101110,%11111001,%11111111,%00111110 .db %01111111,%10011100,%10000110,%00011101,%11111100,%01111111,%11001111 .db %00100000,%10000000,%10000110,%00111011,%11111111,%00111111,%11110000 .db %11111111,%10011100,%10000011,%01110111,%11111111,%10001111,%11111111 .db %01000000,%10000000,%10000001,%11101111,%11111111,%11100111,%11111111 .db %11111111,%11000010,%11000000,%11011111,%11111111,%11110011,%11111111 .db %00000000,%00000000,%00000000,%00000001,%11111111,%11111011,%11111111 .db %00111111,%10111111,%11000000,%01111110,%00001111,%11111100,%11111111 .db %00111111,%10111111,%11000000,%00111111,%11110111,%11111110,%11111111 .db %00000000,%10000000,%00000000,%00111100,%01111011,%11111111,%01111111 .db %00000000,%10000000,%00000000,%00111100,%01111101,%11111111,%00111110 .db %00000000,%10000000,%00000000,%00111111,%11111110,%11111111,%10011110 .db %00000000,%10000000,%00000001,%00010110,%11100011,%01111111,%11001110 .db %00000000,%10000000,%00000001,%10000110,%11011101,%01111111,%11101100 .db %00000000,%11001110,%01011001,%11001010,%10011101,%01111111,%11110000 .db %00000000,%11010001,%01100101,%01101010,%10011111,%01111111,%11110000 .db %00000000,%11010001,%01000101,%00111010,%10011111,%10111111,%11110000 .db %00000000,%11011111,%01000101,%00011000,%11000001,%10111111,%11100000 .db %00000000,%11010000,%01000101,%00001001,%01111100,%10111111,%10000000 .db %00000000,%11001111,%01000101,%00001001,%00111100,%11111111,%00000000 .db %00000000,%00000000,%00000000,%00000000,%00000011,%01110000,%00000000 .db %00000011,%11111111,%11111111,%11111111,%11111100,%00000000,%00000000 stage: .db %00000001,%11111111,%11111111,%11111111,%11111111,%11111111,%11111111,%10000000 .db %00000010,%00010000,%00000000,%00000001,%00000000,%00000000,%00001000,%01000000 .db %00000010,%00010000,%00000000,%00000000,%00000000,%00000000,%00001000,%01000000 .db %00000010,%00010000,%00000000,%00000000,%00000000,%00000000,%00001000,%01000000 .db %00000100,%00010000,%00000000,%00000000,%00000000,%00000000,%00001000,%00100000 .db %00000100,%00010000,%00000000,%00000000,%00000000,%00000000,%00001000,%00100000 .db %00000100,%00010000,%00000000,%00000000,%00000000,%00000000,%00001000,%00100000 .db %00000100,%00100000,%00000000,%00000000,%00000000,%00000000,%00000100,%00100000 .db %00000100,%00100000,%00000000,%00000000,%00000000,%00000000,%00000100,%00100000 .db %00000100,%00100000,%00000000,%00000000,%00000000,%00000000,%00000100,%00010000 .db %00001000,%00100000,%00000000,%00000000,%00000000,%00000000,%00000100,%00010000 .db %00001000,%00100000,%00000000,%00000000,%00000000,%00000000,%00000100,%00010000 .db %00001000,%00111111,%11111111,%11111111,%11111111,%11111111,%11111100,%00010000 .db %00001000,%01000000,%00000000,%00000001,%00000000,%00000000,%00000010,%00010000 .db %00001000,%01000000,%00000000,%00000001,%00000000,%00000000,%00000010,%00001000 .db %00001000,%01000000,%00000000,%00000001,%00000000,%00000000,%00000010,%00001000 .db %00010000,%01000000,%00000000,%00000001,%00000000,%00000000,%00000010,%00001000 .db %00010000,%01000000,%00000000,%00000001,%00000000,%00000000,%00000010,%00001000 .db %00010000,%10000000,%00000000,%00000001,%00000000,%00000000,%00000001,%00000100 .db %01101111,%11111111,%11111111,%11111111,%11111111,%11111111,%11111111,%11110110 .db %01100010,%01001001,%00100100,%10010011,%01001001,%00100100,%10010010,%01000110 .db %01101001,%10100100,%10010010,%01001001,%10010010,%01001001,%00100101,%10010110 .db %01100100,%10010010,%01001001,%00100101,%00100100,%10010010,%01001001,%00100110 .db %01100010,%11001001,%00100100,%10010011,%01001001,%00100100,%10010011,%01000110 .db %01101001,%10100100,%10010010,%01001001,%10010010,%01001001,%00100101,%10010110 .db %01100100,%10010010,%01001001,%00100101,%10100100,%10010010,%01001001,%00100110 .db %01100011,%10001001,%00100100,%10010010,%01001001,%00100100,%10010011,%11000110 .db %01101111,%11111111,%11111111,%11111111,%11111111,%11111111,%11111111,%11110110 .db %10000001,%00000000,%00000000,%00000001,%00000000,%00000000,%00000000,%10000001 .db %10000001,%00000000,%00000000,%00000001,%00000000,%00000000,%00000000,%10000001 .db %10000001,%00000000,%00000000,%00000001,%00000000,%00000000,%00000000,%10000001 .db %10000001,%00000000,%00000000,%00000001,%00000000,%00000000,%00000000,%10000001 .db %10000010,%00000000,%00000000,%00000001,%00000000,%00000000,%00000000,%01000001 .db %10000010,%00000000,%00000000,%00000001,%00000000,%00000000,%00000000,%01000001 .db %00000010,%00000000,%00000000,%00000001,%00000000,%00000000,%00000000,%01000001 .db %00000010,%00000000,%00000000,%00000001,%00000000,%00000000,%00000000,%01000000 .db %00000010,%00000000,%00000000,%00000001,%00000000,%00000000,%00000000,%01000000 .db %00000010,%00000000,%00000000,%00000001,%00000000,%00000000,%00000000,%01000000 .db %00000011,%11111111,%11111111,%11111111,%11111111,%11111111,%11111111,%11000000 .db %00000100,%00000000,%00000000,%00000000,%00000000,%00000000,%00000000,%00100000 .db %00000100,%00000000,%00000000,%00000000,%00000000,%00000000,%00000000,%00100000 .db %00000100,%00000000,%00000000,%00000000,%00000000,%00000000,%00000000,%00100000 .db %00000100,%00000000,%00000000,%00000000,%00000000,%00000000,%00000000,%00100000 .db %00000100,%00000000,%00000000,%00000000,%00000000,%00000000,%00000000,%00100000 .db %00000100,%00000000,%00000000,%00000000,%00000000,%00000000,%00000000,%00100000 .db %00000100,%00000000,%00000000,%00000000,%00000000,%00000000,%00000000,%00100000 .db %00001000,%00000000,%00000000,%00000000,%00000000,%00000000,%00000000,%00010000 .db %00001000,%00000000,%00000000,%00000000,%00000000,%00000000,%00000000,%00010000 .db %00001000,%00000000,%00000000,%00000000,%00000000,%00000000,%00000000,%00010000 .db %00001000,%00000000,%00000000,%00000000,%00000000,%00000000,%00000000,%00010000 .db %00001000,%00000000,%00000000,%00000000,%00000000,%00000000,%00000000,%00010000 .db %00001000,%00000000,%00000000,%00000000,%00000000,%00000000,%00000000,%00010000 .db %00001000,%00000000,%00000000,%00000001,%00000000,%00000000,%00000000,%00010000 .db %00001000,%00000000,%00000000,%00000001,%00000000,%00000000,%00000000,%00010000 .db %11111111,%11111111,%11111111,%11111111,%11111111,%11111111,%11111111,%11111111 .end END