Compare commits

...

6 Commits

Author SHA1 Message Date
Wayne Warthen
aceef15481 Support DS1501 RTC
jpelletier provided a DS1501 RTC driver.  This commit integrates the driver into HBIOS.
2022-07-24 16:46:59 -07:00
Wayne Warthen
d4ca3de40f Update Makefile
When making ZCPR-D&J, also make the "demo" version.
2022-07-24 15:32:05 -07:00
Wayne Warthen
f0def03d0e ZCPR-D&J Fixes
Lars Nelson found a couple issues with ZCPR-D&J and provided an update:

- Buffer overflow
- Failure of default drive/user
2022-07-24 15:10:28 -07:00
Wayne Warthen
27935123cf Minor Tweaks to Build Process 2022-07-12 16:35:24 -07:00
Wayne Warthen
aa93eb62f2 Refresh Documentation 2022-07-09 15:21:45 -07:00
Wayne Warthen
94c32c9fd0 Mostly Build Improvements
- ROMSIZE is now a configuration variable instead of a command line parameter.
- Added CP/M license information based on new email from Bryan Sparks.
2022-07-09 14:00:53 -07:00
59 changed files with 935 additions and 336 deletions

View File

@@ -62,6 +62,8 @@ Version 3.1.1
- WBW: ZPMLDR and ZPM3 fixes, credit to Lars Nelson for finding ZPM3 source!
- DDW: Add support for MBC sound card
- WBW: Add support for "romless" booting
- L?N: Fixes for ZCPR-D&J (buffer overflow, default drive/user)
- J?P: Add support for DS1501 RTC
Version 3.1
-----------

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@@ -6,6 +6,7 @@ clean:
$(MAKE) --directory Tools clean
$(MAKE) --directory Source clean
$(MAKE) --directory Binary clean
rm -f make.log
clobber: clean
@@ -13,6 +14,6 @@ diff:
$(MAKE) --directory Source diff
dist:
$(MAKE) ROM_PLATFORM=dist
$(MAKE) ROM_PLATFORM=dist 2>&1 | tee make.log
$(MAKE) --directory Source clean
$(MAKE) --directory Tools clean

View File

@@ -3,7 +3,7 @@
## Z80/Z180 System Software
Version 3.1 Pre-release
21 Mar 2022
09 Jul 2022
Wayne Warthen <wwarthen@gmail.com>
@@ -418,7 +418,7 @@ therefore, globally available.
Some custom applications do not fit on the ROM disk. They are found on
the disk image files or the individual files can be found in the
Binary\\Apps directory of the distribution.
Binary\Apps directory of the distribution.
| Application | Description |
|-------------|-------------------------------------------------------------|
@@ -924,7 +924,7 @@ documents.
Note that the build scripts for RomWBW create the default disk images
supplied with RomWBW. It is relatively easy to customize the contents of
the disk images that are part of RomWBW. This is described in more
detail in the Source\\Images directory of the distribution.
detail in the Source\Images directory of the distribution.
## FAT Filesystem Transfers
@@ -945,7 +945,7 @@ however. Longer filenames will show up as a truncated version.
The `FAT` application is not on your ROM disk because it is too large to
fit. You will find it on all of the pre-built disk images as well as in
the Binary\\Apps directory of the distribution.
the Binary\Apps directory of the distribution.
For advanced users, it is possible to create a hybrid disk that contains
CP/M slices at the beginning and a FAT filesystem after. Such a hybrid
@@ -953,7 +953,7 @@ disk can be used to boot an operating system and still have access to
FAT files on the FAT portion of the disk. David Reese has prepared a
document describing how to do this. It is called
“SC126_How-To_No_2\_Preparing_an_SD_Card_for_Use_with_SC126_Rev_1-5.pdf”
and can be found in the Doc\\Contrib directory of the distribution.
and can be found in the Doc\Contrib directory of the distribution.
# Startup Command Processing
@@ -1164,7 +1164,7 @@ system on your disk.
CP/M 3 uses a multi-step boot process involving multiple files. The
CP/M 3 boot files are not included on the ROM disk due to space
constraints. You will need to transfer the files to your system from
the RomWBW distribution directory Binary\\CPM3.
the RomWBW distribution directory Binary\CPM3.
After this is done, you will need to use `SYSCOPY` to place the CP/M
3 loader image on the boot tracks of all CP/M 3 boot disks/slices.
@@ -1182,7 +1182,7 @@ system on your disk.
ZPM3 uses a multi-step boot process involving multiple files. The
ZPM3 boot files are not included on the ROM disk due to space
constraints. You will need to transfer the files to your system from
the RomWBW distribution directory Binary\\ZPM3.
the RomWBW distribution directory Binary\ZPM3.
After this is done, you will need to use `SYSCOPY` to place the ZPM3
loader image on the boot tracks of all ZPM3 boot disks/slices. The
@@ -1225,8 +1225,7 @@ For example: `B>COPY ASSIGN.COM C:`
Some RomWBW custom applications are too large to fit on the ROM disk. If
you are using any of these you will need to transfer them to your system
and then update all copies. These applications are found in the
Binary\\Apps directory of the distribution and in all of the disk
images.
Binary\Apps directory of the distribution and in all of the disk images.
- FAT.COM
- TUNE.COM

View File

@@ -1,6 +1,6 @@
RomWBW Getting Started
Wayne Warthen (mailto:wwarthen@gmail.com)
21 Mar 2022
09 Jul 2022
@@ -17,7 +17,7 @@ RomWBW
Z80/Z180 System Software
Version 3.1 Pre-release
21 Mar 2022
09 Jul 2022
Wayne Warthen wwarthen@gmail.com
@@ -213,15 +213,23 @@ disk devices.
The following ROM applications are available at the boot loader prompt:
Application
-------------- --------------------------------------------------------
Monitor Z80 system debug monitor w/ Intel Hex loader
Forth Brad Rodriguezs ANSI compatible Forth language
Basic Nascom 8K BASIC language
Tasty BASIC Dimitri Theulings Tiny BASIC implementation
Play A simple video game (requires ANSI terminal emulation)
Network Boot Boot through Wiznet MT011 device
Flash Update Upload and flash a new ROMWBW image using xmodem
--------------------------------------------------------------------------
Application
------------- ------------------------------------------------------------
Monitor Z80 system debug monitor w/ Intel Hex loader
Forth Brad Rodriguezs ANSI compatible Forth language
Basic Nascom 8K BASIC language
Tasty BASIC Dimitri Theulings Tiny BASIC implementation
Play A simple video game (requires ANSI terminal emulation)
Network Boot Boot through Wiznet MT011 device
Flash Update Upload and flash a new ROMWBW image using xmodem
--------------------------------------------------------------------------
In general, the command to exit these applications and restart the
system is BYE. The exceptions are the Monitor which uses B and Play
@@ -467,11 +475,15 @@ Some custom applications do not fit on the ROM disk. They are found on
the disk image files or the individual files can be found in the
Binary\Apps directory of the distribution.
--------------------------------------------------------------------------
Application Description
------------- -------------------------------------------------------------
------------- ------------------------------------------------------------
TUNE Play .PT2, .PT3, .MYM audio files.
FAT Access MS-DOS FAT filesystems from RomWBW (based on FatFs).
INTTEST Test interrupt vector hooking.
--------------------------------------------------------------------------
Additional documentation on all of these applications can be found in
“RomWBW Applications.pdf” in the Doc directory of the distribution.
@@ -667,14 +679,21 @@ The following table shows the disk image files available. Note that the
images in the “Hard” column are fine for use on CF Cards, SD Cards, as
well as real spinning hard disks.
Floppy Hard Description
-------------- -------------- ------------------------------
fd_cpm22.img hd_cpm22.img DRI CP/M 2.2 boot disk
fd_zsdos.img hd_zsdos.img ZSDOS 1.1 boot disk
fd_nzcom.img hd_nzcom.img NZCOM boot disk
fd_cpm3.img hd_cpm3.img DRI CP/M 3 boot disk
fd_zpm3.img hd_zpm3.img ZPM3 boot disk
fd_ws4.img hd_ws4.img WordStar v4 application disk
-----------------------------------------------------------------------
Floppy Hard Description
--------------- --------------- ---------------------------------------
fd_cpm22.img hd_cpm22.img DRI CP/M 2.2 boot disk
fd_zsdos.img hd_zsdos.img ZSDOS 1.1 boot disk
fd_nzcom.img hd_nzcom.img NZCOM boot disk
fd_cpm3.img hd_cpm3.img DRI CP/M 3 boot disk
fd_zpm3.img hd_zpm3.img ZPM3 boot disk
fd_ws4.img hd_ws4.img WordStar v4 application disk
-----------------------------------------------------------------------
In addition to the disk images above, there is also a special hard disk
image called hd_combo.img. This image contains all of the images above,
@@ -685,14 +704,21 @@ system options.
This is the layout of the hd_combo disk image:
Slice Description
--------- ------------------------------
Slice 0 DRI CP/M 2.2 boot disk
Slice 1 ZSDOS 1.1 boot disk
Slice 2 NZCOM boot disk
Slice 3 DRI CP/M 3 boot disk
Slice 4 ZPM3 boot disk
Slice 5 WordStar v4 application disk
------------------------------------------------------------------------
Slice Description
------- ----------------------------------------------------------------
Slice 0 DRI CP/M 2.2 boot disk
Slice 1 ZSDOS 1.1 boot disk
Slice 2 NZCOM boot disk
Slice 3 DRI CP/M 3 boot disk
Slice 4 ZPM3 boot disk
Slice 5 WordStar v4 application disk
------------------------------------------------------------------------
Note that unlike the ROM firmware, you do not need to choose a disk
image specific to your hardware. Because the RomWBW firmware provides a

View File

@@ -34,13 +34,11 @@ By default, this will generate all of the standard configurations of
RomWBW for all platforms. If you just want to build the ROM for a
specific platform and configuration you can use
make ROM_PLATFORM=<platform> ROM_CONFIG=<config> [ROMSIZE=<size>]
make ROM_PLATFORM=<platform> ROM_CONFIG=<config>
where <platform> is one of the supported platforms such as SBC, RCZ80,
etc. and <config> is a configuration of that platform. A ROM size may
optionally be specified and must be one of 128, 256, 512, or 1024. It
defaults to 512. For example, to build the "126" configuration of
the "SCZ180" platform:
etc. and <config> is a configuration of that platform. For example,
to build the "126" configuration of the "SCZ180" platform:
make ROM_PLATFORM=SCZ180 ROM_CONFIG=126
@@ -77,7 +75,7 @@ running. To disable this feature:
DISCLAIMER: You do this at your own risk. I highly recommend that you
return the settings back to normal immediately after doing a build.
Heavy use is made of make's include facility and pattern rules. the
Heavy use is made of make's include facility and pattern rules. The
master rule set is in Tools/Makefile.inc. Changes here will affect
almost every Makefile, and where exceptions are needed, the overrides
are applied in the lower Makefiles.
@@ -101,10 +99,10 @@ Credit:
hacked to do case-insensitivity. These are not marked, and are
not extensive.
zx is from the distributed version, and also has local hacks
zxcc is from the distributed version, and also has local hacks
for case insensitivity.
Both zx and cpmtools ship with an overly complicated makefile
Both zxcc and cpmtools ship with an overly complicated makefile
generation system and this is ignored.
This whole Linux build framework is the work of Curt Mayer,

BIN
Source/CPM22/License.pdf Normal file

Binary file not shown.

BIN
Source/CPM3/License.pdf Normal file

Binary file not shown.

View File

@@ -4,7 +4,7 @@ setlocal
if "%1" == "dist" goto :dist
::
:: Build [<platform> [<config> [<romsize> [<romname>]]]]
:: Build [<platform> [<config> [<romname>]]]
::
set TOOLS=../../Tools
@@ -28,11 +28,21 @@ PowerShell -ExecutionPolicy Unrestricted .\Build.ps1 %* || exit /b
::
:: Below, we process the command file created by the PowerShell script.
:: This sets the environment variables: Platform, Config, ROMName,
:: ROMSize, & CPUType.
:: & CPUType.
::
call build_env.cmd
::
:: Create a small app that is used to export key build variables of the build.
:: Then run the app to output a file with the variables. Finally, read the
:: file into variables usable in this batch file.
::
tasm -t80 -g3 -dCMD hbios_env.asm hbios_env.com hbios_env.lst || exit /b
zxcc hbios_env >hbios_env.cmd
call hbios_env.cmd
::
:: Start of the actual build process for a given ROM.
::
@@ -183,34 +193,34 @@ goto :eof
:dist
call Build SBC std 512 || exit /b
call Build SBC simh 512 || exit /b
call Build MBC std 512 || exit /b
call Build ZETA std 512 || exit /b
call Build ZETA2 std 512 || exit /b
call Build N8 std 512 || exit /b
call Build MK4 std 512 || exit /b
call Build RCZ80 std 512 || exit /b
call Build RCZ80 skz 512 || exit /b
call Build RCZ80 kio 512 || exit /b
call Build RCZ80 mt 512 || exit /b
call Build RCZ80 duart 512 || exit /b
call Build RCZ80 zrc 512 || exit /b
call Build RCZ80 zrc_ram 0 || exit /b
call Build RCZ180 ext 512 || exit /b
call Build RCZ180 nat 512 || exit /b
call Build RCZ280 ext 512 || exit /b
call Build RCZ280 nat 512 || exit /b
call Build RCZ280 nat_zz 512 || exit /b
call Build RCZ280 nat_zzr 256 || exit /b
call Build SCZ180 126 512 || exit /b
call Build SCZ180 130 512 || exit /b
call Build SCZ180 131 512 || exit /b
call Build SCZ180 140 512 || exit /b
call Build EZZ80 std 512 || exit /b
call Build EZZ80 tz80 512 || exit /b
call Build DYNO std 512 || exit /b
call Build UNA std 512 || exit /b
call Build RPH std 512 || exit /b
call Build SBC std || exit /b
call Build SBC simh || exit /b
call Build MBC std || exit /b
call Build ZETA std || exit /b
call Build ZETA2 std || exit /b
call Build N8 std || exit /b
call Build MK4 std || exit /b
call Build RCZ80 std || exit /b
call Build RCZ80 skz || exit /b
call Build RCZ80 kio || exit /b
call Build RCZ80 mt || exit /b
call Build RCZ80 duart || exit /b
call Build RCZ80 zrc || exit /b
call Build RCZ80 zrc_ram || exit /b
call Build RCZ180 ext || exit /b
call Build RCZ180 nat || exit /b
call Build RCZ280 ext || exit /b
call Build RCZ280 nat || exit /b
call Build RCZ280 nat_zz || exit /b
call Build RCZ280 nat_zzr || exit /b
call Build SCZ180 126 || exit /b
call Build SCZ180 130 || exit /b
call Build SCZ180 131 || exit /b
call Build SCZ180 140 || exit /b
call Build EZZ80 std || exit /b
call Build EZZ80 tz80 || exit /b
call Build DYNO std || exit /b
call Build UNA std || exit /b
call Build RPH std || exit /b
goto :eof

View File

