home *** CD-ROM | disk | FTP | other *** search
/ ARM Club 3 / TheARMClub_PDCD3.iso / programs / comms_networking / hearsay / !Hearsay / Libraries / Debug (.txt) next >
RISC OS BBC BASIC V Source  |  1996-01-25  |  5KB  |  176 lines

  1.  > Debugging library
  2.  Chris Rutter, 1995
  3. debug_startup
  4. ael("debug_startup")
  5. debugwin%=
  6. wbk%!0=252
  7. wbk%!12=0
  8. wbk%!16=&97fc1
  9. wbk%!20=1
  10. $(wbk%+24)="Hearsay"
  11. $(wbk%+32)=""
  12.  "Wimp_SendMessage",17,wbk%,0
  13.  debug_pointer%>1 
  14. debug_message("has startup debug messages; spooling:")
  15.  dummy%=1 
  16.  debug_pointer%-1
  17. debug_message(debug_history$(dummy%))
  18.  dummy%
  19. debug_shutdown
  20. ael("debug_shutdown")
  21. wbk4%!0=252
  22. wbk4%!12=0
  23. wbk4%!16=&97fc1
  24. wbk4%!20=2
  25. $(wbk4%+24)=taskname_short$
  26. $(wbk4%+32)=""
  27.  "Wimp_SendMessage",17,wbk4%,0
  28. debug_message(message$)
  29. message$,"!")=0 
  30.  message$=
  31. msg_parse(message$)
  32.  debugmode% 
  33.  wbk4%!64=252
  34.  wbk4%!(64+12)=0
  35.  wbk4%!(64+16)=&97fc1
  36.  wbk4%!(64+20)=3
  37.  $(wbk4%+24+64)="Hearsay"
  38. message$,6)="END = " 
  39. ,#  wbk4%!(32+64)=
  40. message$,7))
  41.   wbk4%!(64+20)=4
  42.  debug_monitor$<>"" 
  43.  $(wbk4%+24+64)=
  44. debug_types(debug_monitor$)
  45.   $(wbk4%+32+64)=message$
  46.  debugwin% 
  47.  "Wimp_SendMessage",17,wbk4%+64,0
  48. 5-  debug_history$(debug_pointer%)=message$
  49.   debug_pointer%+=1
  50. debug_receivemessage
  51. ael("debug_receivemessage")
  52.  dummy$
  53.  debugmode%=
  54.  debugmode%=
  55.  debugmode% 
  56.  last_end%=
  57.  debugmode% 
  58.  debug_history$(32):debug_pointer%=1
  59.  debugwin%=
  60.  block%!20=0 
  61.  dummy$=$(block%+24)
  62. dummy$,2)="FN" 
  63.  dummy$="var:"+dummy$
  64. dummy$,4)="var:" 
  65.   dummy$=
  66. dummy$,5)
  67. debug_message(dummy$+"="+
  68. debug_types(dummy$))
  69. dummy$,8)="monitor:" 
  70.  debug_monitor$=
  71. dummy$,9)
  72.  dummy$ 
  73.  "blankusers"   : active_users%=0
  74.  "quit"         : quit%=
  75.  "users"        : 
  76. enumerate_users
  77.  "heaps"        : 
  78. enumerate_heaps
  79.  "groupanchors" : 
  80. enumerate_groupanchors
  81.  "integrity"    : 
  82. check_integrity
  83.  "groups"       : 
  84. enumerate_newslist
  85.  "articles"     : 
  86. enumerate_articles
  87.  "memory"       : 
  88. enumerate_memory
  89.  "info"
  90. debug_message(taskname_long$+" version "+
  91. msg("Version"))
  92.  block%!20=1 
  93. debug_message("I am running.")
  94. enumerate_memory
  95. debug_message("")
  96. debug_message("last used address="+
  97. -&8000))
  98. debug_message("last allocated address="+
  99. -&8000))
  100. debug_message("variables start="+
  101. -&8000))
  102. debug_message("slotsize="+
  103. (slotsize%))
  104. debug_message("total external heap size="+
  105. (slotsize%-(
  106. -&8000)))
  107. debug_message("variables space="+
  108. debug_types(dummy$)
  109.  string%
  110. string%=
  111. dummy$,1)="%" 
  112.  string%=
  113. dummy$,"%")>0 
  114.  string%=
  115. dummy$,"FN")>0 
  116.  string%=
  117. dummy$,"$")>0 
  118.  string%=
  119.  string%=
  120. (dummy$)
  121. (dummy$))
  122. check_integrity
  123.  ierror$,heap%
  124. debug_message("Testing integrity...")
  125. w!ierror$="heap granulation OK"
  126.  heap%=1 
  127.  active_heaps%-1
  128.  heap_base%(heap%)+heap_size%(heap%)<>heap_base%(heap%+1) 
  129. debug_message("Heap {heap%} ends at {heap_base%(heap%)+heap_size%(heap%)} but heap {heap%+1} begins at {heap_base%(heap%+1)}"):ierror$="heap granularity faults"
  130.  heap%
  131.  heap_base%(active_heaps%)+heap_size%(active_heaps%)<>heaps_top% 
  132. debug_message("heaps_top% is {heaps_top%}; should be {heap_base%(active_heaps%)+heap_size%(active_heaps%)}")
  133. $ ierror$+=",heaps_top incorrect"
  134.  slotsize%>heaps_top%-&8000 
  135. debug_message("Slotsize at {slotsize%}, heaps_top at {heaps_top%-&8000}")
  136. E ierror$+=",slotsize too big by "+
  137. (slotsize%-(heaps_top%-&8000))
  138.  heap%=0 
  139.  newslist_groups%-1
  140.  group_expanded%?heap%<0 
  141.  group_expanded%?heap%>2 
  142. debug_message("group {group%} has an out of range expansion code ({group_expanded%?heap%})")
  143.  group_expanded%?heap%=2 
  144. heap_from_anchor(
  145. group_anchor_display(heap%))<1 
  146. heap_from_anchor(
  147. group_anchor_display(heap%))>active_heaps% 
  148. debug_message("Display cache pointer for group {heap%} is illegal")
  149. heap_from_anchor(
  150. group_anchor_full(heap%))<1 
  151. heap_from_anchor(
  152. group_anchor_full(heap%))>active_heaps% 
  153. debug_message("Full list cache pointer for group {heap%} is illegal")
  154. heap_from_anchor(
  155. group_anchor_info(heap%))<1 
  156. heap_from_anchor(
  157. group_anchor_info(heap%))>active_heaps% 
  158. debug_message("Info cache pointer for group {heap%} is illegal")
  159.  heap%  
  160. debug_message(ierror$)
  161. fix_integrity
  162. Bheaps_top%=heap_base%(active_heaps%)+heap_size%(active_heaps%)
  163. slotsize%=heaps_top%-&8000
  164.  "Wimp_SlotSize",slotsize%,-1
  165. enumerate_groupanchors
  166. ael("enumerate_groupanchors")
  167.  group%
  168.  group%=0 
  169.  newslist_groups%-1
  170.  group_expanded%?group%=2 
  171. debug_message("Group {group%}...")
  172. debug_message(" Full subject cache @ heap {FNheap_from_anchor(FNgroup_anchor_full(group%))}")
  173. debug_message(" Display cache @ heap {FNheap_from_anchor(FNgroup_anchor_display(group%))}")
  174. debug_message(" Info cache @ heap {FNheap_from_anchor(FNgroup_anchor_info(group%))}")
  175.  group%
  176.