home *** CD-ROM | disk | FTP | other *** search
/ The Amiga Game Guide / AmigaGameGuide_CD.iso / Amiga / Tools / GRAC / source / GRACconvert2.amos / GRACconvert2.amosSourceCode < prev   
AMOS Source Code  |  1977-12-31  |  32KB  |  824 lines

  1. Set Buffer 140
  2. NAME$=Command Line$ : Amos To Back 
  3. 'NAME$="ram:lethal_formula"
  4. Request Wb 
  5. Dim TXT$(1999) : Dim COMMENT$(100,4) : Dim SEL$(999) : Dim CHAR$(99) : Dim CHAR(99,1) : Dim DEV$(99)
  6. Dim B0B$(99) : Dim B0B(99,5) : Dim ROOM$(99) : Dim ROOM(99,3) : Dim CL0SE$(99) : Dim CL0SE(99,3)
  7. Dim CSTUFF(15) : Dim VERB(11,9) : Dim VERB$(1,9) : Dim INV$(99)
  8. Dim INV(10,99) : Dim CHARACT(10,99) : Dim PIC$(99) : Dim PIC(99) : Dim AN1M$(99) : Dim AN1M(99)
  9. Dim SAM$(99) : Dim SAM(99) : Dim CONT(3) : Dim WALK(11,31) : Dim BACK(22,31) : Dim CZONE(8,15)
  10. Dim F0RE(20,15) : Dim PO1NT(3,15) : Dim BACK$(31) : Dim F0RE$(15)
  11. Dim SCRIPT(225) : Dim Z0NES(31) : Dim COMMAND$(99)
  12. Global MENU,TXT$(),MAIN$,P4RAM$,TXTSEL$,CHANGE,TXTED$,CHAR$,CHAR$(),D1R$,HEIGHT$,CSTUFF(),INV(),INV$(),INV$,INVL,STOR,COMMENT$()
  13. Global HX,HY,XPOS,YPOS,DEV$(),CHAR(),INV,CONT(),NUMED$,SCRIPT$,COMMAND$(),NOL,VERB(),ST4RTROOM,ST4RTCHAR,ST4RTPOINT,CZONE()
  14. Global B0B$(),B0B(),ROOM$(),ROOM(),PIC$(),PIC(),AN1M$(),AN1M(),SONG,SAM$(),INV,CONT,MESSAGE$,OBJ$,XOFF,YOFF,ROOMC,SOUND$,S4MPLE$,SAM()
  15. Global PIC$,AN1M$,ROOM$,WALK$,F0RE$,BACK$,PO1NT$,B0BSEL$,CONTROL$,PO1NT$,WALK(),BACK(),VERB$(),CHARACT(),DEF$,F0NT1$,F0NT2$,SIZE1,SIZE2
  16. Global F0RE(),PO1NT(),F0RE$(),BACK$(),SCRIPT(),IMAGE$,IMAGE,H1DE,Z0NES(),VERB$,TYPE$,VER$,SCRIPT1$,EX$,SCR0LL,CL0SE(),CL0SE$(),CL0SE$
  17. Global NAME$,D$,NAME2$
  18. L0ADA
  19. C0PYA
  20. S4VEA
  21. Procedure L0ADA2
  22.      Dim LINE(3)
  23.      Q$=NAME$
  24.      If Q$<>""
  25.           Trap Open In 1,Q$
  26.           If Errtrap=0
  27.                L=Lof(1) : Close 1
  28.                Reserve As Work 17,L
  29.                Bload Q$,17
  30.                L1=Length(17)
  31.                L2=Leek(Start(17))
  32.                Erase 17 : Reserve As Work 17,L2
  33.                Bload Q$,Start(17)
  34.                L3= Extension_5_00E4(Start(17)+4,L1-4)
  35.                AD=Start(17)
  36.                AD=AD+4
  37.                CONT(3)=Leek(AD) : AD=AD+4
  38.                INVL=Leek(AD) : AD=AD+4
  39.                For Q=0 To 99
  40.                     ROOM(Q,3)=Leek(AD) : AD=AD+4
  41.                Next 
  42.                For Q=0 To 99
  43.                     CL0SE(Q,3)=Leek(AD) : AD=AD+4
  44.                Next 
  45.                INV=Peek(AD) : AD=AD+1 : If INV>128 : INV=INV-256 : End If 
  46.                CONT(0)=Peek(AD) : AD=AD+1 : If CONT(0)>128 : CONT(0)=CONT(0)-256 : End If 
  47.                CONT(1)=Peek(AD) : AD=AD+1 : If CONT(1)>128 : CONT(1)=CONT(1)-256 : End If 
  48.                CONT(2)=Peek(AD) : AD=AD+1 : If CONT(2)>128 : CONT(2)=CONT(2)-256 : End If 
  49.                SONG=Peek(AD) : AD=AD+1 : If SONG>128 : SONG=SONG-256 : End If 
  50.                ST4RTROOM=Peek(AD) : AD=AD+1 : If ST4RTROOM>128 : ST4RTROOM=ST4RTROOM-256 : End If 
  51.                ST4RTCHAR=Peek(AD) : AD=AD+1 : If ST4RTCHAR>128 : ST4RTCHAR=ST4RTCHAR-256 : End If 
  52.                ST4RTPOINT=Peek(AD) : AD=AD+1 : If ST4RTPOINT>128 : ST4RTPOINT=ST4RTPOINT-256 : End If 
  53.                SIZE1=Peek(AD) : AD=AD+1 : If SIZE1>128 : SIZE1=SIZE1-256 : End If 
  54.                SIZE2=Peek(AD) : AD=AD+1 : If SIZE2>128 : SIZE2=SIZE2-256 : End If 
  55.                For Q=0 To 99
  56.                     CHAR(Q,0)=Peek(AD) : AD=AD+1 : If CHAR(Q,0)>128 : CHAR(Q,0)=CHAR(Q,0)-256 : End If 
  57.                     CHAR(Q,1)=Peek(AD) : AD=AD+1 : If CHAR(Q,1)>128 : CHAR(Q,1)=CHAR(Q,1)-256 : End If 
  58.                     B0B(Q,0)=Peek(AD) : AD=AD+1 : If B0B(Q,0)>128 : B0B(Q,0)=B0B(Q,0)-256 : End If 
  59.                     B0B(Q,1)=Peek(AD) : AD=AD+1 : If B0B(Q,1)>128 : B0B(Q,1)=B0B(Q,1)-256 : End If 
  60.                     B0B(Q,2)=Peek(AD) : AD=AD+1 : If B0B(Q,2)>128 : B0B(Q,2)=B0B(Q,2)-256 : End If 
  61.                     B0B(Q,3)=Peek(AD) : AD=AD+1 : If B0B(Q,3)>128 : B0B(Q,3)=B0B(Q,3)-256 : End If 
  62.                     B0B(Q,4)=Peek(AD) : AD=AD+1 : If B0B(Q,4)>128 : B0B(Q,4)=B0B(Q,4)-256 : End If 
  63.                     B0B(Q,5)=Peek(AD) : AD=AD+1 : If B0B(Q,5)>128 : B0B(Q,5)=B0B(Q,5)-256 : End If 
  64.                     ROOM(Q,0)=Peek(AD) : AD=AD+1 : If ROOM(Q,0)>128 : ROOM(Q,0)=ROOM(Q,0)-256 : End If 
  65.                     ROOM(Q,1)=Peek(AD) : AD=AD+1 : If ROOM(Q,1)>128 : ROOM(Q,1)=ROOM(Q,1)-256 : End If 
  66.                     ROOM(Q,2)=Peek(AD) : AD=AD+1 : If ROOM(Q,2)>128 : ROOM(Q,2)=ROOM(Q,2)-256 : End If 
  67.                     CL0SE(Q,0)=Peek(AD) : AD=AD+1 : If CL0SE(Q,0)>128 : CL0SE(Q,0)=CL0SE(Q,0)-256 : End If 
  68.                     CL0SE(Q,1)=Peek(AD) : AD=AD+1 : If CL0SE(Q,1)>128 : CL0SE(Q,1)=CL0SE(Q,1)-256 : End If 
  69.                     CL0SE(Q,2)=Peek(AD) : AD=AD+1 : If CL0SE(Q,2)>128 : CL0SE(Q,2)=CL0SE(Q,2)-256 : End If 
  70.                     PIC(Q)=Peek(AD) : AD=AD+1 : If PIC(Q)>128 : PIC(Q)=PIC(Q)-256 : End If 
  71.                     AN1M(Q)=Peek(AD) : AD=AD+1 : If AN1M(Q)>128 : AN1M(Q)=AN1M(Q)-256 : End If 
  72.                     SAM(Q)=Peek(AD) : AD=AD+1 : If SAM(Q)>128 : SAM(Q)=SAM(Q)-256 : End If 
  73.                Next 
  74.                For Q=0 To 99
  75.                     For W=0 To 10
  76.                          CHARACT(W,Q)=Deek(AD) : AD=AD+2 : If CHARACT(W,Q)>32768 : CHARACT(W,Q)=CHARACT(W,Q)-65536 : End If 
  77.                     Next 
  78.                Next 
  79.                For Q=150 To 200
  80.                     SCRIPT(Q)=Deek(AD) : AD=AD+2 : If SCRIPT(Q)>32768 : SCRIPT(Q)=SCRIPT(Q)-65536 : End If 
  81.                     AD=AD+94
  82.                Next 
  83.                Reserve As Work 23,10000
  84.                ADS=Start(23) : Loke ADS,0 : ADS=ADS+4 : Poke$ ADS,"� " : ADS=ADS+2
  85.                AD=AD-4896
  86.                For Q=150 To 200
  87.                     For W=0 To 15
  88.                          If(Deek(AD)<32768 and Deek(AD)<>0) or W=0
  89.                               For E=0 To 2
  90.                                    LINE(E)=Deek(AD) : AD=AD+2 : If LINE(E)>32768 : LINE(E)=LINE(E)-65536 : End If 
  91.                                    Doke ADS,LINE(E) : ADS=ADS+2
  92.                               Next 
  93.                               Doke ADS,0 : ADS=ADS+2
  94.                          Else 
  95.                               AD=AD+6
  96.                          End If 
  97.                     Next 
  98.                     Poke$ ADS,"� " : ADS=ADS+2
  99.                Next 
  100.                Poke$ ADS,"� " : Loke Start(23),ADS-Start(23)
  101.                For Q=0 To 999
  102.                     TXT$(Q)=Peek$(AD,1000,"�") : AD=AD+Len(TXT$(Q))+1
  103.                Next 
  104.                For Q=0 To 99
  105.                     DEV$(Q)=Peek$(AD,1000,"�") : AD=AD+Len(DEV$(Q))+1
  106.                     CHAR$(Q)=Peek$(AD,1000,"�") : AD=AD+Len(CHAR$(Q))+1
  107.                Next 
  108.                F0NT1$=Peek$(AD,1000,"�") : AD=AD+Len(F0NT1$)+1
  109.                F0NT2$=Peek$(AD,1000,"�") : AD=AD+Len(F0NT2$)+1
  110.                For Q=0 To 99
  111.                     B0B$(Q)=Peek$(AD,1000,"�") : AD=AD+Len(B0B$(Q))+1
  112.                     ROOM$(Q)=Peek$(AD,1000,"�") : AD=AD+Len(ROOM$(Q))+1
  113.                     CL0SE$(Q)=Peek$(AD,1000,"�") : AD=AD+Len(CL0SE$(Q))+1
  114.                     PIC$(Q)=Peek$(AD,1000,"�") : AD=AD+Len(PIC$(Q))+1
  115.                     AN1M$(Q)=Peek$(AD,1000,"�") : AD=AD+Len(AN1M$(Q))+1
  116.                     SAM$(Q)=Peek$(AD,1000,"�") : AD=AD+Len(SAM$(Q))+1
  117.                Next 
  118.                Erase 17
  119.           End If 
  120.      End If 
  121. End Proc
  122. Procedure L0ADA
  123.      Dim LINE(3)
  124.      Q$=NAME$
  125.      If Q$<>""
  126.           Trap Open In 1,Q$
  127.           If Errtrap=0
  128.                L=Lof(1) : Close 1
  129.                'Load Q$,17
  130.                Reserve As Work 17,L
  131.                Bload Q$,17
  132.                L1=Length(17)
  133.                L2=Leek(Start(17))
  134.                Erase 17 : Reserve As Work 17,L2
  135.                Bload Q$,Start(17)
  136.                L3= Extension_5_00E4(Start(17)+4,L1-4)
  137.                AD=Start(17)
  138.                AD=AD+4
  139.                CONT(3)=Leek(AD) : AD=AD+4
  140.                INVL=Leek(AD) : AD=AD+4
  141.                For Q=0 To 99
  142.                     ROOM(Q,3)=Leek(AD) : AD=AD+4
  143.                Next 
  144.                INV=Peek(AD) : AD=AD+1 : If INV>128 : INV=INV-256 : End If 
  145.                CONT(0)=Peek(AD) : AD=AD+1 : If CONT(0)>128 : CONT(0)=CONT(0)-256 : End If 
  146.                CONT(1)=Peek(AD) : AD=AD+1 : If CONT(1)>128 : CONT(1)=CONT(1)-256 : End If 
  147.                CONT(2)=Peek(AD) : AD=AD+1 : If CONT(2)>128 : CONT(2)=CONT(2)-256 : End If 
  148.                SONG=Peek(AD) : AD=AD+1 : If SONG>128 : SONG=SONG-256 : End If 
  149.                ST4RTROOM=Peek(AD) : AD=AD+1 : If ST4RTROOM>128 : ST4RTROOM=ST4RTROOM-256 : End If 
  150.                ST4RTCHAR=Peek(AD) : AD=AD+1 : If ST4RTCHAR>128 : ST4RTCHAR=ST4RTCHAR-256 : End If 
  151.                ST4RTPOINT=Peek(AD) : AD=AD+1 : If ST4RTPOINT>128 : ST4RTPOINT=ST4RTPOINT-256 : End If 
  152.                SIZE1=Peek(AD) : AD=AD+1 : If SIZE1>128 : SIZE1=SIZE1-256 : End If 
  153.                SIZE2=Peek(AD) : AD=AD+1 : If SIZE2>128 : SIZE2=SIZE2-256 : End If 
  154.                For Q=0 To 99
  155.                     CHAR(Q,0)=Peek(AD) : AD=AD+1 : If CHAR(Q,0)>128 : CHAR(Q,0)=CHAR(Q,0)-256 : End If 
  156.                     CHAR(Q,1)=Peek(AD) : AD=AD+1 : If CHAR(Q,1)>128 : CHAR(Q,1)=CHAR(Q,1)-256 : End If 
  157.                     B0B(Q,0)=Peek(AD) : AD=AD+1 : If B0B(Q,0)>128 : B0B(Q,0)=B0B(Q,0)-256 : End If 
  158.                     B0B(Q,1)=Peek(AD) : AD=AD+1 : If B0B(Q,1)>128 : B0B(Q,1)=B0B(Q,1)-256 : End If 
  159.                     B0B(Q,2)=Peek(AD) : AD=AD+1 : If B0B(Q,2)>128 : B0B(Q,2)=B0B(Q,2)-256 : End If 
  160.                     B0B(Q,3)=Peek(AD) : AD=AD+1 : If B0B(Q,3)>128 : B0B(Q,3)=B0B(Q,3)-256 : End If 
  161.                     B0B(Q,4)=Peek(AD) : AD=AD+1 : If B0B(Q,4)>128 : B0B(Q,4)=B0B(Q,4)-256 : End If 
  162.                     B0B(Q,5)=Peek(AD) : AD=AD+1 : If B0B(Q,5)>128 : B0B(Q,5)=B0B(Q,5)-256 : End If 
  163.                     ROOM(Q,0)=Peek(AD) : AD=AD+1 : If ROOM(Q,0)>128 : ROOM(Q,0)=ROOM(Q,0)-256 : End If 
  164.                     ROOM(Q,1)=Peek(AD) : AD=AD+1 : If ROOM(Q,1)>128 : ROOM(Q,1)=ROOM(Q,1)-256 : End If 
  165.                     ROOM(Q,2)=Peek(AD) : AD=AD+1 : If ROOM(Q,2)>128 : ROOM(Q,2)=ROOM(Q,2)-256 : End If 
  166.                     PIC(Q)=Peek(AD) : AD=AD+1 : If PIC(Q)>128 : PIC(Q)=PIC(Q)-256 : End If 
  167.                     SAM(Q)=Peek(AD) : AD=AD+1 : If SAM(Q)>128 : SAM(Q)=SAM(Q)-256 : End If 
  168.                Next 
  169.                For Q=0 To 99
  170.                     For W=0 To 10
  171.                          CHARACT(W,Q)=Deek(AD) : AD=AD+2 : If CHARACT(W,Q)>32768 : CHARACT(W,Q)=CHARACT(W,Q)-65536 : End If 
  172.                     Next 
  173.                Next 
  174.                For Q=150 To 200
  175.                     SCRIPT(Q)=Deek(AD) : AD=AD+2 : If SCRIPT(Q)>32768 : SCRIPT(Q)=SCRIPT(Q)-65536 : End If 
  176.                     AD=AD+94
  177.                Next 
  178.                Reserve As Work 23,10000
  179.                ADS=Start(23) : Loke ADS,0 : ADS=ADS+4 : Poke$ ADS,"� " : ADS=ADS+2
  180.                AD=AD-4896
  181.                For Q=150 To 200
  182.                     For W=0 To 15
  183.                          If(Deek(AD)<32768 and Deek(AD)<>0) or W=0
  184.                               For E=0 To 2
  185.                                    LINE(E)=Deek(AD) : AD=AD+2 : If LINE(E)>32768 : LINE(E)=LINE(E)-65536 : End If 
  186.                                    Doke ADS,LINE(E) : ADS=ADS+2
  187.                               Next 
  188.                               Doke ADS,0 : ADS=ADS+2
  189.                          Else 
  190.                               AD=AD+6
  191.                          End If 
  192.                     Next 
  193.                     Poke$ ADS,"� " : ADS=ADS+2
  194.                Next 
  195.                Poke$ ADS,"� " : Loke Start(23),ADS-Start(23)
  196.                F0NT1$=Peek$(AD,1000,"�") : AD=AD+Len(F0NT1$)+1
  197.                F0NT2$=Peek$(AD,1000,"�") : AD=AD+Len(F0NT2$)+1
  198.                For Q=0 To 99
  199.                     DEV$(Q)=Peek$(AD,1000,"�") : AD=AD+Len(DEV$(Q))+1
  200.                     CHAR$(Q)=Peek$(AD,1000,"�") : AD=AD+Len(CHAR$(Q))+1
  201.                     B0B$(Q)=Peek$(AD,1000,"�") : AD=AD+Len(B0B$(Q))+1
  202.                     ROOM$(Q)=Peek$(AD,1000,"�") : AD=AD+Len(ROOM$(Q))+1
  203.                     PIC$(Q)=Peek$(AD,1000,"�") : AD=AD+Len(PIC$(Q))+1
  204.                     SAM$(Q)=Peek$(AD,1000,"�") : AD=AD+Len(SAM$(Q))+1
  205.                Next 
  206.                For Q=0 To 999
  207.                     TXT$(Q)=Peek$(AD,1000,"�") : AD=AD+Len(TXT$(Q))+1
  208.                Next 
  209.                Erase 17
  210.           End If 
  211.      End If 
  212. End Proc
  213. Procedure L0ADR2[ROOMSEL]
  214.      Dim LINE(3)
  215.      Trap Open In 1,DEV$(ROOM(ROOMSEL,0))+"GRAC"+Str$(ROOMSEL)+".room"
  216.      If Errtrap=0
  217.           Q$=DEV$(ROOM(ROOMSEL,0))+"GRAC"+Str$(ROOMSEL)+".room"
  218.           L=Lof(1) : Close 1
  219.           Reserve As Work 17,L
  220.           Bload Q$,17
  221.           L1=Length(17)
  222.           L2=Leek(Start(17)) : ROOM(ROOMSEL,3)=L2
  223.           Erase 17 : Reserve As Work 17,L2
  224.           Bload Q$,Start(17)
  225.           L3= Extension_5_00E4(Start(17)+4,L1-4)
  226.           AD=Start(17)
  227.           AD=AD+4
  228.           For Q=0 To 15
  229.                For W=0 To 11
  230.                     WALK(W,Q)=Deek(AD) : AD=AD+2 : If WALK(W,Q)>32768 : WALK(W,Q)=WALK(W,Q)-65536 : End If 
  231.                Next 
  232.                For W=0 To 11
  233.                     WALK(W,Q+16)=Deek(AD) : AD=AD+2 : If WALK(W,Q+16)>32768 : WALK(W,Q+16)=WALK(W,Q+16)-65536 : End If 
  234.                Next 
  235.                For W=0 To 22
  236.                     BACK(W,15-Q)=Deek(AD) : AD=AD+2 : If BACK(W,15-Q)>32768 : BACK(W,15-Q)=BACK(W,15-Q)-65536 : End If 
  237.                Next 
  238.                For W=0 To 20
  239.                     F0RE(W,Q)=Deek(AD) : AD=AD+2 : If F0RE(W,Q)>32768 : F0RE(W,Q)=F0RE(W,Q)-65536 : End If 
  240.                Next 
  241.                For W=0 To 3
  242.                     PO1NT(W,Q)=Deek(AD) : AD=AD+2 : If PO1NT(W,Q)>32768 : PO1NT(W,Q)=PO1NT(W,Q)-65536 : End If 
  243.                Next 
  244.           Next 
  245.           For Q=0 To 49
  246.                SCRIPT(Q)=Deek(AD) : AD=AD+2 : If SCRIPT(Q)>32768 : SCRIPT(Q)=SCRIPT(Q)-65536 : End If 
  247.                AD=AD+94
  248.           Next 
  249.           Reserve As Work 20,10000
  250.           ADS=Start(20) : Loke ADS,0 : ADS=ADS+4 : Poke$ ADS,"� " : ADS=ADS+2
  251.           AD=AD-4800
  252.           For Q=0 To 49
  253.                For W=0 To 15
  254.                     If(Deek(AD)<32768 and Deek(AD)<>0) or W=0
  255.                          For E=0 To 2
  256.                               LINE(E)=Deek(AD) : AD=AD+2 : If LINE(E)>32768 : LINE(E)=LINE(E)-65536 : End If 
  257.                               Doke ADS,LINE(E) : ADS=ADS+2
  258.                          Next 
  259.                          Doke ADS,0 : ADS=ADS+2
  260.                     Else 
  261.                          AD=AD+6
  262.                     End If 
  263.                Next 
  264.                Poke$ ADS,"� " : ADS=ADS+2
  265.           Next 
  266.           Poke$ ADS,"� " : Loke Start(20),ADS-Start(20)
  267.           For Q=0 To 15
  268.                BACK$(15-Q)=Peek$(AD,1000,"�") : AD=AD+Len(BACK$(15-Q))+1
  269.                F0RE$(Q)=Peek$(AD,1000,"�") : AD=AD+Len(F0RE$(Q))+1
  270.           Next 
  271.           Erase 17
  272.      End If 
  273. End Proc
  274. Procedure L0ADR[ROOMSEL]
  275.      Dim LINE(3)
  276.      Trap Open In 1,DEV$(ROOM(ROOMSEL,0))+"GRAC"+Str$(ROOMSEL)+".room"
  277.      If Errtrap=0
  278.           Q$=DEV$(ROOM(ROOMSEL,0))+"GRAC"+Str$(ROOMSEL)+".room"
  279.           L=Lof(1) : Close 1
  280.           Reserve As Work 17,L
  281.           Bload Q$,17
  282.           L1=Length(17)
  283.           L2=Leek(Start(17)) : ROOM(ROOMSEL,3)=L2
  284.           Erase 17 : Reserve As Work 17,L2
  285.           Bload Q$,Start(17)
  286.           L3= Extension_5_00E4(Start(17)+4,L1-4)
  287.           AD=Start(17)
  288.           AD=AD+4
  289.           For Q=0 To 15
  290.                For W=0 To 11
  291.                     WALK(W,Q)=Deek(AD) : AD=AD+2 : If WALK(W,Q)>32768 : WALK(W,Q)=WALK(W,Q)-65536 : End If 
  292.                Next 
  293.                For W=0 To 11
  294.                     WALK(W,Q+16)=Deek(AD) : AD=AD+2 : If WALK(W,Q+16)>32768 : WALK(W,Q+16)=WALK(W,Q+16)-65536 : End If 
  295.                Next 
  296.                For W=0 To 22
  297.                     BACK(W,15-Q)=Deek(AD) : AD=AD+2 : If BACK(W,15-Q)>32768 : BACK(W,15-Q)=BACK(W,15-Q)-65536 : End If 
  298.                Next 
  299.                For W=0 To 20
  300.                     F0RE(W,Q)=Deek(AD) : AD=AD+2 : If F0RE(W,Q)>32768 : F0RE(W,Q)=F0RE(W,Q)-65536 : End If 
  301.                Next 
  302.                For W=0 To 3
  303.                     PO1NT(W,Q)=Deek(AD) : AD=AD+2 : If PO1NT(W,Q)>32768 : PO1NT(W,Q)=PO1NT(W,Q)-65536 : End If 
  304.                Next 
  305.           Next 
  306.           AD=AD+5*10*2
  307.           For Q=0 To 49
  308.                SCRIPT(Q)=Deek(AD) : AD=AD+2 : If SCRIPT(Q)>32768 : SCRIPT(Q)=SCRIPT(Q)-65536 : End If 
  309.                AD=AD+94
  310.           Next 
  311.           Reserve As Work 20,10000
  312.           ADS=Start(20) : Loke ADS,0 : ADS=ADS+4 : Poke$ ADS,"� " : ADS=ADS+2
  313.           AD=AD-4800
  314.           For Q=0 To 49
  315.                For W=0 To 15
  316.                     If(Deek(AD)<32768 and Deek(AD)<>0) or W=0
  317.                          For E=0 To 2
  318.                               LINE(E)=Deek(AD) : AD=AD+2 : If LINE(E)>32768 : LINE(E)=LINE(E)-65536 : End If 
  319.                               Doke ADS,LINE(E) : ADS=ADS+2
  320.                          Next 
  321.                          Doke ADS,0 : ADS=ADS+2
  322.                     Else 
  323.                          AD=AD+6
  324.                     End If 
  325.                Next 
  326.                Poke$ ADS,"� " : ADS=ADS+2
  327.           Next 
  328.           Poke$ ADS,"� " : Loke Start(20),ADS-Start(20)
  329.           For Q=0 To 15
  330.                BACK$(15-Q)=Peek$(AD,1000,"�") : AD=AD+Len(BACK$(15-Q))+1
  331.                F0RE$(Q)=Peek$(AD,1000,"�") : AD=AD+Len(F0RE$(Q))+1
  332.           Next 
  333.           Erase 17
  334.      End If 
  335. End Proc
  336. Procedure L0ADCU[CL0SESEL]
  337.      Dim LINE(3)
  338.      Trap Open In 1,DEV$(CL0SE(CL0SESEL,0))+"GRAC"+Str$(CL0SESEL)+".closeup"
  339.      If Errtrap=0
  340.           Q$=DEV$(CL0SE(CL0SESEL,0))+"GRAC"+Str$(CL0SESEL)+".closeup"
  341.           L=Lof(1) : Close 1
  342.           Reserve As Work 17,L
  343.           Bload Q$,17
  344.           L1=Length(17)
  345.           L2=Leek(Start(17)) : CL0SE(CL0SESEL,3)=L2
  346.           Erase 17 : Reserve As Work 17,L2
  347.           Bload Q$,Start(17)
  348.           L3= Extension_5_00E4(Start(17)+4,L1-4)
  349.           AD=Start(17)
  350.           AD=AD+4
  351.           For Q=0 To 15
  352.                For W=0 To 8
  353.                     CZONE(W,Q)=Deek(AD) : AD=AD+2 : If CZONE(W,Q)>32768 : CZONE(W,Q)=CZONE(W,Q)-65536 : End If 
  354.                Next 
  355.           Next 
  356.           For Q=201 To 225
  357.                SCRIPT(Q)=Deek(AD) : AD=AD+2 : If SCRIPT(Q)>32768 : SCRIPT(Q)=SCRIPT(Q)-65536 : End If 
  358.                AD=AD+94
  359.           Next 
  360.           Reserve As Work 24,5000
  361.           ADS=Start(24) : Loke ADS,0 : ADS=ADS+4 : Poke$ ADS,"� " : ADS=ADS+2
  362.           AD=AD-2400
  363.           For Q=201 To 225
  364.                For W=0 To 15
  365.                     If(Deek(AD)<32768 and Deek(AD)<>0) or W=0
  366.                          For E=0 To 2
  367.                               LINE(E)=Deek(AD) : AD=AD+2 : If LINE(E)>32768 : LINE(E)=LINE(E)-65536 : End If 
  368.                               Doke ADS,LINE(E) : ADS=ADS+2
  369.                          Next 
  370.                          Doke ADS,0 : ADS=ADS+2
  371.                     Else 
  372.                          AD=AD+6
  373.                     End If 
  374.                Next 
  375.                Poke$ ADS,"� " : ADS=ADS+2
  376.           Next 
  377.           Poke$ ADS,"� " : Loke Start(24),ADS-Start(24)
  378.           Erase 17
  379.      End If 
  380. End Proc
  381. Procedure L0ADC
  382.      Dim LINE(3)
  383.      Q$=DEV$(CONT(0))+"GRAC"+".cont"
  384.      Trap Open In 1,Q$
  385.      If Errtrap=0
  386.           L=Lof(1) : Close 1
  387.           Reserve As Work 17,L
  388.           Bload Q$,17
  389.           L1=Length(17)
  390.           L2=Leek(Start(17)) : CONT(3)=L2
  391.           Erase 17 : Reserve As Work 17,L2
  392.           Bload Q$,Start(17)
  393.           L3= Extension_5_00E4(Start(17)+4,L1-4)
  394.           AD=Start(17)
  395.           AD=AD+4
  396.           For Q=0 To 15
  397.                CSTUFF(Q)=Deek(AD) : AD=AD+2 : If CSTUFF(Q)>32768 : CSTUFF(Q)=CSTUFF(Q)-65536 : End If 
  398.           Next 
  399.           For Q=0 To 9
  400.                For W=0 To 11
  401.                     VERB(W,Q)=Deek(AD) : AD=AD+2 : If VERB(W,Q)>32768 : VERB(W,Q)=VERB(W,Q)-65536 : End If 
  402.                Next 
  403.           Next 
  404.           For Q=0 To 9
  405.                SCRIPT(Q+50)=Deek(AD) : AD=AD+2 : If SCRIPT(Q+50)>32768 : SCRIPT(Q+50)=SCRIPT(Q+50)-65536 : End If 
  406.                AD=AD+94
  407.           Next 
  408.           Reserve As Work 21,2000
  409.           ADS=Start(21) : Loke ADS,0 : ADS=ADS+4 : Poke$ ADS,"� " : ADS=ADS+2
  410.           AD=AD-960
  411.           For Q=0 To 9
  412.                For W=0 To 15
  413.                     If(Deek(AD)<32768 and Deek(AD)<>0) or W=0
  414.                          For E=0 To 2
  415.                               LINE(E)=Deek(AD) : AD=AD+2 : If LINE(E)>32768 : LINE(E)=LINE(E)-65536 : End If 
  416.                               Doke ADS,LINE(E) : ADS=ADS+2
  417.                          Next 
  418.                          Doke ADS,0 : ADS=ADS+2
  419.                     Else 
  420.                          AD=AD+6
  421.                     End If 
  422.                Next 
  423.                Poke$ ADS,"� " : ADS=ADS+2
  424.           Next 
  425.           Poke$ ADS,"� " : Loke Start(21),ADS-Start(21)
  426.           For Q=0 To 9
  427.                VERB$(0,Q)=Peek$(AD,1000,"�") : AD=AD+Len(VERB$(0,Q))+1
  428.                VERB$(1,Q)=Peek$(AD,1000,"�") : AD=AD+Len(VERB$(1,Q))+1
  429.           Next 
  430.           Erase 17
  431.      End If 
  432. End Proc
  433. Procedure L0ADI
  434.      Dim LINE(3)
  435.      Q$=DEV$(INV)+"GRAC"+".inv"
  436.      Trap Open In 1,Q$
  437.      If Errtrap=0
  438.           L=Lof(1) : Close 1
  439.           Reserve As Work 17,L
  440.           Bload Q$,17
  441.           L1=Length(17)
  442.           L2=Leek(Start(17)) : INVL=L2
  443.           Erase 17 : Reserve As Work 17,L2
  444.           Bload Q$,Start(17)
  445.           L3= Extension_5_00E4(Start(17)+4,L1-4)
  446.           AD=Start(17)
  447.           AD=AD+4
  448.           For Q=0 To 99
  449.                For W=0 To 10
  450.                     INV(W,Q)=Deek(AD) : AD=AD+2 : If INV(W,Q)>32768 : INV(W,Q)=INV(W,Q)-65536 : End If 
  451.                Next 
  452.           Next 
  453.           For Q=60 To 149
  454.                SCRIPT(Q)=Deek(AD) : AD=AD+2 : If SCRIPT(Q)>32768 : SCRIPT(Q)=SCRIPT(Q)-65536 : End If 
  455.                AD=AD+94
  456.           Next 
  457.           Reserve As Work 22,20000
  458.           ADS=Start(22) : Loke ADS,0 : ADS=ADS+4 : Poke$ ADS,"� " : ADS=ADS+2
  459.           AD=AD-8640
  460.           For Q=60 To 149
  461.                For W=0 To 15
  462.                     If(Deek(AD)<32768 and Deek(AD)<>0) or W=0
  463.                          For E=0 To 2
  464.                               LINE(E)=Deek(AD) : AD=AD+2 : If LINE(E)>32768 : LINE(E)=LINE(E)-65536 : End If 
  465.                               Doke ADS,LINE(E) : ADS=ADS+2
  466.                          Next 
  467.                          Doke ADS,0 : ADS=ADS+2
  468.                     Else 
  469.                          AD=AD+6
  470.                     End If 
  471.                Next 
  472.                Poke$ ADS,"� " : ADS=ADS+2
  473.           Next 
  474.           Poke$ ADS,"� " : Loke Start(22),ADS-Start(22)
  475.           For Q=0 To 99
  476.                INV$(Q)=Peek$(AD,1000,"�") : AD=AD+Len(INV$(Q))+1
  477.           Next 
  478.           Erase 17
  479.      End If 
  480. End Proc
  481. Procedure S4VEA
  482.      SIZEALL : SIZE=Param
  483.      Reserve As Work 17,SIZE+1000
  484.      AD=Start(17)
  485.      AD=AD+8
  486.      Loke AD,CONT(3) : AD=AD+4
  487.      Loke AD,INVL : AD=AD+4
  488.      For Q=0 To 99
  489.           Loke AD,ROOM(Q,3) : AD=AD+4
  490.      Next 
  491.      For Q=0 To 99
  492.           Loke AD,CL0SE(Q,3) : AD=AD+4
  493.      Next 
  494.      Poke AD,INV : AD=AD+1
  495.      Poke AD,CONT(0) : AD=AD+1
  496.      Poke AD,CONT(1) : AD=AD+1
  497.      Poke AD,CONT(2) : AD=AD+1
  498.      Poke AD,SONG : AD=AD+1
  499.      Poke AD,ST4RTROOM : AD=AD+1
  500.      Poke AD,ST4RTCHAR : AD=AD+1
  501.      Poke AD,ST4RTPOINT : AD=AD+1
  502.      Poke AD,SIZE1 : AD=AD+1
  503.      Poke AD,SIZE2 : AD=AD+1
  504.      For Q=0 To 99
  505.           Poke AD,CHAR(Q,0) : AD=AD+1
  506.           Poke AD,CHAR(Q,1) : AD=AD+1
  507.           Poke AD,B0B(Q,0) : AD=AD+1
  508.           Poke AD,B0B(Q,1) : AD=AD+1
  509.           Poke AD,B0B(Q,2) : AD=AD+1
  510.           Poke AD,B0B(Q,3) : AD=AD+1
  511.           Poke AD,B0B(Q,4) : AD=AD+1
  512.           Poke AD,B0B(Q,5) : AD=AD+1
  513.           Poke AD,ROOM(Q,0) : AD=AD+1
  514.           Poke AD,ROOM(Q,1) : AD=AD+1
  515.           Poke AD,ROOM(Q,2) : AD=AD+1
  516.           Poke AD,CL0SE(Q,0) : AD=AD+1
  517.           Poke AD,CL0SE(Q,1) : AD=AD+1
  518.           Poke AD,CL0SE(Q,2) : AD=AD+1
  519.           Poke AD,PIC(Q) : AD=AD+1
  520.           Poke AD,AN1M(Q) : AD=AD+1
  521.           Poke AD,SAM(Q) : AD=AD+1
  522.      Next 
  523.      For Q=0 To 99
  524.           For W=0 To 10
  525.                Doke AD,CHARACT(W,Q) : AD=AD+2
  526.           Next 
  527.      Next 
  528.      For Q=150 To 200
  529.           Doke AD,SCRIPT(Q) : AD=AD+2
  530.      Next 
  531.      Copy Start(23),Start(23)+Leek(Start(23)) To AD
  532.      AD=AD+Leek(Start(23))
  533.      For Q=0 To 100
  534.           Poke$ AD,COMMENT$(Q,3)+"�" : AD=AD+Len(COMMENT$(Q,3))+1
  535.      Next 
  536.      For Q=0 To 999
  537.           Poke$ AD,TXT$(Q)+"�" : AD=AD+Len(TXT$(Q))+1
  538.      Next 
  539.      For Q=0 To 99
  540.           Poke$ AD,DEV$(Q)+"�" : AD=AD+Len(DEV$(Q))+1
  541.           Poke$ AD,CHAR$(Q)+"�" : AD=AD+Len(CHAR$(Q))+1
  542.      Next 
  543.      Poke$ AD,F0NT1$+"�" : AD=AD+Len(F0NT1$)+1
  544.      Poke$ AD,F0NT2$+"�" : AD=AD+Len(F0NT2$)+1
  545.      For Q=0 To 99
  546.           Poke$ AD,B0B$(Q)+"�" : AD=AD+Len(B0B$(Q))+1
  547.           Poke$ AD,ROOM$(Q)+"�" : AD=AD+Len(ROOM$(Q))+1
  548.           Poke$ AD,CL0SE$(Q)+"�" : AD=AD+Len(CL0SE$(Q))+1
  549.           Poke$ AD,PIC$(Q)+"�" : AD=AD+Len(PIC$(Q))+1
  550.           Poke$ AD,AN1M$(Q)+"�" : AD=AD+Len(AN1M$(Q))+1
  551.           Poke$ AD,SAM$(Q)+"�" : AD=AD+Len(SAM$(Q))+1
  552.      Next 
  553.      If AD>Start(17)+Length(17) : Print "whoops" : End : End If 
  554.      Bank Shrink 17 To AD-Start(17)+1
  555.      L= Extension_5_00CE(Start(17)+8,Length(17)-8,1,1024,31)
  556.      Loke Start(17)+4,AD-Start(17)+1
  557.      Poke$ Start(17),"GR20"
  558.      Bank Shrink 17 To L+8
  559.      Q$=NAME$
  560.      If Q$<>""
  561.           Trap Bsave Q$,Start(17) To Start(17)+Length(17)
  562.           Trap Bsave Q$+".info",Start(18) To Start(18)+Length(18)
  563.      End If 
  564.      Erase 17
  565. End Proc[SAV]
  566. Procedure S4VER[ROOMSEL]
  567.      SIZEROOM : SIZE=Param
  568.      Reserve As Work 17,SIZE+1000
  569.      AD=Start(17)
  570.      AD=AD+4
  571.      For Q=0 To 15
  572.           For W=0 To 11
  573.                Doke AD,WALK(W,Q) : AD=AD+2
  574.           Next 
  575.           For W=0 To 11
  576.                Doke AD,WALK(W,Q+16) : AD=AD+2
  577.           Next 
  578.           For W=0 To 22
  579.                Doke AD,BACK(W,Q) : AD=AD+2
  580.           Next 
  581.           For W=0 To 22
  582.                Doke AD,BACK(W,Q+16) : AD=AD+2
  583.           Next 
  584.           For W=0 To 20
  585.                Doke AD,F0RE(W,Q) : AD=AD+2
  586.           Next 
  587.           For W=0 To 3
  588.                Doke AD,PO1NT(W,Q) : AD=AD+2
  589.           Next 
  590.      Next 
  591.      For Q=0 To 49
  592.           Doke AD,SCRIPT(Q) : AD=AD+2
  593.      Next 
  594.      Copy Start(20),Start(20)+Leek(Start(20)) To AD
  595.      AD=AD+Leek(Start(20))
  596.      For Q=0 To 100
  597.           Poke$ AD,COMMENT$(Q,0)+"�" : AD=AD+Len(COMMENT$(Q,0))+1
  598.      Next 
  599.      For Q=1000 To 1999
  600.           Poke$ AD,TXT$(Q)+"�" : AD=AD+Len(TXT$(Q))+1
  601.      Next 
  602.      For Q=0 To 15
  603.           Poke$ AD,BACK$(Q)+"�" : AD=AD+Len(BACK$(Q))+1
  604.           Poke$ AD,BACK$(Q+16)+"�" : AD=AD+Len(BACK$(Q+16))+1
  605.           Poke$ AD,F0RE$(Q)+"�" : AD=AD+Len(F0RE$(Q))+1
  606.      Next 
  607.      If AD>Start(17)+Length(17) : Print "whoops" : End : End If 
  608.      Bank Shrink 17 To AD-Start(17)+1
  609.      L= Extension_5_00CE(Start(17)+4,Length(17)-4,1,1024,31)
  610.      Loke Start(17),AD-Start(17)+1 : ROOM(ROOMSEL,3)=AD-Start(17)+1
  611.      Bank Shrink 17 To L+4
  612.      Q$=DEV$(ROOM(ROOMSEL,0))+"GRAC"+Str$(ROOMSEL)+".room"
  613.      Trap Bsave Q$,Start(17) To Start(17)+Length(17)
  614.      If Errtrap>0
  615.           End 
  616.      Else 
  617.           SAV=-1
  618.      End If 
  619.      Erase 17
  620. End Proc[SAV]
  621. Procedure S4VECU[CL0SESEL]
  622.      SIZECU : SIZE=Param
  623.      Reserve As Work 17,SIZE+1000
  624.      AD=Start(17)
  625.      AD=AD+4
  626.      For Q=0 To 15
  627.           For W=0 To 8
  628.                Doke AD,CZONE(W,Q) : AD=AD+2
  629.           Next 
  630.      Next 
  631.      For Q=201 To 225
  632.           Doke AD,SCRIPT(Q) : AD=AD+2
  633.      Next 
  634.      Copy Start(24),Start(24)+Leek(Start(24)) To AD
  635.      AD=AD+Leek(Start(24))
  636.      For Q=0 To 100
  637.           Poke$ AD,COMMENT$(Q,4)+"�" : AD=AD+Len(COMMENT$(Q,4))+1
  638.      Next 
  639.      If AD>Start(17)+Length(17) : Print "whoops" : End : End If 
  640.      Bank Shrink 17 To AD-Start(17)+1
  641.      L= Extension_5_00CE(Start(17)+4,Length(17)-4,1,1024,31)
  642.      Loke Start(17),AD-Start(17)+1 : CL0SE(CL0SESEL,3)=AD-Start(17)+1
  643.      Bank Shrink 17 To L+4
  644.      Q$=DEV$(CL0SE(CL0SESEL,0))+"GRAC"+Str$(CL0SESEL)+".closeup"
  645.      Trap Bsave Q$,Start(17) To Start(17)+Length(17)
  646.      If Errtrap>0
  647.           End 
  648.      Else 
  649.           SAV=-1
  650.      End If 
  651.      Erase 17
  652. End Proc[SAV]
  653. Procedure S4VEC
  654.      SIZEC : SIZE=Param
  655.      Reserve As Work 17,SIZE+1000
  656.      AD=Start(17)
  657.      AD=AD+4
  658.      For Q=0 To 15
  659.           Doke AD,CSTUFF(Q) : AD=AD+2
  660.      Next 
  661.      For Q=0 To 9
  662.           For W=0 To 11
  663.                Doke AD,VERB(W,Q) : AD=AD+2
  664.           Next 
  665.      Next 
  666.      For Q=0 To 9
  667.           Doke AD,SCRIPT(Q+50) : AD=AD+2
  668.      Next 
  669.      Copy Start(21),Start(21)+Leek(Start(21)) To AD
  670.      AD=AD+Leek(Start(21))
  671.      For Q=0 To 100
  672.           Poke$ AD,COMMENT$(Q,1)+"�" : AD=AD+Len(COMMENT$(Q,1))+1
  673.      Next 
  674.      For Q=0 To 9
  675.           Poke$ AD,VERB$(0,Q)+"�" : AD=AD+Len(VERB$(0,Q))+1
  676.           Poke$ AD,VERB$(1,Q)+"�" : AD=AD+Len(VERB$(1,Q))+1
  677.      Next 
  678.      If AD>Start(17)+Length(17) : Print "whoops" : End : End If 
  679.      Bank Shrink 17 To AD-Start(17)+1
  680.      L= Extension_5_00CE(Start(17)+4,Length(17)-4,1,1024,31)
  681.      Loke Start(17),AD-Start(17)+1 : CONT(3)=AD-Start(17)+1
  682.      Bank Shrink 17 To L+4
  683.      Q$=DEV$(CONT(0))+"GRAC"+".cont"
  684.      Trap Bsave Q$,Start(17) To Start(17)+Length(17)
  685.      If Errtrap>0
  686.           End 
  687.      Else 
  688.           SAV=-1
  689.      End If 
  690.      Erase 17
  691. End Proc[SAV]
  692. Procedure S4VEI
  693.      SIZEI : SIZE=Param
  694.      Reserve As Work 17,1000+SIZE
  695.      AD=Start(17)
  696.      AD=AD+4
  697.      For Q=0 To 99
  698.           For W=0 To 10
  699.                Doke AD,INV(W,Q) : AD=AD+2
  700.           Next 
  701.      Next 
  702.      For Q=60 To 149
  703.           Doke AD,SCRIPT(Q) : AD=AD+2
  704.      Next 
  705.      Copy Start(22),Start(22)+Leek(Start(22)) To AD
  706.      AD=AD+Leek(Start(22))
  707.      For Q=0 To 100
  708.           Poke$ AD,COMMENT$(Q,2)+"�" : AD=AD+Len(COMMENT$(Q,2))+1
  709.      Next 
  710.      For Q=0 To 99
  711.           Poke$ AD,INV$(Q)+"�" : AD=AD+Len(INV$(Q))+1
  712.      Next 
  713.      If AD>Start(17)+Length(17) : Print "whoops" : End : End If 
  714.      Bank Shrink 17 To AD-Start(17)+1
  715.      L= Extension_5_00CE(Start(17)+4,Length(17)-4,1,1024,31)
  716.      Loke Start(17),AD-Start(17)+1 : INVL=AD-Start(17)+1
  717.      Bank Shrink 17 To L+4
  718.      Q$=DEV$(INV)+"GRAC"+".inv"
  719.      Trap Bsave Q$,Start(17) To Start(17)+Length(17)
  720.      If Errtrap>0
  721.           End 
  722.      Else 
  723.           SAV=-1
  724.      End If 
  725.      Erase 17
  726. End Proc[SAV]
  727. Procedure SIZEALL
  728.      AD=808+10+1700+2200+102+Leek(Start(23))
  729.      AD=AD+Len(F0NT1$)+1
  730.      AD=AD+Len(F0NT2$)+1
  731.      For Q=0 To 99
  732.           AD=AD+Len(DEV$(Q))+1
  733.           AD=AD+Len(CHAR$(Q))+1
  734.           AD=AD+Len(B0B$(Q))+1
  735.           AD=AD+Len(ROOM$(Q))+1
  736.           AD=AD+Len(CL0SE$(Q))+1
  737.           AD=AD+Len(PIC$(Q))+1
  738.           AD=AD+Len(AN1M$(Q))+1
  739.           AD=AD+Len(SAM$(Q))+1
  740.      Next 
  741.      For Q=0 To 100
  742.           AD=AD+Len(COMMENT$(Q,3))+1
  743.      Next 
  744.      For Q=0 To 999
  745.           AD=AD+Len(TXT$(Q))+1
  746.      Next 
  747. End Proc[AD]
  748. Procedure SIZEROOM
  749.      AD=4+16*2*(12+12+23+23+21+4)+50*2
  750.      AD=AD+Leek(Start(20))
  751.      For Q=0 To 100
  752.           AD=AD+Len(COMMENT$(Q,0))+1
  753.      Next 
  754.      For Q=1000 To 1999
  755.           AD=AD+Len(TXT$(Q))+1
  756.      Next 
  757.      For Q=0 To 15
  758.           AD=AD+Len(BACK$(Q))+1
  759.           AD=AD+Len(BACK$(Q+16))+1
  760.           AD=AD+Len(F0RE$(Q))+1
  761.      Next 
  762. End Proc[AD]
  763. Procedure SIZECU
  764.      AD=4+16*9*2+25*2
  765.      AD=AD+Leek(Start(24))
  766.      For Q=0 To 100
  767.           AD=AD+Len(COMMENT$(Q,4))+1
  768.      Next 
  769. End Proc[AD]
  770. Procedure SIZEC
  771.      AD=4+16*2+10*12*2+10*2
  772.      AD=AD+Leek(Start(21))
  773.      For Q=0 To 100
  774.           AD=AD+Len(COMMENT$(Q,0))+1
  775.      Next 
  776.      For Q=0 To 9
  777.           AD=AD+Len(VERB$(0,Q))+1
  778.           AD=AD+Len(VERB$(1,Q))+1
  779.      Next 
  780. End Proc[AD]
  781. Procedure SIZEI
  782.      AD=4+100*11*2+90*2
  783.      AD=AD+Leek(Start(22))
  784.      For Q=0 To 100
  785.           AD=AD+Len(COMMENT$(Q,2))+1
  786.      Next 
  787.      For Q=0 To 99
  788.           AD=AD+Len(INV$(Q))+1
  789.      Next 
  790. End Proc[AD]
  791. Procedure C0PYA
  792.      For Q=0 To 99
  793.           If DEV$(Q)<>""
  794.                'rooms 
  795.                For W=0 To 99
  796.                     If ROOM$(W)<>""
  797.                          If ROOM(W,0)=Q
  798.                               L0ADR[W]
  799.                               S4VER[W]
  800.                          End If 
  801.                     End If 
  802.                Next 
  803.                'closeups
  804.                For W=0 To 99
  805.                     If CL0SE$(W)<>""
  806.                          If CL0SE(W,0)=Q
  807.                               L0ADCU[W]
  808.                               S4VECU[W]
  809.                          End If 
  810.                     End If 
  811.                Next 
  812.                'cont
  813.                If CONT(0)=Q
  814.                     L0ADC
  815.                     S4VEC
  816.                End If 
  817.                'inv 
  818.                If INV=Q
  819.                     L0ADI
  820.                     S4VEI
  821.                End If 
  822.           End If 
  823.      Next 
  824. End Proc