Compare commits

...

5 Commits

Author SHA1 Message Date
Wayne Warthen
ed4daf06a4 CP/M 3 Memory Configuration Regression
Put CP/M 3 disk buffers back in alternate banks.
2023-10-08 07:32:01 -07:00
Wayne Warthen
14cc41c3c4 Fix hd512 Layout
- Slice protection changes broke hd512 layout.  Fixed.
- Updated documentation for slice protection changes.
2023-10-07 19:01:36 -07:00
Wayne Warthen
0598d921bc Floppy Fix
- Recent change to device type id's broke floppy access.  This is corrected.
2023-10-07 16:01:09 -07:00
Wayne Warthen
93dcfe9610 Slice Protection, Issue #366
- Dean Jenkins has motivated me to implement additional protection from using a slice that does not fit within the capacity of the physical disk being used.  You can still assign an unusable slice, but when you try to refer to it, you will immediately get a "no disk" error from the OS.
2023-10-07 15:15:10 -07:00
Wayne Warthen
d98547dea3 Minor Doc and Build Tweaks 2023-10-06 16:53:52 -07:00
21 changed files with 309 additions and 108 deletions

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,5 +1,11 @@
all:
.PHONY: tools source clean clobber diff dist
all: tools source
tools:
$(MAKE) --directory Tools
source:
$(MAKE) --directory Source
clean:

View File

@@ -1,9 +1,9 @@
**RomWBW ReadMe** \
Version 3.3 \
Version 3.4 \
Wayne Warthen ([wwarthen@gmail.com](mailto:wwarthen@gmail.com)) \
05 Oct 2023
07 Oct 2023
# Overview

View File

@@ -1,6 +1,6 @@
RomWBW ReadMe
Wayne Warthen (wwarthen@gmail.com)
05 Oct 2023
07 Oct 2023

View File

