Compare commits

...

11 Commits

Author SHA1 Message Date
Wayne Warthen
074f2cfdb2 Fix for ROMless Restart
Registration of terminal emulation was failing under ROMless operation after a (R)estart was performed at the Boot Loader.  See <https://groups.google.com/g/retro-comp/c/bILDMVI97vo/m/Oj8sXdr7DAAJ>.
2024-02-08 17:43:55 -08:00
Wayne Warthen
91f5b36fbc Support for EF9345 Video Display Controller
- Thanks and credit to Laszlo Szolnoki for contributing this driver.
2024-02-07 19:15:46 -08:00
Wayne Warthen
9ad7798713 Update romldr.asm
Correct conditional compilation for UNA.
2024-02-07 13:25:08 -08:00
Wayne Warthen
807999928e Tweak Console Takeover Mechanism
Based on input from Martin R, the console takeover mechanism has been modified to require that the space bar be pressed twice in a row on the character unit desiring to be the console.  This reduces the chance of a spurious console takeover due to garbage input on serial ports.
2024-02-07 13:14:27 -08:00
Wayne Warthen
0b1bbf3d2b Improve Propeller Font
Lars Nelson has tweaked the special graphics characters on the Propeller so that the vertical bar character is better aligned with the other graphics characters.
2024-02-07 13:11:35 -08:00
Wayne Warthen
d93e639e4b Added Console Takeover Mechanism
- If enabled by AUTOCON config setting, you can press <space> at any character device to take over the console at the boot loader prompt.
- Correction to SIOSEEK documentation in System Guide.  Thanks and credit to Martin R.
2024-02-04 15:08:34 -08:00
Wayne Warthen
b633c309f4 Documentation Fixes 2024-01-24 16:31:25 -08:00
Wayne Warthen
a00cf821c7 Update release.yml 2024-01-24 14:54:44 -08:00
Wayne Warthen
d13ea96f35 Update commit.yml 2024-01-24 14:29:51 -08:00
Wayne Warthen
8e4bb575f1 Support for Application Banks 2024-01-24 12:39:10 -08:00
Wayne Warthen
ee8cdfa4b8 Propeller Firmware Enhancements
- Support DEC graphics character set
- Allow use of all lines on VGA display
- Support inverted bits on front panel LEDs and switches by config
2024-01-22 14:21:20 -08:00
300 changed files with 2132 additions and 2061 deletions

View File

@@ -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: .

View File

@@ -12,7 +12,7 @@ jobs:
steps:
- name: Checkout
uses: actions/checkout@v3.3.0
uses: actions/checkout@v4.1.1
- name: Build
run: |

View File

@@ -2,6 +2,13 @@ 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
Version 3.4
-----------

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@@ -3,7 +3,7 @@
**RomWBW ReadMe** \
Version 3.5 \
Wayne Warthen ([wwarthen@gmail.com](mailto:wwarthen@gmail.com)) \
12 Jan 2024
07 Feb 2024
# Overview

View File

@@ -1,6 +1,6 @@
RomWBW ReadMe
Wayne Warthen (wwarthen@gmail.com)
12 Jan 2024
07 Feb 2024

View File

@@ -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

View File

@@ -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 callers 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

View File

@@ -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:
@@ -5558,6 +5658,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 |

View File

@@ -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

View File

@@ -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}

View File

@@ -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
;
;

View File

@@ -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

View File

@@ -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
;
;

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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 \

View File

@@ -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))
@@ -115,13 +116,13 @@ S100_%.imgpad2.bin: s100mon.bin
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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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
;

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

1083
Source/HBIOS/ef.asm Normal file

File diff suppressed because it is too large Load Diff

View File

@@ -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

View File

@@ -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
;
;

View File

@@ -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

View File

@@ -27,6 +27,8 @@
prtval("CPUFAM$", CPUFAM)
prtval("ROMSIZE$", ROMSIZE)
prtval("RAMSIZE$", RAMSIZE)
prtval("ROMDISKSIZE$", ROMD_BNKS * 32)
prtval("RAMDISKSIZE$", RAMD_BNKS * 32)
;
ret
;

View File

@@ -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"

View File

@@ -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"

View File

@@ -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

View File

@@ -22,12 +22,6 @@ SCON_ROWS .EQU 40
;
;
;
SCON_PREINIT:
XOR A
RET
;
;
;
SCON_INIT:
CALL NEWLINE
PRTS("SCON:$")

View File

@@ -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

View File

@@ -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

View File

@@ -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!!!
;

View File

@@ -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

View File

@@ -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

View File

@@ -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.

View File

@@ -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

View File

@@ -51,8 +51,10 @@ done to create a minimal ready-to-run setup for RomWBW:
- Extract VT100 TCAP from Z3TCAP.LBR and saved it as TCAP.Z3T.
- Created PROFILE.SUB to launch NZCOM at startup.
- Created empty STARTZCM.COM.
- TCSELECT.COM was removed because a later version is provided
- Original TCSELECT.COM was removed and replaced with a newer version
from the Z3 files.
- TCAP.LBR and Z3TCAP.TCP were removed and replaced with
Z3TCAP.LBR from new TCSELECT distribution.
- Z3LOC.COM and LBREXT.COM were removed because more recent
versions are provided from Common files.
- Replaced ZRDOS with ZSDOS in NZCOM.LBR. The standalone
@@ -318,4 +320,4 @@ in this user area for more information.
N.B., at a minimum, some of the files in this user area must be copied
to user area 0 for CP/NET to work properly.
-- WBW 3:20 PM 8/27/2021
-- WBW 11:19 AM 1/22/2024

Binary file not shown.

Binary file not shown.

View File

@@ -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

View File

@@ -15,11 +15,11 @@ CON
cols = 80 ' screen columns
rows = 30 ' screen rows
chars = rows * cols ' screen characters
termRows = 25 ' rows in terminal area
termRows = rows - 1 ' rows in terminal area
termChars = termRows * cols ' characters in terminal area
termLastRow = termChars - cols ' buffer pos of first char in last term row
statArea = termChars ' starting position of status area
statRows = rows - TermRows ' status area rows
statRows = 1 ' status area rows
blank = $20
spkVol = 75
@@ -46,6 +46,7 @@ VAR
long vgaBasePin
word curAttr ' active attribute value
word bold, underscore, blink, reverse, fg, bg
word alt ' alt char set active
DAT
@@ -81,6 +82,7 @@ PUB start(BasePin) | i, char
reverse := 0
fg := 0
bg := 0
alt := 0
setMode(0) ' reset attributes
PUB vidOn
@@ -174,6 +176,10 @@ PRI clsTerm
PRI outc(c)
if (alt == 1)
if ((c => $5F) and (c < $7F))
c := c - $5F
screen[pos++] := (curAttr | c)
lastc := c
@@ -400,11 +406,11 @@ PRI ansi(c) | x, defVal
x += cols
"K":
if arg0 == -1
if ((arg0 == -1) or (arg0 == 0))
clEOL(pos)
elseif arg0 == 1
elseif (arg0 == 1)
clBOL(pos)
else
elseif (arg0 == 2)
clEOL(pos - (pos // cols))
"L":
@@ -563,6 +569,11 @@ PUB processChar(c)
return
5: ' Set character set (not implemented)
if (c == "0")
alt := 1
if (c == "B")
alt := 0
state := 0
return

View File

@@ -3,8 +3,8 @@
************************************
* ParPortProp for RomWBW *
* Interface to RBC ParPortProp *
* Version 0.97 *
* May 9, 2020 *
* Version 0.98 *
* January 20, 2024 *
************************************
Wayne Warthen
@@ -30,24 +30,24 @@
2018-03-11 WBW: Implement character attributes
2020-05-09 WBW: Switch monitor refresh to 60Hz
2024-01-20 WBW: Add graphics char selection to AnsiTerm
}}
CON
VERSION = (((0 << 8) + 97) << 16) + 0
VERSION = (((0 << 8) + 98) << 16) + 0
_CLKMODE = XTAL1 + PLL16X
_XINFREQ = 5_000_000
'SLEEP = 60 * 5 ' Screen saver timeout in seconds
SLEEP = 0 ' Zero for no screen saver
VGA_BASE = 16 ' VGA Video pins 16-23 (??)
KBD_BASE = 14 ' PS/2 Keyboard pins 14-15 (DATA, CLK)
SD_BASE = 24 ' SD Card pins 24-27 (DO, CLK, DI, CS)
STAT_ATTR1 = %00110000_00000000 ' Status area screen attribute (first line)
STAT_ATTR = %01110000_00000000 ' Status area screen attribute
STAT_ATTR = %00110000_00000000 ' Status area screen attribute (first line)
PPI_CMD = $0100 ' pin 8, PC0, active ???
PPI_STB = $0200 ' pin 9, PC4, active low
@@ -143,19 +143,16 @@ PUB main | tmp
dsp.cls
MsgNewLine
dsp.VidOn
dsp.vidOn
statRows := (dsp.statInfo >> 8) & $FF
statCols := dsp.statInfo & $FF
dsp.statFill(0, 0, STAT_ATTR, $20, statRows * statCols)
dsp.statFill(0, 0, STAT_ATTR1, $20, statCols)
dsp.statStr(0, 1, STAT_ATTR1, @strROM)
dsp.statStr(0, (statCols - strsize(@strHW)) / 2, STAT_ATTR1, @strHW)
dsp.statStr(0, (statCols - strsize(@strVer) - 1), STAT_ATTR1, @strVer)
'dsp.statStr(2, (statCols - 20) / 2, STAT_ATTR, string("<<< Message Area >>>"))
dsp.statStr(0, 1, STAT_ATTR, @strROM)
dsp.statStr(0, (statCols - strsize(@strHW)) / 2, STAT_ATTR, @strHW)
dsp.statStr(0, (statCols - strsize(@strVer) - 1), STAT_ATTR, @strVer)
MsgStr(string("Initializing ParPortProp..."))
@@ -221,7 +218,7 @@ PUB main | tmp
else
MsgStr(string(" OK"))
MsgNewLine
dsp.beep
MsgStr(string("ParPortProp Ready!"))
@@ -610,7 +607,7 @@ PRI Activity
DAT
strVer byte "F/W v0.97",0
strVer byte "F/W v0.98",0
strHW byte "ParPortProp",0
strROM byte "RomWBW",0

View File

