home *** CD-ROM | disk | FTP | other *** search
/ ftp.barnyard.co.uk / 2015.02.ftp.barnyard.co.uk.tar / ftp.barnyard.co.uk / cpm / walnut-creek-CDROM / CPM / CCP / 22PUBLIC.BUG < prev    next >
Internet Message Format  |  2000-06-30  |  2KB

  1. Date: Tuesday, 1 March 1988  21:33-EST
  2. From: Margaret H. Knox
  3. Re:   22PUBLIC bug
  4.  
  5. Many people have by now either replaced their old DRI CCP completely,
  6. or are using one of the PUBLIC patches which declare individual files
  7. public.  Being lazy, I have been using the 22PUBLIC.ASM patch (from
  8. 1981) to make all .COM files on USER 0 accessible from any other
  9. disk/user#.
  10.  
  11. Over the years I have occasionally noticed that "certain" programs
  12. would NOT always run correctly from other user numbers.  In
  13. particular, MODEM7 would not run from any user number other than 0,
  14. although I could set USER to 0, launch MODEM7, exit, set the USER to
  15. whatever I wanted, and re-launch MODEM7 correctly.  Since this only
  16. affected about 3 programs that I use with any frequency, and since it
  17. was only a minor annoyance in the great antipathy of life, I mostly
  18. ignored the problem.
  19.  
  20. It didn't go away!!  (:-}      Late last night I got frustrated
  21. enough to wonder why.
  22.  
  23. The problem is actually rather simple.  22PUBLIC traps "File Not
  24. Found" returns when the CCP attempts to open a file for loading.
  25. It then tries the same user number on disk A:, and then user 0
  26. on disk A:.  If the file is not found after all that you get the
  27. usual "?" error msg.  If the file *IS* found, however, it resets
  28. the user number (so the running program will be in the correct
  29. area) and re-enters the CCP load routine to finish loading the
  30. now-open file.
  31.  
  32. The bug is that, if the file is greater than 16k (one extent)
  33. the BDOS looks for the next extent in the WRONG user area!
  34. The fix is simple -- just save the original user area, and
  35. defer resetting the user area until after the load is completed.
  36. The "patch" is more complicated -- there is not enough room
  37. in the usual CCP patch locations.  I re-assembled CCP (from
  38. an old disassembly) and that gave me enough room to restore
  39. the user number in both the "command/load error" and "success"
  40. routines.
  41.  
  42. Thought someone else might be interested.
  43.