!!** Written by Ann Ott. . . Attorneys' Title Services
!!**                         Orlando, Florida
! Program Space Case
       MAP1 A,F,6,0
       MAP1 B,F,6,0
       MAP1 C,F,6,0
       MAP1 E,F,6,0
       MAP1 K,F,6,0
       MAP1 L,F,6,0
       MAP1 P,F,6,0
       MAP1 S,F,6,0
       MAP1 ROW,F,6,0
       MAP1 COL,F,6,0
       MAP1 ROW1,F,6,0
       MAP1 COL1,F,6,0
       MAP1 HIT,F,6,0
       MAP1 B'SAV1,F,6,0
       MAP1 B'SAV2,F,6,0
       MAP1 ERASE,F,6,0
       MAP1 TIMES,F,6,0
       MAP1 STRAIF,F,6,0

PRINT TAB(1,1);TAB(-1,10);
PRINT TAB(-1,29);

    THE'YARD:
PRINT TAB(19,1);"___..__._ ___v______.____  __v.___._______ v_____..__.__ ______. ____v____"
PRINT TAB(20,1);"       ._v  .___      v._     __.__      v.____   ___v___       V  .v______"
PRINT TAB(21,1);"   _v_    .       _v  .__  v.__.  __v   .           __v.      _|          "
PRINT TAB(22,1);"          _. ._              _____.       __v                _. ._        "
PRINT TAB(23,1);"   ___v      v  ___.      _v     __.v        __v.  ______.v               "

PRINT TAB(17,61);"          "
PRINT TAB(18,61);"          "
PRINT TAB(19,61);"           "
PRINT TAB(20,61);"           "
PRINT TAB(21,61);"           "
PRINT TAB(22,61);"           "

    THE'HOUSE:
 PRINT TAB(17,61);"   ___ _  "
 PRINT TAB(18,61);" / \__|_| "
 PRINT TAB(19,61);" |\/_____\ "
 PRINT TAB(20,61);" | |[] []| "
 PRINT TAB(21,61);" \ |[] []| "
 PRINT TAB(22,61);"  \|_____| "


   THE'SIGHTING:
       ROW=1 : COL=4 : TIMES=5 : GOSUB MOVE'DOWN
       ROW=5 : COL=5 : TIMES=3 : GOSUB STAY'PUT
       ROW=5 : COL=5 : TIMES=5 : GOSUB MOVE'ACROSS

   THE'ATTACK:
       FOR STRAIF=1 TO 5
               TIMES = 3 : GOSUB MOVE'ACROSS
               FOR P=1 TO 2
                       GOSUB SHIP
                       GOSUB PHASER1
                       IF (STRAIF=2 AND P=2) THEN GOSUB BOOM
                       IF (STRAIF=3 AND P=2) THEN GOSUB BOOM
                       IF (STRAIF=5 AND P=2) THEN GOSUB BOOM
                       GOSUB NO'SHIP
               NEXT P
       NEXT STRAIF
       TIMES = 5 : ROW=ROW-1 :  GOSUB STAY'PUT
       TIMES = 2 : GOSUB MOVE'DOWN

    THE'COUNTER'ATTACK:
       FOR K = 1 TO 3
           GOSUB LASER
       NEXT K
       TIMES = 3 : GOSUB MOVE'DOWN
       FOR K = 1 TO 3
           GOSUB LASER
       NEXT K
       P'ROW=1 : P'COL=65
       GOSUB PAC'DOWN'OPEN
       FOR K=1 TO 3
           GOSUB LASER
       NEXT K
       GOSUB BIG'BOOM

    THE'HERO:
       P'ROW=1 : P'COL=65 : TIMES = 10 : GOSUB MOVE'PAC'DOWN
       TIMES = 10 : GOSUB MOVE'PAC'BACK
       GOSUB PAC'BACK'OPEN
       FOR V = 1 TO 3 : GOSUB PAC'LASER : NEXT V
       GOSUB PAC'BACK'CLOSED
       GOSUB CLEAR'PAC'DOWN
       GOSUB PAC'SMILE

   GOTO END