@@ -3,9 +3,9 @@
*******************************
* PropIO for RomWBW *
* Interface to RBC PropIO *
* Version 0.97 *
* May 9, 2020 *
*******************************
* Version 0.98 *
* January 20, 2024 *
*********************************
Wayne Warthen
wwarthen@gmail.com
@@ -35,11 +35,12 @@
2015-11-15 WBW: Added SD card capacity reporting
2018-03-11 WBW: Implement character attributes
2020-05-09 WBW: Switch monitor refresh to 60Hz
2024-01-20 WBW: Add graphics char selection to AnsiTerm
}}
CON
VERSION = (((0 << 8) + 97) << 16) + 0
VERSION = (((0 << 8) + 98) << 16) + 0
_CLKMODE = XTAL1 + PLL16X
_XINFREQ = 5_000_000
@@ -50,9 +51,8 @@ CON
VGA_BASE = 16 ' VGA Video pins 16-23 (??)
KBD_BASE = 14 ' PS/2 Keyboard pins 14-15 (DATA, CLK)
SD_BASE = 24 ' SD Card pins 24-27 (DO, CLK, DI, CS)
STAT_ATTR1 = %00110000_00000000 ' Status area screen attribute (first line)
STAT_ATTR = %01110000_00000000 ' Status area screen attribute
STAT_ATTR = %00110000_00000000 ' Status area screen attribute (first line)
DSKCMD_NOP = $00
DSKCMD_STATUS = $01
@@ -78,10 +78,7 @@ CON
TRMST_ACTMASK = (TRMST_KBDACT | TRMST_DSPACT) ' bit mask for kbd or dsp active
OBJ
'dsp : "VGA_1024" ' VGA Terminal Driver
dsp : "AnsiTerm" ' VGA Terminal Driver
kbd : "Keyboard" ' PS/2 Keyboard Driver
sdc : "safe_spi" ' SD Card Driver
@@ -101,7 +98,7 @@ VAR
long TimerCount
long DiskResult
long CardType
byte statRows
byte statCols
@@ -122,20 +119,17 @@ PUB main
dsp.cls
MsgNewLine
dsp.VidOn
dsp.vidOn
statRows := (dsp.statInfo >> 8) & $FF
statCols := dsp.statInfo & $FF
dsp.statFill(0, 0, STAT_ATTR, $20, statRows * statCols)
dsp.statFill(0, 0, STAT_ATTR1, $20, statCols)
dsp.statStr(0, 1, STAT_ATTR1, @strROM)
dsp.statStr(0, (statCols - strsize(@strHW)) / 2, STAT_ATTR1, @strHW)
dsp.statStr(0, (statCols - strsize(@strVer) - 1), STAT_ATTR1, @strVer)
dsp.statStr(0, 1, STAT_ATTR, @strROM)
dsp.statStr(0, (statCols - strsize(@strHW)) / 2, STAT_ATTR, @strHW)
dsp.statStr(0, (statCols - strsize(@strVer) - 1), STAT_ATTR, @strVer)
'dsp.statStr(2, (statCols - 20) / 2, STAT_ATTR, string("<<< Message Area >>>"))
MsgStr(string("Initializing PropIO..."))
TermStatKbdAdr := @TermStatKbd
@@ -185,10 +179,12 @@ PUB main
else
MsgStr(string(" OK"))
MsgNewLine
dsp.beep
MsgStr(string("PropIO Ready!"))
MsgNewLine
repeat
if (DiskStat & DSKST_ACT)
ProcessDiskCmd
@@ -315,13 +311,13 @@ PRI Timer
waitcnt(clkfreq * 1 + cnt)
if (TimerCount > 0)
if (TimerCount == 1)
dsp.VidOff
dsp.vidOff
TimerCount--
PRI Activity
if (SLEEP > 0)
if (TimerCount == 0)
dsp.VidOn
dsp.vidOn
TimerCount := SLEEP
{
@@ -338,18 +334,18 @@ PRI DumpBuffer(Buffer) | i, j
DAT
strVer byte "F/W v0.97",0
strVer byte "F/W v0.98",0
strHW byte "PropIO",0
strROM byte "RomWBW",0
{{ Ports
+------/WAIT
|+-----/RD
+------ CLR
|+----- /RD
||+---- A1
|||+--- A0
||||+--/CS
||||+-- /CS
|||||
|||||
P15..P0 --> xxxxxxxx_xxxxxxxx

View File

@@ -3,8 +3,8 @@
*********************************
* PropIO 2 for RomWBW *
* Interface to RBC PropIO 2 *
* Version 0.97 *
* May 9, 2020 *
* Version 0.98 *
* January 20, 2024 *
*********************************
Wayne Warthen
@@ -35,11 +35,12 @@
2015-11-15 WBW: Added SD card capacity reporting
2018-03-11 WBW: Implement character attributes
2020-05-09 WBW: Switch monitor refresh to 60Hz
2024-01-20 WBW: Add graphics char selection to AnsiTerm
}}
CON
VERSION = (((0 << 8) + 97) << 16) + 0
VERSION = (((0 << 8) + 98) << 16) + 0
_CLKMODE = XTAL1 + PLL16X
_XINFREQ = 5_000_000
@@ -51,8 +52,7 @@ CON
KBD_BASE = 14 ' PS/2 Keyboard pins 14-15 (DATA, CLK)
SD_BASE = 24 ' SD Card pins 24-27 (DO, CLK, DI, CS)
STAT_ATTR1 = %00110000_00000000 ' Status area screen attribute (first line)
STAT_ATTR = %01110000_00000000 ' Status area screen attribute
STAT_ATTR = %00110000_00000000 ' Status area screen attribute (first line)
DSKCMD_NOP = $00
DSKCMD_STATUS = $01
@@ -79,7 +79,6 @@ CON
TRMST_ACTMASK = (TRMST_KBDACT | TRMST_DSPACT) ' bit mask for kbd or dsp active
OBJ
'dsp : "VGA_1024" ' VGA Terminal Driver
dsp : "AnsiTerm" ' VGA Terminal Driver
kbd : "Keyboard" ' PS/2 Keyboard Driver
sdc : "safe_spi" ' SD Card Driver
@@ -126,14 +125,11 @@ PUB main
statCols := dsp.statInfo & $FF
dsp.statFill(0, 0, STAT_ATTR, $20, statRows * statCols)
dsp.statFill(0, 0, STAT_ATTR1, $20, statCols)
dsp.statStr(0, 1, STAT_ATTR1, @strROM)
dsp.statStr(0, (statCols - strsize(@strHW)) / 2, STAT_ATTR1, @strHW)
dsp.statStr(0, (statCols - strsize(@strVer) - 1), STAT_ATTR1, @strVer)
dsp.statStr(0, 1, STAT_ATTR, @strROM)
dsp.statStr(0, (statCols - strsize(@strHW)) / 2, STAT_ATTR, @strHW)
dsp.statStr(0, (statCols - strsize(@strVer) - 1), STAT_ATTR, @strVer)
'dsp.statStr(2, (statCols - 20) / 2, STAT_ATTR, string("<<< Message Area >>>"))
MsgStr(string("Initializing PropIO..."))
TermStatKbdAdr := @TermStatKbd
@@ -188,7 +184,7 @@ PUB main
MsgStr(string("PropIO Ready!"))
MsgNewLine
repeat
if (DiskStat & DSKST_ACT)
ProcessDiskCmd
@@ -338,7 +334,7 @@ PRI DumpBuffer(Buffer) | i, j
DAT
strVer byte "F/W v0.97",0
strVer byte "F/W v0.98",0
strHW byte "PropIO v2",0
strROM byte "RomWBW",0

View File

@@ -1,702 +0,0 @@
'' VGA_1024.spin
''
'' MODIFIED BY VINCE BRIEL FOR POCKETERM FEATURES
'' MODIIFED BY JEFF LEDGER / AKA OLDBITCOLLECTOR
''
CON
cols = 80 '128 ' number of screen columns
lcols = cols / 4 ' number of long in columns
rows = 40 '64 ' number of screen rows
chars = rows*cols ' number of screen characters
esc = $CB ' keyboard esc char
rowsnow = 36 ' adjusted for split screen effect
maxChars = rowsnow*cols ' adjusted value for split screen effect
lastChar = maxChars / 4 ' last screen position in longs adjusted for split
lastLine = (rowsnow - 1) * cols ' character position of last row
cols1 = 81 ' adjusted value for 80th character
TURQUOISE = $29
OBJ
vga : "vga_Hires_Text"
VAR
byte screen[chars] ' screen character buffer
byte tmpl[cols] ' temporary line buffer
word colors[rows] ' color specs for each screen row (see ColorPtr description above)
byte cursor[6] ' cursor info array (see CursorPtr description above)
long sync, loc, xloc, yloc ' sync used by VGA routine, others are local screen pointers
long kbdreq ' global val of kbdflag
long BR[8]
long Brate
byte inverse
byte invs
byte state ' Current state of state machine
word pos ' Current Position on the screen
word oldpos ' Previous location of cursor before update
word regionTop, regionBot ' Scroll region top/bottom
long arg0 ' First argument of escape sequence
long arg1 ' Second argument of escape sequence
byte lastc ' Last displayed char
word statpos
long vgabasepin
PUB start(BasePin) | i, char
vgabasepin := BasePin
''init screen colors to gold on blue
repeat i from 0 to rows - 1
colors[i] := $08F0 '$2804 (if you want cyan on blue)
''init cursor attributes
cursor[2] := %110 ' init cursor to underscore with slow blink
BR[0]:=300
BR[1]:=1200
BR[2]:=2400
BR[3]:=4800
BR[4]:=9600
BR[5]:=19200
BR[6]:=38400
BR[7]:=57600
BR[8]:=115200
xloc := cursor[0] := 0
yloc := cursor[1] := 0
loc := xloc + yloc*cols
pos := 0
regionTop := 0
regionBot := 35 * cols
state := 0
statpos := 37 * cols
PUB vidon
if (!vga.start(vgabasepin, @screen, @colors, @cursor, @sync))
return false
'waitcnt(clkfreq * 1 + cnt) 'wait 1 second for cogs to start
PUB vidoff
vga.stop
PUB inv(c)
inverse:=c
PUB color(colorVal) | i
repeat i from 0 to rows - 1
colors[i] := $0000 | colorVal
PUB cursorset(c) | i
i:=%000
if c == 1
i:= %001
if c == 2
i:= %010
if c == 3
i:= %011
if c == 4
i:= %101
if c == 5
i:= %110
if c == 6
i:= %111
if c == 7
i:= %000
cursor[2] := i
PUB bin(value, digits)
'' Print a binary number, specify number of digits
repeat while digits > 32
outc("0")
digits--
value <<= 32 - digits
repeat digits
outc((value <-= 1) & 1 + "0")
PUB clrbtm(ColorVal) | i
repeat i from 36 to rows - 1 'was 35
colors[i] := $0000 + ColorVal
PUB cls1(VerStr) | i
longfill(@screen[0], $20202020, chars / 4)
clrbtm(TURQUOISE)
inverse := 1
statprint(36, 0, VerStr)
inverse := 0
repeat i from 37 to (rows - 1)
statprint(i,0, string(" "))
{{
x :=xloc
y := yloc
invs := inverse
''clrbtm(TURQUOISE)
longfill(@screen, $20202020, chars/4)
xloc := 0
yloc :=0
loc := xloc + yloc*cols
repeat 80
outc(32)
xloc := 0
yloc :=36
loc := xloc + yloc*cols
inverse := 1
str(string(" "))
inverse := 0
str(string("Baud Rate: "))
i:= BR[6]
dec(i)
str(string(" "))
xloc := 18
loc := xloc + yloc*cols
str(string("Color "))
str(string("PC Port: "))
if pcport == 1
str(string("OFF "))
if pcport == 0
str(string("ON "))
str(string(" Force 7 bit: "))
if ascii == 0
str(string("NO "))
if ascii == 1
str(string("YES "))
str(string(" Cursor CR W/LF: "))
if CR == 1
str(string("YES"))
if CR == 0
str(string("NO "))
outc(13)
outc(10)
inverse:=1
xloc := 6
loc := xloc + yloc*cols
str(string("F1"))
xloc := 19
loc := xloc + yloc*cols
str(string("F2"))
xloc := 30
loc := xloc + yloc*cols
str(string("F3"))
xloc := 46
loc := xloc + yloc*cols
str(string("F4"))
xloc := 58
loc := xloc + yloc*cols
str(string("F5"))
xloc := 70
loc := xloc + yloc*cols
str(string("F6"))
inverse := invs
xloc := cursor[0] := x 'right & left was 0
yloc := cursor[1] := y 'from top was 1
loc := xloc + yloc*cols
}}
PUB clsupdate(c,screencolor,PCPORT,ascii,CR) | i,x,y,locold
invs := inverse
locold := loc
x := xloc
y := yloc
''(TURQUOISE)
xloc := 0
yloc :=36
loc := xloc + yloc*cols
inverse := 1
str(string(" "))
inverse := 0
xloc := 0
yloc :=37
loc := xloc + yloc*cols
str(string("Baud Rate: "))
i:= BR[6]
dec(i)
str(string(" "))
xloc := 18
loc := xloc + yloc*cols
str(string("Color "))
str(string("PC Port: "))
if pcport == 1
str(string("OFF "))
if pcport == 0
str(string("ON "))
str(string(" Force 7 bit: "))
if ascii == 0
str(string("NO "))
if ascii == 1
str(string("YES "))
str(string(" Cursor CR W/LF: "))
if CR == 1
str(string("YES"))
if CR == 0
str(string("NO "))
xloc := 0
yloc :=38
loc := xloc + yloc*cols
inverse:=1
xloc := 6
loc := xloc + yloc*cols
str(string("F1"))
xloc := 19
loc := xloc + yloc*cols
str(string("F2"))
xloc := 30
loc := xloc + yloc*cols
str(string("F3"))
xloc := 46
loc := xloc + yloc*cols
str(string("F4"))
xloc := 58
loc := xloc + yloc*cols
str(string("F5"))
xloc := 70
loc := xloc + yloc*cols
str(string("F6"))
inverse := invs
xloc := cursor[0] := x
yloc := cursor[1] := y
' loc := xloc + yloc*cols
loc := locold
PUB dec(value) | i
'' Print a decimal number
if value < 0
-value
outc("-")
i := 1_000_000_000
repeat 10
if value => i
outc(value/i + "0")
value //= i
result~~
elseif result or i == 1
outc("0")
i /= 10
PUB hex(value, digits)
'' Print a hexadecimal number, specify number of digits
repeat while digits > 8
outc("0")
digits--
value <<= (8 - digits) << 2
repeat digits
outc(lookupz((value <-= 4) & $f : "0".."9", "A".."F"))
PUB str(string_ptr)
'' Print a zero terminated string
repeat strsize(string_ptr)
process_char(byte[string_ptr++])
PUB statprint(r, c, str1) | x, ptr
ptr := r * cols + c
repeat x from 0 to STRSIZE(str1) - 1
putc(ptr++, BYTE[str1 + x])
PUB statnum(r, c, num1) | i, ptr
ptr := r * cols + c
if num1 < 0
-num1
putc(ptr++,"-")
i := 1_000_000_000
repeat 10
if num1 => i
putc(ptr++, (num1/i +"0"))
num1 //= i
result~~
elseif result or i == 1
putc(ptr++, "0")
i /= 10
PUB putc(position, c)
if inverse
c |= $80
screen[position] := c
PUB cls
longfill (@screen, $20202020, lastChar)
PUB fullcls
longfill(@screen, $20202020, 800)
PUB setInverse(val)
inverse := val
PUB setInv(c)
if c == 7
setInverse(1)
else
setInverse(0)
PUB clEOL(position) | count
count := cols - (position // cols)
bytefill(@screen + position, $20, count)
PUB clBOL(position) | count
count := position // cols
bytefill(@screen + position - count, $20, count)
PUB delLine(position) | src, count
position -= position // cols
src := position + cols
count := (maxChars - src) / 4
if count > 0
longmove(@screen + position, @screen + src, count)
longfill(@screen + lastLine, $20202020, lcols)
PUB clEOS(position)
cleol(position)
position += cols - (position // cols)
repeat while position < maxChars
longfill(@screen + position, $20202020, lcols)
pos += cols
PUB setCursorPos(position)
cursor[0] := position // cols
cursor[1] := position / cols
PUB insLine(position) | base, nxt
base := position - (position // cols)
position := lastLine
repeat while position > base
nxt := position - cols
longmove(@screen + position, @screen + nxt, lcols)
position := nxt
clEOL(base)
PUB insChar(position) | count
count := (cols - (position // cols)) - 1
bytemove(@tmpl, @screen + position, count)
screen[position] := " "
bytemove(@screen + position + 1, @tmpl, count)
PUB delChar(position) | count
count := (cols - (position // cols)) - 1
bytemove(@screen + position, @screen + position + 1, count)
screen[position + count] := " "
PRI inRegion : answer
answer := (pos => regionTop) AND (pos < regionBot)
PRI scrollUp
delLine(regionTop)
if regionBot < maxChars
insLine(regionBot)
PRI scrollDown
if regionBot < maxChars
delLine(regionBot)
insLine(regionTop)
PRI ansi(c) | x, defVal
state := 0
if (c <> "r") AND (c <> "J") AND (c <> "m") AND (c <> "K")
if arg0 == -1
arg0 := 1
if arg1 == -1
arg1 := 1
case c
"@":
repeat while arg0-- > 0
insChar(pos)
"b":
repeat while arg0-- > 0
outc(lastc)
"d":
if (arg0 < 1) OR (arg0 > rows)
arg0 := rows
pos := ((arg0 - 1) * cols) + (pos // cols)
"m":
setInv(arg0)
if arg1 <> -1
setInv(arg1)
"r":
if arg0 < 1
arg0 := 1
elseif arg0 > cols
arg0 := cols
if arg1 < 1
arg1 := 1
elseif arg1 > cols
arg1 := cols
if arg1 < arg0
arg1 := arg0
regionTop := (arg0 - 1) * cols
regionBot := arg1 * cols
pos := 0
"A":
repeat while arg0-- > 0
pos -= cols
if pos < 0
pos += cols
return
"B":
repeat while arg0-- > 0
pos += cols
if pos => maxChars
pos -= cols
return
"C":
repeat while arg0-- > 0
pos += 1
if pos => maxChars
pos -= 1
return
"D":
repeat while arg0-- > 0
pos -= 1
if pos < 0
pos := 0
return
"G":
if (arg0 < 1) OR (arg0 > cols)
arg0 := cols
pos := (pos - (pos // cols)) + (arg0 - 1)
"H", "f":
if arg0 =< 0
arg0 := 1
if arg1 =< 0
arg1 := 1
pos := (cols * (arg0 - 1)) + (arg1 - 1)
if pos < 0
pos := 0
if pos => maxChars
pos := maxChars - 1
"J":
if arg0 == 1
clBOL(pos)
x := pos - cols
x -= x // cols
repeat while x => 0
clEOL(x)
x -= cols
return
if arg0 == 2
pos := 0
clEOL(pos)
x := pos + cols
x -= (x // cols)
repeat while x < maxChars
clEOL(x)
x += cols
"K":
if arg0 == -1
clEOL(pos)
elseif arg0 == 1
clBOL(pos)
else
clEOL(pos - (pos // cols))
"L":
if inRegion
repeat while arg0-- > 0
if regionBot < maxChars
delLine(regionBot)
insLine(pos)
"M":
if inRegion
repeat while arg0-- > 0
delLine(pos)
if regionBot < maxChars
insLine(regionBot)
"P":
repeat while arg0--
delChar(pos)
PRI outc(c)
putc(pos++, lastc := c)
if pos == regionBot
scrollUp
pos -= cols
elseif pos == maxChars
pos := lastLine
PUB process_char(c)
case state
0:
if c > 127
c := $20
if c => $20
outc(c)
setCursorPos(pos)
return
if c == $1B
state := 1
return
if c == $0D
pos := pos - (pos // cols)
setCursorPos(pos)
return
if c == $0A
if inRegion
pos += cols
if pos => regionBot
scrollUp
pos -= cols
else
pos += cols
if pos => maxChars
pos -= cols
setCursorPos(pos)
return
if c == 9
pos += (8 - (pos // 8))
if pos => maxChars
pos := lastLine
delLine(0)
setCursorPos(pos)
return
if c == 8
if pos > 0
pos -= 1
setCursorPos(pos)
return
1:
case c
"[":
arg0 := arg1 := -1
state := 2
return
"P":
pos += cols
if pos => maxChars
pos -= cols
"K":
if pos > 0
pos -= 1
"H":
pos -= cols
if pos < 0
pos += cols
"D":
if inRegion
scrollUp
"M":
if inRegion
scrollDown
"G":
pos := 0
"(":
state := 5
return
state := 0
return
2:
if (c => "0") AND (c =< "9")
if arg0 == -1
arg0 := c - "0"
else
arg0 := (arg0 * 10) + (c - "0")
return
if c == ";"
state := 3
return
ansi(c)
setCursorPos(pos)
return
3:
if (c => "0") AND (c =< "9")
if arg1 == -1
arg1 := c - "0"
else
arg1 := (arg1 * 10) + (c - "0")
return
if c == ";"
state := 4
return
ansi(c)
setCursorPos(pos)
return
4:
if (c => "0") AND (c =< "9")
return
if c == ";"
return
ansi(c)
setCursorPos(pos)
return
5:
state := 0
return
return

View File

@@ -21,7 +21,7 @@
CON
{
' 640 x 480 @ 69Hz settings: 80 x 30 characters
' 640 x 480 @ 69Hz settings:
hp = 640 ' horizontal pixels
vp = 480 ' vertical pixels
@@ -37,19 +37,19 @@ CON
}
'{
' 640 x 480 @ 60Hz settings: 80 x 40 characters
' 640 x 480 @ 60Hz settings:
hp = 640 'horizontal pixels
vp = 480 'vertical pixels
hf = 16 'horizontal front porch pixels
hs = 96 'horizontal sync pixels
hb = 48 'horizontal back porch pixels
vf = 10 'vertical front porch lines
vs = 2 'vertical sync lines
vb = 33 'vertical back porch lines
hn = 1 'horizontal normal sync state (0|1)
vn = 1 'vertical normal sync state (0|1)
pr = 25 'pixel rate in MHz at 80MHz system clock (5MHz granularity)
hp = 640 'horizontal pixels
vp = 480 'vertical pixels
hf = 16 'horizontal front porch pixels
hs = 96 'horizontal sync pixels
hb = 48 'horizontal back porch pixels
vf = 10 'vertical front porch lines
vs = 2 'vertical sync lines
vb = 33 'vertical back porch lines
hn = 1 'horizontal normal sync state (0|1)
vn = 1 'vertical normal sync state (0|1)
pr = 25 'pixel rate in MHz at 80MHz system clock (5MHz granularity)
'}
@@ -70,9 +70,9 @@ PUB start(BasePin, ScreenPtr, CursorPtr, SyncPtr) : okay | i, j
''
'' ScreenPtr = Pointer to 80x30 words containing Latin-1 codes and colors for
'' each of the 80x30 screen characters. The lower byte of the word
'' contains the Latin-1 code to display. The upper byte contains
'' contains the Latin-1 code to display. The upper byte contains
'' the foreground colour in bits 11..8 and the background colour in
'' bits 15..12.
'' bits 15..12. Remember bytes of a word are stored little endian.
''
'' screen word example: %00011111_01000001 = "A", white on blue
''
@@ -466,141 +466,144 @@ fours res 1
fit $1f0
' 8 x 12 font - characters 0..127
' 8 x 16 font - characters 0..255
'
' Each long holds four scan lines of a single character. The longs are arranged into
' groups of 128 which represent all characters (0..127). There are four groups which
' each contain a vertical part of all characters. They are ordered top, middle, and
' bottom.
' groups of 256 which represent all characters (0..255). There are four groups which
' each contain a vertical part of all characters. They are ordered top, middle top,
' middle bottom and bottom. Bytes in each long are stored little endian.
font long
long $0082ba00,$00000000,$2a552a00,$36360000,$061e0000,$061c0000,$06060000,$3c000000
long $0082ba00,$00000000,$2a552a00,$36360000,$061e0000,$061c0000,$06060000,$3c000000 'top
long $00000000,$6e660000,$66660000,$18181818,$00000000,$00000000,$18181818,$18181818
long $0000ffff,$00000000,$00000000,$00000000,$00000000,$18181818,$18181818,$18181818
long $0000ffff,$00000000,$00000000,$00000000,$00000000,$18181818,$18181818,$18181818 '10
long $00000000,$18181818,$60000000,$06000000,$00000000,$00000000,$38000000,$00000000
long $00000000,$18000000,$36000000,$24000000,$18000000,$4e000000,$1c000000,$18000000
long $00000000,$18000000,$36000000,$24000000,$18000000,$4e000000,$1c000000,$18000000 '20
long $30000000,$0c000000,$00000000,$00000000,$00000000,$00000000,$00000000,$60000000
long $18000000,$18000000,$3c000000,$7e000000,$60000000,$7e000000,$3c000000,$7e000000
long $18000000,$18000000,$3c000000,$7e000000,$60000000,$7e000000,$3c000000,$7e000000 '30
long $3c000000,$3c000000,$00000000,$00000000,$60000000,$00000000,$06000000,$3c000000
long $3c000000,$3c000000,$3e000000,$3c000000,$3e000000,$7e000000,$7e000000,$3c000000
long $3c000000,$3c000000,$3e000000,$3c000000,$3e000000,$7e000000,$7e000000,$3c000000 '40
long $66000000,$7e000000,$60000000,$46000000,$06000000,$42000000,$66000000,$3c000000
long $3e000000,$3c000000,$3e000000,$3c000000,$7e000000,$66000000,$66000000,$66000000
long $3e000000,$3c000000,$3e000000,$3c000000,$7e000000,$66000000,$66000000,$66000000 '50
long $42000000,$66000000,$7e000000,$3c000000,$06000000,$3c000000,$18000000,$00000000
long $180c0000,$00000000,$06000000,$00000000,$60000000,$00000000,$38000000,$00000000
long $180c0000,$00000000,$06000000,$00000000,$60000000,$00000000,$38000000,$00000000 '60
long $06000000,$18000000,$60000000,$06000000,$1c000000,$00000000,$00000000,$00000000
long $00000000,$00000000,$00000000,$00000000,$00000000,$00000000,$00000000,$00000000
long $00000000,$00000000,$00000000,$00000000,$00000000,$00000000,$00000000,$00000000 '70
long $00000000,$00000000,$00000000,$38000000,$18000000,$1c000000,$4c000000,$aa55aa55
long $00000000,$00000000,$2a552a00,$36360000,$061e0000,$061c0000,$06060000,$3c000000
long $00000000,$00000000,$2a552a00,$36360000,$061e0000,$061c0000,$06060000,$3c000000 '80
long $00000000,$6e660000,$66660000,$24242424,$00000000,$00000000,$24242424,$24242424
long $00ff00ff,$ff000000,$00000000,$00000000,$00000000,$24242424,$24242424,$24242424
long $00ff00ff,$ff000000,$00000000,$00000000,$00000000,$24242424,$24242424,$24242424 '90
long $00000000,$24242424,$60000000,$06000000,$00000000,$00000000,$38000000,$00000000
long $00000000,$18000000,$36000000,$24000000,$18000000,$4e000000,$1c000000,$18000000
long $00000000,$18000000,$36000000,$24000000,$18000000,$4e000000,$1c000000,$18000000 'A0
long $30000000,$0c000000,$00000000,$00000000,$00000000,$00000000,$00000000,$60000000
long $18000000,$18000000,$3c000000,$7e000000,$60000000,$7e000000,$3c000000,$7e000000
long $18000000,$18000000,$3c000000,$7e000000,$60000000,$7e000000,$3c000000,$7e000000 'B0
long $3c000000,$3c000000,$00000000,$00000000,$60000000,$00000000,$06000000,$3c000000
long $3c000000,$3c000000,$3e000000,$3c000000,$3e000000,$7e000000,$7e000000,$3c000000
long $3c000000,$3c000000,$3e000000,$3c000000,$3e000000,$7e000000,$7e000000,$3c000000 'C0
long $66000000,$7e000000,$60000000,$46000000,$06000000,$42000000,$66000000,$3c000000
long $3e000000,$3c000000,$3e000000,$3c000000,$7e000000,$66000000,$66000000,$66000000
long $3e000000,$3c000000,$3e000000,$3c000000,$7e000000,$66000000,$66000000,$66000000 'D0
long $42000000,$66000000,$7e000000,$3c000000,$06000000,$3c000000,$18000000,$00000000
long $180c0000,$00000000,$06000000,$00000000,$60000000,$00000000,$38000000,$00000000
long $180c0000,$00000000,$06000000,$00000000,$60000000,$00000000,$38000000,$00000000 'E0
long $06000000,$18000000,$60000000,$06000000,$1c000000,$00000000,$00000000,$00000000
long $00000000,$00000000,$00000000,$00000000,$00000000,$00000000,$00000000,$00000000
long $00000000,$00000000,$00000000,$00000000,$00000000,$00000000,$00000000,$00000000 'F0
long $00000000,$00000000,$00000000,$38000000,$18000000,$1c000000,$4c000000,$aa55aa55
long $82008282,$3c180000,$2a552a55,$0036363e,$0006060e,$001c0606,$001e0606,$003c6666
long $82008282,$3c180000,$2a552a55,$0036363e,$0006060e,$001c0606,$001e0606,$003c6666 'mid top
long $187e1818,$0066767e,$00183c24,$1f181818,$1f000000,$f8000000,$f8181818,$ff181818
long $00000000,$0000ffff,$00000000,$00000000,$00000000,$f8181818,$1f181818,$ff181818
long $00000000,$0000ffff,$ff000000,$00000000,$00000000,$f8181818,$1f181818,$ff181818 '10
long $ff000000,$18181818,$0c060c30,$3060300c,$667e0000,$187e3030,$3e0c0c6c,$18180000
long $00000000,$18181818,$00003636,$247e7e24,$3c1a5a3c,$18302e6a,$1c363636,$00181818
long $00000000,$18181818,$00003636,$247e7e24,$3c1a5a3c,$18302e6a,$1c363636,$00181818 '20
long $0c0c1818,$30301818,$7e182400,$7e181800,$00000000,$00000000,$00000000,$18303060
long $66666624,$18181a1c,$38606666,$3c183060,$666c7870,$663e0606,$3e060666,$30306060
long $66666624,$18181a1c,$38606666,$3c183060,$666c7870,$663e0606,$3e060666,$30306060 '30
long $3c666666,$7c666666,$183c1800,$183c1800,$060c1830,$007e0000,$6030180c,$38606666
long $6a7a6262,$7e666666,$3e666666,$06060666,$66666666,$3e060606,$3e060606,$76060666
long $6a7a6262,$7e666666,$3e666666,$06060666,$66666666,$3e060606,$3e060606,$76060666 '40
long $7e666666,$18181818,$60606060,$0e1e3666,$06060606,$667e7e66,$7e6e6e66,$66666666
long $3e666666,$66666666,$3e666666,$3c060666,$18181818,$66666666,$24246666,$66666666
long $3e666666,$66666666,$3e666666,$3c060666,$18181818,$66666666,$24246666,$66666666 '50
long $183c2466,$183c3c66,$18306060,$0c0c0c0c,$180c0c06,$30303030,$0042663c,$00000000
long $00000030,$603c0000,$663e0606,$663c0000,$667c6060,$663c0000,$1e0c0c6c,$665c0000
long $00000030,$603c0000,$663e0606,$663c0000,$667c6060,$663c0000,$1e0c0c6c,$665c0000 '60
long $663e0606,$181c0018,$60600060,$36660606,$18181818,$fe6a0000,$663e0000,$663c0000
long $663e0000,$667c0000,$663e0000,$663c0000,$0c3e0c0c,$66660000,$66660000,$66660000
long $663e0000,$667c0000,$663e0000,$663c0000,$0c3e0c0c,$66660000,$66660000,$66660000 '70
long $66660000,$66660000,$607e0000,$0c180c0c,$18181818,$30183030,$0000327e,$aa55aa55
long $00000000,$3c180000,$2a552a55,$0036363e,$0006060e,$001c0606,$001e0606,$003c6666
long $00000000,$3c180000,$2a552a55,$0036363e,$0006060e,$001c0606,$001e0606,$003c6666 '80
long $187e1818,$0066767e,$00183c24,$20272424,$203f0000,$04fc0000,$04e42424,$00e72424
long $00000000,$0000ff00,$ff000000,$00000000,$00000000,$04e42424,$20272424,$00e72424
long $00000000,$0000ff00,$ff000000,$00000000,$00000000,$04e42424,$20272424,$00e72424 '90
long $00ff0000,$24242424,$0c060c30,$3060300c,$667e0000,$187e3030,$3e0c0c6c,$18180000
long $00000000,$18181818,$00003636,$247e7e24,$3c1a5a3c,$18302e6a,$1c363636,$00181818
long $00000000,$18181818,$00003636,$247e7e24,$3c1a5a3c,$18302e6a,$1c363636,$00181818 'A0
long $0c0c1818,$30301818,$7e182400,$7e181800,$00000000,$00000000,$00000000,$18303060
long $66666624,$18181a1c,$38606666,$3c183060,$666c7870,$663e0606,$3e060666,$30306060
long $66666624,$18181a1c,$38606666,$3c183060,$666c7870,$663e0606,$3e060666,$30306060 'B0
long $3c666666,$7c666666,$183c1800,$183c1800,$060c1830,$007e0000,$6030180c,$38606666
long $76766666,$7e666666,$3e666666,$06060666,$66666666,$3e060606,$3e060606,$76060666
long $76766666,$7e666666,$3e666666,$06060666,$66666666,$3e060606,$3e060606,$76060666 'C0
long $7e666666,$18181818,$60606060,$0e1e3666,$06060606,$667e7e66,$7e6e6e66,$66666666
long $3e666666,$66666666,$3e666666,$3c060666,$18181818,$66666666,$24246666,$66666666
long $3e666666,$66666666,$3e666666,$3c060666,$18181818,$66666666,$24246666,$66666666 'D0
long $183c2466,$183c3c66,$18306060,$0c0c0c0c,$180c0c06,$30303030,$0042663c,$00000000
long $00000030,$603c0000,$663e0606,$663c0000,$667c6060,$663c0000,$1e0c0c6c,$665c0000
long $00000030,$603c0000,$663e0606,$663c0000,$667c6060,$663c0000,$1e0c0c6c,$665c0000 'E0
long $663e0606,$181c0018,$60600060,$36660606,$18181818,$fe6a0000,$663e0000,$663c0000
long $663e0000,$667c0000,$663e0000,$663c0000,$0c3e0c0c,$66660000,$66660000,$66660000
long $663e0000,$667c0000,$663e0000,$663c0000,$0c3e0c0c,$66660000,$66660000,$66660000 'F0
long $66660000,$66660000,$607e0000,$0c180c0c,$18181818,$30183030,$0000327e,$aa55aa55
long $82820082,$00183c7e,$2a552a55,$30303078,$18381878,$58385838,$18381878,$00000000
long $82820082,$00183c7e,$2a552a55,$30303078,$18381878,$58385838,$18381878,$00000000 'mid bottom
long $007e0018,$18181818,$30303078,$0000001f,$1818181f,$181818f8,$000000f8,$181818ff
long $00000000,$00000000,$0000ffff,$ff000000,$00000000,$181818f8,$1818181f,$000000ff
long $00000000,$00000000,$000000ff,$ff000000,$00000000,$181818f8,$1818181f,$000000ff '10
long $181818ff,$18181818,$7e006030,$7e00060c,$66666666,$0c0c7e18,$3a6c0c0c,$00000000
long $00000000,$18180018,$00000000,$24247e7e,$183c5a58,$7256740c,$5c367656,$00000000
long $00000000,$18180018,$00000000,$24247e7e,$183c5a58,$7256740c,$5c367656,$00000000 '20
long $3018180c,$0c181830,$0024187e,$0018187e,$18383800,$0000007e,$3c180000,$06060c0c
long $18246666,$7e181818,$7e06060c,$3c666060,$60607e66,$3c666060,$3c666666,$0c0c1818
long $18246666,$7e181818,$7e06060c,$3c666060,$60607e66,$3c666060,$3c666666,$0c0c1818 '30
long $3c666666,$3c666060,$3c180000,$18383800,$6030180c,$00007e00,$060c1830,$18180018
long $3c62027a,$66666666,$3e666666,$3c660606,$3e666666,$7e060606,$06060606,$7c666666
long $3c62027a,$66666666,$3e666666,$3c660606,$3e666666,$7e060606,$06060606,$7c666666 '40
long $66666666,$7e181818,$3c666060,$4666361e,$7e060606,$66666666,$66667676,$3c666666
long $06060606,$3c766e66,$4666361e,$3c666060,$18181818,$3c666666,$1818183c,$42667e7e
long $06060606,$3c766e66,$4666361e,$3c666060,$18181818,$3c666666,$1818183c,$42667e7e '50
long $4266243c,$18181818,$7e06060c,$3c0c0c0c,$60603030,$3c303030,$00000000,$fe000000
long $00000000,$7c66667c,$3e666666,$3c660606,$7c666666,$3c66067e,$0c0c0c0c,$3c063c66
long $00000000,$7c66667c,$3e666666,$3c660606,$7c666666,$3c66067e,$0c0c0c0c,$3c063c66 '60
long $66666666,$7e181818,$60606060,$66361e1e,$7e181818,$c6c6d6d6,$66666666,$3c666666
long $063e6666,$607c6666,$06060606,$3c66300c,$386c0c0c,$7c666666,$183c3c66,$247e7e66
long $063e6666,$607c6666,$06060606,$3c66300c,$386c0c0c,$7c666666,$183c3c66,$247e7e66 '70
long $66663c3c,$607c6666,$7e060c30,$380c0c18,$18181818,$1c303018,$00000000,$aa55aa55
long $00000000,$00183c7e,$2a552a55,$30303078,$18381878,$58385838,$18381878,$00000000
long $00000000,$00183c7e,$2a552a55,$30303078,$18381878,$58385838,$18381878,$00000000 '90
long $007e0018,$18181818,$30303078,$00003f20,$24242720,$2424e404,$0000fc04,$2424e700
long $00000000,$00000000,$0000ff00,$00ff0000,$00000000,$2424e404,$24242720,$0000ff00
long $00000000,$00000000,$0000ff00,$00ff0000,$00000000,$2424e404,$24242720,$0000ff00 '90
long $2424e700,$24242424,$7e006030,$7e00060c,$66666666,$0c0c7e18,$3a6c0c0c,$00000000
long $00000000,$18180018,$00000000,$24247e7e,$183c5a58,$7256740c,$5c367656,$00000000
long $00000000,$18180018,$00000000,$24247e7e,$183c5a58,$7256740c,$5c367656,$00000000 'A0
long $3018180c,$0c181830,$0024187e,$0018187e,$18383800,$0000007e,$3c180000,$06060c0c
long $18246666,$7e181818,$7e06060c,$3c666060,$60607e66,$3c666060,$3c666666,$0c0c1818
long $18246666,$7e181818,$7e06060c,$3c666060,$60607e66,$3c666060,$3c666666,$0c0c1818 'B0
long $3c666666,$3c666060,$3c180000,$18383800,$6030180c,$00007e00,$060c1830,$18180018
long $3c660676,$66666666,$3e666666,$3c660606,$3e666666,$7e060606,$06060606,$7c666666
long $3c660676,$66666666,$3e666666,$3c660606,$3e666666,$7e060606,$06060606,$7c666666 'C0
long $66666666,$7e181818,$3c666060,$4666361e,$7e060606,$66666666,$66667676,$3c666666
long $06060606,$3c766e66,$4666361e,$3c666060,$18181818,$3c666666,$1818183c,$42667e7e
long $06060606,$3c766e66,$4666361e,$3c666060,$18181818,$3c666666,$1818183c,$42667e7e 'D0
long $4266243c,$18181818,$7e06060c,$3c0c0c0c,$60603030,$3c303030,$00000000,$fe000000
long $00000000,$7c66667c,$3e666666,$3c660606,$7c666666,$3c66067e,$0c0c0c0c,$3c063c66
long $00000000,$7c66667c,$3e666666,$3c660606,$7c666666,$3c66067e,$0c0c0c0c,$3c063c66 'E0
long $66666666,$7e181818,$60606060,$66361e1e,$7e181818,$c6c6d6d6,$66666666,$3c666666
long $063e6666,$607c6666,$06060606,$3c66300c,$386c0c0c,$7c666666,$183c3c66,$247e7e66
long $063e6666,$607c6666,$06060606,$3c66300c,$386c0c0c,$7c666666,$183c3c66,$247e7e66 'F0
long $66663c3c,$607c6666,$7e060c30,$380c0c18,$18181818,$1c303018,$00000000,$aa55aa55
long $00ba8200,$00000000,$00002a55,$00000030,$00000018,$00000058,$00000018,$00000000
long $00ba8200,$00000000,$00002a55,$00000030,$00000018,$00000058,$00000018,$00000000 'bottom
long $00000000,$00000078,$00000030,$00000000,$18181818,$18181818,$00000000,$18181818
long $00000000,$00000000,$00000000,$000000ff,$ffff0000,$18181818,$18181818,$00000000
long $00000000,$00000000,$00000000,$000000ff,$ffff0000,$18181818,$18181818,$00000000 '10
long $18181818,$18181818,$00000000,$00000000,$00000000,$00000000,$00000000,$00000000
long $00000000,$00000000,$00000000,$00000000,$00000000,$00000000,$00000000,$00000000
long $00000000,$00000000,$00000000,$00000000,$00000000,$00000000,$00000000,$00000000 '20
long $00000000,$00000000,$00000000,$00000000,$0000000c,$00000000,$00000018,$00000000
long $00000000,$00000000,$00000000,$00000000,$00000000,$00000000,$00000000,$00000000
long $00000000,$00000000,$00000000,$00000000,$00000000,$00000000,$00000000,$00000000 '30
long $00000000,$00000000,$00000018,$0000000c,$00000000,$00000000,$00000000,$00000000
long $00000000,$00000000,$00000000,$00000000,$00000000,$00000000,$00000000,$00000000 '40
long $00000000,$00000000,$00000000,$00000000,$00000000,$00000000,$00000000,$00000000
long $00000000,$00000000,$00000000,$00000000,$00000000,$00000000,$00000000,$00000000
long $00000000,$00000060,$00000000,$00000000,$00000000,$00000000,$00000000,$00000000
long $00000000,$00000060,$00000000,$00000000,$00000000,$00000000,$00000000,$00000000 '50
long $00000000,$00000000,$00000000,$00000000,$00000000,$00000000,$00000000,$000000fe
long $00000000,$00000000,$00000000,$00000000,$00000000,$00000000,$00000000,$00003c66
long $00000000,$00000000,$00000000,$00000000,$00000000,$00000000,$00000000,$00003c66 '60
long $00000000,$00000000,$00003c66,$00000000,$00000000,$00000000,$00000000,$00000000
long $00000606,$00006060,$00000000,$00000000,$00000000,$00000000,$00000000,$00000000
long $00000606,$00006060,$00000000,$00000000,$00000000,$00000000,$00000000,$00000000 '70
long $00000000,$00003c66,$00000000,$00000000,$00000000,$00000000,$00000000,$aa55aa55
long $ff000000,$ff000000,$ff002a55,$ff000030,$ff000018,$ff000058,$ff000018,$ff000000
long $ff000000,$ff000000,$ff002a55,$ff000030,$ff000018,$ff000058,$ff000018,$ff000000 '90
long $ff000000,$ff000078,$ff000030,$00000000,$24242424,$24242424,$00000000,$24242424
long $00000000,$00000000,$00000000,$000000ff,$ff00ff00,$24242424,$24242424,$00000000
long $00000000,$00000000,$00000000,$000000ff,$ff00ff00,$24242424,$24242424,$00000000 '90
long $24242424,$24242424,$ff000000,$ff000000,$ff000000,$ff000000,$ff000000,$ff000000
long $ff000000,$ff000000,$ff000000,$ff000000,$ff000000,$ff000000,$ff000000,$ff000000
long $ff000000,$ff000000,$ff000000,$ff000000,$ff000000,$ff000000,$ff000000,$ff000000 'A0
long $ff000000,$ff000000,$ff000000,$ff000000,$ff00000c,$ff000000,$ff000018,$ff000000
long $ff000000,$ff000000,$ff000000,$ff000000,$ff000000,$ff000000,$ff000000,$ff000000
long $ff000000,$ff000000,$ff000000,$ff000000,$ff000000,$ff000000,$ff000000,$ff000000 'B0
long $ff000000,$ff000000,$ff000018,$ff00000c,$ff000000,$ff000000,$ff000000,$ff000000
long $ff000000,$ff000000,$ff000000,$ff000000,$ff000000,$ff000000,$ff000000,$ff000000 'C0
long $ff000000,$ff000000,$ff000000,$ff000000,$ff000000,$ff000000,$ff000000,$ff000000
long $ff000000,$ff000000,$ff000000,$ff000000,$ff000000,$ff000000,$ff000000,$ff000000
long $ff000000,$ff000060,$ff000000,$ff000000,$ff000000,$ff000000,$ff000000,$ff000000
long $ff000000,$ff000060,$ff000000,$ff000000,$ff000000,$ff000000,$ff000000,$ff000000 'D0
long $ff000000,$ff000000,$ff000000,$ff000000,$ff000000,$ff000000,$ff000000,$ff0000fe
long $ff000000,$ff000000,$ff000000,$ff000000,$ff000000,$ff000000,$ff000000,$ff003c66
long $ff000000,$ff000000,$ff000000,$ff000000,$ff000000,$ff000000,$ff000000,$ff003c66 'E0
long $ff000000,$ff000000,$ff003c66,$ff000000,$ff000000,$ff000000,$ff000000,$ff000000
long $ff000606,$ff006060,$ff000000,$ff000000,$ff000000,$ff000000,$ff000000,$ff000000
long $ff000606,$ff006060,$ff000000,$ff000000,$ff000000,$ff000000,$ff000000,$ff000000 'F0
long $ff000000,$ff003c66,$ff000000,$ff000000,$ff000000,$ff000000,$ff000000,$ff55aa55

View File

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

View File

@@ -1,4 +1,4 @@
OBJECTS = rom128_wbw.dat rom128_una.dat rom256_wbw.dat rom256_una.dat rom512_wbw.dat rom512_una.dat rom1024_wbw.dat rom1024_una.dat ram512_wbw.dat ram1024_wbw.dat
OBJECTS = rom0_wbw.dat rom0_una.dat rom128_wbw.dat rom128_una.dat rom256_wbw.dat rom256_una.dat rom384_wbw.dat rom384_una.dat rom896_wbw.dat rom896_una.dat
OTHERS=*.dat
TOOLS = ../../Tools
@@ -9,36 +9,28 @@ include $(TOOLS)/Makefile.inc
ROMAPPS1 := assign mode rtc syscopy xm
ROMAPPS2 := fdu format survey sysgen talk timer cpuspd
# rom256_%.dat: ROMSIZ=256
# rom512_%.dat: ROMSIZ=512
# rom1024_%.dat: ROMSIZ=1024
rom128_%.dat: DISKDEF=wbw_rom128
rom256_%.dat: DISKDEF=wbw_rom256
rom512_%.dat: DISKDEF=wbw_rom512
rom1024_%.dat: DISKDEF=wbw_rom1024
ram512_%.dat: DISKDEF=wbw_ram512
ram1024_%.dat: DISKDEF=wbw_ram1024
rom384_%.dat: DISKDEF=wbw_rom384
rom896_%.dat: DISKDEF=wbw_rom896
rom128_%.dat: DIR=ROM_128KB
rom256_%.dat: DIR=ROM_256KB
rom512_%.dat: DIR=ROM_512KB
rom1024_%.dat: DIR=ROM_1024KB
ram512_%.dat: DIR=RAM_512KB
ram1024_%.dat: DIR=RAM_1024KB
rom384_%.dat: DIR=ROM_384KB
rom896_%.dat: DIR=ROM_896KB
rom256_%.dat: IMGSIZ=0x20000
rom512_%.dat: IMGSIZ=0x60000
rom1024_%.dat: IMGSIZ=0xE0000
ram512_%.dat: IMGSIZ=0x40000
ram1024_%.dat: IMGSIZ=0xC0000
rom128_%.dat: IMGSIZ=0x20000
rom256_%.dat: IMGSIZ=0x40000
rom384_%.dat: IMGSIZ=0x60000
rom896_%.dat: IMGSIZ=0xE0000
rom256_%.dat: ROMAPPS=$(ROMAPPS1)
rom512_%.dat rom1024_%.dat: ROMAPPS=$(ROMAPPS1) $(ROMAPPS2)
ram512_%.dat ram1024_%.dat: ROMAPPS=$(ROMAPPS1) $(ROMAPPS2)
rom128_%.dat: ROMAPPS=$(ROMAPPS1)
rom256_%.dat rom384_%.dat rom896_%.dat: ROMAPPS=$(ROMAPPS1) $(ROMAPPS2)
%_wbw.dat: BIOS=wbw
%_una.dat: BIOS=una
rom128_%.dat:
rom0_%.dat:
touch $@
%.dat:

Binary file not shown.

Binary file not shown.

View File

@@ -1,43 +0,0 @@
11 Dec 88
Some changes have been made to COPY since the manual was written.
Comparison of dates with Existence testing ON has been changed to
use the Creation date when no Modified date exists, and print
"Undated" when neither exists, yet both source and destination
disks support file date stamping. Additionally, the /X option
has been re-defined, and a new /R option has been added to
Version 1.4. Please replace Paragraph 4.1.2.9 on page 55 of your
ZSDOS manual with the following two paragraphs describing the new
options.
4.1.2.9.1 ERASE SOURCE FILE AFTER COPY.
When you want to "move" a file from one area to another, the "X"
option may be used. This option causes a file or group of files
to be copied in the manner described by the default or specified
options, but after the copy and optional verify, the source file
or files are erased. You will be notified that the file has been
erased by the status "(X)" being printed on your console. To
minimize the possibility of deleting a good file when errors
exist in the copy, the Verify option should always be active,
either by default, or specified. When Verify is active, any
errors detected will disable the "X" option for that file so that
a good source file will not be deleted. The "X" option has no
configurable value, and is always assumed to be "Off" requiring
the option in the command line list to be effective.
4.1.2.9.2 COPY ONLY FILES WHICH EXIST (REPLACE).
Occasionally, you may wish to update selected files to a destina-
tion in a simpler manner than naming each file, or using the
Inspect option. The "R" (Replace) option, when active, tells
COPY to transfer only files which exist on the destination direc-
tory. If the Archive option (A) is added in conjunction with the
Replace option, only files which have not been archived, AND
already exist on the destination will be archived. It should be
noted that the No Replacement (N) option is incompatible with
both the Replace and Archive options, and is disabled when either
"R" or "A" are active.


Binary file not shown.

View File

@@ -1,564 +0,0 @@
DDTZ v2.7
by C.B. Falconer
edited by George A. Havach
Introduction:
============
DDTZ v2.7 is a complete replacement for DDT, Digital Research's
famous Dynamic Debugging Tool, with improved functionality, bug
extermination, and full Z80 support. In general, DDTZ is fully
compatible with the original utility, but it has extra and
extended commands and many fewer quirks. All Z80-specific
instructions can be (dis)assembled, though in Intel rather then
Zilog format. Furthermore, DDTZ will correctly trace ('T' and 'U'
commands) both 8080 and Z80 instructions, depending on which CPU
is operating. On startup, the program announces which CPU it is
running on.
DDTZ v2.7 now handles the 64180 added opcodes. It does NOT test
for a 64180 CPU, since this cannot be done without executing
illegal Z80 instructions, which in turn will crash some
simulators. However v2.7 does not execute any 64180 instructions
internally, only in the subject program.
This issue supplies the "M" version assembled, to avoid errors
when switching between MSDOS and CPM systems. The command table
is updated accordingly. Most CPM users are also MSDOS users, but
not vice-versa.
The program is invoked by typing
ddtz<ret>
or
ddtz [d:]filespec<ret>
In the second form, DDTZ will load the specified file into
memory starting at 0100H, unless it's a .HEX file that sets its
own load address. Besides reporting the NEXT free address and
the PC (program counter) after a successful load, DDTZ also shows
the number of memory pages needed for a SAVE. Instead of having
to write all this down, just use the 'X' command at any time to
redisplay these three values for the current application.
NOTE: loading more code above the NEXT pointer revises these
values.
As in DDT, when a program is loaded above the area holding the
'A' and 'U' (and now 'W') command code, these commands are
disabled, and the extra memory is released to the user. Thus,
DDTZ can occupy as little as 3K total memory space. Unlike DDT,
however, DDTZ will not overwrite itself or the system on program
loads (except .HEX files).
At initialization, the stack pointer (SP) points to a return to
DDTZ, just like for the CCP. Thus, programs that normally return
to the CCP will be returned to DDTZ. The 'B' command
reinitializes this condition.
The intercept vector copies the BDOS version number, etc., so
an object program does not know that DDTZ is running (except
for BIOS-BDOS vector size). Thus, programs that check the version
number should execute correctly under DDTZ.
All input parameters can now be entered in any of three formats:
(1) hexadecimal (as in DDT),
(2) decimal, by adding a leading '#' character,
(3) ASCII, by enclosing between either single or double
quotes; either one or two characters are allowed.
Leading blanks in command lines and parameters are absorbed.
Either a comma or a (single) space is a valid delimiter.
Either uppercase or lowercase input is accepted.
The default command (for anything not otherwise recognizable)
is 'H'. This allows convenient calculation, along with the other
features described below. So, to convert a number, just enter
it!
As in DDT, the prompt character is '-', and the only error
message is the query ('?'), which generally kicks you back to
command mode.
New Commands (Over DDT):
=======================
NOTE: letters in parenthesis, e.g. "(U)", show the equivalent
command for DDTZM version (compatible with MSDOS debug).
@ Sets or shows (with no parameter) the internally stored
"base" value. Also used with the 'S' and 'D' commands as
an optional parameter (though without the '@') to display
memory from an arbitrary base marker (offset). When set to
zero (the default), it does not affect any screen displays.
B B)egin: resets the USER stack pointer to its initial value,
such that any program that exits by an RET will return to
DDTZ. DDTZ provides a default stack space of
approximately 24 bytes for user programs.
C C)ompare first_address,last_address,against_address: shows
all the byte differences between two memory areas, in the
format
XXXX aa YYYY bb
where XXXX and YYYY are the comparative memory addresses,
and aa and bb are the corresponding byte values. Can be
used to verify the identity of two files by first
loading them into different memory areas with the 'R'
command (see below).
W Write: stores the modified memory area to disk under the
(K) filename specified by the 'I' command, overwriting the
original file from which it was loaded (the user is queried
before doing so). By default, the image of memory from
0100H through the "NEXT" value -1 is saved. "K first_addr,
last_address" overrides this and allows writing ANY memory
area to a file. Almost a necessity for CPM 3.0 (no SAVE!).
K)eep on DDTZ
X eXamine: redisplays the "NEXT PC SAVE" report at any time.
(Q) Q)uery size on DDTZ.
S S)earch first_address, last_addr, value: searches the
(W) specified memory area for the value (a 16-bit word, not a
byte) and shows the locations of all such. Very useful for
finding CALL's or JMP's to a particular address, etc.
W)here on DDTZ
Y Y)our_option parm1,parm2,address: executes an arbitrary
routine at the specified address, with the BC and DE
registers set to parm1 and parm2, respectively.
Z Displays (but does not alter) the Z80's alternate register
set, including the index registers (disabled if running on
an 8080). On Z80's, automatically included as the last
part of the display by the 'X' command.
Based (Offset) Displays:
=======================
The 'D' and 'E' commands can use a stored base value (offset),
as set by the '@' command. The current @ value may be
overridden for a single execution of these commands by adding the
base as an extra parameter in the command line. The effect is
to add this value to the first/last address and display
accordingly. The address listing on the left becomes XXXX:YYYY,
where XXXX is the offset address and YYYY is the actual memory
address being displayed. For example, if you have a data area
located at 42B7H and wish to preserve easy access, just enter
"@42b7". Now, "d0,3f" will dump memory starting at 4237H.
Further Changes from DDT:
========================
A A)ssemble now accepts the full Z80 as well as 8080
instruction set, although it expects them in Intel rather
than Zilog format (see notes below under the 'L'
command). When in doubt, see the mnemnonic list below.
D D)isplay or D)ump will accept an optional third parameter
to set the base value for a single execution only. Format
has been cleaned up.
H H)ex_arithmetic on two values also shows their
difference in decimal. With only one value, converts to
hexadecimal, decimal, and ASCII (low-order byte only).
N N)ame now allows drive specification (d:...) and sets up
(I) the complete command line, including both FCB's (at
addresses 005CH and 006CH). The tail (stored at 0081H up)
is NOT upshifted.
I)nput on DDTZ
U U)nassemble now displays the raw hexcode, especially handy
(L) when examining non-code areas. Intel (8080 style) mnemonics
are used, so some disassembled instructions may look
strange. E.g., the Z80's 'IN B,(C)' and 'OUT (C),B' become
'INP B' and 'OUTP B', respectively; 'LD (nnnn),BC' becomes
'SBCD nnnn', 'ADD IX, BC' becomes 'DADX B', and 'JP (IX)'
becomes 'PCIX'.
L)ist on DDTZ
L L)oad now permits loading a file into memory with an
(R) offset, which is added to the default load address of
0100H. When reading in a .HEX file with a preset bias,
the 'R' command will not transfer control to an invalid
execution point. Another execution of the 'R' command will
reread the input file, e.g.:
n blah<ret>
l<ret>
...modify the code and generally mess about...
l<ret>
The original file is reloaded, and the modifications are
removed.
R)ead on DDTZ
E E)nter, like D)isplay, now accepts an optional second
(S) parameter to set the base value for a single execution
only.
S)ubstitute or S)et on DDTZ
T T)rap/trace on termination now shows the complete CPU
state. Traps and traces no longer lock up when a user RST
7 instruction is executed. Tracing of BDOS/BIOS calls is
heavily trun cated, avoiding clutter and preventing system
crashes.
NOTE: Most of the UNDOCUMENTED Z80 op-codes are handled. Others
can crash the system.
R R)egisters also shows what two-byte values the HL and SP
(X) registers are actually pointing to. On Z80's, displays the
alternate register set.
eX)amine on DDTZ
NOTE: Any use of the 'W' or 'L' command resets the system DMA
transfer address to the standard default value of 0080H.
; This is the output of DDTZ when disassembling OPTYPE.TRY
NOP LDA 06A4 MOV M,H
LXI B,06A4 DCX SP MOV M,L
STAX B INR A HLT
INX B DCR A MOV M,A
INR B MVI A,20 MOV A,B
DCR B CMC MOV A,C
MVI B,20 MOV B,B MOV A,D
RLC MOV B,C MOV A,E
EXAF MOV B,D MOV A,H
DAD B MOV B,E MOV A,L
LDAX B MOV B,H MOV A,M
DCX B MOV B,L MOV A,A
INR C MOV B,M ADD B
DCR C MOV B,A ADD C
MVI C,20 MOV C,B ADD D
RRC MOV C,C ADD E
DJNZ 0134 MOV C,D ADD H
LXI D,06A4 MOV C,E ADD L
STAX D MOV C,H ADD M
INX D MOV C,L ADD A
INR D MOV C,M ADC B
DCR D MOV C,A ADC C
MVI D,20 MOV D,B ADC D
RAL MOV D,C ADC E
JR 0134 MOV D,D ADC H
DAD D MOV D,E ADC L
LDAX D MOV D,H ADC M
DCX D MOV D,L ADC A
INR E MOV D,M SUB B
DCR E MOV D,A SUB C
MVI E,20 MOV E,B SUB D
RAR MOV E,C SUB E
JRNZ 0134 MOV E,D SUB H
LXI H,06A4 MOV E,E SUB L
SHLD 06A4 MOV E,H SUB M
INX H MOV E,L SUB A
INR H MOV E,M SBB B
DCR H MOV E,A SBB C
MVI H,20 MOV H,B SBB D
DAA MOV H,C SBB E
JRZ 0134 MOV H,D SBB H
DAD H MOV H,E SBB L
LHLD 06A4 MOV H,H SBB M
DCX H MOV H,L SBB A
INR L MOV H,M ANA B
DCR L MOV H,A ANA C
MVI L,20 MOV L,B ANA D
CMA MOV L,C ANA E
JRNC 0134 MOV L,D ANA H
LXI SP,06A4 MOV L,E ANA L
STA 06A4 MOV L,H ANA M
INX SP MOV L,L ANA A
INR M MOV L,M XRA B
DCR M MOV L,A XRA C
MVI M,20 MOV M,B XRA D
STC MOV M,C XRA E
JRC 0134 MOV M,D XRA H
DAD SP MOV M,E XRA L
XRA M JPE 06A4 SLAR M
XRA A XCHG SLAR A
ORA B CPE 06A4 SRAR B
ORA C XRI 20 SRAR C
ORA D RST 5 SRAR D
ORA E RP SRAR E
ORA H POP PSW SRAR H
ORA L JP 06A4 SRAR L
ORA M DI SRAR M
ORA A CP 06A4 SRAR A
CMP B PUSH PSW SLLR B
CMP C ORI 20 SLLR C
CMP D RST 6 SLLR D
CMP E RM SLLR E
CMP H SPHL SLLR H
CMP L JM 06A4 SLLR L
CMP M EI SLLR M
CMP A CM 06A4 SLLR A
RNZ CPI 20 SRLR B
POP B RST 7 SRLR C
JNZ 06A4 RLCR B SRLR D
JMP 06A4 RLCR C SRLR E
CNZ 06A4 RLCR D SRLR H
PUSH B RLCR E SRLR L
ADI 20 RLCR H SRLR M
RST 0 RLCR L SRLR A
RZ RLCR M BIT 0,B
RET RLCR A BIT 0,C
JZ 06A4 RRCR B BIT 0,D
CZ 06A4 RRCR C BIT 0,E
CALL 06A4 RRCR D BIT 0,H
ACI 20 RRCR E BIT 0,L
RST 1 RRCR H BIT 0,M
RNC RRCR L BIT 0,A
POP D RRCR M BIT 1,B
JNC 06A4 RRCR A BIT 1,C
OUT 20 RALR B BIT 1,D
CNC 06A4 RALR C BIT 1,E
PUSH D RALR D BIT 1,H
SUI 20 RALR E BIT 1,L
RST 2 RALR H BIT 1,M
RC RALR L BIT 1,A
EXX RALR M BIT 2,B
JC 06A4 RALR A BIT 2,C
IN 20 RARR B BIT 2,D
CC 06A4 RARR C BIT 2,E
SBI 20 RARR D BIT 2,H
RST 3 RARR E BIT 2,L
RPO RARR H BIT 2,M
POP H RARR L BIT 2,A
JPO 06A4 RARR M BIT 3,B
XTHL RARR A BIT 3,C
CPO 06A4 SLAR B BIT 3,D
PUSH H SLAR C BIT 3,E
ANI 20 SLAR D BIT 3,H
RST 4 SLAR E BIT 3,L
RPE SLAR H BIT 3,M
PCHL SLAR L BIT 3,A
BIT 4,B RES 3,D SET 2,H
BIT 4,C RES 3,E SET 2,L
BIT 4,D RES 3,H SET 2,M
BIT 4,E RES 3,L SET 2,A
BIT 4,H RES 3,M SET 3,B
BIT 4,L RES 3,A SET 3,C
BIT 4,M RES 4,B SET 3,D
BIT 4,A RES 4,C SET 3,E
BIT 5,B RES 4,D SET 3,H
BIT 5,C RES 4,E SET 3,L
BIT 5,D RES 4,H SET 3,M
BIT 5,E RES 4,L SET 3,A
BIT 5,H RES 4,M SET 4,B
BIT 5,L RES 4,A SET 4,C
BIT 5,M RES 5,B SET 4,D
BIT 5,A RES 5,C SET 4,E
BIT 6,B RES 5,D SET 4,H
BIT 6,C RES 5,E SET 4,L
BIT 6,D RES 5,H SET 4,M
BIT 6,E RES 5,L SET 4,A
BIT 6,H RES 5,M SET 5,B
BIT 6,L RES 5,A SET 5,C
BIT 6,M RES 6,B SET 5,D
BIT 6,A RES 6,C SET 5,E
BIT 7,B RES 6,D SET 5,H
BIT 7,C RES 6,E SET 5,L
BIT 7,D RES 6,H SET 5,M
BIT 7,E RES 6,L SET 5,A
BIT 7,H RES 6,M SET 6,B
BIT 7,L RES 6,A SET 6,C
BIT 7,M RES 7,B SET 6,D
BIT 7,A RES 7,C SET 6,E
RES 0,B RES 7,D SET 6,H
RES 0,C RES 7,E SET 6,L
RES 0,D RES 7,H SET 6,M
RES 0,E RES 7,L SET 6,A
RES 0,H RES 7,M SET 7,B
RES 0,L RES 7,A SET 7,C
RES 0,M SET 0,B SET 7,D
RES 0,A SET 0,C SET 7,E
RES 1,B SET 0,D SET 7,H
RES 1,C SET 0,E SET 7,L
RES 1,D SET 0,H SET 7,M
RES 1,E SET 0,L SET 7,A
RES 1,H SET 0,M DADX B
RES 1,L SET 0,A DADX D
RES 1,M SET 1,B LXI X,06A4
RES 1,A SET 1,C SIXD 06A4
RES 2,B SET 1,D INX X
RES 2,C SET 1,E DADX X
RES 2,D SET 1,H LIXD 06A4
RES 2,E SET 1,L DCX X
RES 2,H SET 1,M INR [X+05]
RES 2,L SET 1,A DCR [X+05]
RES 2,M SET 2,B MVI [X+05],20
RES 2,A SET 2,C DADX SP
RES 3,B SET 2,D MOV B,[X+05]
RES 3,C SET 2,E MOV C,[X+05]
MOV D,[X+05] DSBC B DADY B
MOV E,[X+05] SBCD 06A4 DADY D
MOV H,[X+05] NEG LXI Y,06A4
MOV L,[X+05] RETN SIYD 06A4
MOV [X+05],B IM0 INX Y
MOV [X+05],C LDIA DADY Y
MOV [X+05],D INP C LIYD 06A4
MOV [X+05],E OUTP C DCX Y
MOV [X+05],H DADC B INR [Y+05]
MOV [X+05],L LBCD 06A4 DCR [Y+05]
MOV [X+05],A RETI MVI [Y+05],2
MOV A,[X+05] LDRA DADY SP
ADD [X+05] INP D MOV B,[Y+05]
ADC [X+05] OUTP D MOV C,[Y+05]
SUB [X+05] DSBC D MOV D,[Y+05]
SBB [X+05] SDED 06A4 MOV E,[Y+05]
ANA [X+05] IM1 MOV H,[Y+05]
XRA [X+05] LDAI MOV L,[Y+05]
ORA [X+05] INP E MOV [Y+05],B
CMP [X+05] OUTP E MOV [Y+05],C
POP X DADC D MOV [Y+05],D
XTIX LDED 06A4 MOV [Y+05],E
PUSH X IM2 MOV [Y+05],H
PCIX LDAR MOV [Y+05],L
SPIX INP H MOV [Y+05],A
RLCR [X+05] OUTP H MOV A,[Y+05]
RRCR [X+05] DSBC H ADD [Y+05]
RALR [X+05] shld 06A4 ADC [Y+05]
RARR [X+05] RRD SUB [Y+05]
SLAR [X+05] INP L SBB [Y+05]
SRAR [X+05] OUTP L ANA [Y+05]
SRLR [X+05] DADC H XRA [Y+05]
BIT 0,[X+05] lhld 06A4 ORA [Y+05]
BIT 1,[X+05] RLD CMP [Y+05]
BIT 2,[X+05] INP M POP Y
BIT 3,[X+05] OUTP M XTIY
BIT 4,[X+05] DSBC SP PUSH Y
BIT 5,[X+05] SSPD 06A4 PCIY
BIT 6,[X+05] INP A SPIY
BIT 7,[X+05] OUTP A RLCR [Y+05]
RES 0,[X+05] DADC SP RRCR [Y+05]
RES 1,[X+05] LSPD 06A4 RALR [Y+05]
RES 2,[X+05] LDI RARR [Y+05]
RES 3,[X+05] CCI SLAR [Y+05]
RES 4,[X+05] INI SRAR [Y+05]
RES 5,[X+05] OTI SRLR [Y+05]
RES 6,[X+05] LDD BIT 0,[Y+05]
RES 7,[X+05] CCD BIT 1,[Y+05]
SET 0,[X+05] IND BIT 2,[Y+05]
SET 1,[X+05] OTD BIT 3,[Y+05]
SET 2,[X+05] LDIR BIT 4,[Y+05]
SET 3,[X+05] CCIR BIT 5,[Y+05]
SET 4,[X+05] INIR BIT 6,[Y+05]
SET 5,[X+05] OTIR BIT 7,[Y+05]
SET 6,[X+05] LDDR RES 0,[Y+05]
SET 7,[X+05] CCDR RES 1,[Y+05]
INP B INDR RES 2,[Y+05]
OUTP B OTDR RES 3,[Y+05]
RES 4,[Y+05] SET 0,[Y+05] SET 4,[Y+05]
RES 5,[Y+05] SET 1,[Y+05] SET 5,[Y+05]
RES 6,[Y+05] SET 2,[Y+05] SET 6,[Y+05]
RES 7,[Y+05] SET 3,[Y+05] SET 7,[Y+05]
; These are the result of disassembling 64180OPS.TRY
; These opcodes are available ONLY on the 64180 CPU
; DDTZ will both assemble and disassemble these.
IN0 B,20 TST E MLT B
OUT0 20,B IN0 H,20 MLT D
TST B OUT0 20,H TSTI 20
IN0 C,20 TST H MLT H
OUT0 20,C IN0 L,20 TSIO 20
TST C OUT0 20,L SLP
IN0 D,20 TST L MLT SP
OUT0 20,D TST M OTIM
TST D IN0 A,20 OTDM
IN0 E,20 OUT0 20,A OIMR
OUT0 20,E TST A ODMR
; The following are UNDOCUMENTED z80 opcodes from XTDOPS.TRY.
; DDTZ will disassemble these, but will not assemble them.
; They use xh/xl (or yh/yl) as separate byte registers.
; Use these at your own risk.
INRX H ACXR H MOVY H,B
DCRX H ACXR L MOVY H,C
MVIX H,20 SUXR H MOVY H,D
INRX L SUXR L MOVY H,E
DCRX L SBXR H MOVY H,A
MVIX L,20 SBXR L MOVY L,B
MOVX B,H NDXR H MOVY L,C
MOVX B,L NDXR L MOVY L,D
MOVX C,H XRXR H MOVY L,E
MOVX C,L XRXR L MOVY L,A
MOVX D,H ORXR H MOVY A,H
MOVX D,L ORXR L MOVY A,L
MOVX E,H CPXR H ADYR H
MOVX E,L CPXR L ADYR L
MOVX H,B INRY H ACYR H
MOVX H,C DCRY H ACYR L
MOVX H,D MVIY H,20 SUYR H
MOVX H,E INRY L SUYR L
MOVX H,A DCRY L SBYR H
MOVX L,B MVIY L,20 SBYR L
MOVX L,C MOVY B,H NDYR H
MOVX L,D MOVY B,L NDYR L
MOVX L,E MOVY C,H XRYR H
MOVX L,A MOVY C,L XRYR L
MOVX A,H MOVY D,H ORYR H
MOVX A,L MOVY D,L ORYR L
ADXR H MOVY E,H CPYR H
ADXR L MOVY E,L CPYR L
Command Summary:
===============
DDTZM command DDTZ command
============= ============
@ (base)
A)ssemble first_address A
B)egin {i.e., initialize stack and return} B
C)ompare first_address,last_address,against_address C
D)ump first_address[,last_address[,base]] D
E)nter_in_memory first_address[,base] S)ubstitute
F)ill first_address,last_address,value F
G)o_to [address][,trap1[,trap2]] G
H)ex_arithmetic value1(,value2) H
L)oad_file (offset) R)ead
M)ove first_address,last_address,destination M
N)nput FCBs_command_line I)nput
Q)uit (not avail)
R)egister examine/change [register|flag] X)amine
S)earch first_address,last_address,word W)hereis
T)race_execution [count] T
Untrace_execution [count] (i.e. do count instr) U)ntrace
U)nassemble_code first_address[,last_address] L)ist code
W)rite [first_address,last_address] K)eep
X)amine {i.e. display memory parameters for application} Q)uery
Y)our_option BC:=parm1,DE:=parm2,call_address Y
Z)80_register_display Z
If you find this program useful, contributions will be gratefully
accepted and will encourage further development and release of
useful CPM programs. My practice is to include source.
C.B. Falconer
680 Hartford Turnpike,
Hamden, Conn. 06517 (203) 281-1438
DDTZ and its associated documentation and other files are
copyright (c) 1980-1988 by C.B. Falconer. They may be freely
copied and used for non-commercial purposes ONLY.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@@ -1,264 +0,0 @@
FILEATTR
Version 1.6
Gene Pizzetta
January 18, 1992
A ZSDOS utility, copyright (c) 1988 by Carson Wilson.
FILEATTR (FA) is a utility that allows rapid settin, resetting,
or displaying of file attributes under ZSDOS, ZRDOS, and CP/M
2.2. Several additional features are available under ZCPR3,
including error flag setting, error handler invocation, an
enhanced display, and better error detection.
FA will not run under CP/M 3.0 or Z3PLUS.
USAGE:
FILEATTR {dir:}{afn} {{/}options}
If a DIR or DU specification is not given, the current directory
is assumed (under vanilla CP/M only the drive is significant).
If no ambiguous or unambiguous filename is given, all files
("*.*") are matched.
If no attribute options are given, FILEATTR merely displays the
current state of each file's attributes. Files are displayed in
the order that they appear in the directory.
Once operation begins, FA cannot be aborted by the user. If a ^C
is entered at the keyboard, all screen output stops, but file
attribute operations continue to completion. If that was not the
case, attributes might be set on some entries for a file and not
on others. Nevertheless, suppressing screen output speeds things
up a bit.
OPTIONS: A leading slash is required unless the option list is
the second parameter on the command line. Options may be
separated by spaces, commas, or nothing at all.
ATTRIBUTE OPTIONS: These options set (turn on) corresponding
attributes on files matching the file specification. Attributes
not specified by an attribute option remain unchanged.
If the option is preceded by a minus ("-") or by an "N", the
corresponding attribute is reset (turned off).
1 F1. This is a user attribute which has no predefined
meaning.
P Public (f2). Under ZSDOS, when this attribute is set,
a file is available from any user area of the disk on
which it resides. A file cannot be made public if
another file with the same name exists in any other
user area on that drive. In that case FA will issue an
error message and leave the attribute off.
D Inhibit access datestamp (f3). Under ZSDOS, when this
attribute is set, the file's access datestamp will not
be updated, which may speed file access slightly. If
the attribute is turned off, normal access datestamping
resumes.
4 F4. This is a user attribute which has no predefined
meaning.
W Wheel protect (f8). Under ZSDOS, when this attribute
is set, the file becomes read-only when the wheel byte
is off and cannot be erased. If the wheel byte is on,
the file can be erased normally.
R Read only (t1). When this attribute is set, the file
cannot be erased or modified by most programs.
S System (t2). When this attribute is set, the file
becomes a "hidden" file that will not be found by most
directory programs or by most well-behaved utilities
that accept ambiguous filenames. (FA must find system
files, of course.)
A Archive (t3). When this attribute is set, it signals
some archival programs that the file has not been
modified since it was last backed up. If a file is
modified, ZSDOS and ZRDOS turn this attribute off.
CP/M does not fully support this attribute, however.
OTHER OPTIONS: These options affect only the screen display.
Q Quiet mode. Console output is suppressed unless there
is an error. All other operations are performed
normally.
X Screen paging off. With this option, screen paging is
turned off. The screen can still be paused by pressing
any key except ^C.
ERRORS: Under ZCPR3, errors will cause FA to set the program
error flag and to invoke the error handler. The error flag will
be set to the following values:
2 invalid directory specification
4 miscellaneous (conflicting file, no files on disk)
10 no matching files found (no error handler)
18 Disk read-only
19 Invalid option
For error code 10 (no matching files found), the error flag is
set, but the error handler is not called.
In addition, under ZCPR 3.3 and above, an invalid directory
specification will abort FA to the error handler, but no message
is printed.
The following error messages may be seen:
Conflicting entry, can't set public attribute
If there are files with the same name in other user areas of
the disk, the public attribute cannot be set.
No files on disk
The disk directory is empty.
Bad Option: /o
The command line option shown is unknown to FILEATTR.
Drive R/O
The drive is set to read-only by the operating system and
attributes cannot be changed.
CP/M version 2.x required
FILEATTR will not run on this system.
BIOS write error near directory sector n
An error occurred at or near the given directory sector,
which is expressed as a decimal offset from the beginning of
the directory.
BIOS set track detected - FA aborting
A background program is attempting to modify the current
track setting. The background program must be removeed
before running FA again.
Not Wheel
Under ZCPR3 the wheel byte must be set before FILEATTR can
be run.
CONFIGURATION: While no installation is necessary, all options
can be set as defaults, if you prefer, using ZCNFG. The
configuration options are fully explained on the ZCNFG help
screens.
It is best not to change the name of the configuration file. Its
special name assures that ZCNFG will always find the correct CFG
file, even if the name of FA has been changed or if more than one
version of FA is online.
HISTORY:
Version 1.6 -- April 14, 1991 -- Gene Pizzetta
Now displays target DU and directory name in summary. Fixed
bug that caused "GO" to be displayed as program name, if it
was re-invoked with the GO command.
Version 1.5 -- March 27, 1991 -- Gene Pizzetta
Now calls CP/M version checking routine (it was there, but
it wasn't called). Changed error codes: 10, no matching
files found. "No files on disk" error now gets
miscellaneous error code (4). Error 10 does not invoke
error handler. Not released.
Version 1.4 -- March 20, 1991 -- Gene Pizzetta, Howard Goldstein
Code to check module data byte (S2) was replaced by Howard
Goldstein's elegant solution which uses a "true" extent
number: ((data_mod * 32) + extent). Entering a ^C no
longer really aborts FILEATTR; instead FA immediately prints
"Wait..." on the screen, turns off paging, turns on quiet
mode, sets the results flag, and finishes what it was doing.
All this is to prevent unexpected results when only some of
a file's directory entries are changed. All errors
including a conflicting file found during a PUBLIC request,
now set the program error flag and invoke the error handler
so an active SUBMIT or ZEX script can be aborted. The error
flag will have the following values: 2, invalid directory;
10, no files on disk; 18, disk is read-only; 19, invalid
option; 4, all other errors. If no matching files are
found, the program error flag will be set to FFh, but the
error handler will not be invoked. A few other code changes
were made, including a check for CP/M-Plus, under which
FILEATTR will not work. Not released.
Version 1.3 -- February 22, 1991 -- Gene Pizzetta
Corrected bug that caused faulty operation on large files:
The module data byte (S2) byte was not being checked, so
such files appeared 2 or more times in the directory display
and the public routine was often not finding conflicting
files. Added configuration byte and command line option (X)
for screen paging (paging is suppressed in quiet mode).
Made quiet mode responsive to ZCPR quiet flag and changed Q
command line option to toggle. Usage screen reflects
current effect of X and Q toggles. Attribute configuration
area changed to be compatible with ZCNFG TOGL3 routine.
Actions of D and ND options reversed so they work the same
as the others. Added configuration byte for printing
summary line even in quiet mode, as suggested by Howard
Goldstein. Removed blank lines from screen display,
allowing three more filenames to be shown. Removed tabs
from usage screen so PRINT and PSTR are not needed.
Eliminated leading zero from user number display. Now
prints "file" instead of "files" in summary when only 1
matching file is found. Ditto for attribute(s) altered.
Version 1.2 -- November 30, 1988 -- Carson Wilson
Fixed bug of no program name display when FILEATTR's name
was 8 characters long.
Version 1.1 -- October 30, 1988 -- Carson Wilson
Now wildcards the command forms "FA d: /options" and "FA d:
options."
Version 1.0 -- September 26, 1988 -- Carson Wilson
If a filespec is given, no leading slash is required before
the options. Link with version 4 libraries. Removed /X
option--ZSDOS 10T always closes the first extent when a file
is written to. Changed summary to read "files matched".
Version 0.9 -- July 7, 1988 -- Carson Wilson
Increased length of search FCB (AMBFIL) by one byte. Set up
AMBFIL as '?' + 35 binary 0's. ZRDOS and CP/M zero the
drive byte (FCB+0) during search next calls, so reinitialize
it to '?' before rescanning the directory. PROGID now
prints stored name on GO/JUMP.
Version 0.8 -- June 26, 1988 -- Carson Wilson
Use SYSLIB PRINT for help display. VPRINT does not expand
tabs. Now traps disk track changes at the BIOS level.
Allows '-' as well as 'N' for "negate option." Auto-
wildcards FCB1 for attribute set as well as display.
Version 0.7 -- May 24, 1988 -- Carson Wilson
Cosmetic changes to help, display. Made public routines
faster by 1/2 directory scan average. Consolidated file
attribute setting/resetting routines for efficiency and
clarity.
Version 0.6 -- May 14, 1988 -- Carson Wilson
Changed "Publ" to "Publc" and "Priv" to "Privt". Added Q
and X options, made options installable. Added test for bad
ZCPR directory & chain to error handler.
Version 0.5 -- May 4, 1988 -- Carson Wilson
Fixed bug at CHKRO inherited from MAKE.ASM. Uses Bridger
Mitchell's FRESET to reset disks. Uses ZCPR invocation name
in signon, help, etc. Added F4 attribute. Now includes all
valid ZSDOS attributes. Help now fully "smart" under ZCPR.
Reworked VID3.Z80 and VID4.Z80 from VLIB11 and moved them
into FA.Z80 (see end of file). Put STNDOUT mode ON by
default at beginning of each attribute display sequence for
faster ZCPR displays.
Version 0.4 -- April 27, 1988 -- Carson Wilson
Tests for matching files at other user areas before setting
the public attribit.
Version 0.3 -- April 26, 1988 -- Carson Wilson

View File

@@ -1,6 +0,0 @@
An update and bug-fix of FILEATTR (FA), a ZSDOS utility that
allows rapid setting, resetting, or displaying of file attributes
under ZSDOS, ZRDOS, and CP/M 2.2. Several additional features
are available under ZCPR3, including error flag setting, error
handler invocation, and an enhanced display. Version 1.6A adds
documentation; otherwise, same as 1.6.

Some files were not shown because too many files have changed in this diff Show More