@@ -1,4 +1,4 @@
param([string]$Platform = "", [string]$Config = "", [int]$RomSize = 512, [string]$ROMName = "")
param([string]$Platform = "", [string]$Config = "", [string]$ROMName = "")
# If a PowerShell exception occurs, just stop the script immediately.
$ErrorAction = 'Stop'
@@ -67,19 +67,6 @@ while ($true)
$Config = (Read-Host -prompt "Configuration").Trim()
}
#
# Establish the ROM size (in KB). It may have been passed in on the command line. Validate
# $RomSize and loop requesting a new value as long as it is not valid. The valid ROM sizes
# are just hard-coded for now. The ROM size does nothing more than determine the size of the
# ROM disk portion of the ROM image.
#
while ($true)
{
if (($RomSize -eq 0) -or ($RomSize -eq 128) -or ($RomSize -eq 256) -or ($RomSize -eq 512) -or ($RomSize -eq 1024)) {break}
$RomSize = (Read-Host -prompt "ROM Size [0|128|256|512|1024]").Trim()
}
#
# TASM should be invoked with the proper CPU type. Below, the CPU type is inferred
# from the platform.
@@ -103,7 +90,7 @@ while ($ROMName -eq "")
}
# Current date/time is queried here to be subsequently imbedded in image
$TimeStamp = '"' + (Get-Date -Format 'yyyy-MM-dd') + '"'
$TimeStamp = (Get-Date -Format 'yyyy-MM-dd')
#
# Since TASM has no mechanism to include files dynamically based on variables, a file
@@ -115,9 +102,8 @@ $TimeStamp = '"' + (Get-Date -Format 'yyyy-MM-dd') + '"'
@"
; RomWBW Configured for ${Platform} ${Config}, $(Get-Date -Format "s")
;
#DEFINE TIMESTAMP ${TimeStamp}
;
ROMSIZE .EQU ${ROMSize}
#DEFINE TIMESTAMP "${TimeStamp}"
#DEFINE CONFIG "${Platform}_${Config}"
;
#INCLUDE "${ConfigFile}"
;
@@ -134,6 +120,5 @@ ROMSIZE .EQU ${ROMSize}
set Platform=${Platform}
set Config=${Config}
set ROMName=${ROMName}
set ROMSize=${ROMSize}
set CPUType=${CPUType}
"@ | Out-File "build_env.cmd" -Encoding ASCII

View File

@@ -6,38 +6,39 @@ set -e
export ROM_PLATFORM
export ROM_CONFIG
export ROMSIZE
export CPUFAM
if [ "${ROM_PLATFORM}" == "dist" ] ; then
echo "!!!DISTRIBUTION BUILD!!!"
ROM_PLATFORM="DYNO"; ROM_CONFIG="std"; ROMSIZE="512"; bash Build.sh
ROM_PLATFORM="EZZ80"; ROM_CONFIG="std"; ROMSIZE="512"; bash Build.sh
ROM_PLATFORM="EZZ80"; ROM_CONFIG="tz80"; ROMSIZE="512"; bash Build.sh
ROM_PLATFORM="MK4"; ROM_CONFIG="std"; ROMSIZE="512"; bash Build.sh
ROM_PLATFORM="N8"; ROM_CONFIG="std"; ROMSIZE="512"; bash Build.sh
ROM_PLATFORM="RCZ180"; ROM_CONFIG="ext"; ROMSIZE="512"; bash Build.sh
ROM_PLATFORM="RCZ180"; ROM_CONFIG="nat"; ROMSIZE="512"; bash Build.sh
ROM_PLATFORM="RCZ280"; ROM_CONFIG="ext"; ROMSIZE="512"; bash Build.sh
ROM_PLATFORM="RCZ280"; ROM_CONFIG="nat"; ROMSIZE="512"; bash Build.sh
ROM_PLATFORM="RCZ280"; ROM_CONFIG="nat_zz"; ROMSIZE="512"; bash Build.sh
ROM_PLATFORM="RCZ280"; ROM_CONFIG="nat_zzr"; ROMSIZE="256"; bash Build.sh
ROM_PLATFORM="RCZ80"; ROM_CONFIG="kio"; ROMSIZE="512"; bash Build.sh
ROM_PLATFORM="RCZ80"; ROM_CONFIG="mt"; ROMSIZE="512"; bash Build.sh
ROM_PLATFORM="RCZ80"; ROM_CONFIG="duart"; ROMSIZE="512"; bash Build.sh
ROM_PLATFORM="RCZ80"; ROM_CONFIG="std"; ROMSIZE="512"; bash Build.sh
ROM_PLATFORM="RCZ80"; ROM_CONFIG="skz"; ROMSIZE="512"; bash Build.sh
ROM_PLATFORM="RCZ80"; ROM_CONFIG="zrc"; ROMSIZE="512"; bash Build.sh
ROM_PLATFORM="RCZ80"; ROM_CONFIG="zrc_ram"; ROMSIZE="0"; bash Build.sh
ROM_PLATFORM="RPH"; ROM_CONFIG="std"; ROMSIZE="512"; bash Build.sh
ROM_PLATFORM="SBC"; ROM_CONFIG="std"; ROMSIZE="512"; bash Build.sh
ROM_PLATFORM="SBC"; ROM_CONFIG="simh"; ROMSIZE="512"; bash Build.sh
ROM_PLATFORM="MBC"; ROM_CONFIG="std"; ROMSIZE="512"; bash Build.sh
ROM_PLATFORM="SCZ180"; ROM_CONFIG="126"; ROMSIZE="512"; bash Build.sh
ROM_PLATFORM="SCZ180"; ROM_CONFIG="130"; ROMSIZE="512"; bash Build.sh
ROM_PLATFORM="SCZ180"; ROM_CONFIG="131"; ROMSIZE="512"; bash Build.sh
ROM_PLATFORM="SCZ180"; ROM_CONFIG="140"; ROMSIZE="512"; bash Build.sh
ROM_PLATFORM="UNA"; ROM_CONFIG="std"; ROMSIZE="512"; bash Build.sh
ROM_PLATFORM="ZETA"; ROM_CONFIG="std"; ROMSIZE="512"; bash Build.sh
ROM_PLATFORM="ZETA2"; ROM_CONFIG="std"; ROMSIZE="512"; bash Build.sh
ROM_PLATFORM="DYNO"; ROM_CONFIG="std"; bash Build.sh
ROM_PLATFORM="EZZ80"; ROM_CONFIG="std"; bash Build.sh
ROM_PLATFORM="EZZ80"; ROM_CONFIG="tz80"; bash Build.sh
ROM_PLATFORM="MK4"; ROM_CONFIG="std"; bash Build.sh
ROM_PLATFORM="N8"; ROM_CONFIG="std"; bash Build.sh
ROM_PLATFORM="RCZ180"; ROM_CONFIG="ext"; bash Build.sh
ROM_PLATFORM="RCZ180"; ROM_CONFIG="nat"; bash Build.sh
ROM_PLATFORM="RCZ280"; ROM_CONFIG="ext"; bash Build.sh
ROM_PLATFORM="RCZ280"; ROM_CONFIG="nat"; bash Build.sh
ROM_PLATFORM="RCZ280"; ROM_CONFIG="nat_zz"; bash Build.sh
ROM_PLATFORM="RCZ280"; ROM_CONFIG="nat_zzr"; bash Build.sh
ROM_PLATFORM="RCZ80"; ROM_CONFIG="kio"; bash Build.sh
ROM_PLATFORM="RCZ80"; ROM_CONFIG="mt"; bash Build.sh
ROM_PLATFORM="RCZ80"; ROM_CONFIG="duart"; bash Build.sh
ROM_PLATFORM="RCZ80"; ROM_CONFIG="std"; bash Build.sh
ROM_PLATFORM="RCZ80"; ROM_CONFIG="skz"; bash Build.sh
ROM_PLATFORM="RCZ80"; ROM_CONFIG="zrc"; bash Build.sh
ROM_PLATFORM="RCZ80"; ROM_CONFIG="zrc_ram"; bash Build.sh
ROM_PLATFORM="RPH"; ROM_CONFIG="std"; bash Build.sh
ROM_PLATFORM="SBC"; ROM_CONFIG="std"; bash Build.sh
ROM_PLATFORM="SBC"; ROM_CONFIG="simh"; bash Build.sh
ROM_PLATFORM="MBC"; ROM_CONFIG="std"; bash Build.sh
ROM_PLATFORM="SCZ180"; ROM_CONFIG="126"; bash Build.sh
ROM_PLATFORM="SCZ180"; ROM_CONFIG="130"; bash Build.sh
ROM_PLATFORM="SCZ180"; ROM_CONFIG="131"; bash Build.sh
ROM_PLATFORM="SCZ180"; ROM_CONFIG="140"; bash Build.sh
ROM_PLATFORM="UNA"; ROM_CONFIG="std"; bash Build.sh
ROM_PLATFORM="ZETA"; ROM_CONFIG="std"; bash Build.sh
ROM_PLATFORM="ZETA2"; ROM_CONFIG="std"; bash Build.sh
exit
fi
@@ -59,19 +60,12 @@ done
CONFIGFILE=Config/${ROM_PLATFORM}_${ROM_CONFIG}.asm
if [ -z "${ROMSIZE}" ] ; then
ROMSIZE="512"
fi
while [ ! '(' "${ROMSIZE}" = 1024 -o "${ROMSIZE}" = 512 -o "${ROMSIZE}" = 256 -o "${ROMSIZE}" = 128 -o "${ROMSIZE}" = 0 ')' ] ; do
echo -n "Romsize :"
read ROMSIZE
done
if [ -z "${ROMNAME}" ] ; then
ROMNAME=${ROM_PLATFORM}_${ROM_CONFIG}
fi
echo -e "\n\nBuilding $ROM_PLATFORM $ROM_CONFIG\n\n"
TIMESTAMP=$(date +%Y-%m-%d)
if [ "$1" = "-d" ] ; then
@@ -86,19 +80,21 @@ fi
CONFIGFILE=Config/${ROM_PLATFORM}_${ROM_CONFIG}.asm
echo Building $ROMNAME for $ROM_PLATFORM $ROM_CONFIG $ROMSIZE
cat <<- EOF > build.inc
; RomWBW Configured for ${ROM_PLATFORM} ${ROM_CONFIG} ${TIMESTAMP}
;
#DEFINE TIMESTAMP "${TIMESTAMP}"
;
ROMSIZE .EQU ${ROMSIZE}
#DEFINE CONFIG "${ROM_PLATFORM}_${ROM_CONFIG}"
;
#INCLUDE "${CONFIGFILE}"
;
EOF
make hbios_env.sh
source hbios_env.sh
echo Creating ${ROMSIZE}K ROM named ${ROMNAME}.rom
export OBJECTS
OBJECTS="${ROMNAME}.rom"
if [ "${ROM_PLATFORM}" != "UNA" ] ; then

View File

@@ -14,3 +14,4 @@ if exist *.sys del *.sys
if exist build.inc del build.inc
if exist font*.asm del font*.asm
if exist build_env.cmd del build_env.cmd
if exist hbios_env.cmd del hbios_env.cmd

View File

@@ -22,8 +22,6 @@
; PLEASE REFER TO THE CUSTOM BUILD INSTRUCTIONS (README.TXT) IN THE SOURCE DIRECTORY (TWO
; DIRECTORIES ABOVE THIS ONE).
;
#DEFINE PLATFORM_NAME "TINYZ80"
;
#include "cfg_ezz80.asm"
;
CRTACT .SET FALSE ; ACTIVATE CRT (VDU,CVDU,PROPIO,ETC) AT STARTUP

View File

@@ -22,7 +22,6 @@
; PLEASE REFER TO THE CUSTOM BUILD INSTRUCTIONS (README.TXT) IN THE SOURCE DIRECTORY (TWO
; DIRECTORIES ABOVE THIS ONE).
;
#DEFINE PLATFORM_NAME "Multi Board Computer"
#DEFINE BOOT_DEFAULT "H" ; DEFAULT BOOT LOADER CMD ON <CR> OR AUTO BOOT
;
#include "cfg_mbc.asm"

View File

@@ -22,8 +22,6 @@
; PLEASE REFER TO THE CUSTOM BUILD INSTRUCTIONS (README.TXT) IN THE SOURCE DIRECTORY (TWO
; DIRECTORIES ABOVE THIS ONE).
;
#DEFINE PLATFORM_NAME "ZZ80MB"
;
#DEFINE BOOT_DEFAULT "H" ; DEFAULT BOOT LOADER CMD ON <CR> OR AUTO BOOT
;
#include "Config/RCZ280_nat.asm"

View File

@@ -22,8 +22,6 @@
; PLEASE REFER TO THE CUSTOM BUILD INSTRUCTIONS (README.TXT) IN THE SOURCE DIRECTORY (TWO
; DIRECTORIES ABOVE THIS ONE).
;
#DEFINE PLATFORM_NAME "ZZRCC"
;
#DEFINE BOOT_DEFAULT "H" ; DEFAULT BOOT LOADER CMD ON <CR> OR AUTO BOOT
;
#include "Config/RCZ280_nat.asm"
@@ -31,6 +29,7 @@
CPUOSC .SET 14745600 ; CPU OSC FREQ IN MHZ
;
RAMSIZE .SET 256 ; SIZE OF RAM IN KB (MUST MATCH YOUR HARDWARE!!!)
ROMSIZE .SET 256 ; SIZE OF ROM IN KB (MUST MATCH YOUR HARDWARE!!!)
ROMSIZE_CHK .SET 256 ; ROMSIZE VALUE VEREIFICATION (0=DISABLED)
;
RAMLOC .SET 18 ; START OF RAM AS POWER OF 2 (2^N) IN PHYSICAL ADDRESS SPACE

View File

@@ -24,8 +24,6 @@
;
#DEFINE BOOT_DEFAULT "H" ; DEFAULT BOOT LOADER CMD ON <CR> OR AUTO BOOT
;
#DEFINE PLATFORM_NAME "RC2014 (DUART)"
;
#include "Config/RCZ80_std.asm"
;
CRTACT .SET FALSE ; ACTIVATE CRT (VDU,CVDU,PROPIO,ETC) AT STARTUP

View File

@@ -22,8 +22,6 @@
; PLEASE REFER TO THE CUSTOM BUILD INSTRUCTIONS (README.TXT) IN THE SOURCE DIRECTORY (TWO
; DIRECTORIES ABOVE THIS ONE).
;
#DEFINE PLATFORM_NAME "RC2014 (KIO)"
;
#DEFINE BOOT_DEFAULT "H" ; DEFAULT BOOT LOADER CMD ON <CR> OR AUTO BOOT
;
#include "Config/RCZ80_std.asm"

View File

@@ -24,8 +24,6 @@
;
#DEFINE BOOT_DEFAULT "H" ; DEFAULT BOOT LOADER CMD ON <CR> OR AUTO BOOT
;
#DEFINE PLATFORM_NAME "RC2014 (MT)"
;
#include "Config/RCZ80_std.asm"
;
CRTACT .SET FALSE ; ACTIVATE CRT (VDU,CVDU,PROPIO,ETC) AT STARTUP

View File

@@ -22,8 +22,6 @@
; PLEASE REFER TO THE CUSTOM BUILD INSTRUCTIONS (README.TXT) IN THE SOURCE DIRECTORY (TWO
; DIRECTORIES ABOVE THIS ONE).
;
#DEFINE PLATFORM_NAME "RC2014 (SKZ)"
;
#DEFINE BOOT_DEFAULT "H" ; DEFAULT BOOT LOADER CMD ON <CR> OR AUTO BOOT
;
#include "Config/RCZ80_std.asm"