@@ -1350,7 +1350,6 @@ DSK_SELECT1A:
LD B,BF_DIODEVICE ; HBIOS FUNC: REPORT DEVICE INFO
RST 08 ; GET UNIT INFO, DEVICE TYPE IN D
LD A,D ; DEVICE TYPE -> A
AND $F0 ; ISOLATE HIGH BITS
CP DIODEV_FD ; FLOPPY?
JR NZ,DSK_SELECT1B ; IF NOT, DO LBA IO
LD HL,SEKLBA+3 ; POINT TO HIGH ORDER BYTE
@@ -1511,8 +1510,8 @@ DSK_MBR3:
;
DSK_MBR4:
; IF BOOT FROM PARTITION, USE NEW SECTORS PER SLICE VALUE
LD HL,16384 ; NEW SECTORS PER SLICE
LD (SPS),HL ; SAVE IT
LD HL,16384 ; NEW SECTORS PER SLICE
LD (SPS),HL ; SAVE IT
; UPDATE MEDIA ID
LD A,MID_HDNEW ; NEW MEDIA ID
@@ -1520,20 +1519,80 @@ DSK_MBR4:
;
DSK_MBR5:
; ADJUST LBA OFFSET BASED ON TARGET SLICE
LD A,(SLICE) ; GET SLICE, A IS LOOP CNT
LD HL,(SEKLBA) ; SET DE:HL
LD DE,(SEKLBA+2) ; ... TO STARTING LBA
LD BC,(SPS) ; SECTORS PER SLICE
DSK_MBR6:
OR A ; SET FLAGS TO CHECK LOOP CNTR
JR Z,DSK_MBR8 ; DONE IF COUNTER EXHAUSTED
ADD HL,BC ; ADD ONE SLICE TO LOW WORD
JR NC,DSK_MBR7 ; CHECK FOR CARRY
INC DE ; IF SO, BUMP HIGH WORD
DSK_MBR7:
DEC A ; DEC LOOP DOWNCOUNTER
JR DSK_MBR6 ; AND LOOP
LD A,(SLICE) ; GET SLICE, A IS LOOP CNT
LD HL,(SEKLBA) ; SET DE:HL
LD DE,(SEKLBA+2) ; ... TO STARTING LBA
LD BC,(SPS) ; SECTORS PER SLICE
RES 7,D ; CLEAR LBA MODE BIT
DSK_MBR6:
OR A ; SET FLAGS TO CHECK LOOP CNTR
JR Z,DSK_MBR8 ; DONE IF COUNTER EXHAUSTED
ADD HL,BC ; ADD ONE SLICE TO LOW WORD
JR NC,DSK_MBR7 ; CHECK FOR CARRY
INC DE ; IF SO, BUMP HIGH WORD
DSK_MBR7:
DEC A ; DEC LOOP DOWNCOUNTER
JR DSK_MBR6 ; AND LOOP
DSK_MBR8:
; LBA OFFSET OF DESIRED SLICE IS NOW IN DE:HL
; NEED TO CHECK IF THE SLICE IS BEYOND CAPACITY OF MEDIA
; IF LBA_OFF + SPS >= DSK_CAP, ERROR!
;
; SAVE LBA_OFF
PUSH DE ; MSW
PUSH HL ; LSW
;
; ADD SPS TO COMPUTE LBA_REQ
LD BC,(SPS) ; SECTORS PER SLICE
ADD HL,BC ; ADD ONE SLICE TO LOW WORD
JR NC,DSK_MBR9 ; CHECK FOR CARRY
INC DE ; IF SO, BUMP HIGH WORD
DSK_MBR9:
; SAVE CAP_REQ
LD (CAP_REQ),HL ; LSW
LD (CAP_REQ+2),DE ; MSW
;
#IFDEF PLTWBW
; GET DSK_CAP (DE:HL)
LD B,BF_DIOCAP ; HBIOS DISK CAPACITY FUNC
LD A,(SEKUNIT) ; DISK UNIT NUMBER
LD C,A ; ... INTO C
RST 08 ; HBIOS CALL (DE:HL = CAPACITY)
#ENDIF
;
#IFDEF PLTUNA
; GET DSK_CAP (DE:HL)
LD C,$45 ; UBIOS DISK INFO FUNC
LD A,(SEKUNIT) ; DISK UNIT NUMBER
LD B,A ; ... INTO B
RST 08 ; CALL UNA (DE:HL = CAPACITY)
#ENDIF
;
; SAVE DSK_CAP (DE:HL)
PUSH DE ; SAVE DSK_CAP (MSW)
PUSH HL ; SAVE DSK_CAP (LSW)
;
; CHECK DSK_CAP >= CAP_REQ, CF SET ON OVERFLOW
; NO NEED SAVE ACTUAL RESULT
OR A ; CLEAR CARRY FOR SBC
POP HL ; DSK_CAP LSW
LD DE,(CAP_REQ) ; CAP_REQ LSW
SBC HL,DE ; DSK_CAP - LBA_REQ (LSW)
POP HL ; DSK_CAP MSW
LD DE,(CAP_REQ+2) ; CAP_REQ MSW
SBC HL,DE ; DSK_CAP - LBA_REQ (MSW)
;
; RESTORE LBA_OFF
POP HL ; LSW
POP DE ; MSW
;
; ABORT ON OVERFLOW WITH ERROR!
JR NC,DSK_MBR10 ; IF NO OVERFLOW, CONTINUE
OR $FF ; SIGNAL ERROR
RET ; DONE
;
DSK_MBR10:
; FINALIZE SLICE LBA
SET 7,D ; SET LBA ACCESS FLAG
; RESAVE IT
LD (SEKLBA),HL ; LOWORD
@@ -1758,6 +1817,7 @@ CCPBUF .DW 0 ; ADDRESS OF CCP BUF IN BIOS BANK
MEDID .DB 0 ; TEMP STORAGE FOR MEDIA ID
SLICE .DB 0 ; CURRENT SLICE
SPS .DW 0 ; SECTORS PER SLICE
CAP_REQ .DW 0,0 ; LBA CAP REQUIRED FOR SLICE
STKSAV .DW 0 ; TEMP SAVED STACK POINTER
;
#IFDEF PLTWBW

