home *** CD-ROM | disk | FTP | other *** search
/ ftp.whtech.com / ftp.whtech.com.tar / ftp.whtech.com / Geneve / mdos / 80column_funnelweb / rept.txt < prev    next >
Text File  |  2006-10-19  |  14KB  |  461 lines

  1.  
  2.  
  3. .LM 8;RM 72;CE 3
  4. FUNNELWEB Vn 4.40 BUGS & PROBLEMS
  5. ---------------------------------
  6. .FI
  7.  
  8.  
  9. (1) Bugs and Mods 
  10. ~~~ ~~~~~~~~~~~~~ 
  11.  
  12. The bug report is being zeroed out at
  13. the time of first issue of Vn 4.40 of
  14. FUNNELWEB, but new bugs are being
  15. created all the while.  That's the
  16. price of progress! Fixes and changes
  17. since that release are listed in
  18. chronological order below.  Minor
  19. changes in associated document files
  20. may well be made without explicit
  21. mention, or other non-functional
  22. changes. 
  23.  
  24. .LM +3;RM -3
  25.  
  26. Bug ..... After use of Myart file View
  27. from DR80, the XB RUN from DR80 engages
  28. XB but then locks.  <Quit> is still
  29. there though.  The cause is not yet
  30. obvious. 
  31.  
  32. System bug ..... Anomalous error
  33. recovery behavior may occur with SD and
  34. the DRs in systems with 80-track Myarc
  35. FDCs.  See FWDOC/DR41 or /DR81 for
  36. details.  
  37.  
  38. May/30/91 ...  First issue of Vn 4.40. 
  39.  
  40. Jul/26/91 ...  Fixes for LOAD's XB user
  41. list program loading, and for ED80
  42. <P>Dir function from SD. FILENT routine
  43. in FW/LOAD now clears the last char in
  44. the window with <fn-3>. ML40 repaired.
  45.  
  46. Oct/30/91 ...  Back to programming with
  47. renewed vision !! Read/Write failure
  48. indicators added for DR file copies.
  49. DSKU notes handling revised and
  50. corrected.  FWDOC files /DR40,1,
  51. /DR80,2, /PSRV updated.  Dual 80/40
  52. Editor, files ED80 & ED81, now windows
  53. correctly in 40 col mode. Cause of
  54. error recovery bug in DR narrowed to
  55. Myarc 80-Tk FDCs.  
  56.  
  57.  
  58. .LM -3;RM +3
  59.  
  60. If you come across a later version of
  61. FUNNELWEB, use it, but it is a good
  62. idea to update ALL files.  Significant
  63. changes are indicated in the update
  64. notices.  Use CF/CG and your SYSCON
  65. file to re-customize the LOAD and FW
  66. files if these have been updated.  
  67.  
  68.  
  69. (2) Programmers' reference 
  70. ~~~ ~~~~~~~~~~~~~~~~~~~~~~ 
  71.  
  72. The FUNNELWEB program has to interact
  73. with a number of external programs
  74. which (to TI's eternal shame) were
  75. never intended to work together, so its
  76. internal structure is an ad hoc
  77. response to many independent pressures.
  78. As the scope of FUNNELWEB grew it
  79. became necessary to define an interface
  80. so that other parts of the program
  81. could call on routines or data in the
  82. main body of the program.  This has
  83. grown somewhat haphazardly, but at this
  84. stage in the history of the 99/4a (and
  85. level of fairware support) it is
  86. unlikely to be reorganized.  Details
  87. which may be relied on by external
  88. programmers are given in the
  89. supplemaentary file FWDOC/PSRV.  A set
  90. of articles "Living with Spiders"
  91. appeared in the HV99 Newsletter and on
  92. some BBSs, which goes into coding
  93. details, and is still relevant. 
  94.  
  95. The FUNNELWEB LOAD program is composed
  96. of 4 parts, the Extended Basic code,
  97. the XB user list data, and 2 pieces of
  98. machine code tucked between the XB code
  99. and the top of memory.  DSRLNK
  100. (TI-Forth form - you handle the errors)
  101. and GPLLNK are in a >FA byte block
  102. immediately above the XB program code.
  103. These are shifted to follow the normal
  104. XB Utilities and the memory pointer
  105. updated, and are available for use by
  106. XB programs loaded from the XB User
  107. List (BLWP at >24F4 and >24F8
  108. respectively) provided CALL INIT or
  109. CALL ILR are not invoked.  This is
  110. followed by code and data used only
  111. while XB is still preserved.  This same
  112. area is used later by UL, ML, FSAVE,
  113. and the ScriptLoad error handler.  When
  114. FW/UTIL1 is prepared the C2 character
  115. set and FW/UTIL1's entry code are
  116. tucked between the entry point (>E006)
  117. and the actual FUNNELWEB code to speed
  118. up loading.  
  119.  
  120. The end of the program is kept fixed at
  121. >FFD7 so the interface block items are
  122. at known addresses.  The >FFD7 limit is
  123. compatible with E/A and XOP 1 which is
  124. not used by FUNNELWEB (but it does make
  125. transient use of the area above >FFD8,
  126. without altering the Load Interrupt
  127. vector at >FFFC).  
  128.  
  129.  
  130. (3) GPLLNKs with FUNNELWEB 
  131. ~~~ ~~~~~~~~~~~~~~~~~~~~~~ 
  132.  
  133. From Vn 4.40 onwards GROM address
  134. setting from within the program and
  135. DiskReview calls a reference block
  136. routine which uses GPL workspace R13 as
  137. base value (see FWDOC/PSRV).  Whenever
  138. the central menu screen is displayed
  139. the following conditions have been
  140. established.  
  141.  
  142. .LM +3;RM -3
  143. (a) The GROM address is left pointing
  144. to an XML instruction in cartridge
  145. GROM, else in console GROM 0, and this
  146. address is also saved in the program. 
  147.  
  148. (b) The GPL stack is dropped to just
  149. one entry which is this value copied to
  150. >8380. 
  151.  
  152. (c) The table address pointed to by the
  153. XML instruction is loaded with the
  154. FUNNELWEB re-entry address.  For
  155. maximal compatibility with existing
  156. software the XB return is at >2000 and
  157. the E/A return is at >2002.  All others
  158. use PAD (>8300).
  159.  
  160. .LM -3;RM +3
  161. With these preparations it was possible
  162. to write a GPLLNK to fit invisibly in
  163. the E/A utilities without altering the
  164. FFALM pointer.  In any event the E/A
  165. GPLLNK cannot be used because it
  166. branches to E/A module GROM code.
  167. Programs run other than from E/A or XB
  168. under FUNNELWEB may give trouble if not
  169. written to preserve the contents of
  170. location >8300. 
  171.  
  172.  
  173. (4) Returns 
  174. ~~~ ~~~~~~~ 
  175.  
  176. The easiest returns to FUNNELWEB are
  177. when FUNNELWEB is still all there
  178. unmolested, from >EBC8 to >FFD7.
  179. FUNNELWEB always hands over with R11
  180. loaded with the return address.  Any of
  181. the standard returns to GPL will return
  182. to FUNNELWEB provided that the XML
  183. table entry is preserved for B at >70
  184. returns.  
  185.  
  186. If FUNNELWEB is overwritten the
  187. simplest return is to the Title Screen.
  188. If your program doesn't make extensive
  189. use of VDP memory, it may be possible
  190. to stash FUNNELWEB (from >E9B0 to cover
  191. UL or else from >EBC8 to >FFD7) there
  192. below the disk DSR buffers and to
  193. restore it to CPU RAM after an
  194. irrevocable decision to exit has been
  195. made, and then a normal exit as if to
  196. GPL may be used.
  197.  
  198. If memory usage is too complete to
  199. allow this, FUNNELWEB may be reloaded
  200. from disk as the program file FW or
  201. UTIL1.  Only a very simple loader is
  202. needed as there is only a single file
  203. and the memory location and start
  204. address, (>E006) and the length
  205. (through >FFD7) are prior knowledge.
  206. Strictly, only Atrax Robustus can get
  207. away with not deriving the start
  208. address and length from the file
  209. header, but given the present level of
  210. fairware support and future of the
  211. 99/4a system, it is unlikely there will
  212. ever be enough new developments to
  213. change this.  It is recommended that
  214. the loader first try to load the file
  215. under name FW and if this is not found
  216. then to try it as UTIL1 before taking
  217. error action.  If the application
  218. program is such that disks may have
  219. been swapped around, prompts should be
  220. issued for the primary and secondary
  221. disk numbers or the original drive or
  222. pathname assumed, as appropriate.  The
  223. flag to turn on boot disk tracking in
  224. FW is at BTFLAG EQU >FF1A.  A null word
  225. here disables the tracking, in which
  226. case primary and secondary system drive
  227. numbers in ASCII form must be provided
  228. in the bytes at RDISK EQU >FF18 and
  229. >FF19.  Rewrite the drive numbers after
  230. loading but before handing over if
  231. these have been changed.  It is always
  232. necessary to suppress boot disk
  233. tracking when split T-W and E/A access
  234. is needed.  
  235.  
  236. The flag for a hard pathname is at
  237. HDFLAG EQU >FF02 and the pathname is at
  238. the address pointed to by the value at
  239. >FF58.  The length byte includes the
  240. standard 2-character system filename
  241. length as well.  This flag should be
  242. checked first and used by program
  243. reloaders before checking the other
  244. paths.  The DM-1000 supplied in earlier
  245. issues followed this prescription.  
  246.  
  247. Programs intended to work only with
  248. FUNNELWEB may re-enter it at the
  249. Central Menu Screen by LWPI of the FWB
  250. main workspace at FWREGS EQU >FF7C,
  251. SETO of R13, and CLR or SETO of R4,
  252. followed by a branch to the address
  253. contained in location CMSRET EQU >FF5C.
  254. Do not alter R8 and R9 of this
  255. workspace.  A program (Opt 1-3) can
  256. tell that it was loaded from FUNNELWEB
  257. by comparing R11 at entry with the word
  258. at LDR11 EQU >FF9C.  
  259.  
  260.  
  261. (5) Filename transfers 
  262. ~~~ ~~~~~~~~~~~~~~~~~~ 
  263.  
  264. FUNNELWEB has a standard way of
  265. transferring the DV/80 workfile name
  266. from one utility to another.  The file
  267. name is stored on final exit from a
  268. component program at MLBOX EQU >A000
  269. without any length byte, and padded
  270. with spaces out to >A050.  This is the
  271. "mailbox".  A file name so stored will
  272. survive OLD or RUN of an XB program or
  273. passage through the Title Screen.  The
  274. utility entry routines inspect this
  275. location for the 2 ASCII characters
  276. "DS" or "RD" or "WD" or "HD" and if
  277. found the block as far as the first
  278. space is written to the appropriate
  279. buffer in the utility program, and the
  280. rest of the block is filled with
  281. blanks.  
  282.  
  283. If utility programs are not to destroy
  284. the resident file-name then they should
  285. not overwrite this area, or else should
  286. restore it before exit, or load the
  287. file name to be passed back.  Test with
  288. Formatter and Editor to see if this has
  289. been done properly.  Modification of
  290. existing programs not available as
  291. source code may require a little
  292. ingenuity, and is not always possible. 
  293.  
  294.  
  295. (6) Standard Utility Loading 
  296. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
  297.  
  298. In contrast to versions of FUNNELWEB
  299. earlier than 4.30, the loads of the
  300. Editor, Assembler, and Formatter files
  301. are now just normal program loads,
  302. Option 1 for the Editors and Option 2
  303. for Formatter and Assembler.  This
  304. means that other files may be
  305. substituted for these if desired, as
  306. long as the same leading name is used,
  307. eg FO for Formatter.  Test and/or
  308. correct for proper returns (see (4))
  309. using one of the configurable menu
  310. slots first.  
  311.  
  312.  
  313. (7) Problems 
  314. ~~~ ~~~~~~~~ 
  315.  
  316. Various problems have been observed by
  317. users of FUNNELWEB.  Many of these are
  318. intrinsic to the programs being loaded,
  319. and these we can't do anything about.
  320. If you have commercial programs which
  321. you would like to use with FUNNELWEB
  322. but can't for one reason or another,
  323. particularly because of protection
  324. schemes, you should contact the sellers
  325. or originators of these programs to
  326. make your problem known.  Good luck
  327. Charlie Brown! Other problems are
  328. associated directly with use of
  329. FUNNELWEB. 
  330.  
  331. .LM +3;RM -3
  332. (a)  Loading difficulties
  333.  
  334. Lockup during file loads occurs because
  335. some part of FUNNELWEB has been
  336. overwritten.  The code for program file
  337. loads is located close to the top of
  338. high memory and will be destroyed if
  339. overwritten by a file that is not the
  340. last one to be loaded in normal E/A
  341. sequence with the last byte incremented
  342. for each successor file.  Altering the
  343. file sequence to put the overwriting
  344. file last in a multiple load will
  345. usually solve the problem.  Use
  346. DiskReview to correct the load flag in
  347. the first word of the files being
  348. interchanged (>0000 for the last file,
  349. >FFFF for all others) and DiskReview or
  350. other DM program to interchange file
  351. names.  File lengths of >2000 in 33
  352. sector files, such as produced
  353. incorrectly by E/A SAVE, may need to be
  354. corrected to >1FFA if the changed order
  355. would result in overwriting of
  356. previously loaded code.  
  357.  
  358. Load/Run of object files is handled by
  359. the Loader in the E/A utilities.
  360. Autostarting of files is by a direct
  361. branch from the Loader to the program
  362. code, so that a autostarting object
  363. file may overwrite FUNNELWEB.  Files
  364. that are too long may refuse to load.
  365. Unsuitable absolute file addresses may
  366. destroy the code for DEF table entry. 
  367.  
  368.  
  369. (b) Running difficulties 
  370.  
  371. The program file loader gives a fair
  372. approximation to GPL or E/A module
  373. environment.  If problems are observed
  374. they are usually associated with key
  375. unit choice and key response in the
  376. program loaded, particularly with
  377. programs that set a key-unit of 0
  378. instead of choosing the one they really
  379. want.  The cartridge loaders now reset
  380. the GPL stack pointer at >8373 to >7E
  381. which seems to help.  
  382.  
  383. Programs that sense which module they
  384. are running with and adjust their
  385. action accordingly can cause problems.
  386. Since the point of FUNNELWEB is to make
  387. all sorts of programs work with modules
  388. they weren't intended for or even no
  389. module at all, it has already taken the
  390. necessary actions and must not be
  391. second-guessed by programs it has
  392. loaded.  The only solution is to modify
  393. the programs or else not use FUNNELWEB.
  394. Running from the E/A module gives the
  395. easiest way to switch back and forth
  396. between FUNNELWEB and a standard
  397. environment.  
  398.  
  399. Some programs in E/A program format
  400. contain code to unload the standard
  401. utilities from the E/A GROM because the
  402. E/A module does not do this for Run
  403. Program File.  The c99 memory image
  404. files prepared with the original
  405. unmodified C99PFI use this method to
  406. force the utility load.  Running or
  407. return from such programs may not be
  408. graceful if FUNNELWEB was loaded from
  409. E/A.  c99 is smart enough not to try
  410. getting code from non-E/A GROMs, but
  411. other programs may need revision.
  412.  
  413. FUNNELWEB has also adjusted the E/A XML
  414. object file loader path for its own
  415. purposes.  If an assembly program needs
  416. to load an object file it should use a
  417. direct BLWP at LOADER to the E/A
  418. routine.  Error returns may need
  419. special attention.  
  420.  
  421.  
  422. (c) Exit difficulties 
  423.  
  424. Read (4) above on returns.  Opt. 2
  425. loads will be necessary for program
  426. files that overwrite the E/A utility
  427. area in low-mem but still use a GPL
  428. return via the contents of R11 as would
  429. be acceptable for a Opt. 2 (or E/A 5)
  430. program file load. 
  431.  
  432. Some programs which do not appear from
  433. their load size to overwrite FUNNELWEB
  434. may in fact corrupt it while running.
  435. Some particular cases of pre-existing
  436. programs may be helped with minor
  437. changes, as a return to the title
  438. screen is usually preferable to a
  439. lockup. 
  440.  
  441. An example of this kind is the
  442. Dragonslayer Spellchecker.  An early
  443. version inspected of this commercial
  444. program runs normally under FUNNELWEB
  445. with load parameter 2, but crashes the
  446. machine on exit.  This is improved by
  447. changing the words 0460 0070 to 0420
  448. 0000 to return to the title screen.
  449. Use HEX string search in DiskReview
  450. to find this exit. 
  451.  
  452. Another example needing modifications
  453. to exit code is DSKU which leaves
  454. interrupts on, the interrupt hook
  455. loaded and pointing to an address
  456. overwritten by the incoming FW.  
  457.  
  458. .LM -3;RM +3
  459.  
  460. ÇåÇ¡ïÉòƒ╒╒╒╒╒╒╒╒╒╒╒╒Çåáááááááááááááááááááááá
  461.