View File

@@ -31,6 +31,7 @@ CRTACT .SET FALSE ; ACTIVATE CRT (VDU,CVDU,PROPIO,ETC) AT STARTUP
CPUOSC .SET 7372800 ; CPU OSC FREQ IN MHZ
;
RAMSIZE .SET 2048 ; SIZE OF RAM IN KB (MUST MATCH YOUR HARDWARE!!!)
ROMSIZE .SET 0 ; SIZE OF ROM IN KB (MUST MATCH YOUR HARDWARE!!!)
MEMMGR .SET MM_ZRC ; MEMORY MANAGER: MM_[SBC|Z2|N8|Z180]
;
MDROM .SET FALSE ; MD: ENABLE ROM DISK

View File

@@ -24,8 +24,6 @@
;
#DEFINE BOOT_DEFAULT "H" ; DEFAULT BOOT LOADER CMD ON <CR> OR AUTO BOOT
;
#DEFINE PLATFORM_NAME "SBC (simh)"
;
#include "cfg_sbc.asm"
;
INTMODE .SET 1 ; INTERRUPTS: 0=NONE, 1=MODE 1, 2=MODE 2

View File

@@ -22,8 +22,6 @@
; PLEASE REFER TO THE CUSTOM BUILD INSTRUCTIONS (README.TXT) IN THE SOURCE DIRECTORY (TWO
; DIRECTORIES ABOVE THIS ONE).
;
#DEFINE PLATFORM_NAME "SC126"
;
#DEFINE BOOT_DEFAULT "H" ; DEFAULT BOOT LOADER CMD ON <CR> OR AUTO BOOT
;
#include "cfg_scz180.asm"

View File

@@ -22,8 +22,6 @@
; PLEASE REFER TO THE CUSTOM BUILD INSTRUCTIONS (README.TXT) IN THE SOURCE DIRECTORY (TWO
; DIRECTORIES ABOVE THIS ONE).
;
#DEFINE PLATFORM_NAME "SC130"
;
#DEFINE BOOT_DEFAULT "H" ; DEFAULT BOOT LOADER CMD ON <CR> OR AUTO BOOT
;
#include "cfg_scz180.asm"

View File

@@ -22,8 +22,6 @@
; PLEASE REFER TO THE CUSTOM BUILD INSTRUCTIONS (README.TXT) IN THE SOURCE DIRECTORY (TWO
; DIRECTORIES ABOVE THIS ONE).
;
#DEFINE PLATFORM_NAME "SC131"
;
#DEFINE BOOT_DEFAULT "H" ; DEFAULT BOOT LOADER CMD ON <CR> OR AUTO BOOT
;
#include "cfg_scz180.asm"

View File

@@ -22,8 +22,6 @@
; PLEASE REFER TO THE CUSTOM BUILD INSTRUCTIONS (README.TXT) IN THE SOURCE DIRECTORY (TWO
; DIRECTORIES ABOVE THIS ONE).
;
#DEFINE PLATFORM_NAME "SC140"
;
#include "cfg_scz180.asm"
;
CPUOSC .SET 18432000 ; CPU OSC FREQ IN MHZ

View File

@@ -6,26 +6,31 @@ MOREDIFF = game.bin hbios_rom.bin nascom.bin usrrom.bin \
SUBDIRS =
DEST = ../../Binary
TOOLS =../../Tools
OTHERS = *.img *.rom *.com *.upd *.bin *.z80 cpm.sys zsys.sys Build.inc font*.asm *.dat
include $(TOOLS)/Makefile.inc
FONTS := font8x11c.asm font8x11u.asm font8x16c.asm font8x16u.asm font8x8c.asm font8x8u.asm fontcgac.asm fontcgau.asm
ifneq ($(findstring $(ROM_PLATFORM), N8 MK4 RCZ180 SCZ180 DYNO RPH),)
TASM=$(BINDIR)/uz80as -t hd64180
endif
ifneq ($(findstring $(ROM_PLATFORM), RCZ280),)
TASM=$(BINDIR)/uz80as -t z280
endif
OTHERS = *.img *.rom *.com *.upd *.bin *.z80 cpm.sys zsys.sys Build.inc font*.asm *.dat hbios_env.sh
# DIFFMAKE = 1
# DIFFPATH = $(DIFFTO)/Binary
ifeq ($(DIFFMAKE),1)
DIFFBUILD := -d $(DIFFTO)/Source/HBIOS
endif
# DIFFPATH = $(DIFFTO)/Binary
ifeq ($(OBJECTS),)
start:
chmod +x Build.sh
bash Build.sh $(DIFFBUILD)
endif
include $(TOOLS)/Makefile.inc
FONTS := font8x11c.asm font8x11u.asm font8x16c.asm font8x16u.asm font8x8c.asm font8x8u.asm fontcgac.asm fontcgau.asm
ifeq ($(CPUFAM),2)
TASM=$(BINDIR)/uz80as -t hd64180
else ifeq ($(CPUFAM),3)
TASM=$(BINDIR)/uz80as -t z280
endif
DEPS=prereq dbgmon.bin romldr.bin nascom.bin tastybasic.bin game.bin eastaegg.bin updater.bin usrrom.bin imgpad2.bin
@@ -39,19 +44,15 @@ endif
ROMNAME=${ROM_PLATFORM}_${ROM_CONFIG}
#$(info DEPS=$(DEPS))
#$(info ROM_PLATFORM=$(ROM_PLATFORM))
#$(info ROM_CONFIG=$(ROM_CONFIG))
#$(info ROMSIZE=$(ROMSIZE))
#$(info ROMNAME=$(ROMNAME))
# $(info DEPS=$(DEPS))
# $(info ROM_PLATFORM=$(ROM_PLATFORM))
# $(info ROM_CONFIG=$(ROM_CONFIG))
# $(info ROMSIZE=$(ROMSIZE))
# $(info ROMNAME=$(ROMNAME))
# $(info CPUFAM=$(CPUFAM))
# $(info TASM=$(TASM))
all::
if [ -z "$(OBJECTS)" ] ; then \
chmod +x Build.sh ; \
bash Build.sh $(DIFFBUILD) ; \
fi
$(ROMNAME).rom $(ROMNAME).com $(ROMNAME).img : $(ROMDEPS)
$(OBJECTS) : $(ROMDEPS)
cat romldr.bin dbgmon.bin ../ZSDOS/zsys_$(BIOS).bin ../CPM22/cpm_$(BIOS).bin >osimg.bin
cat romldr.bin dbgmon.bin ../ZSDOS/zsys_$(BIOS).bin >osimg_small.bin
if [ $(ROM_PLATFORM) != UNA ] ; then \
@@ -99,6 +100,12 @@ hbios_app.bin: hbios.asm build.inc $(DEPS)
hbios_img.bin: hbios.asm build.inc $(DEPS)
$(TASM) -dIMGBOOT hbios.asm hbios_img.bin hbios_img.lst
hbios_env.com: hbios_env.asm build.inc
$(TASM) -dBASH hbios_env.asm hbios_env.com hbios_env.lst
hbios_env.sh: hbios_env.com
$(ZXCC) hbios_env.com >hbios_env.sh
romldr.bin: build.inc
dbgmon.bin: build.inc
nascom.bin: build.inc

View File

@@ -11,7 +11,7 @@
; THIS FILE CAN BE CONSIDERED A REFERENCE THAT LISTS ALL POSSIBLE CONFIGURATION SETTINGS
; FOR THE PLATFORM.
;
#DEFINE PLATFORM_NAME "DYNO"
#DEFINE PLATFORM_NAME "Dyno", " [", CONFIG, "]"
;
#INCLUDE "hbios.inc"
;
@@ -33,6 +33,7 @@ INTMODE .EQU 2 ; INTERRUPTS: 0=NONE, 1=MODE 1, 2=MODE 2, 3=MODE 3 (Z280)
DEFSERCFG .EQU SER_38400_8N1 ; DEFAULT SERIAL LINE CONFIG (SEE STD.ASM)
;
RAMSIZE .EQU 512 ; SIZE OF RAM IN KB (MUST MATCH YOUR HARDWARE!!!)
ROMSIZE .EQU 512 ; SIZE OF ROM IN KB (MUST MATCH YOUR HARDWARE!!!)
ROMSIZE_CHK .EQU 0 ; ROMSIZE VALUE VEREIFICATION (0=DISABLED)
MEMMGR .EQU MM_Z180 ; MEMORY MANAGER: MM_[SBC|Z2|N8|Z180|Z280|MBC|RPH]
RAMLOC .EQU 19 ; START OF RAM AS POWER OF 2 (2^N) IN PHYSICAL ADDRESS SPACE
@@ -83,6 +84,9 @@ DSRTCENABLE .EQU FALSE ; DSRTC: ENABLE DS-1302 CLOCK DRIVER (DSRTC.ASM)
DSRTCMODE .EQU DSRTCMODE_STD ; DSRTC: OPERATING MODE: DSRTC_[STD|MFPIC]
DSRTCCHG .EQU FALSE ; DSRTC: FORCE BATTERY CHARGE ON (USE WITH CAUTION!!!)
;
DS1501RTCENABLE .EQU FALSE ; DS1501RTC: ENABLE DS-1501 CLOCK DRIVER (DS1501RTC.ASM)
DS1501RTC_BASE .EQU $50 ; DS1501RTC: I/O BASE ADDRESS
;
BQRTCENABLE .EQU TRUE ; BQRTC: ENABLE BQ4845 CLOCK DRIVER (BQRTC.ASM)
BQRTC_BASE .EQU $50 ; BQRTC: I/O BASE ADDRESS
;

View File

@@ -11,7 +11,7 @@
; THIS FILE CAN BE CONSIDERED A REFERENCE THAT LISTS ALL POSSIBLE CONFIGURATION SETTINGS
; FOR THE PLATFORM.
;
#DEFINE PLATFORM_NAME "EASYZ80"
#DEFINE PLATFORM_NAME "Easy-Z80", " [", CONFIG, "]"
;
#INCLUDE "hbios.inc"
;
@@ -33,6 +33,7 @@ INTMODE .EQU 2 ; INTERRUPTS: 0=NONE, 1=MODE 1, 2=MODE 2, 3=MODE 3 (Z280)
DEFSERCFG .EQU SER_115200_8N1 ; DEFAULT SERIAL LINE CONFIG (SEE STD.ASM)
;
RAMSIZE .EQU 512 ; SIZE OF RAM IN KB (MUST MATCH YOUR HARDWARE!!!)
ROMSIZE .EQU 512 ; SIZE OF ROM IN KB (MUST MATCH YOUR HARDWARE!!!)
ROMSIZE_CHK .EQU 0 ; ROMSIZE VALUE VEREIFICATION (0=DISABLED)
MEMMGR .EQU MM_Z2 ; MEMORY MANAGER: MM_[SBC|Z2|N8|Z180|Z280|MBC|RPH]
MPGSEL_0 .EQU $78 ; Z2 MEM MGR BANK 0 PAGE SELECT REG (WRITE ONLY)
@@ -89,6 +90,9 @@ DSRTCENABLE .EQU TRUE ; DSRTC: ENABLE DS-1302 CLOCK DRIVER (DSRTC.ASM)
DSRTCMODE .EQU DSRTCMODE_STD ; DSRTC: OPERATING MODE: DSRTC_[STD|MFPIC]
DSRTCCHG .EQU FALSE ; DSRTC: FORCE BATTERY CHARGE ON (USE WITH CAUTION!!!)
;
DS1501RTCENABLE .EQU FALSE ; DS1501RTC: ENABLE DS-1501 CLOCK DRIVER (DS1501RTC.ASM)
DS1501RTC_BASE .EQU $50 ; DS1501RTC: I/O BASE ADDRESS
;
BQRTCENABLE .EQU FALSE ; BQRTC: ENABLE BQ4845 CLOCK DRIVER (BQRTC.ASM)
BQRTC_BASE .EQU $50 ; BQRTC: I/O BASE ADDRESS
;

View File

@@ -8,7 +8,7 @@
; USED ONLY AS A REFERENCE TO HELP MANAGE THE FULL SET OF POSSIBLE SETTINGS AND
; KEEP THINGS CONSISTENT.
;
#DEFINE PLATFORM_NAME "ROMWBW"
#DEFINE PLATFORM_NAME "RomWBW", " [", CONFIG, "]"
;
#INCLUDE "hbios.inc"
;
@@ -30,6 +30,7 @@ INTMODE .EQU 0 ; INTERRUPTS: 0=NONE, 1=MODE 1, 2=MODE 2, 3=MODE 3 (Z280)
DEFSERCFG .EQU SER_38400_8N1 ; DEFAULT SERIAL LINE CONFIG (SEE STD.ASM)
;
RAMSIZE .EQU 512 ; SIZE OF RAM IN KB (MUST MATCH YOUR HARDWARE!!!)
ROMSIZE .EQU 512 ; SIZE OF ROM IN KB (MUST MATCH YOUR HARDWARE!!!)
ROMSIZE_CHK .EQU 0 ; ROMSIZE VALUE VEREIFICATION (0=DISABLED)
MEMMGR .EQU MM_NONE ; MEMORY MANAGER: MM_[SBC|Z2|N8|Z180|Z280|MBC|RPH]
RAMLOC .EQU 19 ; START OF RAM AS POWER OF 2 (2^N) IN PHYSICAL ADDRESS SPACE
@@ -123,6 +124,9 @@ DSRTCENABLE .EQU FALSE ; DSRTC: ENABLE DS-1302 CLOCK DRIVER (DSRTC.ASM)
DSRTCMODE .EQU DSRTCMODE_STD ; DSRTC: OPERATING MODE: DSRTC_[STD|MFPIC]
DSRTCCHG .EQU FALSE ; DSRTC: FORCE BATTERY CHARGE ON (USE WITH CAUTION!!!)
;
DS1501RTCENABLE .EQU FALSE ; DS1501RTC: ENABLE DS-1501 CLOCK DRIVER (DS1501RTC.ASM)
DS1501RTC_BASE .EQU $50 ; DS1501RTC: I/O BASE ADDRESS
;
BQRTCENABLE .EQU FALSE ; BQRTC: ENABLE BQ4845 CLOCK DRIVER (BQRTC.ASM)
BQRTC_BASE .EQU $50 ; BQRTC: I/O BASE ADDRESS
;

View File

