home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
The Datafile PD-CD 5
/
DATAFILE_PDCD5.iso
/
utilities
/
a
/
audiovis
/
!AudioVis
/
!RunImage
(
.txt
)
< prev
next >
Wrap
RISC OS BBC BASIC V Source
|
1997-05-10
|
12KB
|
509 lines
"AudioVis by Michael K
bel & Denys Bogatz"
"Wimp Interface written by Dirk Krumbholz"
$+" ("+
_InitVars
_EnterWimp
_LeaveWimp:
$+" ("+
_InitApp
"WimpExt_PrePoll"
"Wimp_Poll",%11100000110001,block%
reason%
"WimpExt_Action",taskhandle%,block%,reason%
reason%
reason%
"Wimp_OpenWindow",,block%
"Wimp_CloseWindow",,block%
_MouseClick(block%!12)
"Wimp_ProcessKey",block%!24
_MenuSelection(!block%)
17,18:
_RecieveMessage(block%!16)
quit%
_LeaveWimp
_MouseClick(window%)
window%
-2 :
_IconBarClick(block%!8)
_WindowClick(block%!12,block%!16)
_IconBarClick(button%)
button%
2 :
"WimpExt_CreateMenu",,imenu%,!block%-64,228
menuopen%=imenu%
4 :
_StartVisualisation
_WindowClick(window%,icon%)
window%<>optwin%
icon%
4 :
_Opt_Initialise
_Opt_UpdateAll
3: !block%=optwin%:
"Wimp_CloseWindow",,block%
5 :
_Opt_GetValues
_Opt_Save
6: !block%=optwin%:
"Wimp_CloseWindow",,block%
6 : !block%=optwin%:
"Wimp_CloseWindow",,block%
7 :
_Opt_GetValues
9: !block%=optwin%:
"Wimp_CloseWindow",,block%
_MenuSelection(menuItem%)
menuItem%
1 : !block%=optwin%
@-
"Wimp_GetWindowState",,block%
A0
"WimpExt_CentreWindow",,block%+4
B1
"WimpExt_CentreWindowV",,block%+4
block%!28=-1
D)
"Wimp_OpenWindow",,block%
2 : quit%=
_RecieveMessage(action%)
action%
0 : quit%=
3 :
block%!20 = optwin%
M
block%!24 = 17
P%=block%+44
O'
?P%<>0:P%+=1:
:?P%=13
P* OPTsprsetname$=$(block%+44)
Q%
_Opt_UpdateSprSetName
_Opt_Initialise
OPTplotchoice%=1
OPTviewchoice%=0
OPTbuffercolor%=159
OPTsprset%=1
OPTsprsetname$=""
_Opt_Save
P%=block%:L%=P%+2048
[ OPT 10
equd OPTplotchoice%
equd OPTviewchoice%
equd OPTbuffercolor%
equd OPTsprset%
equs OPTsprsetname$
equb 13
"OS_File",10,"<AudioVis$Dir>.Choices",&ffd,,block%,block%+16+1+
(OPTsprsetname$)
_Opt_Load
"OS_Find",%01000111,"<AudioVis$Dir>.Choices"
F%=0
_Opt_Initialise
"OS_Find",0,F%
"OS_File",16,"<AudioVis$Dir>.Choices",block%,0
OPTplotchoice%=!block%
OPTviewchoice%=block%!4
OPTbuffercolor%=block%!8
OPTsprset%=block%!12
w OPTsprsetname$=$(block%+16)
_Opt_UpdateAll
"WimpExt_SetIcon",,,optwin%,20,OPTplotchoice%
"WimpExt_SetIcon",,,optwin%,21+OPTviewchoice%,1
"WimpExt_SetIconString",,,optwin%,23,
OPTbuffercolor%
"WimpExt_SetIcon",,,optwin%,9+OPTsprset%,1
"WimpExt_SetIconString",,,optwin%,17,OPTsprsetname$
_Opt_UpdateSprSetName
"WimpExt_SetIcon",,,optwin%,16,1
"WimpExt_SetIconString",,,optwin%,17,OPTsprsetname$
_Opt_GetValues
"WimpExt_GetIcon",,,optwin%,20
OPTplotchoice%
"WimpExt_GetIcon",,,optwin%,22
OPTviewchoice%
"WimpExt_GetNumberIcon",10,,optwin%,23
OPTbuffercolor%
'OPTbuffercolor%=OPTbuffercolor%
"Wimp_WhichIcon",optwin%,block%,&003f0000,&00210000
OPTsprset%=!block%-9
_InitVars
code% (600*1024)
block% 2048
idata% 2048
imenu% 100
quit%=
optspritearea% 50175
-!optspritearea%=50172:optspritearea%!8=16
"OS_SpriteOp",&109,optspritearea%
"OS_SpriteOp",&10a,optspritearea%,"<AudioVis$Dir>.Sprites"
_InitApp
_Opt_Load
_Opt_UpdateAll
_EnterWimp
P%=block%:L%=P%+8
[ OPT 10
equd 3:equd 0
"Wimp_Initialise",300,&4b534154,"AudioVis",block%
,taskhandle%
"WimpExt_Initialise",14,taskhandle%,%1100010010
"WimpExt_IconBarSprite",,,-1,"!audiovis",,3
block%!0=0:block%!4=0
"WimpExt_LoadTemplates",block%,block%+64,idata%,idata%+2047,-1,"<AudioVis$Dir>.Templates",optspritearea%
%infowin%=!block%:optwin%=block%!4
P%=imenu%:L%=P%+100
[ OPT 10
@equs "AudioVis":equd 0:equd &00070207:equd 96:equd 44:equd 0
@equd 0:equd infowin%:equd &7000021:equs "Info":equd 0:equd 0
7equd 0:equd -1:equd &7000021:equs "Options
":equd 0
<equd &80:equd -1:equd &7000021:equs "Quit":equd 0:equd 0
_LeaveWimp
"WimpExt_CloseDown",taskhandle%
"Wimp_CloseDown"
_StartVisualisation
BufferColor=OPTbuffercolor%
PlotChoice=1-OPTplotchoice%
ViewChoice=OPTviewchoice%
OPTsprset%=7
L$=OPTsprsetname$
7 L$="<AudioVis$Dir>.SpriteSets.sprset"+
OPTsprset%
"Wimp_ReadSysInfo",1
DesktopScreenMode%
L%=code%+(600*1024)-1
assemble
"LZWD_Decompress",L$,SPRITES
4 table%?(S*2)=
((0.5+267.33*2^(S/16))/512)
! table%?(S*2+1)=-table%?(S*2)
code%
DesktopScreenMode%
"Wimp_ForceRedraw",-1,0,0,&7fff,&7fff
assemble
pass% = 8
P%=code%
OPT pass%
STMFD R13!,{R0-R12,R14}
BL GSCREEN
BL SSCAN
b main_loop
;------------------------
.table%
_work(256):ALIGN
.OSTSET:EQUD 320*256
EQUW 0:EQUB 0
.SBASE
EQUB 2
EQUD 0
ALIGN
;------------------------
.main_loop
MOV R0,#19:SWI 6
!MOV R0,#22:ADR R1,SBASE:SWI 7
LDR R3,OSTSET
LDR R2,SBASE+1
R2,R2,R3
STR R2,SBASE+1
STR R2,SCREEN+4
BL LOESCHBILD
MOV R4,#0
LDR R1,BASIS
LDR R2,SBLOCK
ADR R12,table%
MOV R6,#0
MOV R7,#0
MOV R8,#0
MOV R9,#0
.werte_lesen
LDR R10,[R1]
R3,R10,#&FF
LDRB R3,[R12,R3]
SUBS R3,R3,#128
RSBMI R3,R3,#0
CMP R3,R6
MOVGT R6,R3
R3,R10,#&FF00
LDRB R3,[R12,R3,LSR#8]
SUBS R3,R3,#128
RSBMI R3,R3,#0
CMP R3,R7
MOVGT R7,R3
R3,R10,#&FF0000
LDRB R3,[R12,R3,LSR#16]
SUBS R3,R3,#128
RSBMI R3,R3,#0
CMP R3,R8
MOVGT R8,R3
MOV R3,R10,lsr#24
LDRB R3,[R12,R3]
SUBS R3,R3,#128
RSBMI R3,R3,#0
CMP R3,R9
MOVGT R9,R3
ADD R4,R4,#1
CMP R4,#128
BNE werte_lesen
STR R6,wert_erste
STR R7,wert_zweite
STR R8,wert_dritte
STR R9,wert_vierte
LDR R0,SCREEN
LDR R1,SCREEN+4
ADD r0,r1,r0
ADD R0,R0,#32
ADR R1,SPRITES
LDR R3,wert_erste
MOV R3,R3,lSR#2
ADD R1,R1,R3,lSL#14
MOV R2,#128
.plotloop1
LDMIA R1!,{R3-R12,R14}
STMIA R0!,{R3-R12,R14}
LDMIA R1!,{R3-R12,R14}
STMIA R0!,{R3-R12,R14}
LDMIA R1!,{R3-R12}
STMIA R0!,{R3-R12}
ADD R0,R0,#192
SUBS R2,R2,#1
BGT plotloop1
LDR R0,SCREEN
LDR R1,SCREEN+4
ADD r0,r1,r0
ADD R0,R0,#160
ADR R1,SPRITES
LDR R3,wert_zweite
MOV R3,R3,lSR#2
ADD R1,R1,R3,lsl#14
MOV R2,#128
.plotloop2
LDMIA R1!,{R3-R12,R14}
STMIA R0!,{R3-R12,R14}
LDMIA R1!,{R3-R12,R14}
STMIA R0!,{R3-R12,R14}
LDMIA R1!,{R3-R12}
STMIA R0!,{R3-R12}
ADD R0,R0,#192
SUBS R2,R2,#1
BGT plotloop2
LDR R0,SCREEN
LDR R1,SCREEN+4
ADD r0,r1,r0
ADD R0,R0,#(320*128)
ADD R0,R0,#32
ADR R1,SPRITES
LDR R3,wert_dritte
MOV R3,R3,lSR#2
ADD R1,R1,R3,lsl#14
MOV R2,#128
.plotloop3
LDMIA R1!,{R3-R12,R14}
STMIA R0!,{R3-R12,R14}
LDMIA R1!,{R3-R12,R14}
STMIA R0!,{R3-R12,R14}
LDMIA R1!,{R3-R12}
STMIA R0!,{R3-R12}
ADD R0,R0,#192
SUBS R2,R2,#1
BGT plotloop3
.vierte
LDR R0,SCREEN
LDR R1,SCREEN+4
ADD r0,r1,r0
ADD R0,R0,#(320*128)
ADD R0,R0,#160
ADR R1,SPRITES
LDR R3,wert_vierte
MOV R3,R3,lSR#2
ADD R1,R1,R3,lsl#14
MOV R2,#128
.plotloop4
LDMIA R1!,{R3-R12,R14}
STMIA R0!,{R3-R12,R14}
LDMIA R1!,{R3-R12,R14}
STMIA R0!,{R3-R12,R14}
LDMIA R1!,{R3-R12}
STMIA R0!,{R3-R12}
ADD R0,R0,#192
SUBS R2,R2,#1
BGT plotloop4
MOV R0,#0
CMP R0,#(PlotChoice)
BNE tastendruck
LDR R0,SCREEN
LDR R1,SCREEN+4
ADD r0,r1,r0
MOV R4,#0
LDR R1,BASIS
LDR R2,SBLOCK
MOV R5,#(BufferColor)
ADR R12,table%
MOV R10,#0
CMP R10,#(ViewChoice)
BNE plot_buffer_sideways
.plot_buffer_above
LDR R10,[R1]
R3,R10,#&FF
LDRB R3,[R12,R3]
MOV R3,R3,LSR#2
MOV R6,R3,LSL#8
ADD R6,R6,R3,LSL#6
ADD R6,R6,#(32*320)
ADD R6,R6,#32
STRB R5,[R0,R6]
R3,R10,#&FF00
LDRB R3,[R12,R3,LSR#8]
MOV R3,R3,LSR#2
MOV R6,R3,LSL#8
ADD R6,R6,R3,LSL#6
ADD R6,R6,#(32*320)
ADD R6,R6,#160
STRB R5,[R0,R6]
R3,R10,#&FF0000
LDRB R3,[R12,R3,LSR#16]
MOV R3,R3,LSR#2
MOV R6,R3,LSL#8
ADD R6,R6,R3,LSL#6
ADD R6,R6,#(160*320)
ADD R6,R6,#32
STRB R5,[R0,R6]
MOV R3,R10,lsr#24
LDRB R3,[R12,R3]
MOV R3,R3,LSR#2
MOV R6,R3,LSL#8
ADD R6,R6,R3,LSL#6
ADD R6,R6,#(160)*320
ADD R6,R6,#160
STRB R5,[R0,R6]
ADD R1,R1,R2
ADD R0,R0,#1
ADD R4,R4,#1
CMP R4,#128
BNE plot_buffer_above
B tastendruck
.plot_buffer_sideways
LDR R10,[R1]
R3,R10,#&FF
LDRB R3,[R12,R3]
MOV R3,R3,LSR#3
STRB R5,[R0,R3]
R3,R10,#&FF00
LDRB R3,[R12,R3,LSR#8]
MOV R3,R3,LSR#3
ADD R3,R3,#288
STRB R5,[R0,R3]
R3,R10,#&FF0000
LDRB R3,[R12,R3,LSR#16]
MOV R3,R3,LSR#3
ADD R3,R3,#(320*128)
STRB R5,[R0,R3]
MOV R3,R10,lsr#24
LDRB R3,[R12,R3]
MOV R3,R3,LSR#3
ADD R3,R3,#(320*128)
ADD R3,R3,#288
STRB R5,[R0,R3]
ADD R1,R1,R2
ADD R0,R0,#320
ADD R4,R4,#1
CMP R4,#128
BNE plot_buffer_sideways
.tastendruck
MOV R0,#121:MOV R1,#112+128
SWI 6:CMP R1,#&FF:BEQ RAUS
B main_loop
.RAUS
LDMFD R13!,{R0-R12,PC}
(;-----------------------------------
.wert_erste
EQUD 0
.wert_zweite