home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Walkthroughs & Flybys
/
WAITE_GROUP.bin
/
demos
/
sartists
/
92col_so.grp
next >
Wrap
Text File
|
1993-05-16
|
18KB
|
1,001 lines
; The '92 Collection Demo CD team
;
; Produced by David Cook - Manager of Product Demonstrations
; ICL Personal Systems 0483-486868
;
; Directed by William Wisely - MD of Screen Artists Ltd 081-642-1370
; Technical support Phil Shatz
; 3D modeling and animation Kenn Jordan and Michele Bousquet
; Impressionist build Andrew Clatcher
; Typography and Adminstration Lorna McNutt
;
; Music by The Multimedia Music Company - 081-698-0534
; Adrian Sutton, Anthony Aldridge & Peter Buick
;
; Special thanks to Kevin Rayner for supplying an ICL DRS Model 75
;
; The graphics in this presentation were created using the Autodesk
; Multimedia Products: 3D Studio and Animator Pro. What follows
; is the main GRASP program. Grasp is available from Paul Mace
; Software in the USA on 503-488-0224
;
closegl
merge text.dat
opengl 92col
init
top:
databegin list
t1:
if @=="end"
goto t2
else
set ttl @ttl+1
endif
goto t1
t2:
mark @ttl
databegin list
dataskip @cnt
set rnt @
if @rnt=="end"
set cnt 0
break t2
endif
@rnt
set cnt @cnt+1
loop
goto t2
list:
"ergo"
"pcs"
"meet"
"cover"
"csrange"
"cxrange"
"cxe"
"fxrange"
"mxrange"
"meu"
"no_note"
"keyb"
"workergo"
"lock"
"durange"
"ergoarm"
"secrts"
"lcds"
"hightec"
"end"
list_titles:
"Ergonomic"
"PCs"
"Meeting"
"Cover"
"CS Range"
"CX Range"
"CXe Range"
"FX Range"
"MX Range"
"MEU"
"No Notebook"
"Keyboards"
"Workplace"
"Security"
"DU Monitors"
"Ergo Arm"
"SE Range"
"Freestyle"
"Human touch"
"end"
;----------------------
ergo:
pload ns3.pic 1
pload 256black.pal 2
palette 2
pfade 0,1
spread 2 1 30 ;fade in opening picure
pfree 1,2
dload ns3.flc 2 1 ;opening flic
dload fly92.cel 1 1 ;end with background flic
putdff 2 6 0 98 ;first part of opening
putdff 2 8 99 299 ;second part of opening (slower)
putdff 1 6 0 300 ;flic to end with backgound
dfree 1,2
pload mixd.pal 1
pload mixc.pal 2
cload mixd.pic 1 1 ;first picture
palette 1
databegin ergo_dat
headfull
cfade 18,33,104,1
spread 1,2,50
pfree 1,2
cfree 1
texbox
chktime 0 50 1
return
;----------------------
pcs:
pload syscomd1.pal 1
pload syscom.pal 2
pload mixc.pal 3
cload syscomd1.pic 1 1
spread 3,1,20
cfade 18,33,104,1
clrtop
clrtext
spread 1,2,40
databegin pcs_dat
headfull
pfree 1,2,3
cfree 1
texbox
chktime 0 59 2
return
;----------------------
meet:
pload syscomt.pal 1
pload syscom.pal 2
pload andrewt.pal 3
cload andrewd.pic 1 1
dload andrewm.cel 1 1
button
clrtop
clrtext
spread 2,1,25 ;go cream
cfade 18,33,104,1 ;fade andrew start
cfree 1
spread 1,3,2 ;go andrews colours
pfree 1,2,3
putdff 1 2 0 500 33 104 ;play andrew drawing
dfree 1
databegin meet_dat
headfull
cload people.pic 1
cfade 5,33,104,1,15 ;fade actual people pic
cfree 1
pfree 1
texbox
chktime 1 13 3
return
;----------------------
cover:
button
clrtop
clrtext
dload cover.cel 1 1
putdff 1 5 0 100 33 104
dfree 1
databegin cover_dat
texbox
chktime 1 23 4
return
;----------------------
csrange:
button
dload cs.cel 1 1
putdff 1 10 0 100 0 74
clrtext
databegin cs_dat
texbox
chktime 1 33 5
return
;----------------------
cxrange:
button
clrtext
dload cx.cel 1 1
putdff 1 10 0 100 0,84
dfree 1
databegin cx_dat
texbox
chktime 1 44 6
return
;----------------------
cxe:
button
clrtext
dload cxe.cel 1 1
putdff 1 15 0 10 0,84
dfree 1
databegin nxe_dat
texbox
chktime 1 52 7
return
;----------------------
fxrange:
button
clrtext
dload fx.cel 1 1
putdff 1 15 0 10 0,84
dfree 1
databegin fx_dat
texbox
chktime 2 02 8
return
;----------------------
mxrange:
button
clrtext
dload mx.cel 1 1
putdff 1 15 0 10 0,84
dfree 1
databegin mx_dat
texbox
chktime 2 12 9
clrtext
texbox
chktime 2 18 10
return
;----------------------
meu:
button
clrtext
dload meu.cel 1 1
putdff 1 15 0 10 0,84
dfree 1
databegin meu_dat
texbox
chktime 2 26 11
return
;----------------------
no_note:
button
dload close.cel 1 1 ;alternate section for no notebook
putdff 1 6 0 10 0,69
dfree 1
clrtext
databegin nonote_dat
texbox
dload nonote.flc 1 1
putdff 1 2 0 500
pfree 1
dfree 1
cload logol.pic 1 1
pload logod.pal 1
pload logol.pal 2
chktime 2 42 12
cfade 5,33,104,1
spread 2 1 25
pload moncomd.pal 1
palette 1
cload moncomd.pic 1 1
pload moncoml.pal 3
button
clrtext
cfade 18,33,104,1
spread 1 3 40
cfree 1,2,3
pfree 1
databegin crts_dat
texbox
chktime 2 53 13
return
;----------------------
nte:
button
dload close.cel 1 1
putdff 1 5 0 10 0,69
dfree 1
clrtext
dload notemorf.flc 1 1
putdff 1 4 0 100
dfree 1
databegin note_dat
texbox
pload notel.pal 1
pload noteclr.pal 2
cload moncomd.pic 1 1
pload moncoml.pal 3
chktime 2 42 14
button
clrtext
spread 1 2 25
cfade 18,33,104,1
spread 2 3 50
cfree 1,2,3
pfree 1
databegin crts_dat
texbox
chktime 2 53 15
return
;----------------------
keyb:
pload moncoml.pal 1
pload newkeyl.pal 2
pload newkeyd.pal 3
cload newkeyd.pic 1
button
clrtext
spread 1 3 25
cfade 18,33,104,1
spread 3 2 50
cfree 1
pfree 1,2,3
databegin keyb_dat
texbox
chktime 3 5 16
return
;----------------------
workergo:
pload newkeyl.pal 1
pload wired.pal 2
pload wirel.pal 3
cload wired.pic 1 1
button
clrtext
spread 1 2 25
color 0
box 414,104,416,399
cfade 18,33,104,1
spread 2 3 50
databegin wb_dat
headfull
pfree 1
pfree 2
pfree 3
cfree 1
texbox
dload wirefix.cel 1 1
dload wirefixa.cel 2 1
chktime 3 10 17
putdff 1 8 0 500 32 104
mark 3
putdff 2 8 0 35 32 104 ;spin the world
loop
dfree 1 2
chktime 3 40 18
return
;----------------------
lock:
cload lockd.pic 1 1
pload lockd.pal 1
pload lockl.pal 2
button
clrtext
palette 1
cfade 20 120 184 1 10
spread 1 2 50
cfree 1
pfree 1,2
databegin lock_dat
texbox
chktime 3 44 19
dload keyturn.flc 1 1
putdff 1 20 0 1 120 185 ;turn the key
chktime 3 46 20
putdff 1 20 1 2 120 185 ;turn it back
chktime 3 48 21
putdff 1 20 0 1 120 185
chktime 3 50 22
putdff 1 20 1 2 120 185
dfree 1
chktime 3 53 23
return
;----------------------
durange:
pload lockd.pal 1
pload lockl.pal 3
pload willl.pal 2
cload willd.pic 1 1
dload will.flc 1 1
button
clrtop
spread 3 1 25
cfade 18,120,188,1
spread 1 2 50
clrtext
cfree 1
pfree 1,2,3
databegin du_dat
texbox
chktime 3 57 24
putdff 1 5 0 50 32 104
waitkey 10
putdff 1 5 0 50 32 104
return
;----------------------
ergoarm:
pload willl.pal 1
pload movemond.pal 2
pload movemonl.pal 3
cload movemond.pic 1 1
dload movemon.cel 1 1
spread 1 2 25
button
clrtext
cfade 18,32,104,1
spread 2 3 50
cfree 1
pfree 1,2,3
databegin arm_dat
texbox
putdff 1 6 0 500 33 104
dfree 1
chktime 4 17 26
return
;----------------------
secrts:
pload movemonl.pal 1
pload movemond.pal 4
pload displ.pal 3
cload dispd.pic 1 1
spread 1 4 25
button
clrtext
cfade 18,33,104,1
spread 4,3,50
cfree 1
pfree 1,3,4
databegin se_dat
texbox
chktime 4 26 27
return
;----------------------
lcds:
pload displ.pal 1
pload fred.pal 2
pload frel.pal 3
cload fred.pic 1 1
spread 1 2 25
button
clrtext
cfade 18,33,104,1
spread 2,3,50
cfree 1
pfree 1,2,3
databegin fre_dat
texbox
button
chktime 4 34 28
return
;----------------------
hightec:
pload frel.pal 1
pload find.pal 2
pload finl.pal 3
cload find.pic 1 1
spread 1 2 25
button
clrtext
cfade 18,33,104,1
spread 2,3,50
cfree 1
pfree 1,2,3
dload fin1.flc 1 1
dload fin2.flc 2 1
pload fixpal.pal 1
palette 1
putdff 1 6 1 100
dfree 1
putdff 2 6 0 500
dfree 2
pload last.pic 1
pfade 5,1
databegin ht_dat
headfull
chktime 5 19 29
pload 256black.pal 2
spread 1 2 100
pfree 1,2
color 0
clearscr
cdstop
waitkey 1
waitkey 1000
exec reset.exe ;start cd again
cdinit ;check whether CD driver is loaded
if !len(@drive)
setrbg 15 63 63 63
color 15
text "CD ROM Driver has failed"
waitkey
exit
endif
cdplay 2 325
return
;-------------------------------------------------------------------------
chktime:
local min @1
local sec @2
exec findtime.exe @min @sec
return
;-------------------------------------------------------------------------
headfull: ;centre heading over box or screen
fon @
if @=="centre"
window 8,460,632,0
set center on
else
window 24,460,424,0
set center on
endif
text @
window
ffree 1,2
return
texbox: ;write text in the text area
fon 2
window 436,412,636,100
text @
window
ffree 2
return
button: ;push the button
dload button.dff 10 1
putdff 10 5 0 20 498 15
dfree 10
return
clrtext: ;clear the text area
cload clrtext.pic 10 1
cfade 5 431 92 10
cfree 10
return
clrtop: ;clear the title area
cload clrtop.pic 10 1
cfade 5 0 418 10
cfree 10
return
;-------------------------------------------------------------------------
boxx:
set m_call 1
set mh 15
set wide 136
set hot 15
set bck 6
set txt 8
set sha 0
window
cgetbuf 126 0 0 @wide+7 (@ttl*@mh)+10 1
fon 3
set left on
color @bck
rect 0 0 @wide (@ttl*@mh)+10
color @txt
box 0 0 @wide (@ttl*@mh)+10
databegin list_titles
set y @ttl*@mh
mark @ttl
window 10 @y-@mh @wide @y
text @
set y @y-@mh
loop
gosub display
ask:
set z @cnt
set pcnt @cnt
waitkey
ifkey esc out
ifkey down dnarrow
ifkey up uparrow
getkey k
if peekw(adr(@k))==13
fadein 12,126
cfree 126
window
return
endif
goto ask
uparrow:
if @cnt==0
set cnt @ttl-1
else
set cnt @cnt-1
endif
goto proc
dnarrow:
if @cnt==@ttl-1
set cnt 0
else
set cnt @cnt+1
endif
proc:
gosub display2
gosub display
goto ask
out:
exit
display:
set t @cnt-@ttl
dataskip @t
set y ((@ttl*@mh)-(@mh*@cnt)
window 10 @y-@mh @wide @y
color @hot
text @
dataskip -1-@t
return
display2:
set t @z-@ttl
dataskip @t
set y (@ttl*@mh)-(@mh*@z)
window 10 @y-@mh @wide @y
color @txt
text @
dataskip -1-@t
return
menucheck2:
if @m_call!=0
set m_call 0
pload @1 1
pfade 5,1
palette 1
setpage 0,1
pfade 0,1
setpage 0,0
pfree 1
endif
return
fadein:
cfade @1 ("c"$@2)->xoff ("c"$@2)->yoff @2 @3 @4
return
fon:
if @1==1
fload berl24b.set 1
color 4,32
set center on
font 1
fstyle 8,4
fgaps 2,10,0
endif
if @1==2
fload berl18.set 2
color 4,31
set left on
font 2
fstyle 8,4
fgaps 1,7,-4
endif
if @1==3
font 3
color 15,0
set left on
fstyle 8,1
fgaps 1,3
endif
return
init:
exec reset.exe
cdinit ;check whether CD driver is loaded
if !len(@drive)
text "CD ROM Driver not loaded"
waitkey
exit
endif
cdstop
cdplay 2 325
timer
video s
color 0
clearscr
global mod_count 0 ;pointer to next module in data.dat
global cnt 0 ;indice of current routine
global pcnt 0 ;prior value of cnt
global rnt "" ;name of current routine
global ttl 0 ;total number of routines
global m_call 0 ;menu visited flag
global skip 0 ;to be set to 1 if now wait needed in main loop
global rm 24 ;default right margin
fload normal.fnt 3
return
;CDINIT
;
; Checks for CD driver software and sets drive name in global @drive.
;
cdinit:
int 0x2f 0x1500,0
if @bx
global drive chr(@cx+asc("A")) ;set name of CD-ROM drive
else
global drive ""
endif
return
; CDSTATUS
;
; Returns CD Drive status and sets global variables @first and @last.
;
cdstatus:
local buf ofs("123456")
local bseg seg(@buf);
poke @bseg @buf 10 ;Audio Disk Info
cdcmd 3,@buf|(@bseg<<16),6 ;READ IOCTL Input
cdcheck @0,cdstatus
global first peek(@bseg,@buf+1)+0
global last peek(@bseg,@buf+2)+0
poke @bseg @buf 6 ;Device status
cdcmd 3,@buf|(@bseg<<16),5 ;READ IOCTL Input
cdcheck @0,cdstatus
return peekl(@bseg,@buf+1)
; PRTSTATUS
;
; Displays device characteristics and status.
;
prtstatus:
if @1&1
text "Door Open"$chr(10)
else
text "Door Closed"$chr(10)
endif
if @1&2
text "Door unlocked"$chr(10)
else
text "Door locked"$chr(10)
endif
if @1&4
text "Supports cooked and raw reading"$chr(10)
else
text "Supports only cooked reading"$chr(10)
endif
if @1&8
text "Read/write"$chr(10)
else
text "Read only"$chr(10)
endif
if @1&16
text "Data read and plays audio/video tracks"$chr(10)
else
text "Data read only"$chr(10)
endif
if @1&32
text "Supports ISO-9660 interleaving using interleave size and skip factor"$chr(10)
else
text "No interleaving"$chr(10)
endif
if @1&128
text "Supports prefetching requests"$chr(10)
else
text "No Prefetching"$chr(10)
endif
if @1&256
text "Supports audio channel manipulation"$chr(10)
else
text "No audio channel manipulation"$chr(10)
endif
if @1&512
text "Supports HSG and Red Book addressing modes"$chr(10)
else
text "Supports HSG addressing mode"$chr(10)
endif
if @1&2048
text "No disc is present in the drive"$chr(10)
else
text "Disc is present in the drive"$chr(10)
endif
return
; CDPLAY TRACK NUM_SECONDS [MINUTES SECONDS FRAMES]
;
; Starts playing at TRACK for NUM_SECONDS duration.
; MINUTES, SECONDS, and FRAMES (which are a 1/75th of
; a second) are optional offsets into the specified track
; to begin playing.
;
cdplay:
cdtrack @1 @3 @4 @5
cdcmd 132,@0,@2*75
cdcheck @0,cdplay
return
; CDPLAYTO TRACK MINUTES SECONDS FRAMES TRACK MINUTES SECONDS FRAMES
;
; Plays from one TRACK (at offset MINUTES SECONDS FRAMES into it)
; to the second TRACK (at the second offsets into it).
;
cdplayto:
cdtrack @1 @2 @3 @4
local begin @0
cdtrack @5 @6 @7 @8
local end @0
cdcmd 132,@begin,@end-@begin
cdcheck @0,cdplayto
return
; CDSTOP
;
; Stops playing immediately.
;
cdstop:
cdcmd 133,0,0
cdcheck @0,cdstop
return
; CDRESUME
;
; Resumes playing from the last CDSTOP.
;
cdresume:
cdcmd 136,0,0
cdcheck @0,cdresume
return
; CDSEEK TRACK [MINUTES SECONDS FRAMES]
;
; Moves the playing head to a given track to minimize startup time.
; Parameters are the same as CDPLAY.
;
cdseek:
cdtrack @1 @2 @3 @4
cdcmd 131,@0,0
cdcheck @0,cdseek
return
; CDTRACK TRACK MINUTES SECONDS FRAMES
;
; Returns the absolute sector number of a track.
;
cdtrack:
local buf ofs("1234567")
local bseg seg(@buf);
poke @bseg @buf 11 ;Get Audio Track Info
poke @bseg @buf+1 @1 ;track number
cdcmd 3,@buf|(@bseg<<16),7 ;READ IOCTL Input
cdcheck @0,cdtrack
return peekl(@bseg,@buf+2)+(@2*60+@3)*75+@4 ;return track address
; CDEJECT
;
; Opens the CD drive's tray/door.
;
cdeject:
local buf ofs("1")
local bseg seg(@buf);
poke @bseg @buf 0 ;Eject Disk
cdcmd 12,@buf|(@bseg<<16),1 ;WRITE IOCTL Output
cdcheck @0,cdeject
return
; CDCLOSE
;
; Closes the CD's drive tray/door.
;
cdclose:
local buf ofs("1")
local bseg seg(@buf);
poke @bseg @buf 5 ;Close Tray
cdcmd 12,@buf|(@bseg<<16),1 ;WRITE IOCTL Output
cdcheck @0,cdclose
return
; CDCMD
;
; Sets up command data in memory and calls the CD player software.
;
cdcmd:
local req ofs("12345678901234567890123456")
local rseg seg(@req)
poke @rseg @req 13 ;param length
poke @rseg @req+1 0 ;subunit
poke @rseg @req+2 @1 ;command code
pokew @rseg @req+3 0 ;status
pokel @rseg @req+5 0 0 ;reserved
poke @rseg @req+13 1 ;address mode
pokel @rseg @req+14 @2 ;begin
pokel @rseg @req+18 @3 ;length
pokel @rseg @req+22 0 ;reserved
int 0x2f 0x1510,@req,asc(@drive)-asc("A"),,,,,seg(@req)
if peek(@rseg,@req+4)&0x80
databegin
"Unknown Error"
"Write-protect violation"
"Unknown unit"
"Drive not Ready"
"Unknown command"
"CRC error"
"Bad drive request structure length"
"Seek Error"
"Unknown media"
"Sector not found"
"Printer out of paper"
"Write Fault"
"Read Fault"
"General failure"
"Reserved 1"
"Reserved 2"
"Invalid disk change"
dataend
if peek(@rseg,@req+3)<16
dataskip peek(@rseg,@req+3)+1
endif
return @
else
return ""
endif
; CDCHECK
;
; Reports any errors encountered by CDCMD.
;
cdcheck:
if @1!=""
text chr(10)$@2$": "$@1$chr(10)
endif
return