1� 808� an� Z8� assembl� languag� programming
2) CP/M 2.2
3) the CP/M SYSGEN procedure and how to replace the
operating system on the system tracks of the
target system
SYSGEN Image SYSGEN Image
Value Conventional CP/M Morrow CP/M
xxxxH 800H ~ 980H
BOOT = BASE + xxxxH 900H 1080H
ZCPR2 = BOOT + 80H 980H 1100H
BDOS = ZCPR2 + 800H 1180H 1900H
BIOS = BDOS + 0E00H 1F80H 2700H
End of Operating System ????H 2DFFH
Refer back to Diagram 1 for clarification.
The installation process involves three steps:
1) Configuring your BIOS and setting the ZCPR2 options
2) Overlaying the CCP with ZCPR2 and the old BIOS with
the new BIOS in the SYSGEN Image
3) Placing the new SYSGEN Image onto the Operating
System tracks of the disk
ZCPR� i� t� b� installe� o� � workin� CP/� 2.� system�� Th� �
specific commercial software required to do this installation is:
1) A working CP/M 2.2 System
2) the MAC assembler of Digital Research
(another assembler may be substituted, but source
code modification to ZCPR2 may be required to do
an installation with an assembler other than MAC)
3) a debugger, like DDT, for the overlay process
4) a disk utility, like SYSGEN, to be used to place the
operating system image onto the operating system
tracks on disk
Th� non-commercia� softwar� require� fo� ZCPR� installatio� �
is:
CP/M 2.2 - based system (or ZCPR2 - based system)
8080 or Z80 microprocessor
32K bytes of memory
110K bytes of disk space for source, BAK, and HEX files
computer terminal
The hardware requirements for running ZCPR2 are:
ZCPR2 - based system
Z80 microprocessor
48K bytes of memory
110K bytes of disk space (recommended minimum)
computer terminal
1) Where it is located when it is executed
2� Wher� i� i� locate� i� th� SYSGE� Imag� or� fo�
system� whic� don'� suppor� SYSGEN� wher� hi� CC�
is located on disk and how to place the new ZCPR2
on top of it
B1>;
B1>; Sample terminal session which illustrates ZCPR2 installation
B1>; This is done from a running ZCPR2 system and shows some of
B1>; the extended features of ZCPR2
B1>;
B1>
B1>;
B1>; Step 1a -- SYSGEN
B1>;
B1>hdsysgen
SYSGEN VER 2.2
SOURCE DRIVE NAME (OR RETURN TO SKIP)a
SOURCE ON A, THEN TYPE RETURN
FUNCTION COMPLETE
DESTINATION DRIVE NAME (OR RETURN TO REBOOT)
B1>save 45 cpzm.cpm
B1>;
B1>; Step 1b -- Run CCPLOC to get addresses
B1>;
B1>ccploc
CCPLOC Version 1.0
CP/M Element Base Page Base Address
------------ --------- ------------
CCP BDH BD00H
BDOS C5H C506H
BIOS D3H D300H
B1>;
B1>; Note the files I am working with
B1>;
B1>xdir
XDIR III, Version 1.3 Vertical Listing by File Type and Name
Disk: B User: 1, File Attributes: Non-System
Filename.Typ Size K Filename.Typ Size K Filename.Typ Size K
-------- --- ------ -------- --- ------ -------- --- ------
CHBIOSZ .ASM 52 CPZM .CPM 12 ZCPRHDR .LIB 12
ZCPR .ASM 56 CBIOSHDR.LIB 12
5 Files Occupying 144K, 33 Files on Disk and 4360K Free
B1>
B1>;
B1>; Step 2 -- Edit ZCPRHDR.LIB and set all options and values
B1>;
B1>ed zcprhdr.lib
-- Detail Left Out --
B1>
B1>;
B1>; Step 3 -- Edit CHBIOSZ.ASM and CBIOSHDR.LIB and set Cold
B1>; Boot Inits
B1>; You will probably only have to deal with one BIOS file
B1>;
B1>ed chbiosz.asm
-- Detail Left Out --
B1>ed cbioshdr.lib
-- Detail Left Out --
B1>; I'll erase the backup files now
B1>era *.bak
CHBIOSZ .BAK | ZCPRHDR .BAK | CBIOSHDR.BAK
B1>
B1>;
B1>; Step 4 -- Assemble ZCPR2
B1>; I will also run TIME to show you how long it takes
B1>;
B1>time;mac zcpr2 $pz sz;time
TIME Version 1.1 1:43:38 AM on Thursday December 16, 1982
CP/M MACRO ASSEM 2.0
C4FC <-- Note the ZCPR2 MUST end before BDOS
01CH USE FACTOR <-- begins!
END OF ASSEMBLY
TIME Version 1.1 1:45:18 AM on Thursday December 16, 1982
B1>
B1>;
B1>; Step 5 -- Assemble BIOS
B1>;
B1>time;mac chbiosz $pz sz;time
TIME Version 1.1 1:49:15 AM on Thursday December 16, 1982
CP/M MACRO ASSEM 2.0
FCE0
01AH USE FACTOR
END OF ASSEMBLY
TIME Version 1.1 1:50:32 AM on Thursday December 16, 1982
B1>xdir
XDIR III, Version 1.3 Vertical Listing by File Type and Name
Disk: B User: 1, File Attributes: Non-System
CPZM .CPM 12
7 Files Occupying 160K, 35 Files on Disk and 4344K Free
�
B1>;
B1>; Step 6 -- Run DDT and locate the CCP
B1>;
B1>ddt cpzm.cpm
DDT VERS 2.0
NEXT PC
2E00 0100
-d900,90f <-- Start looking around here
0900 31 80 E7 3E 06 3C 3C FE 1B CA 00 C2 DA 11 E7 D6
-da00,a0f
0A00 31 00 01 01 01 0C C5 CD 0F E4 21 00 BE 11 00 04
-db00,b0f
0B00 31 00 01 01 01 11 C5 CD 0F E4 21 00 C0 11 00 02
-db80,b8f
0B80 31 00 01 01 09 01 CD A8 00 21 00 D2 11 00 C2 0E
-- Detail Left Out --
-d1100 <-- I found it at 1100H; note the 2 JMP's
1100 C3 FF BD C3 FB BD 50 10 20 20 20 20 20 20 20 20
1110 20 20 20 20 20 20 20 20 00 00 00 00 00 00 00 00
1120 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
-- Detail Left Out --
-h1100,bd00
CE00 5400 <-- Integration Offset is 5400 for my system
-^� <-- Retur� t� CP/M� � kno� tha� CPRLO� wil� be
BD00H and the IMAGE offset is 1100H
B1>
B1>;
B1>; Steps 7 and 8 -- Perform integration of ZCPR2 and BIOS
B1>;
B1>ddt cpzm.cpm <-- Edit CP/M Image
DDT VERS 2.0
NEXT PC
2E00 0100
-h1100,800 <-- Compute End Address of CCP
1900 0900 <-- (CCP is 800H bytes long)
-f1100 18ff 0 <-- Zero Fill Area (I like to do this)
-izcpr2.hex <-- Overlay ZCPR2
-r5400 <-- Offset Computed Above
NEXT PC
2E00 0000
-h1900,e00 <-- Compute Beginning of BIOS
2700 0B00
-f2700 2dff 0 <-- Zero Fill Area (I like)
-ichbiosz.hex <-- Overlay BIOS
-r5400 <-- Offset Computed Above
NEXT PC
2E00 0000
-^C <-- Done
B1>;
B1>; Step 9 -- Perform SYSGEN
B1>;
B1>save 2dh cpzm.cpm <-- Save file (note HEX page count)
Erase CPZM .CPM?y
B1>hdsysgen <-- SYSGEN to disk from memory
SYSGEN VER 2.2
SOURCE DRIVE NAME (OR RETURN TO SKIP) <-- Skip
DESTINATION DRIVE NAME (OR RETURN TO REBOOT)a <-- Select A
DESTINATION ON A, THEN TYPE RETURN
FUNCTION COMPLETE
DESTINATION DRIVE NAME (OR RETURN TO REBOOT) <-- REBOOT!
-- Settings --
ERAOK ERAV Feature
FALSE anything ERA will not ask to verify before
performing the erase
TRU� FALS� ER� wil� alway� as� t� verif�
before performing the erase
TRUE TRUE ERA will ask to verify before
performing the erase only if the
ERDFLG (recommended to be "V")
flag appears in the command line
after the file spec
;
; Cold Boot Routine for CHBIOSZ
; This routine allocates and initializes buffer space as
; required to implement ZCPR2 as recommended.
;
cboot:
lxi sp,tpa ;Set up stack
;
; Section CB-1: Init Multiple Command Line Buffer
;
if multcmd ;Multiple Commands Allowed
lxi d,cmdset ;Set buffers for Multiple
; Command Processing
lxi h,clbase ;Command Line Base
call mover ;Copy an arbitrary 128 bytes
endif
;
; Section CB-2: Init Memory-Based Named Directory
;
if ndir ;Named Directory Based in Memory
lxi d,ndvals ;Initial Values in Directory
lxi h,ndbase ;Named Directory Base
call mover ;Copy an arbitrary 128 bytes
endif
;
; Section CB-3: Init IOBYTE and Redirectable I/O Drivers
;
mvi a,intioby ;Initialize the I/O Byte
sta iobyte
lxi d,iodrivers ;Default I/O Drivers
lxi h,iobase ;Base Address of Drivers
call mover ;Copy an arbitrary 128 bytes
;
; Section CB-5: Print Prompt and Select User/Disk
;
lxi h,prompt ;Prep for sending signon message
call message ;Send the prompt
mvi a,0 ;Select user 0 and disk A
sta cpmdrv
sta cdisk
jmp gocpm
...
;
; Copy An Arbitrary 128 Bytes from DE to HL
;
mover:
mvi b,128
movlop:
ldax d
mov m,a
inx h
inx d
dcr b
jnz movlop
ret
...
;
; Primitive Redirectable I/O Drivers which are loaded to
; initially support I/O. They are copied into a reserved
; area of memory (I have allowed 1K for this) starting at
; IOBASE (my base address is 0DC00H). These drivers
; provide only console I/O and disable the redirection
; facilities. During the course of work, these primitive
; drivers are overlaid by the IOLOADER program with much
; more sophisticated drivers.
;
; Note the I use Z80 Relative Jump Instructions here because
; this code is not executed where it is stored. Any absolute
; jumps would have to have their addresses adjusted after
; the routines had been copied.
;
uart equ 0E3F9H ;UART Address
rda equ 4 ;UART RDA Bit
iodrivers:
jr ioerror ;set no Status Routine
db 0 ;Fill 3 bytes
jr ioerror ;set no Select Routine
db 0 ;Fill 3 bytes
jr ioerror ;set no Namer Routine
db 0 ;Fill 3 bytes
ret ;No Terminal Init Necessary
db 0,0 ;Fill 3 bytes
jr ustat ;Console Input Status
db 0 ;Fill 3 bytes
jmp djcin ;Console Input Char in PROM
jmp djcout ;Console Output Char in PROM
jmp djcout ;List Output Char in PROM
jmp djcout ;Punch Output Char in PROM
jmp djcin ;Reader Input Char in PROM
mvi a,0ffh ;List Status Ready
ora a ;Set Flags
ret ;Done with List and No New I/O Routine
ioerror:
xra a ;No Device Assignments May be Made
ret
ustat:
lda uart ;Get status byte
cma ;Inverted Logic
ani rda ;RDA?
rz
mvi a,0ffh ;OK Flag
ret
�
...
;
; Initial Command Line in Multiple Command Line Buffer
; Only the first five bytes are required, the fifth byte being
; a binary 0 to indicate an empty command line, if you do not
; wish to have an initial command
;
if multcmd
clbase equ 0ff00h ;base address of buffer
buflen equ 200 ;size of buffer in bytes
cmdset:
dw clbase+4 ;pt to first char
db buflen ;size of buffer
db 0 ;don't care value
db 'STARTUP' ;command to run on Cold Boot
db 0 ;end of Cold Boot Command
endif
...
;
; Initial Contents of Memory-Based Named Directory Buffer
; Note: this defines an empty Named Directory Buffer
;
if ndir ;turned on?
ndbase equ 0fd00h ;base address of buffer
ndvals:
db 50 ;allow 50 entries
db 0 ;no entries stored (entry count)
db 0 ;dummy for no disk
db 0 ;dummy for no user
db 0 ;dummy for no name
endif
...
;
; Initial External Path
; The contents of the path are outlined in the comments
;
pathbase equ 40h ;base address of first byte of path
path:
db '$$' ;current disk and current user
db '$',0 ;current disk and user 0
db 1,'$' ;disk A and current user
db 1,0 ;disk A and user 0
db 0 ;end of path
;
� Note� I� i� no� necessar� t� initializ� an� othe� buffers�
; such as EXTFCB, since their values will be initialized by
; ZCPR2
;
�
Thi� sampl� provide� � fairl� goo� mode� fo� configuratio� �
o� th� Col� Boo� Routin� i� orde� t� implemen� ZCPR�� a� recom�
mended� Not� tha� fou� feature� requir� initialization:
1) Multiple Command Line Buffer
2) Memory-Based Named Directory Buffer
3) Command Search Path
4) Redirectable I/O Drivers
5.1 Installation Note: Multiple Command Line Buffer
The structure of the Multiple Command Line Buffer is:
Bytes 0 and 1: Address of Next Char in Buffer
Byte 2: Size of Buffer
Byte 3: Dummy used by BDOS Readln Function 10
Bytes 4 to n: Buffer Contents, terminated by binary 0
Byte 0: Maximum number of entries
Byte 1: Number of entries stored
Byte 2: First Disk Number
Byte 3: First User Number
Bytes 4-11: First Directory Name
iodrivers:
jr ioerror ;no Status Routine
db 0 ;Fill 3 bytes
jr ioerror ;no Select Routine
db 0 ;Fill 3 bytes
jr ioerror ;no Namer Routine
db 0 ;Fill 3 bytes
ret ;Initialize Terminal
db 0,0 ;Fill 3 bytes
jr ustat ;Console Input Status
db 0 ;Fill 3 bytes
jmp djcin ;Console Input Char
jmp djcout ;Console Output Char
jmp djcout ;List Output Char
jmp djcout ;Punch Output Char
jmp djcin ;Reader Input Char
mvi a,0ffh ;List Status Ready
ora a ;Set Flags
ret ;New I/O Driver Installation Routine
ioerror:
xra a ;No device assignments
ret
ustat:
lda uart ;Get status byte
cma ;Inverted Logic
ani rda ;RDA?
rz
mvi a,0ffh ;OK Flag
ret
Page 0 (Base Page):
Location Contents
0 - 2 JMP to BIOS Warm Start at D300
3 IOBYTE
4 UDFLAG - User Number in Upper 4 Bits; Disk
Number (A=0) in Lower 4 Bits
5 - 7 JMP to BDOS at C506
8 - 37 Unused Interrupt Vectors
38 - 3A RST 7 used by DDT, ZSID, and others
3B Wheel Byte
3C - 3F Unused
40 - 5B Default Command Search Path (up to 13 elts
and terminating 0)
5C - 6B First FCB Half
6C - 7B Second FCB Half
7C CR Field if 5C-7B used as one complete FCB
7D - 7F Random Record Number
80 - FF Default DMA Buffer
Belo� BD00� Optiona� ZE� Monito� an� Tex� (Variabl� Size)
Address BD00: Beginning of ZCPR2
Address C500: Beginning of BDOS
Address D300: Beginning of BIOS
Address DC00: Reserved Buffer Area
Address E000: Disk PROM
Address E400: Disk RAM
Address E800 - EFFF: Redirectable I/O Drivers (2K Avail)
Address F000 - F600: Free Space Optionally Used by
Redirectable I/O Drivers
Address F5D0 - F5FF: ZCPR2 Stack (48 Bytes)
Address F600 - FCFF: Buffer Space Used by BIOS
Address FD00 - FEFF: Memory-Based Named Directory Buffer
(512 Bytes for 50 Entries)
Address FF00 - FFCF: Multiple Command Line Buffer
(200 Bytes for text + 4 for
initial buffers + Dead Space)
Address FFD0 - FFFF: ZCPR2 External FCB
Th� followin� GENINӠ sessio� illustrate� th� proces� o� �
utilit� installatio� extensively�� Comment� ar� note� ou� t� th� �
right side as text preceeded by the "<<" symbol.
B4>genins genins << Install GENINS first
GENINS Version 2.1 << This is probably NOT the version
<< number which will be distributed
<< with the ZCPR2 System
GENINS -- General Installation Program for ZCPR2 Utilities
Ready to Set Default Values << It has found and read in the
<< parameter section of the file
File Being Installed: GENINS .COM
** GENINS Flag/Value Setup ** << Menu Follows
Select Standard Flags and Values
(* indicates unnecessary option) --
P Print Flags and Values S Setup ALL Flags and Values
< Save All Flags/Values > Restore All Flags/Values
Q Quit and Do Not Update X Exit and Optionally Update
0 Setup Named Directory Data 5 Set Disk Allowed Flag
1 Setup External Path Data 6 Set User Allowed Flag
2 Setup Multiple Command Line 7 Setup Priv User Data
3 Set Max Disk 8 Set Current User/Disk Data
4 Set Max User 9 Set File DMA Address
�Setup Command (? for Menu)? P << Print current params
**** Default Flag/Value Settings ****
Enable External Paths: Yes External Path Address: 0040 Hex
Internal Path is -- Empty
Enable Multiple Command Line Buffer: Yes Buffer Address: FF00 Hex
Maximum Disk: D Maximum User Number: 31
Disk Specification Allowed: Yes User Spec Allowed: Yes
Base of Privileged User Areas: 10 Password: chdir
Current User/Disk Indicator: $ DMA Address for Disk I/O: 0080 Hex
Address of Memory-Resident Named Directory Buffer: FD00 Hex
Number of Named Dirs Allowed: 64 Named Dir File: NAMES .DIR
Setup Command (? for Menu)? S << Set ALL Params in sequence
Address of Memory-Resident Named Directory Buffer: FD00 Hex
Number of Named Dirs Allowed: 64 Named Dir File: NAMES .DIR
** Setup Questions **
1 Address of Memory-Resident Named Directory Buffer
Enter Hex Number or <RETURN> = None? fd00
2 Number of Named Directories Permitted?
Enter Decimal Number or <RETURN> = 64?
3 Name of Named Directory File?
Enter only File Name and Type -- DIR: form will be ignored
Directory File Name (<RETURN> = NAMES .DIR)?
Enable External Paths: Yes External Path Address: 0040 Hex
Internal Path is -- Empty
** Setup Questions **
1 Enable External Paths (Y/N/other=Y)?
1a Address of External Path in Hex (<RETURN> = 0040 Hex)?
2 Enable Internal Path (Y/N/other=Y)?
2a Define Internal Path Using Symbolic Notation --
1. Path Element (<CR>=Done)? a$
2. Path Element (<CR>=Done)? a15
3. Path Element (<CR>=Done)?
Enable Multiple Command Line Buffer: Yes Buffer Address: FF00 Hex
** Setup Questions **
1 Enable Multiple Command Line Buffer (Y/N/other=Y)?
1a Address of Multiple Command Line Buffer
Enter Hex Number or <RETURN> = FF00 Hex?
Maximum Disk: D Maximum User Number: 31
** Setup Questions **
1 Maximum Disk Allowed? B
Maximum User Number: 31
** Setup Questions **
1 Maximum User Number Allowed (<RETURN> = 31)? 15
Disk Specification Allowed: Yes User Spec Allowed: Yes
** Setup Questions **
1 Specification of Disk Allowed (Y/N/other=Y)?
�User Spec Allowed: Yes
** Setup Questions **
1 Specification of User Allowed (Y/N/other=Y)?
Base of Privileged User Areas: 10 Password: chdir
** Setup Questions **
1 Base of Privileged User Areas (<RETURN> = 10)?
2 Privileged User Password? chdir
Current User/Disk Indicator: $ DMA Address for Disk I/O: 0080 Hex
** Setup Questions **
1 Current User/Disk Indicator? $
DMA Address for Disk I/O: 0080 Hex
** Setup Questions **
1 DMA Address for Disk I/O
Enter Hex Number or <RETURN> = 0080 Hex?
Setup Command (? for Menu)? P << Print new settings
**** Default Flag/Value Settings ****
Enable External Paths: Yes External Path Address: 0040 Hex
Internal Path is -- A$: --> A 15:
Enable Multiple Command Line Buffer: Yes Buffer Address: FF00 Hex
Maximum Disk: B Maximum User Number: 15
Disk Specification Allowed: Yes User Spec Allowed: Yes
Base of Privileged User Areas: 10 Password: chdir
Current User/Disk Indicator: $ DMA Address for Disk I/O: 0080 Hex
Address of Memory-Resident Named Directory Buffer: FD00 Hex
Number of Named Dirs Allowed: 64 Named Dir File: NAMES .DIR
Setup Command (? for Menu)? / << Any invalid cmd gives menu
File Being Installed: GENINS .COM << Reminder of file name
** GENINS Flag/Value Setup **
Select Standard Flags and Values
(* indicates unnecessary option) --
P Print Flags and Values S Setup ALL Flags and Values
< Save All Flags/Values > Restore All Flags/Values
Q Quit and Do Not Update X Exit and Optionally Update
0 Setup Named Directory Data 5 Set Disk Allowed Flag
1 Setup External Path Data 6 Set User Allowed Flag
2 Setup Multiple Command Line 7 Setup Priv User Data
3 Set Max Disk 8 Set Current User/Disk Data
4 Set Max User 9 Set File DMA Address
Setup Command (? for Menu)? < << Save params
Setup Command (? for Menu)? X << Exit and Update
Do you want to save changes (Y/N/other=Y)? Y << Yes, Update
Please Provide Name of Output File
Nam� o� Fil� (<CR>=GENIN� .COM)�� genins� <�� Ne�� fil� �
Nam� o� Outpu� Fil� i� GENINS� .CO� -- Verif� (Y/N/other=Y)�
Writing File GENINS2 .COM to Disk --
Reading Block 95 << Numbers flash by as GENINS works
Writing Block 95
Please Provide Name of File to Install << Ready to Continue
Name of File (<CR>=Abort)? mcopy << New File
Ready to Set Default Values
File Being Installed: MCOPY .COM
** GENINS Flag/Value Setup **
Select Standard Flags and Values
(* indicates unnecessary option) --
P Print Flags and Values S Setup ALL Flags and Values
< Save All Flags/Values > Restore All Flags/Values
Q Quit and Do Not Update X Exit and Optionally Update
0 Setup Named Directory Data 5 Set Disk Allowed Flag
1 Setup External Path Data 6 Set User Allowed Flag
2 Setup Multiple Command Line 7 Setup Priv User Data
3 Set Max Disk 8 Set Current User/Disk Data
4 Set Max User 9 Set File DMA Address
A Set MCOPY Special Default Values
Setup Command (? for Menu)? > << Restore params from
<< previous setting
Setup Command (? for Menu)? P << Print
**** Default Flag/Value Settings ****
Enable External Paths: Yes External Path Address: 0040 Hex
Internal Path is -- A$: --> A 15:
Enable Multiple Command Line Buffer: Yes Buffer Address: FF00 Hex
Maximum Disk: B Maximum User Number: 15
Disk Specification Allowed: Yes User Spec Allowed: Yes
Base of Privileged User Areas: 10 Password: chdir
Current User/Disk Indicator: $ DMA Address for Disk I/O: 0080 Hex
Address of Memory-Resident Named Directory Buffer: FD00 Hex
Number of Named Dirs Allowed: 64 Named Dir File: NAMES .DIR
Verify by Default: Yes
Inspect by Default: No
Quiet by Default: No
Multiple Run by Default: No
Default Destination Disk/User: C 0:
Setup Command (? for Menu)? X << OK, so exit and update
Do you want to save changes (Y/N/other=Y)? N << No save
Please Provide Name of File to Install << New file
Name of File (<CR>=Abort)? wheel << File Name
Ready to Set Default Values
File Being Installed: WHEEL .COM
** GENINS Flag/Value Setup **
Select Standard Flags and Values
(* indicates unnecessary option) --
P Print Flags and Values S Setup ALL Flags and Values
< Save All Flags/Values > Restore All Flags/Values
Q Quit and Do Not Update X Exit and Optionally Update
0* Setup Named Directory Data 5* Set Disk Allowed Flag
1* Setup External Path Data 6* Set User Allowed Flag
2* Setup Multiple Command Line 7 Setup Priv User Data
3* Set Max Disk 8* Set Current User/Disk Data
4* Set Max User 9* Set File DMA Address
A Set WHEEL Byte Address << Note all the un-
<< necessary options and the
<< A option
Setup Command (? for Menu)? P
**** Default Flag/Value Settings ****
Base of Privileged User Areas: 10 Password: chdir
Address of Wheel Byte: 003B Hex
Setup Command (? for Menu)? X
Do you want to save changes (Y/N/other=Y)?
Please Provide Name of Output File
Name of File (<CR>=WHEEL .COM)? wheel2
Name of Output File is WHEEL2 .COM -- Verify (Y/N/other=Y)?
Writing File WHEEL2 .COM to Disk --
Reading Block 10
Writing Block 10
Please Provide Name of File to Install
Name of File (<CR>=Abort)?