@@ -11,7 +11,7 @@
; THIS FILE CAN BE CONSIDERED A REFERENCE THAT LISTS ALL POSSIBLE CONFIGURATION SETTINGS
; FOR THE PLATFORM.
;
#DEFINE PLATFORM_NAME "Multi Board Computer"
#DEFINE PLATFORM_NAME "Nhyodyne", " [", CONFIG, "]"
;
#INCLUDE "hbios.inc"
;
@@ -33,6 +33,7 @@ INTMODE .EQU 0 ; INTERRUPTS: 0=NONE, 1=MODE 1, 2=MODE 2, 3=MODE 3 (Z280)
DEFSERCFG .EQU SER_38400_8N1 ; DEFAULT SERIAL LINE CONFIG (SEE STD.ASM)
;
RAMSIZE .EQU 512 ; SIZE OF RAM IN KB (MUST MATCH YOUR HARDWARE!!!)
ROMSIZE .EQU 512 ; SIZE OF ROM IN KB (MUST MATCH YOUR HARDWARE!!!)
ROMSIZE_CHK .EQU 0 ; ROMSIZE VALUE VEREIFICATION (0=DISABLED)
MEMMGR .EQU MM_MBC ; MEMORY MANAGER: MM_[SBC|Z2|N8|Z180|Z280|MBC|RPH]
MPCL_RAM .EQU $78 ; SBC MEM MGR RAM PAGE SELECT REG (WRITE ONLY)
@@ -88,6 +89,9 @@ DSRTCENABLE .EQU TRUE ; DSRTC: ENABLE DS-1302 CLOCK DRIVER (DSRTC.ASM)
DSRTCMODE .EQU DSRTCMODE_STD ; DSRTC: OPERATING MODE: DSRTC_[STD|MFPIC]
DSRTCCHG .EQU FALSE ; DSRTC: FORCE BATTERY CHARGE ON (USE WITH CAUTION!!!)
;
DS1501RTCENABLE .EQU FALSE ; DS1501RTC: ENABLE DS-1501 CLOCK DRIVER (DS1501RTC.ASM)
DS1501RTC_BASE .EQU $50 ; DS1501RTC: I/O BASE ADDRESS
;
BQRTCENABLE .EQU FALSE ; BQRTC: ENABLE BQ4845 CLOCK DRIVER (BQRTC.ASM)
BQRTC_BASE .EQU $50 ; BQRTC: I/O BASE ADDRESS
;

View File

@@ -11,7 +11,7 @@
; THIS FILE CAN BE CONSIDERED A REFERENCE THAT LISTS ALL POSSIBLE CONFIGURATION SETTINGS
; FOR THE PLATFORM.
;
#DEFINE PLATFORM_NAME "MARK IV"
#DEFINE PLATFORM_NAME "Mark IV", " [", CONFIG, "]"
;
#INCLUDE "hbios.inc"
;
@@ -33,6 +33,7 @@ INTMODE .EQU 2 ; INTERRUPTS: 0=NONE, 1=MODE 1, 2=MODE 2, 3=MODE 3 (Z280)
DEFSERCFG .EQU SER_38400_8N1 ; DEFAULT SERIAL LINE CONFIG (SEE STD.ASM)
;
RAMSIZE .EQU 512 ; SIZE OF RAM IN KB (MUST MATCH YOUR HARDWARE!!!)
ROMSIZE .EQU 512 ; SIZE OF ROM IN KB (MUST MATCH YOUR HARDWARE!!!)
ROMSIZE_CHK .EQU 0 ; ROMSIZE VALUE VEREIFICATION (0=DISABLED)
MEMMGR .EQU MM_Z180 ; MEMORY MANAGER: MM_[SBC|Z2|N8|Z180|Z280|MBC|RPH]
RAMLOC .EQU 19 ; START OF RAM AS POWER OF 2 (2^N) IN PHYSICAL ADDRESS SPACE
@@ -94,6 +95,9 @@ DSRTCENABLE .EQU TRUE ; DSRTC: ENABLE DS-1302 CLOCK DRIVER (DSRTC.ASM)
DSRTCMODE .EQU DSRTCMODE_STD ; DSRTC: OPERATING MODE: DSRTC_[STD|MFPIC]
DSRTCCHG .EQU FALSE ; DSRTC: FORCE BATTERY CHARGE ON (USE WITH CAUTION!!!)
;
DS1501RTCENABLE .EQU FALSE ; DS1501RTC: ENABLE DS-1501 CLOCK DRIVER (DS1501RTC.ASM)
DS1501RTC_BASE .EQU $50 ; DS1501RTC: I/O BASE ADDRESS
;
BQRTCENABLE .EQU FALSE ; BQRTC: ENABLE BQ4845 CLOCK DRIVER (BQRTC.ASM)
BQRTC_BASE .EQU $50 ; BQRTC: I/O BASE ADDRESS
;

View File

@@ -11,7 +11,7 @@
; THIS FILE CAN BE CONSIDERED A REFERENCE THAT LISTS ALL POSSIBLE CONFIGURATION SETTINGS
; FOR THE PLATFORM.
;
#DEFINE PLATFORM_NAME "N8"
#DEFINE PLATFORM_NAME "N8", " [", CONFIG, "]"
;
#INCLUDE "hbios.inc"
;
@@ -33,6 +33,7 @@ INTMODE .EQU 2 ; INTERRUPTS: 0=NONE, 1=MODE 1, 2=MODE 2, 3=MODE 3 (Z280)
DEFSERCFG .EQU SER_38400_8N1 ; DEFAULT SERIAL LINE CONFIG (SEE STD.ASM)
;
RAMSIZE .EQU 512 ; SIZE OF RAM IN KB (MUST MATCH YOUR HARDWARE!!!)
ROMSIZE .EQU 512 ; SIZE OF ROM IN KB (MUST MATCH YOUR HARDWARE!!!)
ROMSIZE_CHK .EQU 0 ; ROMSIZE VALUE VEREIFICATION (0=DISABLED)
MEMMGR .EQU MM_N8 ; MEMORY MANAGER: MM_[SBC|Z2|N8|Z180|Z280|MBC|RPH]
RAMBIAS .EQU 0 ; OFFSET OF START OF RAM IN PHYSICAL ADDRESS SPACE
@@ -96,6 +97,9 @@ DSRTCENABLE .EQU TRUE ; DSRTC: ENABLE DS-1302 CLOCK DRIVER (DSRTC.ASM)
DSRTCMODE .EQU DSRTCMODE_STD ; DSRTC: OPERATING MODE: DSRTC_[STD|MFPIC]
DSRTCCHG .EQU FALSE ; DSRTC: FORCE BATTERY CHARGE ON (USE WITH CAUTION!!!)
;
DS1501RTCENABLE .EQU FALSE ; DS1501RTC: ENABLE DS-1501 CLOCK DRIVER (DS1501RTC.ASM)
DS1501RTC_BASE .EQU $50 ; DS1501RTC: I/O BASE ADDRESS
;
BQRTCENABLE .EQU FALSE ; BQRTC: ENABLE BQ4845 CLOCK DRIVER (BQRTC.ASM)
BQRTC_BASE .EQU $50 ; BQRTC: I/O BASE ADDRESS
;

View File

@@ -11,7 +11,7 @@
; THIS FILE CAN BE CONSIDERED A REFERENCE THAT LISTS ALL POSSIBLE CONFIGURATION SETTINGS
; FOR THE PLATFORM.
;
#DEFINE PLATFORM_NAME "RC2014"
#DEFINE PLATFORM_NAME "RC2014", " [", CONFIG, "]"
;
#INCLUDE "hbios.inc"
;
@@ -33,6 +33,7 @@ INTMODE .EQU 2 ; INTERRUPTS: 0=NONE, 1=MODE 1, 2=MODE 2, 3=MODE 3 (Z280)
DEFSERCFG .EQU SER_115200_8N1 ; DEFAULT SERIAL LINE CONFIG (SEE STD.ASM)
;
RAMSIZE .EQU 512 ; SIZE OF RAM IN KB (MUST MATCH YOUR HARDWARE!!!)
ROMSIZE .EQU 512 ; SIZE OF ROM IN KB (MUST MATCH YOUR HARDWARE!!!)
ROMSIZE_CHK .EQU 0 ; ROMSIZE VALUE VEREIFICATION (0=DISABLED)
MEMMGR .EQU MM_Z180 ; MEMORY MANAGER: MM_[SBC|Z2|N8|Z180|Z280|MBC|RPH]
RAMLOC .EQU 19 ; START OF RAM AS POWER OF 2 (2^N) IN PHYSICAL ADDRESS SPACE
@@ -91,6 +92,9 @@ DSRTCENABLE .EQU TRUE ; DSRTC: ENABLE DS-1302 CLOCK DRIVER (DSRTC.ASM)
DSRTCMODE .EQU DSRTCMODE_STD ; DSRTC: OPERATING MODE: DSRTC_[STD|MFPIC]
DSRTCCHG .EQU FALSE ; DSRTC: FORCE BATTERY CHARGE ON (USE WITH CAUTION!!!)
;
DS1501RTCENABLE .EQU FALSE ; DS1501RTC: ENABLE DS-1501 CLOCK DRIVER (DS1501RTC.ASM)
DS1501RTC_BASE .EQU $50 ; DS1501RTC: I/O BASE ADDRESS
;
BQRTCENABLE .EQU FALSE ; BQRTC: ENABLE BQ4845 CLOCK DRIVER (BQRTC.ASM)
BQRTC_BASE .EQU $50 ; BQRTC: I/O BASE ADDRESS
;

View File

@@ -11,7 +11,7 @@
; THIS FILE CAN BE CONSIDERED A REFERENCE THAT LISTS ALL POSSIBLE CONFIGURATION SETTINGS
; FOR THE PLATFORM.
;
#DEFINE PLATFORM_NAME "RC2014"
#DEFINE PLATFORM_NAME "RC2014", " [", CONFIG, "]"
;
#INCLUDE "hbios.inc"
;
@@ -33,6 +33,7 @@ INTMODE .EQU 0 ; INTERRUPTS: 0=NONE, 1=MODE 1, 2=MODE 2, 3=MODE 3 (Z280)
DEFSERCFG .EQU SER_115200_8N1 ; DEFAULT SERIAL LINE CONFIG (SEE STD.ASM)
;
RAMSIZE .EQU 512 ; SIZE OF RAM IN KB (MUST MATCH YOUR HARDWARE!!!)
ROMSIZE .EQU 512 ; SIZE OF ROM IN KB (MUST MATCH YOUR HARDWARE!!!)
ROMSIZE_CHK .EQU 0 ; ROMSIZE VALUE VEREIFICATION (0=DISABLED)
MEMMGR .EQU MM_Z2 ; MEMORY MANAGER: MM_[SBC|Z2|N8|Z180|Z280|MBC|RPH]
RAMLOC .EQU 19 ; START OF RAM AS POWER OF 2 (2^N) IN PHYSICAL ADDRESS SPACE
@@ -96,6 +97,9 @@ DSRTCENABLE .EQU TRUE ; DSRTC: ENABLE DS-1302 CLOCK DRIVER (DSRTC.ASM)
DSRTCMODE .EQU DSRTCMODE_STD ; DSRTC: OPERATING MODE: DSRTC_[STD|MFPIC]
DSRTCCHG .EQU FALSE ; DSRTC: FORCE BATTERY CHARGE ON (USE WITH CAUTION!!!)
;
DS1501RTCENABLE .EQU FALSE ; DS1501RTC: ENABLE DS-1501 CLOCK DRIVER (DS1501RTC.ASM)
DS1501RTC_BASE .EQU $50 ; DS1501RTC: I/O BASE ADDRESS
;
BQRTCENABLE .EQU FALSE ; BQRTC: ENABLE BQ4845 CLOCK DRIVER (BQRTC.ASM)
BQRTC_BASE .EQU $50 ; BQRTC: I/O BASE ADDRESS
;

View File

@@ -11,7 +11,7 @@
; THIS FILE CAN BE CONSIDERED A REFERENCE THAT LISTS ALL POSSIBLE CONFIGURATION SETTINGS
; FOR THE PLATFORM.
;
#DEFINE PLATFORM_NAME "RC2014"
#DEFINE PLATFORM_NAME "RC2014", " [", CONFIG, "]"
;
#INCLUDE "hbios.inc"
;
@@ -33,6 +33,7 @@ INTMODE .EQU 1 ; INTERRUPTS: 0=NONE, 1=MODE 1, 2=MODE 2, 3=MODE 3 (Z280)
DEFSERCFG .EQU SER_115200_8N1 ; DEFAULT SERIAL LINE CONFIG (SEE STD.ASM)
;
RAMSIZE .EQU 512 ; SIZE OF RAM IN KB (MUST MATCH YOUR HARDWARE!!!)
ROMSIZE .EQU 512 ; SIZE OF ROM IN KB (MUST MATCH YOUR HARDWARE!!!)
ROMSIZE_CHK .EQU 0 ; ROMSIZE VALUE VEREIFICATION (0=DISABLED)
MEMMGR .EQU MM_Z2 ; MEMORY MANAGER: MM_[SBC|Z2|N8|Z180|Z280|MBC|RPH]
MPGSEL_0 .EQU $78 ; Z2 MEM MGR BANK 0 PAGE SELECT REG (WRITE ONLY)
@@ -90,6 +91,9 @@ DSRTCENABLE .EQU TRUE ; DSRTC: ENABLE DS-1302 CLOCK DRIVER (DSRTC.ASM)
DSRTCMODE .EQU DSRTCMODE_STD ; DSRTC: OPERATING MODE: DSRTC_[STD|MFPIC]
DSRTCCHG .EQU FALSE ; DSRTC: FORCE BATTERY CHARGE ON (USE WITH CAUTION!!!)
;
DS1501RTCENABLE .EQU FALSE ; DS1501RTC: ENABLE DS-1501 CLOCK DRIVER (DS1501RTC.ASM)
DS1501RTC_BASE .EQU $50 ; DS1501RTC: I/O BASE ADDRESS
;
BQRTCENABLE .EQU FALSE ; BQRTC: ENABLE BQ4845 CLOCK DRIVER (BQRTC.ASM)
BQRTC_BASE .EQU $50 ; BQRTC: I/O BASE ADDRESS
;

View File

@@ -11,7 +11,7 @@
; THIS FILE CAN BE CONSIDERED A REFERENCE THAT LISTS ALL POSSIBLE CONFIGURATION SETTINGS
; FOR THE PLATFORM.
;
#DEFINE PLATFORM_NAME "RHYOPHYRE"
#DEFINE PLATFORM_NAME "Rhyophyre", " [", CONFIG, "]"
;
#INCLUDE "hbios.inc"
;
@@ -33,6 +33,7 @@ INTMODE .EQU 2 ; INTERRUPTS: 0=NONE, 1=MODE 1, 2=MODE 2, 3=MODE 3 (Z280)
DEFSERCFG .EQU SER_38400_8N1 ; DEFAULT SERIAL LINE CONFIG (SEE STD.ASM)
;
RAMSIZE .EQU 512 ; SIZE OF RAM IN KB (MUST MATCH YOUR HARDWARE!!!)
ROMSIZE .EQU 512 ; SIZE OF ROM IN KB (MUST MATCH YOUR HARDWARE!!!)
ROMSIZE_CHK .EQU 0 ; ROMSIZE VALUE VEREIFICATION (0=DISABLED)
MEMMGR .EQU MM_RPH ; MEMORY MANAGER: MM_[SBC|Z2|N8|Z180|Z280|MBC|RPH]
RAMBIAS .EQU 0 ; OFFSET OF START OF RAM IN PHYSICAL ADDRESS SPACE
@@ -94,6 +95,9 @@ DSRTCENABLE .EQU TRUE ; DSRTC: ENABLE DS-1302 CLOCK DRIVER (DSRTC.ASM)
DSRTCMODE .EQU DSRTCMODE_STD ; DSRTC: OPERATING MODE: DSRTC_[STD|MFPIC]
DSRTCCHG .EQU FALSE ; DSRTC: FORCE BATTERY CHARGE ON (USE WITH CAUTION!!!)
;
DS1501RTCENABLE .EQU FALSE ; DS1501RTC: ENABLE DS-1501 CLOCK DRIVER (DS1501RTC.ASM)
DS1501RTC_BASE .EQU $50 ; DS1501RTC: I/O BASE ADDRESS
;
BQRTCENABLE .EQU FALSE ; BQRTC: ENABLE BQ4845 CLOCK DRIVER (BQRTC.ASM)
BQRTC_BASE .EQU $50 ; BQRTC: I/O BASE ADDRESS
;