!//\\//\\//\\//\\//\\//\\//\\//\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\
               !  First Level Subroutines  !
               !___________________________!


    MOVE'DOWN:
       FOR A = 1 TO TIMES
               GOSUB SHIP : GOSUB NO'SHIP
             ROW=ROW+1
       NEXT A
       return

    STAY'PUT:
       FOR C = 1 TO TIMES
              GOSUB SHIP : GOSUB NO'SHIP
       NEXT C
       return

    MOVE'ACROSS:
       FOR B = 1 TO TIMES
               GOSUB SHIP : GOSUB NO'SHIP
             COL=COL+1
       NEXT B
       return

    MOVE'PAC'DOWN:
       FOR A = 1 TO TIMES
               GOSUB PAC'DOWN'OPEN : GOSUB CLEAR'PAC'DOWN : GOSUB PAC'DOWN'CLOSED : GOSUB CLEAR'PAC'DOWN
            P'ROW=P'ROW+1
       NEXT A
       return

    MOVE'PAC'BACK:
       FOR B = 1 TO TIMES
               GOSUB PAC'BACK'OPEN : GOSUB CLEAR'PAC'DOWN : GOSUB PAC'BACK'CLOSED : GOSUB CLEAR'PAC'DOWN
           P'COL=P'COL-1
       NEXT B
       return


!//\\//\\//\\//\\//\\//\\//\\//\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\
               ! Second Level Subroutines !
               !__________________________!


SHIP:
       PRINT TAB(ROW,  COL);"/     \"
       PRINT TAB(ROW+2,COL);"\     /"
       PRINT TAB(ROW,COL+1);TAB(-1,23);TAB(-1,52);TAB(-1,24);
       PRINT TAB(ROW,COL+2);TAB(-1,23);TAB(-1,52);TAB(-1,24);
       PRINT TAB(ROW,COL+3);TAB(-1,23);TAB(-1,52);TAB(-1,24);
       PRINT TAB(ROW,COL+4);TAB(-1,23);TAB(-1,52);TAB(-1,24);
       PRINT TAB(ROW,COL+5);TAB(-1,23);TAB(-1,52);TAB(-1,24);
       PRINT TAB(ROW+2,COL+1);TAB(-1,23);TAB(-1,52);TAB(-1,24);
       PRINT TAB(ROW+2,COL+2);TAB(-1,23);TAB(-1,52);TAB(-1,24);
       PRINT TAB(ROW+2,COL+3);TAB(-1,23);TAB(-1,52);TAB(-1,24);
       PRINT TAB(ROW+2,COL+4);TAB(-1,23);TAB(-1,52);TAB(-1,24);
       PRINT TAB(ROW+2,COL+5);TAB(-1,23);TAB(-1,52);TAB(-1,24);
   FOR S = 1 TO 3
       GOSUB LIGHTS
   NEXT S
       return
NO'SHIP:
       PRINT TAB(ROW,  COL);"        "
       PRINT TAB(ROW+1,COL-3);"             "
       PRINT TAB(ROW+2,COL);"        "
       return

LIGHTS:
   FOR L = 1 TO 2
       PRINT TAB(ROW+1,COL-3);"             "
       PRINT TAB(ROW+1,COL-3);"0 0 0 0      "
       PRINT TAB(ROW+1,COL-3);"             "
       PRINT TAB(ROW+1,COL-3);" 0 0 0 0 0 0 "
       PRINT TAB(ROW+1,COL-3);"             "
       PRINT TAB(ROW+1,COL-3);"      0 0 0 0"
   NEXT L
   return


PAC'DOWN'OPEN:
 FOR D = 1 TO 5
     PRINT TAB(P'ROW,  P'COL);" ____"
     PRINT TAB(P'ROW+1,P'COL);"|. _ |"
     PRINT TAB(P'ROW+2,P'COL);"|_/ \|"
 NEXT D
     return

PAC'DOWN'CLOSED:
 FOR G = 1 TO 5
     PRINT TAB(P'ROW,  P'COL);" ____"
     PRINT TAB(P'ROW+1,P'COL);"|. ^ |"
     PRINT TAB(P'ROW+2,P'COL);"|__|_|"
 NEXT G
     return

 CLEAR'PAC'DOWN:
     PRINT TAB(P'ROW,  P'COL);"      "
     PRINT TAB(P'ROW+1,P'COL);"      "
     PRINT TAB(P'ROW+2,P'COL);"      "
     return

