mirror of
https://github.com/wwarthen/RomWBW.git
synced 2026-02-07 15:03:13 -06:00
Compare commits
7 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
99b8c0281e | ||
|
|
c754fcdb99 | ||
|
|
2148c3e1f7 | ||
|
|
cc51d012de | ||
|
|
ea547a012b | ||
|
|
8e535d53f4 | ||
|
|
5e08740456 |
@@ -1,4 +1,4 @@
|
||||
@echo off
|
||||
setlocal
|
||||
cd Source
|
||||
call BuildCommon %*
|
||||
|
||||
pushd Source && call BuildCommon && popd
|
||||
4
BuildImages.cmd
Normal file
4
BuildImages.cmd
Normal file
@@ -0,0 +1,4 @@
|
||||
@echo off
|
||||
setlocal
|
||||
|
||||
pushd Images && Build && popd
|
||||
@@ -1,9 +1,11 @@
|
||||
@echo off
|
||||
|
||||
setlocal
|
||||
|
||||
pushd Source && call Clean && popd
|
||||
pushd Images && call Clean && popd
|
||||
|
||||
if exist *.img del *.img /Q
|
||||
if exist debug.log del debug.log
|
||||
if exist *.log del *.log /Q
|
||||
|
||||
if exist Output\*.* del Output\*.* /Q
|
||||
|
||||
102
Doc/Build.txt
102
Doc/Build.txt
@@ -3,35 +3,45 @@ Building a Custom ROM
|
||||
|
||||
At present, the build environment assumes you are running
|
||||
a current version of Microsoft Windows (either 32-bit or
|
||||
64-bit).
|
||||
64-bit). Additionally, you will need Microsoft PowerShell.
|
||||
PowerShell is included in all distributions of Microsoft
|
||||
Windows starting with Vista. It is available as a free
|
||||
download for Windows XP from Microsoft
|
||||
|
||||
If you are using Linux, David Giles has contributed a Linux
|
||||
makefile that should work for you. Please read the
|
||||
LinuxBuild.txt file for more information.
|
||||
Other than PowerShell, all required tools are included in
|
||||
the distribution. You should not need anything other than
|
||||
what comes as part of Windows or as part of the distribution.
|
||||
|
||||
All required tools are included in the distribution. You
|
||||
should not need anything other than what comes as part of
|
||||
Windows or as part of the distribution.
|
||||
In summary, the process involves the 4 steps below. You must
|
||||
configure PowerShell prior to these steps, but this only needs
|
||||
to be done once.
|
||||
|
||||
In summary, the process involves the 4 steps below:
|
||||
The basic steps to create a custom ROM are:
|
||||
|
||||
1) Create/update configuration file
|
||||
|
||||
2) Update/Add/Delete any files you want incorporated in
|
||||
the ROM Disk
|
||||
|
||||
3) Run the build script (or makefile if you prefer) and
|
||||
3) Run the build scripts and
|
||||
confirm there are no errors.
|
||||
|
||||
4) Burn the resultant ROM image and try it.
|
||||
|
||||
The process is really very simple. In fact, you can
|
||||
essentially skip steps 1 & 2 if you want to try simply
|
||||
building one of the existing configurations.
|
||||
I strongly recommend that you initially SKIP steps
|
||||
1 & 2. Just try steps 3 & 4 to make sure you are
|
||||
able to build a ROM and test it in your hardware.
|
||||
|
||||
Each of the 4 steps above is described in more detail
|
||||
below.
|
||||
|
||||
Acquiring the Distribution
|
||||
--------------------------
|
||||
|
||||
Preparing PowerShell
|
||||
--------------------
|
||||
|
||||
|
||||
1. Create/Update Configuration File
|
||||
-----------------------------------
|
||||
|
||||
@@ -41,21 +51,22 @@ process. In order to customize your settings, you
|
||||
need to modify an existing configuration file or
|
||||
create your own.
|
||||
|
||||
If you look in the Source directory, you will see
|
||||
a series of files named config_xxxx_yyyy.asm. Each of
|
||||
Configuration files are found in the Source\BIOS\Config
|
||||
directory. If you look in the this directory, you will see
|
||||
a series of files named XXXX_yyyy.asm. Each of
|
||||
them corresponds to one of the standard configurations
|
||||
listed in the ROMList.txt file.
|
||||
|
||||
You have two choices. You can simply modify the existing
|
||||
configuration file that is closest to your situation, or
|
||||
you can copy it to a new config_xxxx_yyyy.asm file and modify
|
||||
you can copy it to a new XXXX_yyyy.asm file and modify
|
||||
that. I recommend that you copy one to your own name so
|
||||
that you will always have the unmodified standard configuration
|
||||
files left in place. So, for example, you could just
|
||||
copy config_ZETA_std.asm to config_ZETA_wayne.asm. You MUST
|
||||
name your config file as config_xxxx_yyyy.asm. The xxxx's
|
||||
must match your platform (N8VEM, ZETA, N8, S2I, or S100).
|
||||
The yyyy's can be whatever you want.
|
||||
copy ZETA_std.asm to ZETA_wayne.asm. You MUST
|
||||
name your config file as XXXX_yyyy.asm. The XXXX portion
|
||||
must match your platform (N8VEM, ZETA, ZETA2, N8, UNA).
|
||||
The yyyy portion can be whatever you want.
|
||||
|
||||
The config files are simply text files with various
|
||||
settings. Open your target config file with your
|
||||
@@ -83,30 +94,30 @@ ROM disk. The build process will determine
|
||||
which subdirectories to include files from based
|
||||
on the following rules:
|
||||
|
||||
First, all files from either std_512 or std_1024 will
|
||||
be incuded depending on on the size of the ROM you
|
||||
First, all files from either ROM_512KB or ROM_1024KB will
|
||||
be included depending on on the size of the ROM you
|
||||
are building. If you are building a 512KB ROM, then
|
||||
all the files from std_512KB will be included. If you
|
||||
are building a 1MB ROM, then all the files from std_1024KB
|
||||
will be included. Essentialy, the files in std_1204KB are
|
||||
a superset of the ones in std_512KB because there is more
|
||||
all the files from ROM_512KB will be included. If you
|
||||
are building a 1MB ROM, then all the files from ROM_1024KB
|
||||
will be included. Essentialy, the files in ROM_1204KB are
|
||||
a superset of the ones in ROM_512KB because there is more
|
||||
space available for the ROM drive.
|
||||
|
||||
Second, all files from the directory that corresponds to
|
||||
your configuration file will be included. If you build
|
||||
the "ZETA_std" configuration, all files in cfg_ZETA_std will
|
||||
the "ZETA_std" configuration, all files in ZETA_std will
|
||||
be added. Note that these files will be in addition
|
||||
to the files from the std_XXXKB directory.
|
||||
to the files from the ROM_XXXKB directory.
|
||||
|
||||
If you created your own config file (like config_ZETA_wayne.asm
|
||||
If you created your own config file (like ZETA_wayne.asm
|
||||
described above), you MUST create a subdirectory within
|
||||
the RomDsk directory and populate it with the files
|
||||
you want added. Normally, you would include the
|
||||
files from the original standard config. So, if
|
||||
you created config_ZETA_wayne.asm from config_ZETA_std.asm,
|
||||
you created ZETA_wayne.asm from ZETA_std.asm,
|
||||
then you would create a subdirectory in RomDsk called
|
||||
cfg_ZETA_wayne and copy all the files from cfg_ZETA_std to
|
||||
cfg_ZETA_wayne.
|
||||
ZETA_wayne and copy all the files from ZETA_std to
|
||||
ZETA_wayne.
|
||||
|
||||
3. Run the Build Process
|
||||
------------------------
|
||||
@@ -126,23 +137,22 @@ unless you renamed it.
|
||||
First, you will need to build the components that are
|
||||
common to all configurations. These components do not
|
||||
require any configuration. To build these, use the
|
||||
following commands and ensure that they complete
|
||||
following command and ensure it completes
|
||||
without error:
|
||||
|
||||
BuildZCPR-DJ
|
||||
BuildApps2
|
||||
BuildCommon
|
||||
|
||||
To run the main build and be prompted for required information,
|
||||
just enter "Build". You will be prompted for the information
|
||||
described below and the build should run. If an error is
|
||||
encountered, the build should stop and display an error
|
||||
in red text.
|
||||
To run the configuration specific build and be prompted
|
||||
for required information, just enter "Build". You will
|
||||
be prompted for the information described below and the
|
||||
build should run. If an error is encountered, the build
|
||||
should stop and display an error in red text.
|
||||
|
||||
If you immediately receive the error "the execution of
|
||||
scripts is disabled on this system", then you will need to
|
||||
change the PowerShell Execution-Polcy to "RemoteSigned".
|
||||
To do this, you need to right-click on FixPowerShell.cmd and
|
||||
choose "Run as Administrator" to make the change. If is
|
||||
choose "Run as Administrator" to make the change. It is
|
||||
critical that you right-click and use "Run as Administrator"
|
||||
or the change will not work (you will get an error
|
||||
indicating "Access to the registry denied" if you fail to
|
||||
@@ -154,7 +164,7 @@ which you will need to provide (don't worry, it is simple):
|
||||
Platform:
|
||||
|
||||
Respond with the name of the platform that you are targeting.
|
||||
It must be one of N8VEM, ZETA, N8, S2I, or S100.
|
||||
It must be one of N8VEM, ZETA, ZETA2, N8, or UNA.
|
||||
|
||||
Configuration:
|
||||
|
||||
@@ -170,7 +180,7 @@ ROM Size [512|1024]:
|
||||
Respond with either "512" for a 512KB ROM build or "1024" for a
|
||||
1MB ROM build. Only the two choices are possible at this time.
|
||||
It is important that you choose a ROM size that is no larger than
|
||||
the szie of the ROM you will ultimately be burning. This is
|
||||
the size of the ROM you will ultimately be burning. This is
|
||||
dependant on your hardware.
|
||||
|
||||
At this point, the build should run and you will see output related
|
||||
@@ -180,7 +190,7 @@ cause the build to stop immediately and display an error message
|
||||
in red.
|
||||
|
||||
You will see some lines in the output indicating the amount of
|
||||
space variouis components have taken. You should check these
|
||||
space various components have taken. You should check these
|
||||
to make sure you do not see any negative numbers which would
|
||||
indicate that you have included too many features/drivers for
|
||||
the available memory space. Here are examples of the lines
|
||||
@@ -199,11 +209,11 @@ showing the space used:
|
||||
If you look in the Output directory. You should find the following files:
|
||||
|
||||
<config>.rom - binary ROM image to burn to EEPROM
|
||||
<config>.sys - system image that can be written to the start of a
|
||||
disk to enable boot from disk functionality
|
||||
<config>.com - executable version of the system image that can be
|
||||
copied via xmodem to a running system to test
|
||||
the build.
|
||||
<config>.img - system image that can be written to an SD/CF Card
|
||||
and loaded via the UNA FS FAT loader.
|
||||
|
||||
The actual ROM image is the file ending in .rom. It should be exactly
|
||||
512KB or 1MB depending on the ROM size you chose. Simply burn the .rom
|
||||
@@ -226,7 +236,7 @@ Example Build Run
|
||||
-----------------
|
||||
|
||||
C:\Users\WWarthen\Projects\N8VEM\Build\RomWBW>Build.cmd
|
||||
Platform [N8VEM|ZETA|N8|S2I|S100]: ZETA
|
||||
Platform [N8VEM|ZETA|N8|UNA|S100]: ZETA
|
||||
Configurations available:
|
||||
> ppp
|
||||
> std
|
||||
|
||||
@@ -1,4 +1,25 @@
|
||||
Version 2.6.2
|
||||
Version 2.7.1
|
||||
-------------
|
||||
- WBW: Replace XZ with XP compatible build (no functional changes)
|
||||
- WBW: Reset BDOS serial number on warm start
|
||||
- WBW: Turn off DRAM refresh on Z180 (fixes Z180 CPU speed detection)
|
||||
|
||||
Version 2.7.0
|
||||
-------------
|
||||
- WBW: Memory page reorganization
|
||||
- WBW: Support for Zeta 2 (from Sergey Kiselev)
|
||||
- WBW: Support loading from image file (UNA FSFAT)
|
||||
- WBW: Dynamic CPU speed detection
|
||||
|
||||
Version 2.6.5
|
||||
-------------
|
||||
- WBW: Yet more DS1302 clock driver delay mods
|
||||
|
||||
Version 2.6.4
|
||||
-------------
|
||||
- WBW: Yet more DS1302 clock driver delay mods
|
||||
|
||||
Version 2.6.3
|
||||
-------------
|
||||
- WBW: DS1302 clock driver modified to observe proper delays
|
||||
|
||||
|
||||
Binary file not shown.
15
Images/Build.cmd
Normal file
15
Images/Build.cmd
Normal file
@@ -0,0 +1,15 @@
|
||||
@echo off
|
||||
setlocal
|
||||
|
||||
echo :
|
||||
echo : Cleaning...
|
||||
echo :
|
||||
call Clean.cmd
|
||||
echo :
|
||||
echo : Building Floppy Disk Images...
|
||||
echo :
|
||||
call BuildFD.cmd
|
||||
echo :
|
||||
echo : Building Hard Disk Images...
|
||||
echo :
|
||||
call BuildHD.cmd
|
||||
1
Images/BuildFD.cmd
Normal file
1
Images/BuildFD.cmd
Normal file
@@ -0,0 +1 @@
|
||||
@PowerShell .\BuildFD.ps1 %*
|
||||
33
Images/BuildFD.ps1
Normal file
33
Images/BuildFD.ps1
Normal file
@@ -0,0 +1,33 @@
|
||||
$ErrorAction = 'Stop'
|
||||
|
||||
$CpmToolsPath = '..\Tools\cpmtools'
|
||||
|
||||
$env:PATH = $CpmToolsPath + ';' + $env:PATH
|
||||
|
||||
$Blank = ([byte[]](0xE5) * 1440KB)
|
||||
|
||||
"Creating work file..."
|
||||
if (!(Test-Path('Blank.tmp'))) {Set-Content -Value $Blank -Encoding byte -Path 'Blank.tmp'}
|
||||
|
||||
"Creating floppy disk images..."
|
||||
for ($Dsk=0; $Dsk -lt 2; $Dsk++)
|
||||
{
|
||||
"Generating Floppy Disk ${Dsk}..."
|
||||
copy Blank.tmp fd${Dsk}.img
|
||||
for ($Usr=0; $Usr -lt 16; $Usr++)
|
||||
{
|
||||
if (Test-Path ("Source/fd${Dsk}/u${Usr}/*"))
|
||||
{
|
||||
$Cmd = "cpmcp -f wbw_fd144 fd${Dsk}.img Source/fd${Dsk}/u${Usr}/*.* ${Usr}:"
|
||||
$Cmd
|
||||
Invoke-Expression $Cmd
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
"Moving images into output directory..."
|
||||
&$env:COMSPEC /c move fd*.img ..\Output\
|
||||
|
||||
Remove-Item *.tmp
|
||||
|
||||
return
|
||||
1
Images/BuildHD.cmd
Normal file
1
Images/BuildHD.cmd
Normal file
@@ -0,0 +1 @@
|
||||
@PowerShell .\BuildHD.ps1 %*
|
||||
39
Images/BuildHD.ps1
Normal file
39
Images/BuildHD.ps1
Normal file
@@ -0,0 +1,39 @@
|
||||
$ErrorAction = 'Stop'
|
||||
|
||||
$CpmToolsPath = '../Tools/cpmtools'
|
||||
|
||||
$env:PATH = $CpmToolsPath + ';' + $env:PATH
|
||||
|
||||
$Blank = ([byte[]](0xE5) * (128KB * 65))
|
||||
|
||||
"Creating work file..."
|
||||
if (!(Test-Path('Blank.tmp'))) {Set-Content -Value $Blank -Encoding byte -Path 'Blank.tmp'}
|
||||
|
||||
"Creating hard disk images..."
|
||||
for ($Dsk=0; $Dsk -lt 2; $Dsk++)
|
||||
{
|
||||
"Generating Hard Disk ${Dsk}..."
|
||||
for ($Slice=0; $Slice -lt 4; $Slice++)
|
||||
{
|
||||
"Adding files to slice ${Slice}..."
|
||||
copy Blank.tmp slice${Slice}.tmp
|
||||
for ($Usr=0; $Usr -lt 16; $Usr++)
|
||||
{
|
||||
if (Test-Path ("Source/hd${Dsk}/s${Slice}/u${Usr}/*"))
|
||||
{
|
||||
$Cmd = "cpmcp -f wbw_hd0 slice${Slice}.tmp Source/hd${Dsk}/s${Slice}/u${Usr}/*.* ${Usr}:"
|
||||
$Cmd
|
||||
Invoke-Expression $Cmd
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
"Combining slices into final disk image hd${Dsk}..."
|
||||
&$env:COMSPEC /c copy /b slice*.tmp ..\Output\hd${Dsk}.img
|
||||
|
||||
Remove-Item slice*.tmp
|
||||
}
|
||||
|
||||
Remove-Item *.tmp
|
||||
|
||||
return
|
||||
2
Images/Clean.cmd
Normal file
2
Images/Clean.cmd
Normal file
@@ -0,0 +1,2 @@
|
||||
@echo off
|
||||
if exist *.tmp del *.tmp /Q
|
||||
29
Images/FixPowerShell.cmd
Normal file
29
Images/FixPowerShell.cmd
Normal file
@@ -0,0 +1,29 @@
|
||||
@echo off
|
||||
echo By default, PowerShell is configured to block the
|
||||
echo execution of unsigned scripts on your local system.
|
||||
echo This command file will attempt to modify your
|
||||
echo PowerShell ExecutionPolicy to "RemoteSigned"
|
||||
echo which means that local scripts can be run without
|
||||
echo being signed. This is required to use the RomWBW
|
||||
echo build process.
|
||||
echo.
|
||||
PowerShell -command Write-Host "Your PowerShell ExecutionPolicy is currently set to: `'(Get-ExecutionPolicy)`'"
|
||||
echo.
|
||||
echo In order to modify the ExecutionPolicy, this command
|
||||
echo file *MUST* be run with administrator privileges.
|
||||
echo Generally, this means you want to right-click the
|
||||
echo command file called FixPowerShell.cmd and choose
|
||||
echo "Run as Administrator". If you attempt to continue
|
||||
echo without administrator privileges, the modification
|
||||
echo will fail with an error message, but no harm is done.
|
||||
echo.
|
||||
choice /m "Do you want to proceed"
|
||||
if errorlevel 2 goto :eof
|
||||
echo.
|
||||
echo Attempting to change Execution Policy...
|
||||
echo.
|
||||
PowerShell Set-ExecutionPolicy RemoteSigned
|
||||
echo.
|
||||
PowerShell -command Write-Host "Your new PowerShell ExecutionPolicy is now set to: `'(Get-ExecutionPolicy)`'"
|
||||
echo.
|
||||
pause
|
||||
246
Images/ReadMe.txt
Normal file
246
Images/ReadMe.txt
Normal file
@@ -0,0 +1,246 @@
|
||||
************************************************************
|
||||
*** I m a g e M a k e r ***
|
||||
*** ***
|
||||
*** Disk Image Generator for RomWBW ***
|
||||
************************************************************
|
||||
|
||||
Builders: Wayne Warthen (wwarthen@gmail.com)
|
||||
|
||||
Updated: 2014-02-16
|
||||
Version: 2.5.3
|
||||
|
||||
This is a supplemental toolset for RomWBW that builds
|
||||
floppy and/or hard disk images that can be used on
|
||||
RomWBW by writing the image to a floppy or hard
|
||||
disk (include CF and SD cards).
|
||||
|
||||
In summary, CP/M files are placed inside of a pre-defined
|
||||
Windows directory structure. A script is then run to
|
||||
create floppy and/or hard disk images from the directory
|
||||
tree contents. The resultant images may be copied directly
|
||||
to floppy or hard disk media or used for SIMH emulator
|
||||
disk images.
|
||||
|
||||
System Requirements
|
||||
-------------------
|
||||
|
||||
This ImageMaker scripts run on Microsoft Windows XP
|
||||
or greater (32 and 64 bit variants of Windows are
|
||||
fine).
|
||||
|
||||
Other than the contents of the ImageMaker zip archive,
|
||||
you will need to have Microsoft PowerShell installed.
|
||||
All variants of Windows XP and later support PowerShell.
|
||||
It is included in all versions after Windows XP. If you
|
||||
are using Windows XP, you will need to download it from
|
||||
Microsoft and install it (free download).
|
||||
|
||||
By default, PowerShell will not run arbitrary scripts
|
||||
that are not signed. In order to run the ImageMaker
|
||||
scripts, you will need to tell PowerShell it is OK
|
||||
to run run "local" scripts that are not signed.
|
||||
Right-click the file in the ImageMaker archive
|
||||
called FixPowerShell and choose "Run as Administrator"
|
||||
and follow the instructions.
|
||||
|
||||
Preparing the Source Directory Contents
|
||||
---------------------------------------
|
||||
|
||||
The ImageMaker script expects your files to be found
|
||||
in the Source directory inside a specific directory
|
||||
structure. Note that you will see there are some
|
||||
CP/M files in the Source directory tree in the
|
||||
distribution. These are simply test files I used
|
||||
and have no specific meaing. You will probably want
|
||||
to replace them with your own files as desired.
|
||||
|
||||
If you look at the Source directory, you will find
|
||||
4 directories. fd0 and fd1 will contain the files
|
||||
to be placed in the two floppy images gneerated.
|
||||
hd0 and hd1 will contain the files to be used
|
||||
to generate the two hard disk images. There
|
||||
is nothing magic about the fact that there are
|
||||
two of each kind of image generated. It just
|
||||
seemed like a good number to the author. A quick
|
||||
review of the scripts and you will see it is very
|
||||
easy to modify the number of images generated if
|
||||
you want.
|
||||
|
||||
For floppy disks, the structure is:
|
||||
|
||||
fd0 --+--> u0
|
||||
+--> u1
|
||||
|
|
||||
+--> u15
|
||||
|
||||
Above, fd0 refers to the first floppy disk image and
|
||||
u0...u15 refer to the user areas on the disk. You
|
||||
place whatever files you want on fd0, user 0 in the
|
||||
fd0\u0 directory. You will notice that not all of the
|
||||
u0...u15 directories exist. The script does not care
|
||||
and treats a non-existent directory as a directory with
|
||||
no files. The fd1 directory is exactly the same as fd0 --
|
||||
it is simply the second floppy image.
|
||||
|
||||
At present, the scripts assume that the floppy media
|
||||
is 1.44MB. You will need to modify the scripts if you
|
||||
want to create different media.
|
||||
|
||||
For hard disks, the structure has one more level:
|
||||
|
||||
hd0 --+--> s0 --+--> u0
|
||||
| +--> u1
|
||||
| |
|
||||
| +--> u15
|
||||
|
|
||||
+--> s1 --+--> u0
|
||||
| +--> u1
|
||||
| |
|
||||
| +--> u15
|
||||
|
|
||||
+--> s2 --+--> u0
|
||||
| +--> u1
|
||||
| |
|
||||
| +--> u15
|
||||
|
|
||||
+--> s3 --+--> u0
|
||||
+--> u1
|
||||
|
|
||||
+--> u15
|
||||
|
||||
The above uses the same concept as the floppy disk source
|
||||
structure, but includes an additional directory layer to
|
||||
represent the first 4 slices of the hard disk. For most
|
||||
RomWBW builds, s0-s3 would show up as the first 4 hard
|
||||
disk drive letters, frequently E: to H:.
|
||||
|
||||
No files should be placed in the first two layers of the
|
||||
tree (hd0 or s0-s3). All files go into the lowest level
|
||||
of the tree (u0-u15). As above, empty or non-existent
|
||||
directories are not a problem for the script. Just fill
|
||||
in or create the appropriate directories. The only constraint
|
||||
is the the script will only look for two hard disks (hd0-hd1),
|
||||
4 slices (s0-s4), and 16 user areas (u0-u15). The
|
||||
number of hard disks and number of slices could be changed
|
||||
by modifying the generation scripts.
|
||||
|
||||
Building the Images
|
||||
-------------------
|
||||
|
||||
The image creation process simply traverses the directory
|
||||
structures described above and builds a raw image each
|
||||
floppy disk or hard disk. Note that cpmtools is used
|
||||
to generate the images and is included in the archive
|
||||
under the Tools directory.
|
||||
|
||||
The scripts are intended to be run from a command
|
||||
prompt. Open a command prompt and navigate to the
|
||||
ImageMaker directory. To build the floppy disk
|
||||
images (fd0 and fd1), use the command "BuildFD".
|
||||
To build the hard disk images (hd0, hd1), use the
|
||||
command "BuildHD". You can use the command
|
||||
"BuildAll" to build both the floppy and hard
|
||||
disk images in one run.
|
||||
|
||||
After completion of the script, the resultant image
|
||||
files are placed in the Output directory with names
|
||||
such as fd0.img and hd0.img.
|
||||
|
||||
Below is sample output from building the
|
||||
hard disk images:
|
||||
|
||||
| C:\Users\WWarthen\Projects\N8VEM\Build\ImageMaker>BuildHD
|
||||
| Creating work file...
|
||||
| Creating hard disk images...
|
||||
| Generating Hard Disk 0...
|
||||
| Adding files to slice 0...
|
||||
| cpmcp -f n8vem_hd0 slice0.tmp Source/hd0/s0/u0/*.* 0:
|
||||
| cpmcp -f n8vem_hd0 slice0.tmp Source/hd0/s0/u2/*.* 2:
|
||||
| Adding files to slice 1...
|
||||
| cpmcp -f n8vem_hd0 slice1.tmp Source/hd0/s1/u0/*.* 0:
|
||||
| Adding files to slice 2...
|
||||
| Adding files to slice 3...
|
||||
| Combining slices into final disk image hd0...
|
||||
| slice0.tmp
|
||||
| slice1.tmp
|
||||
| slice2.tmp
|
||||
| slice3.tmp
|
||||
| 1 file(s) copied.
|
||||
| Generating Hard Disk 1...
|
||||
| Adding files to slice 0...
|
||||
| Adding files to slice 1...
|
||||
| Adding files to slice 2...
|
||||
| Adding files to slice 3...
|
||||
| Combining slices into final disk image hd1...
|
||||
| slice0.tmp
|
||||
| slice1.tmp
|
||||
| slice2.tmp
|
||||
| slice3.tmp
|
||||
| 1 file(s) copied.
|
||||
|
|
||||
| C:\Users\WWarthen\Projects\N8VEM\Build\ImageMaker>
|
||||
|
||||
Be aware that the script always builds the image file
|
||||
from scratch. It will not update the previous contents.
|
||||
Any contents of a pre-existing image file will be
|
||||
permanently destroyed.
|
||||
|
||||
Installing Images
|
||||
-----------------
|
||||
|
||||
First of all, a MAJOR WARNING!!!! The tools described
|
||||
below are quite capable of obliterating your running
|
||||
Windows system drive. Use with extreme caution and
|
||||
make sure you have backups.
|
||||
|
||||
To install a floppy image on floppy media, you can use
|
||||
the tool called RaWriteWin. This tool is included in the
|
||||
Tools directory of the distribution.
|
||||
This tool will write your floppy image (fd0.img or fd1.img)
|
||||
to a floppy disk using a raw block transfer. The tool is
|
||||
GUI based and it's operation is self explanatory.
|
||||
|
||||
To install a hard disk image on a CF card or SD card, you
|
||||
must have the appropriate media card slot on your computer.
|
||||
If you do, you can use the tool called Win32 Disk Imager.
|
||||
This tool is also included in the Tools directory of the
|
||||
distribution. This tool will write your hard disk
|
||||
image (hd0.img or hd1.img) to the designated media
|
||||
card. This tool is also GUI based and self explanatory.
|
||||
|
||||
Use of the SIMH emulator is outside of the scope of this
|
||||
document. However, if you use SIMH, you will find that
|
||||
you can attach the hard disk images to the emulator with
|
||||
lines such as the following in your SIMH configuration
|
||||
file:
|
||||
|
||||
| attach hdsk0 hd0.img
|
||||
| set hdsk0 format=HDSK
|
||||
| set hdsk0 geom=T:520/N:256/S:512
|
||||
| set hdsk0 wrtenb
|
||||
|
||||
Making Disk Images Bootable
|
||||
---------------------------
|
||||
|
||||
The current generation of these scripts does not make
|
||||
the resultant media bootable. This is primarily because
|
||||
there are multiple choices for what you can put on the
|
||||
boot tracks of the media and that is a choice best left
|
||||
to the user.
|
||||
|
||||
The simplest way to make a resultant image bootable is
|
||||
to do it from your running CP/M system. Boot your
|
||||
system using the ROM selection, then use the COPYSYS
|
||||
command to make the desired drive bootable.
|
||||
|
||||
You would use a command like the following to make
|
||||
drive C bootable.
|
||||
|
||||
| B>COPYSYS C:=CPM.SYS
|
||||
|
||||
Notes
|
||||
-----
|
||||
|
||||
I realize these instructions are very minimal. I am happy to answer
|
||||
questions. You will find the Google Group 'N8VEM' to be a great
|
||||
source of information as well.
|
||||
BIN
Images/Source/fd0/u0/ASM.COM
Normal file
BIN
Images/Source/fd0/u0/ASM.COM
Normal file
Binary file not shown.
BIN
Images/Source/fd0/u0/CLRDIR.COM
Normal file
BIN
Images/Source/fd0/u0/CLRDIR.COM
Normal file
Binary file not shown.
BIN
Images/Source/fd0/u0/CR.COM
Normal file
BIN
Images/Source/fd0/u0/CR.COM
Normal file
Binary file not shown.
BIN
Images/Source/fd0/u0/DDT.COM
Normal file
BIN
Images/Source/fd0/u0/DDT.COM
Normal file
Binary file not shown.
BIN
Images/Source/fd0/u0/DDTZ.COM
Normal file
BIN
Images/Source/fd0/u0/DDTZ.COM
Normal file
Binary file not shown.
564
Images/Source/fd0/u0/DDTZ.DOC
Normal file
564
Images/Source/fd0/u0/DDTZ.DOC
Normal file
@@ -0,0 +1,564 @@
|
||||
|
||||
DDTZ v2.7
|
||||
by C.B. Falconer
|
||||
edited by George A. Havach
|
||||
|
||||
Introduction:
|
||||
============
|
||||
DDTZ v2.7 is a complete replacement for DDT, Digital Research's
|
||||
famous Dynamic Debugging Tool, with improved functionality, bug
|
||||
extermination, and full Z80 support. In general, DDTZ is fully
|
||||
compatible with the original utility, but it has extra and
|
||||
extended commands and many fewer quirks. All Z80-specific
|
||||
instructions can be (dis)assembled, though in Intel rather then
|
||||
Zilog format. Furthermore, DDTZ will correctly trace ('T' and 'U'
|
||||
commands) both 8080 and Z80 instructions, depending on which CPU
|
||||
is operating. On startup, the program announces which CPU it is
|
||||
running on.
|
||||
|
||||
DDTZ v2.7 now handles the 64180 added opcodes. It does NOT test
|
||||
for a 64180 CPU, since this cannot be done without executing
|
||||
illegal Z80 instructions, which in turn will crash some
|
||||
simulators. However v2.7 does not execute any 64180 instructions
|
||||
internally, only in the subject program.
|
||||
|
||||
This issue supplies the "M" version assembled, to avoid errors
|
||||
when switching between MSDOS and CPM systems. The command table
|
||||
is updated accordingly. Most CPM users are also MSDOS users, but
|
||||
not vice-versa.
|
||||
|
||||
The program is invoked by typing
|
||||
|
||||
ddtz<ret>
|
||||
or
|
||||
ddtz [d:]filespec<ret>
|
||||
|
||||
In the second form, DDTZ will load the specified file into
|
||||
memory starting at 0100H, unless it's a .HEX file that sets its
|
||||
own load address. Besides reporting the NEXT free address and
|
||||
the PC (program counter) after a successful load, DDTZ also shows
|
||||
the number of memory pages needed for a SAVE. Instead of having
|
||||
to write all this down, just use the 'X' command at any time to
|
||||
redisplay these three values for the current application.
|
||||
|
||||
NOTE: loading more code above the NEXT pointer revises these
|
||||
values.
|
||||
|
||||
As in DDT, when a program is loaded above the area holding the
|
||||
'A' and 'U' (and now 'W') command code, these commands are
|
||||
disabled, and the extra memory is released to the user. Thus,
|
||||
DDTZ can occupy as little as 3K total memory space. Unlike DDT,
|
||||
however, DDTZ will not overwrite itself or the system on program
|
||||
loads (except .HEX files).
|
||||
|
||||
At initialization, the stack pointer (SP) points to a return to
|
||||
DDTZ, just like for the CCP. Thus, programs that normally return
|
||||
to the CCP will be returned to DDTZ. The 'B' command
|
||||
reinitializes this condition.
|
||||
|
||||
|
||||
The intercept vector copies the BDOS version number, etc., so
|
||||
an object program does not know that DDTZ is running (except
|
||||
for BIOS-BDOS vector size). Thus, programs that check the version
|
||||
number should execute correctly under DDTZ.
|
||||
|
||||
All input parameters can now be entered in any of three formats:
|
||||
|
||||
(1) hexadecimal (as in DDT),
|
||||
(2) decimal, by adding a leading '#' character,
|
||||
(3) ASCII, by enclosing between either single or double
|
||||
quotes; either one or two characters are allowed.
|
||||
|
||||
Leading blanks in command lines and parameters are absorbed.
|
||||
Either a comma or a (single) space is a valid delimiter.
|
||||
Either uppercase or lowercase input is accepted.
|
||||
|
||||
The default command (for anything not otherwise recognizable)
|
||||
is 'H'. This allows convenient calculation, along with the other
|
||||
features described below. So, to convert a number, just enter
|
||||
it!
|
||||
|
||||
As in DDT, the prompt character is '-', and the only error
|
||||
message is the query ('?'), which generally kicks you back to
|
||||
command mode.
|
||||
|
||||
New Commands (Over DDT):
|
||||
=======================
|
||||
|
||||
NOTE: letters in parenthesis, e.g. "(U)", show the equivalent
|
||||
command for DDTZM version (compatible with MSDOS debug).
|
||||
|
||||
@ Sets or shows (with no parameter) the internally stored
|
||||
"base" value. Also used with the 'S' and 'D' commands as
|
||||
an optional parameter (though without the '@') to display
|
||||
memory from an arbitrary base marker (offset). When set to
|
||||
zero (the default), it does not affect any screen displays.
|
||||
|
||||
B B)egin: resets the USER stack pointer to its initial value,
|
||||
such that any program that exits by an RET will return to
|
||||
DDTZ. DDTZ provides a default stack space of
|
||||
approximately 24 bytes for user programs.
|
||||
|
||||
C C)ompare first_address,last_address,against_address: shows
|
||||
all the byte differences between two memory areas, in the
|
||||
format
|
||||
|
||||
XXXX aa YYYY bb
|
||||
|
||||
where XXXX and YYYY are the comparative memory addresses,
|
||||
and aa and bb are the corresponding byte values. Can be
|
||||
used to verify the identity of two files by first
|
||||
loading them into different memory areas with the 'R'
|
||||
command (see below).
|
||||
|
||||
|
||||
W Write: stores the modified memory area to disk under the
|
||||
(K) filename specified by the 'I' command, overwriting the
|
||||
original file from which it was loaded (the user is queried
|
||||
before doing so). By default, the image of memory from
|
||||
0100H through the "NEXT" value -1 is saved. "K first_addr,
|
||||
last_address" overrides this and allows writing ANY memory
|
||||
area to a file. Almost a necessity for CPM 3.0 (no SAVE!).
|
||||
K)eep on DDTZ
|
||||
|
||||
X eXamine: redisplays the "NEXT PC SAVE" report at any time.
|
||||
(Q) Q)uery size on DDTZ.
|
||||
|
||||
S S)earch first_address, last_addr, value: searches the
|
||||
(W) specified memory area for the value (a 16-bit word, not a
|
||||
byte) and shows the locations of all such. Very useful for
|
||||
finding CALL's or JMP's to a particular address, etc.
|
||||
W)here on DDTZ
|
||||
|
||||
Y Y)our_option parm1,parm2,address: executes an arbitrary
|
||||
routine at the specified address, with the BC and DE
|
||||
registers set to parm1 and parm2, respectively.
|
||||
|
||||
Z Displays (but does not alter) the Z80's alternate register
|
||||
set, including the index registers (disabled if running on
|
||||
an 8080). On Z80's, automatically included as the last
|
||||
part of the display by the 'X' command.
|
||||
|
||||
|
||||
Based (Offset) Displays:
|
||||
=======================
|
||||
|
||||
The 'D' and 'E' commands can use a stored base value (offset),
|
||||
as set by the '@' command. The current @ value may be
|
||||
overridden for a single execution of these commands by adding the
|
||||
base as an extra parameter in the command line. The effect is
|
||||
to add this value to the first/last address and display
|
||||
accordingly. The address listing on the left becomes XXXX:YYYY,
|
||||
where XXXX is the offset address and YYYY is the actual memory
|
||||
address being displayed. For example, if you have a data area
|
||||
located at 42B7H and wish to preserve easy access, just enter
|
||||
"@42b7". Now, "d0,3f" will dump memory starting at 4237H.
|
||||
|
||||
|
||||
Further Changes from DDT:
|
||||
========================
|
||||
|
||||
A A)ssemble now accepts the full Z80 as well as 8080
|
||||
instruction set, although it expects them in Intel rather
|
||||
than Zilog format (see notes below under the 'L'
|
||||
command). When in doubt, see the mnemnonic list below.
|
||||
|
||||
D D)isplay or D)ump will accept an optional third parameter
|
||||
to set the base value for a single execution only. Format
|
||||
has been cleaned up.
|
||||
|
||||
H H)ex_arithmetic on two values also shows their
|
||||
difference in decimal. With only one value, converts to
|
||||
hexadecimal, decimal, and ASCII (low-order byte only).
|
||||
|
||||
|
||||
N N)ame now allows drive specification (d:...) and sets up
|
||||
(I) the complete command line, including both FCB's (at
|
||||
addresses 005CH and 006CH). The tail (stored at 0081H up)
|
||||
is NOT upshifted.
|
||||
I)nput on DDTZ
|
||||
|
||||
U U)nassemble now displays the raw hexcode, especially handy
|
||||
(L) when examining non-code areas. Intel (8080 style) mnemonics
|
||||
are used, so some disassembled instructions may look
|
||||
strange. E.g., the Z80's 'IN B,(C)' and 'OUT (C),B' become
|
||||
'INP B' and 'OUTP B', respectively; 'LD (nnnn),BC' becomes
|
||||
'SBCD nnnn', 'ADD IX, BC' becomes 'DADX B', and 'JP (IX)'
|
||||
becomes 'PCIX'.
|
||||
L)ist on DDTZ
|
||||
|
||||
L L)oad now permits loading a file into memory with an
|
||||
(R) offset, which is added to the default load address of
|
||||
0100H. When reading in a .HEX file with a preset bias,
|
||||
the 'R' command will not transfer control to an invalid
|
||||
execution point. Another execution of the 'R' command will
|
||||
reread the input file, e.g.:
|
||||
|
||||
n blah<ret>
|
||||
l<ret>
|
||||
...modify the code and generally mess about...
|
||||
l<ret>
|
||||
|
||||
The original file is reloaded, and the modifications are
|
||||
removed.
|
||||
R)ead on DDTZ
|
||||
|
||||
E E)nter, like D)isplay, now accepts an optional second
|
||||
(S) parameter to set the base value for a single execution
|
||||
only.
|
||||
S)ubstitute or S)et on DDTZ
|
||||
|
||||
T T)rap/trace on termination now shows the complete CPU
|
||||
state. Traps and traces no longer lock up when a user RST
|
||||
7 instruction is executed. Tracing of BDOS/BIOS calls is
|
||||
heavily trun cated, avoiding clutter and preventing system
|
||||
crashes.
|
||||
|
||||
NOTE: Most of the UNDOCUMENTED Z80 op-codes are handled. Others
|
||||
can crash the system.
|
||||
|
||||
R R)egisters also shows what two-byte values the HL and SP
|
||||
(X) registers are actually pointing to. On Z80's, displays the
|
||||
alternate register set.
|
||||
eX)amine on DDTZ
|
||||
|
||||
NOTE: Any use of the 'W' or 'L' command resets the system DMA
|
||||
transfer address to the standard default value of 0080H.
|
||||
|
||||
|
||||
; This is the output of DDTZ when disassembling OPTYPE.TRY
|
||||
NOP LDA 06A4 MOV M,H
|
||||
LXI B,06A4 DCX SP MOV M,L
|
||||
STAX B INR A HLT
|
||||
INX B DCR A MOV M,A
|
||||
INR B MVI A,20 MOV A,B
|
||||
DCR B CMC MOV A,C
|
||||
MVI B,20 MOV B,B MOV A,D
|
||||
RLC MOV B,C MOV A,E
|
||||
EXAF MOV B,D MOV A,H
|
||||
DAD B MOV B,E MOV A,L
|
||||
LDAX B MOV B,H MOV A,M
|
||||
DCX B MOV B,L MOV A,A
|
||||
INR C MOV B,M ADD B
|
||||
DCR C MOV B,A ADD C
|
||||
MVI C,20 MOV C,B ADD D
|
||||
RRC MOV C,C ADD E
|
||||
DJNZ 0134 MOV C,D ADD H
|
||||
LXI D,06A4 MOV C,E ADD L
|
||||
STAX D MOV C,H ADD M
|
||||
INX D MOV C,L ADD A
|
||||
INR D MOV C,M ADC B
|
||||
DCR D MOV C,A ADC C
|
||||
MVI D,20 MOV D,B ADC D
|
||||
RAL MOV D,C ADC E
|
||||
JR 0134 MOV D,D ADC H
|
||||
DAD D MOV D,E ADC L
|
||||
LDAX D MOV D,H ADC M
|
||||
DCX D MOV D,L ADC A
|
||||
INR E MOV D,M SUB B
|
||||
DCR E MOV D,A SUB C
|
||||
MVI E,20 MOV E,B SUB D
|
||||
RAR MOV E,C SUB E
|
||||
JRNZ 0134 MOV E,D SUB H
|
||||
LXI H,06A4 MOV E,E SUB L
|
||||
SHLD 06A4 MOV E,H SUB M
|
||||
INX H MOV E,L SUB A
|
||||
INR H MOV E,M SBB B
|
||||
DCR H MOV E,A SBB C
|
||||
MVI H,20 MOV H,B SBB D
|
||||
DAA MOV H,C SBB E
|
||||
JRZ 0134 MOV H,D SBB H
|
||||
DAD H MOV H,E SBB L
|
||||
LHLD 06A4 MOV H,H SBB M
|
||||
DCX H MOV H,L SBB A
|
||||
INR L MOV H,M ANA B
|
||||
DCR L MOV H,A ANA C
|
||||
MVI L,20 MOV L,B ANA D
|
||||
CMA MOV L,C ANA E
|
||||
JRNC 0134 MOV L,D ANA H
|
||||
LXI SP,06A4 MOV L,E ANA L
|
||||
STA 06A4 MOV L,H ANA M
|
||||
INX SP MOV L,L ANA A
|
||||
INR M MOV L,M XRA B
|
||||
DCR M MOV L,A XRA C
|
||||
MVI M,20 MOV M,B XRA D
|
||||
STC MOV M,C XRA E
|
||||
JRC 0134 MOV M,D XRA H
|
||||
DAD SP MOV M,E XRA L
|
||||
|
||||
|
||||
XRA M JPE 06A4 SLAR M
|
||||
XRA A XCHG SLAR A
|
||||
ORA B CPE 06A4 SRAR B
|
||||
ORA C XRI 20 SRAR C
|
||||
ORA D RST 5 SRAR D
|
||||
ORA E RP SRAR E
|
||||
ORA H POP PSW SRAR H
|
||||
ORA L JP 06A4 SRAR L
|
||||
ORA M DI SRAR M
|
||||
ORA A CP 06A4 SRAR A
|
||||
CMP B PUSH PSW SLLR B
|
||||
CMP C ORI 20 SLLR C
|
||||
CMP D RST 6 SLLR D
|
||||
CMP E RM SLLR E
|
||||
CMP H SPHL SLLR H
|
||||
CMP L JM 06A4 SLLR L
|
||||
CMP M EI SLLR M
|
||||
CMP A CM 06A4 SLLR A
|
||||
RNZ CPI 20 SRLR B
|
||||
POP B RST 7 SRLR C
|
||||
JNZ 06A4 RLCR B SRLR D
|
||||
JMP 06A4 RLCR C SRLR E
|
||||
CNZ 06A4 RLCR D SRLR H
|
||||
PUSH B RLCR E SRLR L
|
||||
ADI 20 RLCR H SRLR M
|
||||
RST 0 RLCR L SRLR A
|
||||
RZ RLCR M BIT 0,B
|
||||
RET RLCR A BIT 0,C
|
||||
JZ 06A4 RRCR B BIT 0,D
|
||||
CZ 06A4 RRCR C BIT 0,E
|
||||
CALL 06A4 RRCR D BIT 0,H
|
||||
ACI 20 RRCR E BIT 0,L
|
||||
RST 1 RRCR H BIT 0,M
|
||||
RNC RRCR L BIT 0,A
|
||||
POP D RRCR M BIT 1,B
|
||||
JNC 06A4 RRCR A BIT 1,C
|
||||
OUT 20 RALR B BIT 1,D
|
||||
CNC 06A4 RALR C BIT 1,E
|
||||
PUSH D RALR D BIT 1,H
|
||||
SUI 20 RALR E BIT 1,L
|
||||
RST 2 RALR H BIT 1,M
|
||||
RC RALR L BIT 1,A
|
||||
EXX RALR M BIT 2,B
|
||||
JC 06A4 RALR A BIT 2,C
|
||||
IN 20 RARR B BIT 2,D
|
||||
CC 06A4 RARR C BIT 2,E
|
||||
SBI 20 RARR D BIT 2,H
|
||||
RST 3 RARR E BIT 2,L
|
||||
RPO RARR H BIT 2,M
|
||||
POP H RARR L BIT 2,A
|
||||
JPO 06A4 RARR M BIT 3,B
|
||||
XTHL RARR A BIT 3,C
|
||||
CPO 06A4 SLAR B BIT 3,D
|
||||
PUSH H SLAR C BIT 3,E
|
||||
ANI 20 SLAR D BIT 3,H
|
||||
RST 4 SLAR E BIT 3,L
|
||||
RPE SLAR H BIT 3,M
|
||||
PCHL SLAR L BIT 3,A
|
||||
|
||||
|
||||
BIT 4,B RES 3,D SET 2,H
|
||||
BIT 4,C RES 3,E SET 2,L
|
||||
BIT 4,D RES 3,H SET 2,M
|
||||
BIT 4,E RES 3,L SET 2,A
|
||||
BIT 4,H RES 3,M SET 3,B
|
||||
BIT 4,L RES 3,A SET 3,C
|
||||
BIT 4,M RES 4,B SET 3,D
|
||||
BIT 4,A RES 4,C SET 3,E
|
||||
BIT 5,B RES 4,D SET 3,H
|
||||
BIT 5,C RES 4,E SET 3,L
|
||||
BIT 5,D RES 4,H SET 3,M
|
||||
BIT 5,E RES 4,L SET 3,A
|
||||
BIT 5,H RES 4,M SET 4,B
|
||||
BIT 5,L RES 4,A SET 4,C
|
||||
BIT 5,M RES 5,B SET 4,D
|
||||
BIT 5,A RES 5,C SET 4,E
|
||||
BIT 6,B RES 5,D SET 4,H
|
||||
BIT 6,C RES 5,E SET 4,L
|
||||
BIT 6,D RES 5,H SET 4,M
|
||||
BIT 6,E RES 5,L SET 4,A
|
||||
BIT 6,H RES 5,M SET 5,B
|
||||
BIT 6,L RES 5,A SET 5,C
|
||||
BIT 6,M RES 6,B SET 5,D
|
||||
BIT 6,A RES 6,C SET 5,E
|
||||
BIT 7,B RES 6,D SET 5,H
|
||||
BIT 7,C RES 6,E SET 5,L
|
||||
BIT 7,D RES 6,H SET 5,M
|
||||
BIT 7,E RES 6,L SET 5,A
|
||||
BIT 7,H RES 6,M SET 6,B
|
||||
BIT 7,L RES 6,A SET 6,C
|
||||
BIT 7,M RES 7,B SET 6,D
|
||||
BIT 7,A RES 7,C SET 6,E
|
||||
RES 0,B RES 7,D SET 6,H
|
||||
RES 0,C RES 7,E SET 6,L
|
||||
RES 0,D RES 7,H SET 6,M
|
||||
RES 0,E RES 7,L SET 6,A
|
||||
RES 0,H RES 7,M SET 7,B
|
||||
RES 0,L RES 7,A SET 7,C
|
||||
RES 0,M SET 0,B SET 7,D
|
||||
RES 0,A SET 0,C SET 7,E
|
||||
RES 1,B SET 0,D SET 7,H
|
||||
RES 1,C SET 0,E SET 7,L
|
||||
RES 1,D SET 0,H SET 7,M
|
||||
RES 1,E SET 0,L SET 7,A
|
||||
RES 1,H SET 0,M DADX B
|
||||
RES 1,L SET 0,A DADX D
|
||||
RES 1,M SET 1,B LXI X,06A4
|
||||
RES 1,A SET 1,C SIXD 06A4
|
||||
RES 2,B SET 1,D INX X
|
||||
RES 2,C SET 1,E DADX X
|
||||
RES 2,D SET 1,H LIXD 06A4
|
||||
RES 2,E SET 1,L DCX X
|
||||
RES 2,H SET 1,M INR [X+05]
|
||||
RES 2,L SET 1,A DCR [X+05]
|
||||
RES 2,M SET 2,B MVI [X+05],20
|
||||
RES 2,A SET 2,C DADX SP
|
||||
RES 3,B SET 2,D MOV B,[X+05]
|
||||
RES 3,C SET 2,E MOV C,[X+05]
|
||||
|
||||
|
||||
MOV D,[X+05] DSBC B DADY B
|
||||
MOV E,[X+05] SBCD 06A4 DADY D
|
||||
MOV H,[X+05] NEG LXI Y,06A4
|
||||
MOV L,[X+05] RETN SIYD 06A4
|
||||
MOV [X+05],B IM0 INX Y
|
||||
MOV [X+05],C LDIA DADY Y
|
||||
MOV [X+05],D INP C LIYD 06A4
|
||||
MOV [X+05],E OUTP C DCX Y
|
||||
MOV [X+05],H DADC B INR [Y+05]
|
||||
MOV [X+05],L LBCD 06A4 DCR [Y+05]
|
||||
MOV [X+05],A RETI MVI [Y+05],2
|
||||
MOV A,[X+05] LDRA DADY SP
|
||||
ADD [X+05] INP D MOV B,[Y+05]
|
||||
ADC [X+05] OUTP D MOV C,[Y+05]
|
||||
SUB [X+05] DSBC D MOV D,[Y+05]
|
||||
SBB [X+05] SDED 06A4 MOV E,[Y+05]
|
||||
ANA [X+05] IM1 MOV H,[Y+05]
|
||||
XRA [X+05] LDAI MOV L,[Y+05]
|
||||
ORA [X+05] INP E MOV [Y+05],B
|
||||
CMP [X+05] OUTP E MOV [Y+05],C
|
||||
POP X DADC D MOV [Y+05],D
|
||||
XTIX LDED 06A4 MOV [Y+05],E
|
||||
PUSH X IM2 MOV [Y+05],H
|
||||
PCIX LDAR MOV [Y+05],L
|
||||
SPIX INP H MOV [Y+05],A
|
||||
RLCR [X+05] OUTP H MOV A,[Y+05]
|
||||
RRCR [X+05] DSBC H ADD [Y+05]
|
||||
RALR [X+05] shld 06A4 ADC [Y+05]
|
||||
RARR [X+05] RRD SUB [Y+05]
|
||||
SLAR [X+05] INP L SBB [Y+05]
|
||||
SRAR [X+05] OUTP L ANA [Y+05]
|
||||
SRLR [X+05] DADC H XRA [Y+05]
|
||||
BIT 0,[X+05] lhld 06A4 ORA [Y+05]
|
||||
BIT 1,[X+05] RLD CMP [Y+05]
|
||||
BIT 2,[X+05] INP M POP Y
|
||||
BIT 3,[X+05] OUTP M XTIY
|
||||
BIT 4,[X+05] DSBC SP PUSH Y
|
||||
BIT 5,[X+05] SSPD 06A4 PCIY
|
||||
BIT 6,[X+05] INP A SPIY
|
||||
BIT 7,[X+05] OUTP A RLCR [Y+05]
|
||||
RES 0,[X+05] DADC SP RRCR [Y+05]
|
||||
RES 1,[X+05] LSPD 06A4 RALR [Y+05]
|
||||
RES 2,[X+05] LDI RARR [Y+05]
|
||||
RES 3,[X+05] CCI SLAR [Y+05]
|
||||
RES 4,[X+05] INI SRAR [Y+05]
|
||||
RES 5,[X+05] OTI SRLR [Y+05]
|
||||
RES 6,[X+05] LDD BIT 0,[Y+05]
|
||||
RES 7,[X+05] CCD BIT 1,[Y+05]
|
||||
SET 0,[X+05] IND BIT 2,[Y+05]
|
||||
SET 1,[X+05] OTD BIT 3,[Y+05]
|
||||
SET 2,[X+05] LDIR BIT 4,[Y+05]
|
||||
SET 3,[X+05] CCIR BIT 5,[Y+05]
|
||||
SET 4,[X+05] INIR BIT 6,[Y+05]
|
||||
SET 5,[X+05] OTIR BIT 7,[Y+05]
|
||||
SET 6,[X+05] LDDR RES 0,[Y+05]
|
||||
SET 7,[X+05] CCDR RES 1,[Y+05]
|
||||
INP B INDR RES 2,[Y+05]
|
||||
OUTP B OTDR RES 3,[Y+05]
|
||||
|
||||
|
||||
RES 4,[Y+05] SET 0,[Y+05] SET 4,[Y+05]
|
||||
RES 5,[Y+05] SET 1,[Y+05] SET 5,[Y+05]
|
||||
RES 6,[Y+05] SET 2,[Y+05] SET 6,[Y+05]
|
||||
RES 7,[Y+05] SET 3,[Y+05] SET 7,[Y+05]
|
||||
|
||||
; These are the result of disassembling 64180OPS.TRY
|
||||
; These opcodes are available ONLY on the 64180 CPU
|
||||
; DDTZ will both assemble and disassemble these.
|
||||
IN0 B,20 TST E MLT B
|
||||
OUT0 20,B IN0 H,20 MLT D
|
||||
TST B OUT0 20,H TSTI 20
|
||||
IN0 C,20 TST H MLT H
|
||||
OUT0 20,C IN0 L,20 TSIO 20
|
||||
TST C OUT0 20,L SLP
|
||||
IN0 D,20 TST L MLT SP
|
||||
OUT0 20,D TST M OTIM
|
||||
TST D IN0 A,20 OTDM
|
||||
IN0 E,20 OUT0 20,A OIMR
|
||||
OUT0 20,E TST A ODMR
|
||||
|
||||
; The following are UNDOCUMENTED z80 opcodes from XTDOPS.TRY.
|
||||
; DDTZ will disassemble these, but will not assemble them.
|
||||
; They use xh/xl (or yh/yl) as separate byte registers.
|
||||
; Use these at your own risk.
|
||||
INRX H ACXR H MOVY H,B
|
||||
DCRX H ACXR L MOVY H,C
|
||||
MVIX H,20 SUXR H MOVY H,D
|
||||
INRX L SUXR L MOVY H,E
|
||||
DCRX L SBXR H MOVY H,A
|
||||
MVIX L,20 SBXR L MOVY L,B
|
||||
MOVX B,H NDXR H MOVY L,C
|
||||
MOVX B,L NDXR L MOVY L,D
|
||||
MOVX C,H XRXR H MOVY L,E
|
||||
MOVX C,L XRXR L MOVY L,A
|
||||
MOVX D,H ORXR H MOVY A,H
|
||||
MOVX D,L ORXR L MOVY A,L
|
||||
MOVX E,H CPXR H ADYR H
|
||||
MOVX E,L CPXR L ADYR L
|
||||
MOVX H,B INRY H ACYR H
|
||||
MOVX H,C DCRY H ACYR L
|
||||
MOVX H,D MVIY H,20 SUYR H
|
||||
MOVX H,E INRY L SUYR L
|
||||
MOVX H,A DCRY L SBYR H
|
||||
MOVX L,B MVIY L,20 SBYR L
|
||||
MOVX L,C MOVY B,H NDYR H
|
||||
MOVX L,D MOVY B,L NDYR L
|
||||
MOVX L,E MOVY C,H XRYR H
|
||||
MOVX L,A MOVY C,L XRYR L
|
||||
MOVX A,H MOVY D,H ORYR H
|
||||
MOVX A,L MOVY D,L ORYR L
|
||||
ADXR H MOVY E,H CPYR H
|
||||
ADXR L MOVY E,L CPYR L
|
||||
|
||||
|
||||
Command Summary:
|
||||
===============
|
||||
|
||||
DDTZM command DDTZ command
|
||||
============= ============
|
||||
@ (base)
|
||||
A)ssemble first_address A
|
||||
B)egin {i.e., initialize stack and return} B
|
||||
C)ompare first_address,last_address,against_address C
|
||||
D)ump first_address[,last_address[,base]] D
|
||||
E)nter_in_memory first_address[,base] S)ubstitute
|
||||
F)ill first_address,last_address,value F
|
||||
G)o_to [address][,trap1[,trap2]] G
|
||||
H)ex_arithmetic value1(,value2) H
|
||||
L)oad_file (offset) R)ead
|
||||
M)ove first_address,last_address,destination M
|
||||
N)nput FCBs_command_line I)nput
|
||||
Q)uit (not avail)
|
||||
R)egister examine/change [register|flag] X)amine
|
||||
S)earch first_address,last_address,word W)hereis
|
||||
T)race_execution [count] T
|
||||
Untrace_execution [count] (i.e. do count instr) U)ntrace
|
||||
U)nassemble_code first_address[,last_address] L)ist code
|
||||
W)rite [first_address,last_address] K)eep
|
||||
X)amine {i.e. display memory parameters for application} Q)uery
|
||||
Y)our_option BC:=parm1,DE:=parm2,call_address Y
|
||||
Z)80_register_display Z
|
||||
|
||||
|
||||
If you find this program useful, contributions will be gratefully
|
||||
accepted and will encourage further development and release of
|
||||
useful CPM programs. My practice is to include source.
|
||||
|
||||
C.B. Falconer
|
||||
680 Hartford Turnpike,
|
||||
Hamden, Conn. 06517 (203) 281-1438
|
||||
|
||||
DDTZ and its associated documentation and other files are
|
||||
copyright (c) 1980-1988 by C.B. Falconer. They may be freely
|
||||
copied and used for non-commercial purposes ONLY.
|
||||
|
||||
BIN
Images/Source/fd0/u0/DIF.COM
Normal file
BIN
Images/Source/fd0/u0/DIF.COM
Normal file
Binary file not shown.
BIN
Images/Source/fd0/u0/DIRX.COM
Normal file
BIN
Images/Source/fd0/u0/DIRX.COM
Normal file
Binary file not shown.
BIN
Images/Source/fd0/u0/DUMP.COM
Normal file
BIN
Images/Source/fd0/u0/DUMP.COM
Normal file
Binary file not shown.
BIN
Images/Source/fd0/u0/ED.COM
Normal file
BIN
Images/Source/fd0/u0/ED.COM
Normal file
Binary file not shown.
BIN
Images/Source/fd0/u0/LBREXT.COM
Normal file
BIN
Images/Source/fd0/u0/LBREXT.COM
Normal file
Binary file not shown.
BIN
Images/Source/fd0/u0/LIB.COM
Normal file
BIN
Images/Source/fd0/u0/LIB.COM
Normal file
Binary file not shown.
BIN
Images/Source/fd0/u0/LINK.COM
Normal file
BIN
Images/Source/fd0/u0/LINK.COM
Normal file
Binary file not shown.
BIN
Images/Source/fd0/u0/LOAD.COM
Normal file
BIN
Images/Source/fd0/u0/LOAD.COM
Normal file
Binary file not shown.
BIN
Images/Source/fd0/u0/MAC.COM
Normal file
BIN
Images/Source/fd0/u0/MAC.COM
Normal file
Binary file not shown.
BIN
Images/Source/fd0/u0/MBASIC.COM
Normal file
BIN
Images/Source/fd0/u0/MBASIC.COM
Normal file
Binary file not shown.
BIN
Images/Source/fd0/u0/NULU.COM
Normal file
BIN
Images/Source/fd0/u0/NULU.COM
Normal file
Binary file not shown.
BIN
Images/Source/fd0/u0/PIP.COM
Normal file
BIN
Images/Source/fd0/u0/PIP.COM
Normal file
Binary file not shown.
BIN
Images/Source/fd0/u0/RMAC.COM
Normal file
BIN
Images/Source/fd0/u0/RMAC.COM
Normal file
Binary file not shown.
BIN
Images/Source/fd0/u0/SID.COM
Normal file
BIN
Images/Source/fd0/u0/SID.COM
Normal file
Binary file not shown.
BIN
Images/Source/fd0/u0/STAT.COM
Normal file
BIN
Images/Source/fd0/u0/STAT.COM
Normal file
Binary file not shown.
BIN
Images/Source/fd0/u0/SUBMIT.COM
Normal file
BIN
Images/Source/fd0/u0/SUBMIT.COM
Normal file
Binary file not shown.
BIN
Images/Source/fd0/u0/SUPERSUB.COM
Normal file
BIN
Images/Source/fd0/u0/SUPERSUB.COM
Normal file
Binary file not shown.
BIN
Images/Source/fd0/u0/UNARC.COM
Normal file
BIN
Images/Source/fd0/u0/UNARC.COM
Normal file
Binary file not shown.
BIN
Images/Source/fd0/u0/UNCR.COM
Normal file
BIN
Images/Source/fd0/u0/UNCR.COM
Normal file
Binary file not shown.
BIN
Images/Source/fd0/u0/UNZIP.COM
Normal file
BIN
Images/Source/fd0/u0/UNZIP.COM
Normal file
Binary file not shown.
69
Images/Source/fd0/u0/VIDATT.Z80
Normal file
69
Images/Source/fd0/u0/VIDATT.Z80
Normal file
@@ -0,0 +1,69 @@
|
||||
title WordStar 4.0 Video Attributes Driver
|
||||
|
||||
strngout equ 0283h
|
||||
|
||||
esc equ 1bh
|
||||
dim equ 1
|
||||
blink equ 2
|
||||
invert equ 4
|
||||
uline equ 8
|
||||
|
||||
aseg
|
||||
org 03c1h
|
||||
|
||||
vidatt:
|
||||
xor a
|
||||
ld hl,funtbl
|
||||
ld b,8
|
||||
getloop:
|
||||
rr c
|
||||
jr nc,getnext
|
||||
or a,(hl)
|
||||
getnext:
|
||||
inc hl
|
||||
djnz getloop
|
||||
;
|
||||
ld hl,string+2 ; attribute #1 on/off indicator
|
||||
push hl
|
||||
ld b,4
|
||||
ld de,'?!' ; ? = attribute off, ! = attribute on
|
||||
setloop:
|
||||
rra
|
||||
jr nc,attroff
|
||||
ld (hl),e ; attribute on
|
||||
jr setnext
|
||||
attroff:
|
||||
ld (hl),d ; attribute off
|
||||
setnext:
|
||||
inc hl
|
||||
inc hl
|
||||
inc hl ; advance to next on/off indicator
|
||||
djnz setloop
|
||||
;
|
||||
pop hl ; hl --> dim on/off
|
||||
ld a,d ; attribute off
|
||||
cp (hl) ; dim off?
|
||||
jr nz,setdim
|
||||
ld a,e ; attribute on
|
||||
setdim:
|
||||
ld (hl),a
|
||||
ld hl,string
|
||||
jp strngout ; ws string routine
|
||||
;
|
||||
;
|
||||
funtbl:
|
||||
defb dim ; strike out
|
||||
defb invert or blink ; warnings & errors
|
||||
defb invert ; block
|
||||
defb uline ; underline
|
||||
defb blink ; subscript
|
||||
defb blink or uline ; superscript
|
||||
defb invert ; menu, headline, bold, double
|
||||
defb invert or uline ; italics, RET, backspace
|
||||
;
|
||||
string:
|
||||
defb 12,esc,' 2',esc,' 3',esc,' 4',esc,' 5'
|
||||
;
|
||||
finis equ $
|
||||
end
|
||||
|
||||
BIN
Images/Source/fd0/u0/WS.COM
Normal file
BIN
Images/Source/fd0/u0/WS.COM
Normal file
Binary file not shown.
BIN
Images/Source/fd0/u0/WS.OVR
Normal file
BIN
Images/Source/fd0/u0/WS.OVR
Normal file
Binary file not shown.
BIN
Images/Source/fd0/u0/WSCHANGE.COM
Normal file
BIN
Images/Source/fd0/u0/WSCHANGE.COM
Normal file
Binary file not shown.
BIN
Images/Source/fd0/u0/WSCHANGE.OVR
Normal file
BIN
Images/Source/fd0/u0/WSCHANGE.OVR
Normal file
Binary file not shown.
BIN
Images/Source/fd0/u0/WSCHHELP.OVR
Normal file
BIN
Images/Source/fd0/u0/WSCHHELP.OVR
Normal file
Binary file not shown.
BIN
Images/Source/fd0/u0/WSHELP.OVR
Normal file
BIN
Images/Source/fd0/u0/WSHELP.OVR
Normal file
Binary file not shown.
BIN
Images/Source/fd0/u0/WSMSGS.OVR
Normal file
BIN
Images/Source/fd0/u0/WSMSGS.OVR
Normal file
Binary file not shown.
BIN
Images/Source/fd0/u0/WSPRINT.OVR
Normal file
BIN
Images/Source/fd0/u0/WSPRINT.OVR
Normal file
Binary file not shown.
BIN
Images/Source/fd0/u0/WSSHORT.OVR
Normal file
BIN
Images/Source/fd0/u0/WSSHORT.OVR
Normal file
Binary file not shown.
BIN
Images/Source/fd0/u0/WSU.COM
Normal file
BIN
Images/Source/fd0/u0/WSU.COM
Normal file
Binary file not shown.
BIN
Images/Source/fd0/u0/XSUB.COM
Normal file
BIN
Images/Source/fd0/u0/XSUB.COM
Normal file
Binary file not shown.
BIN
Images/Source/fd0/u0/ZAP.COM
Normal file
BIN
Images/Source/fd0/u0/ZAP.COM
Normal file
Binary file not shown.
BIN
Images/Source/fd0/u0/ZDE.COM
Normal file
BIN
Images/Source/fd0/u0/ZDE.COM
Normal file
Binary file not shown.
BIN
Images/Source/fd0/u0/ZDE40.COM
Normal file
BIN
Images/Source/fd0/u0/ZDE40.COM
Normal file
Binary file not shown.
BIN
Images/Source/fd0/u0/ZDENST.COM
Normal file
BIN
Images/Source/fd0/u0/ZDENST.COM
Normal file
Binary file not shown.
BIN
Images/Source/fd1/u0/ASM.COM
Normal file
BIN
Images/Source/fd1/u0/ASM.COM
Normal file
Binary file not shown.
BIN
Images/Source/fd1/u0/CLRDIR.COM
Normal file
BIN
Images/Source/fd1/u0/CLRDIR.COM
Normal file
Binary file not shown.
BIN
Images/Source/fd1/u0/COPY.CFG
Normal file
BIN
Images/Source/fd1/u0/COPY.CFG
Normal file
Binary file not shown.
BIN
Images/Source/fd1/u0/COPY.COM
Normal file
BIN
Images/Source/fd1/u0/COPY.COM
Normal file
Binary file not shown.
43
Images/Source/fd1/u0/COPY.UPD
Normal file
43
Images/Source/fd1/u0/COPY.UPD
Normal file
@@ -0,0 +1,43 @@
|
||||
11 Dec 88
|
||||
|
||||
Some changes have been made to COPY since the manual was written.
|
||||
Comparison of dates with Existence testing ON has been changed to
|
||||
use the Creation date when no Modified date exists, and print
|
||||
"Undated" when neither exists, yet both source and destination
|
||||
disks support file date stamping. Additionally, the /X option
|
||||
has been re-defined, and a new /R option has been added to
|
||||
Version 1.4. Please replace Paragraph 4.1.2.9 on page 55 of your
|
||||
ZSDOS manual with the following two paragraphs describing the new
|
||||
options.
|
||||
|
||||
|
||||
4.1.2.9.1 ERASE SOURCE FILE AFTER COPY.
|
||||
|
||||
When you want to "move" a file from one area to another, the "X"
|
||||
option may be used. This option causes a file or group of files
|
||||
to be copied in the manner described by the default or specified
|
||||
options, but after the copy and optional verify, the source file
|
||||
or files are erased. You will be notified that the file has been
|
||||
erased by the status "(X)" being printed on your console. To
|
||||
minimize the possibility of deleting a good file when errors
|
||||
exist in the copy, the Verify option should always be active,
|
||||
either by default, or specified. When Verify is active, any
|
||||
errors detected will disable the "X" option for that file so that
|
||||
a good source file will not be deleted. The "X" option has no
|
||||
configurable value, and is always assumed to be "Off" requiring
|
||||
the option in the command line list to be effective.
|
||||
|
||||
|
||||
4.1.2.9.2 COPY ONLY FILES WHICH EXIST (REPLACE).
|
||||
|
||||
Occasionally, you may wish to update selected files to a destina-
|
||||
tion in a simpler manner than naming each file, or using the
|
||||
Inspect option. The "R" (Replace) option, when active, tells
|
||||
COPY to transfer only files which exist on the destination direc-
|
||||
tory. If the Archive option (A) is added in conjunction with the
|
||||
Replace option, only files which have not been archived, AND
|
||||
already exist on the destination will be archived. It should be
|
||||
noted that the No Replacement (N) option is incompatible with
|
||||
both the Replace and Archive options, and is disabled when either
|
||||
"R" or "A" are active.
|
||||
|
||||
BIN
Images/Source/fd1/u0/CR.COM
Normal file
BIN
Images/Source/fd1/u0/CR.COM
Normal file
Binary file not shown.
BIN
Images/Source/fd1/u0/DATSWEEP.COM
Normal file
BIN
Images/Source/fd1/u0/DATSWEEP.COM
Normal file
Binary file not shown.
BIN
Images/Source/fd1/u0/DDT.COM
Normal file
BIN
Images/Source/fd1/u0/DDT.COM
Normal file
Binary file not shown.
BIN
Images/Source/fd1/u0/DDTZ.COM
Normal file
BIN
Images/Source/fd1/u0/DDTZ.COM
Normal file
Binary file not shown.
564
Images/Source/fd1/u0/DDTZ.DOC
Normal file
564
Images/Source/fd1/u0/DDTZ.DOC
Normal file
@@ -0,0 +1,564 @@
|
||||
|
||||
DDTZ v2.7
|
||||
by C.B. Falconer
|
||||
edited by George A. Havach
|
||||
|
||||
Introduction:
|
||||
============
|
||||
DDTZ v2.7 is a complete replacement for DDT, Digital Research's
|
||||
famous Dynamic Debugging Tool, with improved functionality, bug
|
||||
extermination, and full Z80 support. In general, DDTZ is fully
|
||||
compatible with the original utility, but it has extra and
|
||||
extended commands and many fewer quirks. All Z80-specific
|
||||
instructions can be (dis)assembled, though in Intel rather then
|
||||
Zilog format. Furthermore, DDTZ will correctly trace ('T' and 'U'
|
||||
commands) both 8080 and Z80 instructions, depending on which CPU
|
||||
is operating. On startup, the program announces which CPU it is
|
||||
running on.
|
||||
|
||||
DDTZ v2.7 now handles the 64180 added opcodes. It does NOT test
|
||||
for a 64180 CPU, since this cannot be done without executing
|
||||
illegal Z80 instructions, which in turn will crash some
|
||||
simulators. However v2.7 does not execute any 64180 instructions
|
||||
internally, only in the subject program.
|
||||
|
||||
This issue supplies the "M" version assembled, to avoid errors
|
||||
when switching between MSDOS and CPM systems. The command table
|
||||
is updated accordingly. Most CPM users are also MSDOS users, but
|
||||
not vice-versa.
|
||||
|
||||
The program is invoked by typing
|
||||
|
||||
ddtz<ret>
|
||||
or
|
||||
ddtz [d:]filespec<ret>
|
||||
|
||||
In the second form, DDTZ will load the specified file into
|
||||
memory starting at 0100H, unless it's a .HEX file that sets its
|
||||
own load address. Besides reporting the NEXT free address and
|
||||
the PC (program counter) after a successful load, DDTZ also shows
|
||||
the number of memory pages needed for a SAVE. Instead of having
|
||||
to write all this down, just use the 'X' command at any time to
|
||||
redisplay these three values for the current application.
|
||||
|
||||
NOTE: loading more code above the NEXT pointer revises these
|
||||
values.
|
||||
|
||||
As in DDT, when a program is loaded above the area holding the
|
||||
'A' and 'U' (and now 'W') command code, these commands are
|
||||
disabled, and the extra memory is released to the user. Thus,
|
||||
DDTZ can occupy as little as 3K total memory space. Unlike DDT,
|
||||
however, DDTZ will not overwrite itself or the system on program
|
||||
loads (except .HEX files).
|
||||
|
||||
At initialization, the stack pointer (SP) points to a return to
|
||||
DDTZ, just like for the CCP. Thus, programs that normally return
|
||||
to the CCP will be returned to DDTZ. The 'B' command
|
||||
reinitializes this condition.
|
||||
|
||||
|
||||
The intercept vector copies the BDOS version number, etc., so
|
||||
an object program does not know that DDTZ is running (except
|
||||
for BIOS-BDOS vector size). Thus, programs that check the version
|
||||
number should execute correctly under DDTZ.
|
||||
|
||||
All input parameters can now be entered in any of three formats:
|
||||
|
||||
(1) hexadecimal (as in DDT),
|
||||
(2) decimal, by adding a leading '#' character,
|
||||
(3) ASCII, by enclosing between either single or double
|
||||
quotes; either one or two characters are allowed.
|
||||
|
||||
Leading blanks in command lines and parameters are absorbed.
|
||||
Either a comma or a (single) space is a valid delimiter.
|
||||
Either uppercase or lowercase input is accepted.
|
||||
|
||||
The default command (for anything not otherwise recognizable)
|
||||
is 'H'. This allows convenient calculation, along with the other
|
||||
features described below. So, to convert a number, just enter
|
||||
it!
|
||||
|
||||
As in DDT, the prompt character is '-', and the only error
|
||||
message is the query ('?'), which generally kicks you back to
|
||||
command mode.
|
||||
|
||||
New Commands (Over DDT):
|
||||
=======================
|
||||
|
||||
NOTE: letters in parenthesis, e.g. "(U)", show the equivalent
|
||||
command for DDTZM version (compatible with MSDOS debug).
|
||||
|
||||
@ Sets or shows (with no parameter) the internally stored
|
||||
"base" value. Also used with the 'S' and 'D' commands as
|
||||
an optional parameter (though without the '@') to display
|
||||
memory from an arbitrary base marker (offset). When set to
|
||||
zero (the default), it does not affect any screen displays.
|
||||
|
||||
B B)egin: resets the USER stack pointer to its initial value,
|
||||
such that any program that exits by an RET will return to
|
||||
DDTZ. DDTZ provides a default stack space of
|
||||
approximately 24 bytes for user programs.
|
||||
|
||||
C C)ompare first_address,last_address,against_address: shows
|
||||
all the byte differences between two memory areas, in the
|
||||
format
|
||||
|
||||
XXXX aa YYYY bb
|
||||
|
||||
where XXXX and YYYY are the comparative memory addresses,
|
||||
and aa and bb are the corresponding byte values. Can be
|
||||
used to verify the identity of two files by first
|
||||
loading them into different memory areas with the 'R'
|
||||
command (see below).
|
||||
|
||||
|
||||
W Write: stores the modified memory area to disk under the
|
||||
(K) filename specified by the 'I' command, overwriting the
|
||||
original file from which it was loaded (the user is queried
|
||||
before doing so). By default, the image of memory from
|
||||
0100H through the "NEXT" value -1 is saved. "K first_addr,
|
||||
last_address" overrides this and allows writing ANY memory
|
||||
area to a file. Almost a necessity for CPM 3.0 (no SAVE!).
|
||||
K)eep on DDTZ
|
||||
|
||||
X eXamine: redisplays the "NEXT PC SAVE" report at any time.
|
||||
(Q) Q)uery size on DDTZ.
|
||||
|
||||
S S)earch first_address, last_addr, value: searches the
|
||||
(W) specified memory area for the value (a 16-bit word, not a
|
||||
byte) and shows the locations of all such. Very useful for
|
||||
finding CALL's or JMP's to a particular address, etc.
|
||||
W)here on DDTZ
|
||||
|
||||
Y Y)our_option parm1,parm2,address: executes an arbitrary
|
||||
routine at the specified address, with the BC and DE
|
||||
registers set to parm1 and parm2, respectively.
|
||||
|
||||
Z Displays (but does not alter) the Z80's alternate register
|
||||
set, including the index registers (disabled if running on
|
||||
an 8080). On Z80's, automatically included as the last
|
||||
part of the display by the 'X' command.
|
||||
|
||||
|
||||
Based (Offset) Displays:
|
||||
=======================
|
||||
|
||||
The 'D' and 'E' commands can use a stored base value (offset),
|
||||
as set by the '@' command. The current @ value may be
|
||||
overridden for a single execution of these commands by adding the
|
||||
base as an extra parameter in the command line. The effect is
|
||||
to add this value to the first/last address and display
|
||||
accordingly. The address listing on the left becomes XXXX:YYYY,
|
||||
where XXXX is the offset address and YYYY is the actual memory
|
||||
address being displayed. For example, if you have a data area
|
||||
located at 42B7H and wish to preserve easy access, just enter
|
||||
"@42b7". Now, "d0,3f" will dump memory starting at 4237H.
|
||||
|
||||
|
||||
Further Changes from DDT:
|
||||
========================
|
||||
|
||||
A A)ssemble now accepts the full Z80 as well as 8080
|
||||
instruction set, although it expects them in Intel rather
|
||||
than Zilog format (see notes below under the 'L'
|
||||
command). When in doubt, see the mnemnonic list below.
|
||||
|
||||
D D)isplay or D)ump will accept an optional third parameter
|
||||
to set the base value for a single execution only. Format
|
||||
has been cleaned up.
|
||||
|
||||
H H)ex_arithmetic on two values also shows their
|
||||
difference in decimal. With only one value, converts to
|
||||
hexadecimal, decimal, and ASCII (low-order byte only).
|
||||
|
||||
|
||||
N N)ame now allows drive specification (d:...) and sets up
|
||||
(I) the complete command line, including both FCB's (at
|
||||
addresses 005CH and 006CH). The tail (stored at 0081H up)
|
||||
is NOT upshifted.
|
||||
I)nput on DDTZ
|
||||
|
||||
U U)nassemble now displays the raw hexcode, especially handy
|
||||
(L) when examining non-code areas. Intel (8080 style) mnemonics
|
||||
are used, so some disassembled instructions may look
|
||||
strange. E.g., the Z80's 'IN B,(C)' and 'OUT (C),B' become
|
||||
'INP B' and 'OUTP B', respectively; 'LD (nnnn),BC' becomes
|
||||
'SBCD nnnn', 'ADD IX, BC' becomes 'DADX B', and 'JP (IX)'
|
||||
becomes 'PCIX'.
|
||||
L)ist on DDTZ
|
||||
|
||||
L L)oad now permits loading a file into memory with an
|
||||
(R) offset, which is added to the default load address of
|
||||
0100H. When reading in a .HEX file with a preset bias,
|
||||
the 'R' command will not transfer control to an invalid
|
||||
execution point. Another execution of the 'R' command will
|
||||
reread the input file, e.g.:
|
||||
|
||||
n blah<ret>
|
||||
l<ret>
|
||||
...modify the code and generally mess about...
|
||||
l<ret>
|
||||
|
||||
The original file is reloaded, and the modifications are
|
||||
removed.
|
||||
R)ead on DDTZ
|
||||
|
||||
E E)nter, like D)isplay, now accepts an optional second
|
||||
(S) parameter to set the base value for a single execution
|
||||
only.
|
||||
S)ubstitute or S)et on DDTZ
|
||||
|
||||
T T)rap/trace on termination now shows the complete CPU
|
||||
state. Traps and traces no longer lock up when a user RST
|
||||
7 instruction is executed. Tracing of BDOS/BIOS calls is
|
||||
heavily trun cated, avoiding clutter and preventing system
|
||||
crashes.
|
||||
|
||||
NOTE: Most of the UNDOCUMENTED Z80 op-codes are handled. Others
|
||||
can crash the system.
|
||||
|
||||
R R)egisters also shows what two-byte values the HL and SP
|
||||
(X) registers are actually pointing to. On Z80's, displays the
|
||||
alternate register set.
|
||||
eX)amine on DDTZ
|
||||
|
||||
NOTE: Any use of the 'W' or 'L' command resets the system DMA
|
||||
transfer address to the standard default value of 0080H.
|
||||
|
||||
|
||||
; This is the output of DDTZ when disassembling OPTYPE.TRY
|
||||
NOP LDA 06A4 MOV M,H
|
||||
LXI B,06A4 DCX SP MOV M,L
|
||||
STAX B INR A HLT
|
||||
INX B DCR A MOV M,A
|
||||
INR B MVI A,20 MOV A,B
|
||||
DCR B CMC MOV A,C
|
||||
MVI B,20 MOV B,B MOV A,D
|
||||
RLC MOV B,C MOV A,E
|
||||
EXAF MOV B,D MOV A,H
|
||||
DAD B MOV B,E MOV A,L
|
||||
LDAX B MOV B,H MOV A,M
|
||||
DCX B MOV B,L MOV A,A
|
||||
INR C MOV B,M ADD B
|
||||
DCR C MOV B,A ADD C
|
||||
MVI C,20 MOV C,B ADD D
|
||||
RRC MOV C,C ADD E
|
||||
DJNZ 0134 MOV C,D ADD H
|
||||
LXI D,06A4 MOV C,E ADD L
|
||||
STAX D MOV C,H ADD M
|
||||
INX D MOV C,L ADD A
|
||||
INR D MOV C,M ADC B
|
||||
DCR D MOV C,A ADC C
|
||||
MVI D,20 MOV D,B ADC D
|
||||
RAL MOV D,C ADC E
|
||||
JR 0134 MOV D,D ADC H
|
||||
DAD D MOV D,E ADC L
|
||||
LDAX D MOV D,H ADC M
|
||||
DCX D MOV D,L ADC A
|
||||
INR E MOV D,M SUB B
|
||||
DCR E MOV D,A SUB C
|
||||
MVI E,20 MOV E,B SUB D
|
||||
RAR MOV E,C SUB E
|
||||
JRNZ 0134 MOV E,D SUB H
|
||||
LXI H,06A4 MOV E,E SUB L
|
||||
SHLD 06A4 MOV E,H SUB M
|
||||
INX H MOV E,L SUB A
|
||||
INR H MOV E,M SBB B
|
||||
DCR H MOV E,A SBB C
|
||||
MVI H,20 MOV H,B SBB D
|
||||
DAA MOV H,C SBB E
|
||||
JRZ 0134 MOV H,D SBB H
|
||||
DAD H MOV H,E SBB L
|
||||
LHLD 06A4 MOV H,H SBB M
|
||||
DCX H MOV H,L SBB A
|
||||
INR L MOV H,M ANA B
|
||||
DCR L MOV H,A ANA C
|
||||
MVI L,20 MOV L,B ANA D
|
||||
CMA MOV L,C ANA E
|
||||
JRNC 0134 MOV L,D ANA H
|
||||
LXI SP,06A4 MOV L,E ANA L
|
||||
STA 06A4 MOV L,H ANA M
|
||||
INX SP MOV L,L ANA A
|
||||
INR M MOV L,M XRA B
|
||||
DCR M MOV L,A XRA C
|
||||
MVI M,20 MOV M,B XRA D
|
||||
STC MOV M,C XRA E
|
||||
JRC 0134 MOV M,D XRA H
|
||||
DAD SP MOV M,E XRA L
|
||||
|
||||
|
||||
XRA M JPE 06A4 SLAR M
|
||||
XRA A XCHG SLAR A
|
||||
ORA B CPE 06A4 SRAR B
|
||||
ORA C XRI 20 SRAR C
|
||||
ORA D RST 5 SRAR D
|
||||
ORA E RP SRAR E
|
||||
ORA H POP PSW SRAR H
|
||||
ORA L JP 06A4 SRAR L
|
||||
ORA M DI SRAR M
|
||||
ORA A CP 06A4 SRAR A
|
||||
CMP B PUSH PSW SLLR B
|
||||
CMP C ORI 20 SLLR C
|
||||
CMP D RST 6 SLLR D
|
||||
CMP E RM SLLR E
|
||||
CMP H SPHL SLLR H
|
||||
CMP L JM 06A4 SLLR L
|
||||
CMP M EI SLLR M
|
||||
CMP A CM 06A4 SLLR A
|
||||
RNZ CPI 20 SRLR B
|
||||
POP B RST 7 SRLR C
|
||||
JNZ 06A4 RLCR B SRLR D
|
||||
JMP 06A4 RLCR C SRLR E
|
||||
CNZ 06A4 RLCR D SRLR H
|
||||
PUSH B RLCR E SRLR L
|
||||
ADI 20 RLCR H SRLR M
|
||||
RST 0 RLCR L SRLR A
|
||||
RZ RLCR M BIT 0,B
|
||||
RET RLCR A BIT 0,C
|
||||
JZ 06A4 RRCR B BIT 0,D
|
||||
CZ 06A4 RRCR C BIT 0,E
|
||||
CALL 06A4 RRCR D BIT 0,H
|
||||
ACI 20 RRCR E BIT 0,L
|
||||
RST 1 RRCR H BIT 0,M
|
||||
RNC RRCR L BIT 0,A
|
||||
POP D RRCR M BIT 1,B
|
||||
JNC 06A4 RRCR A BIT 1,C
|
||||
OUT 20 RALR B BIT 1,D
|
||||
CNC 06A4 RALR C BIT 1,E
|
||||
PUSH D RALR D BIT 1,H
|
||||
SUI 20 RALR E BIT 1,L
|
||||
RST 2 RALR H BIT 1,M
|
||||
RC RALR L BIT 1,A
|
||||
EXX RALR M BIT 2,B
|
||||
JC 06A4 RALR A BIT 2,C
|
||||
IN 20 RARR B BIT 2,D
|
||||
CC 06A4 RARR C BIT 2,E
|
||||
SBI 20 RARR D BIT 2,H
|
||||
RST 3 RARR E BIT 2,L
|
||||
RPO RARR H BIT 2,M
|
||||
POP H RARR L BIT 2,A
|
||||
JPO 06A4 RARR M BIT 3,B
|
||||
XTHL RARR A BIT 3,C
|
||||
CPO 06A4 SLAR B BIT 3,D
|
||||
PUSH H SLAR C BIT 3,E
|
||||
ANI 20 SLAR D BIT 3,H
|
||||
RST 4 SLAR E BIT 3,L
|
||||
RPE SLAR H BIT 3,M
|
||||
PCHL SLAR L BIT 3,A
|
||||
|
||||
|
||||
BIT 4,B RES 3,D SET 2,H
|
||||
BIT 4,C RES 3,E SET 2,L
|
||||
BIT 4,D RES 3,H SET 2,M
|
||||
BIT 4,E RES 3,L SET 2,A
|
||||
BIT 4,H RES 3,M SET 3,B
|
||||
BIT 4,L RES 3,A SET 3,C
|
||||
BIT 4,M RES 4,B SET 3,D
|
||||
BIT 4,A RES 4,C SET 3,E
|
||||
BIT 5,B RES 4,D SET 3,H
|
||||
BIT 5,C RES 4,E SET 3,L
|
||||
BIT 5,D RES 4,H SET 3,M
|
||||
BIT 5,E RES 4,L SET 3,A
|
||||
BIT 5,H RES 4,M SET 4,B
|
||||
BIT 5,L RES 4,A SET 4,C
|
||||
BIT 5,M RES 5,B SET 4,D
|
||||
BIT 5,A RES 5,C SET 4,E
|
||||
BIT 6,B RES 5,D SET 4,H
|
||||
BIT 6,C RES 5,E SET 4,L
|
||||
BIT 6,D RES 5,H SET 4,M
|
||||
BIT 6,E RES 5,L SET 4,A
|
||||
BIT 6,H RES 5,M SET 5,B
|
||||
BIT 6,L RES 5,A SET 5,C
|
||||
BIT 6,M RES 6,B SET 5,D
|
||||
BIT 6,A RES 6,C SET 5,E
|
||||
BIT 7,B RES 6,D SET 5,H
|
||||
BIT 7,C RES 6,E SET 5,L
|
||||
BIT 7,D RES 6,H SET 5,M
|
||||
BIT 7,E RES 6,L SET 5,A
|
||||
BIT 7,H RES 6,M SET 6,B
|
||||
BIT 7,L RES 6,A SET 6,C
|
||||
BIT 7,M RES 7,B SET 6,D
|
||||
BIT 7,A RES 7,C SET 6,E
|
||||
RES 0,B RES 7,D SET 6,H
|
||||
RES 0,C RES 7,E SET 6,L
|
||||
RES 0,D RES 7,H SET 6,M
|
||||
RES 0,E RES 7,L SET 6,A
|
||||
RES 0,H RES 7,M SET 7,B
|
||||
RES 0,L RES 7,A SET 7,C
|
||||
RES 0,M SET 0,B SET 7,D
|
||||
RES 0,A SET 0,C SET 7,E
|
||||
RES 1,B SET 0,D SET 7,H
|
||||
RES 1,C SET 0,E SET 7,L
|
||||
RES 1,D SET 0,H SET 7,M
|
||||
RES 1,E SET 0,L SET 7,A
|
||||
RES 1,H SET 0,M DADX B
|
||||
RES 1,L SET 0,A DADX D
|
||||
RES 1,M SET 1,B LXI X,06A4
|
||||
RES 1,A SET 1,C SIXD 06A4
|
||||
RES 2,B SET 1,D INX X
|
||||
RES 2,C SET 1,E DADX X
|
||||
RES 2,D SET 1,H LIXD 06A4
|
||||
RES 2,E SET 1,L DCX X
|
||||
RES 2,H SET 1,M INR [X+05]
|
||||
RES 2,L SET 1,A DCR [X+05]
|
||||
RES 2,M SET 2,B MVI [X+05],20
|
||||
RES 2,A SET 2,C DADX SP
|
||||
RES 3,B SET 2,D MOV B,[X+05]
|
||||
RES 3,C SET 2,E MOV C,[X+05]
|
||||
|
||||
|
||||
MOV D,[X+05] DSBC B DADY B
|
||||
MOV E,[X+05] SBCD 06A4 DADY D
|
||||
MOV H,[X+05] NEG LXI Y,06A4
|
||||
MOV L,[X+05] RETN SIYD 06A4
|
||||
MOV [X+05],B IM0 INX Y
|
||||
MOV [X+05],C LDIA DADY Y
|
||||
MOV [X+05],D INP C LIYD 06A4
|
||||
MOV [X+05],E OUTP C DCX Y
|
||||
MOV [X+05],H DADC B INR [Y+05]
|
||||
MOV [X+05],L LBCD 06A4 DCR [Y+05]
|
||||
MOV [X+05],A RETI MVI [Y+05],2
|
||||
MOV A,[X+05] LDRA DADY SP
|
||||
ADD [X+05] INP D MOV B,[Y+05]
|
||||
ADC [X+05] OUTP D MOV C,[Y+05]
|
||||
SUB [X+05] DSBC D MOV D,[Y+05]
|
||||
SBB [X+05] SDED 06A4 MOV E,[Y+05]
|
||||
ANA [X+05] IM1 MOV H,[Y+05]
|
||||
XRA [X+05] LDAI MOV L,[Y+05]
|
||||
ORA [X+05] INP E MOV [Y+05],B
|
||||
CMP [X+05] OUTP E MOV [Y+05],C
|
||||
POP X DADC D MOV [Y+05],D
|
||||
XTIX LDED 06A4 MOV [Y+05],E
|
||||
PUSH X IM2 MOV [Y+05],H
|
||||
PCIX LDAR MOV [Y+05],L
|
||||
SPIX INP H MOV [Y+05],A
|
||||
RLCR [X+05] OUTP H MOV A,[Y+05]
|
||||
RRCR [X+05] DSBC H ADD [Y+05]
|
||||
RALR [X+05] shld 06A4 ADC [Y+05]
|
||||
RARR [X+05] RRD SUB [Y+05]
|
||||
SLAR [X+05] INP L SBB [Y+05]
|
||||
SRAR [X+05] OUTP L ANA [Y+05]
|
||||
SRLR [X+05] DADC H XRA [Y+05]
|
||||
BIT 0,[X+05] lhld 06A4 ORA [Y+05]
|
||||
BIT 1,[X+05] RLD CMP [Y+05]
|
||||
BIT 2,[X+05] INP M POP Y
|
||||
BIT 3,[X+05] OUTP M XTIY
|
||||
BIT 4,[X+05] DSBC SP PUSH Y
|
||||
BIT 5,[X+05] SSPD 06A4 PCIY
|
||||
BIT 6,[X+05] INP A SPIY
|
||||
BIT 7,[X+05] OUTP A RLCR [Y+05]
|
||||
RES 0,[X+05] DADC SP RRCR [Y+05]
|
||||
RES 1,[X+05] LSPD 06A4 RALR [Y+05]
|
||||
RES 2,[X+05] LDI RARR [Y+05]
|
||||
RES 3,[X+05] CCI SLAR [Y+05]
|
||||
RES 4,[X+05] INI SRAR [Y+05]
|
||||
RES 5,[X+05] OTI SRLR [Y+05]
|
||||
RES 6,[X+05] LDD BIT 0,[Y+05]
|
||||
RES 7,[X+05] CCD BIT 1,[Y+05]
|
||||
SET 0,[X+05] IND BIT 2,[Y+05]
|
||||
SET 1,[X+05] OTD BIT 3,[Y+05]
|
||||
SET 2,[X+05] LDIR BIT 4,[Y+05]
|
||||
SET 3,[X+05] CCIR BIT 5,[Y+05]
|
||||
SET 4,[X+05] INIR BIT 6,[Y+05]
|
||||
SET 5,[X+05] OTIR BIT 7,[Y+05]
|
||||
SET 6,[X+05] LDDR RES 0,[Y+05]
|
||||
SET 7,[X+05] CCDR RES 1,[Y+05]
|
||||
INP B INDR RES 2,[Y+05]
|
||||
OUTP B OTDR RES 3,[Y+05]
|
||||
|
||||
|
||||
RES 4,[Y+05] SET 0,[Y+05] SET 4,[Y+05]
|
||||
RES 5,[Y+05] SET 1,[Y+05] SET 5,[Y+05]
|
||||
RES 6,[Y+05] SET 2,[Y+05] SET 6,[Y+05]
|
||||
RES 7,[Y+05] SET 3,[Y+05] SET 7,[Y+05]
|
||||
|
||||
; These are the result of disassembling 64180OPS.TRY
|
||||
; These opcodes are available ONLY on the 64180 CPU
|
||||
; DDTZ will both assemble and disassemble these.
|
||||
IN0 B,20 TST E MLT B
|
||||
OUT0 20,B IN0 H,20 MLT D
|
||||
TST B OUT0 20,H TSTI 20
|
||||
IN0 C,20 TST H MLT H
|
||||
OUT0 20,C IN0 L,20 TSIO 20
|
||||
TST C OUT0 20,L SLP
|
||||
IN0 D,20 TST L MLT SP
|
||||
OUT0 20,D TST M OTIM
|
||||
TST D IN0 A,20 OTDM
|
||||
IN0 E,20 OUT0 20,A OIMR
|
||||
OUT0 20,E TST A ODMR
|
||||
|
||||
; The following are UNDOCUMENTED z80 opcodes from XTDOPS.TRY.
|
||||
; DDTZ will disassemble these, but will not assemble them.
|
||||
; They use xh/xl (or yh/yl) as separate byte registers.
|
||||
; Use these at your own risk.
|
||||
INRX H ACXR H MOVY H,B
|
||||
DCRX H ACXR L MOVY H,C
|
||||
MVIX H,20 SUXR H MOVY H,D
|
||||
INRX L SUXR L MOVY H,E
|
||||
DCRX L SBXR H MOVY H,A
|
||||
MVIX L,20 SBXR L MOVY L,B
|
||||
MOVX B,H NDXR H MOVY L,C
|
||||
MOVX B,L NDXR L MOVY L,D
|
||||
MOVX C,H XRXR H MOVY L,E
|
||||
MOVX C,L XRXR L MOVY L,A
|
||||
MOVX D,H ORXR H MOVY A,H
|
||||
MOVX D,L ORXR L MOVY A,L
|
||||
MOVX E,H CPXR H ADYR H
|
||||
MOVX E,L CPXR L ADYR L
|
||||
MOVX H,B INRY H ACYR H
|
||||
MOVX H,C DCRY H ACYR L
|
||||
MOVX H,D MVIY H,20 SUYR H
|
||||
MOVX H,E INRY L SUYR L
|
||||
MOVX H,A DCRY L SBYR H
|
||||
MOVX L,B MVIY L,20 SBYR L
|
||||
MOVX L,C MOVY B,H NDYR H
|
||||
MOVX L,D MOVY B,L NDYR L
|
||||
MOVX L,E MOVY C,H XRYR H
|
||||
MOVX L,A MOVY C,L XRYR L
|
||||
MOVX A,H MOVY D,H ORYR H
|
||||
MOVX A,L MOVY D,L ORYR L
|
||||
ADXR H MOVY E,H CPYR H
|
||||
ADXR L MOVY E,L CPYR L
|
||||
|
||||
|
||||
Command Summary:
|
||||
===============
|
||||
|
||||
DDTZM command DDTZ command
|
||||
============= ============
|
||||
@ (base)
|
||||
A)ssemble first_address A
|
||||
B)egin {i.e., initialize stack and return} B
|
||||
C)ompare first_address,last_address,against_address C
|
||||
D)ump first_address[,last_address[,base]] D
|
||||
E)nter_in_memory first_address[,base] S)ubstitute
|
||||
F)ill first_address,last_address,value F
|
||||
G)o_to [address][,trap1[,trap2]] G
|
||||
H)ex_arithmetic value1(,value2) H
|
||||
L)oad_file (offset) R)ead
|
||||
M)ove first_address,last_address,destination M
|
||||
N)nput FCBs_command_line I)nput
|
||||
Q)uit (not avail)
|
||||
R)egister examine/change [register|flag] X)amine
|
||||
S)earch first_address,last_address,word W)hereis
|
||||
T)race_execution [count] T
|
||||
Untrace_execution [count] (i.e. do count instr) U)ntrace
|
||||
U)nassemble_code first_address[,last_address] L)ist code
|
||||
W)rite [first_address,last_address] K)eep
|
||||
X)amine {i.e. display memory parameters for application} Q)uery
|
||||
Y)our_option BC:=parm1,DE:=parm2,call_address Y
|
||||
Z)80_register_display Z
|
||||
|
||||
|
||||
If you find this program useful, contributions will be gratefully
|
||||
accepted and will encourage further development and release of
|
||||
useful CPM programs. My practice is to include source.
|
||||
|
||||
C.B. Falconer
|
||||
680 Hartford Turnpike,
|
||||
Hamden, Conn. 06517 (203) 281-1438
|
||||
|
||||
DDTZ and its associated documentation and other files are
|
||||
copyright (c) 1980-1988 by C.B. Falconer. They may be freely
|
||||
copied and used for non-commercial purposes ONLY.
|
||||
|
||||
BIN
Images/Source/fd1/u0/DIF.COM
Normal file
BIN
Images/Source/fd1/u0/DIF.COM
Normal file
Binary file not shown.
BIN
Images/Source/fd1/u0/DSCONFIG.COM
Normal file
BIN
Images/Source/fd1/u0/DSCONFIG.COM
Normal file
Binary file not shown.
BIN
Images/Source/fd1/u0/DUMP.COM
Normal file
BIN
Images/Source/fd1/u0/DUMP.COM
Normal file
Binary file not shown.
BIN
Images/Source/fd1/u0/ED.COM
Normal file
BIN
Images/Source/fd1/u0/ED.COM
Normal file
Binary file not shown.
BIN
Images/Source/fd1/u0/FA16.CFG
Normal file
BIN
Images/Source/fd1/u0/FA16.CFG
Normal file
Binary file not shown.
264
Images/Source/fd1/u0/FA16.DOC
Normal file
264
Images/Source/fd1/u0/FA16.DOC
Normal file
@@ -0,0 +1,264 @@
|
||||
|
||||
FILEATTR
|
||||
Version 1.6
|
||||
|
||||
Gene Pizzetta
|
||||
January 18, 1992
|
||||
A ZSDOS utility, copyright (c) 1988 by Carson Wilson.
|
||||
|
||||
|
||||
FILEATTR (FA) is a utility that allows rapid settin, resetting,
|
||||
or displaying of file attributes under ZSDOS, ZRDOS, and CP/M
|
||||
2.2. Several additional features are available under ZCPR3,
|
||||
including error flag setting, error handler invocation, an
|
||||
enhanced display, and better error detection.
|
||||
|
||||
FA will not run under CP/M 3.0 or Z3PLUS.
|
||||
|
||||
USAGE:
|
||||
|
||||
FILEATTR {dir:}{afn} {{/}options}
|
||||
|
||||
If a DIR or DU specification is not given, the current directory
|
||||
is assumed (under vanilla CP/M only the drive is significant).
|
||||
If no ambiguous or unambiguous filename is given, all files
|
||||
("*.*") are matched.
|
||||
|
||||
If no attribute options are given, FILEATTR merely displays the
|
||||
current state of each file's attributes. Files are displayed in
|
||||
the order that they appear in the directory.
|
||||
|
||||
Once operation begins, FA cannot be aborted by the user. If a ^C
|
||||
is entered at the keyboard, all screen output stops, but file
|
||||
attribute operations continue to completion. If that was not the
|
||||
case, attributes might be set on some entries for a file and not
|
||||
on others. Nevertheless, suppressing screen output speeds things
|
||||
up a bit.
|
||||
|
||||
OPTIONS: A leading slash is required unless the option list is
|
||||
the second parameter on the command line. Options may be
|
||||
separated by spaces, commas, or nothing at all.
|
||||
|
||||
ATTRIBUTE OPTIONS: These options set (turn on) corresponding
|
||||
attributes on files matching the file specification. Attributes
|
||||
not specified by an attribute option remain unchanged.
|
||||
|
||||
If the option is preceded by a minus ("-") or by an "N", the
|
||||
corresponding attribute is reset (turned off).
|
||||
|
||||
1 F1. This is a user attribute which has no predefined
|
||||
meaning.
|
||||
|
||||
P Public (f2). Under ZSDOS, when this attribute is set,
|
||||
a file is available from any user area of the disk on
|
||||
which it resides. A file cannot be made public if
|
||||
another file with the same name exists in any other
|
||||
user area on that drive. In that case FA will issue an
|
||||
error message and leave the attribute off.
|
||||
|
||||
D Inhibit access datestamp (f3). Under ZSDOS, when this
|
||||
attribute is set, the file's access datestamp will not
|
||||
be updated, which may speed file access slightly. If
|
||||
the attribute is turned off, normal access datestamping
|
||||
resumes.
|
||||
|
||||
4 F4. This is a user attribute which has no predefined
|
||||
meaning.
|
||||
|
||||
W Wheel protect (f8). Under ZSDOS, when this attribute
|
||||
is set, the file becomes read-only when the wheel byte
|
||||
is off and cannot be erased. If the wheel byte is on,
|
||||
the file can be erased normally.
|
||||
|
||||
R Read only (t1). When this attribute is set, the file
|
||||
cannot be erased or modified by most programs.
|
||||
|
||||
S System (t2). When this attribute is set, the file
|
||||
becomes a "hidden" file that will not be found by most
|
||||
directory programs or by most well-behaved utilities
|
||||
that accept ambiguous filenames. (FA must find system
|
||||
files, of course.)
|
||||
|
||||
A Archive (t3). When this attribute is set, it signals
|
||||
some archival programs that the file has not been
|
||||
modified since it was last backed up. If a file is
|
||||
modified, ZSDOS and ZRDOS turn this attribute off.
|
||||
CP/M does not fully support this attribute, however.
|
||||
|
||||
OTHER OPTIONS: These options affect only the screen display.
|
||||
|
||||
Q Quiet mode. Console output is suppressed unless there
|
||||
is an error. All other operations are performed
|
||||
normally.
|
||||
|
||||
X Screen paging off. With this option, screen paging is
|
||||
turned off. The screen can still be paused by pressing
|
||||
any key except ^C.
|
||||
|
||||
ERRORS: Under ZCPR3, errors will cause FA to set the program
|
||||
error flag and to invoke the error handler. The error flag will
|
||||
be set to the following values:
|
||||
2 invalid directory specification
|
||||
4 miscellaneous (conflicting file, no files on disk)
|
||||
10 no matching files found (no error handler)
|
||||
18 Disk read-only
|
||||
19 Invalid option
|
||||
|
||||
For error code 10 (no matching files found), the error flag is
|
||||
set, but the error handler is not called.
|
||||
|
||||
In addition, under ZCPR 3.3 and above, an invalid directory
|
||||
specification will abort FA to the error handler, but no message
|
||||
is printed.
|
||||
|
||||
The following error messages may be seen:
|
||||
|
||||
Conflicting entry, can't set public attribute
|
||||
If there are files with the same name in other user areas of
|
||||
the disk, the public attribute cannot be set.
|
||||
|
||||
No files on disk
|
||||
The disk directory is empty.
|
||||
|
||||
Bad Option: /o
|
||||
The command line option shown is unknown to FILEATTR.
|
||||
|
||||
Drive R/O
|
||||
The drive is set to read-only by the operating system and
|
||||
attributes cannot be changed.
|
||||
|
||||
CP/M version 2.x required
|
||||
FILEATTR will not run on this system.
|
||||
|
||||
BIOS write error near directory sector n
|
||||
An error occurred at or near the given directory sector,
|
||||
which is expressed as a decimal offset from the beginning of
|
||||
the directory.
|
||||
|
||||
BIOS set track detected - FA aborting
|
||||
A background program is attempting to modify the current
|
||||
track setting. The background program must be removeed
|
||||
before running FA again.
|
||||
|
||||
Not Wheel
|
||||
Under ZCPR3 the wheel byte must be set before FILEATTR can
|
||||
be run.
|
||||
|
||||
CONFIGURATION: While no installation is necessary, all options
|
||||
can be set as defaults, if you prefer, using ZCNFG. The
|
||||
configuration options are fully explained on the ZCNFG help
|
||||
screens.
|
||||
|
||||
It is best not to change the name of the configuration file. Its
|
||||
special name assures that ZCNFG will always find the correct CFG
|
||||
file, even if the name of FA has been changed or if more than one
|
||||
version of FA is online.
|
||||
|
||||
HISTORY:
|
||||
|
||||
Version 1.6 -- April 14, 1991 -- Gene Pizzetta
|
||||
Now displays target DU and directory name in summary. Fixed
|
||||
bug that caused "GO" to be displayed as program name, if it
|
||||
was re-invoked with the GO command.
|
||||
|
||||
Version 1.5 -- March 27, 1991 -- Gene Pizzetta
|
||||
Now calls CP/M version checking routine (it was there, but
|
||||
it wasn't called). Changed error codes: 10, no matching
|
||||
files found. "No files on disk" error now gets
|
||||
miscellaneous error code (4). Error 10 does not invoke
|
||||
error handler. Not released.
|
||||
|
||||
Version 1.4 -- March 20, 1991 -- Gene Pizzetta, Howard Goldstein
|
||||
Code to check module data byte (S2) was replaced by Howard
|
||||
Goldstein's elegant solution which uses a "true" extent
|
||||
number: ((data_mod * 32) + extent). Entering a ^C no
|
||||
longer really aborts FILEATTR; instead FA immediately prints
|
||||
"Wait..." on the screen, turns off paging, turns on quiet
|
||||
mode, sets the results flag, and finishes what it was doing.
|
||||
All this is to prevent unexpected results when only some of
|
||||
a file's directory entries are changed. All errors
|
||||
including a conflicting file found during a PUBLIC request,
|
||||
now set the program error flag and invoke the error handler
|
||||
so an active SUBMIT or ZEX script can be aborted. The error
|
||||
flag will have the following values: 2, invalid directory;
|
||||
10, no files on disk; 18, disk is read-only; 19, invalid
|
||||
option; 4, all other errors. If no matching files are
|
||||
found, the program error flag will be set to FFh, but the
|
||||
error handler will not be invoked. A few other code changes
|
||||
were made, including a check for CP/M-Plus, under which
|
||||
FILEATTR will not work. Not released.
|
||||
|
||||
Version 1.3 -- February 22, 1991 -- Gene Pizzetta
|
||||
Corrected bug that caused faulty operation on large files:
|
||||
The module data byte (S2) byte was not being checked, so
|
||||
such files appeared 2 or more times in the directory display
|
||||
and the public routine was often not finding conflicting
|
||||
files. Added configuration byte and command line option (X)
|
||||
for screen paging (paging is suppressed in quiet mode).
|
||||
Made quiet mode responsive to ZCPR quiet flag and changed Q
|
||||
command line option to toggle. Usage screen reflects
|
||||
current effect of X and Q toggles. Attribute configuration
|
||||
area changed to be compatible with ZCNFG TOGL3 routine.
|
||||
Actions of D and ND options reversed so they work the same
|
||||
as the others. Added configuration byte for printing
|
||||
summary line even in quiet mode, as suggested by Howard
|
||||
Goldstein. Removed blank lines from screen display,
|
||||
allowing three more filenames to be shown. Removed tabs
|
||||
from usage screen so PRINT and PSTR are not needed.
|
||||
Eliminated leading zero from user number display. Now
|
||||
prints "file" instead of "files" in summary when only 1
|
||||
matching file is found. Ditto for attribute(s) altered.
|
||||
|
||||
Version 1.2 -- November 30, 1988 -- Carson Wilson
|
||||
Fixed bug of no program name display when FILEATTR's name
|
||||
was 8 characters long.
|
||||
|
||||
Version 1.1 -- October 30, 1988 -- Carson Wilson
|
||||
Now wildcards the command forms "FA d: /options" and "FA d:
|
||||
options."
|
||||
|
||||
Version 1.0 -- September 26, 1988 -- Carson Wilson
|
||||
If a filespec is given, no leading slash is required before
|
||||
the options. Link with version 4 libraries. Removed /X
|
||||
option--ZSDOS 10T always closes the first extent when a file
|
||||
is written to. Changed summary to read "files matched".
|
||||
|
||||
Version 0.9 -- July 7, 1988 -- Carson Wilson
|
||||
Increased length of search FCB (AMBFIL) by one byte. Set up
|
||||
AMBFIL as '?' + 35 binary 0's. ZRDOS and CP/M zero the
|
||||
drive byte (FCB+0) during search next calls, so reinitialize
|
||||
it to '?' before rescanning the directory. PROGID now
|
||||
prints stored name on GO/JUMP.
|
||||
|
||||
Version 0.8 -- June 26, 1988 -- Carson Wilson
|
||||
Use SYSLIB PRINT for help display. VPRINT does not expand
|
||||
tabs. Now traps disk track changes at the BIOS level.
|
||||
Allows '-' as well as 'N' for "negate option." Auto-
|
||||
wildcards FCB1 for attribute set as well as display.
|
||||
|
||||
Version 0.7 -- May 24, 1988 -- Carson Wilson
|
||||
Cosmetic changes to help, display. Made public routines
|
||||
faster by 1/2 directory scan average. Consolidated file
|
||||
attribute setting/resetting routines for efficiency and
|
||||
clarity.
|
||||
|
||||
Version 0.6 -- May 14, 1988 -- Carson Wilson
|
||||
Changed "Publ" to "Publc" and "Priv" to "Privt". Added Q
|
||||
and X options, made options installable. Added test for bad
|
||||
ZCPR directory & chain to error handler.
|
||||
|
||||
Version 0.5 -- May 4, 1988 -- Carson Wilson
|
||||
Fixed bug at CHKRO inherited from MAKE.ASM. Uses Bridger
|
||||
Mitchell's FRESET to reset disks. Uses ZCPR invocation name
|
||||
in signon, help, etc. Added F4 attribute. Now includes all
|
||||
valid ZSDOS attributes. Help now fully "smart" under ZCPR.
|
||||
Reworked VID3.Z80 and VID4.Z80 from VLIB11 and moved them
|
||||
into FA.Z80 (see end of file). Put STNDOUT mode ON by
|
||||
default at beginning of each attribute display sequence for
|
||||
faster ZCPR displays.
|
||||
|
||||
Version 0.4 -- April 27, 1988 -- Carson Wilson
|
||||
Tests for matching files at other user areas before setting
|
||||
the public attribit.
|
||||
|
||||
Version 0.3 -- April 26, 1988 -- Carson Wilson
|
||||
6
Images/Source/fd1/u0/FA16A.FOR
Normal file
6
Images/Source/fd1/u0/FA16A.FOR
Normal file
@@ -0,0 +1,6 @@
|
||||
An update and bug-fix of FILEATTR (FA), a ZSDOS utility that
|
||||
allows rapid setting, resetting, or displaying of file attributes
|
||||
under ZSDOS, ZRDOS, and CP/M 2.2. Several additional features
|
||||
are available under ZCPR3, including error flag setting, error
|
||||
handler invocation, and an enhanced display. Version 1.6A adds
|
||||
documentation; otherwise, same as 1.6.
|
||||
39
Images/Source/fd1/u0/FA16CFG.TXT
Normal file
39
Images/Source/fd1/u0/FA16CFG.TXT
Normal file
@@ -0,0 +1,39 @@
|
||||
|
||||
Option Q -- If the ZCPR quiet flag is set, FILEATTR will always default to
|
||||
quiet mode. To make quiet mode the default at all times, even when running
|
||||
under CP/M, set this configuration option to "Yes". Whatever is selected
|
||||
here can be toggled with the command line "Q" option.
|
||||
|
||||
Option X -- A "Yes" will cause FILEATTR to page screen output by default.
|
||||
A "No" will default to continuous scrolling. The chosen default can be
|
||||
toggled with the command line "X" option. Screen paging is always turned
|
||||
off in quiet mode.
|
||||
|
||||
Option R -- As distributed, FILEATTR prints nothing to the screen when it
|
||||
is operating in quiet mode. If this configuration option is "Yes", the
|
||||
results summary line that gives the number of matching files found and the
|
||||
number of attributes changed will be printed even in quiet mode.
|
||||
|
||||
Option S -- Enter the number of lines on your video display screen. Under
|
||||
ZCPR 3.3 and higher, the number of screen lines for paging is obtained from
|
||||
the environment descriptor. This configuration parameter is used only if
|
||||
running under CP/M.
|
||||
|
||||
|
||||
Attribute Configuration Options
|
||||
|
||||
As distributed, FILEATTR will not change any file attribute unless
|
||||
explicitly commanded to do so by a command line option. To configure
|
||||
FILEATTR to turn a file attribute ON or OFF by default, toggle the
|
||||
appropriate configuration selection.
|
||||
|
||||
For example, to make FILEATTR set all matching files to Public by default,
|
||||
change the "Public attribute" setting to "Turn On". Then FILEATTR will set
|
||||
the specified files to Public unless the /NP command line option is given
|
||||
(which would cause the files to be set to Private). Since there is no
|
||||
command which tells FILEATTR not to change an attribute, however, the
|
||||
program will now insist on turning the Public attribute either on (default)
|
||||
or off (through the /NP option).
|
||||
|
||||
Most users will have neither need nor desire to change the configuration
|
||||
default as distributed which will "Leave As-Is" all matching files.
|
||||
BIN
Images/Source/fd1/u0/FILEATTR.COM
Normal file
BIN
Images/Source/fd1/u0/FILEATTR.COM
Normal file
Binary file not shown.
BIN
Images/Source/fd1/u0/FILEDATE.CFG
Normal file
BIN
Images/Source/fd1/u0/FILEDATE.CFG
Normal file
Binary file not shown.
BIN
Images/Source/fd1/u0/FILEDATE.COM
Normal file
BIN
Images/Source/fd1/u0/FILEDATE.COM
Normal file
Binary file not shown.
BIN
Images/Source/fd1/u0/INITDIR.CFG
Normal file
BIN
Images/Source/fd1/u0/INITDIR.CFG
Normal file
Binary file not shown.
BIN
Images/Source/fd1/u0/INITDIR.COM
Normal file
BIN
Images/Source/fd1/u0/INITDIR.COM
Normal file
Binary file not shown.
BIN
Images/Source/fd1/u0/LBREXT.COM
Normal file
BIN
Images/Source/fd1/u0/LBREXT.COM
Normal file
Binary file not shown.
BIN
Images/Source/fd1/u0/LDDS.COM
Normal file
BIN
Images/Source/fd1/u0/LDDS.COM
Normal file
Binary file not shown.
BIN
Images/Source/fd1/u0/LDP2D.COM
Normal file
BIN
Images/Source/fd1/u0/LDP2D.COM
Normal file
Binary file not shown.
BIN
Images/Source/fd1/u0/LIB.COM
Normal file
BIN
Images/Source/fd1/u0/LIB.COM
Normal file
Binary file not shown.
BIN
Images/Source/fd1/u0/LINK.COM
Normal file
BIN
Images/Source/fd1/u0/LINK.COM
Normal file
Binary file not shown.
BIN
Images/Source/fd1/u0/LOAD.COM
Normal file
BIN
Images/Source/fd1/u0/LOAD.COM
Normal file
Binary file not shown.
BIN
Images/Source/fd1/u0/MAC.COM
Normal file
BIN
Images/Source/fd1/u0/MAC.COM
Normal file
Binary file not shown.
BIN
Images/Source/fd1/u0/MBASIC.COM
Normal file
BIN
Images/Source/fd1/u0/MBASIC.COM
Normal file
Binary file not shown.
BIN
Images/Source/fd1/u0/NULU.COM
Normal file
BIN
Images/Source/fd1/u0/NULU.COM
Normal file
Binary file not shown.
BIN
Images/Source/fd1/u0/PIP.COM
Normal file
BIN
Images/Source/fd1/u0/PIP.COM
Normal file
Binary file not shown.
BIN
Images/Source/fd1/u0/PUTBG.COM
Normal file
BIN
Images/Source/fd1/u0/PUTBG.COM
Normal file
Binary file not shown.
BIN
Images/Source/fd1/u0/PUTDS.COM
Normal file
BIN
Images/Source/fd1/u0/PUTDS.COM
Normal file
Binary file not shown.
BIN
Images/Source/fd1/u0/RELOG.COM
Normal file
BIN
Images/Source/fd1/u0/RELOG.COM
Normal file
Binary file not shown.
BIN
Images/Source/fd1/u0/RMAC.COM
Normal file
BIN
Images/Source/fd1/u0/RMAC.COM
Normal file
Binary file not shown.
BIN
Images/Source/fd1/u0/SETTERM.COM
Normal file
BIN
Images/Source/fd1/u0/SETTERM.COM
Normal file
Binary file not shown.
BIN
Images/Source/fd1/u0/SETUPZST.COM
Normal file
BIN
Images/Source/fd1/u0/SETUPZST.COM
Normal file
Binary file not shown.
BIN
Images/Source/fd1/u0/SID.COM
Normal file
BIN
Images/Source/fd1/u0/SID.COM
Normal file
Binary file not shown.
BIN
Images/Source/fd1/u0/STAMPS.DAT
Normal file
BIN
Images/Source/fd1/u0/STAMPS.DAT
Normal file
Binary file not shown.
BIN
Images/Source/fd1/u0/STAT.COM
Normal file
BIN
Images/Source/fd1/u0/STAT.COM
Normal file
Binary file not shown.
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user