Home » Archimedes archive » Acorn Computing » 1993 10 Mega Disk.adf » 93_10 » Cyborg/!CyborgDem/!RunImage

Cyborg/!CyborgDem/!RunImage

This website contains an archive of files for the Acorn Electron, BBC Micro, Acorn Archimedes, Commodore 16 and Commodore 64 computers, which Dominic Ford has rescued from his private collection of floppy disks and cassettes.

Some of these files were originally commercial releases in the 1980s and 1990s, but they are now widely available online. I assume that copyright over them is no longer being asserted. If you own the copyright and would like files to be removed, please contact me.

Tape/disk: Home » Archimedes archive » Acorn Computing » 1993 10 Mega Disk.adf » 93_10
Filename: Cyborg/!CyborgDem/!RunImage
Read OK:
File size: 55C1 bytes
Load address: 0000
Exec address: 0000
File contents
   10REM >!RunImage
   20
   30REM *******************************************************
   40REM *   LEN 1993 Philip Hawthorne/Alpine Software           *
   50REM *          Adapted for use with Cyborg                *
   60REM *          Acorn Computing Demo Version               *
   70REM *******************************************************
   80
   90ON ERROR MODE12:OSCLI("SHUT"):IF ERR<>17 PRINT"An error has occurred: ";:REPORT:PRINT" (Error code: ";ERR;"/";ERL;")":REPEAT:A=GET:UNTIL A=32:END ELSE END
  100testing = FALSE
  110level=0
  120PROCassemble_copy
  130PROCfind_mode
  140PROCcheck_config
  150
  160DIM object_space data_size
  170
  180DIM ptrdata 512
  190!ptrdata=512:ptrdata!8=16
  200SYS "OS_SpriteOp",9+256,ptrdata
  210SYS "OS_SpriteOp",10+256,ptrdata,"<RunGame$Dir>.Pointers"
  220REM SYS "OS_SpriteOp",36+256,ptrdata,"sight",%0000001,3,13,0,0
  230SYS "OS_SpriteOp",36+256,ptrdata,"sight",%0000001,7,7,0,0
  240REM SYS "OS_SpriteOp",36+256,ptrdata,"tracksight",%0100010,3,13,0,0
  250SYS "OS_SpriteOp",36+256,ptrdata,"tracksight",%0100010,7,7,0,0
  260SYS "OS_Byte",106,1:REM Select pointer #1
  270
  280PROCinit
  290DIM filename 255
  300DIM starsX num_stars*4,starsY num_stars,starsV num_stars
  310
  320FOR I%=0 TO num_stars-1
  330  N%=4*I%
  340  starsX!N% = RND(319)
  350NEXT
  360FOR I%=0 TO num_stars-1
  370  starsY?I% = RND(254)
  380  starsV?I% = RND(4)
  390NEXT
  400
  410SYS "OS_File",5,"<RunGame$Dir>.Alphabet" TO ftype,,,,alphalen
  420IF ftype=0 ERROR 252,"No Alphabet file"
  430
  440alphalen+=16:DIM alphabet alphalen,alpha_info 32,character_ptrs 95*4
  450
  460!alphabet=alphalen:alphabet!4=0:alphabet!8=16:alphabet!12=16
  470SYS "OS_SpriteOp",256+10,alphabet,"<RunGame$Dir>.Alphabet"
  480
  490SYS "OS_SpriteOp",256+40,alphabet,"32" TO ,,,width,height,,charmode
  500SYS "OS_ReadModeVariable",charmode,4 TO ,,XEig
  510SYS "OS_ReadModeVariable",charmode,5 TO ,,YEig
  520width = width << XEig
  530height = height << YEig
  540I%=0
  550FOR C%=32 TO 126
  560  C$=STR$C%
  570  SYS "OS_SpriteOp",24+256,alphabet,C$ TO ,,address
  580  I%!character_ptrs=address
  590  I%+=4
  600NEXT
  610!alpha_info=alphabet
  620alpha_info!4=character_ptrs
  630alpha_info!8=width
  640alpha_info!12=height
  650DIM stars_info 32
  660!stars_info = starsX
  670stars_info!4=starsY
  680stars_info!8=starsV
  690stars_info!12=120
  700
  710DIM tune_names 24*max_tunes,name_ptrs max_tunes*4,tunes_info 32
  720
  730PROCread_tunes("<RunGame$Dir>.Tunes",tune$(),num_tunes)
  740ptr=0:dir$="<Sounds$Dir>."
  750
  760FOR I%=0 TO num_tunes-1
  770  $(tune_names+ptr)=dir$+tune$(I%)+CHR$(0)
  780  !(name_ptrs+4*I%)=tune_names+ptr
  790  ptr+=LEN(tune$(I%))+1+LEN(dir$)
  800NEXT
  810
  820!tunes_info=num_tunes:tunes_info!4=tune_names:tunes_info!8=name_ptrs
  830
  840OSCLI("FX 113")
  850REPEAT
  860CLG
  870p$="Do you want instructions?"
  880PROCfancy_print(p$,(1280-width*LENp$)/2,500,1,2,1,1)
  890
  900SYS "OS_Confirm" TO answer
  910IF answer=ASC"y" THEN PROCinstruct
  920UNTIL answer<>ASC"y"
  930
  940A%=work%
  950B%=sprite_area
  960C%=object_space
  970D%=stars_info
  980E%=alpha_info
  990F%=tunes_info
 1000
 1010CALL _initialise
 1020
 1030H%=work%
 1040
 1050highscore=score(1)
 1060energy = 500:score=0:chargedelay=12
 1070
 1080last_choice=1
 1090OSCLI("FX 113")
 1100CLG
 1110level=0
 1120p$="Loading Demo Level"
 1130PROCfancy_print(p$,(1280-width*LENp$)/2,500,1,2,1,1)
 1140
 1150PROCload_sprites(level)
 1160
 1170SYS "ExS_MusicFade",48:PROCwait(4):*MusicStop
 1180
 1190REPEAT
 1200$filename = "<RunGame$Dir>.GameData"
 1210A%=filename
 1220CALL _getdata
 1230
 1240var_table=H%!40:var_table!8 = highscore
 1250
 1260CASE level OF
 1270WHEN 1:
 1280var_table!180=energy
 1290var_table!4=score
 1300WHEN 3,5,7:
 1310var_table!68=energy
 1320var_table!4=score
 1330var_table!88=chargedelay
 1340ENDCASE
 1350
 1360A%=sprite_area
 1370H%=work%
 1380
 1390PROCcopy_screen
 1400
 1410VDU 24,160;268;1116;766;
 1420MOUSE RECTANGLE 100,292,1080,440
 1430MOUSE ON
 1440
 1450TIME=0
 1460PROCarm3:G%=arm3
 1470IF NOT arm3 THEN H%!&128 = 3
 1480
 1490p$="Get Ready!"
 1500CLG:PROCfancy_print(p$,(1280-width*LENp$)/2,500,1,2,1,1)
 1510A=INKEY(300)
 1520
 1530frames=USR _display
 1540
 1550time=TIME/100
 1560
 1570SYS "ExS_MusicStart"
 1580
 1590oldhigh   = highscore
 1600highscore = var_table!8
 1610score     = var_table!4
 1620
 1630IF INKEY(-6) PRINT frames/time;" frames/second"
 1640
 1650mode=MODE
 1660SYS "OS_ReadModeVariable",mode,4 TO ,,XEig
 1670SYS "OS_ReadModeVariable",mode,5 TO ,,YEig
 1680go_sprite$="gameover"+STR$(mode)
 1690pa_sprite$="playagain"+STR$(mode)
 1700hs_sprite$="highscore"+STR$(mode)
 1710OFF
 1720
 1730CASE level OF
 1740WHEN 0:
 1750energy = var_table!60
 1760completed = var_table!92
 1770ENDCASE
 1780
 1790IF testing PRINT"Energy: ";energy;" completed: ";completed
 1800p$="":IF energy <= 0 THEN p$="You're out of energy!"
 1810IF completed = 0 AND energy > 0 THEN p$="You're out of air!"
 1820IF completed = -1 THEN p$="Poison Gas - You're dead!"
 1830IF p$<>"" PROCfancy_print(p$,(1280-width*LENp$)/2,300,1,2,1,1)
 1840
 1850IF completed<>1 THEN
 1860  PROCend_of_game(delay,go_sprite$,xcoord1,ycoord1)
 1870  PROChighscore(score)
 1880
 1890  IF FNanother(pa_sprite$,xcoord2,ycoord2,key$) THEN
 1900  energy=500
 1910  score=0
 1920
 1930  PROCload_sprites(level)
 1940  another=TRUE
 1950  ELSE
 1960    another=FALSE
 1970  ENDIF
 1980ELSE
 1990  another = FALSE
 2000  PROChighscore(score)
 2010  CLG
 2020  p$="Well done!"
 2030  PROCfancy_print(p$,(1280-width*LENp$)/2,500,1,2,1,1)
 2040  p$="You've completed the demo"
 2050  PROCfancy_print(p$,(1280-width*LENp$)/2,400,1,2,1,1)
 2060ENDIF
 2070IF another THEN
 2080  SYS "ExS_MusicFade",48
 2090  PROCwait(4)
 2100ENDIF
 2110*MusicStop
 2120UNTIL NOT another
 2130
 2140IF save$="YES" THEN PROCsave_highscores("<SaveGame$Dir>.HighScores")
 2150
 2160PROCremove_sounds
 2170
 2180END
 2190
 2200
 2210DEF PROCinit
 2220SYS "OS_Byte",161,191 TO ,,OldMouse
 2230num_stars = 255
 2240max_tunes = 16:DIM tune$(max_tunes)
 2250
 2260splen = FNget_max_spritelen("<RunGame$Dir>")
 2270
 2280splen+= 16:DIM sprite_area splen
 2290
 2300!sprite_area=splen:sprite_area!4=0:sprite_area!8=16:sprite_area!12=16
 2310
 2320SYS "OS_File",5,"<RunGame$Dir>.Sprites2" TO ftype,,,,splen2
 2330IF ftype=0 ERROR 254,"No 'Sprites2' file"
 2340
 2350splen2+= 16:DIM sprite_area2 splen2
 2360
 2370!sprite_area2=splen2:sprite_area2!4=0:sprite_area2!8=16:sprite_area2!12=16
 2380SYS "OS_SpriteOp",256+10,sprite_area2,"<RunGame$Dir>.Sprites2"
 2390
 2400PROCload_sounds("<RunGame$Dir>.Sounds")
 2410
 2420DIM name$(maxhi),score(maxhi)
 2430name$()="Creator":score()=1000
 2440
 2450in%=OPENIN "<RunGame$Dir>.HighScores"
 2460IF in%<>0 THEN
 2470I%=1
 2480WHILE NOT EOF#in% AND I%<=maxhi
 2490  line$=GET$#in%
 2500  IF LEFT$(line$,1)<>";" AND line$<>"" THEN
 2510    IF I%>maxhi THEN ERROR 253,"Too many names in 'HighScore' file"
 2520    Q%=INSTR(line$,":")
 2530    name$(I%)=LEFT$(line$,Q%-1)
 2540    name$(I%)=LEFT$(name$(I%)+STRING$(maxlen," "),maxlen-1)
 2550    Q%+=1
 2560    WHILE MID$(line$,Q%,1)=" ":Q%+=1:ENDWHILE
 2570    value$=MID$(line$,Q%)
 2580    score(I%) = VAL(value$)
 2590    I%+=1
 2600  ENDIF
 2610ENDWHILE
 2620CLOSE#in%
 2630ENDIF
 2640PROCsort_highscores(maxhi)
 2650
 2660SYS "OS_File",5,"<RunGame$Dir>.FCode" TO ftype,,,,codesize
 2670DIM code codesize
 2680
 2690FOR pass = 0 TO 2 STEP 2
 2700PROCassemble(code,pass)
 2710NEXT
 2720
 2730OSCLI("LOAD <RunGame$Dir>.FCode "+STR$~code)
 2740SOUND ON
 2750DIM work% 2000
 2760DIM OSbuffer 256
 2770
 2780PROCset_OSvar("SaveGame$Dir",FNstripCFS(FNread_OSvar("RunGame$Dir")))
 2790
 2800ENDPROC
 2810
 2820
 2830DEF PROCfind_mode
 2840LOCAL dummy$,I%
 2850in% = OPENIN ("<RunGame$Dir>.GameData")
 2860IF in%=0 ERROR 252,"GameData file is missing"
 2870FOR I%=1 TO 7:dummy$=GET$#in%:NEXT
 2880mode=VAL(GET$#in%)
 2890CLOSE#in%
 2900ENDPROC
 2910
 2920DEF PROCcheck_config
 2930in%=OPENIN "<RunGame$Dir>.Config"
 2940delay = 3
 2950screen_delay = 5
 2960xcoord1 = 540
 2970ycoord1 = 500
 2980xcoord2 = 520
 2990ycoord2 = 500
 3000show$="ALWAYS"
 3010save$ = "YES"
 3020key$= "YyNn"
 3030play_tune$ = ""
 3040stop_tune$ = ""
 3050reload$ = "YES"
 3060maxhi = 5
 3070maxlen=16
 3080maxdigits=10
 3090scrnload$="FAST"
 3100data_size = 64*1024
 3110CASE mode OF
 3120WHEN 13:
 3130hsx     = 130
 3140hsy     = 400
 3150slab_colour = 42
 3160hilite = 63
 3170lolite = 21
 3180inset = 0
 3190line = 0
 3200ENDCASE
 3210
 3220IF in%<>0 THEN
 3230WHILE NOT EOF#in%
 3240  line$=GET$#in%
 3250  IF LEFT$(line$,1)<>";" AND line$<>"" THEN
 3260    Q%=INSTR(line$,":")
 3270    label$=LEFT$(line$,Q%-1)
 3280    Q%+=1
 3290    WHILE MID$(line$,Q%,1)=" ":Q%+=1:ENDWHILE
 3300      value$=MID$(line$,Q%)
 3310      value = VAL(value$)
 3320      CASE label$ OF
 3330        WHEN "Delay"
 3340          delay = value
 3350        WHEN "Game over X"
 3360          xcoord1 = value
 3370        WHEN "Game over Y"
 3380          ycoord1 = value
 3390        WHEN "Play again X"
 3400          xcoord2 = value
 3410        WHEN "Play again Y"
 3420          ycoord2 = value
 3430        WHEN "Table X"
 3440          hsx = value
 3450        WHEN "Table Y"
 3460          hsy = value
 3470        WHEN "Keys"
 3480          key$ = value$
 3490        WHEN "Table colour"
 3500          slab_colour= value
 3510        WHEN "Inset colour"
 3520          inset = value
 3530        WHEN "Show table"
 3540          show$ = value$
 3550        WHEN "Save table"
 3560          save$=value$
 3570        WHEN "Table size"
 3580          maxhi = value
 3590          IF maxhi > 16 THEN maxhi =16
 3600        WHEN "Load screen"
 3610          scrnload$ = value$
 3620        WHEN "Loading tune"
 3630          play_tune$ = value$
 3640        WHEN "Stop tune"
 3650          stop_tune$ = value$
 3660        WHEN "Screen delay"
 3670          screen_delay = value
 3680        WHEN "Data size"
 3690          data_size = value*1024
 3700        WHEN "Name length"
 3710          maxlen = value
 3720          IF maxlen > 16 maxlen = 16
 3730        WHEN "Score length"
 3740          maxdigits = value
 3750          IF maxdigits > 10 maxdigits = 10
 3760        WHEN "Reload sprites"
 3770          reload$ = value$
 3780      ENDCASE
 3790  ENDIF
 3800ENDWHILE
 3810CLOSE#in%
 3820ENDIF
 3830ENDPROC
 3840
 3850
 3860DEF PROCload_sounds(dir$)
 3870LOCAL item,voice
 3880DIM infobuffer 512,pathname 256
 3890item = 0:voice=16
 3900$pathname=dir$+"."
 3910
 3920SYS "ExS_Name",31 TO SMvoice$
 3930SMvoice$=$pathname + SMvoice$
 3940
 3950FOR I%=16 TO 31
 3960  SYS "ExS_Remove",I%
 3970NEXT
 3980
 3990SYS "OS_FSControl",28,dir$,,0 TO ,,,files
 4000
 4010IF files>0 THEN
 4020
 4030WHILE item <> -1
 4040  J%=LEN dir$+1
 4050  SYS "OS_GBPB",9,dir$,infobuffer,1,item,512,0 TO ,,,,item
 4060  I%=0
 4070  WHILE infobuffer?I% >0
 4080    pathname?J% = infobuffer?I%
 4090    I%+=1:J%+=1
 4100  ENDWHILE
 4110  pathname?J% = 13
 4120  SYS "ExS_Install",voice,pathname
 4130  voice+=1
 4140ENDWHILE
 4150
 4160ENDIF
 4170ENDPROC
 4180
 4190DEF FNget_max_spritelen(dir$)
 4200LOCAL item,files,biggest,splen
 4210DIM infobuffer 512,pathname 256
 4220item = 0:biggest=0:$pathname=dir$+"."
 4230
 4240SYS "OS_FSControl",28,dir$,,0 TO ,,,files
 4250
 4260IF files>0 THEN
 4270
 4280WHILE item <> -1
 4290  J%=LEN dir$+1
 4300
 4310  SYS "OS_GBPB",9,dir$,infobuffer,1,item,512,0 TO ,,,,item
 4320  I%=0
 4330  WHILE infobuffer?I% >0
 4340    pathname?J% = infobuffer?I%
 4350    I%+=1:J%+=1
 4360  ENDWHILE
 4370  pathname?J% = 13
 4380  SYS "OS_File",5,pathname TO ,,ftype,,splen
 4390  ftype = (ftype >> 8) AND &fff
 4400  IF ftype = &ff9 AND splen > biggest THEN biggest = splen
 4410ENDWHILE
 4420ENDIF
 4430=biggest
 4440
 4450
 4460DEF PROCassemble(org,pass)
 4470P%=org:O%=org
 4480[OPT pass
 4490.jump_table
 4500
 4510
 4520._activate_object    b dummy
 4530._deactivate_object  b dummy
 4540._show_object        b dummy
 4550._hide_object        b dummy
 4560._swop_objects       b dummy
 4570._set_coords         b dummy
 4580._shift_object       b dummy
 4590._copy_coords        b dummy
 4600._reverse_vertical   b dummy
 4610._reverse_horizontal b dummy
 4620._set_Xvelocity      b dummy
 4630._set_Yvelocity      b dummy
 4640._attach_to_path     b dummy
 4650._load_screen        b dummy
 4660._scroll_h           b dummy
 4670._scroll_v           b dummy
 4680._put_var            b dummy
 4690._add_var            b dummy
 4700._subtract_var       b dummy
 4710._make_sound         b dummy
 4720._wait               b dummy
 4730._sound_off          b dummy
 4740._sound_on           b dummy
 4750._copy_var           b dummy
 4760._multiply_var       b dummy
 4770._divide_var         b dummy
 4780._print_var          b dummy
 4790._display_var        b dummy
 4800._text_colour        b dummy
 4810._text_bgdcol        b dummy
 4820._initialise         b dummy
 4830._getdata            b dummy
 4840._display            b dummy
 4850
 4860]
 4870
 4880FOR I%=1 TO 256
 4890[OPT pass
 4900b dummy
 4910]
 4920NEXT
 4930[OPT pass
 4940.dummy
 4950mov pc,r14
 4960]
 4970ENDPROC
 4980
 4990DEF PROCread_tunes(name$,tune$(),RETURN I%)
 5000LOCAL chn%,ptr,chr$
 5010I%=0
 5020chn%=OPENIN(name$)
 5030IF chn%<>0 THEN
 5040  WHILE NOT EOF#chn%
 5050    tune$(I%)=""
 5060    IF EOF#chn% CLOSE#chn%:ENDPROC
 5070    chr%=BGET#chn%
 5080    WHILE chr%>31
 5090      chr$=CHR$(chr%)
 5100      tune$(I%)+=chr$
 5110      IF EOF#chn% I%+=1:CLOSE#chn%:ENDPROC
 5120      chr%=BGET#chn%
 5130    ENDWHILE
 5140    I%+=1
 5150    IF I%=max_tunes ERROR 1,"Too many tunes in 'Tunes' file"
 5160  ENDWHILE
 5170  CLOSE#chn%
 5180ENDIF
 5190ENDPROC
 5200
 5210DEF PROCend_of_game(delay,sprite$,X,Y)
 5220LOCAL time,width,height,right,top
 5230SYS "OS_SpriteOp",256+40,sprite_area2,sprite$ TO ,,,width,height
 5240width  = width << XEig
 5250height = height << YEig
 5260right = X + width
 5270top   = Y + height
 5280SYS "OS_SpriteOp",256+16,sprite_area2,"temp",0,X,Y,right,top
 5290SYS "OS_SpriteOp",256+34,sprite_area2,sprite$,X,Y,8
 5300time=TIME
 5310REPEAT UNTIL TIME>time+delay*100
 5320SYS "OS_SpriteOp",256+34,sprite_area2,"temp",X,Y,8
 5330ENDPROC
 5340
 5350DEF FNanother(sprite$,X,Y,key$)
 5360LOCAL Answer,width,height,right,top
 5370
 5380SYS "OS_SpriteOp",256+40,sprite_area2,sprite$ TO ,,,width,height
 5390width  = width << XEig
 5400height = height << YEig
 5410right = X + width
 5420top   = Y + height
 5430SYS "OS_SpriteOp",256+16,sprite_area2,"temp",0,X,Y,right,top
 5440SYS "OS_SpriteOp",256+34,sprite_area2,sprite$,X,Y,8
 5450
 5460MOUSE ON
 5470SYS "OS_Confirm" TO Answer
 5480MOUSE OFF
 5490IF Answer=ASC"y" THEN =TRUE ELSE =FALSE
 5500
 5510
 5520DEF PROChighscore(score)
 5530LOCAL I%,J%,T$,newhigh,name$,hsw,hsh
 5540IF show$="NEVER" THEN ENDPROC
 5550
 5560J%=maxhi:newhigh=FALSE
 5570WHILE score>score(J%) AND J%>0
 5580  newhigh=TRUE
 5590  J%-=1
 5600ENDWHILE
 5610IF NOT newhigh AND show$="NEWSCORE" THEN ENDPROC
 5620
 5630SYS "OS_SpriteOp",256+40,sprite_area2,hs_sprite$ TO ,,,hswidth,hsheight
 5640hswidth  = hswidth << XEig
 5650hsheight = hsheight << YEig
 5660hsw=maxlen*width+maxdigits*width+3*width+48+24
 5670hsh=maxhi*2*height+24+hsheight
 5680
 5690PROCslab(hsx,hsy,hsw,hsh,16,hilite,slab_colour,lolite,line)
 5700SYS "OS_SpriteOp",256+34,sprite_area2,hs_sprite$,hsx+(hsw-hswidth)/2,hsy+hsh-hsheight-16,8
 5710
 5720FOR I%=0 TO maxhi-1
 5730  PROCslab(hsx+24,hsy+24+I%*2*height,width*3,height+16,4,lolite,inset,hilite,line)
 5740  T$=STR$(maxhi-I%)
 5750  PROCfancy_print(T$,hsx+24+(3-LENT$)*width/2,hsy+24+I%*2*height+8,1,1,1,1)
 5760  PROCslab(hsx+24+width*3+12,hsy+24+I%*2*height,maxlen*width,height+16,4,lolite,inset,hilite,line)
 5770  PROCfancy_print(name$(maxhi-I%),hsx+24+width*3+20,hsy+24+I%*2*height+8,1,1,1,1)
 5780  PROCslab(hsx+24+width*3+20+maxlen*width,hsy+24+I%*2*height,maxdigits*width,height+16,4,lolite,inset,hilite,line)
 5790  PROCfancy_print(STR$(score(maxhi-I%)),hsx+24+width*3+28+maxlen*width,hsy+24+I%*2*height+8,1,1,1,1)
 5800NEXT
 5810IF newhigh THEN
 5820  J%+=1
 5830  FOR I%=maxhi TO J%+1 STEP -1
 5840    name$(I%)=name$(I%-1)
 5850    score(I%)=score(I%-1)
 5860    PROCfancy_print(name$(I%),hsx+24+width*3+20,hsy+24+(maxhi-I%)*2*height+8,1,1,1,1)
 5870    PROCfancy_print(STR$(score(I%)),hsx+24+width*3+28+maxlen*width,hsy+24+(maxhi-I%)*2*height+8,1,1,1,1)
 5880  NEXT
 5890  PROCfancy_print(STRING$(maxlen-1," "),hsx+24+width*3+20,hsy+24+(maxhi-J%)*2*height+8,1,1,1,1)
 5900  PROCfancy_print(STRING$(maxdigits-1," "),hsx+24+width*3+28+maxlen*width,hsy+24+(maxhi-J%)*2*height+8,1,1,1,1)
 5910  PROCfancy_print(STR$(score),hsx+24+width*3+28+maxlen*width,hsy+24+(maxhi-J%)*2*height+8,1,1,1,1)
 5920  name$=FNinput_name(hsx+24+width*3+20,hsy+24+(maxhi-J%)*2*height+8,FALSE)
 5930  name$(J%)=LEFT$(name$+STRING$(maxlen," "),maxlen-1)
 5940  score(J%)=score
 5950  PROCfancy_print(name$(J%),hsx+24+width*3+20,hsy+24+(maxhi-J%)*2*height+8,1,1,1,1)
 5960ENDIF
 5970ENDPROC
 5980
 5990DEF FNinput_name(X,Y,hide)
 6000LOCAL chr,I%,name$,dummy
 6010*FX21,0
 6020*FX4,1
 6030PROCfancy_print("_",X,Y,1,1,1,1)
 6040chr=GET
 6050WHILE chr<>13 AND I%<(maxlen-1)
 6060  IF chr<127 AND chr>31 THEN
 6070  name$+=CHR$(chr):I%+=1
 6080  IF hide THEN chr=42
 6090  PROCfancy_print(CHR$(chr),X,Y,1,1,1,1)
 6100  IF I%<(maxlen-1) PROCfancy_print("_",X+width,Y,1,1,1,1)
 6110  X+=width
 6120  ELSE
 6130  IF chr=127 AND I%>0 THEN
 6140    PROCfancy_print(" ",X,Y,1,1,1,1)
 6150    I%-=1
 6160    X-=width
 6170    PROCfancy_print("_",X,Y,1,1,1,1)
 6180    name$=LEFT$(name$,I%)
 6190  ENDIF
 6200  ENDIF
 6210  chr=GET
 6220ENDWHILE
 6230*FX4,0
 6240=name$
 6250
 6260DEF PROCfancy_print(text$,X,Y,Xmult,Ymult,Xdiv,Ydiv)
 6270LOCAL I%,ch$,initX
 6280initX=X
 6290DIM scale 16
 6300scale!0=Xmult:scale!4=Ymult:scale!8=Xdiv:scale!12=Ydiv
 6310FOR I%=1 TO LEN text$
 6320  ch$=STR$(ASC(MID$(text$,I%,1)))
 6330  IF ch$="126" THEN ch$="32"
 6340  IF ch$="124" THEN
 6350    Y-=height*Ymult DIV Ydiv
 6360    X=initX
 6370  ELSE
 6380    SYS "OS_SpriteOp",256+52,alphabet,ch$,X,Y,8,scale,0
 6390    X+=width*Xmult DIV Xdiv
 6400  ENDIF
 6410NEXT
 6420ENDPROC
 6430
 6440DEF PROCslab(x,y,l,h,w,c1,c2,c3,c4)
 6450GCOLc1
 6460RECTANGLE FILL x,y,l,h
 6470GCOL c3
 6480MOVE x+l-w,y+h-w:MOVE x+l,y+h
 6490PLOT85,x+l,y+h-w
 6500RECTANGLE FILL x+w,y,l-w,h-w
 6510MOVE x,y:MOVE x+w,y:PLOT 85,x+w,y+w
 6520GCOL c4
 6530LINE x,y+h,x+w,y+h-w
 6540LINE x+l,y,x+l-w,y+w
 6550GCOL c2 TINT 64
 6560RECTANGLE FILL x+w,y+w,l-2*w,h-2*w
 6570ENDPROC
 6580
 6590DEF PROCsort_highscores(num)
 6600LOCAL I%,swop
 6610REPEAT
 6620  swop=FALSE
 6630  FOR I%=1 TO num-1
 6640    IF score(I%) < score(I%+1) THEN
 6650      swop=TRUE
 6660      SWAP score(I%),score(I%+1)
 6670      SWAP name$(I%),name$(I%+1)
 6680    ENDIF
 6690  NEXT
 6700  num-=1
 6710UNTIL NOT swop
 6720ENDPROC
 6730
 6740DEF PROCsave_highscores(file$)
 6750LOCAL out%,I%,header$,date$,year$
 6760
 6770LOCAL ERROR:ON ERROR LOCAL IF ERR=&108C9 OR ERR=&108CA PROCfancy_print("  Couldn't save HighScore Table.  |  Please move write-protect tab   |to 'write' position and hit RETURN",80,300,1,1,1,1):dummy=GET ELSE PRINTREPORT$;" (Error code: ";~ERR;")":dummy=GET:ENDPROC
 6780
 6790SYS "XOS_ReadVarVal","Sys$Date",OSbuffer,30
 6800OSbuffer?10=13
 6810date$=$OSbuffer
 6820SYS "XOS_ReadVarVal","Sys$Year",OSbuffer,30
 6830OSbuffer?4=13
 6840year$=$OSbuffer
 6850
 6860out%=OPENOUT file$
 6870header$="; Creator high score table ("+date$+" "+year$+")"
 6880BPUT#out%,header$
 6890FOR I%=1 TO maxhi
 6900  BPUT#out%,name$(I%)+": "+STR$(score(I%))
 6910NEXT
 6920CLOSE#out%
 6930OSCLI("SetType "+file$+" Text")
 6940ENDPROC
 6950
 6960DEF PROCarm3
 6970LOCAL ERROR
 6980ON ERROR LOCAL arm3=FALSE:ENDPROC
 6990*Cache ON
 7000IF INKEY(-1) THEN
 7010arm3=FALSE
 7020*Cache OFF
 7030ELSE
 7040arm3=TRUE
 7050ENDIF
 7060ENDPROC
 7070
 7080DEF FNstripCFS(name$)
 7090LOCAL I%
 7100I%=INSTR(name$,"#")
 7110=MID$(name$,I%+1)
 7120
 7130DEF FNread_OSvar(var$)
 7140LOCAL bytes
 7150SYS "XOS_ReadVarVal",var$,OSbuffer,255,0 TO ,,bytes
 7160OSbuffer?bytes=13
 7170=$OSbuffer
 7180
 7190DEF PROCset_OSvar(var$,val$)
 7200IF val$="" THEN val$=CHR$34+CHR$34
 7210OSCLI("Set "+var$+" "+val$)
 7220ENDPROC
 7230
 7240DEF PROCwait(seconds)
 7250LOCAL time
 7260time=TIME
 7270REPEAT UNTIL TIME>time+seconds*100
 7280ENDPROC
 7290
 7300DEF PROCcopy_screen
 7310DIM block 32
 7320!block = 148:block!8=-1
 7330SYS "OS_ReadVduVariables",block,block+12
 7340SYS "OS_ReadModeVariable",-1,7 TO ,,C%
 7350A%=block!12+C%:B%=block!12
 7360CALL copy
 7370ENDPROC
 7380
 7390DEF PROCassemble_copy
 7400DIM code 100
 7410FOR pass = 0 TO 2 STEP 2
 7420P%=code
 7430[OPT pass
 7440.copy
 7450LDR R3,[R0],#4
 7460STR R3,[R1],#4
 7470SUBS R2,R2,#4
 7480BNE copy
 7490MOV PC,R14
 7500]
 7510NEXT
 7520ENDPROC
 7530
 7540DEF PROCload_sprites(level)
 7550LOCAL type,len
 7560SYS "OS_File",5,"<RunGame$Dir>.Sprites" TO type,,,,len
 7570IF type=0 ERROR 255,"No Sprites file"
 7580IF len>splen ERROR 250,"Sprites file too long"
 7590sprite_area!4=0:sprite_area!8=16:sprite_area!12=16
 7600OSCLI("LOAD <RunGame$Dir>.Sprites "+STR$~(sprite_area+4))
 7610ENDPROC
 7620
 7630
 7640DEF PROCremove_sounds
 7650LOCAL I%
 7660FOR I%=16 TO 31
 7670  SYS "ExS_Remove",I%
 7680NEXT
 7690IF RIGHT$(SMvoice$,1)<>"." THEN SYS "ExS_Install",31,SMvoice$
 7700ENDPROC
 7710
 7720DEF PROCinstruct
 7730RESTORE
 7740OSCLI("Print <RunGame$Dir>.Font")
 7750COLOUR 12
 7760VDU 28,6,22,33,8,12,14
 7770READ line$
 7780WHILE line$<>"END"
 7790IF line$="/" THEN PRINT' ELSE dummy=FNslow_print(line$,0.06,TRUE)
 7800
 7810IF dummy THEN line$="END" ELSE READ line$
 7820ENDWHILE
 7830OSCLI("Print <RunGame$Dir>.NormalFont")
 7840PRINT'"   Hit Space to continue":A=GET
 7850ENDPROC
 7860
 7870REM  ****************************
 7880DATA "       Instructions",/
 7890DATA (Hit Shift to continue or
 7900DATA any other key to start game)
 7910DATA /
 7920DATA This Level of Cyborg has
 7930DATA been specially written for
 7940DATA the Acorn Computing MegaDisk
 7950DATA and is not available
 7960DATA elsewhere.,/
 7970DATA Due to space restrictions
 7980DATA on the MegaDisk it is not
 7990DATA as large as the levels in
 8000DATA the full version which
 8010DATA includes 4 other much larger
 8020DATA arcade levels & 3 adventure
 8030DATA stages compressed onto three
 8040DATA discs. This demo does not
 8050DATA contain any adventure stages
 8060DATA /
 8070REM  ****************************
 8080DATA The demo runs on all Acorn
 8090DATA 32 bit machines including
 8100DATA those with only 1 Megabyte.,/
 8110DATA The full version requires 2
 8120DATA Megabytes or more. It is
 8130DATA compatible with RISC OS 2 &
 8140DATA 3 and includes a hard disc
 8150DATA installation program.,/
 8160DATA ..... SPECIAL OFFER ......,/
 8170DATA "Cyborg has an RRP of �25.95."
 8180DATA Readers of Acorn Computing
 8190DATA "can save �5.00 by ordering"
 8200DATA "a copy for only �20.95 plus"
 8210DATA "�1.00 p&p direct from Alpine"
 8220DATA "Software, quoting order"
 8230DATA number AC93C. Please send a
 8240DATA cheque or postal order for
 8250DATA "�21.95 or phone/fax us with"
 8260DATA your credit card details,/
 8270DATA "  ALPINE SOFTWARE"
 8280DATA "  PO BOX 25"
 8290DATA "  PORTADOWN"
 8300DATA "  CRAIGAVON"
 8310DATA "  BT63 5UT",/
 8320DATA " Tel/Fax 0762 342510",/,/
 8330DATA Weapons -,/
 8340DATA Your standard weapon is a
 8350DATA GC152L laser aimed by moving
 8360DATA the sight with the mouse.,/
 8370DATA Move the sight as far as
 8380DATA possible to the left or
 8390DATA right to scroll the screen.,/
 8400DATA As you play you may be able
 8410DATA to pick up other weapons.,/
 8420DATA To fire any weapon make sure
 8430DATA it is selected (see later)
 8440DATA and click SELECT.,/
 8450DATA To select a weapon click
 8460DATA the MENU button until the
 8470DATA right-hand indicator lights
 8480DATA up beside the weapon's icon
 8490DATA in the status panel at the
 8500DATA top left of the screen.,/
 8510DATA A weapon is available if the
 8520DATA left-hand light beside it is
 8530DATA lit.,/
 8540
 8550DATA If you look at the weapon
 8560DATA status panel at the moment
 8570DATA you should see that the only
 8580DATA weapon available is the
 8590DATA "laser which is, naturally,"
 8600DATA the selected weapon.,/
 8610
 8620DATA To activate your tractor
 8630DATA beam to pick up objects and
 8640DATA operate switches etc. click
 8650DATA the ADJUST button and the
 8660DATA sight will change. Aim at
 8670DATA the object and click SELECT.,/
 8680DATA Click ADJUST again to turn
 8690DATA the tractor beam off.,/
 8700DATA The red bar at the top of
 8710DATA the screen is your energy
 8720DATA level. Your energy is used
 8730DATA by firing your weapons and
 8740DATA by being hit by enemy fire.,/
 8750DATA The energy level can be
 8760DATA restored by picking up
 8770DATA energy pods.,/
 8780
 8790DATA The blue bar shows the
 8800DATA amount of air remaining in
 8810DATA your CyberSuit. If the air
 8820DATA supply runs out you'll die.,/
 8830REM  ****************************
 8840DATA Some of the creatures you
 8850DATA will encounter are classed
 8860DATA as FGA's - Friendly Green
 8870DATA Aliens! You should avoid
 8880DATA shooting these as this will
 8890DATA incur a penalty in the form
 8900DATA of lost credits and worse!,/
 8910
 8920DATA The aim of this demo level
 8930DATA is to escape from the
 8940DATA dungeon by collecting FOUR
 8950DATA Xylenium crystals. As each
 8960DATA one is collected a crystal
 8970DATA indicator above the door at
 8980DATA the far right side of the
 8990DATA level will light up.,/
 9000DATA When all four are lit click
 9010DATA the switch beside the door
 9020DATA and it will open and allow
 9030DATA you to escape...,/
 9040DATA     .... GOOD LUCK ....
 9050REM  ****************************
 9060DATA END
 9070
 9080DEF FNslow_print(text$,delay,interrupt)
 9090LOCAL I%,ch$
 9100FOR I%=1 TO LENtext$
 9110ch$=MID$(text$,I%,1)
 9120IF ch$="\" THEN PRINT:ch$=CHR$10
 9130PRINTch$;
 9140IF interrupt AND INKEY(-99) THEN PRINT:=TRUE ELSE PROCwait(delay)
 9150NEXT
 9160PRINT
 9170=FALSE

� >!RunImage

=� *******************************************************
(=� *   � 1993 Philip Hawthorne/Alpine Software           *
2=� *          Adapted for use with Cyborg                *
<=� *          Acorn Computing Demo Version               *
F=� *******************************************************
P
Zl� � �12:�("SHUT"):� �<>17 �"An error has occurred: ";:�:�" (Error code: ";�;"/";�;")":�:A=�:� A=32:� � �
dtesting = �
nlevel=0
x�assemble_copy
��find_mode
��check_config
�
�� object_space data_size
�
�� ptrdata 512
�!ptrdata=512:ptrdata!8=16
�"ș "OS_SpriteOp",9+256,ptrdata
�<ș "OS_SpriteOp",10+256,ptrdata,"<RunGame$Dir>.Pointers"
�@� SYS "OS_SpriteOp",36+256,ptrdata,"sight",%0000001,3,13,0,0
�<ș "OS_SpriteOp",36+256,ptrdata,"sight",%0000001,7,7,0,0
�E� SYS "OS_SpriteOp",36+256,ptrdata,"tracksight",%0100010,3,13,0,0
�Aș "OS_SpriteOp",36+256,ptrdata,"tracksight",%0100010,7,7,0,0
*ș "OS_Byte",106,1:� Select pointer #1

	�init
"� filename 255
,:� starsX num_stars*4,starsY num_stars,starsV num_stars
6
@� I%=0 � num_stars-1
J
  N%=4*I%
T  starsX!N% = �(319)
^�
h� I%=0 � num_stars-1
r  starsY?I% = �(254)
|  starsV?I% = �(4)
��
�
�?ș "OS_File",5,"<RunGame$Dir>.Alphabet" � ftype,,,,alphalen
�&� ftype=0 � 252,"No Alphabet file"
�
�Falphalen+=16:� alphabet alphalen,alpha_info 32,character_ptrs 95*4
�
�@!alphabet=alphalen:alphabet!4=0:alphabet!8=16:alphabet!12=16
�=ș "OS_SpriteOp",256+10,alphabet,"<RunGame$Dir>.Alphabet"
�
�Eș "OS_SpriteOp",256+40,alphabet,"32" � ,,,width,height,,charmode
�0ș "OS_ReadModeVariable",charmode,4 � ,,XEig
�0ș "OS_ReadModeVariable",charmode,5 � ,,YEig
width = width << XEig
height = height << YEig
I%=0
&� C%=32 � 126
0  C$=�C%
:5  ș "OS_SpriteOp",24+256,alphabet,C$ � ,,address
D  I%!character_ptrs=address
N  I%+=4
X�
b!alpha_info=alphabet
lalpha_info!4=character_ptrs
valpha_info!8=width
�alpha_info!12=height
�� stars_info 32
�!stars_info = starsX
�stars_info!4=starsY
�stars_info!8=starsV
�stars_info!12=120
�
�A� tune_names 24*max_tunes,name_ptrs max_tunes*4,tunes_info 32
�
�8�read_tunes("<RunGame$Dir>.Tunes",tune$(),num_tunes)
�ptr=0:dir$="<Sounds$Dir>."
�
�� I%=0 � num_tunes-1
+  $(tune_names+ptr)=dir$+tune$(I%)+�(0)
&  !(name_ptrs+4*I%)=tune_names+ptr
!  ptr+=�(tune$(I%))+1+�(dir$)
 �
*
4H!tunes_info=num_tunes:tunes_info!4=tune_names:tunes_info!8=name_ptrs
>
H�("FX 113")
R�
\�
f"p$="Do you want instructions?"
p3�fancy_print(p$,(1280-width*�p$)/2,500,1,2,1,1)
z
�ș "OS_Confirm" � answer
�� answer=�"y" � �instruct
�� answer<>�"y"
�
�A%=work%
�B%=sprite_area
�C%=object_space
�D%=stars_info
�E%=alpha_info
�F%=tunes_info
�
�� _initialise
�
H%=work%

highscore=score(1)
$'energy = 500:score=0:chargedelay=12
.
8last_choice=1
B�("FX 113")
L�
Vlevel=0
`p$="Loading Demo Level"
j3�fancy_print(p$,(1280-width*�p$)/2,500,1,2,1,1)
t
~�load_sprites(level)
�
�-ș "ExS_MusicFade",48:�wait(4):*MusicStop
�
��
�($filename = "<RunGame$Dir>.GameData"
�A%=filename
�� _getdata
�
�+var_table=H%!40:var_table!8 = highscore
�
�Ȏ level �
�� 1:
var_table!180=energy

var_table!4=score
� 3,5,7:
var_table!68=energy
(var_table!4=score
2var_table!88=chargedelay
<�
F
PA%=sprite_area
ZH%=work%
d
n�copy_screen
x
�� 24,160;268;1116;766;
�ȗ ȓ 100,292,1080,440
�ȗ �
�
��=0
��arm3:G%=arm3
�� � arm3 � H%!&128 = 3
�
�p$="Get Ready!"
�5�:�fancy_print(p$,(1280-width*�p$)/2,500,1,2,1,1)
�A=�(300)
�
�frames=� _display

time=�/100

"ș "ExS_MusicStart"
,
6oldhigh   = highscore
@highscore = var_table!8
Jscore     = var_table!4
T
^*� �(-6) � frames/time;" frames/second"
h
r
mode=�
|,ș "OS_ReadModeVariable",mode,4 � ,,XEig
�,ș "OS_ReadModeVariable",mode,5 � ,,YEig
�!go_sprite$="gameover"+�(mode)
�"pa_sprite$="playagain"+�(mode)
�"hs_sprite$="highscore"+�(mode)
��
�
�Ȏ level �
�� 0:
�energy = var_table!60
�completed = var_table!92
��
�
�9� testing �"Energy: ";energy;" completed: ";completed
4p$="":� energy <= 0 � p$="You're out of energy!"
:� completed = 0 � energy > 0 � p$="You're out of air!"
5� completed = -1 � p$="Poison Gas - You're dead!"
&<� p$<>"" �fancy_print(p$,(1280-width*�p$)/2,300,1,2,1,1)
0
:� completed<>1 �
D4  �end_of_game(delay,go_sprite$,xcoord1,ycoord1)
N  �highscore(score)
X
b3  � �another(pa_sprite$,xcoord2,ycoord2,key$) �
l  energy=500
v
  score=0
�
�  �load_sprites(level)
�  another=�
�  �
�    another=�
�  �
��
�  another = �
�  �highscore(score)
�  �
�  p$="Well done!"
�5  �fancy_print(p$,(1280-width*�p$)/2,500,1,2,1,1)
�$  p$="You've completed the demo"
5  �fancy_print(p$,(1280-width*�p$)/2,400,1,2,1,1)
�
� another �
   ș "ExS_MusicFade",48
*  �wait(4)
4�
>*MusicStop
H� � another
R
\A� save$="YES" � �save_highscores("<SaveGame$Dir>.HighScores")
f
p�remove_sounds
z
��
�
�
�� �init
�%ș "OS_Byte",161,191 � ,,OldMouse
�num_stars = 255
�%max_tunes = 16:� tune$(max_tunes)
�
�/splen = �get_max_spritelen("<RunGame$Dir>")
�
�"splen+= 16:� sprite_area splen
�
�I!sprite_area=splen:sprite_area!4=0:sprite_area!8=16:sprite_area!12=16
	
	=ș "OS_File",5,"<RunGame$Dir>.Sprites2" � ftype,,,,splen2
	(� ftype=0 � 254,"No 'Sprites2' file"
	$
	.%splen2+= 16:� sprite_area2 splen2
	8
	BN!sprite_area2=splen2:sprite_area2!4=0:sprite_area2!8=16:sprite_area2!12=16
	LAș "OS_SpriteOp",256+10,sprite_area2,"<RunGame$Dir>.Sprites2"
	V
	`(�load_sounds("<RunGame$Dir>.Sounds")
	j
	t� name$(maxhi),score(maxhi)
	~"name$()="Creator":score()=1000
	�
	�$in%=� "<RunGame$Dir>.HighScores"
	�� in%<>0 �
	�I%=1
	�ȕ � �#in% � I%<=maxhi
	�  line$=�#in%
	�$  � �line$,1)<>";" � line$<>"" �
	�?    � I%>maxhi � � 253,"Too many names in 'HighScore' file"
	�    Q%=�line$,":")
	�    name$(I%)=�line$,Q%-1)
	�3    name$(I%)=�name$(I%)+�maxlen," "),maxlen-1)
	�
    Q%+=1