View File

@@ -44,7 +44,7 @@ tpa$bank equ 0
if banked
; Clone page zero from bank 0 to additional banks
ld b,4 ; last bank
ld b,2 ; last bank
ld c,0 ; src bank
init$2:
push bc ; save bank id's

View File

@@ -38,7 +38,7 @@
extrn ?bnkxlt
extrn phex8, cout
extrn phex16, phex8, cout, crlf, crlf2
; CP/M 3 Disk definition macros
@@ -493,8 +493,7 @@ media:
ld b,17h ; HBIOS func: report device info
call 0FFF0h ; get unit info, device type in D
ld a,d ; device type -> A
and 0F0h ; isolate high bits
cp 10h ; floppy?
cp 01h ; floppy?
jr nz,media1 ; if not, do LBA I/O
ld hl,lba+3 ; point to high order byte
res 7,(hl) ; switch from LBA -> CHS
@@ -577,29 +576,77 @@ media4:
; adjust the sectors per slice and media id.
; Use new slice format sectors per slice value
ld hl,16384 ; new sectors per slice
ld (sps),hl ; save it
ld hl,16384 ; new sectors per slice
ld (sps),hl ; save it
; Update media id for new hard disk format
ld a,10 ; new media id
ld (medid),a ; save it
ld a,10 ; new media id
ld (medid),a ; save it
media5:
; Adjust LBA offset based on target slice
ld a,(slice) ; get slice, A is loop cnt
ld hl,(lba) ; set DE:HL
ld de,(lba+2) ; ... to starting LBA
ld bc,(sps) ; sectors per slice
ld a,(slice) ; get slice, A is loop cnt
ld hl,(lba) ; set DE:HL
ld de,(lba+2) ; ... to starting LBA
ld bc,(sps) ; sectors per slice
res 7,d ; clear lba mode bit
boot6:
or a ; set flags to check loop cntr
jr z,boot8 ; done if counter exhausted
add hl,bc ; add one slice to low word
jr nc,boot7 ; check for carry
inc de ; if so, bump high word
or a ; set flags to check loop cntr
jr z,boot8 ; done if counter exhausted
add hl,bc ; add one slice to low word
jr nc,boot7 ; check for carry
inc de ; if so, bump high word
boot7:
dec a ; dec loop downcounter
jr boot6 ; and loop
dec a ; dec loop downcounter
jr boot6 ; and loop
boot8:
; LBA offset of desired slice is now in DE:HL.
; Need to check if the slice is beyond capacity of media.
; If lba_off + sps >= dsk_cap, error!
; Save lba_off
push de ; msw
push hl ; lsw
; Add sps to compute lba_req
ld bc,(sps) ; sectors per slice
add hl,bc ; add one slice to low word
jr nc,dsk_mbr9 ; check for carry
inc de ; if so, bump high word
dsk_mbr9:
; Save cap_req
ld (cap_req),hl ; lsw
ld (cap_req+2),de ; msw
; Get dsk_cap (de:hl)
ld b,1Ah ; hbios disk capacity func
ld a,(unit) ; disk unit number
ld c,a ; ... into c
rst 08 ; hbios call (de:hl = capacity)
; Save dsk_cap (de:hl)
push de ; save dsk_cap (msw)
push hl ; save dsk_cap (lsw)
; Check dsk_cap >= cap_req, cf set on overflow
; No need save actual result
or a ; clear carry for sbc
pop hl ; dsk_cap lsw
ld de,(cap_req) ; cap_req lsw
sbc hl,de ; dsk_cap - lba_req (lsw)
pop hl ; dsk_cap msw
ld de,(cap_req+2) ; cap_req msw
sbc hl,de ; dsk_cap - lba_req (msw)
; Restore lba_off
pop hl ; lsw
pop de ; msw
; Abort on overflow with error!
jp c,err_noslice ; slice too high, error exit
; Finalize slice lba
set 7,d ; set LBA access flag
ld (lba),hl ; save new lba, low word
ld (lba+2),de ; save new lba, high word
@@ -870,6 +917,7 @@ unit db 0 ; working disk unit num
slice db 0 ; working slice num
lba dw 0,0 ; working lba
sps dw 0 ; sectors per slice
cap_req dw 0,0 ; lba cap required for slice
mbrsec ds 512 ; MBR sector buffer
dma dw 0 ; current DMA address
bank db 0 ; HBIOS DMA bank

