Compare commits

...

22 Commits

Author SHA1 Message Date
Wayne Warthen
6f7d1447ea Fixes for RTCHB and DS1501RTC
Thanks and credit to Marten Feldman for contributing these.
2024-01-15 16:24:43 -08:00
Wayne Warthen
3e6120e0fa ACIA Driver Interrupt Handling Performance Improvements
Thanks and credit to Derek Cooper, Wesley Isacks, Bill Shen, and
Phillip Stevens.
2024-01-14 11:22:26 -08:00
Wayne Warthen
61565bffd7 Correct Version Number String 2024-01-12 16:00:31 -08:00
Wayne Warthen
0bac6f32ea Update BPBIOS Disk Reference Lookup
- Modified BPBIOS to implement proper physical/logical disk unit lookups.
2024-01-12 15:22:13 -08:00
Wayne Warthen
462545bfe7 Update FAT Utility
- Update to v1.0 of FAT Utility
2024-01-09 16:24:20 -08:00
Wayne Warthen
cc4ad0d4b9 Fixed Type in User Guide
Thanks and credit to Bill Lewis for this correction.
2024-01-07 17:24:17 -08:00
Wayne Warthen
458b04404e Merge pull request #382 from feilipu/patch-1
add serial SER_STOP2 options
2024-01-07 17:02:09 -08:00
Wayne Warthen
4143cfa4cf Merge pull request #383 from feilipu/patch-2
Typo in Source/ReadMe.txt
2024-01-07 17:01:28 -08:00
Phillip Stevens
438e59a05e Typo in Source/ReadMe.txt
Just a typo.
2024-01-07 15:31:56 +11:00
Phillip Stevens
7385d07b9a add serial SER_STOP2 options
Add configuration for 8N2 serial options
2024-01-07 15:25:51 +11:00
Wayne Warthen
5bea1f400e Create CONTRIBUTING.md
Add contribution guidelines.
2024-01-01 15:19:25 -08:00
Wayne Warthen
1a9701e51d Version 3.4 Final 2023-12-31 16:35:43 -08:00
Wayne Warthen
23e0b82112 Merge pull request #378 from wwarthen/dev
RomWBW v3.4
2023-12-31 16:12:45 -08:00
Wayne Warthen
b4b5ef19fc Regen Doc 2023-12-31 15:32:17 -08:00
Wayne Warthen
4dd46c3df6 Regenerate Documentation 2023-12-30 14:15:35 -08:00
Wayne Warthen
17e3a95768 Add FAT.COM to Standard ROM Disk
- Added FAT.COM application to standard ROM Disk (ROM size >= 512K)
- Removed RMAC.COM and LINK.COM to make space for FAT.COM
2023-12-30 13:29:26 -08:00
Wayne Warthen
3529cdaa2f Update cpuspd.asm
- Improve display of CPUSPD utility.
2023-12-29 19:55:21 -08:00
Wayne Warthen
556b7074ae Missed Files 2023-12-29 15:55:25 -08:00
Wayne Warthen
952489eac4 Miscellaneous
- Corrected inconsistencies in CPU oscillator speed configuration for Z280 systems.
- Updated Bill Chen's ZZRCC monitor from v0.5 to v0.6.
2023-12-29 15:18:34 -08:00
Wayne Warthen
8f326fb081 Fix Makefile for MacOS 2023-12-28 14:44:25 -08:00
Wayne Warthen
2925ab3d42 Miscellaneous
- Update PR template for new branching under v3.4
- Tweak Makefile.inc for slightly improved performance
- Improve UART driver messaging when bad CTS signal is detected
2023-12-28 12:50:04 -08:00
Wayne Warthen
cdb9f9b40a Initial Release Candidate for v3.4
- Minor doc updates
- Comment updates in ansi.asm and tms.asm
- Correction to build process for ROMless systems
- Fix for ZRC (default configuration) to use all available RAM
2023-12-27 17:31:01 -08:00
66 changed files with 681 additions and 387 deletions

View File

@@ -1,7 +1,7 @@
<!--
BEFORE YOU CREATE A PULL REQUEST:
- Please base all pull requests against the dev branch
- Please base all pull requests against the master branch
- Include a clear description of your change
- Reference related Issue(s) (e.g., "Resolves Issue #123")

42
CONTRIBUTING.md Normal file
View File

