mirror of
https://github.com/wwarthen/RomWBW.git
synced 2026-02-06 22:43:15 -06:00
Compare commits
13 Commits
v3.4.0-rc.
...
v3.5.0-dev
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
6f7d1447ea | ||
|
|
3e6120e0fa | ||
|
|
61565bffd7 | ||
|
|
0bac6f32ea | ||
|
|
462545bfe7 | ||
|
|
cc4ad0d4b9 | ||
|
|
458b04404e | ||
|
|
4143cfa4cf | ||
|
|
438e59a05e | ||
|
|
7385d07b9a | ||
|
|
5bea1f400e | ||
|
|
1a9701e51d | ||
|
|
23e0b82112 |
42
CONTRIBUTING.md
Normal file
42
CONTRIBUTING.md
Normal 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.
|
||||
@@ -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
|
||||
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -1,9 +1,9 @@
|
||||
|
||||
|
||||
**RomWBW ReadMe** \
|
||||
Version 3.4 \
|
||||
Version 3.5 \
|
||||
Wayne Warthen ([wwarthen@gmail.com](mailto:wwarthen@gmail.com)) \
|
||||
30 Dec 2023
|
||||
12 Jan 2024
|
||||
|
||||
# Overview
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
RomWBW ReadMe
|
||||
Wayne Warthen (wwarthen@gmail.com)
|
||||
30 Dec 2023
|
||||
12 Jan 2024
|
||||
|
||||
|
||||
|
||||
|
||||
125
Source/Apps/FAT/ReadMe.md
Normal file
125
Source/Apps/FAT/ReadMe.md
Normal 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) |
|
||||
@@ -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.
@@ -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
|
||||
;===============================================================================
|
||||
|
||||
@@ -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
|
||||
;
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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 >>
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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 ---
|
||||
|
||||
|
||||
@@ -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 ---
|
||||
|
||||
|
||||
@@ -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 ---
|
||||
|
||||
|
||||
@@ -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 ---
|
||||
|
||||
|
||||
@@ -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 ---
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -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 ====================
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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.
|
||||
|
||||
@@ -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$
|
||||
|
||||
@@ -3625,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.
|
||||
|
||||
|
||||
@@ -103,16 +103,16 @@ UNA_%.osimg.bin: UNA_%.romldr.bin UNA_%.dbgmon.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
|
||||
|
||||
S100_%.imgpad2.bin: s100mon.bin
|
||||
cp $< $@
|
||||
srec_cat $@ -Binary -Crop 0 0x7FFF -Checksum_Negative_Big_Endian 0x7FFF 1 1 -o $@ -Binary
|
||||
|
||||
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 >$@ ; \
|
||||
|
||||
@@ -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
|
||||
;
|
||||
|
||||
@@ -279,8 +279,7 @@ DS1501RTC_GETBYT:
|
||||
LD E,A
|
||||
;
|
||||
; Return success
|
||||
XOR
|
||||
;
|
||||
XOR A
|
||||
RET
|
||||
;
|
||||
; RTC Set Byte
|
||||
|
||||
@@ -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.
|
||||
;
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -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 ; \
|
||||
|
||||
@@ -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>
|
||||
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -1,8 +1,8 @@
|
||||
#DEFINE RMJ 3
|
||||
#DEFINE RMN 4
|
||||
#DEFINE RMN 5
|
||||
#DEFINE RUP 0
|
||||
#DEFINE RTP 0
|
||||
#DEFINE BIOSVER "3.4.0-rc.4"
|
||||
#DEFINE BIOSVER "3.5.0-dev.2"
|
||||
#define rmj RMJ
|
||||
#define rmn RMN
|
||||
#define rup RUP
|
||||
|
||||
@@ -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-rc.4"
|
||||
db "3.5.0-dev.2"
|
||||
endm
|
||||
|
||||
Reference in New Issue
Block a user