View File

@@ -11,7 +11,7 @@
; THIS FILE CAN BE CONSIDERED A REFERENCE THAT LISTS ALL POSSIBLE CONFIGURATION SETTINGS
; FOR THE PLATFORM.
;
#DEFINE PLATFORM_NAME "SBC"
#DEFINE PLATFORM_NAME "Single Board Computer", " [", CONFIG, "]"
;
#INCLUDE "hbios.inc"
;
@@ -33,6 +33,7 @@ INTMODE .EQU 0 ; INTERRUPTS: 0=NONE, 1=MODE 1, 2=MODE 2, 3=MODE 3 (Z280)
DEFSERCFG .EQU SER_38400_8N1 ; DEFAULT SERIAL LINE CONFIG (SEE STD.ASM)
;
RAMSIZE .EQU 512 ; SIZE OF RAM IN KB (MUST MATCH YOUR HARDWARE!!!)
ROMSIZE .EQU 512 ; SIZE OF ROM IN KB (MUST MATCH YOUR HARDWARE!!!)
ROMSIZE_CHK .EQU 0 ; ROMSIZE VALUE VEREIFICATION (0=DISABLED)
MEMMGR .EQU MM_SBC ; MEMORY MANAGER: MM_[SBC|Z2|N8|Z180|Z280|MBC|RPH]
MPCL_RAM .EQU $78 ; SBC MEM MGR RAM PAGE SELECT REG (WRITE ONLY)
@@ -88,6 +89,9 @@ DSRTCENABLE .EQU TRUE ; DSRTC: ENABLE DS-1302 CLOCK DRIVER (DSRTC.ASM)
DSRTCMODE .EQU DSRTCMODE_STD ; DSRTC: OPERATING MODE: DSRTC_[STD|MFPIC]
DSRTCCHG .EQU FALSE ; DSRTC: FORCE BATTERY CHARGE ON (USE WITH CAUTION!!!)
;
DS1501RTCENABLE .EQU FALSE ; DS1501RTC: ENABLE DS-1501 CLOCK DRIVER (DS1501RTC.ASM)
DS1501RTC_BASE .EQU $50 ; DS1501RTC: I/O BASE ADDRESS
;
BQRTCENABLE .EQU FALSE ; BQRTC: ENABLE BQ4845 CLOCK DRIVER (BQRTC.ASM)
BQRTC_BASE .EQU $50 ; BQRTC: I/O BASE ADDRESS
;

View File

@@ -11,7 +11,7 @@
; THIS FILE CAN BE CONSIDERED A REFERENCE THAT LISTS ALL POSSIBLE CONFIGURATION SETTINGS
; FOR THE PLATFORM.
;
#DEFINE PLATFORM_NAME "SCZ180"
#DEFINE PLATFORM_NAME "Small Computer", " [", CONFIG, "]"
;
#INCLUDE "hbios.inc"
;
@@ -33,6 +33,7 @@ INTMODE .EQU 2 ; INTERRUPTS: 0=NONE, 1=MODE 1, 2=MODE 2, 3=MODE 3 (Z280)
DEFSERCFG .EQU SER_115200_8N1 ; DEFAULT SERIAL LINE CONFIG (SEE STD.ASM)
;
RAMSIZE .EQU 512 ; SIZE OF RAM IN KB (MUST MATCH YOUR HARDWARE!!!)
ROMSIZE .EQU 512 ; SIZE OF ROM IN KB (MUST MATCH YOUR HARDWARE!!!)
ROMSIZE_CHK .EQU 0 ; ROMSIZE VALUE VEREIFICATION (0=DISABLED)
MEMMGR .EQU MM_Z180 ; MEMORY MANAGER: MM_[SBC|Z2|N8|Z180|Z280|MBC|RPH]
RAMLOC .EQU 19 ; START OF RAM AS POWER OF 2 (2^N) IN PHYSICAL ADDRESS SPACE
@@ -86,6 +87,9 @@ DSRTCENABLE .EQU TRUE ; DSRTC: ENABLE DS-1302 CLOCK DRIVER (DSRTC.ASM)
DSRTCMODE .EQU DSRTCMODE_STD ; DSRTC: OPERATING MODE: DSRTC_[STD|MFPIC]
DSRTCCHG .EQU FALSE ; DSRTC: FORCE BATTERY CHARGE ON (USE WITH CAUTION!!!)
;
DS1501RTCENABLE .EQU FALSE ; DS1501RTC: ENABLE DS-1501 CLOCK DRIVER (DS1501RTC.ASM)
DS1501RTC_BASE .EQU $50 ; DS1501RTC: I/O BASE ADDRESS
;
BQRTCENABLE .EQU FALSE ; BQRTC: ENABLE BQ4845 CLOCK DRIVER (BQRTC.ASM)
BQRTC_BASE .EQU $50 ; BQRTC: I/O BASE ADDRESS
;

View File

@@ -11,11 +11,12 @@
; THIS FILE CAN BE CONSIDERED A REFERENCE THAT LISTS ALL POSSIBLE CONFIGURATION SETTINGS
; FOR THE PLATFORM.
;
#DEFINE PLATFORM_NAME "UNA"
#DEFINE PLATFORM_NAME "UNA", " [", CONFIG, "]"
;
#INCLUDE "../UBIOS/ubios.inc"
;
;PLATFORM .EQU PLT_UNA ; PLT_[SBC|ZETA|ZETA2|N8|MK4|UNA|RCZ80|RCZ180|EZZ80|SCZ180|DYNO|RCZ280|MBC|RPH]
CPUFAM .EQU CPU_Z80 ; CPU FAMILY: CPU_[Z80|Z180|Z280]
BIOS .EQU BIOS_UNA ; HARDWARE BIOS: BIOS_[WBW|UNA]
;
BOOT_TIMEOUT .EQU -1 ; AUTO BOOT TIMEOUT IN SECONDS, -1 TO DISABLE, 0 FOR IMMEDIATE
@@ -26,6 +27,7 @@ CPUOSC .EQU 18432000 ; CPU OSC FREQ IN MHZ
INTMODE .EQU 0 ; INTERRUPTS: 0=NONE, 1=MODE 1, 2=MODE 2, 3=MODE 3 (Z280)
;
RAMSIZE .EQU 512 ; SIZE OF RAM IN KB (MUST MATCH YOUR HARDWARE!!!)
ROMSIZE .EQU 512 ; SIZE OF ROM IN KB (MUST MATCH YOUR HARDWARE!!!)
;
RTCIO .EQU $70 ; RTC LATCH REGISTER ADR
;

View File

@@ -11,7 +11,7 @@
; THIS FILE CAN BE CONSIDERED A REFERENCE THAT LISTS ALL POSSIBLE CONFIGURATION SETTINGS
; FOR THE PLATFORM.
;
#DEFINE PLATFORM_NAME "ZETA"
#DEFINE PLATFORM_NAME "Zeta", " [", CONFIG, "]"
;
#INCLUDE "hbios.inc"
;
@@ -33,6 +33,7 @@ INTMODE .EQU 0 ; INTERRUPTS: 0=NONE, 1=MODE 1, 2=MODE 2, 3=MODE 3 (Z280)
DEFSERCFG .EQU SER_38400_8N1 ; DEFAULT SERIAL LINE CONFIG (SEE STD.ASM)
;
RAMSIZE .EQU 512 ; SIZE OF RAM IN KB (MUST MATCH YOUR HARDWARE!!!)
ROMSIZE .EQU 512 ; SIZE OF ROM IN KB (MUST MATCH YOUR HARDWARE!!!)
ROMSIZE_CHK .EQU 0 ; ROMSIZE VALUE VEREIFICATION (0=DISABLED)
MEMMGR .EQU MM_SBC ; MEMORY MANAGER: MM_[SBC|Z2|N8|Z180|Z280|MBC|RPH]
MPCL_RAM .EQU $78 ; SBC MEM MGR RAM PAGE SELECT REG (WRITE ONLY)
@@ -75,6 +76,9 @@ DSRTCENABLE .EQU TRUE ; DSRTC: ENABLE DS-1302 CLOCK DRIVER (DSRTC.ASM)
DSRTCMODE .EQU DSRTCMODE_STD ; DSRTC: OPERATING MODE: DSRTC_[STD|MFPIC]
DSRTCCHG .EQU FALSE ; DSRTC: FORCE BATTERY CHARGE ON (USE WITH CAUTION!!!)
;
DS1501RTCENABLE .EQU FALSE ; DS1501RTC: ENABLE DS-1501 CLOCK DRIVER (DS1501RTC.ASM)
DS1501RTC_BASE .EQU $50 ; DS1501RTC: I/O BASE ADDRESS
;
BQRTCENABLE .EQU FALSE ; BQRTC: ENABLE BQ4845 CLOCK DRIVER (BQRTC.ASM)
BQRTC_BASE .EQU $50 ; BQRTC: I/O BASE ADDRESS
;

View File

@@ -11,7 +11,7 @@
; THIS FILE CAN BE CONSIDERED A REFERENCE THAT LISTS ALL POSSIBLE CONFIGURATION SETTINGS
; FOR THE PLATFORM.
;
#DEFINE PLATFORM_NAME "ZETA V2"
#DEFINE PLATFORM_NAME "Zeta 2", " [", CONFIG, "]"
;
#INCLUDE "hbios.inc"
;
@@ -33,6 +33,7 @@ INTMODE .EQU 2 ; INTERRUPTS: 0=NONE, 1=MODE 1, 2=MODE 2, 3=MODE 3 (Z280)
DEFSERCFG .EQU SER_38400_8N1 ; DEFAULT SERIAL LINE CONFIG (SEE STD.ASM)
;
RAMSIZE .EQU 512 ; SIZE OF RAM IN KB (MUST MATCH YOUR HARDWARE!!!)
ROMSIZE .EQU 512 ; SIZE OF ROM IN KB (MUST MATCH YOUR HARDWARE!!!)
ROMSIZE_CHK .EQU 0 ; ROMSIZE VALUE VEREIFICATION (0=DISABLED)
MEMMGR .EQU MM_Z2 ; MEMORY MANAGER: MM_[SBC|Z2|N8|Z180|Z280|MBC|RPH]
MPGSEL_0 .EQU $78 ; Z2 MEM MGR BANK 0 PAGE SELECT REG (WRITE ONLY)
@@ -86,6 +87,9 @@ DSRTCENABLE .EQU TRUE ; DSRTC: ENABLE DS-1302 CLOCK DRIVER (DSRTC.ASM)
DSRTCMODE .EQU DSRTCMODE_STD ; DSRTC: OPERATING MODE: DSRTC_[STD|MFPIC]
DSRTCCHG .EQU FALSE ; DSRTC: FORCE BATTERY CHARGE ON (USE WITH CAUTION!!!)
;
DS1501RTCENABLE .EQU FALSE ; DS1501RTC: ENABLE DS-1501 CLOCK DRIVER (DS1501RTC.ASM)
DS1501RTC_BASE .EQU $50 ; DS1501RTC: I/O BASE ADDRESS
;
BQRTCENABLE .EQU FALSE ; BQRTC: ENABLE BQ4845 CLOCK DRIVER (BQRTC.ASM)
BQRTC_BASE .EQU $50 ; BQRTC: I/O BASE ADDRESS
;

397
Source/HBIOS/ds1501rtc.asm Normal file
View File

