home *** CD-ROM | disk | FTP | other *** search
/ CP/M / CPM_CDROM.iso / cpm / news / cpmnet81.may < prev    next >
Text File  |  1994-07-13  |  23KB  |  531 lines

  1.  
  2. >>>>>>>>>>>>>>>>>>>>> CP/M-Net News <<<<<<<<<<<<<<<<<<<<<<<<
  3.  
  4. ============================================================
  5. Number 4        May, 1981       Volume 1, Issue 5
  6. ============================================================
  7.  
  8.               In This Issue
  9.               =============
  10.  
  11.            RCPM Midwest Update
  12.              by: Ben Bronson
  13.  
  14.       Computer Widows: To the wifes, girlfriends, etc.
  15.           by: Jane Smith, Wife of "SYSOP"
  16.  
  17.     MP/M: A User's Comments and Implementation Methods
  18.              by: Kelly Smith
  19.  
  20.         CP/M-Net "Tip-of-the-Month"
  21.   Seven Byte Program to Discourage TRACE with DDT or SID
  22.          by: Kelly Smith, CP/M-Net "SYSOP"
  23.  
  24.  
  25. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  26.  
  27.             RCPM Midwest Update
  28.             ===================
  29.               by Ben Bronson
  30.  
  31.  The  big news in these parts as far as programs go  is  (1)
  32. MicroTelnet (MTN21.OBJ, DOC, MSG, & MTNMSGS.OVR), a splendid
  33. new terminal program by one of your California people, Frank
  34. Wancho (Maybe not a Californian,  come to think of it);  (2)
  35. FINDBD52,  Ron Fowler's long-awaited "universal" FINDBAD [he
  36. has  used the tricks he invented for DU-V75 to make it    work
  37. for  just  about  any  controller  without  bothering  about
  38. assembly  options];  and  (3) RUN80,  which came  here    from
  39. Dick's system and you know about already. Also an assortment
  40. of smaller programs.
  41.  
  42. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  43.  
  44.       Computer Widows: To the wifes, girlfriends, etc.
  45.       ================================================
  46.         by Jane Smith, Wife of "SYSOP"
  47.  
  48.  When Kelly asked me if I would be interested in writing  an
  49. article  for his "newspaper",  my first response was  "NO!".
  50. First  of  all,  I have no training in article    writing  and
  51. secondly  being a housewife,  hanging around with the  kids,
  52. dog,  cats,  etc.,  all  day  doesn't tend to increase    ones
  53. vocabulary.  Well,  I take that back...I've learned lots  of
  54. four letter words,  mostly in self-defense!  But then, after
  55. thinking it over,  I thought "What the hell" (there's one of
  56. those four letter words!).
  57.  
  58.  I  think  this  "home computer" thing started  when  Pertec
  59. (where Kelly works) loaned us a TRS-80 to play with at home.
  60.  
  61. [Editor Comment:  they were having me evaluate it, to see if
  62. we could make one better and cheaper!].
  63.  
  64.  We  had  lots of fun playing games on it and even  kind  of
  65. missed it when it went back to Pertec. So Kelly put together
  66. a little system for us at home...It has ballooned from there
  67. to  the  point    of  adding a room onto    our  house  for  the
  68. computers, complete with it's own air conditioning unit (God
  69. forbid, it should get too hot!).
  70.  
  71.  I  probably wouldn't be too far off to say that 85% of  the
  72. time that Kelly is home,  he is with the computers,  another
  73. 5%  is spent thinking about it (you can always tell by    that
  74. blank  stare  into space),  probably 7% devoted  to  eating,
  75. sleeping,  etc.,  and maybe I get 3%.  I get the  impression
  76. that  the  computer  doesn't like me...it usually  plans  on
  77. breaking about the time Kelly and I are going to spend    some
  78. time together.
  79.  
  80.  An  example of it's dislike for me was the time Kelly    went
  81. on  a  business trip for two weeks and left me in charge  of
  82. running the computer.  As soon as it figured out that  Kelly
  83. had gone (and had not taken it along), it decided to throw a
  84. fit  and not talk to anyone when they called!  So  everytime
  85. the  phone would ring,    I had to run in "it's room" and  re-
  86. boot  the system...a good friend of Kelly's kindly came over
  87. to have a look at it.  It ran fine for him all day,  but  as
  88. soon  as  he was in his car it said "DISK BOOT  ERROR".  The
  89. last thing I did before going out the door to pick up Kelly,
  90. was to re-boot the system.  The minute Kelly stepped in  the
  91. door,  it straightend right up and never to my knowledge did
  92. it do that again.  I beleive its jealous and that was one of
  93. its  little plots to make Kelly think that I'm the one    with
  94. the loose screw...
  95.  
  96.  I  also  find    it difficult to join in  conversations    when
  97. Kelly's friends come to visit. They sit around and talk in a
  98. foreign language!  I've tried to join in once or twice,  and
  99. usually  come up with some intelligent phrase (just  to  get
  100. your  foot  in the door) like "Boy,  something really  funny
  101. happened on the way to the grocery store!"...at which  point
  102. (if they even heard you), you get a blank stare as if you're
  103. the  one  talking in a foreign language!  Then without    even
  104. asking    "what  was  funny?" the conversation  goes  back  to
  105. "SYSGEN" this, or "PIP" that, or "star-dot-doc".
  106.  
  107.  Do you remember when we were teenagers and we'd invent some
  108. language such as "pig-latin" to talk to our friends,  so our
  109. parents wouldn't understand what we were saying? Sometimes I
  110. think that's what these guys are doing, and they're planning
  111. a  "Stepford"  community...what they're really  spending  so
  112. much time doing is making "Stepford Wives"! I, for one, have
  113. warned my friends to keep a close eye one me for any changes
  114. along those lines...
  115.  
  116.  I'm  also watching for the program "star-dot-sex".  That'll
  117. mean it's finally programmed for sex, and there goes my 3%!
  118.  
  119.  I'm  sure  that this isn't what Kelly had in mind  when  he
  120. asked  for  an    article,   but    maybe  some  of  the  wives,
  121. girlfriends, etc., can identify with this...
  122.  
  123.  To  sum up,  I must say that I am glad that you're at    home
  124. Kelly...even if you are with the computer.
  125.  
  126. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  127.  
  128.     MP/M: A User's Comments and Implementation Methods
  129.     ==================================================
  130.           by Kelly Smith, CP/M-Net "SYSOP"
  131.  
  132.  Up front, let me recommend that MP/M is NOT for someone who
  133. doesn't  know the difference between a 'NOP' and an  'XTHL'!
  134. All  those  that  fail    this  test,  please  read  the    next
  135. article...this    is definetely not for you.  MP/M is NOT  for
  136. someone that has NOT PURCHASED CP/M 2.2, and MP/M is NOT for
  137. someone  who has purchased CP/M 2.2 but does NOT have a copy
  138. of  the ENTIRE BIOS (i.e.,  that means ANYONE who has  taken
  139. the  "easy way out" by buying a ready to run CP/M  2.2  from
  140. Lifeboat Associates).  Also,  I suspect that MP/M is NOT for
  141. someone  who has ALREADY purchased a microprocessor  system!
  142. "What?" you ask...well since I have your attention this far,
  143. read on.
  144.  
  145.  MP/M    is  a  powerful  multi-tasking/multi-user  operating
  146. system that in the hands of the skillful user, a system-wise
  147. ('wise' meaning darned smart!) implementor,  and the  PROPER
  148. hardware environment, can be a very useful software tool.
  149.  
  150.  As  always,  Digital  Research provides less than  adequate
  151. documentation  for  explaining "how to get it  running"  for
  152. anyone    with  less  than  a  Master's  Degree  in   Computer
  153. Sciences...it can be done,  but you better really "dig  in",
  154. learn to "read between the lines", and CAREFULLY EXAMINE the
  155. program  examples given (the MP/M 1.0 release  documentation
  156. had  a few "bugs" that if used,  would not  work!).  Digital
  157. Research  has done an excellent job on their PL/I-80 and BT-
  158. 80,  manuals  however...but I always wondered why they    kept
  159. putting  those    PL/M examples in their CP/M manuals  (as  if
  160. everyone  programmed in PL/M and had an  Intel    MDS-800...oh
  161. well).
  162.  
  163.  O.K.,    so you ARE an expert,  and (let's hope) you have NOT
  164. purchased  a  microcomputer  system  (Oh  yeah,   forgot  to
  165. mention: it MUST BE a 8080/Z80 based system!). Let's examine
  166. my  implementation of MP/M on a typical "semi-roll-your-own"
  167. microcomputer...in  this  case,   an  IMSAI  8080  with   56
  168. kilobytes  of  RAM,  two floppies,  one "local user" with  a
  169. terminal,  and one "remote user" (via an auto-answer modem).
  170.  
  171.  The  system "boot and signon" will best illustrate WHY  you
  172. should NOT purchase a microcomputer system...so here is what
  173. USER 1 (remote) will see at signon:
  174.  
  175.  
  176.     MP/M-Net (tm), System #1 <--- (autoload under CP/M 2.2)
  177. >> Multi-user Software Access <<
  178.         [USER 1] <--- (your user number)
  179.  
  180. Enter USER 0<cr>, if you require
  181. access to other MP/M facilities.
  182. ===============================
  183.  MP/M is a registered trademark
  184.            of         <--- (giving credit!)
  185.     Digital Research
  186. ===============================
  187. Booting MP/M Version 1.1 now.... <--- (a slight pause)
  188. MP/M 1.1 Loader <--- (MP/M "boot loader", MPMLDR.COM)
  189. ===============
  190. Number of consoles =  2 <--- (indicates 2 user configuration)
  191. Breakpoint RST #   =  5 <--- (SID or DDT "break-point" vector)
  192. Top of memory       =  DFFFH <--- (56 Kilo-bytes of memory)
  193. Memory Segment Table:
  194. SYSTEM    DAT  DF00H  0100H <--- (system configuration data)
  195. CONSOLE DAT  DD00H  0200H <--- (system user console data)
  196. USERSYS STK  DC00H  0100H <--- (system user stack area)
  197. XIOS    SPR  D800H  0400H <--- (extended I/O system process's)
  198. BDOS    SPR  C400H  1400H <--- (basic disk operating system)
  199. XDOS    SPR  A500H  1F00H <--- (extended disk operating system)
  200. ABORT    RSP  A400H  0100H <--- (resident system process, abort)
  201. MPMSTAT RSP  9700H  0D00H <--- (resident system process, MP/M status)
  202. Sched    RSP  9200H  0500H <--- (resident system process, scheduler)
  203. -------------------------
  204. Memseg    Usr  8000H  1200H <--- (memory for user 0,  4 Kilo-bytes)
  205. Memseg    Usr  0000H  8000H <--- (memory for user 1, 32 Kilo-bytes)
  206.  
  207. MP/M 1.1 <--- (MP/M "sign-on")
  208. 1A> <--- (MP/M prompt for user 1)
  209.  
  210.  Now examine the signon carefully...EGADS! A 56k system, and
  211. only 36 kilobytes left BETWEEN USER 0 and USER 1...and whats
  212. worse,    is  that  resident  system process's  for  TIME  and
  213. SPOOLER  can't be included without giving up some meaningful
  214. amount of memory for user application programs!  ARGH...here
  215. I sit with $8,000 worth of hardware and I can't run diddely!
  216.  
  217.  So get the picture?  Now it's the old "whip-out-the-wallot-
  218. time-again-folks" syndrome..."let's see, just how much bank-
  219. switched  memory can I get for...oh heck, got'ta pay Ma'Bell
  220. first,    for  that  three hour modem transfer  from  Bruce!".
  221. Well,  as I said...DO NOT purchase the computer FIRST!  Make
  222. some strong considerations as to WHY you think you need MP/M
  223. then  start configuring a system (on paper) with  what  your
  224. requirements will be and,  of course the final problem: will
  225. my  wife  let me buy it?  (!).  I would suggest that  for  a
  226. meaningful environment for MP/M to "live in", you want about
  227. 128 Kilobytes of bank-switched memory...that's for just  two
  228. "hackers"  on the system...and maybe,  JUST MAYBE,  allowing
  229. one  of you to be zapping Klingons while the other is  going
  230. "Oooh Aaah" with Wordstar. But then, things get worse:
  231.  
  232.  So you've got memory "up-the-kazoo" huh?  Great, so we just
  233. rip  along (both users hacking away),  and you got  the  TOD
  234. (time  of  day) set and you "schedule" an assembly for  your
  235. wiz-bang newest program...but wait,  that means a  real-time
  236. clock...ARGH again!  Well let's see,  maybe if I turn in ALL
  237. the Coke bottles, and...
  238.  
  239.  Now  we  have a real-time clock board,  and it  includes  a
  240. "tick-toc"  interrupt that we had to have anyway for "round-
  241. robin" polling of all the darned hardware...couldn't  afford
  242. to go fully interrupt driven (in fact I scrounged a MITS 88-
  243. VI/RTC  board from a friend!).  Oh yah...change the XIOS  to
  244. disable  interrupts  during floppy disk DMA (we got  one  of
  245. those (GAG) Tarbell Double Density disk controllers).
  246.  
  247.  So  back to scheduling that assembly...Hmmm,  we seem to be
  248. running  a  little  late...let's look  at  the  system  with
  249. MPMSTAT...no,  the  suckers on the queue...must be coming up
  250. soon.  Well  let's  see  what time it is  according  to  the
  251. system...(we type in TOD<cr>).  WHAT THE HECK???  The darned
  252. clock is late! NOW WHAT (mumble, mumble)?
  253.  
  254.  Well  SON-OF-A...Oops,  won't go to heaven if we keep  this
  255. up!  Turns out that to run the disk,  we had to turn of  the
  256. interrupts,  and since we did that, the clock lost time, and
  257. we can't run the schedular properly...now comes ARGH #3.
  258.  
  259.  Where  do I find a disk controller that doesn't DMA or  hog
  260. the buss,  or...worst yet, if I find one, HOW will I pay for
  261. it!?!  Let's see,  could I sell my wife to the mo'cycle gang
  262. down the street?
  263.  
  264.  O.k.,  got a heck of a deal on her for $3,500...just enough
  265. to pay for a "buffered" (read "grab data at our leisuer, not
  266. at  the disk data rate" here) double density disk controller
  267. from Pertec (An OBVIOUS plug: Model FD3812 or single density
  268. FD3712)...but, OH CRAP (and diddely-squat!)!  Now I have  to
  269. rewrite my MPMLDR and XIOS...(weep, ARGH #4).
  270.  
  271.  Now  I've developed the MPMLDR and XIOS (and of course I've
  272. also developed this annoying 'tick' and people wonder why  I
  273. keep  jamming  the fork into my forehead when  I  eat)...but
  274. this  is part of the FUN OF IT ALL...Right?  So now we  fire
  275. the  turkey computer up again...WOW!  FAR OUT!  Time of  day
  276. clicking right along,  schedular bashing programs,  on time,
  277. keyboard  getting overrun...WHAT?  KEYBOARD  OVERRUN???  Now
  278. WHAT????
  279.  
  280.  We examine the system with MPMSTAT again...Hmmm,  that jerk
  281. on  USER  1 is still playing Startrek.  Well what  could  be
  282. going  on?  Let's think about Startrek for a  minute...let's
  283. see,  setting up arrays, figuring navigation, just plain old
  284. compute bound stuff...Ooops!  COMPUTE BOUND!  That's IT! One
  285. piddely  little 8080 CPU (beating it's heart out) trying  to
  286. handle  some  heavy-weight  computations while  I  sit  here
  287. slogging  it out with this text editor...ARGH #5.  Well this
  288. ones  a "tuffy",  'cause now I have to go totally  interrupt
  289. driven...and the story goes on, and on and...
  290.  
  291.  So  that  story summarizes the agony of the  potential  for
  292. disaster if you DON'T PLAN AHEAD.  So what did we learn from
  293. all this?  Well I figure that we spent about $7,000, my wife
  294. is living with a bunch of Harley Freaks, and I got canned at
  295. work  because of the obscene things I was doing with a    fork
  296. in  the  company cafeteria.  I could have had  two  SEPERATE
  297. computers  and    REALLY IMPRESSED the guys  at  the  computer
  298. club!
  299.  
  300.  Well  in any case,  let's see what we can do with MP/M,  so
  301. first we'll see whats going on in the system with MPMSTAT:
  302.  
  303. 1A>mpmstat<cr> <--- ( we type this in...)
  304.  
  305.  
  306. ***** MP/M 1.1 Status Display ****** <--- (MP/M responds)
  307.  
  308. Top of memory = DFFFH <--- (yah, 56k; it was just a story!)
  309. Number of consoles = 02
  310. Debugger breakpoint restart # = 05
  311. Stack is swapped on BDOS calls
  312.  
  313. Ready Process(es):
  314.   MPMSTAT  Idle
  315. Process(es) DQing:
  316.  [ABORT   ] ABORT
  317.  [Sched   ] Sched
  318.  [CliQ      ] cli
  319.  [ATTACH  ] ATTACH
  320. Process(es) NQing:
  321. Delayed Process(es):
  322. Polling Process(es):
  323.   Tmp0    
  324. Process(es) Flag Waiting:
  325.   01 -    Tick    
  326.   02 -    Clock    
  327. Flag(s) Set:
  328.   03
  329. Queue(s):
  330.   ABORT    MPMSTAT  Sched    CliQ     ATTACH   MXParse    MXList    
  331.   MXDisk
  332. Process(es) Attached to Consoles:
  333.   [0] - Tmp0    
  334.   [1] - MPMSTAT
  335. Process(es) Waiting for Consoles:
  336.   [1] -  Tmp1    
  337. Memory Allocation:
  338.   Base = 0000H    Size = 8000H  * Free * <--- FREE Hell! 56k cost
  339.   Base = 8000H    Size = 1200H  * Free *        me almost $1,600!!!
  340. 1A> <--- (MP/M waiting to do your bidding)
  341.  
  342.  "Well,  what does it all mean?" you ask. So here is a brief
  343. explanation:
  344.  
  345. Ready  Process(es) - process(es) that are ready to  execute,
  346.              and  waiting  for the system  (CPU)  to
  347.              relinquish time.  In this case  MPMSTAT
  348.              has    the    highest   priority     and
  349.              momentarily has control.
  350.  
  351. Process(es) DQing  - processes    that  are   waiting   for
  352.              'messages' from the queues that are  in
  353.              brackets, and displayed from highest to
  354.              lowest system priority.
  355.  
  356. Process(es) NQing -  processes writing to queues,  but    none
  357.              at this time in progress.
  358.  
  359. Delayed  Process(es)  - processes  waiting for    a  specified
  360.              amount  of  clock 'ticks' on the  basic
  361.              system time unit,    but none waiting  at
  362.              this time.
  363.  
  364. Polling  Process(es) - Terminal Message Process USER  0,  is
  365.              polling the console device.
  366.  
  367. Process(es)  Flag  Waiting  - processes that set  and  alter
  368.             "syncronization flags" for task building.
  369.  
  370. Flag(s) Set -        the flag indicating that the "one minute
  371.                     interval" is set.
  372.  
  373. Queue(s)  -         all the present queues on    the  system;
  374.              the  queues in upper case    letters  may
  375.              receive  messages from the Command Line
  376.              interpreter (e.g., ABORT followed by  a
  377.              filename).
  378.  
  379. Process(es)  Attached to Consoles - processes 'attached'  to
  380.              the console,  listed by console  number
  381.              (user)  and  process name...USER 0  has
  382.              gone to sleep.
  383.  
  384. Process(es) Waiting for Consoles - Terminal Mesage Processor
  385.              USER 1 is waiting for console  1,    from
  386.              which it was 'detached'.
  387.  
  388. Memory Allocation -  unallocated user memory segments;    will
  389.              indicate  which  programs    are  activly
  390.              executing    and  to  which    user  it  is
  391.              assigned.     Currently  non-active,  but
  392.              then what can you do in 38k anyway with
  393.              two users?
  394.  
  395.  If you care to set the "time of day", then enter the month,
  396. day, year, hour, minute, and second, as follows:
  397.  
  398. 1A>TOD 10/04/81 07:35:00<cr> <--- (you enter this)
  399. Strike key to set time<cr> <--- (MP/M responds, you do <cr>)
  400.  
  401. Sat 10/04/81 07:35:00        <--- (the current "time of day")
  402.  
  403.  Now  you  may want to "schedule" a task to be  executed  at
  404. some later time by MP/M.  For example, schedule the "time of
  405. day"  to  be  displayed  exactly two  minutes  from  now  by
  406. entering the following scheduler command:
  407.  
  408. 1A>SCHED 10/04/81 07:37:00 TOD<cr>
  409.  
  410.  Two minutes "tick" by...
  411.  
  412. 1A>Sun 10/04/81 07:37:01    <--- ("time of day" is executed)
  413.  
  414.  The  SCHEDuler  works    with all file  and  resident  system
  415. process's,  and  allows the user to "stack" a  multitude  of
  416. tasks on the system for later (and unattended) execution.
  417.  
  418.  
  419.  Keeping  in mind that you are USER 1,    you may display  the
  420. directory for the diskette in drive A as follows:
  421.  
  422.  
  423. 1A>dir<cr>        <--- (you type DIR, carriage return)
  424.  
  425. Directory for User  1:
  426. A: MESSAGE  X12 : KILLED       : MESSAGE  X08 : MESSAGE  X06
  427. A: MESSAGE  X02 : MESSAGE  X04 : MESSAGE  X00 : CBBS     COM
  428. A: WELCOME    : SCANHELP     : PASSWORD     : LOG    
  429. A: MESSAGE  X10 : HELP           : FIRSTIME     : ENTRHELP
  430. A: ENTINTRO    : BULLETIN     : NEXT          : MESSAGE  X20
  431. A: NOT-FOR  YOU : USER       ASM : DUPUSR   ASM : FILE-XT2 ASM
  432. A: SYSTEM'S DOC : XMODEM   COM : MESSAGE  X14 : MESSAGE  X16
  433. A: MESSAGE  X18 : SUMMARY
  434.  
  435.  Now  you  may    wish to see what's "on file" in  other  user
  436. areas.    For example,  all the MP/M "system" files are in the
  437. USER 0 area of the diskette in drive A:
  438.  
  439. 1A>user 0<cr>         <--- (you type USER 0, carriage return)
  440. User Number = 0
  441.  
  442. 0A>dir<cr>        <--- (...and DIR, carriage return again)
  443.  
  444. Directory for User  0:
  445. A: MPM        SYS : LDRBIOS  ASM : ODOS      SPR : BDOS     SPR
  446. A: BNKBDOS  SPR : XIOS       ASM : ABORT      RSP : SPOOL     RSP
  447. A: MPMSTAT  RSP : SCHED    RSP : CONSOLE  PRL : DIR     PRL
  448. A: DSKRESET PRL : ERA       PRL : ERAQ      PRL : MPMSTAT  PRL
  449. A: PRLCOM   PRL : REN       PRL : SUBMIT   PRL : TOD     PRL
  450. A: TYPE     PRL : USER       PRL : SPOOL      PRL : STOPSPLR PRL
  451. A: SCHED    PRL : ABORT    PRL : ED      PRL : PIP     PRL
  452. A: STAT     PRL : RDT       PRL : ASM      PRL : GENMOD     COM
  453. A: GENHEX   COM : LOAD       COM : GENSYS   COM : SUBMIT     COM
  454. A: XDOS     SPR : MAC       COM : MPMLDR   COM : SYSTEM     DAT
  455. A: XIOS     SPR : DISKDEF  LIB : ASMPRL   SUB : ASMSPR     SUB
  456. A: MACPRL   SUB : MACSPR   SUB
  457. 0A>
  458.  
  459.  Now,  stop and consider this: ALL those "built in" commands
  460. that  you  used in CP/M 1.4 and 2.2 are now  DISK  RESIDENT.
  461. That means they take up ROOM on your diskette!    And precious
  462. little    room there is,    'cause the resident system processes
  463. also  have to be on the disk,  and in addition it  would  be
  464. nice  to  have    some applications programs to run  when  two
  465. users are on the same diskette...I sure hope that was double
  466. density  that we bought for the system...a standard  8    inch
  467. floppy can just about hack it with two users.
  468.  
  469.  In  conclusion,  I  would NOT suggest MP/M for the  average
  470. "hacker"...the  cost-versus-performance  on  a  low   budget
  471. system    is  something  of a disappointment if  you  are  not
  472. prepared to empty your checking account (or sell your wife!)
  473. to  add  the hardware that is essential to make MP/M  really
  474. "shine".  Your  hardware/software dollars would probably  be
  475. better    spent on a second system,  as the  "work-horse"  for
  476. printing  and  number crunching while you edit and  assemble
  477. programs on the first.    In any case, it was a fun experience
  478. and I did learn alot about system planning/design, interrupt
  479. driven software environments,  and just how far you can push
  480. one 8080 CPU!  I hope that my experience is of some help  to
  481. you......now where's that CP/Net manual?
  482.  
  483. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  484.  
  485.          CP/M-Net "Tip-of-the-Month"
  486.          ===========================
  487.  
  488.   Seven Byte Program to Discourage TRACE with DDT or SID
  489.   ======================================================
  490.           by Kelly Smith, CP/M-Net "SYSOP"
  491.  
  492.  Here's a simple routine to add to any program to discourage
  493. anyone    from tracing (and revealing) your program's internal
  494. operation. In it's simplist form:
  495.  
  496. check$ddt$or$sid:   ; check if program is being looked at
  497. ;
  498.      lda  6        ; get content of address 6
  499.      ora  a        ; set flags
  500.      jz   banzai    ; use what ever means you think fit to
  501.             ; clobber this guy...
  502. ;
  503.      ...        ; continue normal execution of program
  504.  
  505.  This  short  routine works as follows:  Address  6  is  the
  506. (normally)  least  significant    byte of the  address  to  be
  507. called    for any operations of the CP/M BDOS (the CALL is  at
  508. address  5),  and  as  such it's value is  06  Hex.  Digital
  509. Research's  DDT and SID debugger programs,  when present  in
  510. the system,  always leave a CALLing address on an EVEN    page
  511. boundry  in memory at address 6...this means that address  6
  512. will  have  a 00 Hex byte for the least significant byte  of
  513. the  address...so this routine simply checks to see  if  the
  514. address  is 0!    Now if it is,  you can BANZAI the  continued
  515. operation  of the TRACE by...hmmm,  erase the disk directory
  516. (?),  or  erase  ALL of memory (?),  or...well you  get  the
  517. point.    To  be really clever with this,  save the result  of
  518. address  6...let the jerk trace for awhile to lose track  of
  519. why  you  did the LDA 6,  then set  the  flags,  run  awhile
  520. longer,  then  (after he/she has forgotten that also)  check
  521. the result of the flags...
  522.  
  523.  P.S.  This  will not work with FAST running in  conjunction
  524. with your program, so watch out! Also, my prefered method to
  525. BANZAI the person trying to "tear apart" my software,  is to
  526. scramble   the     program,   then  write  it  back   out   to
  527. disk...remember,  that BDOS CALL's cannot be traced  anyway,
  528. so  about  the    time that the "tracer"  realizes  that  file
  529. open/write/close occurs...it's just to late!
  530.  
  531.