mirror of
https://github.com/wwarthen/RomWBW.git
synced 2026-02-06 22:43:15 -06:00
Compare commits
13 Commits
v3.5.0-dev
...
v3.5.0-dev
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
e18014a8a7 | ||
|
|
074f2cfdb2 | ||
|
|
91f5b36fbc | ||
|
|
9ad7798713 | ||
|
|
807999928e | ||
|
|
0b1bbf3d2b | ||
|
|
d93e639e4b | ||
|
|
b633c309f4 | ||
|
|
a00cf821c7 | ||
|
|
d13ea96f35 | ||
|
|
8e4bb575f1 | ||
|
|
ee8cdfa4b8 | ||
|
|
6f7d1447ea |
8
.github/workflows/commit.yml
vendored
8
.github/workflows/commit.yml
vendored
@@ -14,7 +14,7 @@ jobs:
|
||||
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v3.3.0
|
||||
uses: actions/checkout@v4.1.1
|
||||
|
||||
- name: Get Commit Ref
|
||||
run: |
|
||||
@@ -36,7 +36,7 @@ jobs:
|
||||
find -type f -exec md5sum '{}' \;
|
||||
|
||||
- name: Upload Artifact
|
||||
uses: actions/upload-artifact@v3.1.1
|
||||
uses: actions/upload-artifact@v4.3.0
|
||||
with:
|
||||
name: RomWBW-${{env.COMMIT_REF}}-Linux
|
||||
path: .
|
||||
@@ -46,7 +46,7 @@ jobs:
|
||||
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v3.3.0
|
||||
uses: actions/checkout@v4.1.1
|
||||
|
||||
- name: Get Commit Ref
|
||||
run: |
|
||||
@@ -68,7 +68,7 @@ jobs:
|
||||
find . -type f -exec md5 -r -- '{}' +;
|
||||
|
||||
- name: Upload Artifact
|
||||
uses: actions/upload-artifact@v3.1.1
|
||||
uses: actions/upload-artifact@v4.3.0
|
||||
with:
|
||||
name: RomWBW-${{env.COMMIT_REF}}-MacOS
|
||||
path: .
|
||||
|
||||
2
.github/workflows/release.yml
vendored
2
.github/workflows/release.yml
vendored
@@ -12,7 +12,7 @@ jobs:
|
||||
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v3.3.0
|
||||
uses: actions/checkout@v4.1.1
|
||||
|
||||
- name: Build
|
||||
run: |
|
||||
|
||||
@@ -1,3 +1,16 @@
|
||||
Version 3.5
|
||||
-----------
|
||||
- M?F: Fix for hours display in HBRTC application
|
||||
- M?F: Fix for assembly error in DS1501RTC driver
|
||||
- WBW: Add VT-100 graphics char selection to Propeller firmware
|
||||
- WBW: Allow all lines of VGA display to be used on Propeller firmware
|
||||
- WBW: Allow front panel LED/Switch bits to be inverted in config
|
||||
- WBW: Add API to expose application banks available
|
||||
- WBW: Added console takeover at boot loader prompt
|
||||
- L?N: Fixed Propeller font vertical line character to align properly
|
||||
- L?S: EF9345 video display controller driver
|
||||
- WBW: Added Cowgol disk image based on the work of Ladislau Szilagyi
|
||||
|
||||
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.
@@ -3,7 +3,7 @@
|
||||
**RomWBW ReadMe** \
|
||||
Version 3.5 \
|
||||
Wayne Warthen ([wwarthen@gmail.com](mailto:wwarthen@gmail.com)) \
|
||||
12 Jan 2024
|
||||
10 Feb 2024
|
||||
|
||||
# Overview
|
||||
|
||||
@@ -223,6 +223,12 @@ let me know if I missed you!
|
||||
|
||||
- Bill Shen has contributed boot loaders for several of his systems.
|
||||
|
||||
- Laszlo Szolnoki has contributed an EF9345 video display controller
|
||||
driver.
|
||||
|
||||
- Ladislau Szilagyi has contributed an enhanced version of CP/M Cowgol
|
||||
that leverages RomWBW memory banking.
|
||||
|
||||
Contributions of all kinds to RomWBW are very welcome.
|
||||
|
||||
# Licensing
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
RomWBW ReadMe
|
||||
Wayne Warthen (wwarthen@gmail.com)
|
||||
12 Jan 2024
|
||||
10 Feb 2024
|
||||
|
||||
|
||||
|
||||
@@ -224,6 +224,12 @@ let me know if I missed you!
|
||||
|
||||
- Bill Shen has contributed boot loaders for several of his systems.
|
||||
|
||||
- Laszlo Szolnoki has contributed an EF9345 video display controller
|
||||
driver.
|
||||
|
||||
- Ladislau Szilagyi has contributed an enhanced version of CP/M Cowgol
|
||||
that leverages RomWBW memory banking.
|
||||
|
||||
Contributions of all kinds to RomWBW are very welcome.
|
||||
|
||||
|
||||
|
||||
@@ -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
|
||||
;
|
||||
|
||||
@@ -271,9 +271,9 @@ diskdef interak
|
||||
os 2.2
|
||||
end
|
||||
|
||||
# RomWBW 256KB ROM (128KB reserved, 128KB ROM Disk)
|
||||
# RomWBW 128KB ROM Disk
|
||||
|
||||
diskdef wbw_rom256
|
||||
diskdef wbw_rom128
|
||||
seclen 512
|
||||
tracks 4
|
||||
sectrk 64
|
||||
@@ -284,35 +284,9 @@ diskdef wbw_rom256
|
||||
os 2.2
|
||||
end
|
||||
|
||||
# RomWBW 512KB ROM (128KB reserved, 384KB ROM Disk)
|
||||
# RomWBW 256KB ROM Disk
|
||||
|
||||
diskdef wbw_rom512
|
||||
seclen 512
|
||||
tracks 12
|
||||
sectrk 64
|
||||
blocksize 2048
|
||||
maxdir 256
|
||||
skew 0
|
||||
boottrk 0
|
||||
os 2.2
|
||||
end
|
||||
|
||||
# RomWBW 1024KB ROM (128KB reserved, 896KB ROM Disk)
|
||||
|
||||
diskdef wbw_rom1024
|
||||
seclen 512
|
||||
tracks 28
|
||||
sectrk 64
|
||||
blocksize 2048
|
||||
maxdir 256
|
||||
skew 0
|
||||
boottrk 0
|
||||
os 2.2
|
||||
end
|
||||
|
||||
# RomWBW 512KB RAM (256KB reserved, 256KB RAM Disk)
|
||||
|
||||
diskdef wbw_ram512
|
||||
diskdef wbw_rom256
|
||||
seclen 512
|
||||
tracks 8
|
||||
sectrk 64
|
||||
@@ -323,11 +297,24 @@ diskdef wbw_ram512
|
||||
os 2.2
|
||||
end
|
||||
|
||||
# RomWBW 1024KB RAM (256KB reserved, 768KB RAM Disk)
|
||||
# RomWBW 384KB ROM Disk
|
||||
|
||||
diskdef wbw_ram1024
|
||||
diskdef wbw_rom384
|
||||
seclen 512
|
||||
tracks 24
|
||||
tracks 12
|
||||
sectrk 64
|
||||
blocksize 2048
|
||||
maxdir 256
|
||||
skew 0
|
||||
boottrk 0
|
||||
os 2.2
|
||||
end
|
||||
|
||||
# RomWBW 896KB ROM Disk
|
||||
|
||||
diskdef wbw_rom896
|
||||
seclen 512
|
||||
tracks 28
|
||||
sectrk 64
|
||||
blocksize 2048
|
||||
maxdir 256
|
||||
|
||||
@@ -214,6 +214,12 @@ please let me know if I missed you!
|
||||
* Bill Shen has contributed boot loaders for several of his
|
||||
systems.
|
||||
|
||||
* Laszlo Szolnoki has contributed an EF9345 video display
|
||||
controller driver.
|
||||
|
||||
* Ladislau Szilagyi has contributed an enhanced version of
|
||||
CP/M Cowgol that leverages RomWBW memory banking.
|
||||
|
||||
Contributions of all kinds to RomWBW are very welcome.
|
||||
|
||||
# Licensing
|
||||
|
||||
@@ -312,13 +312,13 @@ hardware into the proper mode, etc.
|
||||
## Invocation
|
||||
|
||||
HBIOS functions are invoked by placing the required parameters in CPU
|
||||
registers and executing an RST 08 instruction. Note that HBIOS does not
|
||||
registers and executing an `RST 08` instruction. Note that HBIOS does not
|
||||
preserve register values that are unused. However, the values of the Z80
|
||||
alternate registers and IX/IY will be preserved (these registers may be
|
||||
used within HBIOS, but will be saved and restored internally).
|
||||
|
||||
An alternate method of invoking HBIOS functions is to use `CALL 0xFFF0`.
|
||||
Since the RST 08 vector exists in page zero of the CPU address space,
|
||||
An alternate method of invoking HBIOS functions is to use `CALL $FFF0`.
|
||||
Since the `RST 08` vector exists in page zero of the CPU address space,
|
||||
it may be paged out when alternate memory banks are selected. If this
|
||||
may be true when you are invoking a function, you should use the `CALL`
|
||||
method.
|
||||
@@ -352,6 +352,12 @@ buffers) will require double-buffering if the caller’s buffer is in the
|
||||
lower 32K of CPU address space. For optimal performance, such buffers
|
||||
should be placed in the upper 32K of CPU address space.
|
||||
|
||||
HBIOS also implements a small number of core functions in the HBIOS
|
||||
proxy area at the top of RAM. These exist primarily to faciliate the
|
||||
operation of normal HBIOS function calls. However, they are available
|
||||
to be used by OSes and applications. These functions can only be
|
||||
invoked by calling into a jump table in upper RAM.
|
||||
|
||||
## Result Codes
|
||||
|
||||
The following function result codes are defined generically for all
|
||||
@@ -664,11 +670,10 @@ by this function. The function typically just records the sector
|
||||
address for subsequent I/O function calls.
|
||||
|
||||
The double-word Sector Address (DEHL) can represent either a Logical
|
||||
Block Address (LBA) or a Cylinder/Head/Sector (CHS). If the high bit of
|
||||
register D is set, then an LBA value is specified. Otherwise, the
|
||||
value is CHS.
|
||||
Block Address (LBA) or a Cylinder/Head/Sector (CHS). Bit 7 of D is
|
||||
set (1) for LBA mode and cleared (0) for CHS mode.
|
||||
|
||||
For LBA mode operation, the high bit is cleared and the entire
|
||||
For LBA mode operation, the high bit is set and the rest of the
|
||||
double-word is then treated as the logical sector address.
|
||||
|
||||
For CHS mode operation, the Sector Address (DEHL) registers are
|
||||
@@ -1976,10 +1981,25 @@ The hardware Platform (L) is identified as follows:
|
||||
| C: Bank ID | C: Prior Bank ID |
|
||||
|
||||
Activates the specified memory Bank ID (C) and returns the Prior Bank ID
|
||||
(C). The function **must** be invoked from code located in the upper
|
||||
(C).
|
||||
|
||||
The function **must** be invoked from code located in the upper
|
||||
32K and the stack **must** be in the upper 32K. The Status (A) is a
|
||||
standard HBIOS result code.
|
||||
|
||||
If the system is using interrupt mode 1 interrupts, the you **must**
|
||||
take steps to ensure interrupts are properly handled. You generally
|
||||
have two choices:
|
||||
|
||||
- Disable interrupts while the User Bank is switched out
|
||||
- Duplicate the interrupt mode 1 vector from the User Bank
|
||||
into the bank you are switching to.
|
||||
|
||||
If the User Bank has been switched out, you will not be able to
|
||||
invoke the HBIOS API functions using an `RST 08` instruction. You can
|
||||
use the alternative mechanism using `CALL $FFF0` as described in
|
||||
[Invocation].
|
||||
|
||||
### Function 0xF3 -- System Get Bank (SYSGETBNK)
|
||||
|
||||
| **Entry Parameters** | **Returned Values** |
|
||||
@@ -2349,6 +2369,38 @@ This function will return the current value of the switches (L) from the
|
||||
front panel of the system. If no front panel is available in the
|
||||
system, the returned Status (A) will indicate a No Hardware error.
|
||||
|
||||
#### SYSGET Subfunction 0xF5 -- Get Application Banks Information (APPBNKS)
|
||||
|
||||
| **Entry Parameters** | **Returned Values** |
|
||||
|----------------------------------------|----------------------------------------|
|
||||
| B: 0xF8 | A: Status |
|
||||
| C: 0xF5 | H: App Banks Start ID |
|
||||
| | L: App Banks Count |
|
||||
| | E: Bank Size |
|
||||
|
||||
HBIOS may be configured to reserve a number of RAM memory banks that
|
||||
will be available for application use. This function returns
|
||||
information about the RAM memory banks currently available for
|
||||
application use. The function provides the bank id of the first
|
||||
available application bank (H) and the count of banks available (L). It
|
||||
also returns the size of a bank expressed as a number of 256-byte pages
|
||||
(E). The returned Status (A) is a standard HBIOS result code.
|
||||
|
||||
The application banks are always a contiguous set of banks, so the App
|
||||
Banks Start ID can be incremented to address additional banks up to the
|
||||
limit indicated by App Banks Count. If the App Banks Count is zero,
|
||||
then there are no application banks available (regardless of the value
|
||||
of App Banks Start ID).
|
||||
|
||||
HBIOS does not provide any mechanism to reserve application banks. Any
|
||||
concept of allocation of application banks must be implemented within
|
||||
the OS or application.
|
||||
|
||||
This function does not change the current bank selected. You must use
|
||||
[Function 0xF2 -- System Set Bank (SYSSETBNK)] or the proxy function
|
||||
[Bank Select (BNKSEL)] for this. Be sure
|
||||
to observe the warnings in the description of this function.
|
||||
|
||||
### Function 0xF9 -- System Set (SYSSET)
|
||||
|
||||
| **Entry Parameters** | **Returned Values** |
|
||||
@@ -2574,6 +2626,111 @@ provided.
|
||||
|
||||
`\clearpage`{=latex}
|
||||
|
||||
## Proxy Functions
|
||||
|
||||
The following special functions are implemented inside of the HBIOS
|
||||
proxy area at the top of RAM. They do not cause a bank switch and are,
|
||||
therefore, much faster than their corresponding HBIOS API functions.
|
||||
|
||||
The functions are invoked via the following dedicated jump table:
|
||||
|
||||
| **Function** | **Address** | ** Equate ** |
|
||||
|----------------------------------------|---------------|------------------------|
|
||||
| Invoke HBIOS Function (INVOKE) | 0xFFF0 | HB_INVOKE |
|
||||
| Bank Select (BNKSEL) | 0xFFF3 | HB_BNKSEL |
|
||||
| Bank Copy (BNKCPY) | 0xFFF6 | HB_BNKCPY |
|
||||
| Bank Call (BNKCALL) | 0xFFF9 | HB_BNKCALL |
|
||||
|
||||
The function addresses are also defined as equates in hbios.inc. It
|
||||
is suggested that you use the equates when possible.
|
||||
|
||||
To use the functions, you may either call or jump to them. Some
|
||||
examples:
|
||||
|
||||
```
|
||||
CALL $FFF0
|
||||
JP $FFF3
|
||||
CALL HB_BNKCPY
|
||||
```
|
||||
|
||||
These functions are inherently dangerous and generally not value
|
||||
checked. Use with extreme caution.
|
||||
|
||||
### Invoke HBIOS Function (INVOKE)
|
||||
|
||||
**Address 0xFFF0**
|
||||
|
||||
This function is an alternate mechanism for invoking the normal HBIOS
|
||||
API functions. The parameters and return values are as documented
|
||||
above. To put it another way, `CALL $FFF0` is equivalent to `RST 08`,
|
||||
but it can be used in any scenario when the normal bank is not
|
||||
selected.
|
||||
|
||||
### Bank Select (BNKSEL)
|
||||
|
||||
**Address 0xFFF3**
|
||||
|
||||
| **Entry Parameters** | **Returned Values** |
|
||||
|----------------------------------------|----------------------------------------|
|
||||
| A: Bank ID | |
|
||||
|
||||
This function will select the memory bank identified by Bank ID (A).
|
||||
Register AF is destroyed. All other registers are preserved.
|
||||
|
||||
The warnings described in [Function 0xF2 -- System Set Bank (SYSSETBNK)]
|
||||
should be observed.
|
||||
|
||||
### Bank Copy (BNKCPY)
|
||||
|
||||
**Address 0xFFF6**
|
||||
|
||||
| **Entry Parameters** | **Returned Values** |
|
||||
|----------------------------------------|----------------------------------------|
|
||||
| HL: Source Address | HL: Ending Source Address |
|
||||
| DE: Destination Address | DE: Ending Destination Address |
|
||||
| BC: Count | BC: 0 |
|
||||
| HB_SRCBNK: Source Bank ID | |
|
||||
| HB_DSTBNK: Destination Bank ID | |
|
||||
|
||||
This function will copy Count (BC) bytes from Source Address (HL) in
|
||||
Source Bank ID (HB_SRCBNK) to Destination Address (DE) in Destination
|
||||
Bank ID (HB_DSTBNK). The HB_SRCBNK and HB_DSTBNK fields are dedicated
|
||||
locations in the proxy. These locations are defined in hbios.inc:
|
||||
|
||||
- Source Bank ID: `HB_SRCBNK` = $FFE4
|
||||
- Destination Bank ID: `HB_DSTBNK` = $FFE7
|
||||
|
||||
The Source Bank ID and Destination Bank ID values must be populated in
|
||||
the specified addresses before calling this function.
|
||||
|
||||
During processing, HL and DE, will be incremented. At termination,
|
||||
HL and DE will contain the "next" source/destination addresses that
|
||||
would be copied. This allows this function to be invoked repeatedly
|
||||
to copy continuous blocks of data.
|
||||
|
||||
Register AF is destroyed by this function. Register BC will be 0.
|
||||
|
||||
### Bank Call (BNKCALL)
|
||||
|
||||
**Address 0xFFF9**
|
||||
|
||||
| **Entry Parameters** | **Returned Values** |
|
||||
|----------------------------------------|----------------------------------------|
|
||||
| A: Target Bank ID | |
|
||||
| IX: Target Address | |
|
||||
|
||||
This function will perform a function call to a routine in another
|
||||
bank. It does this by selecting the Target Bank ID (A) and then
|
||||
calling the Target Address (IX). On return from the target function,
|
||||
the originally active bank is selected.
|
||||
|
||||
Register usage is determined by the routine that is called.
|
||||
|
||||
Since a different bank will be selected while the target function is
|
||||
active, the warnings described in
|
||||
[Function 0xF2 -- System Set Bank (SYSSETBNK)] should be observed.
|
||||
|
||||
`\clearpage`{=latex}
|
||||
|
||||
# Errors and diagnostics
|
||||
|
||||
|
||||
@@ -897,6 +897,31 @@ The use of diagnostic levels above 4 are really intended only for
|
||||
software developers. I do not recommend changing this under
|
||||
normal circumstances.
|
||||
|
||||
## Console Takeover
|
||||
|
||||
If your system has more than one character unit, then the Boot Loader
|
||||
will "poll" all of the character devices for a request to make any of
|
||||
the alternate character devices the active console. This is called a
|
||||
console takeover request. This functionality must be enabled in the ROM
|
||||
build configuration, but currently it is for all standard ROMs.
|
||||
|
||||
To request a console takeover, you just press the \<space\> character
|
||||
twice in a row at the port or terminal that you want to move the console
|
||||
to. The terminal or communication software **must** be configured for
|
||||
the default serial port speed and data bits for this to work.
|
||||
|
||||
A takeover request is only possible while the active console is
|
||||
showing the Boot Loader prompt prior to typing any characters at
|
||||
the active console. In other words, once you start typing at the
|
||||
active console prompt, the takeover polling is suspended. If you have
|
||||
started typing characters, you can press \<enter\> at the active
|
||||
console to get a fresh Boot Loader prompt and reactivate the polling.
|
||||
|
||||
If you have built a custom ROM that includes an automatic boot
|
||||
command with a timeout, then performing a console takeover will
|
||||
abort the timeout process and the automatic boot command will not be
|
||||
performed.
|
||||
|
||||
## Front Panel
|
||||
|
||||
RomWBW supports the concept of a simple front panel. The following
|
||||
@@ -924,7 +949,8 @@ output on the console. The meaning of the LEDs is:
|
||||
|
||||
Once the system has booted, the LEDs are used to indicate disk device
|
||||
activity. Each LED numbered 7-0 represents disk units 7-0. As each
|
||||
disk device performs I/O, the LED will light.
|
||||
disk device performs I/O, the LED will light while the disk is active.
|
||||
This is only possible for the first 8 disk units.
|
||||
|
||||
The second row of the front panel is composed of switches that allow
|
||||
you to control a few aspects of the system startup.
|
||||
@@ -1749,10 +1775,84 @@ with 6 slices containing 5 ready-to-run OSes and a slice with
|
||||
the WordStar application files. Alternatively, you can create your own
|
||||
hard disk image with the specific slice contents you choose.
|
||||
|
||||
#### Standard Hard Disk Physical Layout
|
||||
|
||||
As previously described in [Hard Disk Layouts], the exact placement of
|
||||
slices and optional FAT partition will vary depending on which disk
|
||||
layout (hd512 or hd1k) you are using and your partition table entries.
|
||||
To simplify the use of hard disk images, RomWBW has adopted standard
|
||||
partition table entries for disk image files provided.
|
||||
|
||||
These partition sizes and locations were chosen to:
|
||||
|
||||
- Fit entirely on 1GB media
|
||||
- Allow for 64 CP/M filesystem slices
|
||||
- Allow for a 384KB FAT filesystem
|
||||
|
||||
**NOTE:** RomWBW is not limited to these partition table entries. You
|
||||
can change the size and location of the RomWBW and/or FAT partitions to
|
||||
increase/decrease the number of slices or FAT filesystem size.
|
||||
|
||||
+---------------------------------+-------------------------------+-------------------------------+
|
||||
| | **--- Legacy (hd512) ---** | **--- Modern (hd1k) ---** |
|
||||
| +---------------+---------------+---------------+---------------+
|
||||
| | Byte(s) | Sector(s) | Byte(s) | Sector(s) |
|
||||
+=================================+==============:+==============:+==============:+==============:+
|
||||
| RomWBW (slices) Start | 0 | 0 | 1,048,576 | 2,048 |
|
||||
+---------------------------------+---------------+---------------+---------------+---------------+
|
||||
| RomWBW (slices) Size | 545,259,520 | 1,064,960 | 536,870,912 | 1,048,576 |
|
||||
+---------------------------------+---------------+---------------+---------------+---------------+
|
||||
| FAT Filesystem Start | 545,259,520 | 1,064,960 | 537,919,488 | 1,050,624 |
|
||||
+---------------------------------+---------------+---------------+---------------+---------------+
|
||||
| FAT Filesystem Size | 402,653,184 | 786,432 | 402,653,184 | 786,432 |
|
||||
+---------------------------------+---------------+---------------+---------------+---------------+
|
||||
| \<end\> | 947,912,704 | 1,851,392 | 940,572,672 | 1,837,056 |
|
||||
+---------------------------------+---------------+---------------+---------------+---------------+
|
||||
|
||||
The above partition table entries will result in the following locations and sizes of
|
||||
filesystems on the RomWBW disk images.
|
||||
|
||||
|
||||
+---------------------------------+-------------------------------+-------------------------------+
|
||||
| | **--- Legacy (hd512) ---** | **--- Modern (hd1k) ---** |
|
||||
| +---------------+---------------+---------------+---------------+
|
||||
| | Byte(s) | Sector(s) | Byte(s) | Sector(s) |
|
||||
+=================================+==============:+==============:+==============:+==============:+
|
||||
| Prefix Start | -- | -- | 0 | 0 |
|
||||
+---------------------------------+---------------+---------------+---------------+---------------+
|
||||
| Prefix Size | -- | -- | 1,048,576 | 2,048 |
|
||||
+---------------------------------+---------------+---------------+---------------+---------------+
|
||||
| Slice Size | 8,519,680 | 16,640 | 8,388,608 | 16,384 |
|
||||
+---------------------------------+---------------+---------------+---------------+---------------+
|
||||
| Slice 0 Start | 0 | 0 | 1,048,576 | 2,048 |
|
||||
+---------------------------------+---------------+---------------+---------------+---------------+
|
||||
| Slice 1 Start | 8,519,680 | 16,640 | 9,437,184 | 18,432 |
|
||||
+---------------------------------+---------------+---------------+---------------+---------------+
|
||||
| Slice 2 Start | 17,039,360 | 33,280 | 17,825,792 | 34,816 |
|
||||
+---------------------------------+---------------+---------------+---------------+---------------+
|
||||
| Slice 3 Start | 25,559,040 | 49,920 | 26,214,400 | 51,200 |
|
||||
+---------------------------------+---------------+---------------+---------------+---------------+
|
||||
| Slice 4 Start | 34,078,720 | 66,560 | 34,603,008 | 67,584 |
|
||||
+---------------------------------+---------------+---------------+---------------+---------------+
|
||||
| Slice 5 Start | 42,598,400 | 83,200 | 42,991,616 | 83,968 |
|
||||
+---------------------------------+---------------+---------------+---------------+---------------+
|
||||
| Slice 6 Start | 51,118,080 | 99,840 | 51,380,224 | 100,352 |
|
||||
+---------------------------------+---------------+---------------+---------------+---------------+
|
||||
| Slice 7 Start | 59,637,760 | 116,480 | 59,768,832 | 116,736 |
|
||||
+---------------------------------+---------------+---------------+---------------+---------------+
|
||||
| Slice 63 Start | 536,739,840 | 1,048,320 | 529,530,880 | 1,034,240 |
|
||||
+---------------------------------+---------------+---------------+---------------+---------------+
|
||||
| FAT Filesystem Start | 545,259,520 | 1,064,960 | 537,919,488 | 1,050,624 |
|
||||
+---------------------------------+---------------+---------------+---------------+---------------+
|
||||
| FAT Filesystem Size | 402,653,184 | 786,432 | 402,653,184 | 786,432 |
|
||||
+---------------------------------+---------------+---------------+---------------+---------------+
|
||||
| \<end\> | 947,912,704 | 1,851,392 | 940,572,672 | 1,837,056 |
|
||||
+---------------------------------+---------------+---------------+---------------+---------------+
|
||||
|
||||
#### Combo Hard Disk Image
|
||||
|
||||
The combo disk image is essentially just a single image that has several
|
||||
of the individual filesystem images (slices) already concatenated
|
||||
of the individual filesystem images (slices) already concatenated
|
||||
together. The combo disk image contains the following 6 slices in the
|
||||
positions indicated:
|
||||
|
||||
@@ -3917,6 +4017,12 @@ please let me know if I missed you!
|
||||
* Bill Shen has contributed boot loaders for several of his
|
||||
systems.
|
||||
|
||||
* Laszlo Szolnoki has contributed an EF9345 video display
|
||||
controller driver.
|
||||
|
||||
* Ladislau Szilagyi has contributed an enhanced version of
|
||||
CP/M Cowgol that leverages RomWBW memory banking.
|
||||
|
||||
Contributions of all kinds to RomWBW are very welcome.
|
||||
|
||||
# Licensing
|
||||
@@ -5558,6 +5664,7 @@ may be discovered by RomWBW in your system.
|
||||
| DS1501RTC | RTC | Maxim DS1501/DS1511 Watchdog Real-Time Clock |
|
||||
| DSRTC | RTC | Maxim DS1302 Real-Time Clock w/ NVRAM |
|
||||
| DUART | Char | SCC2681 or compatible Dual UART |
|
||||
| EF | Char | EF9345 Video Display Controller |
|
||||
| EMM | Disk | Disk drive on Parallel Port emm interface (Zip Drive) |
|
||||
| FD | Disk | 8272 or compatible Floppy Disk Controller |
|
||||
| FP | System | Simple LED & Switch Front Panel |
|
||||
|
||||
@@ -135,11 +135,11 @@ for %%f in (hbios_rom.bin osimg.bin osimg1.bin osimg2.bin) do (
|
||||
::
|
||||
|
||||
if %ROMSize% gtr 0 (
|
||||
copy /b hbios_rom.bin + osimg.bin + osimg1.bin + osimg2.bin + ..\RomDsk\rom%ROMSize%_wbw.dat %ROMName%.rom || exit /b
|
||||
copy /b hbios_rom.bin + osimg.bin + osimg1.bin + osimg2.bin + ..\RomDsk\rom%ROMDiskSize%_wbw.dat %ROMName%.rom || exit /b
|
||||
copy /b hbios_rom.bin + osimg.bin + osimg1.bin + osimg2.bin %ROMName%.upd || exit /b
|
||||
copy /b hbios_app.bin + osimg_small.bin %ROMName%.com || exit /b
|
||||
) else (
|
||||
copy /b hbios_rom.bin + osimg.bin + osimg1.bin + osimg2.bin + ..\RomDsk\ram%RAMSize%_wbw.dat %ROMName%.rom || exit /b
|
||||
copy /b hbios_rom.bin + osimg.bin + osimg1.bin + osimg2.bin + ..\RomDsk\rom%RAMDiskSize%_wbw.dat %ROMName%.rom || exit /b
|
||||
copy /b hbios_rom.bin + osimg.bin + osimg1.bin + osimg2.bin %ROMName%.upd || exit /b
|
||||
copy /b hbios_app.bin + osimg_small.bin %ROMName%.com || exit /b
|
||||
)
|
||||
@@ -174,10 +174,10 @@ copy /b romldr.bin + dbgmon.bin + ..\zsdos\zsys_una.bin + ..\cpm22\cpm_una.bin o
|
||||
|
||||
:: Copy OS Bank and ROM Disk image files to output
|
||||
copy /b osimg.bin ..\..\Binary\UNA_WBW_SYS.bin || exit /b
|
||||
copy /b ..\RomDsk\rom%ROMSize%_una.dat ..\..\Binary\UNA_WBW_ROM%ROMSize%.bin || exit /b
|
||||
copy /b ..\RomDsk\rom%ROMDiskSize%_una.dat ..\..\Binary\UNA_WBW_ROM%ROMDiskSize%.bin || exit /b
|
||||
|
||||
:: Create the final ROM image
|
||||
copy /b ..\UBIOS\UNA-BIOS.BIN + osimg.bin + ..\UBIOS\FSFAT.BIN + ..\RomDsk\rom%ROMSize%_una.dat %ROMName%.rom || exit /b
|
||||
copy /b ..\UBIOS\UNA-BIOS.BIN + osimg.bin + ..\UBIOS\FSFAT.BIN + ..\RomDsk\rom%ROMDiskSize%_una.dat %ROMName%.rom || exit /b
|
||||
|
||||
:: Copy to output
|
||||
copy %ROMName%.rom ..\..\Binary || exit /b
|
||||
|
||||
@@ -115,4 +115,4 @@ fi
|
||||
|
||||
#echo OBJECTS=${OBJECTS}
|
||||
|
||||
make ROM_PLATFORM=${ROM_PLATFORM} ROM_CONFIG=${ROM_CONFIG} ROMSIZE=${ROMSIZE} RAMSIZE=${RAMSIZE}
|
||||
make ROM_PLATFORM=${ROM_PLATFORM} ROM_CONFIG=${ROM_CONFIG} ROMSIZE=${ROMSIZE} RAMSIZE=${RAMSIZE} ROMDISKSIZE=${ROMDISKSIZE} RAMDISKSIZE=${RAMDISKSIZE}
|
||||
|
||||
@@ -50,6 +50,7 @@ TMSENABLE .SET FALSE ; TMS: ENABLE TMS9918 VIDEO/KBD DRIVER (TMS.ASM)
|
||||
TMSMODE .SET TMSMODE_MSX ; TMS: DRIVER MODE: TMSMODE_[SCG|N8|MBC|MSX|MSX9958|MSXKBD|COLECO]
|
||||
MKYENABLE .SET FALSE ; MSX 5255 PPI KEYBOARD COMPATIBLE DRIVER (REQUIRES TMS VDA DRIVER)
|
||||
VRCENABLE .SET FALSE ; VRC: ENABLE VGARC VIDEO/KBD DRIVER (VRC.ASM)
|
||||
EFENABLE .SET FALSE ; EF: ENABLE EF9345 VIDEO DRIVER (EF.ASM)
|
||||
VDAEMU_SERKBD .SET 0 ; VDA EMULATION: SERIAL KBD UNIT #, OR $FF FOR HW KBD
|
||||
;
|
||||
;
|
||||
|
||||
@@ -50,6 +50,7 @@ TMSENABLE .SET FALSE ; TMS: ENABLE TMS9918 VIDEO/KBD DRIVER (TMS.ASM)
|
||||
TMSMODE .SET TMSMODE_MSX ; TMS: DRIVER MODE: TMSMODE_[SCG|N8|MBC|MSX|MSX9958|MSXKBD|COLECO]
|
||||
MKYENABLE .SET FALSE ; MSX 5255 PPI KEYBOARD COMPATIBLE DRIVER (REQUIRES TMS VDA DRIVER)
|
||||
VRCENABLE .SET FALSE ; VRC: ENABLE VGARC VIDEO/KBD DRIVER (VRC.ASM)
|
||||
EFENABLE .SET FALSE ; EF: ENABLE EF9345 VIDEO DRIVER (EF.ASM)
|
||||
VDAEMU_SERKBD .SET 0 ; VDA EMULATION: SERIAL KBD UNIT #, OR $FF FOR HW KBD
|
||||
;
|
||||
AY38910ENABLE .SET FALSE ; AY: AY-3-8910 / YM2149 SOUND DRIVER
|
||||
|
||||
@@ -58,6 +58,7 @@ TMSENABLE .SET FALSE ; TMS: ENABLE TMS9918 VIDEO/KBD DRIVER (TMS.ASM)
|
||||
TMSMODE .SET TMSMODE_MSX ; TMS: DRIVER MODE: TMSMODE_[SCG|N8|MBC|MSX|MSX9958|MSXKBD|COLECO]
|
||||
MKYENABLE .SET FALSE ; MSX 5255 PPI KEYBOARD COMPATIBLE DRIVER (REQUIRES TMS VDA DRIVER)
|
||||
VRCENABLE .SET FALSE ; VRC: ENABLE VGARC VIDEO/KBD DRIVER (VRC.ASM)
|
||||
EFENABLE .SET FALSE ; EF: ENABLE EF9345 VIDEO DRIVER (EF.ASM)
|
||||
VDAEMU_SERKBD .SET 0 ; VDA EMULATION: SERIAL KBD UNIT #, OR $FF FOR HW KBD
|
||||
;
|
||||
;
|
||||
|
||||
@@ -49,6 +49,7 @@ TMSENABLE .SET FALSE ; TMS: ENABLE TMS9918 VIDEO/KBD DRIVER (TMS.ASM)
|
||||
TMSMODE .SET TMSMODE_MSX ; TMS: DRIVER MODE: TMSMODE_[SCG|N8|MBC|MSX|MSX9958|MSXKBD|COLECO]
|
||||
MKYENABLE .SET FALSE ; MSX 5255 PPI KEYBOARD COMPATIBLE DRIVER (REQUIRES TMS VDA DRIVER)
|
||||
VRCENABLE .SET FALSE ; VRC: ENABLE VGARC VIDEO/KBD DRIVER (VRC.ASM)
|
||||
EFENABLE .SET FALSE ; EF: ENABLE EF9345 VIDEO DRIVER (EF.ASM)
|
||||
VDAEMU_SERKBD .SET 0 ; VDA EMULATION: SERIAL KBD UNIT #, OR $FF FOR HW KBD
|
||||
;
|
||||
AY38910ENABLE .SET FALSE ; AY: AY-3-8910 / YM2149 SOUND DRIVER
|
||||
|
||||
@@ -49,6 +49,7 @@ TMSENABLE .SET FALSE ; TMS: ENABLE TMS9918 VIDEO/KBD DRIVER (TMS.ASM)
|
||||
TMSMODE .SET TMSMODE_MSX ; TMS: DRIVER MODE: TMSMODE_[SCG|N8|MBC|MSX|MSX9958|MSXKBD|COLECO]
|
||||
MKYENABLE .SET FALSE ; MSX 5255 PPI KEYBOARD COMPATIBLE DRIVER (REQUIRES TMS VDA DRIVER)
|
||||
VRCENABLE .SET FALSE ; VRC: ENABLE VGARC VIDEO/KBD DRIVER (VRC.ASM)
|
||||
EFENABLE .SET FALSE ; EF: ENABLE EF9345 VIDEO DRIVER (EF.ASM)
|
||||
VDAEMU_SERKBD .SET 0 ; VDA EMULATION: SERIAL KBD UNIT #, OR $FF FOR HW KBD
|
||||
;
|
||||
AY38910ENABLE .SET FALSE ; AY: AY-3-8910 / YM2149 SOUND DRIVER
|
||||
|
||||
@@ -54,6 +54,7 @@ TMSENABLE .SET FALSE ; TMS: ENABLE TMS9918 VIDEO/KBD DRIVER (TMS.ASM)
|
||||
TMSMODE .SET TMSMODE_MSX ; TMS: DRIVER MODE: TMSMODE_[SCG|N8|MBC|MSX|MSX9958|MSXKBD|COLECO]
|
||||
MKYENABLE .SET FALSE ; MSX 5255 PPI KEYBOARD COMPATIBLE DRIVER (REQUIRES TMS VDA DRIVER)
|
||||
VRCENABLE .SET TRUE ; VRC: ENABLE VGARC VIDEO/KBD DRIVER (VRC.ASM)
|
||||
EFENABLE .SET FALSE ; EF: ENABLE EF9345 VIDEO DRIVER (EF.ASM)
|
||||
VDAEMU_SERKBD .SET $FF ; VDA EMULATION: SERIAL KBD UNIT #, OR $FF FOR HW KBD
|
||||
;
|
||||
AY38910ENABLE .SET FALSE ; AY: AY-3-8910 / YM2149 SOUND DRIVER
|
||||
|
||||
@@ -60,6 +60,7 @@ TMSENABLE .SET FALSE ; TMS: ENABLE TMS9918 VIDEO/KBD DRIVER (TMS.ASM)
|
||||
TMSMODE .SET TMSMODE_MSX ; TMS: DRIVER MODE: TMSMODE_[SCG|N8|MBC|MSX|MSX9958|MSXKBD|COLECO]
|
||||
MKYENABLE .SET FALSE ; MSX 5255 PPI KEYBOARD COMPATIBLE DRIVER (REQUIRES TMS VDA DRIVER)
|
||||
VRCENABLE .SET TRUE ; VRC: ENABLE VGARC VIDEO/KBD DRIVER (VRC.ASM)
|
||||
EFENABLE .SET FALSE ; EF: ENABLE EF9345 VIDEO DRIVER (EF.ASM)
|
||||
VDAEMU_SERKBD .SET $FF ; VDA EMULATION: SERIAL KBD UNIT #, OR $FF FOR HW KBD
|
||||
;
|
||||
AY38910ENABLE .SET FALSE ; AY: AY-3-8910 / YM2149 SOUND DRIVER
|
||||
|
||||
@@ -60,6 +60,7 @@ TMSENABLE .SET FALSE ; TMS: ENABLE TMS9918 VIDEO/KBD DRIVER (TMS.ASM)
|
||||
TMSMODE .SET TMSMODE_MSX ; TMS: DRIVER MODE: TMSMODE_[SCG|N8|MBC|MSX|MSX9958|MSXKBD|COLECO]
|
||||
MKYENABLE .SET FALSE ; MSX 5255 PPI KEYBOARD COMPATIBLE DRIVER (REQUIRES TMS VDA DRIVER)
|
||||
VRCENABLE .SET TRUE ; VRC: ENABLE VGARC VIDEO/KBD DRIVER (VRC.ASM)
|
||||
EFENABLE .SET FALSE ; EF: ENABLE EF9345 VIDEO DRIVER (EF.ASM)
|
||||
VDAEMU_SERKBD .SET $FF ; VDA EMULATION: SERIAL KBD UNIT #, OR $FF FOR HW KBD
|
||||
;
|
||||
AY38910ENABLE .SET FALSE ; AY: AY-3-8910 / YM2149 SOUND DRIVER
|
||||
|
||||
@@ -63,6 +63,7 @@ TMSTIMENABLE .SET FALSE ; TMS: ENABLE TIMER INTERRUPTS (REQUIRES IM1)
|
||||
TMSMODE .SET TMSMODE_MSX ; TMS: DRIVER MODE: TMSMODE_[SCG|N8|MBC|MSX|MSX9958|MSXKBD|COLECO]
|
||||
MKYENABLE .SET FALSE ; MSX 5255 PPI KEYBOARD COMPATIBLE DRIVER (REQUIRES TMS VDA DRIVER)
|
||||
VRCENABLE .SET FALSE ; VRC: ENABLE VGARC VIDEO/KBD DRIVER (VRC.ASM)
|
||||
EFENABLE .SET FALSE ; EF: ENABLE EF9345 VIDEO DRIVER (EF.ASM)
|
||||
VDAEMU_SERKBD .SET 0 ; VDA EMULATION: SERIAL KBD UNIT #, OR $FF FOR HW KBD
|
||||
;
|
||||
AY38910ENABLE .SET FALSE ; AY: AY-3-8910 / YM2149 SOUND DRIVER
|
||||
|
||||
@@ -62,6 +62,7 @@ TMSENABLE .SET TRUE ; TMS: ENABLE TMS9918 VIDEO/KBD DRIVER (TMS.ASM)
|
||||
TMSTIMENABLE .SET FALSE ; TMS: ENABLE TIMER INTERRUPTS (REQUIRES IM1)
|
||||
TMSMODE .SET TMSMODE_COLECO ; TMS: DRIVER MODE: TMSMODE_[SCG|N8|MBC|MSX|MSX9958|MSXKBD|COLECO]
|
||||
MKYENABLE .SET FALSE ; MSX 5255 PPI KEYBOARD COMPATIBLE DRIVER (REQUIRES TMS VDA DRIVER)
|
||||
EFENABLE .SET FALSE ; EF: ENABLE EF9345 VIDEO DRIVER (EF.ASM)
|
||||
VDAEMU_SERKBD .SET 1 ; VDA EMULATION: SERIAL KBD UNIT #, OR $FF FOR HW KBD
|
||||
;
|
||||
AY38910ENABLE .SET TRUE ; AY: AY-3-8910 / YM2149 SOUND DRIVER
|
||||
|
||||
@@ -59,6 +59,7 @@ TMSTIMENABLE .SET FALSE ; TMS: ENABLE TIMER INTERRUPTS (REQUIRES IM1)
|
||||
TMSMODE .SET TMSMODE_MSX ; TMS: DRIVER MODE: TMSMODE_[SCG|N8|MBC|MSX|MSX9958|MSXKBD|COLECO]
|
||||
MKYENABLE .SET FALSE ; MSX 5255 PPI KEYBOARD COMPATIBLE DRIVER (REQUIRES TMS VDA DRIVER)
|
||||
VRCENABLE .SET FALSE ; VRC: ENABLE VGARC VIDEO/KBD DRIVER (VRC.ASM)
|
||||
EFENABLE .SET FALSE ; EF: ENABLE EF9345 VIDEO DRIVER (EF.ASM)
|
||||
VDAEMU_SERKBD .SET 0 ; VDA EMULATION: SERIAL KBD UNIT #, OR $FF FOR HW KBD
|
||||
;
|
||||
AY38910ENABLE .SET FALSE ; AY: AY-3-8910 / YM2149 SOUND DRIVER
|
||||
|
||||
@@ -54,6 +54,7 @@ TMSTIMENABLE .SET FALSE ; TMS: ENABLE TIMER INTERRUPTS (REQUIRES IM1)
|
||||
TMSMODE .SET TMSMODE_MSX ; TMS: DRIVER MODE: TMSMODE_[SCG|N8|MBC|MSX|MSX9958|MSXKBD|COLECO]
|
||||
MKYENABLE .SET FALSE ; MSX 5255 PPI KEYBOARD COMPATIBLE DRIVER (REQUIRES TMS VDA DRIVER)
|
||||
VRCENABLE .SET FALSE ; VRC: ENABLE VGARC VIDEO/KBD DRIVER (VRC.ASM)
|
||||
EFENABLE .SET FALSE ; EF: ENABLE EF9345 VIDEO DRIVER (EF.ASM)
|
||||
VDAEMU_SERKBD .SET 0 ; VDA EMULATION: SERIAL KBD UNIT #, OR $FF FOR HW KBD
|
||||
;
|
||||
AY38910ENABLE .SET FALSE ; AY: AY-3-8910 / YM2149 SOUND DRIVER
|
||||
|
||||
@@ -47,6 +47,7 @@ TMSTIMENABLE .SET FALSE ; TMS: ENABLE TIMER INTERRUPTS (REQUIRES IM1)
|
||||
TMSMODE .SET TMSMODE_MSX ; TMS: DRIVER MODE: TMSMODE_[SCG|N8|MBC|MSX|MSX9958|MSXKBD|COLECO]
|
||||
MKYENABLE .SET FALSE ; MSX 5255 PPI KEYBOARD COMPATIBLE DRIVER (REQUIRES TMS VDA DRIVER)
|
||||
VRCENABLE .SET FALSE ; VRC: ENABLE VGARC VIDEO/KBD DRIVER (VRC.ASM)
|
||||
EFENABLE .SET FALSE ; EF: ENABLE EF9345 VIDEO DRIVER (EF.ASM)
|
||||
VDAEMU_SERKBD .SET 0 ; VDA EMULATION: SERIAL KBD UNIT #, OR $FF FOR HW KBD
|
||||
;
|
||||
AY38910ENABLE .SET FALSE ; AY: AY-3-8910 / YM2149 SOUND DRIVER
|
||||
|
||||
@@ -68,6 +68,7 @@ TMSTIMENABLE .SET FALSE ; TMS: ENABLE TIMER INTERRUPTS (REQUIRES IM1)
|
||||
TMSMODE .SET TMSMODE_MSX ; TMS: DRIVER MODE: TMSMODE_[SCG|N8|MBC|MSX|MSX9958|MSXKBD|COLECO]
|
||||
MKYENABLE .SET FALSE ; MSX 5255 PPI KEYBOARD COMPATIBLE DRIVER (REQUIRES TMS VDA DRIVER)
|
||||
VRCENABLE .SET FALSE ; VRC: ENABLE VGARC VIDEO/KBD DRIVER (VRC.ASM)
|
||||
EFENABLE .SET FALSE ; EF: ENABLE EF9345 VIDEO DRIVER (EF.ASM)
|
||||
VDAEMU_SERKBD .SET 0 ; VDA EMULATION: SERIAL KBD UNIT #, OR $FF FOR HW KBD
|
||||
;
|
||||
AY38910ENABLE .SET FALSE ; AY: AY-3-8910 / YM2149 SOUND DRIVER
|
||||
|
||||
@@ -48,6 +48,7 @@ TMSTIMENABLE .SET FALSE ; TMS: ENABLE TIMER INTERRUPTS (REQUIRES IM1)
|
||||
TMSMODE .SET TMSMODE_MSX ; TMS: DRIVER MODE: TMSMODE_[SCG|N8|MBC|MSX|MSX9958|MSXKBD|COLECO]
|
||||
MKYENABLE .SET FALSE ; MSX 5255 PPI KEYBOARD COMPATIBLE DRIVER (REQUIRES TMS VDA DRIVER)
|
||||
VRCENABLE .SET TRUE ; VRC: ENABLE VGARC VIDEO/KBD DRIVER (VRC.ASM)
|
||||
EFENABLE .SET FALSE ; EF: ENABLE EF9345 VIDEO DRIVER (EF.ASM)
|
||||
VDAEMU_SERKBD .SET $FF ; VDA EMULATION: SERIAL KBD UNIT #, OR $FF FOR HW KBD
|
||||
;
|
||||
AY38910ENABLE .SET FALSE ; AY: AY-3-8910 / YM2149 SOUND DRIVER
|
||||
|
||||
@@ -50,6 +50,7 @@ TMSTIMENABLE .SET FALSE ; TMS: ENABLE TIMER INTERRUPTS (REQUIRES IM1)
|
||||
TMSMODE .SET TMSMODE_MSX ; TMS: DRIVER MODE: TMSMODE_[SCG|N8|MBC|MSX|MSX9958|MSXKBD|COLECO]
|
||||
MKYENABLE .SET FALSE ; MSX 5255 PPI KEYBOARD COMPATIBLE DRIVER (REQUIRES TMS VDA DRIVER)
|
||||
VRCENABLE .SET TRUE ; VRC: ENABLE VGARC VIDEO/KBD DRIVER (VRC.ASM)
|
||||
EFENABLE .SET FALSE ; EF: ENABLE EF9345 VIDEO DRIVER (EF.ASM)
|
||||
VDAEMU_SERKBD .SET $FF ; VDA EMULATION: SERIAL KBD UNIT #, OR $FF FOR HW KBD
|
||||
;
|
||||
AY38910ENABLE .SET FALSE ; AY: AY-3-8910 / YM2149 SOUND DRIVER
|
||||
|
||||
@@ -50,6 +50,7 @@ TMSTIMENABLE .SET FALSE ; TMS: ENABLE TIMER INTERRUPTS (REQUIRES IM1)
|
||||
TMSMODE .SET TMSMODE_MSX ; TMS: DRIVER MODE: TMSMODE_[SCG|N8|MBC|MSX|MSX9958|MSXKBD|COLECO]
|
||||
MKYENABLE .SET FALSE ; MSX 5255 PPI KEYBOARD COMPATIBLE DRIVER (REQUIRES TMS VDA DRIVER)
|
||||
VRCENABLE .SET TRUE ; VRC: ENABLE VGARC VIDEO/KBD DRIVER (VRC.ASM)
|
||||
EFENABLE .SET FALSE ; EF: ENABLE EF9345 VIDEO DRIVER (EF.ASM)
|
||||
VDAEMU_SERKBD .SET $FF ; VDA EMULATION: SERIAL KBD UNIT #, OR $FF FOR HW KBD
|
||||
;
|
||||
AY38910ENABLE .SET FALSE ; AY: AY-3-8910 / YM2149 SOUND DRIVER
|
||||
|
||||
@@ -52,6 +52,7 @@ TMSTIMENABLE .SET FALSE ; TMS: ENABLE TIMER INTERRUPTS (REQUIRES IM1)
|
||||
TMSMODE .SET TMSMODE_MSX ; TMS: DRIVER MODE: TMSMODE_[SCG|N8|MBC|MSX|MSX9958|MSXKBD|COLECO]
|
||||
MKYENABLE .SET FALSE ; MSX 5255 PPI KEYBOARD COMPATIBLE DRIVER (REQUIRES TMS VDA DRIVER)
|
||||
VRCENABLE .SET FALSE ; VRC: ENABLE VGARC VIDEO/KBD DRIVER (VRC.ASM)
|
||||
EFENABLE .SET FALSE ; EF: ENABLE EF9345 VIDEO DRIVER (EF.ASM)
|
||||
VDAEMU_SERKBD .SET 0 ; VDA EMULATION: SERIAL KBD UNIT #, OR $FF FOR HW KBD
|
||||
;
|
||||
AY38910ENABLE .SET TRUE ; AY: AY-3-8910 / YM2149 SOUND DRIVER
|
||||
|
||||
@@ -53,6 +53,7 @@ TMSTIMENABLE .SET FALSE ; TMS: ENABLE TIMER INTERRUPTS (REQUIRES IM1)
|
||||
TMSMODE .SET TMSMODE_MSX ; TMS: DRIVER MODE: TMSMODE_[SCG|N8|MBC|MSX|MSX9958|MSXKBD|COLECO]
|
||||
MKYENABLE .SET FALSE ; MSX 5255 PPI KEYBOARD COMPATIBLE DRIVER (REQUIRES TMS VDA DRIVER)
|
||||
VRCENABLE .SET FALSE ; VRC: ENABLE VGARC VIDEO/KBD DRIVER (VRC.ASM)
|
||||
EFENABLE .SET FALSE ; EF: ENABLE EF9345 VIDEO DRIVER (EF.ASM)
|
||||
VDAEMU_SERKBD .SET 0 ; VDA EMULATION: SERIAL KBD UNIT #, OR $FF FOR HW KBD
|
||||
;
|
||||
AY38910ENABLE .SET TRUE ; AY: AY-3-8910 / YM2149 SOUND DRIVER
|
||||
|
||||
@@ -53,6 +53,7 @@ TMSENABLE .SET FALSE ; TMS: ENABLE TMS9918 VIDEO/KBD DRIVER (TMS.ASM)
|
||||
TMSTIMENABLE .SET FALSE ; TMS: ENABLE TIMER INTERRUPTS (REQUIRES IM1)
|
||||
TMSMODE .SET TMSMODE_MSX ; TMS: DRIVER MODE: TMSMODE_[SCG|N8|MBC|MSX|MSX9958|MSXKBD|COLECO]
|
||||
MKYENABLE .SET FALSE ; MSX 5255 PPI KEYBOARD COMPATIBLE DRIVER (REQUIRES TMS VDA DRIVER)
|
||||
EFENABLE .SET FALSE ; EF: ENABLE EF9345 VIDEO DRIVER (EF.ASM)
|
||||
VDAEMU_SERKBD .SET 0 ; VDA EMULATION: SERIAL KBD UNIT #, OR $FF FOR HW KBD
|
||||
;
|
||||
AY38910ENABLE .SET TRUE ; AY: AY-3-8910 / YM2149 SOUND DRIVER
|
||||
|
||||
@@ -74,15 +74,15 @@ $(OBJECTS) : $(ROMDEPS)
|
||||
fi
|
||||
if [ $(ROM_PLATFORM) = UNA ] ; then \
|
||||
cp osimg.bin $(DEST)/UNA_WBW_SYS.bin ; \
|
||||
cp ../RomDsk/rom$(ROMSIZE)_una.dat $(DEST)/UNA_WBW_ROM$(ROMSIZE).bin ; \
|
||||
cat ../UBIOS/UNA-BIOS.BIN osimg.bin ../UBIOS/FSFAT.BIN ../RomDsk/rom$(ROMSIZE)_una.dat >$(ROMNAME).rom ; \
|
||||
cp ../RomDsk/rom$(ROMDISKSIZE)_una.dat $(DEST)/UNA_WBW_ROM$(ROMDISKSIZE).bin ; \
|
||||
cat ../UBIOS/UNA-BIOS.BIN osimg.bin ../UBIOS/FSFAT.BIN ../RomDsk/rom$(ROMDISKSIZE)_una.dat >$(ROMNAME).rom ; \
|
||||
else \
|
||||
if [ $(ROMSIZE) -gt 0 ] ; then \
|
||||
cat hbios_rom.bin osimg.bin osimg1.bin osimg2.bin ../RomDsk/rom$(ROMSIZE)_wbw.dat >$(ROMNAME).rom ; \
|
||||
cat hbios_rom.bin osimg.bin osimg1.bin osimg2.bin ../RomDsk/rom$(ROMDISKSIZE)_wbw.dat >$(ROMNAME).rom ; \
|
||||
cat hbios_rom.bin osimg.bin osimg1.bin osimg2.bin >$(ROMNAME).upd ; \
|
||||
cat hbios_app.bin osimg_small.bin > $(ROMNAME).com ; \
|
||||
else \
|
||||
cat hbios_rom.bin osimg.bin osimg1.bin osimg2.bin ../RomDsk/ram$(RAMSIZE)_wbw.dat >$(ROMNAME).rom ; \
|
||||
cat hbios_rom.bin osimg.bin osimg1.bin osimg2.bin ../RomDsk/rom$(RAMDISKSIZE)_wbw.dat >$(ROMNAME).rom ; \
|
||||
cat hbios_rom.bin osimg.bin osimg1.bin osimg2.bin >$(ROMNAME).upd ; \
|
||||
cat hbios_app.bin osimg_small.bin > $(ROMNAME).com ; \
|
||||
fi \
|
||||
|
||||
@@ -9,7 +9,8 @@ DIST_OBJECTS := \
|
||||
# RCZ80_mt RCZ80_duart MON_std
|
||||
|
||||
OBJECTS := $(DIST_OBJECTS)
|
||||
OBJECTS := SBC_std MK4_std UNA_std S100_std
|
||||
# OBJECTS := SBC_std MK4_std UNA_std S100_std
|
||||
|
||||
OBJECTS := $(OBJECTS:=.rom) $(OBJECTS:=.com) $(OBJECTS:=.upd)
|
||||
OBJECTS := $(filter-out UNA_%.com UNA_%.upd,$(OBJECTS))
|
||||
|
||||
@@ -103,25 +104,25 @@ 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 >$@ ; \
|
||||
cat ../UBIOS/UNA-BIOS.BIN UNA_$(*F).osimg.bin ../UBIOS/FSFAT.BIN ../RomDsk/rom$${ROMDISKSIZE}_una.dat >$@ ; \
|
||||
cp UNA_$(*F).osimg.bin $(DEST)/UNA_WBW_SYS.bin ; \
|
||||
cp ../RomDsk/rom$${ROMSIZE}_una.dat $(DEST)/UNA_WBW_ROM$${ROMSIZE}.bin
|
||||
cp ../RomDsk/rom$${ROMDISKSIZE}_una.dat $(DEST)/UNA_WBW_ROM$${ROMDISKSIZE}.bin
|
||||
|
||||
%.rom: %.hbios_rom.bin %.osimg.bin %.osimg1.bin %.imgpad2.bin %.hbios_env.sh
|
||||
. ./$(*F).hbios_env.sh ; \
|
||||
if [ $$ROMSIZE -gt 0 ] ; then RD="rom$$ROMSIZE" ; else RD="ram$$RAMSIZE" ; fi ; \
|
||||
if [ $$ROMSIZE -gt 0 ] ; then RD="rom$$ROMDISKSIZE" ; else RD="rom$$RAMDISKSIZE" ; fi ; \
|
||||
cat $(*F).hbios_rom.bin $(*F).osimg.bin $(*F).osimg1.bin $(*F).imgpad2.bin ../RomDsk/$${RD}_wbw.dat >$@
|
||||
|
||||
%.com: %.hbios_app.bin %.osimg_small.bin
|
||||
|
||||
@@ -22,6 +22,14 @@ ANSI_DEFCOLOR .EQU 7 ; WHITE ON BLACK
|
||||
; ANSI EMULATION MODULE
|
||||
;==================================================================================================
|
||||
;
|
||||
; PRE-CONSOLE INITIALIZATION
|
||||
;
|
||||
ANSI_PREINIT:
|
||||
OR $FF ; RESET THE VDA UNIT
|
||||
LD (ANSI_VDAUNIT),A ; ... TO INITIAL VALUE
|
||||
XOR A
|
||||
RET
|
||||
;
|
||||
; INITIALIZATION OF EMULATION MODULE CALLED BY PARENT VDA DRIVER
|
||||
; ON ENTRY:
|
||||
; DE: DISPATCH ADDRESS OF CALLING VDA DRIVER
|
||||
|
||||
@@ -25,6 +25,7 @@ TICKFREQ .EQU 50 ; DESIRED PERIODIC TIMER INTERRUPT FREQUENCY (HZ)
|
||||
;
|
||||
BOOT_TIMEOUT .EQU -1 ; AUTO BOOT TIMEOUT IN SECONDS, -1 TO DISABLE, 0 FOR IMMEDIATE
|
||||
BOOT_DELAY .EQU 0 ; FIXED BOOT DELAY IN SECONDS PRIOR TO CONSOLE OUTPUT
|
||||
AUTOCON .EQU TRUE ; ENABLE CONSOLE TAKEOVER AT LOADER PROMPT
|
||||
;
|
||||
CPUSPDCAP .EQU SPD_FIXED ; CPU SPEED CHANGE CAPABILITY SPD_FIXED|SPD_HILO
|
||||
CPUSPDDEF .EQU SPD_UNSUP ; CPU SPEED DEFAULT SPD_UNSUP|SPD_HIGH|SPD_LOW
|
||||
@@ -34,6 +35,7 @@ DEFSERCFG .EQU SER_38400_8N1 | SER_RTS ; DEFAULT SERIAL LINE CONFIG (SEE STD.ASM
|
||||
;
|
||||
RAMSIZE .EQU 512 ; SIZE OF RAM IN KB (MUST MATCH YOUR HARDWARE!!!)
|
||||
ROMSIZE .EQU 512 ; SIZE OF ROM IN KB (MUST MATCH YOUR HARDWARE!!!)
|
||||
APP_BNKS .EQU $FF ; BANKS TO RESERVE FOR APP USE ($FF FOR AUTO SIZING)
|
||||
MEMMGR .EQU MM_Z2 ; MEMORY MANAGER: MM_[SBC|Z2|N8|Z180|Z280|MBC|RPH|MON]
|
||||
MPGSEL_0 .EQU $50 ; Z2 MEM MGR BANK 0 PAGE SELECT REG (WRITE ONLY)
|
||||
MPGSEL_1 .EQU $51 ; Z2 MEM MGR BANK 1 PAGE SELECT REG (WRITE ONLY)
|
||||
@@ -67,9 +69,11 @@ WDOGMODE .EQU WDOG_NONE ; WATCHDOG MODE: WDOG_[NONE|EZZ80|SKZ]
|
||||
;
|
||||
FPLED_ENABLE .EQU TRUE ; FP: ENABLES FRONT PANEL LEDS
|
||||
FPLED_IO .EQU $42 ; FP: PORT ADDRESS FOR FP LEDS
|
||||
FPLED_INV .EQU FALSE ; FP: LED BITS ARE INVERTED
|
||||
FPLED_DSKACT .EQU TRUE ; FP: ENABLES DISK I/O ACTIVITY ON FP LEDS
|
||||
FPSW_ENABLE .EQU TRUE ; FP: ENABLES FRONT PANEL SWITCHES
|
||||
FPSW_IO .EQU $42 ; FP: PORT ADDRESS FOR FP SWITCHES
|
||||
FPSW_INV .EQU FALSE ; FP: SWITCH BITS ARE INVERTED
|
||||
;
|
||||
DIAGLVL .EQU DL_CRITICAL ; ERROR LEVEL REPORTING
|
||||
;
|
||||
@@ -170,6 +174,7 @@ VGAENABLE .EQU FALSE ; VGA: ENABLE VGA VIDEO/KBD DRIVER (VGA.ASM)
|
||||
VGASIZ .EQU V80X25 ; VGA: DISPLAY FORMAT [V80X25|V80X30|V80X43]
|
||||
VRCENABLE .EQU FALSE ; VRC: ENABLE VGARC VIDEO/KBD DRIVER (VRC.ASM)
|
||||
SCONENABLE .EQU FALSE ; SCON: ENABLE S100 CONSOLE DRIVER (SCON.ASM)
|
||||
EFENABLE .EQU FALSE ; EF: ENABLE EF9345 VIDEO DRIVER (EF.ASM)
|
||||
;
|
||||
MDENABLE .EQU TRUE ; MD: ENABLE MEMORY (ROM/RAM) DISK DRIVER (MD.ASM)
|
||||
MDROM .EQU TRUE ; MD: ENABLE ROM DISK
|
||||
|
||||
@@ -25,6 +25,7 @@ TICKFREQ .EQU 50 ; DESIRED PERIODIC TIMER INTERRUPT FREQUENCY (HZ)
|
||||
;
|
||||
BOOT_TIMEOUT .EQU -1 ; AUTO BOOT TIMEOUT IN SECONDS, -1 TO DISABLE, 0 FOR IMMEDIATE
|
||||
BOOT_DELAY .EQU 0 ; FIXED BOOT DELAY IN SECONDS PRIOR TO CONSOLE OUTPUT
|
||||
AUTOCON .EQU TRUE ; ENABLE CONSOLE TAKEOVER AT LOADER PROMPT
|
||||
;
|
||||
CPUSPDCAP .EQU SPD_FIXED ; CPU SPEED CHANGE CAPABILITY SPD_FIXED|SPD_HILO
|
||||
CPUSPDDEF .EQU SPD_HIGH ; CPU SPEED DEFAULT SPD_UNSUP|SPD_HIGH|SPD_LOW
|
||||
@@ -34,6 +35,7 @@ DEFSERCFG .EQU SER_38400_8N1 | SER_RTS ; DEFAULT SERIAL LINE CONFIG (SEE STD.ASM
|
||||
;
|
||||
RAMSIZE .EQU 512 ; SIZE OF RAM IN KB (MUST MATCH YOUR HARDWARE!!!)
|
||||
ROMSIZE .EQU 512 ; SIZE OF ROM IN KB (MUST MATCH YOUR HARDWARE!!!)
|
||||
APP_BNKS .EQU $FF ; BANKS TO RESERVE FOR APP USE ($FF FOR AUTO SIZING)
|
||||
MEMMGR .EQU MM_Z180 ; MEMORY MANAGER: MM_[SBC|Z2|N8|Z180|Z280|MBC|RPH|MON]
|
||||
RAMBIAS .EQU ROMSIZE ; OFFSET OF START OF RAM IN PHYSICAL ADDRESS SPACE
|
||||
MPGSEL_0 .EQU $78 ; Z2 MEM MGR BANK 0 PAGE SELECT REG (WRITE ONLY)
|
||||
@@ -69,9 +71,11 @@ WDOGMODE .EQU WDOG_NONE ; WATCHDOG MODE: WDOG_[NONE|EZZ80|SKZ]
|
||||
;
|
||||
FPLED_ENABLE .EQU FALSE ; FP: ENABLES FRONT PANEL LEDS
|
||||
FPLED_IO .EQU $00 ; FP: PORT ADDRESS FOR FP LEDS
|
||||
FPLED_INV .EQU FALSE ; FP: LED BITS ARE INVERTED
|
||||
FPLED_DSKACT .EQU TRUE ; FP: ENABLES DISK I/O ACTIVITY ON FP LEDS
|
||||
FPSW_ENABLE .EQU FALSE ; FP: ENABLES FRONT PANEL SWITCHES
|
||||
FPSW_IO .EQU $00 ; FP: PORT ADDRESS FOR FP SWITCHES
|
||||
FPSW_INV .EQU FALSE ; FP: SWITCH BITS ARE INVERTED
|
||||
;
|
||||
DIAGLVL .EQU DL_CRITICAL ; ERROR LEVEL REPORTING
|
||||
;
|
||||
@@ -187,6 +191,7 @@ TMSTIMENABLE .EQU FALSE ; TMS: ENABLE TIMER INTERRUPTS (REQUIRES IM1)
|
||||
VGAENABLE .EQU FALSE ; VGA: ENABLE VGA VIDEO/KBD DRIVER (VGA.ASM)
|
||||
VRCENABLE .EQU FALSE ; VRC: ENABLE VGARC VIDEO/KBD DRIVER (VRC.ASM)
|
||||
SCONENABLE .EQU FALSE ; SCON: ENABLE S100 CONSOLE DRIVER (SCON.ASM)
|
||||
EFENABLE .EQU FALSE ; EF: ENABLE EF9345 VIDEO DRIVER (EF.ASM)
|
||||
;
|
||||
MDENABLE .EQU TRUE ; MD: ENABLE MEMORY (ROM/RAM) DISK DRIVER (MD.ASM)
|
||||
MDROM .EQU TRUE ; MD: ENABLE ROM DISK
|
||||
|
||||
@@ -25,6 +25,7 @@ TICKFREQ .EQU 50 ; DESIRED PERIODIC TIMER INTERRUPT FREQUENCY (HZ)
|
||||
;
|
||||
BOOT_TIMEOUT .EQU -1 ; AUTO BOOT TIMEOUT IN SECONDS, -1 TO DISABLE, 0 FOR IMMEDIATE
|
||||
BOOT_DELAY .EQU 0 ; FIXED BOOT DELAY IN SECONDS PRIOR TO CONSOLE OUTPUT
|
||||
AUTOCON .EQU TRUE ; ENABLE CONSOLE TAKEOVER AT LOADER PROMPT
|
||||
;
|
||||
CPUSPDCAP .EQU SPD_FIXED ; CPU SPEED CHANGE CAPABILITY SPD_FIXED|SPD_HILO
|
||||
CPUSPDDEF .EQU SPD_HIGH ; CPU SPEED DEFAULT SPD_UNSUP|SPD_HIGH|SPD_LOW
|
||||
@@ -34,6 +35,7 @@ DEFSERCFG .EQU SER_115200_8N1 | SER_RTS ; DEFAULT SERIAL LINE CONFIG (SEE STD.AS
|
||||
;
|
||||
RAMSIZE .EQU 512 ; SIZE OF RAM IN KB (MUST MATCH YOUR HARDWARE!!!)
|
||||
ROMSIZE .EQU 512 ; SIZE OF ROM IN KB (MUST MATCH YOUR HARDWARE!!!)
|
||||
APP_BNKS .EQU $FF ; BANKS TO RESERVE FOR APP USE ($FF FOR AUTO SIZING)
|
||||
MEMMGR .EQU MM_Z180 ; MEMORY MANAGER: MM_[SBC|Z2|N8|Z180|Z280|MBC|RPH|MON]
|
||||
RAMBIAS .EQU ROMSIZE ; OFFSET OF START OF RAM IN PHYSICAL ADDRESS SPACE
|
||||
;
|
||||
@@ -70,9 +72,11 @@ DIAGDISKIO .EQU TRUE ; ENABLES DISK I/O ACTIVITY ON DIAGNOSTIC LEDS
|
||||
;
|
||||
FPLED_ENABLE .EQU FALSE ; FP: ENABLES FRONT PANEL LEDS
|
||||
FPLED_IO .EQU $00 ; FP: PORT ADDRESS FOR FP LEDS
|
||||
FPLED_INV .EQU FALSE ; FP: LED BITS ARE INVERTED
|
||||
FPLED_DSKACT .EQU FALSE ; FP: ENABLES DISK I/O ACTIVITY ON FP LEDS
|
||||
FPSW_ENABLE .EQU FALSE ; FP: ENABLES FRONT PANEL SWITCHES
|
||||
FPSW_IO .EQU $00 ; FP: PORT ADDRESS FOR FP SWITCHES
|
||||
FPSW_INV .EQU FALSE ; FP: SWITCH BITS ARE INVERTED
|
||||
;
|
||||
DIAGLVL .EQU DL_CRITICAL ; ERROR LEVEL REPORTING
|
||||
;
|
||||
@@ -189,6 +193,7 @@ TMSTIMENABLE .EQU FALSE ; TMS: ENABLE TIMER INTERRUPTS (REQUIRES IM1)
|
||||
VGAENABLE .EQU FALSE ; VGA: ENABLE VGA VIDEO/KBD DRIVER (VGA.ASM)
|
||||
VRCENABLE .EQU FALSE ; VRC: ENABLE VGARC VIDEO/KBD DRIVER (VRC.ASM)
|
||||
SCONENABLE .EQU FALSE ; SCON: ENABLE S100 CONSOLE DRIVER (SCON.ASM)
|
||||
EFENABLE .EQU FALSE ; EF: ENABLE EF9345 VIDEO DRIVER (EF.ASM)
|
||||
;
|
||||
MDENABLE .EQU TRUE ; MD: ENABLE MEMORY (ROM/RAM) DISK DRIVER (MD.ASM)
|
||||
MDROM .EQU TRUE ; MD: ENABLE ROM DISK
|
||||
|
||||
@@ -25,6 +25,7 @@ TICKFREQ .EQU 50 ; DESIRED PERIODIC TIMER INTERRUPT FREQUENCY (HZ)
|
||||
;
|
||||
BOOT_TIMEOUT .EQU -1 ; AUTO BOOT TIMEOUT IN SECONDS, -1 TO DISABLE, 0 FOR IMMEDIATE
|
||||
BOOT_DELAY .EQU 0 ; FIXED BOOT DELAY IN SECONDS PRIOR TO CONSOLE OUTPUT
|
||||
AUTOCON .EQU TRUE ; ENABLE CONSOLE TAKEOVER AT LOADER PROMPT
|
||||
;
|
||||
CPUSPDCAP .EQU SPD_FIXED ; CPU SPEED CHANGE CAPABILITY SPD_FIXED|SPD_HILO
|
||||
CPUSPDDEF .EQU SPD_HIGH ; CPU SPEED DEFAULT SPD_UNSUP|SPD_HIGH|SPD_LOW
|
||||
@@ -34,6 +35,7 @@ DEFSERCFG .EQU SER_115200_8N1 | SER_RTS ; DEFAULT SERIAL LINE CONFIG (SEE STD.AS
|
||||
;
|
||||
RAMSIZE .EQU 512 ; SIZE OF RAM IN KB (MUST MATCH YOUR HARDWARE!!!)
|
||||
ROMSIZE .EQU 512 ; SIZE OF ROM IN KB (MUST MATCH YOUR HARDWARE!!!)
|
||||
APP_BNKS .EQU $FF ; BANKS TO RESERVE FOR APP USE ($FF FOR AUTO SIZING)
|
||||
MEMMGR .EQU MM_Z2 ; MEMORY MANAGER: MM_[SBC|Z2|N8|Z180|Z280|MBC|RPH|MON]
|
||||
MPGSEL_0 .EQU $78 ; Z2 MEM MGR BANK 0 PAGE SELECT REG (WRITE ONLY)
|
||||
MPGSEL_1 .EQU $79 ; Z2 MEM MGR BANK 1 PAGE SELECT REG (WRITE ONLY)
|
||||
@@ -69,9 +71,11 @@ WDOGIO .EQU $6E ; WATCHDOG REGISTER ADR
|
||||
;
|
||||
FPLED_ENABLE .EQU FALSE ; FP: ENABLES FRONT PANEL LEDS
|
||||
FPLED_IO .EQU $00 ; FP: PORT ADDRESS FOR FP LEDS
|
||||
FPLED_INV .EQU FALSE ; FP: LED BITS ARE INVERTED
|
||||
FPLED_DSKACT .EQU TRUE ; FP: ENABLES DISK I/O ACTIVITY ON FP LEDS
|
||||
FPSW_ENABLE .EQU FALSE ; FP: ENABLES FRONT PANEL SWITCHES
|
||||
FPSW_IO .EQU $00 ; FP: PORT ADDRESS FOR FP SWITCHES
|
||||
FPSW_INV .EQU FALSE ; FP: SWITCH BITS ARE INVERTED
|
||||
;
|
||||
DIAGLVL .EQU DL_CRITICAL ; ERROR LEVEL REPORTING
|
||||
;
|
||||
@@ -192,6 +196,7 @@ TMSTIMENABLE .EQU FALSE ; TMS: ENABLE TIMER INTERRUPTS (REQUIRES IM1)
|
||||
VGAENABLE .EQU FALSE ; VGA: ENABLE VGA VIDEO/KBD DRIVER (VGA.ASM)
|
||||
VRCENABLE .EQU FALSE ; VRC: ENABLE VGARC VIDEO/KBD DRIVER (VRC.ASM)
|
||||
SCONENABLE .EQU FALSE ; SCON: ENABLE S100 CONSOLE DRIVER (SCON.ASM)
|
||||
EFENABLE .EQU FALSE ; EF: ENABLE EF9345 VIDEO DRIVER (EF.ASM)
|
||||
;
|
||||
MDENABLE .EQU TRUE ; MD: ENABLE MEMORY (ROM/RAM) DISK DRIVER (MD.ASM)
|
||||
MDROM .EQU TRUE ; MD: ENABLE ROM DISK
|
||||
|
||||
@@ -22,6 +22,7 @@ TICKFREQ .EQU 50 ; DESIRED PERIODIC TIMER INTERRUPT FREQUENCY (HZ)
|
||||
;
|
||||
BOOT_TIMEOUT .EQU -1 ; AUTO BOOT TIMEOUT IN SECONDS, -1 TO DISABLE, 0 FOR IMMEDIATE
|
||||
BOOT_DELAY .EQU 0 ; FIXED BOOT DELAY IN SECONDS PRIOR TO CONSOLE OUTPUT
|
||||
AUTOCON .EQU TRUE ; ENABLE CONSOLE TAKEOVER AT LOADER PROMPT
|
||||
;
|
||||
CPUSPDCAP .EQU SPD_FIXED ; CPU SPEED CHANGE CAPABILITY SPD_FIXED|SPD_HILO
|
||||
CPUSPDDEF .EQU SPD_HIGH ; CPU SPEED DEFAULT SPD_UNSUP|SPD_HIGH|SPD_LOW
|
||||
@@ -31,6 +32,7 @@ DEFSERCFG .EQU SER_38400_8N1 | SER_RTS ; DEFAULT SERIAL LINE CONFIG (SEE STD.ASM
|
||||
;
|
||||
RAMSIZE .EQU 512 ; SIZE OF RAM IN KB (MUST MATCH YOUR HARDWARE!!!)
|
||||
ROMSIZE .EQU 512 ; SIZE OF ROM IN KB (MUST MATCH YOUR HARDWARE!!!)
|
||||
APP_BNKS .EQU $FF ; BANKS TO RESERVE FOR APP USE ($FF FOR AUTO SIZING)
|
||||
MEMMGR .EQU MM_NONE ; MEMORY MANAGER: MM_[SBC|Z2|N8|Z180|Z280|MBC|RPH|MON]
|
||||
RAMBIAS .EQU ROMSIZE ; OFFSET OF START OF RAM IN PHYSICAL ADDRESS SPACE
|
||||
MPCL_RAM .EQU $78 ; SBC MEM MGR RAM PAGE SELECT REG (WRITE ONLY)
|
||||
@@ -98,9 +100,11 @@ WDOGIO .EQU $6F ; WATCHDOG REGISTER ADR
|
||||
;
|
||||
FPLED_ENABLE .EQU FALSE ; FP: ENABLES FRONT PANEL LEDS
|
||||
FPLED_IO .EQU $00 ; FP: PORT ADDRESS FOR FP LEDS
|
||||
FPLED_INV .EQU FALSE ; FP: LED BITS ARE INVERTED
|
||||
FPLED_DSKACT .EQU TRUE ; FP: ENABLES DISK I/O ACTIVITY ON FP LEDS
|
||||
FPSW_ENABLE .EQU FALSE ; FP: ENABLES FRONT PANEL SWITCHES
|
||||
FPSW_IO .EQU $00 ; FP: PORT ADDRESS FOR FP SWITCHES
|
||||
FPSW_INV .EQU FALSE ; FP: SWITCH BITS ARE INVERTED
|
||||
;
|
||||
DIAGLVL .EQU DL_CRITICAL ; ERROR LEVEL REPORTING
|
||||
;
|
||||
@@ -238,6 +242,7 @@ VGAENABLE .EQU FALSE ; VGA: ENABLE VGA VIDEO/KBD DRIVER (VGA.ASM)
|
||||
VGASIZ .EQU V80X25 ; VGA: DISPLAY FORMAT [V80X25|V80X30|V80X43]
|
||||
VRCENABLE .EQU FALSE ; VRC: ENABLE VGARC VIDEO/KBD DRIVER (VRC.ASM)
|
||||
SCONENABLE .EQU FALSE ; SCON: ENABLE S100 CONSOLE DRIVER (SCON.ASM)
|
||||
EFENABLE .EQU FALSE ; EF: ENABLE EF9345 VIDEO DRIVER (EF.ASM)
|
||||
;
|
||||
MDENABLE .EQU TRUE ; MD: ENABLE MEMORY (ROM/RAM) DISK DRIVER (MD.ASM)
|
||||
MDROM .EQU TRUE ; MD: ENABLE ROM DISK
|
||||
|
||||
@@ -25,6 +25,7 @@ TICKFREQ .EQU 50 ; DESIRED PERIODIC TIMER INTERRUPT FREQUENCY (HZ)
|
||||
;
|
||||
BOOT_TIMEOUT .EQU -1 ; AUTO BOOT TIMEOUT IN SECONDS, -1 TO DISABLE, 0 FOR IMMEDIATE
|
||||
BOOT_DELAY .EQU 0 ; FIXED BOOT DELAY IN SECONDS PRIOR TO CONSOLE OUTPUT
|
||||
AUTOCON .EQU TRUE ; ENABLE CONSOLE TAKEOVER AT LOADER PROMPT
|
||||
;
|
||||
CPUSPDCAP .EQU SPD_HILO ; CPU SPEED CHANGE CAPABILITY SPD_FIXED|SPD_HILO
|
||||
CPUSPDDEF .EQU SPD_LOW ; CPU SPEED DEFAULT SPD_UNSUP|SPD_HIGH|SPD_LOW
|
||||
@@ -34,6 +35,7 @@ DEFSERCFG .EQU SER_38400_8N1 | SER_RTS ; DEFAULT SERIAL LINE CONFIG (SEE STD.ASM
|
||||
;
|
||||
RAMSIZE .EQU 512 ; SIZE OF RAM IN KB (MUST MATCH YOUR HARDWARE!!!)
|
||||
ROMSIZE .EQU 512 ; SIZE OF ROM IN KB (MUST MATCH YOUR HARDWARE!!!)
|
||||
APP_BNKS .EQU $FF ; BANKS TO RESERVE FOR APP USE ($FF FOR AUTO SIZING)
|
||||
MEMMGR .EQU MM_MBC ; MEMORY MANAGER: MM_[SBC|Z2|N8|Z180|Z280|MBC|RPH|MON]
|
||||
MPCL_RAM .EQU $78 ; SBC MEM MGR RAM PAGE SELECT REG (WRITE ONLY)
|
||||
MPCL_ROM .EQU $7C ; SBC MEM MGR ROM PAGE SELECT REG (WRITE ONLY)
|
||||
@@ -64,9 +66,11 @@ WDOGMODE .EQU WDOG_NONE ; WATCHDOG MODE: WDOG_[NONE|EZZ80|SKZ]
|
||||
;
|
||||
FPLED_ENABLE .EQU FALSE ; FP: ENABLES FRONT PANEL LEDS
|
||||
FPLED_IO .EQU $00 ; FP: PORT ADDRESS FOR FP LEDS
|
||||
FPLED_INV .EQU FALSE ; FP: LED BITS ARE INVERTED
|
||||
FPLED_DSKACT .EQU TRUE ; FP: ENABLES DISK I/O ACTIVITY ON FP LEDS
|
||||
FPSW_ENABLE .EQU FALSE ; FP: ENABLES FRONT PANEL SWITCHES
|
||||
FPSW_IO .EQU $00 ; FP: PORT ADDRESS FOR FP SWITCHES
|
||||
FPSW_INV .EQU FALSE ; FP: SWITCH BITS ARE INVERTED
|
||||
;
|
||||
DIAGLVL .EQU DL_CRITICAL ; ERROR LEVEL REPORTING
|
||||
;
|
||||
@@ -167,6 +171,7 @@ VGAENABLE .EQU FALSE ; VGA: ENABLE VGA VIDEO/KBD DRIVER (VGA.ASM)
|
||||
VGASIZ .EQU V80X25 ; VGA: DISPLAY FORMAT [V80X25|V80X30|V80X43]
|
||||
VRCENABLE .EQU FALSE ; VRC: ENABLE VGARC VIDEO/KBD DRIVER (VRC.ASM)
|
||||
SCONENABLE .EQU FALSE ; SCON: ENABLE S100 CONSOLE DRIVER (SCON.ASM)
|
||||
EFENABLE .EQU FALSE ; EF: ENABLE EF9345 VIDEO DRIVER (EF.ASM)
|
||||
;
|
||||
MDENABLE .EQU TRUE ; MD: ENABLE MEMORY (ROM/RAM) DISK DRIVER (MD.ASM)
|
||||
MDROM .EQU TRUE ; MD: ENABLE ROM DISK
|
||||
|
||||
@@ -25,6 +25,7 @@ TICKFREQ .EQU 50 ; DESIRED PERIODIC TIMER INTERRUPT FREQUENCY (HZ)
|
||||
;
|
||||
BOOT_TIMEOUT .EQU -1 ; AUTO BOOT TIMEOUT IN SECONDS, -1 TO DISABLE, 0 FOR IMMEDIATE
|
||||
BOOT_DELAY .EQU 0 ; FIXED BOOT DELAY IN SECONDS PRIOR TO CONSOLE OUTPUT
|
||||
AUTOCON .EQU TRUE ; ENABLE CONSOLE TAKEOVER AT LOADER PROMPT
|
||||
;
|
||||
CPUSPDCAP .EQU SPD_FIXED ; CPU SPEED CHANGE CAPABILITY SPD_FIXED|SPD_HILO
|
||||
CPUSPDDEF .EQU SPD_HIGH ; CPU SPEED DEFAULT SPD_UNSUP|SPD_HIGH|SPD_LOW
|
||||
@@ -34,6 +35,7 @@ DEFSERCFG .EQU SER_38400_8N1 | SER_RTS ; DEFAULT SERIAL LINE CONFIG (SEE STD.ASM
|
||||
;
|
||||
RAMSIZE .EQU 512 ; SIZE OF RAM IN KB (MUST MATCH YOUR HARDWARE!!!)
|
||||
ROMSIZE .EQU 512 ; SIZE OF ROM IN KB (MUST MATCH YOUR HARDWARE!!!)
|
||||
APP_BNKS .EQU $FF ; BANKS TO RESERVE FOR APP USE ($FF FOR AUTO SIZING)
|
||||
MEMMGR .EQU MM_Z180 ; MEMORY MANAGER: MM_[SBC|Z2|N8|Z180|Z280|MBC|RPH|MON]
|
||||
RAMBIAS .EQU ROMSIZE ; OFFSET OF START OF RAM IN PHYSICAL ADDRESS SPACE
|
||||
;
|
||||
@@ -69,9 +71,11 @@ WDOGMODE .EQU WDOG_NONE ; WATCHDOG MODE: WDOG_[NONE|EZZ80|SKZ]
|
||||
;
|
||||
FPLED_ENABLE .EQU FALSE ; FP: ENABLES FRONT PANEL LEDS
|
||||
FPLED_IO .EQU $00 ; FP: PORT ADDRESS FOR FP LEDS
|
||||
FPLED_INV .EQU FALSE ; FP: LED BITS ARE INVERTED
|
||||
FPLED_DSKACT .EQU TRUE ; FP: ENABLES DISK I/O ACTIVITY ON FP LEDS
|
||||
FPSW_ENABLE .EQU FALSE ; FP: ENABLES FRONT PANEL SWITCHES
|
||||
FPSW_IO .EQU $00 ; FP: PORT ADDRESS FOR FP SWITCHES
|
||||
FPSW_IO .EQU $00 ; FP: PORT ADDRESS FOR FP SWITCHES
|
||||
FPSW_INV .EQU FALSE ; FP: SWITCH BITS ARE INVERTED
|
||||
;
|
||||
DIAGLVL .EQU DL_CRITICAL ; ERROR LEVEL REPORTING
|
||||
;
|
||||
@@ -177,6 +181,7 @@ VGAENABLE .EQU FALSE ; VGA: ENABLE VGA VIDEO/KBD DRIVER (VGA.ASM)
|
||||
VGASIZ .EQU V80X25 ; VGA: DISPLAY FORMAT [V80X25|V80X30|V80X43]
|
||||
VRCENABLE .EQU FALSE ; VRC: ENABLE VGARC VIDEO/KBD DRIVER (VRC.ASM)
|
||||
SCONENABLE .EQU FALSE ; SCON: ENABLE S100 CONSOLE DRIVER (SCON.ASM)
|
||||
EFENABLE .EQU FALSE ; EF: ENABLE EF9345 VIDEO DRIVER (EF.ASM)
|
||||
;
|
||||
MDENABLE .EQU TRUE ; MD: ENABLE MEMORY (ROM/RAM) DISK DRIVER (MD.ASM)
|
||||
MDROM .EQU TRUE ; MD: ENABLE ROM DISK
|
||||
|
||||
@@ -25,6 +25,7 @@ TICKFREQ .EQU 50 ; DESIRED PERIODIC TIMER INTERRUPT FREQUENCY (HZ)
|
||||
;
|
||||
BOOT_TIMEOUT .EQU -1 ; AUTO BOOT TIMEOUT IN SECONDS, -1 TO DISABLE, 0 FOR IMMEDIATE
|
||||
BOOT_DELAY .EQU 0 ; FIXED BOOT DELAY IN SECONDS PRIOR TO CONSOLE OUTPUT
|
||||
AUTOCON .EQU TRUE ; ENABLE CONSOLE TAKEOVER AT LOADER PROMPT
|
||||
;
|
||||
CPUSPDCAP .EQU SPD_FIXED ; CPU SPEED CHANGE CAPABILITY SPD_FIXED|SPD_HILO
|
||||
CPUSPDDEF .EQU SPD_HIGH ; CPU SPEED DEFAULT SPD_UNSUP|SPD_HIGH|SPD_LOW
|
||||
@@ -34,6 +35,7 @@ DEFSERCFG .EQU SER_115200_8N1 | SER_RTS ; DEFAULT SERIAL LINE CONFIG (SEE STD.AS
|
||||
;
|
||||
RAMSIZE .EQU 512 ; SIZE OF RAM IN KB (MUST MATCH YOUR HARDWARE!!!)
|
||||
ROMSIZE .EQU 512 ; SIZE OF ROM IN KB (MUST MATCH YOUR HARDWARE!!!)
|
||||
APP_BNKS .EQU $FF ; BANKS TO RESERVE FOR APP USE ($FF FOR AUTO SIZING)
|
||||
MEMMGR .EQU MM_MON ; MEMORY MANAGER: MM_[SBC|Z2|N8|Z180|Z280|MBC|RPH|MON]
|
||||
;
|
||||
RTCIO .EQU $C0 ; RTC LATCH REGISTER ADR
|
||||
@@ -64,9 +66,11 @@ WDOGIO .EQU $6E ; WATCHDOG REGISTER ADR
|
||||
;
|
||||
FPLED_ENABLE .EQU FALSE ; FP: ENABLES FRONT PANEL LEDS
|
||||
FPLED_IO .EQU $00 ; FP: PORT ADDRESS FOR FP LEDS
|
||||
FPLED_INV .EQU FALSE ; FP: LED BITS ARE INVERTED
|
||||
FPLED_DSKACT .EQU TRUE ; FP: ENABLES DISK I/O ACTIVITY ON FP LEDS
|
||||
FPSW_ENABLE .EQU FALSE ; FP: ENABLES FRONT PANEL SWITCHES
|
||||
FPSW_IO .EQU $00 ; FP: PORT ADDRESS FOR FP SWITCHES
|
||||
FPSW_INV .EQU FALSE ; FP: SWITCH BITS ARE INVERTED
|
||||
;
|
||||
DIAGLVL .EQU DL_CRITICAL ; ERROR LEVEL REPORTING
|
||||
;
|
||||
@@ -187,6 +191,7 @@ TMSTIMENABLE .EQU FALSE ; TMS: ENABLE TIMER INTERRUPTS (REQUIRES IM1)
|
||||
VGAENABLE .EQU FALSE ; VGA: ENABLE VGA VIDEO/KBD DRIVER (VGA.ASM)
|
||||
VRCENABLE .EQU FALSE ; VRC: ENABLE VGARC VIDEO/KBD DRIVER (VRC.ASM)
|
||||
SCONENABLE .EQU FALSE ; SCON: ENABLE S100 CONSOLE DRIVER (SCON.ASM)
|
||||
EFENABLE .EQU FALSE ; EF: ENABLE EF9345 VIDEO DRIVER (EF.ASM)
|
||||
;
|
||||
MDENABLE .EQU TRUE ; MD: ENABLE MEMORY (ROM/RAM) DISK DRIVER (MD.ASM)
|
||||
MDROM .EQU TRUE ; MD: ENABLE ROM DISK
|
||||
|
||||
@@ -25,6 +25,7 @@ TICKFREQ .EQU 50 ; DESIRED PERIODIC TIMER INTERRUPT FREQUENCY (HZ)
|
||||
;
|
||||
BOOT_TIMEOUT .EQU -1 ; AUTO BOOT TIMEOUT IN SECONDS, -1 TO DISABLE, 0 FOR IMMEDIATE
|
||||
BOOT_DELAY .EQU 0 ; FIXED BOOT DELAY IN SECONDS PRIOR TO CONSOLE OUTPUT
|
||||
AUTOCON .EQU TRUE ; ENABLE CONSOLE TAKEOVER AT LOADER PROMPT
|
||||
;
|
||||
CPUSPDCAP .EQU SPD_FIXED ; CPU SPEED CHANGE CAPABILITY SPD_FIXED|SPD_HILO
|
||||
CPUSPDDEF .EQU SPD_HIGH ; CPU SPEED DEFAULT SPD_UNSUP|SPD_HIGH|SPD_LOW
|
||||
@@ -34,6 +35,7 @@ DEFSERCFG .EQU SER_38400_8N1 | SER_RTS ; DEFAULT SERIAL LINE CONFIG (SEE STD.ASM
|
||||
;
|
||||
RAMSIZE .EQU 512 ; SIZE OF RAM IN KB (MUST MATCH YOUR HARDWARE!!!)
|
||||
ROMSIZE .EQU 512 ; SIZE OF ROM IN KB (MUST MATCH YOUR HARDWARE!!!)
|
||||
APP_BNKS .EQU $FF ; BANKS TO RESERVE FOR APP USE ($FF FOR AUTO SIZING)
|
||||
MEMMGR .EQU MM_N8 ; MEMORY MANAGER: MM_[SBC|Z2|N8|Z180|Z280|MBC|RPH|MON]
|
||||
RAMBIAS .EQU 0 ; OFFSET OF START OF RAM IN PHYSICAL ADDRESS SPACE
|
||||
;
|
||||
@@ -71,9 +73,11 @@ WDOGMODE .EQU WDOG_NONE ; WATCHDOG MODE: WDOG_[NONE|EZZ80|SKZ]
|
||||
;
|
||||
FPLED_ENABLE .EQU FALSE ; FP: ENABLES FRONT PANEL LEDS
|
||||
FPLED_IO .EQU $00 ; FP: PORT ADDRESS FOR FP LEDS
|
||||
FPLED_INV .EQU FALSE ; FP: LED BITS ARE INVERTED
|
||||
FPLED_DSKACT .EQU TRUE ; FP: ENABLES DISK I/O ACTIVITY ON FP LEDS
|
||||
FPSW_ENABLE .EQU FALSE ; FP: ENABLES FRONT PANEL SWITCHES
|
||||
FPSW_IO .EQU $00 ; FP: PORT ADDRESS FOR FP SWITCHES
|
||||
FPSW_INV .EQU FALSE ; FP: SWITCH BITS ARE INVERTED
|
||||
;
|
||||
DIAGLVL .EQU DL_CRITICAL ; ERROR LEVEL REPORTING
|
||||
;
|
||||
@@ -179,6 +183,7 @@ VGAENABLE .EQU FALSE ; VGA: ENABLE VGA VIDEO/KBD DRIVER (VGA.ASM)
|
||||
VGASIZ .EQU V80X25 ; VGA: DISPLAY FORMAT [V80X25|V80X30|V80X43]
|
||||
VRCENABLE .EQU FALSE ; VRC: ENABLE VGARC VIDEO/KBD DRIVER (VRC.ASM)
|
||||
SCONENABLE .EQU FALSE ; SCON: ENABLE S100 CONSOLE DRIVER (SCON.ASM)
|
||||
EFENABLE .EQU FALSE ; EF: ENABLE EF9345 VIDEO DRIVER (EF.ASM)
|
||||
;
|
||||
MDENABLE .EQU TRUE ; MD: ENABLE MEMORY (ROM/RAM) DISK DRIVER (MD.ASM)
|
||||
MDROM .EQU TRUE ; MD: ENABLE ROM DISK
|
||||
|
||||
@@ -25,6 +25,7 @@ TICKFREQ .EQU 50 ; DESIRED PERIODIC TIMER INTERRUPT FREQUENCY (HZ)
|
||||
;
|
||||
BOOT_TIMEOUT .EQU -1 ; AUTO BOOT TIMEOUT IN SECONDS, -1 TO DISABLE, 0 FOR IMMEDIATE
|
||||
BOOT_DELAY .EQU 0 ; FIXED BOOT DELAY IN SECONDS PRIOR TO CONSOLE OUTPUT
|
||||
AUTOCON .EQU TRUE ; ENABLE CONSOLE TAKEOVER AT LOADER PROMPT
|
||||
;
|
||||
CPUSPDCAP .EQU SPD_FIXED ; CPU SPEED CHANGE CAPABILITY SPD_FIXED|SPD_HILO
|
||||
CPUSPDDEF .EQU SPD_HIGH ; CPU SPEED DEFAULT SPD_UNSUP|SPD_HIGH|SPD_LOW
|
||||
@@ -34,6 +35,7 @@ DEFSERCFG .EQU SER_115200_8N1 | SER_RTS ; DEFAULT SERIAL LINE CONFIG (SEE STD.AS
|
||||
;
|
||||
RAMSIZE .EQU 512 ; SIZE OF RAM IN KB (MUST MATCH YOUR HARDWARE!!!)
|
||||
ROMSIZE .EQU 512 ; SIZE OF ROM IN KB (MUST MATCH YOUR HARDWARE!!!)
|
||||
APP_BNKS .EQU $FF ; BANKS TO RESERVE FOR APP USE ($FF FOR AUTO SIZING)
|
||||
MEMMGR .EQU MM_Z180 ; MEMORY MANAGER: MM_[SBC|Z2|N8|Z180|Z280|MBC|RPH|MON]
|
||||
RAMBIAS .EQU ROMSIZE ; OFFSET OF START OF RAM IN PHYSICAL ADDRESS SPACE
|
||||
MPGSEL_0 .EQU $78 ; Z2 MEM MGR BANK 0 PAGE SELECT REG (WRITE ONLY)
|
||||
@@ -75,9 +77,11 @@ DIAGDISKIO .EQU TRUE ; ENABLES DISK I/O ACTIVITY ON DIAGNOSTIC LEDS
|
||||
;
|
||||
FPLED_ENABLE .EQU FALSE ; FP: ENABLES FRONT PANEL LEDS
|
||||
FPLED_IO .EQU $00 ; FP: PORT ADDRESS FOR FP LEDS
|
||||
FPLED_INV .EQU FALSE ; FP: LED BITS ARE INVERTED
|
||||
FPLED_DSKACT .EQU TRUE ; FP: ENABLES DISK I/O ACTIVITY ON FP LEDS
|
||||
FPSW_ENABLE .EQU TRUE ; FP: ENABLES FRONT PANEL SWITCHES
|
||||
FPSW_IO .EQU $00 ; FP: PORT ADDRESS FOR FP SWITCHES
|
||||
FPSW_INV .EQU FALSE ; FP: SWITCH BITS ARE INVERTED
|
||||
;
|
||||
DIAGLVL .EQU DL_CRITICAL ; ERROR LEVEL REPORTING
|
||||
;
|
||||
@@ -193,6 +197,7 @@ TMSTIMENABLE .EQU FALSE ; TMS: ENABLE TIMER INTERRUPTS (REQUIRES IM1)
|
||||
VGAENABLE .EQU FALSE ; VGA: ENABLE VGA VIDEO/KBD DRIVER (VGA.ASM)
|
||||
VRCENABLE .EQU FALSE ; VRC: ENABLE VGARC VIDEO/KBD DRIVER (VRC.ASM)
|
||||
SCONENABLE .EQU FALSE ; SCON: ENABLE S100 CONSOLE DRIVER (SCON.ASM)
|
||||
EFENABLE .EQU FALSE ; EF: ENABLE EF9345 VIDEO DRIVER (EF.ASM)
|
||||
;
|
||||
MDENABLE .EQU TRUE ; MD: ENABLE MEMORY (ROM/RAM) DISK DRIVER (MD.ASM)
|
||||
MDROM .EQU TRUE ; MD: ENABLE ROM DISK
|
||||
|
||||
@@ -25,6 +25,7 @@ TICKFREQ .EQU 50 ; DESIRED PERIODIC TIMER INTERRUPT FREQUENCY (HZ)
|
||||
;
|
||||
BOOT_TIMEOUT .EQU -1 ; AUTO BOOT TIMEOUT IN SECONDS, -1 TO DISABLE, 0 FOR IMMEDIATE
|
||||
BOOT_DELAY .EQU 0 ; FIXED BOOT DELAY IN SECONDS PRIOR TO CONSOLE OUTPUT
|
||||
AUTOCON .EQU TRUE ; ENABLE CONSOLE TAKEOVER AT LOADER PROMPT
|
||||
;
|
||||
CPUSPDCAP .EQU SPD_FIXED ; CPU SPEED CHANGE CAPABILITY SPD_FIXED|SPD_HILO
|
||||
CPUSPDDEF .EQU SPD_HIGH ; CPU SPEED DEFAULT SPD_UNSUP|SPD_HIGH|SPD_LOW
|
||||
@@ -34,6 +35,7 @@ DEFSERCFG .EQU SER_115200_8N1 | SER_RTS ; DEFAULT SERIAL LINE CONFIG (SEE STD.AS
|
||||
;
|
||||
RAMSIZE .EQU 512 ; SIZE OF RAM IN KB (MUST MATCH YOUR HARDWARE!!!)
|
||||
ROMSIZE .EQU 512 ; SIZE OF ROM IN KB (MUST MATCH YOUR HARDWARE!!!)
|
||||
APP_BNKS .EQU $FF ; BANKS TO RESERVE FOR APP USE ($FF FOR AUTO SIZING)
|
||||
MEMMGR .EQU MM_Z2 ; MEMORY MANAGER: MM_[SBC|Z2|N8|Z180|Z280|MBC|RPH|MON]
|
||||
RAMBIAS .EQU ROMSIZE ; OFFSET OF START OF RAM IN PHYSICAL ADDRESS SPACE
|
||||
MPGSEL_0 .EQU $78 ; Z2 MEM MGR BANK 0 PAGE SELECT REG (WRITE ONLY)
|
||||
@@ -69,9 +71,11 @@ WDOGMODE .EQU WDOG_NONE ; WATCHDOG MODE: WDOG_[NONE|EZZ80|SKZ]
|
||||
;
|
||||
FPLED_ENABLE .EQU TRUE ; FP: ENABLES FRONT PANEL LEDS
|
||||
FPLED_IO .EQU $00 ; FP: PORT ADDRESS FOR FP LEDS
|
||||
FPLED_INV .EQU FALSE ; FP: LED BITS ARE INVERTED
|
||||
FPLED_DSKACT .EQU TRUE ; FP: ENABLES DISK I/O ACTIVITY ON FP LEDS
|
||||
FPSW_ENABLE .EQU FALSE ; FP: ENABLES FRONT PANEL SWITCHES
|
||||
FPSW_IO .EQU $00 ; FP: PORT ADDRESS FOR FP SWITCHES
|
||||
FPSW_INV .EQU FALSE ; FP: SWITCH BITS ARE INVERTED
|
||||
;
|
||||
DIAGLVL .EQU DL_CRITICAL ; ERROR LEVEL REPORTING
|
||||
;
|
||||
@@ -197,6 +201,7 @@ TMSTIMENABLE .EQU FALSE ; TMS: ENABLE TIMER INTERRUPTS (REQUIRES IM1)
|
||||
VGAENABLE .EQU FALSE ; VGA: ENABLE VGA VIDEO/KBD DRIVER (VGA.ASM)
|
||||
VRCENABLE .EQU FALSE ; VRC: ENABLE VGARC VIDEO/KBD DRIVER (VRC.ASM)
|
||||
SCONENABLE .EQU FALSE ; SCON: ENABLE S100 CONSOLE DRIVER (SCON.ASM)
|
||||
EFENABLE .EQU FALSE ; EF: ENABLE EF9345 VIDEO DRIVER (EF.ASM)
|
||||
;
|
||||
MDENABLE .EQU TRUE ; MD: ENABLE MEMORY (ROM/RAM) DISK DRIVER (MD.ASM)
|
||||
MDROM .EQU TRUE ; MD: ENABLE ROM DISK
|
||||
|
||||
@@ -25,6 +25,7 @@ TICKFREQ .EQU 50 ; DESIRED PERIODIC TIMER INTERRUPT FREQUENCY (HZ)
|
||||
;
|
||||
BOOT_TIMEOUT .EQU -1 ; AUTO BOOT TIMEOUT IN SECONDS, -1 TO DISABLE, 0 FOR IMMEDIATE
|
||||
BOOT_DELAY .EQU 0 ; FIXED BOOT DELAY IN SECONDS PRIOR TO CONSOLE OUTPUT
|
||||
AUTOCON .EQU TRUE ; ENABLE CONSOLE TAKEOVER AT LOADER PROMPT
|
||||
;
|
||||
CPUSPDCAP .EQU SPD_FIXED ; CPU SPEED CHANGE CAPABILITY SPD_FIXED|SPD_HILO
|
||||
CPUSPDDEF .EQU SPD_HIGH ; CPU SPEED DEFAULT SPD_UNSUP|SPD_HIGH|SPD_LOW
|
||||
@@ -34,6 +35,7 @@ DEFSERCFG .EQU SER_115200_8N1 | SER_RTS ; DEFAULT SERIAL LINE CONFIG (SEE STD.AS
|
||||
;
|
||||
RAMSIZE .EQU 512 ; SIZE OF RAM IN KB (MUST MATCH YOUR HARDWARE!!!)
|
||||
ROMSIZE .EQU 512 ; SIZE OF ROM IN KB (MUST MATCH YOUR HARDWARE!!!)
|
||||
APP_BNKS .EQU $FF ; BANKS TO RESERVE FOR APP USE ($FF FOR AUTO SIZING)
|
||||
MEMMGR .EQU MM_Z2 ; MEMORY MANAGER: MM_[SBC|Z2|N8|Z180|Z280|MBC|RPH|MON]
|
||||
MPGSEL_0 .EQU $78 ; Z2 MEM MGR BANK 0 PAGE SELECT REG (WRITE ONLY)
|
||||
MPGSEL_1 .EQU $79 ; Z2 MEM MGR BANK 1 PAGE SELECT REG (WRITE ONLY)
|
||||
@@ -69,9 +71,11 @@ WDOGIO .EQU $6E ; WATCHDOG REGISTER ADR
|
||||
;
|
||||
FPLED_ENABLE .EQU FALSE ; FP: ENABLES FRONT PANEL LEDS
|
||||
FPLED_IO .EQU $00 ; FP: PORT ADDRESS FOR FP LEDS
|
||||
FPLED_INV .EQU FALSE ; FP: LED BITS ARE INVERTED
|
||||
FPLED_DSKACT .EQU TRUE ; FP: ENABLES DISK I/O ACTIVITY ON FP LEDS
|
||||
FPSW_ENABLE .EQU FALSE ; FP: ENABLES FRONT PANEL SWITCHES
|
||||
FPSW_IO .EQU $00 ; FP: PORT ADDRESS FOR FP SWITCHES
|
||||
FPSW_INV .EQU FALSE ; FP: SWITCH BITS ARE INVERTED
|
||||
;
|
||||
DIAGLVL .EQU DL_CRITICAL ; ERROR LEVEL REPORTING
|
||||
;
|
||||
@@ -192,6 +196,7 @@ TMSTIMENABLE .EQU FALSE ; TMS: ENABLE TIMER INTERRUPTS (REQUIRES IM1)
|
||||
VGAENABLE .EQU FALSE ; VGA: ENABLE VGA VIDEO/KBD DRIVER (VGA.ASM)
|
||||
VRCENABLE .EQU FALSE ; VRC: ENABLE VGARC VIDEO/KBD DRIVER (VRC.ASM)
|
||||
SCONENABLE .EQU FALSE ; SCON: ENABLE S100 CONSOLE DRIVER (SCON.ASM)
|
||||
EFENABLE .EQU FALSE ; EF: ENABLE EF9345 VIDEO DRIVER (EF.ASM)
|
||||
;
|
||||
MDENABLE .EQU TRUE ; MD: ENABLE MEMORY (ROM/RAM) DISK DRIVER (MD.ASM)
|
||||
MDROM .EQU TRUE ; MD: ENABLE ROM DISK
|
||||
|
||||
@@ -25,6 +25,7 @@ TICKFREQ .EQU 50 ; DESIRED PERIODIC TIMER INTERRUPT FREQUENCY (HZ)
|
||||
;
|
||||
BOOT_TIMEOUT .EQU -1 ; AUTO BOOT TIMEOUT IN SECONDS, -1 TO DISABLE, 0 FOR IMMEDIATE
|
||||
BOOT_DELAY .EQU 0 ; FIXED BOOT DELAY IN SECONDS PRIOR TO CONSOLE OUTPUT
|
||||
AUTOCON .EQU TRUE ; ENABLE CONSOLE TAKEOVER AT LOADER PROMPT
|
||||
;
|
||||
CPUSPDCAP .EQU SPD_FIXED ; CPU SPEED CHANGE CAPABILITY SPD_FIXED|SPD_HILO
|
||||
CPUSPDDEF .EQU SPD_HIGH ; CPU SPEED DEFAULT SPD_UNSUP|SPD_HIGH|SPD_LOW
|
||||
@@ -34,6 +35,7 @@ DEFSERCFG .EQU SER_38400_8N1 | SER_RTS ; DEFAULT SERIAL LINE CONFIG (SEE STD.ASM
|
||||
;
|
||||
RAMSIZE .EQU 512 ; SIZE OF RAM IN KB (MUST MATCH YOUR HARDWARE!!!)
|
||||
ROMSIZE .EQU 512 ; SIZE OF ROM IN KB (MUST MATCH YOUR HARDWARE!!!)
|
||||
APP_BNKS .EQU $FF ; BANKS TO RESERVE FOR APP USE ($FF FOR AUTO SIZING)
|
||||
MEMMGR .EQU MM_RPH ; MEMORY MANAGER: MM_[SBC|Z2|N8|Z180|Z280|MBC|RPH|MON]
|
||||
RAMBIAS .EQU 0 ; OFFSET OF START OF RAM IN PHYSICAL ADDRESS SPACE
|
||||
;
|
||||
@@ -69,9 +71,11 @@ WDOGMODE .EQU WDOG_NONE ; WATCHDOG MODE: WDOG_[NONE|EZZ80|SKZ]
|
||||
;
|
||||
FPLED_ENABLE .EQU FALSE ; FP: ENABLES FRONT PANEL LEDS
|
||||
FPLED_IO .EQU $00 ; FP: PORT ADDRESS FOR FP LEDS
|
||||
FPLED_INV .EQU FALSE ; FP: LED BITS ARE INVERTED
|
||||
FPLED_DSKACT .EQU TRUE ; FP: ENABLES DISK I/O ACTIVITY ON FP LEDS
|
||||
FPSW_ENABLE .EQU FALSE ; FP: ENABLES FRONT PANEL SWITCHES
|
||||
FPSW_IO .EQU $00 ; FP: PORT ADDRESS FOR FP SWITCHES
|
||||
FPSW_INV .EQU FALSE ; FP: SWITCH BITS ARE INVERTED
|
||||
;
|
||||
DIAGLVL .EQU DL_CRITICAL ; ERROR LEVEL REPORTING
|
||||
;
|
||||
@@ -168,6 +172,7 @@ VGAENABLE .EQU FALSE ; VGA: ENABLE VGA VIDEO/KBD DRIVER (VGA.ASM)
|
||||
VGASIZ .EQU V80X25 ; VGA: DISPLAY FORMAT [V80X25|V80X30|V80X43]
|
||||
VRCENABLE .EQU FALSE ; VRC: ENABLE VGARC VIDEO/KBD DRIVER (VRC.ASM)
|
||||
SCONENABLE .EQU FALSE ; SCON: ENABLE S100 CONSOLE DRIVER (SCON.ASM)
|
||||
EFENABLE .EQU FALSE ; EF: ENABLE EF9345 VIDEO DRIVER (EF.ASM)
|
||||
;
|
||||
MDENABLE .EQU TRUE ; MD: ENABLE MEMORY (ROM/RAM) DISK DRIVER (MD.ASM)
|
||||
MDROM .EQU TRUE ; MD: ENABLE ROM DISK
|
||||
|
||||
@@ -25,6 +25,7 @@ TICKFREQ .EQU 50 ; DESIRED PERIODIC TIMER INTERRUPT FREQUENCY (HZ)
|
||||
;
|
||||
BOOT_TIMEOUT .EQU -1 ; AUTO BOOT TIMEOUT IN SECONDS, -1 TO DISABLE, 0 FOR IMMEDIATE
|
||||
BOOT_DELAY .EQU 0 ; FIXED BOOT DELAY IN SECONDS PRIOR TO CONSOLE OUTPUT
|
||||
AUTOCON .EQU TRUE ; ENABLE CONSOLE TAKEOVER AT LOADER PROMPT
|
||||
;
|
||||
CPUSPDCAP .EQU SPD_FIXED ; CPU SPEED CHANGE CAPABILITY SPD_FIXED|SPD_HILO
|
||||
CPUSPDDEF .EQU SPD_HIGH ; CPU SPEED DEFAULT SPD_UNSUP|SPD_HIGH|SPD_LOW
|
||||
@@ -34,6 +35,7 @@ DEFSERCFG .EQU SER_57600_8N1 | SER_RTS ; DEFAULT SERIAL LINE CONFIG (SEE STD.ASM
|
||||
;
|
||||
RAMSIZE .EQU 512 ; SIZE OF RAM IN KB (MUST MATCH YOUR HARDWARE!!!)
|
||||
ROMSIZE .EQU 512 ; SIZE OF ROM IN KB (MUST MATCH YOUR HARDWARE!!!)
|
||||
APP_BNKS .EQU $FF ; BANKS TO RESERVE FOR APP USE ($FF FOR AUTO SIZING)
|
||||
MEMMGR .EQU MM_Z180 ; MEMORY MANAGER: MM_[SBC|Z2|N8|Z180|Z280|MBC|RPH|MON]
|
||||
RAMBIAS .EQU ROMSIZE ; OFFSET OF START OF RAM IN PHYSICAL ADDRESS SPACE
|
||||
MPGSEL_0 .EQU $78 ; Z2 MEM MGR BANK 0 PAGE SELECT REG (WRITE ONLY)
|
||||
@@ -69,9 +71,11 @@ WDOGMODE .EQU WDOG_NONE ; WATCHDOG MODE: WDOG_[NONE|EZZ80|SKZ]
|
||||
;
|
||||
FPLED_ENABLE .EQU TRUE ; FP: ENABLES FRONT PANEL LEDS
|
||||
FPLED_IO .EQU $00 ; FP: PORT ADDRESS FOR FP LEDS
|
||||
FPLED_INV .EQU FALSE ; FP: LED BITS ARE INVERTED
|
||||
FPLED_DSKACT .EQU TRUE ; FP: ENABLES DISK I/O ACTIVITY ON FP LEDS
|
||||
FPSW_ENABLE .EQU FALSE ; FP: ENABLES FRONT PANEL SWITCHES
|
||||
FPSW_IO .EQU $00 ; FP: PORT ADDRESS FOR FP SWITCHES
|
||||
FPSW_INV .EQU FALSE ; FP: SWITCH BITS ARE INVERTED
|
||||
;
|
||||
DIAGLVL .EQU DL_CRITICAL ; ERROR LEVEL REPORTING
|
||||
;
|
||||
@@ -187,6 +191,7 @@ TMSTIMENABLE .EQU FALSE ; TMS: ENABLE TIMER INTERRUPTS (REQUIRES IM1)
|
||||
VGAENABLE .EQU FALSE ; VGA: ENABLE VGA VIDEO/KBD DRIVER (VGA.ASM)
|
||||
VRCENABLE .EQU FALSE ; VRC: ENABLE VGARC VIDEO/KBD DRIVER (VRC.ASM)
|
||||
SCONENABLE .EQU FALSE ; SCON: ENABLE S100 CONSOLE DRIVER (SCON.ASM)
|
||||
EFENABLE .EQU FALSE ; EF: ENABLE EF9345 VIDEO DRIVER (EF.ASM)
|
||||
;
|
||||
MDENABLE .EQU TRUE ; MD: ENABLE MEMORY (ROM/RAM) DISK DRIVER (MD.ASM)
|
||||
MDROM .EQU TRUE ; MD: ENABLE ROM DISK
|
||||
|
||||
@@ -25,6 +25,7 @@ TICKFREQ .EQU 50 ; DESIRED PERIODIC TIMER INTERRUPT FREQUENCY (HZ)
|
||||
;
|
||||
BOOT_TIMEOUT .EQU -1 ; AUTO BOOT TIMEOUT IN SECONDS, -1 TO DISABLE, 0 FOR IMMEDIATE
|
||||
BOOT_DELAY .EQU 0 ; FIXED BOOT DELAY IN SECONDS PRIOR TO CONSOLE OUTPUT
|
||||
AUTOCON .EQU TRUE ; ENABLE CONSOLE TAKEOVER AT LOADER PROMPT
|
||||
;
|
||||
CPUSPDCAP .EQU SPD_FIXED ; CPU SPEED CHANGE CAPABILITY SPD_FIXED|SPD_HILO
|
||||
CPUSPDDEF .EQU SPD_HIGH ; CPU SPEED DEFAULT SPD_UNSUP|SPD_HIGH|SPD_LOW
|
||||
@@ -34,6 +35,7 @@ DEFSERCFG .EQU SER_38400_8N1 | SER_RTS ; DEFAULT SERIAL LINE CONFIG (SEE STD.ASM
|
||||
;
|
||||
RAMSIZE .EQU 512 ; SIZE OF RAM IN KB (MUST MATCH YOUR HARDWARE!!!)
|
||||
ROMSIZE .EQU 512 ; SIZE OF ROM IN KB (MUST MATCH YOUR HARDWARE!!!)
|
||||
APP_BNKS .EQU $FF ; BANKS TO RESERVE FOR APP USE ($FF FOR AUTO SIZING)
|
||||
MEMMGR .EQU MM_SBC ; MEMORY MANAGER: MM_[SBC|Z2|N8|Z180|Z280|MBC|RPH|MON]
|
||||
MPCL_RAM .EQU $78 ; SBC MEM MGR RAM PAGE SELECT REG (WRITE ONLY)
|
||||
MPCL_ROM .EQU $7C ; SBC MEM MGR ROM PAGE SELECT REG (WRITE ONLY)
|
||||
@@ -64,9 +66,11 @@ WDOGMODE .EQU WDOG_NONE ; WATCHDOG MODE: WDOG_[NONE|EZZ80|SKZ]
|
||||
;
|
||||
FPLED_ENABLE .EQU FALSE ; FP: ENABLES FRONT PANEL LEDS
|
||||
FPLED_IO .EQU $00 ; FP: PORT ADDRESS FOR FP LEDS
|
||||
FPLED_INV .EQU FALSE ; FP: LED BITS ARE INVERTED
|
||||
FPLED_DSKACT .EQU TRUE ; FP: ENABLES DISK I/O ACTIVITY ON FP LEDS
|
||||
FPSW_ENABLE .EQU FALSE ; FP: ENABLES FRONT PANEL SWITCHES
|
||||
FPSW_IO .EQU $00 ; FP: PORT ADDRESS FOR FP SWITCHES
|
||||
FPSW_INV .EQU FALSE ; FP: SWITCH BITS ARE INVERTED
|
||||
;
|
||||
DIAGLVL .EQU DL_CRITICAL ; ERROR LEVEL REPORTING
|
||||
;
|
||||
@@ -167,6 +171,7 @@ VGAENABLE .EQU FALSE ; VGA: ENABLE VGA VIDEO/KBD DRIVER (VGA.ASM)
|
||||
VGASIZ .EQU V80X25 ; VGA: DISPLAY FORMAT [V80X25|V80X30|V80X43]
|
||||
VRCENABLE .EQU FALSE ; VRC: ENABLE VGARC VIDEO/KBD DRIVER (VRC.ASM)
|
||||
SCONENABLE .EQU FALSE ; SCON: ENABLE S100 CONSOLE DRIVER (SCON.ASM)
|
||||
EFENABLE .EQU FALSE ; EF: ENABLE EF9345 VIDEO DRIVER (EF.ASM)
|
||||
;
|
||||
MDENABLE .EQU TRUE ; MD: ENABLE MEMORY (ROM/RAM) DISK DRIVER (MD.ASM)
|
||||
MDROM .EQU TRUE ; MD: ENABLE ROM DISK
|
||||
|
||||
@@ -25,6 +25,7 @@ TICKFREQ .EQU 50 ; DESIRED PERIODIC TIMER INTERRUPT FREQUENCY (HZ)
|
||||
;
|
||||
BOOT_TIMEOUT .EQU -1 ; AUTO BOOT TIMEOUT IN SECONDS, -1 TO DISABLE, 0 FOR IMMEDIATE
|
||||
BOOT_DELAY .EQU 0 ; FIXED BOOT DELAY IN SECONDS PRIOR TO CONSOLE OUTPUT
|
||||
AUTOCON .EQU TRUE ; ENABLE CONSOLE TAKEOVER AT LOADER PROMPT
|
||||
;
|
||||
CPUSPDCAP .EQU SPD_FIXED ; CPU SPEED CHANGE CAPABILITY SPD_FIXED|SPD_HILO
|
||||
CPUSPDDEF .EQU SPD_HIGH ; CPU SPEED DEFAULT SPD_UNSUP|SPD_HIGH|SPD_LOW
|
||||
@@ -34,6 +35,7 @@ DEFSERCFG .EQU SER_115200_8N1 | SER_RTS ; DEFAULT SERIAL LINE CONFIG (SEE STD.AS
|
||||
;
|
||||
RAMSIZE .EQU 512 ; SIZE OF RAM IN KB (MUST MATCH YOUR HARDWARE!!!)
|
||||
ROMSIZE .EQU 512 ; SIZE OF ROM IN KB (MUST MATCH YOUR HARDWARE!!!)
|
||||
APP_BNKS .EQU $FF ; BANKS TO RESERVE FOR APP USE ($FF FOR AUTO SIZING)
|
||||
MEMMGR .EQU MM_Z180 ; MEMORY MANAGER: MM_[SBC|Z2|N8|Z180|Z280|MBC|RPH|MON]
|
||||
RAMBIAS .EQU ROMSIZE ; OFFSET OF START OF RAM IN PHYSICAL ADDRESS SPACE
|
||||
MPGSEL_0 .EQU $78 ; Z2 MEM MGR BANK 0 PAGE SELECT REG (WRITE ONLY)
|
||||
@@ -69,9 +71,11 @@ WDOGMODE .EQU WDOG_NONE ; WATCHDOG MODE: WDOG_[NONE|EZZ80|SKZ]
|
||||
;
|
||||
FPLED_ENABLE .EQU TRUE ; FP: ENABLES FRONT PANEL LEDS
|
||||
FPLED_IO .EQU $00 ; FP: PORT ADDRESS FOR FP LEDS
|
||||
FPLED_INV .EQU FALSE ; FP: LED BITS ARE INVERTED
|
||||
FPLED_DSKACT .EQU TRUE ; FP: ENABLES DISK I/O ACTIVITY ON FP LEDS
|
||||
FPSW_ENABLE .EQU FALSE ; FP: ENABLES FRONT PANEL SWITCHES
|
||||
FPSW_IO .EQU $00 ; FP: PORT ADDRESS FOR FP SWITCHES
|
||||
FPSW_INV .EQU FALSE ; FP: SWITCH BITS ARE INVERTED
|
||||
;
|
||||
DIAGLVL .EQU DL_CRITICAL ; ERROR LEVEL REPORTING
|
||||
;
|
||||
@@ -187,6 +191,7 @@ TMSTIMENABLE .EQU FALSE ; TMS: ENABLE TIMER INTERRUPTS (REQUIRES IM1)
|
||||
VGAENABLE .EQU FALSE ; VGA: ENABLE VGA VIDEO/KBD DRIVER (VGA.ASM)
|
||||
VRCENABLE .EQU FALSE ; VRC: ENABLE VGARC VIDEO/KBD DRIVER (VRC.ASM)
|
||||
SCONENABLE .EQU FALSE ; SCON: ENABLE S100 CONSOLE DRIVER (SCON.ASM)
|
||||
EFENABLE .EQU FALSE ; EF: ENABLE EF9345 VIDEO DRIVER (EF.ASM)
|
||||
;
|
||||
MDENABLE .EQU TRUE ; MD: ENABLE MEMORY (ROM/RAM) DISK DRIVER (MD.ASM)
|
||||
MDROM .EQU TRUE ; MD: ENABLE ROM DISK
|
||||
|
||||
@@ -32,6 +32,10 @@ INTMODE .EQU 0 ; INTERRUPTS: 0=NONE, 1=MODE 1, 2=MODE 2, 3=MODE 3 (Z280)
|
||||
;
|
||||
RAMSIZE .EQU 512 ; SIZE OF RAM IN KB (MUST MATCH YOUR HARDWARE!!!)
|
||||
ROMSIZE .EQU 512 ; SIZE OF ROM IN KB (MUST MATCH YOUR HARDWARE!!!)
|
||||
APP_BNKS .EQU 0 ; NOT SUPPORTED ON UNA
|
||||
;
|
||||
MDROM .EQU TRUE ; MD: ENABLE ROM DISK
|
||||
MDRAM .EQU TRUE ; MD: ENABLE RAM DISK
|
||||
;
|
||||
RTCIO .EQU $70 ; RTC LATCH REGISTER ADR
|
||||
;
|
||||
|
||||
@@ -25,6 +25,7 @@ TICKFREQ .EQU 50 ; DESIRED PERIODIC TIMER INTERRUPT FREQUENCY (HZ)
|
||||
;
|
||||
BOOT_TIMEOUT .EQU -1 ; AUTO BOOT TIMEOUT IN SECONDS, -1 TO DISABLE, 0 FOR IMMEDIATE
|
||||
BOOT_DELAY .EQU 0 ; FIXED BOOT DELAY IN SECONDS PRIOR TO CONSOLE OUTPUT
|
||||
AUTOCON .EQU TRUE ; ENABLE CONSOLE TAKEOVER AT LOADER PROMPT
|
||||
;
|
||||
CPUSPDCAP .EQU SPD_FIXED ; CPU SPEED CHANGE CAPABILITY SPD_FIXED|SPD_HILO
|
||||
CPUSPDDEF .EQU SPD_HIGH ; CPU SPEED DEFAULT SPD_UNSUP|SPD_HIGH|SPD_LOW
|
||||
@@ -34,6 +35,7 @@ DEFSERCFG .EQU SER_38400_8N1 | SER_RTS ; DEFAULT SERIAL LINE CONFIG (SEE STD.ASM
|
||||
;
|
||||
RAMSIZE .EQU 512 ; SIZE OF RAM IN KB (MUST MATCH YOUR HARDWARE!!!)
|
||||
ROMSIZE .EQU 512 ; SIZE OF ROM IN KB (MUST MATCH YOUR HARDWARE!!!)
|
||||
APP_BNKS .EQU $FF ; BANKS TO RESERVE FOR APP USE ($FF FOR AUTO SIZING)
|
||||
MEMMGR .EQU MM_Z2 ; MEMORY MANAGER: MM_[SBC|Z2|N8|Z180|Z280|MBC|RPH|MON]
|
||||
MPGSEL_0 .EQU $60 ; Z2 MEM MGR BANK 0 PAGE SELECT REG (WRITE ONLY)
|
||||
MPGSEL_1 .EQU $61 ; Z2 MEM MGR BANK 1 PAGE SELECT REG (WRITE ONLY)
|
||||
@@ -67,9 +69,11 @@ WDOGMODE .EQU WDOG_NONE ; WATCHDOG MODE: WDOG_[NONE|EZZ80|SKZ]
|
||||
;
|
||||
FPLED_ENABLE .EQU FALSE ; FP: ENABLES FRONT PANEL LEDS
|
||||
FPLED_IO .EQU $00 ; FP: PORT ADDRESS FOR FP LEDS
|
||||
FPLED_INV .EQU FALSE ; FP: LED BITS ARE INVERTED
|
||||
FPLED_DSKACT .EQU TRUE ; FP: ENABLES DISK I/O ACTIVITY ON FP LEDS
|
||||
FPSW_ENABLE .EQU FALSE ; FP: ENABLES FRONT PANEL SWITCHES
|
||||
FPSW_IO .EQU $00 ; FP: PORT ADDRESS FOR FP SWITCHES
|
||||
FPSW_INV .EQU FALSE ; FP: SWITCH BITS ARE INVERTED
|
||||
;
|
||||
DIAGLVL .EQU DL_CRITICAL ; ERROR LEVEL REPORTING
|
||||
;
|
||||
@@ -169,6 +173,7 @@ TMSTIMENABLE .EQU FALSE ; TMS: ENABLE TIMER INTERRUPTS (REQUIRES IM1)
|
||||
VGAENABLE .EQU FALSE ; VGA: ENABLE VGA VIDEO/KBD DRIVER (VGA.ASM)
|
||||
VRCENABLE .EQU FALSE ; VRC: ENABLE VGARC VIDEO/KBD DRIVER (VRC.ASM)
|
||||
SCONENABLE .EQU FALSE ; SCON: ENABLE S100 CONSOLE DRIVER (SCON.ASM)
|
||||
EFENABLE .EQU FALSE ; EF: ENABLE EF9345 VIDEO DRIVER (EF.ASM)
|
||||
;
|
||||
MDENABLE .EQU TRUE ; MD: ENABLE MEMORY (ROM/RAM) DISK DRIVER (MD.ASM)
|
||||
MDROM .EQU TRUE ; MD: ENABLE ROM DISK
|
||||
|
||||
@@ -25,6 +25,7 @@ TICKFREQ .EQU 50 ; DESIRED PERIODIC TIMER INTERRUPT FREQUENCY (HZ)
|
||||
;
|
||||
BOOT_TIMEOUT .EQU -1 ; AUTO BOOT TIMEOUT IN SECONDS, -1 TO DISABLE, 0 FOR IMMEDIATE
|
||||
BOOT_DELAY .EQU 0 ; FIXED BOOT DELAY IN SECONDS PRIOR TO CONSOLE OUTPUT
|
||||
AUTOCON .EQU TRUE ; ENABLE CONSOLE TAKEOVER AT LOADER PROMPT
|
||||
;
|
||||
CPUSPDCAP .EQU SPD_FIXED ; CPU SPEED CHANGE CAPABILITY SPD_FIXED|SPD_HILO
|
||||
CPUSPDDEF .EQU SPD_HIGH ; CPU SPEED DEFAULT SPD_UNSUP|SPD_HIGH|SPD_LOW
|
||||
@@ -34,6 +35,7 @@ DEFSERCFG .EQU SER_38400_8N1 | SER_RTS ; DEFAULT SERIAL LINE CONFIG (SEE STD.ASM
|
||||
;
|
||||
RAMSIZE .EQU 512 ; SIZE OF RAM IN KB (MUST MATCH YOUR HARDWARE!!!)
|
||||
ROMSIZE .EQU 512 ; SIZE OF ROM IN KB (MUST MATCH YOUR HARDWARE!!!)
|
||||
APP_BNKS .EQU $FF ; BANKS TO RESERVE FOR APP USE ($FF FOR AUTO SIZING)
|
||||
MEMMGR .EQU MM_SBC ; MEMORY MANAGER: MM_[SBC|Z2|N8|Z180|Z280|MBC|RPH|MON]
|
||||
MPCL_RAM .EQU $78 ; SBC MEM MGR RAM PAGE SELECT REG (WRITE ONLY)
|
||||
MPCL_ROM .EQU $7C ; SBC MEM MGR ROM PAGE SELECT REG (WRITE ONLY)
|
||||
@@ -56,9 +58,11 @@ WDOGMODE .EQU WDOG_NONE ; WATCHDOG MODE: WDOG_[NONE|EZZ80|SKZ]
|
||||
;
|
||||
FPLED_ENABLE .EQU FALSE ; FP: ENABLES FRONT PANEL LEDS
|
||||
FPLED_IO .EQU $00 ; FP: PORT ADDRESS FOR FP LEDS
|
||||
FPLED_INV .EQU FALSE ; FP: LED BITS ARE INVERTED
|
||||
FPLED_DSKACT .EQU TRUE ; FP: ENABLES DISK I/O ACTIVITY ON FP LEDS
|
||||
FPSW_ENABLE .EQU FALSE ; FP: ENABLES FRONT PANEL SWITCHES
|
||||
FPSW_IO .EQU $00 ; FP: PORT ADDRESS FOR FP SWITCHES
|
||||
FPSW_INV .EQU FALSE ; FP: SWITCH BITS ARE INVERTED
|
||||
;
|
||||
DIAGLVL .EQU DL_CRITICAL ; ERROR LEVEL REPORTING
|
||||
;
|
||||
@@ -139,6 +143,7 @@ TMSTIMENABLE .EQU FALSE ; TMS: ENABLE TIMER INTERRUPTS (REQUIRES IM1)
|
||||
VGAENABLE .EQU FALSE ; VGA: ENABLE VGA VIDEO/KBD DRIVER (VGA.ASM)
|
||||
VRCENABLE .EQU FALSE ; VRC: ENABLE VGARC VIDEO/KBD DRIVER (VRC.ASM)
|
||||
SCONENABLE .EQU FALSE ; SCON: ENABLE S100 CONSOLE DRIVER (SCON.ASM)
|
||||
EFENABLE .EQU FALSE ; EF: ENABLE EF9345 VIDEO DRIVER (EF.ASM)
|
||||
;
|
||||
MDENABLE .EQU TRUE ; MD: ENABLE MEMORY (ROM/RAM) DISK DRIVER (MD.ASM)
|
||||
MDROM .EQU TRUE ; MD: ENABLE ROM DISK
|
||||
|
||||
@@ -25,6 +25,7 @@ TICKFREQ .EQU 50 ; DESIRED PERIODIC TIMER INTERRUPT FREQUENCY (HZ)
|
||||
;
|
||||
BOOT_TIMEOUT .EQU -1 ; AUTO BOOT TIMEOUT IN SECONDS, -1 TO DISABLE, 0 FOR IMMEDIATE
|
||||
BOOT_DELAY .EQU 0 ; FIXED BOOT DELAY IN SECONDS PRIOR TO CONSOLE OUTPUT
|
||||
AUTOCON .EQU TRUE ; ENABLE CONSOLE TAKEOVER AT LOADER PROMPT
|
||||
;
|
||||
CPUSPDCAP .EQU SPD_FIXED ; CPU SPEED CHANGE CAPABILITY SPD_FIXED|SPD_HILO
|
||||
CPUSPDDEF .EQU SPD_HIGH ; CPU SPEED DEFAULT SPD_UNSUP|SPD_HIGH|SPD_LOW
|
||||
@@ -34,6 +35,7 @@ DEFSERCFG .EQU SER_38400_8N1 | SER_RTS ; DEFAULT SERIAL LINE CONFIG (SEE STD.ASM
|
||||
;
|
||||
RAMSIZE .EQU 512 ; SIZE OF RAM IN KB (MUST MATCH YOUR HARDWARE!!!)
|
||||
ROMSIZE .EQU 512 ; SIZE OF ROM IN KB (MUST MATCH YOUR HARDWARE!!!)
|
||||
APP_BNKS .EQU $FF ; BANKS TO RESERVE FOR APP USE ($FF FOR AUTO SIZING)
|
||||
MEMMGR .EQU MM_Z2 ; MEMORY MANAGER: MM_[SBC|Z2|N8|Z180|Z280|MBC|RPH|MON]
|
||||
MPGSEL_0 .EQU $78 ; Z2 MEM MGR BANK 0 PAGE SELECT REG (WRITE ONLY)
|
||||
MPGSEL_1 .EQU $79 ; Z2 MEM MGR BANK 1 PAGE SELECT REG (WRITE ONLY)
|
||||
@@ -67,9 +69,11 @@ WDOGMODE .EQU WDOG_NONE ; WATCHDOG MODE: WDOG_[NONE|EZZ80|SKZ]
|
||||
;
|
||||
FPLED_ENABLE .EQU FALSE ; FP: ENABLES FRONT PANEL LEDS
|
||||
FPLED_IO .EQU $00 ; FP: PORT ADDRESS FOR FP LEDS
|
||||
FPLED_INV .EQU FALSE ; FP: LED BITS ARE INVERTED
|
||||
FPLED_DSKACT .EQU TRUE ; FP: ENABLES DISK I/O ACTIVITY ON FP LEDS
|
||||
FPSW_ENABLE .EQU FALSE ; FP: ENABLES FRONT PANEL SWITCHES
|
||||
FPSW_IO .EQU $00 ; FP: PORT ADDRESS FOR FP SWITCHES
|
||||
FPSW_INV .EQU FALSE ; FP: SWITCH BITS ARE INVERTED
|
||||
;
|
||||
DIAGLVL .EQU DL_CRITICAL ; ERROR LEVEL REPORTING
|
||||
;
|
||||
@@ -150,6 +154,7 @@ TMSTIMENABLE .EQU FALSE ; TMS: ENABLE TIMER INTERRUPTS (REQUIRES IM1)
|
||||
VGAENABLE .EQU FALSE ; VGA: ENABLE VGA VIDEO/KBD DRIVER (VGA.ASM)
|
||||
VRCENABLE .EQU FALSE ; VRC: ENABLE VGARC VIDEO/KBD DRIVER (VRC.ASM)
|
||||
SCONENABLE .EQU FALSE ; SCON: ENABLE S100 CONSOLE DRIVER (SCON.ASM)
|
||||
EFENABLE .EQU FALSE ; EF: ENABLE EF9345 VIDEO DRIVER (EF.ASM)
|
||||
;
|
||||
MDENABLE .EQU TRUE ; MD: ENABLE MEMORY (ROM/RAM) DISK DRIVER (MD.ASM)
|
||||
MDROM .EQU TRUE ; MD: ENABLE ROM DISK
|
||||
|
||||
@@ -59,6 +59,7 @@ CVDU_COLS .EQU 80
|
||||
#ENDIF
|
||||
;
|
||||
TERMENABLE .SET TRUE ; INCLUDE TERMINAL PSEUDODEVICE DRIVER
|
||||
KBDENABLE .SET TRUE ; INCLUDE KBD KEYBOARD SUPPORT
|
||||
;
|
||||
;======================================================================
|
||||
; CVDU DRIVER - INITIALIZATION
|
||||
|
||||
@@ -279,8 +279,7 @@ DS1501RTC_GETBYT:
|
||||
LD E,A
|
||||
;
|
||||
; Return success
|
||||
XOR
|
||||
;
|
||||
XOR A
|
||||
RET
|
||||
;
|
||||
; RTC Set Byte
|
||||
|
||||
1083
Source/HBIOS/ef.asm
Normal file
1083
Source/HBIOS/ef.asm
Normal file
File diff suppressed because it is too large
Load Diff
@@ -65,6 +65,7 @@ GDC_COLS .EQU 80
|
||||
.ECHO "\n"
|
||||
;
|
||||
TERMENABLE .SET TRUE ; INCLUDE TERMINAL PSEUDODEVICE DRIVER
|
||||
KBDENABLE .SET TRUE ; INCLUDE KBD KEYBOARD SUPPORT
|
||||
;
|
||||
;======================================================================
|
||||
; GDC DRIVER - INITIALIZATION
|
||||
|
||||
@@ -95,11 +95,10 @@ MODCNT .SET MODCNT + 1
|
||||
#DEFINE ALIGN(N) .FILL ((($+(N-1)) & ~(N-1)) - $)
|
||||
;
|
||||
#IF (FPLED_ENABLE)
|
||||
#DEFINE DIAG(N) PUSH AF
|
||||
#DEFCONT \ LD A,N
|
||||
; #DEFCONT \ OUT (DIAGPORT),A
|
||||
#DEFINE DIAG(N) PUSH AF
|
||||
#DEFCONT \ LD A,N
|
||||
#DEFCONT \ CALL FP_SETLEDS
|
||||
#DEFCONT \ POP AF
|
||||
#DEFCONT \ POP AF
|
||||
#ELSE
|
||||
#DEFINE DIAG(N) \;
|
||||
#ENDIF
|
||||
@@ -132,30 +131,30 @@ MODCNT .SET MODCNT + 1
|
||||
#ENDIF
|
||||
;
|
||||
#DEFINE SYSCHKERR(HB_ERR) \
|
||||
#DEFCONT \ CALL SYSCHKA
|
||||
#DEFCONT \ LD A,HB_ERR
|
||||
#DEFCONT \ OR A
|
||||
#DEFCONT \ CALL SYSCHKA
|
||||
#DEFCONT \ LD A,HB_ERR
|
||||
#DEFCONT \ OR A
|
||||
;
|
||||
;
|
||||
;
|
||||
#IF (INTMODE == 0)
|
||||
; NO INTERRUPT HANDLING
|
||||
#DEFINE HB_DI ;
|
||||
#DEFINE HB_EI ;
|
||||
; NO INTERRUPT HANDLING
|
||||
#DEFINE HB_DI ;
|
||||
#DEFINE HB_EI ;
|
||||
#ELSE
|
||||
#IF (CPUFAM == CPU_Z280)
|
||||
#IF (INTMODE == 3)
|
||||
; Z280 MODE 3 INTERRUPT HANDLING (INTA, C/T 0, & UART RCVR ENABLED)
|
||||
#DEFINE HB_DI DI
|
||||
#DEFINE HB_EI EI $0B
|
||||
; Z280 MODE 3 INTERRUPT HANDLING (INTA, C/T 0, & UART RCVR ENABLED)
|
||||
#DEFINE HB_DI DI
|
||||
#DEFINE HB_EI EI $0B
|
||||
#ELSE
|
||||
; Z280 MODE 1/2 INTERRUPT HANDLING
|
||||
#DEFINE HB_DI DI
|
||||
#DEFINE HB_EI EI
|
||||
; Z280 MODE 1/2 INTERRUPT HANDLING
|
||||
#DEFINE HB_DI DI
|
||||
#DEFINE HB_EI EI
|
||||
#ENDIF
|
||||
#ELSE
|
||||
#DEFINE HB_DI DI
|
||||
#DEFINE HB_EI EI
|
||||
#DEFINE HB_DI DI
|
||||
#DEFINE HB_EI EI
|
||||
#ENDIF
|
||||
#ENDIF
|
||||
;
|
||||
@@ -335,6 +334,8 @@ CB_BIDRAMD0 .DB BID_RAMD0
|
||||
CB_RAMD_BNKS .DB RAMD_BNKS
|
||||
CB_BIDROMD0 .DB BID_ROMD0
|
||||
CB_ROMD_BNKS .DB ROMD_BNKS
|
||||
CB_BIDAPP0 .DB BID_APP0
|
||||
CB_APP_BNKS .DB APP_BNKS
|
||||
;
|
||||
.FILL (HCB + HCB_SIZ - $),0 ; PAD REMAINDER OF HCB
|
||||
;
|
||||
@@ -439,7 +440,7 @@ HBX_INVSP .EQU $ - 2
|
||||
;
|
||||
;;::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
|
||||
;; BNKSEL - Switch Memory Bank to Bank in A.
|
||||
;; Preserve all Registers including Flags.
|
||||
;; AF is destroyed, all other registers are preserved.
|
||||
;;::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
|
||||
;
|
||||
HBX_BNKSEL:
|
||||
@@ -1181,6 +1182,9 @@ BOOTWAIT:
|
||||
#IF (FPLED_ENABLE)
|
||||
; NO STACK YET, SO CAN'T USE DIAG() MACRO
|
||||
LD A,DIAG_01
|
||||
#IF (FPLED_INV)
|
||||
XOR $FF ; INVERT BITS IF NEEDED
|
||||
#ENDIF
|
||||
OUT (FPLED_IO),A
|
||||
#ENDIF
|
||||
#IF (LEDENABLE)
|
||||
@@ -1391,6 +1395,9 @@ Z280_INITZ:
|
||||
#IF (FPLED_ENABLE)
|
||||
; NO STACK YET, SO CAN'T USE DIAG() MACRO
|
||||
LD A,DIAG_02
|
||||
#IF (FPLED_INV)
|
||||
XOR $FF ; INVERT BITS IF NEEDED
|
||||
#ENDIF
|
||||
OUT (FPLED_IO),A
|
||||
#ENDIF
|
||||
|
||||
@@ -3250,9 +3257,8 @@ HB_PCINITTBL:
|
||||
#IF (TMSENABLE)
|
||||
.DW TMS_PREINIT
|
||||
#ENDIF
|
||||
#IF (SCONENABLE)
|
||||
.DW SCON_PREINIT
|
||||
#ENDIF
|
||||
.DW TERM_PREINIT ; ALWAYS DO THIS ONE
|
||||
;
|
||||
HB_PCINITTBLLEN .EQU (($ - HB_PCINITTBL) / 2)
|
||||
|
||||
;==================================================================================================
|
||||
@@ -3358,8 +3364,8 @@ HB_INITTBL:
|
||||
#IF (TMSENABLE)
|
||||
.DW TMS_INIT
|
||||
#ENDIF
|
||||
#IF (SCONENABLE)
|
||||
.DW SCON_INIT
|
||||
#IF (EFENABLE)
|
||||
.DW EF_INIT
|
||||
#ENDIF
|
||||
#IF (VRCENABLE)
|
||||
.DW VRC_INIT
|
||||
@@ -3403,6 +3409,9 @@ HB_INITTBL:
|
||||
#IF (PPPENABLE)
|
||||
.DW PPP_INIT
|
||||
#ENDIF
|
||||
#IF (SCONENABLE)
|
||||
.DW SCON_INIT
|
||||
#ENDIF
|
||||
#IF (CHENABLE)
|
||||
.DW CH_INIT
|
||||
#ENDIF
|
||||
@@ -4417,6 +4426,8 @@ SYS_GET:
|
||||
JP Z,SYS_GETCPUSPD
|
||||
CP BF_SYSGET_PANEL
|
||||
JP Z,SYS_GETPANEL
|
||||
CP BF_SYSGET_APPBNKS
|
||||
JP Z,SYS_GETAPPBNKS
|
||||
SYSCHKERR(ERR_NOFUNC) ; SIGNAL ERROR
|
||||
RET
|
||||
;
|
||||
@@ -4626,6 +4637,8 @@ SYS_GETMEMINFO:
|
||||
; RETURNS:
|
||||
; D: HBIOS BANK ID
|
||||
; E: USER BANK ID
|
||||
; H: FIRST APP BANK ID
|
||||
; L: APP BANK COUNT
|
||||
;
|
||||
SYS_GETBNKINFO:
|
||||
LD A,(CB_BIDBIOS)
|
||||
@@ -4730,6 +4743,22 @@ SYS_GETPANEL1: ; HANDLE NON-EXISTENT FRONT PANEL
|
||||
OR A ; SET FLAGS
|
||||
RET ; DONE
|
||||
;
|
||||
; GET APPLICATION BANK INFORMATION
|
||||
; RETURNS:
|
||||
; H: FIRST APP BANK ID
|
||||
; L: APP BANK COUNT
|
||||
; E: BANK SIZE (IN 256-BYTE PAGES)
|
||||
;
|
||||
SYS_GETAPPBNKS:
|
||||
LD A,(CB_BIDAPP0) ; FIRST BANK ID
|
||||
LD H,A
|
||||
LD A,(CB_APP_BNKS) ; NUMBER OF BANKS
|
||||
LD L,A
|
||||
LD E,$80 ; (256 * $80) = 32KB
|
||||
;
|
||||
XOR A
|
||||
RET
|
||||
;
|
||||
; SET SYSTEM PARAMETERS
|
||||
; PARAMETER(S) TO SET INDICATED IN C
|
||||
;
|
||||
@@ -6431,12 +6460,12 @@ SIZ_TMS .EQU $ - ORG_TMS
|
||||
.ECHO " bytes.\n"
|
||||
#ENDIF
|
||||
;
|
||||
#IF (SCONENABLE)
|
||||
ORG_SCON .EQU $
|
||||
#INCLUDE "scon.asm"
|
||||
SIZ_SCON .EQU $ - ORG_SCON
|
||||
.ECHO "SCON occupies "
|
||||
.ECHO SIZ_SCON
|
||||
#IF (EFENABLE)
|
||||
ORG_EF .EQU $
|
||||
#INCLUDE "ef.asm"
|
||||
SIZ_EF .EQU $ - ORG_EF
|
||||
.ECHO "EF occupies "
|
||||
.ECHO SIZ_EF
|
||||
.ECHO " bytes.\n"
|
||||
#ENDIF
|
||||
;
|
||||
@@ -6528,7 +6557,7 @@ SIZ_FONTS .EQU $ - ORG_FONTS
|
||||
.ECHO SIZ_FONTS
|
||||
.ECHO " bytes.\n"
|
||||
;
|
||||
#IF (CVDUENABLE | VGAENABLE | GDCENABLE | VRCENABLE | (TMSENABLE & ((TMSMODE == TMSMODE_MSXKBD) | (TMSMODE == TMSMODE_MBC))))
|
||||
#IF (KBDENABLE)
|
||||
ORG_KBD .EQU $
|
||||
#INCLUDE "kbd.asm"
|
||||
SIZ_KBD .EQU $ - ORG_KBD
|
||||
@@ -6537,7 +6566,7 @@ SIZ_KBD .EQU $ - ORG_KBD
|
||||
.ECHO " bytes.\n"
|
||||
#ENDIF
|
||||
;
|
||||
#IF (VDUENABLE | (TMSENABLE & (TMSMODE == TMSMODE_N8)))
|
||||
#IF (PPKENABLE)
|
||||
ORG_PPK .EQU $
|
||||
#INCLUDE "ppk.asm"
|
||||
SIZ_PPK .EQU $ - ORG_PPK
|
||||
@@ -6573,6 +6602,15 @@ SIZ_PPP .EQU $ - ORG_PPP
|
||||
.ECHO " bytes.\n"
|
||||
#ENDIF
|
||||
;
|
||||
#IF (SCONENABLE)
|
||||
ORG_SCON .EQU $
|
||||
#INCLUDE "scon.asm"
|
||||
SIZ_SCON .EQU $ - ORG_SCON
|
||||
.ECHO "SCON occupies "
|
||||
.ECHO SIZ_SCON
|
||||
.ECHO " bytes.\n"
|
||||
#ENDIF
|
||||
;
|
||||
#IF (CHENABLE)
|
||||
ORG_CH .EQU $
|
||||
#INCLUDE "ch.asm"
|
||||
@@ -6681,14 +6719,13 @@ SIZ_SYQ .EQU $ - ORG_SYQ
|
||||
.ECHO " bytes.\n"
|
||||
#ENDIF
|
||||
;
|
||||
#IF (TERMENABLE)
|
||||
; TERM IS ALWAYS INCLUDED
|
||||
ORG_TERM .EQU $
|
||||
#INCLUDE "term.asm"
|
||||
SIZ_TERM .EQU $ - ORG_TERM
|
||||
.ECHO "TERM occupies "
|
||||
.ECHO SIZ_TERM
|
||||
.ECHO " bytes.\n"
|
||||
#ENDIF
|
||||
;
|
||||
;#IF (SPKENABLE & DSRTCENABLE)
|
||||
#IF (SPKENABLE)
|
||||
@@ -6760,7 +6797,7 @@ SIZ_YM2612 .EQU $ - ORG_YM2612
|
||||
;
|
||||
; INCLUDE LZSA2 decompression engine if required.
|
||||
;
|
||||
#IF ((VGAENABLE | CVDUENABLE | TMSENABLE | GDCENABLE | VRCENABLE) & USELZSA2)
|
||||
#IF ((CVDUENABLE | GDCENABLE | TMSENABLE | VGAENABLE | VRCENABLE) & USELZSA2)
|
||||
#INCLUDE "unlzsa2s.asm"
|
||||
#ENDIF
|
||||
;
|
||||
@@ -6826,6 +6863,9 @@ FP_SETLEDS:
|
||||
OR A ; SET FLAGS
|
||||
LD A,L ; RESTORE REG A
|
||||
JR Z,FP_SETLEDS1 ; BAIL OUT IF NOT ACTIVE
|
||||
#IF (FPLED_INV)
|
||||
XOR $FF ; INVERT BITS IF NEEDED
|
||||
#ENDIF
|
||||
OUT (FPLED_IO),A ; WRITE
|
||||
FP_SETLEDS1:
|
||||
POP HL ; RESTORE HL
|
||||
@@ -6843,6 +6883,9 @@ FP_GETSWITCHES:
|
||||
OR A ; SET FLAGS
|
||||
RET Z ; BAIL OUT IF NOT ACTIVE
|
||||
IN A,(FPSW_IO) ; READ SWITCHES
|
||||
#IF (FPSW_INV)
|
||||
XOR $FF ; INVERT BITS IF NEEDED
|
||||
#ENDIF
|
||||
RET ; DONE
|
||||
;
|
||||
;
|
||||
|
||||
@@ -120,6 +120,7 @@ BF_SYSGET_MEMINFO .EQU $F1 ; GET MEMORY CAPACTITY INFO
|
||||
BF_SYSGET_BNKINFO .EQU $F2 ; GET BANK ASSIGNMENT INFO
|
||||
BF_SYSGET_CPUSPD .EQU $F3 ; GET CLOCK SPEED & WAIT STATES
|
||||
BF_SYSGET_PANEL .EQU $F4 ; GET FRONT PANEL SWITCHES VAL
|
||||
BF_SYSGET_APPBNKS .EQU $F5 ; GET APP BANK INFORMATION
|
||||
;
|
||||
BF_SYSSET_TIMER .EQU $D0 ; SET TIMER VALUE
|
||||
BF_SYSSET_SECS .EQU $D1 ; SET SECONDS VALUE
|
||||
@@ -319,6 +320,7 @@ CIODEV_LPT .EQU $0B
|
||||
CIODEV_ESPCON .EQU $0C
|
||||
CIODEV_ESPSER .EQU $0D
|
||||
CIODEV_SCON .EQU $0E
|
||||
CIODEV_EF .EQU $0F
|
||||
;
|
||||
; SUB TYPES OF CHAR DEVICES
|
||||
;
|
||||
@@ -368,6 +370,7 @@ VDADEV_GDC .EQU $02 ; GRAPHICS DISPLAY CTLR - UPD7220
|
||||
VDADEV_TMS .EQU $03 ; N8 ONBOARD VDA SUBSYSTEM - TMS 9918
|
||||
VDADEV_VGA .EQU $04 ; ECB VGA3 - HITACHI HD6445
|
||||
VDADEV_VRC .EQU $05 ; VGARC
|
||||
VDADEV_EF .EQU $06 ; EF9345
|
||||
;
|
||||
; SOUND DEVICE IDS
|
||||
;
|
||||
@@ -440,6 +443,8 @@ HCB_BIDRAMD0 .EQU $DC ; FIRST BANK OF RAM DRIVE
|
||||
HCB_RAMD_BNKS .EQU $DD ; RAM DRIVE BANK COUNT
|
||||
HCB_BIDROMD0 .EQU $DE ; FIRST BANK OF ROM DRIVE
|
||||
HCB_ROMD_BNKS .EQU $DF ; ROM DRIVE BANK COUNT
|
||||
HCB_BIDAPP0 .EQU $E0 ; FIRST BANK OF APP RAM BANKS
|
||||
HCB_APP_BNKS .EQU $E1 ; APP BANK COUNT
|
||||
;
|
||||
; HBIOS PROXY COMMON DATA BLOCK
|
||||
; EXACTLY 32 BYTES AT $FFE0-$FFFF
|
||||
|
||||
@@ -27,6 +27,8 @@
|
||||
prtval("CPUFAM$", CPUFAM)
|
||||
prtval("ROMSIZE$", ROMSIZE)
|
||||
prtval("RAMSIZE$", RAMSIZE)
|
||||
prtval("ROMDISKSIZE$", ROMD_BNKS * 32)
|
||||
prtval("RAMDISKSIZE$", RAMD_BNKS * 32)
|
||||
;
|
||||
ret
|
||||
;
|
||||
|
||||
@@ -250,7 +250,7 @@ PPP_FWVER .DB $00, $00, $00, $00 ; MMNNBBB (M=MAJOR, N=MINOR, B=BUILD)
|
||||
; PARPORTPROP CONSOLE DRIVER
|
||||
;==================================================================================================
|
||||
;
|
||||
PPPCON_ROWS .EQU 37 ; PROPELLER VGA DISPLAY ROWS (40 - 3 STATUS LINES)
|
||||
PPPCON_ROWS .EQU 29 ; PROPELLER VGA DISPLAY ROWS (30 - 1 STATUS LINES)
|
||||
PPPCON_COLS .EQU 80 ; PROPELLER VGA DISPLAY COLS
|
||||
;
|
||||
.ECHO "PPPCON: ENABLED\n"
|
||||
|
||||
@@ -121,7 +121,7 @@ PRPCON_ERR .EQU $40 ; BIT SET WHEN PROPIO CONSOLE ERROR HAS OCCURRED
|
||||
PRPCON_KBDRDY .EQU $20 ; BIT SET WHEN KEYBOARD BUF HAS A BYTE READY (BUF FULL)
|
||||
PRPCON_DSPRDY .EQU $10 ; BIT SET WHEN DISPLAY BUF IS READY FOR A BYTE (BUF EMPTY)
|
||||
;
|
||||
PRPCON_ROWS .EQU 37 ; PROPELLER VGA DISPLAY ROWS (40 - 3 STATUS LINES)
|
||||
PRPCON_ROWS .EQU 29 ; PROPELLER VGA DISPLAY ROWS (30 - 1 STATUS LINES)
|
||||
PRPCON_COLS .EQU 80 ; PROPELLER VGA DISPLAY COLS
|
||||
;
|
||||
.ECHO "PRPCON: ENABLED\n"
|
||||
|
||||
@@ -175,6 +175,21 @@ start1:
|
||||
#endif
|
||||
;
|
||||
#if (BIOS == BIOS_WBW)
|
||||
; Get the current console unit
|
||||
ld b,BF_SYSPEEK ; HBIOS func: POKE
|
||||
ld d,BID_BIOS ; BIOS bank
|
||||
ld hl,HCB_LOC + HCB_CONDEV ; Con unit num in HCB
|
||||
rst 08 ; do it
|
||||
ld a,e ; put in A
|
||||
ld (curcon),a ; save it
|
||||
;
|
||||
; Get character unit count
|
||||
ld b,BF_SYSGET ; HBIOS func: SYS GET
|
||||
ld c,BF_SYSGET_CIOCNT ; HBIOS subfunc: CIO unit count
|
||||
rst 08 ; E := unit count
|
||||
ld a,e ; put in A
|
||||
ld (ciocnt),a ; save it
|
||||
;
|
||||
; Check for DSKY and set flag
|
||||
ld b,BF_SYSGET ; HBIOS func: get
|
||||
ld c,BF_SYSGET_DSKYCNT ; get DSKY count
|
||||
@@ -250,6 +265,22 @@ prompt:
|
||||
call dsky_beep
|
||||
call dsky_l2on
|
||||
#endif
|
||||
;
|
||||
; purge any garbage on the line
|
||||
call delay ; wait for prompt to be sent
|
||||
ld b,0 ; failsafe max iterations
|
||||
purge:
|
||||
call cst ; anything there?
|
||||
jr z,wtkey ; if not, move on
|
||||
call cin ; read and discard
|
||||
djnz purge ; and loop till no more
|
||||
;
|
||||
#if (BIOS == BIOS_WBW)
|
||||
#if (AUTOCON)
|
||||
or $ff ; initial value
|
||||
ld (conpend),a ; ... for conpoll routine
|
||||
#endif
|
||||
#endif
|
||||
;
|
||||
wtkey:
|
||||
; wait for a key or timeout
|
||||
@@ -261,6 +292,13 @@ wtkey:
|
||||
jp nz,dskycmd ; if pending, do DSKY command
|
||||
#endif
|
||||
;
|
||||
#if (BIOS == BIOS_WBW)
|
||||
#if (AUTOCON)
|
||||
call conpoll ; poll for console takeover
|
||||
jp nz,docon ; if requested, takeover
|
||||
#endif
|
||||
#endif
|
||||
;
|
||||
#if (BOOT_TIMEOUT != -1)
|
||||
; check for timeout and handle auto boot here
|
||||
ld a,(acmd_act) ; get auto cmd active flag
|
||||
@@ -293,6 +331,69 @@ clrbuf1:
|
||||
ret
|
||||
;
|
||||
;=======================================================================
|
||||
; Poll character units for console takeover request
|
||||
;=======================================================================
|
||||
;
|
||||
; Poll all character units in system for a console takeover request.
|
||||
; A takeover request consists of pressing the <space> twice in a row.
|
||||
; at the character unit that wants to be the console. Return with ZF
|
||||
; set if a console takeover was requested. If so, the requested console
|
||||
; unit will be recorded in (newcon).
|
||||
;
|
||||
#if (BIOS == BIOS_WBW)
|
||||
#if (AUTOCON)
|
||||
;
|
||||
conpoll:
|
||||
; save active console unit
|
||||
ld a,(curcon)
|
||||
ld e,a ; save in E
|
||||
;
|
||||
; loop through all char ports
|
||||
ld a,(ciocnt) ; count of char units
|
||||
ld b,a ; use for loop counter
|
||||
ld c,0 ; init unit num
|
||||
;
|
||||
conpoll1:
|
||||
ld a,c ; next char unit to test
|
||||
cp e ; is this the active console?
|
||||
jr z,conpoll2 ; if so, don't test, move on
|
||||
ld (curcon),a ; make it current port
|
||||
call cst ; char waiting?
|
||||
jr z,conpoll2 ; if no char, move on
|
||||
call cin ; get char
|
||||
cp ' ' ; space char?
|
||||
jr nz,conpoll2 ; if not, move on
|
||||
;
|
||||
; a <space> char was typed. check to see if we just saw a
|
||||
; <space> from this same unit.
|
||||
ld a,(conpend) ; pending con unit to A
|
||||
cp c ; compare to active unit
|
||||
jr z,conpoll3 ; if =, second <space>, take con
|
||||
ld a,c ; if not, unit to A
|
||||
ld (conpend),a ; and update pending console
|
||||
;
|
||||
conpoll2:
|
||||
inc c ; next char unit
|
||||
djnz conpoll1 ; loop till done
|
||||
xor a ; ret w/ Z for no takeover
|
||||
jr conpoll4 ; all done, no takeover
|
||||
;
|
||||
conpoll3:
|
||||
; record a new console request
|
||||
ld a,(curcon) ; record the unit
|
||||
ld (newcon),a ; ... as new console
|
||||
or $ff ; ret w/ NZ for new con req
|
||||
;
|
||||
conpoll4:
|
||||
; restore active console and exit
|
||||
ld a,e ; restore active
|
||||
ld (curcon),a ; ... console
|
||||
ret ; done, NZ if new con request
|
||||
;
|
||||
#endif
|
||||
#endif
|
||||
;
|
||||
;=======================================================================
|
||||
; Process a command line from buffer
|
||||
;=======================================================================
|
||||
;
|
||||
@@ -625,14 +726,8 @@ setcon:
|
||||
jp c,err_nocon ; handle overflow error
|
||||
;
|
||||
; Check against max char unit
|
||||
push de
|
||||
push af ; save requested unit
|
||||
ld b,BF_SYSGET ; HBIOS func: SYS GET
|
||||
ld c,BF_SYSGET_CIOCNT ; HBIOS subfunc: CIO unit count
|
||||
rst 08 ; E := unit count
|
||||
pop af ; restore requested unit
|
||||
cp e ; compare
|
||||
pop de
|
||||
ld hl,ciocnt
|
||||
cp (hl)
|
||||
jp nc,err_nocon ; handle invalid unit
|
||||
ld (newcon),a ; save validated console
|
||||
;
|
||||
@@ -716,6 +811,7 @@ docon: ld hl,str_newcon ; new console msg
|
||||
call prtdecb ; print unit num
|
||||
;
|
||||
; Set console unit
|
||||
ld (curcon),a ; update loader console unit
|
||||
ld b,BF_SYSPOKE ; HBIOS func: POKE
|
||||
ld d,BID_BIOS ; BIOS bank
|
||||
ld e,a ; Char unit value
|
||||
@@ -1383,8 +1479,6 @@ str_s100con .db "\r\n\r\nConsole on S100 Bus",0
|
||||
clrled:
|
||||
#if (BIOS == BIOS_WBW)
|
||||
#if (FPLED_ENABLE)
|
||||
;xor a ; zero accum
|
||||
;out (FPLED_IO),a ; clear diag leds
|
||||
ld b,BF_SYSSET ; HBIOS SysGet
|
||||
ld c,BF_SYSSET_PANEL ; ... Panel swiches value
|
||||
ld l,$00 ; all LEDs off
|
||||
@@ -1866,7 +1960,8 @@ cout:
|
||||
;
|
||||
; Output character to console via HBIOS
|
||||
ld e,a ; output char to E
|
||||
ld c,CIO_CONSOLE ; console unit to C
|
||||
ld a,(curcon) ; get current console
|
||||
ld c,a ; console unit to C
|
||||
ld b,BF_CIOOUT ; HBIOS func: output char
|
||||
rst 08 ; HBIOS outputs character
|
||||
;
|
||||
@@ -1886,7 +1981,8 @@ cin:
|
||||
push hl
|
||||
;
|
||||
; Input character from console via hbios
|
||||
ld c,CIO_CONSOLE ; console unit to c
|
||||
ld a,(curcon) ; get current console
|
||||
ld c,a ; console unit to C
|
||||
ld b,BF_CIOIN ; HBIOS func: input char
|
||||
rst 08 ; HBIOS reads character
|
||||
ld a,e ; move character to A for return
|
||||
@@ -1906,7 +2002,8 @@ cst:
|
||||
push hl
|
||||
;
|
||||
; Get console input status via HBIOS
|
||||
ld c,CIO_CONSOLE ; console unit to C
|
||||
ld a,(curcon) ; get current console
|
||||
ld c,a ; console unit to C
|
||||
ld b,BF_CIOIST ; HBIOS func: input status
|
||||
rst 08 ; HBIOS returns status in A
|
||||
;
|
||||
@@ -2419,6 +2516,14 @@ loadcnt .db 0 ; num disk sectors to load
|
||||
switches .db 0 ; front panel switches
|
||||
diskcnt .db 0 ; disk unit count value
|
||||
dskyact .db 0 ; DSKY active if != 0
|
||||
;
|
||||
#if (BIOS == BIOS_WBW)
|
||||
curcon .db CIO_CONSOLE ; current console unit
|
||||
ciocnt .db 1 ; count of char units
|
||||
savcon .db 0 ; con save for conpoll
|
||||
conpend .db $ff ; pending con unit (first <space> pressed)
|
||||
#endif
|
||||
|
||||
;
|
||||
;=======================================================================
|
||||
; Pad remainder of ROM Loader
|
||||
|
||||
@@ -22,12 +22,6 @@ SCON_ROWS .EQU 40
|
||||
;
|
||||
;
|
||||
;
|
||||
SCON_PREINIT:
|
||||
XOR A
|
||||
RET
|
||||
;
|
||||
;
|
||||
;
|
||||
SCON_INIT:
|
||||
CALL NEWLINE
|
||||
PRTS("SCON:$")
|
||||
|
||||
@@ -460,15 +460,22 @@ SER_7372800_8N2 .EQU SER_BAUD7372800 | SER_DATA8 | SER_PARNONE | SER_STOP2
|
||||
;
|
||||
TERMENABLE .EQU FALSE ; TERM PSEUDO DEVICE, WILL AUTO-ENABLE IF A VDA IS ENABLED
|
||||
;
|
||||
; THE FOLLOWING CONTROL INCLUSION OF THE KEYBOARD DRIVERS. THEY ARE
|
||||
; SET TO TRUE IN THE VDA DRIVERS AS NEEDED.
|
||||
;
|
||||
KBDENABLE .EQU FALSE ; PS/2 KEYBOARD DRIVER
|
||||
PPKENABLE .EQU FALSE ; PPK KEYBOARD DRIVER
|
||||
;
|
||||
; VIDEO MODES
|
||||
;
|
||||
V80X24 .EQU 0 ; ECB-VDU
|
||||
V80X25 .EQU 1 ; ECB-VDU, ECB-VGA3
|
||||
V80X25 .EQU 1 ; ECB-VDU, ECB-VGA3, EF9345
|
||||
V80X30 .EQU 2 ; ECB-VDU, ECB-VGA3
|
||||
V80X25B .EQU 3 ; ECB-VDU
|
||||
V80X24B .EQU 4 ; ECB-VDU
|
||||
V80X43 .EQU 5 ; ECB-VGA3
|
||||
V80X60 .EQU 6 ; ECB-VGA3
|
||||
V40X24 .EQU 7 ; EF9345
|
||||
;
|
||||
; KEYBOARD LAYOUTS
|
||||
;
|
||||
@@ -699,6 +706,83 @@ BID_RAM0 .EQU $80
|
||||
BID_ROMN .EQU (BID_ROM0 + ROMBANKS - 1)
|
||||
BID_RAMN .EQU (BID_RAM0 + RAMBANKS - 1)
|
||||
;
|
||||
#IF (BIOS == BIOS_WBW)
|
||||
;
|
||||
#IF (ROMSIZE > 0)
|
||||
ROM_BNKS_RSVD .EQU 4
|
||||
RAM_BNKS_RSVD .EQU 5
|
||||
#ELSE
|
||||
ROM_BNKS_RSVD .EQU 0
|
||||
RAM_BNKS_RSVD .EQU 8
|
||||
#ENDIF
|
||||
#ENDIF
|
||||
;
|
||||
#IF (BIOS == BIOS_UNA)
|
||||
ROM_BNKS_RSVD .EQU 4
|
||||
RAM_BNKS_RSVD .EQU 4 ; NEED TO CONFIRM THIS!!!
|
||||
#ENDIF
|
||||
;
|
||||
; APPLICATION MEMORY BANKS
|
||||
;
|
||||
#IF (APP_BNKS == $FF)
|
||||
APP_BNKS .SET 0 ; 0K
|
||||
#IF ((RAMBANKS - RAM_BNKS_RSVD) > $08)
|
||||
APP_BNKS .SET 3 ; 96K
|
||||
#ENDIF
|
||||
#IF ((RAMBANKS - RAM_BNKS_RSVD) > $18)
|
||||
APP_BNKS .SET 11 ; 353KB
|
||||
#ENDIF
|
||||
#ENDIF
|
||||
;
|
||||
; ROM/RAM MEMORY BANKS
|
||||
;
|
||||
#IF (BIOS == BIOS_WBW)
|
||||
;
|
||||
ROMD_BNKS .EQU ROMBANKS - ROM_BNKS_RSVD
|
||||
RAMD_BNKS .EQU RAMBANKS - APP_BNKS - RAM_BNKS_RSVD
|
||||
;
|
||||
#ENDIF
|
||||
;
|
||||
#IF (BIOS == BIOS_UNA)
|
||||
;
|
||||
ROMD_BNKS .EQU ROMBANKS - 4
|
||||
RAMD_BNKS .EQU RAMBANKS - 4
|
||||
;
|
||||
#ENDIF
|
||||
;
|
||||
; ADJUSTMENTS FOR ROMLESS SYSTEMS
|
||||
;
|
||||
#IF (ROMSIZE == 0)
|
||||
;
|
||||
; WE NEED TO NORMALIZE THE SIZE OF THE RAM DISK TO FIT
|
||||
; ONE OF THE STANDARD ROM DISK IMAGES
|
||||
;
|
||||
#IF (RAMD_BNKS < 4)
|
||||
RAMD_BNKS .SET 0 ; 0KB RAM DISK
|
||||
#ENDIF
|
||||
#IF ((RAMD_BNKS >= 4) & (RAMD_BNKS < 8))
|
||||
RAMD_BNKS .SET 4 ; 128KB RAM DISK
|
||||
#ENDIF
|
||||
#IF ((RAMD_BNKS >= 8) & (RAMD_BNKS < 12))
|
||||
RAMD_BNKS .SET 8 ; 256KB RAM DISK
|
||||
#ENDIF
|
||||
#IF ((RAMD_BNKS >= 12) & (RAMD_BNKS < 28))
|
||||
RAMD_BNKS .SET 12 ; 384KB RAM DISK
|
||||
#ENDIF
|
||||
#IF (RAMD_BNKS >= 28)
|
||||
RAMD_BNKS .SET 28 ; 896KB RAM DISK
|
||||
#ENDIF
|
||||
;
|
||||
#ENDIF
|
||||
;
|
||||
#IF ((!MDRAM) | (RAMD_BNKS <= 0))
|
||||
RAMD_BNKS .SET 0
|
||||
#ENDIF
|
||||
;
|
||||
#IF ((!MDROM) | (ROMD_BNKS <= 0))
|
||||
ROMD_BNKS .SET 0
|
||||
#ENDIF
|
||||
;
|
||||
#IF (ROMSIZE > 0)
|
||||
;
|
||||
; NORMAL SYSTEM WITH ROM & RAM
|
||||
@@ -708,11 +792,9 @@ BID_IMG0 .EQU BID_ROM0 + 1 ; ROM LOADER AND FIRST IMAGES BANK 0x01
|
||||
BID_IMG1 .EQU BID_ROM0 + 2 ; SECOND IMAGES BANK 0x02
|
||||
BID_IMG2 .EQU BID_ROM0 + 3 ; RESERVED 0x03
|
||||
BID_ROMD0 .EQU BID_ROM0 + 4 ; FIRST ROM DRIVE BANK 0x04
|
||||
BID_ROMDN .EQU BID_ROMN ; LAST ROM DRIVE BANK 0x0F
|
||||
;
|
||||
BID_BIOS .EQU BID_RAM0 ; HBIOS BANK 0x80
|
||||
BID_BIOS .EQU BID_RAM0 + 0 ; HBIOS BANK 0x80
|
||||
BID_RAMD0 .EQU BID_RAM0 + 1 ; FIRST RAM DRIVE BANK 0x81
|
||||
BID_RAMDN .EQU BID_RAMN - 4 ; LAST RAM DRIVE BANK 0x8B
|
||||
BID_APP0 .EQU BID_RAMD0 + RAMD_BNKS ; FIRST APP BANK 0x89
|
||||
BID_BUF .EQU BID_RAMN - 3 ; OS BUFFERS (CP/M3) 0x8C
|
||||
BID_AUX .EQU BID_RAMN - 2 ; AUX BANK (CP/M 3, BPBIOS, ETC.) 0x8D
|
||||
BID_USR .EQU BID_RAMN - 1 ; USER BANK (CP/M TPA, ETC.) 0x8E
|
||||
@@ -728,7 +810,7 @@ BID_IMG0 .EQU BID_RAM0 + 1 ; ROM LOADER AND FIRST IMAGES BANK 0x81
|
||||
BID_IMG1 .EQU BID_RAM0 + 2 ; SECOND IMAGES BANK 0x82
|
||||
BID_IMG2 .EQU BID_RAM0 + 3 ; RESERVED 0x83
|
||||
BID_RAMD0 .EQU BID_RAM0 + 4 ; FIRST RAM DRIVE BANK 0x84
|
||||
BID_RAMDN .EQU BID_RAMN - 4 ; LAST RAM DRIVE BANK 0x8B
|
||||
BID_APP0 .EQU BID_RAMD0 + RAMD_BNKS ; FIRST APP BANK 0x89
|
||||
BID_BUF .EQU BID_RAMN - 3 ; OS BUFFERS (CP/M3) 0x8C
|
||||
BID_AUX .EQU BID_RAMN - 2 ; AUX BANK (CP/M 3, BPBIOS, ETC.) 0x8D
|
||||
BID_USR .EQU BID_RAMN - 1 ; USER BANK (CP/M TPA, ETC.) 0x8E
|
||||
@@ -736,47 +818,44 @@ BID_COM .EQU BID_RAMN - 0 ; COMMON BANK, UPPER 32K 0x8F
|
||||
;
|
||||
BID_BIOS .EQU BID_BOOT ; HBIOS BANK 0x80
|
||||
BID_ROMD0 .EQU 0 ; NO ROM DRIVE
|
||||
BID_ROMDN .EQU $FF ; NO ROM DRIVE
|
||||
;
|
||||
#ENDIF
|
||||
;
|
||||
#IF (BIOS == BIOS_WBW)
|
||||
APP_BNKS .SET BID_BUF - BID_APP0
|
||||
;
|
||||
#IF (!MDRAM)
|
||||
BID_RAMD0 .SET $FF ; RAM DRIVE DISABLED
|
||||
BID_RAMDN .SET 0 ; RAM DRIVE DISABLED
|
||||
#ENDIF
|
||||
BID_RAMDN .EQU BID_RAMD0 + RAMD_BNKS - 1 ; LAST RAM DRIVE BANK
|
||||
BID_ROMDN .EQU BID_ROMD0 + ROMD_BNKS - 1 ; LAST ROM DRIVE BANK
|
||||
BID_APPN .EQU BID_APP0 + APP_BNKS - 1 ; LAST APP BANK
|
||||
;
|
||||
#IF (!MDROM)
|
||||
BID_ROMD0 .SET $FF ; ROM DRIVE DISABLED
|
||||
BID_ROMDN .SET 0 ; ROM DRIVE DISABLED
|
||||
#ENDIF
|
||||
;
|
||||
ROMD_BNKS .EQU (BID_ROMDN - BID_ROMD0 + 1)
|
||||
RAMD_BNKS .EQU (BID_RAMDN - BID_RAMD0 + 1)
|
||||
;
|
||||
#ENDIF
|
||||
;
|
||||
#IF FALSE
|
||||
.ECHO "--- RAM/ROM CAPACITY ---\n"
|
||||
.ECHO "BID_ROM0: " \ .ECHO BID_ROM0 \ .ECHO "\n"
|
||||
.ECHO "BID_ROMN: " \ .ECHO BID_ROMN \ .ECHO "\n"
|
||||
.ECHO "BID_RAM0: " \ .ECHO BID_RAM0 \ .ECHO "\n"
|
||||
.ECHO "BID_RAMN: " \ .ECHO BID_RAMN \ .ECHO "\n"
|
||||
.ECHO "--- BANK LAYOUT ---\n"
|
||||
.ECHO "BID_BOOT: " \ .ECHO BID_BOOT \ .ECHO "\n"
|
||||
.ECHO "BID_IMG0: " \ .ECHO BID_IMG0 \ .ECHO "\n"
|
||||
.ECHO "BID_IMG1: " \ .ECHO BID_IMG1 \ .ECHO "\n"
|
||||
.ECHO "BID_IMG2: " \ .ECHO BID_IMG2 \ .ECHO "\n"
|
||||
#IF TRUE
|
||||
.ECHO "------------- CAPACITY -----------------\n"
|
||||
.ECHO "ROMBANKS: " \ .ECHO ROMBANKS \ .ECHO "\n"
|
||||
.ECHO "RAMBANKS: " \ .ECHO RAMBANKS \ .ECHO "\n"
|
||||
.ECHO "ROMD_BNKS: " \ .ECHO ROMD_BNKS \ .ECHO "\n"
|
||||
.ECHO "RAMD_BNKS: " \ .ECHO RAMD_BNKS \ .ECHO "\n"
|
||||
.ECHO "APP_BNKS: " \ .ECHO APP_BNKS \ .ECHO "\n"
|
||||
.ECHO "----------- MEMORY LAYOUT --------------\n"
|
||||
.ECHO "BID_ROM0: " \ .ECHO BID_ROM0 \ .ECHO "\n"
|
||||
.ECHO "BID_ROMN: " \ .ECHO BID_ROMN \ .ECHO "\n"
|
||||
.ECHO "BID_RAM0: " \ .ECHO BID_RAM0 \ .ECHO "\n"
|
||||
.ECHO "BID_RAMN: " \ .ECHO BID_RAMN \ .ECHO "\n"
|
||||
.ECHO "------------- BANK LAYOUT --------------\n"
|
||||
.ECHO "BID_BOOT: " \ .ECHO BID_BOOT \ .ECHO "\n"
|
||||
.ECHO "BID_IMG0: " \ .ECHO BID_IMG0 \ .ECHO "\n"
|
||||
.ECHO "BID_IMG1: " \ .ECHO BID_IMG1 \ .ECHO "\n"
|
||||
.ECHO "BID_IMG2: " \ .ECHO BID_IMG2 \ .ECHO "\n"
|
||||
.ECHO "BID_ROMD0: " \ .ECHO BID_ROMD0 \ .ECHO "\n"
|
||||
.ECHO "BID_ROMDN: " \ .ECHO BID_ROMDN \ .ECHO "\n"
|
||||
.ECHO "BID_BIOS: " \ .ECHO BID_BIOS \ .ECHO "\n"
|
||||
.ECHO "BID_BIOS: " \ .ECHO BID_BIOS \ .ECHO "\n"
|
||||
.ECHO "BID_RAMD0: " \ .ECHO BID_RAMD0 \ .ECHO "\n"
|
||||
.ECHO "BID_RAMDN: " \ .ECHO BID_RAMDN \ .ECHO "\n"
|
||||
.ECHO "BID_BUF: " \ .ECHO BID_BUF \ .ECHO "\n"
|
||||
.ECHO "BID_AUX: " \ .ECHO BID_AUX \ .ECHO "\n"
|
||||
.ECHO "BID_USR: " \ .ECHO BID_USR \ .ECHO "\n"
|
||||
.ECHO "BID_COM: " \ .ECHO BID_COM \ .ECHO "\n"
|
||||
.ECHO "BID_APP0: " \ .ECHO BID_APP0 \ .ECHO "\n"
|
||||
.ECHO "BID_APPN: " \ .ECHO BID_APPN \ .ECHO "\n"
|
||||
.ECHO "BID_BUF: " \ .ECHO BID_BUF \ .ECHO "\n"
|
||||
.ECHO "BID_AUX: " \ .ECHO BID_AUX \ .ECHO "\n"
|
||||
.ECHO "BID_USR: " \ .ECHO BID_USR \ .ECHO "\n"
|
||||
.ECHO "BID_COM: " \ .ECHO BID_COM \ .ECHO "\n"
|
||||
.ECHO "----------------------------------------\n"
|
||||
#ENDIF
|
||||
;
|
||||
; MEMORY LAYOUT
|
||||
|
||||
@@ -16,6 +16,22 @@
|
||||
;
|
||||
;
|
||||
;======================================================================
|
||||
; TERMINAL DRIVER - PRE-CONSOLE INITIALIZATION
|
||||
;======================================================================
|
||||
;
|
||||
; GIVE EMULATION MODULES A CHANCE TO RESET THEMSELVES AT STARTUP
|
||||
;
|
||||
TERM_PREINIT:
|
||||
#IF (TERMENABLE)
|
||||
XOR A ; ZERO TO ACCUM
|
||||
LD (TERM_DEVCNT),A ; INITIALIZE DEVCNT
|
||||
CALL TTY_PREINIT ; DO TTY PREINIT
|
||||
CALL ANSI_PREINIT ; DO ANSI PREINIT
|
||||
#ENDIF
|
||||
XOR A ; SIGNAL SUCCESS
|
||||
RET ; DONE
|
||||
;
|
||||
;======================================================================
|
||||
; TERMINAL DRIVER - ATTACH
|
||||
;======================================================================
|
||||
;
|
||||
@@ -31,6 +47,8 @@
|
||||
; DE: VDA DRIVER'S DISPATCH ADDRESS
|
||||
; HL: VDA DRIVER'S INSTANCE DATA
|
||||
;
|
||||
#IF (TERMENABLE)
|
||||
;
|
||||
TERM_ATTACH:
|
||||
;
|
||||
LD A,(TERM_DEVCNT) ; GET NEXT DEVICE NUMBER TO USE
|
||||
@@ -40,12 +58,12 @@ TERM_ATTACH:
|
||||
; SETUP EMULATOR MODULE FUNC TBL ADDRESS BASED ON DESIRED EMULATION
|
||||
; EMULATOR PASSES BACK IT'S FUNC TBL ADDRESS IN DE
|
||||
OR $FF ; PRESET FAILURE
|
||||
#IF (VDAEMU == EMUTYP_TTY)
|
||||
#IF (VDAEMU == EMUTYP_TTY)
|
||||
CALL TTY_INIT ; INIT TTY, DE := TTY_FNTBL
|
||||
#ENDIF
|
||||
#IF (VDAEMU == EMUTYP_ANSI)
|
||||
#ENDIF
|
||||
#IF (VDAEMU == EMUTYP_ANSI)
|
||||
CALL ANSI_INIT ; INIT ANSI, DE := ANSI_FNTBL
|
||||
#ENDIF
|
||||
#ENDIF
|
||||
POP HL ; RECOVER VDA INSTANCE DATA PTR
|
||||
RET NZ ; BAIL OUT ON ERROR
|
||||
;
|
||||
@@ -74,5 +92,7 @@ TERM_DEVCNT .DB 0 ; TERMINAL DEVICE COUNT
|
||||
; EMULATION MODULES
|
||||
;======================================================================
|
||||
;
|
||||
#INCLUDE "tty.asm"
|
||||
#INCLUDE "ansi.asm"
|
||||
#INCLUDE "tty.asm"
|
||||
#INCLUDE "ansi.asm"
|
||||
;
|
||||
#ENDIF
|
||||
@@ -140,6 +140,14 @@ TMS_COLS .EQU 40
|
||||
;
|
||||
TERMENABLE .SET TRUE ; INCLUDE TERMINAL PSEUDODEVICE DRIVER
|
||||
;
|
||||
#IF (TMSMODE == TMSMODE_N8)
|
||||
PPKENABLE .SET TRUE ; INCLUDE PPK KEYBOARD SUPPORT
|
||||
#ENDIF
|
||||
;
|
||||
#IF ((TMSMODE == TMSMODE_MSXKBD) | (TMSMODE == TMSMODE_MBC))
|
||||
PPKENABLE .SET TRUE ; INCLUDE KBD KEYBOARD SUPPORT
|
||||
#ENDIF
|
||||
;
|
||||
; TMS_IODELAY IS USED TO ADD RECOVERY TIME TO TMS9918/V9958 ACCESSES
|
||||
; IF YOU SEE SCREEN CORRUPTION, ADJUST THIS!!!
|
||||
;
|
||||
|
||||
@@ -6,6 +6,14 @@
|
||||
; TODO:
|
||||
; - SOME FUNCTIONS ARE NOT IMPLEMENTED!!!
|
||||
;
|
||||
; PRE-CONSOLE INITIALIZATION
|
||||
;
|
||||
TTY_PREINIT:
|
||||
OR $FF ; RESET THE VDA UNIT
|
||||
LD (TTY_VDAUNIT),A ; ... TO INITIAL VALUE
|
||||
XOR A
|
||||
RET
|
||||
;
|
||||
; INITIALIZATION OF EMULATION MODULE CALLED BY PARENT VDA DRIVER
|
||||
; ON ENTRY:
|
||||
; C: CIO UNIT NUMBER OF CALLING VDA DRIVER
|
||||
|
||||
@@ -45,6 +45,7 @@ VDU_CSTY .EQU VDU_BLOK ; DEFAULT CURSOR STYLE
|
||||
VDU_BLNK .EQU VDU_NOBL ; DEFAULT BLINK RATE
|
||||
;
|
||||
TERMENABLE .SET TRUE ; INCLUDE TERMINAL PSEUDODEVICE DRIVER
|
||||
PPKENABLE .SET TRUE ; INCLUDE PPK KEYBOARD SUPPORT
|
||||
;
|
||||
#IF (VDUSIZ=V80X24)
|
||||
DLINES .EQU 24
|
||||
|
||||
@@ -90,6 +90,7 @@ VGA_R11 .EQU VGA_SCANL-1
|
||||
#DEFINE DEFREGS REGS_VGA
|
||||
;
|
||||
TERMENABLE .SET TRUE ; INCLUDE TERMINAL PSEUDODEVICE DRIVER
|
||||
KBDENABLE .SET TRUE ; INCLUDE KBD KEYBOARD SUPPORT
|
||||
;
|
||||
; DRIVER UTILIZES THE MULTIPLE DISPLAY WINDOW FEATURE OF THE CRTC TO ACCOMPLISH
|
||||
; FULL SCREEN SCROLLING WITHOUT THE NEED TO MOVE DISPLAY RAM BYTES.
|
||||
|
||||
@@ -25,6 +25,7 @@ VRC_COLS .EQU 64
|
||||
#DEFINE VRC_FONT FONTVGARC
|
||||
;
|
||||
TERMENABLE .SET TRUE ; INCLUDE TERMINAL PSEUDODEVICE DRIVER
|
||||
KBDENABLE .SET TRUE ; INCLUDE KBD KEYBOARD SUPPORT
|
||||
;
|
||||
.ECHO "VRC: IO="
|
||||
.ECHO VRC_BASE
|
||||
|
||||
@@ -22,6 +22,8 @@ call BuildDisk.cmd tpascal hd wbw_fd144 || exit /b
|
||||
call BuildDisk.cmd bascomp hd wbw_fd144 || exit /b
|
||||
call BuildDisk.cmd fortran hd wbw_fd144 || exit /b
|
||||
call BuildDisk.cmd games hd wbw_fd144 || exit /b
|
||||
call BuildDisk.cmd cowgol hd wbw_fd144 || exit /b
|
||||
|
||||
|
||||
echo.
|
||||
echo Building Hard Disk Images (512 directory entry format)...
|
||||
@@ -42,6 +44,7 @@ call BuildDisk.cmd tpascal hd wbw_hd512 || exit /b
|
||||
call BuildDisk.cmd bascomp hd wbw_hd512 || exit /b
|
||||
call BuildDisk.cmd fortran hd wbw_hd512 || exit /b
|
||||
call BuildDisk.cmd games hd wbw_hd512 || exit /b
|
||||
call BuildDisk.cmd cowgol hd wbw_hd512 || exit /b
|
||||
|
||||
echo.
|
||||
echo Building Combo Disk (512 directory entry format) Image...
|
||||
@@ -65,6 +68,7 @@ call BuildDisk.cmd tpascal hd wbw_hd1k || exit /b
|
||||
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
|
||||
call BuildDisk.cmd cowgol hd wbw_hd1k || exit /b
|
||||
|
||||
if exist ..\BPBIOS\bp*.rel call BuildDisk.cmd bp hd wbw_hd1k ..\zsdos\zsys_wbw.sys || exit /b
|
||||
|
||||
|
||||
@@ -7,18 +7,19 @@ FDIMGS = fd144_cpm22.img fd144_zsdos.img fd144_nzcom.img \
|
||||
fd144_cpm3.img fd144_zpm3.img fd144_ws4.img fd144_qpm.img \
|
||||
fd144_z80asm.img fd144_aztecc.img fd144_hitechc.img \
|
||||
fd144_bascomp.img fd144_fortran.img fd144_games.img \
|
||||
fd144_tpascal.img
|
||||
fd144_tpascal.img fd144_cowgol.img
|
||||
HD512IMGS = hd512_cpm22.img hd512_zsdos.img hd512_nzcom.img \
|
||||
hd512_cpm3.img hd512_zpm3.img hd512_ws4.img
|
||||
HD512XIMGS = hd512_z80asm.img hd512_aztecc.img hd512_hitechc.img \
|
||||
hd512_bascomp.img hd512_fortran.img hd512_games.img \
|
||||
hd512_tpascal.img hd512_dos65.img hd512_qpm.img hd512_blank.img
|
||||
# HDIMGS += hd512_bp.img
|
||||
hd512_tpascal.img hd512_dos65.img hd512_qpm.img \
|
||||
hd512_cowgol.img hd512_blank.img
|
||||
HD1KIMGS = hd1k_cpm22.img hd1k_zsdos.img hd1k_nzcom.img \
|
||||
hd1k_cpm3.img hd1k_zpm3.img hd1k_ws4.img
|
||||
HD1KXIMGS = hd1k_z80asm.img hd1k_aztecc.img hd1k_hitechc.img \
|
||||
hd1k_bascomp.img hd1k_fortran.img hd1k_games.img \
|
||||
hd1k_tpascal.img hd1k_qpm.img hd1k_blank.img
|
||||
hd1k_tpascal.img hd1k_qpm.img \
|
||||
hd1k_cowgol.img hd1k_blank.img
|
||||
HD1KXIMGS += hd1k_bp.img
|
||||
|
||||
HD512PREFIX =
|
||||
|
||||
45
Source/Images/d_cowgol/Readme.txt
Normal file
45
Source/Images/d_cowgol/Readme.txt
Normal file
@@ -0,0 +1,45 @@
|
||||
===== Cowgol 2.0 for CP/M =====
|
||||
|
||||
This disk contains the Cowgol 2.0 compiler and related tools.
|
||||
These files were provided by Ladislau Szilagyi and were sourced
|
||||
from his GitHub repository at https://github.com/Laci1953/Cowgol_on_CP_M.
|
||||
|
||||
The COWFE program included here is the RomWBW-specific version that
|
||||
is tailored to RomWBW memory management.
|
||||
|
||||
The primary distribution site for Cowgol 2.0 is at
|
||||
https://github.com/davidgiven/cowgol.
|
||||
|
||||
The Hi-Tech C compiler components were sourced from the updated
|
||||
version by Tony Nicholson at https://github.com/agn453/HI-TECH-Z80-C.
|
||||
However, the CPP.COM component was sourced from Ladislau Szilagyi's
|
||||
enhanced Hi-Tech C at https://github.com/Laci1953/HiTech-C-compiler-enhanced.
|
||||
|
||||
Note that only the minimum required Hi-Tech C compiler components
|
||||
are provided. Additional components from Hi-Tech C may be required
|
||||
depending on your needs.
|
||||
|
||||
There are two example Cowgol applications included:
|
||||
|
||||
- HEXDUMP is a simple hex dump utility and is purely a Cowgol
|
||||
application (no assembler or C components). The command
|
||||
line to build the application is:
|
||||
|
||||
COWGOL HEXDUMP.COW
|
||||
|
||||
- DYNMSORT demonstrates a sort algorithm and is composed of
|
||||
Cowgol, C, and assembler components. The command line to
|
||||
build the application is:
|
||||
|
||||
COWGOL -LC DYNMSORT.COW MERGES.C RAND.AS
|
||||
|
||||
There are also SUBMIT files provided to build the example
|
||||
applications which can be used as follows:
|
||||
|
||||
SUBMIT HEXDUMP
|
||||
SUBMIT DYNMSORT
|
||||
|
||||
-- WBW 12:38 PM 2/10/2024
|
||||
|
||||
|
||||
|
||||
BIN
Source/Images/d_cowgol/u0/$EXEC.COM
Normal file
BIN
Source/Images/d_cowgol/u0/$EXEC.COM
Normal file
Binary file not shown.
48
Source/Images/d_cowgol/u0/ARGV.COH
Normal file
48
Source/Images/d_cowgol/u0/ARGV.COH
Normal file
@@ -0,0 +1,48 @@
|
||||
var argv_pointer: [uint8];
|
||||
|
||||
sub ArgvInit() is
|
||||
argv_pointer := 0x81 as [uint8];
|
||||
[argv_pointer + [0x80 as [uint8]] as intptr] := 0;
|
||||
end sub;
|
||||
|
||||
# Returns null is there's no next argument.
|
||||
sub ArgvNext(): (arg: [uint8]) is
|
||||
# No more arguments?
|
||||
|
||||
if argv_pointer == (0 as [uint8]) then
|
||||
arg := argv_pointer;
|
||||
return;
|
||||
end if;
|
||||
|
||||
# Skip leading whitespace.
|
||||
|
||||
var c: uint8;
|
||||
loop
|
||||
c := [argv_pointer];
|
||||
if c != ' ' then
|
||||
break;
|
||||
end if;
|
||||
argv_pointer := argv_pointer + 1;
|
||||
end loop;
|
||||
|
||||
arg := argv_pointer;
|
||||
|
||||
# Skip to end of word and terminate.
|
||||
|
||||
loop
|
||||
c := [argv_pointer];
|
||||
if (c == ' ') or (c == '\n') or (c == 0) then
|
||||
break;
|
||||
end if;
|
||||
argv_pointer := argv_pointer + 1;
|
||||
end loop;
|
||||
[argv_pointer] := 0;
|
||||
|
||||
if c == ' ' then
|
||||
argv_pointer := argv_pointer + 1;
|
||||
else
|
||||
argv_pointer := 0 as [uint8];
|
||||
end if;
|
||||
end sub;
|
||||
|
||||
|
||||
BIN
Source/Images/d_cowgol/u0/CGEN.COM
Normal file
BIN
Source/Images/d_cowgol/u0/CGEN.COM
Normal file
Binary file not shown.
27
Source/Images/d_cowgol/u0/COMMFILE.COH
Normal file
27
Source/Images/d_cowgol/u0/COMMFILE.COH
Normal file
@@ -0,0 +1,27 @@
|
||||
sub FCBPutString(fcb: [FCB], s: [uint8]) is
|
||||
loop
|
||||
var c := [s];
|
||||
if c == 0 then
|
||||
break;
|
||||
end if;
|
||||
FCBPutChar(fcb, c);
|
||||
s := @next s;
|
||||
end loop;
|
||||
end sub;
|
||||
|
||||
sub FCBGetBlock(fcb: [FCB], buffer: [uint8], length: intptr) is
|
||||
while length != 0 loop;
|
||||
[buffer] := FCBGetChar(fcb);
|
||||
buffer := buffer + 1;
|
||||
length := length - 1;
|
||||
end loop;
|
||||
end sub;
|
||||
|
||||
sub FCBPutBlock(fcb: [FCB], buffer: [uint8], length: intptr) is
|
||||
while length != 0 loop;
|
||||
FCBPutChar(fcb, [buffer]);
|
||||
buffer := buffer + 1;
|
||||
length := length - 1;
|
||||
end loop;
|
||||
end sub;
|
||||
|
||||
150
Source/Images/d_cowgol/u0/COMMON.COH
Normal file
150
Source/Images/d_cowgol/u0/COMMON.COH
Normal file
@@ -0,0 +1,150 @@
|
||||
sub print(ptr: [uint8]) is
|
||||
loop
|
||||
var c := [ptr];
|
||||
if c == 0 then
|
||||
return;
|
||||
end if;
|
||||
print_char(c);
|
||||
ptr := ptr + 1;
|
||||
end loop;
|
||||
end sub;
|
||||
|
||||
sub print_nl() is
|
||||
print_char('\n');
|
||||
end sub;
|
||||
|
||||
sub UIToA(value: uint32, base: uint8, buffer: [uint8]): (ptr: [uint8]) is
|
||||
ptr := buffer;
|
||||
loop
|
||||
var rem := value % (base as uint32);
|
||||
value := value / (base as uint32);
|
||||
if rem < 10 then
|
||||
rem := rem + '0';
|
||||
else
|
||||
rem := rem + ('a' - 10);
|
||||
end if;
|
||||
[ptr] := rem as uint8;
|
||||
ptr := @next ptr;
|
||||
|
||||
if value == 0 then
|
||||
break;
|
||||
end if;
|
||||
end loop;
|
||||
|
||||
var s1 := buffer;
|
||||
var s2 := @prev ptr;
|
||||
while s2 > s1 loop
|
||||
var c := [s1];
|
||||
[s1] := [s2];
|
||||
[s2] := c;
|
||||
s1 := @next s1;
|
||||
s2 := @prev s2;
|
||||
end loop;
|
||||
|
||||
[ptr] := 0;
|
||||
end sub;
|
||||
|
||||
sub IToA(value: int32, base: uint8, buffer: [uint8]): (ptr: [uint8]) is
|
||||
if value < 0 then
|
||||
[buffer] := '-';
|
||||
buffer := @next buffer;
|
||||
value := -value;
|
||||
end if;
|
||||
ptr := UIToA(value as uint32, base, buffer);
|
||||
end sub;
|
||||
|
||||
sub print_i32(value: uint32) is
|
||||
var buffer: uint8[12];
|
||||
var pe := UIToA(value, 10, &buffer[0]);
|
||||
print(&buffer[0]);
|
||||
end sub;
|
||||
|
||||
sub print_i16(value: uint16) is
|
||||
print_i32(value as uint32);
|
||||
end sub;
|
||||
|
||||
sub print_i8(value: uint8) is
|
||||
print_i32(value as uint32);
|
||||
end sub;
|
||||
|
||||
sub print_hex_i8(value: uint8) is
|
||||
var i: uint8 := 2;
|
||||
loop
|
||||
var digit := value >> 4;
|
||||
if digit < 10 then
|
||||
digit := digit + '0';
|
||||
else
|
||||
digit := digit + ('a' - 10);
|
||||
end if;
|
||||
print_char(digit);
|
||||
value := value << 4;
|
||||
i := i - 1;
|
||||
if i == 0 then
|
||||
break;
|
||||
end if;
|
||||
end loop;
|
||||
end sub;
|
||||
|
||||
sub print_hex_i16(value: uint16) is
|
||||
print_hex_i8((value >> 8) as uint8);
|
||||
print_hex_i8(value as uint8);
|
||||
end sub;
|
||||
|
||||
sub print_hex_i32(value: uint32) is
|
||||
print_hex_i8((value >> 24) as uint8);
|
||||
print_hex_i8((value >> 16) as uint8);
|
||||
print_hex_i8((value >> 8) as uint8);
|
||||
print_hex_i8(value as uint8);
|
||||
end sub;
|
||||
|
||||
sub AToI(buffer: [uint8]): (result: int32, ptr: [uint8]) is
|
||||
var negative: uint8 := 0;
|
||||
var base: uint8 := 10;
|
||||
ptr := buffer;
|
||||
result := 0;
|
||||
|
||||
var c := [ptr];
|
||||
if (c == '-') then
|
||||
negative := 1;
|
||||
ptr := ptr + 1;
|
||||
c := [ptr];
|
||||
end if;
|
||||
if (c == '0') then
|
||||
case [ptr+1] is
|
||||
when 'x': base := 16;
|
||||
when 'o': base := 8;
|
||||
when 'b': base := 2;
|
||||
when 'd': base := 10;
|
||||
|
||||
when else: ptr := ptr - 2;
|
||||
end case;
|
||||
ptr := ptr + 2;
|
||||
c := [ptr];
|
||||
end if;
|
||||
|
||||
loop
|
||||
if c >= 'a' then
|
||||
c := c - 'a' + 10;
|
||||
elseif c >= 'A' then
|
||||
c := c - 'A' + 10;
|
||||
else
|
||||
c := c - '0';
|
||||
end if;
|
||||
if c >= (base as uint8) then
|
||||
break;
|
||||
end if;
|
||||
result := (result * base as int32) + (c as int32);
|
||||
|
||||
ptr := ptr + 1;
|
||||
c := [ptr];
|
||||
end loop;
|
||||
|
||||
if negative != 0 then
|
||||
result := -result;
|
||||
end if;
|
||||
end sub;
|
||||
|
||||
sub MemZero(ptr: [uint8], size: intptr) is
|
||||
MemSet(ptr, 0, size);
|
||||
end sub;
|
||||
|
||||
BIN
Source/Images/d_cowgol/u0/COWBE.COM
Normal file
BIN
Source/Images/d_cowgol/u0/COWBE.COM
Normal file
Binary file not shown.
BIN
Source/Images/d_cowgol/u0/COWFE.COM
Normal file
BIN
Source/Images/d_cowgol/u0/COWFE.COM
Normal file
Binary file not shown.
BIN
Source/Images/d_cowgol/u0/COWFIX.COM
Normal file
BIN
Source/Images/d_cowgol/u0/COWFIX.COM
Normal file
Binary file not shown.
52
Source/Images/d_cowgol/u0/COWGOL.COH
Normal file
52
Source/Images/d_cowgol/u0/COWGOL.COH
Normal file
@@ -0,0 +1,52 @@
|
||||
var LOMEM: [uint8];
|
||||
@asm "ld hl, LOMEM";
|
||||
@asm "ld (", LOMEM, "), hl";
|
||||
|
||||
var HIMEM: [uint8];
|
||||
@asm "ld hl, (6)";
|
||||
@asm "ld (", HIMEM, "), hl";
|
||||
|
||||
sub Exit() is
|
||||
@asm "rst 0";
|
||||
end sub;
|
||||
|
||||
sub ExitWithError() is
|
||||
@asm "rst 0";
|
||||
end sub;
|
||||
|
||||
sub AlignUp(in: intptr): (out: intptr) is
|
||||
out := in;
|
||||
end sub;
|
||||
|
||||
sub get_char(): (c: uint8) is
|
||||
@asm "ld c, 1";
|
||||
@asm "call 5";
|
||||
@asm "ld (", c, "), a";
|
||||
end sub;
|
||||
|
||||
sub print_char(c: uint8) is
|
||||
if c == 10 then
|
||||
@asm "ld e, 13";
|
||||
@asm "ld c, 2";
|
||||
@asm "call 5";
|
||||
end if;
|
||||
@asm "ld a, (", c, ")";
|
||||
@asm "ld e, a";
|
||||
@asm "ld c, 2";
|
||||
@asm "call 5";
|
||||
end sub;
|
||||
|
||||
sub MemSet(buf: [uint8], byte: uint8, len: uint16) is
|
||||
var bufend := buf + len;
|
||||
loop
|
||||
if buf == bufend then
|
||||
return;
|
||||
end if;
|
||||
[buf] := byte;
|
||||
buf := buf + 1;
|
||||
end loop;
|
||||
end sub;
|
||||
|
||||
include "common.coh";
|
||||
|
||||
|
||||
BIN
Source/Images/d_cowgol/u0/COWGOL.COM
Normal file
BIN
Source/Images/d_cowgol/u0/COWGOL.COM
Normal file
Binary file not shown.
BIN
Source/Images/d_cowgol/u0/COWGOL.COO
Normal file
BIN
Source/Images/d_cowgol/u0/COWGOL.COO
Normal file
Binary file not shown.
52
Source/Images/d_cowgol/u0/COWGOLC.COH
Normal file
52
Source/Images/d_cowgol/u0/COWGOLC.COH
Normal file
@@ -0,0 +1,52 @@
|
||||
var LOMEM: [uint8];
|
||||
@asm "ld hl, __Hbss";
|
||||
@asm "ld (", LOMEM, "), hl";
|
||||
|
||||
var HIMEM: [uint8];
|
||||
@asm "ld hl, (6)";
|
||||
@asm "ld (", HIMEM, "), hl";
|
||||
|
||||
sub Exit() is
|
||||
@asm "rst 0";
|
||||
end sub;
|
||||
|
||||
sub ExitWithError() is
|
||||
@asm "rst 0";
|
||||
end sub;
|
||||
|
||||
sub AlignUp(in: intptr): (out: intptr) is
|
||||
out := in;
|
||||
end sub;
|
||||
|
||||
sub get_char(): (c: uint8) is
|
||||
@asm "ld c, 1";
|
||||
@asm "call 5";
|
||||
@asm "ld (", c, "), a";
|
||||
end sub;
|
||||
|
||||
sub print_char(c: uint8) is
|
||||
if c == 10 then
|
||||
@asm "ld e, 13";
|
||||
@asm "ld c, 2";
|
||||
@asm "call 5";
|
||||
end if;
|
||||
@asm "ld a, (", c, ")";
|
||||
@asm "ld e, a";
|
||||
@asm "ld c, 2";
|
||||
@asm "call 5";
|
||||
end sub;
|
||||
|
||||
sub MemSet(buf: [uint8], byte: uint8, len: uint16) is
|
||||
var bufend := buf + len;
|
||||
loop
|
||||
if buf == bufend then
|
||||
return;
|
||||
end if;
|
||||
[buf] := byte;
|
||||
buf := buf + 1;
|
||||
end loop;
|
||||
end sub;
|
||||
|
||||
include "common.coh";
|
||||
|
||||
|
||||
BIN
Source/Images/d_cowgol/u0/COWLINK.COM
Normal file
BIN
Source/Images/d_cowgol/u0/COWLINK.COM
Normal file
Binary file not shown.
BIN
Source/Images/d_cowgol/u0/CPP.COM
Normal file
BIN
Source/Images/d_cowgol/u0/CPP.COM
Normal file
Binary file not shown.
78
Source/Images/d_cowgol/u0/DYNMSORT.COW
Normal file
78
Source/Images/d_cowgol/u0/DYNMSORT.COW
Normal file
@@ -0,0 +1,78 @@
|
||||
################################
|
||||
# Cowgol program #
|
||||
# #
|
||||
# Sorting 1000 random integers #
|
||||
# stored in a vector allocated #
|
||||
# using Cowgol's Alloc #
|
||||
# #
|
||||
# calls: #
|
||||
# assembler routine xrndseed #
|
||||
# assembler routine xrnd #
|
||||
# C routine mergeSort #
|
||||
# #
|
||||
# Ladislau Szilagyi, Nov. 2023 #
|
||||
################################
|
||||
|
||||
include "cowgolc.coh";
|
||||
include "strings.coh";
|
||||
include "malloc.coh";
|
||||
|
||||
typedef intstring is [uint16];
|
||||
|
||||
var Unsorted: intstring;
|
||||
var size: uint16 := 999;
|
||||
|
||||
sub random(): (n: uint16) is
|
||||
@asm "call _xrnd"; #calls assembler routine
|
||||
@asm "ld (", n, "),hl";
|
||||
end sub;
|
||||
|
||||
sub PrintArray(array: intstring) is
|
||||
var i: uint16 := 0;
|
||||
var p := array;
|
||||
print("\r\nArray:\r\n");
|
||||
while i != 1000 loop
|
||||
print_i16([p]);
|
||||
print(",");
|
||||
p := p + 2;
|
||||
i := i + 1;
|
||||
end loop;
|
||||
end sub;
|
||||
|
||||
sub PopulateArray(array: intstring) is
|
||||
var i: uint16 := 0;
|
||||
var p := array;
|
||||
while i != 1000 loop
|
||||
[p] := random();
|
||||
p := p + 2;
|
||||
i := i + 1;
|
||||
end loop;
|
||||
end sub;
|
||||
|
||||
sub RandSeed() is
|
||||
@asm "call _xrndseed"; #calls assembler routine
|
||||
end sub;
|
||||
|
||||
sub MergeSort() is
|
||||
print("\r\nSorting...\r\n");
|
||||
@asm "ld hl,(", size, ")";
|
||||
@asm "push hl"; # r on stack as param # 3
|
||||
@asm "ld hl,0";
|
||||
@asm "push hl"; # l on stack as param # 2
|
||||
@asm "ld hl,(", Unsorted, ")";
|
||||
@asm "push hl"; # vector addr on stack as param # 1
|
||||
@asm "call _mergeSort"; # calls C routine msort(int* array, int l, int r)
|
||||
@asm "pop bc"; # drops C routine params
|
||||
@asm "pop bc"; # drops C routine params
|
||||
@asm "pop bc"; # drops C routine params
|
||||
end sub;
|
||||
|
||||
### start ###
|
||||
|
||||
RandSeed();
|
||||
Unsorted := Alloc(2000) as intstring;
|
||||
PopulateArray(Unsorted);
|
||||
PrintArray(Unsorted);
|
||||
MergeSort();
|
||||
PrintArray(Unsorted); # now is sorted !
|
||||
Exit();
|
||||
2
Source/Images/d_cowgol/u0/DYNMSORT.SUB
Normal file
2
Source/Images/d_cowgol/u0/DYNMSORT.SUB
Normal file
@@ -0,0 +1,2 @@
|
||||
COWGOL -LC DYNMSORT.COW MERGES.C RAND.AS
|
||||
|
||||
200
Source/Images/d_cowgol/u0/FILE.COH
Normal file
200
Source/Images/d_cowgol/u0/FILE.COH
Normal file
@@ -0,0 +1,200 @@
|
||||
# vim: ts=4 sw=4 et
|
||||
|
||||
record CpmFCB is
|
||||
dr: uint8;
|
||||
f: uint8[11];
|
||||
ex: uint8;
|
||||
s1: uint8;
|
||||
s2: uint8;
|
||||
rc: uint8;
|
||||
d: uint8[16];
|
||||
cr: uint8;
|
||||
r: uint16;
|
||||
r2: uint8;
|
||||
end record;
|
||||
|
||||
record FCB is
|
||||
bufferptr: uint8; # byte just read
|
||||
dirty: uint8;
|
||||
cpm: CpmFCB;
|
||||
buffer: uint8[128];
|
||||
end record;
|
||||
|
||||
sub file_i_init(fcb: [FCB], filename: [uint8]) is
|
||||
sub fill(dest: [uint8], src: [uint8], len: uint8): (srcout: [uint8]) is
|
||||
loop
|
||||
var c := [src];
|
||||
if (c < 32) or (c == '.') then
|
||||
c := ' ';
|
||||
elseif (c == '*') then
|
||||
c := '?';
|
||||
else
|
||||
src := src + 1;
|
||||
end if;
|
||||
if (c >= 'a') and (c <= 'z') then
|
||||
c := c - ('a' - 'A');
|
||||
end if;
|
||||
[dest] := c;
|
||||
dest := dest + 1;
|
||||
|
||||
len := len - 1;
|
||||
if len == 0 then
|
||||
break;
|
||||
end if;
|
||||
end loop;
|
||||
srcout := src;
|
||||
end sub;
|
||||
|
||||
MemSet(fcb as [uint8], 0, @bytesof FCB);
|
||||
MemSet(&fcb.cpm.f[0] as [uint8], ' ', 11);
|
||||
filename := fill(&fcb.cpm.f[0], filename, 8);
|
||||
|
||||
var c: uint8;
|
||||
loop
|
||||
c := [filename];
|
||||
if (c < 32) or (c == '.') then
|
||||
break;
|
||||
end if;
|
||||
filename := filename + 1;
|
||||
end loop;
|
||||
|
||||
if c == '.' then
|
||||
filename := fill(&fcb.cpm.f[8], filename+1, 3);
|
||||
end if;
|
||||
|
||||
fcb.cpm.r := 0xffff;
|
||||
fcb.bufferptr := 127;
|
||||
end sub;
|
||||
|
||||
sub fcb_i_gbpb(fcb: [FCB], c: uint8) is
|
||||
var cpmfcb := &fcb.cpm;
|
||||
var dma := &fcb.buffer[0];
|
||||
|
||||
@asm "ld c, 26"; # SET DMA
|
||||
@asm "ld de, (", dma, ")";
|
||||
@asm "call 5";
|
||||
|
||||
@asm "ld a, (", c, ")";
|
||||
@asm "ld c, a";
|
||||
@asm "ld de, (", cpmfcb, ")";
|
||||
@asm "call 5";
|
||||
end sub;
|
||||
|
||||
sub fcb_i_blockin(fcb: [FCB]) is
|
||||
MemSet(&fcb.buffer[0], 0, 128);
|
||||
fcb_i_gbpb(fcb, 33); # READ RANDOM
|
||||
fcb.dirty := 0;
|
||||
end sub;
|
||||
|
||||
sub fcb_i_blockout(fcb: [FCB]) is
|
||||
if fcb.dirty != 0 then
|
||||
fcb_i_gbpb(fcb, 34); # WRITE RANDOM
|
||||
fcb.dirty := 0;
|
||||
end if;
|
||||
end sub;
|
||||
|
||||
sub fcb_i_changeblock(fcb: [FCB], newblock: uint16) is
|
||||
if newblock != fcb.cpm.r then
|
||||
fcb_i_blockout(fcb);
|
||||
fcb.cpm.r := newblock;
|
||||
fcb_i_blockin(fcb);
|
||||
end if;
|
||||
end sub;
|
||||
|
||||
sub fcb_i_convert_a_to_error() is
|
||||
@asm "cp 0xff";
|
||||
@asm "ld a, 0";
|
||||
@asm "ret nz";
|
||||
@asm "inc a";
|
||||
end sub;
|
||||
|
||||
sub FCBOpenIn(fcb: [FCB], filename: [uint8]): (errno: uint8) is
|
||||
file_i_init(fcb, filename);
|
||||
|
||||
var cpmfcb := &fcb.cpm;
|
||||
@asm "ld c, 15"; # OPEN_FILE
|
||||
@asm "ld de, (", cpmfcb, ")";
|
||||
@asm "call 5";
|
||||
@asm "call", fcb_i_convert_a_to_error;
|
||||
@asm "ld (", errno, "), a";
|
||||
end sub;
|
||||
|
||||
sub FCBOpenUp(fcb: [FCB], filename: [uint8]): (errno: uint8) is
|
||||
(errno) := FCBOpenIn(fcb, filename);
|
||||
end sub;
|
||||
|
||||
sub FCBOpenOut(fcb: [FCB], filename: [uint8]): (errno: uint8) is
|
||||
file_i_init(fcb, filename);
|
||||
|
||||
var cpmfcb := &fcb.cpm;
|
||||
@asm "ld c, 19"; # DELETE_FILE
|
||||
@asm "ld de, (", cpmfcb, ")";
|
||||
@asm "call 5";
|
||||
|
||||
@asm "ld c, 22"; # CREATE_FILE
|
||||
@asm "ld de, (", cpmfcb, ")";
|
||||
@asm "call 5";
|
||||
@asm "call", fcb_i_convert_a_to_error;
|
||||
@asm "ld (", errno, "), a";
|
||||
end sub;
|
||||
|
||||
sub FCBClose(fcb: [FCB]): (errno: uint8) is
|
||||
fcb_i_blockout(fcb);
|
||||
|
||||
var cpmfcb := &fcb.cpm;
|
||||
@asm "ld c, 16"; # CLOSE_FILE
|
||||
@asm "ld de, (", cpmfcb, ")";
|
||||
@asm "call 5";
|
||||
@asm "call", fcb_i_convert_a_to_error;
|
||||
@asm "ld (", errno, "), a";
|
||||
end sub;
|
||||
|
||||
sub FCBSeek(fcb: [FCB], pos: uint32) is
|
||||
pos := pos - 1; # seek to *previous* character
|
||||
var newblock := (pos >> 7) as uint16;
|
||||
var newptr := (pos as uint8) & 127;
|
||||
fcb_i_changeblock(fcb, newblock);
|
||||
fcb.bufferptr := newptr;
|
||||
end sub;
|
||||
|
||||
sub FCBPos(fcb: [FCB]): (pos: uint32) is
|
||||
pos := (((fcb.cpm.r as uint32) << 7) | (fcb.bufferptr as uint32)) + 1;
|
||||
end sub;
|
||||
|
||||
sub FCBExt(fcb: [FCB]): (len: uint32) is
|
||||
var oldblock := fcb.cpm.r;
|
||||
var cpmfcb := &fcb.cpm;
|
||||
|
||||
@asm "ld c, 16"; # CLOSE_FILE (actually flushing it to disk)
|
||||
@asm "ld de, (", cpmfcb, ")";
|
||||
@asm "call 5";
|
||||
|
||||
@asm "ld c, 35"; # COMPUTE FILE SIZE
|
||||
@asm "ld de, (", cpmfcb, ")";
|
||||
@asm "call 5";
|
||||
|
||||
len := ([&fcb.cpm.r as [uint32]] & 0x00ffffff) << 7;
|
||||
fcb.cpm.r := oldblock;
|
||||
end sub;
|
||||
|
||||
sub fcb_i_nextchar(fcb: [FCB]) is
|
||||
fcb.bufferptr := fcb.bufferptr + 1;
|
||||
if fcb.bufferptr == 128 then
|
||||
fcb_i_changeblock(fcb, fcb.cpm.r + 1);
|
||||
fcb.bufferptr := 0;
|
||||
end if;
|
||||
end sub;
|
||||
|
||||
sub FCBGetChar(fcb: [FCB]): (c: uint8) is
|
||||
fcb_i_nextchar(fcb);
|
||||
c := fcb.buffer[fcb.bufferptr];
|
||||
end sub;
|
||||
|
||||
sub FCBPutChar(fcb: [FCB], c: uint8) is
|
||||
fcb_i_nextchar(fcb);
|
||||
fcb.buffer[fcb.bufferptr] := c;
|
||||
fcb.dirty := 1;
|
||||
end sub;
|
||||
|
||||
include "commfile.coh";
|
||||
|
||||
121
Source/Images/d_cowgol/u0/FILEIO.COH
Normal file
121
Source/Images/d_cowgol/u0/FILEIO.COH
Normal file
@@ -0,0 +1,121 @@
|
||||
const FCB_FLAG_ERROR := 1<<0;
|
||||
const FCB_FLAG_READ := 1<<1;
|
||||
const FCB_FLAG_WRITE := 1<<2;
|
||||
|
||||
record FCB: RawFCB is
|
||||
pos: uint32;
|
||||
buflen: FCBIndexType;
|
||||
index: FCBIndexType;
|
||||
buffer: uint8[FCB_BUFFER_SIZE];
|
||||
flags: uint8;
|
||||
end record;
|
||||
|
||||
@decl sub FCBRawRead(fcb: [FCB], pos: uint32, len: FCBIndexType): (amount: FCBIndexType);
|
||||
@decl sub FCBRawWrite(fcb: [FCB], pos: uint32, len: FCBIndexType);
|
||||
|
||||
sub _fcb_init(fcb: [FCB]) is
|
||||
fcb.pos := 0;
|
||||
fcb.buflen := 0;
|
||||
fcb.index := 0;
|
||||
fcb.flags := 0;
|
||||
end sub;
|
||||
|
||||
sub _fcb_advance(fcb: [FCB]) is
|
||||
fcb.index := fcb.index + 1;
|
||||
end sub;
|
||||
|
||||
sub _fcb_fillbuffer(fcb: [FCB]): (b: uint8) is
|
||||
var bufpos := fcb.pos + (fcb.index as uint32);
|
||||
fcb.buflen := FCBRawRead(fcb, bufpos, FCB_BUFFER_SIZE);
|
||||
b := 0;
|
||||
if (fcb.flags & FCB_FLAG_ERROR) != 0 then
|
||||
return;
|
||||
end if;
|
||||
fcb.flags := FCB_FLAG_READ;
|
||||
fcb.pos := bufpos;
|
||||
fcb.index := 0;
|
||||
if fcb.buflen != 0 then
|
||||
b := fcb.buffer[0];
|
||||
_fcb_advance(fcb);
|
||||
end if;
|
||||
end sub;
|
||||
|
||||
sub FCBFlush(fcb: [FCB]) is
|
||||
var bufpos := fcb.pos;
|
||||
if (fcb.flags & FCB_FLAG_WRITE) != 0 then
|
||||
FCBRawWrite(fcb, bufpos, fcb.index);
|
||||
if (fcb.flags & FCB_FLAG_ERROR) != 0 then
|
||||
return;
|
||||
end if;
|
||||
end if;
|
||||
fcb.pos := bufpos + (fcb.index as uint32);
|
||||
fcb.flags := 0;
|
||||
fcb.index := 0;
|
||||
fcb.buflen := 0;
|
||||
end sub;
|
||||
|
||||
sub _fcb_flushbuffer(fcb: [FCB], b: uint8) is
|
||||
FCBFlush(fcb);
|
||||
if (fcb.flags & FCB_FLAG_ERROR) != 0 then
|
||||
return;
|
||||
end if;
|
||||
fcb.flags := FCB_FLAG_WRITE;
|
||||
fcb.buffer[0] := b;
|
||||
_fcb_advance(fcb);
|
||||
end sub;
|
||||
|
||||
sub FCBGetChar(fcb: [FCB]): (b: uint8) is
|
||||
if (fcb.flags & FCB_FLAG_WRITE) != 0 then
|
||||
FCBFlush(fcb);
|
||||
end if;
|
||||
var i := fcb.index;
|
||||
if i == fcb.buflen then
|
||||
b := _fcb_fillbuffer(fcb);
|
||||
else
|
||||
b := fcb.buffer[i];
|
||||
_fcb_advance(fcb);
|
||||
end if;
|
||||
end sub;
|
||||
|
||||
sub FCBPutChar(fcb: [FCB], b: uint8) is
|
||||
if (fcb.flags & FCB_FLAG_READ) != 0 then
|
||||
FCBFlush(fcb);
|
||||
end if;
|
||||
var i := fcb.index;
|
||||
if i == FCB_BUFFER_SIZE then
|
||||
_fcb_flushbuffer(fcb, b);
|
||||
else
|
||||
fcb.buffer[i] := b;
|
||||
_fcb_advance(fcb);
|
||||
end if;
|
||||
fcb.flags := fcb.flags | FCB_FLAG_WRITE;
|
||||
end sub;
|
||||
|
||||
sub FCBPos(fcb: [FCB]): (pos: uint32) is
|
||||
pos := fcb.pos + (fcb.index as uint32);
|
||||
end sub;
|
||||
|
||||
sub FCBError(fcb: [FCB]): (e: uint8) is
|
||||
e := 0;
|
||||
if (fcb.flags & FCB_FLAG_ERROR) != 0 then
|
||||
e := 1;
|
||||
end if;
|
||||
end sub;
|
||||
|
||||
sub FCBSeek(fcb: [FCB], pos: uint32) is
|
||||
var delta := pos - fcb.pos;
|
||||
if (fcb.flags & FCB_FLAG_READ) != 0 then
|
||||
if delta < (fcb.buflen as uint32) then
|
||||
fcb.index := delta as FCBIndexType;
|
||||
return;
|
||||
end if;
|
||||
elseif (fcb.flags & FCB_FLAG_WRITE) != 0 then
|
||||
if delta <= (fcb.index as uint32) then
|
||||
fcb.index := delta as FCBIndexType;
|
||||
return;
|
||||
end if;
|
||||
end if;
|
||||
FCBFlush(fcb);
|
||||
fcb.pos := pos;
|
||||
end sub;
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user