View File

@@ -41,22 +41,22 @@ HASHDRVM = N
HASHDRVN = N
HASHDRVO = N
HASHDRVP = N
ALTBNKSA = N
ALTBNKSB = N
ALTBNKSC = N
ALTBNKSD = N
ALTBNKSE = N
ALTBNKSF = N
ALTBNKSG = N
ALTBNKSH = N
ALTBNKSI = N
ALTBNKSJ = N
ALTBNKSK = N
ALTBNKSL = N
ALTBNKSM = N
ALTBNKSN = N
ALTBNKSO = N
ALTBNKSP = N
ALTBNKSA = Y
ALTBNKSB = Y
ALTBNKSC = Y
ALTBNKSD = Y
ALTBNKSE = Y
ALTBNKSF = Y
ALTBNKSG = Y
ALTBNKSH = Y
ALTBNKSI = Y
ALTBNKSJ = Y
ALTBNKSK = Y
ALTBNKSL = Y
ALTBNKSM = Y
ALTBNKSN = Y
ALTBNKSO = Y
ALTBNKSP = Y
NDIRRECA = 08
NDIRRECB = 00
NDIRRECC = 00

View File

@@ -165,6 +165,13 @@ Be aware that this command will allow you to reassign or remove the
assignment of your system drive letter. This can cause your operating
system to fail and force you to reboot.
The `ASSIGN` command does **not** prevent you from assigning a drive
letter to a slice that does not fit on the physical media. However,
any subsequent attempt to refer to that drive letter will result in
an immediate OS error of "no disk". Refer to "Hard Disk Capacity"
in the $doc_user$ for a discussion of the exact number of slices that
will fit on a specific physical disk size.
This command is particularly sensitive to being matched to the
appropriate version of the RomWBW ROM you are using. Be very careful
to keep all copies of `ASSIGN.COM` up to date with your ROM.

View File

@@ -1,4 +1,4 @@
$define{doc_ver}{Version 3.3}$
$define{doc_ver}{Version 3.4}$
$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

@@ -1,7 +1,7 @@
#
# NOTE: Pandoc, Latex (MiKTeX or TexLive), and gpp must be installed
# NOTE: gpp, Pandoc, and Latex (MiKTeX or TexLive) must be installed
# and available on commandline for this build to work!!!
# Typically "sudo apt install pandoc, texlive-latex-extra, gpp"
# Typically "sudo apt install gpp pandoc texlive-latex-extra texlive-luatex texlive-fonts-extra fonts-roboto"
#
OBJECTS = ReadMe.gfm ReadMe.txt UserGuide.pdf SystemGuide.pdf Applications.pdf ROM_Applications.pdf Catalog.pdf Errata.pdf
# DEST = ../../Doc
@@ -16,7 +16,7 @@ all :: deploy
gpp -o $@ -U "$$" "$$" "{" "}{" "}$$" "{" "}" "@@@" "" -M "$$" "$$" "{" "}{" "}$$" "{" "}" $<
%.pdf : %.tmp
pandoc $< -f markdown -t latex -s -o $@ --default-image-extension=pdf
pandoc $< -f markdown -t pdf -s -o $@ --default-image-extension=pdf --pdf-engine=lualatex
%.html : %.tmp
pandoc $< -f markdown -t html -s -o $@ --default-image-extension=pdf