@@ -0,0 +1,397 @@
;
;==================================================================================================
; Maxim DS1501/DS1511 Y2K-Compliant Watchdog RTC Driver
;==================================================================================================
;
; THIS DRIVER CODE WAS CONTRIBUTED TO ROMWBW BY JPELLETIER 3:59 PM 7/24/2022
;
; Register Addresses (HEX / BCD):
;
; +---+-----+---------------+-------------------+------------------+----------------+
; |ADR| D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 | RANGE | REGISTER |
; +---+-----+---------------+-------------------+------------------+----------------+
; | 0 | 0 | 10-Second | 1-Second | 00-59 | Seconds |
; +---+-----+-----+---------+-------------------+------------------+----------------+
; | 1 | 0 | 10-Minute | 1-Minute | 00-59 | Minutes |
; +---+-----+-----+---------+-------------------+------------------+----------------+
; | 2 | 0 | 0 | 10-Hour | 1-Hour | 00-23 | Hours |
; +---+-----+-----+----+----+-------------------+------------------+----------------+
; | 3 | 0 | 0 | 0 | 0 | 0 | Day Of Week | 01-07 | Day Of Week |
; +---+-----+-----+----+----+----+--------------+------------------+----------------+
; | 4 | 0 | 0 | 10-Date | 1-Date | 01-31 | Date |
; +---+-----+-----+----+----+-------------------+------------------+----------------+
; | 5 |/EOSC|/E32K|BB32|10Mo| 1-Month | 01-12 | Month |
; +---+-----+-----+----+----+-------------------+------------------+----------------+
; | 6 | 10-Year | 1-Year | 00-99 | Year |
; +---+-----+-----+----+----+----+----+----+----+------------------+----------------+
; | 7 | 10-Century | 1-Century | 00-39 | Century |
; +---+-----+-----+----+----+----+----+----+----+------------------+----------------+
; | 8 | AM1| 10-Second | 1-Second | 00-59 | Seconds Alarm |
; +---+-----+---------------+-------------------+------------------+----------------+
; | 9 | AM2| 10-Minute | 1-Minute | 00-59 | Minutes Alarm |
; +---+-----+-----+---------+-------------------+------------------+----------------+
; | A | AM3| 0 | 10-Hour | 1-Hour | 00-23 | Hours Alarm |
; +---+-----+-----+----+----+-------------------+------------------+----------------+
; | B | AM4|DY/DT| 10-date | Day/Date | 1-7/01-31 | Day/Date Alarm |
; +---+-----+-----+----+----+----+--------------+------------------+----------------+
; | C | 0.1-Second | 0.01-Second | 00-99 | Watchdog |
; +---+-----+-----+---------+-------------------+------------------+----------------+
; | D | 10-Second | 1-Second | 00-99 | Watchdog |
; +---+-----+-----+---------+-------------------+------------------+----------------+
; | E | BLF1| BLF2| PRS| PAB| TDF| KSF| WDF|IRQF| | ControlA |
; +---+-----+-----+----+----+----+----+----+----+------------------+----------------+
; | F | TE| CS| BME| TPE| TIE| KIE| WDE| WDS| | ControlB |
; +---+-----+-----+----+----+----+----+----+----+------------------+----------------+
; |10 | Extended RAM Address | 00-FF | RAM Address |
; +---+-----+-----+----+----+----+----+----+----+------------------+----------------+
; |11 | Reserved | | |
; +---+-----+-----+----+----+----+----+----+----+------------------+----------------+
; |12 | Reserved | | |
; +---+--+--+-----+----+----+----+----+----+----+------------------+----------------+
; |13 | Extended RAM Data | 00-FF | RAM Data |
; +---+--+--+-----+----+----+----+----+----+----+------------------+----------------+
; |14-1F | Reserved | | |
; +------+--+-----+----+----+----+----+----+----+------------------+----------------+
; * = Unused bits; unwritable and read as 0.
; 0 = should be set to 0 for valid time/calendar range.
; Clock calendar data is BCD. Automatic leap year adjustment.
; Day-Of-Week coded as Sunday = 1 through Saturday = 7.
; Constants
;By defining 2 bases, this allows some flexibility for address decoding
DS1501NVM_BASE .EQU DS1501RTC_BASE + $10
DS1501RTC_SEC .EQU DS1501RTC_BASE + $00
DS1501RTC_MIN .EQU DS1501RTC_BASE + $01
DS1501RTC_HOUR .EQU DS1501RTC_BASE + $02
DS1501RTC_WEEK_DAY .EQU DS1501RTC_BASE + $03
DS1501RTC_DAY .EQU DS1501RTC_BASE + $04
DS1501RTC_MONTH .EQU DS1501RTC_BASE + $05
DS1501RTC_YEAR .EQU DS1501RTC_BASE + $06
DS1501RTC_CENT .EQU DS1501RTC_BASE + $07
DS1501RTC_SEC_ALM .EQU DS1501RTC_BASE + $08
DS1501RTC_MIN_ALM .EQU DS1501RTC_BASE + $09
DS1501RTC_HOUR_ALM .EQU DS1501RTC_BASE + $0A
DS1501RTC_DAY_ALM .EQU DS1501RTC_BASE + $0B
DS1501RTC_WDOG1 .EQU DS1501RTC_BASE + $0C
DS1501RTC_WDOG2 .EQU DS1501RTC_BASE + $0D
DS1501RTC_CONTROLA .EQU DS1501RTC_BASE + $0E
DS1501RTC_CONTROLB .EQU DS1501RTC_BASE + $0F
DS1501RTC_RAMADDR .EQU DS1501NVM_BASE + $00
DS1501RTC_RAMDATA .EQU DS1501NVM_BASE + $03
DS1501RTC_HIGH .EQU %11110000
DS1501RTC_LOW .EQU %00001111
;ControlA bit masks
;BLF1| BLF2| PRS| PAB| TDF| KSF| WDF|IRQF
DS1501RTC_IRQF .EQU %00000001
DS1501RTC_WDF .EQU %00000010
DS1501RTC_KSF .EQU %00000100
DS1501RTC_TDF .EQU %00001000
DS1501RTC_PAB .EQU %00010000
DS1501RTC_PRS .EQU %00100000
DS1501RTC_BLF2 .EQU %01000000
DS1501RTC_BLF1 .EQU %10000000
;ControlB bit masks
;TE| CS| BME| TPE| TIE| KIE| WDE| WDS|
DS1501RTC_WDS .EQU %00000001
DS1501RTC_WDE .EQU %00000010
DS1501RTC_KIE .EQU %00000100
DS1501RTC_TIE .EQU %00001000
DS1501RTC_TPE .EQU %00010000
DS1501RTC_BME .EQU %00100000
DS1501RTC_CS .EQU %01000000
DS1501RTC_TE .EQU %10000000
DS1501RTC_BUFSIZE .EQU 6 ; 6 BYTE BUFFER (YYMMDDHHMMSS)
; RTC Device Initialization Entry
DS1501RTC_INIT:
CALL NEWLINE ; Formatting
PRTS("DS1501RTC: IO=0x$")
LD A, DS1501RTC_BASE
CALL PRTHEXBYTE
CALL NEWLINE ; Formatting
PRTS("DS1501NVM: IO=0x$")
LD A, DS1501NVM_BASE
CALL PRTHEXBYTE
IN A,(DS1501RTC_CONTROLB) ;clear any pending interrupt flags
XOR A ; Zero A
OR DS1501RTC_TE ;enable time updates
OUT (DS1501RTC_CONTROLB), A
CALL DS1501RTC_LOAD
; DISPLAY CURRENT TIME
PRTS(" $")
LD A, (DS1501RTC_BUF_MON)
CALL PRTHEXBYTE
PRTS("/$")
LD A, (DS1501RTC_BUF_DAY)
CALL PRTHEXBYTE
PRTS("/$")
LD A, (DS1501RTC_BUF_YEAR)
CALL PRTHEXBYTE
PRTS(" $")
LD A, (DS1501RTC_BUF_HOUR)
CALL PRTHEXBYTE
PRTS(":$")
LD A, (DS1501RTC_BUF_MIN)
CALL PRTHEXBYTE
PRTS(":$")
LD A, (DS1501RTC_BUF_SEC)
CALL PRTHEXBYTE
LD BC,DS1501RTC_DISPATCH
CALL RTC_SETDISP
XOR A ; Signal success
RET
; RTC Device Function Dispatch Entry
; A: Result (OUT), 0=OK, Z=OK, NZ=Error
; B: Function (IN)
DS1501RTC_DISPATCH:
LD A, B ; Get requested function
AND $0F ; Isolate Sub-Function
JP Z, DS1501RTC_GETTIM ; Get Time
DEC A
JP Z, DS1501RTC_SETTIM ; Set Time
DEC A
JP Z, DS1501RTC_GETBYT ; Get NVRAM Byte Value
DEC A
JP Z, DS1501RTC_SETBYT ; Set NVRAM Byte Value
DEC A
JP Z, DS1501RTC_GETBLK ; Get NVRAM Data Block Value
DEC A
JP Z, DS1501RTC_SETBLK ; Set NVRAM Data Block Value
DEC A
JP Z, DS1501RTC_GETALM ; Get Alarm
DEC A
JP Z, DS1501RTC_SETALM ; Set Alarm
;
; NVRAM FUNCTIONS ARE NOT IMPLEMENTED YET
;
DS1501RTC_GETBYT:
DS1501RTC_SETBYT:
DS1501RTC_GETBLK:
DS1501RTC_SETBLK:
CALL PANIC
; RTC Get Time
; A: Result (OUT), 0=OK, Z=OK, NZ=Error
; HL: Date/Time Buffer (OUT)
; Buffer format is BCD: YYMMDDHHMMSS
; 24 hour time format is assumed
;
DS1501RTC_GETTIM:
EX DE, HL
CALL DS1501RTC_LOAD
; Now copy to read destination (Interbank Save)
LD A, BID_BIOS ; Copy from BIOS bank
LD (HB_SRCBNK), A ; Set it
LD A, (HB_INVBNK) ; Copy to current user bank
LD (HB_DSTBNK), A ; Set it
LD BC, DS1501RTC_BUFSIZE ; Length is 6 bytes
#IF (INTMODE == 1)
DI
#ENDIF
CALL HB_BNKCPY ; Copy the clock data
#IF (INTMODE == 1)
EI
#ENDIF
;
; CLEAN UP AND RETURN
XOR A ; SIGNAL SUCCESS
RET ; AND RETURN
;
; RTC Set Time
; A: Result (OUT), 0=OK, Z=OK, NZ=Error
; HL: Date/Time Buffer (IN)
; Buffer Format is BCD: YYMMDDHHMMSS
; 24 hour time format is assumed
;
DS1501RTC_SETTIM:
;
; Copy incoming time data to our time buffer
LD A, (HB_INVBNK) ; Copy from current user bank
LD (HB_SRCBNK), A ; Set it
LD A, BID_BIOS ; Copy to BIOS bank
LD (HB_DSTBNK), A ; Set it
LD DE, DS1501RTC_BUF ; Destination Address
LD BC, DS1501RTC_BUFSIZE ; Length is 6 bytes
#IF (INTMODE == 1)
DI
#ENDIF
CALL HB_BNKCPY ; Copy the clock data
#IF (INTMODE == 1)
EI
#ENDIF
; Write to clock
LD HL, DS1501RTC_BUF
CALL DS1501RTC_SUSPEND
LD A, (HL)
OUT (DS1501RTC_YEAR), A ; Write Year
INC HL
LD A, (HL)
OUT (DS1501RTC_MONTH), A ; Write Month
INC HL
LD A, (HL)
OUT (DS1501RTC_DAY), A ; Write Day
INC HL
LD A, (HL)
OUT (DS1501RTC_HOUR), A ; Write Hour
INC HL
LD A, (HL)
OUT (DS1501RTC_MIN), A ; Write Minute
INC HL
LD A, (HL)
OUT (DS1501RTC_SEC), A ; Write Second
CALL DS1501RTC_RESUME
; clean up and return
XOR A ; Signal success
RET ; And return
; RTC Get Alarm
; A: Result (OUT), 0=OK, Z=OK, NZ=Error
; HL: Date/Time Buffer (OUT)
; Buffer format is BCD: YYMMDDHHMMSS
; 24 hour time format is assumed
;
DS1501RTC_GETALM:
EX DE, HL
LD HL, DS1501RTC_BUF
PUSH HL ; Save address of source buffer
CALL DS1501RTC_SUSPEND
XOR A
LD (HL), A ; Read Year
INC HL
LD (HL), A ; Read Month
INC HL
IN A, (DS1501RTC_DAY_ALM) ; Read Day
LD (HL), A
INC HL
IN A, (DS1501RTC_HOUR_ALM) ; Read Hour
LD (HL), A
INC HL
IN A, (DS1501RTC_MIN_ALM) ; Read Minute
LD (HL), A
INC HL
IN A, (DS1501RTC_SEC_ALM) ; Read Second
LD (HL), A
CALL DS1501RTC_RESUME
POP HL ; Restore address of source buffer
; Now copy to read destination (Interbank Save)
LD A, BID_BIOS ; Copy from BIOS bank
LD (HB_SRCBNK), A ; Set it
LD A, (HB_INVBNK) ; Copy to current user bank
LD (HB_DSTBNK), A ; Set it
LD BC, DS1501RTC_BUFSIZE ; Length is 6 bytes
#IF (INTMODE == 1)
DI
#ENDIF
CALL HB_BNKCPY ; Copy the clock data
#IF (INTMODE == 1)
EI
#ENDIF
;
; CLEAN UP AND RETURN
XOR A ; SIGNAL SUCCESS
RET ; AND RETURN
;
; RTC Set Alarm
; A: Result (OUT), 0=OK, Z=OK, NZ=Error
; HL: Date/Time Buffer (IN)
; Buffer Format is BCD: YYMMDDHHMMSS
; 24 hour time format is assumed
;
DS1501RTC_SETALM:
; Copy incoming time data to our time buffer
LD A, (HB_INVBNK) ; Copy from current user bank
LD (HB_SRCBNK), A ; Set it
LD A, BID_BIOS ; Copy to BIOS bank
LD (HB_DSTBNK), A ; Set it
LD DE, DS1501RTC_BUF ; Destination Address
LD BC, DS1501RTC_BUFSIZE ; Length is 6 bytes
#IF (INTMODE == 1)
DI
#ENDIF
CALL HB_BNKCPY ; Copy the clock data
#IF (INTMODE == 1)
EI
#ENDIF
; Write to clock
LD HL, DS1501RTC_BUF_DAY
CALL DS1501RTC_SUSPEND
LD A, (HL)
OUT (DS1501RTC_DAY_ALM), A ; Write Day
INC HL
LD A, (HL)
OUT (DS1501RTC_HOUR_ALM), A ; Write Hour
INC HL
LD A, (HL)
OUT (DS1501RTC_MIN_ALM), A ; Write Minute
INC HL
LD A, (HL)
OUT (DS1501RTC_SEC_ALM), A ; Write Second
CALL DS1501RTC_RESUME
; clean up and return
XOR A ; Signal success
RET ; And return
DS1501RTC_SUSPEND:
IN A, (DS1501RTC_CONTROLB) ; Suspend Clock
AND ~DS1501RTC_TE
OUT (DS1501RTC_CONTROLB), A
RET
DS1501RTC_RESUME:
IN A, (DS1501RTC_CONTROLB) ; Resume Clock
OR DS1501RTC_TE
OUT (DS1501RTC_CONTROLB), A
RET
DS1501RTC_LOAD:
LD HL, DS1501RTC_BUF
PUSH HL ; Save address of source buffer
CALL DS1501RTC_SUSPEND
IN A, (DS1501RTC_YEAR) ; Read Year
LD (HL), A
INC HL
IN A, (DS1501RTC_MONTH) ; Read Month
LD (HL), A
INC HL
IN A, (DS1501RTC_DAY) ; Read Day
LD (HL), A
INC HL
IN A, (DS1501RTC_HOUR) ; Read Hour
LD (HL), A
INC HL
IN A, (DS1501RTC_MIN) ; Read Minute
LD (HL), A
INC HL
IN A, (DS1501RTC_SEC) ; Read Second
LD (HL), A
CALL DS1501RTC_RESUME
POP HL ; Restore address of source buffer
RET
; Working Variables
DS1501RTC_BUF:
DS1501RTC_BUF_YEAR: .DB 0 ; Year
DS1501RTC_BUF_MON: .DB 0 ; Month
DS1501RTC_BUF_DAY: .DB 0 ; Day
DS1501RTC_BUF_HOUR: .DB 0 ; Hour
DS1501RTC_BUF_MIN: .DB 0 ; Minute
DS1501RTC_BUF_SEC: .DB 0 ; Second

View File

@@ -219,6 +219,7 @@ RTCDEF .SET RTCDEF | %00001000 ; INITIAL SPEED LOW
;
.FILL (000H - $),0FFH ; RST 0
JP HB_START
.DB 0 ; SIG PTR STARTS AT $0004
.DW ROM_SIG
.FILL (008H - $),0FFH ; RST 8
JP HB_INVOKE ; INVOKE HBIOS FUNCTION
@@ -3005,6 +3006,9 @@ HB_INITTBL:
#IF (DSRTCENABLE)
.DW DSRTC_INIT
#ENDIF
#IF (DS1501RTCENABLE)
.DW DS1501RTC_INIT
#ENDIF
#IF (BQRTCENABLE)
.DW BQRTC_INIT
#ENDIF
@@ -5772,6 +5776,15 @@ SIZ_DSRTC .EQU $ - ORG_DSRTC
.ECHO " bytes.\n"
#ENDIF
;
#IF (DS1501RTCENABLE)
ORG_DS1501RTC .EQU $
#INCLUDE "ds1501rtc.asm"
SIZ_DS1501RTC .EQU $ - ORG_DS1501RTC
.ECHO "DS1501RTC occupies "
.ECHO SIZ_DS1501RTC
.ECHO " bytes.\n"
#ENDIF
;
#IF (BQRTCENABLE)
ORG_BQRTC .EQU $
#INCLUDE "bqrtc.asm"

View File

