home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
The Amiga Game Guide
/
AmigaGameGuide_CD.iso
/
Amiga
/
Tools
/
GRAC
/
source
/
GRACconvert2.amos
/
GRACconvert2.amosSourceCode
< prev
Wrap
AMOS Source Code
|
1977-12-31
|
32KB
|
824 lines
Set Buffer 140
NAME$=Command Line$ : Amos To Back
'NAME$="ram:lethal_formula"
Request Wb
Dim TXT$(1999) : Dim COMMENT$(100,4) : Dim SEL$(999) : Dim CHAR$(99) : Dim CHAR(99,1) : Dim DEV$(99)
Dim B0B$(99) : Dim B0B(99,5) : Dim ROOM$(99) : Dim ROOM(99,3) : Dim CL0SE$(99) : Dim CL0SE(99,3)
Dim CSTUFF(15) : Dim VERB(11,9) : Dim VERB$(1,9) : Dim INV$(99)
Dim INV(10,99) : Dim CHARACT(10,99) : Dim PIC$(99) : Dim PIC(99) : Dim AN1M$(99) : Dim AN1M(99)
Dim SAM$(99) : Dim SAM(99) : Dim CONT(3) : Dim WALK(11,31) : Dim BACK(22,31) : Dim CZONE(8,15)
Dim F0RE(20,15) : Dim PO1NT(3,15) : Dim BACK$(31) : Dim F0RE$(15)
Dim SCRIPT(225) : Dim Z0NES(31) : Dim COMMAND$(99)
Global MENU,TXT$(),MAIN$,P4RAM$,TXTSEL$,CHANGE,TXTED$,CHAR$,CHAR$(),D1R$,HEIGHT$,CSTUFF(),INV(),INV$(),INV$,INVL,STOR,COMMENT$()
Global HX,HY,XPOS,YPOS,DEV$(),CHAR(),INV,CONT(),NUMED$,SCRIPT$,COMMAND$(),NOL,VERB(),ST4RTROOM,ST4RTCHAR,ST4RTPOINT,CZONE()
Global B0B$(),B0B(),ROOM$(),ROOM(),PIC$(),PIC(),AN1M$(),AN1M(),SONG,SAM$(),INV,CONT,MESSAGE$,OBJ$,XOFF,YOFF,ROOMC,SOUND$,S4MPLE$,SAM()
Global PIC$,AN1M$,ROOM$,WALK$,F0RE$,BACK$,PO1NT$,B0BSEL$,CONTROL$,PO1NT$,WALK(),BACK(),VERB$(),CHARACT(),DEF$,F0NT1$,F0NT2$,SIZE1,SIZE2
Global F0RE(),PO1NT(),F0RE$(),BACK$(),SCRIPT(),IMAGE$,IMAGE,H1DE,Z0NES(),VERB$,TYPE$,VER$,SCRIPT1$,EX$,SCR0LL,CL0SE(),CL0SE$(),CL0SE$
Global NAME$,D$,NAME2$
L0ADA
C0PYA
S4VEA
Procedure L0ADA2
Dim LINE(3)
Q$=NAME$
If Q$<>""
Trap Open In 1,Q$
If Errtrap=0
L=Lof(1) : Close 1
Reserve As Work 17,L
Bload Q$,17
L1=Length(17)
L2=Leek(Start(17))
Erase 17 : Reserve As Work 17,L2
Bload Q$,Start(17)
L3= Extension_5_00E4(Start(17)+4,L1-4)
AD=Start(17)
AD=AD+4
CONT(3)=Leek(AD) : AD=AD+4
INVL=Leek(AD) : AD=AD+4
For Q=0 To 99
ROOM(Q,3)=Leek(AD) : AD=AD+4
Next
For Q=0 To 99
CL0SE(Q,3)=Leek(AD) : AD=AD+4
Next
INV=Peek(AD) : AD=AD+1 : If INV>128 : INV=INV-256 : End If
CONT(0)=Peek(AD) : AD=AD+1 : If CONT(0)>128 : CONT(0)=CONT(0)-256 : End If
CONT(1)=Peek(AD) : AD=AD+1 : If CONT(1)>128 : CONT(1)=CONT(1)-256 : End If
CONT(2)=Peek(AD) : AD=AD+1 : If CONT(2)>128 : CONT(2)=CONT(2)-256 : End If
SONG=Peek(AD) : AD=AD+1 : If SONG>128 : SONG=SONG-256 : End If
ST4RTROOM=Peek(AD) : AD=AD+1 : If ST4RTROOM>128 : ST4RTROOM=ST4RTROOM-256 : End If
ST4RTCHAR=Peek(AD) : AD=AD+1 : If ST4RTCHAR>128 : ST4RTCHAR=ST4RTCHAR-256 : End If
ST4RTPOINT=Peek(AD) : AD=AD+1 : If ST4RTPOINT>128 : ST4RTPOINT=ST4RTPOINT-256 : End If
SIZE1=Peek(AD) : AD=AD+1 : If SIZE1>128 : SIZE1=SIZE1-256 : End If
SIZE2=Peek(AD) : AD=AD+1 : If SIZE2>128 : SIZE2=SIZE2-256 : End If
For Q=0 To 99
CHAR(Q,0)=Peek(AD) : AD=AD+1 : If CHAR(Q,0)>128 : CHAR(Q,0)=CHAR(Q,0)-256 : End If
CHAR(Q,1)=Peek(AD) : AD=AD+1 : If CHAR(Q,1)>128 : CHAR(Q,1)=CHAR(Q,1)-256 : End If
B0B(Q,0)=Peek(AD) : AD=AD+1 : If B0B(Q,0)>128 : B0B(Q,0)=B0B(Q,0)-256 : End If
B0B(Q,1)=Peek(AD) : AD=AD+1 : If B0B(Q,1)>128 : B0B(Q,1)=B0B(Q,1)-256 : End If
B0B(Q,2)=Peek(AD) : AD=AD+1 : If B0B(Q,2)>128 : B0B(Q,2)=B0B(Q,2)-256 : End If
B0B(Q,3)=Peek(AD) : AD=AD+1 : If B0B(Q,3)>128 : B0B(Q,3)=B0B(Q,3)-256 : End If
B0B(Q,4)=Peek(AD) : AD=AD+1 : If B0B(Q,4)>128 : B0B(Q,4)=B0B(Q,4)-256 : End If
B0B(Q,5)=Peek(AD) : AD=AD+1 : If B0B(Q,5)>128 : B0B(Q,5)=B0B(Q,5)-256 : End If
ROOM(Q,0)=Peek(AD) : AD=AD+1 : If ROOM(Q,0)>128 : ROOM(Q,0)=ROOM(Q,0)-256 : End If
ROOM(Q,1)=Peek(AD) : AD=AD+1 : If ROOM(Q,1)>128 : ROOM(Q,1)=ROOM(Q,1)-256 : End If
ROOM(Q,2)=Peek(AD) : AD=AD+1 : If ROOM(Q,2)>128 : ROOM(Q,2)=ROOM(Q,2)-256 : End If
CL0SE(Q,0)=Peek(AD) : AD=AD+1 : If CL0SE(Q,0)>128 : CL0SE(Q,0)=CL0SE(Q,0)-256 : End If
CL0SE(Q,1)=Peek(AD) : AD=AD+1 : If CL0SE(Q,1)>128 : CL0SE(Q,1)=CL0SE(Q,1)-256 : End If
CL0SE(Q,2)=Peek(AD) : AD=AD+1 : If CL0SE(Q,2)>128 : CL0SE(Q,2)=CL0SE(Q,2)-256 : End If
PIC(Q)=Peek(AD) : AD=AD+1 : If PIC(Q)>128 : PIC(Q)=PIC(Q)-256 : End If
AN1M(Q)=Peek(AD) : AD=AD+1 : If AN1M(Q)>128 : AN1M(Q)=AN1M(Q)-256 : End If
SAM(Q)=Peek(AD) : AD=AD+1 : If SAM(Q)>128 : SAM(Q)=SAM(Q)-256 : End If
Next
For Q=0 To 99
For W=0 To 10
CHARACT(W,Q)=Deek(AD) : AD=AD+2 : If CHARACT(W,Q)>32768 : CHARACT(W,Q)=CHARACT(W,Q)-65536 : End If
Next
Next
For Q=150 To 200
SCRIPT(Q)=Deek(AD) : AD=AD+2 : If SCRIPT(Q)>32768 : SCRIPT(Q)=SCRIPT(Q)-65536 : End If
AD=AD+94
Next
Reserve As Work 23,10000
ADS=Start(23) : Loke ADS,0 : ADS=ADS+4 : Poke$ ADS,"� " : ADS=ADS+2
AD=AD-4896
For Q=150 To 200
For W=0 To 15
If(Deek(AD)<32768 and Deek(AD)<>0) or W=0
For E=0 To 2
LINE(E)=Deek(AD) : AD=AD+2 : If LINE(E)>32768 : LINE(E)=LINE(E)-65536 : End If
Doke ADS,LINE(E) : ADS=ADS+2
Next
Doke ADS,0 : ADS=ADS+2
Else
AD=AD+6
End If
Next
Poke$ ADS,"� " : ADS=ADS+2
Next
Poke$ ADS,"� " : Loke Start(23),ADS-Start(23)
For Q=0 To 999
TXT$(Q)=Peek$(AD,1000,"�") : AD=AD+Len(TXT$(Q))+1
Next
For Q=0 To 99
DEV$(Q)=Peek$(AD,1000,"�") : AD=AD+Len(DEV$(Q))+1
CHAR$(Q)=Peek$(AD,1000,"�") : AD=AD+Len(CHAR$(Q))+1
Next
F0NT1$=Peek$(AD,1000,"�") : AD=AD+Len(F0NT1$)+1
F0NT2$=Peek$(AD,1000,"�") : AD=AD+Len(F0NT2$)+1
For Q=0 To 99
B0B$(Q)=Peek$(AD,1000,"�") : AD=AD+Len(B0B$(Q))+1
ROOM$(Q)=Peek$(AD,1000,"�") : AD=AD+Len(ROOM$(Q))+1
CL0SE$(Q)=Peek$(AD,1000,"�") : AD=AD+Len(CL0SE$(Q))+1
PIC$(Q)=Peek$(AD,1000,"�") : AD=AD+Len(PIC$(Q))+1
AN1M$(Q)=Peek$(AD,1000,"�") : AD=AD+Len(AN1M$(Q))+1
SAM$(Q)=Peek$(AD,1000,"�") : AD=AD+Len(SAM$(Q))+1
Next
Erase 17
End If
End If
End Proc
Procedure L0ADA
Dim LINE(3)
Q$=NAME$
If Q$<>""
Trap Open In 1,Q$
If Errtrap=0
L=Lof(1) : Close 1
'Load Q$,17
Reserve As Work 17,L
Bload Q$,17
L1=Length(17)
L2=Leek(Start(17))
Erase 17 : Reserve As Work 17,L2
Bload Q$,Start(17)
L3= Extension_5_00E4(Start(17)+4,L1-4)
AD=Start(17)
AD=AD+4
CONT(3)=Leek(AD) : AD=AD+4
INVL=Leek(AD) : AD=AD+4
For Q=0 To 99
ROOM(Q,3)=Leek(AD) : AD=AD+4
Next
INV=Peek(AD) : AD=AD+1 : If INV>128 : INV=INV-256 : End If
CONT(0)=Peek(AD) : AD=AD+1 : If CONT(0)>128 : CONT(0)=CONT(0)-256 : End If
CONT(1)=Peek(AD) : AD=AD+1 : If CONT(1)>128 : CONT(1)=CONT(1)-256 : End If
CONT(2)=Peek(AD) : AD=AD+1 : If CONT(2)>128 : CONT(2)=CONT(2)-256 : End If
SONG=Peek(AD) : AD=AD+1 : If SONG>128 : SONG=SONG-256 : End If
ST4RTROOM=Peek(AD) : AD=AD+1 : If ST4RTROOM>128 : ST4RTROOM=ST4RTROOM-256 : End If
ST4RTCHAR=Peek(AD) : AD=AD+1 : If ST4RTCHAR>128 : ST4RTCHAR=ST4RTCHAR-256 : End If
ST4RTPOINT=Peek(AD) : AD=AD+1 : If ST4RTPOINT>128 : ST4RTPOINT=ST4RTPOINT-256 : End If
SIZE1=Peek(AD) : AD=AD+1 : If SIZE1>128 : SIZE1=SIZE1-256 : End If
SIZE2=Peek(AD) : AD=AD+1 : If SIZE2>128 : SIZE2=SIZE2-256 : End If
For Q=0 To 99
CHAR(Q,0)=Peek(AD) : AD=AD+1 : If CHAR(Q,0)>128 : CHAR(Q,0)=CHAR(Q,0)-256 : End If
CHAR(Q,1)=Peek(AD) : AD=AD+1 : If CHAR(Q,1)>128 : CHAR(Q,1)=CHAR(Q,1)-256 : End If
B0B(Q,0)=Peek(AD) : AD=AD+1 : If B0B(Q,0)>128 : B0B(Q,0)=B0B(Q,0)-256 : End If
B0B(Q,1)=Peek(AD) : AD=AD+1 : If B0B(Q,1)>128 : B0B(Q,1)=B0B(Q,1)-256 : End If
B0B(Q,2)=Peek(AD) : AD=AD+1 : If B0B(Q,2)>128 : B0B(Q,2)=B0B(Q,2)-256 : End If
B0B(Q,3)=Peek(AD) : AD=AD+1 : If B0B(Q,3)>128 : B0B(Q,3)=B0B(Q,3)-256 : End If
B0B(Q,4)=Peek(AD) : AD=AD+1 : If B0B(Q,4)>128 : B0B(Q,4)=B0B(Q,4)-256 : End If
B0B(Q,5)=Peek(AD) : AD=AD+1 : If B0B(Q,5)>128 : B0B(Q,5)=B0B(Q,5)-256 : End If
ROOM(Q,0)=Peek(AD) : AD=AD+1 : If ROOM(Q,0)>128 : ROOM(Q,0)=ROOM(Q,0)-256 : End If
ROOM(Q,1)=Peek(AD) : AD=AD+1 : If ROOM(Q,1)>128 : ROOM(Q,1)=ROOM(Q,1)-256 : End If
ROOM(Q,2)=Peek(AD) : AD=AD+1 : If ROOM(Q,2)>128 : ROOM(Q,2)=ROOM(Q,2)-256 : End If
PIC(Q)=Peek(AD) : AD=AD+1 : If PIC(Q)>128 : PIC(Q)=PIC(Q)-256 : End If
SAM(Q)=Peek(AD) : AD=AD+1 : If SAM(Q)>128 : SAM(Q)=SAM(Q)-256 : End If
Next
For Q=0 To 99
For W=0 To 10
CHARACT(W,Q)=Deek(AD) : AD=AD+2 : If CHARACT(W,Q)>32768 : CHARACT(W,Q)=CHARACT(W,Q)-65536 : End If
Next
Next
For Q=150 To 200
SCRIPT(Q)=Deek(AD) : AD=AD+2 : If SCRIPT(Q)>32768 : SCRIPT(Q)=SCRIPT(Q)-65536 : End If
AD=AD+94
Next
Reserve As Work 23,10000
ADS=Start(23) : Loke ADS,0 : ADS=ADS+4 : Poke$ ADS,"� " : ADS=ADS+2
AD=AD-4896
For Q=150 To 200
For W=0 To 15
If(Deek(AD)<32768 and Deek(AD)<>0) or W=0
For E=0 To 2
LINE(E)=Deek(AD) : AD=AD+2 : If LINE(E)>32768 : LINE(E)=LINE(E)-65536 : End If
Doke ADS,LINE(E) : ADS=ADS+2
Next
Doke ADS,0 : ADS=ADS+2
Else
AD=AD+6
End If
Next
Poke$ ADS,"� " : ADS=ADS+2
Next
Poke$ ADS,"� " : Loke Start(23),ADS-Start(23)
F0NT1$=Peek$(AD,1000,"�") : AD=AD+Len(F0NT1$)+1
F0NT2$=Peek$(AD,1000,"�") : AD=AD+Len(F0NT2$)+1
For Q=0 To 99
DEV$(Q)=Peek$(AD,1000,"�") : AD=AD+Len(DEV$(Q))+1
CHAR$(Q)=Peek$(AD,1000,"�") : AD=AD+Len(CHAR$(Q))+1
B0B$(Q)=Peek$(AD,1000,"�") : AD=AD+Len(B0B$(Q))+1
ROOM$(Q)=Peek$(AD,1000,"�") : AD=AD+Len(ROOM$(Q))+1
PIC$(Q)=Peek$(AD,1000,"�") : AD=AD+Len(PIC$(Q))+1
SAM$(Q)=Peek$(AD,1000,"�") : AD=AD+Len(SAM$(Q))+1
Next
For Q=0 To 999
TXT$(Q)=Peek$(AD,1000,"�") : AD=AD+Len(TXT$(Q))+1
Next
Erase 17
End If
End If
End Proc
Procedure L0ADR2[ROOMSEL]
Dim LINE(3)
Trap Open In 1,DEV$(ROOM(ROOMSEL,0))+"GRAC"+Str$(ROOMSEL)+".room"
If Errtrap=0
Q$=DEV$(ROOM(ROOMSEL,0))+"GRAC"+Str$(ROOMSEL)+".room"
L=Lof(1) : Close 1
Reserve As Work 17,L
Bload Q$,17
L1=Length(17)
L2=Leek(Start(17)) : ROOM(ROOMSEL,3)=L2
Erase 17 : Reserve As Work 17,L2
Bload Q$,Start(17)
L3= Extension_5_00E4(Start(17)+4,L1-4)
AD=Start(17)
AD=AD+4
For Q=0 To 15
For W=0 To 11
WALK(W,Q)=Deek(AD) : AD=AD+2 : If WALK(W,Q)>32768 : WALK(W,Q)=WALK(W,Q)-65536 : End If
Next
For W=0 To 11
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
Next
For W=0 To 22
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
Next
For W=0 To 20
F0RE(W,Q)=Deek(AD) : AD=AD+2 : If F0RE(W,Q)>32768 : F0RE(W,Q)=F0RE(W,Q)-65536 : End If
Next
For W=0 To 3
PO1NT(W,Q)=Deek(AD) : AD=AD+2 : If PO1NT(W,Q)>32768 : PO1NT(W,Q)=PO1NT(W,Q)-65536 : End If
Next
Next
For Q=0 To 49
SCRIPT(Q)=Deek(AD) : AD=AD+2 : If SCRIPT(Q)>32768 : SCRIPT(Q)=SCRIPT(Q)-65536 : End If
AD=AD+94
Next
Reserve As Work 20,10000
ADS=Start(20) : Loke ADS,0 : ADS=ADS+4 : Poke$ ADS,"� " : ADS=ADS+2
AD=AD-4800
For Q=0 To 49
For W=0 To 15
If(Deek(AD)<32768 and Deek(AD)<>0) or W=0
For E=0 To 2
LINE(E)=Deek(AD) : AD=AD+2 : If LINE(E)>32768 : LINE(E)=LINE(E)-65536 : End If
Doke ADS,LINE(E) : ADS=ADS+2
Next
Doke ADS,0 : ADS=ADS+2
Else
AD=AD+6
End If
Next
Poke$ ADS,"� " : ADS=ADS+2
Next
Poke$ ADS,"� " : Loke Start(20),ADS-Start(20)
For Q=0 To 15
BACK$(15-Q)=Peek$(AD,1000,"�") : AD=AD+Len(BACK$(15-Q))+1
F0RE$(Q)=Peek$(AD,1000,"�") : AD=AD+Len(F0RE$(Q))+1
Next
Erase 17
End If
End Proc
Procedure L0ADR[ROOMSEL]
Dim LINE(3)
Trap Open In 1,DEV$(ROOM(ROOMSEL,0))+"GRAC"+Str$(ROOMSEL)+".room"
If Errtrap=0
Q$=DEV$(ROOM(ROOMSEL,0))+"GRAC"+Str$(ROOMSEL)+".room"
L=Lof(1) : Close 1
Reserve As Work 17,L
Bload Q$,17
L1=Length(17)
L2=Leek(Start(17)) : ROOM(ROOMSEL,3)=L2
Erase 17 : Reserve As Work 17,L2
Bload Q$,Start(17)
L3= Extension_5_00E4(Start(17)+4,L1-4)
AD=Start(17)
AD=AD+4
For Q=0 To 15
For W=0 To 11
WALK(W,Q)=Deek(AD) : AD=AD+2 : If WALK(W,Q)>32768 : WALK(W,Q)=WALK(W,Q)-65536 : End If
Next
For W=0 To 11
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
Next
For W=0 To 22
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
Next
For W=0 To 20
F0RE(W,Q)=Deek(AD) : AD=AD+2 : If F0RE(W,Q)>32768 : F0RE(W,Q)=F0RE(W,Q)-65536 : End If
Next
For W=0 To 3
PO1NT(W,Q)=Deek(AD) : AD=AD+2 : If PO1NT(W,Q)>32768 : PO1NT(W,Q)=PO1NT(W,Q)-65536 : End If
Next
Next
AD=AD+5*10*2
For Q=0 To 49
SCRIPT(Q)=Deek(AD) : AD=AD+2 : If SCRIPT(Q)>32768 : SCRIPT(Q)=SCRIPT(Q)-65536 : End If
AD=AD+94
Next
Reserve As Work 20,10000
ADS=Start(20) : Loke ADS,0 : ADS=ADS+4 : Poke$ ADS,"� " : ADS=ADS+2
AD=AD-4800
For Q=0 To 49
For W=0 To 15
If(Deek(AD)<32768 and Deek(AD)<>0) or W=0
For E=0 To 2
LINE(E)=Deek(AD) : AD=AD+2 : If LINE(E)>32768 : LINE(E)=LINE(E)-65536 : End If
Doke ADS,LINE(E) : ADS=ADS+2
Next
Doke ADS,0 : ADS=ADS+2
Else
AD=AD+6
End If
Next
Poke$ ADS,"� " : ADS=ADS+2
Next
Poke$ ADS,"� " : Loke Start(20),ADS-Start(20)
For Q=0 To 15
BACK$(15-Q)=Peek$(AD,1000,"�") : AD=AD+Len(BACK$(15-Q))+1
F0RE$(Q)=Peek$(AD,1000,"�") : AD=AD+Len(F0RE$(Q))+1
Next
Erase 17
End If
End Proc
Procedure L0ADCU[CL0SESEL]
Dim LINE(3)
Trap Open In 1,DEV$(CL0SE(CL0SESEL,0))+"GRAC"+Str$(CL0SESEL)+".closeup"
If Errtrap=0
Q$=DEV$(CL0SE(CL0SESEL,0))+"GRAC"+Str$(CL0SESEL)+".closeup"
L=Lof(1) : Close 1
Reserve As Work 17,L
Bload Q$,17
L1=Length(17)
L2=Leek(Start(17)) : CL0SE(CL0SESEL,3)=L2
Erase 17 : Reserve As Work 17,L2
Bload Q$,Start(17)
L3= Extension_5_00E4(Start(17)+4,L1-4)
AD=Start(17)
AD=AD+4
For Q=0 To 15
For W=0 To 8
CZONE(W,Q)=Deek(AD) : AD=AD+2 : If CZONE(W,Q)>32768 : CZONE(W,Q)=CZONE(W,Q)-65536 : End If
Next
Next
For Q=201 To 225
SCRIPT(Q)=Deek(AD) : AD=AD+2 : If SCRIPT(Q)>32768 : SCRIPT(Q)=SCRIPT(Q)-65536 : End If
AD=AD+94
Next
Reserve As Work 24,5000
ADS=Start(24) : Loke ADS,0 : ADS=ADS+4 : Poke$ ADS,"� " : ADS=ADS+2
AD=AD-2400
For Q=201 To 225
For W=0 To 15
If(Deek(AD)<32768 and Deek(AD)<>0) or W=0
For E=0 To 2
LINE(E)=Deek(AD) : AD=AD+2 : If LINE(E)>32768 : LINE(E)=LINE(E)-65536 : End If
Doke ADS,LINE(E) : ADS=ADS+2
Next
Doke ADS,0 : ADS=ADS+2
Else
AD=AD+6
End If
Next
Poke$ ADS,"� " : ADS=ADS+2
Next
Poke$ ADS,"� " : Loke Start(24),ADS-Start(24)
Erase 17
End If
End Proc
Procedure L0ADC
Dim LINE(3)
Q$=DEV$(CONT(0))+"GRAC"+".cont"
Trap Open In 1,Q$
If Errtrap=0
L=Lof(1) : Close 1
Reserve As Work 17,L
Bload Q$,17
L1=Length(17)
L2=Leek(Start(17)) : CONT(3)=L2
Erase 17 : Reserve As Work 17,L2
Bload Q$,Start(17)
L3= Extension_5_00E4(Start(17)+4,L1-4)
AD=Start(17)
AD=AD+4
For Q=0 To 15
CSTUFF(Q)=Deek(AD) : AD=AD+2 : If CSTUFF(Q)>32768 : CSTUFF(Q)=CSTUFF(Q)-65536 : End If
Next
For Q=0 To 9
For W=0 To 11
VERB(W,Q)=Deek(AD) : AD=AD+2 : If VERB(W,Q)>32768 : VERB(W,Q)=VERB(W,Q)-65536 : End If
Next
Next
For Q=0 To 9
SCRIPT(Q+50)=Deek(AD) : AD=AD+2 : If SCRIPT(Q+50)>32768 : SCRIPT(Q+50)=SCRIPT(Q+50)-65536 : End If
AD=AD+94
Next
Reserve As Work 21,2000
ADS=Start(21) : Loke ADS,0 : ADS=ADS+4 : Poke$ ADS,"� " : ADS=ADS+2
AD=AD-960
For Q=0 To 9
For W=0 To 15
If(Deek(AD)<32768 and Deek(AD)<>0) or W=0
For E=0 To 2
LINE(E)=Deek(AD) : AD=AD+2 : If LINE(E)>32768 : LINE(E)=LINE(E)-65536 : End If
Doke ADS,LINE(E) : ADS=ADS+2
Next
Doke ADS,0 : ADS=ADS+2
Else
AD=AD+6
End If
Next
Poke$ ADS,"� " : ADS=ADS+2
Next
Poke$ ADS,"� " : Loke Start(21),ADS-Start(21)
For Q=0 To 9
VERB$(0,Q)=Peek$(AD,1000,"�") : AD=AD+Len(VERB$(0,Q))+1
VERB$(1,Q)=Peek$(AD,1000,"�") : AD=AD+Len(VERB$(1,Q))+1
Next
Erase 17
End If
End Proc
Procedure L0ADI
Dim LINE(3)
Q$=DEV$(INV)+"GRAC"+".inv"
Trap Open In 1,Q$
If Errtrap=0
L=Lof(1) : Close 1
Reserve As Work 17,L
Bload Q$,17
L1=Length(17)
L2=Leek(Start(17)) : INVL=L2
Erase 17 : Reserve As Work 17,L2
Bload Q$,Start(17)
L3= Extension_5_00E4(Start(17)+4,L1-4)
AD=Start(17)
AD=AD+4
For Q=0 To 99
For W=0 To 10
INV(W,Q)=Deek(AD) : AD=AD+2 : If INV(W,Q)>32768 : INV(W,Q)=INV(W,Q)-65536 : End If
Next
Next
For Q=60 To 149
SCRIPT(Q)=Deek(AD) : AD=AD+2 : If SCRIPT(Q)>32768 : SCRIPT(Q)=SCRIPT(Q)-65536 : End If
AD=AD+94
Next
Reserve As Work 22,20000
ADS=Start(22) : Loke ADS,0 : ADS=ADS+4 : Poke$ ADS,"� " : ADS=ADS+2
AD=AD-8640
For Q=60 To 149
For W=0 To 15
If(Deek(AD)<32768 and Deek(AD)<>0) or W=0
For E=0 To 2
LINE(E)=Deek(AD) : AD=AD+2 : If LINE(E)>32768 : LINE(E)=LINE(E)-65536 : End If
Doke ADS,LINE(E) : ADS=ADS+2
Next
Doke ADS,0 : ADS=ADS+2
Else
AD=AD+6
End If
Next
Poke$ ADS,"� " : ADS=ADS+2
Next
Poke$ ADS,"� " : Loke Start(22),ADS-Start(22)
For Q=0 To 99
INV$(Q)=Peek$(AD,1000,"�") : AD=AD+Len(INV$(Q))+1
Next
Erase 17
End If
End Proc
Procedure S4VEA
SIZEALL : SIZE=Param
Reserve As Work 17,SIZE+1000
AD=Start(17)
AD=AD+8
Loke AD,CONT(3) : AD=AD+4
Loke AD,INVL : AD=AD+4
For Q=0 To 99
Loke AD,ROOM(Q,3) : AD=AD+4
Next
For Q=0 To 99
Loke AD,CL0SE(Q,3) : AD=AD+4
Next
Poke AD,INV : AD=AD+1
Poke AD,CONT(0) : AD=AD+1
Poke AD,CONT(1) : AD=AD+1
Poke AD,CONT(2) : AD=AD+1
Poke AD,SONG : AD=AD+1
Poke AD,ST4RTROOM : AD=AD+1
Poke AD,ST4RTCHAR : AD=AD+1
Poke AD,ST4RTPOINT : AD=AD+1
Poke AD,SIZE1 : AD=AD+1
Poke AD,SIZE2 : AD=AD+1
For Q=0 To 99
Poke AD,CHAR(Q,0) : AD=AD+1
Poke AD,CHAR(Q,1) : AD=AD+1
Poke AD,B0B(Q,0) : AD=AD+1
Poke AD,B0B(Q,1) : AD=AD+1
Poke AD,B0B(Q,2) : AD=AD+1
Poke AD,B0B(Q,3) : AD=AD+1
Poke AD,B0B(Q,4) : AD=AD+1
Poke AD,B0B(Q,5) : AD=AD+1
Poke AD,ROOM(Q,0) : AD=AD+1
Poke AD,ROOM(Q,1) : AD=AD+1
Poke AD,ROOM(Q,2) : AD=AD+1
Poke AD,CL0SE(Q,0) : AD=AD+1
Poke AD,CL0SE(Q,1) : AD=AD+1
Poke AD,CL0SE(Q,2) : AD=AD+1
Poke AD,PIC(Q) : AD=AD+1
Poke AD,AN1M(Q) : AD=AD+1
Poke AD,SAM(Q) : AD=AD+1
Next
For Q=0 To 99
For W=0 To 10
Doke AD,CHARACT(W,Q) : AD=AD+2
Next
Next
For Q=150 To 200
Doke AD,SCRIPT(Q) : AD=AD+2
Next
Copy Start(23),Start(23)+Leek(Start(23)) To AD
AD=AD+Leek(Start(23))
For Q=0 To 100
Poke$ AD,COMMENT$(Q,3)+"�" : AD=AD+Len(COMMENT$(Q,3))+1
Next
For Q=0 To 999
Poke$ AD,TXT$(Q)+"�" : AD=AD+Len(TXT$(Q))+1
Next
For Q=0 To 99
Poke$ AD,DEV$(Q)+"�" : AD=AD+Len(DEV$(Q))+1
Poke$ AD,CHAR$(Q)+"�" : AD=AD+Len(CHAR$(Q))+1
Next
Poke$ AD,F0NT1$+"�" : AD=AD+Len(F0NT1$)+1
Poke$ AD,F0NT2$+"�" : AD=AD+Len(F0NT2$)+1
For Q=0 To 99
Poke$ AD,B0B$(Q)+"�" : AD=AD+Len(B0B$(Q))+1
Poke$ AD,ROOM$(Q)+"�" : AD=AD+Len(ROOM$(Q))+1
Poke$ AD,CL0SE$(Q)+"�" : AD=AD+Len(CL0SE$(Q))+1
Poke$ AD,PIC$(Q)+"�" : AD=AD+Len(PIC$(Q))+1
Poke$ AD,AN1M$(Q)+"�" : AD=AD+Len(AN1M$(Q))+1
Poke$ AD,SAM$(Q)+"�" : AD=AD+Len(SAM$(Q))+1
Next
If AD>Start(17)+Length(17) : Print "whoops" : End : End If
Bank Shrink 17 To AD-Start(17)+1
L= Extension_5_00CE(Start(17)+8,Length(17)-8,1,1024,31)
Loke Start(17)+4,AD-Start(17)+1
Poke$ Start(17),"GR20"
Bank Shrink 17 To L+8
Q$=NAME$
If Q$<>""
Trap Bsave Q$,Start(17) To Start(17)+Length(17)
Trap Bsave Q$+".info",Start(18) To Start(18)+Length(18)
End If
Erase 17
End Proc[SAV]
Procedure S4VER[ROOMSEL]
SIZEROOM : SIZE=Param
Reserve As Work 17,SIZE+1000
AD=Start(17)
AD=AD+4
For Q=0 To 15
For W=0 To 11
Doke AD,WALK(W,Q) : AD=AD+2
Next
For W=0 To 11
Doke AD,WALK(W,Q+16) : AD=AD+2
Next
For W=0 To 22
Doke AD,BACK(W,Q) : AD=AD+2
Next
For W=0 To 22
Doke AD,BACK(W,Q+16) : AD=AD+2
Next
For W=0 To 20
Doke AD,F0RE(W,Q) : AD=AD+2
Next
For W=0 To 3
Doke AD,PO1NT(W,Q) : AD=AD+2
Next
Next
For Q=0 To 49
Doke AD,SCRIPT(Q) : AD=AD+2
Next
Copy Start(20),Start(20)+Leek(Start(20)) To AD
AD=AD+Leek(Start(20))
For Q=0 To 100
Poke$ AD,COMMENT$(Q,0)+"�" : AD=AD+Len(COMMENT$(Q,0))+1
Next
For Q=1000 To 1999
Poke$ AD,TXT$(Q)+"�" : AD=AD+Len(TXT$(Q))+1
Next
For Q=0 To 15
Poke$ AD,BACK$(Q)+"�" : AD=AD+Len(BACK$(Q))+1
Poke$ AD,BACK$(Q+16)+"�" : AD=AD+Len(BACK$(Q+16))+1
Poke$ AD,F0RE$(Q)+"�" : AD=AD+Len(F0RE$(Q))+1
Next
If AD>Start(17)+Length(17) : Print "whoops" : End : End If
Bank Shrink 17 To AD-Start(17)+1
L= Extension_5_00CE(Start(17)+4,Length(17)-4,1,1024,31)
Loke Start(17),AD-Start(17)+1 : ROOM(ROOMSEL,3)=AD-Start(17)+1
Bank Shrink 17 To L+4
Q$=DEV$(ROOM(ROOMSEL,0))+"GRAC"+Str$(ROOMSEL)+".room"
Trap Bsave Q$,Start(17) To Start(17)+Length(17)
If Errtrap>0
End
Else
SAV=-1
End If
Erase 17
End Proc[SAV]
Procedure S4VECU[CL0SESEL]
SIZECU : SIZE=Param
Reserve As Work 17,SIZE+1000
AD=Start(17)
AD=AD+4
For Q=0 To 15
For W=0 To 8
Doke AD,CZONE(W,Q) : AD=AD+2
Next
Next
For Q=201 To 225
Doke AD,SCRIPT(Q) : AD=AD+2
Next
Copy Start(24),Start(24)+Leek(Start(24)) To AD
AD=AD+Leek(Start(24))
For Q=0 To 100
Poke$ AD,COMMENT$(Q,4)+"�" : AD=AD+Len(COMMENT$(Q,4))+1
Next
If AD>Start(17)+Length(17) : Print "whoops" : End : End If
Bank Shrink 17 To AD-Start(17)+1
L= Extension_5_00CE(Start(17)+4,Length(17)-4,1,1024,31)
Loke Start(17),AD-Start(17)+1 : CL0SE(CL0SESEL,3)=AD-Start(17)+1
Bank Shrink 17 To L+4
Q$=DEV$(CL0SE(CL0SESEL,0))+"GRAC"+Str$(CL0SESEL)+".closeup"
Trap Bsave Q$,Start(17) To Start(17)+Length(17)
If Errtrap>0
End
Else
SAV=-1
End If
Erase 17
End Proc[SAV]
Procedure S4VEC
SIZEC : SIZE=Param
Reserve As Work 17,SIZE+1000
AD=Start(17)
AD=AD+4
For Q=0 To 15
Doke AD,CSTUFF(Q) : AD=AD+2
Next
For Q=0 To 9
For W=0 To 11
Doke AD,VERB(W,Q) : AD=AD+2
Next
Next
For Q=0 To 9
Doke AD,SCRIPT(Q+50) : AD=AD+2
Next
Copy Start(21),Start(21)+Leek(Start(21)) To AD
AD=AD+Leek(Start(21))
For Q=0 To 100
Poke$ AD,COMMENT$(Q,1)+"�" : AD=AD+Len(COMMENT$(Q,1))+1
Next
For Q=0 To 9
Poke$ AD,VERB$(0,Q)+"�" : AD=AD+Len(VERB$(0,Q))+1
Poke$ AD,VERB$(1,Q)+"�" : AD=AD+Len(VERB$(1,Q))+1
Next
If AD>Start(17)+Length(17) : Print "whoops" : End : End If
Bank Shrink 17 To AD-Start(17)+1
L= Extension_5_00CE(Start(17)+4,Length(17)-4,1,1024,31)
Loke Start(17),AD-Start(17)+1 : CONT(3)=AD-Start(17)+1
Bank Shrink 17 To L+4
Q$=DEV$(CONT(0))+"GRAC"+".cont"
Trap Bsave Q$,Start(17) To Start(17)+Length(17)
If Errtrap>0
End
Else
SAV=-1
End If
Erase 17
End Proc[SAV]
Procedure S4VEI
SIZEI : SIZE=Param
Reserve As Work 17,1000+SIZE
AD=Start(17)
AD=AD+4
For Q=0 To 99
For W=0 To 10
Doke AD,INV(W,Q) : AD=AD+2
Next
Next
For Q=60 To 149
Doke AD,SCRIPT(Q) : AD=AD+2
Next
Copy Start(22),Start(22)+Leek(Start(22)) To AD
AD=AD+Leek(Start(22))
For Q=0 To 100
Poke$ AD,COMMENT$(Q,2)+"�" : AD=AD+Len(COMMENT$(Q,2))+1
Next
For Q=0 To 99
Poke$ AD,INV$(Q)+"�" : AD=AD+Len(INV$(Q))+1
Next
If AD>Start(17)+Length(17) : Print "whoops" : End : End If
Bank Shrink 17 To AD-Start(17)+1
L= Extension_5_00CE(Start(17)+4,Length(17)-4,1,1024,31)
Loke Start(17),AD-Start(17)+1 : INVL=AD-Start(17)+1
Bank Shrink 17 To L+4
Q$=DEV$(INV)+"GRAC"+".inv"
Trap Bsave Q$,Start(17) To Start(17)+Length(17)
If Errtrap>0
End
Else
SAV=-1
End If
Erase 17
End Proc[SAV]
Procedure SIZEALL
AD=808+10+1700+2200+102+Leek(Start(23))
AD=AD+Len(F0NT1$)+1
AD=AD+Len(F0NT2$)+1
For Q=0 To 99
AD=AD+Len(DEV$(Q))+1
AD=AD+Len(CHAR$(Q))+1
AD=AD+Len(B0B$(Q))+1
AD=AD+Len(ROOM$(Q))+1
AD=AD+Len(CL0SE$(Q))+1
AD=AD+Len(PIC$(Q))+1
AD=AD+Len(AN1M$(Q))+1
AD=AD+Len(SAM$(Q))+1
Next
For Q=0 To 100
AD=AD+Len(COMMENT$(Q,3))+1
Next
For Q=0 To 999
AD=AD+Len(TXT$(Q))+1
Next
End Proc[AD]
Procedure SIZEROOM
AD=4+16*2*(12+12+23+23+21+4)+50*2
AD=AD+Leek(Start(20))
For Q=0 To 100
AD=AD+Len(COMMENT$(Q,0))+1
Next
For Q=1000 To 1999
AD=AD+Len(TXT$(Q))+1
Next
For Q=0 To 15
AD=AD+Len(BACK$(Q))+1
AD=AD+Len(BACK$(Q+16))+1
AD=AD+Len(F0RE$(Q))+1
Next
End Proc[AD]
Procedure SIZECU
AD=4+16*9*2+25*2
AD=AD+Leek(Start(24))
For Q=0 To 100
AD=AD+Len(COMMENT$(Q,4))+1
Next
End Proc[AD]
Procedure SIZEC
AD=4+16*2+10*12*2+10*2
AD=AD+Leek(Start(21))
For Q=0 To 100
AD=AD+Len(COMMENT$(Q,0))+1
Next
For Q=0 To 9
AD=AD+Len(VERB$(0,Q))+1
AD=AD+Len(VERB$(1,Q))+1
Next
End Proc[AD]
Procedure SIZEI
AD=4+100*11*2+90*2
AD=AD+Leek(Start(22))
For Q=0 To 100
AD=AD+Len(COMMENT$(Q,2))+1
Next
For Q=0 To 99
AD=AD+Len(INV$(Q))+1
Next
End Proc[AD]
Procedure C0PYA
For Q=0 To 99
If DEV$(Q)<>""
'rooms
For W=0 To 99
If ROOM$(W)<>""
If ROOM(W,0)=Q
L0ADR[W]
S4VER[W]
End If
End If
Next
'closeups
For W=0 To 99
If CL0SE$(W)<>""
If CL0SE(W,0)=Q
L0ADCU[W]
S4VECU[W]
End If
End If
Next
'cont
If CONT(0)=Q
L0ADC
S4VEC
End If
'inv
If INV=Q
L0ADI
S4VEI
End If
End If
Next
End Proc