PAC'BACK'OPEN:
 FOR D = 1 TO 5
     PRINT TAB(P'ROW,  P'COL);" ____ "
     PRINT TAB(P'ROW+1,P'COL);" \') |"
     PRINT TAB(P'ROW+2,P'COL);" /___|"
 NEXT D
     return

PAC'BACK'CLOSED:
 FOR G = 1 TO 5
     PRINT TAB(P'ROW,  P'COL);" ____ "
     PRINT TAB(P'ROW+1,P'COL);"|_'  |"
     PRINT TAB(P'ROW+2,P'COL);"|____|"
 NEXT G
     return

PAC'SMILE:
FOR H = 1 TO 2
 FOR G = 1 TO 3
     PRINT TAB(P'ROW,  P'COL);" ____ "
     PRINT TAB(P'ROW+1,P'COL);"| '' |"
     PRINT TAB(P'ROW+2,P'COL);"|____|"
 NEXT G
 FOR G = 1 TO 3
     PRINT TAB(P'ROW,  P'COL);" ____ "
     PRINT TAB(P'ROW+1,P'COL);"| -- |"
     PRINT TAB(P'ROW+2,P'COL);"|____|"
 NEXT G
NEXT H
 FOR G = 1 TO 10
     PRINT TAB(P'ROW,  P'COL);" ____ "
     PRINT TAB(P'ROW+1,P'COL);"|_''_|"
     PRINT TAB(P'ROW+2,P'COL);"|_\/_|"
 NEXT G
POP:  PRINT TAB(P'ROW,  P'COL-6);"     \   !  /"
     PRINT TAB(P'ROW+1,P'COL-6);"   \           /"
     PRINT TAB(P'ROW+2,P'COL-6);"--    P O P !    --"
     PRINT TAB(P'ROW+3,P'COL-6);"   /           \"
     PRINT TAB(P'ROW+4,P'COL-6);"    /  /  \  \ "
 return


!//\\//\\//\\//\\//\\//\\//\\//\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\

PHASER1:
  ROW1=ROW : COL1=COL
  SHOOT:
       IF (ROW1>18) THEN GOTO STOP'SHOOT
       IF (COL1>75) THEN GOTO STOP'SHOOT
       PRINT TAB(ROW1+4,COL1+4);"*"
       COL1=COL1+1 : ROW1=ROW1+1
   GOTO SHOOT

  STOP'SHOOT:
       B'SAV1=ROW1 : B'SAV2=COL1
       ROW1=ROW : COL1=COL
  ERASE:

       IF (ROW1>18) THEN return
       IF (COL1>75) THEN return
       PRINT TAB(ROW1+4,COL1+4);" "
       COL1=COL1+1 : ROW1=ROW1+1
   GOTO ERASE

  BOOM:
           PRINT TAB(B'SAV1+2,B'SAV2-1);"       "
           PRINT TAB(B'SAV1+3,B'SAV2-1);"   <*>  "
           PRINT TAB(B'SAV1+4,B'SAV2-1);"       "
           PRINT TAB(B'SAV1+2,B'SAV2-1);"  \ * /"
           PRINT TAB(B'SAV1+3,B'SAV2-1);" -* ` *-"
           PRINT TAB(B'SAV1+4,B'SAV2-1);"  / * \"
           GOSUB BOOM'GONE
           IF STRAIF=2 : GOSUB PRINT'DESTRUCTION2
           IF STRAIF=3 : GOSUB PRINT'DESTRUCTION3
           IF STRAIF=5 : GOSUB PRINT'DESTRUCTION5
   return

  BOOM'GONE:
           PRINT TAB(B'SAV1+2,B'SAV2-1);"       "
           PRINT TAB(B'SAV1+3,B'SAV2-1);"        "
           PRINT TAB(B'SAV1+4,B'SAV2-1);"       "
   return

   PRINT'DESTRUCTION2:
           PRINT TAB(B'SAV1+2,B'SAV2-1);": .:. ."
           PRINT TAB(B'SAV1+3,B'SAV2-1);" :. ..:"
           PRINT TAB(B'SAV1+4,B'SAV2-1);": ..:. "
   return
   PRINT'DESTRUCTION3:
           PRINT TAB(B'SAV1+1,B'SAV2+1);"  . ..:"
           PRINT TAB(B'SAV1+2,B'SAV2+1);"  :. .."
   return
   PRINT'DESTRUCTION5:
           PRINT TAB(B'SAV1+2,B'SAV2-1);"  .:   "
           PRINT TAB(B'SAV1+3,B'SAV2-1);": ..:. "
           PRINT TAB(B'SAV1+4,B'SAV2-1);"::.. .."
   return

 LASER:
   GOSUB SHIP
   ROW2=4 : COL2=67
   FOR HIT = 1 TO 8
       PRINT TAB(ROW2,COL2);"* ` *"
       COL2=COL2-6 : ROW2=ROW2+1
   NEXT HIT

  STOP'LASER:
       ROW2=4 : COL2=67
  ERASE'LASER:
       FOR ERASE = 1 TO 8
       PRINT TAB(ROW2,COL2);"     "
       COL2=COL2-6 : ROW2=ROW2+1
      NEXT ERASE
      return