@@ -0,0 +1,82 @@
;
;==================================================================================================
; HBIOS ENVIRONMENT CONFIG VALUE EXPORT TOOL
;==================================================================================================
;
; Do we need a private stack???
;
#include "std.asm"
;
; Macro to make it simple to print a config value
;
#define prtval(tag,val) \
#defcont \ call PREFIX
#defcont \ call PRTSTRD
#defcont \ .text tag
#defcont \ call PRTEQ
#defcont \ ld hl,val
#defcont \ call PRTDEC
#defcont \ call EOL
;
; Program starts here
;
.org $100 ; Normal CP/M start address
;
; Print all desired config values...
;
prtval("ROMSIZE$", ROMSIZE)
prtval("CPUFAM$", CPUFAM)
;
ret
;
; Output correct prefix for command/shell
;
PREFIX:
#ifdef CMD
call PRTSTRD
.text "set $"
#endif
ret
;
; Output an equal sign
;
PRTEQ:
ld a,'='
call COUT
ret
;
; Output end-of-line. Handles differences between
; DOS/Windows and Unix.
;
EOL:
#ifdef CMD
ld a,13
call COUT
#endif
ld a,10
call COUT
ret
;
; Print a single character from register A.
; This routine is required by the utility routines included below.
;
COUT:
push af
push bc
push de
push hl
ld e,a
ld c,2
call $0005
pop hl
pop de
pop bc
pop af
ret
;
; Include the utility routines
;
#include "util.asm"
;
.end

View File

@@ -296,13 +296,10 @@ For example:
In this case, you will not be prompted. This is useful if you wish
to automate your build process.
There is a third parameter that you can specify to the BuildROM
command via a command line. If you want to build a 1024K (1MB) ROM,
you can add "1024" to the end of the line, like this:
C:\RomWBW\Source> BuildROM MK4 cust 1024
You must ensure that your system actually supports a 1024K ROM.
In the past, the size of the ROM could be specified as the third
parameter of the command. This parameter is now deprecated and
the size of the ROM is specified in your configuration file
using the ROMSIZE variable.
Special Build Commands
----------------------

View File

@@ -10,4 +10,7 @@ set TASMTABS=%TOOLS%\tasm32
set CPMDIR80=%TOOLS%/cpm/
zxcc M80 -=zcpr/l || exit /b
zxcc L80 -zcpr,zcpr.bin/n/e || exit /b
zxcc L80 -zcpr,zcpr.bin/n/e || exit /b
zxcc M80 -=zcprdemo/l || exit /b
zxcc L80 -zcprdemo,zcprdemo/n/e || exit /b

View File

@@ -5,3 +5,4 @@ if exist *.bin del *.bin
if exist *.lst del *.lst
if exist *.rel del *.rel
if exist *.prn del *.prn
if exist *.com del *.com

View File

@@ -1,10 +1,13 @@
OBJECTS= zcpr.bin
OBJECTS= zcpr.bin zcprdemo.com
OTHERS = zcpr.rel
OTHERS = *.rel
TOOLS = ../../Tools
include $(TOOLS)/Makefile.inc
zcpr.bin: zcpr.rel
$(ZXCC) L80 -zcpr,zcpr.bin/n/e
zcprdemo.com: zcprdemo.rel
$(ZXCC) L80 -zcprdemo,zcprdemo/n/e

View File

@@ -1,4 +1,4 @@
; DATE 05/17/21 08:34:00
; DATE 06/02/21 08:08:00
;
; TITLE ZCPR Console Command Processor - Version D&J
; SUBTTL Last Modified: 10 August 1997
@@ -396,12 +396,15 @@ CIBUFF: DB ' ' ;DEFAULT (COLD BOOT) COMMAND 13
db 0,0,0,0,0,0,0,0 ;77
db 0,0,0,0,0,0,0,0 ;85
db 0,0,0,0,0,0,0,0 ;93
db 0,0,0,0,0,0,0,0 ;101
db 0,0,0,0,0,0,0,0 ;109
db 0,0,0 ;96
; DEFB 0,0,0,0,0,0,0,0 ;101
; DEFB 0,0,0 ;104
; DEFB 0,0,0,0,0,0,0,0 ;109
; DEFB 0,0,0,0,0,0,0,0 ;118
BUFEND EQU $
; DEFW 0 ;SENTINEL FOR STACK END
db 0,0
; DEFS 24 ;STACK AREA
DEFS 24,0 ;STACK AREA
STACK EQU $ ;TOP OF STACK
;
; SUBMIT FILE CONTROL BLOCK
@@ -427,7 +430,7 @@ FCBS2: db 0 ;S2
FCBRC: db 0 ;RECORD COUNT
FCBDM: db 0,0,0,0,0,0,0,0 ;DISK GROUP MAP
db 0,0,0,0,0,0,0,0
FCBCR: DEFS 1 ;CURRENT RECORD NUMBER
FCBCR: db 0 ;CURRENT RECORD NUMBER
;
; Type and List Variables
;
@@ -466,7 +469,7 @@ CMDTBL:
DEFW RING
DC 'CLS'
DEFW CLS
DC 'WAIT' ; was 'SAK' ("strike any key")
DC 'SAK' ; "Strike Any Key"
DEFW SAK
DC 'GO'
DEFW GO

Binary file not shown.

View File

