home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
ARM Club 3
/
TheARMClub_PDCD3.iso
/
programs
/
comms_networking
/
hearsay
/
!Hearsay
/
!RunImage
(
.txt
)
< prev
next >
Wrap
RISC OS BBC BASIC V Source
|
1996-04-04
|
11KB
|
416 lines
> <Hearsay$Dir>.!RunImage
> A NewsBase-compatible newsreader
Chris Rutter, 1995
error$="main"
debugmode%=
debugmode%=
load_libraries
error
startup_variables
open_messages_file
prevariables
compile_memory_stubs
setup_wimp_messages
"Wimp_Initialise",310,&4B534154,taskname_long$,block%
,task_handle%
5initialised_functions%=initialised_functions%
postvariables
load_sprites
load_windows
create_menus
create_iconbar_icon
broadcast_startup_message
compile_newsbase_stubs
debugmode%
debug_message("memory_needed="+
(memory_needed%))
debugmode%
debug_message("Startup complete.")
wimp_error
"OS_ReadMonotonicTime"
time%
"Wimp_Poll",1,block%,time%+12
action%
speed enhancements
(action%=17
action%=18)
block%!16=NewsBase_Reply%
&5
block%!20=100
newsbase_loggroup:action%=0
'7
block%!20=200
newsbase_logarticle:action%=0
wimp_action(action%,block%)
error$<>"main"
debugmode%
debug_message("Error stack was "+error$+" on return to main")
error$="main"
newspane_status_timeout%<>0
>newspane_status_timeout%+150
set_icon(newspane_window%,newspane_status%,"")
0 newspane_status_timeout%=0
quit%
debugmode%
debug_message("Shutting down...")
clean_exit
load_libraries
"HearsayLibs:Icons"
"HearsayLibs:General"
"HearsayLibs:Debug"
"HearsayLibs:Menus"
"HearsayLibs:Windows"
"HearsayLibs:NewsBase"
"HearsayLibs:Memory"
"HearsayLibs:Viewer"
startup_variables
"Wimp_SlotSize",-1,-1
slotsize%
external_heapbase%=
+4096
(external_heapbase%
4)>0
external_heapbase%-=(external_heapbase%
heap_comments$(64)
territory$="UK"
error$="main"
memory_needed%=0
debugmode%=
debugmode%=
debug_monitor$=""
article_group%=0
debugmode%
debugwin%=
verbose
debug_history$(3200)
"Wimp_SlotSize",slotsize%+32*1024,-1
slotsize%
debug_history$(64)
debug_pointer%=1
memory_needed%+=(128*32)
block% 2048:memory_needed%+=2048
wbk%=block%+512
wbk2%=wbk%+512
wbk3%=wbk2%+512
wbk4%=wbk3%+256
group_expanded% 128
group%
group%=0
128
group_expanded%!group%=0
group%
heap_anchorsfree% 256
anchor%
anchor%=0
256
g heap_anchorsfree%!anchor%=0
anchor%
heap_anchors% 256
anchorsheap%(64)
heapsanchor%(64)
heap_size%(64)
heap_base%(64)
active_heaps%=0
(external_heapbase%
4)<>0
pE external_heapbase%=4+external_heapbase%-(external_heapbase%
r!heaps_top%=external_heapbase%
prevariables
ael("prevariables")
debugmode%
debug_message("Initialising prevariables...")
viewer_documentopen%=0
NewsBase_Command%=&83580
NewsBase_Reply%=&83581
NewsBase_Update%=&83582
error% 256:memory_needed%+=256
users_scanning%=
newslist_scanning%=
article_scanning%=
Canchor_menu_users%=
claim_heap_commented(28*20,"Menu of users")
<anchor_users%=
claim_heap_commented(32*20,"Users cache")
Danchor_newslist%=
claim_heap_commented(20*10,"Newsgroups cache")
Panchor_newslisttext%=
claim_heap_commented(20*20,"Newsgroups display cache")
Manchor_newslistinfo%=
claim_heap_commented(20*40,"Newsgroups info cache")
Eanchor_groupanchor%=
claim_heap_commented(128*16,"Group anchors")
newspane_status_timeout%=0
newslist_groups%=0
postvariables
debugmode%
debug_message("Initialising wimp debugger...")
debug_startup
quit%=
setup_wimp_messages
ael("setup_wimp_messages")
debugmode%
debug_message("Setting up WIMP messages...")
block%!0=&74f00
block%!4=NewsBase_Command%
block%!8=NewsBase_Reply%
block%!12=NewsBase_Update%
block%!16=&400c0
block%!20=&feed10
block%!24=&feed11
block%!28=&feed12
block%!32=0
open_messages_file
ael("open_messages_file")
message_size%,state%
<>&feed
0,"While trying to open the messages file the following error occured: "+
error:
"OS_File",5,"<Hearsay$Dir>."+territory$+".Messages"
state%,,,,message_size%
state%=0
&feed,"Where
s my Messages file gone?"
state%=2
&feed,"My Messages file is a directory!"
message_desc% 16
message_filebuff% message_size%+16
message_buff% 256
-memory_needed%+=(16+message_size%+256+16)
"MessageTrans_OpenFile",message_desc%,"<Hearsay$Dir>."+territory$+".Messages",message_filebuff%
$taskname_short$=
msg("TaskName")
'taskname_long$=
msg("LongTaskName")
#version%=
msg("Version"))*100
5initialised_functions%=initialised_functions%
error
("Error Error in error trapping procedure : "+
$+" at line "+
clean_exit
"OS_CLI","Error An error occured during start up: "+
error
wimp_error
("Error Error in error trapping procedure : "+
$+" at line "+
!error%=
=$(error%+4)=
error+" (OK to continue, Cancel to quit)"+
"Wimp_ReportError",error%,(1<<0)
(1<<1),taskname_long$
,selected%
debugmode%
check_integrity
enumerate_heaps
enumerate_memory
debugmode%
debug_message(
error)
selected%=2
quit%=
clean_exit
error$="main"
clean_exit
ael("clean_exit")
report_copy$
report_copy$=
error
0,report_copy$+" [clean_exit error="+
error+"]":
(initialised_functions%
2)=2
debug_shutdown
(initialised_functions%
1)=1
"MessageTrans_CloseFile",message_desc%
(initialised_functions%
8)=8
broadcast_shutdown_message
(initialised_functions%
4)=4
"Wimp_CloseDown",task_handle%,&4b534154
initialised_functions%=0
load_windows
state%
ael("load_windows")
debugmode%
debug_message("Loading windows...")
"OS_File",5,"<Hearsay$Dir>."+territory$+".Templates"
state%
state%=0
msg("NoTemplates")
state%=2
msg("TemplatesDirectory")
"Wimp_OpenTemplate",,"<Hearsay$Dir>."+territory$+".Templates"
%info_window%=
load_window("Info")
%news_window%=
load_window("News")
-newspane_window%=
load_window("NewsPane")
)viewer_window%=
load_window("Viewer")
"Wimp_CloseTemplate"
set_icon(info_window%,7,
msg("Version")+" ("+
msg("Date")+")"+" ["+
msg("InternalVersion")+"]")
!wbk%=newspane_window%
"Wimp_GetWindowState",,wbk%
#newspane_height%=wbk%!16-wbk%!8
find_icons
find_icons
newspane_status%=2
newspane_menu%=1
newspane_user%=0
create_menus
ael("create_menus")
debugmode%
debug_message("Creating menus...")
create_menu_main
create_menu_main
-menu_main%=
menu_start(taskname_short$,3)
menu_itemlink("#Info",info_window%)
menu_itemsubmenu("#Users",1)
menu_item("#Quit")
menu_finish(menu_main%)
create_iconbar_icon
debugmode%
debug_message("Creating iconbar icon...")
block%!0=-1
block%!4=0
block%!8=0
block%!12=76
block%!16=76
block%!20=&3002
$(block%+24)="!hearsay"
"Wimp_CreateIcon",,block%
iconbar_icon%
wimp_action(action%,block%)
error$<>"main"
ael("wimp_action")
action%
% !newslist_info=newslist_groups%
poll_redraw%
!block%=news_window%
"*
intercept_news_window_open(block%)
$?
!block%<>newspane_window%
"Wimp_OpenWindow",,block%
!block%=viewer_window%
viewer_closedocument
*$
"Wimp_CloseWindow",,block%
+?
!block%=news_window%
close_window(newspane_window%)
6 :
poll_mouse(block%!0,block%!4,block%!8,block%!12,block%!16)
9 :
poll_menu(block%)
17,18 :
poll_message(block%!16,block%)
error$<>"main"
poll_menu(block%)
ael("poll_menu")
debugmode%
verbose
debug_message("Menu selection "+
(block%!0))
menu_last%
menu_main%
block%!0
;P
block%!4>-1
change_user(
menu_itemtext(!anchor_menu_users%,block%!4))
2 : quit%=
!anchor_menu_users%
block%!0>-1
change_user(
menu_itemtext(!anchor_menu_users%,block%!0))
poll_mouse(mouse_x%,mouse_y%,button%,window%,icon%)
ael("poll_mouse")
debugmode%
verbose
debug_message("Mouse click in window "+
hexadecimal(window%)+" on icon "+
(icon%))
window%
icon%
iconbar_icon%
button%
M,
(initialised_functions%
8)=8
N%
open_window(news_window%)
P%
broadcast_startup_message
R1
2 :
menu_showbar(menu_main%,mouse_x%)
S
news_window% :
news_window_click
newspane_window%
icon%=newspane_menu%
prepare_usersmenu
Y8
menu_showicon(!anchor_menu_users%,window%,icon%)
poll_message(message%,block%)
ael("poll_message")
debugmode%
verbose
debug_message("Incoming message...["+
hexadecimal(message%)+"]")
message%
0 : quit%=
&400c0
prepare_usersmenu
"Wimp_CreateSubMenu",,!anchor_menu_users%,block%!24,block%!28
&74f00 :
debug_receivemessage
NewsBase_Reply% :
newsbase_receivemessage
NewsBase_Update% :
newsbase_updatemessage
message%=&feed11
message%=&feed12
l NewsBase_Command%=&feed10
NewsBase_Reply%=&feed11
NewsBase_Update%=&feed12
o%
poll_message(message%,block%)
message%=&83581
message%=&83582
NewsBase_Command%=&83580
NewsBase_Reply%=&83581
NewsBase_Update%=&83582
u%
poll_message(message%,block%)
mpad(ref%)
wbk2%!0=252
wbk2%!12=ref%
npad(ref%)
wbk2%!0=252
wbk2%!12=ref%
wbk2%!16=NewsBase_Command%
mpadl(length%,ref%)
wbk2%!0=length%
wbk2%!12=ref%
poll_opennewspane
word%
ael("poll_opennewspane")
word%=0
wbk%!word%=block%!word%
word%
update_newspane(wbk%)
block%!28=newspane_window%
verbose