mirror of
https://github.com/wwarthen/RomWBW.git
synced 2026-02-07 23:13:13 -06:00
Compare commits
10 Commits
v3.4.0-dev
...
v3.4.0-dev
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
29f93fb153 | ||
|
|
b0975745df | ||
|
|
163460856a | ||
|
|
3ce9246904 | ||
|
|
1a021e02b9 | ||
|
|
f2d304ef0d | ||
|
|
cbfbca8d92 | ||
|
|
b175808a92 | ||
|
|
3e86e79133 | ||
|
|
3247e67ed4 |
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -3,7 +3,7 @@
|
||||
**RomWBW ReadMe** \
|
||||
Version 3.4 \
|
||||
Wayne Warthen ([wwarthen@gmail.com](mailto:wwarthen@gmail.com)) \
|
||||
09 Oct 2023
|
||||
19 Oct 2023
|
||||
|
||||
# Overview
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
RomWBW ReadMe
|
||||
Wayne Warthen (wwarthen@gmail.com)
|
||||
09 Oct 2023
|
||||
19 Oct 2023
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -32,6 +32,7 @@
|
||||
; Use CPM3 BDOS direct BIOS call to get DRVTBL adr
|
||||
; 2023-06-19 [WBW] Update for revised DIODEVICE API
|
||||
; 2023-09-19 [WBW] Added CHUSB & CHSD device support
|
||||
; 2023-10-13 [WBW] Fixed DPH creation to select correct DPB
|
||||
;_______________________________________________________________________________
|
||||
;
|
||||
; ToDo:
|
||||
@@ -665,10 +666,10 @@ makdphwbw: ; determine appropriate dpb (WBW mode, unit number in A)
|
||||
jr makdph0 ; jump ahead
|
||||
makdph00:
|
||||
ld e,6 ; assume floppy
|
||||
cp $10 ; floppy?
|
||||
cp $01 ; floppy?
|
||||
jr z,makdph0 ; yes, jump ahead
|
||||
ld e,3 ; assume ram floppy
|
||||
cp $20 ; ram floppy?
|
||||
cp $02 ; ram floppy?
|
||||
jr z,makdph0 ; yes, jump ahead
|
||||
ld e,4 ; everything else is assumed to be hard disk
|
||||
jr makdph0 ; yes, jump ahead
|
||||
@@ -1935,13 +1936,13 @@ stack .equ $ ; stack top
|
||||
; Messages
|
||||
;
|
||||
indent .db " ",0
|
||||
msgban1 .db "ASSIGN v1.7 for RomWBW CP/M ",0
|
||||
msgban1 .db "ASSIGN v1.8 for RomWBW CP/M ",0
|
||||
msg22 .db "2.2",0
|
||||
msg3 .db "3",0
|
||||
msbban2 .db ", 19-Sep-2023",0
|
||||
msbban2 .db ", 13-Oct-2023",0
|
||||
msghb .db " (HBIOS Mode)",0
|
||||
msgub .db " (UBIOS Mode)",0
|
||||
msgban3 .db "Copyright 2021, Wayne Warthen, GNU GPL v3",0
|
||||
msgban3 .db "Copyright 2023, Wayne Warthen, GNU GPL v3",0
|
||||
msguse .db "Usage: ASSIGN D:[=[{D:|<device>[<unitnum>]:[<slicenum>]}]][,...]",13,10
|
||||
.db " ex. ASSIGN (display all active assignments)",13,10
|
||||
.db " ASSIGN /? (display version and usage)",13,10
|
||||
|
||||
@@ -346,8 +346,7 @@ read:
|
||||
ld b,17h ; HBIOS DEVICE function
|
||||
rst 08 ; Do it, D=device type
|
||||
ld a,d ; put in accum
|
||||
and 0F0h ; isolate high bits
|
||||
cp 10h ; floppy?
|
||||
cp 01h ; floppy?
|
||||
jr nz,read2 ; if not, do LBA i/o
|
||||
|
||||
; Floppy I/O
|
||||
|
||||
@@ -1609,7 +1609,7 @@ filesystem partition and any CP/M filesystem slices that don't fit. You
|
||||
will get "no disk" errors if you attempt to access a slice past the
|
||||
end of the physical hard disk.
|
||||
|
||||
**WARNING**:Your hard disk may be too small to contain the full 64
|
||||
**WARNING**: Your hard disk may be too small to contain the full 64
|
||||
CP/M filesystem slices. The true number of CP/M filesystem slices that
|
||||
will fit on your specific physical hard disk can be calculated as
|
||||
described in [Hard Disk Capacity].
|
||||
@@ -1625,12 +1625,20 @@ them using `CLRDIR` first.
|
||||
|
||||
A great way to maintain your own data on a hard disk is to put this
|
||||
data in slices beyond the first 6. By doing so, you can always
|
||||
"reimage" your drive with the combo image without overlaying the data
|
||||
"re-image" your drive with the combo image without overlaying the data
|
||||
stored in the slices beyond the first 6. Just be very careful to use
|
||||
the same combo image layout (hd512 or hd1k) as you used originally.
|
||||
Also remember to calculate the maximum number of slices your hard disk
|
||||
will support and do not exceed this number.
|
||||
|
||||
**WARNING**: The combo disk image includes a partition table at the
|
||||
start of the image. If you re-image drive with the combo image, you
|
||||
will overwrite this partition table. This is fine as long as you don't
|
||||
make any changes to the partition table. If you manually customize the
|
||||
partition table (using `FDISK80` or other partition management
|
||||
software), those changes will be lost if you re-image your disk with a
|
||||
new combo disk image.
|
||||
|
||||
#### Custom Hard Disk Image
|
||||
|
||||
If you want to use specific slices in a specific order, you can easily
|
||||
@@ -1640,8 +1648,9 @@ For hard disks, each .img file represents a single slice (CP/M
|
||||
filesystem). Since a hard disk can contain many slices, you can just
|
||||
concatenate the slices (.img files) together to create your desired hard
|
||||
disk image. For example, if you want to create a hard disk image that
|
||||
has slices for CP/M 2.2, CP/M 3, and WordStar in the hd512 format, you would use
|
||||
the command line of your modern computer to create the final image:
|
||||
has slices for CP/M 2.2, CP/M 3, and WordStar in the hd512 format, you
|
||||
would use the command line of your modern computer to create the final
|
||||
image:
|
||||
|
||||
Windows:
|
||||
|
||||
@@ -2651,6 +2660,166 @@ SAMPLE2.TXT ==> 4:/SAMPLE2.TXT ... [OK]
|
||||
2 File(s) Copied
|
||||
```
|
||||
|
||||
# Real Time Clock
|
||||
|
||||
RomWBW supports a variety of real time clock hardware. If your
|
||||
system has this hardware, then it will be able to maintain the
|
||||
current date and time even while your system is turned off.
|
||||
Additionally, depending on the operating system being used, you may be
|
||||
able to utilize date/time stamping of files.
|
||||
|
||||
You can determine if your system has a real time clock present (and
|
||||
functioning) by looking at the boot messages. Here is an example of
|
||||
a boot message reflecting the detection of a valid real time clock
|
||||
module:
|
||||
|
||||
`DSRTC: MODE=STD IO=0x8A Thu 2023-10-19 14:07:11 CHARGE=ON`
|
||||
|
||||
This example is from a DSRTC clock module. You may have a different
|
||||
one, but it will always display the current date/time.
|
||||
|
||||
In some cases, your real time clock will support charging of the
|
||||
battery or super-capacitor while the system has power. The status of
|
||||
this charging is displayed.
|
||||
|
||||
If the date/time of your RTC needs to be updated, you will need to do
|
||||
this with one of the utilities described below. There is no ability to
|
||||
update the date/time of the RTC in the RomWBW Boot Loader or Monitor.
|
||||
|
||||
## Date/Time Utilities
|
||||
|
||||
RomwWBW includes two utilities for displaying or setting the date/time
|
||||
stored by the RTC. They are both a bit different and are briefly
|
||||
described below.
|
||||
|
||||
### WDATE Utility
|
||||
|
||||
The `WDATE` utility (contributed by Kevin Boone) is an application
|
||||
that will display and/or update the current date/time. Its operation is
|
||||
described in $doc_apps$. This utility works with any of the supported
|
||||
RomWBW RTC hardware. Here is an example of displaying and updating the
|
||||
date/time with this utility:
|
||||
|
||||
```
|
||||
A>wdate
|
||||
Thursday 19 October 14:14:43 2023
|
||||
|
||||
A>wdate 23 10 19 14 24 30
|
||||
|
||||
A>wdate
|
||||
Thursday 19 October 14:24:34 2023
|
||||
|
||||
```
|
||||
|
||||
Note that `WDATE` does not have anything to do with date/time stamping
|
||||
of files. It merely displays and sets the real time clock value.
|
||||
|
||||
### RTC Utility
|
||||
|
||||
Like `WDATE`, the `RTC` utility (contributed by Andrew Lynch) will let
|
||||
you display and set the current date/time. However, this utility only
|
||||
works with the DSRTC hardware (DS1302 chip). It is a "direct to
|
||||
hardware application". Its operation is described in $doc_apps$. Here
|
||||
is an example of displaying and updatting the date/time with this
|
||||
utility:
|
||||
|
||||
```
|
||||
A>rtc
|
||||
Start RTC Program
|
||||
RomWBW HBIOS, Mark 4 RTC Latch Port 0x8A
|
||||
|
||||
RTC: Version 1.9
|
||||
Commands: E)xit T)ime st(A)rt S)et R)aw L)oop C)harge N)ocharge D)elay I)nit G)et P)ut B)oot W)arm-start H)elp
|
||||
|
||||
RTC>t
|
||||
Current time: 23-10-19 14:30:25-05
|
||||
|
||||
RTC>i
|
||||
Init date/time.
|
||||
|
||||
YEAR:23
|
||||
MONTH:10
|
||||
DATE:19
|
||||
HOURS:14
|
||||
MINUTES:31
|
||||
SECONDS:00
|
||||
DAY:05
|
||||
```
|
||||
|
||||
The `RTC` utility is also capable of turning the charging feature of
|
||||
the DS1320 chip on or off. Here is an example of turning if off and
|
||||
back on:
|
||||
|
||||
```
|
||||
|
||||
A>rtc
|
||||
Start RTC Program
|
||||
RomWBW HBIOS, Mark 4 RTC Latch Port 0x8A
|
||||
|
||||
|
||||
RTC: Version 1.9
|
||||
Commands: E)xit T)ime st(A)rt S)et R)aw L)oop C)harge N)ocharge D)elay I)nit G)et P)ut B)oot W)arm-start H)elp
|
||||
|
||||
RTC>n
|
||||
Trickle charger disabled.
|
||||
|
||||
RTC>c
|
||||
Trickle charger enabled.
|
||||
```
|
||||
|
||||
Do **not** enable charging unless you are sure that your system
|
||||
supports this. If your RTC is being powered by a normal battery, it
|
||||
would be dangerous to enable charging.
|
||||
|
||||
## Date/Time File Stamping
|
||||
|
||||
If an RTC is available in your system, then most operating systems
|
||||
can use it to date/time stamp files. This just means recording the
|
||||
date/time of file creation, update, and or access in the directory.
|
||||
This capability is available in all of the RomWBW operating system
|
||||
except the original DRI CP/M 2.2.
|
||||
|
||||
In some cases (such as ZSDOS), you must load an RSX (memory resident
|
||||
utility) to enable date/time stamping of files. Additionally, you
|
||||
will need to initialize the directory. The procedure varies in each
|
||||
operation system, so you must review the associated documentation.
|
||||
|
||||
The date/time stamping mechanisms for each operating system are
|
||||
generally not compatible. If you initialize a directory for a type
|
||||
of stamping, you should be careful not to manipulate that directory
|
||||
with a different operating system with a different date/time stamping
|
||||
mechanism. Doing so may corrupt the directory.
|
||||
|
||||
The RomWBW disk images do not have date/time stamping initialized. This
|
||||
is to avoid any chance of directory corruption.
|
||||
|
||||
## Timezone
|
||||
|
||||
None of the operating systems distributed with RomWBW have any concept
|
||||
of timezone. When files are date/time stamped, the date/time will
|
||||
simply be whatever date/time the RTC currently has.
|
||||
|
||||
The normal practice is to set the RTC to your local time. This implies
|
||||
that you would need to manually adjust the RTC for daylight savings time
|
||||
and/or when you travel to a different time zone.
|
||||
|
||||
The date/time stamps of files in directories will also be stored in
|
||||
local time. This includes files stored in a FAT filesystem. If you
|
||||
subsequently view the directory from modern machines (Windows, Linux,
|
||||
etc.), the date/time displayed will depend on the behavior of the
|
||||
modern system.
|
||||
|
||||
For example, Linux assumes that the date/time of files
|
||||
is UTC. So, if you create a file on a FAT filesystem with your RomWBW
|
||||
computer and then use Linux to view the directory, the date/time stamps
|
||||
will seem "off" by a few hours.
|
||||
|
||||
The only alternative you may consider is setting the date/time of your
|
||||
RTC to UTC. Since UTC is consistent across all timezones and daylight
|
||||
savings time, your file date/time stamps will also be consistent. Of
|
||||
course, this will mean that your RomWBW computer will display a
|
||||
date/time that seems wrong because it is not local time.
|
||||
|
||||
# CP/NET Networking
|
||||
|
||||
Digital Research created a simple network file sharing system called
|
||||
@@ -3348,8 +3517,10 @@ directed to complete a partial flash using the /P command line switch.
|
||||
# Related Projects
|
||||
|
||||
Outside of the hardware platforms adapted to RomWBW, there are a variety
|
||||
of software projects that either target RomWBW specifically or provide
|
||||
a RomWBW-specific variation.
|
||||
of projects that either target RomWBW specifically or provide
|
||||
a RomWBW-specific variation. These efforts are greatly appreciated
|
||||
and are listed below. Please contact the author if there are any other
|
||||
such projects that are not listed.
|
||||
|
||||
## Z88DK
|
||||
|
||||
@@ -3385,6 +3556,16 @@ the CP/M OS variants. This tool (`WDATE`) is included on the RomWBW
|
||||
OS disk images. The project is hosted at
|
||||
<https://github.com/kevinboone/wdate-cpm>.
|
||||
|
||||
## Assembly Language Programming for the RC2014 Zed
|
||||
|
||||
Bruce Hall has written a very nice document that describes how to
|
||||
develop assembly language applications on RomWBW. It begins with the
|
||||
setup and configuration of a new RC2014 Zed system running RomWBW.
|
||||
It describes not only generic CP/M application development, but also
|
||||
RomWBW HBIOS programming and bare metal programming. The latest copy
|
||||
of this document is hosted at
|
||||
[http://w8bh.net/Assembly for RC2014Z.pdf](http://w8bh.net/Assembly%20for%20RC2014Z.pdf).
|
||||
|
||||
# Acknowledgments
|
||||
|
||||
I want to acknowledge that a great deal of the code and inspiration
|
||||
|
||||
@@ -46,15 +46,15 @@ RTCIO .EQU $94 ; RTC LATCH REGISTER ADR
|
||||
KIOENABLE .EQU FALSE ; ENABLE ZILOG KIO SUPPORT
|
||||
KIOBASE .EQU $80 ; KIO BASE I/O ADDRESS
|
||||
;
|
||||
CTCENABLE .EQU FALSE ; ENABLE ZILOG CTC SUPPORT
|
||||
CTCENABLE .EQU TRUE ; ENABLE ZILOG CTC SUPPORT
|
||||
CTCDEBUG .EQU FALSE ; ENABLE CTC DRIVER DEBUG OUTPUT
|
||||
CTCBASE .EQU $B0 ; CTC BASE I/O ADDRESS
|
||||
CTCBASE .EQU $60 ; CTC BASE I/O ADDRESS
|
||||
CTCTIMER .EQU TRUE ; ENABLE CTC PERIODIC TIMER
|
||||
CTCMODE .EQU CTCMODE_CTR ; CTC MODE: CTCMODE_[NONE|CTR|TIM16|TIM256]
|
||||
CTCPRE .EQU 256 ; PRESCALE CONSTANT (1-256)
|
||||
CTCPRECH .EQU 2 ; PRESCALE CHANNEL (0-3)
|
||||
CTCTIMCH .EQU 3 ; TIMER CHANNEL (0-3)
|
||||
CTCOSC .EQU (4915200/8) ; CTC CLOCK FREQUENCY
|
||||
CTCOSC .EQU (7372800/8) ; CTC CLOCK FREQUENCY
|
||||
;
|
||||
PCFENABLE .EQU FALSE ; ENABLE PCF8584 I2C CONTROLLER
|
||||
PCFBASE .EQU $56 ; PCF8584 BASE I/O ADDRESS
|
||||
@@ -122,7 +122,7 @@ DS7RTCMODE .EQU DS7RTCMODE_PCF ; DS7RTC: OPERATING MODE: DS7RTC_[PCF]
|
||||
DUARTENABLE .EQU FALSE ; DUART: ENABLE 2681/2692 SERIAL DRIVER (DUART.ASM)
|
||||
;
|
||||
UARTENABLE .EQU TRUE ; UART: ENABLE 8250/16550-LIKE SERIAL DRIVER (UART.ASM)
|
||||
UARTOSC .EQU 1843200 ; UART: OSC FREQUENCY IN MHZ
|
||||
UARTOSC .EQU 7372800 ; UART: OSC FREQUENCY IN MHZ
|
||||
UARTINTS .EQU FALSE ; UART: INCLUDE INTERRUPT SUPPORT UNDER IM1/2/3
|
||||
UARTCFG .EQU DEFSERCFG ; UART: LINE CONFIG FOR UART PORTS
|
||||
UARTCASSPD .EQU SER_300_8N1 ; UART: ECB CASSETTE UART DEFAULT SPEED
|
||||
@@ -132,7 +132,7 @@ UARTCAS .EQU FALSE ; UART: AUTO-DETECT ECB CASSETTE UART
|
||||
UARTMFP .EQU FALSE ; UART: AUTO-DETECT MF/PIC UART
|
||||
UART4 .EQU FALSE ; UART: AUTO-DETECT 4UART UART
|
||||
UARTRC .EQU FALSE ; UART: AUTO-DETECT RC UART
|
||||
UARTDUAL .EQU FALSE ; UART: AUTO-DETECT DUAL UART
|
||||
UARTDUAL .EQU TRUE ; UART: AUTO-DETECT DUAL UART
|
||||
;
|
||||
ASCIENABLE .EQU FALSE ; ASCI: ENABLE Z180 ASCI SERIAL DRIVER (ASCI.ASM)
|
||||
;
|
||||
@@ -140,18 +140,18 @@ Z2UENABLE .EQU FALSE ; Z2U: ENABLE Z280 UART SERIAL DRIVER (Z2U.ASM)
|
||||
;
|
||||
ACIAENABLE .EQU FALSE ; ACIA: ENABLE MOTOROLA 6850 ACIA DRIVER (ACIA.ASM)
|
||||
;
|
||||
SIOENABLE .EQU FALSE ; SIO: ENABLE ZILOG SIO SERIAL DRIVER (SIO.ASM)
|
||||
SIOENABLE .EQU TRUE ; SIO: ENABLE ZILOG SIO SERIAL DRIVER (SIO.ASM)
|
||||
SIODEBUG .EQU FALSE ; SIO: ENABLE DEBUG OUTPUT
|
||||
SIOBOOT .EQU 0 ; SIO: REBOOT ON RCV CHAR (0=DISABLED)
|
||||
SIOCNT .EQU 1 ; SIO: NUMBER OF CHIPS TO DETECT (1-2), 2 CHANNELS PER CHIP
|
||||
SIO0MODE .EQU SIOMODE_ZP ; SIO 0: CHIP TYPE: SIOMODE_[STD|RC|SMB|ZP|Z80R]
|
||||
SIO0BASE .EQU $B0 ; SIO 0: REGISTERS BASE ADR
|
||||
SIO0ACLK .EQU (4915200/8) ; SIO 0A: OSC FREQ IN HZ, ZP=2457600/4915200, RC/SMB=7372800
|
||||
SIO0BASE .EQU $60 ; SIO 0: REGISTERS BASE ADR
|
||||
SIO0ACLK .EQU (7372800/4) ; SIO 0A: OSC FREQ IN HZ, ZP=2457600/4915200, RC/SMB=7372800
|
||||
SIO0ACFG .EQU DEFSERCFG ; SIO 0A: SERIAL LINE CONFIG
|
||||
SIO0ACTCC .EQU -1 ; SIO 0A: CTC CHANNEL 0=A, 1=B, 2=C, 3=D, -1 FOR NONE
|
||||
SIO0BCLK .EQU (4915200/8) ; SIO 0B: OSC FREQ IN HZ, ZP=2457600/4915200, RC/SMB=7372800
|
||||
SIO0ACTCC .EQU 0 ; SIO 0A: CTC CHANNEL 0=A, 1=B, 2=C, 3=D, -1 FOR NONE
|
||||
SIO0BCLK .EQU (7372800/4) ; SIO 0B: OSC FREQ IN HZ, ZP=2457600/4915200, RC/SMB=7372800
|
||||
SIO0BCFG .EQU DEFSERCFG ; SIO 0B: SERIAL LINE CONFIG
|
||||
SIO0BCTCC .EQU -1 ; SIO 0B: CTC CHANNEL 0=A, 1=B, 2=C, 3=D, -1 FOR NONE
|
||||
SIO0BCTCC .EQU 1 ; SIO 0B: CTC CHANNEL 0=A, 1=B, 2=C, 3=D, -1 FOR NONE
|
||||
;
|
||||
XIOCFG .EQU DEFSERCFG ; XIO: SERIAL LINE CONFIG
|
||||
;
|
||||
@@ -229,12 +229,12 @@ SDCNT .EQU 1 ; SD: NUMBER OF SD CARD DEVICES (1-2), FOR DSD/SC/MT ONLY
|
||||
SDTRACE .EQU 1 ; SD: TRACE LEVEL (0=NO,1=ERRORS,2=ALL)
|
||||
SDCSIOFAST .EQU FALSE ; SD: ENABLE TABLE-DRIVEN BIT INVERTER IN CSIO MODE
|
||||
;
|
||||
CHENABLE .EQU FALSE ; CH: ENABLE CH375/376 USB SUPPORT
|
||||
CHENABLE .EQU TRUE ; CH: ENABLE CH375/376 USB SUPPORT
|
||||
CHTRACE .EQU 1 ; CH: TRACE LEVEL (0=NO,1=ERRORS,2=ALL)
|
||||
CHUSBTRACE .EQU 1 ; CHUSB: TRACE LEVEL (0=NO,1=ERRORS,2=ALL)
|
||||
CHSDTRACE .EQU 1 ; CHSD: TRACE LEVEL (0=NO,1=ERRORS,2=ALL)
|
||||
CHCNT .EQU 1 ; CH: NUMBER OF BOARDS TO DETECT (1-2)
|
||||
CH0BASE .EQU $BE ; CH 0: BASE I/O ADDRESS
|
||||
CH0BASE .EQU $4E ; CH 0: BASE I/O ADDRESS
|
||||
CH0USBENABLE .EQU TRUE ; CH 0: ENABLE USB DISK
|
||||
CH0SDENABLE .EQU FALSE ; CH 0: ENABLE SD DISK
|
||||
CH1BASE .EQU $FF ; CH 1: BASE I/O ADDRESS
|
||||
@@ -254,16 +254,16 @@ ESPCONENABLE .EQU TRUE ; ESP: ENABLE ESP32 CONSOLE IO DRIVER VIDEO/KBD SUPPORT
|
||||
HDSKENABLE .EQU FALSE ; HDSK: ENABLE SIMH HDSK DISK DRIVER (HDSK.ASM)
|
||||
HDSKTRACE .EQU 1 ; HDSK: TRACE LEVEL (0=NO,1=ERRORS,2=ALL)
|
||||
;
|
||||
PIOENABLE .EQU FALSE ; PIO: ENABLE ZILOG PIO DRIVER (PIO.ASM)
|
||||
PIOENABLE .EQU TRUE ; PIO: ENABLE ZILOG PIO DRIVER (PIO.ASM)
|
||||
PIOCNT .EQU 2 ; PIO: NUMBER OF CHIPS TO DETECT (1-2), 2 CHANNELS PER CHIP
|
||||
PIO0BASE .EQU $B8 ; PIO 0: REGISTERS BASE ADR
|
||||
PIO1BASE .EQU $BC ; PIO 1: REGISTERS BASE ADR
|
||||
PIO0BASE .EQU $68 ; PIO 0: REGISTERS BASE ADR
|
||||
PIO1BASE .EQU $6C ; PIO 1: REGISTERS BASE ADR
|
||||
;
|
||||
LPTENABLE .EQU FALSE ; LPT: ENABLE CENTRONICS PRINTER DRIVER (LPT.ASM)
|
||||
LPTENABLE .EQU TRUE ; LPT: ENABLE CENTRONICS PRINTER DRIVER (LPT.ASM)
|
||||
LPTMODE .EQU LPTMODE_SPP ; LPT: DRIVER MODE: LPTMODE_[NONE|SPP|MG014]
|
||||
LPTCNT .EQU 1 ; LPT: NUMBER OF CHIPS TO DETECT (1-2)
|
||||
LPTTRACE .EQU 1 ; LPT: TRACE LEVEL (0=NO,1=ERRORS,2=ALL)
|
||||
LPT0BASE .EQU $E8 ; LPT 0: REGISTERS BASE ADR
|
||||
LPT0BASE .EQU $48 ; LPT 0: REGISTERS BASE ADR
|
||||
LPT1BASE .EQU $EC ; LPT 1: REGISTERS BASE ADR
|
||||
;
|
||||
PPAENABLE .EQU FALSE ; PPA: ENABLE PPA DISK DRIVER (PPA.ASM)
|
||||
|
||||
@@ -71,6 +71,8 @@
|
||||
;
|
||||
#DEFINE HBIOS
|
||||
;
|
||||
SUPCTS .EQU FALSE ; SUPPRESS CTS DURING HBIOS BOOT
|
||||
;
|
||||
; MAKE SURE EXACTLY ONE OF ROMBOOT, APPBOOT, IMGBOOT IS DEFINED.
|
||||
;
|
||||
MODCNT .EQU 0
|
||||
@@ -2300,8 +2302,36 @@ HB_BOOTDLY:
|
||||
JR C,HB_CONRDY ; IF TOO HIGH, JUST USE FAILSAFE
|
||||
LD A,BOOTCON ; GET REQUESTED CONSOLE DEV
|
||||
LD (CB_CONDEV),A ; SAVE IT
|
||||
;
|
||||
HB_CONRDY:
|
||||
;
|
||||
#IF (SUPCTS)
|
||||
;
|
||||
; MOST SERIAL PORTS ARE CONFIGURED WITH HARDWARE FLOW CONTROL ENABLED.
|
||||
; IF THERE IS A PROBLEM WITH THE CTS SIGNAL, THEN OUTPUT TO THE CONSOLE
|
||||
; WILL BE STALLED WHICH CAN LEAD A USER TO THINK THE SYSTEM IS TOTALLY
|
||||
; DEAD WHEN, IN FACT, IT IS JUST WAITING FOR CTS TO BE ASSERTED. ALSO,
|
||||
; IF THE USER IS BOOTING TO A CRT DEVICE AND DISCONNECTS THE CONSOLE
|
||||
; SERIAL PORT, THE SYSTEM WILL WAIT FOR RTS AND NEVER BOOT. SO, HERE
|
||||
; WE SAVE THE ACTIVE CONSOLE CONFIGURATION, THEN TURN OFF HARDWARE
|
||||
; FLOW CONTROL. THE ORIGINAL CONFIGURATION WILL BE RESTORED BELOW
|
||||
; PRIOR TO LAUNCING THE ROM LOADER.
|
||||
;
|
||||
; RETRIEVE THE CONFIG FROM THE CONSOLE PORT
|
||||
LD B,BF_CIOQUERY ; HBIOS QUERY CIO CONFIG
|
||||
LD A,(CB_CONDEV) ; GET CONSOLE DEVICE
|
||||
LD (HB_BOOTCONSAV),A ; SAVE IT FOR LATER
|
||||
LD C,A ; BOOT CONSOLE TO C
|
||||
CALL HB_DISPATCH ; INTERNAL HBIOS CALL
|
||||
LD (HB_CONCFGSAV),DE ; SAVE CONFIG
|
||||
RES 5,D ; CLEAR RTS BIT
|
||||
LD B,BF_CIOINIT ; HBIOS CIO INIT
|
||||
LD A,(CB_CONDEV) ; GET CONSOLE DEVICE
|
||||
LD C,A ; BOOT CONSOLE TO C
|
||||
CALL HB_DISPATCH ; INTERNAL HBIOS CALL
|
||||
;
|
||||
#ENDIF
|
||||
;
|
||||
#IF (WBWDEBUG == USEMIO) ; OUTPUT ANY CACHED DEBUG TEXT
|
||||
LD HL,MIOOUTPTR
|
||||
LD E,(HL)
|
||||
@@ -2848,6 +2878,19 @@ HB_FPZ:
|
||||
;
|
||||
INITSYS3:
|
||||
;
|
||||
#IF (SUPCTS)
|
||||
;
|
||||
; RESTORE BOOT CONSOLE CONFIGURATION
|
||||
;
|
||||
CALL LDELAY ; ALLOW SERIAL PORT TO FLUSH
|
||||
LD B,BF_CIOINIT ; HBIOS CIO INIT
|
||||
LD A,(HB_BOOTCONSAV) ; ORIGINAL BOOT CONSOLE DEVICE
|
||||
LD C,A ; BOOT CONSOLE TO C
|
||||
LD DE,(HB_CONCFGSAV) ; SAVED ORIGINAL CONSOLE CFG
|
||||
CALL HB_DISPATCH ; INTERNAL HBIOS CALL
|
||||
;
|
||||
#ENDIF
|
||||
;
|
||||
; IF WE ARE GOING TO SWITCH CONSOLES, IT IS IMPLEMENTED HERE. A
|
||||
; MESSAGE IS PRINTED ON THE OLD CONSOLE INDICATING WHERE THE NEW
|
||||
; CONSOLE IS AND THE NEW CONSOLE RECEIVES AN HBIOS BANNER.
|
||||
@@ -7721,6 +7764,11 @@ HB_BOOTCON .DB 0 ; INITIAL BOOT CONSOLE SAVE AREA
|
||||
HB_BOOTCFG .DW 0 ; CONSOLE CONFIG SAVE AREA
|
||||
HB_NEWCON .DB 0 ; NEW CONSOLE TO SWITCH TO
|
||||
;
|
||||
#IF (SUPCTS)
|
||||
HB_BOOTCONSAV .DB 0 ; INITIAL BOOT CONSOLE SAVE AREA
|
||||
HB_CONCFGSAV .DW 0 ; CONSOLE CONFIG SAVE AREA
|
||||
#ENDIF
|
||||
;
|
||||
HB_HASFP .DB 0 ; NON-ZERO MEANS FP EXISTS
|
||||
;
|
||||
HB_WRKBUF .FILL 512,0 ; INTERNAL DISK BUFFER
|
||||
|
||||
@@ -837,7 +837,7 @@ INT_CTC0A .EQU 0 ; ZILOG CTC 0, CHANNEL A
|
||||
INT_CTC0B .EQU 1 ; ZILOG CTC 0, CHANNEL B
|
||||
INT_CTC0C .EQU 2 ; ZILOG CTC 0, CHANNEL C
|
||||
INT_CTC0D .EQU 3 ; ZILOG CTC 0, CHANNEL D
|
||||
;INT_SIO0 .EQU 7 ; ZILOG SIO 0, CHANNEL A & B
|
||||
INT_SIO0 .EQU 6 ; ZILOG SIO 0, CHANNEL A & B
|
||||
INT_SIO1 .EQU 8 ; ZILOG SIO 1, CHANNEL A & B
|
||||
INT_PIO0A .EQU 9 ; ZILOG PIO 0, CHANNEL A
|
||||
INT_PIO0B .EQU 10 ; ZILOG PIO 0, CHANNEL B
|
||||
|
||||
@@ -63,7 +63,11 @@ UARTCBASE .EQU $80
|
||||
UARTMBASE .EQU $18
|
||||
UART4BASE .EQU $C0
|
||||
UARTRBASE .EQU $A0
|
||||
#IF (PLATFORM == PLT_DUO)
|
||||
UARTDBASE .EQU $70
|
||||
#ELSE
|
||||
UARTDBASE .EQU $80
|
||||
#ENDIF
|
||||
;
|
||||
#IF (UARTINTS)
|
||||
;
|
||||
|
||||
Binary file not shown.
@@ -17,6 +17,11 @@ FLASH4 has been tested and confirmed working on:
|
||||
It should work on many other machines that run RomWBW or UNA BIOS. If you test
|
||||
it on another machine please let me know the outcome.
|
||||
|
||||
FLASH030 (also included) is a Linux version of the same software. It is
|
||||
targetted at my 68030 machine but should be very easy to port to other
|
||||
machines. It expects a machine with a larger address space, and thus omits much
|
||||
of the bank switching and other tricks required on Z80 platforms.
|
||||
|
||||
|
||||
= Introduction =
|
||||
|
||||
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -14,8 +14,8 @@ goto :eof
|
||||
:build_zrc
|
||||
|
||||
srec_cat -generate 0x0 0x100000 --constant 0x00 -o temp.dat -binary
|
||||
srec_cat temp.dat -binary -exclude 0x0 0x100 zrc_cfldr.bin -binary -o temp.dat -binary
|
||||
srec_cat temp.dat -binary -exclude 0x100 0x200 zrc_ptbl.bin -binary -offset 0x100 -o temp.dat -binary
|
||||
srec_cat temp.dat -binary -exclude 0x0 0x200 zrc_cfldr.bin -binary -o temp.dat -binary
|
||||
srec_cat temp.dat -binary -exclude 0x1B8 0x200 zrc_ptbl.bin -binary -offset 0x1B8 -o temp.dat -binary
|
||||
srec_cat temp.dat -binary -exclude 0x1F000 0x20000 zrc_mon.bin -binary -offset 0x1F000 -o temp.dat -binary
|
||||
srec_cat temp.dat -binary -exclude 0x24000 0xA4000 ..\..\Binary\RCZ80_zrc.rom -binary -offset 0x24000 -o temp.dat -binary
|
||||
move temp.dat ..\..\Binary\hd1k_zrc_prefix.dat
|
||||
@@ -27,8 +27,8 @@ goto :eof
|
||||
:build_zrc_ram
|
||||
|
||||
srec_cat -generate 0x0 0x100000 --constant 0x00 -o temp.dat -binary
|
||||
srec_cat temp.dat -binary -exclude 0x0 0x100 zrc_cfldr.bin -binary -o temp.dat -binary
|
||||
srec_cat temp.dat -binary -exclude 0x100 0x200 zrc_ptbl.bin -binary -offset 0x100 -o temp.dat -binary
|
||||
srec_cat temp.dat -binary -exclude 0x0 0x200 zrc_cfldr.bin -binary -o temp.dat -binary
|
||||
srec_cat temp.dat -binary -exclude 0x1B8 0x200 zrc_ptbl.bin -binary -offset 0x1B8 -o temp.dat -binary
|
||||
srec_cat temp.dat -binary -exclude 0x1F000 0x20000 zrc_mon.bin -binary -offset 0x1F000 -o temp.dat -binary
|
||||
srec_cat temp.dat -binary -exclude 0x24000 0xA4000 ..\..\Binary\RCZ80_zrc_ram.rom -binary -offset 0x24000 -o temp.dat -binary
|
||||
move temp.dat ..\..\Binary\hd1k_zrc_ram_prefix.dat
|
||||
|
||||
@@ -27,16 +27,16 @@ DIFFPATH = $(DIFFTO)/Binary
|
||||
|
||||
$(HD1KZRCPREFIX):
|
||||
srec_cat -generate 0x0 0x100000 --constant 0x00 -o temp.dat -binary
|
||||
srec_cat temp.dat -binary -exclude 0x0 0x100 zrc_cfldr.bin -binary -o temp.dat -binary
|
||||
srec_cat temp.dat -binary -exclude 0x100 0x200 zrc_ptbl.bin -binary -offset 0x100 -o temp.dat -binary
|
||||
srec_cat temp.dat -binary -exclude 0x0 0x200 zrc_cfldr.bin -binary -o temp.dat -binary
|
||||
srec_cat temp.dat -binary -exclude 0x1B8 0x200 zrc_ptbl.bin -binary -offset 0x1B8 -o temp.dat -binary
|
||||
srec_cat temp.dat -binary -exclude 0x1F000 0x20000 zrc_mon.bin -binary -offset 0x1F000 -o temp.dat -binary
|
||||
srec_cat temp.dat -binary -exclude 0x24000 0xA4000 $(ZRCROM) -binary -offset 0x24000 -o temp.dat -binary
|
||||
mv temp.dat $@
|
||||
|
||||
$(HD1KZRCRAMPREFIX):
|
||||
srec_cat -generate 0x0 0x100000 --constant 0x00 -o temp.dat -binary
|
||||
srec_cat temp.dat -binary -exclude 0x0 0x100 zrc_cfldr.bin -binary -o temp.dat -binary
|
||||
srec_cat temp.dat -binary -exclude 0x100 0x200 zrc_ptbl.bin -binary -offset 0x100 -o temp.dat -binary
|
||||
srec_cat temp.dat -binary -exclude 0x0 0x200 zrc_cfldr.bin -binary -o temp.dat -binary
|
||||
srec_cat temp.dat -binary -exclude 0x1B8 0x200 zrc_ptbl.bin -binary -offset 0x1B8 -o temp.dat -binary
|
||||
srec_cat temp.dat -binary -exclude 0x1F000 0x20000 zrc_mon.bin -binary -offset 0x1F000 -o temp.dat -binary
|
||||
srec_cat temp.dat -binary -exclude 0x24000 0xA4000 $(ZRCRAMROM) -binary -offset 0x24000 -o temp.dat -binary
|
||||
mv temp.dat $@
|
||||
|
||||
@@ -4,8 +4,8 @@ ZRC Disk Prefix Layout
|
||||
---- Bytes ---- --- Sectors ---
|
||||
Start Length Start Length Description
|
||||
------- ------- ------- ------- ---------------------------
|
||||
0x00000 0x00100 0 0.5 CF Boot Loader
|
||||
0x00100 0x00100 0.5 0.5 RomWBW Partition Table
|
||||
0x00000 0x001BE 0 1 CF Boot Loader
|
||||
0x001B8 0x00048 RomWBW Partition Table
|
||||
0x00200 0x1EE00 1 247 Unused
|
||||
0x1F000 0x01000 248 8 ZRC Monitor v0.7
|
||||
0x20000 0x04000 256 32 Unused
|
||||
@@ -17,9 +17,9 @@ Notes
|
||||
-----
|
||||
|
||||
- At startup CPLD ROM is mapped to Z80 CPU address space 0x0000-0x003F, CPU begins execution at 0x0000
|
||||
- CPLD ROM (CF bootstrap mode) reads CF Boot Loader (256B) from start of CF (MBR) to 0xB000 and runs it
|
||||
- CPLD ROM (CF bootstrap mode) reads CF Boot Loader (512B) from start of CF (MBR) to 0xB000 and runs it
|
||||
- CF Boot Loader reads ZRC Monitor (4KB) from sectors 0xF8-0xFF of CF to 0xB400 and runs it
|
||||
- ZRC Monitor reads 512KB (RomWBW) from sectors 0x120-0x51F of CF into first 512KB of physical RAM
|
||||
- ZRC Monitor maps first 32KB of physical RAM to first 32KB of CPU RAM and starts execution at 0x0000
|
||||
|
||||
-- WBW 2:30 PM 10/8/2023
|
||||
-- WBW 3:30 PM 10/12/2023
|
||||
Binary file not shown.
Binary file not shown.
@@ -17,8 +17,8 @@ goto :eof
|
||||
:build_zzrcc
|
||||
|
||||
srec_cat -generate 0x0 0x100000 --constant 0x00 -o temp.dat -binary
|
||||
srec_cat temp.dat -binary -exclude 0x0 0x100 zzrcc_cfldr.bin -binary -o temp.dat -binary
|
||||
srec_cat temp.dat -binary -exclude 0x100 0x200 zzrcc_ptbl.bin -binary -offset 0x100 -o temp.dat -binary
|
||||
srec_cat temp.dat -binary -exclude 0x0 0x200 zzrcc_cfldr.bin -binary -o temp.dat -binary
|
||||
srec_cat temp.dat -binary -exclude 0x1B8 0x200 zzrcc_ptbl.bin -binary -offset 0x1B8 -o temp.dat -binary
|
||||
srec_cat temp.dat -binary -exclude 0x1F000 0x20000 zzrcc_mon.bin -binary -offset 0x1F000 -o temp.dat -binary
|
||||
srec_cat temp.dat -binary -exclude 0x24000 0xA4000 ..\..\Binary\RCZ280_zzrcc.rom -binary -offset 0x24000 -o temp.dat -binary
|
||||
move temp.dat ..\..\Binary\hd1k_zzrcc_prefix.dat
|
||||
@@ -30,8 +30,8 @@ goto :eof
|
||||
:build_zzrcc_ram
|
||||
|
||||
srec_cat -generate 0x0 0x100000 --constant 0x00 -o temp.dat -binary
|
||||
srec_cat temp.dat -binary -exclude 0x0 0x100 zzrcc_cfldr.bin -binary -o temp.dat -binary
|
||||
srec_cat temp.dat -binary -exclude 0x100 0x200 zzrcc_ptbl.bin -binary -offset 0x100 -o temp.dat -binary
|
||||
srec_cat temp.dat -binary -exclude 0x0 0x200 zzrcc_cfldr.bin -binary -o temp.dat -binary
|
||||
srec_cat temp.dat -binary -exclude 0x1B8 0x200 zzrcc_ptbl.bin -binary -offset 0x1B8 -o temp.dat -binary
|
||||
srec_cat temp.dat -binary -exclude 0x1F000 0x20000 zzrcc_mon.bin -binary -offset 0x1F000 -o temp.dat -binary
|
||||
srec_cat temp.dat -binary -exclude 0x24000 0xA4000 ..\..\Binary\RCZ280_zzrcc_ram.rom -binary -offset 0x24000 -o temp.dat -binary
|
||||
move temp.dat ..\..\Binary\hd1k_zzrcc_ram_prefix.dat
|
||||
|
||||
@@ -27,16 +27,16 @@ DIFFPATH = $(DIFFTO)/Binary
|
||||
|
||||
$(HD1KZZRCCPREFIX):
|
||||
srec_cat -generate 0x0 0x100000 --constant 0x00 -o temp.dat -binary
|
||||
srec_cat temp.dat -binary -exclude 0x0 0x100 zzrcc_cfldr.bin -binary -o temp.dat -binary
|
||||
srec_cat temp.dat -binary -exclude 0x100 0x200 zzrcc_ptbl.bin -binary -offset 0x100 -o temp.dat -binary
|
||||
srec_cat temp.dat -binary -exclude 0x0 0x200 zzrcc_cfldr.bin -binary -o temp.dat -binary
|
||||
srec_cat temp.dat -binary -exclude 0x1B8 0x200 zzrcc_ptbl.bin -binary -offset 0x1B8 -o temp.dat -binary
|
||||
srec_cat temp.dat -binary -exclude 0x1F000 0x20000 zzrcc_mon.bin -binary -offset 0x1F000 -o temp.dat -binary
|
||||
srec_cat temp.dat -binary -exclude 0x24000 0xA4000 $(ZZRCCROM) -binary -offset 0x24000 -o temp.dat -binary
|
||||
mv temp.dat $@
|
||||
|
||||
$(HD1KZZRCCRAMPREFIX):
|
||||
srec_cat -generate 0x0 0x100000 --constant 0x00 -o temp.dat -binary
|
||||
srec_cat temp.dat -binary -exclude 0x0 0x100 zzrcc_cfldr.bin -binary -o temp.dat -binary
|
||||
srec_cat temp.dat -binary -exclude 0x100 0x200 zzrcc_ptbl.bin -binary -offset 0x100 -o temp.dat -binary
|
||||
srec_cat temp.dat -binary -exclude 0x0 0x200 zzrcc_cfldr.bin -binary -o temp.dat -binary
|
||||
srec_cat temp.dat -binary -exclude 0x1B8 0x200 zzrcc_ptbl.bin -binary -offset 0x1B8 -o temp.dat -binary
|
||||
srec_cat temp.dat -binary -exclude 0x1F000 0x20000 zzrcc_mon.bin -binary -offset 0x1F000 -o temp.dat -binary
|
||||
srec_cat temp.dat -binary -exclude 0x24000 0xA4000 $(ZZRCCRAMROM) -binary -offset 0x24000 -o temp.dat -binary
|
||||
mv temp.dat $@
|
||||
|
||||
@@ -4,8 +4,8 @@ ZZRCC Disk Prefix Layout
|
||||
---- Bytes ---- --- Sectors ---
|
||||
Start Length Start Length Description
|
||||
------- ------- ------- ------- ---------------------------
|
||||
0x00000 0x00100 0 0.5 CF Boot Loader
|
||||
0x00100 0x00100 0.5 0.5 RomWBW Partition Table
|
||||
0x00000 0x001BE 0 1 CF Boot Loader
|
||||
0x001B8 0x00048 RomWBW Partition Table
|
||||
0x00200 0x1EE00 1 247 Unused
|
||||
0x1F000 0x01000 248 8 ZZRCC Monitor v0.5
|
||||
0x20000 0x04000 256 32 Unused
|
||||
@@ -17,9 +17,9 @@ Notes
|
||||
-----
|
||||
|
||||
- At startup CPLD ROM is mapped to Z280 CPU address space 0x0000-0x003F, CPU begins execution at 0x0000
|
||||
- CPLD ROM (CF bootstrap mode) reads CF Boot Loader (256B) from start of CF (MBR) to 0xB000 and runs it
|
||||
- CPLD ROM (CF bootstrap mode) reads CF Boot Loader (512B) from start of CF (MBR) to 0xB000 and runs it
|
||||
- CF Boot Loader reads ZZRCC Monitor (4KB) from sectors 0xF8-0xFF of CF to 0xB400 and runs it
|
||||
- ZZRCC Monitor reads 512KB (RomWBW) from sectors 0x120-0x51F of CF into first 512KB of physical RAM
|
||||
- ZZRCC Monitor maps first 32KB of physical RAM to first 32KB of CPU RAM and starts execution at 0x0000
|
||||
|
||||
-WBW 2:36 PM 10/8/2023
|
||||
-WBW 3:30 PM 10/12/2023
|
||||
Binary file not shown.
Binary file not shown.
@@ -2,7 +2,7 @@
|
||||
#DEFINE RMN 4
|
||||
#DEFINE RUP 0
|
||||
#DEFINE RTP 0
|
||||
#DEFINE BIOSVER "3.4.0-dev.7"
|
||||
#DEFINE BIOSVER "3.4.0-dev.12"
|
||||
#define rmj RMJ
|
||||
#define rmn RMN
|
||||
#define rup RUP
|
||||
|
||||
@@ -3,5 +3,5 @@ rmn equ 4
|
||||
rup equ 0
|
||||
rtp equ 0
|
||||
biosver macro
|
||||
db "3.4.0-dev.7"
|
||||
db "3.4.0-dev.12"
|
||||
endm
|
||||
|
||||
Reference in New Issue
Block a user