home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
CP/M
/
CPM_CDROM.iso
/
cpm
/
news
/
cpmnet81.jqn
/
CPMNET81.JUN
Wrap
Text File
|
1985-02-09
|
28KB
|
762 lines
>>>>>>>>>>>>>>>>>>>>> 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
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++