@@ -0,0 +1,42 @@
# Contributing to RomWBW
> **WARNING**: The `dev` branch of RomWBW has been deprecated as of v3.4. All Pull Requests should now target the `master` branch.
Contributions of all kinds to RomWBW are welcomed and greatly appreciated.
- Reporting bug(s) and suggesting new feature(s)
- Discussing the current state of the code
- Submitting a fixes and enhancements
## RomWBW GitHub Repository
The [RomWBW GitHub Repository](https://github.com/wwarthen/RomWBW) is the primary location for developing, supporting, and distributing RomWBW. Although input is gladly accepted from almost any channel, the GitHub Repository is preferred.
- Use **Issues** to report bugs, request enhancements, or ask usage questions.
- Use **Discussions** to interact with others
- Use **Pull Requests** to submit content (code, documentation, etc.)
## Submitting Content
This RomWBW Project uses the standard [GitHub Flow](https://docs.github.com/en/get-started/quickstart/github-flow). Submission of content changes (including code) are ideally done via Pull Requests.
- Submitters are advised to contact [Wayne Warthen](mailto:wwarthen@gmail.com) or start a GitHub Discussion prior to starting any significant work. This is simply to ensure that submissions are consistent
with the overall goals and intentions of RomWBW.
- All submissions should be based on the `master` branch. To create your submission, fork the RomWBW repository and create your branch from `master`. Make (and test) your changes in your personal fork.
- Please update relevant documentation and the `ChangeLog` found in the `Doc` folder.
- You are encouraged to comment your submissions to ensure your work is properly attributed.
- When ready, submit a Pull Request to merge your forked branch into the RomWBW master branch.
## Coding Style
Due to the nature of the project, you will find a variety of coding styles. When making changes to existing code, please try to be consistent with the existing coding style. You may not like the current style, but no one likes mixed styles
in one file/module.
Be careful with white space. RomWBW is primarily assembly langauge code. The use of tab stops at every 8 characters is pretty standard for assembler. If you use something else, then your code will look odd when viewed by others.
In most cases, the use of `<cr><lf>` line endings is preferred. This is standard for the operating systems of the era that RomWBW provides. Also note that CP/M text files should end with a ctrl-Z (0x1A). This is not magically added by the
tools that generate the disk images.
## License
RomWBW is licensed under GPLv3. When you submit code changes, your submissions are understood to be under the same [GPLv3 License](https://www.gnu.org/licenses/gpl-3.0.html) that covers the project.

View File

@@ -1,3 +1,8 @@
Version 3.5
-----------
- M?F: Fix for hours display in HBRTC application
- M?F: Fix for assembly error in DS1501RTC driver
Version 3.4
-----------
NOTE: Changes require HBIOS/CBIOS/Apps sync, version bump to 3.4 to ensure integrity
@@ -33,6 +38,7 @@ NOTE: Changes require HBIOS/CBIOS/Apps sync, version bump to 3.4 to ensure integ
- M?R: User Guide enhancements and corrections
- D?H: Added support for specification of secondary console
- WBW: Added platform for Monsputer
- WBW: Added FAT.COM to standard ROM Disk (removed RMAC.COM & LINK.COM)
Version 3.3
-----------

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@@ -1,9 +1,9 @@
**RomWBW ReadMe** \
Version 3.4 \
Version 3.5 \
Wayne Warthen ([wwarthen@gmail.com](mailto:wwarthen@gmail.com)) \
22 Dec 2023
12 Jan 2024
# Overview
@@ -197,6 +197,32 @@ let me know if I missed you!
Aztec C, HiTech C, SLR Z80ASM, Turbo Pascal, Microsoft BASIC Compiler,
Microsoft Fortran Compiler, and a Games compendium.
- Martin R has provided substantial help reviewing and improving the
User Guide.
- Jacques Pelletier has contributed the DS1501 RTC driver code.
- Jose Collado has contributed enhancements to the TMS driver including
compatibility with standard TMS register configuration.
- Kevin Boone has contributed a generic HBIOS date/time utility (WDATE).
- Matt Carroll has contributed a fix to XM.COM that corrects the port
specification when doing a send.
- Dean Jenkins enhanced the build process to accommodate the Raspberry
Pi 4.
- Tom Plano has contributed a new utility (HTALK) to allow talking
directly to HBIOS COM ports.
- Lars Nelson has contributed several generic utilities such as a
universal (OS agnostic) UNARC application.
- Dylan Hall added support for specifying a secondary console.
- Bill Shen has contributed boot loaders for several of his systems.
Contributions of all kinds to RomWBW are very welcome.
# Licensing

View File

@@ -1,6 +1,6 @@
RomWBW ReadMe
Wayne Warthen (wwarthen@gmail.com)
22 Dec 2023
12 Jan 2024
@@ -197,6 +197,33 @@ let me know if I missed you!
including Aztec C, HiTech C, SLR Z80ASM, Turbo Pascal, Microsoft
BASIC Compiler, Microsoft Fortran Compiler, and a Games compendium.
- Martin R has provided substantial help reviewing and improving the
User Guide.
- Jacques Pelletier has contributed the DS1501 RTC driver code.
- Jose Collado has contributed enhancements to the TMS driver
including compatibility with standard TMS register configuration.
- Kevin Boone has contributed a generic HBIOS date/time utility
(WDATE).
- Matt Carroll has contributed a fix to XM.COM that corrects the port
specification when doing a send.
- Dean Jenkins enhanced the build process to accommodate the Raspberry
Pi 4.
- Tom Plano has contributed a new utility (HTALK) to allow talking
directly to HBIOS COM ports.
- Lars Nelson has contributed several generic utilities such as a
universal (OS agnostic) UNARC application.
- Dylan Hall added support for specifying a secondary console.
- Bill Shen has contributed boot loaders for several of his systems.
Contributions of all kinds to RomWBW are very welcome.

125
Source/Apps/FAT/ReadMe.md Normal file
View File

@@ -0,0 +1,125 @@
# RomWBW HBIOS CP/M FAT Utility ("FAT.COM")
Author: Wayne Warthen \
Updated: 6-Jan-2024
This application allows copying files between CP/M filesystems and FAT
filesystems (DOS, Windows, Mac, Linux, etc.). The application runs on
RomWBW hosted CP/M (and compatible) operating systems. The application
also has limited file management capabilities on FAT filesystems
including directory listing, renaming, deleting, and sub-directory
creation.
### Usage:
```
FAT DIR <path>
FAT COPY <src> <dst>
FAT REN <from> <to>
FAT DEL <path>[<file>|<dir>]
FAT MD <path>
FAT FORMAT <drv>
```
CP/M filespec: \<d\>:FILENAME.EXT (\<d\> is CP/M drive letter A-P) \
FAT filespec: \<u\>:/DIR/FILENAME.EXT (\<u\> is disk unit #)
### Notes:
- Partitioned or non-partitioned media is handled automatically.
A floppy drive is a good example of a non-partitioned FAT
filesystem and will be recognized. Larger media will typically
have a partition table which will be recognized by the
application to find the FAT filesystem.
- Although RomWBW-style CP/M media does not know anything about
partition tables, it is entirely possible to have media that
has both CP/M and FAT file systems on it. This is accomplished
by creating a FAT filesystem on the media that starts on a track
beyond the last track used by CP/M. Each CP/M slice can occupy
up to 8MB. So, make sure to start your FAT partition beyond
(slice count) * 9MB.
- The application infers whether you are attempting to reference
a FAT or CP/M filesystem via the drive specifier (char before ':').
A numeric drive character specifies the HBIOS disk unit number
for FAT access. An alpha (A-P) character indicates a CP/M
file system access targeting the specified drive letter. If there
is no drive character specified, the current CP/M filesystem and
current CP/M drive is assumed. For example:
`2:README.TXT` refers to FAT file README.TXT on disk unit #2 \
`C:README.TXT` refers to CP/M file README.TXT on CP/M drive C: \
`README.TXT` refers to CP/M file README.TXT on current CP/M drive
- FAT files with SYS, HIDDEN, or R/O attributes are not given
any special treatment. Such files are found and processed
like any other file. However, any attempt to write to a
read-only file will fail and the application will abort.
- It is not currently possible to reference CP/M user areas other
than the current user. To copy files to alternate user areas,
you must switch to the desired user number first or use an
additional step to copy the file to the desired user area.
- Accessing FAT filesystems on a floppy requires the use of
RomWBW HBIOS v2.9.1-pre.13 or greater.
- Only the first 8 RomWBW disk units (0-7) can be referenced.
- Files written are not verified.
- Wildcard matching in FAT filesystems is a bit unusual as
implemented by FatFs. See FatFs documentation.
### License:
GNU GPLv3 (see file LICENSE.txt)
### Build Notes:
- Source is maintained on GitHub at <https://github.com/wwarthen/FAT>.
- Application is based on FatFs. FatFs source is included. See
<http://elm-chan.org/fsw/ff/>.
- SDCC compiler v4.3 or greater is required to build. New calling
conventions introduced in v4.3 are assumed.
- See Build.cmd for sample build script under Windows. References
to SDCC must be updated for your environment.
- Note that ff.c (core FatFs code) generates quite a few compiler
warnings (all appear to be benign).
### To Do:
- Allow ^C to abort any operation in progress.
- Allow referencing more than the first 8 RomWBW disk units.
- Handle wildcards in destination, e.g.:
`FAT REN 2:/*.TXT 2:/*.BAK`
- Do something intelligent with R/O and SYS file attributes
- Support UNA
### History:
| Date | Version | Notes |
|------------:|-------- |-------------------------------------------------------------|
| 2-May-2019 | v0.9 | (beta) initial release |
| 7-May-2019 | v0.9.1 | (beta) added REN and DEL |
| 8-May-2019 | v0.9.2 | (beta) handle file collisions w/ user prompt |
| 8-Oct-2019 | v0.9.3 | (beta) fixed incorrect filename buffer size (MAX_FN) |
| 10-Oct-2019 | v0.9.4 | (beta) upgraded to FatFs R0.13c |
| 10-Oct-2019 | v0.9.5 | (beta) added MD (make directory) |
| 10-Oct-2019 | v0.9.6 | (beta) added FORMAT |
| 11-Oct-2019 | v0.9.7 | (beta) fix FORMAT to use existing partition table entries |
| | | add attributes to directory listing |
| 12-Apr-2021 | v0.9.8 | (beta) support CP/NET drives |
| 12-Oct-2023 | v0.9.9 | (beta) handle updated HBIOS Disk Device call |
| 6-Jan-2024 | v1.0.0 | updated to latest FsFat (v0.15) |
| | | updated to latest SDCC (v4.3) |

View File

@@ -1,105 +0,0 @@
RomWBW HBIOS CP/M FAT Utility ("FAT.COM")
Author: Wayne Warthen
Updated: 12-Oct-2023
Application to manipulate and exchange files with a FAT (DOS)
filesystem. Runs on any HBIOS hosted CP/M implementation.
USAGE:
FAT DIR <path>
FAT COPY <src> <dst>
FAT REN <from> <to>
FAT DEL <path>[<file>|<dir>]
FAT MD <path>
FAT FORMAT <drv>
CP/M filespec: <d>:FILENAME.EXT (<d> is CP/M drive letter A-P)
FAT filespec: <u>:/DIR/FILENAME.EXT (<u> is disk unit #)
LICENSE:
GNU GPLv3 (see file LICENSE.txt)
NOTES:
- Partitioned or non-partitioned media is handled automatically.
A floppy drive is a good example of a non-partitioned FAT
filesystem and will be recognized. Larger media will typically
have a partition table which will be recognized by the
application to find the FAT filesystem.
- Although RomWBW-style CP/M media does not know anything about
partition tables, it is entirely possible to have media that
has both CP/M and FAT file systems on it. This is accomplished
by creating a FAT filesystem on the media that starts on a track
beyond the last track used by CP/M. Each CP/M slice on a
media will occupy a little over 8MB. So, make sure to start
your FAT partition beyond (slice count) * 8MB.
- The application infers whether you are attempting to reference
a FAT or CP/M filesystem via the drive specifier (char before ':').
A numeric drive character specifies the HBIOS disk unit number
for FAT access. An alpha (A-P) character indicates a CP/M
file system access targeting the specified drive letter. If there
is no drive character specified, the current CP/M filesystem and
current CP/M drive is assumed. For example:
"2:README.TXT" refers to FAT file README.TXT on disk unit #2
"C:README.TXT" refers to CP/M file README.TXT on CP/M drive C
"README.TXT" refers to CP/M file README.TXT on current CP/M drive
- FAT files with SYS, HIDDEN, or R/O only attributes are not given
any special treatment. Such files are found and processed
like any other file. However, any attempt to write to a
read-only file will fail and the application will abort.
- It is not currently possible to reference CP/M user areas other
than the current user. To copy files to alternate user areas,
you must switch to the desired user number first or use an
additional step to copy the file to the desired user area.
- Accessing FAT filesystems on a floppy requires the use of
RomWBW HBIOS v2.9.1-pre.13 or greater.
- Files written are not verified.
- Wildcard matching in FAT filesystems is a bit unusual as
implemented by FatFs. See FatFs documentation.
BUILD NOTES:
- Source is maintained on GitHub at https://github.com/wwarthen/FAT
- Application is based on FatFs. FatFs source is included.
- SDCC compiler is required to build (v4.0.0 known working).
- ZX CP/M emulator is required to build (from RomWBW distribution).
- See Build.cmd for sample build script under Windows. References
to SDCC and ZX must be updated for your environment.
- Note that ff.c (core FatFs code) generates quite a few compiler
warnings (all appear to be benign).
TO DO:
- Allow ^C to abort any operation in progress.
- Handle wildcards in destination, e.g.:
"FAT REN 2:/*.TXT 2:/*.BAK"
- Do something intelligent with R/O and SYS files on FAT
- Support UNA
HISTORY:
2-May-2019: v0.9 (beta) initial release
7-May-2019: v0.9.1 (beta) added REN and DEL
8-May-2019: v0.9.2 (beta) handle file collisions w/ user prompt
8-Oct-2019: v0.9.3 (beta) fixed incorrect filename buffer size (MAX_FN)
10-Oct-2019: v0.9.4 (beta) upgraded to FatFs R0.13c
10-Oct-2019: v0.9.5 (beta) added MD (make directory)
10-Oct-2019: v0.9.6 (beta) added FORMAT
11-Oct-2019: v0.9.7 (beta) fix FORMAT to use existing partition table entries
add attributes to directory listing
12-Apr-2021: v0.9.8 (beta) support CP/NET drives
12-Oct-2023: v0.9.9 (beta) handle updated HBIOS Disk Device call

Binary file not shown.

View File

@@ -189,9 +189,9 @@ show_spd:
ld b,BF_SYSGET
ld c,BF_SYSGET_CPUINFO
rst 08
jp nz,err_not_sup
jp nz,err_api
call crlf2
ld (cpu_spd),de ; save CPU speed for now
push de ; save CPU speed for now
push bc ; Oscillator speed to HL
pop hl
ld de,str_spacer
@@ -199,10 +199,18 @@ show_spd:
call prtd3m ; print it
ld de,str_oscspd
call prtstr
call crlf
ld de,str_cpuspd
call prtstr
pop hl ; recover CPU speed
call prtd3m ; print it
ld de,str_mhz
call prtstr
;
ld b,BF_SYSGET
ld c,BF_SYSGET_CPUSPD
rst 08
jp nz,err_not_sup
ret nz ; no CPU speed info, done
push de ; save wait states for now
ld a,l
ld de,str_slow
@@ -216,11 +224,6 @@ show_spd:
jr z,show_spd1
jp err_invalid
show_spd1:
call crlf
call prtstr
ld hl,(cpu_spd) ; recover CPU speed
call prtd3m
ld de,str_cpuspd
call prtstr
pop hl
ld a,h ; memory wait states
@@ -284,6 +287,9 @@ err_not_sup:
err_invalid:
ld de,str_err_invalid
jr err_ret
err_api:
ld de,str_err_api
jr err_ret
;
err_ret:
call crlf2
@@ -659,21 +665,24 @@ delay1:
; Constants
;=======================================================================
;
str_banner .db "RomWBW CPU Speed Selector v0.5, 2-Feb-2022",0
str_banner .db "RomWBW CPU Speed Selector v0.6, 29-Dec-2023",0
str_spacer .db " ",0
str_oscspd .db " MHz Oscillator",0
str_slow .db " CPU speed is HALF (",0
str_full .db " CPU speed is FULL (",0
str_dbl .db " CPU speed is DOUBLE (",0
str_cpuspd .db " MHz)",0
str_cpuspd .db " CPU speed is ",0
str_mhz .db " MHz",0
str_slow .db " (Half)",0
str_full .db " (Full)",0
str_dbl .db " (Double)",0
str_memws .db " Memory Wait State(s)",0
str_iows .db " I/O Wait State(s)",0
str_err_una .db " ERROR: UNA not supported by application",0
str_err_inv .db " ERROR: Invalid BIOS (signature missing)",0
str_err_ver .db " ERROR: Unexpected HBIOS version",0
str_err_parm .db " ERROR: Parameter error (CPUSPD /? for usage)",0
str_err_not_sup .db " ERROR: Platform or configuration not supported!",0
str_err_not_sup .db " ERROR: Platform or configuration does not support CPU speed configuration!",0
str_err_invalid .db " ERROR: Invalid configuration!",0
str_err_api .db " ERROR: HBIOS API error!",0
str_usage .db " Usage: CPUSPD <cpuspd>,<memws>,<iows>\r\n"
.db "\r\n"
.db " <cpuspd>: \"Half\", \"Full\", or \"Double\"\r\n"
@@ -693,7 +702,6 @@ stack .equ $ ; stack top
;
;
tmpstr .fill 9,0 ; temp string (8 chars, 0 term)
cpu_spd .dw 0 ; current cpu speed
new_cpu_spd .db $FF ; new CPU speed
new_ws_mem .db $FF ; new memory wait states
new_ws_io .db $FF ; new I/O wait states

View File

@@ -19,6 +19,8 @@
; 1) Actually implement this
;_______________________________________________________________________________
;
#include "../ver.inc"
;
;===============================================================================
; Definitions
;===============================================================================
@@ -30,9 +32,6 @@ bdos .equ $0005 ; BDOS invocation vector
;;
;stamp .equ $40 ; loc of RomWBW CBIOS zero page stamp
;
rmj .equ 3 ; CBIOS version - major
rmn .equ 0 ; CBIOS version - minor
;
;===============================================================================
; Code Section
;===============================================================================

View File

@@ -58,7 +58,7 @@ HBC_CLKTBL:
.DB 02H, 00111111B, '/'
.DB 01H, 00011111B, '/'
.DB 00H, 11111111B, ' '
.DB 03H, 00011111B, ':'
.DB 03H, 00111111B, ':'
.DB 04H, 01111111B, ':'
.DB 05H, 01111111B, 00H
;

View File

@@ -12,7 +12,7 @@ Operating System (DOS), and Basic I/O System (BIOS). The CCP and DOS components
are pre-built, relocatable binaries. The BIOS (BPBIOS) is assembled into a relocatable
binary by the build, then the build links together all three components to form the
final loadable image (.IMG) file. The linking process is performed by the custom BPBIOS
linker (BPBUILD.COM). In addition to linking the 3 components, BPBUILD also sets
linker (BPBUILD.COM). In addition to linking the 3 components, BPBUILD also
adjusts the ZCPR environment configuration.
BPBUILD is designed to be run interactively. However, it can be started with an
@@ -24,8 +24,8 @@ running of BPBUILD.
The CCP can be ZCPR 3.3 (ZCPR33?.REL), ZCPR 3.4 (Z34.REL), or ZCPR 4.1 (Z41.ZRL). ZCPR 3.3
uses static references to the ZCPR segments, so a custom version of it must be assembled.
The ZCPR33 subdirectory provides a build process for doing this. It produces a specific
version for each of the memory segment configurations (ZCPR33T.REL & ZCPR33N.REL).
The ZCPR33 subdirectory provides a build process for doing this. It produces a custom
version of ZCPR33.REL with the correct static references to the ZCPR segments.
The DOS can be ZSDOS 1.1 (ZSDOS.ZRL) or ZSDOS 2.03 (ZS203.ZRL). These are both pre-built
relocatable binaries. Note that only certain version combinations of ZSDOS and ZCPR are

View File

@@ -421,6 +421,12 @@ DRVTBL: LD HL,DPHTBL ; Point to DPH table
PAGE
ENDIF ;HARDDSK
IF RAMDSK ; << ****** Hardware Specific ****** >>
INCLUDE RAMD-WW.Z80 ; << This Driver is for HBIOS >>
PAGE
ENDIF ;RAMDSK
; << ****** Hardware Specific ****** >>
; << Enter Warm Boot routines in >>

View File

@@ -120,14 +120,14 @@ DYNLP: LD E,(HL)
DEC DE ; Else back up Ptr to Driver
DEC DE
LD A,(DE) ; Get driver #
; IF RAMDSK
; DEC A
; DEC A ; Hard Disk (Driver 2)?
; JR Z,ADDSIZ ; ..jump if so
; DEC A ; RAM Disk (Driver 3)?
; ELSE
IF RAMDSK
DEC A
DEC A ; Hard Disk (Driver 2)?
JR Z,ADDSIZ ; ..jump if so
DEC A ; RAM Disk (Driver 3)?
ELSE
CP 2 ; Hard Disk (Driver 2)?
; ENDIF ; Ramdsk
ENDIF ; Ramdsk
JR NZ,DYNCHK ; ..jump to end if Not
ADDSIZ: PUSH BC ; Save loop counter
PUSH HL ; and ptr to DPH

View File

@@ -74,7 +74,7 @@ MORDPB EQU NO ; Include additional Floppy DPB Formats?
;;--- RAM Disk Section ---
;
;RAMDSK EQU YES ; YES = Make RAM-Disk Code, NO = No code made
RAMDSK EQU YES ; YES = Make RAM-Disk Code, NO = No code made
;--- Hard Disk Section ---

View File

@@ -74,7 +74,7 @@ MORDPB EQU NO ; Include additional Floppy DPB Formats?
;;--- RAM Disk Section ---
;
;RAMDSK EQU YES ; YES = Make RAM-Disk Code, NO = No code made
RAMDSK EQU YES ; YES = Make RAM-Disk Code, NO = No code made
;--- Hard Disk Section ---

View File

@@ -74,7 +74,7 @@ MORDPB EQU NO ; Include additional Floppy DPB Formats?
;;--- RAM Disk Section ---
;
;RAMDSK EQU YES ; YES = Make RAM-Disk Code, NO = No code made
RAMDSK EQU YES ; YES = Make RAM-Disk Code, NO = No code made
;--- Hard Disk Section ---

View File

@@ -74,7 +74,7 @@ MORDPB EQU NO ; Include additional Floppy DPB Formats?
;;--- RAM Disk Section ---
;
;RAMDSK EQU YES ; YES = Make RAM-Disk Code, NO = No code made
RAMDSK EQU YES ; YES = Make RAM-Disk Code, NO = No code made
;--- Hard Disk Section ---

View File

@@ -74,7 +74,7 @@ MORDPB EQU NO ; Include additional Floppy DPB Formats?
;;--- RAM Disk Section ---
;
;RAMDSK EQU YES ; YES = Make RAM-Disk Code, NO = No code made
RAMDSK EQU YES ; YES = Make RAM-Disk Code, NO = No code made
;--- Hard Disk Section ---

View File

@@ -9,10 +9,11 @@
; 1.0 - 31 Aug 92 - General Release. HFB
; 0.1 - 3 Jan 92 - Initial release. HFB
;:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
; The Physical Drive Number byte (XDPH+3) is simply an index to the Physical
; Drive as specified in the ICFG-xx.Z80 file. Up to three physical drives
; may be defined in that section, the first byte of which defines the
; Physical/Logical Unit Address (Device & LUN for SCSI, Master/Slave for IDE),
; The Logical Drive Number byte (XDPH+3) is simply an index into the
; BPBIOS physical drive table as specified in the ICFG-xx.Z80 file.
; BPBIOS supports exactly three logical drives which
; are defined in that section, the first byte of which defines the
; Physical Unit (HBIOS Disk Unit)
; and a flag bit to specify whether or not the drive is physically present.
; See ICFG-xx.Z80 for a definition of the data.
@@ -21,7 +22,7 @@
XDPH90: DEFB TRUE ; Format lock flag (Lock RAM Drive)
DEFB FIXDSK ; Disk Drive Type
DEFB 2 ; Driver ID = Treat as Hard Drive
DEFB 3 ; Driver ID = Treat as Hard Drive
DEFB HB_MDRAM ; Physical Drive Number
DPH$90: DEFW 0 ; Skew Table pointer
DEFW 0,0,0 ; Scratch area
@@ -34,7 +35,7 @@ DPH$90: DEFW 0 ; Skew Table pointer
XDPH91: DEFB TRUE ; Format lock flag (Lock ROM Drive)
DEFB FIXDSK ; Disk Drive Type
DEFB 2 ; Driver ID = Treat as Hard Drive
DEFB 3 ; Driver ID = Treat as Hard Drive
DEFB HB_MDROM ; Physical Drive Number
DPH$91: DEFW 0 ; Skew Table pointer
DEFW 0,0,0 ; Scratch area
@@ -48,7 +49,7 @@ DPH$91: DEFW 0 ; Skew Table pointer
XDPH50: DEFB TRUE ; Format lock flag (Lock First Hard Drive)
DEFB FIXDSK ; Disk drive type
DEFB 2 ; Driver ID - 2=hard drive
DEFB HB_HDDEV0 ; Physical drive [0..6] for this Partition
DEFB 0 ; Logical drive [0..2] for this Partition
DPH$50: DEFW 0 ; Skew table pointer
DEFW 0,0,0 ; Scratch area
DEFW DIRBUF ; Directory buffer pointer
@@ -61,7 +62,7 @@ DPH$50: DEFW 0 ; Skew table pointer
XDPH51: DEFB TRUE ; --- Second Hard Drive/Partition
DEFB FIXDSK ; Disk drive type
DEFB 2 ; Driver ID - 2=hard drive
DEFB HB_HDDEV0 ; Physical drive [0..6] for this Partition
DEFB 0 ; Logical drive [0..2] for this Partition
DPH$51: DEFW 0
DEFW 0,0,0
DEFW DIRBUF
@@ -74,7 +75,7 @@ DPH$51: DEFW 0
XDPH52: DEFB TRUE ; --- Third Hard Drive/Partition
DEFB FIXDSK ; Disk drive type
DEFB 2 ; Driver ID - 2=hard drive
DEFB HB_HDDEV0 ; Physical drive [0..2] for this Partition
DEFB 0 ; Physical drive [0..2] for this Partition
DPH$52: DEFW 0
DEFW 0,0,0
DEFW DIRBUF
@@ -87,7 +88,7 @@ DPH$52: DEFW 0
XDPH53: DEFB TRUE ; --- Fourth Hard Drive/Partition
DEFB FIXDSK ; Disk drive type
DEFB 2 ; Driver ID - 2=hard drive
DEFB HB_HDDEV0 ; Physical drive [0..6] for this Partition
DEFB 0 ; Logical drive [0..2] for this Partition
DPH$53: DEFW 0
DEFW 0,0,0
DEFW DIRBUF
@@ -100,7 +101,7 @@ DPH$53: DEFW 0
XDPH54: DEFB TRUE ; --- Fifth Hard Drive/Partition
DEFB FIXDSK ; Disk drive type
DEFB 2 ; Driver ID - 2=hard drive
DEFB HB_HDDEV0 ; Physical drive [0..6] for this Partition
DEFB 0 ; Logical drive [0..2] for this Partition
DPH$54: DEFW 0
DEFW 0,0,0
DEFW DIRBUF
@@ -113,7 +114,7 @@ DPH$54: DEFW 0
XDPH55: DEFB TRUE ; --- Sixth Hard Drive/Partition
DEFB FIXDSK ; Disk drive type
DEFB 2 ; Driver ID - 2=hard drive
DEFB HB_HDDEV0 ; Physical drive [0..6] for this Partition
DEFB 0 ; Logical drive [0..2] for this Partition
DPH$55: DEFW 0
DEFW 0,0,0
DEFW DIRBUF
@@ -126,7 +127,7 @@ DPH$55: DEFW 0
XDPH56: DEFB TRUE ; --- Seventh Hard Drive/Partition
DEFB FIXDSK ; Disk drive type
DEFB 2 ; Driver ID - 2=hard drive
DEFB HB_HDDEV0 ; Physical drive [0..6] for this Partition
DEFB 0 ; Logical drive [0..2] for this Partition
DPH$56: DEFW 0
DEFW 0,0,0
DEFW DIRBUF
@@ -139,7 +140,7 @@ DPH$56: DEFW 0
XDPH57: DEFB TRUE ; --- Eighth Hard Drive/Partition
DEFB FIXDSK ; Disk drive type
DEFB 2 ; Driver ID - 2=hard drive
DEFB HB_HDDEV0 ; Physical drive [0..6] for this Partition
DEFB 0 ; Logical drive [0..2] for this Partition
DPH$57: DEFW 0
DEFW 0,0,0
DEFW DIRBUF
@@ -152,7 +153,7 @@ DPH$57: DEFW 0
XDPH58: DEFB TRUE ; --- Ninth Hard Drive/Partition
DEFB FIXDSK ; Disk drive type
DEFB 2 ; Driver ID - 2=hard drive
DEFB HB_HDDEV1 ; Physical drive [0..6] for this Partition
DEFB 1 ; Logical drive [0..2] for this Partition
DPH$58: DEFW 0
DEFW 0,0,0
DEFW DIRBUF
@@ -165,7 +166,7 @@ DPH$58: DEFW 0
XDPH59: DEFB TRUE ; --- Tenth Hard Drive/Partition
DEFB FIXDSK ; Disk drive type
DEFB 2 ; Driver ID - 2=hard drive
DEFB HB_HDDEV1 ; Physical drive [0..6] for this Partition
DEFB 1 ; Logical drive [0..2] for this Partition
DPH$59: DEFW 0
DEFW 0,0,0
DEFW DIRBUF
@@ -178,7 +179,7 @@ DPH$59: DEFW 0
XDPH60: DEFB TRUE ; --- Eleventh Hard Drive/Partition
DEFB FIXDSK ; Disk drive type
DEFB 2 ; Driver ID - 2=hard drive
DEFB HB_HDDEV1 ; Physical drive [0..6] for this Partition
DEFB 1 ; Logical drive [0..2] for this Partition
DPH$60: DEFW 0
DEFW 0,0,0
DEFW DIRBUF
@@ -191,7 +192,7 @@ DPH$60: DEFW 0
XDPH61: DEFB TRUE ; --- Twelveth Hard Drive/Partition
DEFB FIXDSK ; Disk drive type
DEFB 2 ; Driver ID - 2=hard drive
DEFB HB_HDDEV1 ; Physical drive [0..6] for this Partition
DEFB 1 ; Logical drive [0..2] for this Partition
DPH$61: DEFW 0
DEFW 0,0,0
DEFW DIRBUF

View File

@@ -104,15 +104,69 @@ SELHD: ; SET DEVICE
; Writes from HSTBUF using HSTTRK and HSTSEC to build Block Number.
; NOTE: This routine uses physical drive characteristics from ICFG-xx.
HDWRIT:
HDWRIT:
; CALL PRTSTRD
; DEFB '[HD WRITE]$'
XOR A
LD (HSTWRT),A ; Show no active writes pending
JP HDSK_WRITE ; ..continue
LD B,HB_DIOWRITE ; HBIOS WRITE
JR HDIO ; ..continue
;::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
; Read from Hard Disk Drive < Internal BIOS Routine >
; Reads to HSTBUF using HSTTRK and HSTSEC to build Block Number.
HDREAD:
; CALL PRTSTRD ; DEBUG
; DEFB '[HD READ]$' ; DEBUG
LD B,HB_DIOREAD ; HBIOS READ
JR HDIO ; ..continue
;::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
; Common read/write code for hard disk
HDIO:
LD HL,(HSTDPH) ; GET ACTIVE DPH POINTER
DEC HL ; ADJUST TO POINT TO BPBIOS LOGICAL UNIT NUMBER
LD A,(HL) ; LOAD IT IN A
;
; Convert logical -> physical
; Code below is ugly brute force approach, but since there are
; always exactly 3 logical drives in BPBIOS and the first one
; is the most commonly used, this turns out to be reasonably
; efficient.
LD HL,HDRV0 ; PERHAPS HDRV0
OR A ; A == 0?
JR Z,HDSK_HDIO1 ; HANDLE IF SO
LD HL,HDRV1 ; PERHAPS HDRV1
DEC A ; A == 1?
JR Z,HDSK_HDIO1 ; HANDLE IF SO
LD HL,HDRV2 ; PERHAPS HDRV2
DEC A ; A == 2?
JR Z,HDSK_HDIO1 ; HANDLE IF SO
CALL PANIC ; INVALID LOGICAL UNIT NUMBER
HDSK_HDIO1:
LD A,(HL) ; LOAD PHYS UNIT NUM (HBIOS DISK UNIT)
AND 0FH ; REMOVE EXTRANEOUS BITS
LD C,A ; PUT IN C FOR BELOW
JR HB_DSKIO
IF BANKED
COMMON /BANK2/
ELSE
CSEG
ENDIF
;
;==================================================================================================
; HBIOS Disk Driver Interface
;==================================================================================================
;
; Enter with B=HBIOS disk function code (read/write)
; C=HBIOS disk unit number
;
; NOTE: This routine uses physical drive characteristics from ICFG-xx.
; The routine computes a sequential block number with the algorithm;
; Trk * 16 + Sector, HBIOS uses LBA addressing for hard drive like
@@ -127,43 +181,8 @@ HDWRIT:
; Sector := (Block# MOD hdSPT)+1 (* Quotient1 := Block# DIV hdSPT *)
; Head := Quotient1 MOD hdHds (* Quotient2 := Quotient1 DIV hdHds *)
; Track := Quotient2
;::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
HDREAD:
JP HDSK_READ
IF BANKED
COMMON /BANK2/
ELSE
CSEG
ENDIF
;
;==================================================================================================
; HBIOS Disk Driver Interface
;==================================================================================================
;
; HBIOS disk commands
;
HB_DSKRD EQU 13H
HB_DSKWR EQU 14H
;
HDSK_READ:
; CALL PRTSTRD ; DEBUG
; DEFB '[HDSK READ]$' ; DEBUG
LD B,HB_DSKRD ; HBIOS DISK READ (13H)
JR HDSK_RW
;
HDSK_WRITE:
; CALL PRTSTRD
; DEFB '[HDSK WRITE]$'
LD B,HB_DSKWR ; HBIOS DISK WRITE (14H)
;
HDSK_RW:
LD HL,(HSTDPH) ; GET ACTIVE DPH POINTER
DEC HL ; ADJUST TO POINT TO UNIT NUMBER
LD C,(HL) ; LOAD IT IN C FOR HBIOS CALL LATER
HB_DSKIO:
PUSH BC ; SAVE FUNCTION AND DEVICE FOR LATER
LD HL,(HSTTRK) ; GET TRACK VALUE
LD A,L ; LSB OF TRACK TO A
@@ -172,10 +191,10 @@ HDSK_RW:
LD A,(HSTSEC) ; GET SECTOR
LD E,A ; STUFF IT IN E
LD B,4 ; PREPARE TO SHIFT OUT 4 BIT HEAD VALUE
HDSK_RW1:
HB_DSKIO1:
SRL H ; SHIFT ONE BIT OUT
RR L ; ... OF HL
DJNZ HDSK_RW1 ; DO ALL 4 BITS
DJNZ HB_DSKIO1 ; DO ALL 4 BITS
POP BC ; RECOVER FUNCTION AND DEVICE
PUSH BC ; SAVE INCOMING FUNCTION, DEVICE/UNIT
LD B,12H ; SETUP FOR NEW SEEK CALL
@@ -192,17 +211,3 @@ HDSK_RW1:
OR 0FFH ; A=$FF TO SIGNAL ERROR
RET ; AND DONE W/ ERROR
;
;==================================================================================================
; HDSK DISK DRIVER - DATA
;==================================================================================================
;
IF BANKED
COMMON /B2RAM/
ELSE
DSEG
ENDIF
HDSK_PDN DEFS 1 ; PHYSICAL DEVICE


View File

@@ -27,6 +27,11 @@ HBX_SRCBNK EQU 0FFE4H
HBX_DSTADR EQU 0FFE5H
HBX_DSTBNK EQU 0FFE7H
HBX_CPYLEN EQU 0FFE8H
;
; HBIOS disk commands
;
HB_DIOREAD EQU 13H
HB_DIOWRITE EQU 14H
CSEG

View File

@@ -11,9 +11,8 @@
COMMON /BANK2/
ENDIF
; This module creates a RAM Drive using the available memory (if available)
; above the TPA and possible System banks. For a banked system, the minimum
; needed is a 64k Main TPA and a 32k System Bank.
; This module implements the HBIOS RAM disk driver by using the
; RomWBW disk interface.
;.....
; Select the RAM Drive. This routine performs any setup required in a select.
@@ -22,70 +21,28 @@ SELRAM: JP SETPARMS ; No action locally.
;.....
; Read a 128-byte logical sector from the RAM Drive to main memory.
; This routine uses the HSTxxx values from the base BIOS routines.
RAMRD: OR 0FFH ; Set Read flag (non-0)
JR RamRW ; ..go to common code
RAMRD:
LD B,HB_DIOREAD ; HBIOS READ
JR RAMIO ; READ/WRITE COMMON CODE
;.....
; Write a 128-byte logical sector from main memory to the RAM Drive.
; This routine uses the HSTxxx values from the base BIOS routines.
RAMWR: XOR A ; Set Write flag with 0, Read w/AFH
RAMWR:
XOR A ; Set Write flag with 0, Read w/AFH
LD (HSTWRT),A ; clear pending write flag
;..fall thru to common code..
;
LD B,HB_DIOWRITE ; HBIOS WRITE
JR RAMIO ; READ/WRITE COMMON CODE
; The following performs calculations for the proper address and bank, sets
; the DMA block and executes the Move to/from the Host Buffer.
RamRW:
PUSH AF ; Save R/W flag for later
; BUILD TOTAL BYTE OFFSET INTO A:HL
XOR A,A ; A STARTS OUT ZERO
LD HL,(HSTTRK) ; HL STARTS WITH TRACK NUM
LD H,0 ; ONLY LSB IS NEEDED (INIRAMD PASSES INVALID MSB)
LD B,5 ; MULT BY 32 SECTORS PER TRACK
RAMWR1:
ADD HL,HL ; DOUBLE VALUE
ADC A,A ; ... INCLUDING A WITH CARRY
DJNZ RAMWR1 ; LOOP 5 TIMES FOR MULT BY 32
LD DE,(HSTSEC) ; SECTOR VALUE TO 3 (ONE BYTE)
LD D,0 ; CLEAR MSB SINCE HSTSEC IS JUST ONE BYTE
ADD HL,DE ; ADD TO WORKING VALUE
ADC A,0 ; HANDLE POSSIBLE CARRY
LD B,7 ; MULT BY 128 BYTES PER SECTOR
RAMWR2:
ADD HL,HL ; DOUBLE VALUE
ADC A,A ; ... INCLUDING A WITH CARRY
DJNZ RAMWR2 ; LOOP 7 TIME FOR MULT BY 128
; CONVERT BYTE OFFSET IN A:HL TO BANK(A):OFFSET(HL)
SLA H ; ROTATE HIGH BIT OF H INTO CF
RL A ; ROTATE CF INTO LOW BIT OF A
SRL H ; FIX H (ROTATE BACK W/ ZERO INTO HIGH BIT)
; ADJUST FOR STARTING RAM BANK
LD C,A ; BANK TO C
LD A,(RAMBNK) ; GET STARTING RAM BANK NUM
ADD A,C ; COMBINE TO GET ACTUAL SOURCE BANK NUM
; SETUP FOR INTERBANK COPY
LD C,A ; SOURCE BANK TO C
LD B,BID_HB ; DEST BANK TO B (HSTBUF IN HBIOS)
;LD A,(HB_BNKBIOS) ; DEST BANK (HSTBUF IN HBIOS)
;LD B,A ; PUT IN B
LD DE,(HB_DSKBUF) ; DEST ADDRESS TO DE; HL ALREADY HAS SOURCE ADDRESS
; REVERSE VALUES IF WRITE
POP AF ; Read or Write?
JR NZ,RAMWR3 ; ..jump if Read
EX DE,HL ; Else swap things around
LD A,C
LD C,B
LD B,A
RAMWR3:
; PERFORM THE COPY
CALL XMOVE ; SET BANKS FOR COPY
LD BC,128 ; SET LENGTH OF COPY (ONE SECTOR)
CALL MOVE ; DO THE COPY
; CLEAN UP AND RETURN
XOR A ; SIGNAL SUCCESS
RET ; AND RETURN
;.....
; Common code to setup RomWBW disk access
;
RAMIO:
LD HL,(HSTDPH) ; GET ACTIVE DPH PTR
DEC HL ; ADJUST TO POINT TO BPBIOS LOGICAL UNIT
LD C,(HL) ; USE AS HBIOS DISK UNIT NUMBER
JP HB_DSKIO ; DO THE REST IN HARD DISK DRIVER
;================== End of RAM Disk Code ====================

View File

@@ -27,7 +27,11 @@ HB_IODEV EQU 80H ; 0x80 is current HBIOS console
HB_MDRAM EQU 0 ; HBIOS Disk Unit #0 is usually the RAM Disk
HB_MDROM EQU 1 ; HBIOS Disk Unit #1 is usually the ROM Disk
;
; Set HB_HDDEVN to appropriate HBIOS disk device numbers
; Map BPBIOS logical drive numbers (0-2) to HBIOS physical disk units
; HB_HDDEVn values map to HDRVn (see icfg-ww).
;
; The values below will be the default mapping. They can be changed
; using BPCNFG *Physical Drive* configuration.
;
; If the RomWBW system has no floppy drives, then the hard disk units
; will start right after the memory disk units. So, the first hard disk

View File

@@ -115,17 +115,17 @@ DVRVCT: DEFW SELERR ; Driver 0 Select
DEFW HDREAD ; Driver 2 Read
DEFW HDWRIT ; Driver 2 Write
ENDIF ; harddsk
; IF [RAMDSK AND NOT HARDDSK]
; DEFW SELERR ; Driver 2 Select (Dummy if No Hard Drive)
; DEFW ISTRUE ; Driver 2 Read
; DEFW ISTRUE ; Driver 2 Write
; ENDIF ;ramdsk & not harddsk
IF [RAMDSK AND NOT HARDDSK]
DEFW SELERR ; Driver 2 Select (Dummy if No Hard Drive)
DEFW ISTRUE ; Driver 2 Read
DEFW ISTRUE ; Driver 2 Write
ENDIF ;ramdsk & not harddsk
; IF RAMDSK
; DEFW SELHD ; Driver 3 Select (RAM Drive)
; DEFW HDREAD ; Driver 3 Read
; DEFW HDWRIT ; Driver 3 Write
; ENDIF ;ramdsk
IF RAMDSK
DEFW SELRAM ; Driver 3 Select (RAM Drive)
DEFW RAMRD ; Driver 3 Read
DEFW RAMWR ; Driver 3 Write
ENDIF ;ramdsk
SELERR: LD HL,0 ; Send null DPH pointer back to caller
RET

View File

@@ -882,12 +882,12 @@ table which will be recognized by the application to find the FAT
filesystem.
Although RomWBW-style CP/M media does not know anything about
partition tables, it is entirely possible to have media that has both
CP/M and FAT file systems on it. This is accomplished by creating a
FAT filesystem on the media that starts on a track beyond the last
track used by CP/M. Each CP/M slice on a media will occupy 8,320K
(16,640 sectors). So, make sure to start your FAT partition beyond (<
slice count> * 8,320K) or (<slice count * 16,640 sectors).
partition tables, it is entirely possible to have media that
has both CP/M and FAT file systems on it. This is accomplished
by creating a FAT filesystem on the media that starts on a track
beyond the last track used by CP/M. Each CP/M slice can occupy
up to 8MB. So, make sure to start your FAT partition beyond
(slice count) * 9MB.
The application infers whether you are attempting to reference a FAT
or CP/M filesystem via the drive specifier (char before ':'). A
@@ -899,8 +899,7 @@ assumed. For example:
| `2:README.TXT` refers to FAT file "README.TXT" on disk unit #2
| `C:README.TXT` refers to CP/M file "README.TXT" on CP/M drive C
| `README.TXT` refers to CP/M file "README.TXT" on the current CP/M
drive
| `README.TXT` refers to CP/M file "README.TXT" on the current CP/M drive
Files with SYS, HIDDEN, or R/O only attributes are not given any
special treatment. Such files are found and processed like any other
@@ -915,6 +914,8 @@ copy the file to the desired user area.
Accessing FAT filesystems on a floppy requires the use of RomWBW HBIOS
v2.9.1-pre.13 or greater.
Only the first 8 RomWBW disk units (0-7) can be referenced.
Files written are not verified.
Wildcard matching in FAT filesystems is a bit unusual as implemented by
@@ -935,7 +936,7 @@ characters. The FAT application will block any attempt to create a
file on the CP/M filesystem containing any of these prohibited
characters:
| `< > . , ; : = ? * [ ] _ % | ( ) / \`
| `< > . , ; : ? * [ ] |/ \`
The operation will be aborted with "`Error: Invalid Path Name`" if such
a filename character is encountered.

View File

@@ -1,4 +1,4 @@
$define{doc_ver}{Version 3.4}$
$define{doc_ver}{Version 3.5}$
$define{doc_product}{RomWBW}$
$define{doc_root}{https://github.com/wwarthen/RomWBW/raw/dev/Doc}$
$ifndef{doc_title}$ $define{doc_title}{Document Title}$ $endif$

View File

@@ -187,6 +187,33 @@ please let me know if I missed you!
BASIC Compiler, Microsoft Fortran Compiler, and a Games
compendium.
* Martin R has provided substantial help reviewing and improving the
User Guide.
* Jacques Pelletier has contributed the DS1501 RTC driver code.
* Jose Collado has contributed enhancements to the TMS driver
including compatibility with standard TMS register configuration.
* Kevin Boone has contributed a generic HBIOS date/time utility (WDATE).
* Matt Carroll has contributed a fix to XM.COM that corrects the
port specification when doing a send.
* Dean Jenkins enhanced the build process to accommodate the
Raspberry Pi 4.
* Tom Plano has contributed a new utility (HTALK) to allow talking
directly to HBIOS COM ports.
* Lars Nelson has contributed several generic utilities such as
a universal (OS agnostic) UNARC application.
* Dylan Hall added support for specifying a secondary console.
* Bill Shen has contributed boot loaders for several of his
systems.
Contributions of all kinds to RomWBW are very welcome.
# Licensing

View File

@@ -2640,6 +2640,7 @@ therefore, globally available.
| XM | XModem file transfer program adapted to hardware. Automatically uses primary serial port on system. |
| FLASH | Will Sowerbutts' in-situ ROM programming utility. |
| FDISK80 | John Coffman's Z80 hard disk partitioning tool. See documentation in Doc directory. |
| FAT | Access MS-DOS FAT filesystems from RomWBW (based on FatFs). |
| TALK | Direct console I/O to a specified character device. |
| RTC | Manage and test the Real Time Clock hardware. |
| TIMER | Display value of running periodic system timer. |
@@ -2647,12 +2648,12 @@ 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.
directory of the distribution. They are also included on the
floppy disk and hard disk images.
| **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. |
# FAT Filesystem
@@ -3624,8 +3625,8 @@ update your ROM. The following is a typical example of transferring
ROM image using XModem and flashing the chip in-situ.
**NOTE**: The FLASH utility **can not** determine the type of your
ROM chip if it is write protected. Additionally, it has not way to
even determine if it is write protected. If the FLASH utility
ROM chip if it is write protected. Additionally, it has no way to
determine if it is write protected. If the FLASH utility
indicates it does not recognize your ROM chip, check to ensure the
chip is not write protected.
@@ -3713,6 +3714,7 @@ them over any older versions of the app on your disk:
* TALK.COM
* RTC.COM
* TIMER.COM
* FAT.COM
For example: `B>COPY ASSIGN.COM C:`
@@ -3722,9 +3724,13 @@ 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.
* FAT.COM
* TUNE.COM
The files normally contained on the standard ROM Disk is based on a 512K
ROM. If your system has a smaller size ROM, then not all of these
files will be included on your ROM Disk. You will need to copy them to
your system from the /Binary/Apps folder of the RomWBW distribution.
**WARNING**: If you run a RomWBW-specific application that is not
the appropriate for the version of RomWBW you are running, the
application will generate an error message and abort.
@@ -3908,6 +3914,9 @@ please let me know if I missed you!
* Dylan Hall added support for specifying a secondary console.
* Bill Shen has contributed boot loaders for several of his
systems.
Contributions of all kinds to RomWBW are very welcome.
# Licensing

View File

@@ -139,7 +139,7 @@ if %ROMSize% gtr 0 (
copy /b hbios_rom.bin + osimg.bin + osimg1.bin + osimg2.bin %ROMName%.upd || exit /b
copy /b hbios_app.bin + osimg_small.bin %ROMName%.com || exit /b
) else (
copy /b hbios_rom.bin + osimg.bin + osimg1.bin + osimg2.bin + ..\RomDsk\ram%ROMSize%_wbw.dat %ROMName%.rom || exit /b
copy /b hbios_rom.bin + osimg.bin + osimg1.bin + osimg2.bin + ..\RomDsk\ram%RAMSize%_wbw.dat %ROMName%.rom || exit /b
copy /b hbios_rom.bin + osimg.bin + osimg1.bin + osimg2.bin %ROMName%.upd || exit /b
copy /b hbios_app.bin + osimg_small.bin %ROMName%.com || exit /b
)

View File

@@ -6,6 +6,7 @@ set -e
export ROM_PLATFORM
export ROM_CONFIG
export ROMSIZE
export RAMSIZE
export CPUFAM
if [ "${ROM_PLATFORM}" == "dist" ] ; then
@@ -114,4 +115,4 @@ fi
#echo OBJECTS=${OBJECTS}
make ROM_PLATFORM=${ROM_PLATFORM} ROM_CONFIG=${ROM_CONFIG} ROMSIZE=${ROMSIZE}
make ROM_PLATFORM=${ROM_PLATFORM} ROM_CONFIG=${ROM_CONFIG} ROMSIZE=${ROMSIZE} RAMSIZE=${RAMSIZE}

View File

@@ -26,7 +26,7 @@
;
#include "cfg_rcz280.asm"
;
CPUOSC .SET 12000000 ; CPU OSC FREQ IN MHZ
CPUOSC .SET 24000000 ; CPU OSC FREQ IN MHZ
INTMODE .SET 1 ; INTERRUPTS: 0=NONE, 1=MODE 1, 2=MODE 2
CRTACT .SET FALSE ; ACTIVATE CRT (VDU,CVDU,PROPIO,ETC) AT STARTUP
;

View File

@@ -26,7 +26,7 @@
;
#include "cfg_rcz280.asm"
;
CPUOSC .SET 12000000 ; CPU OSC FREQ IN MHZ
CPUOSC .SET 24000000 ; CPU OSC FREQ IN MHZ
INTMODE .SET 3 ; INTERRUPTS: 0=NONE, 1=MODE 1, 2=MODE 2
CRTACT .SET FALSE ; ACTIVATE CRT (VDU,CVDU,PROPIO,ETC) AT STARTUP
;

View File

@@ -50,7 +50,7 @@ MDROM .SET TRUE ; MD: ENABLE ROM DISK
MDRAM .SET TRUE ; MD: ENABLE RAM DISK
;
Z2UENABLE .SET TRUE ; Z2U: ENABLE Z280 UART SERIAL DRIVER (Z2U.ASM)
Z2UOSC .SET (CPUOSC / 8) ; Z2U: OSC FREQUENCY IN MHZ
Z2UOSC .SET (CPUOSC / 16) ; Z2U: OSC FREQUENCY IN MHZ
Z2U0HFC .SET TRUE ; Z2U0: ENABLE HARDWARE FLOW CONTROL
UARTENABLE .SET TRUE ; UART: ENABLE 8250/16550-LIKE SERIAL DRIVER (UART.ASM)
ACIAENABLE .SET FALSE ; ACIA: ENABLE MOTOROLA 6850 ACIA DRIVER (ACIA.ASM)

View File

@@ -50,7 +50,7 @@ MDROM .SET FALSE ; MD: ENABLE ROM DISK
MDRAM .SET TRUE ; MD: ENABLE RAM DISK
;
Z2UENABLE .SET TRUE ; Z2U: ENABLE Z280 UART SERIAL DRIVER (Z2U.ASM)
Z2UOSC .SET (CPUOSC / 8) ; Z2U: OSC FREQUENCY IN MHZ
Z2UOSC .SET (CPUOSC / 16) ; Z2U: OSC FREQUENCY IN MHZ
Z2U0HFC .SET TRUE ; Z2U0: ENABLE HARDWARE FLOW CONTROL
UARTENABLE .SET TRUE ; UART: ENABLE 8250/16550-LIKE SERIAL DRIVER (UART.ASM)
ACIAENABLE .SET FALSE ; ACIA: ENABLE MOTOROLA 6850 ACIA DRIVER (ACIA.ASM)

View File

@@ -34,8 +34,8 @@ CRTACT .SET FALSE ; ACTIVATE CRT (VDU,CVDU,PROPIO,ETC) AT STARTUP
FPLED_ENABLE .SET TRUE ; FP: ENABLES FRONT PANEL LEDS
FPSW_ENABLE .SET TRUE ; FP: ENABLES FRONT PANEL SWITCHES
;
RAMSIZE .SET 512 ; SIZE OF RAM IN KB (MUST MATCH YOUR HARDWARE!!!)
ROMSIZE .SET 256 ; SIZE OF ROM IN KB (MUST MATCH YOUR HARDWARE!!!)
RAMSIZE .SET 1536 ; SIZE OF RAM IN KB (MUST MATCH YOUR HARDWARE!!!)
ROMSIZE .SET 512 ; SIZE OF ROM IN KB (MUST MATCH YOUR HARDWARE!!!)
MEMMGR .SET MM_ZRC ; MEMORY MANAGER: MM_[SBC|Z2|N8|Z180]
;
UARTENABLE .SET TRUE ; UART: ENABLE 8250/16550-LIKE SERIAL DRIVER (UART.ASM)

View File

@@ -53,6 +53,7 @@ ROMNAME=${ROM_PLATFORM}_${ROM_CONFIG}
# $(info ROM_PLATFORM=$(ROM_PLATFORM))
# $(info ROM_CONFIG=$(ROM_CONFIG))
# $(info ROMSIZE=$(ROMSIZE))
# $(info RAMSIZE=$(RAMSIZE))
# $(info ROMNAME=$(ROMNAME))
# $(info CPUFAM=$(CPUFAM))
# $(info TASM=$(TASM))
@@ -81,7 +82,7 @@ $(OBJECTS) : $(ROMDEPS)
cat hbios_rom.bin osimg.bin osimg1.bin osimg2.bin >$(ROMNAME).upd ; \
cat hbios_app.bin osimg_small.bin > $(ROMNAME).com ; \
else \
cat hbios_rom.bin osimg.bin osimg1.bin osimg2.bin >$(ROMNAME).rom ; \
cat hbios_rom.bin osimg.bin osimg1.bin osimg2.bin ../RomDsk/ram$(RAMSIZE)_wbw.dat >$(ROMNAME).rom ; \
cat hbios_rom.bin osimg.bin osimg1.bin osimg2.bin >$(ROMNAME).upd ; \
cat hbios_app.bin osimg_small.bin > $(ROMNAME).com ; \
fi \

132
Source/HBIOS/Makefile.new Normal file
View File

@@ -0,0 +1,132 @@
DIST_OBJECTS := \
DYNO_std MK4_std N8_std RCZ180_ext RCZ180_nat RCZ180_z1rcc \
RCZ280_ext RCZ280_nat RCZ280_zz80mb RCZ280_zzrcc RCZ280_zzrcc_ram \
RCZ80_std RCZ80_kio RCZ80_easy RCZ80_tiny RCZ80_skz RCZ80_zrc \
RCZ80_zrc_ram RCZ80_zrc512 RPH_std SBC_std SBC_simh MBC_std \
DUO_std SCZ180_sc126 SCZ180_sc130 SCZ180_sc131 SCZ180_sc140 \
SCZ180_sc503 SCZ180_sc700 S100_std UNA_std Z80RETRO_std \
ZETA_std ZETA2_std HEATH_std EPITX_std
# RCZ80_mt RCZ80_duart MON_std
OBJECTS := $(DIST_OBJECTS)
OBJECTS := SBC_std MK4_std UNA_std S100_std
OBJECTS := $(OBJECTS:=.rom) $(OBJECTS:=.com) $(OBJECTS:=.upd)
OBJECTS := $(filter-out UNA_%.com UNA_%.upd,$(OBJECTS))
DEST = ../../Binary
TOOLS = ../../Tools
OTHERS := *.img *.rom *.com *.upd *.bin *.hex cpm.sys zsys.sys build.inc
OTHERS += *.build.inc font*.asm *.dat hbios_env.sh
FONTS := font8x11c.asm font8x11u.asm font8x16c.asm font8x16u.asm
FONTS += font8x8c.asm font8x8u.asm fontcgac.asm fontcgau.asm
FONTS += fontvgarcc.asm fontvgarcu.asm
BUILD_COMPONENT = \
cp $(*F).build.inc build.inc ; \
$(TASM) $(TASMFLAGS) $< $@ $(@:.bin=.lst) ; \
rm build.inc
SHELL=/bin/bash
include $(TOOLS)/Makefile.inc
font%.asm:
cp ../Fonts/$@ .
camel80.bin:
cp ../Forth/$@ .
tastybasic.bin:
cp ../TastyBasic/src/$@ .
s100mon.bin:
$(ZXCC) $(CPM)/SLR180 -s100mon/FH
$(ZXCC) $(CPM)/MLOAD25 -s100mon.bin=s100mon
%.build.inc:
echo $@
echo "; RomWBW Configured for $(*F) at $$(date +%Y-%m-%d)" >>$@
echo ";" >>$@
echo "#DEFINE TIMESTAMP \"$$(date +%Y-%m-%d)\"" >>$@
echo "#DEFINE CONFIG \"$(*F)\"" >>$@
echo ";" >>$@
echo "#INCLUDE \"Config/$(*F).asm\"" >>$@
echo ";" >>$@
cat $@
%.usrrom.bin: usrrom.asm %.build.inc ; $(BUILD_COMPONENT)
%.updater.bin: updater.asm %.build.inc ; $(BUILD_COMPONENT)
%.eastaegg.bin: eastaegg.asm %.build.inc ; $(BUILD_COMPONENT)
%.game.bin: game.asm %.build.inc ; $(BUILD_COMPONENT)
%.nascom.bin: nascom.asm %.build.inc ; $(BUILD_COMPONENT)
%.romldr.bin: romldr.asm %.build.inc ; $(BUILD_COMPONENT)
%.dbgmon.bin: dbgmon.asm %.build.inc ; $(BUILD_COMPONENT)
%.hbios_env.com: hbios_env.asm %.build.inc
cp $(*F).build.inc build.inc
$(TASM) $(TASMFLAGS) -dBASH $< $@ $(@:.com=.lst)
rm build.inc
%.hbios_env.sh: %.hbios_env.com
$(ZXCC) $< >$@
%.hbios_rom.bin: hbios.asm %.build.inc %.hbios_env.sh $(FONTS)
. ./$(*F).hbios_env.sh ; \
TARGETS=("" "z80" "hd64180" "z280") ; \
CPU=$${TARGETS[$$CPUFAM]} ; \
cp $(*F).build.inc build.inc ; \
$(BINDIR)/uz80as -t $$CPU -dROMBOOT $< $@ $(@:.bin=.lst) ; \
srec_cat $@ -Binary -Crop 0 0x7FFF -Checksum_Negative_Big_Endian 0x7FFF 1 1 -o $@ -Binary ; \
rm build.inc
%.hbios_app.bin: hbios.asm %.build.inc %.hbios_env.sh $(FONTS)
. ./$(*F).hbios_env.sh ; \
TARGETS=("" "z80" "hd64180" "z280") ; \
CPU=$${TARGETS[$$CPUFAM]} ; \
cp $(*F).build.inc build.inc ; \
$(BINDIR)/uz80as -t $$CPU -dAPPBOOT $< $@ $(@:.bin=.lst) ; \
rm build.inc
UNA_%.osimg.bin: UNA_%.romldr.bin UNA_%.dbgmon.bin
cat UNA_$(*F).romldr.bin UNA_$(*F).dbgmon.bin ../ZSDOS/zsys_una.bin ../CPM22/cpm_una.bin >$@
srec_cat $@ -Binary -Crop 0 0x7FFF -Checksum_Negative_Big_Endian 0x7FFF 1 1 -o $@ -Binary
%.osimg.bin: %.romldr.bin %.dbgmon.bin
cat $(*F).romldr.bin $(*F).dbgmon.bin ../ZSDOS/zsys_wbw.bin ../CPM22/cpm_wbw.bin >$@
srec_cat $@ -Binary -Crop 0 0x7FFF -Checksum_Negative_Big_Endian 0x7FFF 1 1 -o $@ -Binary
%.osimg_small.bin: %.romldr.bin %.dbgmon.bin
cat $(*F).romldr.bin $(*F).dbgmon.bin ../ZSDOS/zsys_wbw.bin >$@
%.osimg1.bin: camel80.bin %.nascom.bin tastybasic.bin %.game.bin %.eastaegg.bin netboot.mod %.updater.bin %.usrrom.bin
cat camel80.bin $(*F).nascom.bin tastybasic.bin $(*F).game.bin $(*F).eastaegg.bin netboot.mod $(*F).updater.bin $(*F).usrrom.bin >$@
srec_cat $@ -Binary -Crop 0 0x7FFF -Checksum_Negative_Big_Endian 0x7FFF 1 1 -o $@ -Binary
S100_%.imgpad2.bin: s100mon.bin
cp $< $@
srec_cat $@ -Binary -Crop 0 0x7FFF -Checksum_Negative_Big_Endian 0x7FFF 1 1 -o $@ -Binary
%.imgpad2.bin: imgpad2.asm %.build.inc
cp $(*F).build.inc build.inc
$(TASM) $(TASMFLAGS) $< $@ $(@:.bin=.lst)
srec_cat $@ -Binary -Crop 0 0x7FFF -Checksum_Negative_Big_Endian 0x7FFF 1 1 -o $@ -Binary
rm build.inc
UNA_%.rom: UNA_%.osimg.bin UNA_%.hbios_env.sh
. ./UNA_$(*F).hbios_env.sh ; \
cat ../UBIOS/UNA-BIOS.BIN UNA_$(*F).osimg.bin ../UBIOS/FSFAT.BIN ../RomDsk/rom$${ROMSIZE}_una.dat >$@ ; \
cp UNA_$(*F).osimg.bin $(DEST)/UNA_WBW_SYS.bin ; \
cp ../RomDsk/rom$${ROMSIZE}_una.dat $(DEST)/UNA_WBW_ROM$${ROMSIZE}.bin
%.rom: %.hbios_rom.bin %.osimg.bin %.osimg1.bin %.imgpad2.bin %.hbios_env.sh
. ./$(*F).hbios_env.sh ; \
if [ $$ROMSIZE -gt 0 ] ; then RD="rom$$ROMSIZE" ; else RD="ram$$RAMSIZE" ; fi ; \
cat $(*F).hbios_rom.bin $(*F).osimg.bin $(*F).osimg1.bin $(*F).imgpad2.bin ../RomDsk/$${RD}_wbw.dat >$@
%.com: %.hbios_app.bin %.osimg_small.bin
cat $(*F).hbios_app.bin $(*F).osimg_small.bin >$@
%.upd: %.hbios_rom.bin %.osimg.bin %.osimg1.bin %.imgpad2.bin
cat $(*F).hbios_rom.bin $(*F).osimg.bin $(*F).osimg1.bin $(*F).imgpad2.bin >$@

View File

@@ -178,26 +178,13 @@ ACIA1_INT:
;
ACIA_INTRCV:
; CHECK TO SEE IF SOMETHING IS ACTUALLY THERE
CALL DELAY
LD C,(IY+3) ; CMD/STAT PORT TO C
IN A,(C) ; GET STATUS
LD B,A
AND $01 ; ISOLATE READY BIT
JR NZ,ACIA_INTRCV1
;
#IF FALSE
CALL PC_LT
LD A,B
CALL PRTHEXBYTE
INC C
IN A,(C)
CALL PRTHEXBYTE
CALL PC_GT
OR $FF
#ENDIF
;
RET
RRA ; READY BIT TO CF
JR C,ACIA_INTRCV1 ; RECEIVE CHAR
XOR A ; INT NOT HANDLED, CLEAR ZF
RET ; ... AND RETURN
;
ACIA_INTRCV1:
; RECEIVE CHARACTER INTO BUFFER
@@ -285,9 +272,9 @@ ACIA_IN:
ACIA_IN:
CALL ACIA_IST ; SEE IF CHAR AVAILABLE
JR Z,ACIA_IN ; LOOP UNTIL SO
HB_DI ; AVOID COLLISION WITH INT HANDLER
LD L,(IY+6) ; SET HL TO
LD H,(IY+7) ; ... START OF BUFFER STRUCT
HB_DI ; AVOID COLLISION WITH INT HANDLER
LD A,(HL) ; GET COUNT
DEC A ; DECREMENT COUNT
LD (HL),A ; SAVE UPDATED COUNT
@@ -322,8 +309,8 @@ ACIA_IN2:
LD (HL),E ; SAVE UPDATED TAIL PTR
INC HL
LD (HL),D
LD E,C ; MOVE CHAR TO RETURN TO E
HB_EI ; INTERRUPTS OK AGAIN
LD E,C ; MOVE CHAR TO RETURN TO E
XOR A ; SIGNAL SUCCESS
RET ; AND DONE
;

View File

@@ -1257,7 +1257,7 @@ ANSI_SGR_BG:
;
;
;......................................................................................
; ### JLC Mod - Implement new Private Sequence to call VDAINI and Change Default Colors
; ### JLC Mod - Implement new Private Sequence to call VDASCO and Change Default Colors
;
ANSI_SSC: ; SET SCREEN COLOR (CUSTOM EXTENSION)
LD A,(ANSI_PARIDX) ; GET CURRENT PARM INDEX

View File

@@ -28,7 +28,7 @@ BOOT_DELAY .EQU 0 ; FIXED BOOT DELAY IN SECONDS PRIOR TO CONSOLE OUTPUT
;
CPUSPDCAP .EQU SPD_FIXED ; CPU SPEED CHANGE CAPABILITY SPD_FIXED|SPD_HILO
CPUSPDDEF .EQU SPD_HIGH ; CPU SPEED DEFAULT SPD_UNSUP|SPD_HIGH|SPD_LOW
CPUOSC .EQU 12000000 ; CPU OSC FREQ IN MHZ
CPUOSC .EQU 24000000 ; CPU OSC FREQ IN MHZ
INTMODE .EQU 0 ; INTERRUPTS: 0=NONE, 1=MODE 1, 2=MODE 2, 3=MODE 3 (Z280)
DEFSERCFG .EQU SER_115200_8N1 | SER_RTS ; DEFAULT SERIAL LINE CONFIG (SEE STD.ASM)
;

View File

@@ -279,8 +279,7 @@ DS1501RTC_GETBYT:
LD E,A
;
; Return success
XOR
;
XOR A
RET
;
; RTC Set Byte

View File

@@ -92,6 +92,8 @@ MODCNT .SET MODCNT + 1
;
;
;
#DEFINE ALIGN(N) .FILL ((($+(N-1)) & ~(N-1)) - $)
;
#IF (FPLED_ENABLE)
#DEFINE DIAG(N) PUSH AF
#DEFCONT \ LD A,N
@@ -1245,10 +1247,8 @@ BOOTWAIT:
;
JR Z280_INITZ ; JUMP TO CODE CONTINUATION
;
#IF (($ % 2) == 1)
; WORD ALIGN THE TABLE
.DB 0
#ENDIF
; WORD ALIGN THE PDR TABLE
ALIGN(2)
;
Z280_BOOTPDRTBL:
; LOWER 32 K (BANKED)
@@ -2094,6 +2094,15 @@ HB_CPU2:
HB_CPU3:
#ENDIF
;
#IF (CPUFAM == CPU_Z280)
;
; Z280 ALWAYS HALVES THE INPUT OSCILLATOR TO DERIVE
; ACTUAL CPU SPEED.
; ADJUST HL TO REFLECT HALF SPEED OPERATION
SRL H ; ADJUST HL ASSUMING
RR L ; HALF SPEED OPERATION
#ENDIF
;
; HL SHOULD NOW HAVE FINAL CPU RUNNING SPEED IN KHZ.
; UPDATE CB_CPUMHZ/CB_CPUKHZ WITH THIS VALUE.
;
@@ -5223,12 +5232,12 @@ SYS_INTSET1:
; HERE IN AN EFFORT TO MINIMIZE WASTED SPACE. THERE SHOULD BE
; A LITTLE LESS THAN 4K OF CODE ABOVE.
;
Z280_IVT_SLACK .EQU $1000 - ($ & $FFF)
.ECHO "Z280 IVT SLACK occupies "
.ECHO Z280_IVT_SLACK
.ECHO " bytes.\n"
;.FILL $1000 - ($ & $FFF) ; MUST BE 4K ALIGNED!
.FILL Z280_IVT_SLACK ; MUST BE 4K ALIGNED!
Z280_IVT_SLACK_ORG .EQU $
ALIGN($1000)
Z280_IVT_SLACK .EQU $ - Z280_IVT_SLACK_ORG
.ECHO "Z280 IVT SLACK occupies "
.ECHO Z280_IVT_SLACK
.ECHO " bytes.\n"
;
Z280_IVT:
.DW 0, 0 ; RESERVED
@@ -7865,8 +7874,9 @@ HB_WRKBUF .FILL 512,0 ; INTERNAL DISK BUFFER
;
#IFDEF MG014_MAP
;
.FILL 32 - ($ & (32 - 1)) ; ALIGN TO 32 BYTE BOUNDARY
; ALIGN TO 32 BYTE BOUNDARY
ALIGN($20)
;
MG014_STATMAPLO:
; LOWER NIBBLE
.DB $08 ; 00

View File

@@ -24,12 +24,9 @@
;
; Print all desired config values...
;
#if (ROMSIZE > 0)
prtval("ROMSIZE$", ROMSIZE)
#else
prtval("ROMSIZE$", RAMSIZE)
#endif
prtval("CPUFAM$", CPUFAM)
prtval("ROMSIZE$", ROMSIZE)
prtval("RAMSIZE$", RAMSIZE)
;
ret
;

View File

@@ -422,6 +422,39 @@ SER_1843200_8N1 .EQU SER_BAUD1843200 | SER_DATA8 | SER_PARNONE | SER_STOP1
SER_3686400_8N1 .EQU SER_BAUD3686400 | SER_DATA8 | SER_PARNONE | SER_STOP1
SER_7372800_8N1 .EQU SER_BAUD7372800 | SER_DATA8 | SER_PARNONE | SER_STOP1
;
SER_75_8N2 .EQU SER_BAUD75 | SER_DATA8 | SER_PARNONE | SER_STOP2
SER_150_8N2 .EQU SER_BAUD150 | SER_DATA8 | SER_PARNONE | SER_STOP2
SER_300_8N2 .EQU SER_BAUD300 | SER_DATA8 | SER_PARNONE | SER_STOP2
SER_600_8N2 .EQU SER_BAUD600 | SER_DATA8 | SER_PARNONE | SER_STOP2
SER_1200_8N2 .EQU SER_BAUD1200 | SER_DATA8 | SER_PARNONE | SER_STOP2
SER_2400_8N2 .EQU SER_BAUD2400 | SER_DATA8 | SER_PARNONE | SER_STOP2
SER_4800_8N2 .EQU SER_BAUD4800 | SER_DATA8 | SER_PARNONE | SER_STOP2
SER_9600_8N2 .EQU SER_BAUD9600 | SER_DATA8 | SER_PARNONE | SER_STOP2
SER_19200_8N2 .EQU SER_BAUD19200 | SER_DATA8 | SER_PARNONE | SER_STOP2
SER_38400_8N2 .EQU SER_BAUD38400 | SER_DATA8 | SER_PARNONE | SER_STOP2
SER_76800_8N2 .EQU SER_BAUD76800 | SER_DATA8 | SER_PARNONE | SER_STOP2
SER_153600_8N2 .EQU SER_BAUD153600 | SER_DATA8 | SER_PARNONE | SER_STOP2
SER_307200_8N2 .EQU SER_BAUD307200 | SER_DATA8 | SER_PARNONE | SER_STOP2
SER_614400_8N2 .EQU SER_BAUD614400 | SER_DATA8 | SER_PARNONE | SER_STOP2
SER_1228800_8N2 .EQU SER_BAUD1228800 | SER_DATA8 | SER_PARNONE | SER_STOP2
SER_2457600_8N2 .EQU SER_BAUD2457600 | SER_DATA8 | SER_PARNONE | SER_STOP2
SER_225_8N2 .EQU SER_BAUD225 | SER_DATA8 | SER_PARNONE | SER_STOP2
SER_450_8N2 .EQU SER_BAUD450 | SER_DATA8 | SER_PARNONE | SER_STOP2
SER_900_8N2 .EQU SER_BAUD900 | SER_DATA8 | SER_PARNONE | SER_STOP2
SER_1800_8N2 .EQU SER_BAUD1800 | SER_DATA8 | SER_PARNONE | SER_STOP2
SER_3600_8N2 .EQU SER_BAUD3600 | SER_DATA8 | SER_PARNONE | SER_STOP2
SER_7200_8N2 .EQU SER_BAUD7200 | SER_DATA8 | SER_PARNONE | SER_STOP2
SER_14400_8N2 .EQU SER_BAUD14400 | SER_DATA8 | SER_PARNONE | SER_STOP2
SER_28800_8N2 .EQU SER_BAUD28800 | SER_DATA8 | SER_PARNONE | SER_STOP2
SER_57600_8N2 .EQU SER_BAUD57600 | SER_DATA8 | SER_PARNONE | SER_STOP2
SER_115200_8N2 .EQU SER_BAUD115200 | SER_DATA8 | SER_PARNONE | SER_STOP2
SER_230400_8N2 .EQU SER_BAUD230400 | SER_DATA8 | SER_PARNONE | SER_STOP2
SER_460800_8N2 .EQU SER_BAUD460800 | SER_DATA8 | SER_PARNONE | SER_STOP2
SER_921600_8N2 .EQU SER_BAUD921600 | SER_DATA8 | SER_PARNONE | SER_STOP2
SER_1843200_8N2 .EQU SER_BAUD1843200 | SER_DATA8 | SER_PARNONE | SER_STOP2
SER_3686400_8N2 .EQU SER_BAUD3686400 | SER_DATA8 | SER_PARNONE | SER_STOP2
SER_7372800_8N2 .EQU SER_BAUD7372800 | SER_DATA8 | SER_PARNONE | SER_STOP2
;
; TERMENABLE CONTROLS INCLUSION OF TERMINAL PSEUDO-DEVICE DRIVER
; IT IS SET TO TRUE BY THE INCLUSION OF ANY VDA DRIVER.
;

View File

@@ -369,7 +369,7 @@ TMS_VDASAT:
RET
TMS_VDASCO:
; ### JLC Mod - Implement Default Text Mode Colors via ANSI_VDAINI or direct HBIOS Call
; ### JLC Mod - Implement Default Text Mode Colors via ANSI_VDASCO or direct HBIOS Call
;
; Color setting is in reg D in ANSI Format as described in RomWBW System Guide
; Convert Color Format from ANSI to TMS shuffling bits arround and using

View File

@@ -216,19 +216,8 @@ UART_INIT1:
LD A,(IY+1) ; GET UART TYPE
OR A ; SET FLAGS
JR Z,UART_INIT2 ; SKIP IF ZERO (NOT DETECTED)
PUSH AF ; SAVE TYPE VALUE
CALL UART_PRTCFG ; PRINT IF NOT ZERO
POP AF ; RESTORE TYPE VALUE
BIT UART_CTSBAD,A ; CTS STALL?
JR Z,UART_INIT2 ; IF NOT, SKIP AHEAD
CALL NEWLINE ; FORMATTING
PRTS("UART$") ; FORMATTING
LD A,(IY) ; DEVICE NUM
CALL PRTDECB ; PRINT DEVICE NUM
PRTS(": $") ; FORMATTING
LD DE,UART_STR_BADCTS ; LOAD WARNING MESSAGE
CALL WRITESTR ; ... AND PRINT IT
;
;
UART_INIT2:
POP BC ; RESTORE LOOP CONTROL
INC C ; NEXT UNIT
@@ -963,6 +952,11 @@ UART_PRTCFG2:
PRTS(" AFC$")
;
UART_PRTCFG3:
BIT UART_CTSBAD,(IY+1) ; GET BADCTS BIT
JR Z,UART_PRTCFG4
PRTS(" NO_CTS!$")
;
UART_PRTCFG4:
;
XOR A
RET
@@ -1023,8 +1017,6 @@ UART_STR_16850 .DB "16850$"
;
UART_PAR_MAP .DB "NONENMNS"
;
UART_STR_BADCTS .DB "CTS STALL, HARDWARE FLOW CONTROL SUSPENDED$"
;
; WORKING VARIABLES
;
UART_DEV .DB 0 ; DEVICE NUM USED DURING INIT

View File

@@ -66,7 +66,7 @@ call BuildDisk.cmd bascomp hd wbw_hd1k || exit /b
call BuildDisk.cmd fortran hd wbw_hd1k || exit /b
call BuildDisk.cmd games hd wbw_hd1k || exit /b
if exist ..\BPBIOS\bp*.rel call BuildDisk.cmd bp hd wbw_hd1k || exit /b
if exist ..\BPBIOS\bp*.rel call BuildDisk.cmd bp hd wbw_hd1k ..\zsdos\zsys_wbw.sys || exit /b
copy hd1k_prefix.dat ..\..\Binary\ || exit /b

View File

@@ -81,7 +81,7 @@ blankhd1k:
case $@ in \
(*cpm22*) sys=../CPM22/cpm_wbw.sys;; \
(*qpm*) sys=../QPM/qpm_wbw.sys;; \
(*zsdos* | *nzcom* | *dos65*) sys=../ZSDOS/zsys_wbw.sys;; \
(*zsdos* | *nzcom* | *dos65* | *bp*) sys=../ZSDOS/zsys_wbw.sys;; \
(*cpm3*) sys=../CPM3/cpmldr.sys;; \
(*zpm3*) sys=../ZPM3/zpmldr.sys;; \
esac ; \

View File

@@ -304,7 +304,7 @@ associated config file.
At this point, the build should continue 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
review the output for any obvious errors. Normally, all errors
will cause the build to stop immediately and display an error
message in red.
@@ -3781,4 +3781,4 @@ osimg_small.bin
1 file(s) copied.
1 file(s) copied.
C:\Users\Wayne\Projects\RomWBW>
C:\Users\Wayne\Projects\RomWBW>

View File

@@ -24,27 +24,27 @@ set RomApps2=fdu format survey sysgen talk timer cpuspd
set RomApps=
copy NUL rom128_wbw.dat
copy NUL rom128_una.dat
copy NUL rom128_wbw.dat || exit /b
copy NUL rom128_una.dat || exit /b
:: MakeDisk <OutputFile> <ImageSize> <Format> <Directory> <Bios>
set RomApps=%RomApps1%
call :MakeDisk rom256_wbw wbw_rom256 ROM_256KB 0x20000 wbw
call :MakeDisk rom256_una wbw_rom256 ROM_256KB 0x20000 una
call :MakeDisk rom256_wbw wbw_rom256 ROM_256KB 0x20000 wbw || exit /b
call :MakeDisk rom256_una wbw_rom256 ROM_256KB 0x20000 una || exit /b
set RomApps=%RomApps1% %RomApps2%
call :MakeDisk rom512_wbw wbw_rom512 ROM_512KB 0x60000 wbw
call :MakeDisk rom512_una wbw_rom512 ROM_512KB 0x60000 una
call :MakeDisk rom512_wbw wbw_rom512 ROM_512KB 0x60000 wbw || exit /b
call :MakeDisk rom512_una wbw_rom512 ROM_512KB 0x60000 una || exit /b
call :MakeDisk rom1024_wbw wbw_rom1024 ROM_1024KB 0xE0000 wbw
call :MakeDisk rom1024_una wbw_rom1024 ROM_1024KB 0xE0000 una
call :MakeDisk rom1024_wbw wbw_rom1024 ROM_1024KB 0xE0000 wbw || exit /b
call :MakeDisk rom1024_una wbw_rom1024 ROM_1024KB 0xE0000 una || exit /b
call :MakeDisk ram512_wbw wbw_ram512 RAM_512KB 0x40000 wbw
call :MakeDisk ram512_wbw wbw_ram512 RAM_512KB 0x40000 wbw || exit /b
call :MakeDisk ram1024_wbw wbw_ram1024 RAM_1024KB 0xC0000 wbw
call :MakeDisk ram1024_wbw wbw_ram1024 RAM_1024KB 0xC0000 wbw || exit /b
goto :eof

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@@ -1,8 +1,8 @@
#DEFINE RMJ 3
#DEFINE RMN 4
#DEFINE RMN 5
#DEFINE RUP 0
#DEFINE RTP 0
#DEFINE BIOSVER "3.4.0-dev.40"
#DEFINE BIOSVER "3.5.0-dev.2"
#define rmj RMJ
#define rmn RMN
#define rup RUP

View File

@@ -1,7 +1,7 @@
rmj equ 3
rmn equ 4
rmn equ 5
rup equ 0
rtp equ 0
biosver macro
db "3.4.0-dev.40"
db "3.5.0-dev.2"
endm

View File

@@ -124,16 +124,15 @@ all:: $(OBJECTS)
@for dir in $(SUBDIRS) ; do \
$(MAKE) --directory $$dir ; \
done
rm -f /tmp/casefn.cache
@if [ "$(DEST)" ] && [ "$(OBJECTS)" ] ; then for file in $(filter-out $(NOCOPY),$(OBJECTS)) ; do \
mkdir -p $(DEST) ; \
echo Copying $$file to $(DEST) ; \
rm -f /tmp/casefn.cache ; \
cp $$($(CASEFN) $$file) $(DEST) ; \
done ; fi
@if [ "$(DOCDEST)" ] && [ "$(DOCS)" ] ; then for file in $(DOCS) ; do \
mkdir -p $(DOCDEST) ; \
echo Copying $$file to $(DOCDEST) ; \
rm -f /tmp/casefn.cache ; \
cp $$($(CASEFN) $$file) $(DOCDEST) ; \
done ; fi