ZXTape! 0Created with Ramsoft MakeTZXÄ11 “e€“å1 •ÿ êgo  êorg 40000  ê! RND HêRnd;ld hl,(Seed);ld d,h;ld e,l;ld h,e;ld l,10;or a;sbc hl,de;add hl,hl (-êadd hl,hl;add hl,de;inc hl;ld (Seed),hl;ret 2ê! RANDOM NO. DOWN <êRdwn;push hl;call Rnd;ld a,h;and 7;inc a;ld h,a;ld a,e;and 15;add a,h;ld e,0;rra;rr e;rra;rr e;rra;rr e;or 88;ld d,a;pop hl;ret Fê! RND*24 P_êRd24;push hl;call Rnd;ld a,h;and 7;ld h,a;ld a,l;and 7;add a,h;inc a;inc a;res 0,a;pop hl;ret Zê! BLANK LINER dˆêBlin;push de;push bc;ld b,22;A;dec de;ld a,e;and 31;cp 31;jr z,B;ld a,(de);cp 16;jr nz,+3;ld a,56;ld (de),a;djnz A;B;pop bc;pop de;ret n ê! FIND x‰êFind;inc hl;inc hl;inc hl;ld a,(hl);or a;jr nz,Find;call Rdwn;ld (hl),d;inc hl;ld (hl),e;inc hl;ld a,(23672);and 1;or 128;ld (hl),a;ret ‚ê! NEXT POS ŒÁêNxpos;push bc;push de;ld bc,32;bit 0,(hl);jr nz,+3;ld bc,65504;ex de,hl;add hl,bc;ex de,hl;bit 2,d;jr nz,C;ld a,d;cp 91;jr nz,C;pop bc;pop bc;ret;C;pop de;ld a,1;xor (hl);ld (hl),a;pop bc;ret –ê! FOUR CHR  DêFchr;push bc;push hl;push de;ld h,0;ld l,a;ld a,(Pnum)add a,l;jr D ª ê! CHR ´^êChr;push bc;push hl;push de;ld h,0;ld l,a;D;ld a,(hl);ld (de),a;inc hl;ld a,d;and 3;or 8;rla ¾Zêrla;rla;ld d,a;ld b,8;E;ld a,(hl);ld (de),a;inc hl;inc d;djnz E;pop de;pop hl;pop bc;ret Èê! FUZBALL Ò‡êFuz;ld hl,Fcnt;ld a,(hl);or a;jr nz,F;dec (hl);ret nz;call Rdwn;jr G;F;ld de,(Fpos);ld hl,F1;xor a;bit 0,(hl);jr z,+2;ld a,0;call Chr ÜêG;push de;ld hl,(Ship);ld bc,7936;ld a,e;and b;ld e,a;sbc hl,de;pop de;jr nc,+2;ld c,1;ld a,h;or l;dec de;jr z,H;ld hl,F2;ld (hl),c;call Nxpos æêH;ld a,e;and 31;jr nz,+7;ld a,(Fr);ld (Fcnt),a;ret;ld a,(de);cp 0;jr nz,+5;ld a,1;ld (F1),a;ld a,0;call Fchr;ld (Fpos),de;ret ð ê! LINER ú–êLin;ld hl,Lcnt;dec (hl);jr nz,+10;ld a,(Lr);ld (hl),a;ld hl,Lpos;call Find;ld b,4;ld hl,Lpos;L1;ld d,(hl);ld a,d;or a;jr z,I;inc hl;ld e,(hl);inc hl eêbit 7,(hl);jr nz,J;bit 1,(hl);jr z,K;ld a,0;call Chr;dec de;ld a,(de);cp 56;jr nz,L;res 1,(hl);jr L ŽêK;xor a;call Chr;ld a,e;and 31;jr nz,+3;ld d,a;jr M;call Blin;J;dec de;call Nxpos;ld a,(de);cp 0;jr nz,+2;set 1,(hl);push bc;ld b,22;push de fêL2;dec de;ld a,e;and 31;cp 31;jr z,N;ld a,(de);cp 0;jr z,+4;cp 56;jr nz,+3;ld a,16;ld (de),a;djnz L2 "vêN;pop de;pop bc;L;ld a,0;call Fchr;M;dec hl;dec hl;ld (hl),d;I;inc hl;ld (hl),e;inc hl;res 7,(hl);inc hl;djnz L1;ret ,ê! WALKER 6`êWalk;ld hl,Wcnt;dec (hl);jr nz,+10;ld a,(Wr);ld (hl),a;ld hl,Wpos;call Find;ld hl,Wpos;ld b,16 @žêL3;ld d,(hl);ld a,d;or a;jr z,O;inc hl;ld e,(hl);inc hl;bit 7,(hl);jr nz,P;bit 1,(hl);jr z,Q;ld a,0;call Chr;dec de;ld a,(de);cp 56;jr nz,+2;res 1,(hl);jr R J5êQ;xor a;call Chr;ld a,e;and 31;jr nz,+3;ld d,a;jr S TDêP;bit 5,(hl);dec de;call z,Nxpos;ld a,(de);cp 0;jr nz,R;set 1,(hl) ^~êR;ld a,0;call Fchr;S;dec hl;dec hl;O;ld (hl),d;inc hl;ld (hl),e;inc hl;ld a,32;xor (hl);res 7,a;ld (hl),a;inc hl;djnz L3;ret hê! SPIKER rhêSpi;ld hl,Scnt;dec (hl);jr nz,+16;ld a,(Sr);ld (hl),a;ld hl,Spos;call Find;call Rd24;set 7,a;ld (hl),a |êld b,16;ld hl,Spos †„êL4;ld d,(hl);inc hl;ld a,d;or a;jr nz,T;ld e,(hl);inc hl;bit 7,(hl);jr nz,+5;ld a,0;call Chr;ld a,(hl);or a;jr z,U;dec (hl);dec de ?êV;ld a,0;call Fchr;W;dec hl;dec hl;ld (hl),d;inc hl;ld (hl),e š(êT;inc hl;res 7,(hl);inc hl;djnz L4;ret ¤,êU;inc de;ld a,e;and 31;jr nz,V;ld d,a;jr W ®ê! ASTEROID ¸_êAst;ld hl,Acnt;dec (hl);jr nz,+10;ld a,(Ar);ld (hl),a;ld hl,Apos;call Find;ld b,16;ld hl,Apos •êL5;ld d,(hl);ld a,d;or a;jr z,X;inc hl;ld e,(hl);inc hl;bit 7,(hl);jr nz,Y;xor a;bit 1,(hl);jr z,+4;res 1,(hl);ld a,0;call Chr;ld a,e;and 31;jr z,Z ÌDêY;dec de;ld a,(de);cp 0;jr nz,+2;set 1,(hl);ld a,0;call Fchr;jr +1 Ö"êZ;ld d,a;dec hl;dec hl;ld (hl),d à9êX;inc hl;ld (hl),e;inc hl;res 7,(hl);inc hl;djnz L5;ret ôê! SCREEN þZêScr;push de;L6;ld d,(hl);inc hl;ld e,(hl);inc hl;inc hl;ex (sp),hl;sbc hl,de;ld a,h;or l Qêjr z,+4;add hl,de;ex (sp),hl;jr L6;pop hl;dec hl;dec hl;dec hl;ld (hl),a;jp Chr  ê! INC ]êInc;push hl;inc (hl);ld a,(hl);cp 58;jr z,+4;pop hl;djnz Inc;ret;ld (hl),48;dec hl;jr Inc+1 & ê! CHECK 0WêChk;cp 0;jr nz,Aa;xor a;call Chr;inc de;xor a;call Chr;push hl;ld hl,Ss2;ld b,2;jr Ab :2êAa;push hl;cp 0;jr nz,+7;ld hl,Wpos;ld b,5;jr Ac D'êcp 0;jr nz,+7;ld hl,Apos;ld b,3;jr Ac N2êcp 0;jr nz,+10;call Blin;ld hl,Lpos;ld b,1;jr Ad X'êcp 0;jr nz,+7;ld hl,Spos;ld b,2;jr Ad b$êld a,(Fr);ld (Fcnt),a;ld b,3;jr +3 lêAd;call Scr;ld hl,Ss0;jr Ab vêAc;call Scr;ld hl,Ss1 €IêAb;push bc;call Inc;ld bc,5;add hl,bc;pop bc;call Inc;pop hl;ld d,b;ret Šê! KEYPRESS ”AêKp;in a,(223);xor 255;jr nz,Jy;ld a,(23560);ret;Jy;ld a,255;ret žê! SET TIME ¨;êSti;ld hl,Fcnt;ld bc,1320;L7;ld (hl),c;inc hl;djnz L7;ret ²ê! BLANKOUT ¼AêBout;ld hl,Fpos;ld d,178;L8;ld (hl),0;inc hl;dec d;jr nz,L8;ret Æê! BLANK SCREEN ÐHêBscr;ld de,22528;ld bc,768;L9;cp 0;jr z,+8;cp 0;jr z,+4;xor a;call Chr Ú(êinc de;dec bc;ld a,b;or c;jr nz,L9;ret äê! MOVE MISSILE î"êMis;ld ix,Snd;ld b,10;ld hl,Mstr øbêL10;ld e,(hl);inc hl;ld d,(hl);ld a,d;or a;jr z,N1;dec hl;ld a,(de);sub 0;jr z,+5;call Chk;jr N2 5êcall Chr;inc de;ld a,e;and 31;jr nz,+3;ld d,a;jr N2  'êld a,(de);cp 0;jr z,+5;call Chk;jr N2 Eêld a,0;call Chr;ld a,e;sub (ix+0);jr nc,N2;add a,(ix+0);ld (ix+0),a  êN2;ld (hl),e;inc hl;ld (hl),d *êN1;inc hl;djnz L10;ret 4ê! SET UP >LêSup;ld hl,16384;ld bc,6144;N3;ld (hl),0;inc hl;dec bc;ld a,b;or c;jr nz,N3 HKêld hl,22528;ld bc,768;N4;ld (hl),0;inc hl;dec bc;ld a,b;or c;jr nz,N4;ret Rê! PRINT STRING \PêPstr;ld a,b;rla;rla;rla;rla;rla;and 224;or c;ld e,a;ld a,b;and 24;or 64;ld d,a ffêNl;ld a,(hl);or a;ret z,;push hl;ld l,a;ld h,0;add hl,hl;add hl,hl;add hl,hl;ld bc,(23606);add hl,bc p[êpush de;ld b,8;ld a,(hl);ld (de),a;inc hl;inc d;djnz -6;pop de;inc de;pop hl;inc hl;jr Nl zê! SMART MISSILE „ êSma;ld e,8 ŽêAe;ld hl,22528;ld bc,768 ˜dêAf;ld a,(hl);and 56;ld d,a;ld a,(hl);inc a;and 7;or d;ld (hl),a;inc hl;dec bc;ld a,b;or c;jr nz,Af ¢ê! sound here ¬:êdec e;jr nz,Ae;call Bout;call Sti;call Bscr;ld de,(Ship) ¶=êld a,0;call Chr;inc de;ld a,0;call Chr;xor a;ld (Smf),a;ret À ê! INPUT Ê'êIn;in a,(223);inc a;jr z,+2;dec a;ret ÔEêld hl,255;ld bc,57342;in a,(c);cp l;rlc h;ld bc,32766;in a,(c);cp l ÞOêrlc h;rlc h;ld bc,65022;in a,(c);cp l;rlc h;ld bc,64510;cp l;rlc h;ld a,h;ret èê! KEYBOARD ò7êKbd;call In;bit 3,a;jr z,Ag;ld a,(Smf);or a;jp nz,Mis ü5êAg;bit 4,a;jr nz,Ah;ld hl,Mstr;ld b,10;ld c,a;xor a 0êAi;inc hl;cp (hl);jr z,+5;inc hl;djnz Ai;jr Aj 7êdec hl;ld de,(Ship);inc de;ld (hl),e;inc hl;ld (hl),d  êAj;ld a,c $&êAh;bit 0,a;jr z,+5;ld de,65504;jr Ak .êbit 1,a;ret z,;ld de,32 8VêAk;ld hl,(Ship);add hl,de;ld a,h;cp 88;ret c,;ld bc,23296;sbc hl,bc;add hl,bc;ret nc B*êld a,(hl);cp 0;jr z,+4;Am;pop bc;jp Nxsh L êinc hl;ld a,(hl);cp 0;jr nz,Am VEêdec hl;ld (Ship),hl;ex de,hl;ld a,0;call Chr;inc de;ld a,0;call Chr `Aêdec de;xor a;ex de,hl;sbc hl,de;ex de,hl;call Chr;inc de;jp Chr jê! NEXT SHIP t;êNxsh;ld a,(Lsec);inc a;cp 53;jp z,Egm;ld (Lsec),a;jr Nxse Ðênop;nop;Egm;Nxse @ê! Jê! VARIABLES Tê! ¤êSeed;defw 23583 ® êPnum;defb 0 ¸êShip;defw 0 !YOUR POS Â,êdefs 0000;Ss0;defs 0;Ss1;defs 0;Ss2;defs 0 ÌêWscr;defs 00000 ÖêSnd;defb 1 !Sound str àêLsec;defs 0 !Sectors lost !4ê! FLAGS !5êF1;defb 0 !FUZ ON SPIKE? !>êF2;defb 0 !FUZ DIREC. !HêSmf;defb 1 !SMART MIS !˜ê! ROM2 VALUES !™êFr;defb 40 !FUZ !¬êLr;defb 45 !LINER !¶êWr;defb 6 !WALKER !ÀêSr;defb 30 !SPIKER !ÊêAr;defb 11 !ASTEROID !üê! ALIEN POSIT'S " êFpos;defw 0 "êLpos;defs aaaaaaaaaaaa "<êWpos;defs aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa "$<êSpos;defs aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa ".<êApos;defs aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa "8 êMstr;defs aaaaaaaaaaaaaaaaaaaa "`ê! COUNTS "j êFcnt;defb 0 "t êLcnt;defb 1 "~ êWcnt;defb 1 "ˆ êScnt;defb 1 "’ êAcnt;defb 1 #&êfinish #'ùÀ60000`ê i ,12 š!U€š!ÖËœ!ÿ êgo  êorg 40000  ê! RND HêRnd;ld hl,(Seed);ld d,h;ld e,l;ld h,e;ld l,10;or a;sbc hl,de;add hl,hl (-êadd hl,hl;add hl,de;inc hl;ld (Seed),hl;ret 2ê! RANDOM NO. DOWN <êRdwn;push hl;call Rnd;ld a,h;and 7;inc a;ld h,a;ld a,e;and 15;add a,h;ld e,0;rra;rr e;rra;rr e;rra;rr e;or 88;ld d,a;pop hl;ret Fê! RND*24 P_êRd24;push hl;call Rnd;ld a,h;and 7;ld h,a;ld a,l;and 7;add a,h;inc a;inc a;res 0,a;pop hl;ret Zê! BLANK LINER dˆêBlin;push de;push bc;ld b,22;A;dec de;ld a,e;and 31;cp 31;jr z,B;ld a,(de);cp 16;jr nz,+3;ld a,56;ld (de),a;djnz A;B;pop bc;pop de;ret n ê! FIND x‰êFind;inc hl;inc hl;inc hl;ld a,(hl);or a;jr nz,Find;call Rdwn;ld (hl),d;inc hl;ld (hl),e;inc hl;ld a,(23672);and 1;or 128;ld (hl),a;ret ‚ê! NEXT POS ŒÁêNxpos;push bc;push de;ld bc,32;bit 0,(hl);jr nz,+3;ld bc,65504;ex de,hl;add hl,bc;ex de,hl;bit 2,d;jr nz,C;ld a,d;cp 91;jr nz,C;pop bc;pop bc;ret;C;pop de;ld a,1;xor (hl);ld (hl),a;pop bc;ret –ê! FOUR CHR  DêFchr;push bc;push hl;push de;ld h,0;ld l,a;ld a,(Pnum)add a,l;jr D ª ê! CHR ´^êChr;push bc;push hl;push de;ld h,0;ld l,a;D;ld a,(hl);ld (de),a;inc hl;ld a,d;and 3;or 8;rla ¾Zêrla;rla;ld d,a;ld b,8;E;ld a,(hl);ld (de),a;inc hl;inc d;djnz E;pop de;pop hl;pop bc;ret Èê! FUZBALL Ò‡êFuz;ld hl,Fcnt;ld a,(hl);or a;jr nz,F;dec (hl);ret nz;call Rdwn;jr G;F;ld de,(Fpos);ld hl,F1;xor a;bit 0,(hl);jr z,+2;ld a,0;call Chr ÜêG;push de;ld hl,(Ship);ld bc,7936;ld a,e;and b;ld e,a;sbc hl,de;pop de;jr nc,+2;ld c,1;ld a,h;or l;dec de;jr z,H;ld hl,F2;ld (hl),c;call Nxpos æêH;ld a,e;and 31;jr nz,+7;ld a,(Fr);ld (Fcnt),a;ret;ld a,(de);cp 0;jr nz,+5;ld a,1;ld (F1),a;ld a,0;call Fchr;ld (Fpos),de;ret ð ê! LINER ú–êLin;ld hl,Lcnt;dec (hl);jr nz,+10;ld a,(Lr);ld (hl),a;ld hl,Lpos;call Find;ld b,4;ld hl,Lpos;L1;ld d,(hl);ld a,d;or a;jr z,I;inc hl;ld e,(hl);inc hl eêbit 7,(hl);jr nz,J;bit 1,(hl);jr z,K;ld a,0;call Chr;dec de;ld a,(de);cp 56;jr nz,L;res 1,(hl);jr L ŽêK;xor a;call Chr;ld a,e;and 31;jr nz,+3;ld d,a;jr M;call Blin;J;dec de;call Nxpos;ld a,(de);cp 0;jr nz,+2;set 1,(hl);push bc;ld b,22;push de fêL2;dec de;ld a,e;and 31;cp 31;jr z,N;ld a,(de);cp 0;jr z,+4;cp 56;jr nz,+3;ld a,16;ld (de),a;djnz L2 "vêN;pop de;pop bc;L;ld a,0;call Fchr;M;dec hl;dec hl;ld (hl),d;I;inc hl;ld (hl),e;inc hl;res 7,(hl);inc hl;djnz L1;ret ,ê! WALKER 6`êWalk;ld hl,Wcnt;dec (hl);jr nz,+10;ld a,(Wr);ld (hl),a;ld hl,Wpos;call Find;ld hl,Wpos;ld b,16 @žêL3;ld d,(hl);ld a,d;or a;jr z,O;inc hl;ld e,(hl);inc hl;bit 7,(hl);jr nz,P;bit 1,(hl);jr z,Q;ld a,0;call Chr;dec de;ld a,(de);cp 56;jr nz,+2;res 1,(hl);jr R J5êQ;xor a;call Chr;ld a,e;and 31;jr nz,+3;ld d,a;jr S TDêP;bit 5,(hl);dec de;call z,Nxpos;ld a,(de);cp 0;jr nz,R;set 1,(hl) ^~êR;ld a,0;call Fchr;S;dec hl;dec hl;O;ld (hl),d;inc hl;ld (hl),e;inc hl;ld a,32;xor (hl);res 7,a;ld (hl),a;inc hl;djnz L3;ret hê! SPIKER rhêSpi;ld hl,Scnt;dec (hl);jr nz,+16;ld a,(Sr);ld (hl),a;ld hl,Spos;call Find;call Rd24;set 7,a;ld (hl),a |êld b,16;ld hl,Spos †„êL4;ld d,(hl);inc hl;ld a,d;or a;jr nz,T;ld e,(hl);inc hl;bit 7,(hl);jr nz,+5;ld a,0;call Chr;ld a,(hl);or a;jr z,U;dec (hl);dec de ?êV;ld a,0;call Fchr;W;dec hl;dec hl;ld (hl),d;inc hl;ld (hl),e š(êT;inc hl;res 7,(hl);inc hl;djnz L4;ret ¤,êU;inc de;ld a,e;and 31;jr nz,V;ld d,a;jr W ®ê! ASTEROID ¸_êAst;ld hl,Acnt;dec (hl);jr nz,+10;ld a,(Ar);ld (hl),a;ld hl,Apos;call Find;ld b,16;ld hl,Apos •êL5;ld d,(hl);ld a,d;or a;jr z,X;inc hl;ld e,(hl);inc hl;bit 7,(hl);jr nz,Y;xor a;bit 1,(hl);jr z,+4;res 1,(hl);ld a,0;call Chr;ld a,e;and 31;jr z,Z ÌDêY;dec de;ld a,(de);cp 0;jr nz,+2;set 1,(hl);ld a,0;call Fchr;jr +1 Ö"êZ;ld d,a;dec hl;dec hl;ld (hl),d à9êX;inc hl;ld (hl),e;inc hl;res 7,(hl);inc hl;djnz L5;ret ôê! SCREEN þZêScr;push de;L6;ld d,(hl);inc hl;ld e,(hl);inc hl;inc hl;ex (sp),hl;sbc hl,de;ld a,h;or l Qêjr z,+4;add hl,de;ex (sp),hl;jr L6;pop hl;dec hl;dec hl;dec hl;ld (hl),a;jp Chr  ê! INC ]êInc;push hl;inc (hl);ld a,(hl);cp 58;jr z,+4;pop hl;djnz Inc;ret;ld (hl),48;dec hl;jr Inc+1 & ê! CHECK 0WêChk;cp 0;jr nz,Aa;xor a;call Chr;inc de;xor a;call Chr;push hl;ld hl,Ss2;ld b,2;jr Ab :2êAa;push hl;cp 0;jr nz,+7;ld hl,Wpos;ld b,5;jr Ac D'êcp 0;jr nz,+7;ld hl,Apos;ld b,3;jr Ac N2êcp 0;jr nz,+10;call Blin;ld hl,Lpos;ld b,1;jr Ad X'êcp 0;jr nz,+7;ld hl,Spos;ld b,2;jr Ad b$êld a,(Fr);ld (Fcnt),a;ld b,3;jr +3 lêAd;call Scr;ld hl,Ss0;jr Ab vêAc;call Scr;ld hl,Ss1 €IêAb;push bc;call Inc;ld bc,5;add hl,bc;pop bc;call Inc;pop hl;ld d,b;ret Šê! KEYPRESS ”AêKp;in a,(223);xor 255;jr nz,Jy;ld a,(23560);ret;Jy;ld a,255;ret žê! SET TIME ¨;êSti;ld hl,Fcnt;ld bc,1320;L7;ld (hl),c;inc hl;djnz L7;ret ²ê! BLANKOUT ¼AêBout;ld hl,Fpos;ld d,178;L8;ld (hl),0;inc hl;dec d;jr nz,L8;ret Æê! BLANK SCREEN ÐHêBscr;ld de,22528;ld bc,768;L9;cp 0;jr z,+8;cp 0;jr z,+4;xor a;call Chr Ú(êinc de;dec bc;ld a,b;or c;jr nz,L9;ret äê! MOVE MISSILE î"êMis;ld ix,Snd;ld b,10;ld hl,Mstr øbêL10;ld e,(hl);inc hl;ld d,(hl);ld a,d;or a;jr z,N1;dec hl;ld a,(de);sub 0;jr z,+5;call Chk;jr N2 5êcall Chr;inc de;ld a,e;and 31;jr nz,+3;ld d,a;jr N2  'êld a,(de);cp 0;jr z,+5;call Chk;jr N2 Eêld a,0;call Chr;ld a,e;sub (ix+0);jr nc,N2;add a,(ix+0);ld (ix+0),a  êN2;ld (hl),e;inc hl;ld (hl),d *êN1;inc hl;djnz L10;ret 4ê! SET UP >LêSup;ld hl,16384;ld bc,6144;N3;ld (hl),0;inc hl;dec bc;ld a,b;or c;jr nz,N3 HKêld hl,22528;ld bc,768;N4;ld (hl),0;inc hl;dec bc;ld a,b;or c;jr nz,N4;ret Rê! PRINT STRING \PêPstr;ld a,b;rla;rla;rla;rla;rla;and 224;or c;ld e,a;ld a,b;and 24;or 64;ld d,a ffêNl;ld a,(hl);or a;ret z,;push hl;ld l,a;ld h,0;add hl,hl;add hl,hl;add hl,hl;ld bc,(23606);add hl,bc p[êpush de;ld b,8;ld a,(hl);ld (de),a;inc hl;inc d;djnz -6;pop de;inc de;pop hl;inc hl;jr Nl zê! SMART MISSILE „ êSma;ld e,8 ŽêAe;ld hl,22528;ld bc,768 ˜dêAf;ld a,(hl);and 56;ld d,a;ld a,(hl);inc a;and 7;or d;ld (hl),a;inc hl;dec bc;ld a,b;or c;jr nz,Af ¢ê! sound here ¬:êdec e;jr nz,Ae;call Bout;call Sti;call Bscr;ld de,(Ship) ¶=êld a,0;call Chr;inc de;ld a,0;call Chr;xor a;ld (Smf),a;ret À ê! INPUT Ê'êIn;in a,(223);inc a;jr z,+2;dec a;ret ÔEêld hl,255;ld bc,57342;in a,(c);cp l;rlc h;ld bc,32766;in a,(c);cp l ÞOêrlc h;rlc h;ld bc,65022;in a,(c);cp l;rlc h;ld bc,64510;cp l;rlc h;ld a,h;ret èê! KEYBOARD ò7êKbd;call In;bit 3,a;jr z,Ag;ld a,(Smf);or a;jp nz,Mis ü5êAg;bit 4,a;jr nz,Ah;ld hl,Mstr;ld b,10;ld c,a;xor a 0êAi;inc hl;cp (hl);jr z,+5;inc hl;djnz Ai;jr Aj 7êdec hl;ld de,(Ship);inc de;ld (hl),e;inc hl;ld (hl),d  êAj;ld a,c $&êAh;bit 0,a;jr z,+5;ld de,65504;jr Ak .êbit 1,a;ret z,;ld de,32 8VêAk;ld hl,(Ship);add hl,de;ld a,h;cp 88;ret c,;ld bc,23296;sbc hl,bc;add hl,bc;ret nc B*êld a,(hl);cp 0;jr z,+4;Am;pop bc;jp Nxsh L êinc hl;ld a,(hl);cp 0;jr nz,Am VEêdec hl;ld (Ship),hl;ex de,hl;ld a,0;call Chr;inc de;ld a,0;call Chr `Aêdec de;xor a;ex de,hl;sbc hl,de;ex de,hl;call Chr;inc de;jp Chr jê! NEXT SHIP t;êNxsh;ld a,(Lsec);inc a;cp 53;jp z,Egm;ld (Lsec),a;jr Nxse ~ê! END SECTOR ˆêEsec;call Bscr ’`êAl;call Kbd;ld de,(Ship);xor a;call Chr;inc de;ld a,0;call Chr;inc de;ld a,(de);cp 0;jr z,Nxsh œCêld a,e;and 31;jr z,An;ld a,0;call Chr;dec de;ld (Ship),de;ld c,30 ¦1êld a,(Paus);dec a;jr nz,-3;dec c;jr nz,-9;jr Al °WêAn;ld hl,Sbon;inc (hl);ld b,(hl);push bc;ld hl,Spr;call Inc;ld hl,Sno;pop bc;call Inc Ðênop;nop;Egm;Nxse @ê! Jê! VARIABLES Tê! ¤êSeed;defw 23583 ® êPnum;defb 0 ¸êShip;defw 0 !YOUR POS Â,êdefs 0000;Ss0;defs 0;Ss1;defs 0;Ss2;defs 0 ÌêWscr;defs 00000 ÖêSnd;defb 1 !Sound str àêLsec;defs 0 !Sectors lost êêSbon;defb 0 !SEC BONUS ô4êSpra;defs 0000;Spr;defs 0 ! PRINTED SECTOR BONUS þ2êSnoa;defs 0;Sno;defs 0 ! PRINTED SECTOR NO. êPaus;defb 0 !PAUSE !4ê! FLAGS !5êF1;defb 0 !FUZ ON SPIKE? !>êF2;defb 0 !FUZ DIREC. !HêSmf;defb 1 !SMART MIS !˜ê! ROM2 VALUES !™êFr;defb 40 !FUZ !¬êLr;defb 45 !LINER !¶êWr;defb 6 !WALKER !ÀêSr;defb 30 !SPIKER !ÊêAr;defb 11 !ASTEROID !üê! ALIEN POSIT'S " êFpos;defw 0 "êLpos;defs aaaaaaaaaaaa "<êWpos;defs aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa "$<êSpos;defs aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa ".<êApos;defs aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa "8 êMstr;defs aaaaaaaaaaaaaaaaaaaa "`ê! COUNTS "j êFcnt;defb 0 "t êLcnt;defb 1 "~ êWcnt;defb 1 "ˆ êScnt;defb 1 "’ êAcnt;defb 1 #&êfinish #'ùÀ60000`ê n ·13 í"€í"‚,ï"ÿ êgo  êorg 40000  ê! RND HêRnd;ld hl,(Seed);ld d,h;ld e,l;ld h,e;ld l,10;or a;sbc hl,de;add hl,hl (-êadd hl,hl;add hl,de;inc hl;ld (Seed),hl;ret 2ê! RANDOM NO. DOWN <êRdwn;push hl;call Rnd;ld a,h;and 7;inc a;ld h,a;ld a,e;and 15;add a,h;ld e,0;rra;rr e;rra;rr e;rra;rr e;or 88;ld d,a;pop hl;ret Fê! RND*24 P_êRd24;push hl;call Rnd;ld a,h;and 7;ld h,a;ld a,l;and 7;add a,h;inc a;inc a;res 0,a;pop hl;ret Zê! BLANK LINER dˆêBlin;push de;push bc;ld b,22;A;dec de;ld a,e;and 31;cp 31;jr z,B;ld a,(de);cp 16;jr nz,+3;ld a,56;ld (de),a;djnz A;B;pop bc;pop de;ret n ê! FIND x‰êFind;inc hl;inc hl;inc hl;ld a,(hl);or a;jr nz,Find;call Rdwn;ld (hl),d;inc hl;ld (hl),e;inc hl;ld a,(23672);and 1;or 128;ld (hl),a;ret ‚ê! NEXT POS ŒÁêNxpos;push bc;push de;ld bc,32;bit 0,(hl);jr nz,+3;ld bc,65504;ex de,hl;add hl,bc;ex de,hl;bit 2,d;jr nz,C;ld a,d;cp 91;jr nz,C;pop bc;pop bc;ret;C;pop de;ld a,1;xor (hl);ld (hl),a;pop bc;ret –ê! FOUR CHR  DêFchr;push bc;push hl;push de;ld h,0;ld l,a;ld a,(Pnum)add a,l;jr D ª ê! CHR ´^êChr;push bc;push hl;push de;ld h,0;ld l,a;D;ld a,(hl);ld (de),a;inc hl;ld a,d;and 3;or 8;rla ¾Zêrla;rla;ld d,a;ld b,8;E;ld a,(hl);ld (de),a;inc hl;inc d;djnz E;pop de;pop hl;pop bc;ret Èê! FUZBALL Ò‡êFuz;ld hl,Fcnt;ld a,(hl);or a;jr nz,F;dec (hl);ret nz;call Rdwn;jr G;F;ld de,(Fpos);ld hl,F1;xor a;bit 0,(hl);jr z,+2;ld a,0;call Chr ÜêG;push de;ld hl,(Ship);ld bc,7936;ld a,e;and b;ld e,a;sbc hl,de;pop de;jr nc,+2;ld c,1;ld a,h;or l;dec de;jr z,H;ld hl,F2;ld (hl),c;call Nxpos æêH;ld a,e;and 31;jr nz,+7;ld a,(Fr);ld (Fcnt),a;ret;ld a,(de);cp 0;jr nz,+5;ld a,1;ld (F1),a;ld a,0;call Fchr;ld (Fpos),de;ret ð ê! LINER ú–êLin;ld hl,Lcnt;dec (hl);jr nz,+10;ld a,(Lr);ld (hl),a;ld hl,Lpos;call Find;ld b,4;ld hl,Lpos;L1;ld d,(hl);ld a,d;or a;jr z,I;inc hl;ld e,(hl);inc hl eêbit 7,(hl);jr nz,J;bit 1,(hl);jr z,K;ld a,0;call Chr;dec de;ld a,(de);cp 56;jr nz,L;res 1,(hl);jr L ŽêK;xor a;call Chr;ld a,e;and 31;jr nz,+3;ld d,a;jr M;call Blin;J;dec de;call Nxpos;ld a,(de);cp 0;jr nz,+2;set 1,(hl);push bc;ld b,22;push de fêL2;dec de;ld a,e;and 31;cp 31;jr z,N;ld a,(de);cp 0;jr z,+4;cp 56;jr nz,+3;ld a,16;ld (de),a;djnz L2 "vêN;pop de;pop bc;L;ld a,0;call Fchr;M;dec hl;dec hl;ld (hl),d;I;inc hl;ld (hl),e;inc hl;res 7,(hl);inc hl;djnz L1;ret ,ê! WALKER 6`êWalk;ld hl,Wcnt;dec (hl);jr nz,+10;ld a,(Wr);ld (hl),a;ld hl,Wpos;call Find;ld hl,Wpos;ld b,16 @žêL3;ld d,(hl);ld a,d;or a;jr z,O;inc hl;ld e,(hl);inc hl;bit 7,(hl);jr nz,P;bit 1,(hl);jr z,Q;ld a,0;call Chr;dec de;ld a,(de);cp 56;jr nz,+2;res 1,(hl);jr R J5êQ;xor a;call Chr;ld a,e;and 31;jr nz,+3;ld d,a;jr S TDêP;bit 5,(hl);dec de;call z,Nxpos;ld a,(de);cp 0;jr nz,R;set 1,(hl) ^~êR;ld a,0;call Fchr;S;dec hl;dec hl;O;ld (hl),d;inc hl;ld (hl),e;inc hl;ld a,32;xor (hl);res 7,a;ld (hl),a;inc hl;djnz L3;ret hê! SPIKER rhêSpi;ld hl,Scnt;dec (hl);jr nz,+16;ld a,(Sr);ld (hl),a;ld hl,Spos;call Find;call Rd24;set 7,a;ld (hl),a |êld b,16;ld hl,Spos †„êL4;ld d,(hl);inc hl;ld a,d;or a;jr nz,T;ld e,(hl);inc hl;bit 7,(hl);jr nz,+5;ld a,0;call Chr;ld a,(hl);or a;jr z,U;dec (hl);dec de ?êV;ld a,0;call Fchr;W;dec hl;dec hl;ld (hl),d;inc hl;ld (hl),e š(êT;inc hl;res 7,(hl);inc hl;djnz L4;ret ¤,êU;inc de;ld a,e;and 31;jr nz,V;ld d,a;jr W ®ê! ASTEROID ¸_êAst;ld hl,Acnt;dec (hl);jr nz,+10;ld a,(Ar);ld (hl),a;ld hl,Apos;call Find;ld b,16;ld hl,Apos •êL5;ld d,(hl);ld a,d;or a;jr z,X;inc hl;ld e,(hl);inc hl;bit 7,(hl);jr nz,Y;xor a;bit 1,(hl);jr z,+4;res 1,(hl);ld a,0;call Chr;ld a,e;and 31;jr z,Z ÌDêY;dec de;ld a,(de);cp 0;jr nz,+2;set 1,(hl);ld a,0;call Fchr;jr +1 Ö"êZ;ld d,a;dec hl;dec hl;ld (hl),d à9êX;inc hl;ld (hl),e;inc hl;res 7,(hl);inc hl;djnz L5;ret ôê! SCREEN þZêScr;push de;L6;ld d,(hl);inc hl;ld e,(hl);inc hl;inc hl;ex (sp),hl;sbc hl,de;ld a,h;or l Qêjr z,+4;add hl,de;ex (sp),hl;jr L6;pop hl;dec hl;dec hl;dec hl;ld (hl),a;jp Chr  ê! INC ]êInc;push hl;inc (hl);ld a,(hl);cp 58;jr z,+4;pop hl;djnz Inc;ret;ld (hl),48;dec hl;jr Inc+1 & ê! CHECK 0WêChk;cp 0;jr nz,Aa;xor a;call Chr;inc de;xor a;call Chr;push hl;ld hl,Ss2;ld b,2;jr Ab :2êAa;push hl;cp 0;jr nz,+7;ld hl,Wpos;ld b,5;jr Ac D'êcp 0;jr nz,+7;ld hl,Apos;ld b,3;jr Ac N2êcp 0;jr nz,+10;call Blin;ld hl,Lpos;ld b,1;jr Ad X'êcp 0;jr nz,+7;ld hl,Spos;ld b,2;jr Ad b$êld a,(Fr);ld (Fcnt),a;ld b,3;jr +3 lêAd;call Scr;ld hl,Ss0;jr Ab vêAc;call Scr;ld hl,Ss1 €IêAb;push bc;call Inc;ld bc,5;add hl,bc;pop bc;call Inc;pop hl;ld d,b;ret Šê! KEYPRESS ”AêKp;in a,(223);xor 255;jr nz,Jy;ld a,(23560);ret;Jy;ld a,255;ret žê! SET TIME ¨;êSti;ld hl,Fcnt;ld bc,1320;L7;ld (hl),c;inc hl;djnz L7;ret ²ê! BLANKOUT ¼AêBout;ld hl,Fpos;ld d,178;L8;ld (hl),0;inc hl;dec d;jr nz,L8;ret Æê! BLANK SCREEN ÐHêBscr;ld de,22528;ld bc,768;L9;cp 0;jr z,+8;cp 0;jr z,+4;xor a;call Chr Ú(êinc de;dec bc;ld a,b;or c;jr nz,L9;ret äê! MOVE MISSILE î"êMis;ld ix,Snd;ld b,10;ld hl,Mstr øbêL10;ld e,(hl);inc hl;ld d,(hl);ld a,d;or a;jr z,N1;dec hl;ld a,(de);sub 0;jr z,+5;call Chk;jr N2 5êcall Chr;inc de;ld a,e;and 31;jr nz,+3;ld d,a;jr N2  'êld a,(de);cp 0;jr z,+5;call Chk;jr N2 Eêld a,0;call Chr;ld a,e;sub (ix+0);jr nc,N2;add a,(ix+0);ld (ix+0),a  êN2;ld (hl),e;inc hl;ld (hl),d *êN1;inc hl;djnz L10;ret 4ê! SET UP >LêSup;ld hl,16384;ld bc,6144;N3;ld (hl),0;inc hl;dec bc;ld a,b;or c;jr nz,N3 HKêld hl,22528;ld bc,768;N4;ld (hl),0;inc hl;dec bc;ld a,b;or c;jr nz,N4;ret Rê! PRINT STRING \PêPstr;ld a,b;rla;rla;rla;rla;rla;and 224;or c;ld e,a;ld a,b;and 24;or 64;ld d,a ffêNl;ld a,(hl);or a;ret z,;push hl;ld l,a;ld h,0;add hl,hl;add hl,hl;add hl,hl;ld bc,(23606);add hl,bc p[êpush de;ld b,8;ld a,(hl);ld (de),a;inc hl;inc d;djnz -6;pop de;inc de;pop hl;inc hl;jr Nl zê! SMART MISSILE „ êSma;ld e,8 ŽêAe;ld hl,22528;ld bc,768 ˜dêAf;ld a,(hl);and 56;ld d,a;ld a,(hl);inc a;and 7;or d;ld (hl),a;inc hl;dec bc;ld a,b;or c;jr nz,Af ¢ê! sound here ¬:êdec e;jr nz,Ae;call Bout;call Sti;call Bscr;ld de,(Ship) ¶=êld a,0;call Chr;inc de;ld a,0;call Chr;xor a;ld (Smf),a;ret À ê! INPUT Ê'êIn;in a,(223);inc a;jr z,+2;dec a;ret ÔEêld hl,255;ld bc,57342;in a,(c);cp l;rlc h;ld bc,32766;in a,(c);cp l ÞOêrlc h;rlc h;ld bc,65022;in a,(c);cp l;rlc h;ld bc,64510;cp l;rlc h;ld a,h;ret èê! KEYBOARD ò7êKbd;call In;bit 3,a;jr z,Ag;ld a,(Smf);or a;jp nz,Mis ü5êAg;bit 4,a;jr nz,Ah;ld hl,Mstr;ld b,10;ld c,a;xor a 0êAi;inc hl;cp (hl);jr z,+5;inc hl;djnz Ai;jr Aj 7êdec hl;ld de,(Ship);inc de;ld (hl),e;inc hl;ld (hl),d  êAj;ld a,c $&êAh;bit 0,a;jr z,+5;ld de,65504;jr Ak .êbit 1,a;ret z,;ld de,32 8VêAk;ld hl,(Ship);add hl,de;ld a,h;cp 88;ret c,;ld bc,23296;sbc hl,bc;add hl,bc;ret nc B*êld a,(hl);cp 0;jr z,+4;Am;pop bc;jp Nxsh L êinc hl;ld a,(hl);cp 0;jr nz,Am VEêdec hl;ld (Ship),hl;ex de,hl;ld a,0;call Chr;inc de;ld a,0;call Chr `Aêdec de;xor a;ex de,hl;sbc hl,de;ex de,hl;call Chr;inc de;jp Chr jê! NEXT SHIP t;êNxsh;ld a,(Lsec);inc a;cp 53;jp z,Egm;ld (Lsec),a;jr Nxse ~ê! END SECTOR ˆêEsec;call Bscr ’`êAl;call Kbd;ld de,(Ship);xor a;call Chr;inc de;ld a,0;call Chr;inc de;ld a,(de);cp 0;jr z,Nxsh œCêld a,e;and 31;jr z,An;ld a,0;call Chr;dec de;ld (Ship),de;ld c,30 ¦1êld a,(Paus);dec a;jr nz,-3;dec c;jr nz,-9;jr Al °WêAn;ld hl,Sbon;inc (hl);ld b,(hl);push bc;ld hl,Spr;call Inc;ld hl,Sno;pop bc;call Inc ºê! NEXT SECTOR Ä%êNxse;call Sup;ld bc,1031;ld hl,Yscr Î,êAo;push bc;push hl;call Pstr;pop hl;pop bc Ø6êld de,19;add hl,de;inc b;inc b;ld a,b;cp 14;jr nz,Ao Ðênop;nop;Egm;Nxse @ê! Jê! VARIABLES Tê! ¤êSeed;defw 23583 ® êPnum;defb 0 ¸êShip;defw 0 !YOUR POS ÌêWscr;defs 00000 ÖêSnd;defb 1 !Sound str àêLsec;defs 0 !Sectors lost êêSbon;defb 0 !SEC BONUS êPaus;defb 0 !PAUSE ÐCêYscr;defs YOUR SCORE 0000;Ss0;defs 0;Ss1;defs 0;Ss2;defs 0;defb 0 ÚHêSpra;defs SECTOR BONUS 0000;Spr;defs 0;defb 0 ! PRINTED SECTOR BONUS ä$êSsr;defs SECTOR SCORE 00000;defb 0 îPêdefs SECTORS CAPTURED ;snoa;defs 0;Sno;defs 0;defb 0 ! PRINTED SECTOR NO. ø4êdefs ENTERING SECTOR ;Es1;defs 0;Es2;defs 0;defb 0 !4ê! FLAGS !5êF1;defb 0 !FUZ ON SPIKE? !>êF2;defb 0 !FUZ DIREC. !HêSmf;defb 1 !SMART MIS !˜ê! ROM2 VALUES !™êFr;defb 40 !FUZ !¬êLr;defb 45 !LINER !¶êWr;defb 6 !WALKER !ÀêSr;defb 30 !SPIKER !ÊêAr;defb 11 !ASTEROID !üê! ALIEN POSIT'S " êFpos;defw 0 "êLpos;defs aaaaaaaaaaaa "<êWpos;defs aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa "$<êSpos;defs aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa ".<êApos;defs aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa "8 êMstr;defs aaaaaaaaaaaaaaaaaaaa "`ê! COUNTS "j êFcnt;defb 0 "t êLcnt;defb 1 "~ êWcnt;defb 1 "ˆ êScnt;defb 1 "’ êAcnt;defb 1 #&êfinish #'ùÀ60000`ê