View File

@@ -206,7 +206,7 @@ below, **carefully** pick the appropriate ROM image for your hardware.
| [Z80-Retro SBC]^8^ | - | Z80RETRO_std.rom | 38400 |
| [S100 Computers Z180]^9^ | S100 | S100_std.rom | 38400 |
| [Duodyne Z80 System]^1^ | Duo | DUO_std.rom | 38400 |
| [Heath H8 Z80 System] | H8 | HEATH_std.rom | 115200 |
| [Heath H8 Z80 System]^10^ | H8 | HEATH_std.rom | 115200 |
| ^1^Designed by Andrew Lynch
| ^2^Designed by Sergey Kiselev
@@ -217,6 +217,7 @@ below, **carefully** pick the appropriate ROM image for your hardware.
| ^7^Designed by Bill Shen
| ^8^Designed by Peter Wilson
| ^9^Designed by John Monahan
| ^10^Designed by Les Bird
RCBus refers to Spencer Owen's RC2014 bus specification and derivatives
including RC26, RC40, RC80, and BP80.
@@ -965,16 +966,24 @@ Drives E: thru L: have been assigned to the IDE0 hard disk device. The
4 entries for IDE0 are referring to 4 slices on that disk. Slices are
discussed later.
The drive letter assignments **do not** change during an OS session
unless you use the `ASSIGN` command yourself to do it. Additionally,
the assignments at boot will stay the same on each boot as long as you
do not make changes to your hardware configuration. Note that the
assignments **are** dependent on the media currently inserted in hard
disk drives. So, notice that if you insert or remove an SD Card or CF
Card, the drive assignments will change. Since drive letter
assignments can change, you must be careful when doing destructive
things like using `CLRDIR` to make sure the drive letter you use is
referring to the desired media.
**WARNING**: Drive letter assignments do **not** ensure that the slice
referenced by the drive letter actually fits on the media you are using.
For example, a typical 64MB CF Card (which is typically a bit smaller
than 64MB) will only fit 7 slices. At startup, you will typically see
8 drive letters assigned to the CF Card. Attempting to access the
last drive letter will result in a "no disk" error from the operating
system.
The drive letter assignments **do not** change during an OS session
unless you use the `ASSIGN` command yourself to do it. Additionally, the
assignments at boot will stay the same on each boot as long as you do
not make changes to your hardware configuration. Note that the
assignments **are** dependent on the media currently inserted in hard
disk drives when the operating system is started. So, notice that if you
insert or remove an SD Card or CF Card, the drive assignments will
change. Since drive letter assignments can change, you must be careful
when doing destructive things like using `CLRDIR` to make sure the drive
letter you use is referring to the desired media.
When performing a ROM boot of an operating system, note that A: will
be your RAM disk and B: will be your ROM disk. When performing a disk
@@ -988,7 +997,8 @@ boot drive.
A typical RomWBW system has 512KB of ROM and 512KB of RAM. Some
portions of each are dedicated to loading and running applications
and operating system. The space left over is available for an
operating system to use as a pseudo-disk device.
operating system to use as a pseudo-disk device (ROM Disk and RAM
Disk).
The RAM disk provides a small CP/M filesystem that you can use for the
temporary storage of files. Unless your system has a battery backed
@@ -1017,13 +1027,13 @@ actual operating system and are not "bootable". However, they are
accessible to any operating system (whether the operating system is
loaded from ROM or a different disk device).
Neither RAM not ROM disks require explicit formatting or initialization.
Neither RAM nor ROM disks require explicit formatting or initialization.
ROM disks are pre-formatted and RAM disks are formatted automatically
with an empty directory when first used.
#### Flash ROM Disks
The limitation of ROM disks being read only can be overcome on some
The limitation of ROM disks being read-only can be overcome on some
platforms with the appropriate selection of Flash ROM chip and
system configuration. In this case the flash-file system can be
enabled which will allow the ROM disk to be read and written to.
@@ -1207,7 +1217,7 @@ available storage devices. The allocation will depend on the number of
mass storage devices available at boot. For example, if you have
only one hard disk type media, you will see that 8 drive letters are
assigned to the first 8 slices of that media. If you have two large
storage devices, you will see that each device is allocated four drive
storage devices, you will see that each device is allocated 4 drive
letters.
Referring to slices within a storage device is done by appending a :
@@ -1222,14 +1232,14 @@ slice of IDE0, you would type "IDE0:3". Here are some examples:
| `IDE0:` | First slice of disk in IDE0 |
| `IDE0:3` | Fourth slice of disk in IDE0 |
So, if you wanted to use drive letter L: to refer to the fourth slice
of IDE0, you could use the command `ASSIGN L:=IDE0:3`. There are a
couple of rules to be aware of when assigning drive letters. First,
you may only refer to a specific device/slice with one drive letter at a time.
Said another way, you cannot have multiple drive letters referring
to a the same device/slice at the same time. Second, there must always
be a drive assigned to A:. Any attempt to violate these rules will
be blocked by the `ASSIGN` command.
So, if you wanted to use drive letter L: to refer to the fourth slice of
IDE0, you could use the command `ASSIGN L:=IDE0:3`. There are a couple
of rules to be aware of when assigning drive letters. First, you may
only refer to a specific device/slice with one drive letter at a time.
Said another way, you cannot have multiple drive letters referring to a
the same device/slice at the same time. Second, there must always be a
drive assigned to A:. Any attempt to violate these rules will be blocked
by the `ASSIGN` command.
In case this wasn't already clear, you **cannot** refer directly
to slices using CP/M. CP/M only understands drive letters, so
@@ -1258,6 +1268,11 @@ absolutely sure you know what media and slice are assigned to that
drive letter before using `CLRDIR` because CLRDIR will wipe out any
pre-existing contents of the slice.
**WARNING**: The `CLRDIR` application does not appear to check for
disk errors when it runs. If you attempt to run `CLRDIR` on a drive
that is mapped to a slice that does not actually fit on the physical
disk, it may behave erratically.
Here is an example of using `CLRDIR`. In this example, the `ASSIGN`
command is used to show the current drive letter assignments. Then
the `CLRDIR` command is used to initialize the directory of drive 'G'
@@ -1407,9 +1422,11 @@ was 512, it would indicate a legacy (hd512) disk layout.
Although RomWBW can support many CP/M filesystem slices on a single
hard disk, you are still constrained by the physical capacity of the
actual hard disk. In most scenarios, RomWBW does not prevent you
from attempting to use more slices than will fit on your hard disk
device. If you attempt to do so, disk I/O errors will be reported.
actual hard disk. RomWBW does not prevent you from assigning slices
to drive letters even if the location of the slice does not fit on the
physical disk. Any attempt to access a drive letter mapped to a slice
that does not fit will result in an error such as "no disk" from the
operating system.
The exact number of CP/M filesystem slices that will fit on your
specific physical hard disk can be determined as follows:
@@ -1589,8 +1606,8 @@ but based on the idea that a 1GB CF or SD Card is easy and cheap to
acquire. It is fine if your hard disk is smaller than 1GB. It just
means that it will not be possible to use the pre-allocated FAT
filesystem partition and any CP/M filesystem slices that don't fit. You
will get I/O errors if you attempt to access an area beyond the end of
the physical hard disk.
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
CP/M filesystem slices. The true number of CP/M filesystem slices that