@@ -1,6 +1,8 @@
TITLE ZCPR Console Command Processor - Version D&J
SUBTTL Last Modified: 5 March 1994
; DATE 06/02/21 08:08:00
;
; TITLE ZCPR Console Command Processor - Version D&J
; SUBTTL Last Modified: 10 August 1997
; CP/M Z80 Command Processor Replacement (CPR) Version 1.0
; CCPZ CREATED AND CUSTOMIZED FOR ARIES-II BY RLC
; FURTHER MODIFIED BY RGF AS V2.0
@@ -66,6 +68,13 @@
;
; Added PEEK 30 August 1993.
;
; Added CLS 10 August 1997 and fixed two bugs. One caused the system to
; hang if the command to log into another drive was given while logged
; into a drive from which the disk had been removed. The other caused
; a warm boot to return to the prior user area if the new user number
; had been selected using the USER command (although not if the user area
; had been changed using the du: command).
;
;******** Structure Notes ********
;
; This CPR is divided into a number of major sections. The following
@@ -86,39 +95,40 @@
;
; 3 Utilities
; CRLF PRINTC PRINT PRINTS BELL
; CONOUT BREAK CHKETX ABORT READF
; READ WRITE DEFDMA DMASET SEARF
; SEARDE SEARN OPENF OPEN CLOSE
; CREATE BDOSFN SUBKIL DELETE TLOGIN
; DLOGIN LOGIN NEWUSR RSTUSR SETUSR
; BDOSEA BDOSJP BDOSBC BDOSDE
; CLS CONOUT BREAK CHKETX ABORT
; READF READ WRITE DEFDMA DMASET
; SEARF SEARDE SEARN OPENF OPEN
; CLOSE CREATE BDOSFN SUBKIL DELETE
; TLOGIN DLOGIN LOGIN NEWUSR RSTUSR
; SETUSR BDOSEA BDOSJP BDOSBC BDOSDE
;
; 4 CPR Utilities
; PROMPT REDBUF CNVBUF UCASE SDELM
; ADVAN SBLANK ADDAH NUMBER A2NUM
; HEXNUM USRNUM ERROR DIRPTR ULOGIN
; SCANER SCANT SCANF CMDSER SETUDB
; SCANER SCANT SCANF CMDSER
;
; 5 CPR-Resident Commands and Functions
; 5A DIR DIRPR PRFN
; 5B ERA
; 5C ERAQ PRNNF
; 5D SAK REPLY
; 5E BELL
; 5F LIST
; 5G TYPE PAGER
; 5H EJECT
; 5I SAVE
; 5J REN
; 5K USER SUSER
; 5L DFU
; 5M SCL
; 5N PEEK
; 5O POKE
; 5P JUMP
; 5Q COM
; 5R GO CLLPRG ERRLOG ERRJMP
; 5S GET MEMLD PRNLE
; 5E CLS
; 5F BELL
; 5G LIST
; 5H TYPE PAGER
; 5I EJECT
; 5J SAVE
; 5K REN
; 5L USER SUSER
; 5M DFU
; 5N SCL
; 5O PEEK
; 5P POKE
; 5Q JUMP
; 5R COM UPDATE
; 5S GO CLLPRG ERRLOG ERRJMP
; 5T GET MEMLD PRNLE
; BIOS BOOT
;
;
@@ -142,13 +152,14 @@ TRUE EQU NOT FALSE
;
; P2DOS - Address of BDOS/P2DOS.
;
TEST EQU FALSE ;SET TO LOAD/RUN AT 8000H FOR DEBUG
TEST EQU TRUE ;SET TO LOAD/RUN AT 8000H FOR DEBUG
COMLD EQU FALSE ;SET TO LOAD AND EXECUTE AS A .COM FILE
REL EQU FALSE ;SET TO TRUE FOR MOVCPM INTEGRATION
;LEAVE ALL FALSE FOR SYSGEN IMAGE
;
BASE EQU 0 ;BASE OF CP/M SYSTEM
P2DOS EQU 0E400H ;BASE OF BDOS/P2DOS
;P2DOS EQU 0E400H ;BASE OF BDOS/P2DOS (original)
P2DOS EQU 0D800H ;BASE OF BDOS/P2DOS (Retro-Brew)
ZCPRSZ EQU 00800H ;SIZE OF ZCPR
P2DOSSZ EQU 00E00H ;SIZE OF P2DOS
BIOS EQU P2DOS+P2DOSSZ ;BASE OF BIOS
@@ -243,7 +254,7 @@ SOFLG EQU 'S' ;LIST $SYS ONLY
;
; List and Type command customization equates
;
NLINES EQU 20 ;NUMBER OF LINES ON CRT PAGE
NLINES EQU 22 ;NUMBER OF LINES ON CRT PAGE
NLINEP EQU 60 ;NUMBER OF LINES ON LIST DEVICE
FFKILL EQU TRUE ;TRUE SUPPRESSES FF UNTIL FIRST CHARACTER
PGDFLG EQU 'P' ;TYPE AND LIST COMMAND DEFAULT TOGGLE
@@ -254,14 +265,17 @@ NOSTAT EQU FALSE ;SET TO TRUE IF BIOS LISTST NOT IMPLEMENTED
BUFLEN EQU 80 ;SIZE OF COMMAND INPUT BUFFER
MAXUSR EQU 15 ;MAXIMUM USER NUMBER ACCESSIBLE
DEFUSR EQU 0 ;DEFAULT USER NUMBER FOR COM FILES
DEFDRV EQU 'A' ;DEFAULT DRIVE FOR COM FILES
SPRMPT EQU '$' ;CPR PROMPT INDICATING SUBMIT COMMAND
COMCHR EQU ';' ;BEGIN COMMENT CHARACTER
COMCHR EQU '%' ;BEGIN COMMENT CHARACTER
CMDCHR EQU ';' ;BEGIN NEXT COMMAND CHARACTER
NUMBASE EQU 'H' ;CHARACTER USED TO SPECIFY HEXIDECIMAL BASE
RECFLG EQU 'R' ;CHARACTER FOR SAVE COMMAND TO SAVE RECORDS
SUPRES EQU TRUE ;TRUE TO SUPPRESS USER NUMBER FOR USER 0
MULTPL EQU TRUE ;TRUE TO ALLOW MULTIPLE COMMANDS ON ONE LINE
REBOOT EQU TRUE ;TRUE TO INCLUDE BOOT COMMAND
CLSCHR EQU 1AH ;CHARACTER TO CLEAR TERMINAL SCREEN
ESC EQU 1BH ;VT100 LEAD-IN CHAR. (FOR 'CLS')
;
IF TEST
CPRMPT EQU '<' ;CPR PROMPT INDICATING TEST MODE
@@ -299,7 +313,7 @@ TPA EQU BASE+0100H ;BASE OF TPA
IF COMLD OR TEST
LD HL,BGNXFR
LD DE,CPRLOC
LD BC,ENDLD-CPRLOC
LD BC,ENDLD-BGNXFR
LDIR
LD BC,(UDFLAG)
JP CPRLOC
@@ -368,15 +382,29 @@ ENTRY:
; warm boot reloads ZCPR and destroys the contents of the command buffer.
; The multiple command feature may be turned off with the SCL command.
;
MBUFF: DEFB BUFLEN ;MAXIMUM BUFFER LENGTH
;MBUFF: DEFB BUFLEN ;MAXIMUM BUFFER LENGTH
MBUFF: DEFB BUFEND-CIBUFF ;MAXIMUM BUFFER LENGTH
CBUFF: DEFB 0 ;NUMBER OF CHARACTERS IN COMMAND LINE
CIBUFF: DEFB ' ' ;DEFAULT (COLD BOOT) COMMAND
DEFB 0 ;COMMAND STRING TERMINATOR
DEFB ' ZCPR-D&J of 5 March 1994 '
DEFB 0 ;TERMINATOR FOR DUMP IDENTIFICATION
DEFS BUFLEN-($-CIBUFF)+1
DEFW 0 ;SENTINEL FOR STACK END
DEFS 24 ;STACK AREA
CIBUFF: DB ' ' ;DEFAULT (COLD BOOT) COMMAND 13
DEFB 0 ;COMMAND STRING TERMINATOR 14
DEFB ' ZCPR-D&J of 17 May 2021 ' ;44
DEFB 0 ;TERMINATOR FOR DUMP IDENTIFICATION 45
; DEFS BUFLEN-($-CIBUFF)+1
db 0,0,0,0,0,0,0,0 ;53
db 0,0,0,0,0,0,0,0 ;61
db 0,0,0,0,0,0,0,0 ;69
db 0,0,0,0,0,0,0,0 ;77
db 0,0,0,0,0,0,0,0 ;85
db 0,0,0,0,0,0,0,0 ;93
db 0,0,0 ;96
; DEFB 0,0,0,0,0,0,0,0 ;101
; DEFB 0,0,0 ;104
; DEFB 0,0,0,0,0,0,0,0 ;109
; DEFB 0,0,0,0,0,0,0,0 ;118
BUFEND EQU $
; DEFW 0 ;SENTINEL FOR STACK END
db 0,0
DEFS 24,0 ;STACK AREA
STACK EQU $ ;TOP OF STACK
;
; SUBMIT FILE CONTROL BLOCK
@@ -393,22 +421,23 @@ SUBCR EQU SUBDN+32 ;CURRENT RECORD NUMBER
;
; COMMAND FILE CONTROL BLOCK
;
FCBDN: DEFS 1 ;DISK DRIVE
FCBFN: DEFS 8 ;FILE NAME
FCBFT: DEFS 3 ;FILE TYPE
FCBEX: DEFS 1 ;EXTENT NUMBER
FCBS1: DEFS 1 ;S1
FCBS2: DEFS 1 ;S2
FCBRC: DEFS 1 ;RECORD COUNT
FCBDM: DEFS 16 ;DISK GROUP MAP
FCBCR: DEFS 1 ;CURRENT RECORD NUMBER
FCBDN: db 0 ;DISK DRIVE
FCBFN: db 0,0,0,0,0,0,0,0 ;FILE NAME
FCBFT: db 0,0,0 ;FILE TYPE
FCBEX: db 0 ;EXTENT NUMBER
FCBS1: db 0 ;S1
FCBS2: db 0 ;S2
FCBRC: db 0 ;RECORD COUNT
FCBDM: db 0,0,0,0,0,0,0,0 ;DISK GROUP MAP
db 0,0,0,0,0,0,0,0
FCBCR: db 0 ;CURRENT RECORD NUMBER
;
; Type and List Variables
;
CHRCNT: DEFS 1 ;CHARACTER COUNT FOR TYPE AND LIST
LNCNT: DEFS 1 ;LINE COUNT FOR TYPE AND LIST
TYPLST: DEFS 1 ;FLAG FOR TYPE OR LIST
TABCNT: DEFS 1 ;TAB COUNT FOR TYPE AND LIST
CHRCNT: db 0 ;CHARACTER COUNT FOR TYPE AND LIST
LNCNT: db 0 ;LINE COUNT FOR TYPE AND LIST
TYPLST: db 0 ;FLAG FOR TYPE OR LIST
TABCNT: db 0 ;TAB COUNT FOR TYPE AND LIST
SYSTST: DEFB 0 ;LIST SYSTEM FILES IN DIRECTORY FLAG
;
; General Variables
@@ -416,7 +445,7 @@ SYSTST: DEFB 0 ;LIST SYSTEM FILES IN DIRECTORY FLAG
CIBPTR: DEFW CIBUFF ;POINTER TO COMMAND INPUT BUFFER
CIPTR: DEFW CIBUFF ;POINTER TO CURRENT CMD FOR ERROR REPORTING
TMPUSR: DEFB 0 ;TEMPORARY USER NUMBER
TDRIVE: DEFB 0 ;DEFAULT DRIVE
TDRIVE: DEFB 0 ;TEMPORARY DRIVE
DFUSR: DEFB DEFUSR ;DEFAULT USER
LDADR: DEFW TPA ;MEMORY LOAD ADDRESS
;
@@ -434,11 +463,13 @@ CMDTBL:
DEFW USER
DC 'DFU'
DEFW DFU
DC 'PAGE'
DC 'FF' ; was 'PAGE'
DEFW EJECT
DC 'BELL'
DEFW RING
DC 'SAK'
DC 'CLS'
DEFW CLS
DC 'SAK' ; "Strike Any Key"
DEFW SAK
DC 'GO'
DEFW GO
@@ -458,7 +489,7 @@ CMDTBL:
DEFW PEEK
DC 'POKE'
DEFW POKE
NCMNDS DEFL 17 ;NUMBER OF COMMANDS
NCMNDS DEFL 18 ;NUMBER OF COMMANDS
;
IF MULTPL
DC 'SCL'
@@ -515,14 +546,11 @@ RS3:
JR Z,RESTRT ;YES, SKIP REST OF LINE
CALL SCANER ;PARSE COMMAND NAME FROM COMMAND LINE
JR NZ,RS4 ;ERROR IF NAME CONTAINS A "?"
CALL DEFDMA ;SET TBUFF TO DMA ADDRESS
CALL DLOGIN ;ASSURE PROPER DRIVE
CALL RSTUSR ;ASSURE PROPER USER NUMBER
CALL SETUDB ;SET UD BYTE TO MATCH USER/DRIVE
CALL CMDSER ;SCAN FOR CPR-RESIDENT COMMAND
CALL CMDSER ;SCAN FOR COMMAND
;
; ENTRY POINT FOR CONTINUED SCAN OF COMMAND LINE
;
CALL UPDATE ;UPDATE BDOS/SYSTEM PARAMETERS
CALL ADVAN ;GET ANY CHARACTER
JR Z,RESTRT ;NONE, END OF LINE
LD (CIPTR),DE ;UPDATE START OF LINE IN CASE ERROR
@@ -1023,7 +1051,7 @@ SCAN4:
LD (HL),B ;SAVE DRIVE
LD B,8 ;MAX OF 8 CHARACTERS
XOR A ;CLEAR '?' COUNT
EX AF,AF ;AND SAVE
EX AF,AF' ;AND SAVE
CALL SCANF ;GET POSSIBLE NAME
CALL SCANT ;AND POSSIBLE TYPE
;
@@ -1043,7 +1071,7 @@ SCAN4:
; SCAN COMPLETE -- DE POINTS TO DELIMITER BYTE AFTER TOKEN
;
LD (CIBPTR),DE
EX AF,AF ;GET NUMBER OF '?' IN FILENAME.TYP
EX AF,AF' ;GET NUMBER OF '?' IN FILENAME.TYP
RET
;
; EXTRACT FILE TYPE FROM POSSIBLE FILENAME.TYP
@@ -1068,9 +1096,9 @@ SCAN12:
SCAN13:
CP '?' ;QUESTION MARK?
JR NZ,SCAN14 ;NO, JUST STORE CHARACTER
EX AF,AF ;GET QUESTION MARK COUNT
EX AF,AF' ;GET QUESTION MARK COUNT
INC A ;COUNT IT
EX AF,AF ;AND SAVE COUNT
EX AF,AF' ;AND SAVE COUNT
SCAN14:
INC DE ;POINT TO NEXT CHARACTER IN COMMAND LINE
LD (HL),A ;STORE CHARACTER IN FCBDN
@@ -1096,15 +1124,6 @@ CMDSER:
LD A,(HL) ;LOOK FOR DRIVE SPEC
DEC A ;ADJUST FOR LOG IN
CALL P,TLOGIN ;LOG IN DRIVE
SETUDB:
LD A,(TMPUSR) ;GET CURRENT USER NUMBER
ADD A,A ;PLACE IT IN HIGH NIBBLE
ADD A,A
ADD A,A
ADD A,A
LD HL,TDRIVE ;ADD DEFAULT DRIVE NUMBER (LOW NIBBLE)
OR (HL)
LD (UDFLAG),A ;UPDATE USER/DRIVE BYTE
RET
CMS0:
OR (HL) ;DRIVE OR USER NUMBER
@@ -1124,11 +1143,10 @@ CMS2:
LD A,(DE) ;NEXT CHARACTER IN INPUT COMMAND MUST BE <SP>
CP ' '
JR NZ,CMS4
LD A,(HL) ;FOUND COMMAND,
LD E,(HL) ;FOUND COMMAND,
INC HL ;LOAD ADDRESS,
LD H,(HL) ;AND
LD L,A ;JUMP TO IT
JP (HL) ;COMMAND IS CPR-RESIDENT
LD D,(HL) ;AND
JR CMS6 ;UPDATE SYSTEM DATA AND EXECUTE
CMS3:
BIT 7,(HL) ;END OF TABLE ENTRY?
INC HL
@@ -1138,7 +1156,10 @@ CMS4:
INC HL
DJNZ CMS1 ;NOT TO END OF TABLE YET
CMS5:
JP COM ;COMMAND MAY BE DISK-RESIDENT
LD DE,COM ;LOAD DESTINATION AND UPDATE
CMS6:
PUSH DE ;PLACE ROUTINE ADDRESS ON STACK
JP UPDATE ;UPDATE SYSTEM DATA AND EXECUTE
;
;**** Section 5 ****
; CPR-Resident Commands
@@ -1410,6 +1431,21 @@ REPL2:
RET
;
;Section 5E
;Command: CLS
;Function: To clear screen.
;Forms:
; CLS
;
CLS:
; LD A,CLSCHR ; Load clear screen character
; DEFB 21H ; and skip next instruction
; If a multi-character string is
; required to clear screen use:
CALL PRINT
DB ESC,'[2','J'+128
RET
;
;Section 5F
;Command: BELL
;Function: To ring terminal bell.
;Forms:
@@ -1419,7 +1455,7 @@ RING:
LD A,BELL ; load bell into A
JP CONOUT ; and output it
;
;Section 5F
;Section 5G
;Command: LIST
;Function: To print specified file on list device.
;Forms:
@@ -1436,7 +1472,7 @@ LIST:
;
JR TYPE1
;
;Section 5G
;Section 5H
;Command: TYPE
;Function: To display specified file on console.
;Forms:
@@ -1559,8 +1595,8 @@ PAGER:
PAGE2:
JP BDOSJP ; return via bdos
;
;Section 5H
;Command: PAGE
;Section 5I
;Command: FF (was PAGE)
;Function: To eject a page on list device via a form feed.
;Forms:
; PAGE
@@ -1578,7 +1614,7 @@ EJECT:
LD C,05H ; list output
JP BDOS ; output character and return via bdos
;
;Section 5I
;Section 5J
;Command: SAVE
;Function: To save the contents of TPA onto disk as a file. Number of
; pages or records is in decimal. Saved area begins at 100H.
@@ -1627,7 +1663,7 @@ SAVE3:
SAVE4:
JP PRNLE ;PRINT 'NO SPACE' ERROR
;
;Section 5J
;Section 5K
;Command: REN
;Function: To change the name of an existing file.
;Forms:
@@ -1669,7 +1705,7 @@ NAMERR:
REN2:
JP ABORT
;
;Section 5K
;Section 5L
;Command: USER
;Function: To change current user number; new user number is in decimal.
;Forms:
@@ -1679,7 +1715,7 @@ USER:
CALL USRNUM ;EXTRACT USER NUMBER FROM COMMAND LINE
JP NEWUSR ;SET NEW USER NUMBER
;
;Section 5L
;Section 5M
;Command: DFU
;Function: To set the Default User Number for the command/file scanner; new
; default user number is in decimal.
@@ -1691,7 +1727,7 @@ DFU:
LD (DFUSR),A ;PUT IT AWAY
RET
;
;Section 5M
;Section 5N
;Command: SCL
;Function: To force ZCPR to parse only a single command per line; reset
; to multiple command format at the next ^C.
@@ -1708,7 +1744,7 @@ SINGLE:
ENDIF
;
;
;Section 5N
;Section 5O
;Command: PEEK
;Function: To display hex values beginning at a specified address.
;Forms:
@@ -1755,7 +1791,7 @@ PRHEX:
JP CONOUT ; go display value
;
;
;Section 5O
;Section 5P
;Command: POKE
;Function: To poke a string of hex values into a set of consecutive addresses.
;Forms:
@@ -1776,7 +1812,7 @@ POKE1:
JR POKE1 ; go for more
;
;
;Section 5P
;Section 5Q
;Command: JUMP
;Function: To call the program (subroutine) at the specified address
; without loading from disk.
@@ -1787,7 +1823,7 @@ JUMP:
CALL HEXNUM ;GET LOAD ADDRESS IN HL
JR CLLPRG ;PERFORM CALL
;
;Section 5Q
;Section 5R
;Command: COM file processing
;Function: To load the specified COM file from disk and execute it.
;Forms:
@@ -1807,7 +1843,7 @@ COM:
CALL MEMLD ;LOAD MEMORY WITH FILE SPECIFIED
;(NO RETURN IF ERROR OR TOO BIG)
;
;Section 5R
;Section 5S
;Command: GO
;Function: To call the program in the TPA without loading from disk.
; Same as JUMP 100H, but more convenient, especially when
@@ -1868,14 +1904,24 @@ COM3:
; RUN LOADED TRANSIENT PROGRAM
;
CALL CRLF ;NEW LINE
CALL DEFDMA ;SET DMA TO 0080
CALL RSTUSR ;RESET TO PROPER USER NUMBER
UPDATE:
CALL DEFDMA ;SET DMA TO DEFAULT VALUE
CALL DLOGIN ;ASSURE PROPER DRIVE
CALL RSTUSR ;ASSURE PROPER USER NUMBER
LD A,E ;GET CURRENT USER NUMBER
ADD A,A ;PLACE IT IN HIGH NIBBLE
ADD A,A
ADD A,A
ADD A,A
LD HL,TDRIVE ;ADD DEFAULT DRIVE NUMBER (LOW NIBBLE)
OR (HL)
LD (UDFLAG),A ;UPDATE USER/DRIVE BYTE
;
; EXECUTION (CALL) OF PROGRAM (SUBROUTINE) OCCURS HERE
; EXECUTION (CALL) OF PROGRAM/SUBROUTINE/COMMAND OCCURS HERE
;
RET ;CALL TRANSIENT
;
;Section 5S
;Section 5T
;Command: GET
;Function: To load the specified file from disk to the specified address
;Forms:
@@ -1896,9 +1942,9 @@ MEMLD:
LD (LDADR),HL ;SET LOAD ADDRESS
;
; MLA is a reentry point for a non-standard CP/M Modification
; This is the return point when the .COM (or GET) file is not found the
; first time, the Default User is selected for the second attempt
; and Drive A is selected for the final attempt.
; This is the return point when the .COM (or GET) file was not found
; so the Default Drive & User are selected for the final attempt
; to find the file.
;
MLA:
CALL ULOGIN ;LOG ANY USER
@@ -1906,29 +1952,22 @@ MLA:
CALL OPENF ;OPEN COMMAND.COM FILE
JR NZ,MLA1 ;FILE FOUND - LOAD IT
;
; FILE NOT FOUND - SELECT DEFAULT USER
; FILE NOT FOUND - SELECT DEFAULT COM USER
;
LD A,L ;GET FCB USER
AND A ;DEFAULT USER?
JR NZ,MLA0 ;NO
LD HL,TMPUSR ;CURRENT USER SAME AS DEFAULT?
LD A,(DFUSR) ;GET DEFAULT USER
CP (HL)
SET 7,A ;MAKE INTO VALID USER NUMBER
LD (FCBS1),A ;PUT USER INTO FCB
JR NZ,MLA ;AND TRY AGAIN
;
; FILE NOT FOUND - SELECT DRIVE A IF DEFAULT WAS SOME OTHER DRIVE
; AND SELECT DEFAULT COM DRIVE. IF DEFAULT COM DRIVE ALREADY
; SELECTED, GIVE UP AND PRINT ERROR MESSAGE
;
MLA0:
LD A,(TDRIVE) ;DRIVE A DEFAULT?
AND A
LD A,DEFDRV-'@' ;A<= DEFAULT COM DRIVE
LD HL,FCBDN ;POINT TO DRIVE IN FCB
CP (HL) ;THE SAME?
JR Z,MLA3 ;YES, ERROR
XOR A
LD HL,FCBDN ;POINT AT DRIVE IN FCB
OR (HL) ;DRIVE ALREADY SPECIFIED?
LD (HL),1 ;SELECT DRIVE A
JR Z,MLA ;NO, GO GIVE IT A TRY
LD (HL),A ;PUT DEFAULT COM DRIVE IN FCB
JR MLA ;GO GIVE IT A TRY
MLA3:
CALL PRNNF ;CAN'T FIND FILE
JR PRNLE1
@@ -1961,6 +2000,7 @@ PRNLE1:
IF (($-ENTRY) GT ZCPRSZ)
*ZCPR too large!!*
ENDIF
.DEPHASE
;
IF TEST
LISTST:
@@ -1977,4 +2017,4 @@ ENDLD EQU $
END
 PUSH HL ;SAVE POI


View File

@@ -2,4 +2,4 @@
#DEFINE RMN 1
#DEFINE RUP 1
#DEFINE RTP 0
#DEFINE BIOSVER "3.1.1-pre.179"
#DEFINE BIOSVER "3.1.1-pre.183"

View File

@@ -3,5 +3,5 @@ rmn equ 1
rup equ 1
rtp equ 0
biosver macro
db "3.1.1-pre.179"
db "3.1.1-pre.183"
endm

View File

@@ -134,7 +134,7 @@ endif
#
all:: $(OBJECTS)
@for dir in $(SUBDIRS) ; do \
$(MAKE) --directory $$dir all ; \
$(MAKE) --directory $$dir ; \
done
@if [ "$(DEST)" ] && [ "$(OBJECTS)" ] ; then for file in $(filter-out $(NOCOPY),$(OBJECTS)) ; do \
mkdir -p $(DEST) ; \