PAC'LASER:
      ROW1=P'ROW : COL1=P'COL
      FOR M = 1 TO 50
        PRINT TAB(ROW1+1,COL1-1);"*"
       COL1=COL1-1
       NEXT M

 ERASE'PAC'LASER:
      ROW1=P'ROW : COL1=P'COL
      FOR M = 1 TO 50
        PRINT TAB(ROW1+1,COL1-1);" "
       COL1=COL1-1
       NEXT M
       RETURN

  BIG'BOOM:
           PRINT TAB(ROW-1,COL-10);"                         "
           PRINT TAB(ROW  ,COL-10);"            \ /           "
           PRINT TAB(ROW+1,COL-10);"         >{ *** }<         "
           PRINT TAB(ROW+2,COL-10);"         >{ *** }<         "
           PRINT TAB(ROW+3,COL-10);"            / \            "
           PRINT TAB(ROW+4,COL-10);"                          "
           PRINT TAB(ROW+5,COL-10);"                         "
           PRINT TAB(ROW+6,COL-10);"                       "

           PRINT TAB(ROW-3,COL-10);"    \                 /"
           PRINT TAB(ROW-2,COL-10);"      \             /   "
           PRINT TAB(ROW-1,COL-10);"        \    |    /      "
           PRINT TAB(ROW,  COL-10);"          \ \ / /         "
           PRINT TAB(ROW+1,COL-10);"      -- >{ *** }< ---     "
           PRINT TAB(ROW+2,COL-10);"      -- >{ *** }< ---     "
           PRINT TAB(ROW+3,COL-10);"          / / \ \          "
           PRINT TAB(ROW+4,COL-10);"        /    |    \       "
           PRINT TAB(ROW+5,COL-10);"      /             \    "
           PRINT TAB(ROW+6,COL-10);"    /                 \"

           PRINT TAB(ROW-3,COL-10);"     {       .       } "
           PRINT TAB(ROW-2,COL-10);"   {  \  **  | **   /  }"
           PRINT TAB(ROW-1,COL-10);"  {  +  \  * | *  /  +  }"
           PRINT TAB(ROW,  COL-10);" {  +  +  \ \ / /  + +   }"
           PRINT TAB(ROW+1,COL-10);"{  ***-- >{ *** }< -***   }"
           PRINT TAB(ROW+2,COL-10);"{  ***-- >{ *** }< -***   }"
           PRINT TAB(ROW+3,COL-10);"{   + +   / / \ \  +  +   }"
           PRINT TAB(ROW+4,COL-10);" {   +  /  * | *  \   +  }"
           PRINT TAB(ROW+5,COL-10);"  {   /  **  |  **  \   }"
           PRINT TAB(ROW+6,COL-10);"     {       .        }"

           PRINT TAB(ROW-3,COL-10);"                      "
           PRINT TAB(ROW-2,COL-10);"                        "
           PRINT TAB(ROW-1,COL-10);"                         "
           PRINT TAB(ROW,  COL-10);"             `            "
           PRINT TAB(ROW+1,COL-10);"            ```            "
           PRINT TAB(ROW+2,COL-10);"           `````           "
           PRINT TAB(ROW+3,COL-10);"            ```            "
           PRINT TAB(ROW+4,COL-10);"             `            "
           PRINT TAB(ROW+5,COL-10);"                         "
           PRINT TAB(ROW+6,COL-10);"                       "

           PRINT TAB(ROW-3,COL-10);"             `        "
           PRINT TAB(ROW-2,COL-10);"             `          "
           PRINT TAB(ROW-1,COL-10);"            ```          "
           PRINT TAB(ROW,  COL-10);"          ```````         "
           PRINT TAB(ROW+1,COL-10);"      ```````````````      "
           PRINT TAB(ROW+2,COL-10);"          ```````          "
           PRINT TAB(ROW+3,COL-10);"           `````           "
           PRINT TAB(ROW+4,COL-10);"            ```           "
           PRINT TAB(ROW+5,COL-10);"             `           "
           PRINT TAB(ROW+6,COL-10);"             `         "

           PRINT TAB(ROW-3,COL-10);"       ````````````   "
           PRINT TAB(ROW-2,COL-10);"     ````````````````   "
           PRINT TAB(ROW-1,COL-10);"  `````````````````````  "
           PRINT TAB(ROW,  COL-10);" ```````````````````````  "
           PRINT TAB(ROW+1,COL-10);"`````````````````````````  "
           PRINT TAB(ROW+2,COL-10);"`````````````````````````  "
           PRINT TAB(ROW+3,COL-10);"`````````````````````````  "
           PRINT TAB(ROW+4,COL-10);" ```````````````````````  "
           PRINT TAB(ROW+5,COL-10);"  ````````````````````   "
           PRINT TAB(ROW+6,COL-10);"     ```````````````   "

           PRINT TAB(ROW-3,COL-10);"                      "
           PRINT TAB(ROW-2,COL-10);"                        "
           PRINT TAB(ROW-1,COL-10);"                         "
           PRINT TAB(ROW,  COL-10);"                          "
           PRINT TAB(ROW+1,COL-10);"                           "
           PRINT TAB(ROW+2,COL-10);"                           "
           PRINT TAB(ROW+3,COL-10);"                           "
           PRINT TAB(ROW+4,COL-10);"                          "
           PRINT TAB(ROW+5,COL-10);"                         "
           PRINT TAB(ROW+6,COL-10);"                       "

       FOR E = 1 TO 2
           PRINT TAB(ROW-3,COL-10);"    .               .."
           PRINT TAB(ROW-2,COL-10);"        .. .   ..       "
           PRINT TAB(ROW-1,COL-10);" ..    .              .. "
           PRINT TAB(ROW,  COL-10);"           ..      .      "
           PRINT TAB(ROW+1,COL-10);"    .   ..    .       ..   "
           PRINT TAB(ROW+2,COL-10);"                 ..        "
           PRINT TAB(ROW+3,COL-10);"   .      ..   .   .    .  "
           PRINT TAB(ROW+4,COL-10);"                   ..     "
           PRINT TAB(ROW+5,COL-10);"      ..       .         "
           PRINT TAB(ROW+6,COL-10);"  ..      ..         .."
       NEXT E

           PRINT TAB(ROW-3,COL-10);"                      "
           PRINT TAB(ROW-2,COL-10);"                        "
           PRINT TAB(ROW-1,COL-10);"                         "
           PRINT TAB(ROW,  COL-10);"                          "
           PRINT TAB(ROW+1,COL-10);"                           "
           PRINT TAB(ROW+2,COL-10);"                           "
           PRINT TAB(ROW+3,COL-10);"                           "
           PRINT TAB(ROW+4,COL-10);"                          "
           PRINT TAB(ROW+5,COL-10);"                         "
           PRINT TAB(ROW+6,COL-10);"                       "
           return

   END:
    PRINT
    PRINT
    INPUT "Press 'Return' for Game Menu  "; AS$
    ? TAB(-1,0)
    CHAIN "GMENU"