View File

@@ -24,27 +24,57 @@ ifeq ($(UNAME), Linux)
# uname machine strings for building Propeller
endif
SUBDIRS = HDIAG
.PHONY: doc prop shared bp images rom zrc zzrc
all: prop shared images rom zrc zzrc
doc:
$(MAKE) --directory Doc $(ACTION)
prop:
ifeq ($(BUILDPROP), 1)
SUBDIRS += Prop
$(MAKE) --directory Prop $(ACTION)
else
$(info "Builing Propeller is not supported on this $(ARCH) host Linux OS")
$(info Builing Propeller is not supported on this $(ARCH) host Linux OS)
endif
SUBDIRS += Apps
SUBDIRS += CBIOS
SUBDIRS += Forth
SUBDIRS += TastyBasic
SUBDIRS += Fonts
SUBDIRS += CPM22 ZCPR ZCPR-DJ ZSDOS CPM3 ZPM3 QPM
#SUBDIRS += BPBIOS
SUBDIRS += pSys
SUBDIRS += RomDsk
SUBDIRS += HBIOS
SUBDIRS += Images
SUBDIRS += ZRC
SUBDIRS += ZZRC
#SUBDIRS += Doc
TOOLS = ../Tools
include $(TOOLS)/Makefile.inc
shared:
$(MAKE) --directory HDIAG $(ACTION)
$(MAKE) --directory CBIOS $(ACTION)
$(MAKE) --directory CPM22 $(ACTION)
$(MAKE) --directory QPM $(ACTION)
$(MAKE) --directory ZCPR $(ACTION)
$(MAKE) --directory ZCPR-DJ $(ACTION)
$(MAKE) --directory ZSDOS $(ACTION)
$(MAKE) --directory CPM3 $(ACTION)
$(MAKE) --directory ZPM3 $(ACTION)
$(MAKE) --directory pSys $(ACTION)
$(MAKE) --directory Apps $(ACTION)
$(MAKE) --directory Forth $(ACTION)
$(MAKE) --directory TastyBasic $(ACTION)
$(MAKE) --directory Fonts $(ACTION)
$(MAKE) --directory RomDsk $(ACTION)
bp:
$(MAKE) --directory BPBIOS $(ACTION)
images:
$(MAKE) --directory Images $(ACTION)
rom:
$(MAKE) --directory HBIOS $(ACTION)
zrc:
$(MAKE) --directory ZRC $(ACTION)
zzrc:
$(MAKE) --directory ZZRC $(ACTION)
clean: ACTION=clean
clean: all
diff: ACTION=diff
diff: all

