home *** CD-ROM | disk | FTP | other *** search
-
- >>>>>>>>>>>>>>>>>>>>> CP/M-Net News <<<<<<<<<<<<<<<<<<<<<<<<
-
- ============================================================
- Number 6 June, 1981 Volume 1, Issue 6
- ============================================================
-
- In This Issue
- =============
-
- DU - THE Universal Disk Utility
- by: Eddie Currie
-
- Communications Standards and Protocols: Let's Get Together!
- by: Wally A. Linstruth, WA6JPR
-
- DDT WITH B: !!!
- by: Michael J. Karas
-
- Running Submit Files from Disks other than A:
- by: Leor Zolman
-
- A Simple Program to Calculate Modem Transfer Time
- by: Kelly Smith, CP/M-Net "SYSOP"
-
- CP/M-Net "Tip-of-the-Month"
- Patch to CP/M 2.x to Display User Number in Drive Prompt
- by: Bruce Kendall and Bruce Ratoff
- (additional comments by: Kelly Smith)
-
- Printed monthly (at worst quarterly) to inform user's of
- RCPM Systems to the latest software news, information, and
- updates of public domain software accessible via
- telephone/modem transfer. Yearly subscription for copies of
- the CP/M-Net News may be obtained by mailing $18.00 (check
- or money orders only) to Kelly Smith, CP/M-Net, 3055 Waco
- Street, Simi Valley, California 93063. CP/M-Net is a non-
- profit orginization and all money received on subscriptions
- are utilized for the sustaining and enhancments of the CP/M-
- Net System.
-
- If you would like to contribute an article, include a
- column containing your area of interest and expertise, or
- participate in an open forum for conversation and transfer
- of ideas, feel free to send it to the CP/M-Net System and
- indicate that you would like it to be included in the CP/M-
- Net News...if possible, use WordStar (trademark, MicroPro
- International) or Electric Pencil (trademark, Micheal
- Shrayer) in 60 column format.
-
- NOTE: CP/M is a registerd trademark of Digital Research
- ============================================================
-
- On the Stack
- ============
-
- Many thanks to the following supporting subscribers to the
- CP/M-Net News:
-
- Stanley B. Fowler, Envirotech Corporation, El Monte, CA.
- Paul Kelley, Waban, Mass.
- Walter A. Linstruth - WA6JPR, Redondo Beach, CA.
- Albert L. Ponaman, World Wide Search, Inc., Canoga Park, CA.
- Dick Rice, American Management Consultants, N.Hollywood, CA.
- Joseph C. Sharp, Micro Science Assoc., San Luis Obispo, CA.
- Sandy's Shoppe, El Segundo, CA.
- Donald s. Tork, Thousand Oaks, CA.
-
- Note: Back issues for the CP/M-Net News Letter are
- available for two dollars each.
-
- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-
- DU - THE Universal Disk Utility
- ===============================
-
- by: Eddie Currie
-
- Ward Christensen has done it again ... with the advent of
- DU , his universal disk utility, an extremely powerful disk
- maintenance and repair facility is provided to the CP/M
- user. Version 7.5 is menu driven and Any valid command
- string may be placed as an operand of the original DU
- command, e.g.
-
- A>DU G0;D;G2;=OK<D><A><1A>;D
-
- Functions supported:
-
- Tnn Seek to track nn (no read)
- Snn Position to sector nn, and read
- Gnn Position to group nn and read.
- G Shows current position
- V Views the current sector.
- (assumes ASCII data)
- Vnn Views nn sectors
- Fname print directory for file "name",
- then positions to it's directory
- sector. (Won't position under
- CP/M 2.x, but see = command below.)
-
- =string Ascii search, starting at current
- sector. <xx> hex may be imbedded,
- or used alone: To find "IN 0FEH":
- =<db><fe>
- Ignores bit 7 unless <xx> is used.
-
- L Re-logs in the current disk. You may pull
- out a disk, put in a new, and "L" just
- to log it in.
-
- Lx Logs in disk 'x', such as: LB
-
- Ux Logs user 'x' for next F command. Gives
- '?' error if not CP/M version 2.x.
-
- D Dump sector, hex + ASCII
- A Dump sector, ASCII only
- H Dump sector, hex only
-
- Note that all dump commands (D, A, H) may be optionally
- followed by a starting and ending address:
-
-
- D0,7F is the same as just D
- D3,5
- A20,3F
-
- CHaddr,val,val,val... change hex in sector
- CAaddr,char string... change ASCII in sector
-
- NOTE that <xx> may be hex imbedded
- in the Ascii: ca0,OK<d><a><1a>
-
- ----> Use W to write changes to disk.
- Note that the C command echoes
- the overlaid data for verification.
-
- CHaddr-addr,byte
- or CAaddr-addr,byte repeats a change
-
- + advance 1 sector (if below track 2,
- this advances to next numerical, if
- 2 or >, advances based on CP/M's normal
- sector scrambling algorithm, i.e. so +
- will get the next logical sector of the file
-
- - backs up 1 logical sector
-
- Note + and - may take an amount:
- for example, +F steps in 15 sectors.
-
- Note also that "-" issued at the first logical
- sector of the disk will wrap back to the last.
- Further, "+" issued at the last sector will
- wrap forward to the first.
-
- ? Gives command summary
-
- # Prints the disk parameters
-
- M Dumps a map of the group allocations
- for files.
- Mn Shows which file is allocated to
- group "n".
-
- N Resets CP/M via the BDOS. This may
- make it possible under some implementations
- of CP/M to change the disk format (e.g., density,
- sides, etc)
-
- R Reads the sector currently positioned to
- into memory. Note R (Read) is implicit in
- the G, +, and - commands, but N-O-T in the
- S and T commands (I did it because I was
- tired of disk reading after T command before
- I had a chance to issue the S command)
-
- W Write back the current sector (N-O-T-E may
- not be used after an F command, as CP/M was
- used to find the file in the directory
-
- X Exit back to CP/M (Must press return). Ctl-c
- was too easy to hit over modem lines, so I
- decided on 2-byte (X, CR) to exit.
-
- P Toggle printer switch on/off
-
- Z Sleep - causes the program to pause, such
- as to look at a dump. Z is 1 sec. Znn
- is nn tenths of a second on a 2 MHz 8080.
-
- < Saves current sector in a save buffer
-
- > Gets saved buffer. < and > may be used
- to move a sector to another place.
-
- / Repeats entire command. Defaults
- or /nn to "forever". NN may be 2 to 65535.
-
-
-
- Multiple commands are separated by ";" when given on the
- same command line, for example, the following commands will
- erase the b disk directory to all E5's:
-
- lb log in b drive
- g0 position to dir.
- ch0-7f,e5 fill with e5
- < save the sector
- >;w;+;/16 restore, write, next,
- repeat 16
-
- ----This could be shortened to:
-
- lb;g0;ch0-7f,e5;<
- >;w;+;/16
-
- The menu is displayed as 24 lines (or other suitable number
- of lines of text as determined by the associated equate in
- the source) and the next page is displayed following the
- typing of any key on the terminal.
-
- It is important to understand the format of a CP/M
- directory entry as provided by DU when using either the "F"
- (find file) command,or "D" (dump) of the directory sectors,
- which are located in groups 0 and 1 on a single density
- disk.
-
- Sample result of "FSID.COM" command:
-
- 40 00534944 20202020 20434F4D 0000003A *.SID COM...:*
- 50 33343536 3738393A 00000000 00000000 *3456789:........*
-
- First line -
-
- 40 00534944 20202020 20434F4D 0000003A *.SID COM...:*
- || ||| | || || | |
- || ||^----hex file name-----^ || || ^file name^
- || || || || in ASCII
- || || extent-^^ ||
- || || ||
- || || file size in sectors-^^
- || ||
- || ^^-00 = file active
- || E5 = file erased
- ^^-displacement of line in directory sector
-
- Second line -
-
- 50 33343536 3738393A 00000000 00000000 *3456789:........*
- | |
- | |
- ^---allocation group numbers-------^
-
-
- A trivial example of how to read a given sector is given by:
-
-
- :T0;S1 Track zero , sector one please.
- T=0, S=1, PS=1
- T=0, S=1, PS=1
-
- :R Read the sucker ...
-
- :D Now let me read will ya ???
-
-
- 00 3100D0F3 AFD308DB 08E608C2 07003E04 *1.Ps/S.[.f.B..>.*
- 10 D309C320 00DB08E6 02C21500 3E02D309 *S.C .[.f.B..>.S.*
- 20 DB08E640 C2150001 00012180 CECD5000 *[.f@B.....!.NMP.*
- 30 DB08E602 C230003E 01D30901 01012180 *[.f.B0.>.S....!.*
- 40 DECD5000 3A59EBE6 10CA00E6 FBC300E6 *^MP.:Ykf.J.f{C.f*
- 50 C5E57CFE D0DA6700 3AFF003E FFBCDA67 *Ee|.PZg.:..>.<Zg*
- 60 00CD8300 C20000E1 11000119 C178C602 *.M..B..a....AxF.*
- 70 47FE21DA 5000D61F 1180F019 FE0347C2 *G.!ZP.V...p...GB*
-
- Yet another example:
-
- :g0;+;d;z#20;/
-
- This would cause the system to go to block zero, step in
- one track,read a sector, dump it to the console, sleep 2
- sec, and repeat this cycle until a control-c is typed.
-
- DU is designed to be installed with a minimum of trouble.
- In fact, typically, no changes to the source file are
- required.DU uses the disk parameter block of CP/M to
- determine the characteristics of the disk environment.
-
- The only parameter that may need changing is the clock
- speed flag at 103H. Set zero if you have a 2 mhz clock, non-
- zero for 4 mhz. This is affects only the "Z" (sleep)
- command.
-
- This powerful utility should have been dedicated to every
- poor soul who ever violated a directory or wished in vain
- for the ability to search a disk (reminds me of the cretin's
- song , "On a clear disk you can search forever), for some
- sacred phrase which tho' he knew twas on the disk , knew not
- where ??? Does thou know this dreaded plight(s)??? If so be
- of good cheer. One has merely to enter the sacred phrase,
- e.g.,
-
- :=Wherefor art thou? (cr)
-
- ...and retire to the refrigerator for a brief repast whence
- upon return he is met with, wonder of wonders, the location
- of poor Romeo.
-
- :=Wherefor art thou? (cr)
- = AT 07
- G=00:0B, T=2, S=12, PS=29
-
- Not even Merlin himself could perform greater wonders than
- this most excellent utility and be of good cheer for the
- source may be easily "equated" to support 1.4 ...
-
- And Having Thus Spake We Exeunt Stage Left ... Farewell !!!
-
- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-
- Communications Standards and Protocols: Let's Get Together!
- ===========================================================
-
- by: Wally A. Linstruth, WA6JPR
- 2413 Burritt Avenue
- Redondo Beach, CA 90278
- (213) 542-3290
- Micronet: 70250,272 or Source: TCC427
-
- [Editors Comment: This is an 'open letter' to all interested
- parties that Wally sent to myself (and others) in hopes of
- organizing a forum for discussion...the original letter was
- to Bob Carpenter, W3OTC, in response to his article that
- appeared in the AMRAD Newsletter, May 1980. Wally will be at
- Cape Canaveral for ten weeks starting in June, so if you
- have difficulty in getting in touch with him, leave any
- correspondence with me on the CP/M-Net CBBS and I will see
- that he gets your comments. Best regards, Kelly Smith]
-
- "I am working with the group (AMICON) which is designing
- protocol standards for use on the computer communications
- channel which is included in the AMSAT Phase III satellite
- bandplan. I am also very interested in terrestrial packet
- radio (and land-line) techniques as a hobby pursuit."
-
- "My task for AMICON is to build a bibliography of articles
- regarding protocol design for use by the group. The AMRAD
- paper [Editors Note: AMRAD, May 1980; 'Protocol' by David W.
- Borden with an article by Bob Carpenter] was, in fact, sent
- to me by the AMICON chairman so that I might include your
- references in my bibliography. As a result of this task, I
- have been doing quite a bit of reading in the field. The
- thing that strikes me as odd is the fact that so many people
- are involved in this pursuit but everyone seems to be
- working in a vacuum, or at least with little feedback
- between groups. This is partly due to the fact that we are
- all trying to design communications networks, for whatever
- purpose, without first having a common system, or medium,
- with which to compare notes."
-
- "I have been doing my "low profile" bit to try to cross-
- pollinate or cross-reference the people and groups who are
- most active in amateur packet switching techniques. It is in
- this spirit that I am writing to you. I would like to inform
- you that we are out here (which you may already know) and to
- invite you to help me with my self-appointed task of trying
- to get those of us most serious about packet communications
- talking to one another."
-
- "Please write or call if this interests you in any way and
- I'll see to it that your interest is made known to the rest
- of the AMICON group and to anyone else who will listen. I am
- particularly interested in learning of any reasonably
- inexpensive means by which we might correspond as a group
- (Telenet, EIES computer conference group discount, etc.)
- which you may be familiar with."
-
- Sincerely,
-
- Wally Linstruth
-
- Bob Carpenter, W3OTC
- 12708 Circle Drive
- Rockville, MD 20850
-
- cc:
- Vern 'RIP' Riportella, WA2LQQ, AMICON chairman
- David W. Borden, K8MMO, AMRAD Newsletter - PROTOCOL column
- Dave Caulkins, PCNET committee
- Hank Magnuski, KA6M, AMICON protocol committee
- Kelly Smith, SIG/M coordinator, CP/M-Net owner
-
- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-
- DDT WITH B: !!!
- ===============
-
- by: Michael J. Karas
-
- About a year ago I wrote an article for the Valley Computer
- Club newsletter that explained how to use Digital Research
- DDT in a mode to permit accessing alternate disk drives with
- the "I" command. The scheme consisted of poking a number
- into memory location 005CH to key the BDOS to the drive
- where the desired file would be found. The number scheme
- followed like this:
-
- 005CH = 00H --> use logged drive to find file
- 005CH = 01H --> use drive A: to find file
- 005CH = 02H --> use drive B: to find file
- 005CH = 03H --> use drive C: to find file
- 005CH = 04H --> use drive D: to find file
- etc., etc., .... etc.
-
- A few months later Kelly Smith, publisher of the CP/M Net
- News, Simi Valley, CA, placed a similar item in a CP/M tip
- of the month column so that more people could gain the
- knowledge of how to use DDT more efficiently. Since that
- time I have seen published documentation of the same idea in
- several other computer club newsletters and even Doctor
- Dobbs Journal. I don't know how many people have really
- discovered the use of the "poke a number into 05CH" idea but
- I have gradually decided that it was somewhat of a pain to
- do it all the time. Therefore I decided to fix DDT in a way
- that makes drive referencing possible in a direct manner
- with CP/M style syntax.
-
- The intended goal was to get two things out of the effort:
-
- (1) Make DDT easier to use, and
-
- (2) Put a new CP/M tip into the public domain for all you
- computer people to chew on for a awhile!!
-
- The following parts of this article describe a procedure to
- patch DDT Version 1.4 to permit use of the CP/M DDT "I"
- command in any of the following typical formats:
-
- A>
- A>DDT<cr>
- DDT VERS 1.4
- -IPROG.HEX <== Reference file "PROG.HEX" on
- default drive A:
- or,
-
- -IB:PROG2.ASC <== Reference file "PROG2.ASC" on
- file B:
-
- etc., etc.
-
- One may ask why DDT was not written to be used in the above
- manner in the first place when it only takes 37 more bytes
- to make it work. Well, Digital Research has already made
- their buck on the copy that you bought, so if you think you
- would like "B:" in the "I" command, then you will have to
- follow the following implementation procedure. Note that
- this patch has not been tried with CP/M DDT version 2.2 so
- its not known if the following patch instructions will work
- for versions other than 1.4.
-
- To implement the patch the first thing to do is to edit the
- following short program into a file called "DDTPATCH.ASM".
- You may use any editor as long as you carefully keep all
- those funny little numbers in the equates "EXACTLY" the
- same. The program should then be assembled into a ".HEX"
- file using an assembler.
-
- ;
- ;+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
- ; PATCH TO GIVE "I" COMMAND DRIVE SELECT CAPABILITY IN DDT
- ;+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
- ;
- ; PATCH FOR DDT VERSION 1.4
- ;
- TPA EQU 00100H ;START OF TRANSIENT PROGRAM AREA
- ;
- PATCH EQU 00904H ;LOCATION OF INTERNAL DDT PATCH
- ;(IN ABSOLUTE DDT IMAGE)
- ;
- FETCHR EQU 00BD7H ;LOCATION FOR FETCH CHARACTER ROUTINE
- ;(IN ABSOLUTE DDT IMAGE)
- ;
- ENDCHK EQU 0091CH ;LOCATION IN DDT TO ENTER "I" CMD LOOP
- ;(IN ABSOLUTE DDT IMAGE)
- ;
- ENDDDT EQU 00FD0H ;END LOCATION OF DDT 1.4
- ;(IN ABSOLUTE DDT IMAGE)
- ;
- FCB EQU 0005CH ;LOCATION OF DEFAULT FCB
- ;
- ORG TPA+1 ;FIX OLD DDT MODULE SIZE
- ;
- DW 0FB6H+063 ;NEW MODULE SIZE WITH END PATCH
- ;
- ORG PATCH+200H ;OFFSET ASSEMBLY FOR INTERNAL PATCH
- ;
- JMP COLNCK-200H;JUMP TO PROCESS COLON CHECK
- ;
- DRDONE:
- XRA A
- STA FCB+020H ;CLEAR FCB RECORD COUNT
- ;
- ;CODE TO BE PATCHED IN AT END OF DDT IMAGE. THIS ROUTINE CHECKS
- ;FOR A ":" AS THE SECOND CHARACTER IN THE "I" COMMAND STRING.
- ;IF PRESENT THE LOWER FOUR BITS OF FIRST CHARACTER ARE USED AS
- ;A DRIVE SELECT DESIGNATOR.
- ;
- ORG ENDDDT+0200H
- ;
- COLNCK:
- CALL FETCHR ;GET FIRST CMMAND CHARACTER
- MOV B,A ;SAVE FIRST IN (B)
- CALL FETCHR ;GET SECOND CHARACTER
- CPI ':' ;CHECK IF SECOND IS COLON
- JZ SETDRV-0200H ;IF SO THEN GO SETUP DRIVE SELECT
- LXI H,FCB+1 ;SET PARAMETERS FOR NORMAL
- MOV M,B ;PUT FIRST CHARACTER INTO FCB
- INX H
- MVI C,08H ;SET OTHER PARAMETERS FOR NORMAL
- MOV B,A ;SAVE SECOND CHAR AWHILE
- XRA A ;CLEAR TO DEFAULT DRIVE
- STA FCB
- MOV A,B ;GET SECOND CHARACTER BACK AGAIN
- JMP ENDCHK ;GO BACK INTO NORMAL DDT "I" LOOP
- ;
- SETDRV:
- MOV A,B ;USE FIRST CHARACTER AS DRIVE
- ANI 0FH ;LOWER FOUR BITS ONLY
- STA FCB ;SET SELECTED DRIVE NUMBER
- JMP DRDONE-0200H ;BACK TO BEGIN NORMAT "I" COMMAND
- ;
- END
- ;
-
- Once you have made the ".HEX" file, then put a copy of it
- on a CP/M system disk along with your copy of DDT version
- 1.4. Boot up the system disk on drive A: and carefully
- follow the installation procedure below. If you are not
- currently familiar with the operation of DDT now would be a
- good time to get the manual out and read it. We will be
- using DDT to make the patched copy of itself. The sequence
- below must be followed exactly in order. The notation <cr>
- below indicates that you should type carriage return. The
- part of the text that the system types versus what you type
- will become obvious as you fire up DDT to do the patch
- process.
-
- A>
- A>DDT<cr> <== Invoke DDT
- DDT VERS 1.4
- -IDDT.COM<cr> <== Read in copy of DDT.COM
- -R<cr>
- NEXT PC
- 1400 0100
- -S12D6<cr> <== Change bit map for patch
- 12D6 90 92<cr>
- 12D7 04 .<cr>
- -S13B0<cr> <== Add new bytes to bit map
- 13B0 00 22<cr>
- 13B1 00 10<cr>
- 13B2 00 00<cr>
- 13B3 00 10<cr>
- 13B4 00 08<cr>
- 13B5 00 .<cr>
- -M11B6,1400,1A00<cr> <== Move bit map out of way
- -IDDTPATCH.HEX<cr>
- -R<cr> <== Overlay DDT.COM with patch
- NEXT PC
- 1400 0000
- -M1A00,2000,11F5<cr> <== Move bit map into place
- -^C <== Exit DDT to system with ctl-C
- A>SAVE 19 DDTP.COM <== Save patched DDT.COM
- A>
-
- You now have a copy of DDT that is patched to permit the
- use of drive designators in the DDT "I" command. For the
- patch to work a colon must be entered as the second
- character of the file name field of the normal "I" command
- syntax. The drive designatior can be most any ASCII
- character except "." or "cr". The patch simply strips out
- the lower four bits of your entered ASCII character to use
- as the drive code in FCB location 05CH. This permits any of
- 16 drives to be selected. If the colon does not appear as
- the second input character then the "I" command works just
- like it always used to. Have fun !!!!
-
- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-
- Running Submit Files from Disks other than A:
- =============================================
-
- by: Leor Zolman
-
- For a long time, I have been frustrated by "accidentally"
- submitting a submit file while being logged in to a disk
- other than A:, and having a magical "$$$.SUB" appear instead
- of having my submit file processed. Having gotten my hard
- disk up, and being forced to leave my system on floppies and
- use the hard disk as C: and D:, I found myself really
- missing the ability to do submits...
-
- As a first solution to the problem, I tried going to A: and
- writing a submit file that started with C:, just to see if
- it would take it. Yes! It did let me log in to C: as the
- first thing in a submit file, but I still had to go to A: to
- submit it. Could there possibly be a way to do a submit on
- C: without ever leaving C: ?
-
- --- YES !! ---
-
- If you DDT or SID SUBMIT.COM, you'll notice that the FCB
- area for the temporary file that SUBMIT.COM creates
- ($$$.SUB) has its first byte set to 00. That means that the
- $$$.SUB file will always be written to the currently logged
- disk, EVEN THOUGH IT HAS NO MEANING UNLESS IT IS WRITTEN
- TO A: (smart move, Digital Research...another of many!).
- SOOOO...my simple solution was to change that 00 leading
- byte of the FCB to 01. This causes $$$.SUB to always be
- written to A:, no matter which disk the submit is submitted
- from. Now I can be on C: and do a submit as easily as if I
- were on A:.
-
- I hope this helps some of you out there who've been
- frustrated by the same problem. Incidentally, the location
- to patch in the 2.2 SUBMIT.COM program is: 05BB hex (change
- from 00h to 01h).
-
- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-
- A Simple Program to Calculate Modem Transfer Time
- =================================================
-
- by: Kelly Smith, CP/M-Net "SYSOP"
-
- Here's a simple program to determine the transfer time in
- minutes, to or from a RCPM system. Very handy in determining
- the charges from Ma' Bell (or whatever telephone system you
- use) when transferring some really huge files...
-
- 10 REM File Transfer Rate Program for RCPM's, by Kelly Smith
- 20 REM
- 30 REM This program may be used by a RCPM user to determine
- 40 REM the total time in minutes to transfer files to or from
- 50 REM a RCPM system. Time is rounded down to the nearest
- 60 REM minute, but detailed information may be obtained by
- 70 REM removing the 'REM's in the following code. This program
- 80 REM is compatible with Microsoft BASIC, and will compile to
- 90 REM a 11 kilobyte (Gag!) file utilizing BASCOM.
- 100 REM
- 110 PRINT:INPUT "What is the Baud Rate (60 to 1200)";B
- 120 IF B<>60 AND B<>110 AND B<>300 AND B<>450 THEN GOTO 140
- 130 GOTO 180
- 140 IF B<>600 AND B<>710 AND B<>1200 THEN GOTO 160
- 150 GOTO 180
- 160 PRINT:PRINT"+++ Invalid Baud Rate +++":PRINT
- 170 PRINT"Must be 60, 110, 300, 450, 600, 710, or 1200 Baud!":GOTO 110
- 180 INPUT "What is the File Size in kilobytes";S
- 190 IF S<1 THEN GOTO 180
- 200 S=S*1024:T=S/(B/10):TM=T/60
- 210 REM PRINT:PRINT"Total number of characters in this file is";S
- 220 REM PRINT"This file will take";T;"seconds"
- 230 REM PRINT"Which equals";TM;"minutes"
- 240 PRINT:PRINT"Transfer time will be approximately";
- 250 T=INT(TM):IF T>1 THEN PRINT T "minutes" ELSE PRINT" 1 minute""
-
- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-
- CP/M-Net "Tip-of-the-Month"
- ===========================
-
- Patch to CP/M 2.x to Display User Number in Drive Prompt
- ========================================================
-
- by: Bruce Kendall and Bruce Ratoff
- (additional comments by: Kelly Smith)
-
- Are you annoyed with CP/M 2.x's USER command, that there is
- no way of indicating which USER area you are currently in?
-
- This patch solves this problem by displaying the USER
- number in hex ( a single character since user number 0 - 15
- are valid) between the drive name letter and the '>'. That
- is, a user logged into user area number 4 would see the
- standard CP/M prompt (modified by this patch) as:
-
- A4> ...instead of just A>
-
- Enter the following listing with your favorite flavor of
- editor, assemble, and then 'GEN' a new CP/M system image as
- you normally would with DDT...for example:
-
- A>ddt cpm56.com<cr> <--- load system image you made with MOVCPM
- DDT VER 2.2 <--- DDT announcing itself...
- NEXT PC
- 2300 0100
- -iboot56.hex<cr> <--- your disk boot loader
- -r900<cr> <--- read it in at 900 hex
- -ibios56.hex<cr> <--- your system BIOS
- -r5580<cr> <--- offset required for a 56k system
- -iuser#.hex<cr> <--- the USER NUMBER patch
- -r5580<cr> <--- offset required for a 56k system
- -g0<cr> <--- exit DDT, and return to CP/M
- A>sysgen<cr> <--- SYSGEN the disk
- SYSGEN VER 2.0 <--- SYSGEN announcing itself...
- SOURCE DRIVE NAME (OR RETURN TO SKIP)<cr> <--- return
- DESTINATION DRIVE NAME (OR RETURN TO REBOOT)A<cr> <--- A: disk
- DESTINATION DRIVE NAME (OR RETURN TO REBOOT)<cr> <--- reboot
- A>
-
- Now 'cold boot' your system, and you will see the new USER
- number prompt:
-
- A0>
-
- Here's the USER NUMBER patch, and be sure and set 'msize'
- for YOUR CP/M system size and use YOUR offset value when
- setting this up!
-
- msize equ 56 ; CP/M system size in kilobytes
- ;
- ; You MUST set this value to your
- ; CP/M system size
-
- delta equ 000h ; offset from standard CP/M size:
- ;
- ; This would be set to 400h if
- ; the 20k CP/M was actually a 19k
- ; CP/M (when compared to the std
- ; 20k CP/M described in the CP/M
- ; manuals from Digital Research).
-
- bias equ (msize-20)*1024-delta ; offset from 20k CP/M
- ccp equ 3400h+bias
-
- offset equ 980h-ccp; offset used with DDT in system
- ; configuration (assumes that the
- ; 'CCP' occures at 980h in the
- ; sysgen memory image)
-
- cout equ ccp+8ch ; CCP console output routine
- gtusr equ ccp+113h; CCP get user number routine
-
- org ccp+38dh
- ;
- call patch ; this was a CALL COUT
- ;
- org ccp+15f0h ; patch area at end of BDOS
- ;
- patch: call cout ; output character in A to console
- call gtusr ; get user number
- adi 90h ; use Intel Hex/ASCII trick
- daa
- aci 40h
- daa
- jmp cout ; print out and return
- ;
- end
-
- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++