#    ȕ �line$,Q%,1)=" ":Q%+=1:�

    value$=�line$,Q%)
    score(I%) = �(value$)

    I%+=1
(  �
2�
<	�#in%
F�
P�sort_highscores(maxhi)
Z
d<ș "OS_File",5,"<RunGame$Dir>.FCode" � ftype,,,,codesize
n� code codesize
x
�� pass = 0 � 2 � 2
��assemble(code,pass)
��
�
�)�("LOAD <RunGame$Dir>.FCode "+�~code)
�� �
�� work% 2000
�� OSbuffer 256
�
�D�set_OSvar("SaveGame$Dir",�stripCFS(�read_OSvar("RunGame$Dir")))
�
��
�

� �find_mode
� dummy$,I%
"&in% = � ("<RunGame$Dir>.GameData")
,,� in%=0 � 252,"GameData file is missing"
6� I%=1 � 7:dummy$=�#in%:�
@mode=�(�#in%)
J	�#in%
T�
^
h� �check_config
r in%=� "<RunGame$Dir>.Config"
|
delay = 3
�screen_delay = 5
�xcoord1 = 540
�ycoord1 = 500
�xcoord2 = 520
�ycoord2 = 500
�show$="ALWAYS"
�save$ = "YES"
�key$= "YyNn"
�play_tune$ = ""
�stop_tune$ = ""
�reload$ = "YES"
�
maxhi = 5
�
maxlen=16
maxdigits=10
scrnload$="FAST"
data_size = 64*1024
&
Ȏ mode �
0	� 13:
:hsx     = 130
Dhsy     = 400
Nslab_colour = 42
Xhilite = 63
blolite = 21
l
inset = 0
vline = 0
��
�
�� in%<>0 �
�ȕ � �#in%
�  line$=�#in%
�$  � �line$,1)<>";" � line$<>"" �
�    Q%=�line$,":")
�    label$=�line$,Q%-1)
�
    Q%+=1
�#    ȕ �line$,Q%,1)=" ":Q%+=1:�
�      value$=�line$,Q%)
�      value = �(value$)
�      Ȏ label$ �

        � "Delay"

          delay = value

        � "Game over X"

           xcoord1 = value

*        � "Game over Y"

4          ycoord1 = value

>        � "Play again X"

H          xcoord2 = value

R        � "Play again Y"

\          ycoord2 = value

f        � "Table X"

p          hsx = value

z        � "Table Y"

�          hsy = value

�        � "Keys"

�          key$ = value$

�        � "Table colour"

�           slab_colour= value

�        � "Inset colour"

�          inset = value

�        � "Show table"

�          show$ = value$

�        � "Save table"

�          save$=value$

�        � "Table size"

�          maxhi = value
&          � maxhi > 16 � maxhi =16
        � "Load screen"
           scrnload$ = value$
$        � "Loading tune"
.!          play_tune$ = value$
8        � "Stop tune"
B!          stop_tune$ = value$
L        � "Screen delay"
V"          screen_delay = value
`        � "Data size"
j$          data_size = value*1024
t        � "Name length"
~          maxlen = value
�'          � maxlen > 16 maxlen = 16
�        � "Score length"
�          maxdigits = value
�-          � maxdigits > 10 maxdigits = 10
�        � "Reload sprites"
�          reload$ = value$
�      �
�  �
��
�	�#in%
��
��



� �load_sounds(dir$)
� item,voice
(!� infobuffer 512,pathname 256
2item = 0:voice=16
<$pathname=dir$+"."
F
Pș "ExS_Name",31 � SMvoice$
Z!SMvoice$=$pathname + SMvoice$
d
n� I%=16 � 31
x  ș "ExS_Remove",I%
��
�
�+ș "OS_FSControl",28,dir$,,0 � ,,,files
�
�� files>0 �
�
�ȕ item <> -1
�  J%=� dir$+1
�<  ș "OS_GBPB",9,dir$,infobuffer,1,item,512,0 � ,,,,item
�
  I%=0
�  ȕ infobuffer?I% >0
�#    pathname?J% = infobuffer?I%
�    I%+=1:J%+=1
  �
  pathname?J% = 13
%  ș "ExS_Install",voice,pathname
"  voice+=1
,�
6
@�
J�
T
^� �get_max_spritelen(dir$)
h� item,files,biggest,splen
r!� infobuffer 512,pathname 256
|)item = 0:biggest=0:$pathname=dir$+"."
�
�+ș "OS_FSControl",28,dir$,,0 � ,,,files
�
�� files>0 �
�
�ȕ item <> -1
�  J%=� dir$+1
�
�<  ș "OS_GBPB",9,dir$,infobuffer,1,item,512,0 � ,,,,item
�
  I%=0
�  ȕ infobuffer?I% >0
�#    pathname?J% = infobuffer?I%
�    I%+=1:J%+=1
  �
  pathname?J% = 13
.  ș "OS_File",5,pathname � ,,ftype,,splen
&!  ftype = (ftype >> 8) � &fff
08  � ftype = &ff9 � splen > biggest � biggest = splen
:�
D�
N=biggest
X
b
l� �assemble(org,pass)
vP%=org:O%=org
�
[OPT pass
�.jump_table
�
�
� ._activate_object    b dummy
� ._deactivate_object  b dummy
� ._show_object        b dummy
� ._hide_object        b dummy
� ._swop_objects       b dummy
� ._set_coords         b dummy
� ._shift_object       b dummy
� ._copy_coords        b dummy
� ._reverse_vertical   b dummy
 ._reverse_horizontal b dummy
 ._set_Xvelocity      b dummy
 ._set_Yvelocity      b dummy
  ._attach_to_path     b dummy
* ._load_screen        b dummy
4 ._scroll_h           b dummy
> ._scroll_v           b dummy
H ._put_var            b dummy
R ._add_var            b dummy
\ ._subtract_var       b dummy
f ._make_sound         b dummy
p ._wait               b dummy
z ._sound_off          b dummy
� ._sound_on           b dummy
� ._copy_var           b dummy
� ._multiply_var       b dummy
� ._divide_var         b dummy
� ._print_var          b dummy
� ._display_var        b dummy
� ._text_colour        b dummy
� ._text_bgdcol        b dummy
� ._initialise         b dummy
� ._getdata            b dummy
� ._display            b dummy
�
�]

� I%=1 � 256

[OPT pass
$b dummy
.]
8�
B
[OPT pass
L
.dummy
Vmov pc,r14
`]
j�
t
~%� �read_tunes(name$,tune$(),� I%)
�� chn%,ptr,chr$
�I%=0
�chn%=�(name$)
�� chn%<>0 �
�  ȕ � �#chn%
�    tune$(I%)=""
�    � �#chn% �#chn%:�
�    chr%=�#chn%
�    ȕ chr%>31
�      chr$=�(chr%)
�      tune$(I%)+=chr$
�!      � �#chn% I%+=1:�#chn%:�
      chr%=�#chn%

	    �

    I%+=1
;    � I%=max_tunes � 1,"Too many tunes in 'Tunes' file"
(  �
2  �#chn%
<�
F�
P
Z%� �end_of_game(delay,sprite$,X,Y)
d!� time,width,height,right,top
nBș "OS_SpriteOp",256+40,sprite_area2,sprite$ � ,,,width,height
xwidth  = width << XEig
�height = height << YEig
�right = X + width
�top   = Y + height
�?ș "OS_SpriteOp",256+16,sprite_area2,"temp",0,X,Y,right,top
�6ș "OS_SpriteOp",256+34,sprite_area2,sprite$,X,Y,8
�
time=�
�� � �>time+delay*100
�5ș "OS_SpriteOp",256+34,sprite_area2,"temp",X,Y,8
��
�
� � �another(sprite$,X,Y,key$)
�#� Answer,width,height,right,top
�
Bș "OS_SpriteOp",256+40,sprite_area2,sprite$ � ,,,width,height
width  = width << XEig
height = height << YEig
"right = X + width
,top   = Y + height
6?ș "OS_SpriteOp",256+16,sprite_area2,"temp",0,X,Y,right,top
@6ș "OS_SpriteOp",256+34,sprite_area2,sprite$,X,Y,8
J
Tȗ �
^ș "OS_Confirm" � Answer
hȗ �
r� Answer=�"y" � =� � =�
|
�
�� �highscore(score)
�$� I%,J%,T$,newhigh,name$,hsw,hsh
�� show$="NEVER" � �
�
�J%=maxhi:newhigh=�
�ȕ score>score(J%) � J%>0
�  newhigh=�
�  J%-=1
��
�&� � newhigh � show$="NEWSCORE" � �
�
�Iș "OS_SpriteOp",256+40,sprite_area2,hs_sprite$ � ,,,hswidth,hsheight
hswidth  = hswidth << XEig
hsheight = hsheight << YEig
2hsw=maxlen*width+maxdigits*width+3*width+48+24
&"hsh=maxhi*2*height+24+hsheight
0
:<�slab(hsx,hsy,hsw,hsh,16,hilite,slab_colour,lolite,line)
D]ș "OS_SpriteOp",256+34,sprite_area2,hs_sprite$,hsx+(hsw-hswidth)/2,hsy+hsh-hsheight-16,8
N
X� I%=0 � maxhi-1
bS  �slab(hsx+24,hsy+24+I%*2*height,width*3,height+16,4,lolite,inset,hilite,line)
l  T$=�(maxhi-I%)
vJ  �fancy_print(T$,hsx+24+(3-�T$)*width/2,hsy+24+I%*2*height+8,1,1,1,1)
�c  �slab(hsx+24+width*3+12,hsy+24+I%*2*height,maxlen*width,height+16,4,lolite,inset,hilite,line)
�R  �fancy_print(name$(maxhi-I%),hsx+24+width*3+20,hsy+24+I%*2*height+8,1,1,1,1)
�s  �slab(hsx+24+width*3+20+maxlen*width,hsy+24+I%*2*height,maxdigits*width,height+16,4,lolite,inset,hilite,line)
�b  �fancy_print(�(score(maxhi-I%)),hsx+24+width*3+28+maxlen*width,hsy+24+I%*2*height+8,1,1,1,1)
��
�� newhigh �
�  J%+=1
�  � I%=maxhi � J%+1 � -1
�    name$(I%)=name$(I%-1)
�    score(I%)=score(I%-1)
�V    �fancy_print(name$(I%),hsx+24+width*3+20,hsy+24+(maxhi-I%)*2*height+8,1,1,1,1)
�f    �fancy_print(�(score(I%)),hsx+24+width*3+28+maxlen*width,hsy+24+(maxhi-I%)*2*height+8,1,1,1,1)
�  �
Y  �fancy_print(�maxlen-1," "),hsx+24+width*3+20,hsy+24+(maxhi-J%)*2*height+8,1,1,1,1)
i  �fancy_print(�maxdigits-1," "),hsx+24+width*3+28+maxlen*width,hsy+24+(maxhi-J%)*2*height+8,1,1,1,1)
`  �fancy_print(�(score),hsx+24+width*3+28+maxlen*width,hsy+24+(maxhi-J%)*2*height+8,1,1,1,1)
 I  name$=�input_name(hsx+24+width*3+20,hsy+24+(maxhi-J%)*2*height+8,�)
*-  name$(J%)=�name$+�maxlen," "),maxlen-1)
4  score(J%)=score
>T  �fancy_print(name$(J%),hsx+24+width*3+20,hsy+24+(maxhi-J%)*2*height+8,1,1,1,1)
H�
R�
\
f� �input_name(X,Y,hide)
p� chr,I%,name$,dummy
z*FX21,0
�
*FX4,1
�!�fancy_print("_",X,Y,1,1,1,1)
�	chr=�
�ȕ chr<>13 � I%<(maxlen-1)
�  � chr<127 � chr>31 �
�  name$+=�(chr):I%+=1
�  � hide � chr=42
�&  �fancy_print(�(chr),X,Y,1,1,1,1)
�9  � I%<(maxlen-1) �fancy_print("_",X+width,Y,1,1,1,1)
�  X+=width
�  �
�  � chr=127 � I%>0 �
�%    �fancy_print(" ",X,Y,1,1,1,1)

    I%-=1
    X-=width
%    �fancy_print("_",X,Y,1,1,1,1)
$    name$=�name$,I%)
.  �
8  �
B  chr=�
L�
V
*FX4,0
`
=name$
j
t3� �fancy_print(text$,X,Y,Xmult,Ymult,Xdiv,Ydiv)
~� I%,ch$,initX
�initX=X
�� scale 16
�:scale!0=Xmult:scale!4=Ymult:scale!8=Xdiv:scale!12=Ydiv
�� I%=1 � � text$
�  ch$=�(�(�text$,I%,1)))
�  � ch$="126" � ch$="32"
�  � ch$="124" �
�    Y-=height*Ymult � Ydiv
�    X=initX
�  �
�:    ș "OS_SpriteOp",256+52,alphabet,ch$,X,Y,8,scale,0
�    X+=width*Xmult � Xdiv
  �

�
�

("� �slab(x,y,l,h,w,c1,c2,c3,c4)
2�c1
<ȓ Ȑ x,y,l,h
F� c3
P� x+l-w,y+h-w:� x+l,y+h
Z�85,x+l,y+h-w
dȓ Ȑ x+w,y,l-w,h-w
n� x,y:� x+w,y:� 85,x+w,y+w
x� c4
�� x,y+h,x+w,y+h-w
�� x+l,y,x+l-w,y+w
�� c2 Ȝ 64
�ȓ Ȑ x+w,y+w,l-2*w,h-2*w
��
�
�� �sort_highscores(num)
�
� I%,swop
��
�  swop=�
�  � I%=1 � num-1
�#    � score(I%) < score(I%+1) �
�      swop=�
"      Ȕ score(I%),score(I%+1)
"      Ȕ name$(I%),name$(I%+1)
	    �
"  �
,  num-=1
6� � swop
@�
J
T� �save_highscores(file$)
^!� out%,I%,header$,date$,year$
h
r�� �:� � � � �=&108C9 � �=&108CA �fancy_print("  Couldn't save HighScore Table.  |  Please move write-protect tab   |to 'write' position and hit RETURN",80,300,1,1,1,1):dummy=� � �$;" (Error code: ";~�;")":dummy=�:�
|
�.ș "XOS_ReadVarVal","Sys$Date",OSbuffer,30
�OSbuffer?10=13
�date$=$OSbuffer
�.ș "XOS_ReadVarVal","Sys$Year",OSbuffer,30
�OSbuffer?4=13
�year$=$OSbuffer
�
�out%=� file$
�>header$="; Creator high score table ("+date$+" "+year$+")"
��#out%,header$
�� I%=1 � maxhi
�(  �#out%,name$(I%)+": "+�(score(I%))
��

�#out%
�("SetType "+file$+" Text")
�
&
0� �arm3
:� �
D� � � arm3=�:�
N
*Cache ON
X
� �(-1) �
b
arm3=�
l*Cache OFF
v�
�
arm3=�
��
��
�
�� �stripCFS(name$)
�� I%
�I%=�name$,"#")
�=�name$,I%+1)
�
�� �read_OSvar(var$)
�� bytes
�5ș "XOS_ReadVarVal",var$,OSbuffer,255,0 � ,,bytes
�OSbuffer?bytes=13
=$OSbuffer

