home *** CD-ROM | disk | FTP | other *** search
/ CP/M / CPM_CDROM.iso / cpm / news / cpmnet81.jqn / CPMNET81.JUN
Text File  |  1985-02-09  |  28KB  |  762 lines

  1.  
  2. >>>>>>>>>>>>>>>>>>>>> CP/M-Net News <<<<<<<<<<<<<<<<<<<<<<<<
  3.  
  4. ============================================================
  5. Number 6               June, 1981          Volume 1, Issue 6
  6. ============================================================
  7.  
  8.                       In This Issue
  9.                       =============
  10.  
  11.               DU - THE Universal Disk Utility
  12.                      by: Eddie Currie
  13.  
  14. Communications Standards and Protocols: Let's Get Together!
  15.              by: Wally A. Linstruth,  WA6JPR 
  16.  
  17.                      DDT WITH B: !!!
  18.                   by: Michael J. Karas
  19.  
  20.        Running Submit Files from Disks other than A:
  21.                      by: Leor Zolman
  22.  
  23.      A Simple Program to Calculate Modem Transfer Time
  24.              by: Kelly Smith, CP/M-Net "SYSOP"
  25.  
  26.                  CP/M-Net "Tip-of-the-Month"
  27.   Patch to CP/M 2.x to Display User Number in Drive Prompt
  28.              by: Bruce Kendall and Bruce Ratoff
  29.            (additional comments by: Kelly Smith)
  30.  
  31.  Printed  monthly  (at worst quarterly) to inform user's  of 
  32. RCPM Systems to the latest software news,  information,  and 
  33. updates   of   public   domain   software   accessible   via 
  34. telephone/modem transfer.  Yearly subscription for copies of 
  35. the  CP/M-Net News may be obtained by mailing $18.00  (check 
  36. or money orders only) to Kelly Smith,  CP/M-Net,  3055  Waco 
  37. Street,  Simi Valley,  California 93063.  CP/M-Net is a non-
  38. profit  orginization and all money received on subscriptions 
  39. are utilized for the sustaining and enhancments of the CP/M-
  40. Net System.
  41.  
  42.  If  you  would  like to contribute an  article,  include  a 
  43. column  containing your area of interest and  expertise,  or 
  44. participate  in an open forum for conversation and  transfer 
  45. of  ideas,  feel free to send it to the CP/M-Net System  and 
  46. indicate that you would like it to be included in the  CP/M-
  47. Net  News...if possible,  use WordStar (trademark,  MicroPro 
  48. International)  or  Electric  Pencil   (trademark,   Micheal 
  49. Shrayer) in 60 column format.
  50.  
  51. NOTE:  CP/M is a registerd trademark of Digital Research
  52. ============================================================
  53.  
  54.                        On the Stack
  55.                        ============
  56.  
  57.  Many  thanks to the following supporting subscribers to the 
  58. CP/M-Net News:
  59.  
  60. Stanley B. Fowler, Envirotech Corporation, El Monte, CA.
  61. Paul Kelley, Waban, Mass.
  62. Walter A. Linstruth - WA6JPR, Redondo Beach, CA.
  63. Albert L. Ponaman, World Wide Search, Inc., Canoga Park, CA.
  64. Dick Rice, American Management Consultants, N.Hollywood, CA.
  65. Joseph C. Sharp, Micro Science Assoc., San Luis Obispo, CA.
  66. Sandy's Shoppe, El Segundo, CA.
  67. Donald s. Tork, Thousand Oaks, CA.
  68.  
  69.  Note:   Back  issues  for  the  CP/M-Net  News  Letter  are 
  70. available  for  two  dollars  each.
  71.  
  72. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  73.  
  74.               DU - THE Universal Disk Utility
  75.               ===============================
  76.  
  77.                      by: Eddie Currie
  78.  
  79.  Ward  Christensen has done it again ...  with the advent of 
  80. DU ,  his universal disk utility, an extremely powerful disk 
  81. maintenance  and  repair facility is provided  to  the  CP/M 
  82. user.  Version  7.5  is  menu driven and Any  valid  command 
  83. string  may  be  placed as an operand  of  the  original  DU 
  84. command, e.g.
  85.  
  86. A>DU G0;D;G2;=OK<D><A><1A>;D
  87.  
  88. Functions supported:
  89.  
  90.     Tnn    Seek to track nn (no read)
  91.     Snn    Position to sector nn, and read
  92.     Gnn    Position to group nn and read.
  93.     G    Shows current position
  94.     V    Views the current sector.
  95.         (assumes ASCII data)
  96.     Vnn    Views nn sectors
  97.     Fname    print directory for file "name",
  98.         then positions to it's directory 
  99.         sector. (Won't position under
  100.         CP/M 2.x, but see = command below.)
  101.  
  102.     =string    Ascii search, starting at current
  103.         sector. <xx> hex may be imbedded,
  104.         or used alone:  To find "IN 0FEH":
  105.         =<db><fe>
  106.         Ignores bit 7 unless <xx> is used.
  107.  
  108.     L    Re-logs in the current disk. You may pull
  109.         out a disk, put in a new, and "L" just
  110.         to log it in.
  111.  
  112.     Lx    Logs in disk 'x', such as: LB
  113.  
  114.     Ux    Logs user 'x' for next F command.  Gives
  115.         '?' error if not CP/M version 2.x.
  116.  
  117.     D    Dump sector, hex + ASCII
  118.     A    Dump sector, ASCII only
  119.     H    Dump sector, hex only
  120.  
  121.  Note  that all dump commands (D,  A,  H) may be  optionally 
  122. followed by a starting and ending address:
  123.  
  124.  
  125.      D0,7F    is the same as just D
  126.     D3,5
  127.     A20,3F
  128.  
  129.     CHaddr,val,val,val... change hex in sector
  130.     CAaddr,char string... change ASCII in sector
  131.  
  132.         NOTE that <xx> may be hex imbedded
  133.         in the Ascii:  ca0,OK<d><a><1a>
  134.  
  135.         ----> Use W to write changes to disk.
  136.         Note that the C command echoes
  137.         the overlaid data for verification.
  138.  
  139.     CHaddr-addr,byte
  140.  or    CAaddr-addr,byte    repeats a change
  141.  
  142.     +    advance 1 sector (if below track 2,
  143.         this advances to next numerical, if
  144.         2 or >, advances based on CP/M's normal
  145.         sector scrambling algorithm, i.e. so +
  146.         will get the next logical sector of the file
  147.  
  148.     -    backs up 1 logical sector
  149.  
  150.         Note + and - may take an amount:
  151.         for example, +F steps in 15 sectors.
  152.  
  153.         Note also that "-" issued at the first logical
  154.         sector of the disk will wrap back to the last.
  155.         Further, "+" issued at the last sector will
  156.         wrap forward to the first.
  157.  
  158.     ?    Gives command summary
  159.  
  160.     #    Prints the disk parameters
  161.  
  162.     M    Dumps a map of the group allocations
  163.         for files.
  164.     Mn    Shows which file is allocated to
  165.         group "n".
  166.  
  167.     N    Resets CP/M via the BDOS.  This may
  168.         make it possible under some implementations
  169.         of CP/M to change the disk format (e.g., density,
  170.         sides, etc)
  171.  
  172.     R    Reads the sector currently positioned to
  173.         into memory.  Note R (Read) is implicit in
  174.         the G, +, and - commands, but N-O-T in the
  175.         S and T commands (I did it because I was
  176.         tired of disk reading after T command before
  177.         I had a chance to issue the S command)
  178.  
  179.     W    Write back the current sector (N-O-T-E may
  180.         not be used after an F command, as CP/M was
  181.         used to find the file in the directory
  182.  
  183.     X    Exit back to CP/M (Must press return).  Ctl-c
  184.         was too easy to hit over modem lines, so I
  185.         decided on 2-byte (X, CR) to exit.
  186.  
  187.     P    Toggle printer switch on/off
  188.  
  189.     Z    Sleep - causes the program to pause, such
  190.         as to look at a dump.  Z is 1 sec.  Znn
  191.         is nn tenths of a second on a 2 MHz 8080.
  192.  
  193.     <    Saves current sector in a save buffer
  194.  
  195.     >    Gets saved buffer.  < and > may be used
  196.         to move a sector to another place.
  197.  
  198.     /    Repeats entire command.  Defaults
  199.  or    /nn    to "forever".  NN may be 2 to 65535.
  200.  
  201.  
  202.  
  203.  Multiple  commands  are separated by ";" when given on  the 
  204. same command line, for example,  the following commands will 
  205. erase the b disk directory to all E5's:
  206.  
  207.     lb        log in b drive
  208.     g0        position to dir.
  209.     ch0-7f,e5    fill with e5
  210.     <        save the sector
  211.     >;w;+;/16    restore, write, next,
  212.             repeat 16
  213.  
  214. ----This could be shortened to:
  215.  
  216.     lb;g0;ch0-7f,e5;<
  217.     >;w;+;/16
  218.  
  219.  The menu is displayed as 24 lines (or other suitable number 
  220. of  lines of text as determined by the associated equate  in 
  221. the  source)  and the next page is displayed  following  the 
  222. typing of any key on the terminal. 
  223.  
  224.  It  is  important  to  understand  the  format  of  a  CP/M 
  225. directory entry as provided by DU when using either the  "F" 
  226. (find  file) command,or "D" (dump) of the directory sectors, 
  227. which  are  located in groups 0 and 1 on  a  single  density 
  228. disk.
  229.  
  230. Sample result of "FSID.COM" command:
  231.  
  232. 40  00534944 20202020  20434F4D 0000003A  *.SID     COM...:*
  233. 50  33343536 3738393A  00000000 00000000  *3456789:........*
  234.  
  235. First line -
  236.  
  237. 40  00534944 20202020  20434F4D 0000003A  *.SID     COM...:*
  238. ||  |||                      |  ||    ||    |         |
  239. ||  ||^----hex file name-----^  ||    ||    ^file name^
  240. ||  ||                          ||    ||     in ASCII
  241. ||  ||                   extent-^^    ||
  242. ||  ||                                ||
  243. ||  ||           file size in sectors-^^
  244. ||  ||
  245. ||  ^^-00 = file active
  246. ||     E5 = file erased
  247. ^^-displacement of line in directory sector
  248.  
  249. Second line -
  250.  
  251. 50  33343536 3738393A  00000000 00000000  *3456789:........*
  252.     |                       |
  253.     |                       |
  254.     ^---allocation group numbers-------^
  255.  
  256.  
  257. A trivial example of how to read a given sector is given by:
  258.  
  259.  
  260. :T0;S1                           Track zero , sector one please.
  261.  T=0, S=1, PS=1
  262.  T=0, S=1, PS=1
  263.  
  264. :R                               Read the sucker ...
  265.  
  266. :D                               Now let me read will ya ???
  267.  
  268.  
  269. 00  3100D0F3 AFD308DB  08E608C2 07003E04  *1.Ps/S.[.f.B..>.*
  270. 10  D309C320 00DB08E6  02C21500 3E02D309  *S.C .[.f.B..>.S.*
  271. 20  DB08E640 C2150001  00012180 CECD5000  *[.f@B.....!.NMP.*
  272. 30  DB08E602 C230003E  01D30901 01012180  *[.f.B0.>.S....!.*
  273. 40  DECD5000 3A59EBE6  10CA00E6 FBC300E6  *^MP.:Ykf.J.f{C.f*
  274. 50  C5E57CFE D0DA6700  3AFF003E FFBCDA67  *Ee|.PZg.:..>.<Zg*
  275. 60  00CD8300 C20000E1  11000119 C178C602  *.M..B..a....AxF.*
  276. 70  47FE21DA 5000D61F  1180F019 FE0347C2  *G.!ZP.V...p...GB*
  277.  
  278. Yet another example: 
  279.  
  280. :g0;+;d;z#20;/
  281.  
  282.  This  would cause the system to go to block zero,  step  in 
  283. one  track,read a sector,  dump it to the console,  sleep  2 
  284. sec, and repeat this cycle until a control-c is typed.
  285.  
  286.  DU  is designed to  be installed with a minimum of trouble.  
  287. In  fact,  typically,  no  changes to the  source  file  are 
  288. required.DU   uses  the  disk  parameter block  of  CP/M  to 
  289. determine the  characteristics of the disk environment.
  290.  
  291.  The  only  parameter that may need changing  is  the  clock 
  292. speed flag at 103H. Set zero if you have a 2 mhz clock, non-
  293. zero  for   4  mhz.   This is affects only the  "Z"  (sleep) 
  294. command.
  295.  
  296.  This  powerful utility should have been dedicated to  every 
  297. poor  soul who ever violated a directory or wished  in  vain 
  298. for the ability to search a disk (reminds me of the cretin's 
  299. song  ,  "On a clear disk you can search forever),  for some 
  300. sacred phrase which tho' he knew twas on the disk , knew not 
  301. where ???  Does thou know this dreaded plight(s)??? If so be 
  302. of  good cheer.  One has merely to enter the sacred  phrase, 
  303. e.g.,
  304.  
  305. :=Wherefor art thou? (cr)
  306.  
  307. ...and retire to the refrigerator for a brief repast  whence 
  308. upon return he is met with, wonder of  wonders, the location 
  309. of poor Romeo.
  310.  
  311. :=Wherefor art thou? (cr)
  312. = AT 07
  313. G=00:0B, T=2, S=12, PS=29
  314.  
  315.  Not  even Merlin himself could perform greater wonders than 
  316. this  most  excellent utility and be of good cheer  for  the 
  317. source may be easily "equated" to support 1.4 ... 
  318.  
  319. And Having Thus Spake We Exeunt Stage Left ... Farewell !!!
  320.  
  321. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  322.  
  323. Communications Standards and Protocols: Let's Get Together!
  324. ===========================================================
  325.  
  326.                by: Wally A. Linstruth,  WA6JPR 
  327.                       2413 Burritt Avenue 
  328.                     Redondo Beach, CA 90278 
  329.                         (213) 542-3290 
  330.             Micronet: 70250,272 or Source: TCC427 
  331.  
  332. [Editors Comment: This is an 'open letter' to all interested 
  333. parties  that Wally sent to myself (and others) in hopes  of 
  334. organizing  a forum for discussion...the original letter was 
  335. to  Bob Carpenter,  W3OTC,  in response to his article  that 
  336. appeared in the AMRAD Newsletter, May 1980. Wally will be at 
  337. Cape  Canaveral for ten weeks starting in June,  so  if  you 
  338. have  difficulty  in getting in touch with  him,  leave  any 
  339. correspondence  with me on the CP/M-Net CBBS and I will  see 
  340. that he gets your comments. Best regards, Kelly Smith]
  341.  
  342.  "I  am  working with the group (AMICON) which is  designing 
  343. protocol  standards for use on the  computer  communications 
  344. channel  which is included in the AMSAT Phase III  satellite 
  345. bandplan.  I  am also very interested in terrestrial  packet 
  346. radio (and land-line) techniques as a hobby pursuit."
  347.  
  348.  "My  task for AMICON is to build a bibliography of articles 
  349. regarding  protocol design for use by the group.  The  AMRAD 
  350. paper [Editors Note: AMRAD, May 1980; 'Protocol' by David W. 
  351. Borden with an article by Bob Carpenter] was,  in fact, sent 
  352. to  me by the AMICON chairman so that I might  include  your 
  353. references in my bibliography.  As a result of this task,  I 
  354. have  been  doing quite a bit of reading in the  field.  The 
  355. thing that strikes me as odd is the fact that so many people 
  356. are  involved  in  this pursuit but  everyone  seems  to  be 
  357. working  in  a  vacuum,  or at least  with  little  feedback 
  358. between  groups.  This is partly due to the fact that we are 
  359. all trying to design communications networks,  for  whatever 
  360. purpose,  without  first having a common system,  or medium, 
  361. with which to compare notes."
  362.  
  363.  "I  have been doing my "low profile" bit to try  to  cross-
  364. pollinate  or cross-reference the people and groups who  are 
  365. most active in amateur packet switching techniques. It is in 
  366. this spirit that I am writing to you. I would like to inform 
  367. you that we are out here (which you may already know) and to 
  368. invite  you to help me with my self-appointed task of trying 
  369. to get those of us most serious about packet  communications 
  370. talking to one another."
  371.  
  372.  "Please  write or call if this interests you in any way and 
  373. I'll see to it that your interest is made known to the  rest 
  374. of the AMICON group and to anyone else who will listen. I am 
  375. particularly   interested  in  learning  of  any  reasonably 
  376. inexpensive  means by which we might correspond as  a  group 
  377. (Telenet,  EIES  computer conference group  discount,  etc.) 
  378. which you may be familiar with."
  379.  
  380.                                           Sincerely, 
  381.  
  382.                                           Wally Linstruth 
  383.  
  384. Bob Carpenter, W3OTC 
  385. 12708 Circle Drive 
  386. Rockville, MD 20850 
  387.  
  388. cc: 
  389. Vern 'RIP' Riportella, WA2LQQ, AMICON chairman 
  390. David W. Borden, K8MMO, AMRAD Newsletter - PROTOCOL column 
  391. Dave Caulkins, PCNET committee 
  392. Hank Magnuski, KA6M, AMICON protocol committee 
  393. Kelly Smith, SIG/M coordinator, CP/M-Net owner 
  394.  
  395. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  396.  
  397.                       DDT WITH B: !!!
  398.                       ===============
  399.  
  400.                    by: Michael J. Karas
  401.  
  402.  About a year ago I wrote an article for the Valley Computer 
  403. Club  newsletter that explained how to use Digital  Research 
  404. DDT in a mode to permit accessing alternate disk drives with 
  405. the  "I"  command.  The scheme consisted of poking a  number 
  406. into  memory  location 005CH to key the BDOS  to  the  drive 
  407. where  the  desired file would be found.  The number  scheme 
  408. followed like this:
  409.  
  410. 005CH = 00H  -->  use logged drive to find file
  411. 005CH = 01H  -->  use drive A: to find file
  412. 005CH = 02H  -->  use drive B: to find file
  413. 005CH = 03H  -->  use drive C: to find file
  414. 005CH = 04H  -->  use drive D: to find file
  415. etc., etc., ....  etc.
  416.  
  417.  A few months later Kelly Smith,  publisher of the CP/M  Net 
  418. News,  Simi Valley,  CA, placed a similar item in a CP/M tip 
  419. of  the  month  column so that more people  could  gain  the 
  420. knowledge  of  how to use DDT more efficiently.  Since  that 
  421. time I have seen published documentation of the same idea in 
  422. several  other  computer club newsletters  and  even  Doctor 
  423. Dobbs  Journal.  I  don't know how many people  have  really 
  424. discovered the use of the "poke a number into 05CH" idea but 
  425. I  have gradually decided that it was somewhat of a pain  to 
  426. do it all the time.  Therefore I decided to fix DDT in a way 
  427. that  makes  drive referencing possible in a  direct  manner 
  428. with CP/M style syntax.
  429.  
  430.  The intended goal was to get two things out of the effort:
  431.  
  432. (1) Make DDT easier to use, and
  433.  
  434. (2)  Put  a new CP/M tip into the public domain for all  you 
  435.     computer people to chew on for a awhile!!
  436.  
  437.  The following parts of this article describe a procedure to 
  438. patch  DDT  Version 1.4 to permit use of the  CP/M  DDT  "I" 
  439. command in any of the following typical formats:
  440.  
  441. A>
  442. A>DDT<cr>
  443. DDT VERS 1.4
  444. -IPROG.HEX               <== Reference file "PROG.HEX" on
  445.                              default drive A:
  446. or,
  447.  
  448. -IB:PROG2.ASC            <== Reference file "PROG2.ASC" on
  449.                              file B:
  450.  
  451. etc., etc.
  452.  
  453.  One may ask why DDT was not written to be used in the above 
  454. manner  in the first place when it only takes 37 more  bytes 
  455. to  make it work.  Well,  Digital Research has already  made 
  456. their buck on the copy that you bought,  so if you think you 
  457. would  like "B:" in the "I" command,  then you will have  to 
  458. follow  the  following implementation procedure.  Note  that 
  459. this  patch has not been tried with CP/M DDT version 2.2  so 
  460. its not known if the following patch instructions will  work 
  461. for versions other than 1.4.
  462.  
  463.  To implement the patch the first thing to do is to edit the 
  464. following  short program into a file called  "DDTPATCH.ASM". 
  465. You  may  use any editor as long as you carefully  keep  all 
  466. those  funny  little  numbers in the equates  "EXACTLY"  the 
  467. same.  The  program should then be assembled into  a  ".HEX" 
  468. file using an assembler. 
  469.  
  470. ;
  471. ;+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  472. ;  PATCH TO GIVE "I" COMMAND DRIVE SELECT CAPABILITY IN DDT
  473. ;+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  474. ;
  475. ;    PATCH FOR DDT VERSION 1.4
  476. ;
  477. TPA    EQU    00100H    ;START OF TRANSIENT PROGRAM AREA
  478. ;
  479. PATCH    EQU    00904H    ;LOCATION OF INTERNAL DDT PATCH
  480.             ;(IN ABSOLUTE DDT IMAGE)
  481. ;
  482. FETCHR    EQU    00BD7H    ;LOCATION FOR FETCH CHARACTER ROUTINE
  483.             ;(IN ABSOLUTE DDT IMAGE)
  484. ;
  485. ENDCHK    EQU    0091CH    ;LOCATION IN DDT TO ENTER "I" CMD LOOP
  486.             ;(IN ABSOLUTE DDT IMAGE)
  487. ;
  488. ENDDDT    EQU    00FD0H    ;END LOCATION OF DDT 1.4
  489.             ;(IN ABSOLUTE DDT IMAGE)
  490. ;
  491. FCB    EQU    0005CH    ;LOCATION OF DEFAULT FCB
  492. ;
  493.     ORG    TPA+1    ;FIX OLD DDT MODULE SIZE
  494. ;
  495.         DW    0FB6H+063  ;NEW MODULE SIZE WITH END PATCH
  496. ;
  497.     ORG    PATCH+200H ;OFFSET ASSEMBLY FOR INTERNAL PATCH
  498. ;
  499.     JMP    COLNCK-200H;JUMP TO PROCESS COLON CHECK
  500. ;
  501. DRDONE:
  502.     XRA    A
  503.     STA    FCB+020H   ;CLEAR FCB RECORD COUNT
  504. ;
  505. ;CODE TO BE PATCHED IN AT END OF DDT IMAGE. THIS ROUTINE CHECKS
  506. ;FOR A ":" AS THE SECOND CHARACTER IN THE "I" COMMAND STRING.
  507. ;IF PRESENT THE LOWER FOUR BITS OF FIRST CHARACTER ARE USED AS
  508. ;A DRIVE SELECT DESIGNATOR.
  509. ;
  510.     ORG    ENDDDT+0200H
  511. ;
  512. COLNCK:
  513.     CALL    FETCHR        ;GET FIRST CMMAND CHARACTER
  514.     MOV    B,A        ;SAVE FIRST IN (B)
  515.     CALL    FETCHR        ;GET SECOND CHARACTER
  516.     CPI    ':'        ;CHECK IF SECOND IS COLON
  517.     JZ    SETDRV-0200H    ;IF SO THEN GO SETUP DRIVE SELECT
  518.     LXI    H,FCB+1        ;SET PARAMETERS FOR NORMAL
  519.     MOV    M,B        ;PUT FIRST CHARACTER INTO FCB
  520.     INX    H
  521.     MVI    C,08H        ;SET OTHER PARAMETERS FOR NORMAL
  522.     MOV    B,A        ;SAVE SECOND CHAR AWHILE
  523.     XRA    A        ;CLEAR TO DEFAULT DRIVE
  524.     STA    FCB
  525.     MOV    A,B        ;GET SECOND CHARACTER BACK AGAIN
  526.     JMP    ENDCHK        ;GO BACK INTO NORMAL DDT "I" LOOP
  527. ;
  528. SETDRV:
  529.     MOV    A,B        ;USE FIRST CHARACTER AS DRIVE
  530.     ANI    0FH        ;LOWER FOUR BITS ONLY
  531.     STA    FCB        ;SET SELECTED DRIVE NUMBER
  532.     JMP    DRDONE-0200H    ;BACK TO BEGIN NORMAT "I" COMMAND
  533. ;
  534.     END
  535. ;
  536.  
  537.  Once  you have made the ".HEX" file,  then put a copy of it 
  538. on  a CP/M system disk along with your copy of  DDT  version 
  539. 1.4.  Boot  up  the system disk on drive  A:  and  carefully 
  540. follow  the  installation procedure below.  If you  are  not 
  541. currently  familiar with the operation of DDT now would be a 
  542. good  time  to get the manual out and read it.  We  will  be 
  543. using DDT to make the patched copy of itself.  The  sequence 
  544. below  must be followed exactly in order.  The notation <cr> 
  545. below  indicates that you should type carriage  return.  The 
  546. part of the text that the system types versus what you  type 
  547. will  become  obvious  as you fire up DDT to  do  the  patch 
  548. process.
  549.  
  550. A>
  551. A>DDT<cr>        <== Invoke DDT
  552. DDT VERS 1.4
  553. -IDDT.COM<cr>        <== Read in copy of DDT.COM
  554. -R<cr>
  555. NEXT  PC
  556. 1400 0100
  557. -S12D6<cr>        <== Change bit map for patch
  558. 12D6 90 92<cr>
  559. 12D7 04 .<cr>
  560. -S13B0<cr>        <== Add new bytes to bit map
  561. 13B0 00 22<cr>
  562. 13B1 00 10<cr>
  563. 13B2 00 00<cr>
  564. 13B3 00 10<cr>
  565. 13B4 00 08<cr>
  566. 13B5 00 .<cr>
  567. -M11B6,1400,1A00<cr>    <== Move bit map out of way
  568. -IDDTPATCH.HEX<cr>
  569. -R<cr>            <== Overlay DDT.COM with patch
  570. NEXT  PC
  571. 1400 0000
  572. -M1A00,2000,11F5<cr>    <== Move bit map into place
  573. -^C            <== Exit DDT to system with ctl-C
  574. A>SAVE 19 DDTP.COM    <== Save patched DDT.COM
  575. A>
  576.  
  577.  You  now  have a copy of DDT that is patched to permit  the 
  578. use  of drive designators in the DDT "I"  command.  For  the 
  579. patch  to  work  a  colon  must be  entered  as  the  second 
  580. character  of the file name field of the normal "I"  command 
  581. syntax.   The  drive  designatior  can  be  most  any  ASCII 
  582. character  except "." or "cr".  The patch simply strips  out 
  583. the  lower four bits of your entered ASCII character to  use 
  584. as the drive code in FCB location 05CH.  This permits any of 
  585. 16  drives to be selected.  If the colon does not appear  as 
  586. the  second input character then the "I" command works  just 
  587. like it always used to. Have fun !!!!
  588.  
  589. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  590.  
  591.        Running Submit Files from Disks other than A:
  592.        =============================================
  593.  
  594.                       by: Leor Zolman
  595.  
  596.  For  a long time,  I have been frustrated by "accidentally" 
  597. submitting  a  submit file while being logged in to  a  disk 
  598. other than A:, and having a magical "$$$.SUB" appear instead 
  599. of  having my submit file processed.  Having gotten my  hard  
  600. disk up, and being forced to leave my system on floppies and 
  601. use  the  hard disk  as C:  and D:,  I found  myself  really 
  602. missing the ability to do submits...
  603.  
  604.  As a first solution to the problem, I tried going to A: and 
  605. writing  a submit file that started with C:,  just to see if 
  606. it would take it.  Yes!  It did let me log in to C:  as  the 
  607. first thing in a submit file, but I still had to go to A: to 
  608. submit  it.  Could there possibly be a way to do a submit on 
  609. C: without ever leaving C: ?
  610.  
  611.                       --- YES !! ---
  612.  
  613.  If  you DDT or SID SUBMIT.COM,  you'll notice that the  FCB 
  614. area  for   the   temporary  file  that  SUBMIT.COM  creates 
  615. ($$$.SUB) has its first byte set to 00.  That means that the 
  616. $$$.SUB  file will always be written to the currently logged 
  617. disk,   EVEN THOUGH IT HAS NO MEANING UNLESS IT IS   WRITTEN 
  618. TO  A:  (smart move,  Digital Research...another of  many!). 
  619. SOOOO...my  simple  solution was to change that  00  leading 
  620. byte  of  the FCB to 01.  This causes $$$.SUB to  always  be  
  621. written to A:,  no matter which disk the submit is submitted  
  622. from.  Now I can be on C: and do a  submit as easily as if I 
  623. were on A:.
  624.  
  625.  I  hope  this  helps  some of you  out  there  who've  been 
  626. frustrated by the same problem.  Incidentally,  the location 
  627. to patch in the 2.2 SUBMIT.COM program is:  05BB hex (change 
  628. from 00h to 01h).
  629.  
  630. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  631.  
  632.      A Simple Program to Calculate Modem Transfer Time
  633.      =================================================
  634.  
  635.              by: Kelly Smith, CP/M-Net "SYSOP"
  636.  
  637.  Here's  a simple program to determine the transfer time  in 
  638. minutes, to or from a RCPM system. Very handy in determining 
  639. the charges from Ma' Bell (or whatever telephone system  you 
  640. use) when transferring some really huge files...
  641.  
  642. 10 REM  File Transfer Rate Program for RCPM's, by Kelly Smith
  643. 20 REM 
  644. 30 REM  This  program may be used by a RCPM user to  determine 
  645. 40 REM the  total time in minutes to transfer files to or from 
  646. 50 REM a  RCPM  system.  Time  is rounded down to the  nearest 
  647. 60 REM minute,  but  detailed information may be  obtained  by 
  648. 70 REM removing the 'REM's in the following code. This program 
  649. 80 REM is compatible with Microsoft BASIC, and will compile to 
  650. 90 REM a 11 kilobyte (Gag!) file utilizing BASCOM.
  651. 100 REM
  652. 110 PRINT:INPUT "What is the Baud Rate (60 to 1200)";B
  653. 120 IF B<>60 AND B<>110 AND B<>300 AND B<>450 THEN GOTO 140
  654. 130 GOTO 180
  655. 140 IF B<>600 AND B<>710 AND B<>1200 THEN GOTO 160
  656. 150 GOTO 180
  657. 160 PRINT:PRINT"+++ Invalid Baud Rate +++":PRINT
  658. 170 PRINT"Must be 60, 110, 300, 450, 600, 710, or 1200 Baud!":GOTO 110
  659. 180 INPUT "What is the File Size in kilobytes";S
  660. 190 IF S<1 THEN GOTO 180
  661. 200 S=S*1024:T=S/(B/10):TM=T/60
  662. 210 REM PRINT:PRINT"Total number of characters in this file is";S
  663. 220 REM PRINT"This file will take";T;"seconds"
  664. 230 REM PRINT"Which equals";TM;"minutes"
  665. 240 PRINT:PRINT"Transfer time will be approximately";
  666. 250 T=INT(TM):IF T>1 THEN PRINT T "minutes" ELSE PRINT" 1 minute""
  667.  
  668. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  669.  
  670.                  CP/M-Net "Tip-of-the-Month"
  671.                  ===========================
  672.  
  673.   Patch to CP/M 2.x to Display User Number in Drive Prompt
  674.   ========================================================
  675.  
  676.              by: Bruce Kendall and Bruce Ratoff
  677.            (additional comments by: Kelly Smith)
  678.  
  679.  Are you annoyed with CP/M 2.x's USER command, that there is 
  680. no way of indicating which USER area you are currently in?
  681.  
  682.  This  patch  solves  this problem by  displaying  the  USER 
  683. number in hex ( a single character since user number 0  - 15 
  684. are  valid) between the drive name letter and the '>'.  That 
  685. is,  a  user  logged into user area number 4 would  see  the 
  686. standard CP/M prompt (modified by this patch) as:
  687.  
  688.             A4>       ...instead of just A>
  689.  
  690.  Enter  the following listing with your favorite  flavor  of 
  691. editor,  assemble, and then 'GEN' a new CP/M system image as 
  692. you normally would with DDT...for example:
  693.  
  694. A>ddt cpm56.com<cr> <--- load system image you made with MOVCPM
  695. DDT VER 2.2         <--- DDT announcing itself...
  696. NEXT  PC
  697. 2300 0100
  698. -iboot56.hex<cr>    <--- your disk boot loader
  699. -r900<cr>           <--- read it in at 900 hex
  700. -ibios56.hex<cr>    <--- your system BIOS
  701. -r5580<cr>          <--- offset required for a 56k system
  702. -iuser#.hex<cr>     <--- the USER NUMBER patch
  703. -r5580<cr>          <--- offset required for a 56k system
  704. -g0<cr>             <--- exit DDT, and return to CP/M
  705. A>sysgen<cr>        <--- SYSGEN the disk
  706. SYSGEN VER 2.0      <--- SYSGEN announcing itself...
  707. SOURCE DRIVE NAME (OR RETURN TO SKIP)<cr> <--- return
  708. DESTINATION DRIVE NAME (OR RETURN TO REBOOT)A<cr> <--- A: disk
  709. DESTINATION DRIVE NAME (OR RETURN TO REBOOT)<cr>  <--- reboot
  710. A>
  711.  
  712.  Now 'cold boot' your system,  and you will see the new USER 
  713. number prompt:
  714.  
  715. A0>
  716.  
  717.  Here's  the USER NUMBER patch,  and be sure and set 'msize' 
  718. for  YOUR  CP/M system size and use YOUR offset  value  when 
  719. setting this up!
  720.  
  721. msize    equ    56    ; CP/M system size in kilobytes
  722.                         ;
  723.                         ; You MUST set this value to your
  724.                         ; CP/M system size
  725.    
  726. delta    equ    000h    ; offset from standard CP/M size:
  727.                         ;
  728.                         ; This would be set to 400h if
  729.             ; the 20k CP/M was actually a 19k
  730.             ; CP/M (when compared to the std
  731.             ; 20k CP/M described in the CP/M
  732.             ; manuals from Digital Research).
  733.  
  734. bias    equ    (msize-20)*1024-delta ; offset from 20k CP/M
  735. ccp    equ    3400h+bias
  736.  
  737. offset    equ    980h-ccp; offset used with  DDT in system
  738.             ; configuration (assumes that the
  739.             ; 'CCP' occures at 980h in the
  740.             ; sysgen memory image)
  741.  
  742. cout    equ    ccp+8ch ; CCP console output routine
  743. gtusr    equ    ccp+113h; CCP get user number routine
  744.  
  745.     org    ccp+38dh
  746. ;
  747.     call    patch    ; this was a CALL COUT
  748. ;
  749.     org    ccp+15f0h    ; patch area at end of BDOS
  750. ;
  751. patch:    call    cout    ; output character in A to console
  752.     call    gtusr    ; get user number
  753.     adi    90h    ; use Intel Hex/ASCII trick
  754.     daa
  755.     aci    40h
  756.     daa
  757.     jmp    cout    ; print out and return
  758. ;
  759.     end
  760.  
  761. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  762.