mirror of
https://github.com/wwarthen/RomWBW.git
synced 2026-02-07 15:03:13 -06:00
Compare commits
1 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
80d52d824c |
@@ -1,4 +1,4 @@
|
||||
@echo off
|
||||
setlocal
|
||||
|
||||
pushd Source && call BuildCommon && popd
|
||||
cd Source
|
||||
call BuildCommon %*
|
||||
|
||||
@@ -1,4 +0,0 @@
|
||||
@echo off
|
||||
setlocal
|
||||
|
||||
pushd Images && Build && popd
|
||||
@@ -1,11 +1,9 @@
|
||||
@echo off
|
||||
|
||||
setlocal
|
||||
|
||||
pushd Source && call Clean && popd
|
||||
pushd Images && call Clean && popd
|
||||
|
||||
if exist *.img del *.img /Q
|
||||
if exist *.log del *.log /Q
|
||||
if exist debug.log del debug.log
|
||||
|
||||
if exist Output\*.* del Output\*.* /Q
|
||||
|
||||
102
Doc/Build.txt
102
Doc/Build.txt
@@ -3,45 +3,35 @@ 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). 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
|
||||
64-bit).
|
||||
|
||||
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.
|
||||
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.
|
||||
|
||||
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.
|
||||
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.
|
||||
|
||||
The basic steps to create a custom ROM are:
|
||||
In summary, the process involves the 4 steps below:
|
||||
|
||||
1) Create/update configuration file
|
||||
|
||||
2) Update/Add/Delete any files you want incorporated in
|
||||
the ROM Disk
|
||||
|
||||
3) Run the build scripts and
|
||||
3) Run the build script (or makefile if you prefer) and
|
||||
confirm there are no errors.
|
||||
|
||||
4) Burn the resultant ROM image and try it.
|
||||
|
||||
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.
|
||||
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.
|
||||
|
||||
Each of the 4 steps above is described in more detail
|
||||
below.
|
||||
|
||||
Acquiring the Distribution
|
||||
--------------------------
|
||||
|
||||
Preparing PowerShell
|
||||
--------------------
|
||||
|
||||
|
||||
1. Create/Update Configuration File
|
||||
-----------------------------------
|
||||
|
||||
@@ -51,22 +41,21 @@ process. In order to customize your settings, you
|
||||
need to modify an existing configuration file or
|
||||
create your own.
|
||||
|
||||
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
|
||||
If you look in the Source directory, you will see
|
||||
a series of files named config_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 XXXX_yyyy.asm file and modify
|
||||
you can copy it to a new config_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 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.
|
||||
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.
|
||||
|
||||
The config files are simply text files with various
|
||||
settings. Open your target config file with your
|
||||
@@ -94,30 +83,30 @@ ROM disk. The build process will determine
|
||||
which subdirectories to include files from based
|
||||
on the following rules:
|
||||
|
||||
First, all files from either ROM_512KB or ROM_1024KB will
|
||||
be included depending on on the size of the ROM you
|
||||
First, all files from either std_512 or std_1024 will
|
||||
be incuded depending on on the size of the ROM you
|
||||
are building. If you are building a 512KB ROM, then
|
||||
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
|
||||
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
|
||||
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 ZETA_std will
|
||||
the "ZETA_std" configuration, all files in cfg_ZETA_std will
|
||||
be added. Note that these files will be in addition
|
||||
to the files from the ROM_XXXKB directory.
|
||||
to the files from the std_XXXKB directory.
|
||||
|
||||
If you created your own config file (like ZETA_wayne.asm
|
||||
If you created your own config file (like config_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 ZETA_wayne.asm from ZETA_std.asm,
|
||||
you created config_ZETA_wayne.asm from config_ZETA_std.asm,
|
||||
then you would create a subdirectory in RomDsk called
|
||||
ZETA_wayne and copy all the files from ZETA_std to
|
||||
ZETA_wayne.
|
||||
cfg_ZETA_wayne and copy all the files from cfg_ZETA_std to
|
||||
cfg_ZETA_wayne.
|
||||
|
||||
3. Run the Build Process
|
||||
------------------------
|
||||
@@ -137,22 +126,23 @@ 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 command and ensure it completes
|
||||
following commands and ensure that they complete
|
||||
without error:
|
||||
|
||||
BuildCommon
|
||||
BuildZCPR-DJ
|
||||
BuildApps2
|
||||
|
||||
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.
|
||||
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.
|
||||
|
||||
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. It is
|
||||
choose "Run as Administrator" to make the change. If 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
|
||||
@@ -164,7 +154,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, ZETA2, N8, or UNA.
|
||||
It must be one of N8VEM, ZETA, N8, S2I, or S100.
|
||||
|
||||
Configuration:
|
||||
|
||||
@@ -180,7 +170,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 size of the ROM you will ultimately be burning. This is
|
||||
the szie 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
|
||||
@@ -190,7 +180,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 various components have taken. You should check these
|
||||
space variouis 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
|
||||
@@ -209,11 +199,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
|
||||
@@ -236,7 +226,7 @@ Example Build Run
|
||||
-----------------
|
||||
|
||||
C:\Users\WWarthen\Projects\N8VEM\Build\RomWBW>Build.cmd
|
||||
Platform [N8VEM|ZETA|N8|UNA|S100]: ZETA
|
||||
Platform [N8VEM|ZETA|N8|S2I|S100]: ZETA
|
||||
Configurations available:
|
||||
> ppp
|
||||
> std
|
||||
|
||||
@@ -1,23 +1,3 @@
|
||||
Version 2.7.1
|
||||
- WBW: Support loading from image file (UNA FSFAT)
|
||||
|
||||
Version 2.7.0
|
||||
-------------
|
||||
- WBW: Memory page reorganization
|
||||
- WBW: Support for Zeta 2 (from Sergey Kiselev)
|
||||
|
||||
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
|
||||
|
||||
Version 2.6.2
|
||||
-------------
|
||||
- WBW: ASSIGN.COM substantially improved to map all drive types
|
||||
|
||||
Binary file not shown.
@@ -1,15 +0,0 @@
|
||||
@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 +0,0 @@
|
||||
@PowerShell .\BuildFD.ps1 %*
|
||||
@@ -1,33 +0,0 @@
|
||||
$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 +0,0 @@
|
||||
@PowerShell .\BuildHD.ps1 %*
|
||||
@@ -1,39 +0,0 @@
|
||||
$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
|
||||
@@ -1,2 +0,0 @@
|
||||
@echo off
|
||||
if exist *.tmp del *.tmp /Q
|
||||
@@ -1,29 +0,0 @@
|
||||
@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
|
||||
@@ -1,246 +0,0 @@
|
||||
************************************************************
|
||||
*** 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.
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -1,564 +0,0 @@
|
||||
|
||||
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.
|
||||
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -1,69 +0,0 @@
|
||||
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
|
||||
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -1,43 +0,0 @@
|
||||
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.
|
||||
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -1,564 +0,0 @@
|
||||
|
||||
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.
|
||||
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -1,264 +0,0 @@
|
||||
|
||||
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
|
||||
@@ -1,6 +0,0 @@
|
||||
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.
|
||||
@@ -1,39 +0,0 @@
|
||||
|
||||
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.
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
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