mirror of
https://github.com/wwarthen/RomWBW.git
synced 2026-02-07 06:53:13 -06:00
Compare commits
11 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
99b8c0281e | ||
|
|
c754fcdb99 | ||
|
|
2148c3e1f7 | ||
|
|
cc51d012de | ||
|
|
ea547a012b | ||
|
|
8e535d53f4 | ||
|
|
5e08740456 | ||
|
|
72dc548e6e | ||
|
|
594ae07aa6 | ||
|
|
a8491cc5e0 | ||
|
|
74b80aaeeb |
File diff suppressed because it is too large
Load Diff
@@ -1,26 +0,0 @@
|
||||
@echo off
|
||||
|
||||
setlocal
|
||||
|
||||
set PATH=..\Tools\tasm32;..\Tools\zx;%PATH%
|
||||
|
||||
set TASMTABS=..\Tools\tasm32
|
||||
|
||||
set ZXBINDIR=../tools/cpm/bin/
|
||||
set ZXLIBDIR=../tools/cpm/lib/
|
||||
set ZXINCDIR=../tools/cpm/include/
|
||||
|
||||
call :asm SysCopy || goto :eof
|
||||
call :asm Assign || goto :eof
|
||||
call :asm Format || goto :eof
|
||||
call :asm Talk || goto :eof
|
||||
|
||||
zx Z80ASM -SYSGEN/F
|
||||
|
||||
goto :eof
|
||||
|
||||
:asm
|
||||
echo.
|
||||
echo Building %1...
|
||||
tasm -t80 -b -g3 -fFF %1.asm %1.com %1.lst
|
||||
goto :eof
|
||||
@@ -1,4 +1,4 @@
|
||||
@echo off
|
||||
setlocal
|
||||
cd Source
|
||||
PowerShell .\Build.ps1 %*
|
||||
call Build %*
|
||||
|
||||
@@ -1,7 +0,0 @@
|
||||
@echo off
|
||||
|
||||
setlocal
|
||||
|
||||
echo Building Apps...
|
||||
cd Apps
|
||||
call Build.cmd
|
||||
@@ -1,7 +0,0 @@
|
||||
@echo off
|
||||
|
||||
setlocal
|
||||
|
||||
echo Building CP/M 2.2...
|
||||
cd CPM22
|
||||
call Build.cmd
|
||||
@@ -1,7 +1,4 @@
|
||||
@echo off
|
||||
setlocal
|
||||
|
||||
call BuildCPM22
|
||||
call BuildZCPR
|
||||
call BuildZCPR-DJ
|
||||
call BuildApps.cmd
|
||||
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,4 +0,0 @@
|
||||
@echo off
|
||||
setlocal
|
||||
cd Source
|
||||
PowerShell .\BuildUNA.ps1 %*
|
||||
@@ -1,4 +0,0 @@
|
||||
@echo off
|
||||
setlocal
|
||||
cd Source
|
||||
PowerShell .\BuildUNALOAD.ps1 %*
|
||||
@@ -1,7 +0,0 @@
|
||||
@echo off
|
||||
|
||||
setlocal
|
||||
|
||||
echo Building ZCPR-DJ...
|
||||
cd ZCPR-DJ
|
||||
call Build.cmd
|
||||
@@ -1,7 +0,0 @@
|
||||
@echo off
|
||||
|
||||
setlocal
|
||||
|
||||
echo Building ZCPR...
|
||||
cd ZCPR
|
||||
call Build.cmd
|
||||
@@ -1,72 +0,0 @@
|
||||
@echo off
|
||||
|
||||
setlocal
|
||||
|
||||
set PATH=..\Tools\tasm32;..\Tools\zx;%PATH%
|
||||
|
||||
set TASMTABS=..\Tools\tasm32
|
||||
|
||||
set ZXBINDIR=../tools/cpm/bin/
|
||||
set ZXLIBDIR=../tools/cpm/lib/
|
||||
set ZXINCDIR=../tools/cpm/include/
|
||||
|
||||
call :asm ccpb03 || goto :eof
|
||||
call :asm bdosb01 || goto :eof
|
||||
|
||||
zx MAC -CCP.ASM -$PO
|
||||
zx MLOAD25 -CCP.BIN=CCP.HEX
|
||||
|
||||
zx MAC -BDOS.ASM -$PO
|
||||
zx MLOAD25 -BDOS.BIN=BDOS.HEX
|
||||
|
||||
zx MAC -CCP22.ASM -$PO
|
||||
zx MLOAD25 -CCP22.BIN=CCP22.HEX
|
||||
|
||||
zx MAC -BDOS22.ASM -$PO
|
||||
zx MLOAD25 -BDOS22.BIN=BDOS22.HEX
|
||||
|
||||
zx MAC -OS2CCP.ASM -$PO
|
||||
zx MLOAD25 -OS2CCP.BIN=OS2CCP.HEX
|
||||
|
||||
zx MAC -OS3BDOS.ASM -$PO
|
||||
zx MLOAD25 -OS3BDOS.BIN=OS3BDOS.HEX
|
||||
|
||||
goto :eof
|
||||
|
||||
:asm
|
||||
echo.
|
||||
echo Building %1...
|
||||
tasm -t80 -b -g3 -fFF %1.asm %1.bin %1.lst
|
||||
goto :eof
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@echo off
|
||||
|
||||
setlocal
|
||||
|
||||
set PATH=..\Tools\tasm32;..\Tools\zx;%PATH%
|
||||
|
||||
set TASMTABS=..\Tools\tasm32
|
||||
|
||||
set ZXBINDIR=../tools/cpm/bin/
|
||||
set ZXLIBDIR=../tools/cpm/lib/
|
||||
set ZXINCDIR=../tools/cpm/include/
|
||||
|
||||
call :asm SysCopy || goto :eof
|
||||
call :asm Assign || goto :eof
|
||||
call :asm Format || goto :eof
|
||||
call :asm Talk || goto :eof
|
||||
|
||||
zx Z80ASM -SYSGEN/F
|
||||
|
||||
goto :eof
|
||||
|
||||
:asm
|
||||
echo.
|
||||
echo Building %1...
|
||||
tasm -t80 -b -g3 -fFF %1.asm %1.com %1.lst
|
||||
goto :eof
|
||||
34
Clean.cmd
34
Clean.cmd
@@ -1,37 +1,11 @@
|
||||
@echo off
|
||||
|
||||
setlocal
|
||||
|
||||
echo Cleaning Source...
|
||||
pushd Source
|
||||
call Clean.cmd
|
||||
popd
|
||||
|
||||
echo Cleaning Apps...
|
||||
pushd Apps
|
||||
call Clean.cmd
|
||||
popd
|
||||
|
||||
echo Cleaning CPM22...
|
||||
pushd CPM22
|
||||
call Clean.cmd
|
||||
popd
|
||||
|
||||
echo Cleaning ZCPR...
|
||||
pushd ZCPR
|
||||
call Clean.cmd
|
||||
popd
|
||||
|
||||
echo Cleaning ZCPR-DJ...
|
||||
pushd ZCPR-DJ
|
||||
call Clean.cmd
|
||||
popd
|
||||
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
|
||||
|
||||
choice /m "Clean Output directories?"
|
||||
if errorlevel 2 goto :eof
|
||||
echo Cleaning Output directories...
|
||||
if exist Output\*.* del Output\*.* /Q
|
||||
if exist OutputUNA\*.* del OutputUNA\*.* /Q
|
||||
if exist OutputUNALOAD\*.* del OutputUNALOAD\*.* /Q
|
||||
|
||||
112
Doc/Build.txt
112
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,16 +180,9 @@ 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.
|
||||
|
||||
System [CPM|ZSYS]:
|
||||
|
||||
Respond with the type of system you wish to create. If you are
|
||||
not sure which you want, you should enter "CPM". Refer to the
|
||||
ReadMe.txt file for more information on the difference between
|
||||
the two system types.
|
||||
|
||||
At this point, the build should run and you will see output related
|
||||
to the assembler runs and some utility invocations. Just review
|
||||
the output for any obvioius errors. Normally, all errors will
|
||||
@@ -187,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
|
||||
@@ -206,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
|
||||
@@ -224,7 +227,7 @@ command, you can specify the options right on the command line.
|
||||
|
||||
For example:
|
||||
|
||||
Build ZETA std 512 CPM
|
||||
Build ZETA std 512
|
||||
|
||||
In this case, you will not be prompted. This is useful if you
|
||||
wish to automate your build process.
|
||||
@@ -233,13 +236,12 @@ 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
|
||||
Configuration: std
|
||||
ROM Size [512|1024]: 512
|
||||
System [CPM|ZSYS]: CPM
|
||||
|
||||
Building ZETA_std: 512KB ROM configuration std for Z80...
|
||||
|
||||
|
||||
@@ -1,3 +1,37 @@
|
||||
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
|
||||
|
||||
Version 2.6.2
|
||||
-------------
|
||||
- WBW: ASSIGN.COM substantially improved to map all drive types
|
||||
|
||||
Version 2.6.1
|
||||
-------------
|
||||
- WBW: Both CP/M and ZSystem are imbedded in the ROM
|
||||
image.
|
||||
|
||||
Version 2.6
|
||||
-----------
|
||||
- WBW: Old Apps removed (MULTIFMT, CPMNAME, SETLABEL, etc.)
|
||||
|
||||
Binary file not shown.
@@ -1,18 +1,14 @@
|
||||
The Support directory contains files that may be needed to complete
|
||||
The Hardware directory contains files that may be needed to complete
|
||||
your system setup that would not be appropriate to include in the
|
||||
ROM itself or in the ROM disk.
|
||||
|
||||
Contents
|
||||
--------
|
||||
|
||||
vdu.rom: ROM image for VDU onboard EPROM
|
||||
VDU\vdu.rom: ROM image for VDU onboard EPROM
|
||||
|
||||
PropIO\PropIO.eeprom: PropIO firmware for use with RomWBW
|
||||
|
||||
PropIO2\PropIO2.eeprom: PropIO V2 firmware for use with RomWBW
|
||||
|
||||
ParPortProp\ParPortProp.eeprom: ParPortProp firmware for use with RomWBW
|
||||
|
||||
ZSDOS: Directory contains updated ZSDOS distribution files (see ..\Doc\ZSystem.txt)
|
||||
|
||||
Clock: Directory contains ZSystem clock drivers
|
||||
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.
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user