� �set_OSvar(var$,val$)
 � val$="" � val$=�34+�34
*�("Set "+var$+" "+val$)
4�
>
H� �wait(seconds)
R
� time
\
time=�
f� � �>time+seconds*100
p�
z
�� �copy_screen
�� block 32
�!block = 148:block!8=-1
�+ș "OS_ReadVduVariables",block,block+12
�(ș "OS_ReadModeVariable",-1,7 � ,,C%
�A%=block!12+C%:B%=block!12
�
� copy
��
�
�� �assemble_copy
�� code 100
�� pass = 0 � 2 � 2
�P%=code

[OPT pass
	.copy
LDR R3,[R0],#4
$STR R3,[R1],#4
.SUBS R2,R2,#4
8BNE copy
BMOV PC,R14
L]
V�
`�
j
t� �load_sprites(level)
~� type,len
�8ș "OS_File",5,"<RunGame$Dir>.Sprites" � type,,,,len
�$� type=0 � 255,"No Sprites file"
�-� len>splen � 250,"Sprites file too long"
�6sprite_area!4=0:sprite_area!8=16:sprite_area!12=16
�6�("LOAD <RunGame$Dir>.Sprites "+�~(sprite_area+4))
��
�
�
�� �remove_sounds
�� I%
�� I%=16 � 31
�  ș "ExS_Remove",I%
�

6� �SMvoice$,1)<>"." � ș "ExS_Install",31,SMvoice$
�

(� �instruct
2�
<!�("Print <RunGame$Dir>.Font")
F� 12
P� 28,6,22,33,8,12,14
Z� line$
dȕ line$<>"END"
n6� line$="/" � �' � dummy=�slow_print(line$,0.06,�)
x
�#� dummy � line$="END" � � line$
��
�'�("Print <RunGame$Dir>.NormalFont")
�$�'"   Hit Space to continue":A=�
��
�
�#�  ****************************
�� "       Instructions",/
�� (Hit Shift to continue or
�"� any other key to start game)
�� /
�� This Level of Cyborg has
� � been specially written for
"� the Acorn Computing MegaDisk
� and is not available
� elsewhere.,/
"� Due to space restrictions
,� on the MegaDisk it is not
6� as large as the levels in
@� the full version which
J"� includes 4 other much larger
T!� arcade levels & 3 adventure
^"� stages compressed onto three
h� discs. This demo does not
r"� contain any adventure stages
|� /
�#�  ****************************
� � The demo runs on all Acorn
�� 32 bit machines including
�#� those with only 1 Megabyte.,/
�!� The full version requires 2
�� Megabytes or more. It is
�!� compatible with RISC OS 2 &
� � 3 and includes a hard disc
�� installation program.,/
�"� ..... SPECIAL OFFER ......,/
�$� "Cyborg has an RRP of �25.95."
� � Readers of Acorn Computing
�"� "can save �5.00 by ordering"
 #� "a copy for only �20.95 plus"
 $� "�1.00 p&p direct from Alpine"
 � "Software, quoting order"
 &!� number AC93C. Please send a
 0 � cheque or postal order for
 :#� "�21.95 or phone/fax us with"
 D � your credit card details,/
 N� "  ALPINE SOFTWARE"
 X� "  PO BOX 25"
 b� "  PORTADOWN"
 l� "  CRAIGAVON"
 v� "  BT63 5UT",/
 � � " Tel/Fax 0762 342510",/,/
 �� Weapons -,/
 �� Your standard weapon is a
 �"� GC152L laser aimed by moving
 �!� the sight with the mouse.,/
 �� Move the sight as far as
 �� possible to the left or
 �#� right to scroll the screen.,/
 �!� As you play you may be able
 �!� to pick up other weapons.,/
 �"� To fire any weapon make sure
 � � it is selected (see later)
 �� and click SELECT.,/
!� To select a weapon click
!� the MENU button until the
!!� right-hand indicator lights
! !� up beside the weapon's icon
!* � in the status panel at the
!4� top left of the screen.,/
!>"� A weapon is available if the
!H"� left-hand light beside it is
!R� lit.,/
!\
!f� If you look at the weapon
!p � status panel at the moment
!z"� you should see that the only
!�� weapon available is the
!�"� "laser which is, naturally,"
!�� the selected weapon.,/
!�
!�� To activate your tractor
!�!� beam to pick up objects and
!�!� operate switches etc. click
!�� the ADJUST button and the
!�� sight will change. Aim at
!�$� the object and click SELECT.,/
!� � Click ADJUST again to turn
!�� the tractor beam off.,/
!�� The red bar at the top of
"� the screen is your energy
" � level. Your energy is used
" � by firing your weapons and
"$#� by being hit by enemy fire.,/
".� The energy level can be
"8� restored by picking up
"B� energy pods.,/
"L
"V� The blue bar shows the
"` � amount of air remaining in
"j � your CyberSuit. If the air
"t#� supply runs out you'll die.,/
"~#�  ****************************
"�� Some of the creatures you
"� � will encounter are classed
"�� as FGA's - Friendly Green
"�� Aliens! You should avoid
"�!� shooting these as this will
"�!� incur a penalty in the form
"�"� of lost credits and worse!,/
"�
"� � The aim of this demo level
"�� is to escape from the
"� � dungeon by collecting FOUR
"� � Xylenium crystals. As each
# � one is collected a crystal
#
!� indicator above the door at
#� the far right side of the
#� level will light up.,/
#(!� When all four are lit click
#2 � the switch beside the door
#< � and it will open and allow
#F� you to escape...,/
#P�     .... GOOD LUCK ....
#Z#�  ****************************
#d	� END
#n
#x(� �slow_print(text$,delay,interrupt)
#�� I%,ch$
#�� I%=1 � �text$
#�ch$=�text$,I%,1)
#�� ch$="\" � �:ch$=�10
#�	�ch$;
#�.� interrupt � �(-99) � �:=� � �wait(delay)
#��
#��
#�=�
�
00000000  0d 00 0a 10 f4 20 3e 21  52 75 6e 49 6d 61 67 65  |..... >!RunImage|
00000010  0d 00 14 04 0d 00 1e 3d  f4 20 2a 2a 2a 2a 2a 2a  |.......=. ******|
00000020  2a 2a 2a 2a 2a 2a 2a 2a  2a 2a 2a 2a 2a 2a 2a 2a  |****************|
*
00000050  2a 0d 00 28 3d f4 20 2a  20 20 20 a9 20 31 39 39  |*..(=. *   . 199|
00000060  33 20 50 68 69 6c 69 70  20 48 61 77 74 68 6f 72  |3 Philip Hawthor|
00000070  6e 65 2f 41 6c 70 69 6e  65 20 53 6f 66 74 77 61  |ne/Alpine Softwa|
00000080  72 65 20 20 20 20 20 20  20 20 20 20 20 2a 0d 00  |re           *..|
00000090  32 3d f4 20 2a 20 20 20  20 20 20 20 20 20 20 41  |2=. *          A|
000000a0  64 61 70 74 65 64 20 66  6f 72 20 75 73 65 20 77  |dapted for use w|
000000b0  69 74 68 20 43 79 62 6f  72 67 20 20 20 20 20 20  |ith Cyborg      |
000000c0  20 20 20 20 20 20 20 20  20 20 2a 0d 00 3c 3d f4  |          *..<=.|
000000d0  20 2a 20 20 20 20 20 20  20 20 20 20 41 63 6f 72  | *          Acor|
000000e0  6e 20 43 6f 6d 70 75 74  69 6e 67 20 44 65 6d 6f  |n Computing Demo|
000000f0  20 56 65 72 73 69 6f 6e  20 20 20 20 20 20 20 20  | Version        |
00000100  20 20 20 20 20 20 20 2a  0d 00 46 3d f4 20 2a 2a  |       *..F=. **|
00000110  2a 2a 2a 2a 2a 2a 2a 2a  2a 2a 2a 2a 2a 2a 2a 2a  |****************|
*
00000140  2a 2a 2a 2a 2a 0d 00 50  04 0d 00 5a 6c ee 20 85  |*****..P...Zl. .|
00000150  20 eb 31 32 3a ff 28 22  53 48 55 54 22 29 3a e7  | .12:.("SHUT"):.|
00000160  20 9f 3c 3e 31 37 20 f1  22 41 6e 20 65 72 72 6f  | .<>17 ."An erro|
00000170  72 20 68 61 73 20 6f 63  63 75 72 72 65 64 3a 20  |r has occurred: |
00000180  22 3b 3a f6 3a f1 22 20  28 45 72 72 6f 72 20 63  |";:.:." (Error c|
00000190  6f 64 65 3a 20 22 3b 9f  3b 22 2f 22 3b 9e 3b 22  |ode: ";.;"/";.;"|
000001a0  29 22 3a f5 3a 41 3d a5  3a fd 20 41 3d 33 32 3a  |)":.:A=.:. A=32:|
000001b0  e0 20 8b 20 e0 0d 00 64  0f 74 65 73 74 69 6e 67  |. . ...d.testing|
000001c0  20 3d 20 a3 0d 00 6e 0b  6c 65 76 65 6c 3d 30 0d  | = ...n.level=0.|
000001d0  00 78 12 f2 61 73 73 65  6d 62 6c 65 5f 63 6f 70  |.x..assemble_cop|
000001e0  79 0d 00 82 0e f2 66 69  6e 64 5f 6d 6f 64 65 0d  |y.....find_mode.|
000001f0  00 8c 11 f2 63 68 65 63  6b 5f 63 6f 6e 66 69 67  |....check_config|
00000200  0d 00 96 04 0d 00 a0 1c  de 20 6f 62 6a 65 63 74  |......... object|
00000210  5f 73 70 61 63 65 20 64  61 74 61 5f 73 69 7a 65  |_space data_size|
00000220  0d 00 aa 04 0d 00 b4 11  de 20 70 74 72 64 61 74  |......... ptrdat|
00000230  61 20 35 31 32 0d 00 be  1d 21 70 74 72 64 61 74  |a 512....!ptrdat|
00000240  61 3d 35 31 32 3a 70 74  72 64 61 74 61 21 38 3d  |a=512:ptrdata!8=|
00000250  31 36 0d 00 c8 22 c8 99  20 22 4f 53 5f 53 70 72  |16...".. "OS_Spr|
00000260  69 74 65 4f 70 22 2c 39  2b 32 35 36 2c 70 74 72  |iteOp",9+256,ptr|
00000270  64 61 74 61 0d 00 d2 3c  c8 99 20 22 4f 53 5f 53  |data...<.. "OS_S|
00000280  70 72 69 74 65 4f 70 22  2c 31 30 2b 32 35 36 2c  |priteOp",10+256,|
00000290  70 74 72 64 61 74 61 2c  22 3c 52 75 6e 47 61 6d  |ptrdata,"<RunGam|
000002a0  65 24 44 69 72 3e 2e 50  6f 69 6e 74 65 72 73 22  |e$Dir>.Pointers"|
000002b0  0d 00 dc 40 f4 20 53 59  53 20 22 4f 53 5f 53 70  |...@. SYS "OS_Sp|
000002c0  72 69 74 65 4f 70 22 2c  33 36 2b 32 35 36 2c 70  |riteOp",36+256,p|
000002d0  74 72 64 61 74 61 2c 22  73 69 67 68 74 22 2c 25  |trdata,"sight",%|
000002e0  30 30 30 30 30 30 31 2c  33 2c 31 33 2c 30 2c 30  |0000001,3,13,0,0|
000002f0  0d 00 e6 3c c8 99 20 22  4f 53 5f 53 70 72 69 74  |...<.. "OS_Sprit|
00000300  65 4f 70 22 2c 33 36 2b  32 35 36 2c 70 74 72 64  |eOp",36+256,ptrd|
00000310  61 74 61 2c 22 73 69 67  68 74 22 2c 25 30 30 30  |ata,"sight",%000|
00000320  30 30 30 31 2c 37 2c 37  2c 30 2c 30 0d 00 f0 45  |0001,7,7,0,0...E|
00000330  f4 20 53 59 53 20 22 4f  53 5f 53 70 72 69 74 65  |. SYS "OS_Sprite|
00000340  4f 70 22 2c 33 36 2b 32  35 36 2c 70 74 72 64 61  |Op",36+256,ptrda|
00000350  74 61 2c 22 74 72 61 63  6b 73 69 67 68 74 22 2c  |ta,"tracksight",|
00000360  25 30 31 30 30 30 31 30  2c 33 2c 31 33 2c 30 2c  |%0100010,3,13,0,|
00000370  30 0d 00 fa 41 c8 99 20  22 4f 53 5f 53 70 72 69  |0...A.. "OS_Spri|
00000380  74 65 4f 70 22 2c 33 36  2b 32 35 36 2c 70 74 72  |teOp",36+256,ptr|
00000390  64 61 74 61 2c 22 74 72  61 63 6b 73 69 67 68 74  |data,"tracksight|
000003a0  22 2c 25 30 31 30 30 30  31 30 2c 37 2c 37 2c 30  |",%0100010,7,7,0|
000003b0  2c 30 0d 01 04 2a c8 99  20 22 4f 53 5f 42 79 74  |,0...*.. "OS_Byt|
000003c0  65 22 2c 31 30 36 2c 31  3a f4 20 53 65 6c 65 63  |e",106,1:. Selec|
000003d0  74 20 70 6f 69 6e 74 65  72 20 23 31 0d 01 0e 04  |t pointer #1....|
000003e0  0d 01 18 09 f2 69 6e 69  74 0d 01 22 12 de 20 66  |.....init..".. f|
000003f0  69 6c 65 6e 61 6d 65 20  32 35 35 0d 01 2c 3a de  |ilename 255..,:.|
00000400  20 73 74 61 72 73 58 20  6e 75 6d 5f 73 74 61 72  | starsX num_star|
00000410  73 2a 34 2c 73 74 61 72  73 59 20 6e 75 6d 5f 73  |s*4,starsY num_s|
00000420  74 61 72 73 2c 73 74 61  72 73 56 20 6e 75 6d 5f  |tars,starsV num_|
00000430  73 74 61 72 73 0d 01 36  04 0d 01 40 18 e3 20 49  |stars..6...@.. I|
00000440  25 3d 30 20 b8 20 6e 75  6d 5f 73 74 61 72 73 2d  |%=0 . num_stars-|
00000450  31 0d 01 4a 0d 20 20 4e  25 3d 34 2a 49 25 0d 01  |1..J.  N%=4*I%..|
00000460  54 18 20 20 73 74 61 72  73 58 21 4e 25 20 3d 20  |T.  starsX!N% = |
00000470  b3 28 33 31 39 29 0d 01  5e 05 ed 0d 01 68 18 e3  |.(319)..^....h..|
00000480  20 49 25 3d 30 20 b8 20  6e 75 6d 5f 73 74 61 72  | I%=0 . num_star|
00000490  73 2d 31 0d 01 72 18 20  20 73 74 61 72 73 59 3f  |s-1..r.  starsY?|
000004a0  49 25 20 3d 20 b3 28 32  35 34 29 0d 01 7c 16 20  |I% = .(254)..|. |
000004b0  20 73 74 61 72 73 56 3f  49 25 20 3d 20 b3 28 34  | starsV?I% = .(4|
000004c0  29 0d 01 86 05 ed 0d 01  90 04 0d 01 9a 3f c8 99  |)............?..|
000004d0  20 22 4f 53 5f 46 69 6c  65 22 2c 35 2c 22 3c 52  | "OS_File",5,"<R|
000004e0  75 6e 47 61 6d 65 24 44  69 72 3e 2e 41 6c 70 68  |unGame$Dir>.Alph|
000004f0  61 62 65 74 22 20 b8 20  66 74 79 70 65 2c 2c 2c  |abet" . ftype,,,|
00000500  2c 61 6c 70 68 61 6c 65  6e 0d 01 a4 26 e7 20 66  |,alphalen...&. f|
00000510  74 79 70 65 3d 30 20 85  20 32 35 32 2c 22 4e 6f  |type=0 . 252,"No|
00000520  20 41 6c 70 68 61 62 65  74 20 66 69 6c 65 22 0d  | Alphabet file".|
00000530  01 ae 04 0d 01 b8 46 61  6c 70 68 61 6c 65 6e 2b  |......Falphalen+|
00000540  3d 31 36 3a de 20 61 6c  70 68 61 62 65 74 20 61  |=16:. alphabet a|
00000550  6c 70 68 61 6c 65 6e 2c  61 6c 70 68 61 5f 69 6e  |lphalen,alpha_in|
00000560  66 6f 20 33 32 2c 63 68  61 72 61 63 74 65 72 5f  |fo 32,character_|
00000570  70 74 72 73 20 39 35 2a  34 0d 01 c2 04 0d 01 cc  |ptrs 95*4.......|
00000580  40 21 61 6c 70 68 61 62  65 74 3d 61 6c 70 68 61  |@!alphabet=alpha|
00000590  6c 65 6e 3a 61 6c 70 68  61 62 65 74 21 34 3d 30  |len:alphabet!4=0|
000005a0  3a 61 6c 70 68 61 62 65  74 21 38 3d 31 36 3a 61  |:alphabet!8=16:a|
000005b0  6c 70 68 61 62 65 74 21  31 32 3d 31 36 0d 01 d6  |lphabet!12=16...|
000005c0  3d c8 99 20 22 4f 53 5f  53 70 72 69 74 65 4f 70  |=.. "OS_SpriteOp|
000005d0  22 2c 32 35 36 2b 31 30  2c 61 6c 70 68 61 62 65  |",256+10,alphabe|
000005e0  74 2c 22 3c 52 75 6e 47  61 6d 65 24 44 69 72 3e  |t,"<RunGame$Dir>|
000005f0  2e 41 6c 70 68 61 62 65  74 22 0d 01 e0 04 0d 01  |.Alphabet"......|
00000600  ea 45 c8 99 20 22 4f 53  5f 53 70 72 69 74 65 4f  |.E.. "OS_SpriteO|
00000610  70 22 2c 32 35 36 2b 34  30 2c 61 6c 70 68 61 62  |p",256+40,alphab|
00000620  65 74 2c 22 33 32 22 20  b8 20 2c 2c 2c 77 69 64  |et,"32" . ,,,wid|
00000630  74 68 2c 68 65 69 67 68  74 2c 2c 63 68 61 72 6d  |th,height,,charm|
00000640  6f 64 65 0d 01 f4 30 c8  99 20 22 4f 53 5f 52 65  |ode...0.. "OS_Re|
00000650  61 64 4d 6f 64 65 56 61  72 69 61 62 6c 65 22 2c  |adModeVariable",|
00000660  63 68 61 72 6d 6f 64 65  2c 34 20 b8 20 2c 2c 58  |charmode,4 . ,,X|
00000670  45 69 67 0d 01 fe 30 c8  99 20 22 4f 53 5f 52 65  |Eig...0.. "OS_Re|
00000680  61 64 4d 6f 64 65 56 61  72 69 61 62 6c 65 22 2c  |adModeVariable",|
00000690  63 68 61 72 6d 6f 64 65  2c 35 20 b8 20 2c 2c 59  |charmode,5 . ,,Y|
000006a0  45 69 67 0d 02 08 19 77  69 64 74 68 20 3d 20 77  |Eig....width = w|
000006b0  69 64 74 68 20 3c 3c 20  58 45 69 67 0d 02 12 1b  |idth << XEig....|
000006c0  68 65 69 67 68 74 20 3d  20 68 65 69 67 68 74 20  |height = height |
000006d0  3c 3c 20 59 45 69 67 0d  02 1c 08 49 25 3d 30 0d  |<< YEig....I%=0.|
000006e0  02 26 11 e3 20 43 25 3d  33 32 20 b8 20 31 32 36  |.&.. C%=32 . 126|
000006f0  0d 02 30 0c 20 20 43 24  3d c3 43 25 0d 02 3a 35  |..0.  C$=.C%..:5|
00000700  20 20 c8 99 20 22 4f 53  5f 53 70 72 69 74 65 4f  |  .. "OS_SpriteO|
00000710  70 22 2c 32 34 2b 32 35  36 2c 61 6c 70 68 61 62  |p",24+256,alphab|
00000720  65 74 2c 43 24 20 b8 20  2c 2c 61 64 64 72 65 73  |et,C$ . ,,addres|
00000730  73 0d 02 44 1f 20 20 49  25 21 63 68 61 72 61 63  |s..D.  I%!charac|
00000740  74 65 72 5f 70 74 72 73  3d 61 64 64 72 65 73 73  |ter_ptrs=address|
00000750  0d 02 4e 0b 20 20 49 25  2b 3d 34 0d 02 58 05 ed  |..N.  I%+=4..X..|
00000760  0d 02 62 18 21 61 6c 70  68 61 5f 69 6e 66 6f 3d  |..b.!alpha_info=|
00000770  61 6c 70 68 61 62 65 74  0d 02 6c 1f 61 6c 70 68  |alphabet..l.alph|
00000780  61 5f 69 6e 66 6f 21 34  3d 63 68 61 72 61 63 74  |a_info!4=charact|
00000790  65 72 5f 70 74 72 73 0d  02 76 16 61 6c 70 68 61  |er_ptrs..v.alpha|
000007a0  5f 69 6e 66 6f 21 38 3d  77 69 64 74 68 0d 02 80  |_info!8=width...|
000007b0  18 61 6c 70 68 61 5f 69  6e 66 6f 21 31 32 3d 68  |.alpha_info!12=h|
000007c0  65 69 67 68 74 0d 02 8a  13 de 20 73 74 61 72 73  |eight..... stars|
000007d0  5f 69 6e 66 6f 20 33 32  0d 02 94 18 21 73 74 61  |_info 32....!sta|
000007e0  72 73 5f 69 6e 66 6f 20  3d 20 73 74 61 72 73 58  |rs_info = starsX|
000007f0  0d 02 9e 17 73 74 61 72  73 5f 69 6e 66 6f 21 34  |....stars_info!4|
00000800  3d 73 74 61 72 73 59 0d  02 a8 17 73 74 61 72 73  |=starsY....stars|
00000810  5f 69 6e 66 6f 21 38 3d  73 74 61 72 73 56 0d 02  |_info!8=starsV..|
00000820  b2 15 73 74 61 72 73 5f  69 6e 66 6f 21 31 32 3d  |..stars_info!12=|
00000830  31 32 30 0d 02 bc 04 0d  02 c6 41 de 20 74 75 6e  |120.......A. tun|
00000840  65 5f 6e 61 6d 65 73 20  32 34 2a 6d 61 78 5f 74  |e_names 24*max_t|
00000850  75 6e 65 73 2c 6e 61 6d  65 5f 70 74 72 73 20 6d  |unes,name_ptrs m|
00000860  61 78 5f 74 75 6e 65 73  2a 34 2c 74 75 6e 65 73  |ax_tunes*4,tunes|
00000870  5f 69 6e 66 6f 20 33 32  0d 02 d0 04 0d 02 da 38  |_info 32.......8|
00000880  f2 72 65 61 64 5f 74 75  6e 65 73 28 22 3c 52 75  |.read_tunes("<Ru|
00000890  6e 47 61 6d 65 24 44 69  72 3e 2e 54 75 6e 65 73  |nGame$Dir>.Tunes|
000008a0  22 2c 74 75 6e 65 24 28  29 2c 6e 75 6d 5f 74 75  |",tune$(),num_tu|
000008b0  6e 65 73 29 0d 02 e4 1e  70 74 72 3d 30 3a 64 69  |nes)....ptr=0:di|
000008c0  72 24 3d 22 3c 53 6f 75  6e 64 73 24 44 69 72 3e  |r$="<Sounds$Dir>|
000008d0  2e 22 0d 02 ee 04 0d 02  f8 18 e3 20 49 25 3d 30  |."......... I%=0|
000008e0  20 b8 20 6e 75 6d 5f 74  75 6e 65 73 2d 31 0d 03  | . num_tunes-1..|
000008f0  02 2b 20 20 24 28 74 75  6e 65 5f 6e 61 6d 65 73  |.+  $(tune_names|
00000900  2b 70 74 72 29 3d 64 69  72 24 2b 74 75 6e 65 24  |+ptr)=dir$+tune$|
00000910  28 49 25 29 2b bd 28 30  29 0d 03 0c 26 20 20 21  |(I%)+.(0)...&  !|
00000920  28 6e 61 6d 65 5f 70 74  72 73 2b 34 2a 49 25 29  |(name_ptrs+4*I%)|
00000930  3d 74 75 6e 65 5f 6e 61  6d 65 73 2b 70 74 72 0d  |=tune_names+ptr.|
00000940  03 16 21 20 20 70 74 72  2b 3d a9 28 74 75 6e 65  |..!  ptr+=.(tune|
00000950  24 28 49 25 29 29 2b 31  2b a9 28 64 69 72 24 29  |$(I%))+1+.(dir$)|
00000960  0d 03 20 05 ed 0d 03 2a  04 0d 03 34 48 21 74 75  |.. ....*...4H!tu|
00000970  6e 65 73 5f 69 6e 66 6f  3d 6e 75 6d 5f 74 75 6e  |nes_info=num_tun|
00000980  65 73 3a 74 75 6e 65 73  5f 69 6e 66 6f 21 34 3d  |es:tunes_info!4=|
00000990  74 75 6e 65 5f 6e 61 6d  65 73 3a 74 75 6e 65 73  |tune_names:tunes|
000009a0  5f 69 6e 66 6f 21 38 3d  6e 61 6d 65 5f 70 74 72  |_info!8=name_ptr|
000009b0  73 0d 03 3e 04 0d 03 48  0f ff 28 22 46 58 20 31  |s..>...H..("FX 1|
000009c0  31 33 22 29 0d 03 52 05  f5 0d 03 5c 05 da 0d 03  |13")..R....\....|
000009d0  66 22 70 24 3d 22 44 6f  20 79 6f 75 20 77 61 6e  |f"p$="Do you wan|
000009e0  74 20 69 6e 73 74 72 75  63 74 69 6f 6e 73 3f 22  |t instructions?"|
000009f0  0d 03 70 33 f2 66 61 6e  63 79 5f 70 72 69 6e 74  |..p3.fancy_print|
00000a00  28 70 24 2c 28 31 32 38  30 2d 77 69 64 74 68 2a  |(p$,(1280-width*|
00000a10  a9 70 24 29 2f 32 2c 35  30 30 2c 31 2c 32 2c 31  |.p$)/2,500,1,2,1|
00000a20  2c 31 29 0d 03 7a 04 0d  03 84 1c c8 99 20 22 4f  |,1)..z....... "O|
00000a30  53 5f 43 6f 6e 66 69 72  6d 22 20 b8 20 61 6e 73  |S_Confirm" . ans|
00000a40  77 65 72 0d 03 8e 1d e7  20 61 6e 73 77 65 72 3d  |wer..... answer=|
00000a50  97 22 79 22 20 8c 20 f2  69 6e 73 74 72 75 63 74  |."y" . .instruct|
00000a60  0d 03 98 12 fd 20 61 6e  73 77 65 72 3c 3e 97 22  |..... answer<>."|
00000a70  79 22 0d 03 a2 04 0d 03  ac 0c 41 25 3d 77 6f 72  |y"........A%=wor|
00000a80  6b 25 0d 03 b6 12 42 25  3d 73 70 72 69 74 65 5f  |k%....B%=sprite_|
00000a90  61 72 65 61 0d 03 c0 13  43 25 3d 6f 62 6a 65 63  |area....C%=objec|
00000aa0  74 5f 73 70 61 63 65 0d  03 ca 11 44 25 3d 73 74  |t_space....D%=st|
00000ab0  61 72 73 5f 69 6e 66 6f  0d 03 d4 11 45 25 3d 61  |ars_info....E%=a|
00000ac0  6c 70 68 61 5f 69 6e 66  6f 0d 03 de 11 46 25 3d  |lpha_info....F%=|
00000ad0  74 75 6e 65 73 5f 69 6e  66 6f 0d 03 e8 04 0d 03  |tunes_info......|
00000ae0  f2 11 d6 20 5f 69 6e 69  74 69 61 6c 69 73 65 0d  |... _initialise.|
00000af0  03 fc 04 0d 04 06 0c 48  25 3d 77 6f 72 6b 25 0d  |.......H%=work%.|
00000b00  04 10 04 0d 04 1a 16 68  69 67 68 73 63 6f 72 65  |.......highscore|
00000b10  3d 73 63 6f 72 65 28 31  29 0d 04 24 27 65 6e 65  |=score(1)..$'ene|
00000b20  72 67 79 20 3d 20 35 30  30 3a 73 63 6f 72 65 3d  |rgy = 500:score=|
00000b30  30 3a 63 68 61 72 67 65  64 65 6c 61 79 3d 31 32  |0:chargedelay=12|
00000b40  0d 04 2e 04 0d 04 38 11  6c 61 73 74 5f 63 68 6f  |......8.last_cho|
00000b50  69 63 65 3d 31 0d 04 42  0f ff 28 22 46 58 20 31  |ice=1..B..("FX 1|
00000b60  31 33 22 29 0d 04 4c 05  da 0d 04 56 0b 6c 65 76  |13")..L....V.lev|
00000b70  65 6c 3d 30 0d 04 60 1b  70 24 3d 22 4c 6f 61 64  |el=0..`.p$="Load|
00000b80  69 6e 67 20 44 65 6d 6f  20 4c 65 76 65 6c 22 0d  |ing Demo Level".|
00000b90  04 6a 33 f2 66 61 6e 63  79 5f 70 72 69 6e 74 28  |.j3.fancy_print(|
00000ba0  70 24 2c 28 31 32 38 30  2d 77 69 64 74 68 2a a9  |p$,(1280-width*.|
00000bb0  70 24 29 2f 32 2c 35 30  30 2c 31 2c 32 2c 31 2c  |p$)/2,500,1,2,1,|
00000bc0  31 29 0d 04 74 04 0d 04  7e 18 f2 6c 6f 61 64 5f  |1)..t...~..load_|
00000bd0  73 70 72 69 74 65 73 28  6c 65 76 65 6c 29 0d 04  |sprites(level)..|
00000be0  88 04 0d 04 92 2d c8 99  20 22 45 78 53 5f 4d 75  |.....-.. "ExS_Mu|
00000bf0  73 69 63 46 61 64 65 22  2c 34 38 3a f2 77 61 69  |sicFade",48:.wai|
00000c00  74 28 34 29 3a 2a 4d 75  73 69 63 53 74 6f 70 0d  |t(4):*MusicStop.|
00000c10  04 9c 04 0d 04 a6 05 f5  0d 04 b0 28 24 66 69 6c  |...........($fil|
00000c20  65 6e 61 6d 65 20 3d 20  22 3c 52 75 6e 47 61 6d  |ename = "<RunGam|
00000c30  65 24 44 69 72 3e 2e 47  61 6d 65 44 61 74 61 22  |e$Dir>.GameData"|
00000c40  0d 04 ba 0f 41 25 3d 66  69 6c 65 6e 61 6d 65 0d  |....A%=filename.|
00000c50  04 c4 0e d6 20 5f 67 65  74 64 61 74 61 0d 04 ce  |.... _getdata...|
00000c60  04 0d 04 d8 2b 76 61 72  5f 74 61 62 6c 65 3d 48  |....+var_table=H|
00000c70  25 21 34 30 3a 76 61 72  5f 74 61 62 6c 65 21 38  |%!40:var_table!8|
00000c80  20 3d 20 68 69 67 68 73  63 6f 72 65 0d 04 e2 04  | = highscore....|
00000c90  0d 04 ec 0e c8 8e 20 6c  65 76 65 6c 20 ca 0d 04  |...... level ...|
00000ca0  f6 08 c9 20 31 3a 0d 05  00 18 76 61 72 5f 74 61  |... 1:....var_ta|
00000cb0  62 6c 65 21 31 38 30 3d  65 6e 65 72 67 79 0d 05  |ble!180=energy..|
00000cc0  0a 15 76 61 72 5f 74 61  62 6c 65 21 34 3d 73 63  |..var_table!4=sc|
00000cd0  6f 72 65 0d 05 14 0c c9  20 33 2c 35 2c 37 3a 0d  |ore..... 3,5,7:.|
00000ce0  05 1e 17 76 61 72 5f 74  61 62 6c 65 21 36 38 3d  |...var_table!68=|
00000cf0  65 6e 65 72 67 79 0d 05  28 15 76 61 72 5f 74 61  |energy..(.var_ta|
00000d00  62 6c 65 21 34 3d 73 63  6f 72 65 0d 05 32 1c 76  |ble!4=score..2.v|
00000d10  61 72 5f 74 61 62 6c 65  21 38 38 3d 63 68 61 72  |ar_table!88=char|
00000d20  67 65 64 65 6c 61 79 0d  05 3c 05 cb 0d 05 46 04  |gedelay..<....F.|
00000d30  0d 05 50 12 41 25 3d 73  70 72 69 74 65 5f 61 72  |..P.A%=sprite_ar|
00000d40  65 61 0d 05 5a 0c 48 25  3d 77 6f 72 6b 25 0d 05  |ea..Z.H%=work%..|
00000d50  64 04 0d 05 6e 10 f2 63  6f 70 79 5f 73 63 72 65  |d...n..copy_scre|
00000d60  65 6e 0d 05 78 04 0d 05  82 1a ef 20 32 34 2c 31  |en..x...... 24,1|
00000d70  36 30 3b 32 36 38 3b 31  31 31 36 3b 37 36 36 3b  |60;268;1116;766;|
00000d80  0d 05 8c 1a c8 97 20 c8  93 20 31 30 30 2c 32 39  |...... .. 100,29|
00000d90  32 2c 31 30 38 30 2c 34  34 30 0d 05 96 08 c8 97  |2,1080,440......|
00000da0  20 ee 0d 05 a0 04 0d 05  aa 07 d1 3d 30 0d 05 b4  | ..........=0...|
00000db0  11 f2 61 72 6d 33 3a 47  25 3d 61 72 6d 33 0d 05  |..arm3:G%=arm3..|
00000dc0  be 1a e7 20 ac 20 61 72  6d 33 20 8c 20 48 25 21  |... . arm3 . H%!|
00000dd0  26 31 32 38 20 3d 20 33  0d 05 c8 04 0d 05 d2 13  |&128 = 3........|
00000de0  70 24 3d 22 47 65 74 20  52 65 61 64 79 21 22 0d  |p$="Get Ready!".|
00000df0  05 dc 35 da 3a f2 66 61  6e 63 79 5f 70 72 69 6e  |..5.:.fancy_prin|
00000e00  74 28 70 24 2c 28 31 32  38 30 2d 77 69 64 74 68  |t(p$,(1280-width|
00000e10  2a a9 70 24 29 2f 32 2c  35 30 30 2c 31 2c 32 2c  |*.p$)/2,500,1,2,|
00000e20  31 2c 31 29 0d 05 e6 0c  41 3d a6 28 33 30 30 29  |1,1)....A=.(300)|
00000e30  0d 05 f0 04 0d 05 fa 15  66 72 61 6d 65 73 3d ba  |........frames=.|
00000e40  20 5f 64 69 73 70 6c 61  79 0d 06 04 04 0d 06 0e  | _display.......|
00000e50  0e 74 69 6d 65 3d 91 2f  31 30 30 0d 06 18 04 0d  |.time=./100.....|
00000e60  06 22 17 c8 99 20 22 45  78 53 5f 4d 75 73 69 63  |."... "ExS_Music|
00000e70  53 74 61 72 74 22 0d 06  2c 04 0d 06 36 19 6f 6c  |Start"..,...6.ol|
00000e80  64 68 69 67 68 20 20 20  3d 20 68 69 67 68 73 63  |dhigh   = highsc|
00000e90  6f 72 65 0d 06 40 1b 68  69 67 68 73 63 6f 72 65  |ore..@.highscore|
00000ea0  20 3d 20 76 61 72 5f 74  61 62 6c 65 21 38 0d 06  | = var_table!8..|
00000eb0  4a 1b 73 63 6f 72 65 20  20 20 20 20 3d 20 76 61  |J.score     = va|
00000ec0  72 5f 74 61 62 6c 65 21  34 0d 06 54 04 0d 06 5e  |r_table!4..T...^|
00000ed0  2a e7 20 a6 28 2d 36 29  20 f1 20 66 72 61 6d 65  |*. .(-6) . frame|
00000ee0  73 2f 74 69 6d 65 3b 22  20 66 72 61 6d 65 73 2f  |s/time;" frames/|
00000ef0  73 65 63 6f 6e 64 22 0d  06 68 04 0d 06 72 0a 6d  |second"..h...r.m|
00000f00  6f 64 65 3d eb 0d 06 7c  2c c8 99 20 22 4f 53 5f  |ode=...|,.. "OS_|
00000f10  52 65 61 64 4d 6f 64 65  56 61 72 69 61 62 6c 65  |ReadModeVariable|
00000f20  22 2c 6d 6f 64 65 2c 34  20 b8 20 2c 2c 58 45 69  |",mode,4 . ,,XEi|
00000f30  67 0d 06 86 2c c8 99 20  22 4f 53 5f 52 65 61 64  |g...,.. "OS_Read|
00000f40  4d 6f 64 65 56 61 72 69  61 62 6c 65 22 2c 6d 6f  |ModeVariable",mo|
00000f50  64 65 2c 35 20 b8 20 2c  2c 59 45 69 67 0d 06 90  |de,5 . ,,YEig...|
00000f60  21 67 6f 5f 73 70 72 69  74 65 24 3d 22 67 61 6d  |!go_sprite$="gam|
00000f70  65 6f 76 65 72 22 2b c3  28 6d 6f 64 65 29 0d 06  |eover"+.(mode)..|
00000f80  9a 22 70 61 5f 73 70 72  69 74 65 24 3d 22 70 6c  |."pa_sprite$="pl|
00000f90  61 79 61 67 61 69 6e 22  2b c3 28 6d 6f 64 65 29  |ayagain"+.(mode)|
00000fa0  0d 06 a4 22 68 73 5f 73  70 72 69 74 65 24 3d 22  |..."hs_sprite$="|
00000fb0  68 69 67 68 73 63 6f 72  65 22 2b c3 28 6d 6f 64  |highscore"+.(mod|
00000fc0  65 29 0d 06 ae 05 87 0d  06 b8 04 0d 06 c2 0e c8  |e)..............|
00000fd0  8e 20 6c 65 76 65 6c 20  ca 0d 06 cc 08 c9 20 30  |. level ...... 0|
00000fe0  3a 0d 06 d6 19 65 6e 65  72 67 79 20 3d 20 76 61  |:....energy = va|
00000ff0  72 5f 74 61 62 6c 65 21  36 30 0d 06 e0 1c 63 6f  |r_table!60....co|
00001000  6d 70 6c 65 74 65 64 20  3d 20 76 61 72 5f 74 61  |mpleted = var_ta|
00001010  62 6c 65 21 39 32 0d 06  ea 05 cb 0d 06 f4 04 0d  |ble!92..........|
00001020  06 fe 39 e7 20 74 65 73  74 69 6e 67 20 f1 22 45  |..9. testing ."E|
00001030  6e 65 72 67 79 3a 20 22  3b 65 6e 65 72 67 79 3b  |nergy: ";energy;|
00001040  22 20 63 6f 6d 70 6c 65  74 65 64 3a 20 22 3b 63  |" completed: ";c|
00001050  6f 6d 70 6c 65 74 65 64  0d 07 08 34 70 24 3d 22  |ompleted...4p$="|
00001060  22 3a e7 20 65 6e 65 72  67 79 20 3c 3d 20 30 20  |":. energy <= 0 |
00001070  8c 20 70 24 3d 22 59 6f  75 27 72 65 20 6f 75 74  |. p$="You're out|
00001080  20 6f 66 20 65 6e 65 72  67 79 21 22 0d 07 12 3a  | of energy!"...:|
00001090  e7 20 63 6f 6d 70 6c 65  74 65 64 20 3d 20 30 20  |. completed = 0 |
000010a0  80 20 65 6e 65 72 67 79  20 3e 20 30 20 8c 20 70  |. energy > 0 . p|
000010b0  24 3d 22 59 6f 75 27 72  65 20 6f 75 74 20 6f 66  |$="You're out of|
000010c0  20 61 69 72 21 22 0d 07  1c 35 e7 20 63 6f 6d 70  | air!"...5. comp|
000010d0  6c 65 74 65 64 20 3d 20  2d 31 20 8c 20 70 24 3d  |leted = -1 . p$=|
000010e0  22 50 6f 69 73 6f 6e 20  47 61 73 20 2d 20 59 6f  |"Poison Gas - Yo|
000010f0  75 27 72 65 20 64 65 61  64 21 22 0d 07 26 3c e7  |u're dead!"..&<.|
00001100  20 70 24 3c 3e 22 22 20  f2 66 61 6e 63 79 5f 70  | p$<>"" .fancy_p|
00001110  72 69 6e 74 28 70 24 2c  28 31 32 38 30 2d 77 69  |rint(p$,(1280-wi|
00001120  64 74 68 2a a9 70 24 29  2f 32 2c 33 30 30 2c 31  |dth*.p$)/2,300,1|
00001130  2c 32 2c 31 2c 31 29 0d  07 30 04 0d 07 3a 14 e7  |,2,1,1)..0...:..|
00001140  20 63 6f 6d 70 6c 65 74  65 64 3c 3e 31 20 8c 0d  | completed<>1 ..|
00001150  07 44 34 20 20 f2 65 6e  64 5f 6f 66 5f 67 61 6d  |.D4  .end_of_gam|
00001160  65 28 64 65 6c 61 79 2c  67 6f 5f 73 70 72 69 74  |e(delay,go_sprit|
00001170  65 24 2c 78 63 6f 6f 72  64 31 2c 79 63 6f 6f 72  |e$,xcoord1,ycoor|
00001180  64 31 29 0d 07 4e 17 20  20 f2 68 69 67 68 73 63  |d1)..N.  .highsc|
00001190  6f 72 65 28 73 63 6f 72  65 29 0d 07 58 04 0d 07  |ore(score)..X...|
000011a0  62 33 20 20 e7 20 a4 61  6e 6f 74 68 65 72 28 70  |b3  . .another(p|
000011b0  61 5f 73 70 72 69 74 65  24 2c 78 63 6f 6f 72 64  |a_sprite$,xcoord|
000011c0  32 2c 79 63 6f 6f 72 64  32 2c 6b 65 79 24 29 20  |2,ycoord2,key$) |
000011d0  8c 0d 07 6c 10 20 20 65  6e 65 72 67 79 3d 35 30  |...l.  energy=50|
000011e0  30 0d 07 76 0d 20 20 73  63 6f 72 65 3d 30 0d 07  |0..v.  score=0..|
000011f0  80 04 0d 07 8a 1a 20 20  f2 6c 6f 61 64 5f 73 70  |......  .load_sp|
00001200  72 69 74 65 73 28 6c 65  76 65 6c 29 0d 07 94 0f  |rites(level)....|
00001210  20 20 61 6e 6f 74 68 65  72 3d b9 0d 07 9e 07 20  |  another=..... |
00001220  20 cc 0d 07 a8 11 20 20  20 20 61 6e 6f 74 68 65  | .....    anothe|
00001230  72 3d a3 0d 07 b2 07 20  20 cd 0d 07 bc 05 cc 0d  |r=.....  .......|
00001240  07 c6 11 20 20 61 6e 6f  74 68 65 72 20 3d 20 a3  |...  another = .|
00001250  0d 07 d0 17 20 20 f2 68  69 67 68 73 63 6f 72 65  |....  .highscore|
00001260  28 73 63 6f 72 65 29 0d  07 da 07 20 20 da 0d 07  |(score)....  ...|
00001270  e4 15 20 20 70 24 3d 22  57 65 6c 6c 20 64 6f 6e  |..  p$="Well don|
00001280  65 21 22 0d 07 ee 35 20  20 f2 66 61 6e 63 79 5f  |e!"...5  .fancy_|
00001290  70 72 69 6e 74 28 70 24  2c 28 31 32 38 30 2d 77  |print(p$,(1280-w|
000012a0  69 64 74 68 2a a9 70 24  29 2f 32 2c 35 30 30 2c  |idth*.p$)/2,500,|
000012b0  31 2c 32 2c 31 2c 31 29  0d 07 f8 24 20 20 70 24  |1,2,1,1)...$  p$|
000012c0  3d 22 59 6f 75 27 76 65  20 63 6f 6d 70 6c 65 74  |="You've complet|
000012d0  65 64 20 74 68 65 20 64  65 6d 6f 22 0d 08 02 35  |ed the demo"...5|
000012e0  20 20 f2 66 61 6e 63 79  5f 70 72 69 6e 74 28 70  |  .fancy_print(p|
000012f0  24 2c 28 31 32 38 30 2d  77 69 64 74 68 2a a9 70  |$,(1280-width*.p|
00001300  24 29 2f 32 2c 34 30 30  2c 31 2c 32 2c 31 2c 31  |$)/2,400,1,2,1,1|
00001310  29 0d 08 0c 05 cd 0d 08  16 0f e7 20 61 6e 6f 74  |).......... anot|
00001320  68 65 72 20 8c 0d 08 20  1b 20 20 c8 99 20 22 45  |her ... .  .. "E|
00001330  78 53 5f 4d 75 73 69 63  46 61 64 65 22 2c 34 38  |xS_MusicFade",48|
00001340  0d 08 2a 0e 20 20 f2 77  61 69 74 28 34 29 0d 08  |..*.  .wait(4)..|
00001350  34 05 cd 0d 08 3e 0e 2a  4d 75 73 69 63 53 74 6f  |4....>.*MusicSto|
00001360  70 0d 08 48 0f fd 20 ac  20 61 6e 6f 74 68 65 72  |p..H.. . another|
00001370  0d 08 52 04 0d 08 5c 41  e7 20 73 61 76 65 24 3d  |..R...\A. save$=|
00001380  22 59 45 53 22 20 8c 20  f2 73 61 76 65 5f 68 69  |"YES" . .save_hi|
00001390  67 68 73 63 6f 72 65 73  28 22 3c 53 61 76 65 47  |ghscores("<SaveG|
000013a0  61 6d 65 24 44 69 72 3e  2e 48 69 67 68 53 63 6f  |ame$Dir>.HighSco|
000013b0  72 65 73 22 29 0d 08 66  04 0d 08 70 12 f2 72 65  |res")..f...p..re|
000013c0  6d 6f 76 65 5f 73 6f 75  6e 64 73 0d 08 7a 04 0d  |move_sounds..z..|
000013d0  08 84 05 e0 0d 08 8e 04  0d 08 98 04 0d 08 a2 0b  |................|
000013e0  dd 20 f2 69 6e 69 74 0d  08 ac 25 c8 99 20 22 4f  |. .init...%.. "O|
000013f0  53 5f 42 79 74 65 22 2c  31 36 31 2c 31 39 31 20  |S_Byte",161,191 |
00001400  b8 20 2c 2c 4f 6c 64 4d  6f 75 73 65 0d 08 b6 13  |. ,,OldMouse....|
00001410  6e 75 6d 5f 73 74 61 72  73 20 3d 20 32 35 35 0d  |num_stars = 255.|
00001420  08 c0 25 6d 61 78 5f 74  75 6e 65 73 20 3d 20 31  |..%max_tunes = 1|
00001430  36 3a de 20 74 75 6e 65  24 28 6d 61 78 5f 74 75  |6:. tune$(max_tu|
00001440  6e 65 73 29 0d 08 ca 04  0d 08 d4 2f 73 70 6c 65  |nes)......./sple|
00001450  6e 20 3d 20 a4 67 65 74  5f 6d 61 78 5f 73 70 72  |n = .get_max_spr|
00001460  69 74 65 6c 65 6e 28 22  3c 52 75 6e 47 61 6d 65  |itelen("<RunGame|
00001470  24 44 69 72 3e 22 29 0d  08 de 04 0d 08 e8 22 73  |$Dir>")......."s|
00001480  70 6c 65 6e 2b 3d 20 31  36 3a de 20 73 70 72 69  |plen+= 16:. spri|
00001490  74 65 5f 61 72 65 61 20  73 70 6c 65 6e 0d 08 f2  |te_area splen...|
000014a0  04 0d 08 fc 49 21 73 70  72 69 74 65 5f 61 72 65  |....I!sprite_are|
000014b0  61 3d 73 70 6c 65 6e 3a  73 70 72 69 74 65 5f 61  |a=splen:sprite_a|
000014c0  72 65 61 21 34 3d 30 3a  73 70 72 69 74 65 5f 61  |rea!4=0:sprite_a|
000014d0  72 65 61 21 38 3d 31 36  3a 73 70 72 69 74 65 5f  |rea!8=16:sprite_|
000014e0  61 72 65 61 21 31 32 3d  31 36 0d 09 06 04 0d 09  |area!12=16......|
000014f0  10 3d c8 99 20 22 4f 53  5f 46 69 6c 65 22 2c 35  |.=.. "OS_File",5|
00001500  2c 22 3c 52 75 6e 47 61  6d 65 24 44 69 72 3e 2e  |,"<RunGame$Dir>.|
00001510  53 70 72 69 74 65 73 32  22 20 b8 20 66 74 79 70  |Sprites2" . ftyp|
00001520  65 2c 2c 2c 2c 73 70 6c  65 6e 32 0d 09 1a 28 e7  |e,,,,splen2...(.|
00001530  20 66 74 79 70 65 3d 30  20 85 20 32 35 34 2c 22  | ftype=0 . 254,"|
00001540  4e 6f 20 27 53 70 72 69  74 65 73 32 27 20 66 69  |No 'Sprites2' fi|
00001550  6c 65 22 0d 09 24 04 0d  09 2e 25 73 70 6c 65 6e  |le"..$....%splen|
00001560  32 2b 3d 20 31 36 3a de  20 73 70 72 69 74 65 5f  |2+= 16:. sprite_|
00001570  61 72 65 61 32 20 73 70  6c 65 6e 32 0d 09 38 04  |area2 splen2..8.|
00001580  0d 09 42 4e 21 73 70 72  69 74 65 5f 61 72 65 61  |..BN!sprite_area|
00001590  32 3d 73 70 6c 65 6e 32  3a 73 70 72 69 74 65 5f  |2=splen2:sprite_|
000015a0  61 72 65 61 32 21 34 3d  30 3a 73 70 72 69 74 65  |area2!4=0:sprite|
000015b0  5f 61 72 65 61 32 21 38  3d 31 36 3a 73 70 72 69  |_area2!8=16:spri|
000015c0  74 65 5f 61 72 65 61 32  21 31 32 3d 31 36 0d 09  |te_area2!12=16..|
000015d0  4c 41 c8 99 20 22 4f 53  5f 53 70 72 69 74 65 4f  |LA.. "OS_SpriteO|
000015e0  70 22 2c 32 35 36 2b 31  30 2c 73 70 72 69 74 65  |p",256+10,sprite|
000015f0  5f 61 72 65 61 32 2c 22  3c 52 75 6e 47 61 6d 65  |_area2,"<RunGame|
00001600  24 44 69 72 3e 2e 53 70  72 69 74 65 73 32 22 0d  |$Dir>.Sprites2".|
00001610  09 56 04 0d 09 60 28 f2  6c 6f 61 64 5f 73 6f 75  |.V...`(.load_sou|
00001620  6e 64 73 28 22 3c 52 75  6e 47 61 6d 65 24 44 69  |nds("<RunGame$Di|
00001630  72 3e 2e 53 6f 75 6e 64  73 22 29 0d 09 6a 04 0d  |r>.Sounds")..j..|
00001640  09 74 1f de 20 6e 61 6d  65 24 28 6d 61 78 68 69  |.t.. name$(maxhi|
00001650  29 2c 73 63 6f 72 65 28  6d 61 78 68 69 29 0d 09  |),score(maxhi)..|
00001660  7e 22 6e 61 6d 65 24 28  29 3d 22 43 72 65 61 74  |~"name$()="Creat|
00001670  6f 72 22 3a 73 63 6f 72  65 28 29 3d 31 30 30 30  |or":score()=1000|
00001680  0d 09 88 04 0d 09 92 24  69 6e 25 3d 8e 20 22 3c  |.......$in%=. "<|
00001690  52 75 6e 47 61 6d 65 24  44 69 72 3e 2e 48 69 67  |RunGame$Dir>.Hig|
000016a0  68 53 63 6f 72 65 73 22  0d 09 9c 0e e7 20 69 6e  |hScores"..... in|
000016b0  25 3c 3e 30 20 8c 0d 09  a6 08 49 25 3d 31 0d 09  |%<>0 .....I%=1..|
000016c0  b0 1a c8 95 20 ac 20 c5  23 69 6e 25 20 80 20 49  |.... . .#in% . I|
000016d0  25 3c 3d 6d 61 78 68 69  0d 09 ba 11 20 20 6c 69  |%<=maxhi....  li|
000016e0  6e 65 24 3d be 23 69 6e  25 0d 09 c4 24 20 20 e7  |ne$=.#in%...$  .|
000016f0  20 c0 6c 69 6e 65 24 2c  31 29 3c 3e 22 3b 22 20  | .line$,1)<>";" |
00001700  80 20 6c 69 6e 65 24 3c  3e 22 22 20 8c 0d 09 ce  |. line$<>"" ....|
00001710  3f 20 20 20 20 e7 20 49  25 3e 6d 61 78 68 69 20  |?    . I%>maxhi |
00001720  8c 20 85 20 32 35 33 2c  22 54 6f 6f 20 6d 61 6e  |. . 253,"Too man|
00001730  79 20 6e 61 6d 65 73 20  69 6e 20 27 48 69 67 68  |y names in 'High|
00001740  53 63 6f 72 65 27 20 66  69 6c 65 22 0d 09 d8 16  |Score' file"....|
00001750  20 20 20 20 51 25 3d a7  6c 69 6e 65 24 2c 22 3a  |    Q%=.line$,":|
00001760  22 29 0d 09 e2 1e 20 20  20 20 6e 61 6d 65 24 28  |")....    name$(|
00001770  49 25 29 3d c0 6c 69 6e  65 24 2c 51 25 2d 31 29  |I%)=.line$,Q%-1)|
00001780  0d 09 ec 33 20 20 20 20  6e 61 6d 65 24 28 49 25  |...3    name$(I%|
00001790  29 3d c0 6e 61 6d 65 24  28 49 25 29 2b c4 6d 61  |)=.name$(I%)+.ma|
000017a0  78 6c 65 6e 2c 22 20 22  29 2c 6d 61 78 6c 65 6e  |xlen," "),maxlen|
000017b0  2d 31 29 0d 09 f6 0d 20  20 20 20 51 25 2b 3d 31  |-1)....    Q%+=1|
000017c0  0d 0a 00 23 20 20 20 20  c8 95 20 c1 6c 69 6e 65  |...#    .. .line|
000017d0  24 2c 51 25 2c 31 29 3d  22 20 22 3a 51 25 2b 3d  |$,Q%,1)=" ":Q%+=|
000017e0  31 3a ce 0d 0a 0a 19 20  20 20 20 76 61 6c 75 65  |1:.....    value|
000017f0  24 3d c1 6c 69 6e 65 24  2c 51 25 29 0d 0a 14 1d  |$=.line$,Q%)....|
00001800  20 20 20 20 73 63 6f 72  65 28 49 25 29 20 3d 20  |    score(I%) = |
00001810  bb 28 76 61 6c 75 65 24  29 0d 0a 1e 0d 20 20 20  |.(value$)....   |
00001820  20 49 25 2b 3d 31 0d 0a  28 07 20 20 cd 0d 0a 32  | I%+=1..(.  ...2|
00001830  05 ce 0d 0a 3c 09 d9 23  69 6e 25 0d 0a 46 05 cd  |....<..#in%..F..|
00001840  0d 0a 50 1b f2 73 6f 72  74 5f 68 69 67 68 73 63  |..P..sort_highsc|
00001850  6f 72 65 73 28 6d 61 78  68 69 29 0d 0a 5a 04 0d  |ores(maxhi)..Z..|
00001860  0a 64 3c c8 99 20 22 4f  53 5f 46 69 6c 65 22 2c  |.d<.. "OS_File",|
00001870  35 2c 22 3c 52 75 6e 47  61 6d 65 24 44 69 72 3e  |5,"<RunGame$Dir>|
00001880  2e 46 43 6f 64 65 22 20  b8 20 66 74 79 70 65 2c  |.FCode" . ftype,|
00001890  2c 2c 2c 63 6f 64 65 73  69 7a 65 0d 0a 6e 13 de  |,,,codesize..n..|
000018a0  20 63 6f 64 65 20 63 6f  64 65 73 69 7a 65 0d 0a  | code codesize..|
000018b0  78 04 0d 0a 82 16 e3 20  70 61 73 73 20 3d 20 30  |x...... pass = 0|
000018c0  20 b8 20 32 20 88 20 32  0d 0a 8c 18 f2 61 73 73  | . 2 . 2.....ass|
000018d0  65 6d 62 6c 65 28 63 6f  64 65 2c 70 61 73 73 29  |emble(code,pass)|
000018e0  0d 0a 96 05 ed 0d 0a a0  04 0d 0a aa 29 ff 28 22  |............).("|
000018f0  4c 4f 41 44 20 3c 52 75  6e 47 61 6d 65 24 44 69  |LOAD <RunGame$Di|
00001900  72 3e 2e 46 43 6f 64 65  20 22 2b c3 7e 63 6f 64  |r>.FCode "+.~cod|
00001910  65 29 0d 0a b4 07 d4 20  ee 0d 0a be 10 de 20 77  |e)..... ...... w|
00001920  6f 72 6b 25 20 32 30 30  30 0d 0a c8 12 de 20 4f  |ork% 2000..... O|
00001930  53 62 75 66 66 65 72 20  32 35 36 0d 0a d2 04 0d  |Sbuffer 256.....|
00001940  0a dc 44 f2 73 65 74 5f  4f 53 76 61 72 28 22 53  |..D.set_OSvar("S|
00001950  61 76 65 47 61 6d 65 24  44 69 72 22 2c a4 73 74  |aveGame$Dir",.st|
00001960  72 69 70 43 46 53 28 a4  72 65 61 64 5f 4f 53 76  |ripCFS(.read_OSv|
00001970  61 72 28 22 52 75 6e 47  61 6d 65 24 44 69 72 22  |ar("RunGame$Dir"|
00001980  29 29 29 0d 0a e6 04 0d  0a f0 05 e1 0d 0a fa 04  |))).............|
00001990  0d 0b 04 04 0d 0b 0e 10  dd 20 f2 66 69 6e 64 5f  |......... .find_|
000019a0  6d 6f 64 65 0d 0b 18 0f  ea 20 64 75 6d 6d 79 24  |mode..... dummy$|
000019b0  2c 49 25 0d 0b 22 26 69  6e 25 20 3d 20 8e 20 28  |,I%.."&in% = . (|
000019c0  22 3c 52 75 6e 47 61 6d  65 24 44 69 72 3e 2e 47  |"<RunGame$Dir>.G|
000019d0  61 6d 65 44 61 74 61 22  29 0d 0b 2c 2c e7 20 69  |ameData")..,,. i|
000019e0  6e 25 3d 30 20 85 20 32  35 32 2c 22 47 61 6d 65  |n%=0 . 252,"Game|
000019f0  44 61 74 61 20 66 69 6c  65 20 69 73 20 6d 69 73  |Data file is mis|
00001a00  73 69 6e 67 22 0d 0b 36  1d e3 20 49 25 3d 31 20  |sing"..6.. I%=1 |
00001a10  b8 20 37 3a 64 75 6d 6d  79 24 3d be 23 69 6e 25  |. 7:dummy$=.#in%|
00001a20  3a ed 0d 0b 40 11 6d 6f  64 65 3d bb 28 be 23 69  |:...@.mode=.(.#i|
00001a30  6e 25 29 0d 0b 4a 09 d9  23 69 6e 25 0d 0b 54 05  |n%)..J..#in%..T.|
00001a40  e1 0d 0b 5e 04 0d 0b 68  13 dd 20 f2 63 68 65 63  |...^...h.. .chec|
00001a50  6b 5f 63 6f 6e 66 69 67  0d 0b 72 20 69 6e 25 3d  |k_config..r in%=|
00001a60  8e 20 22 3c 52 75 6e 47  61 6d 65 24 44 69 72 3e  |. "<RunGame$Dir>|
00001a70  2e 43 6f 6e 66 69 67 22  0d 0b 7c 0d 64 65 6c 61  |.Config"..|.dela|
00001a80  79 20 3d 20 33 0d 0b 86  14 73 63 72 65 65 6e 5f  |y = 3....screen_|
00001a90  64 65 6c 61 79 20 3d 20  35 0d 0b 90 11 78 63 6f  |delay = 5....xco|
00001aa0  6f 72 64 31 20 3d 20 35  34 30 0d 0b 9a 11 79 63  |ord1 = 540....yc|
00001ab0  6f 6f 72 64 31 20 3d 20  35 30 30 0d 0b a4 11 78  |oord1 = 500....x|
00001ac0  63 6f 6f 72 64 32 20 3d  20 35 32 30 0d 0b ae 11  |coord2 = 520....|
00001ad0  79 63 6f 6f 72 64 32 20  3d 20 35 30 30 0d 0b b8  |ycoord2 = 500...|
00001ae0  12 73 68 6f 77 24 3d 22  41 4c 57 41 59 53 22 0d  |.show$="ALWAYS".|
00001af0  0b c2 11 73 61 76 65 24  20 3d 20 22 59 45 53 22  |...save$ = "YES"|
00001b00  0d 0b cc 10 6b 65 79 24  3d 20 22 59 79 4e 6e 22  |....key$= "YyNn"|
00001b10  0d 0b d6 13 70 6c 61 79  5f 74 75 6e 65 24 20 3d  |....play_tune$ =|
00001b20  20 22 22 0d 0b e0 13 73  74 6f 70 5f 74 75 6e 65  | ""....stop_tune|
00001b30  24 20 3d 20 22 22 0d 0b  ea 13 72 65 6c 6f 61 64  |$ = ""....reload|
00001b40  24 20 3d 20 22 59 45 53  22 0d 0b f4 0d 6d 61 78  |$ = "YES"....max|
00001b50  68 69 20 3d 20 35 0d 0b  fe 0d 6d 61 78 6c 65 6e  |hi = 5....maxlen|
00001b60  3d 31 36 0d 0c 08 10 6d  61 78 64 69 67 69 74 73  |=16....maxdigits|
00001b70  3d 31 30 0d 0c 12 14 73  63 72 6e 6c 6f 61 64 24  |=10....scrnload$|
00001b80  3d 22 46 41 53 54 22 0d  0c 1c 17 64 61 74 61 5f  |="FAST"....data_|
00001b90  73 69 7a 65 20 3d 20 36  34 2a 31 30 32 34 0d 0c  |size = 64*1024..|
00001ba0  26 0d c8 8e 20 6d 6f 64  65 20 ca 0d 0c 30 09 c9  |&... mode ...0..|
00001bb0  20 31 33 3a 0d 0c 3a 11  68 73 78 20 20 20 20 20  | 13:..:.hsx     |
00001bc0  3d 20 31 33 30 0d 0c 44  11 68 73 79 20 20 20 20  |= 130..D.hsy    |
00001bd0  20 3d 20 34 30 30 0d 0c  4e 14 73 6c 61 62 5f 63  | = 400..N.slab_c|
00001be0  6f 6c 6f 75 72 20 3d 20  34 32 0d 0c 58 0f 68 69  |olour = 42..X.hi|
00001bf0  6c 69 74 65 20 3d 20 36  33 0d 0c 62 0f 6c 6f 6c  |lite = 63..b.lol|
00001c00  69 74 65 20 3d 20 32 31  0d 0c 6c 0d 69 6e 73 65  |ite = 21..l.inse|
00001c10  74 20 3d 20 30 0d 0c 76  0c 6c 69 6e 65 20 3d 20  |t = 0..v.line = |
00001c20  30 0d 0c 80 05 cb 0d 0c  8a 04 0d 0c 94 0e e7 20  |0.............. |
00001c30  69 6e 25 3c 3e 30 20 8c  0d 0c 9e 0e c8 95 20 ac  |in%<>0 ....... .|
00001c40  20 c5 23 69 6e 25 0d 0c  a8 11 20 20 6c 69 6e 65  | .#in%....  line|
00001c50  24 3d be 23 69 6e 25 0d  0c b2 24 20 20 e7 20 c0  |$=.#in%...$  . .|
00001c60  6c 69 6e 65 24 2c 31 29  3c 3e 22 3b 22 20 80 20  |line$,1)<>";" . |
00001c70  6c 69 6e 65 24 3c 3e 22  22 20 8c 0d 0c bc 16 20  |line$<>"" ..... |
00001c80  20 20 20 51 25 3d a7 6c  69 6e 65 24 2c 22 3a 22  |   Q%=.line$,":"|
00001c90  29 0d 0c c6 1b 20 20 20  20 6c 61 62 65 6c 24 3d  |)....    label$=|
00001ca0  c0 6c 69 6e 65 24 2c 51  25 2d 31 29 0d 0c d0 0d  |.line$,Q%-1)....|
00001cb0  20 20 20 20 51 25 2b 3d  31 0d 0c da 23 20 20 20  |    Q%+=1...#   |
00001cc0  20 c8 95 20 c1 6c 69 6e  65 24 2c 51 25 2c 31 29  | .. .line$,Q%,1)|
00001cd0  3d 22 20 22 3a 51 25 2b  3d 31 3a ce 0d 0c e4 1b  |=" ":Q%+=1:.....|
00001ce0  20 20 20 20 20 20 76 61  6c 75 65 24 3d c1 6c 69  |      value$=.li|
00001cf0  6e 65 24 2c 51 25 29 0d  0c ee 1b 20 20 20 20 20  |ne$,Q%)....     |
00001d00  20 76 61 6c 75 65 20 3d  20 bb 28 76 61 6c 75 65  | value = .(value|
00001d10  24 29 0d 0c f8 15 20 20  20 20 20 20 c8 8e 20 6c  |$)....      .. l|
00001d20  61 62 65 6c 24 20 ca 0d  0d 02 15 20 20 20 20 20  |abel$ .....     |
00001d30  20 20 20 c9 20 22 44 65  6c 61 79 22 0d 0d 0c 1b  |   . "Delay"....|
00001d40  20 20 20 20 20 20 20 20  20 20 64 65 6c 61 79 20  |          delay |
00001d50  3d 20 76 61 6c 75 65 0d  0d 16 1b 20 20 20 20 20  |= value....     |
00001d60  20 20 20 c9 20 22 47 61  6d 65 20 6f 76 65 72 20  |   . "Game over |
00001d70  58 22 0d 0d 20 1d 20 20  20 20 20 20 20 20 20 20  |X".. .          |
00001d80  78 63 6f 6f 72 64 31 20  3d 20 76 61 6c 75 65 0d  |xcoord1 = value.|
00001d90  0d 2a 1b 20 20 20 20 20  20 20 20 c9 20 22 47 61  |.*.        . "Ga|
00001da0  6d 65 20 6f 76 65 72 20  59 22 0d 0d 34 1d 20 20  |me over Y"..4.  |
00001db0  20 20 20 20 20 20 20 20  79 63 6f 6f 72 64 31 20  |        ycoord1 |
00001dc0  3d 20 76 61 6c 75 65 0d  0d 3e 1c 20 20 20 20 20  |= value..>.     |
00001dd0  20 20 20 c9 20 22 50 6c  61 79 20 61 67 61 69 6e  |   . "Play again|
00001de0  20 58 22 0d 0d 48 1d 20  20 20 20 20 20 20 20 20  | X"..H.         |
00001df0  20 78 63 6f 6f 72 64 32  20 3d 20 76 61 6c 75 65  | xcoord2 = value|
00001e00  0d 0d 52 1c 20 20 20 20  20 20 20 20 c9 20 22 50  |..R.        . "P|
00001e10  6c 61 79 20 61 67 61 69  6e 20 59 22 0d 0d 5c 1d  |lay again Y"..\.|
00001e20  20 20 20 20 20 20 20 20  20 20 79 63 6f 6f 72 64  |          ycoord|
00001e30  32 20 3d 20 76 61 6c 75  65 0d 0d 66 17 20 20 20  |2 = value..f.   |
00001e40  20 20 20 20 20 c9 20 22  54 61 62 6c 65 20 58 22  |     . "Table X"|
00001e50  0d 0d 70 19 20 20 20 20  20 20 20 20 20 20 68 73  |..p.          hs|
00001e60  78 20 3d 20 76 61 6c 75  65 0d 0d 7a 17 20 20 20  |x = value..z.   |
00001e70  20 20 20 20 20 c9 20 22  54 61 62 6c 65 20 59 22  |     . "Table Y"|
00001e80  0d 0d 84 19 20 20 20 20  20 20 20 20 20 20 68 73  |....          hs|
00001e90  79 20 3d 20 76 61 6c 75  65 0d 0d 8e 14 20 20 20  |y = value....   |
00001ea0  20 20 20 20 20 c9 20 22  4b 65 79 73 22 0d 0d 98  |     . "Keys"...|
00001eb0  1b 20 20 20 20 20 20 20  20 20 20 6b 65 79 24 20  |.          key$ |
00001ec0  3d 20 76 61 6c 75 65 24  0d 0d a2 1c 20 20 20 20  |= value$....    |
00001ed0  20 20 20 20 c9 20 22 54  61 62 6c 65 20 63 6f 6c  |    . "Table col|
00001ee0  6f 75 72 22 0d 0d ac 20  20 20 20 20 20 20 20 20  |our"...         |
00001ef0  20 20 73 6c 61 62 5f 63  6f 6c 6f 75 72 3d 20 76  |  slab_colour= v|
00001f00  61 6c 75 65 0d 0d b6 1c  20 20 20 20 20 20 20 20  |alue....        |
00001f10  c9 20 22 49 6e 73 65 74  20 63 6f 6c 6f 75 72 22  |. "Inset colour"|
00001f20  0d 0d c0 1b 20 20 20 20  20 20 20 20 20 20 69 6e  |....          in|
00001f30  73 65 74 20 3d 20 76 61  6c 75 65 0d 0d ca 1a 20  |set = value.... |
00001f40  20 20 20 20 20 20 20 c9  20 22 53 68 6f 77 20 74  |       . "Show t|
00001f50  61 62 6c 65 22 0d 0d d4  1c 20 20 20 20 20 20 20  |able"....       |
00001f60  20 20 20 73 68 6f 77 24  20 3d 20 76 61 6c 75 65  |   show$ = value|
00001f70  24 0d 0d de 1a 20 20 20  20 20 20 20 20 c9 20 22  |$....        . "|
00001f80  53 61 76 65 20 74 61 62  6c 65 22 0d 0d e8 1a 20  |Save table".... |
00001f90  20 20 20 20 20 20 20 20  20 73 61 76 65 24 3d 76  |         save$=v|
00001fa0  61 6c 75 65 24 0d 0d f2  1a 20 20 20 20 20 20 20  |alue$....       |
00001fb0  20 c9 20 22 54 61 62 6c  65 20 73 69 7a 65 22 0d  | . "Table size".|
00001fc0  0d fc 1b 20 20 20 20 20  20 20 20 20 20 6d 61 78  |...          max|
00001fd0  68 69 20 3d 20 76 61 6c  75 65 0d 0e 06 26 20 20  |hi = value...&  |
00001fe0  20 20 20 20 20 20 20 20  e7 20 6d 61 78 68 69 20  |        . maxhi |
00001ff0  3e 20 31 36 20 8c 20 6d  61 78 68 69 20 3d 31 36  |> 16 . maxhi =16|
00002000  0d 0e 10 1b 20 20 20 20  20 20 20 20 c9 20 22 4c  |....        . "L|
00002010  6f 61 64 20 73 63 72 65  65 6e 22 0d 0e 1a 20 20  |oad screen"...  |
00002020  20 20 20 20 20 20 20 20  20 73 63 72 6e 6c 6f 61  |         scrnloa|
00002030  64 24 20 3d 20 76 61 6c  75 65 24 0d 0e 24 1c 20  |d$ = value$..$. |
00002040  20 20 20 20 20 20 20 c9  20 22 4c 6f 61 64 69 6e  |       . "Loadin|
00002050  67 20 74 75 6e 65 22 0d  0e 2e 21 20 20 20 20 20  |g tune"...!     |
00002060  20 20 20 20 20 70 6c 61  79 5f 74 75 6e 65 24 20  |     play_tune$ |
00002070  3d 20 76 61 6c 75 65 24  0d 0e 38 19 20 20 20 20  |= value$..8.    |
00002080  20 20 20 20 c9 20 22 53  74 6f 70 20 74 75 6e 65  |    . "Stop tune|
00002090  22 0d 0e 42 21 20 20 20  20 20 20 20 20 20 20 73  |"..B!          s|
000020a0  74 6f 70 5f 74 75 6e 65  24 20 3d 20 76 61 6c 75  |top_tune$ = valu|
000020b0  65 24 0d 0e 4c 1c 20 20  20 20 20 20 20 20 c9 20  |e$..L.        . |
000020c0  22 53 63 72 65 65 6e 20  64 65 6c 61 79 22 0d 0e  |"Screen delay"..|
000020d0  56 22 20 20 20 20 20 20  20 20 20 20 73 63 72 65  |V"          scre|
000020e0  65 6e 5f 64 65 6c 61 79  20 3d 20 76 61 6c 75 65  |en_delay = value|
000020f0  0d 0e 60 19 20 20 20 20  20 20 20 20 c9 20 22 44  |..`.        . "D|
00002100  61 74 61 20 73 69 7a 65  22 0d 0e 6a 24 20 20 20  |ata size"..j$   |
00002110  20 20 20 20 20 20 20 64  61 74 61 5f 73 69 7a 65  |       data_size|
00002120  20 3d 20 76 61 6c 75 65  2a 31 30 32 34 0d 0e 74  | = value*1024..t|
00002130  1b 20 20 20 20 20 20 20  20 c9 20 22 4e 61 6d 65  |.        . "Name|
00002140  20 6c 65 6e 67 74 68 22  0d 0e 7e 1c 20 20 20 20  | length"..~.    |
00002150  20 20 20 20 20 20 6d 61  78 6c 65 6e 20 3d 20 76  |      maxlen = v|
00002160  61 6c 75 65 0d 0e 88 27  20 20 20 20 20 20 20 20  |alue...'        |
00002170  20 20 e7 20 6d 61 78 6c  65 6e 20 3e 20 31 36 20  |  . maxlen > 16 |
00002180  6d 61 78 6c 65 6e 20 3d  20 31 36 0d 0e 92 1c 20  |maxlen = 16.... |
00002190  20 20 20 20 20 20 20 c9  20 22 53 63 6f 72 65 20  |       . "Score |
000021a0  6c 65 6e 67 74 68 22 0d  0e 9c 1f 20 20 20 20 20  |length"....     |
000021b0  20 20 20 20 20 6d 61 78  64 69 67 69 74 73 20 3d  |     maxdigits =|
000021c0  20 76 61 6c 75 65 0d 0e  a6 2d 20 20 20 20 20 20  | value...-      |
000021d0  20 20 20 20 e7 20 6d 61  78 64 69 67 69 74 73 20  |    . maxdigits |
000021e0  3e 20 31 30 20 6d 61 78  64 69 67 69 74 73 20 3d  |> 10 maxdigits =|
000021f0  20 31 30 0d 0e b0 1e 20  20 20 20 20 20 20 20 c9  | 10....        .|
00002200  20 22 52 65 6c 6f 61 64  20 73 70 72 69 74 65 73  | "Reload sprites|
00002210  22 0d 0e ba 1e 20 20 20  20 20 20 20 20 20 20 72  |"....          r|
00002220  65 6c 6f 61 64 24 20 3d  20 76 61 6c 75 65 24 0d  |eload$ = value$.|
00002230  0e c4 0b 20 20 20 20 20  20 cb 0d 0e ce 07 20 20  |...      .....  |
00002240  cd 0d 0e d8 05 ce 0d 0e  e2 09 d9 23 69 6e 25 0d  |...........#in%.|
00002250  0e ec 05 cd 0d 0e f6 05  e1 0d 0f 00 04 0d 0f 0a  |................|
00002260  04 0d 0f 14 18 dd 20 f2  6c 6f 61 64 5f 73 6f 75  |...... .load_sou|
00002270  6e 64 73 28 64 69 72 24  29 0d 0f 1e 10 ea 20 69  |nds(dir$)..... i|
00002280  74 65 6d 2c 76 6f 69 63  65 0d 0f 28 21 de 20 69  |tem,voice..(!. i|
00002290  6e 66 6f 62 75 66 66 65  72 20 35 31 32 2c 70 61  |nfobuffer 512,pa|
000022a0  74 68 6e 61 6d 65 20 32  35 36 0d 0f 32 15 69 74  |thname 256..2.it|
000022b0  65 6d 20 3d 20 30 3a 76  6f 69 63 65 3d 31 36 0d  |em = 0:voice=16.|
000022c0  0f 3c 16 24 70 61 74 68  6e 61 6d 65 3d 64 69 72  |.<.$pathname=dir|
000022d0  24 2b 22 2e 22 0d 0f 46  04 0d 0f 50 1f c8 99 20  |$+"."..F...P... |
000022e0  22 45 78 53 5f 4e 61 6d  65 22 2c 33 31 20 b8 20  |"ExS_Name",31 . |
000022f0  53 4d 76 6f 69 63 65 24  0d 0f 5a 21 53 4d 76 6f  |SMvoice$..Z!SMvo|
00002300  69 63 65 24 3d 24 70 61  74 68 6e 61 6d 65 20 2b  |ice$=$pathname +|
00002310  20 53 4d 76 6f 69 63 65  24 0d 0f 64 04 0d 0f 6e  | SMvoice$..d...n|
00002320  10 e3 20 49 25 3d 31 36  20 b8 20 33 31 0d 0f 78  |.. I%=16 . 31..x|
00002330  18 20 20 c8 99 20 22 45  78 53 5f 52 65 6d 6f 76  |.  .. "ExS_Remov|
00002340  65 22 2c 49 25 0d 0f 82  05 ed 0d 0f 8c 04 0d 0f  |e",I%...........|
00002350  96 2b c8 99 20 22 4f 53  5f 46 53 43 6f 6e 74 72  |.+.. "OS_FSContr|
00002360  6f 6c 22 2c 32 38 2c 64  69 72 24 2c 2c 30 20 b8  |ol",28,dir$,,0 .|
00002370  20 2c 2c 2c 66 69 6c 65  73 0d 0f a0 04 0d 0f aa  | ,,,files.......|
00002380  0f e7 20 66 69 6c 65 73  3e 30 20 8c 0d 0f b4 04  |.. files>0 .....|
00002390  0d 0f be 11 c8 95 20 69  74 65 6d 20 3c 3e 20 2d  |...... item <> -|
000023a0  31 0d 0f c8 11 20 20 4a  25 3d a9 20 64 69 72 24  |1....  J%=. dir$|
000023b0  2b 31 0d 0f d2 3c 20 20  c8 99 20 22 4f 53 5f 47  |+1...<  .. "OS_G|
000023c0  42 50 42 22 2c 39 2c 64  69 72 24 2c 69 6e 66 6f  |BPB",9,dir$,info|
000023d0  62 75 66 66 65 72 2c 31  2c 69 74 65 6d 2c 35 31  |buffer,1,item,51|
000023e0  32 2c 30 20 b8 20 2c 2c  2c 2c 69 74 65 6d 0d 0f  |2,0 . ,,,,item..|
000023f0  dc 0a 20 20 49 25 3d 30  0d 0f e6 19 20 20 c8 95  |..  I%=0....  ..|
00002400  20 69 6e 66 6f 62 75 66  66 65 72 3f 49 25 20 3e  | infobuffer?I% >|
00002410  30 0d 0f f0 23 20 20 20  20 70 61 74 68 6e 61 6d  |0...#    pathnam|
00002420  65 3f 4a 25 20 3d 20 69  6e 66 6f 62 75 66 66 65  |e?J% = infobuffe|
00002430  72 3f 49 25 0d 0f fa 13  20 20 20 20 49 25 2b 3d  |r?I%....    I%+=|
00002440  31 3a 4a 25 2b 3d 31 0d  10 04 07 20 20 ce 0d 10  |1:J%+=1....  ...|
00002450  0e 16 20 20 70 61 74 68  6e 61 6d 65 3f 4a 25 20  |..  pathname?J% |
00002460  3d 20 31 33 0d 10 18 25  20 20 c8 99 20 22 45 78  |= 13...%  .. "Ex|
00002470  53 5f 49 6e 73 74 61 6c  6c 22 2c 76 6f 69 63 65  |S_Install",voice|
00002480  2c 70 61 74 68 6e 61 6d  65 0d 10 22 0e 20 20 76  |,pathname..".  v|
00002490  6f 69 63 65 2b 3d 31 0d  10 2c 05 ce 0d 10 36 04  |oice+=1..,....6.|
000024a0  0d 10 40 05 cd 0d 10 4a  05 e1 0d 10 54 04 0d 10  |..@....J....T...|
000024b0  5e 1e dd 20 a4 67 65 74  5f 6d 61 78 5f 73 70 72  |^.. .get_max_spr|
000024c0  69 74 65 6c 65 6e 28 64  69 72 24 29 0d 10 68 1e  |itelen(dir$)..h.|
000024d0  ea 20 69 74 65 6d 2c 66  69 6c 65 73 2c 62 69 67  |. item,files,big|
000024e0  67 65 73 74 2c 73 70 6c  65 6e 0d 10 72 21 de 20  |gest,splen..r!. |
000024f0  69 6e 66 6f 62 75 66 66  65 72 20 35 31 32 2c 70  |infobuffer 512,p|
00002500  61 74 68 6e 61 6d 65 20  32 35 36 0d 10 7c 29 69  |athname 256..|)i|
00002510  74 65 6d 20 3d 20 30 3a  62 69 67 67 65 73 74 3d  |tem = 0:biggest=|
00002520  30 3a 24 70 61 74 68 6e  61 6d 65 3d 64 69 72 24  |0:$pathname=dir$|
00002530  2b 22 2e 22 0d 10 86 04  0d 10 90 2b c8 99 20 22  |+".".......+.. "|
00002540  4f 53 5f 46 53 43 6f 6e  74 72 6f 6c 22 2c 32 38  |OS_FSControl",28|
00002550  2c 64 69 72 24 2c 2c 30  20 b8 20 2c 2c 2c 66 69  |,dir$,,0 . ,,,fi|
00002560  6c 65 73 0d 10 9a 04 0d  10 a4 0f e7 20 66 69 6c  |les......... fil|
00002570  65 73 3e 30 20 8c 0d 10  ae 04 0d 10 b8 11 c8 95  |es>0 ...........|
00002580  20 69 74 65 6d 20 3c 3e  20 2d 31 0d 10 c2 11 20  | item <> -1.... |
00002590  20 4a 25 3d a9 20 64 69  72 24 2b 31 0d 10 cc 04  | J%=. dir$+1....|
000025a0  0d 10 d6 3c 20 20 c8 99  20 22 4f 53 5f 47 42 50  |...<  .. "OS_GBP|
000025b0  42 22 2c 39 2c 64 69 72  24 2c 69 6e 66 6f 62 75  |B",9,dir$,infobu|
000025c0  66 66 65 72 2c 31 2c 69  74 65 6d 2c 35 31 32 2c  |ffer,1,item,512,|
000025d0  30 20 b8 20 2c 2c 2c 2c  69 74 65 6d 0d 10 e0 0a  |0 . ,,,,item....|
000025e0  20 20 49 25 3d 30 0d 10  ea 19 20 20 c8 95 20 69  |  I%=0....  .. i|
000025f0  6e 66 6f 62 75 66 66 65  72 3f 49 25 20 3e 30 0d  |nfobuffer?I% >0.|
00002600  10 f4 23 20 20 20 20 70  61 74 68 6e 61 6d 65 3f  |..#    pathname?|
00002610  4a 25 20 3d 20 69 6e 66  6f 62 75 66 66 65 72 3f  |J% = infobuffer?|
00002620  49 25 0d 10 fe 13 20 20  20 20 49 25 2b 3d 31 3a  |I%....    I%+=1:|
00002630  4a 25 2b 3d 31 0d 11 08  07 20 20 ce 0d 11 12 16  |J%+=1....  .....|
00002640  20 20 70 61 74 68 6e 61  6d 65 3f 4a 25 20 3d 20  |  pathname?J% = |
00002650  31 33 0d 11 1c 2e 20 20  c8 99 20 22 4f 53 5f 46  |13....  .. "OS_F|
00002660  69 6c 65 22 2c 35 2c 70  61 74 68 6e 61 6d 65 20  |ile",5,pathname |
00002670  b8 20 2c 2c 66 74 79 70  65 2c 2c 73 70 6c 65 6e  |. ,,ftype,,splen|
00002680  0d 11 26 21 20 20 66 74  79 70 65 20 3d 20 28 66  |..&!  ftype = (f|
00002690  74 79 70 65 20 3e 3e 20  38 29 20 80 20 26 66 66  |type >> 8) . &ff|
000026a0  66 0d 11 30 38 20 20 e7  20 66 74 79 70 65 20 3d  |f..08  . ftype =|
000026b0  20 26 66 66 39 20 80 20  73 70 6c 65 6e 20 3e 20  | &ff9 . splen > |
000026c0  62 69 67 67 65 73 74 20  8c 20 62 69 67 67 65 73  |biggest . bigges|
000026d0  74 20 3d 20 73 70 6c 65  6e 0d 11 3a 05 ce 0d 11  |t = splen..:....|
000026e0  44 05 cd 0d 11 4e 0c 3d  62 69 67 67 65 73 74 0d  |D....N.=biggest.|
000026f0  11 58 04 0d 11 62 04 0d  11 6c 19 dd 20 f2 61 73  |.X...b...l.. .as|
00002700  73 65 6d 62 6c 65 28 6f  72 67 2c 70 61 73 73 29  |semble(org,pass)|
00002710  0d 11 76 11 50 25 3d 6f  72 67 3a 4f 25 3d 6f 72  |..v.P%=org:O%=or|
00002720  67 0d 11 80 0d 5b 4f 50  54 20 70 61 73 73 0d 11  |g....[OPT pass..|
00002730  8a 0f 2e 6a 75 6d 70 5f  74 61 62 6c 65 0d 11 94  |...jump_table...|
00002740  04 0d 11 9e 04 0d 11 a8  20 2e 5f 61 63 74 69 76  |........ ._activ|
00002750  61 74 65 5f 6f 62 6a 65  63 74 20 20 20 20 62 20  |ate_object    b |
00002760  64 75 6d 6d 79 0d 11 b2  20 2e 5f 64 65 61 63 74  |dummy... ._deact|
00002770  69 76 61 74 65 5f 6f 62  6a 65 63 74 20 20 62 20  |ivate_object  b |
00002780  64 75 6d 6d 79 0d 11 bc  20 2e 5f 73 68 6f 77 5f  |dummy... ._show_|
00002790  6f 62 6a 65 63 74 20 20  20 20 20 20 20 20 62 20  |object        b |
000027a0  64 75 6d 6d 79 0d 11 c6  20 2e 5f 68 69 64 65 5f  |dummy... ._hide_|
000027b0  6f 62 6a 65 63 74 20 20  20 20 20 20 20 20 62 20  |object        b |
000027c0  64 75 6d 6d 79 0d 11 d0  20 2e 5f 73 77 6f 70 5f  |dummy... ._swop_|
000027d0  6f 62 6a 65 63 74 73 20  20 20 20 20 20 20 62 20  |objects       b |
000027e0  64 75 6d 6d 79 0d 11 da  20 2e 5f 73 65 74 5f 63  |dummy... ._set_c|
000027f0  6f 6f 72 64 73 20 20 20  20 20 20 20 20 20 62 20  |oords         b |
00002800  64 75 6d 6d 79 0d 11 e4  20 2e 5f 73 68 69 66 74  |dummy... ._shift|
00002810  5f 6f 62 6a 65 63 74 20  20 20 20 20 20 20 62 20  |_object       b |
00002820  64 75 6d 6d 79 0d 11 ee  20 2e 5f 63 6f 70 79 5f  |dummy... ._copy_|
00002830  63 6f 6f 72 64 73 20 20  20 20 20 20 20 20 62 20  |coords        b |
00002840  64 75 6d 6d 79 0d 11 f8  20 2e 5f 72 65 76 65 72  |dummy... ._rever|
00002850  73 65 5f 76 65 72 74 69  63 61 6c 20 20 20 62 20  |se_vertical   b |
00002860  64 75 6d 6d 79 0d 12 02  20 2e 5f 72 65 76 65 72  |dummy... ._rever|
00002870  73 65 5f 68 6f 72 69 7a  6f 6e 74 61 6c 20 62 20  |se_horizontal b |
00002880  64 75 6d 6d 79 0d 12 0c  20 2e 5f 73 65 74 5f 58  |dummy... ._set_X|
00002890  76 65 6c 6f 63 69 74 79  20 20 20 20 20 20 62 20  |velocity      b |
000028a0  64 75 6d 6d 79 0d 12 16  20 2e 5f 73 65 74 5f 59  |dummy... ._set_Y|
000028b0  76 65 6c 6f 63 69 74 79  20 20 20 20 20 20 62 20  |velocity      b |
000028c0  64 75 6d 6d 79 0d 12 20  20 2e 5f 61 74 74 61 63  |dummy..  ._attac|
000028d0  68 5f 74 6f 5f 70 61 74  68 20 20 20 20 20 62 20  |h_to_path     b |
000028e0  64 75 6d 6d 79 0d 12 2a  20 2e 5f 6c 6f 61 64 5f  |dummy..* ._load_|
000028f0  73 63 72 65 65 6e 20 20  20 20 20 20 20 20 62 20  |screen        b |
00002900  64 75 6d 6d 79 0d 12 34  20 2e 5f 73 63 72 6f 6c  |dummy..4 ._scrol|
00002910  6c 5f 68 20 20 20 20 20  20 20 20 20 20 20 62 20  |l_h           b |
00002920  64 75 6d 6d 79 0d 12 3e  20 2e 5f 73 63 72 6f 6c  |dummy..> ._scrol|
00002930  6c 5f 76 20 20 20 20 20  20 20 20 20 20 20 62 20  |l_v           b |
00002940  64 75 6d 6d 79 0d 12 48  20 2e 5f 70 75 74 5f 76  |dummy..H ._put_v|
00002950  61 72 20 20 20 20 20 20  20 20 20 20 20 20 62 20  |ar            b |
00002960  64 75 6d 6d 79 0d 12 52  20 2e 5f 61 64 64 5f 76  |dummy..R ._add_v|
00002970  61 72 20 20 20 20 20 20  20 20 20 20 20 20 62 20  |ar            b |
00002980  64 75 6d 6d 79 0d 12 5c  20 2e 5f 73 75 62 74 72  |dummy..\ ._subtr|
00002990  61 63 74 5f 76 61 72 20  20 20 20 20 20 20 62 20  |act_var       b |
000029a0  64 75 6d 6d 79 0d 12 66  20 2e 5f 6d 61 6b 65 5f  |dummy..f ._make_|
000029b0  73 6f 75 6e 64 20 20 20  20 20 20 20 20 20 62 20  |sound         b |
000029c0  64 75 6d 6d 79 0d 12 70  20 2e 5f 77 61 69 74 20  |dummy..p ._wait |
000029d0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 62 20  |              b |
000029e0  64 75 6d 6d 79 0d 12 7a  20 2e 5f 73 6f 75 6e 64  |dummy..z ._sound|
000029f0  5f 6f 66 66 20 20 20 20  20 20 20 20 20 20 62 20  |_off          b |
00002a00  64 75 6d 6d 79 0d 12 84  20 2e 5f 73 6f 75 6e 64  |dummy... ._sound|
00002a10  5f 6f 6e 20 20 20 20 20  20 20 20 20 20 20 62 20  |_on           b |
00002a20  64 75 6d 6d 79 0d 12 8e  20 2e 5f 63 6f 70 79 5f  |dummy... ._copy_|
00002a30  76 61 72 20 20 20 20 20  20 20 20 20 20 20 62 20  |var           b |
00002a40  64 75 6d 6d 79 0d 12 98  20 2e 5f 6d 75 6c 74 69  |dummy... ._multi|
00002a50  70 6c 79 5f 76 61 72 20  20 20 20 20 20 20 62 20  |ply_var       b |
00002a60  64 75 6d 6d 79 0d 12 a2  20 2e 5f 64 69 76 69 64  |dummy... ._divid|
00002a70  65 5f 76 61 72 20 20 20  20 20 20 20 20 20 62 20  |e_var         b |
00002a80  64 75 6d 6d 79 0d 12 ac  20 2e 5f 70 72 69 6e 74  |dummy... ._print|
00002a90  5f 76 61 72 20 20 20 20  20 20 20 20 20 20 62 20  |_var          b |
00002aa0  64 75 6d 6d 79 0d 12 b6  20 2e 5f 64 69 73 70 6c  |dummy... ._displ|
00002ab0  61 79 5f 76 61 72 20 20  20 20 20 20 20 20 62 20  |ay_var        b |
00002ac0  64 75 6d 6d 79 0d 12 c0  20 2e 5f 74 65 78 74 5f  |dummy... ._text_|
00002ad0  63 6f 6c 6f 75 72 20 20  20 20 20 20 20 20 62 20  |colour        b |
00002ae0  64 75 6d 6d 79 0d 12 ca  20 2e 5f 74 65 78 74 5f  |dummy... ._text_|
00002af0  62 67 64 63 6f 6c 20 20  20 20 20 20 20 20 62 20  |bgdcol        b |
00002b00  64 75 6d 6d 79 0d 12 d4  20 2e 5f 69 6e 69 74 69  |dummy... ._initi|
00002b10  61 6c 69 73 65 20 20 20  20 20 20 20 20 20 62 20  |alise         b |
00002b20  64 75 6d 6d 79 0d 12 de  20 2e 5f 67 65 74 64 61  |dummy... ._getda|
00002b30  74 61 20 20 20 20 20 20  20 20 20 20 20 20 62 20  |ta            b |
00002b40  64 75 6d 6d 79 0d 12 e8  20 2e 5f 64 69 73 70 6c  |dummy... ._displ|
00002b50  61 79 20 20 20 20 20 20  20 20 20 20 20 20 62 20  |ay            b |
00002b60  64 75 6d 6d 79 0d 12 f2  04 0d 12 fc 05 5d 0d 13  |dummy........]..|
00002b70  06 04 0d 13 10 10 e3 20  49 25 3d 31 20 b8 20 32  |....... I%=1 . 2|
00002b80  35 36 0d 13 1a 0d 5b 4f  50 54 20 70 61 73 73 0d  |56....[OPT pass.|
00002b90  13 24 0b 62 20 64 75 6d  6d 79 0d 13 2e 05 5d 0d  |.$.b dummy....].|
00002ba0  13 38 05 ed 0d 13 42 0d  5b 4f 50 54 20 70 61 73  |.8....B.[OPT pas|
00002bb0  73 0d 13 4c 0a 2e 64 75  6d 6d 79 0d 13 56 0e 6d  |s..L..dummy..V.m|
00002bc0  6f 76 20 70 63 2c 72 31  34 0d 13 60 05 5d 0d 13  |ov pc,r14..`.]..|
00002bd0  6a 05 e1 0d 13 74 04 0d  13 7e 25 dd 20 f2 72 65  |j....t...~%. .re|
00002be0  61 64 5f 74 75 6e 65 73  28 6e 61 6d 65 24 2c 74  |ad_tunes(name$,t|
00002bf0  75 6e 65 24 28 29 2c f8  20 49 25 29 0d 13 88 13  |une$(),. I%)....|
00002c00  ea 20 63 68 6e 25 2c 70  74 72 2c 63 68 72 24 0d  |. chn%,ptr,chr$.|
00002c10  13 92 08 49 25 3d 30 0d  13 9c 11 63 68 6e 25 3d  |...I%=0....chn%=|
00002c20  8e 28 6e 61 6d 65 24 29  0d 13 a6 0f e7 20 63 68  |.(name$)..... ch|
00002c30  6e 25 3c 3e 30 20 8c 0d  13 b0 11 20 20 c8 95 20  |n%<>0 .....  .. |
00002c40  ac 20 c5 23 63 68 6e 25  0d 13 ba 14 20 20 20 20  |. .#chn%....    |
00002c50  74 75 6e 65 24 28 49 25  29 3d 22 22 0d 13 c4 19  |tune$(I%)=""....|
00002c60  20 20 20 20 e7 20 c5 23  63 68 6e 25 20 d9 23 63  |    . .#chn% .#c|
00002c70  68 6e 25 3a e1 0d 13 ce  13 20 20 20 20 63 68 72  |hn%:.....    chr|
00002c80  25 3d 9a 23 63 68 6e 25  0d 13 d8 12 20 20 20 20  |%=.#chn%....    |
00002c90  c8 95 20 63 68 72 25 3e  33 31 0d 13 e2 16 20 20  |.. chr%>31....  |
00002ca0  20 20 20 20 63 68 72 24  3d bd 28 63 68 72 25 29  |    chr$=.(chr%)|
00002cb0  0d 13 ec 19 20 20 20 20  20 20 74 75 6e 65 24 28  |....      tune$(|
00002cc0  49 25 29 2b 3d 63 68 72  24 0d 13 f6 21 20 20 20  |I%)+=chr$...!   |
00002cd0  20 20 20 e7 20 c5 23 63  68 6e 25 20 49 25 2b 3d  |   . .#chn% I%+=|
00002ce0  31 3a d9 23 63 68 6e 25  3a e1 0d 14 00 15 20 20  |1:.#chn%:.....  |
00002cf0  20 20 20 20 63 68 72 25  3d 9a 23 63 68 6e 25 0d  |    chr%=.#chn%.|
00002d00  14 0a 09 20 20 20 20 ce  0d 14 14 0d 20 20 20 20  |...    .....    |
00002d10  49 25 2b 3d 31 0d 14 1e  3b 20 20 20 20 e7 20 49  |I%+=1...;    . I|
00002d20  25 3d 6d 61 78 5f 74 75  6e 65 73 20 85 20 31 2c  |%=max_tunes . 1,|
00002d30  22 54 6f 6f 20 6d 61 6e  79 20 74 75 6e 65 73 20  |"Too many tunes |
00002d40  69 6e 20 27 54 75 6e 65  73 27 20 66 69 6c 65 22  |in 'Tunes' file"|
00002d50  0d 14 28 07 20 20 ce 0d  14 32 0c 20 20 d9 23 63  |..(.  ...2.  .#c|
00002d60  68 6e 25 0d 14 3c 05 cd  0d 14 46 05 e1 0d 14 50  |hn%..<....F....P|
00002d70  04 0d 14 5a 25 dd 20 f2  65 6e 64 5f 6f 66 5f 67  |...Z%. .end_of_g|
00002d80  61 6d 65 28 64 65 6c 61  79 2c 73 70 72 69 74 65  |ame(delay,sprite|
00002d90  24 2c 58 2c 59 29 0d 14  64 21 ea 20 74 69 6d 65  |$,X,Y)..d!. time|
00002da0  2c 77 69 64 74 68 2c 68  65 69 67 68 74 2c 72 69  |,width,height,ri|
00002db0  67 68 74 2c 74 6f 70 0d  14 6e 42 c8 99 20 22 4f  |ght,top..nB.. "O|
00002dc0  53 5f 53 70 72 69 74 65  4f 70 22 2c 32 35 36 2b  |S_SpriteOp",256+|
00002dd0  34 30 2c 73 70 72 69 74  65 5f 61 72 65 61 32 2c  |40,sprite_area2,|
00002de0  73 70 72 69 74 65 24 20  b8 20 2c 2c 2c 77 69 64  |sprite$ . ,,,wid|
00002df0  74 68 2c 68 65 69 67 68  74 0d 14 78 1a 77 69 64  |th,height..x.wid|
00002e00  74 68 20 20 3d 20 77 69  64 74 68 20 3c 3c 20 58  |th  = width << X|
00002e10  45 69 67 0d 14 82 1b 68  65 69 67 68 74 20 3d 20  |Eig....height = |
00002e20  68 65 69 67 68 74 20 3c  3c 20 59 45 69 67 0d 14  |height << YEig..|
00002e30  8c 15 72 69 67 68 74 20  3d 20 58 20 2b 20 77 69  |..right = X + wi|
00002e40  64 74 68 0d 14 96 16 74  6f 70 20 20 20 3d 20 59  |dth....top   = Y|
00002e50  20 2b 20 68 65 69 67 68  74 0d 14 a0 3f c8 99 20  | + height...?.. |
00002e60  22 4f 53 5f 53 70 72 69  74 65 4f 70 22 2c 32 35  |"OS_SpriteOp",25|
00002e70  36 2b 31 36 2c 73 70 72  69 74 65 5f 61 72 65 61  |6+16,sprite_area|
00002e80  32 2c 22 74 65 6d 70 22  2c 30 2c 58 2c 59 2c 72  |2,"temp",0,X,Y,r|
00002e90  69 67 68 74 2c 74 6f 70  0d 14 aa 36 c8 99 20 22  |ight,top...6.. "|
00002ea0  4f 53 5f 53 70 72 69 74  65 4f 70 22 2c 32 35 36  |OS_SpriteOp",256|
00002eb0  2b 33 34 2c 73 70 72 69  74 65 5f 61 72 65 61 32  |+34,sprite_area2|
00002ec0  2c 73 70 72 69 74 65 24  2c 58 2c 59 2c 38 0d 14  |,sprite$,X,Y,8..|
00002ed0  b4 0a 74 69 6d 65 3d 91  0d 14 be 18 f5 20 fd 20  |..time=...... . |
00002ee0  91 3e 74 69 6d 65 2b 64  65 6c 61 79 2a 31 30 30  |.>time+delay*100|
00002ef0  0d 14 c8 35 c8 99 20 22  4f 53 5f 53 70 72 69 74  |...5.. "OS_Sprit|
00002f00  65 4f 70 22 2c 32 35 36  2b 33 34 2c 73 70 72 69  |eOp",256+34,spri|
00002f10  74 65 5f 61 72 65 61 32  2c 22 74 65 6d 70 22 2c  |te_area2,"temp",|
00002f20  58 2c 59 2c 38 0d 14 d2  05 e1 0d 14 dc 04 0d 14  |X,Y,8...........|
00002f30  e6 20 dd 20 a4 61 6e 6f  74 68 65 72 28 73 70 72  |. . .another(spr|
00002f40  69 74 65 24 2c 58 2c 59  2c 6b 65 79 24 29 0d 14  |ite$,X,Y,key$)..|
00002f50  f0 23 ea 20 41 6e 73 77  65 72 2c 77 69 64 74 68  |.#. Answer,width|
00002f60  2c 68 65 69 67 68 74 2c  72 69 67 68 74 2c 74 6f  |,height,right,to|
00002f70  70 0d 14 fa 04 0d 15 04  42 c8 99 20 22 4f 53 5f  |p.......B.. "OS_|
00002f80  53 70 72 69 74 65 4f 70  22 2c 32 35 36 2b 34 30  |SpriteOp",256+40|
00002f90  2c 73 70 72 69 74 65 5f  61 72 65 61 32 2c 73 70  |,sprite_area2,sp|
00002fa0  72 69 74 65 24 20 b8 20  2c 2c 2c 77 69 64 74 68  |rite$ . ,,,width|
00002fb0  2c 68 65 69 67 68 74 0d  15 0e 1a 77 69 64 74 68  |,height....width|
00002fc0  20 20 3d 20 77 69 64 74  68 20 3c 3c 20 58 45 69  |  = width << XEi|
00002fd0  67 0d 15 18 1b 68 65 69  67 68 74 20 3d 20 68 65  |g....height = he|
00002fe0  69 67 68 74 20 3c 3c 20  59 45 69 67 0d 15 22 15  |ight << YEig..".|
00002ff0  72 69 67 68 74 20 3d 20  58 20 2b 20 77 69 64 74  |right = X + widt|
00003000  68 0d 15 2c 16 74 6f 70  20 20 20 3d 20 59 20 2b  |h..,.top   = Y +|
00003010  20 68 65 69 67 68 74 0d  15 36 3f c8 99 20 22 4f  | height..6?.. "O|
00003020  53 5f 53 70 72 69 74 65  4f 70 22 2c 32 35 36 2b  |S_SpriteOp",256+|
00003030  31 36 2c 73 70 72 69 74  65 5f 61 72 65 61 32 2c  |16,sprite_area2,|
00003040  22 74 65 6d 70 22 2c 30  2c 58 2c 59 2c 72 69 67  |"temp",0,X,Y,rig|
00003050  68 74 2c 74 6f 70 0d 15  40 36 c8 99 20 22 4f 53  |ht,top..@6.. "OS|
00003060  5f 53 70 72 69 74 65 4f  70 22 2c 32 35 36 2b 33  |_SpriteOp",256+3|
00003070  34 2c 73 70 72 69 74 65  5f 61 72 65 61 32 2c 73  |4,sprite_area2,s|
00003080  70 72 69 74 65 24 2c 58  2c 59 2c 38 0d 15 4a 04  |prite$,X,Y,8..J.|
00003090  0d 15 54 08 c8 97 20 ee  0d 15 5e 1c c8 99 20 22  |..T... ...^... "|
000030a0  4f 53 5f 43 6f 6e 66 69  72 6d 22 20 b8 20 41 6e  |OS_Confirm" . An|
000030b0  73 77 65 72 0d 15 68 08  c8 97 20 87 0d 15 72 1b  |swer..h... ...r.|
000030c0  e7 20 41 6e 73 77 65 72  3d 97 22 79 22 20 8c 20  |. Answer=."y" . |
000030d0  3d b9 20 8b 20 3d a3 0d  15 7c 04 0d 15 86 04 0d  |=. . =...|......|
000030e0  15 90 17 dd 20 f2 68 69  67 68 73 63 6f 72 65 28  |.... .highscore(|
000030f0  73 63 6f 72 65 29 0d 15  9a 24 ea 20 49 25 2c 4a  |score)...$. I%,J|
00003100  25 2c 54 24 2c 6e 65 77  68 69 67 68 2c 6e 61 6d  |%,T$,newhigh,nam|
00003110  65 24 2c 68 73 77 2c 68  73 68 0d 15 a4 17 e7 20  |e$,hsw,hsh..... |
00003120  73 68 6f 77 24 3d 22 4e  45 56 45 52 22 20 8c 20  |show$="NEVER" . |
00003130  e1 0d 15 ae 04 0d 15 b8  16 4a 25 3d 6d 61 78 68  |.........J%=maxh|
00003140  69 3a 6e 65 77 68 69 67  68 3d a3 0d 15 c2 1d c8  |i:newhigh=......|
00003150  95 20 73 63 6f 72 65 3e  73 63 6f 72 65 28 4a 25  |. score>score(J%|
00003160  29 20 80 20 4a 25 3e 30  0d 15 cc 0f 20 20 6e 65  |) . J%>0....  ne|
00003170  77 68 69 67 68 3d b9 0d  15 d6 0b 20 20 4a 25 2d  |whigh=.....  J%-|
00003180  3d 31 0d 15 e0 05 ce 0d  15 ea 26 e7 20 ac 20 6e  |=1........&. . n|
00003190  65 77 68 69 67 68 20 80  20 73 68 6f 77 24 3d 22  |ewhigh . show$="|
000031a0  4e 45 57 53 43 4f 52 45  22 20 8c 20 e1 0d 15 f4  |NEWSCORE" . ....|
000031b0  04 0d 15 fe 49 c8 99 20  22 4f 53 5f 53 70 72 69  |....I.. "OS_Spri|
000031c0  74 65 4f 70 22 2c 32 35  36 2b 34 30 2c 73 70 72  |teOp",256+40,spr|
000031d0  69 74 65 5f 61 72 65 61  32 2c 68 73 5f 73 70 72  |ite_area2,hs_spr|
000031e0  69 74 65 24 20 b8 20 2c  2c 2c 68 73 77 69 64 74  |ite$ . ,,,hswidt|
000031f0  68 2c 68 73 68 65 69 67  68 74 0d 16 08 1e 68 73  |h,hsheight....hs|
00003200  77 69 64 74 68 20 20 3d  20 68 73 77 69 64 74 68  |width  = hswidth|
00003210  20 3c 3c 20 58 45 69 67  0d 16 12 1f 68 73 68 65  | << XEig....hshe|
00003220  69 67 68 74 20 3d 20 68  73 68 65 69 67 68 74 20  |ight = hsheight |
00003230  3c 3c 20 59 45 69 67 0d  16 1c 32 68 73 77 3d 6d  |<< YEig...2hsw=m|
00003240  61 78 6c 65 6e 2a 77 69  64 74 68 2b 6d 61 78 64  |axlen*width+maxd|
00003250  69 67 69 74 73 2a 77 69  64 74 68 2b 33 2a 77 69  |igits*width+3*wi|
00003260  64 74 68 2b 34 38 2b 32  34 0d 16 26 22 68 73 68  |dth+48+24..&"hsh|
00003270  3d 6d 61 78 68 69 2a 32  2a 68 65 69 67 68 74 2b  |=maxhi*2*height+|
00003280  32 34 2b 68 73 68 65 69  67 68 74 0d 16 30 04 0d  |24+hsheight..0..|
00003290  16 3a 3c f2 73 6c 61 62  28 68 73 78 2c 68 73 79  |.:<.slab(hsx,hsy|
000032a0  2c 68 73 77 2c 68 73 68  2c 31 36 2c 68 69 6c 69  |,hsw,hsh,16,hili|
000032b0  74 65 2c 73 6c 61 62 5f  63 6f 6c 6f 75 72 2c 6c  |te,slab_colour,l|
000032c0  6f 6c 69 74 65 2c 6c 69  6e 65 29 0d 16 44 5d c8  |olite,line)..D].|
000032d0  99 20 22 4f 53 5f 53 70  72 69 74 65 4f 70 22 2c  |. "OS_SpriteOp",|
000032e0  32 35 36 2b 33 34 2c 73  70 72 69 74 65 5f 61 72  |256+34,sprite_ar|
000032f0  65 61 32 2c 68 73 5f 73  70 72 69 74 65 24 2c 68  |ea2,hs_sprite$,h|
00003300  73 78 2b 28 68 73 77 2d  68 73 77 69 64 74 68 29  |sx+(hsw-hswidth)|
00003310  2f 32 2c 68 73 79 2b 68  73 68 2d 68 73 68 65 69  |/2,hsy+hsh-hshei|
00003320  67 68 74 2d 31 36 2c 38  0d 16 4e 04 0d 16 58 14  |ght-16,8..N...X.|
00003330  e3 20 49 25 3d 30 20 b8  20 6d 61 78 68 69 2d 31  |. I%=0 . maxhi-1|
00003340  0d 16 62 53 20 20 f2 73  6c 61 62 28 68 73 78 2b  |..bS  .slab(hsx+|
00003350  32 34 2c 68 73 79 2b 32  34 2b 49 25 2a 32 2a 68  |24,hsy+24+I%*2*h|
00003360  65 69 67 68 74 2c 77 69  64 74 68 2a 33 2c 68 65  |eight,width*3,he|
00003370  69 67 68 74 2b 31 36 2c  34 2c 6c 6f 6c 69 74 65  |ight+16,4,lolite|
00003380  2c 69 6e 73 65 74 2c 68  69 6c 69 74 65 2c 6c 69  |,inset,hilite,li|
00003390  6e 65 29 0d 16 6c 14 20  20 54 24 3d c3 28 6d 61  |ne)..l.  T$=.(ma|
000033a0  78 68 69 2d 49 25 29 0d  16 76 4a 20 20 f2 66 61  |xhi-I%)..vJ  .fa|
000033b0  6e 63 79 5f 70 72 69 6e  74 28 54 24 2c 68 73 78  |ncy_print(T$,hsx|
000033c0  2b 32 34 2b 28 33 2d a9  54 24 29 2a 77 69 64 74  |+24+(3-.T$)*widt|
000033d0  68 2f 32 2c 68 73 79 2b  32 34 2b 49 25 2a 32 2a  |h/2,hsy+24+I%*2*|
000033e0  68 65 69 67 68 74 2b 38  2c 31 2c 31 2c 31 2c 31  |height+8,1,1,1,1|
000033f0  29 0d 16 80 63 20 20 f2  73 6c 61 62 28 68 73 78  |)...c  .slab(hsx|
00003400  2b 32 34 2b 77 69 64 74  68 2a 33 2b 31 32 2c 68  |+24+width*3+12,h|
00003410  73 79 2b 32 34 2b 49 25  2a 32 2a 68 65 69 67 68  |sy+24+I%*2*heigh|
00003420  74 2c 6d 61 78 6c 65 6e  2a 77 69 64 74 68 2c 68  |t,maxlen*width,h|
00003430  65 69 67 68 74 2b 31 36  2c 34 2c 6c 6f 6c 69 74  |eight+16,4,lolit|
00003440  65 2c 69 6e 73 65 74 2c  68 69 6c 69 74 65 2c 6c  |e,inset,hilite,l|
00003450  69 6e 65 29 0d 16 8a 52  20 20 f2 66 61 6e 63 79  |ine)...R  .fancy|
00003460  5f 70 72 69 6e 74 28 6e  61 6d 65 24 28 6d 61 78  |_print(name$(max|
00003470  68 69 2d 49 25 29 2c 68  73 78 2b 32 34 2b 77 69  |hi-I%),hsx+24+wi|
00003480  64 74 68 2a 33 2b 32 30  2c 68 73 79 2b 32 34 2b  |dth*3+20,hsy+24+|
00003490  49 25 2a 32 2a 68 65 69  67 68 74 2b 38 2c 31 2c  |I%*2*height+8,1,|
000034a0  31 2c 31 2c 31 29 0d 16  94 73 20 20 f2 73 6c 61  |1,1,1)...s  .sla|
000034b0  62 28 68 73 78 2b 32 34  2b 77 69 64 74 68 2a 33  |b(hsx+24+width*3|
000034c0  2b 32 30 2b 6d 61 78 6c  65 6e 2a 77 69 64 74 68  |+20+maxlen*width|
000034d0  2c 68 73 79 2b 32 34 2b  49 25 2a 32 2a 68 65 69  |,hsy+24+I%*2*hei|
000034e0  67 68 74 2c 6d 61 78 64  69 67 69 74 73 2a 77 69  |ght,maxdigits*wi|
000034f0  64 74 68 2c 68 65 69 67  68 74 2b 31 36 2c 34 2c  |dth,height+16,4,|
00003500  6c 6f 6c 69 74 65 2c 69  6e 73 65 74 2c 68 69 6c  |lolite,inset,hil|
00003510  69 74 65 2c 6c 69 6e 65  29 0d 16 9e 62 20 20 f2  |ite,line)...b  .|
00003520  66 61 6e 63 79 5f 70 72  69 6e 74 28 c3 28 73 63  |fancy_print(.(sc|
00003530  6f 72 65 28 6d 61 78 68  69 2d 49 25 29 29 2c 68  |ore(maxhi-I%)),h|
00003540  73 78 2b 32 34 2b 77 69  64 74 68 2a 33 2b 32 38  |sx+24+width*3+28|
00003550  2b 6d 61 78 6c 65 6e 2a  77 69 64 74 68 2c 68 73  |+maxlen*width,hs|
00003560  79 2b 32 34 2b 49 25 2a  32 2a 68 65 69 67 68 74  |y+24+I%*2*height|
00003570  2b 38 2c 31 2c 31 2c 31  2c 31 29 0d 16 a8 05 ed  |+8,1,1,1,1).....|
00003580  0d 16 b2 0f e7 20 6e 65  77 68 69 67 68 20 8c 0d  |..... newhigh ..|
00003590  16 bc 0b 20 20 4a 25 2b  3d 31 0d 16 c6 1c 20 20  |...  J%+=1....  |
000035a0  e3 20 49 25 3d 6d 61 78  68 69 20 b8 20 4a 25 2b  |. I%=maxhi . J%+|
000035b0  31 20 88 20 2d 31 0d 16  d0 1d 20 20 20 20 6e 61  |1 . -1....    na|
000035c0  6d 65 24 28 49 25 29 3d  6e 61 6d 65 24 28 49 25  |me$(I%)=name$(I%|
000035d0  2d 31 29 0d 16 da 1d 20  20 20 20 73 63 6f 72 65  |-1)....    score|
000035e0  28 49 25 29 3d 73 63 6f  72 65 28 49 25 2d 31 29  |(I%)=score(I%-1)|
000035f0  0d 16 e4 56 20 20 20 20  f2 66 61 6e 63 79 5f 70  |...V    .fancy_p|
00003600  72 69 6e 74 28 6e 61 6d  65 24 28 49 25 29 2c 68  |rint(name$(I%),h|
00003610  73 78 2b 32 34 2b 77 69  64 74 68 2a 33 2b 32 30  |sx+24+width*3+20|
00003620  2c 68 73 79 2b 32 34 2b  28 6d 61 78 68 69 2d 49  |,hsy+24+(maxhi-I|
00003630  25 29 2a 32 2a 68 65 69  67 68 74 2b 38 2c 31 2c  |%)*2*height+8,1,|
00003640  31 2c 31 2c 31 29 0d 16  ee 66 20 20 20 20 f2 66  |1,1,1)...f    .f|
00003650  61 6e 63 79 5f 70 72 69  6e 74 28 c3 28 73 63 6f  |ancy_print(.(sco|
00003660  72 65 28 49 25 29 29 2c  68 73 78 2b 32 34 2b 77  |re(I%)),hsx+24+w|
00003670  69 64 74 68 2a 33 2b 32  38 2b 6d 61 78 6c 65 6e  |idth*3+28+maxlen|
00003680  2a 77 69 64 74 68 2c 68  73 79 2b 32 34 2b 28 6d  |*width,hsy+24+(m|
00003690  61 78 68 69 2d 49 25 29  2a 32 2a 68 65 69 67 68  |axhi-I%)*2*heigh|
000036a0  74 2b 38 2c 31 2c 31 2c  31 2c 31 29 0d 16 f8 07  |t+8,1,1,1,1)....|
000036b0  20 20 ed 0d 17 02 59 20  20 f2 66 61 6e 63 79 5f  |  ....Y  .fancy_|
000036c0  70 72 69 6e 74 28 c4 6d  61 78 6c 65 6e 2d 31 2c  |print(.maxlen-1,|
000036d0  22 20 22 29 2c 68 73 78  2b 32 34 2b 77 69 64 74  |" "),hsx+24+widt|
000036e0  68 2a 33 2b 32 30 2c 68  73 79 2b 32 34 2b 28 6d  |h*3+20,hsy+24+(m|
000036f0  61 78 68 69 2d 4a 25 29  2a 32 2a 68 65 69 67 68  |axhi-J%)*2*heigh|
00003700  74 2b 38 2c 31 2c 31 2c  31 2c 31 29 0d 17 0c 69  |t+8,1,1,1,1)...i|
00003710  20 20 f2 66 61 6e 63 79  5f 70 72 69 6e 74 28 c4  |  .fancy_print(.|
00003720  6d 61 78 64 69 67 69 74  73 2d 31 2c 22 20 22 29  |maxdigits-1," ")|
00003730  2c 68 73 78 2b 32 34 2b  77 69 64 74 68 2a 33 2b  |,hsx+24+width*3+|
00003740  32 38 2b 6d 61 78 6c 65  6e 2a 77 69 64 74 68 2c  |28+maxlen*width,|
00003750  68 73 79 2b 32 34 2b 28  6d 61 78 68 69 2d 4a 25  |hsy+24+(maxhi-J%|
00003760  29 2a 32 2a 68 65 69 67  68 74 2b 38 2c 31 2c 31  |)*2*height+8,1,1|
00003770  2c 31 2c 31 29 0d 17 16  60 20 20 f2 66 61 6e 63  |,1,1)...`  .fanc|
00003780  79 5f 70 72 69 6e 74 28  c3 28 73 63 6f 72 65 29  |y_print(.(score)|
00003790  2c 68 73 78 2b 32 34 2b  77 69 64 74 68 2a 33 2b  |,hsx+24+width*3+|
000037a0  32 38 2b 6d 61 78 6c 65  6e 2a 77 69 64 74 68 2c  |28+maxlen*width,|
000037b0  68 73 79 2b 32 34 2b 28  6d 61 78 68 69 2d 4a 25  |hsy+24+(maxhi-J%|
000037c0  29 2a 32 2a 68 65 69 67  68 74 2b 38 2c 31 2c 31  |)*2*height+8,1,1|
000037d0  2c 31 2c 31 29 0d 17 20  49 20 20 6e 61 6d 65 24  |,1,1).. I  name$|
000037e0  3d a4 69 6e 70 75 74 5f  6e 61 6d 65 28 68 73 78  |=.input_name(hsx|
000037f0  2b 32 34 2b 77 69 64 74  68 2a 33 2b 32 30 2c 68  |+24+width*3+20,h|
00003800  73 79 2b 32 34 2b 28 6d  61 78 68 69 2d 4a 25 29  |sy+24+(maxhi-J%)|
00003810  2a 32 2a 68 65 69 67 68  74 2b 38 2c a3 29 0d 17  |*2*height+8,.)..|
00003820  2a 2d 20 20 6e 61 6d 65  24 28 4a 25 29 3d c0 6e  |*-  name$(J%)=.n|
00003830  61 6d 65 24 2b c4 6d 61  78 6c 65 6e 2c 22 20 22  |ame$+.maxlen," "|
00003840  29 2c 6d 61 78 6c 65 6e  2d 31 29 0d 17 34 15 20  |),maxlen-1)..4. |
00003850  20 73 63 6f 72 65 28 4a  25 29 3d 73 63 6f 72 65  | score(J%)=score|
00003860  0d 17 3e 54 20 20 f2 66  61 6e 63 79 5f 70 72 69  |..>T  .fancy_pri|
00003870  6e 74 28 6e 61 6d 65 24  28 4a 25 29 2c 68 73 78  |nt(name$(J%),hsx|
00003880  2b 32 34 2b 77 69 64 74  68 2a 33 2b 32 30 2c 68  |+24+width*3+20,h|
00003890  73 79 2b 32 34 2b 28 6d  61 78 68 69 2d 4a 25 29  |sy+24+(maxhi-J%)|
000038a0  2a 32 2a 68 65 69 67 68  74 2b 38 2c 31 2c 31 2c  |*2*height+8,1,1,|
000038b0  31 2c 31 29 0d 17 48 05  cd 0d 17 52 05 e1 0d 17  |1,1)..H....R....|
000038c0  5c 04 0d 17 66 1b dd 20  a4 69 6e 70 75 74 5f 6e  |\...f.. .input_n|
000038d0  61 6d 65 28 58 2c 59 2c  68 69 64 65 29 0d 17 70  |ame(X,Y,hide)..p|
000038e0  18 ea 20 63 68 72 2c 49  25 2c 6e 61 6d 65 24 2c  |.. chr,I%,name$,|
000038f0  64 75 6d 6d 79 0d 17 7a  0b 2a 46 58 32 31 2c 30  |dummy..z.*FX21,0|
00003900  0d 17 84 0a 2a 46 58 34  2c 31 0d 17 8e 21 f2 66  |....*FX4,1...!.f|
00003910  61 6e 63 79 5f 70 72 69  6e 74 28 22 5f 22 2c 58  |ancy_print("_",X|
00003920  2c 59 2c 31 2c 31 2c 31  2c 31 29 0d 17 98 09 63  |,Y,1,1,1,1)....c|
00003930  68 72 3d a5 0d 17 a2 1e  c8 95 20 63 68 72 3c 3e  |hr=....... chr<>|
00003940  31 33 20 80 20 49 25 3c  28 6d 61 78 6c 65 6e 2d  |13 . I%<(maxlen-|
00003950  31 29 0d 17 ac 1a 20 20  e7 20 63 68 72 3c 31 32  |1)....  . chr<12|
00003960  37 20 80 20 63 68 72 3e  33 31 20 8c 0d 17 b6 19  |7 . chr>31 .....|
00003970  20 20 6e 61 6d 65 24 2b  3d bd 28 63 68 72 29 3a  |  name$+=.(chr):|
00003980  49 25 2b 3d 31 0d 17 c0  15 20 20 e7 20 68 69 64  |I%+=1....  . hid|
00003990  65 20 8c 20 63 68 72 3d  34 32 0d 17 ca 26 20 20  |e . chr=42...&  |
000039a0  f2 66 61 6e 63 79 5f 70  72 69 6e 74 28 bd 28 63  |.fancy_print(.(c|
000039b0  68 72 29 2c 58 2c 59 2c  31 2c 31 2c 31 2c 31 29  |hr),X,Y,1,1,1,1)|
000039c0  0d 17 d4 39 20 20 e7 20  49 25 3c 28 6d 61 78 6c  |...9  . I%<(maxl|
000039d0  65 6e 2d 31 29 20 f2 66  61 6e 63 79 5f 70 72 69  |en-1) .fancy_pri|
000039e0  6e 74 28 22 5f 22 2c 58  2b 77 69 64 74 68 2c 59  |nt("_",X+width,Y|
000039f0  2c 31 2c 31 2c 31 2c 31  29 0d 17 de 0e 20 20 58  |,1,1,1,1)....  X|
00003a00  2b 3d 77 69 64 74 68 0d  17 e8 07 20 20 cc 0d 17  |+=width....  ...|
00003a10  f2 18 20 20 e7 20 63 68  72 3d 31 32 37 20 80 20  |..  . chr=127 . |
00003a20  49 25 3e 30 20 8c 0d 17  fc 25 20 20 20 20 f2 66  |I%>0 ....%    .f|
00003a30  61 6e 63 79 5f 70 72 69  6e 74 28 22 20 22 2c 58  |ancy_print(" ",X|
00003a40  2c 59 2c 31 2c 31 2c 31  2c 31 29 0d 18 06 0d 20  |,Y,1,1,1,1).... |
00003a50  20 20 20 49 25 2d 3d 31  0d 18 10 10 20 20 20 20  |   I%-=1....    |
00003a60  58 2d 3d 77 69 64 74 68  0d 18 1a 25 20 20 20 20  |X-=width...%    |
00003a70  f2 66 61 6e 63 79 5f 70  72 69 6e 74 28 22 5f 22  |.fancy_print("_"|
00003a80  2c 58 2c 59 2c 31 2c 31  2c 31 2c 31 29 0d 18 24  |,X,Y,1,1,1,1)..$|
00003a90  18 20 20 20 20 6e 61 6d  65 24 3d c0 6e 61 6d 65  |.    name$=.name|
00003aa0  24 2c 49 25 29 0d 18 2e  07 20 20 cd 0d 18 38 07  |$,I%)....  ...8.|
00003ab0  20 20 cd 0d 18 42 0b 20  20 63 68 72 3d a5 0d 18  |  ...B.  chr=...|
00003ac0  4c 05 ce 0d 18 56 0a 2a  46 58 34 2c 30 0d 18 60  |L....V.*FX4,0..`|
00003ad0  0a 3d 6e 61 6d 65 24 0d  18 6a 04 0d 18 74 33 dd  |.=name$..j...t3.|
00003ae0  20 f2 66 61 6e 63 79 5f  70 72 69 6e 74 28 74 65  | .fancy_print(te|
00003af0  78 74 24 2c 58 2c 59 2c  58 6d 75 6c 74 2c 59 6d  |xt$,X,Y,Xmult,Ym|
00003b00  75 6c 74 2c 58 64 69 76  2c 59 64 69 76 29 0d 18  |ult,Xdiv,Ydiv)..|
00003b10  7e 12 ea 20 49 25 2c 63  68 24 2c 69 6e 69 74 58  |~.. I%,ch$,initX|
00003b20  0d 18 88 0b 69 6e 69 74  58 3d 58 0d 18 92 0e de  |....initX=X.....|
00003b30  20 73 63 61 6c 65 20 31  36 0d 18 9c 3a 73 63 61  | scale 16...:sca|
00003b40  6c 65 21 30 3d 58 6d 75  6c 74 3a 73 63 61 6c 65  |le!0=Xmult:scale|
00003b50  21 34 3d 59 6d 75 6c 74  3a 73 63 61 6c 65 21 38  |!4=Ymult:scale!8|
00003b60  3d 58 64 69 76 3a 73 63  61 6c 65 21 31 32 3d 59  |=Xdiv:scale!12=Y|
00003b70  64 69 76 0d 18 a6 14 e3  20 49 25 3d 31 20 b8 20  |div..... I%=1 . |
00003b80  a9 20 74 65 78 74 24 0d  18 b0 1c 20 20 63 68 24  |. text$....  ch$|
00003b90  3d c3 28 97 28 c1 74 65  78 74 24 2c 49 25 2c 31  |=.(.(.text$,I%,1|
00003ba0  29 29 29 0d 18 ba 1c 20  20 e7 20 63 68 24 3d 22  |)))....  . ch$="|
00003bb0  31 32 36 22 20 8c 20 63  68 24 3d 22 33 32 22 0d  |126" . ch$="32".|
00003bc0  18 c4 13 20 20 e7 20 63  68 24 3d 22 31 32 34 22  |...  . ch$="124"|
00003bd0  20 8c 0d 18 ce 1e 20 20  20 20 59 2d 3d 68 65 69  | .....    Y-=hei|
00003be0  67 68 74 2a 59 6d 75 6c  74 20 81 20 59 64 69 76  |ght*Ymult . Ydiv|
00003bf0  0d 18 d8 0f 20 20 20 20  58 3d 69 6e 69 74 58 0d  |....    X=initX.|
00003c00  18 e2 07 20 20 cc 0d 18  ec 3a 20 20 20 20 c8 99  |...  ....:    ..|
00003c10  20 22 4f 53 5f 53 70 72  69 74 65 4f 70 22 2c 32  | "OS_SpriteOp",2|
00003c20  35 36 2b 35 32 2c 61 6c  70 68 61 62 65 74 2c 63  |56+52,alphabet,c|
00003c30  68 24 2c 58 2c 59 2c 38  2c 73 63 61 6c 65 2c 30  |h$,X,Y,8,scale,0|
00003c40  0d 18 f6 1d 20 20 20 20  58 2b 3d 77 69 64 74 68  |....    X+=width|
00003c50  2a 58 6d 75 6c 74 20 81  20 58 64 69 76 0d 19 00  |*Xmult . Xdiv...|
00003c60  07 20 20 cd 0d 19 0a 05  ed 0d 19 14 05 e1 0d 19  |.  .............|
00003c70  1e 04 0d 19 28 22 dd 20  f2 73 6c 61 62 28 78 2c  |....(". .slab(x,|
00003c80  79 2c 6c 2c 68 2c 77 2c  63 31 2c 63 32 2c 63 33  |y,l,h,w,c1,c2,c3|
00003c90  2c 63 34 29 0d 19 32 07  e6 63 31 0d 19 3c 11 c8  |,c4)..2..c1..<..|
00003ca0  93 20 c8 90 20 78 2c 79  2c 6c 2c 68 0d 19 46 08  |. .. x,y,l,h..F.|
00003cb0  e6 20 63 33 0d 19 50 1b  ec 20 78 2b 6c 2d 77 2c  |. c3..P.. x+l-w,|
00003cc0  79 2b 68 2d 77 3a ec 20  78 2b 6c 2c 79 2b 68 0d  |y+h-w:. x+l,y+h.|
00003cd0  19 5a 11 f0 38 35 2c 78  2b 6c 2c 79 2b 68 2d 77  |.Z..85,x+l,y+h-w|
00003ce0  0d 19 64 17 c8 93 20 c8  90 20 78 2b 77 2c 79 2c  |..d... .. x+w,y,|
00003cf0  6c 2d 77 2c 68 2d 77 0d  19 6e 1e ec 20 78 2c 79  |l-w,h-w..n.. x,y|
00003d00  3a ec 20 78 2b 77 2c 79  3a f0 20 38 35 2c 78 2b  |:. x+w,y:. 85,x+|
00003d10  77 2c 79 2b 77 0d 19 78  08 e6 20 63 34 0d 19 82  |w,y+w..x.. c4...|
00003d20  15 86 20 78 2c 79 2b 68  2c 78 2b 77 2c 79 2b 68  |.. x,y+h,x+w,y+h|
00003d30  2d 77 0d 19 8c 15 86 20  78 2b 6c 2c 79 2c 78 2b  |-w..... x+l,y,x+|
00003d40  6c 2d 77 2c 79 2b 77 0d  19 96 0e e6 20 63 32 20  |l-w,y+w..... c2 |
00003d50  c8 9c 20 36 34 0d 19 a0  1d c8 93 20 c8 90 20 78  |.. 64...... .. x|
00003d60  2b 77 2c 79 2b 77 2c 6c  2d 32 2a 77 2c 68 2d 32  |+w,y+w,l-2*w,h-2|
00003d70  2a 77 0d 19 aa 05 e1 0d  19 b4 04 0d 19 be 1b dd  |*w..............|
00003d80  20 f2 73 6f 72 74 5f 68  69 67 68 73 63 6f 72 65  | .sort_highscore|
00003d90  73 28 6e 75 6d 29 0d 19  c8 0d ea 20 49 25 2c 73  |s(num)..... I%,s|
00003da0  77 6f 70 0d 19 d2 05 f5  0d 19 dc 0c 20 20 73 77  |wop.........  sw|
00003db0  6f 70 3d a3 0d 19 e6 14  20 20 e3 20 49 25 3d 31  |op=.....  . I%=1|
00003dc0  20 b8 20 6e 75 6d 2d 31  0d 19 f0 23 20 20 20 20  | . num-1...#    |
00003dd0  e7 20 73 63 6f 72 65 28  49 25 29 20 3c 20 73 63  |. score(I%) < sc|
00003de0  6f 72 65 28 49 25 2b 31  29 20 8c 0d 19 fa 10 20  |ore(I%+1) ..... |
00003df0  20 20 20 20 20 73 77 6f  70 3d b9 0d 1a 04 22 20  |     swop=...." |
00003e00  20 20 20 20 20 c8 94 20  73 63 6f 72 65 28 49 25  |     .. score(I%|
00003e10  29 2c 73 63 6f 72 65 28  49 25 2b 31 29 0d 1a 0e  |),score(I%+1)...|
00003e20  22 20 20 20 20 20 20 c8  94 20 6e 61 6d 65 24 28  |"      .. name$(|
00003e30  49 25 29 2c 6e 61 6d 65  24 28 49 25 2b 31 29 0d  |I%),name$(I%+1).|
00003e40  1a 18 09 20 20 20 20 cd  0d 1a 22 07 20 20 ed 0d  |...    ...".  ..|
00003e50  1a 2c 0c 20 20 6e 75 6d  2d 3d 31 0d 1a 36 0c fd  |.,.  num-=1..6..|
00003e60  20 ac 20 73 77 6f 70 0d  1a 40 05 e1 0d 1a 4a 04  | . swop..@....J.|
00003e70  0d 1a 54 1d dd 20 f2 73  61 76 65 5f 68 69 67 68  |..T.. .save_high|
00003e80  73 63 6f 72 65 73 28 66  69 6c 65 24 29 0d 1a 5e  |scores(file$)..^|
00003e90  21 ea 20 6f 75 74 25 2c  49 25 2c 68 65 61 64 65  |!. out%,I%,heade|
00003ea0  72 24 2c 64 61 74 65 24  2c 79 65 61 72 24 0d 1a  |r$,date$,year$..|
00003eb0  68 04 0d 1a 72 db ea 20  85 3a ee 20 85 20 ea 20  |h...r.. .:. . . |
00003ec0  e7 20 9f 3d 26 31 30 38  43 39 20 84 20 9f 3d 26  |. .=&108C9 . .=&|
00003ed0  31 30 38 43 41 20 f2 66  61 6e 63 79 5f 70 72 69  |108CA .fancy_pri|
00003ee0  6e 74 28 22 20 20 43 6f  75 6c 64 6e 27 74 20 73  |nt("  Couldn't s|
00003ef0  61 76 65 20 48 69 67 68  53 63 6f 72 65 20 54 61  |ave HighScore Ta|
00003f00  62 6c 65 2e 20 20 7c 20  20 50 6c 65 61 73 65 20  |ble.  |  Please |
00003f10  6d 6f 76 65 20 77 72 69  74 65 2d 70 72 6f 74 65  |move write-prote|
00003f20  63 74 20 74 61 62 20 20  20 7c 74 6f 20 27 77 72  |ct tab   |to 'wr|
00003f30  69 74 65 27 20 70 6f 73  69 74 69 6f 6e 20 61 6e  |ite' position an|
00003f40  64 20 68 69 74 20 52 45  54 55 52 4e 22 2c 38 30  |d hit RETURN",80|
00003f50  2c 33 30 30 2c 31 2c 31  2c 31 2c 31 29 3a 64 75  |,300,1,1,1,1):du|
00003f60  6d 6d 79 3d a5 20 8b 20  f1 f6 24 3b 22 20 28 45  |mmy=. . ..$;" (E|
00003f70  72 72 6f 72 20 63 6f 64  65 3a 20 22 3b 7e 9f 3b  |rror code: ";~.;|
00003f80  22 29 22 3a 64 75 6d 6d  79 3d a5 3a e1 0d 1a 7c  |")":dummy=.:...||
00003f90  04 0d 1a 86 2e c8 99 20  22 58 4f 53 5f 52 65 61  |....... "XOS_Rea|
00003fa0  64 56 61 72 56 61 6c 22  2c 22 53 79 73 24 44 61  |dVarVal","Sys$Da|
00003fb0  74 65 22 2c 4f 53 62 75  66 66 65 72 2c 33 30 0d  |te",OSbuffer,30.|
00003fc0  1a 90 12 4f 53 62 75 66  66 65 72 3f 31 30 3d 31  |...OSbuffer?10=1|
00003fd0  33 0d 1a 9a 13 64 61 74  65 24 3d 24 4f 53 62 75  |3....date$=$OSbu|
00003fe0  66 66 65 72 0d 1a a4 2e  c8 99 20 22 58 4f 53 5f  |ffer...... "XOS_|
00003ff0  52 65 61 64 56 61 72 56  61 6c 22 2c 22 53 79 73  |ReadVarVal","Sys|
00004000  24 59 65 61 72 22 2c 4f  53 62 75 66 66 65 72 2c  |$Year",OSbuffer,|
00004010  33 30 0d 1a ae 11 4f 53  62 75 66 66 65 72 3f 34  |30....OSbuffer?4|
00004020  3d 31 33 0d 1a b8 13 79  65 61 72 24 3d 24 4f 53  |=13....year$=$OS|
00004030  62 75 66 66 65 72 0d 1a  c2 04 0d 1a cc 10 6f 75  |buffer........ou|
00004040  74 25 3d ae 20 66 69 6c  65 24 0d 1a d6 3e 68 65  |t%=. file$...>he|
00004050  61 64 65 72 24 3d 22 3b  20 43 72 65 61 74 6f 72  |ader$="; Creator|
00004060  20 68 69 67 68 20 73 63  6f 72 65 20 74 61 62 6c  | high score tabl|
00004070  65 20 28 22 2b 64 61 74  65 24 2b 22 20 22 2b 79  |e ("+date$+" "+y|
00004080  65 61 72 24 2b 22 29 22  0d 1a e0 12 d5 23 6f 75  |ear$+")".....#ou|
00004090  74 25 2c 68 65 61 64 65  72 24 0d 1a ea 12 e3 20  |t%,header$..... |
000040a0  49 25 3d 31 20 b8 20 6d  61 78 68 69 0d 1a f4 28  |I%=1 . maxhi...(|
000040b0  20 20 d5 23 6f 75 74 25  2c 6e 61 6d 65 24 28 49  |  .#out%,name$(I|
000040c0  25 29 2b 22 3a 20 22 2b  c3 28 73 63 6f 72 65 28  |%)+": "+.(score(|
000040d0  49 25 29 29 0d 1a fe 05  ed 0d 1b 08 0a d9 23 6f  |I%))..........#o|
000040e0  75 74 25 0d 1b 12 1f ff  28 22 53 65 74 54 79 70  |ut%.....("SetTyp|
000040f0  65 20 22 2b 66 69 6c 65  24 2b 22 20 54 65 78 74  |e "+file$+" Text|
00004100  22 29 0d 1b 1c 05 e1 0d  1b 26 04 0d 1b 30 0b dd  |").......&...0..|
00004110  20 f2 61 72 6d 33 0d 1b  3a 07 ea 20 85 0d 1b 44  | .arm3..:.. ...D|
00004120  12 ee 20 85 20 ea 20 61  72 6d 33 3d a3 3a e1 0d  |.. . . arm3=.:..|
00004130  1b 4e 0d 2a 43 61 63 68  65 20 4f 4e 0d 1b 58 0d  |.N.*Cache ON..X.|
00004140  e7 20 a6 28 2d 31 29 20  8c 0d 1b 62 0a 61 72 6d  |. .(-1) ...b.arm|
00004150  33 3d a3 0d 1b 6c 0e 2a  43 61 63 68 65 20 4f 46  |3=...l.*Cache OF|
00004160  46 0d 1b 76 05 cc 0d 1b  80 0a 61 72 6d 33 3d b9  |F..v......arm3=.|
00004170  0d 1b 8a 05 cd 0d 1b 94  05 e1 0d 1b 9e 04 0d 1b  |................|
00004180  a8 16 dd 20 a4 73 74 72  69 70 43 46 53 28 6e 61  |... .stripCFS(na|
00004190  6d 65 24 29 0d 1b b2 08  ea 20 49 25 0d 1b bc 12  |me$)..... I%....|
000041a0  49 25 3d a7 6e 61 6d 65  24 2c 22 23 22 29 0d 1b  |I%=.name$,"#")..|
000041b0  c6 11 3d c1 6e 61 6d 65  24 2c 49 25 2b 31 29 0d  |..=.name$,I%+1).|
000041c0  1b d0 04 0d 1b da 17 dd  20 a4 72 65 61 64 5f 4f  |........ .read_O|
000041d0  53 76 61 72 28 76 61 72  24 29 0d 1b e4 0b ea 20  |Svar(var$)..... |
000041e0  62 79 74 65 73 0d 1b ee  35 c8 99 20 22 58 4f 53  |bytes...5.. "XOS|
000041f0  5f 52 65 61 64 56 61 72  56 61 6c 22 2c 76 61 72  |_ReadVarVal",var|
00004200  24 2c 4f 53 62 75 66 66  65 72 2c 32 35 35 2c 30  |$,OSbuffer,255,0|
00004210  20 b8 20 2c 2c 62 79 74  65 73 0d 1b f8 15 4f 53  | . ,,bytes....OS|
00004220  62 75 66 66 65 72 3f 62  79 74 65 73 3d 31 33 0d  |buffer?bytes=13.|
00004230  1c 02 0e 3d 24 4f 53 62  75 66 66 65 72 0d 1c 0c  |...=$OSbuffer...|
00004240  04 0d 1c 16 1b dd 20 f2  73 65 74 5f 4f 53 76 61  |...... .set_OSva|
00004250  72 28 76 61 72 24 2c 76  61 6c 24 29 0d 1c 20 1c  |r(var$,val$).. .|
00004260  e7 20 76 61 6c 24 3d 22  22 20 8c 20 76 61 6c 24  |. val$="" . val$|
00004270  3d bd 33 34 2b bd 33 34  0d 1c 2a 1b ff 28 22 53  |=.34+.34..*..("S|
00004280  65 74 20 22 2b 76 61 72  24 2b 22 20 22 2b 76 61  |et "+var$+" "+va|
00004290  6c 24 29 0d 1c 34 05 e1  0d 1c 3e 04 0d 1c 48 14  |l$)..4....>...H.|
000042a0  dd 20 f2 77 61 69 74 28  73 65 63 6f 6e 64 73 29  |. .wait(seconds)|
000042b0  0d 1c 52 0a ea 20 74 69  6d 65 0d 1c 5c 0a 74 69  |..R.. time..\.ti|
000042c0  6d 65 3d 91 0d 1c 66 1a  f5 20 fd 20 91 3e 74 69  |me=...f.. . .>ti|
000042d0  6d 65 2b 73 65 63 6f 6e  64 73 2a 31 30 30 0d 1c  |me+seconds*100..|
000042e0  70 05 e1 0d 1c 7a 04 0d  1c 84 12 dd 20 f2 63 6f  |p....z...... .co|
000042f0  70 79 5f 73 63 72 65 65  6e 0d 1c 8e 0e de 20 62  |py_screen..... b|
00004300  6c 6f 63 6b 20 33 32 0d  1c 98 1b 21 62 6c 6f 63  |lock 32....!bloc|
00004310  6b 20 3d 20 31 34 38 3a  62 6c 6f 63 6b 21 38 3d  |k = 148:block!8=|
00004320  2d 31 0d 1c a2 2b c8 99  20 22 4f 53 5f 52 65 61  |-1...+.. "OS_Rea|
00004330  64 56 64 75 56 61 72 69  61 62 6c 65 73 22 2c 62  |dVduVariables",b|
00004340  6c 6f 63 6b 2c 62 6c 6f  63 6b 2b 31 32 0d 1c ac  |lock,block+12...|
00004350  28 c8 99 20 22 4f 53 5f  52 65 61 64 4d 6f 64 65  |(.. "OS_ReadMode|
00004360  56 61 72 69 61 62 6c 65  22 2c 2d 31 2c 37 20 b8  |Variable",-1,7 .|
00004370  20 2c 2c 43 25 0d 1c b6  1e 41 25 3d 62 6c 6f 63  | ,,C%....A%=bloc|
00004380  6b 21 31 32 2b 43 25 3a  42 25 3d 62 6c 6f 63 6b  |k!12+C%:B%=block|
00004390  21 31 32 0d 1c c0 0a d6  20 63 6f 70 79 0d 1c ca  |!12..... copy...|
000043a0  05 e1 0d 1c d4 04 0d 1c  de 14 dd 20 f2 61 73 73  |........... .ass|
000043b0  65 6d 62 6c 65 5f 63 6f  70 79 0d 1c e8 0e de 20  |emble_copy..... |
000043c0  63 6f 64 65 20 31 30 30  0d 1c f2 16 e3 20 70 61  |code 100..... pa|
000043d0  73 73 20 3d 20 30 20 b8  20 32 20 88 20 32 0d 1c  |ss = 0 . 2 . 2..|
000043e0  fc 0b 50 25 3d 63 6f 64  65 0d 1d 06 0d 5b 4f 50  |..P%=code....[OP|
000043f0  54 20 70 61 73 73 0d 1d  10 09 2e 63 6f 70 79 0d  |T pass.....copy.|
00004400  1d 1a 12 4c 44 52 20 52  33 2c 5b 52 30 5d 2c 23  |...LDR R3,[R0],#|
00004410  34 0d 1d 24 12 53 54 52  20 52 33 2c 5b 52 31 5d  |4..$.STR R3,[R1]|
00004420  2c 23 34 0d 1d 2e 11 53  55 42 53 20 52 32 2c 52  |,#4....SUBS R2,R|
00004430  32 2c 23 34 0d 1d 38 0c  42 4e 45 20 63 6f 70 79  |2,#4..8.BNE copy|
00004440  0d 1d 42 0e 4d 4f 56 20  50 43 2c 52 31 34 0d 1d  |..B.MOV PC,R14..|
00004450  4c 05 5d 0d 1d 56 05 ed  0d 1d 60 05 e1 0d 1d 6a  |L.]..V....`....j|
00004460  04 0d 1d 74 1a dd 20 f2  6c 6f 61 64 5f 73 70 72  |...t.. .load_spr|
00004470  69 74 65 73 28 6c 65 76  65 6c 29 0d 1d 7e 0e ea  |ites(level)..~..|
00004480  20 74 79 70 65 2c 6c 65  6e 0d 1d 88 38 c8 99 20  | type,len...8.. |
00004490  22 4f 53 5f 46 69 6c 65  22 2c 35 2c 22 3c 52 75  |"OS_File",5,"<Ru|
000044a0  6e 47 61 6d 65 24 44 69  72 3e 2e 53 70 72 69 74  |nGame$Dir>.Sprit|
000044b0  65 73 22 20 b8 20 74 79  70 65 2c 2c 2c 2c 6c 65  |es" . type,,,,le|
000044c0  6e 0d 1d 92 24 e7 20 74  79 70 65 3d 30 20 85 20  |n...$. type=0 . |
000044d0  32 35 35 2c 22 4e 6f 20  53 70 72 69 74 65 73 20  |255,"No Sprites |
000044e0  66 69 6c 65 22 0d 1d 9c  2d e7 20 6c 65 6e 3e 73  |file"...-. len>s|
000044f0  70 6c 65 6e 20 85 20 32  35 30 2c 22 53 70 72 69  |plen . 250,"Spri|
00004500  74 65 73 20 66 69 6c 65  20 74 6f 6f 20 6c 6f 6e  |tes file too lon|
00004510  67 22 0d 1d a6 36 73 70  72 69 74 65 5f 61 72 65  |g"...6sprite_are|
00004520  61 21 34 3d 30 3a 73 70  72 69 74 65 5f 61 72 65  |a!4=0:sprite_are|
00004530  61 21 38 3d 31 36 3a 73  70 72 69 74 65 5f 61 72  |a!8=16:sprite_ar|
00004540  65 61 21 31 32 3d 31 36  0d 1d b0 36 ff 28 22 4c  |ea!12=16...6.("L|
00004550  4f 41 44 20 3c 52 75 6e  47 61 6d 65 24 44 69 72  |OAD <RunGame$Dir|
00004560  3e 2e 53 70 72 69 74 65  73 20 22 2b c3 7e 28 73  |>.Sprites "+.~(s|
00004570  70 72 69 74 65 5f 61 72  65 61 2b 34 29 29 0d 1d  |prite_area+4))..|
00004580  ba 05 e1 0d 1d c4 04 0d  1d ce 04 0d 1d d8 14 dd  |................|
00004590  20 f2 72 65 6d 6f 76 65  5f 73 6f 75 6e 64 73 0d  | .remove_sounds.|
000045a0  1d e2 08 ea 20 49 25 0d  1d ec 10 e3 20 49 25 3d  |.... I%..... I%=|
000045b0  31 36 20 b8 20 33 31 0d  1d f6 18 20 20 c8 99 20  |16 . 31....  .. |
000045c0  22 45 78 53 5f 52 65 6d  6f 76 65 22 2c 49 25 0d  |"ExS_Remove",I%.|
000045d0  1e 00 05 ed 0d 1e 0a 36  e7 20 c2 53 4d 76 6f 69  |.......6. .SMvoi|
000045e0  63 65 24 2c 31 29 3c 3e  22 2e 22 20 8c 20 c8 99  |ce$,1)<>"." . ..|
000045f0  20 22 45 78 53 5f 49 6e  73 74 61 6c 6c 22 2c 33  | "ExS_Install",3|
00004600  31 2c 53 4d 76 6f 69 63  65 24 0d 1e 14 05 e1 0d  |1,SMvoice$......|
00004610  1e 1e 04 0d 1e 28 0f dd  20 f2 69 6e 73 74 72 75  |.....(.. .instru|
00004620  63 74 0d 1e 32 05 f7 0d  1e 3c 21 ff 28 22 50 72  |ct..2....<!.("Pr|
00004630  69 6e 74 20 3c 52 75 6e  47 61 6d 65 24 44 69 72  |int <RunGame$Dir|
00004640  3e 2e 46 6f 6e 74 22 29  0d 1e 46 08 fb 20 31 32  |>.Font")..F.. 12|
00004650  0d 1e 50 18 ef 20 32 38  2c 36 2c 32 32 2c 33 33  |..P.. 28,6,22,33|
00004660  2c 38 2c 31 32 2c 31 34  0d 1e 5a 0b f3 20 6c 69  |,8,12,14..Z.. li|
00004670  6e 65 24 0d 1e 64 13 c8  95 20 6c 69 6e 65 24 3c  |ne$..d... line$<|
00004680  3e 22 45 4e 44 22 0d 1e  6e 36 e7 20 6c 69 6e 65  |>"END"..n6. line|
00004690  24 3d 22 2f 22 20 8c 20  f1 27 20 8b 20 64 75 6d  |$="/" . .' . dum|
000046a0  6d 79 3d a4 73 6c 6f 77  5f 70 72 69 6e 74 28 6c  |my=.slow_print(l|
000046b0  69 6e 65 24 2c 30 2e 30  36 2c b9 29 0d 1e 78 04  |ine$,0.06,.)..x.|
000046c0  0d 1e 82 23 e7 20 64 75  6d 6d 79 20 8c 20 6c 69  |...#. dummy . li|
000046d0  6e 65 24 3d 22 45 4e 44  22 20 8b 20 f3 20 6c 69  |ne$="END" . . li|
000046e0  6e 65 24 0d 1e 8c 05 ce  0d 1e 96 27 ff 28 22 50  |ne$........'.("P|
000046f0  72 69 6e 74 20 3c 52 75  6e 47 61 6d 65 24 44 69  |rint <RunGame$Di|
00004700  72 3e 2e 4e 6f 72 6d 61  6c 46 6f 6e 74 22 29 0d  |r>.NormalFont").|
00004710  1e a0 24 f1 27 22 20 20  20 48 69 74 20 53 70 61  |..$.'"   Hit Spa|
00004720  63 65 20 74 6f 20 63 6f  6e 74 69 6e 75 65 22 3a  |ce to continue":|
00004730  41 3d a5 0d 1e aa 05 e1  0d 1e b4 04 0d 1e be 23  |A=.............#|
00004740  f4 20 20 2a 2a 2a 2a 2a  2a 2a 2a 2a 2a 2a 2a 2a  |.  *************|
00004750  2a 2a 2a 2a 2a 2a 2a 2a  2a 2a 2a 2a 2a 2a 2a 0d  |***************.|
00004760  1e c8 1d dc 20 22 20 20  20 20 20 20 20 49 6e 73  |.... "       Ins|
00004770  74 72 75 63 74 69 6f 6e  73 22 2c 2f 0d 1e d2 1f  |tructions",/....|
00004780  dc 20 28 48 69 74 20 53  68 69 66 74 20 74 6f 20  |. (Hit Shift to |
00004790  63 6f 6e 74 69 6e 75 65  20 6f 72 0d 1e dc 22 dc  |continue or...".|
000047a0  20 61 6e 79 20 6f 74 68  65 72 20 6b 65 79 20 74  | any other key t|
000047b0  6f 20 73 74 61 72 74 20  67 61 6d 65 29 0d 1e e6  |o start game)...|
000047c0  07 dc 20 2f 0d 1e f0 1e  dc 20 54 68 69 73 20 4c  |.. /..... This L|
000047d0  65 76 65 6c 20 6f 66 20  43 79 62 6f 72 67 20 68  |evel of Cyborg h|
000047e0  61 73 0d 1e fa 20 dc 20  62 65 65 6e 20 73 70 65  |as... . been spe|
000047f0  63 69 61 6c 6c 79 20 77  72 69 74 74 65 6e 20 66  |cially written f|
00004800  6f 72 0d 1f 04 22 dc 20  74 68 65 20 41 63 6f 72  |or...". the Acor|
00004810  6e 20 43 6f 6d 70 75 74  69 6e 67 20 4d 65 67 61  |n Computing Mega|
00004820  44 69 73 6b 0d 1f 0e 1a  dc 20 61 6e 64 20 69 73  |Disk..... and is|
00004830  20 6e 6f 74 20 61 76 61  69 6c 61 62 6c 65 0d 1f  | not available..|
00004840  18 12 dc 20 65 6c 73 65  77 68 65 72 65 2e 2c 2f  |... elsewhere.,/|
00004850  0d 1f 22 1f dc 20 44 75  65 20 74 6f 20 73 70 61  |..".. Due to spa|
00004860  63 65 20 72 65 73 74 72  69 63 74 69 6f 6e 73 0d  |ce restrictions.|
00004870  1f 2c 1f dc 20 6f 6e 20  74 68 65 20 4d 65 67 61  |.,.. on the Mega|
00004880  44 69 73 6b 20 69 74 20  69 73 20 6e 6f 74 0d 1f  |Disk it is not..|
00004890  36 1f dc 20 61 73 20 6c  61 72 67 65 20 61 73 20  |6.. as large as |
000048a0  74 68 65 20 6c 65 76 65  6c 73 20 69 6e 0d 1f 40  |the levels in..@|
000048b0  1c dc 20 74 68 65 20 66  75 6c 6c 20 76 65 72 73  |.. the full vers|
000048c0  69 6f 6e 20 77 68 69 63  68 0d 1f 4a 22 dc 20 69  |ion which..J". i|
000048d0  6e 63 6c 75 64 65 73 20  34 20 6f 74 68 65 72 20  |ncludes 4 other |
000048e0  6d 75 63 68 20 6c 61 72  67 65 72 0d 1f 54 21 dc  |much larger..T!.|
000048f0  20 61 72 63 61 64 65 20  6c 65 76 65 6c 73 20 26  | arcade levels &|
00004900  20 33 20 61 64 76 65 6e  74 75 72 65 0d 1f 5e 22  | 3 adventure..^"|
00004910  dc 20 73 74 61 67 65 73  20 63 6f 6d 70 72 65 73  |. stages compres|
00004920  73 65 64 20 6f 6e 74 6f  20 74 68 72 65 65 0d 1f  |sed onto three..|
00004930  68 1f dc 20 64 69 73 63  73 2e 20 54 68 69 73 20  |h.. discs. This |
00004940  64 65 6d 6f 20 64 6f 65  73 20 6e 6f 74 0d 1f 72  |demo does not..r|
00004950  22 dc 20 63 6f 6e 74 61  69 6e 20 61 6e 79 20 61  |". contain any a|
00004960  64 76 65 6e 74 75 72 65  20 73 74 61 67 65 73 0d  |dventure stages.|
00004970  1f 7c 07 dc 20 2f 0d 1f  86 23 f4 20 20 2a 2a 2a  |.|.. /...#.  ***|
00004980  2a 2a 2a 2a 2a 2a 2a 2a  2a 2a 2a 2a 2a 2a 2a 2a  |****************|
00004990  2a 2a 2a 2a 2a 2a 2a 2a  2a 0d 1f 90 20 dc 20 54  |*********... . T|
000049a0  68 65 20 64 65 6d 6f 20  72 75 6e 73 20 6f 6e 20  |he demo runs on |
000049b0  61 6c 6c 20 41 63 6f 72  6e 0d 1f 9a 1f dc 20 33  |all Acorn..... 3|
000049c0  32 20 62 69 74 20 6d 61  63 68 69 6e 65 73 20 69  |2 bit machines i|
000049d0  6e 63 6c 75 64 69 6e 67  0d 1f a4 23 dc 20 74 68  |ncluding...#. th|
000049e0  6f 73 65 20 77 69 74 68  20 6f 6e 6c 79 20 31 20  |ose with only 1 |
000049f0  4d 65 67 61 62 79 74 65  2e 2c 2f 0d 1f ae 21 dc  |Megabyte.,/...!.|
00004a00  20 54 68 65 20 66 75 6c  6c 20 76 65 72 73 69 6f  | The full versio|
00004a10  6e 20 72 65 71 75 69 72  65 73 20 32 0d 1f b8 1e  |n requires 2....|
00004a20  dc 20 4d 65 67 61 62 79  74 65 73 20 6f 72 20 6d  |. Megabytes or m|
00004a30  6f 72 65 2e 20 49 74 20  69 73 0d 1f c2 21 dc 20  |ore. It is...!. |
00004a40  63 6f 6d 70 61 74 69 62  6c 65 20 77 69 74 68 20  |compatible with |
00004a50  52 49 53 43 20 4f 53 20  32 20 26 0d 1f cc 20 dc  |RISC OS 2 &... .|
00004a60  20 33 20 61 6e 64 20 69  6e 63 6c 75 64 65 73 20  | 3 and includes |
00004a70  61 20 68 61 72 64 20 64  69 73 63 0d 1f d6 1d dc  |a hard disc.....|
00004a80  20 69 6e 73 74 61 6c 6c  61 74 69 6f 6e 20 70 72  | installation pr|
00004a90  6f 67 72 61 6d 2e 2c 2f  0d 1f e0 22 dc 20 2e 2e  |ogram.,/...". ..|
00004aa0  2e 2e 2e 20 53 50 45 43  49 41 4c 20 4f 46 46 45  |... SPECIAL OFFE|
00004ab0  52 20 2e 2e 2e 2e 2e 2e  2c 2f 0d 1f ea 24 dc 20  |R ......,/...$. |
00004ac0  22 43 79 62 6f 72 67 20  68 61 73 20 61 6e 20 52  |"Cyborg has an R|
00004ad0  52 50 20 6f 66 20 a3 32  35 2e 39 35 2e 22 0d 1f  |RP of .25.95."..|
00004ae0  f4 20 dc 20 52 65 61 64  65 72 73 20 6f 66 20 41  |. . Readers of A|
00004af0  63 6f 72 6e 20 43 6f 6d  70 75 74 69 6e 67 0d 1f  |corn Computing..|
00004b00  fe 22 dc 20 22 63 61 6e  20 73 61 76 65 20 a3 35  |.". "can save .5|
00004b10  2e 30 30 20 62 79 20 6f  72 64 65 72 69 6e 67 22  |.00 by ordering"|
00004b20  0d 20 08 23 dc 20 22 61  20 63 6f 70 79 20 66 6f  |. .#. "a copy fo|
00004b30  72 20 6f 6e 6c 79 20 a3  32 30 2e 39 35 20 70 6c  |r only .20.95 pl|
00004b40  75 73 22 0d 20 12 24 dc  20 22 a3 31 2e 30 30 20  |us". .$. ".1.00 |
00004b50  70 26 70 20 64 69 72 65  63 74 20 66 72 6f 6d 20  |p&p direct from |
00004b60  41 6c 70 69 6e 65 22 0d  20 1c 1f dc 20 22 53 6f  |Alpine". ... "So|
00004b70  66 74 77 61 72 65 2c 20  71 75 6f 74 69 6e 67 20  |ftware, quoting |
00004b80  6f 72 64 65 72 22 0d 20  26 21 dc 20 6e 75 6d 62  |order". &!. numb|
00004b90  65 72 20 41 43 39 33 43  2e 20 50 6c 65 61 73 65  |er AC93C. Please|
00004ba0  20 73 65 6e 64 20 61 0d  20 30 20 dc 20 63 68 65  | send a. 0 . che|
00004bb0  71 75 65 20 6f 72 20 70  6f 73 74 61 6c 20 6f 72  |que or postal or|
00004bc0  64 65 72 20 66 6f 72 0d  20 3a 23 dc 20 22 a3 32  |der for. :#. ".2|
00004bd0  31 2e 39 35 20 6f 72 20  70 68 6f 6e 65 2f 66 61  |1.95 or phone/fa|
00004be0  78 20 75 73 20 77 69 74  68 22 0d 20 44 20 dc 20  |x us with". D . |
00004bf0  79 6f 75 72 20 63 72 65  64 69 74 20 63 61 72 64  |your credit card|
00004c00  20 64 65 74 61 69 6c 73  2c 2f 0d 20 4e 19 dc 20  | details,/. N.. |
00004c10  22 20 20 41 4c 50 49 4e  45 20 53 4f 46 54 57 41  |"  ALPINE SOFTWA|
00004c20  52 45 22 0d 20 58 13 dc  20 22 20 20 50 4f 20 42  |RE". X.. "  PO B|
00004c30  4f 58 20 32 35 22 0d 20  62 13 dc 20 22 20 20 50  |OX 25". b.. "  P|
00004c40  4f 52 54 41 44 4f 57 4e  22 0d 20 6c 13 dc 20 22  |ORTADOWN". l.. "|
00004c50  20 20 43 52 41 49 47 41  56 4f 4e 22 0d 20 76 14  |  CRAIGAVON". v.|
00004c60  dc 20 22 20 20 42 54 36  33 20 35 55 54 22 2c 2f  |. "  BT63 5UT",/|
00004c70  0d 20 80 20 dc 20 22 20  54 65 6c 2f 46 61 78 20  |. . . " Tel/Fax |
00004c80  30 37 36 32 20 33 34 32  35 31 30 22 2c 2f 2c 2f  |0762 342510",/,/|
00004c90  0d 20 8a 11 dc 20 57 65  61 70 6f 6e 73 20 2d 2c  |. ... Weapons -,|
00004ca0  2f 0d 20 94 1f dc 20 59  6f 75 72 20 73 74 61 6e  |/. ... Your stan|
00004cb0  64 61 72 64 20 77 65 61  70 6f 6e 20 69 73 20 61  |dard weapon is a|
00004cc0  0d 20 9e 22 dc 20 47 43  31 35 32 4c 20 6c 61 73  |. .". GC152L las|
00004cd0  65 72 20 61 69 6d 65 64  20 62 79 20 6d 6f 76 69  |er aimed by movi|
00004ce0  6e 67 0d 20 a8 21 dc 20  74 68 65 20 73 69 67 68  |ng. .!. the sigh|
00004cf0  74 20 77 69 74 68 20 74  68 65 20 6d 6f 75 73 65  |t with the mouse|
00004d00  2e 2c 2f 0d 20 b2 1e dc  20 4d 6f 76 65 20 74 68  |.,/. ... Move th|
00004d10  65 20 73 69 67 68 74 20  61 73 20 66 61 72 20 61  |e sight as far a|
00004d20  73 0d 20 bc 1d dc 20 70  6f 73 73 69 62 6c 65 20  |s. ... possible |
00004d30  74 6f 20 74 68 65 20 6c  65 66 74 20 6f 72 0d 20  |to the left or. |
00004d40  c6 23 dc 20 72 69 67 68  74 20 74 6f 20 73 63 72  |.#. right to scr|
00004d50  6f 6c 6c 20 74 68 65 20  73 63 72 65 65 6e 2e 2c  |oll the screen.,|
00004d60  2f 0d 20 d0 21 dc 20 41  73 20 79 6f 75 20 70 6c  |/. .!. As you pl|
00004d70  61 79 20 79 6f 75 20 6d  61 79 20 62 65 20 61 62  |ay you may be ab|
00004d80  6c 65 0d 20 da 21 dc 20  74 6f 20 70 69 63 6b 20  |le. .!. to pick |
00004d90  75 70 20 6f 74 68 65 72  20 77 65 61 70 6f 6e 73  |up other weapons|
00004da0  2e 2c 2f 0d 20 e4 22 dc  20 54 6f 20 66 69 72 65  |.,/. .". To fire|
00004db0  20 61 6e 79 20 77 65 61  70 6f 6e 20 6d 61 6b 65  | any weapon make|
00004dc0  20 73 75 72 65 0d 20 ee  20 dc 20 69 74 20 69 73  | sure. . . it is|
00004dd0  20 73 65 6c 65 63 74 65  64 20 28 73 65 65 20 6c  | selected (see l|
00004de0  61 74 65 72 29 0d 20 f8  19 dc 20 61 6e 64 20 63  |ater). ... and c|
00004df0  6c 69 63 6b 20 53 45 4c  45 43 54 2e 2c 2f 0d 21  |lick SELECT.,/.!|
00004e00  02 1e dc 20 54 6f 20 73  65 6c 65 63 74 20 61 20  |... To select a |
00004e10  77 65 61 70 6f 6e 20 63  6c 69 63 6b 0d 21 0c 1f  |weapon click.!..|
00004e20  dc 20 74 68 65 20 4d 45  4e 55 20 62 75 74 74 6f  |. the MENU butto|
00004e30  6e 20 75 6e 74 69 6c 20  74 68 65 0d 21 16 21 dc  |n until the.!.!.|
00004e40  20 72 69 67 68 74 2d 68  61 6e 64 20 69 6e 64 69  | right-hand indi|
00004e50  63 61 74 6f 72 20 6c 69  67 68 74 73 0d 21 20 21  |cator lights.! !|
00004e60  dc 20 75 70 20 62 65 73  69 64 65 20 74 68 65 20  |. up beside the |
00004e70  77 65 61 70 6f 6e 27 73  20 69 63 6f 6e 0d 21 2a  |weapon's icon.!*|
00004e80  20 dc 20 69 6e 20 74 68  65 20 73 74 61 74 75 73  | . in the status|
00004e90  20 70 61 6e 65 6c 20 61  74 20 74 68 65 0d 21 34  | panel at the.!4|
00004ea0  1f dc 20 74 6f 70 20 6c  65 66 74 20 6f 66 20 74  |.. top left of t|
00004eb0  68 65 20 73 63 72 65 65  6e 2e 2c 2f 0d 21 3e 22  |he screen.,/.!>"|
00004ec0  dc 20 41 20 77 65 61 70  6f 6e 20 69 73 20 61 76  |. A weapon is av|
00004ed0  61 69 6c 61 62 6c 65 20  69 66 20 74 68 65 0d 21  |ailable if the.!|
00004ee0  48 22 dc 20 6c 65 66 74  2d 68 61 6e 64 20 6c 69  |H". left-hand li|
00004ef0  67 68 74 20 62 65 73 69  64 65 20 69 74 20 69 73  |ght beside it is|
00004f00  0d 21 52 0c dc 20 6c 69  74 2e 2c 2f 0d 21 5c 04  |.!R.. lit.,/.!\.|
00004f10  0d 21 66 1f dc 20 49 66  20 79 6f 75 20 6c 6f 6f  |.!f.. If you loo|
00004f20  6b 20 61 74 20 74 68 65  20 77 65 61 70 6f 6e 0d  |k at the weapon.|
00004f30  21 70 20 dc 20 73 74 61  74 75 73 20 70 61 6e 65  |!p . status pane|
00004f40  6c 20 61 74 20 74 68 65  20 6d 6f 6d 65 6e 74 0d  |l at the moment.|
00004f50  21 7a 22 dc 20 79 6f 75  20 73 68 6f 75 6c 64 20  |!z". you should |
00004f60  73 65 65 20 74 68 61 74  20 74 68 65 20 6f 6e 6c  |see that the onl|
00004f70  79 0d 21 84 1d dc 20 77  65 61 70 6f 6e 20 61 76  |y.!... weapon av|
00004f80  61 69 6c 61 62 6c 65 20  69 73 20 74 68 65 0d 21  |ailable is the.!|
00004f90  8e 22 dc 20 22 6c 61 73  65 72 20 77 68 69 63 68  |.". "laser which|
00004fa0  20 69 73 2c 20 6e 61 74  75 72 61 6c 6c 79 2c 22  | is, naturally,"|
00004fb0  0d 21 98 1c dc 20 74 68  65 20 73 65 6c 65 63 74  |.!... the select|
00004fc0  65 64 20 77 65 61 70 6f  6e 2e 2c 2f 0d 21 a2 04  |ed weapon.,/.!..|
00004fd0  0d 21 ac 1e dc 20 54 6f  20 61 63 74 69 76 61 74  |.!... To activat|
00004fe0  65 20 79 6f 75 72 20 74  72 61 63 74 6f 72 0d 21  |e your tractor.!|
00004ff0  b6 21 dc 20 62 65 61 6d  20 74 6f 20 70 69 63 6b  |.!. beam to pick|
00005000  20 75 70 20 6f 62 6a 65  63 74 73 20 61 6e 64 0d  | up objects and.|
00005010  21 c0 21 dc 20 6f 70 65  72 61 74 65 20 73 77 69  |!.!. operate swi|
00005020  74 63 68 65 73 20 65 74  63 2e 20 63 6c 69 63 6b  |tches etc. click|
00005030  0d 21 ca 1f dc 20 74 68  65 20 41 44 4a 55 53 54  |.!... the ADJUST|
00005040  20 62 75 74 74 6f 6e 20  61 6e 64 20 74 68 65 0d  | button and the.|
00005050  21 d4 1f dc 20 73 69 67  68 74 20 77 69 6c 6c 20  |!... sight will |
00005060  63 68 61 6e 67 65 2e 20  41 69 6d 20 61 74 0d 21  |change. Aim at.!|
00005070  de 24 dc 20 74 68 65 20  6f 62 6a 65 63 74 20 61  |.$. the object a|
00005080  6e 64 20 63 6c 69 63 6b  20 53 45 4c 45 43 54 2e  |nd click SELECT.|
00005090  2c 2f 0d 21 e8 20 dc 20  43 6c 69 63 6b 20 41 44  |,/.!. . Click AD|
000050a0  4a 55 53 54 20 61 67 61  69 6e 20 74 6f 20 74 75  |JUST again to tu|
000050b0  72 6e 0d 21 f2 1d dc 20  74 68 65 20 74 72 61 63  |rn.!... the trac|
000050c0  74 6f 72 20 62 65 61 6d  20 6f 66 66 2e 2c 2f 0d  |tor beam off.,/.|
000050d0  21 fc 1f dc 20 54 68 65  20 72 65 64 20 62 61 72  |!... The red bar|
000050e0  20 61 74 20 74 68 65 20  74 6f 70 20 6f 66 0d 22  | at the top of."|
000050f0  06 1f dc 20 74 68 65 20  73 63 72 65 65 6e 20 69  |... the screen i|
00005100  73 20 79 6f 75 72 20 65  6e 65 72 67 79 0d 22 10  |s your energy.".|
00005110  20 dc 20 6c 65 76 65 6c  2e 20 59 6f 75 72 20 65  | . level. Your e|
00005120  6e 65 72 67 79 20 69 73  20 75 73 65 64 0d 22 1a  |nergy is used.".|
00005130  20 dc 20 62 79 20 66 69  72 69 6e 67 20 79 6f 75  | . by firing you|
00005140  72 20 77 65 61 70 6f 6e  73 20 61 6e 64 0d 22 24  |r weapons and."$|
00005150  23 dc 20 62 79 20 62 65  69 6e 67 20 68 69 74 20  |#. by being hit |
00005160  62 79 20 65 6e 65 6d 79  20 66 69 72 65 2e 2c 2f  |by enemy fire.,/|
00005170  0d 22 2e 1d dc 20 54 68  65 20 65 6e 65 72 67 79  |."... The energy|
00005180  20 6c 65 76 65 6c 20 63  61 6e 20 62 65 0d 22 38  | level can be."8|
00005190  1c dc 20 72 65 73 74 6f  72 65 64 20 62 79 20 70  |.. restored by p|
000051a0  69 63 6b 69 6e 67 20 75  70 0d 22 42 14 dc 20 65  |icking up."B.. e|
000051b0  6e 65 72 67 79 20 70 6f  64 73 2e 2c 2f 0d 22 4c  |nergy pods.,/."L|
000051c0  04 0d 22 56 1c dc 20 54  68 65 20 62 6c 75 65 20  |.."V.. The blue |
000051d0  62 61 72 20 73 68 6f 77  73 20 74 68 65 0d 22 60  |bar shows the."`|
000051e0  20 dc 20 61 6d 6f 75 6e  74 20 6f 66 20 61 69 72  | . amount of air|
000051f0  20 72 65 6d 61 69 6e 69  6e 67 20 69 6e 0d 22 6a  | remaining in."j|
00005200  20 dc 20 79 6f 75 72 20  43 79 62 65 72 53 75 69  | . your CyberSui|
00005210  74 2e 20 49 66 20 74 68  65 20 61 69 72 0d 22 74  |t. If the air."t|
00005220  23 dc 20 73 75 70 70 6c  79 20 72 75 6e 73 20 6f  |#. supply runs o|
00005230  75 74 20 79 6f 75 27 6c  6c 20 64 69 65 2e 2c 2f  |ut you'll die.,/|
00005240  0d 22 7e 23 f4 20 20 2a  2a 2a 2a 2a 2a 2a 2a 2a  |."~#.  *********|
00005250  2a 2a 2a 2a 2a 2a 2a 2a  2a 2a 2a 2a 2a 2a 2a 2a  |****************|
00005260  2a 2a 2a 0d 22 88 1f dc  20 53 6f 6d 65 20 6f 66  |***."... Some of|
00005270  20 74 68 65 20 63 72 65  61 74 75 72 65 73 20 79  | the creatures y|
00005280  6f 75 0d 22 92 20 dc 20  77 69 6c 6c 20 65 6e 63  |ou.". . will enc|
00005290  6f 75 6e 74 65 72 20 61  72 65 20 63 6c 61 73 73  |ounter are class|
000052a0  65 64 0d 22 9c 1f dc 20  61 73 20 46 47 41 27 73  |ed."... as FGA's|
000052b0  20 2d 20 46 72 69 65 6e  64 6c 79 20 47 72 65 65  | - Friendly Gree|
000052c0  6e 0d 22 a6 1e dc 20 41  6c 69 65 6e 73 21 20 59  |n."... Aliens! Y|
000052d0  6f 75 20 73 68 6f 75 6c  64 20 61 76 6f 69 64 0d  |ou should avoid.|
000052e0  22 b0 21 dc 20 73 68 6f  6f 74 69 6e 67 20 74 68  |".!. shooting th|
000052f0  65 73 65 20 61 73 20 74  68 69 73 20 77 69 6c 6c  |ese as this will|
00005300  0d 22 ba 21 dc 20 69 6e  63 75 72 20 61 20 70 65  |.".!. incur a pe|
00005310  6e 61 6c 74 79 20 69 6e  20 74 68 65 20 66 6f 72  |nalty in the for|
00005320  6d 0d 22 c4 22 dc 20 6f  66 20 6c 6f 73 74 20 63  |m.".". of lost c|
00005330  72 65 64 69 74 73 20 61  6e 64 20 77 6f 72 73 65  |redits and worse|
00005340  21 2c 2f 0d 22 ce 04 0d  22 d8 20 dc 20 54 68 65  |!,/."...". . The|
00005350  20 61 69 6d 20 6f 66 20  74 68 69 73 20 64 65 6d  | aim of this dem|
00005360  6f 20 6c 65 76 65 6c 0d  22 e2 1b dc 20 69 73 20  |o level."... is |
00005370  74 6f 20 65 73 63 61 70  65 20 66 72 6f 6d 20 74  |to escape from t|
00005380  68 65 0d 22 ec 20 dc 20  64 75 6e 67 65 6f 6e 20  |he.". . dungeon |
00005390  62 79 20 63 6f 6c 6c 65  63 74 69 6e 67 20 46 4f  |by collecting FO|
000053a0  55 52 0d 22 f6 20 dc 20  58 79 6c 65 6e 69 75 6d  |UR.". . Xylenium|
000053b0  20 63 72 79 73 74 61 6c  73 2e 20 41 73 20 65 61  | crystals. As ea|
000053c0  63 68 0d 23 00 20 dc 20  6f 6e 65 20 69 73 20 63  |ch.#. . one is c|
000053d0  6f 6c 6c 65 63 74 65 64  20 61 20 63 72 79 73 74  |ollected a cryst|
000053e0  61 6c 0d 23 0a 21 dc 20  69 6e 64 69 63 61 74 6f  |al.#.!. indicato|
000053f0  72 20 61 62 6f 76 65 20  74 68 65 20 64 6f 6f 72  |r above the door|
00005400  20 61 74 0d 23 14 1f dc  20 74 68 65 20 66 61 72  | at.#... the far|
00005410  20 72 69 67 68 74 20 73  69 64 65 20 6f 66 20 74  | right side of t|
00005420  68 65 0d 23 1e 1c dc 20  6c 65 76 65 6c 20 77 69  |he.#... level wi|
00005430  6c 6c 20 6c 69 67 68 74  20 75 70 2e 2c 2f 0d 23  |ll light up.,/.#|
00005440  28 21 dc 20 57 68 65 6e  20 61 6c 6c 20 66 6f 75  |(!. When all fou|
00005450  72 20 61 72 65 20 6c 69  74 20 63 6c 69 63 6b 0d  |r are lit click.|
00005460  23 32 20 dc 20 74 68 65  20 73 77 69 74 63 68 20  |#2 . the switch |
00005470  62 65 73 69 64 65 20 74  68 65 20 64 6f 6f 72 0d  |beside the door.|
00005480  23 3c 20 dc 20 61 6e 64  20 69 74 20 77 69 6c 6c  |#< . and it will|
00005490  20 6f 70 65 6e 20 61 6e  64 20 61 6c 6c 6f 77 0d  | open and allow.|
000054a0  23 46 18 dc 20 79 6f 75  20 74 6f 20 65 73 63 61  |#F.. you to esca|
000054b0  70 65 2e 2e 2e 2c 2f 0d  23 50 1d dc 20 20 20 20  |pe...,/.#P..    |
000054c0  20 2e 2e 2e 2e 20 47 4f  4f 44 20 4c 55 43 4b 20  | .... GOOD LUCK |
000054d0  2e 2e 2e 2e 0d 23 5a 23  f4 20 20 2a 2a 2a 2a 2a  |.....#Z#.  *****|
000054e0  2a 2a 2a 2a 2a 2a 2a 2a  2a 2a 2a 2a 2a 2a 2a 2a  |****************|
000054f0  2a 2a 2a 2a 2a 2a 2a 0d  23 64 09 dc 20 45 4e 44  |*******.#d.. END|
00005500  0d 23 6e 04 0d 23 78 28  dd 20 a4 73 6c 6f 77 5f  |.#n..#x(. .slow_|
00005510  70 72 69 6e 74 28 74 65  78 74 24 2c 64 65 6c 61  |print(text$,dela|
00005520  79 2c 69 6e 74 65 72 72  75 70 74 29 0d 23 82 0c  |y,interrupt).#..|
00005530  ea 20 49 25 2c 63 68 24  0d 23 8c 13 e3 20 49 25  |. I%,ch$.#... I%|
00005540  3d 31 20 b8 20 a9 74 65  78 74 24 0d 23 96 14 63  |=1 . .text$.#..c|
00005550  68 24 3d c1 74 65 78 74  24 2c 49 25 2c 31 29 0d  |h$=.text$,I%,1).|
00005560  23 a0 19 e7 20 63 68 24  3d 22 5c 22 20 8c 20 f1  |#... ch$="\" . .|
00005570  3a 63 68 24 3d bd 31 30  0d 23 aa 09 f1 63 68 24  |:ch$=.10.#...ch$|
00005580  3b 0d 23 b4 2e e7 20 69  6e 74 65 72 72 75 70 74  |;.#... interrupt|
00005590  20 80 20 a6 28 2d 39 39  29 20 8c 20 f1 3a 3d b9  | . .(-99) . .:=.|
000055a0  20 8b 20 f2 77 61 69 74  28 64 65 6c 61 79 29 0d  | . .wait(delay).|
000055b0  23 be 05 ed 0d 23 c8 05  f1 0d 23 d2 06 3d a3 0d  |#....#....#..=..|
000055c0  ff                                                |.|
000055c1