33
Source/ReadMeDoc.txt Normal file
View File

@@ -0,0 +1,33 @@
***********************************************************************
*** ***
*** R o m W B W ***
*** ***
*** Z80/Z180 System Software ***
*** ***
***********************************************************************
This document describes the process to build the custom documentation
for RomWBW. The RomWBW documentation is not normally built as part of
the full build process. This is because it requires external tools
to be installed.
All source documents are first pre-processed with gpp to allow use of
some global variable expansions. Pandoc is then used to generate a
variety of output formats. The most significant of these are the PDF
documents. Pandoc invokes a Latex-type processor (LuaTeX) to
produce the final PDF documents.
Required for Windows:
- Pandoc (https://pandoc.org/)
- MiKTeX (https://miktex.org/)
- Install Roboto font from MiKTeX Console
Required for Linux:
- gpp ((apt install gpp)
- Pandoc (dpkg -i pandoc-3.1.8-1-amd64.deb)
- TexLive (apt install texlive-latex-extra texlive-luatex fonts-roboto texlive-fonts-extra)
The source directory for the documentation is .../Source/Doc. From this
directory run Build.cmd for Windows or make for Linux to create the
output documents. This will create the final documents and copy them
to their destination directories.

View File

@@ -2,7 +2,7 @@
#DEFINE RMN 4
#DEFINE RUP 0
#DEFINE RTP 0
#DEFINE BIOSVER "3.4.0-dev.0"
#DEFINE BIOSVER "3.4.0-dev.4"
#define rmj RMJ
#define rmn RMN
#define rup RUP

View File

@@ -3,5 +3,5 @@ rmn equ 4
rup equ 0
rtp equ 0
biosver macro
db "3.4.0-dev.0"
db "3.4.0-dev.4"
endm